Você está na página 1de 32

<?xml version="1.0" encoding="utf-8" ?> <otrs_package version="1.1"> <Name>SmsEvent</Name> <Version>3.1-2.0</Version> <Vendor>Complemento Inc</Vendor> <URL>http://www.complemento.net.

br/</URL> <License>GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007</License > <Description Lang="en">This package allows you to Send SMS messages based on OTRS triggers like Ticket Creation, Article Creation, SLA Update, Priority chan ge, Escalation etc. It already commes with MobilePronto gateway, but we can writ e for you new gateways :) Request a quote.</Description> <Description Lang="pt_BR">Este mdule permite enviar mensagens de SMS baseado em gatilhos do OTRS tais como Criao de Chamado ou artigos, atualizao de prioridade o u SLA, Escalao etc. O pacote j vem com o gateway MobilePronto, mas tambm podemos des envolver novos gateways para voc :) Solicite um oramento.</Description> <Framework>3.1.x</Framework> <Framework>3.2.x</Framework> <Framework>3.3.x</Framework> <IntroInstall Lang="en" Title="Tutorial" Type="pre"> &lt;br/&gt;&lt;h 1&gt;&lt;strong&gt;READ IT!!&lt;/strong&gt;&lt;/h1&gt;&lt;br/&gt; Thanks for purchasing this package. You must agree with it's license ava ilable on our web site before continuing. &lt;br/&gt; &lt;br/&gt; &lt;strong&gt;Basicaly, you are not allowed to resell or distribute this package and you must have a license to use it.&lt;/strong&gt;&lt;br/&gt; &lt;br/&gt; </IntroInstall> <IntroInstall Lang="pt_BR" Title="Tutorial" Type="pre"> &lt;br/&gt;&l t;h1&gt;&lt;strong&gt;LEIA ANTES DE PROSSEGUIR!!&lt;/strong&gt;&lt;/h1&gt;&lt;br /&gt; Obrigado por adquirir este pacote. Voc precisa concordar com os termos da licena de uso do mesmo antes de prosseguir. &lt;br/&gt; &lt;br/&gt; &lt;strong&gt;Basicamente, no permitido revender ou distribuir este pacot e e voc deve ter uma licena para poder utiliz-lo&lt;/strong&gt;&lt;br/&gt; &lt;br/&gt; </IntroInstall> <BuildDate>2013-02-28 08:43:17</BuildDate> <BuildHost>garantech.spread.com.br</BuildHost> <Filelist> <File Location="Kernel/System/Sms/Gateways/MobilePronto.pm" Permission=" 644" Encode="Base64">IyAtLQojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTbXM6OkdhdGV 3YXlzOjpNb2JpbGVQcm9udG87Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTFdQOwp1c2U gSFRUUDo6UmVxdWVzdDsKdXNlIFhNTDo6U2ltcGxlOwoKdXNlIHZhcnMgcXcoQElTQSAkVkVSU0lPTik 7CiRWRVJTSU9OID0gcXcoJFJldmlzaW9uOiAxLjM5LjIuMyAkKSBbMV07CgojIGRpc2FibGUgcmVkZWZ pbmUgd2FybmluZ3MgaW4gdGhpcyBzY29wZQp7CiAgICBubyB3YXJuaW5ncyAncmVkZWZpbmUnOwoKICA gICMgCiAgICAjIG92ZXJ3cml0ZSBzdWIgX1RpY2tldEdldEZpcnN0UmVzcG9uc2UgdG8gZ2V0IGNvcnJ lY3QgdGltZSBhbmQgbm90IG9ubHkgZm9yIGVzY2FsYXRlZCB0aWNrZXRzCiAgICBzdWIgS2VybmVsOjp TeXN0ZW06OlNtc0V2ZW50OjpTZW5kU21zIHsKICAgICAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEB fOwoKICAgICAgICAjIGdldCBzbXMgZGF0YQogICAgICAgIG15ICVHYXRld2F5ID0gJXsgJFBhcmFte0d hdGV3YXl9IH07CiAgICAgICAgbXkgJVNtcyA9ICV7ICRQYXJhbXtTbXN9IH07CiAgICAgICAgbXkgJVJ lY2lwaWVudCA9ICV7ICRQYXJhbXtSZWNpcGllbnR9IH07CgogICAgICAgICMgQ2xlYW4gTW9iaWxlTnV tYmVyCiAgICAgICAgbXkgQFMgPSAoJFJlY2lwaWVudHtFbWFpbH0gPX4gbS8oXGQrKS9nKTsKICAgICA gICAkUmVjaXBpZW50e0VtYWlsfT1qb2luKCIiLCBAUyk7CgogICAgICAgICMgQ29udHJ1Y3QgdGhlIHV ybAogICAgICAgIG15ICR1cmw9JEdhdGV3YXl7VVJMfS4iPyI7CiAgICAgICAgJHVybC49IkNSRURFTkN JQUw9JEdhdGV3YXl7Q1JFREVOQ0lBTH0mUFJJTkNJUEFMX1VTRVI9JEdhdGV3YXl7UFJJTkNJUEFMX1V

TRVJ9JiI7CiAgICAgICAgJHVybC49IkFVWF9VU0VSPSRHYXRld2F5e0FVWF9VU0VSfSZNT0JJTEU9JFJ lY2lwaWVudHtFbWFpbH0mU0VORF9QUk9KRUNUPSRHYXRld2F5e1NFTkRfUFJPSkVDVH0mTUVTU0FHRT0 kU21ze0JvZHl9IjsKICAgICAgICAKICAgICAgICAjIFNlbmQgdGhlIHNtcwogICAgICAgIG15ICR1YSA 9IExXUDo6VXNlckFnZW50LT5uZXcoKTsKICAgICAgICBteSAkcmVxID0gbmV3IEhUVFA6OlJlcXVlc3Q gR0VUID0+ICR1cmw7CiAgICAgICAgbXkgJHJlcyA9ICR1YS0+cmVxdWVzdCgkcmVxKTsKICAgICAgICA KICAgICAgICBpZiAoJHJlcy0+Y29udGVudCBuZSAiMDAwIikgewogICAgICAgICAgICAkU2VsZi0+e0x vZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICA gICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igb24gc2VuZGluZyBzbXMuIENvZGU6ICIuJHJlcy0 +Y29udGVudCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfSBlbHN lIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgfQp9CgoxOwo=</File> <File Location="Kernel/System/Sms/Gateways/Zenvia.pm" Permission="644" E ncode="Base64">IyAtLQojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTbXM6OkdhdGV3YXlzO jpaZW52aWE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgTFdQOwp1c2UgSFRUUDo6UmVxd WVzdDsKdXNlIFhNTDo6U2ltcGxlOwp1c2UgRW5jb2RlOwoKdXNlIHZhcnMgcXcoQElTQSAkVkVSU0lPT ik7CiRWRVJTSU9OID0gcXcoJFJldmlzaW9uOiAxLjM5LjIuMyAkKSBbMV07CgojIGRpc2FibGUgcmVkZ WZpbmUgd2FybmluZ3MgaW4gdGhpcyBzY29wZQp7CiAgICBubyB3YXJuaW5ncyAncmVkZWZpbmUnOwoKI CAgICMgCiAgICAjIG92ZXJ3cml0ZSBzdWIgX1RpY2tldEdldEZpcnN0UmVzcG9uc2UgdG8gZ2V0IGNvc nJlY3QgdGltZSBhbmQgbm90IG9ubHkgZm9yIGVzY2FsYXRlZCB0aWNrZXRzCiAgICBzdWIgS2VybmVsO jpTeXN0ZW06OlNtc0V2ZW50OjpTZW5kU21zIHsKICAgICAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9I EBfOwoKICAgICAgICAjIGdldCBzbXMgZGF0YQogICAgICAgIG15ICVHYXRld2F5ID0gJXsgJFBhcmFte 0dhdGV3YXl9IH07CiAgICAgICAgbXkgJVNtcyA9ICV7ICRQYXJhbXtTbXN9IH07CiAgICAgICAgbXkgJ VJlY2lwaWVudCA9ICV7ICRQYXJhbXtSZWNpcGllbnR9IH07CgogICAgICAgICMgQ2xlYW4gTW9iaWxlT nVtYmVyCiAgICAgICAgbXkgQFMgPSAoJFJlY2lwaWVudHtFbWFpbH0gPX4gbS8oXGQrKS9nKTsKICAgI CAgICAkUmVjaXBpZW50e0VtYWlsfT1qb2luKCIiLCBAUyk7CgogICAgICAgICMgQ29udHJ1Y3QgdGhlI HVybAogICAgICAgIG15ICR1cmw9JEdhdGV3YXl7VVJMfS4iPyI7CiAgICAgICAgJHVybC49ImFjY291b nQ9JEdhdGV3YXl7YWNjb3VudH0mY29kZT0kR2F0ZXdheXtjb2RlfSZmcm9tPSRHYXRld2F5e2Zyb219J iI7CiAgICAgICAgJHVybC49ImRpc3BhdGNoPSRHYXRld2F5e2Rpc3BhdGNofSZ0bz0kUmVjaXBpZW50e 0VtYWlsfSZtc2c9JFNtc3tCb2R5fSI7CiAgICAgICAgCiAgICAgICAgIyBTZW5kIHRoZSBzbXMKICAgI CAgICBteSAkdWEgPSBMV1A6OlVzZXJBZ2VudC0+bmV3KCk7CiAgICAgICAgbXkgJHJlcSA9IG5ldyBIV FRQOjpSZXF1ZXN0IEdFVCA9PiBlbmNvZGUoIklTTy04ODU5LTEiLCR1cmwpOwogICAgICAgIG15ICRyZ XMgPSAkdWEtPnJlcXVlc3QoJHJlcSk7CiAgICAgICAgCiAgICAgICAgaWYgKCRyZXMtPmNvbnRlbnQgb mUgIjAwMCAtIE1lc3NhZ2UgU2VudCIpIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb 2coCiAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgT WVzc2FnZSAgPT4gIkVycm9yIG9uIHNlbmRpbmcgc21zLiBDb2RlOiAiLiRyZXMtPmNvbnRlbnQsCiAgI CAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgI CAgIHJldHVybiAxOwogICAgICAgIH0KICAgIH0KfQoKMTsK</File> <File Location="Kernel/System/Sms/Gateways/Clickatell.pm" Permission="64 4" Encode="Base64">IyAtLQojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTbXM6OkdhdGV3Y XlzOjpDbGlja2F0ZWxsOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIExXUDsKdXNlIEhUV FA6OlJlcXVlc3Q7CnVzZSBYTUw6OlNpbXBsZTsKdXNlIEVuY29kZTsKCnVzZSB2YXJzIHF3KEBJU0EgJ FZFUlNJT04pOwokVkVSU0lPTiA9IHF3KCRSZXZpc2lvbjogMS4zOS4yLjMgJCkgWzFdOwoKIyBkaXNhY mxlIHJlZGVmaW5lIHdhcm5pbmdzIGluIHRoaXMgc2NvcGUKewogICAgbm8gd2FybmluZ3MgJ3JlZGVma W5lJzsKCiAgICAjIAogICAgIyBvdmVyd3JpdGUgc3ViIF9UaWNrZXRHZXRGaXJzdFJlc3BvbnNlIHRvI GdldCBjb3JyZWN0IHRpbWUgYW5kIG5vdCBvbmx5IGZvciBlc2NhbGF0ZWQgdGlja2V0cwogICAgc3ViI Etlcm5lbDo6U3lzdGVtOjpTbXNFdmVudDo6U2VuZFNtcyB7CiAgICAgICAgbXkgKCAkU2VsZiwgJVBhc mFtICkgPSBAXzsKCiAgICAgICAgIyBnZXQgc21zIGRhdGEKICAgICAgICBteSAlR2F0ZXdheSA9ICV7I CRQYXJhbXtHYXRld2F5fSB9OwogICAgICAgIG15ICVTbXMgPSAleyAkUGFyYW17U21zfSB9OwogICAgI CAgIG15ICVSZWNpcGllbnQgPSAleyAkUGFyYW17UmVjaXBpZW50fSB9OwoKICAgICAgICAjIENsZWFuI E1vYmlsZU51bWJlcgogICAgICAgIG15IEBTID0gKCRSZWNpcGllbnR7RW1haWx9ID1+IG0vKFxkKykvZ yk7CiAgICAgICAgJFJlY2lwaWVudHtFbWFpbH09am9pbigiIiwgQFMpOwoKICAgICAgICAjIENvbnRyd WN0IHRoZSB1cmwKICAgICAgICBteSAkdXJsPSRHYXRld2F5e1VSTH0uIj8iOwogICAgICAgICR1cmwuP SJ1c2VyPSRHYXRld2F5e3VzZXJ9JnBhc3N3b3JkPSRHYXRld2F5e3Bhc3N3b3JkfSYiOwogICAgICAgI CR1cmwuPSJhcGlfaWQ9JEdhdGV3YXl7YXBpX2lkfSZ0bz0kUmVjaXBpZW50e0VtYWlsfSZ0ZXh0PSRTb XN7Qm9keX0iOwogICAgICAgIAogICAgICAgICMgU2VuZCB0aGUgc21zCiAgICAgICAgbXkgJHVhID0gT FdQOjpVc2VyQWdlbnQtPm5ldygpOwogICAgICAgIG15ICRyZXE7CiAgICAgICAgCiAgICAgICAgaWYgK CAkR2F0ZXdheXtTZW5kSW5JU084ODU5MX0gKXsKICAgICAgICAgICAgJHJlcSA9IG5ldyBIVFRQOjpSZ XF1ZXN0IEdFVCA9PiBlbmNvZGUoImlzby04ODU5LTEiLCR1cmwpOwogICAgICAgIH0gZWxzZSB7CiAgI CAgICAgICAgICRyZXEgPSBuZXcgSFRUUDo6UmVxdWVzdCBHRVQgPT4gJHVybDsKICAgICAgICB9CiAgI CAgICAgCiAgICAgICAgCiAgICAgICAgbXkgJHJlcyA9ICR1YS0+cmVxdWVzdCgkcmVxKTsKICAgICAgI CAKICAgICAgICBpZiAoJHJlcy0+Y29udGVudCA9fiBtL15FUlI6LykgewogICAgICAgICAgICAkU2VsZ

i0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKI CAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRXJyb3Igb24gc2VuZGluZyBzbXMuIENvZGU6ICIuJ HJlcy0+Y29udGVudCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgf SBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgfQp9CgoxOwo=</File> <File Location="Kernel/Config/Files/SmsEvent.xml" Permission="644" Encod e="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90cnNfY29uZmlnI HZlcnNpb249IjEuMCIgaW5pdD0iQXBwbGljYXRpb24iPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja 2V0OjpFdmVudE1vZHVsZVBvc3QjIyM1MTAtU21zRXZlbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+C iAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2VuZHMgdGhlIHNtcydzIHdoaWNoI GFyZSBjb25maWd1cmVkIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UgdW5kZXIgIlNNUyAoRXZlbnQpIi48L 0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91c D5Db3JlOjpUaWNrZXQ8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFza D4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0O jpFdmVudDo6U21zRXZlbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0a W9uIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+PC9JdGVtPgogICAgI CAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvb mZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluU21zRXZlbnQiIFJlcXVpcmVkPSIwI iBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgb W9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogI CAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWRta W46Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgI CAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxHcm91cD5hZG1pbjwvR3JvdXA+C iAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24+QWRtaW48L0Rlc2NyaXB0aW9uPgogICAgICAgICAgI CAgICAgPFRpdGxlIFRyYW5zbGF0YWJsZT0iMSI+U01TIChFdmVudCk8L1RpdGxlPgogICAgICAgICAgI CAgICAgPE5hdkJhck5hbWU+QWRtaW48L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TmF2QmFyT W9kdWxlPgogICAgICAgICAgICAgICAgICAgIDxNb2R1bGU+S2VybmVsOjpPdXRwdXQ6OkhUTUw6Ok5hd kJhck1vZHVsZUFkbWluPC9Nb2R1bGU+CiAgICAgICAgICAgICAgICAgICAgPE5hbWUgVHJhbnNsYXRhY mxlPSIxIj5TTVMgKEV2ZW50KTwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gV HJhbnNsYXRhYmxlPSIxIj5DcmVhdGUgYW5kIG1hbmFnZSBldmVudCBiYXNlZCBTTVMncy48L0Rlc2Nya XB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz5UaWNrZXQ8L0Jsb2NrPgogICAgICAgICAgI CAgICAgICAgIDxQcmlvPjQwNTwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyTW9kdWxlPgogI CAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZ mlnSXRlbT4KCjwvb3Ryc19jb25maWc+Cg==</File> <File Location="Kernel/Config/Files/SmsEvent-MobilePronto.xml" Permissio n="644" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90 cnNfY29uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iQXBwbGljYXRpb24iPgogICAgPENvbmZpZ0l0ZW0g TmFtZT0iU21zRXZlbnQ6OkdhdGV3YXkjIyNNb2JpbGVQcm9udG8tMDEiIFJlcXVpcmVkPSIwIiBWYWxp ZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TW9iaWxlIFByb250byBp cyBhIEdhdGV3YXkgdXNlZCB0byBzZW5kIFNNUy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5T bXNFdmVudDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPlNtc0V2ZW50OjpHYXRld2F5czwvU3ViR3Jv dXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0 ZW0gS2V5PSJDUkVERU5DSUFMIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBSSU5D SVBBTF9VU0VSIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFVWF9VU0VSIj48L0l0 ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNFTkRfUFJPSkVDVCI+PC9JdGVtPgogICAgICAg ICAgICAgICAgPEl0ZW0gS2V5PSJVUkwiPmh0dHA6Ly93d3cubXBnYXRld2F5LmNvbS92XzJfMDAvc21z cHVzaC9lbnZpYXNtcy5hc3B4PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5N b2JpbGUgUHJvbnRvPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5l bDo6U3lzdGVtOjpTbXM6OkdhdGV3YXlzOjpNb2JpbGVQcm9udG88L0l0ZW0+CiAgICAgICAgICAgIDwv SGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+Cgo8L290cnNfY29uZmlnPgo= </File> <File Location="Kernel/Config/Files/SmsEvent-Clickatell.xml" Permission= "644" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90cn NfY29uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iQXBwbGljYXRpb24iPgogICAgPENvbmZpZ0l0ZW0gTm FtZT0iU21zRXZlbnQ6OkdhdGV3YXkjIyNDbGlja2F0ZWxsSFRUUC0wMSIgUmVxdWlyZWQ9IjAiIFZhbG lkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5DbGlja2F0ZWxsIGlzIG EgR2F0ZXdheSB1c2VkIHRvIHNlbmQgU01TLiBDaGFuZ2UgU2VuZEluSVNPODg1OTEgdG8gMSBpZiB5b3 UgdXNlIGxhdGluIGFjY2V0dWF0ZWQgY2hhcnM8L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TbX NFdmVudDwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPlNtc0V2ZW50OjpHYXRld2F5czwvU3ViR3JvdX A+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW 0gS2V5PSJ1c2VyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9InBhc3N3b3JkIj48L0

l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImFwaV9pZCI+PC9JdGVtPgogICAgICAgICAgIC AgICAgPEl0ZW0gS2V5PSJVUkwiPmh0dHA6Ly9hcGkuY2xpY2thdGVsbC5jb20vaHR0cC9zZW5kbXNnPC 9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5DbGlja2F0ZWxsIEhUVFAgQXBpPC 9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpTbX M6OkdhdGV3YXlzOjpDbGlja2F0ZWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZW 5kSW5JU084ODU5MSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz 4KICAgIDwvQ29uZmlnSXRlbT4KCjwvb3Ryc19jb25maWc+Cg==</File> <File Location="Kernel/Config/Files/SmsEvent-Zenvia.xml" Permission="644 " Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90cnNfY2 9uZmlnIHZlcnNpb249IjEuMCIgaW5pdD0iQXBwbGljYXRpb24iPgogICAgPENvbmZpZ0l0ZW0gTmFtZT 0iU21zRXZlbnQ6OkdhdGV3YXkjIyNaZW52aWEtMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgIC AgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+WmVudmlhIGlzIGEgR2F0ZXdheSB1c2VkIH RvIHNlbmQgU01TLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlNtc0V2ZW50PC9Hcm91cD4KIC AgICAgICA8U3ViR3JvdXA+U21zRXZlbnQ6OkdhdGV3YXlzPC9TdWJHcm91cD4KICAgICAgICA8U2V0dG luZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9ImFjY291bnQiPj wvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iY29kZSI+PC9JdGVtPgogICAgICAgICAgIC AgICAgPEl0ZW0gS2V5PSJkaXNwYXRjaCI+c2VuZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIE tleT0iZnJvbSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVUkwiPmh0dHA6Ly93d3 cuemVudmlhMzYwLmNvbS5ici9HYXRld2F5SW50ZWdyYXRpb24vbXNnU21zLmRvPC9JdGVtPgogICAgIC AgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5aZW52aWE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SX RlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlNtczo6R2F0ZXdheXM6OlplbnZpYTwvSXRlbT 4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KCj wvb3Ryc19jb25maWc+Cg==</File> <File Location="Kernel/System/Ticket/Event/SmsEvent.pm" Permission="644" Encode="Base64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vVGlja2V0L0V2ZW50L1Ntc0V2ZW50LnBtIC0 gYSBldmVudCBtb2R1bGUgdG8gc2VuZCBzbXNzCiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTMgT1RSUyB BRywgaHR0cDovL290cnMub3JnLwojIC0tCiMgJElkOiBTbXNFdmVudC5wbSx2IDEuNDggMjAxMy8wMS8 xNCAxODozMDowMiBjciBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVR FTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5 HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHR oaXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGF ja2FnZSBLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6U21zRXZlbnQ7Cgp1c2Ugc3RyaWN0Owp 1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlNtc0V2ZW50Owp1c2UgS2VybmVsOjpTeXN 0ZW06OlN5c3RlbUFkZHJlc3M7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOwp1c2UgS2V ybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJ pYWJsZUNoZWNrIHF3KDphbGwpOwoKdXNlIHZhcnMgcXcoJFZFUlNJT04pOwokVkVSU0lPTiA9IHF3KCR SZXZpc2lvbjogMS40OCAkKSBbMV07CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0 gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9Owo gICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBmb3I gbXkgJE5lZWRlZCAoCiAgICAgICAgcXcoCiAgICAgICAgREJPYmplY3QgQ29uZmlnT2JqZWN0IFRpY2t ldE9iamVjdCBMb2dPYmplY3QgVGltZU9iamVjdCBVc2VyT2JqZWN0IEN1c3RvbWVyVXNlck9iamVjdAo gICAgICAgIFNlbmRtYWlsT2JqZWN0IFF1ZXVlT2JqZWN0IEdyb3VwT2JqZWN0IE1haW5PYmplY3QgRW5 jb2RlT2JqZWN0CiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+eyROZWVkZWR 9ID0gJFBhcmFteyROZWVkZWR9IHx8IGRpZSAiR290IG5vICROZWVkZWQhIjsKICAgIH0KCiAgICAkU2V sZi0+e0R5bmFtaWNGaWVsZE9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkLT5uZXc oJVBhcmFtKTsKICAgICRTZWxmLT57QmFja2VuZE9iamVjdH0gICAgICA9IEtlcm5lbDo6U3lzdGVtOjp EeW5hbWljRmllbGQ6OkJhY2tlbmQtPm5ldyglUGFyYW0pOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGR zCiAgICAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gPSAkU2VsZi0+e0R5bmFtaWNGaWVsZE9iamVjdH0tPkR 5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR 5cGUgPT4gWydUaWNrZXQnXSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBkeW5hbWljIGZpZWxkIGNvbmZ pZyBsb29rdXAgdGFibGUKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPnt EeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgJFNlbGYtPntEeW5hbWljRmllbGRDb25maWdMb29rdXB 9LT57ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJER5bmFtaWNGaWVsZENvbmZpZzsKICA gIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICk gPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhFdmVudCBEYXRhIENvbmZ pZyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJFNlbGY tPntMb2dPYmplY3R9LT5Mb2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgJF8 hIiApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgZm9yIChxdyhUaWNrZXR JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPnskX30gKSB7CiAgICAgICAgICAgICRTZWx mLT57TG9nT2JqZWN0fS0+TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkICR

fIGluIERhdGEhIiApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgcmV 0dXJuIGlmIG5vIHNtcyBpcyBhY3RpdmUKICAgIHJldHVybiAxIGlmICRTZWxmLT57VGlja2V0T2JqZWN 0fS0+e1NlbmROb1Ntc307CgogICAgIyByZXR1cm4gaWYgbm8gdGlja2V0IGV4aXN0cyAoZS4gZy4gaXQ gZ290IGRlbGV0ZWQpCiAgICBteSAkVGlja2V0RXhpc3RzID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5 UaWNrZXROdW1iZXJMb29rdXAoCiAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte0RhdGF9LT57VGlja2V 0SUR9LAogICAgICAgIFVzZXJJRCAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKICAgIHJldHVybiA xIGlmICEkVGlja2V0RXhpc3RzOwoKICAgICMgY2hlY2sgaWYgZXZlbnQgaXMgYWZmZWN0ZWQKICAgIG1 5ICRTbXNFdmVudE9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpTbXNFdmVudC0+bmV3KCAleyRTZWxmfSA pOwogICAgbXkgQElEcyA9ICRTbXNFdmVudE9iamVjdC0+U21zRXZlbnRDaGVjaygKICAgICAgICBFdmV udCAgPT4gJFBhcmFte0V2ZW50fSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICA pOwoKICAgICMgcmV0dXJuIGlmIG5vIHNtcyBmb3IgZXZlbnQgZXhpc3RzCiAgICByZXR1cm4gMSBpZiA hQElEczsKCiAgICAjIGdldCB0aWNrZXQgYXR0cmlidXRlIG1hdGNoZXMKICAgIG15ICVUaWNrZXQgPSA kU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICR QYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICBVc2VySUQgICAgICAgID0+ICRQYXJhbXtVc2V ySUR9LAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CgogICAgTk9USUZJQ0FUSU9OOgo gICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgIG15ICVTbXMgPSAkU21zRXZlbnRPYmplY3QtPlN tc0dldCgKICAgICAgICAgICAgSUQgICAgID0+ICRJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiA gICAgICAgKTsKICAgICAgICBuZXh0IE5PVElGSUNBVElPTiBpZiAhJFNtc3tEYXRhfTsKICAgICAgICB mb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU21ze0RhdGF9IH0gKSB7CgogICAgICAgICAgICAjIGl nbm9yZSBub3QgdGlja2V0IHJlbGF0ZWQgYXR0cmlidXRlcwogICAgICAgICAgICBuZXh0IGlmICRLZXk gZXEgJ1JlY2lwaWVudHMnOwogICAgICAgICAgICBuZXh0IGlmICRLZXkgZXEgJ1JlY2lwaWVudEFnZW5 0cyc7CiAgICAgICAgICAgIG5leHQgaWYgJEtleSBlcSAnUmVjaXBpZW50R3JvdXBzJzsKICAgICAgICA gICAgbmV4dCBpZiAkS2V5IGVxICdSZWNpcGllbnRSb2xlcyc7CiAgICAgICAgICAgIG5leHQgaWYgJEt leSBlcSAnUmVjaXBpZW50RW1haWwnOwogICAgICAgICAgICBuZXh0IGlmICRLZXkgZXEgJ0V2ZW50cyc 7CiAgICAgICAgICAgIG5leHQgaWYgJEtleSBlcSAnQXJ0aWNsZVR5cGVJRCc7CiAgICAgICAgICAgIG5 leHQgaWYgJEtleSBlcSAnQXJ0aWNsZVNlbmRlclR5cGVJRCc7CiAgICAgICAgICAgIG5leHQgaWYgJEt leSBlcSAnQXJ0aWNsZVN1YmplY3RNYXRjaCc7CiAgICAgICAgICAgIG5leHQgaWYgJEtleSBlcSAnQXJ 0aWNsZUJvZHlNYXRjaCc7CiAgICAgICAgICAgIG5leHQgaWYgJEtleSBlcSAnR2F0ZXdheSc7CiAgICA gICAgICAgIG5leHQgaWYgJEtleSBlcSAnU21zQXJ0aWNsZVR5cGVJRCc7CgogICAgICAgICAgICAjIGN oZWNrIHRpY2tldCBhdHRyaWJ1dGVzCiAgICAgICAgICAgIG5leHQgaWYgISRTbXN7RGF0YX0tPnskS2V 5fTsKICAgICAgICAgICAgbmV4dCBpZiAhQHsgJFNtc3tEYXRhfS0+eyRLZXl9IH07CiAgICAgICAgICA gIG5leHQgaWYgISRTbXN7RGF0YX0tPnskS2V5fS0+WzBdOwogICAgICAgICAgICBteSAkTWF0Y2ggPSA wOwogICAgICAgICAgICBWQUxVRToKICAgICAgICAgICAgZm9yIG15ICRWYWx1ZSAoIEB7ICRTbXN7RGF 0YX0tPnskS2V5fSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBWQUxVRSBpZiAhJFZhbHVlOwoKICA gICAgICAgICAgICAgICMgY2hlY2sgaWYga2V5IGlzIGEgc2VhcmNoIGR5bmFtaWMgZmllbGQKICAgICA gICAgICAgICAgIGlmICggJEtleSA9fiBte1xBIFNlYXJjaF9EeW5hbWljRmllbGRffXhtcyApIHsKCiA gICAgICAgICAgICAgICAgICAgIyByZW1vdmUgc2VhcmNoIHByZWZpeAogICAgICAgICAgICAgICAgICA gIG15ICREeW5hbWljRmllbGROYW1lID0gJEtleTsKCiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWN GaWVsZE5hbWUgPX4gc3tTZWFyY2hfRHluYW1pY0ZpZWxkX317fTsKCiAgICAgICAgICAgICAgICAgICA gIyBnZXQgdGhlIGR5bmFtaWMgZmllbGQgY29uZmlnIGZvciB0aGlzIGZpZWxkCiAgICAgICAgICAgICA gICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRTZWxmLT57RHluYW1pY0ZpZWxkQ29uZmlnTG9 va3VwfS0+eyREeW5hbWljRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBpZiAhJER 5bmFtaWNGaWVsZENvbmZpZzsKCiAgICAgICAgICAgICAgICAgICAgJE1hdGNoID0gJFNlbGYtPntCYWN rZW5kT2JqZWN0fS0+T2JqZWN0TWF0Y2goCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWV sZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx 1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICBPYmplY3RBdHR yaWJ1dGVzICAgPT4gXCVUaWNrZXQsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICA gICAgICBsYXN0IGlmICRNYXRjaDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2U gewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRWYWx1ZSBlcSAkVGlja2V0eyRLZXl9ICkgewogICA gICAgICAgICAgICAgICAgICAgICAkTWF0Y2ggPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBsYXN 0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICA gICAgICAgICBuZXh0IE5PVElGSUNBVElPTiBpZiAhJE1hdGNoOwogICAgICAgIH0KICAgICAgICAgICA gICAgICAgIAogICAgICAgICMgbWF0Y2ggYXJ0aWNsZSB0eXBlcyBvbmx5IG9uIEFydGljbGVDcmVhdGU gZXZlbnQKICAgICAgICBteSBAQXR0YWNobWVudHM7CiAgICAgICAgaWYgKCAkUGFyYW17RXZlbnR9IGV xICdBcnRpY2xlQ3JlYXRlJyAmJiAkUGFyYW17RGF0YX0tPntBcnRpY2xlSUR9ICkgewogICAgICAgICA gICBteSAlQXJ0aWNsZSA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUdldCgKICAgICAgICA gICAgICAgIEFydGljbGVJRCAgICAgPT4gJFBhcmFte0RhdGF9LT57QXJ0aWNsZUlEfSwKICAgICAgICA gICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBEeW5 hbWljRmllbGRzID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGFydGljbGU gdHlwZQogICAgICAgICAgICBpZiAoICRTbXN7RGF0YX0tPntBcnRpY2xlVHlwZUlEfSApIHsKICAgICA

gICAgICAgICAgIG15ICRNYXRjaCA9IDA7CiAgICAgICAgICAgICAgICBWQUxVRToKICAgICAgICAgICA gICAgIGZvciBteSAkVmFsdWUgKCBAeyAkU21ze0RhdGF9LT57QXJ0aWNsZVR5cGVJRH0gfSApIHsKICA gICAgICAgICAgICAgICAgICBuZXh0IFZBTFVFIGlmICEkVmFsdWU7CiAgICAgICAgICAgICAgICAgICA gaWYgKCAkVmFsdWUgPT0gJEFydGljbGV7QXJ0aWNsZVR5cGVJRH0gKSB7CiAgICAgICAgICAgICAgICA gICAgICAgICRNYXRjaCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICA gICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBOT1RJRklDQVR JT04gaWYgISRNYXRjaDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBhcnRpY2xlIHN lbmRlciB0eXBlCiAgICAgICAgICAgIGlmICggJFNtc3tEYXRhfS0+e0FydGljbGVTZW5kZXJUeXBlSUR 9ICkgewogICAgICAgICAgICAgICAgbXkgJE1hdGNoID0gMDsKICAgICAgICAgICAgICAgIFZBTFVFOgo gICAgICAgICAgICAgICAgZm9yIG15ICRWYWx1ZSAoIEB7ICRTbXN7RGF0YX0tPntBcnRpY2xlU2VuZGV yVHlwZUlEfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgVkFMVUUgaWYgISRWYWx1ZTsKICA gICAgICAgICAgICAgICAgICBpZiAoICRWYWx1ZSA9PSAkQXJ0aWNsZXtTZW5kZXJUeXBlSUR9ICkgewo gICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2ggPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB sYXN0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICA gIG5leHQgTk9USUZJQ0FUSU9OIGlmICEkTWF0Y2g7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICM gY2hlY2sgc3ViamVjdCAmIGJvZHkKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KCBTdWJqZWN0IEJ vZHkgKSkgewogICAgICAgICAgICAgICAgbmV4dCBpZiAhJFNtc3tEYXRhfS0+eyAnQXJ0aWNsZScgLiA kS2V5IC4gJ01hdGNoJyB9OwogICAgICAgICAgICAgICAgbXkgJE1hdGNoID0gMDsKICAgICAgICAgICA gICAgIFZBTFVFOgogICAgICAgICAgICAgICAgZm9yIG15ICRWYWx1ZSAoIEB7ICRTbXN7RGF0YX0tPns gJ0FydGljbGUnIC4gJEtleSAuICdNYXRjaCcgfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQ gVkFMVUUgaWYgISRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRBcnRpY2xleyRLZXl9ID1 +IC9cUSRWYWx1ZVxFL2kgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaCA9IDE7CiAgICA gICAgICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICA gICAgfQogICAgICAgICAgICAgICAgbmV4dCBOT1RJRklDQVRJT04gaWYgISRNYXRjaDsKICAgICAgICA gICAgfQoKICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudHMgdG8gc21zCiMgICAgICAgICAgICBpZiA oICRTbXN7RGF0YX0tPntHYXRld2F5fS0+WzBdICkgewojICAgICAgICAgICAgICAgIG15ICVJbmRleCA 9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUF0dGFjaG1lbnRJbmRleCgKIyAgICAgICAgICA gICAgICAgICAgQXJ0aWNsZUlEICAgICAgICAgICAgICAgICAgPT4gJFBhcmFte0RhdGF9LT57QXJ0aWN sZUlEfSwKIyAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICAgPT4gJFB hcmFte1VzZXJJRH0sCiMgICAgICAgICAgICAgICAgICAgIFN0cmlwUGxhaW5Cb2R5QXNBdHRhY2htZW5 0ID0+IDMsCiMgICAgICAgICAgICAgICAgKTsKIyAgICAgICAgICAgICAgICBpZiAoJUluZGV4KSB7CiM gICAgICAgICAgICAgICAgICAgIGZvciBteSAkRmlsZUlEICggc29ydCBrZXlzICVJbmRleCApIHsKIyA gICAgICAgICAgICAgICAgICAgICAgIG15ICVBdHRhY2htZW50ID0gJFNlbGYtPntUaWNrZXRPYmplY3R 9LT5BcnRpY2xlQXR0YWNobWVudCgKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnRpY2xlSUQ gPT4gJFBhcmFte0RhdGF9LT57QXJ0aWNsZUlEfSwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICB GaWxlSUQgICAgPT4gJEZpbGVJRCwKIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA gPT4gJFBhcmFte1VzZXJJRH0sCiMgICAgICAgICAgICAgICAgICAgICAgICApOwojICAgICAgICAgICA gICAgICAgICAgICAgbmV4dCBpZiAhJUF0dGFjaG1lbnQ7CiMgICAgICAgICAgICAgICAgICAgICAgICB wdXNoIEBBdHRhY2htZW50cywgXCVBdHRhY2htZW50OwojICAgICAgICAgICAgICAgICAgICB9CiMgICA gICAgICAgICAgICAgfQojICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgICMgc2VuZCBzbXM KICAgICAgICAkU2VsZi0+X1NlbmRTbXNUb1JlY2lwaWVudHMoCiAgICAgICAgICAgIFRpY2tldElEICA gICAgICAgICAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCA gICAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgU21zICAgICAgICAgICA gICAgICAgID0+IFwlU21zLAogICAgICAgICAgICBDdXN0b21lck1lc3NhZ2VQYXJhbXMgPT4ge30sCiA gICAgICAgICAgIEV2ZW50ICAgICAgICAgICAgICAgICA9PiAkUGFyYW17RXZlbnR9LAogICAgICAgICA gICBBdHRhY2htZW50cyAgICAgICAgICAgPT4gXEBBdHRhY2htZW50cywKICAgICAgICApOwogICAgfQo KICAgIHJldHVybiAxOwp9CgojIEFzc2VtYmxlIHRoZSBsaXN0IG9mIHJlY2lwaWVudHMuIEFnZW50cyB hbmQgY3VzdG9tZXIgdXNlcnMgY2FuIGJlIHJlY2lwaWVudC4KIyBDYWxsIF9TZW5kU21zKCkgZm9yIGV hY2ggcmVjaXBpZW50LgpzdWIgX1NlbmRTbXNUb1JlY2lwaWVudHMgewogICAgbXkgKCAkU2VsZiwgJVB hcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdyhDdXN0b21lck1 lc3NhZ2VQYXJhbXMgVGlja2V0SUQgVXNlcklEIFNtcykpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF9 9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9 yJywgTWVzc2FnZSA9PiAiTmVlZCAkXyEiICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiA gICB9CgogICAgIyBnZXQgb2xkIGFydGljbGUgZm9yIHF1b3RpbmcKICAgIG15ICVBcnRpY2xlID0gJFN lbGYtPntUaWNrZXRPYmplY3R9LT5BcnRpY2xlTGFzdEN1c3RvbWVyQXJ0aWNsZSgKICAgICAgICBUaWN rZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAo gICAgKTsKCiAgICAjIGdldCByZWNpcGllbnRzIGJ5IFJlY2lwaWVudHMKICAgIG15IEBSZWNpcGllbnR zOwogICAgaWYgKCAkUGFyYW17U21zfS0+e0RhdGF9LT57UmVjaXBpZW50c30gKSB7CiAgICAgICAgUkV DSVBJRU5UOgogICAgICAgIGZvciBteSAkUmVjaXBpZW50ICggQHsgJFBhcmFte1Ntc30tPntEYXRhfS0 +e1JlY2lwaWVudHN9IH0gKSB7CiAgICAgICAgICAgIGlmICggJFJlY2lwaWVudCA9fiAvXkFnZW50KE9

3bmVyfFJlc3BvbnNpYmxlfFdyaXRlUGVybWlzc2lvbnMpJC8gKSB7CiAgICAgICAgICAgICAgICBpZiA oICRSZWNpcGllbnQgZXEgJ0FnZW50T3duZXInICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQHs gJFBhcmFte1Ntc30tPntEYXRhfS0+e1JlY2lwaWVudEFnZW50c30gfSwgJEFydGljbGV7T3duZXJJRH0 7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRSZWNpcGllbnQgZXEgJ0F nZW50UmVzcG9uc2libGUnICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte1Ntc30 tPntEYXRhfS0+e1JlY2lwaWVudEFnZW50c30gfSwKICAgICAgICAgICAgICAgICAgICAgICAgJEFydGl jbGV7UmVzcG9uc2libGVJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiA oICRSZWNpcGllbnQgZXEgJ0FnZW50V3JpdGVQZXJtaXNzaW9ucycgKSB7CiAgICAgICAgICAgICAgICA gICAgbXkgJEdyb3VwSUQgPSAkU2VsZi0+e1F1ZXVlT2JqZWN0fS0+R2V0UXVldWVHcm91cElEKAogICA gICAgICAgICAgICAgICAgICAgICBRdWV1ZUlEID0+ICRBcnRpY2xle1F1ZXVlSUR9LAogICAgICAgICA gICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbXkgQFVzZXJJRHMgPSAkU2VsZi0+e0dyb3V wT2JqZWN0fS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBHcm91cElEID0 +ICRHcm91cElELAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdydycsCiAgICAgICA gICAgICAgICAgICAgICAgIFJlc3VsdCAgPT4gJ0lEJywKICAgICAgICAgICAgICAgICAgICApOwogICA gICAgICAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte1Ntc30tPntEYXRhfS0+e1JlY2lwaWVudEFnZW5 0c30gfSwgQFVzZXJJRHM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICA gZWxzaWYgKCAkUmVjaXBpZW50IGVxICdDdXN0b21lcicgKSB7CiAgICAgICAgICAgICAgICBteSAlUmV jaXBpZW50OwoKICAgICAgICAgICAgICAgICMgQXJ0aWNsZUxhc3RDdXN0b21lckFydGljbGUoKSByZXR 1cm5zIHRoZSBsYXN0ZXN0IGN1c3RvbWVyIGFydGljbGUgYnV0IGlmIHRoZXJlCiAgICAgICAgICAgICA gICAjIGlzIG5vIGN1c3RvbWVyIGFjdGljbGUsIGl0IHJldHVybnMgdGhlIGxhdGVzdCBhZ2VudCBhcnR pY2xlLiBJbiB0aGlzIGNhc2UKICAgICAgICAgICAgICAgICMgc21zIG11c3Qgbm90IGJlIHNlbmQgdG8 gdGhlICJGcm9tIiwgYnV0IHRvIHRoZSAiVG8iIGFydGljbGUgZmllbGQuCiAgICAgICAgICAgICAgICB pZiAoICRBcnRpY2xle1NlbmRlclR5cGV9IGVxICdjdXN0b21lcicgKSB7CiAgICAgICAgICAgICAgICA gICAgJFJlY2lwaWVudHtFbWFpbH0gPSAkQXJ0aWNsZXtGcm9tfTsKICAgICAgICAgICAgICAgIH0KICA gICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRSZWNpcGllbnR7RW1haWx9ID0 gJEFydGljbGV7VG99OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJFJlY2lwaWVudHt UeXBlfSA9ICdDdXN0b21lcic7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBjdXN0b21lciBzbXN zIHNob3VsZCBiZSBzZW5kCiAgICAgICAgICAgICAgICAjIENPTVBMRU1FTlRPOiBTTVMgZGlmZmVyZW5 0IGZyb20gbWFpbCBub3RpZmljYXRpb24sIHNob3VsZCBvbmx5IGJlIHNlbnQgaWYgdGhpcyBjdXN0b21 lciBoYXMgYW4gYWNjb3VudCBpbiB0aGUgc3lzdGVtCiAgICAgICAgICAgICAgICBpZiAoICEkQXJ0aWN sZXtDdXN0b21lclVzZXJJRH0gICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICA kU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4 gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdTZW5kIG5vIGN1c3R vbWVyIHNtcyBiZWNhdXNlIG5vIGN1c3RvbWVyIGlzIHNldCEnLAogICAgICAgICAgICAgICAgICAgICk 7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBSRUNJUElFTlQ7CiAgICAgICAgICAgICAgICB9CgogICA gICAgICAgICAgICAgIyBjaGVjayBjdXN0b21lciBNb2JpbGUKICAgICAgICAgICAgICAgIGVsc2Ugewo gICAgICAgICAgICAgICAgICAgIG15ICVDdXN0b21lclVzZXIgPSAkU2VsZi0+e0N1c3RvbWVyVXNlck9 iamVjdH0tPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXIgPT4 gJEFydGljbGV7Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICA gICAgICAgICAgaWYgKCAhJEN1c3RvbWVyVXNlcntVc2VyTW9iaWxlfSApIHsKICAgICAgICAgICAgICA gICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICA gICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2U gID0+ICJTZW5kIG5vIGN1c3RvbWVyIHNtcyBiZWNhdXNlIG9mIG1pc3NpbmcgIgogICAgICAgICAgICA gICAgICAgICAgICAgICAgICAgIC4gImN1c3RvbWVyIE1vYmlsZSBOdW1iZXIgKEN1c3RvbWVyVXNlckl EPSRDdXN0b21lclVzZXJ7Q3VzdG9tZXJVc2VySUR9KSEiLAogICAgICAgICAgICAgICAgICAgICAgICA pOwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFJFQ0lQSUVOVDsKICAgICAgICAgICAgICAgICA gICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBnZXQgbGFuZ3VhZ2UgYW5kIHN lbmQgcmVjaXBpZW50CiAgICAgICAgICAgICAgICAkUmVjaXBpZW50e0xhbmd1YWdlfSA9ICRTZWxmLT5 7Q29uZmlnT2JqZWN0fS0+R2V0KCdEZWZhdWx0TGFuZ3VhZ2UnKSB8fCAnZW4nOwogICAgICAgICAgICA gICAgaWYgKCAkQXJ0aWNsZXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXk gJUN1c3RvbWVyVXNlciA9ICRTZWxmLT57Q3VzdG9tZXJVc2VyT2JqZWN0fS0+Q3VzdG9tZXJVc2VyRGF 0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkQXJ0aWNsZXtDdXN0b21lclVzZXJ JRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRDdXN0b21 lclVzZXJ7VXNlck1vYmlsZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENPTVBMRU1 FTlRPOiBjaGFuZ2UgVXNlckVtYWlsIHRvIFVzZXJNb2JpbGUKIyAgICAgICAgICAgICAgICAgICAgICA gICRSZWNpcGllbnR7RW1haWx9ID0gJEN1c3RvbWVyVXNlcntVc2VyRW1haWx9OwogICAgICAgICAgICA gICAgICAgICAgICAkUmVjaXBpZW50e0VtYWlsfSA9ICRDdXN0b21lclVzZXJ7VXNlck1vYmlsZX07CiA gICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGdldCB1c2VyIGxhbmd1YWd lCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ3VzdG9tZXJVc2Vye1VzZXJMYW5ndWFnZX0gKSB7CiA gICAgICAgICAgICAgICAgICAgICAgICRSZWNpcGllbnR7TGFuZ3VhZ2V9ID0gJEN1c3RvbWVyVXNlcnt

Vc2VyTGFuZ3VhZ2V9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICA gICAgICAgICAgICAjIGNoZWNrIHJlY2lwaWVudHMKICAgICAgICAgICAgICAgICMgQ09NUExFTUVOVE8 6IHdlIGRpc2FibGUgdGhlICJhdCIgdmVyaWZpY2F0aW9uIHNpbmNlIGl0J3MgYSBwaG9uZSBudW1iZXI gYW5kIG5vdCBhbiBlbWFpbAojICAgICAgICAgICAgICAgIGlmICggISRSZWNpcGllbnR7RW1haWx9IHx 8ICRSZWNpcGllbnR7RW1haWx9ICF+IC9ALyApIHsKICAgICAgICAgICAgICAgIGlmICggISRSZWNpcGl lbnR7RW1haWx9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgUkVDSVBJRU5UOwogICAgICAgICA gICAgICAgfQoKICAgICAgICAgICAgICAgICMgZ2V0IHJlYWxuYW1lCiAgICAgICAgICAgICAgICBpZiA oICRBcnRpY2xle0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAkUmVjaXBpZW5 0e1JlYWxuYW1lfSA9ICRTZWxmLT57Q3VzdG9tZXJVc2VyT2JqZWN0fS0+Q3VzdG9tZXJOYW1lKAogICA gICAgICAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gJEFydGljbGV7Q3VzdG9tZXJVc2VySUR9LAo gICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiA oICEkUmVjaXBpZW50e1JlYWxuYW1lfSApIHsKICAgICAgICAgICAgICAgICAgICAkUmVjaXBpZW50e1J lYWxuYW1lfSA9ICRBcnRpY2xle0Zyb219IHx8ICcnOwogICAgICAgICAgICAgICAgICAgICRSZWNpcGl lbnR7UmVhbG5hbWV9ID1+IHMvPC4qPnxcKC4qXCl8XCJ8O3wsLy9nOwogICAgICAgICAgICAgICAgICA gICRSZWNpcGllbnR7UmVhbG5hbWV9ID1+IHMvKCAkKXwoICAkKS8vZzsKICAgICAgICAgICAgICAgIH0 KCiAgICAgICAgICAgICAgICBwdXNoIEBSZWNpcGllbnRzLCBcJVJlY2lwaWVudDsKICAgICAgICAgICA gfQogICAgICAgIH0KICAgIH0KCiAgICAjIGhhc2ggdG8ga2VlcCB0cmFjayB3aGljaCBhZ2VudHMgYXJ lIGFscmVhZHkgcmVjZWl2aW5nIHRoaXMgc21zCiAgICBteSAlQWdlbnRVc2VkOwoKICAgICMgZ2V0IHJ lY2lwaWVudHMgYnkgUmVjaXBpZW50QWdlbnRzCiAgICBpZiAoICRQYXJhbXtTbXN9LT57RGF0YX0tPnt SZWNpcGllbnRBZ2VudHN9ICkgewogICAgICAgIFJFQ0lQSUVOVDoKICAgICAgICBmb3IgbXkgJFJlY2l waWVudCAoIEB7ICRQYXJhbXtTbXN9LT57RGF0YX0tPntSZWNpcGllbnRBZ2VudHN9IH0gKSB7CiAgICA gICAgICAgIAogICAgICAgICAgICBuZXh0IGlmICRSZWNpcGllbnQgPT0gMTsKICAgICAgICAgICAgbmV 4dCBpZiAkQWdlbnRVc2VkeyRSZWNpcGllbnR9OwogICAgICAgICAgICAkQWdlbnRVc2VkeyRSZWNpcGl lbnR9ID0gMTsKCiAgICAgICAgICAgIG15ICVVc2VyID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+R2V0VXN lckRhdGEoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFJlY2lwaWVudCwKICAgICAgICAgICAgICA gIFZhbGlkICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFJFQ0lQSUVOVCBpZiA hJVVzZXI7CiAgICAgICAgICAgIG5leHQgUkVDSVBJRU5UIGlmICEkVXNlcntVc2VyTG9naW59OwoKICA gICAgICAgICAgbXkgJUN1c3RvbWVyVXNlciA9ICRTZWxmLT57Q3VzdG9tZXJVc2VyT2JqZWN0fS0+Q3V zdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgICAgIFVzZXIgPT4gJFVzZXJ7VXNlckxvZ2lufSw KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUkVDSVBJRU5UIGlmICElQ3VzdG9tZXJVc2V yOwogICAgICAgICAgICBuZXh0IFJFQ0lQSUVOVCBpZiAhJEN1c3RvbWVyVXNlcntVc2VyTW9iaWxlfTs KCiAgICAgICAgICAgIG15ICVSZWNpcGllbnQ7CgogICAgICAgICAgICAkUmVjaXBpZW50e0VtYWlsfSA 9ICRDdXN0b21lclVzZXJ7VXNlck1vYmlsZX07CiAgICAgICAgICAgICRSZWNpcGllbnR7VHlwZX0gID0 gJ0FnZW50JzsKCgogICAgICAgICAgICBwdXNoIEBSZWNpcGllbnRzLCBcJVJlY2lwaWVudDsKICAgICA gICB9CiAgICB9CgogICAgIyBnZXQgcmVjaXBpZW50cyBieSBSZWNpcGllbnRHcm91cHMKICAgIGlmICg gJFBhcmFte1Ntc30tPntEYXRhfS0+e1JlY2lwaWVudEdyb3Vwc30gKSB7CiAgICAgICAgUkVDSVBJRU5 UOgogICAgICAgIGZvciBteSAkR3JvdXAgKCBAeyAkUGFyYW17U21zfS0+e0RhdGF9LT57UmVjaXBpZW5 0R3JvdXBzfSB9ICkgewogICAgICAgICAgICBteSBAR3JvdXBNZW1iZXJMaXN0ID0gJFNlbGYtPntHcm9 1cE9iamVjdH0tPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICAgICAgICAgIFJlc3VsdCAgPT4gJ0lEJyw KICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgIEdyb3VwSUQgPT4 gJEdyb3VwLAogICAgICAgICAgICApOwogICAgICAgICAgICBHUk9VUE1FTUJFUjoKICAgICAgICAgICA gZm9yIG15ICRSZWNpcGllbnQgKEBHcm91cE1lbWJlckxpc3QpIHsKICAgICAgICAgICAgICAgIG5leHQ gR1JPVVBNRU1CRVIgaWYgJFJlY2lwaWVudCA9PSAxOwogICAgICAgICAgICAgICAgbmV4dCBHUk9VUE1 FTUJFUiBpZiAkQWdlbnRVc2VkeyRSZWNpcGllbnR9OwogICAgICAgICAgICAgICAgJEFnZW50VXNlZHs kUmVjaXBpZW50fSA9IDE7CiAgICAgICAgICAgICAgICBteSAlVXNlckRhdGEgPSAkU2VsZi0+e1VzZXJ PYmplY3R9LT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFJlY2lwaWV udCwKICAgICAgICAgICAgICAgICAgICBWYWxpZCAgPT4gMQogICAgICAgICAgICAgICAgKTsKICAgICA gICAgICAgICAgIG5leHQgR1JPVVBNRU1CRVIgaWYgISVVc2VyRGF0YTsKICAgICAgICAgICAgICAgIG5 leHQgR1JPVVBNRU1CRVIgaWYgISRVc2VyRGF0YXtVc2VyTG9naW59OwoKICAgICAgICAgICAgICAgIG1 5ICVDdXN0b21lclVzZXIgPSAkU2VsZi0+e0N1c3RvbWVyVXNlck9iamVjdH0tPkN1c3RvbWVyVXNlckR hdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgVXNlciA9PiAkVXNlckRhdGF7VXNlckxvZ2lufSwKICA gICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBHUk9VUE1FTUJFUiBpZiAhJUN1c3R vbWVyVXNlcjsKICAgICAgICAgICAgICAgIG5leHQgR1JPVVBNRU1CRVIgaWYgISRDdXN0b21lclVzZXJ 7VXNlck1vYmlsZX07CgogICAgICAgICAgICAgICAgaWYgKCAkVXNlckRhdGF7VXNlck1vYmlsZX0gKSB 7CiAgICAgICAgICAgICAgICAgICAgbXkgJVJlY2lwaWVudDsKICAgICAgICAgICAgICAgICAgICAkUmV jaXBpZW50e0VtYWlsfSA9ICRVc2VyRGF0YXtVc2VyTW9iaWxlfTsKICAgICAgICAgICAgICAgICAgICA kUmVjaXBpZW50e1R5cGV9ICA9ICdBZ2VudCc7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAUmVjaXB pZW50cywgXCVSZWNpcGllbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB 9CiAgICB9CgogICAgIyBnZXQgcmVjaXBpZW50cyBieSBSZWNpcGllbnRSb2xlcwogICAgaWYgKCAkUGF yYW17U21zfS0+e0RhdGF9LT57UmVjaXBpZW50Um9sZXN9ICkgewogICAgICAgIFJFQ0lQSUVOVDoKICA

gICAgICBmb3IgbXkgJFJvbGUgKCBAeyAkUGFyYW17U21zfS0+e0RhdGF9LT57UmVjaXBpZW50Um9sZXN 9IH0gKSB7CiAgICAgICAgICAgIG15IEBSb2xlTWVtYmVyTGlzdCA9ICRTZWxmLT57R3JvdXBPYmplY3R 9LT5Hcm91cFVzZXJSb2xlTWVtYmVyTGlzdCgKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnSUQnLAo gICAgICAgICAgICAgICAgUm9sZUlEID0+ICRSb2xlLAogICAgICAgICAgICApOwogICAgICAgICAgICB ST0xFTUVNQkVSOgogICAgICAgICAgICBmb3IgbXkgJFJlY2lwaWVudCAoQFJvbGVNZW1iZXJMaXN0KSB 7CiAgICAgICAgICAgICAgICBuZXh0IFJPTEVNRU1CRVIgaWYgJFJlY2lwaWVudCA9PSAxOwogICAgICA gICAgICAgICAgbmV4dCBST0xFTUVNQkVSIGlmICRBZ2VudFVzZWR7JFJlY2lwaWVudH07CiAgICAgICA gICAgICAgICAkQWdlbnRVc2VkeyRSZWNpcGllbnR9ID0gMTsKICAgICAgICAgICAgICAgIG15ICVVc2V yRGF0YSA9ICRTZWxmLT57VXNlck9iamVjdH0tPkdldFVzZXJEYXRhKAogICAgICAgICAgICAgICAgICA gIFVzZXJJRCA9PiAkUmVjaXBpZW50LAogICAgICAgICAgICAgICAgICAgIFZhbGlkICA9PiAxCiAgICA gICAgICAgICAgICApOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBuZXh0IFJPTEVNRU1 CRVIgaWYgISVVc2VyRGF0YTsKICAgICAgICAgICAgICAgIG5leHQgUk9MRU1FTUJFUiBpZiAhJFVzZXJ EYXRhe1VzZXJMb2dpbn07CgogICAgICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlciA9ICRTZWxmLT5 7Q3VzdG9tZXJVc2VyT2JqZWN0fS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgICAgICA gICBVc2VyID0+ICRVc2VyRGF0YXtVc2VyTG9naW59LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICA gICAgICAgICBuZXh0IFJPTEVNRU1CRVIgaWYgISVDdXN0b21lclVzZXI7CiAgICAgICAgICAgICAgICB uZXh0IFJPTEVNRU1CRVIgaWYgISRDdXN0b21lclVzZXJ7VXNlck1vYmlsZX07CiAgICAgICAgICAgICA gICAKICAgICAgICAgICAgICAgIGlmICggJFVzZXJEYXRhe1VzZXJNb2JpbGV9ICkgewogICAgICAgICA gICAgICAgICAgIG15ICVSZWNpcGllbnQ7CiAgICAgICAgICAgICAgICAgICAgJFJlY2lwaWVudHtFbWF pbH0gPSAkVXNlckRhdGF7VXNlck1vYmlsZX07CiAgICAgICAgICAgICAgICAgICAgJFJlY2lwaWVudHt UeXBlfSAgPSAnQWdlbnQnOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQFJlY2lwaWVudHMsIFwlUmV jaXBpZW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICA gICMgZ2V0IHJlY2lwaWVudHMgYnkgUmVjaXBpZW50RW1haWwKICAgIGlmICggJFBhcmFte1Ntc30tPnt EYXRhfS0+e1JlY2lwaWVudEVtYWlsfSApIHsKICAgICAgICBpZiAoICRQYXJhbXtTbXN9LT57RGF0YX0 tPntSZWNpcGllbnRFbWFpbH0tPlswXSApIHsKICAgICAgICAgICAKICAgICAgICAgICAgIyBDT01QTEV NRU5UTzogc3BsaXQgbnVtYmVycyBieSBjb21tYSBhbmQgOwogICAgICAgICAgICBteSBAbnVtYmVycyA 9IHNwbGl0IC9bLDtdLywkUGFyYW17U21zfS0+e0RhdGF9LT57UmVjaXBpZW50RW1haWx9LT5bMF07Cgo gICAgICAgICAgICBmb3IgbXkgJG51bWJlciAoQG51bWJlcnMpewogICAgICAgICAgICAgICAgbXkgJVJ lY2lwaWVudDsgIAogICAgCiAgICAgICAgICAgICAgICAkUmVjaXBpZW50e1JlYWxuYW1lfSA9ICcnOwo gICAgICAgICAgICAgICAgJFJlY2lwaWVudHtUeXBlfSAgICAgPSAnQ3VzdG9tZXInOwogICAgICAgICA gICAgICAgJFJlY2lwaWVudHtFbWFpbH0gICAgPSAkbnVtYmVyOwoKICAgICAgICAgICAgICAgICMgY2h lY2sgaWYgd2UgaGF2ZSBhIHNwZWNpZmllZCBhcnRpY2xlIHR5cGUKICAgICAgICAgICAgICAgIGlmICg gJFBhcmFte1Ntc30tPntEYXRhfS0+e1Ntc0FydGljbGVUeXBlSUR9ICkgewogICAgICAgICAgICAgICA gICAgICRSZWNpcGllbnR7U21zQXJ0aWNsZVR5cGV9ID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5BcnR pY2xlVHlwZUxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZVR5cGVJRCA9PiAkUGF yYW17U21zfS0+e0RhdGF9LT57U21zQXJ0aWNsZVR5cGVJRH0tPlswXQogICAgICAgICAgICAgICAgICA gICkgfHwgJ3Ntcyc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayByZWN pcGllbnRzCiAgICAgICAgICAgICAgICAjIENPTVBMRU1FTlRPOiBkb250IGNoZWNrICJBdCIKICAgICM gICAgICAgICAgICBpZiAoICRSZWNpcGllbnR7RW1haWx9ICYmICRSZWNpcGllbnR7RW1haWx9ID1+IC9 ALyApIHsKICAgICAgICAgICAgICAgIGlmICggJFJlY2lwaWVudHtFbWFpbH0gKSB7CiAgICAgICAgICA gICAgICAgICAgcHVzaCBAUmVjaXBpZW50cywgXCVSZWNpcGllbnQ7CiAgICAgICAgICAgICAgICB9CiA gICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBHZXQgY3VycmVudCB1c2VyIGRhdGEKICA gIG15ICVDdXJyZW50VXNlciA9ICRTZWxmLT57VXNlck9iamVjdH0tPkdldFVzZXJEYXRhKAogICAgICA gIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICAkU2VsZi0+e1N5c3RlbUFkZHJlc3N PYmplY3R9ID0gS2VybmVsOjpTeXN0ZW06OlN5c3RlbUFkZHJlc3MtPm5ldyggJXskU2VsZn0gKTsKICA gIFJFQ0lQSUVOVDoKICAgIGZvciBteSAkUmVjaXBpZW50IChAUmVjaXBpZW50cykgewojICAgICAgICB pZiAoCiMgICAgICAgICAgICAkU2VsZi0+e1N5c3RlbUFkZHJlc3NPYmplY3R9LT5TeXN0ZW1BZGRyZXN zSXNMb2NhbEFkZHJlc3MoCiMgICAgICAgICAgICAgICAgQWRkcmVzcyA9PiAkUmVjaXBpZW50LT57RW1 haWx9CiMgICAgICAgICAgICApCiMgICAgICAgICAgICApCiMgICAgICAgIHsKIyAgICAgICAgICAgIG5 leHQgUkVDSVBJRU5UOwojICAgICAgICB9CgogICAgICAgICMgZG8gbm90IHNlbmQgZW1haWwgdG8gc2V sZiBpZiBBZ2VudFNlbGZTbXMgaXMgc2V0IHRvIE5vCiAgICAgICAgIyBDT01QTEVNRU5UTyBAVE9ETzo gRG9uJ3Qgbm90aWZ5IHNlbGYgYWdlbnQgd2l0aCBzbXMKIyAgICAgICAgaWYgKAojICAgICAgICAgICA gISRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdBZ2VudFNlbGZOb3RpZnlPbkFjdGlvbicpCiMgICA gICAgICAgICAmJiAkUmVjaXBpZW50LT57RW1haWx9IGVxICRDdXJyZW50VXNlcntVc2VyRW1haWx9CiM gICAgICAgICAgICApCiMgICAgICAgIHsKIyAgICAgICAgICAgIG5leHQgUkVDSVBJRU5UCiMgICAgICA gIH0KCiAgICAgICAgJFNlbGYtPl9TZW5kU21zKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICA gICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgID0 +ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBTbXMgICAgICAgICAgICAgICAgICAgPT4gJFBhcmF te1Ntc30sCiAgICAgICAgICAgIEN1c3RvbWVyTWVzc2FnZVBhcmFtcyA9PiB7fSwKICAgICAgICAgICA gUmVjaXBpZW50ICAgICAgICAgICAgID0+ICRSZWNpcGllbnQsCiAgICAgICAgICAgIEV2ZW50ICAgICA

gICAgICAgICAgICA9PiAkUGFyYW17RXZlbnR9LAogICAgICAgICAgICBBdHRhY2htZW50cyAgICAgICA gICAgPT4gJFBhcmFte0F0dGFjaG1lbnRzfSwKICAgICAgICApOwogICAgfQogICAgcmV0dXJuIDE7Cn0 KCiMgc2VuZCBzbXMgdG8Kc3ViIF9TZW5kU21zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF8 7CgogICAgIyBnZXQgc21zIGRhdGEKICAgIG15ICVTbXMgPSAleyAkUGFyYW17U21zfSB9OwoKICAgICM gZ2V0IHJlY2lwaWVudCBkYXRhCiAgICBteSAlUmVjaXBpZW50ID0gJXsgJFBhcmFte1JlY2lwaWVudH0 gfTsKCiAgICAjIGdldCBvbGQgYXJ0aWNsZSBmb3IgcXVvdGluZwogICAgbXkgJUFydGljbGUgPSAkU2V sZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVMYXN0Q3VzdG9tZXJBcnRpY2xlKAogICAgICAgIFRpY2t ldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiA gICApOwoKICAgICMgZ2V0IHNtcyB0ZXh0cwogICAgZm9yIChxdyhCb2R5IFN1YmplY3QpKSB7CiAgICA gICAgbmV4dCBpZiAkU21zeyRffTsKICAgICAgICAkU21zeyRffSA9ICJObyBDdXN0b21lclNtcyAkXyB mb3IgJFBhcmFte1R5cGV9IGZvdW5kISI7CiAgICB9CgogICAgIyByZXBsYWNlIGNvbmZpZyBvcHRpb25 zCiAgICAkU21ze0JvZHl9ICAgID1+IHN7PE9UUlNfQ09ORklHXyguKz8pPn17JFNlbGYtPntDb25maWd PYmplY3R9LT5HZXQoJDEpfWVneDsKICAgICRTbXN7U3ViamVjdH0gPX4gc3s8T1RSU19DT05GSUdfKC4 rPyk+fXskU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgkMSl9ZWd4OwoKICAgICMgY2xlYW51cAogICA gJFNtc3tTdWJqZWN0fSA9fiBzLzxPVFJTX0NPTkZJR18uKz8+Ly0vZ2k7CiAgICAkU21ze0JvZHl9ICA gID1+IHMvPE9UUlNfQ09ORklHXy4rPz4vLS9naTsKCiAgICAjIENPTVBBVAogICAgJFNtc3tCb2R5fSA 9fiBzLzxPVFJTX1RJQ0tFVF9JRD4vJFBhcmFte1RpY2tldElEfS9naTsKICAgICRTbXN7Qm9keX0gPX4 gcy88T1RSU19USUNLRVRfTlVNQkVSPi8kQXJ0aWNsZXtUaWNrZXROdW1iZXJ9L2dpOwoKICAgICMgdGl ja2V0IGRhdGEKICAgIG15ICVUaWNrZXQgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldEdldCg KICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgRHluYW1pY0Z pZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIHByZXBhcmUgY3VzdG9tZXIgcmVhbG5hbWUKICAgIGlmICg gJFNtc3tCb2R5fSA9fiAvPE9UUlNfQ1VTVE9NRVJfUkVBTE5BTUU+LyApIHsKICAgICAgICBteSAkUmV hbE5hbWUgPSAkU2VsZi0+e0N1c3RvbWVyVXNlck9iamVjdH0tPkN1c3RvbWVyTmFtZSgKICAgICAgICA gICAgVXNlckxvZ2luID0+ICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9CiAgICAgICAgKSB8fCAkUmVjaXB pZW50e1JlYWxuYW1lfTsKICAgICAgICAkU21ze0JvZHl9ID1+IHMvPE9UUlNfQ1VTVE9NRVJfUkVBTE5 BTUU+LyRSZWFsTmFtZS9nOwogICAgfQoKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVUaWNrZXQ gKSB7CiAgICAgICAgbmV4dCBpZiAhZGVmaW5lZCAkVGlja2V0eyRLZXl9OwoKICAgICAgICBteSAkRGl zcGxheUtleVZhbHVlID0gJFRpY2tldHskS2V5fTsKICAgICAgICBteSAkRGlzcGxheVZhbHVlICAgID0 gJFRpY2tldHskS2V5fTsKICAgIAogICAgICAgICMgQ09NUExFTUVOVE86IFZlcmlmeSBzeXN0ZW0gdmV yc2lvbiBhbmQgdGhlIGNvcnJlY3QgY29kZSBmb3IgdGhhdAogICAgICAgIGlmICggJEtleSA9fiAvXkR 5bmFtaWNGaWVsZF8vaSAmJiAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPntWZXJzaW9ufSA9fiBtL14zXC4 yLykgewoKICAgICAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRLZXk7CiAgICAgICAgICAgICRGaWVsZE5 hbWUgPX4gcy9EeW5hbWljRmllbGRfLy9naTsKCiAgICAgICAgICAgICMgZ2V0IGR5bmFtaWMgZmllbGQ gY29uZmlnCiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0 tPntEeW5hbWljRmllbGRPYmplY3R9LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBOYW1 lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgZGlzcGx heSB2YWx1ZSBmb3IgZWFjaCBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgICREaXNwbGF5VmFsdWUgPSA kU2VsZi0+e0JhY2tlbmRPYmplY3R9LT5WYWx1ZUxvb2t1cCgKICAgICAgICAgICAgICAgIER5bmFtaWN GaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgS2V5ICAgICAgICAgICA gICAgID0+ICRUaWNrZXR7JEtleX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGU gcmVhZGFibGUgdmFsdWUgKHZhbHVlKSBmb3IgZWFjaCBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgIG1 5ICRWYWx1ZVN0cmcgPSAkU2VsZi0+e0JhY2tlbmRPYmplY3R9LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAo gICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICA gICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJERpc3BsYXlWYWx1ZSwKICAgICAgICAgICAgKTs KICAgICAgICAgICAgJERpc3BsYXlWYWx1ZSA9ICRWYWx1ZVN0cmctPntWYWx1ZX07CgogICAgICAgICA gICAjIGdldCBkaXNwbGF5IGtleSB2YWx1ZQogICAgICAgICAgICBteSAkS2V5VmFsdWVTdHJnCiAgICA gICAgICAgICAgICA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+e0R5bmFtaWNGaWVsZEJhY2tlbmRPYmp lY3R9LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZml nID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJER pc3BsYXlLZXlWYWx1ZSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICREaXNwbGF5S2V5VmF sdWUgPSAkS2V5VmFsdWVTdHJnLT57VmFsdWV9OwogICAgICAgIH0gZWxzaWYgKCAkS2V5ID1+IC9eRHl uYW1pY0ZpZWxkXy9pICYmICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+e1ZlcnNpb259ID1+IG0vXjNcLjE vKSB7CgogICAgICAgICAgICBteSAkRmllbGROYW1lID0gJEtleTsKICAgICAgICAgICAgJEZpZWxkTmF tZSA9fiBzL0R5bmFtaWNGaWVsZF8vL2dpOwoKICAgICAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCB jb25maWcKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0 +e0R5bmFtaWNGaWVsZE9iamVjdH0tPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWU gPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IGRpc3BsYXkgdmF sdWUKICAgICAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+e0R5bmF taWNGaWVsZEJhY2tlbmRPYmplY3R9LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgICAgICAgICA gRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICBWYWx1ZSA

gICAgICAgICAgICAgPT4gJERpc3BsYXlWYWx1ZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJER pc3BsYXlWYWx1ZSA9ICRWYWx1ZVN0cmctPntWYWx1ZX07CiAgICAgICAgfQoKCiAgICAgICAgJFNtc3t Cb2R5fSAgICA9fiBzLzxPVFJTX1RJQ0tFVF8kS2V5Pi8kRGlzcGxheUtleVZhbHVlL2dpOwogICAgICA gICRTbXN7U3ViamVjdH0gPX4gcy88T1RSU19USUNLRVRfJEtleT4vJERpc3BsYXlLZXlWYWx1ZS9naTs KCiAgICAgICAgbXkgJFRhZyA9ICc8T1RSU19USUNLRVRfJyAuICRLZXkgLiAnX1ZhbHVlPic7CiAgICA gICAgJFNtc3tCb2R5fSAgICA9fiBzLyRUYWcvJERpc3BsYXlWYWx1ZS9naTsKICAgICAgICAkU21ze1N 1YmplY3R9ID1+IHMvJFRhZy8kRGlzcGxheVZhbHVlL2dpOwoKICAgIH0KCgogICAgIyBjbGVhbnVwCiA gICAkU21ze1N1YmplY3R9ID1+IHMvPE9UUlNfVElDS0VUXy4rPz4vLS9naTsKICAgICRTbXN7Qm9keX0 gICAgPX4gcy88T1RSU19USUNLRVRfLis/Pi8tL2dpOwoKICAgICMgZ2V0IGN1cnJlbnQgdXNlciBkYXR hCiAgICBteSAlQ3VycmVudFByZWZlcmVuY2VzID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+R2V0VXNlckR hdGEoCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBOb091dE9 mT2ZmaWNlID0+IDEsCiAgICApOwogICAgZm9yICggc29ydCBrZXlzICVDdXJyZW50UHJlZmVyZW5jZXM gKSB7CiAgICAgICAgbmV4dCBpZiAhZGVmaW5lZCAkQ3VycmVudFByZWZlcmVuY2VzeyRffTsKICAgICA gICAkU21ze0JvZHl9ICAgID1+IHMvPE9UUlNfQ1VSUkVOVF8kXz4vJEN1cnJlbnRQcmVmZXJlbmNlc3s kX30vZ2k7CiAgICAgICAgJFNtc3tTdWJqZWN0fSA9fiBzLzxPVFJTX0NVUlJFTlRfJF8+LyRDdXJyZW5 0UHJlZmVyZW5jZXN7JF99L2dpOwogICAgfQoKICAgICMgY2xlYW51cAogICAgJFNtc3tTdWJqZWN0fSA 9fiBzLzxPVFJTX0NVUlJFTlRfLis/Pi8tL2dpOwogICAgJFNtc3tCb2R5fSAgICA9fiBzLzxPVFJTX0N VUlJFTlRfLis/Pi8tL2dpOwoKICAgICMgZ2V0IG93bmVyIGRhdGEKICAgIG15ICRPd25lcklEID0gJEF ydGljbGV7T3duZXJJRH07CgogICAgIyBnZXQgb3duZXIgZnJvbSB0aWNrZXQgaWYgdGhlcmUgYXJlIG5 vIGFydGljbGVzCiAgICBpZiAoICEkT3duZXJJRCApIHsKICAgICAgICAkT3duZXJJRCA9ICRUaWNrZXR 7T3duZXJJRH07CiAgICB9CiAgICBteSAlT3duZXJQcmVmZXJlbmNlcyA9ICRTZWxmLT57VXNlck9iamV jdH0tPkdldFVzZXJEYXRhKAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gJE93bmVySUQsCiAgICAgICA gTm9PdXRPZk9mZmljZSA9PiAxLAogICAgKTsKICAgIGZvciAoIHNvcnQga2V5cyAlT3duZXJQcmVmZXJ lbmNlcyApIHsKICAgICAgICBuZXh0IGlmICEkT3duZXJQcmVmZXJlbmNlc3skX307CiAgICAgICAgJFN tc3tCb2R5fSAgICA9fiBzLzxPVFJTX09XTkVSXyRfPi8kT3duZXJQcmVmZXJlbmNlc3skX30vZ2k7CiA gICAgICAgJFNtc3tTdWJqZWN0fSA9fiBzLzxPVFJTX09XTkVSXyRfPi8kT3duZXJQcmVmZXJlbmNlc3s kX30vZ2k7CiAgICB9CgogICAgIyBjbGVhbnVwCiAgICAkU21ze1N1YmplY3R9ID1+IHMvPE9UUlNfT1d ORVJfLis/Pi8tL2dpOwogICAgJFNtc3tCb2R5fSAgICA9fiBzLzxPVFJTX09XTkVSXy4rPz4vLS9naTs KCiAgICAjIGdldCByZXNwb25zaWJsZSBkYXRhCiAgICBteSAkUmVzcG9uc2libGVJRCA9ICRBcnRpY2x le1Jlc3BvbnNpYmxlSUR9OwoKICAgICMgZ2V0IHJlc3BvbnNpYmxlIGZyb20gdGlja2V0IGlmIHRoZXJ lIGFyZSBubyBhcnRpY2xlcwogICAgaWYgKCAhJFJlc3BvbnNpYmxlSUQgKSB7CiAgICAgICAgJFJlc3B vbnNpYmxlSUQgPSAkVGlja2V0e1Jlc3BvbnNpYmxlSUR9OwogICAgfQoKICAgIG15ICVSZXNwb25zaWJ sZVByZWZlcmVuY2VzID0gJFNlbGYtPntVc2VyT2JqZWN0fS0+R2V0VXNlckRhdGEoCiAgICAgICAgVXN lcklEICAgICAgICA9PiAkUmVzcG9uc2libGVJRCwKICAgICAgICBOb091dE9mT2ZmaWNlID0+IDEsCiA gICApOwogICAgZm9yICggc29ydCBrZXlzICVSZXNwb25zaWJsZVByZWZlcmVuY2VzICkgewogICAgICA gIG5leHQgaWYgISRSZXNwb25zaWJsZVByZWZlcmVuY2VzeyRffTsKICAgICAgICAkU21ze0JvZHl9ICA gID1+IHMvPE9UUlNfUkVTUE9OU0lCTEVfJF8+LyRSZXNwb25zaWJsZVByZWZlcmVuY2VzeyRffS9naTs KICAgICAgICAkU21ze1N1YmplY3R9ID1+IHMvPE9UUlNfUkVTUE9OU0lCTEVfJF8+LyRSZXNwb25zaWJ sZVByZWZlcmVuY2VzeyRffS9naTsKICAgIH0KCiAgICAjIGNsZWFudXAKICAgICRTbXN7U3ViamVjdH0 gPX4gcy88T1RSU19SRVNQT05TSUJMRV8uKz8+Ly0vZ2k7CiAgICAkU21ze0JvZHl9ICAgID1+IHMvPE9 UUlNfUkVTUE9OU0lCTEVfLis/Pi8tL2dpOwoKICAgICMgZ2V0IHJlZiBvZiBlbWFpbCBwYXJhbXMKICA gIG15ICVHZXRQYXJhbSA9ICV7ICRQYXJhbXtDdXN0b21lck1lc3NhZ2VQYXJhbXN9IH07CiAgICBmb3I gKCBzb3J0IGtleXMgJUdldFBhcmFtICkgewogICAgICAgIG5leHQgaWYgISRHZXRQYXJhbXskX307CiA gICAgICAgJFNtc3tCb2R5fSAgICA9fiBzLzxPVFJTX0NVU1RPTUVSX0RBVEFfJF8+LyRHZXRQYXJhbXs kX30vZ2k7CiAgICAgICAgJFNtc3tTdWJqZWN0fSA9fiBzLzxPVFJTX0NVU1RPTUVSX0RBVEFfJF8+LyR HZXRQYXJhbXskX30vZ2k7CiAgICB9CgogICAgIyBnZXQgY3VzdG9tZXIgZGF0YSBhbmQgcmVwbGFjZSB pdCB3aXRoIDxPVFJTX0NVU1RPTUVSX0RBVEFfLi4uCiAgICBpZiAoICRBcnRpY2xle0N1c3RvbWVyVXN lcklEfSApIHsKICAgICAgICBteSAlQ3VzdG9tZXJVc2VyID0gJFNlbGYtPntDdXN0b21lclVzZXJPYmp lY3R9LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAgICBVc2VyID0+ICRBcnRpY2xle0N1c3R vbWVyVXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHJlcGxhY2UgY3VzdG9tZXIgc3R1ZmYgd2l 0aCB0YWdzCiAgICAgICAgZm9yICggc29ydCBrZXlzICVDdXN0b21lclVzZXIgKSB7CiAgICAgICAgICA gIG5leHQgaWYgISRDdXN0b21lclVzZXJ7JF99OwogICAgICAgICAgICAkU21ze0JvZHl9ICAgID1+IHM vPE9UUlNfQ1VTVE9NRVJfREFUQV8kXz4vJEN1c3RvbWVyVXNlcnskX30vZ2k7CiAgICAgICAgICAgICR TbXN7U3ViamVjdH0gPX4gcy88T1RSU19DVVNUT01FUl9EQVRBXyRfPi8kQ3VzdG9tZXJVc2VyeyRffS9 naTsKICAgICAgICB9CiAgICB9CgogICAgIyBjbGVhbnVwIGFsbCBub3QgbmVlZGVkIDxPVFJTX0NVU1R PTUVSX0RBVEFfIHRhZ3MKICAgICRTbXN7Qm9keX0gICAgPX4gcy88T1RSU19DVVNUT01FUl9EQVRBXy4 rPz4vLS9naTsKICAgICRTbXN7U3ViamVjdH0gPX4gcy88T1RSU19DVVNUT01FUl9EQVRBXy4rPz4vLS9 naTsKCiAgICAjIGxhdGVzdCBjdXN0b21lciBhbmQgYWdlbnQgYXJ0aWNsZQogICAgbXkgQEFydGljbGV Cb3hBZ2VudCA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUdldCgKICAgICAgICBUaWNrZXR JRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW1

7VXNlcklEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwogICAgbXkgJUFydGljbGV BZ2VudDsKICAgIGZvciBteSAkQXJ0aWNsZSAoIHJldmVyc2UgQEFydGljbGVCb3hBZ2VudCApIHsKICA gICAgICBuZXh0IGlmICRBcnRpY2xlLT57U2VuZGVyVHlwZX0gbmUgJ2FnZW50JzsKICAgICAgICAlQXJ 0aWNsZUFnZW50ID0gJXskQXJ0aWNsZX07CiAgICAgICAgbGFzdDsKICAgIH0KCiAgICBteSAlQXJ0aWN sZUNvbnRlbnQgPSAoCiAgICAgICAgJ09UUlNfQ1VTVE9NRVJfJyA9PiBcJUFydGljbGUsCiAgICAgICA gJ09UUlNfQUdFTlRfJyAgICA9PiBcJUFydGljbGVBZ2VudCwKICAgICk7CgogICAgZm9yIG15ICRBcnR pY2xlSXRlbSAoIHNvcnQga2V5cyAlQXJ0aWNsZUNvbnRlbnQgKSB7CiAgICAgICAgbXkgJUFydGljbGU gPSAleyAkQXJ0aWNsZUNvbnRlbnR7JEFydGljbGVJdGVtfSB9OwoKICAgICAgICBpZiAoJUFydGljbGU pIHsKCiAgICAgICAgICAgIGlmICggJEFydGljbGV7Qm9keX0gKSB7CgogICAgICAgICAgICAgICAgIyB Vc2UgdGhlIHNhbWUgbGluZSBsZW5ndGggYXMgSFRNTFV0aWxzOjp0b0FzY2lpIHRvIGF2b2lkCiAgICA gICAgICAgICAgICAjICAgbGluZSBsZW5ndGggcHJvYmxlbXMuCiAgICAgICAgICAgICAgICAkQXJ0aWN sZXtCb2R5fSA9fiBzLyhePi4rfC57NCw3OH0pKD86XHN8XHopLyQxXG4vZ207CiAgICAgICAgICAgIH0 KCiAgICAgICAgICAgIGZvciAoIHNvcnQga2V5cyAlQXJ0aWNsZSApIHsKCiAgICAgICAgICAgICAgICB uZXh0IGlmICEkQXJ0aWNsZXskX307CgogICAgICAgICAgICAgICAgJFNtc3tCb2R5fSAgICA9fiBzLzw kQXJ0aWNsZUl0ZW0kXz4vJEFydGljbGV7JF99L2dpOwogICAgICAgICAgICAgICAgJFNtc3tTdWJqZWN 0fSA9fiBzLzwkQXJ0aWNsZUl0ZW0kXz4vJEFydGljbGV7JF99L2dpOwogICAgICAgICAgICB9CgogICA gICAgICAgICAjIGdldCBhY2NvdW50ZWQgdGltZQogICAgICAgICAgICBteSAkQWNjb3VudGVkVGltZSA 9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUFjY291bnRlZFRpbWVHZXQoCiAgICAgICAgICA gICAgICBBcnRpY2xlSUQgPT4gJEFydGljbGV7QXJ0aWNsZUlEfSwKICAgICAgICAgICAgKTsKCiAgICA gICAgICAgIG15ICRNYXRjaFN0cmluZyA9ICRBcnRpY2xlSXRlbSAuICdUaW1lVW5pdCc7CiAgICAgICA gICAgICRTbXN7Qm9keX0gICAgPX4gcy88JE1hdGNoU3RyaW5nPi8kQWNjb3VudGVkVGltZS9naTsKICA gICAgICAgICAgJFNtc3tTdWJqZWN0fSA9fiBzLzwkTWF0Y2hTdHJpbmc+LyRBY2NvdW50ZWRUaW1lL2d pOwoKICAgICAgICAgICAgIyBwcmVwYXJlIHN1YmplY3QgKGluc2VydCBvbGQgc3ViamVjdCkKICAgICA gICAgICAgJEFydGljbGV7U3ViamVjdH0gPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPlRpY2tldFN1Ymp lY3RDbGVhbigKICAgICAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAkQXJ0aWNsZXtUaWNrZXROdW1 iZXJ9LAogICAgICAgICAgICAgICAgU3ViamVjdCA9PiAkQXJ0aWNsZXtTdWJqZWN0fSB8fCAnJywKICA gICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkVHlwZSAocXcoU3ViamVjdCBCb2R5KSkgewo gICAgICAgICAgICAgICAgaWYgKCAkU21zeyRUeXBlfSA9fiAvPCRBcnRpY2xlSXRlbShTVUJKRUNUKVx bKC4rPylcXT4vICkgewogICAgICAgICAgICAgICAgICAgIG15ICRTdWJqZWN0Q2hhciA9ICQyOwogICA gICAgICAgICAgICAgICAgIG15ICRTdWJqZWN0ICAgICA9ICRBcnRpY2xle1N1YmplY3R9OwogICAgICA gICAgICAgICAgICAgICRTdWJqZWN0ID1+IHMvXigueyRTdWJqZWN0Q2hhcn0pLiokLyQxIFsuLi5dLzs KICAgICAgICAgICAgICAgICAgICAkU21zeyRUeXBlfSA9fiBzLzwkQXJ0aWNsZUl0ZW0oU1VCSkVDVCl cWy4rP1xdPi8kU3ViamVjdC9nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICA gICAgICAkU21ze1N1YmplY3R9ID0gJFNlbGYtPntUaWNrZXRPYmplY3R9LT5UaWNrZXRTdWJqZWN0QnV pbGQoCiAgICAgICAgICAgICAgICBUaWNrZXROdW1iZXIgPT4gJEFydGljbGV7VGlja2V0TnVtYmVyfSw KICAgICAgICAgICAgICAgIFN1YmplY3QgICAgICA9PiAkU21ze1N1YmplY3R9IHx8ICcnLAogICAgICA gICAgICAgICAgVHlwZSAgICAgICAgID0+ICdOZXcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICA gIyBwcmVwYXJlIGJvZHkgKGluc2VydCBvbGQgZW1haWwpCiAgICAgICAgICAgIGlmICggJFNtc3tCb2R 5fSA9fiAvPCRBcnRpY2xlSXRlbShFTUFJTHxOT1RFfEJPRFkpXFsoLis/KVxdPi9nICkgewogICAgICA gICAgICAgICAgbXkgJExpbmUgICAgICAgPSAkMjsKICAgICAgICAgICAgICAgIG15IEBCb2R5ICAgICA gID0gc3BsaXQoIC9cbi8sICRBcnRpY2xle0JvZHl9ICk7CiAgICAgICAgICAgICAgICBteSAkTmV3T2x kQm9keSA9ICcnOwogICAgICAgICAgICAgICAgZm9yICggbXkgJGkgPSAwOyAkaSA8ICRMaW5lOyAkaSs rICkgewoKICAgICAgICAgICAgICAgICAgICAjIDIwMDItMDYtMTQgcGF0Y2ggb2YgUGFibG8gUnVpeiB HYXJjaWEKICAgICAgICAgICAgICAgICAgICAjIGh0dHA6Ly9saXN0cy5vdHJzLm9yZy9waXBlcm1haWw vZGV2LzIwMDItSnVuZS8wMDAwMTIuaHRtbAogICAgICAgICAgICAgICAgICAgIGlmICggJCNCb2R5ID4 9ICRpICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTmV3T2xkQm9keSAuPSAiPiAkQm9keVskaV1 cbiI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICA gY2hvbXAgJE5ld09sZEJvZHk7CiAgICAgICAgICAgICAgICAkU21ze0JvZHl9ID1+IHMvPCRBcnRpY2x lSXRlbShFTUFJTHxOT1RFfEJPRFkpXFsuKz9cXT4vJE5ld09sZEJvZHkvZzsKICAgICAgICAgICAgfQo gICAgICAgIH0KCiAgICAgICAgIyBjbGVhbnVwIGFsbCBub3QgbmVlZGVkIDxPVFJTX0NVU1RPTUVSXyB hbmQgPE9UUlNfQUdFTlRfIHRhZ3MKICAgICAgICAkU21ze0JvZHl9ICAgID1+IHMvPCRBcnRpY2xlSXR lbS4rPz4vLS9naTsKICAgICAgICAkU21ze1N1YmplY3R9ID1+IHMvPCRBcnRpY2xlSXRlbS4rPz4vLS9 naTsKICAgIH0KCiAgICAjIHNlbmQgc21zCiAgICBpZiAoICRSZWNpcGllbnR7VHlwZX0gZXEgJ0FnZW5 0JyApIHsKICAgICAgICBteSAlQWRkcmVzczsKCiAgICAgICAgIyBzZW5kIHNtcwojICAgICAgICBteSA kRnJvbSA9ICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdTbXNTZW5kZXJOYW1lJykgLiAnIDwnCiM gICAgICAgICAgICAuICRTZWxmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdTbXNTZW5kZXJFbWFpbCcpIC4 gJz4nOwogICAgICAgICMgc2V0ICJGcm9tIiBhZGRyZXNzIGZyb20gQXJ0aWNsZSBpZiBleGlzdCwgb3R oZXJ3aXNlIHVzZSB0aWNrZXQgaW5mb3JtYXRpb24sIHNlZSBidWcjIDkwMzUKICAgICAgICBpZiAoIEl zSGFzaFJlZldpdGhEYXRhKCBcJUFydGljbGUgKSApIHsKICAgICAgICAgICAgJUFkZHJlc3MgPSAkU2V sZi0+e1F1ZXVlT2JqZWN0fS0+R2V0U3lzdGVtQWRkcmVzcyggUXVldWVJRCA9PiAkQXJ0aWNsZXtRdWV

1ZUlEfSApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJUFkZHJlc3MgPSAkU2V sZi0+e1F1ZXVlT2JqZWN0fS0+R2V0U3lzdGVtQWRkcmVzcyggUXVldWVJRCA9PiAkVGlja2V0e1F1ZXV lSUR9ICk7CiAgICAgICAgfQoKICAgICAgICBteSAkQXJ0aWNsZVR5cGUgPSAkUmVjaXBpZW50e1Ntc0F ydGljbGVUeXBlfSB8fCAnc21zJzsKCiAgICAgICAgIyBTZW5kIHRoZSBTTVMgIyMjIyMjIyMjIyMjIyM jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICAgICAjIEN PTVBMRU1FTlRPIC0gTG9hZCBsaXN0IG9mIEdhdGV3YXkgTW9kdWxlcwogICAgICAgIG15ICVHd3M7CiA gICAgICAgaWYgKCByZWYgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Ntc0V2ZW50OjpHYXRld2F 5JykgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAlR3dzID0gJXsgJFNlbGYtPntDb25maWdPYmplY3R 9LT5HZXQoJ1Ntc0V2ZW50OjpHYXRld2F5JykgfTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICA kU2VsZi0+e0xvZ09iamVjdH0tPkxvZygKICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWN lJywKICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgZ2V0IFNNUyBHYXRld2F5cyBpbmZ vcm1hdGlvbiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICRTZWxmLT5 7TWFpbk9iamVjdH0tPlJlcXVpcmUoJEd3c3skU21ze0RhdGF9LT57R2F0ZXdheX0tPlswXX0tPntNb2R 1bGV9KTsKICAgICAgICAKICAgICAgICBteSAkU21zRXZlbnRPYmplY3QgPSBLZXJuZWw6OlN5c3RlbTo 6U21zRXZlbnQtPm5ldyggJXskU2VsZn0gKTsKICAgICAgICAKICAgICAgICByZXR1cm4gaWYgISRTbXN FdmVudE9iamVjdC0+U2VuZFNtcygKICAgICAgICAgICAgR2F0ZXdheSAgID0+ICRHd3N7JFNtc3tEYXR hfS0+e0dhdGV3YXl9LT5bMF19LAogICAgICAgICAgICBTbXMgICAgICAgPT4gXCVTbXMsCiAgICAgICA gICAgIFJlY2lwaWVudCA9PiBcJVJlY2lwaWVudCwKICAgICAgICApOwogICAgICAgICMjIyMjIyMjIyM jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM jIyMjIyMjCgogICAgICAgICMgTE9HIGFuZCBjcmVhdGUgYXJ0aWNsZSBpZiBzZW50IHN1Y2Nlc3NmdWx 5CiAgICAgICAgbXkgJEFydGljbGVJRCA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUNyZWF 0ZSgKICAgICAgICAgICAgQXJ0aWNsZVR5cGUgICAgPT4gJEFydGljbGVUeXBlLAogICAgICAgICAgICB TZW5kZXJUeXBlICAgICA9PiAnc3lzdGVtJywKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgPT4gJFB hcmFte1RpY2tldElEfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ1NlbmRDdXN0b21lclN tcycsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+ICJcJVwlJFJlY2lwaWVudHtFbWFpbH0iLAo gICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAiJEFkZHJlc3N7UmVhbE5hbWV9IDwkQWRkcmVzc3t FbWFpbH0+IiwKICAgICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJFJlY2lwaWVudHtFbWFpbH0sCiA gICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICRTbXN7U3ViamVjdH0sCiAgICAgICAgICAgIEJvZHk gICAgICAgICAgID0+ICRTbXN7Qm9keX0sCiAgICAgICAgICAgIE1pbWVUeXBlICAgICAgID0+ICd0ZXh 0L3BsYWluJywKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ3RleHQvcGxhaW4nLAogICAgICA gICAgICBDaGFyc2V0ICAgICAgICA9PiAkU21ze0NoYXJzZXR9LAogICAgICAgICAgICBVc2VySUQgICA gICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgTG9vcCAgICAgICAgICAgPT4gMSwKICA gICAgICAgICAgQXR0YWNobWVudCAgICAgPT4gJFBhcmFte0F0dGFjaG1lbnRzfSwKICAgICAgICApOwo KCiAgICAgICAgIyB3cml0ZSBoaXN0b3J5CiAgICAgICAgJFNlbGYtPntUaWNrZXRPYmplY3R9LT5IaXN 0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICA gICAgICAgSGlzdG9yeVR5cGUgID0+ICdTZW5kQWdlbnRTbXMnLAogICAgICAgICAgICBOYW1lICAgICA gICAgPT4gIlwlXCUkU21ze05hbWV9XCVcJSRSZWNpcGllbnR7RW1haWx9IiwKICAgICAgICAgICAgQ3J lYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgbG9nIGV2ZW5 0CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICd ub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiU2VudCBhZ2VudCAnJFNtc3tOYW1lfScgc21 zIHRvICckUmVjaXBpZW50e0VtYWlsfScuIiwKICAgICAgICApOwoKICAgICAgICAjIHRpY2tldCBldmV udAogICAgICAgICRTZWxmLT57VGlja2V0T2JqZWN0fS0+RXZlbnRIYW5kbGVyKAogICAgICAgICAgICB FdmVudCA9PiAnQXJ0aWNsZUFnZW50Tm90aWZpY2F0aW9uJywKICAgICAgICAgICAgRGF0YSAgPT4gewo gICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgfSw KICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICB lbHNlIHsKICAgICAgICBteSAlQWRkcmVzczsKCiAgICAgICAgIyBzZXQgIkZyb20iIGFkZHJlc3MgZnJ vbSBBcnRpY2xlIGlmIGV4aXN0LCBvdGhlcndpc2UgdXNlIHRpY2tldCBpbmZvcm1hdGlvbiwgc2VlIGJ 1ZyMgOTAzNQogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoIFwlQXJ0aWNsZSApICkgewogICA gICAgICAgICAlQWRkcmVzcyA9ICRTZWxmLT57UXVldWVPYmplY3R9LT5HZXRTeXN0ZW1BZGRyZXNzKCB RdWV1ZUlEID0+ICRBcnRpY2xle1F1ZXVlSUR9ICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICA gICAgICAgICAlQWRkcmVzcyA9ICRTZWxmLT57UXVldWVPYmplY3R9LT5HZXRTeXN0ZW1BZGRyZXNzKCB RdWV1ZUlEID0+ICRUaWNrZXR7UXVldWVJRH0gKTsKICAgICAgICB9CgoKICAgICAgICBteSAkQXJ0aWN sZVR5cGUgPSAkUmVjaXBpZW50e1Ntc0FydGljbGVUeXBlfSB8fCAnc21zJzsKICAgICAgICAKICAgICA gICAjIFNlbmQgdGhlIFNNUyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM jIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICAgICMgQ09NUExFTUVOVE8gLSBMb2FkIGxpc3Qgb2YgR2F 0ZXdheSBNb2R1bGVzCiAgICAgICAgbXkgJUd3czsKICAgICAgICBpZiAoIHJlZiAkU2VsZi0+e0NvbmZ pZ09iamVjdH0tPkdldCgnU21zRXZlbnQ6OkdhdGV3YXknKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICA gICVHd3MgPSAleyAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPkdldCgnU21zRXZlbnQ6OkdhdGV3YXknKSB 9OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICA gICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgIE1lc3NhZ2U

gID0+ICJDYW4ndCBnZXQgU01TIEdhdGV3YXlzIGluZm9ybWF0aW9uIiwKICAgICAgICAgICAgKTsKICA gICAgICB9CiAgICAgICAgCiAgICAgICAgJFNlbGYtPntNYWluT2JqZWN0fS0+UmVxdWlyZSgkR3dzeyR TbXN7RGF0YX0tPntHYXRld2F5fS0+WzBdfS0+e01vZHVsZX0pOwogICAgICAgIAogICAgICAgIG15ICR TbXNFdmVudE9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpTbXNFdmVudC0+bmV3KCAleyRTZWxmfSApOwo gICAgICAgIAogICAgICAgIHJldHVybiBpZiAhJFNtc0V2ZW50T2JqZWN0LT5TZW5kU21zKAogICAgICA gICAgICBHYXRld2F5ICAgPT4gJEd3c3skU21ze0RhdGF9LT57R2F0ZXdheX0tPlswXX0sCiAgICAgICA gICAgIFNtcyAgICAgICA9PiBcJVNtcywKICAgICAgICAgICAgUmVjaXBpZW50ID0+IFwlUmVjaXBpZW5 0LAogICAgICAgICk7CiAgICAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCiAgICAgICAgCiAgICAgICAgbXk gJEFydGljbGVJRCA9ICRTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICA gICAgQXJ0aWNsZVR5cGUgICAgPT4gJEFydGljbGVUeXBlLAogICAgICAgICAgICBTZW5kZXJUeXBlICA gICA9PiAnc3lzdGVtJywKICAgICAgICAgICAgVGlja2V0SUQgICAgICAgPT4gJFBhcmFte1RpY2tldEl EfSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ1NlbmRDdXN0b21lclNtcycsCiAgICAgICA gICAgIEhpc3RvcnlDb21tZW50ID0+ICJcJVwlJFJlY2lwaWVudHtFbWFpbH0iLAogICAgICAgICAgICB Gcm9tICAgICAgICAgICA9PiAiJEFkZHJlc3N7UmVhbE5hbWV9IDwkQWRkcmVzc3tFbWFpbH0+IiwKICA gICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJFJlY2lwaWVudHtFbWFpbH0sCiAgICAgICAgICAgIFN 1YmplY3QgICAgICAgID0+ICRTbXN7U3ViamVjdH0sCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgID0 +ICRTbXN7Qm9keX0sCiAgICAgICAgICAgIE1pbWVUeXBlICAgICAgID0+ICd0ZXh0L3BsYWluJywKICA gICAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICBDaGFyc2V 0ICAgICAgICA9PiAkU21ze0NoYXJzZXR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkUGF yYW17VXNlcklEfSwKICAgICAgICAgICAgTG9vcCAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgQXR 0YWNobWVudCAgICAgPT4gJFBhcmFte0F0dGFjaG1lbnRzfSwKICAgICAgICApOwoKICAgICAgICAjIGx vZyBldmVudAogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlvcml 0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlNlbnQgY3VzdG9tZXIgJyRTbXN 7TmFtZX0nIHNtcyB0byAnJFJlY2lwaWVudHtFbWFpbH0nLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyB 0aWNrZXQgZXZlbnQKICAgICAgICAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkV2ZW50SGFuZGxlcigKICA gICAgICAgICAgRXZlbnQgPT4gJ0FydGljbGVDdXN0b21lck5vdGlmaWNhdGlvbicsCiAgICAgICAgICA gIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIFRpY2tldElEICA9PiAkUGFyYW17VGlja2V0SUR9LAo gICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRQYXJhbXtBcnRpY2xlSUR9LAogICAgICAgICAgICB 9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiA gICByZXR1cm4gMTsKfQoKMTsK</File> <File Location="Kernel/System/SmsEvent.pm" Permission="644" Encode="Base 64">IyAtLQojIEtlcm5lbC9TeXN0ZW0vU21zRXZlbnQucG0gLSBzbXMgc3lzdGVtIG1vZHVsZQojIENv cHlyaWdodCAoQykgMjAwMS0yMDEyIE9UUlMgQUcsIGh0dHA6Ly9vdHJzLm9yZy8KIyAtLQojICRJZDog U21zRXZlbnQucG0sdiAxLjE0IDIwMTIvMTEvMjAgMTU6MzY6MjcgbWggRXhwICQKIyAtLQojIFRoaXMg c29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2Vl CiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCku IElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlNtc0V2ZW50OwoK dXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYWxpZDsKCnVzZSB2 YXJzIHF3KCRWRVJTSU9OKTsKJFZFUlNJT04gPSBxdygkUmV2aXNpb246IDEuMTQgJCkgWzFdOwoKPWhl YWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpTbXNFdmVudCAtIHRvIG1hbmFnZSB0aGUgc21zcwoKPWhl YWQxIFNZTk9QU0lTCgpBbGwgZnVuY3Rpb25zIHRvIG1hbmFnZSB0aGUgc21zIGFuZCB0aGUgc21zIGpv YnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCmNy ZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpDb25maWc7CiAgICB1c2UgS2VybmVsOjpTeXN0 ZW06OkVuY29kZTsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6TG9nOwogICAgdXNlIEtlcm5lbDo6U3lz dGVtOjpNYWluOwogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpEQjsKICAgIHVzZSBLZXJuZWw6OlN5c3Rl bTo6VGltZTsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6UXVldWU7CiAgICB1c2UgS2VybmVsOjpTeXN0 ZW06OlRpY2tldDsKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6U21zRXZlbnQ7CgogICAgbXkgJENvbmZp Z09iamVjdCA9IEtlcm5lbDo6Q29uZmlnLT5uZXcoKTsKICAgIG15ICRFbmNvZGVPYmplY3QgPSBLZXJu ZWw6OlN5c3RlbTo6RW5jb2RlLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmpl Y3QsCiAgICApOwogICAgbXkgJExvZ09iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpMb2ctPm5ldygKICAg ICAgICBDb25maWdPYmplY3QgPT4gJENvbmZpZ09iamVjdCwKICAgICAgICBFbmNvZGVPYmplY3QgPT4g JEVuY29kZU9iamVjdCwKICAgICk7CiAgICBteSAkVGltZU9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpU aW1lLT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9n T2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICApOwogICAgbXkgJE1haW5PYmplY3QgPSBLZXJuZWw6 OlN5c3RlbTo6TWFpbi0+bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAog ICAgICAgIEVuY29kZU9iamVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9 PiAkTG9nT2JqZWN0LAogICAgKTsKICAgIG15ICREQk9iamVjdCA9IEtlcm5lbDo6U3lzdGVtOjpEQi0+ bmV3KAogICAgICAgIENvbmZpZ09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIEVuY29kZU9i

amVjdCA9PiAkRW5jb2RlT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0LAog ICAgICAgIE1haW5PYmplY3QgICA9PiAkTWFpbk9iamVjdCwKICAgICk7CiAgICBteSAkUXVldWVPYmpl Y3QgPSBLZXJuZWw6OlN5c3RlbTo6UXVldWUtPm5ldygKICAgICAgICBDb25maWdPYmplY3QgPT4gJENv bmZpZ09iamVjdCwKICAgICAgICBMb2dPYmplY3QgICAgPT4gJExvZ09iamVjdCwKICAgICk7CiAgICBt eSAkVGlja2V0T2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlRpY2tldC0+bmV3KAogICAgICAgIENvbmZp Z09iamVjdCA9PiAkQ29uZmlnT2JqZWN0LAogICAgICAgIExvZ09iamVjdCAgICA9PiAkTG9nT2JqZWN0 LAogICAgICAgIERCT2JqZWN0ICAgICA9PiAkREJPYmplY3QsCiAgICApOwogICAgbXkgJFNtc0V2ZW50 T2JqZWN0ID0gS2VybmVsOjpTeXN0ZW06OlNtc0V2ZW50LT5uZXcoCiAgICAgICAgQ29uZmlnT2JqZWN0 ID0+ICRDb25maWdPYmplY3QsCiAgICAgICAgTG9nT2JqZWN0ICAgID0+ICRMb2dPYmplY3QsCiAgICAg ICAgVGltZU9iamVjdCAgID0+ICRUaW1lT2JqZWN0LAogICAgICAgIFRpY2tldE9iamVjdCA9PiAkVGlj a2V0T2JqZWN0LAogICAgICAgIFF1ZXVlT2JqZWN0ICA9PiAkUXVldWVPYmplY3QsCiAgICAgICAgREJP YmplY3QgICAgID0+ICREQk9iamVjdCwKICAgICAgICBNYWluT2JqZWN0ICAgPT4gJE1haW5PYmplY3Qs CiAgICAgICAgRW5jb2RlT2JqZWN0ID0+ICRFbmNvZGVPYmplY3QsCiAgICApOwoKPWN1dAoKc3ViIG5l dyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2gg Zm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAg ICAjIGNoZWNrIG5lZWRlZCBvYmplY3RzCiAgICBmb3IgKAogICAgICAgIHF3KERCT2JqZWN0IENvbmZp Z09iamVjdCBMb2dPYmplY3QgVGltZU9iamVjdCBUaWNrZXRPYmplY3QgUXVldWVPYmplY3QgTWFpbk9i amVjdCBFbmNvZGVPYmplY3QpCiAgICAgICAgKQogICAgewogICAgICAgICRTZWxmLT57JF99ID0gJFBh cmFteyRffSB8fCBkaWUgIkdvdCBubyAkXyEiOwogICAgfQoKICAgICRTZWxmLT57VmFsaWRPYmplY3R9 ID0gS2VybmVsOjpTeXN0ZW06OlZhbGlkLT5uZXcoJVBhcmFtKTsKCiAgICAjIGRlYnVnCiAgICAkU2Vs Zi0+e0RlYnVnfSA9ICRQYXJhbXtEZWJ1Z30gfHwgMDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1pdGVt IFNtc0xpc3QoKQoKcmV0dXJucyBhIGhhc2ggb2YgYWxsIHNtc3MKCiAgICBteSAlTGlzdCA9ICRTbXNF dmVudE9iamVjdC0+U21zTGlzdCgpOwoKPWN1dAoKc3ViIFNtc0xpc3QgewogICAgbXkgKCAkU2VsZiwg JVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIChxdygpKSB7CiAg ICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5M b2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgJF8hIiApOwogICAgICAgICAg ICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoIFNR TCA9PiAnU0VMRUNUIGlkLCBuYW1lIEZST00gc21zX2V2ZW50JyApOwogICAgbXkgJURhdGE7CiAgICB3 aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAg ICAgICREYXRheyAkUm93WzBdIH0gPSAkUm93WzFdOwogICAgfQogICAgcmV0dXJuICVEYXRhOwp9Cgo9 aXRlbSBTbXNHZXQoKQoKcmV0dXJucyBhIGhhc2ggb2YgdGhlIHNtcyBkYXRhCgogICAgbXkgJVNtcyA9 ICRTbXNFdmVudE9iamVjdC0+U21zR2V0KCBOYW1lID0+ICdTbXNOYW1lJyApOwoKICAgIG15ICVTbXMg PSAkU21zRXZlbnRPYmplY3QtPlNtc0dldCggSUQgPT4gMTIzICk7Cgo9Y3V0CgpzdWIgU21zR2V0IHsK ICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAg IGlmICggISRQYXJhbXtOYW1lfSAmJiAhJFBhcmFte0lEfSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09i amVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAnTmVlZCBOYW1lIG9yIElE IScgKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoICRQYXJhbXtOYW1lfSApIHsKICAgICAg ICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQs IG5hbWUsIHN1YmplY3QsIHRleHQsIGNvbnRlbnRfdHlwZSwgY2hhcnNldCwgdmFsaWRfaWQsICcKICAg ICAgICAgICAgICAgIC4gJ2NvbW1lbnRzLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGlt ZSwgY2hhbmdlX2J5ICcKICAgICAgICAgICAgICAgIC4gJ0ZST00gc21zX2V2ZW50IFdIRVJFIG5hbWUg PSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICAgICApOwogICAg fQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntEQk9iamVjdH0tPlByZXBhcmUoCiAgICAgICAgICAg IFNRTCA9PiAnU0VMRUNUIGlkLCBuYW1lLCBzdWJqZWN0LCB0ZXh0LCBjb250ZW50X3R5cGUsIGNoYXJz ZXQsIHZhbGlkX2lkLCAnCiAgICAgICAgICAgICAgICAuICdjb21tZW50cywgY3JlYXRlX3RpbWUsIGNy ZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIHNt c19ldmVudCBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJRH0gXSwK ICAgICAgICApOwogICAgfQogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+ e0RCT2JqZWN0fS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICREYXRhe0lEfSAgICAgICAgID0g JFJvd1swXTsKICAgICAgICAkRGF0YXtOYW1lfSAgICAgICA9ICRSb3dbMV07CiAgICAgICAgJERhdGF7 U3ViamVjdH0gICAgPSAkUm93WzJdOwogICAgICAgICREYXRhe0JvZHl9ICAgICAgID0gJFJvd1szXTsK ICAgICAgICAkRGF0YXtUeXBlfSAgICAgICA9ICRSb3dbNF07CiAgICAgICAgJERhdGF7Q2hhcnNldH0g ICAgPSAkUm93WzVdOwogICAgICAgICREYXRhe1ZhbGlkSUR9ICAgID0gJFJvd1s2XTsKICAgICAgICAk RGF0YXtDb21tZW50fSAgICA9ICRSb3dbN107CiAgICAgICAgJERhdGF7Q3JlYXRlVGltZX0gPSAkUm93 WzhdOwogICAgICAgICREYXRhe0NyZWF0ZUJ5fSAgID0gJFJvd1s5XTsKICAgICAgICAkRGF0YXtDaGFu Z2VUaW1lfSA9ICRSb3dbMTBdOwogICAgICAgICREYXRhe0NoYW5nZUJ5fSAgID0gJFJvd1sxMV07CiAg ICB9CiAgICByZXR1cm4gaWYgISVEYXRhOwoKICAgICRTZWxmLT57REJPYmplY3R9LT5QcmVwYXJlKAog ICAgICAgIFNRTCA9PiAnU0VMRUNUIGV2ZW50X2tleSwgZXZlbnRfdmFsdWUgRlJPTSBzbXNfZXZlbnRf aXRlbSAnIC4KICAgICAgICAgICAgJyBXSEVSRSBzbXNfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsg XCREYXRhe0lEfSBdLAogICAgKTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRTZWxmLT57REJPYmplY3R9

LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAeyAkRGF0YXtEYXRhfS0+eyAkUm93WzBd IH0gfSwgJFJvd1sxXTsKICAgIH0KICAgIHJldHVybiAlRGF0YTsKfQoKPWl0ZW0gU21zQWRkKCkKCmFk ZHMgYSBuZXcgc21zIHRvIHRoZSBkYXRhYmFzZQoKICAgIG15ICRJRCA9ICRTbXNFdmVudE9iamVjdC0+ U21zQWRkKAogICAgICAgIE5hbWUgICAgPT4gJ0pvYk5hbWUnLAogICAgICAgIFN1YmplY3QgPT4gJ0pv Yk5hbWUnLAogICAgICAgIEJvZHkgICAgPT4gJ0pvYk5hbWUnLAogICAgICAgIFR5cGUgICAgPT4gJ3Rl eHQvcGxhaW4nLAogICAgICAgIENoYXJzZXQgPT4gJ2lzby04ODk1LTEnLAogICAgICAgIERhdGEgPT4g ewogICAgICAgICAgICBFdmVudHMgPT4gWyAnVGlja2V0UXVldWVVcGRhdGUnLCBdLAogICAgICAgICAg ICAuLi4KICAgICAgICAgICAgUXVldWUgPT4gWyAnU29tZVF1ZXVlJywgXSwKICAgICAgICB9LAogICAg ICAgIENvbW1lbnQgPT4gJ0FuIG9wdGlvbmFsIGNvbW1lbnQnLCAjIE9wdGlvbmFsCiAgICAgICAgVmFs aWRJRCA9PiAxLAogICAgICAgIFVzZXJJRCAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBTbXNBZGQg ewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgog ICAgZm9yIChxdyhOYW1lIFN1YmplY3QgQm9keSBUeXBlIENoYXJzZXQgRGF0YSBVc2VySUQpKSB7CiAg ICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5M b2coIFByaW9yaXR5ID0+ICdlcnJvcicsIE1lc3NhZ2UgPT4gIk5lZWQgJF8hIiApOwogICAgICAgICAg ICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgam9iIG5hbWUgYWxyZWFkeSBl eGlzdHMKICAgIG15ICVDaGVjayA9ICRTZWxmLT5TbXNHZXQoIE5hbWUgPT4gJFBhcmFte05hbWV9ICk7 CiAgICBpZiAoJUNoZWNrKSB7CiAgICAgICAgJFNlbGYtPntMb2dPYmplY3R9LT5Mb2coCiAgICAgICAg ICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBhZGQg c21zICckUGFyYW17TmFtZX0nLCBzbXMgYWxyZWFkeSBleGlzdHMhIiwKICAgICAgICApOwogICAgICAg IHJldHVybjsKICAgIH0KCiAgICAjIGZpeCBzb21lIGJhZCBzdHVmZiBmcm9tIHNvbWUgYnJvd3NlcnMg KE9wZXJhKSEKICAgICRQYXJhbXtCb2R5fSA9fiBzLyhcblxyfFxyXHJcbnxcclxufFxyKS9cbi9nOwoK ICAgICMgaW5zZXJ0IGRhdGEgaW50byBkYgogICAgcmV0dXJuIGlmICEkU2VsZi0+e0RCT2JqZWN0fS0+ RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBzbXNfZXZlbnQgJwogICAgICAgICAgICAuICco bmFtZSwgc3ViamVjdCwgdGV4dCwgY29udGVudF90eXBlLCBjaGFyc2V0LCB2YWxpZF9pZCwgY29tbWVu dHMsICcKICAgICAgICAgICAgLiAnY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNo YW5nZV9ieSkgVkFMVUVTICcKICAgICAgICAgICAgLiAnKD8sID8sID8sID8sID8sID8sID8sIGN1cnJl bnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwog ICAgICAgICAgICBcJFBhcmFte05hbWV9LCAgICBcJFBhcmFte1N1YmplY3R9LCBcJFBhcmFte0JvZHl9 LAogICAgICAgICAgICBcJFBhcmFte1R5cGV9LCAgICBcJFBhcmFte0NoYXJzZXR9LCBcJFBhcmFte1Zh bGlkSUR9LAogICAgICAgICAgICBcJFBhcmFte0NvbW1lbnR9LCBcJFBhcmFte1VzZXJJRH0sICBcJFBh cmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICk7CgogICAgIyBnZXQgaWQKICAgICRTZWxmLT57REJP YmplY3R9LT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJ1NFTEVDVCBpZCBGUk9NIHNtc19ldmVudCBX SEVSRSBuYW1lID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmFtZX0gXSwKICAgICk7CiAg ICBteSAkSUQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkU2VsZi0+e0RCT2JqZWN0fS0+RmV0Y2hyb3dB cnJheSgpICkgewogICAgICAgICRJRCA9ICRSb3dbMF07CiAgICB9CiAgICByZXR1cm4gaWYgISRJRDsK CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkUGFyYW17RGF0YX0gfSApIHsKICAgICAgICBm b3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17RGF0YX0tPnskS2V5fSB9ICkgewogICAgICAgICAgICBuZXh0 IGlmICFkZWZpbmVkICRJdGVtOwogICAgICAgICAgICBuZXh0IGlmICRJdGVtIGVxICcnOwogICAgICAg ICAgICAkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJ TlRPIHNtc19ldmVudF9pdGVtICcKICAgICAgICAgICAgICAgICAgICAuICcoc21zX2lkLCBldmVudF9r ZXksIGV2ZW50X3ZhbHVlKSBWQUxVRVMgKD8sID8sID8pJywKICAgICAgICAgICAgICAgIEJpbmQgPT4g WyBcJElELCBcJEtleSwgXCRJdGVtIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAg IHJldHVybiAkSUQ7Cn0KCj1pdGVtIFNtc1VwZGF0ZSgpCgp1cGRhdGUgYSBzbXMgaW4gZGF0YWJhc2UK CiAgICBteSAkT2sgPSAkU21zRXZlbnRPYmplY3QtPlNtc1VwZGF0ZSgKICAgICAgICBJRCAgICAgID0+ IDEyMywKICAgICAgICBOYW1lICAgID0+ICdKb2JOYW1lJywKICAgICAgICBTdWJqZWN0ID0+ICdKb2JO YW1lJywKICAgICAgICBCb2R5ICAgID0+ICdKb2JOYW1lJywKICAgICAgICBUeXBlICAgID0+ICd0ZXh0 L3BsYWluJywKICAgICAgICBDaGFyc2V0ID0+ICd1dGY4JywKICAgICAgICBEYXRhID0+IHsKICAgICAg ICAgICAgUXVldWUgPT4gWyAnU29tZVF1ZXVlJywgXSwKICAgICAgICAgICAgLi4uCiAgICAgICAgICAg IFZhbGlkID0+IFsgMSwgXSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAxMjMsCiAgICApOwoK PWN1dAoKc3ViIFNtc1VwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMg Y2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgKHF3KElEIE5hbWUgU3ViamVjdCBCb2R5IFR5cGUgQ2hh cnNldCBEYXRhIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JF99ICkgewogICAgICAgICAg ICAkU2VsZi0+e0xvZ09iamVjdH0tPkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAi TmVlZCAkXyEiICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBmaXgg c29tZSBiYWQgc3R1ZmYgZnJvbSBzb21lIGJyb3dzZXJzIChPcGVyYSkhCiAgICAkUGFyYW17Qm9keX0g PX4gcy8oXG5ccnxcclxyXG58XHJcbnxccikvXG4vZzsKCiAgICAjIHVwZGF0ZSBkYXRhIGluIGRiCiAg ICByZXR1cm4gaWYgISRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAgICBTUUwgPT4gJ1VQREFURSBz bXNfZXZlbnQgU0VUICcKICAgICAgICAgICAgLiAnbmFtZSA9ID8sIHN1YmplY3QgPSA/LCB0ZXh0ID0g PywgY29udGVudF90eXBlID0gPywgY2hhcnNldCA9ID8sICcKICAgICAgICAgICAgLiAndmFsaWRfaWQg PSA/LCBjb21tZW50cyA9ID8sICcKICAgICAgICAgICAgLiAnY2hhbmdlX3RpbWUgPSBjdXJyZW50X3Rp

bWVzdGFtcCwgY2hhbmdlX2J5ID0gPyBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWwogICAg ICAgICAgICBcJFBhcmFte05hbWV9LCAgICBcJFBhcmFte1N1YmplY3R9LCBcJFBhcmFte0JvZHl9LAog ICAgICAgICAgICBcJFBhcmFte1R5cGV9LCAgICBcJFBhcmFte0NoYXJzZXR9LCBcJFBhcmFte1ZhbGlk SUR9LAogICAgICAgICAgICBcJFBhcmFte0NvbW1lbnR9LCBcJFBhcmFte1VzZXJJRH0sICBcJFBhcmFt e0lEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+RG8oCiAgICAgICAg U1FMICA9PiAnREVMRVRFIEZST00gc21zX2V2ZW50X2l0ZW0gV0hFUkUgc21zX2lkID0gPycsCiAgICAg ICAgQmluZCA9PiBbIFwkUGFyYW17SUR9IF0sCiAgICApOwogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtl eXMgJXsgJFBhcmFte0RhdGF9IH0gKSB7CiAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJFBhcmFte0Rh dGF9LT57JEtleX0gfSApIHsKICAgICAgICAgICAgbmV4dCBpZiAhZGVmaW5lZCAkSXRlbTsKICAgICAg ICAgICAgbmV4dCBpZiAkSXRlbSBlcSAnJzsKICAgICAgICAgICAgJFNlbGYtPntEQk9iamVjdH0tPkRv KAogICAgICAgICAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBzbXNfZXZlbnRfaXRlbSAnCiAgICAg ICAgICAgICAgICAgICAgLiAnKHNtc19pZCwgZXZlbnRfa2V5LCBldmVudF92YWx1ZSkgVkFMVUVTICg/ LCA/LCA/KScsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtJRH0sIFwkS2V5LCBcJEl0 ZW0gXSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1pdGVt IFNtc0RlbGV0ZSgpCgpkZWxldGVzIGFuIHNtcyBmcm9tIHRoZSBkYXRhYmFzZQoKICAgICRTbXNFdmVu dE9iamVjdC0+U21zRGVsZXRlKAogICAgICAgIElEICAgICA9PiAxMjMsCiAgICAgICAgVXNlcklEID0+ IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgU21zRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSAp ID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciAocXcoSUQgVXNlcklEKSkgewog ICAgICAgIGlmICggISRQYXJhbXskX30gKSB7CiAgICAgICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+ TG9nKCBQcmlvcml0eSA9PiAnZXJyb3InLCBNZXNzYWdlID0+ICJOZWVkICRfISIgKTsKICAgICAgICAg ICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGpvYiBuYW1lIGV4aXN0cwog ICAgbXkgJUNoZWNrID0gJFNlbGYtPlNtc0dldCggSUQgPT4gJFBhcmFte0lEfSApOwogICAgaWYgKCAh JUNoZWNrICkgewogICAgICAgICRTZWxmLT57TG9nT2JqZWN0fS0+TG9nKAogICAgICAgICAgICBQcmlv cml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgZGVsZXRlIHNtcyAn JENoZWNre05hbWV9Jywgc21zIGRvZXMgbm90IGV4aXN0IiwKICAgICAgICApOwogICAgICAgIHJldHVy bjsKICAgIH0KCiAgICAjIGRlbGV0ZSBzbXMKICAgICRTZWxmLT57REJPYmplY3R9LT5EbygKICAgICAg ICBTUUwgID0+ICdERUxFVEUgRlJPTSBzbXNfZXZlbnRfaXRlbSBXSEVSRSBzbXNfaWQgPSA/JywKICAg ICAgICBCaW5kID0+IFsgXCRQYXJhbXtJRH0gXSwKICAgICk7CiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+ RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gc21zX2V2ZW50IFdIRVJFIGlkID0gPycsCiAg ICAgICAgQmluZCA9PiBbIFwkUGFyYW17SUR9IF0sCiAgICApOwogICAgJFNlbGYtPntMb2dPYmplY3R9 LT5Mb2coCiAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgTWVzc2FnZSA9PiAiU21z RXZlbnQgc21zICckQ2hlY2t7TmFtZX0nIGRlbGV0ZWQgKFVzZXJJRD0kUGFyYW17VXNlcklEfSkuIiwK ICAgICk7CiAgICByZXR1cm4gMTsKfQoKPWl0ZW0gU21zRXZlbnRDaGVjaygpCgpyZXR1cm5zIGFycmF5 IG9mIHNtcyBhZmZlY3RlZCBieSBldmVudAoKICAgIG15IEBJRHMgPSAkU21zRXZlbnRPYmplY3QtPlNt c0V2ZW50Q2hlY2soIEV2ZW50ID0+ICdBcnRpY2xlQ3JlYXRlJyApOwoKPWN1dAoKc3ViIFNtc0V2ZW50 Q2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBz dHVmZgogICAgaWYgKCAhJFBhcmFte0V2ZW50fSApIHsKICAgICAgICAkU2VsZi0+e0xvZ09iamVjdH0t PkxvZyggUHJpb3JpdHkgPT4gJ2Vycm9yJywgTWVzc2FnZSA9PiAnTmVlZCBOYW1lIScgKTsKICAgICAg ICByZXR1cm47CiAgICB9CiAgICAkU2VsZi0+e0RCT2JqZWN0fS0+UHJlcGFyZSgKICAgICAgICBTUUwg PT4gJ1NFTEVDVCBESVNUSU5DVChuZWkuc21zX2lkKSBGUk9NICcgLgogICAgICAgICAgICAnc21zX2V2 ZW50IG5lLCBzbXNfZXZlbnRfaXRlbSBuZWkgV0hFUkUgJyAuCiAgICAgICAgICAgICduZS5pZCA9IG5l aS5zbXNfaWQgQU5EICcgLgogICAgICAgICAgICAibmUudmFsaWRfaWQgSU4gKCAke1woam9pbiAnLCAn LCAkU2VsZi0+e1ZhbGlkT2JqZWN0fS0+VmFsaWRJRHNHZXQoKSl9ICkgQU5EICIgLgogICAgICAgICAg ICAnbmVpLmV2ZW50X2tleSA9IFwnRXZlbnRzXCcgQU5EIG5laS5ldmVudF92YWx1ZSA9ID8nLAogICAg ICAgIEJpbmQgPT4gWyBcJFBhcmFte0V2ZW50fSBdLAogICAgKTsKCiAgICBteSBASURzOwogICAgd2hp bGUgKCBteSBAUm93ID0gJFNlbGYtPntEQk9iamVjdH0tPkZldGNocm93QXJyYXkoKSApIHsKICAgICAg ICBwdXNoIEBJRHMsICRSb3dbMF07CiAgICB9CiAgICByZXR1cm4gQElEczsKfQoKMTsKCj1iYWNrCgo9 aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RS UyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBB QlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENP UFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZl IHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1j dXQKCj1oZWFkMSBWRVJTSU9OCgokUmV2aXNpb246IDEuMTQgJCAkRGF0ZTogMjAxMi8xMS8yMCAxNToz NjoyNyAkCgo9Y3V0Cg==</File> <File Location="Kernel/Output/HTML/Standard/AdminSmsEvent.dtl" Permissio n="644" Encode="Base64">IyAtLQojIEFkbWluU21zRXZlbnQuZHRsIC0gcHJvdmlkZXMgSFRNTCBm b3JtIGZvciBBZG1pblNtc0V2ZW50CiMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTIgT1RSUyBBRywgaHR0 cDovL290cnMub3JnLwojIC0tCiMgJElkOiBBZG1pblNtc0V2ZW50LmR0bCx2IDEuMzUgMjAxMi8xMS8y MCAxNToxMDoyOCBtaCBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRF TFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5H

IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRo aXMgZmlsZSwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQo8IS0t IGR0bDpibG9jazpPdmVydmlldyAtLT4KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5 b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDE+JFRleHR7IlNtcyBNYW5hZ2VtZW50 In08L2gxPgoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgo8IS0tIGR0bDpibG9jazpBY3Rp b25MaXN0IC0tPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxk aXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+JFRleHR7IkFjdGlvbnMifTwvaDI+ CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAg ICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CjwhLS0gZHRsOmJsb2NrOkFjdGlvbk92ZXJ2 aWV3IC0tPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEg aHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifSIgY2xhc3M9IkNhbGxGb3JB Y3Rpb24iPjxzcGFuPiRUZXh0eyJHbyB0byBvdmVydmlldyJ9PC9zcGFuPjwvYT4KICAgICAgICAgICAg ICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBY3Rpb25PdmVydmlldyAtLT4KPCEtLSBkdGw6Ymxv Y2s6QWN0aW9uQWRkIC0tPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAg ICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlvbj0kRW52eyJBY3Rpb24ifTtTdWJhY3Rp b249QWRkIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQbHVzIj48c3Bhbj4kVGV4dHsiQWRkIHNtcyJ9PC9z cGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgo8IS0tIGR0bDpibG9jazpBY3Rpb25BZGQg LS0+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4K PCEtLSBkdGw6YmxvY2s6QWN0aW9uTGlzdCAtLT4KICAgIDwvZGl2PgoKCiAgICA8ZGl2IGNsYXNzPSJD b250ZW50Q29sdW1uIj4KPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdSZXN1bHQgLS0+CiAgICAgICAgPGRp diBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAg ICAgICAgICAgICAgIDxoMj4kVGV4dHsiTGlzdCJ9PC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAg ICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJE YXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAg ICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJXMjBwYyI+JFRleHR7 Ik5hbWUifTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7IkNvbW1lbnQi fTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+JFRleHR7IlZhbGlkaXR5In08L3Ro PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJDaGFuZ2VkIn08L3RoPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJDcmVhdGVkIn08L3RoPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRoPiRUZXh0eyJEZWxldGUifTwvdGg+CiAgICAgICAgICAgICAgICAg ICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAg ICA8dGJvZHk+CjwhLS0gZHRsOmJsb2NrOk5vRGF0YUZvdW5kTXNnIC0tPgogICAgICAgICAgICAgICAg ICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNiI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Ik5vIGRhdGEgZm91bmQuIn0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+Cjwh LS0gZHRsOmJsb2NrOk5vRGF0YUZvdW5kTXNnIC0tPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3Vs dFJvdyAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHRkPjxhIGhyZWY9IiRFbnZ7IkJhc2VsaW5rIn1BY3Rpb249JEVudnsiQWN0aW9uIn07U3Vi YWN0aW9uPUNoYW5nZTtJRD0kTFFEYXRheyJJRCJ9Ij4kUURhdGF7Ik5hbWUifTwvYT48L3RkPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSIkUURhdGF7IkNvbW1lbnQifSI+JFFEYXRh eyJDb21tZW50IiwiMjYifTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+JFRleHR7 IiREYXRheyJWYWxpZCJ9In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiRUaW1l U2hvcnR7IiRRRGF0YXsiQ2hhbmdlVGltZSJ9In08L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHRkPiRUaW1lU2hvcnR7IiRRRGF0YXsiQ3JlYXRlVGltZSJ9In08L3RkPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxhIGNsYXNzPSJUcmFzaENhbiJocmVmPSIkRW52eyJCYXNlbGluayJ9QWN0aW9uPSRFbnZ7 IkFjdGlvbiJ9O1N1YmFjdGlvbj1EZWxldGU7SUQ9JExRRGF0YXsiSUQifTskUUVudnsiQ2hhbGxlbmdl VG9rZW5QYXJhbSJ9IiB0aXRsZT0iJFRleHR7IkRlbGV0ZSB0aGlzIHNtcyJ9Ij4kVGV4dHsiRGVsZXRl IHRoaXMgc21zIn08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAg ICAgICAgICAgICAgICA8L3RyPgo8IS0tIGR0bDpibG9jazpPdmVydmlld1Jlc3VsdFJvdyAtLT4KICAg ICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAg ICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3UmVzdWx0IC0tPgoK PCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdVcGRhdGUgLS0+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0 U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KPCEtLSBkdGw6YmxvY2s6SGVh ZGVyQWRkIC0tPgogICAgICAgICAgICAgICAgPGgyPiRUZXh0eyJBZGQgU21zIn08L2gyPgo8IS0tIGR0 bDpibG9jazpIZWFkZXJBZGQgLS0+CjwhLS0gZHRsOmJsb2NrOkhlYWRlckVkaXQgLS0+CiAgICAgICAg ICAgICAgICA8aDI+JFRleHR7IkVkaXQgU21zIn08L2gyPgo8IS0tIGR0bDpibG9jazpIZWFkZXJFZGl0 IC0tPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+Cgog ICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSIkRW52eyJDR0lIYW5kbGUifSIgbWV0aG9kPSJwb3N0 IiAgY2xhc3M9IlZhbGlkYXRlIiBuYW1lPSJjb21wb3NlIj4KICAgICAgICAgICAgICAgICAgICA8aW5w

dXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSIkRW52eyJBY3Rpb24ifSIvPgogICAg ICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9 IiRMUURhdGF7IkFjdGlvbiJ9QWN0aW9uIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9 ImhpZGRlbiIgbmFtZT0iSUQiIHZhbHVlPSIkUURhdGF7IklEIn0iLz4KICAgICAgICAgICAgICAgICAg ICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFi ZWwgZm9yPSJOYW1lIiBjbGFzcz0iTWFuZGF0b3J5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAk VGV4dHsiTmFtZSJ9OgogICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAg ICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgaWQ9Ik5hbWUiIHZhbHVlPSIkUURhdGF7Ik5hbWUi fSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkICREYXRheyJOYW1lU2VydmVyRXJyb3IifSIg bWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVF cnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwPiRUZXh0eyJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9PC9wPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJO YW1lU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rp dj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAg ICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmVjaXBpZW50cyI+JFRleHR7IlJlY2lwaWVudCBn cm91cHMifTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQi PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IlJlY2lwaWVudHNTdHJnIn0KICAgICAg ICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9 IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlJlY2lwaWVu dEFnZW50cyI+JFRleHR7IlJlY2lwaWVudCBhZ2VudHMifTogPC9sYWJlbD4KICAgICAgICAgICAgICAg ICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERh dGF7IlJlY2lwaWVudEFnZW50c1N0cmcifQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAg ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAg ICAgICAgICAgICAgPGxhYmVsIGZvcj0iUmVjaXBpZW50R3JvdXBzIj4kVGV4dHsiUmVjaXBpZW50IGdy b3VwcyJ9OiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUmVjaXBpZW50R3JvdXBzU3RyZyJ9CiAg ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs YXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJSZWNp cGllbnRSb2xlcyI+JFRleHR7IlJlY2lwaWVudCByb2xlcyJ9OiA8L2xhYmVsPgogICAgICAgICAgICAg ICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAk RGF0YXsiUmVjaXBpZW50Um9sZXNTdHJnIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAg ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAg ICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlJlY2lwaWVudEVtYWlsIj4kVGV4dHsiUmVjaXBpZW50IE1v YmlsZSBOdW1iZXJzIChzZXBhcmF0ZWQgd2l0aCBjb21tYSkifTogPC9sYWJlbD4KICAgICAgICAgICAg ICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlJlY2lwaWVudEVtYWlsIiBpZD0iUmVjaXBpZW50RW1haWwi IGNsYXNzPSJXNTBwYyIgdmFsdWU9IiRRRGF0YXsiUmVjaXBpZW50RW1haWwifSIvPgogICAgICAgICAg ICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xl YXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRXZlbnRzIiBjbGFz cz0iTWFuZGF0b3J5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJr ZXIiPio8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiRXZlbnQifToKICAg ICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkV2ZW50c1N0cmci fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXZlbnRzRXJyb3IiIGNsYXNzPSJU b29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4 dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAg IDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRXZlbnRzU2VydmVyRXJy b3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4ifTwvcD4KICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAg ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKPCEtLSBkdGw6YmxvY2s6T3Zl cnZpZXdVcGRhdGVUeXBlIC0tPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUeXBl SUQiPiRUZXh0eyJUeXBlIn06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh c3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJUeXBlc1N0cmcifQog ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj

bGFzcz0iQ2xlYXIiPjwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1VwZGF0ZVR5cGUgLS0+CiAg ICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlN0YXRlSUQiPiRUZXh0eyJTdGF0ZSJ9OiA8 L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAkRGF0YXsiU3RhdGVzU3RyZyJ9CiAgICAgICAgICAgICAgICAgICAg ICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQcmlvcml0eUlEIj4kVGV4dHsiUHJp b3JpdHkifTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQi PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IlByaW9yaXRpZXNTdHJnIn0KICAgICAg ICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9 IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlF1ZXVlSUQi PiRUZXh0eyJRdWV1ZSJ9OiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiUXVldWVzU3RyZyJ9CiAg ICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs YXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJMb2Nr SUQiPiRUZXh0eyJMb2NrIn06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xh c3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJMb2Nrc1N0cmcifQog ICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0iQ2xlYXIiPjwvZGl2PgoKPCEtLSBkdGw6YmxvY2s6T3ZlcnZpZXdVcGRhdGVTZXJ2aWNlIC0t PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2VydmljZUlEIj4kVGV4dHsiU2Vy dmljZSJ9OiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+ CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGF0YXsiU2VydmljZXNTdHJnIn0KICAgICAgICAg ICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNs ZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNMQUlEIj4kVGV4 dHsiU0xBIn06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxk Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJTTEFzU3RyZyJ9CiAgICAgICAgICAg ICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVh ciI+PC9kaXY+CjwhLS0gZHRsOmJsb2NrOk92ZXJ2aWV3VXBkYXRlU2VydmljZSAtLT4KCiAgICAgICAg ICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkN1c3RvbWVySUQiPiRUZXh0eyJDdXN0b21lcklEIn06 IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJDdXN0b21lcklEIiBp ZD0iQ3VzdG9tZXJJRCIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iJFFEYXRheyJDdXN0b21lcklEIn0iLz4K ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkN1 c3RvbWVyVXNlcklEIj4kVGV4dHsiQ3VzdG9tZXIifTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAg ICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0 IHR5cGU9InRleHQiIG5hbWU9IkN1c3RvbWVyVXNlcklEIiBpZD0iQ3VzdG9tZXJVc2VySUQiIGNsYXNz PSJXNTBwYyIgdmFsdWU9IiRRRGF0YXsiQ3VzdG9tZXJVc2VySUQifSIvPgogICAgICAgICAgICAgICAg ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwv ZGl2PgoKPCEtLSBkdGw6YmxvY2s6RHluYW1pY0ZpZWxkIC0tPgogICAgICAgICAgICAgICAgICAgICAg ICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxh YmVsPiRUZXh0eyJEeW5hbWljIEZpZWxkcyJ9PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAg PGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJTcGFjaW5nVG9wIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RHluYW1pY0ZpZWxkRWxlbWVudCAtLT4K ICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkxhYmVsIn0KICAgICAgICAgICAgICAgICAgICAg ICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7IkZp ZWxkIn0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAg IDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPCEtLSBkdGw6YmxvY2s6RHluYW1pY0ZpZWxkRWxlbWVu dCAtLT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+PC9kaXY+ CjwhLS0gZHRsOmJsb2NrOkR5bmFtaWNGaWVsZCAtLT4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxs YWJlbCBmb3I9IkFydGljbGVUeXBlSUQiPiRUZXh0eyJBcnRpY2xlIHR5cGUifTogPC9sYWJlbD4KICAg ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgJERhdGF7IkFydGljbGVUeXBlc1N0cmcifQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPigkVGV4dHsiT25seSBmb3IgQXJ0aWNsZUNyZWF0 ZSBldmVudCJ9KTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAg ICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAg IDxsYWJlbCBmb3I9IkFydGljbGVTZW5kZXJUeXBlSUQiPiRUZXh0eyJBcnRpY2xlIHNlbmRlciB0eXBl In06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJBcnRpY2xlU2VuZGVyVHlwZXNTdHJnIn0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4oJFRleHR7 Ik9ubHkgZm9yIEFydGljbGVDcmVhdGUgZXZlbnQifSk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAg

IDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+Cgog ICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBcnRpY2xlU3ViamVjdE1hdGNoIj4kVGV4 dHsiU3ViamVjdCBtYXRjaCJ9OiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNs YXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIg bmFtZT0iQXJ0aWNsZVN1YmplY3RNYXRjaCIgaWQ9IkFydGljbGVTdWJqZWN0TWF0Y2giIGNsYXNzPSJX NTBwYyIgdmFsdWU9IiRRRGF0YXsiQXJ0aWNsZVN1YmplY3RNYXRjaCJ9Ii8+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+KCRUZXh0eyJPbmx5IGZvciBB cnRpY2xlQ3JlYXRlIGV2ZW50In0pPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAg ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAg ICAgICAgICAgICAgPGxhYmVsIGZvcj0iQXJ0aWNsZUJvZHlNYXRjaCI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAkVGV4dHsiQm9keSBtYXRjaCJ9OgogICAgICAgICAgICAgICAgICAgICAgICA8L2xh YmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iQXJ0aWNsZUJvZHlNYXRjaCIg aWQ9IkFydGljbGVCb2R5TWF0Y2giIGNsYXNzPSJXNTBwYyIgdmFsdWU9IiRRRGF0YXsiQXJ0aWNsZUJv ZHlNYXRjaCJ9Ii8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBs YW5hdGlvbiI+KCRUZXh0eyJPbmx5IGZvciBBcnRpY2xlQ3JlYXRlIGV2ZW50In0pPC9wPgogICAgICAg ICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0i Q2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iR2F0ZXdheSI+ JFRleHR7IlNtcyBHYXRld2F5In06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg Y2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRheyJHYXRld2F5U3Ry ZyJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+ KCRUZXh0eyJHYXRld2F5IHVzZWQgdG8gc2VuZCB0aGUgc21zIn0pPC9wPgogICAgICAgICAgICAgICAg ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwv ZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGgzPiRUZXh0eyJTbXMifTo8L2gzPgogICAgICAg ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAg ICAgICAgICA8bGFiZWwgZm9yPSJTdWJqZWN0IiBjbGFzcz0iTWFuZGF0b3J5Ij4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAkVGV4dHsiU3ViamVjdCJ9ICgkVGV4dHsiRm9yIGFydGljbGUgaGlzdG9yeSBv bmx5In0pOgogICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQg dHlwZT0idGV4dCIgbmFtZT0iU3ViamVjdCIgaWQ9IlN1YmplY3QiIHZhbHVlPSIkUURhdGF7IlN1Ympl Y3QifSIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkICREYXRheyJTdWJqZWN0U2VydmVyRXJy b3IifSIgbWF4bGVuZ3RoPSIyMDAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9 IlN1YmplY3RFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9PC9wPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 ZGl2IGlkPSJTdWJqZWN0U2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kVGV4dHsiVGhpcyBmaWVsZCBpcyByZXF1aXJl ZC4ifTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAg ICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwv ZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQm9keSIgY2xhc3M9Ik1hbmRh dG9yeSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9z cGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IlRleHQifToKICAgICAgICAgICAg ICAgICAgICAgICAgPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmlj aFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgcm93cz0iMTIi IGNvbHM9Ijc1IiBuYW1lPSJCb2R5IiBpZD0iQm9keSIgY2xhc3M9IlZhbGlkYXRlX1JlcXVpcmVkICRE YXRheyJCb2R5U2VydmVyRXJyb3IifSI+JFFEYXRheyJCb2R5In08L3RleHRhcmVhPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQm9keUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVz c2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+JFRleHR7IlRoaXMgZmllbGQg aXMgcmVxdWlyZWQuIn08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkJvZHlTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0 aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJU aGlzIGZpZWxkIGlzIHJlcXVpcmVkLiJ9PC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9k aXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8 ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9y PSJTbXNBcnRpY2xlVHlwZUlEIj4kVGV4dHsiU21zIGFydGljbGUgdHlwZSJ9OiA8L2xhYmVsPgogICAg ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAkRGF0YXsiU21zQXJ0aWNsZVR5cGVzU3RyZyJ9CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+KCRUZXh0eyJPbmx5IGZvciBzbXNzIHRvIHNw ZWNpZmllZCBlbWFpbCBhZGRyZXNzZXMifSk8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2

PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAg ICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJWYWxpZElEIj4kVGV4dHsiVmFsaWRpdHkifTogPC9s YWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgJERhdGF7IlZhbGlkT3B0aW9uIn0KICAgICAgICAgICAgICAgICAgICAg ICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4K CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNvbW1lbnQiPiRUZXh0eyJDb21tZW50 In06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJDb21tZW50IiBp ZD0iQ29tbWVudCIgdmFsdWU9IiRRRGF0YXsiQ29tbWVudCJ9IiBjbGFzcz0iVzUwcGMiIG1heGxlbmd0 aD0iMjUwIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAg ICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJGaWVsZCBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0 b24gY2xhc3M9IlByaW1hcnkiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiRUZXh0eyJTdWJtaXQifSI+JFRl eHR7IlN1Ym1pdCJ9PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsib3Ii fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJEVudnsiQmFzZWxpbmsifUFjdGlv bj0kRW52eyJBY3Rpb24ifSI+JFRleHR7IkNhbmNlbCJ9PC9hPgogICAgICAgICAgICAgICAgICAgICAg ICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2Pgog ICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAg ICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNp bXBsZSBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAg ICAgICAgIDxoMj4kVGV4dHsiUmVmZXJlbmNlIn08L2gyPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAg ICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgIDxwPiRUZXh0eyJTbXNz IGFyZSBzZW50IHRvIGFuIGFnZW50IG9yIGEgY3VzdG9tZXIuIn08L3A+CgogICAgICAgICAgICAgICAg PHA+JFRleHR7IllvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdGFncyJ9OjwvcD4KICAgICAgICAgICAg ICAgIDxkbD4KCiAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0FHRU5UX1NVQkpF Q1RbMjBdJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAg ICAgICAgICAgICAgJFRleHR7IlRvIGdldCB0aGUgZmlyc3QgMjAgY2hhcmFjdGVyIG9mIHRoZSBzdWJq ZWN0IChvZiB0aGUgbGF0ZXN0IGFnZW50IGFydGljbGUpLiJ9CiAgICAgICAgICAgICAgICAgICAgPC9k ZD4KCiAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0FHRU5UX0JPRFlbNV0mZ3Q7 PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAg ICAkVGV4dHsiVG8gZ2V0IHRoZSBmaXJzdCA1IGxpbmVzIG9mIHRoZSBib2R5IChvZiB0aGUgbGF0ZXN0 IGFnZW50IGFydGljbGUpLiJ9CiAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAg ICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0FHRU5UXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAg ICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAkVGV4dHsiVG8gZ2V0IHRoZSBhcnRp Y2xlIGF0dHJpYnV0ZSJ9CiAgICAgICAgICAgICAgICAgICAgICAgICgkVGV4dHsiIGUuIGcuIn0gPGNv ZGU+Jmx0O09UUlNfQUdFTlRfRnJvbSZndDssICZsdDtPVFJTX0FHRU5UX1RvJmd0OywgJmx0O09UUlNf QUdFTlRfQ2MmZ3Q7LAogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7T1RSU19BR0VOVF9TdWJqZWN0 Jmd0OywgJmx0O09UUlNfQUdFTlRfQm9keSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICA8 L2RkPgoKICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfQ1VTVE9NRVJfU1VCSkVD VFsyMF0mZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAg ICAgICAgICAgICAkVGV4dHsiVG8gZ2V0IHRoZSBmaXJzdCAyMCBjaGFyYWN0ZXIgb2YgdGhlIHN1Ympl Y3QgKG9mIHRoZSBsYXRlc3QgY3VzdG9tZXIgYXJ0aWNsZSkuIn0KICAgICAgICAgICAgICAgICAgICA8 L2RkPgoKICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfQ1VTVE9NRVJfQk9EWVs1 XSZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAg ICAgICAgICRUZXh0eyJUbyBnZXQgdGhlIGZpcnN0IDUgbGluZXMgb2YgdGhlIGJvZHkgKG9mIHRoZSBs YXRlc3QgY3VzdG9tZXIgYXJ0aWNsZSkuIn0KICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAg ICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfQ1VTVE9NRVJfUkVBTE5BTUUmZ3Q7PC9jb2Rl PjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAkVGV4 dHsiVG8gZ2V0IHRoZSByZWFsbmFtZSBvZiB0aGUgc2VuZGVyIChpZiBnaXZlbikuIn0KICAgICAgICAg ICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfQ1VT VE9NRVJfKiZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAg ICAgICAgICAgICAgICRUZXh0eyJUbyBnZXQgdGhlIGFydGljbGUgYXR0cmlidXRlIn0KICAgICAgICAg ICAgICAgICAgICAgICAgKCRUZXh0eyIgZS4gZy4ifSA8Y29kZT4mbHQ7T1RSU19DVVNUT01FUl9Gcm9t Jmd0OywgJmx0O09UUlNfQ1VTVE9NRVJfVG8mZ3Q7LAogICAgICAgICAgICAgICAgICAgICAgICAmbHQ7 T1RSU19DVVNUT01FUl9DYyZndDssICZsdDtPVFJTX0NVU1RPTUVSX1N1YmplY3QmZ3Q7IGFuZCAmbHQ7 T1RSU19DVVNUT01FUl9Cb2R5Jmd0OzwvY29kZT4pLgogICAgICAgICAgICAgICAgICAgIDwvZGQ+Cgog ICAgICAgICAgICAgICAgICAgIDxkdD48Y29kZT4mbHQ7T1RSU19DVVNUT01FUl9EQVRBXyomZ3Q7PC9j b2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAk VGV4dHsiT3B0aW9ucyBvZiB0aGUgY3VycmVudCBjdXN0b21lciB1c2VyIGRhdGEifQogICAgICAgICAg ICAgICAgICAgICAgICAoJFRleHR7IiBlLiBnLiJ9IDxjb2RlPiZsdDtPVFJTX0NVU1RPTUVSX0RBVEFf

VXNlckZpcnN0bmFtZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAg ICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfT1dORVJfKiZndDs8L2NvZGU+PC9kdD4KICAg ICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICRUZXh0eyJUaWNrZXQg b3duZXIgb3B0aW9ucyJ9CiAgICAgICAgICAgICAgICAgICAgICAgICgkVGV4dHsiIGUuIGcuIn0gPGNv ZGU+Jmx0O09UUlNfT1dORVJfVXNlckZpcnN0bmFtZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAg ICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfUkVTUE9OU0lC TEVfKiZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAg ICAgICAgICAgICRUZXh0eyJUaWNrZXQgcmVzcG9uc2libGUgb3B0aW9ucyJ9CiAgICAgICAgICAgICAg ICAgICAgICAgICgkVGV4dHsiIGUuIGcuIn0gPGNvZGU+Jmx0O09UUlNfUkVTUE9OU0lCTEVfVXNlckZp cnN0bmFtZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAg ICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfQ1VSUkVOVF8qJmd0OzwvY29kZT48L2R0PgogICAgICAg ICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Ik9wdGlvbnMgb2Yg dGhlIGN1cnJlbnQgdXNlciB3aG8gcmVxdWVzdGVkIHRoaXMgYWN0aW9uIn0KICAgICAgICAgICAgICAg ICAgICAgICAgKCRUZXh0eyIgZS4gZy4ifSA8Y29kZT4mbHQ7T1RSU19DVVJSRU5UX1VzZXJGaXJzdG5h bWUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAg ICAgPGR0Pjxjb2RlPiZsdDtPVFJTX1RJQ0tFVF8qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAg ICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Ik9wdGlvbnMgb2YgdGhlIHRp Y2tldCBkYXRhIn0KICAgICAgICAgICAgICAgICAgICAgICAgKCRUZXh0eyIgZS4gZy4ifSA8Y29kZT4m bHQ7T1RSU19USUNLRVRfVGlja2V0TnVtYmVyJmd0OywgJmx0O09UUlNfVElDS0VUX1RpY2tldElEJmd0 OywKICAgICAgICAgICAgICAgICAgICAgICAgJmx0O09UUlNfVElDS0VUX1F1ZXVlJmd0OywgJmx0O09U UlNfVElDS0VUX1N0YXRlJmd0OzwvY29kZT4pLgogICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAg ICAgICAgICAgICAgICAgIDxkdD48Y29kZT4mbHQ7T1RSU19USUNLRVRfRHluYW1pY0ZpZWxkXyomZ3Q7 PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAg ICAkVGV4dHsiT3B0aW9ucyBvZiB0aWNrZXQgZHluYW1pYyBmaWVsZHMgaW50ZXJuYWwga2V5IHZhbHVl cyJ9CiAgICAgICAgICAgICAgICAgICAgICAgICgkVGV4dHsiIGUuIGcuIn0gPGNvZGU+Jmx0O09UUlNf VElDS0VUX0R5bmFtaWNGaWVsZF9UZXN0RmllbGQmZ3Q7LAogICAgICAgICAgICAgICAgICAgICAgICAm bHQ7T1RSU19USUNLRVRfRHluYW1pY0ZpZWxkX1RpY2tldEZyZWVUZXh0MSZndDs8L2NvZGU+KS4KICAg ICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09U UlNfVElDS0VUX0R5bmFtaWNGaWVsZF8qX1ZhbHVlJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAg ICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7Ik9wdGlvbnMgb2YgdGlja2V0 IGR5bmFtaWMgZmllbGRzIGRpc3BsYXkgdmFsdWVzLCB1c2VmdWwgZm9yIERyb3Bkb3duIGFuZCBNdWx0 aXNlbGVjdCBmaWVsZHMifQogICAgICAgICAgICAgICAgICAgICAgICAoJFRleHR7IiBlLiBnLiJ9IDxj b2RlPiZsdDtPVFJTX1RJQ0tFVF9EeW5hbWljRmllbGRfVGVzdEZpZWxkX1ZhbHVlJmd0OywKICAgICAg ICAgICAgICAgICAgICAgICAgJmx0O09UUlNfVElDS0VUX0R5bmFtaWNGaWVsZF9UaWNrZXRGcmVlVGV4 dDFfVmFsdWUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAg ICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0NPTkZJR18qJmd0OzwvY29kZT48L2R0PgogICAgICAg ICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgJFRleHR7IkNvbmZpZyBvcHRp b25zIn0KICAgICAgICAgICAgICAgICAgICAgICAgKCRUZXh0eyIgZS4gZy4ifSA8Y29kZT4mbHQ7T1RS U19DT05GSUdfSHR0cFR5cGUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgPC9kZD4KCgog ICAgICAgICAgICAgICAgPC9kbD4KCgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IlNwYWNpbmdUb3Ai PgogICAgICAgICAgICAgICAgICAgICRUZXh0eyJFeGFtcGxlIHJlc3BvbnNlIn06CiAgICAgICAgICAg ICAgICA8L3A+CiAgICAgICAgICAgICAgICAkVGV4dHsiU3ViamVjdCJ9OgogICAgICAgICAgICAgICAg PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IlN1YmplY3QiIHZhbHVlPSJOZXcgdGlja2V0IHNtcyEgKCZs dDtPVFJTX0NVU1RPTUVSX1NVQkpFQ1RbMThdJmd0OykiIHNpemU9IjgwIiBtYXhsZW5ndGg9IjgwIi8+ CiAgICAgICAgICAgICAgICA8YnIvPgogICAgICAgICAgICAgICAgJFRleHR7IlRleHQifToKICAgICAg ICAgICAgICAgIDxici8+CiAgICAgICAgICAgICAgICA8dGV4dGFyZWEgcm93cz0iMTIiIGNvbHM9Ijcw IiBuYW1lPSJSZXNwb25zZSI+CgpIaSAmbHQ7T1RSU19DVVJSRU5UX1VzZXJGaXJzdG5hbWUmZ3Q7LAoK dGhlcmUgaXMgYSBuZXcgdGlja2V0IGluICImbHQ7T1RSU19USUNLRVRfUXVldWUmZ3Q7IiEKCiZsdDtP VFJTX0NVU1RPTUVSX0ZST00mZ3Q7IHdyb3RlOgombHQ7c25pcCZndDsKJmx0O09UUlNfQ1VTVE9NRVJf RU1BSUxbMTZdJmd0OwombHQ7c25pcCZndDsKCiZsdDtPVFJTX0NPTkZJR19IdHRwVHlwZSZndDs6Ly8m bHQ7T1RSU19DT05GSUdfRlFETiZndDsvJmx0O09UUlNfQ09ORklHX1NjcmlwdEFsaWFzJmd0O2luZGV4 LnBsP0FjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9Jmx0O09UUlNfVElDS0VUX0lEJmd0OwoK WW91ciBPVFJTIFNtcyBNYXN0ZXIKICAgICAgICAgICAgICAgIDwvdGV4dGFyZWE+CiAgICAgICAgICAg IDwvZGl2PgogICAgICAgIDwvZGl2Pgo8IS0tIGR0bDpibG9jazpPdmVydmlld1VwZGF0ZSAtLT4KCiAg ICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KPC9kaXY+CjwhLS0gZHRsOmJsb2Nr Ok92ZXJ2aWV3IC0tPgo=</File> <File Location="Kernel/Modules/AdminSmsEvent.pm" Permission="644" Encode ="Base64">IyAtLQojIEtlcm5lbC9Nb2R1bGVzL0FkbWluU21zRXZlbnQucG0gLSB0byBtYW5hZ2UgZX ZlbnQtYmFzZWQgc21zcwojIENvcHlyaWdodCAoQykgMjAwMS0yMDEyIE9UUlMgQUcsIGh0dHA6Ly9vdH JzLm9yZy8KIyAtLQojICRJZDogQWRtaW5TbXNFdmVudC5wbSx2IDEuNDMgMjAxMi8xMS8yMCAxNDozOT

o0NCBtaCBFeHAgJAojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0 FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaW NlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZS wgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dC4KIyAtLQoKcGFja2FnZSBLZX JuZWw6Ok1vZHVsZXM6OkFkbWluU21zRXZlbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2 UgS2VybmVsOjpTeXN0ZW06OlNtc0V2ZW50Owp1c2UgS2VybmVsOjpTeXN0ZW06OlByaW9yaXR5Owp1c2 UgS2VybmVsOjpTeXN0ZW06OkxvY2s7CnVzZSBLZXJuZWw6OlN5c3RlbTo6U2VydmljZTsKdXNlIEtlcm 5lbDo6U3lzdGVtOjpTTEE7CnVzZSBLZXJuZWw6OlN5c3RlbTo6U3RhdGU7CnVzZSBLZXJuZWw6OlN5c3 RlbTo6VHlwZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYWxpZDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpEeW 5hbWljRmllbGQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kOwp1c2UgS2 VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgdmFycyBxdygkVkVSU0lPTi k7CiRWRVJTSU9OID0gcXcoJFJldmlzaW9uOiAxLjQzICQpIFsxXTsKCnN1YiBuZXcgewogICAgbXkgKC AkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKIC AgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaG VjayBhbGwgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYXJhbU9iamVjdCBEQk 9iamVjdCBMYXlvdXRPYmplY3QgQ29uZmlnT2JqZWN0IExvZ09iamVjdCkpIHsKICAgICAgICBpZiAoIC EkU2VsZi0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZhdG FsRXJyb3IoIE1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIgKTsKICAgICAgICB9CiAgICB9CgogIC AgJFNlbGYtPntTbXNFdmVudE9iamVjdH0gPSBLZXJuZWw6OlN5c3RlbTo6U21zRXZlbnQtPm5ldyglUG FyYW0pOwoKICAgICRTZWxmLT57UHJpb3JpdHlPYmplY3R9ICAgICA9IEtlcm5lbDo6U3lzdGVtOjpQcm lvcml0eS0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e1N0YXRlT2JqZWN0fSAgICAgICAgPSBLZXJuZW w6OlN5c3RlbTo6U3RhdGUtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntMb2NrT2JqZWN0fSAgICAgIC AgID0gS2VybmVsOjpTeXN0ZW06OkxvY2stPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntTZXJ2aWNlT2 JqZWN0fSAgICAgID0gS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UtPm5ldyglUGFyYW0pOwogICAgJFNlbG YtPntTTEFPYmplY3R9ICAgICAgICAgID0gS2VybmVsOjpTeXN0ZW06OlNMQS0+bmV3KCVQYXJhbSk7Ci AgICAkU2VsZi0+e1R5cGVPYmplY3R9ICAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6VHlwZS0+bmV3KC VQYXJhbSk7CiAgICAkU2VsZi0+e1ZhbGlkT2JqZWN0fSAgICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6Vm FsaWQtPm5ldyglUGFyYW0pOwogICAgJFNlbGYtPntEeW5hbWljRmllbGRPYmplY3R9ID0gS2VybmVsOj pTeXN0ZW06OkR5bmFtaWNGaWVsZC0+bmV3KCVQYXJhbSk7CiAgICAkU2VsZi0+e0JhY2tlbmRPYmplY3 R9ICAgICAgPSBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kLT5uZXcoJVBhcmFtKT sKCiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAkU2VsZi0+e0 R5bmFtaWNGaWVsZH0gPSAkU2VsZi0+e0R5bmFtaWNGaWVsZE9iamVjdH0tPkR5bmFtaWNGaWVsZExpc3 RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAxLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydUaWNrZX QnXSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsIC VQYXJhbSApID0gQF87CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbG YtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICkgewogICAgICAgIG15ICRJRCA9ICRTZWxmLT57UGFyYW 1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0lEJyApIHx8ICcnOwogICAgICAgIG15ICVEYXRhID 0gJFNlbGYtPntTbXNFdmVudE9iamVjdH0tPlNtc0dldCggSUQgPT4gJElEICk7CiAgICAgICAgbXkgJE 91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPS AkU2VsZi0+e0xheW91dE9iamVjdH0tPk5hdmlnYXRpb25CYXIoKTsKICAgICAgICAkU2VsZi0+X0VkaX QoCiAgICAgICAgICAgIEFjdGlvbiA9PiAnQ2hhbmdlJywKICAgICAgICAgICAgJURhdGEsCiAgICAgIC AgICAgIER5bmFtaWNGaWVsZFZhbHVlcyA9PiAkRGF0YXtEYXRhfSwKICAgICAgICApOwogICAgICAgIC RPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYX RlRmlsZSA9PiAnQWRtaW5TbXNFdmVudCcsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcm FtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkZvb3 RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGNoYW5nZS BhY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2VBY3 Rpb24nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCi AgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgIC AgIG15ICVHZXRQYXJhbTsKICAgICAgICBmb3IgbXkgJFBhcmFtZXRlciAocXcoSUQgTmFtZSBTdWJqZW N0IEJvZHkgVHlwZSBDaGFyc2V0IENvbW1lbnQgVmFsaWRJRCBFdmVudHMpKSB7CiAgICAgICAgICAgIC RHZXRQYXJhbXskUGFyYW1ldGVyfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbSggUGFyYW 0gPT4gJFBhcmFtZXRlciApIHx8ICcnOwogICAgICAgIH0KICAgICAgICBmb3IgbXkgJFBhcmFtZXRlci AoCiAgICAgICAgICAgIHF3KFJlY2lwaWVudHMgUmVjaXBpZW50QWdlbnRzIFJlY2lwaWVudEdyb3Vwcy BSZWNpcGllbnRSb2xlcyBSZWNpcGllbnRFbWFpbAogICAgICAgICAgICBFdmVudHMgU3RhdGVJRCBRdW V1ZUlEIFByaW9yaXR5SUQgTG9ja0lEIFR5cGVJRCBTZXJ2aWNlSUQgU0xBSUQKICAgICAgICAgICAgQ3

VzdG9tZXJJRCBDdXN0b21lclVzZXJJRAogICAgICAgICAgICBBcnRpY2xlVHlwZUlEIEFydGljbGVTdW JqZWN0TWF0Y2ggQXJ0aWNsZUJvZHlNYXRjaCBHYXRld2F5CiAgICAgICAgICAgIEFydGljbGVTZW5kZX JUeXBlSUQgU21zQXJ0aWNsZVR5cGVJRCkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgIC AgbXkgQERhdGEgPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0QXJyYXkoIFBhcmFtID0+ICRQYXJhbW V0ZXIgKTsKICAgICAgICAgICAgbmV4dCBpZiAhQERhdGE7CiAgICAgICAgICAgICRHZXRQYXJhbXtEYX RhfS0+eyRQYXJhbWV0ZXJ9ID0gXEBEYXRhOwogICAgICAgIH0KCiAgICAgICAgIyB0byBzdG9yZSBkeW 5hbWljIGZpZWxkcyBwcm9maWxlIGRhdGEKICAgICAgICBteSAlRHluYW1pY0ZpZWxkVmFsdWVzOwoKIC AgICAgICAjIGdldCBEeW5hbWljIGZpZWxkcyBmb3Igc2VhcmNoIGZyb20gd2ViIHJlcXVlc3QKICAgIC AgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcm VlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZy AoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICBuZXh0IERZTkFNSUNGSU VMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgIC AjIGV4dHJhY3QgdGhlIGR5bmFtaWMgZmllbGQgdmFsdWUgZm9ybSB0aGUgd2ViIHJlcXVlc3QKICAgIC AgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJFNlbGYtPntCYWNrZW5kT2JqZWN0fS0+U2Vhcm NoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgPT4gJE R5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICAgICAgPT 4gJFNlbGYtPntQYXJhbU9iamVjdH0sCiAgICAgICAgICAgICAgICBSZXR1cm5Qcm9maWxlU3RydWN0dX JlID0+IDEsCiAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgICAgID0+ICRTZWxmLT57TG F5b3V0T2JqZWN0fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGUgdm FsdWUgc3RydWN0dXJlIGluIEdldFBhcmFtIHRvIHN0b3JlIGl0IGxhdGVyIGluIHRoZSBTbXMgSXRlbQ ogICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7Cg ogICAgICAgICAgICAgICAgIyBzZXQgc2VhcmNoIHN0cnVjdHVyZSBmb3IgZGlzcGxheQogICAgICAgIC AgICAgICAgJUR5bmFtaWNGaWVsZFZhbHVlcyA9ICggJUR5bmFtaWNGaWVsZFZhbHVlcywgJXskRHluYW 1pY0ZpZWxkVmFsdWV9ICk7CgogICAgICAgICAgICAgICAgI21ha2UgYWxsIHZhbHVlcyBhcnJheSByZW ZzCiAgICAgICAgICAgICAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIHNvcnQga2V5cyAleyREeW5hbWljRm llbGRWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYgJER5bmFtaWNGaWVsZFZhbH VlLT57JEZpZWxkTmFtZX0gbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bm FtaWNGaWVsZFZhbHVlLT57JEZpZWxkTmFtZX0gPSBbICREeW5hbWljRmllbGRWYWx1ZS0+eyRGaWVsZE 5hbWV9IF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgIC AgICAgICMgc3RvcmUgc3BlY2lhbCBzdHJ1Y3R1cmUgZm9yIG1hdGNoCiAgICAgICAgICAgICAgICAkR2 V0UGFyYW17RGF0YX0gPSB7ICV7ICRHZXRQYXJhbXtEYXRhfSB9LCAleyREeW5hbWljRmllbGRWYWx1ZX 0gfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUKICAgICAgICBteSAkT2 sgPSAkU2VsZi0+e1Ntc0V2ZW50T2JqZWN0fS0+U21zVXBkYXRlKAogICAgICAgICAgICAlR2V0UGFyYW 0sCiAgICAgICAgICAgIENoYXJzZXQgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57VXNlckNoYXJzZX R9LAogICAgICAgICAgICBUeXBlICAgID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgVXNlcklEIC A9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoJE9rKSB7CiAgICAgICAgIC AgICRTZWxmLT5fT3ZlcnZpZXcoKTsKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRTZWxmLT57TGF5b3 V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYm plY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdX RPYmplY3R9LT5Ob3RpZnkoIEluZm8gPT4gJ1VwZGF0ZWQhJyApOwogICAgICAgICAgICAkT3V0cHV0IC 49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaW xlID0+ICdBZG1pblNtc0V2ZW50JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcm FtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZW N0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CiAgICAgIC AgZWxzZSB7CiAgICAgICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lIEV2ZW50cyBTdWJqZWN0IE JvZHkpKSB7CiAgICAgICAgICAgICAgICAkR2V0UGFyYW17ICROZWVkZWQgLiAiU2VydmVyRXJyb3IiIH 0gPSAiIjsKICAgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyROZWVkZWR9IGVxICcnICkgewogIC AgICAgICAgICAgICAgICAgICRHZXRQYXJhbXsgJE5lZWRlZCAuICJTZXJ2ZXJFcnJvciIgfSA9ICJTZX J2ZXJFcnJvciI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXkgJE 91dHB1dCA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdX QgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICAgICAgICAgICRPdX RwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoIFByaW9yaXR5ID0+ICdFcnJvcicgKT sKICAgICAgICAgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICdDaGFuZ2 UnLAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkVm FsdWVzID0+IFwlRHluYW1pY0ZpZWxkVmFsdWVzLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3 V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcG xhdGVGaWxlID0+ICdBZG1pblNtc0V2ZW50JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9Pi BcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3 V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9Ci AgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS

0tLS0tLS0tLS0tLS0gIwogICAgIyBhZGQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3 Rpb259IGVxICdBZGQnICkgewoKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3 R9LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aW dhdGlvbkJhcigpOwogICAgICAgICRTZWxmLT5fRWRpdCgKICAgICAgICAgICAgQWN0aW9uID0+ICdBZG QnLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dH B1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pblNtc0V2ZW50JywKICAgICAgICAgIC AgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRTZW xmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQ oKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tICMKICAgICMgYWRkIGFjdGlvbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1Ym FjdGlvbn0gZXEgJ0FkZEFjdGlvbicgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIG ZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkNoYWxsZW5nZVRva2 VuQ2hlY2soKTsKCiAgICAgICAgbXkgJUdldFBhcmFtOwogICAgICAgIGZvciBteSAkUGFyYW1ldGVyIC hxdyhOYW1lIFN1YmplY3QgQm9keSBDb21tZW50IFZhbGlkSUQgRXZlbnRzKSkgewogICAgICAgICAgIC AkR2V0UGFyYW17JFBhcmFtZXRlcn0gPSAkU2VsZi0+e1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcm FtID0+ICRQYXJhbWV0ZXIgKSB8fCAnJzsKICAgICAgICB9CiAgICAgICAgZm9yIG15ICRQYXJhbWV0ZX IgKAogICAgICAgICAgICBxdyhSZWNpcGllbnRzIFJlY2lwaWVudEFnZW50cyBSZWNpcGllbnRSb2xlcy BSZWNpcGllbnRHcm91cHMgUmVjaXBpZW50RW1haWwgRXZlbnRzIFN0YXRlSUQgUXVldWVJRAogICAgIC AgICAgICBQcmlvcml0eUlEIExvY2tJRCBUeXBlSUQgU2VydmljZUlEIFNMQUlEIEN1c3RvbWVySUQgQ3 VzdG9tZXJVc2VySUQKICAgICAgICAgICAgQXJ0aWNsZVR5cGVJRCBBcnRpY2xlU3ViamVjdE1hdGNoIE FydGljbGVCb2R5TWF0Y2ggR2F0ZXdheQogICAgICAgICAgICBBcnRpY2xlU2VuZGVyVHlwZUlEIFNtc0 FydGljbGVUeXBlSUQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15IEBEYXRhID 0gJFNlbGYtPntQYXJhbU9iamVjdH0tPkdldEFycmF5KCBQYXJhbSA9PiAkUGFyYW1ldGVyICk7CiAgIC AgICAgICAgIG5leHQgaWYgIUBEYXRhOwogICAgICAgICAgICAkR2V0UGFyYW17RGF0YX0tPnskUGFyYW 1ldGVyfSA9IFxARGF0YTsKICAgICAgICB9CgogICAgICAgICMgdG8gc3RvcmUgZHluYW1pYyBmaWVsZH MgcHJvZmlsZSBkYXRhCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFZhbHVlczsKCiAgICAgICAgIyBnZX QgRHluYW1pYyBmaWVsZHMgZm9yIHNlYXJjaCBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgIyBjeWNsZS B0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgIC BEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi 0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSG FzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBleHRyYWN0IH RoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZvcm0gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgICAgIG15IC REeW5hbWljRmllbGRWYWx1ZSA9ICRTZWxmLT57QmFja2VuZE9iamVjdH0tPlNlYXJjaEZpZWxkVmFsdW VHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbG RDb25maWcsCiAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICAgID0+ICRTZWxmLT57UG FyYW1PYmplY3R9LAogICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogIC AgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH 0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCB0aGUgY29tcGxlIHZhbHVlIHN0cnVjdH VyZSBpbiBHZXRQYXJhbSB0byBzdG9yZSBpdCBsYXRlciBpbiB0aGUgR2VuZXJpYyBBZ2VudCBKb2IKIC AgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkVmFsdWUpICkgewoKIC AgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBzdHJ1Y3R1cmUgZm9yIGRpc3BsYXkKICAgICAgICAgIC AgICAgICVEeW5hbWljRmllbGRWYWx1ZXMgPSAoICVEeW5hbWljRmllbGRWYWx1ZXMsICV7JER5bmFtaW NGaWVsZFZhbHVlfSApOwoKICAgICAgICAgICAgICAgICNtYWtlIGFsbCB2YWx1ZXMgYXJyYXkgcmVmcw ogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBzb3J0IGtleXMgJXskRHluYW1pY0ZpZW xkVmFsdWV9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggcmVmICREeW5hbWljRmllbGRWYWx1ZS 0+eyRGaWVsZE5hbWV9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbW ljRmllbGRWYWx1ZS0+eyRGaWVsZE5hbWV9ID0gWyAkRHluYW1pY0ZpZWxkVmFsdWUtPnskRmllbGROYW 1lfSBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC AgICAjIHN0b3JlIHNwZWNpYWwgc3RydWN0dXJlIGZvciBtYXRjaAogICAgICAgICAgICAgICAgJEdldF BhcmFte0RhdGF9ID0geyAleyAkR2V0UGFyYW17RGF0YX0gfSwgJXskRHluYW1pY0ZpZWxkVmFsdWV9IH 07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkCiAgICAgICAgbXkgJElEID0gJF NlbGYtPntTbXNFdmVudE9iamVjdH0tPlNtc0FkZCgKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgIC AgICAgICBDaGFyc2V0ID0+ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+e1VzZXJDaGFyc2V0fSwKICAgIC AgICAgICAgVHlwZSAgICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbG YtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGlmICgkSUQpIHsKICAgICAgICAgICAgJFNlbG YtPl9PdmVydmlldygpOwogICAgICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3 R9LT5IZWFkZXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk 5hdmlnYXRpb25CYXIoKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0xheW91dE9iamVjdH

0tPk5vdGlmeSggSW5mbyA9PiAnQWRkZWQhJyApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT 57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG 1pblNtc0V2ZW50JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgIC AgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm9vdG VyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7Ci AgICAgICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lIEV2ZW50cyBTdWJqZWN0IEJvZHkpKSB7Ci AgICAgICAgICAgICAgICAkR2V0UGFyYW17ICROZWVkZWQgLiAiU2VydmVyRXJyb3IiIH0gPSAiIjsKIC AgICAgICAgICAgICAgIGlmICggJEdldFBhcmFteyROZWVkZWR9IGVxICcnICkgewogICAgICAgICAgIC AgICAgICAgICRHZXRQYXJhbXsgJE5lZWRlZCAuICJTZXJ2ZXJFcnJvciIgfSA9ICJTZXJ2ZXJFcnJvci I7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbXkgJE91dHB1dCA9IC RTZWxmLT57TGF5b3V0T2JqZWN0fS0+SGVhZGVyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJFNlbG YtPntMYXlvdXRPYmplY3R9LT5OYXZpZ2F0aW9uQmFyKCk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJF NlbGYtPntMYXlvdXRPYmplY3R9LT5Ob3RpZnkoIFByaW9yaXR5ID0+ICdFcnJvcicgKTsKICAgICAgIC AgICAgJFNlbGYtPl9FZGl0KAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICdBZGQnLAogICAgICAgIC AgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkVmFsdWVzID0+IFwlRH luYW1pY0ZpZWxkVmFsdWVzLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZW xmLT57TGF5b3V0T2JqZWN0fS0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+IC dBZG1pblNtc0V2ZW50JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogIC AgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Rm 9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CiAgICB9CgogICAgIy AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS 0gIwogICAgIyBkZWxldGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEZW xldGUnICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCi AgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgIC AgIG15ICVHZXRQYXJhbTsKICAgICAgICBmb3IgbXkgJFBhcmFtZXRlciAocXcoSUQpKSB7CiAgICAgIC AgICAgICRHZXRQYXJhbXskUGFyYW1ldGVyfSA9ICRTZWxmLT57UGFyYW1PYmplY3R9LT5HZXRQYXJhbS ggUGFyYW0gPT4gJFBhcmFtZXRlciApIHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgbXkgJERlbGV0ZS A9ICRTZWxmLT57U21zRXZlbnRPYmplY3R9LT5TbXNEZWxldGUoCiAgICAgICAgICAgIElEICAgICA9Pi AkR2V0UGFyYW17SUR9LAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgIC AgICk7CiAgICAgICAgaWYgKCAhJERlbGV0ZSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT57TG F5b3V0T2JqZWN0fS0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi 0+e0xheW91dE9iamVjdH0tPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKT sKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tLS0tLS0tLQogICAgIyBvdmVydmlldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS 0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGVsc2UgewogICAgICAgICRTZW xmLT5fT3ZlcnZpZXcoKTsKICAgICAgICBteSAkT3V0cHV0ID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT 5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+TmF2aWdhdG lvbkJhcigpOwogICAgICAgICRPdXRwdXQgLj0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCi AgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5TbXNFdmVudCcsCiAgICAgICAgICAgIERhdG EgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkU2VsZi0+e0 xheW91dE9iamVjdH0tPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCn0KCn N1YiBfRWRpdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT57TGF5b3 V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgIERhdGEgPT 4gXCVQYXJhbSwKICAgICk7CgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jayggTmFtZSA9Pi AnQWN0aW9uTGlzdCcgKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0 FjdGlvbk92ZXJ2aWV3JyApOwoKICAgICRQYXJhbXtSZWNpcGllbnRzU3RyZ30gPSAkU2VsZi0+e0xheW 91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBBZ2 VudE93bmVyICAgICAgICAgICAgPT4gJ0FnZW50IChPd25lciknLAogICAgICAgICAgICBBZ2VudFJlc3 BvbnNpYmxlICAgICAgPT4gJ0FnZW50IChSZXNwb25zaWJsZSknLAogICAgICAgICAgICBBZ2VudFdyaX RlUGVybWlzc2lvbnMgPT4gJ0FnZW50IChBbGwgd2l0aCB3cml0ZSBwZXJtaXNzaW9ucyknLAogICAgIC AgICAgICBDdXN0b21lciAgICAgICAgICAgICAgPT4gJ0N1c3RvbWVyJywKICAgICAgICB9LAogICAgIC AgIE5hbWUgICAgICAgPT4gJ1JlY2lwaWVudHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgIC AgICBTaXplICAgICAgID0+IDQsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17RGF0YX0tPntSZW NpcGllbnRzfSwKICAgICk7CgogICAgbXkgJUFsbEFnZW50cyA9ICRTZWxmLT57VXNlck9iamVjdH0tPl VzZXJMaXN0KAogICAgICAgIFR5cGUgID0+ICdMb25nJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKT sKICAgICRQYXJhbXtSZWNpcGllbnRBZ2VudHNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+Qn VpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJUFsbEFnZW50cywKICAgICAgICBOYW 1lICAgICAgID0+ICdSZWNpcGllbnRBZ2VudHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgIC AgICBTaXplICAgICAgID0+IDQsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17RGF0YX0tPntSZW

NpcGllbnRBZ2VudHN9LAogICAgKTsKICAgICRQYXJhbXtSZWNpcGllbnRHcm91cHNTdHJnfSA9ICRTZW xmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7ICRTZWxmLT 57R3JvdXBPYmplY3R9LT5Hcm91cExpc3QoIFZhbGlkID0+IDEgKSB9LAogICAgICAgIFNpemUgPT4gNi wKICAgICAgICBOYW1lID0+ICdSZWNpcGllbnRHcm91cHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMS wKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtEYXRhfS0+e1JlY2lwaWVudEdyb3Vwc30sCiAgIC ApOwogICAgJFBhcmFte1JlY2lwaWVudFJvbGVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk J1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4geyAkU2VsZi0+e0dyb3VwT2JqZWN0fS0+Um9sZU xpc3QoIFZhbGlkID0+IDEgKSB9LAogICAgICAgIFNpemUgPT4gNiwKICAgICAgICBOYW1lID0+ICdSZW NpcGllbnRSb2xlcycsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgPT 4gJFBhcmFte0RhdGF9LT57UmVjaXBpZW50Um9sZXN9LAogICAgKTsKCiAgICAjIFNldCBjbGFzcyBuYW 1lIGZvciBldmVudCBzdHJpbmcuLi4KICAgIG15ICRFdmVudENsYXNzID0gJ1ZhbGlkYXRlX1JlcXVpcm VkJzsKICAgIGlmICggJFBhcmFte0V2ZW50c1NlcnZlckVycm9yfSApIHsKICAgICAgICAkRXZlbnRDbG FzcyAuPSAnICcgLiAkUGFyYW17RXZlbnRzU2VydmVyRXJyb3J9OwogICAgfQoKICAgICMgYnVpbGQgZH luYW1pYyBmaWVsZCBsaXN0CiAgICAjIGdldCB0aGUgZHluYW1pYyBmaWVsZHMgZm9yIHRpY2tldCBvYm plY3QKICAgIG15ICREeW5hbWljRmllbGRzID0gJFNlbGYtPntEeW5hbWljRmllbGRPYmplY3R9LT5EeW 5hbWljRmllbGRMaXN0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID 0+IFsnVGlja2V0J10sCiAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICApOwogICAgbXkgJU R5bmFtaWNGaWVsZExpc3QgPQogICAgICAgIG1hcCB7ICdUaWNrZXREeW5hbWljRmllbGRVcGRhdGVfJy AuICRfID0+ICdUaWNrZXREeW5hbWljRmllbGRVcGRhdGVfJyAuICRfIH0KICAgICAgICBzb3J0IHZhbH VlcyAleyREeW5hbWljRmllbGRzfTsKCiAgICAjIEJ1aWxkIHRoZSBsaXN0Li4uCiAgICAkUGFyYW17RX ZlbnRzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE RhdGEgPT4gewogICAgICAgICAgICBUaWNrZXRTdGF0ZVVwZGF0ZSAgICAgICAgICAgICAgICAgID0+IC dUaWNrZXRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgIFRpY2tldFF1ZXVlVXBkYXRlICAgICAgICAgIC AgICAgICAgPT4gJ1RpY2tldFF1ZXVlVXBkYXRlJywKICAgICAgICAgICAgVGlja2V0Q3JlYXRlICAgIC AgICAgICAgICAgICAgICAgICA9PiAnVGlja2V0Q3JlYXRlJywKICAgICAgICAgICAgVGlja2V0VGl0bG VVcGRhdGUgICAgICAgICAgICAgICAgICA9PiAnVGlja2V0VGl0bGVVcGRhdGUnLAogICAgICAgICAgIC BUaWNrZXRUeXBlVXBkYXRlICAgICAgICAgICAgICAgICAgID0+ICdUaWNrZXRUeXBlVXBkYXRlJywKIC AgICAgICAgICAgVGlja2V0U2VydmljZVVwZGF0ZSAgICAgICAgICAgICAgICA9PiAnVGlja2V0U2Vydm ljZVVwZGF0ZScsCiAgICAgICAgICAgIFRpY2tldFNMQVVwZGF0ZSAgICAgICAgICAgICAgICAgICAgPT 4gJ1RpY2tldFNMQVVwZGF0ZScsCiAgICAgICAgICAgIFRpY2tldFVubG9ja1RpbWVvdXRVcGRhdGUgIC AgICAgICAgPT4gJ1RpY2tldFVubG9ja1RpbWVvdXRVcGRhdGUnLAogICAgICAgICAgICBUaWNrZXRDdX N0b21lclVwZGF0ZSAgICAgICAgICAgICAgID0+ICdUaWNrZXRDdXN0b21lclVwZGF0ZScsCiAgICAgIC AgICAgIFRpY2tldFBlbmRpbmdUaW1lVXBkYXRlICAgICAgICAgICAgPT4gJ1RpY2tldFBlbmRpbmdUaW 1lVXBkYXRlJywKICAgICAgICAgICAgVGlja2V0TG9ja1VwZGF0ZSAgICAgICAgICAgICAgICAgICA9Pi AnVGlja2V0TG9ja1VwZGF0ZScsCiAgICAgICAgICAgIFRpY2tldE93bmVyVXBkYXRlICAgICAgICAgIC AgICAgICAgPT4gJ1RpY2tldE93bmVyVXBkYXRlJywKICAgICAgICAgICAgVGlja2V0UmVzcG9uc2libG VVcGRhdGUgICAgICAgICAgICA9PiAnVGlja2V0UmVzcG9uc2libGVVcGRhdGUnLAogICAgICAgICAgIC BUaWNrZXRQcmlvcml0eVVwZGF0ZSAgICAgICAgICAgICAgID0+ICdUaWNrZXRQcmlvcml0eVVwZGF0ZS csCiAgICAgICAgICAgIFRpY2tldFN1YnNjcmliZSAgICAgICAgICAgICAgICAgICAgPT4gJ1RpY2tldF N1YnNjcmliZScsCiAgICAgICAgICAgIFRpY2tldFVuc3Vic2NyaWJlICAgICAgICAgICAgICAgICAgPT 4gJ1RpY2tldFVuc3Vic2NyaWJlJywKICAgICAgICAgICAgVGlja2V0QWNjb3VudFRpbWUgICAgICAgIC AgICAgICAgICA9PiAnVGlja2V0QWNjb3VudFRpbWUnLAogICAgICAgICAgICBUaWNrZXRNZXJnZSAgIC AgICAgICAgICAgICAgICAgICAgID0+ICdUaWNrZXRNZXJnZScsCiAgICAgICAgICAgIEFydGljbGVDcm VhdGUgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FydGljbGVDcmVhdGUnLAogICAgICAgICAgICBBcn RpY2xlU2VuZCAgICAgICAgICAgICAgICAgICAgICAgID0+ICdBcnRpY2xlU2VuZCcsCiAgICAgICAgIC AgIEFydGljbGVCb3VuY2UgICAgICAgICAgICAgICAgICAgICAgPT4gJ0FydGljbGVCb3VuY2UnLAogIC AgICAgICAgICBFc2NhbGF0aW9uUmVzcG9uc2VUaW1lTm90aWZ5QmVmb3JlID0+ICdFc2NhbGF0aW9uUm VzcG9uc2VUaW1lTm90aWZ5QmVmb3JlJywKICAgICAgICAgICAgRXNjYWxhdGlvblVwZGF0ZVRpbWVOb3 RpZnlCZWZvcmUgICA9PiAnRXNjYWxhdGlvblVwZGF0ZVRpbWVOb3RpZnlCZWZvcmUnLAogICAgICAgIC AgICBFc2NhbGF0aW9uU29sdXRpb25UaW1lTm90aWZ5QmVmb3JlID0+ICdFc2NhbGF0aW9uU29sdXRpb2 5UaW1lTm90aWZ5QmVmb3JlJywKICAgICAgICAgICAgRXNjYWxhdGlvblJlc3BvbnNlVGltZVN0YXJ0IC AgICAgICA9PiAnRXNjYWxhdGlvblJlc3BvbnNlVGltZVN0YXJ0JywKICAgICAgICAgICAgRXNjYWxhdG lvblVwZGF0ZVRpbWVTdGFydCAgICAgICAgICA9PiAnRXNjYWxhdGlvblVwZGF0ZVRpbWVTdGFydCcsCi AgICAgICAgICAgIEVzY2FsYXRpb25Tb2x1dGlvblRpbWVTdGFydCAgICAgICAgPT4gJ0VzY2FsYXRpb2 5Tb2x1dGlvblRpbWVTdGFydCcsCiAgICAgICAgICAgIEVzY2FsYXRpb25SZXNwb25zZVRpbWVTdG9wIC AgICAgICAgPT4gJ0VzY2FsYXRpb25SZXNwb25zZVRpbWVTdG9wJywKICAgICAgICAgICAgRXNjYWxhdG lvblVwZGF0ZVRpbWVTdG9wICAgICAgICAgICA9PiAnRXNjYWxhdGlvblVwZGF0ZVRpbWVTdG9wJywKIC AgICAgICAgICAgRXNjYWxhdGlvblNvbHV0aW9uVGltZVN0b3AgICAgICAgICA9PiAnRXNjYWxhdGlvbl NvbHV0aW9uVGltZVN0b3AnLAoKICAgICAgICAgICAgIyBTcGVjaWFsIGV2ZW50cyBmb3IgZWFjaCBEeW 5hbWljRmllbGQKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZExpc3QsCiAgICAgICAgfSwKICAgICAgIC

BOYW1lICAgICAgID0+ICdFdmVudHMnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaX plICAgICAgID0+IDUsCiAgICAgICAgQ2xhc3MgICAgICA9PiAkRXZlbnRDbGFzcywKICAgICAgICBTZW xlY3RlZElEID0+ICRQYXJhbXtEYXRhfS0+e0V2ZW50c30sCiAgICApOwoKICAgICRQYXJhbXtTdGF0ZX NTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YS A9PiB7CiAgICAgICAgICAgICRTZWxmLT57U3RhdGVPYmplY3R9LT5TdGF0ZUxpc3QoCiAgICAgICAgIC AgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgIEFjdGlvbiA9PiAkU2VsZi0+e0FjdGlvbn 0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgICAgICBOYW1lICAgICAgID0+ICdTdGF0ZUlEJy wKICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgIF NlbGVjdGVkSUQgPT4gJFBhcmFte0RhdGF9LT57U3RhdGVJRH0sCiAgICApOwoKICAgICRQYXJhbXtRdW V1ZXNTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QWdlbnRRdWV1ZUxpc3RPcHRpb24oCiAgIC AgICAgRGF0YSAgICAgICAgICAgICAgID0+IHsgJFNlbGYtPntRdWV1ZU9iamVjdH0tPkdldEFsbFF1ZX VlcygpLCB9LAogICAgICAgIFNpemUgICAgICAgICAgICAgICA9PiA1LAogICAgICAgIE11bHRpcGxlIC AgICAgICAgICA9PiAxLAogICAgICAgIE5hbWUgICAgICAgICAgICAgICA9PiAnUXVldWVJRCcsCiAgIC AgICAgU2VsZWN0ZWRJRFJlZkFycmF5ID0+ICRQYXJhbXtEYXRhfS0+e1F1ZXVlSUR9LAogICAgICAgIE 9uQ2hhbmdlU3VibWl0ICAgICA9PiAwLAogICAgKTsKCiAgICAkUGFyYW17UHJpb3JpdGllc1N0cmd9ID 0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKIC AgICAgICAgICAgJFNlbGYtPntQcmlvcml0eU9iamVjdH0tPlByaW9yaXR5TGlzdCgKICAgICAgICAgIC AgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QWN0aW9ufS wKICAgICAgICAgICAgKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ1ByaW9yaXR5SU QnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTaXplICAgICAgID0+IDUsCiAgICAgIC AgU2VsZWN0ZWRJRCA9PiAkUGFyYW17RGF0YX0tPntQcmlvcml0eUlEfSwKICAgICk7CgogICAgJFBhcm Fte0xvY2tzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgIC AgIERhdGEgPT4gewogICAgICAgICAgICAkU2VsZi0+e0xvY2tPYmplY3R9LT5Mb2NrTGlzdCgKICAgIC AgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgQWN0aW9uID0+ICRTZWxmLT57QW N0aW9ufSwKICAgICAgICAgICAgKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xvY2 tJRCcsCiAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgIFNpemUgICAgICAgPT4gMywKICAgIC AgICBTZWxlY3RlZElEID0+ICRQYXJhbXtEYXRhfS0+e0xvY2tJRH0sCiAgICApOwoKICAgICMgZ2V0IH ZhbGlkIGxpc3QKICAgIG15ICVWYWxpZExpc3QgICAgICAgID0gJFNlbGYtPntWYWxpZE9iamVjdH0tPl ZhbGlkTGlzdCgpOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7Cg ogICAgJFBhcmFte1ZhbGlkT3B0aW9ufSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3 Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgID 0+ICdWYWxpZElEJywKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtWYWxpZElEfSB8fCAkVmFsaW RMaXN0UmV2ZXJzZXt2YWxpZH0sCiAgICApOwogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jay gKICAgICAgICBOYW1lID0+ICdPdmVydmlld1VwZGF0ZScsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLA ogICAgKTsKCiAgICAjIHNob3dzIGhlYWRlcgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnQ2hhbm dlJyApIHsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKCBOYW1lID0+ICdIZWFkZX JFZGl0JyApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG 9jayggTmFtZSA9PiAnSGVhZGVyQWRkJyApOwogICAgfQoKICAgICMgYnVpbGQgdHlwZSBzdHJpbmcKIC AgIGlmICggJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1RpY2tldDo6VHlwZScpICkgewogICAgIC AgIG15ICVUeXBlID0gJFNlbGYtPntUeXBlT2JqZWN0fS0+VHlwZUxpc3QoIFVzZXJJRCA9PiAkU2VsZi 0+e1VzZXJJRH0sICk7CiAgICAgICAgJFBhcmFte1R5cGVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iam VjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICA9PiBcJVR5cGUsCiAgIC AgICAgICAgIE5hbWUgICAgICAgID0+ICdUeXBlSUQnLAogICAgICAgICAgICBTZWxlY3RlZElEICA9Pi AkUGFyYW17RGF0YX0tPntUeXBlSUR9LAogICAgICAgICAgICBTb3J0ICAgICAgICA9PiAnQWxwaGFudW 1lcmljVmFsdWUnLAogICAgICAgICAgICBTaXplICAgICAgICA9PiAzLAogICAgICAgICAgICBNdWx0aX BsZSAgICA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgICk7CiAgICAgIC AgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZX dVcGRhdGVUeXBlJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9Cg ogICAgIyBidWlsZCBzZXJ2aWNlIHN0cmluZwogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ09iamVjdH0tPk dldCgnVGlja2V0OjpTZXJ2aWNlJykgKSB7CgogICAgICAgICMgZ2V0IGxpc3QgdHlwZQogICAgICAgIG 15ICVTZXJ2aWNlID0gJFNlbGYtPntTZXJ2aWNlT2JqZWN0fS0+U2VydmljZUxpc3QoIFVzZXJJRCA9Pi AkU2VsZi0+e1VzZXJJRH0sICk7CiAgICAgICAgJFBhcmFte1NlcnZpY2VzU3RyZ30gPSAkU2VsZi0+e0 xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICA9PiBcJV NlcnZpY2UsCiAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdTZXJ2aWNlSUQnLAogICAgICAgICAgIC BTZWxlY3RlZElEICA9PiAkUGFyYW17RGF0YX0tPntTZXJ2aWNlSUR9LAogICAgICAgICAgICBTaXplIC AgICAgICA9PiA1LAogICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICBUcmFuc2 xhdGlvbiA9PiAwLAogICAgICAgICAgICBNYXggICAgICAgICA9PiAyMDAsCiAgICAgICAgKTsKICAgIC AgICBteSAlU0xBID0gJFNlbGYtPntTTEFPYmplY3R9LT5TTEFMaXN0KCBVc2VySUQgPT4gJFNlbGYtPn tVc2VySUR9LCApOwogICAgICAgICRQYXJhbXtTTEFzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH 0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICA9PiBcJVNMQSwKICAgICAgIC

AgICAgTmFtZSAgICAgICAgPT4gJ1NMQUlEJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhcm Fte0RhdGF9LT57U0xBSUR9LAogICAgICAgICAgICBTb3J0ICAgICAgICA9PiAnQWxwaGFudW1lcmljVm FsdWUnLAogICAgICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgICAgICBNdWx0aXBsZSAgIC A9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgICAgICBNYXggICAgICAgIC A9PiAyMDAsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogIC AgICAgICAgICBOYW1lID0+ICdPdmVydmlld1VwZGF0ZVNlcnZpY2UnLAogICAgICAgICAgICBEYXRhID 0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNyZWF0ZSBkeW5hbWljIGZpZWxkIEhUTU wgZm9yIHNldCB3aXRoIGhpc3RvcmljYWwgZGF0YSBvcHRpb25zCiAgICBteSAkUHJpbnREeW5hbWljRm llbGRzU2VhcmNoSGVhZGVyID0gMTsKCiAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bm FtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW 5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZX h0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7Cg ogICAgICAgICMgc2tpcCBhbGwgZHluYW1pYyBmaWVsZHMgd2hlcmUgT2JqZWN0TWF0Y2ggaXMgbm90IH lldCBpbXBsZW1lbnRlZAogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkU2VsZi0+e0JhY2tlbm RPYmplY3R9LT5Jc01hdGNoYWJsZSgKICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW 5hbWljRmllbGRDb25maWcsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgZmllbGQgaHRtbAogICAgIC AgIG15ICREeW5hbWljRmllbGRIVE1MID0gJFNlbGYtPntCYWNrZW5kT2JqZWN0fS0+U2VhcmNoRmllbG RSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZE NvbmZpZywKICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgICAgICA9PiAkUGFyYW17RHluYW1pY0 ZpZWxkVmFsdWVzfSB8fCB7fSwKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICA9PiAkU2 VsZi0+e0xheW91dE9iamVjdH0sCiAgICAgICAgICAgIENvbmZpcm1hdGlvbkNoZWNrYm94ZXMgPT4gMS wKICAgICAgICAgICAgVXNlTGFiZWxIaW50cyAgICAgICAgICA9PiAwLAogICAgICAgICk7CgogICAgIC AgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkSFRNTC k7CgogICAgICAgIGlmICgkUHJpbnREeW5hbWljRmllbGRzU2VhcmNoSGVhZGVyKSB7CiAgICAgICAgIC AgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcgKTsKIC AgICAgICAgICAgJFByaW50RHluYW1pY0ZpZWxkc1NlYXJjaEhlYWRlciA9IDA7CiAgICAgICAgfQoKIC AgICAgICAjIG91dHB1dCBkeW5hbWljIGZpZWxkCiAgICAgICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT 5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkRWxlbWVudCcsCiAgICAgICAgIC AgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTGFiZWwgPT4gJER5bmFtaWNGaWVsZEhUTUwtPntMYW JlbH0sCiAgICAgICAgICAgICAgICBGaWVsZCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0ZpZWxkfSwKIC AgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICRQYXJhbXtBcnRpY2xlVHlwZXNTdHJnfS A9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSA9PiB7IC RTZWxmLT57VGlja2V0T2JqZWN0fS0+QXJ0aWNsZVR5cGVMaXN0KCBSZXN1bHQgPT4gJ0hBU0gnICksIH 0sCiAgICAgICAgTmFtZSA9PiAnQXJ0aWNsZVR5cGVJRCcsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJF BhcmFte0RhdGF9LT57QXJ0aWNsZVR5cGVJRH0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgIC AgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTWF4IC AgICAgICAgPT4gMjAwLAogICAgKTsKCiAgICAkUGFyYW17QXJ0aWNsZVNlbmRlclR5cGVzU3RyZ30gPS AkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4geyAkU2 VsZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVTZW5kZXJUeXBlTGlzdCggUmVzdWx0ID0+ICdIQVNIJy ApLCB9LAogICAgICAgIE5hbWUgPT4gJ0FydGljbGVTZW5kZXJUeXBlSUQnLAogICAgICAgIFNlbGVjdG VkSUQgID0+ICRQYXJhbXtEYXRhfS0+e0FydGljbGVTZW5kZXJUeXBlSUR9LAogICAgICAgIFNpemUgIC AgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9Pi AxLAogICAgICAgIE1heCAgICAgICAgID0+IDIwMCwKICAgICk7CiAgICBteSAlR3dMaXN0OwogICAgIy BDT01QTEVNRU5UTyAtIExvYWQgbGlzdCBvZiBHYXRld2F5IE1vZHVsZXMKICAgIGlmICggcmVmICRTZW xmLT57Q29uZmlnT2JqZWN0fS0+R2V0KCdTbXNFdmVudDo6R2F0ZXdheScpIGVxICdIQVNIJyApIHsKIC AgICAgICBteSAlR3dzID0gJXsgJFNlbGYtPntDb25maWdPYmplY3R9LT5HZXQoJ1Ntc0V2ZW50OjpHYX Rld2F5JykgfTsKICAgICAgICAKICAgICAgICBmb3IgbXkgJEd3ICggc29ydCBrZXlzICVHd3MgKSB7Ci AgICAgICAgICAgICAgICAkR3dMaXN0eyRHd309JEd3c3skR3d9LT57TmFtZX07CiAgICAgICAgfQogIC AgfQoKICAgICRQYXJhbXtHYXRld2F5U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aWxkU2 VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlR3dMaXN0LAogICAgICAgIE5hbWUgICAgIC AgID0+ICdHYXRld2F5JywKICAgICAgICBTZWxlY3RlZElEICA9PiAkUGFyYW17RGF0YX0tPntHYXRld2 F5fSB8fCAwLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgTWF4ICAgICAgICAgPT4gMj AwLAogICAgKTsKCiAgICAjIERpc3BsYXkgYXJ0aWNsZSB0eXBlcyBmb3IgYXJ0aWNsZSBjcmVhdGlvbi BpZiBzbXMgaXMgc2VudAogICAgIyBvbmx5IHVzZSAnZW1haWwtc21zLSonLXR5cGUgYXJ0aWNsZXMKIC AgIG15ICVTbXNBcnRpY2xlVHlwZXMgPSAkU2VsZi0+e1RpY2tldE9iamVjdH0tPkFydGljbGVUeXBlTG lzdCggUmVzdWx0ID0+ICdIQVNIJyApOwojICAgIGZvciBteSAkTm90aWZBcnRpY2xlVHlwZUlEICggc2 9ydCBrZXlzICVTbXNBcnRpY2xlVHlwZXMgKSB7CiMgICAgICAgIGlmICggJFNtc0FydGljbGVUeXBlc3 skTm90aWZBcnRpY2xlVHlwZUlEfSAhfiAvXmVtYWlsLXNtcy0vICkgewojICAgICAgICAgICAgZGVsZX RlICRTbXNBcnRpY2xlVHlwZXN7JE5vdGlmQXJ0aWNsZVR5cGVJRH07CiMgICAgICAgIH0KIyAgICB9Ci AgICAkUGFyYW17U21zQXJ0aWNsZVR5cGVzU3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJ1aW

xkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlU21zQXJ0aWNsZVR5cGVzLAogICAgIC AgIE5hbWUgICAgICAgID0+ICdTbXNBcnRpY2xlVHlwZUlEJywKICAgICAgICBUcmFuc2xhdGlvbiA9Pi AxLAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYXJhbXtEYXRhfS0+e1Ntc0FydGljbGVUeXBlSUR9LA ogICAgKTsKCiAgICAjIHRha2Ugb3ZlciBkYXRhIGZpZWxkcwogICAgZm9yIG15ICRLZXkgKHF3KFJlY2 lwaWVudEVtYWlsIEN1c3RvbWVySUQgQ3VzdG9tZXJVc2VySUQgQXJ0aWNsZVN1YmplY3RNYXRjaCBBcn RpY2xlQm9keU1hdGNoKSkKICAgIHsKICAgICAgICBuZXh0IGlmICEkUGFyYW17RGF0YX0tPnskS2V5fT sKICAgICAgICBuZXh0IGlmICFkZWZpbmVkICRQYXJhbXtEYXRhfS0+eyRLZXl9LT5bMF07CiAgICAgIC AgJFBhcmFteyRLZXl9ID0gJFBhcmFte0RhdGF9LT57JEtleX0tPlswXTsKICAgIH0KCiAgICByZXR1cm 4gMTsKfQoKc3ViIF9PdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIC RTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogIC AgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgJFNlbGYtPntMYXlvdXRPYmplY3R9LT5CbG 9jayggTmFtZSA9PiAnQWN0aW9uTGlzdCcgKTsKICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QmxvY2 soIE5hbWUgPT4gJ0FjdGlvbkFkZCcgKTsKCiAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKA ogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3UmVzdWx0JywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCi AgICApOwogICAgbXkgJUxpc3QgPSAkU2VsZi0+e1Ntc0V2ZW50T2JqZWN0fS0+U21zTGlzdCgpOwoKIC AgICMgaWYgdGhlcmUgYXJlIGFueSBzbXNzLCB0aGV5IGFyZSBzaG93bgogICAgaWYgKCVMaXN0KSB7Cg ogICAgICAgICMgZ2V0IHZhbGlkIGxpc3QKICAgICAgICBteSAlVmFsaWRMaXN0ID0gJFNlbGYtPntWYW xpZE9iamVjdH0tPlZhbGlkTGlzdCgpOwogICAgICAgIGZvciAoIHNvcnQgeyAkTGlzdHskYX0gY21wIC RMaXN0eyRifSB9IGtleXMgJUxpc3QgKSB7CgogICAgICAgICAgICBteSAlRGF0YSA9ICRTZWxmLT57U2 1zRXZlbnRPYmplY3R9LT5TbXNHZXQoIElEID0+ICRfLCApOwogICAgICAgICAgICAkU2VsZi0+e0xheW 91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdSZXN1bHRSb3 cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmFsaWQgPT4gJF ZhbGlkTGlzdHsgJERhdGF7VmFsaWRJRH0gfSwKICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgIC AgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgb3RoZXJ3aX NlIGEgbm8gZGF0YSBmb3VuZCBtc2cgaXMgZGlzcGxheWVkCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi 0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZy csCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQ oKMTsK</File> </Filelist> <DatabaseInstall> <TableCreate Type="post" Name="sms_event"> <Column AutoIncrement="true" Name="id" PrimaryKey="true" Required="t rue" Type="INTEGER"></Column> <Column Name="name" Required="true" Size="200" Type="VARCHAR"></Colu mn> <Column Name="subject" Required="true" Size="200" Type="VARCHAR"></C olumn> <Column Name="text" Required="true" Size="500" Type="VARCHAR"></Colu mn> <Column Name="content_type" Required="true" Size="250" Type="VARCHAR "></Column> <Column Name="charset" Required="true" Size="100" Type="VARCHAR"></C olumn> <Column Name="valid_id" Required="true" Type="SMALLINT"></Column> <Column Name="comments" Required="false" Size="255" 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> <Unique Name="sms_event_name"> <UniqueColumn Name="name"></UniqueColumn> </Unique> <ForeignKey ForeignTable="users"> <Reference Foreign="id" Local="create_by"> </Reference> <Reference Foreign="id" Local="change_by"> </Reference> </ForeignKey> </TableCreate>

<TableCreate Type="post" Name="sms_event_item"> <Column Name="sms_id" Required="true" Type="INTEGER"></Column> <Column Name="event_key" Required="true" Size="200" Type="VARCHAR">< /Column> <Column Name="event_value" Required="true" Size="200" Type="VARCHAR" ></Column> <Index Name="sms_event_item_sms_id"> <IndexColumn Name="sms_id"> </IndexColumn> </Index> <Index Name="sms_event_item_event_value"> <IndexColumn Name="event_value"> </IndexColumn> </Index> <Index Name="sms_event_item_event_key"> <IndexColumn Name="event_key"> </IndexColumn> </Index> </TableCreate> <Insert Type="post" Table="ticket_history_type"> <Data Key="name" Type="Quote">SendCustomerSms</Data> <Data Key="comments" Type="Quote">Send Customer SMS</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="ticket_history_type"> <Data Key="name" Type="Quote">SendAgentSms</Data> <Data Key="comments" Type="Quote">Send Agent SMS</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> <DatabaseUninstall> <TableDrop Type="post" Name="sms_event"> </TableDrop> <TableDrop Type="post" Name="sms_event_item"> </TableDrop> </DatabaseUninstall> </otrs_package>

Você também pode gostar