diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/ReadMeAsciiDocTool.html" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/ReadMeAsciiDocTool.html" new file mode 100644 index 0000000000000000000000000000000000000000..77db8a6657473f1c22efb5e110ee8ebc6f5768b5 --- /dev/null +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/ReadMeAsciiDocTool.html" @@ -0,0 +1,535 @@ + + + + + + + +ReadMe.AsciiDocTool + + + + + + +
+
+

+
+

ReadMe.AsciiDocTool

+
+
+
+

2021/09/13 AP開発 松尾

+
+
+
+
+

1. 概要

+
+
+

AsciiDotの雛形を作るコマンドラインツールです。
+コマンドラインからgetAdoc.batを利用します。以下例です

+
+
+
    +
  1. +

    getAdoc <ドキュメント名>
    +最小限の雛形を作成する。<ドキュメント名>.adocを作成。config.adocとImagesフォルダを作成します。

    +
  2. +
  3. +

    getAdoc /Icons <ドキュメント名>
    +脚注アイコン(警告、注意など)をマニュアル風に変更します。

    +
    +
    +
    +

    t

    +
    +
    +
    +
  4. +
  5. +

    getAdoc /Icons /SCREEN <ドキュメント名>
    +脚注アイコンと共に、SCREEN GAのタイトルロゴ、Confidentialを頭に追記します。

    +
    +
    +
    +

    t

    +
    +
    +
    +
  6. +
  7. +

    getAdoc /Icons /SCREEN /SepaDoc <ドキュメント名>
    +分割ドキュメント形式の雛形を作成します。(フルセット)

    +
    +
    +
    +

    t

    +
    +
    +
    +
  8. +
+
+
+
+
+

2. ヘルプ

+
+
+

コマンドラインからgetAdoc.bat /?で以下のヘルプを表示

+
+
+
+
getADoc /S|SepaDoc /O|OneDoc /I|Icons /SCREEN /Force *
+* adocの雛形を作成します
+ - /S|SepaDoc                 :分割ドキュメントの雛形
+ - /O|OneDoc                  :埋め込み型1つのadoc雛形
+ - /I|Icons                   :Custom ICONSs配置
+ - /SCREEN                    :SCREEN GAロゴ入り
+ - /Force                     :強制上書き
+ - *                          :adocのファイル名称を指定します
+
+
+
+

END

+
+
+
+
+ + + \ No newline at end of file diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/IncDoc.adoc" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/IncDoc.adoc" index d7787867ec3c45fb70a002c578172cf9bb1a5094..01a68aca03c837f5445998abcc2020ddcc08a03c 100644 --- "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/IncDoc.adoc" +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/IncDoc.adoc" @@ -1,4 +1,5 @@ // サブドキュメント化のマクロ + ifndef::IncDocDir[] :IncDocDirTmp: {IncDocName} endif::[] @@ -14,56 +15,125 @@ ifndef::IncDocLvl[] :IncDocLvl: +2 endif::[] +// タグが定義されていたらその範囲を取り込む +ifdef::IncDocTag[] include::./{IncDocDirTmp}/{IncDocName}.adoc[tag={IncDocTag},leveloffset={IncDocLvl}] -//include::./{IncDocDir}/{IncDocName}.adoc[leveloffset={IncDocLvl}] +endif::[] +// タグが無い場合は、サブドキュメント全体を取り込む +ifndef::IncDocTag[] +include::./{IncDocDirTmp}/{IncDocName}.adoc[leveloffset={IncDocLvl}] +endif::[] // restore :imagesdir: {imagesdir_back} //// -ルートドキュメント側の記述方法 -(サブドキュメントには不要) - -:IncDocName: <ドキュメント名> -// [必須] インクルードする<ドキュメント名>を指定。 -// 実際のファイルは<ドキュメント名>.adoc と拡張子をつけること。 - -:IncDocDir: <ディレクトリ名> -// [省略可] インクルードする<ディレクトリ名>を指定。 -// 省略した場合は<ドキュメント名>が<ディレクトリ名> になる。 - -:IncDocLvl: <レベル> -// [省略可] ドキュメントレベルを+Nで指定する。 -// タイトル行の"="のレベルを下げることができる +2を指定すると、"="が"==="として -// Includeされる。省略値は +2。 - -include::IncDoc.adoc[] -// [必須] ドキュメントをインクルードする。固定記述。 - -例.最小限 ---- root.adoc -------- -:IncDocName: SubDocFirst -include::IncDoc.adoc[] ----------------------- -root.adoc - +-- SubDocFirst\ - + SubDocFirst.adoc - -例.カスタム ---- root.adoc -------- -:IncDocDir: 01_Func -:IncDocLvl: +2 -// ... -:IncDocName: SubDocFirst -include::IncDoc.adoc[] - -:IncDocName: SubDocSecond -include::IncDoc.adoc[] ----------------------- -サブドキュメントを01_Func\SubDocFirst.adocとSubDocSecond.adocを配置 -root.adoc - +-- 01_Func\ - + SubDocFirst.adoc - + SubDocSecod.adoc + +// tag::HelpSeparationDoc[] +.##分離ドキュメントのヘルプです (行削除)## +[%collapsible] +============================================= +======================== +.◆分離ドキュメント構成の雛形です +画像ディレクトリは各ドキュメントの"Images"ディレクトリに固定。 +---- +TemplateSeparateDocRoot.adoc + ├─ Sub_First + │ │ config.adoc + │ │ Sub_First.adoc + │ └─Images + │ + └─ Sub_Second + │ config.adoc + │ Sub_Second.adoc + └─Images +---- + +.◆ルートドキュメント側の記述方法 + サブドキュメントには不要。サブドキュメントのインクルード毎に記述する + +``:IncDocName: <サブドキュメント名>``: :: +[必須] インクルードする<サブドキュメント名>を指定。 +実際のファイルは<サブドキュメント名>.adoc と拡張子をつけること。 + +``include::IncDoc.adoc[]``: :: +[必須] サブドキュメントをインクルードする場所。固定記述。 + +``:IncDocDir: <ディレクトリ名>``: :: +[省略可] インクルードする<ディレクトリ名>を指定。 +省略した場合は<サブドキュメント名>が<ディレクトリ名> になる。 + +``:IncDocLvl: <レベル>``: :: +[省略可] サブドキュメントレベルを+Nで指定する。 +タイトル行の"="のレベルを下げることができる +2を指定すると、"="が"==="としてIncludeされる。省略値は +2。 + +``:IncDocTag: sub``: :: +[省略可] サブドキュメントの取り出し範囲を指定します。サブドキュメント側タグ属性``sub[]``の領域を取り込む。 +省略した場合、サブドキュメント全体を取り込みます。 + + +.◆サブドキュメント側の記述 +サブドキュメントは通常のAsciiDocの記述。 +取り込み範囲を指定したい場合はルートドキュメント側``:IncDocTag: sub``指定に合わせて、以下のタグを指定する。 +記述が無い場合、全体を取り組む。タグ名(sub)を変更すれば、別の範囲も取り込み可能。 +---- + // サブドキュメントの取り込み範囲 + // tag::sub[] + ... 取り込みたい部分 + // end::sub[] +---- + +.◆例 ルートドキュメント側 + +例.最小限: フォルダ名とサブドキュメント名が同一:: ++ +---- + --- root.adoc -------- + = Root title + ... + == First SubDocument + :IncDocName: Sub_First + include::IncDoc.adoc[] + + == Second SubDocument + :IncDocName: Sub_Second + include::IncDoc.adoc[] + ---------------------- + root.adoc + +-- Sub_First\ + + Sub_First.adoc + + confing.adoc + +-- Sub_Second\ + + Sub_Second.adoc + + confing.adoc +---- + +例.カスタム: ディレクトリ名変更:: ++ +---- + --- root.adoc -------- + = Root title + ... + :IncDocDir: 01_Func + :IncDocLvl: +2 + + == First SubDocument + :IncDocName: Sub_First + include::IncDoc.adoc[] + + == Second SubDocument + :IncDocName: Sub_Second + include::IncDoc.adoc[] + ---------------------- + サブドキュメントを01_FuncフォルダにSub_First.adocとSub_Second.adocを配置 + root.adoc + +-- 01_Func\ + + Sub_First.adoc + + Sub_Second.adoc +---- +======================== +============================================= + +// end::HelpSeparationDoc[] //// diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/Confidential.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/Confidential.png" new file mode 100644 index 0000000000000000000000000000000000000000..434bb61901394b5566611511a24cb7decb4927c3 Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/Confidential.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/GA.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/GA.png" new file mode 100644 index 0000000000000000000000000000000000000000..d298234a2cbc5b02366cc98384cdff28d0105e4d Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/GA.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREEN.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREEN.png" new file mode 100644 index 0000000000000000000000000000000000000000..abfae3d31193912bea8d85f9eda623af7e461ebd Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREEN.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREENGA.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREENGA.png" new file mode 100644 index 0000000000000000000000000000000000000000..4c6937e3b10da3a02b9f0499ada4512253dfa52a Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREENGA.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREENGA_BLUE.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREENGA_BLUE.png" new file mode 100644 index 0000000000000000000000000000000000000000..e7b451b170a7f567e2a715e14d1d5fef37f1d579 Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREENGA_BLUE.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREEN_All.drawio" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREEN_All.drawio" new file mode 100644 index 0000000000000000000000000000000000000000..074eaaa27acd7e4d4d78730b32292af0cf39725a --- /dev/null +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/Logos/SCREEN_All.drawio" @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/Images/cicon.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/Images/cicon.png" new file mode 100644 index 0000000000000000000000000000000000000000..e3b0e26667b8b82d3a3fb5e45489e5ff361d4112 Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/Images/cicon.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/Images/screenForm.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/Images/screenForm.png" new file mode 100644 index 0000000000000000000000000000000000000000..cf69646090875e4e0378d4c5b315e2a5d83672e3 Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/Images/screenForm.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/Images/tree.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/Images/tree.png" new file mode 100644 index 0000000000000000000000000000000000000000..baa19e85690e742962dc47ce080da5bfd99897fc Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/Images/tree.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/ReadMeAsciiDocTool.adoc" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/ReadMeAsciiDocTool.adoc" new file mode 100644 index 0000000000000000000000000000000000000000..d80c26d4c63ffe945e6cbe6020bba076e5d9ecd1 --- /dev/null +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/ReadMeAsciiDocTool.adoc" @@ -0,0 +1,125 @@ + +:lang: ja +:docname: ReadMeAsciiDocTool + +:conf: {docname}.adoc +include::{conf}[tag="CONFIG"}] +//:toc: left + +// Custom Icons(J) +//:icons: image +//:iconsdir: icons +//:icontype: png +// + +{ExtendStyle} +// After need empty-one-line + + + += ReadMe.AsciiDocTool +[.text-right] +-- +2021/09/13 AP開発 松尾 +-- + +// tag::sub[] + +== 概要 +AsciiDotの雛形を作るコマンドラインツールです。 +コマンドラインからgetAdoc.batを利用します。以下例です + +. ``getAdoc <ドキュメント名>`` +最小限の雛形を作成する。<ドキュメント名>.adocを作成。config.adocとImagesフォルダを作成します。 + +. ``getAdoc /Icons <ドキュメント名>`` +脚注アイコン(警告、注意など)をマニュアル風に変更します。 ++ +==== +image:cicon.png[t,600] +==== + +. ``getAdoc /Icons /SCREEN <ドキュメント名>`` +脚注アイコンと共に、SCREEN GAのタイトルロゴ、Confidentialを頭に追記します。 ++ +==== +image:screenForm.png[t,600] +==== + +. ``getAdoc /Icons /SCREEN /SepaDoc <ドキュメント名>`` +分割ドキュメント形式の雛形を作成します。(フルセット) ++ +==== +image:tree.png[t,200] +==== + +== ヘルプ + +コマンドラインからgetAdoc.bat /?で以下のヘルプを表示 +---- +getADoc /S|SepaDoc /O|OneDoc /I|Icons /SCREEN /Force * +* adocの雛形を作成します + - /S|SepaDoc :分割ドキュメントの雛形 + - /O|OneDoc :埋め込み型1つのadoc雛形 + - /I|Icons :Custom ICONSs配置 + - /SCREEN :SCREEN GAロゴ入り + - /Force :強制上書き + - * :adocのファイル名称を指定します +---- + +// end::sub[] +END +////////////////////////////////////////////////////////////// +// tag::CONFIG[] ↓↓ここからメイン文書に差し込み +:hardbreaks: +:imagesdir: Images +:doctype: article +:toclevels: 3 +:sectnums: +:sectnumlevels: 4 +:sectlinks: +:icons: font +:data-uri: +:experimental: +ifeval::["{lang}" == "ja"] +:toc-title: 目次 +:example-caption: +:caption: +:table-caption: 表 +:figure-caption: 図 +:preface-title: はじめに/まえがき +:appendix-caption: 付録 +:caution-caption: 注意 +:important-caption: 重要 +:last-update-label: 最終更新 +:listing-caption: リスト +:manname-title: 名前 +:note-caption: 注記 +:warning-caption: 警告 +:tip-caption: ヒント +:untitled-label: 無題 +:version-label: バージョン +endif::[] +ifeval::["{lang}" != "ja"] +:example-caption: +:caption: +endif::[] + +// Macro +:experimental: + +:ExtendStyle: pass:none[ \ + ] + +// obsolate +:NoWrap: pass:[] +:Wrap: pass:[] +:End: pass:[] + +:br: pass:p[ +] + +// end::CONFIG[] ↑↑ここまでメイン文書に差し込み +////////////////////////////////////////////////////////////// diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/ReadMeAsciiDocTool.html" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/ReadMeAsciiDocTool.html" new file mode 100644 index 0000000000000000000000000000000000000000..77db8a6657473f1c22efb5e110ee8ebc6f5768b5 --- /dev/null +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/ReadMe/ReadMeAsciiDocTool.html" @@ -0,0 +1,535 @@ + + + + + + + +ReadMe.AsciiDocTool + + + + + + +
+
+

+
+

ReadMe.AsciiDocTool

+
+
+
+

2021/09/13 AP開発 松尾

+
+
+
+
+

1. 概要

+
+
+

AsciiDotの雛形を作るコマンドラインツールです。
+コマンドラインからgetAdoc.batを利用します。以下例です

+
+
+
    +
  1. +

    getAdoc <ドキュメント名>
    +最小限の雛形を作成する。<ドキュメント名>.adocを作成。config.adocとImagesフォルダを作成します。

    +
  2. +
  3. +

    getAdoc /Icons <ドキュメント名>
    +脚注アイコン(警告、注意など)をマニュアル風に変更します。

    +
    +
    +
    +

    t

    +
    +
    +
    +
  4. +
  5. +

    getAdoc /Icons /SCREEN <ドキュメント名>
    +脚注アイコンと共に、SCREEN GAのタイトルロゴ、Confidentialを頭に追記します。

    +
    +
    +
    +

    t

    +
    +
    +
    +
  6. +
  7. +

    getAdoc /Icons /SCREEN /SepaDoc <ドキュメント名>
    +分割ドキュメント形式の雛形を作成します。(フルセット)

    +
    +
    +
    +

    t

    +
    +
    +
    +
  8. +
+
+
+
+
+

2. ヘルプ

+
+
+

コマンドラインからgetAdoc.bat /?で以下のヘルプを表示

+
+
+
+
getADoc /S|SepaDoc /O|OneDoc /I|Icons /SCREEN /Force *
+* adocの雛形を作成します
+ - /S|SepaDoc                 :分割ドキュメントの雛形
+ - /O|OneDoc                  :埋め込み型1つのadoc雛形
+ - /I|Icons                   :Custom ICONSs配置
+ - /SCREEN                    :SCREEN GAロゴ入り
+ - /Force                     :強制上書き
+ - *                          :adocのファイル名称を指定します
+
+
+
+

END

+
+
+
+
+ + + \ No newline at end of file diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/TemplateSeparateDocRoot.adoc" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/TemplateSeparateDocRoot.adoc" index e8557913e7e0634172eacb665f6796fe1874d005..f104809f686742eda66455d42be3d0dfec62ec3f 100644 --- "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/TemplateSeparateDocRoot.adoc" +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/TemplateSeparateDocRoot.adoc" @@ -2,48 +2,53 @@ :lang: ja include::config.adoc[] :toc!: -:hardbreaks: -= @FILENAME@ = +//@ICON_CUSTOM@ -雛形:分離ドキュメントのルートファイル +{ExtendStyle} +// After need empty-one-line -以下の構成で分離したドキュメント構成の雛形です。 +//@SCREEN_LOGOS@ -* 画像ディレクトリは各ドキュメントの"Images"ディレクトリ固定 +// セクション取り込みレベル +:IncDocLvl: +2 +// 取り込み範囲 +:IncDocTag: sub ----- -TemplateSeparateDocRoot.adoc - ├─ Sec1_FirstSubDoc - │ │ config.adoc - │ │ FirstSub.adoc - │ └─Images - │ - └─ Sec2_SecondSubDoc - │ config.adoc - │ SecondSub.adoc - └─Images ----- += @FILENAME@ = +[.text-right] +-- +@DATE@ +-- -:IncDocLvl: +1 -==== -サブドキュメントのレベルは共通して{IncDocLvl}を設定(IncDocLvl: {IncDocLvl})。 -つまり、サブドキュメント内の"="で記載された部分が"=="で表現される -==== +// ↓↓↓分離ドキュメントのヘルプ。コメントアウト もしくは行削除のこと +include::incDoc.adoc[tag=HelpSeparationDoc] +// ↑↑↑ //======================================================================= -:IncDocDir: Sec1_FirstSubDoc -:IncDocName: FirstSub + +== First SubDocument +// 省略可能 +// :IncDocDir: Sub_First_Dir +// :IncDocTag: sub +// +:IncDocName: Sub_First include::IncDoc.adoc[] //======================================================================= -:IncDocDir: Sec2_SecondSubDoc -:IncDocName: SecondSub +== Second SubDocument +// 省略可能 +// :IncDocDir: Sub_Second_Dir +// :IncDocTag: sub +// +:IncDocName: Sub_Second include::IncDoc.adoc[] == ルートドキュメントの文末 ルートドキュメントの最後です +//@ICON_SAMPLE@ + END diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/config.adoc" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/config.adoc" index 54f39e01f8ae1855e9e6a63dedbd1fecdcc5abed..5857c900e85c1b5a6117ab36df51f65c12c0c980 100644 --- "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/config.adoc" +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/config.adoc" @@ -53,11 +53,26 @@ endif::[] // HTML出力で画像を埋め込む :data-uri: // 各種Macro拡張 +:hardbreaks: :experimental: -// Macro {NoWrap}...hoge hoge...{End} で自動改行しない + +// Style拡張 [.XXXX]##hogehoge##で使用できる。{ExtendStyle}を表題の直前に記述する +// 属性の前に記載してはいけない。toc: leftなどが無効になる +// 拡張: [.nw]## <自動改行無効、複数空白文字OK> ## .nowrapでもOK。Tableの表幅調整に使用 +:ExtendStyle: pass:none[ \ + ] + +// obsolate :NoWrap: pass:[] -:Wrap: pass:[] +:Wrap: pass:[] :End: pass:[] + +// 改行 {br} +:br: pass:p[ +] + //// #### COMENT START ################# ------------------------------------------------------------------ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/CAUTION.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/CAUTION.png" new file mode 100644 index 0000000000000000000000000000000000000000..20acbe1d80a782d55e1ecd0c03e84157661728d3 Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/CAUTION.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/IMPORTANT.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/IMPORTANT.png" new file mode 100644 index 0000000000000000000000000000000000000000..4a9797ec46dd131e3a0ab5ad2408a31373682e9d Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/IMPORTANT.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/NOTE.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/NOTE.png" new file mode 100644 index 0000000000000000000000000000000000000000..63bcdfb00da78cd3652750058bf17bef01c15fea Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/NOTE.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/OPERATION.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/OPERATION.png" new file mode 100644 index 0000000000000000000000000000000000000000..e1ca1075223280b66f9ea45dee629b8ddb4d31fc Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/OPERATION.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/REF.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/REF.png" new file mode 100644 index 0000000000000000000000000000000000000000..1de6d30da43529f2e8d954776827d4013ad82be8 Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/REF.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/TIP.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/TIP.png" new file mode 100644 index 0000000000000000000000000000000000000000..a617f6c8519fc546421134ce88ce714775a9c88a Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/TIP.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/WARNING.png" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/WARNING.png" new file mode 100644 index 0000000000000000000000000000000000000000..5d998aabaaa93060e0c1267a194751c52d570f62 Binary files /dev/null and "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/WARNING.png" differ diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/readmeICONs.html" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/readmeICONs.html" new file mode 100644 index 0000000000000000000000000000000000000000..26e7431961101eb135f0859bb41a42899cf5c34f --- /dev/null +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/icons.PNG/J/icons/readmeICONs.html" @@ -0,0 +1,556 @@ + + + + + + + +脚注ICONのカスタマイズ + + + + + + +
+
+

+
+

脚注ICONのカスタマイズ

+
+

標準で準備されている脚注の置き換え

+
+
+
+
脚注ICON:
+	CAUTION: 注意(CAUTION)
+または
+	[CAUTION]
+	====
+	注意(CAUTION)
+	====
+
+
+
+

各種PNG画像を準備。以下を事前定義することで変更できる。現在、日本語のみ

+
+
+
+
:icons: image
+:iconsdir: ./icons
+:icontype: png
+
+
+
+


+BeforeAfter.dio

+
+
+
+
拡張
+

リファレンスマニュアル等向けに、「参照」や「操作」のアイコン化。NOTE脚注のオプションでPNGファイル名を指定すればよい

+
+ ++++ + + + + + + +
+
+
[NOTE,icon=REF]
+====
+マニュアルの「参照」
+====
+
+[NOTE,icon=OPERATION]
+====
+マニュアルの「操作」
+====
+
+以下の表現でもOK.
+[icon=OPERATION]
+NOTE:  マニュアルの「操作」
+
+インラインの表現は以下
+行内に icon:NOTE[icon=REF] を挿入する
+
+
+
+
+ + + + + +
+注記 + +
+

マニュアルの「参照」

+
+
+
+
+ + + + + +
+注記 + +
+

マニュアルの「操作」

+
+
+
+
+

行内に NOTE を挿入する

+
+
+
+
+

END

+
+
+ + + \ No newline at end of file diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/template.adoc" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/template.adoc" index 7baa7dc5116437a698ccd7a695a87afdca927bf8..f2981b30dd0e4745559496365ca623e68867e6ae 100644 --- "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/template.adoc" +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/template.adoc" @@ -7,18 +7,32 @@ include::config.adoc[] //:toc: left //:imagesdir: Images -:hardbreaks: +//@ICON_CUSTOM@ -= @FILENAME@ = +{ExtendStyle} +// After need empty-one-line -== 第1章 +//@SCREEN_LOGOS@ + += @FILENAME@ +[.text-right] +-- +@DATE@ +-- +// tag::sub[] + +== Summary 最初の文書です。 * [x] チェックボックス [*] or [ ] -== 第2章 +//@ICON_SAMPLE@ + +== Detail + ほげ 以上 +// end::sub[] diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/template_One.adoc" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/template_One.adoc" new file mode 100644 index 0000000000000000000000000000000000000000..8c9d4df858bff1a0beb783e49064f6f1847697d6 --- /dev/null +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/adocTPL/template_One.adoc" @@ -0,0 +1,86 @@ + +:lang: ja +:docname: @FILENAME@ + +:conf: {docname}.adoc +include::{conf}[tag="CONFIG"}] +//:toc: left + +//@ICON_CUSTOM@ + +{ExtendStyle} +// After need empty-one-line + +//@SCREEN_LOGOS@ + += @FILENAME@ +[.text-right] +-- +@DATE@ +-- + +// tag::sub[] + +== Summary +最初の文書です。 + +//@ICON_SAMPLE@ + +== Detail + +// end::sub[] +// END +////////////////////////////////////////////////////////////// +// tag::CONFIG[] ↓↓ここからメイン文書に差し込み +:hardbreaks: +:imagesdir: Images +:doctype: article +:toclevels: 3 +:sectnums: +:sectnumlevels: 4 +:sectlinks: +:icons: font +:data-uri: +:experimental: +ifeval::["{lang}" == "ja"] +:toc-title: 目次 +:example-caption: +:caption: +:table-caption: 表 +:figure-caption: 図 +:preface-title: はじめに/まえがき +:appendix-caption: 付録 +:caution-caption: 注意 +:important-caption: 重要 +:last-update-label: 最終更新 +:listing-caption: リスト +:manname-title: 名前 +:note-caption: 注記 +:warning-caption: 警告 +:tip-caption: ヒント +:untitled-label: 無題 +:version-label: バージョン +endif::[] +ifeval::["{lang}" != "ja"] +:example-caption: +:caption: +endif::[] + +// Macro +:experimental: + +:ExtendStyle: pass:none[ \ + ] + +// obsolate +:NoWrap: pass:[] +:Wrap: pass:[] +:End: pass:[] + +:br: pass:p[ +] + +// end::CONFIG[] ↑↑ここまでメイン文書に差し込み +////////////////////////////////////////////////////////////// diff --git "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/getADoc.bat" "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/getADoc.bat" index 424023da6b6ada2513fb2ff882b711c59c35119a..5976af359e7554e156eadfce5d15a25dda0a22c2 100644 --- "a/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/getADoc.bat" +++ "b/_Publish/3_\351\233\233\345\275\242\343\203\206\343\203\263\343\203\227\343\203\254\343\203\274\343\203\210/Adoc\343\203\204\343\203\274\343\203\253/getADoc.bat" @@ -33,8 +33,14 @@ include("comfuncs.js"); // [get command-arguments] R}h̎擾 var pm = uParam() // CӁGIvVL[p[^Qw肷(Ȃ΍sRgAEgj - .set("inFile").opt("/I").next("*") .init("") .desc("input file") + // .set("inFile").opt("/I").next("*") .init("") .desc("input file") .set("bSepaDoc") .opt("/S|SepaDoc") .init(false).desc("hLg̐`") + .set("bOneDoc") .opt("/O|OneDoc") .init(false).desc("ߍ݌^1‚adoc`") + .set("bICONs") .opt("/I|Icons") .init(false).desc("Custom ICONSszu") + .set("bSCREEN") .opt("/SCREEN") .init(false).desc("SCREEN GAS") + // + .set("bForce") .opt("/Force") .init(false).desc("㏑") + // ŒFunnamedƑŜ̐Lq .set("*") .desc("adoc̃t@Ĉw肵܂") .set("usage").desc("adoc̐`쐬܂") @@ -42,15 +48,14 @@ var pm = uParam() // [Main process] Lq -// sample(pm);//Tv֐R[hi폜j -echo("AsciiDoc̐`쐬"); - var InstRegURL = "HKCU\\Software\\Dainippon Screen Mfg.Co.,Ltd.\\ToolJsFuncScript\\1.0"; var InstPath = readParam.reg(InstRegURL).get("InstallPath"); if ( isNone(InstPath) ){ - exit(-1,"CXg[悪‚܂:",InstRegURL); + echo(-1,"x::CXg[悪‚܂:",InstRegURL); + InstPath = getEnv().exeDir; } +///////////////////////////////////////////////////////////// var adocTPL = uHereDoc.hereDoc(function(){/* :lang: ja @@ -77,6 +82,23 @@ include::config.adoc[] */}/*,{"@FILENAME@":"rep1"}*/); + +var SCREEN_Logos = uHereDoc.hereDoc(function(){/* +// SCREEN / CONFIDENTIAL +:SCREENGA: pass:q[image:SCREENGA.png[]] +:CONF: pass:q[image:Confidential.png[]] +:DocNo: Internal +:HeadLine: pass:n[{SCREENGA} [.right]##{DocNo} {CONF}##] + +{HeadLine} + +--- + +*/}); + + +///////////////////////////////////////////////////////////// + var conf = { tplDir:makePath(InstPath,"AdocTPL"), ymlDefault:"default-theme.yml", @@ -84,37 +106,67 @@ var conf = { ymlMyStyle:"mystyle-thema.yml", cssDefalt:"mystyle-thema.yml", adocTemplate:"template.adoc", + adocTemplateOne:"template_One.adoc", config:"config.adoc", adocTemplateSepa:"TemplateSeparateDocRoot.adoc", - adocSepaIncDoc:"IncDoc.adoc" + adocSepaIncDoc:"IncDoc.adoc", + logosDir:"Logos" }; var adocPath = "t.adoc".FP(); var configPath= makePath(conf.tplDir,conf.config); +conf.adocTemplate = pm.bOneDoc ? conf.adocTemplateOne: conf.adocTemplate; + var configPathTemplate = makePath(conf.tplDir,conf.adocTemplate); var configPathTemplateSepa = makePath(conf.tplDir,conf.adocTemplateSepa); var configPathIncDoc = makePath(conf.tplDir,conf.adocSepaIncDoc); - if ( pm.length > 0 ){ + if ( (/^[\/\-].*$/).test((pm[0]) ) ) { + // 擪/ or - ̕svȃIvV + exit(-1,"sȃIvV:",pm[0]); + } adocPath = pm[0].FP(); if ( isNone(adocPath.EX()) ){ adocPath = adocPath.EX("adoc") } -} +} +// 쐬̃tH_ +var tgtDir = adocPath.PR(); + // config̃Rs[ var tgtconfigPath = makePath(adocPath.PR(),configPath.FN()); +if ( pm.bOneDoc ) { + // nocopy; +}else{ + if ((!pm.bForce)&&(!copySure(tgtconfigPath))) + exit(-1); + copyFile(configPath,tgtconfigPath); +} -if (!copySure(tgtconfigPath)) -exit(-1); -copyFile(configPath,tgtconfigPath); - -if (!copySure(adocPath)) -exit(-1); +if ((!pm.bForce)&&(!copySure(adocPath))) + exit(-1); // ImagestH_̍쐬 -doCmd({echo:false},"md","Images"); +doCmd({echo:false},"md",tgtDir.down("Images")); +(tgtDir.down("Images").down("Template.dio.png")).writeAll(""); + +// SCREEN S +if ( pm.bSCREEN ) { + var p = conf.tplDir.down(conf.logosDir); + var t = tgtDir.down("Images"); + copyFile(p.down("SCREENGA.png"), t.down("SCREENGA.png")); + copyFile(p.down("Confidential.png"),t.down("Confidential.png")); +} + +if ( pm.bICONs ){ +// JX^ACRRs[ + var tgtIconDir = tgtDir.down("icons"); + var srcIconDir = conf.tplDir.down("icons.PNG").down("J").down("icons"); + doCmd({echo:false},"md", tgtIconDir); + doCmd({echo:false},"copy",srcIconDir.down("*.*"),tgtIconDir); +} // Create adoc. if ( !pm.bSepaDoc ) { @@ -126,26 +178,70 @@ if ( !pm.bSepaDoc ) { echo("[ghLg"); if ( configPathTemplateSepa.isExistFile() ) { adocTPL = configPathTemplateSepa.readAllUTF8(); - // echo("rep adocTPL_sep=",adocTPL); } // IncDoc.adoc̃Rs[ tgtIncDoc = makePath(adocPath.PR(),configPathIncDoc.FN()); - // echo("configPathIncDoc=",configPathIncDoc); - // echo("tgtIncDoc=",tgtIncDoc); copyFile(configPathIncDoc,tgtIncDoc); - // KvȂTuhLgfBNg + // KvȂTuhLgfBNg قǁ +} + +// e }Nu +adocTPL = adocTPL.replaceAll("@FILENAME@",adocPath.BN()); // ^Cg̃t@Cu +adocTPL = adocTPL.replaceAll("@DATE@",getFmtDate("YYYY/MM/DD") ); // ݂̓t + +// @ICON_CUSTOM@ +var iconCustom= +"// Custom Icons(J)\n\ +@:icons: image\n\ +@:iconsdir: icons\n\ +@:icontype: png\n\ +//"; + +var iconSample="CAUTION: CAUTION\n\ +\n\ +WARNING: WARNING\n\ +\n\ +TIP: TIPS\n\ +\n\ +IMPORTANT: IMPORTANT"; + +if ( pm.bICONs ){ + adocTPL = adocTPL.replaceAll("//@ICON_CUSTOM@",iconCustom.replaceAll("@","")); // ICON̋Lq + adocTPL = adocTPL.replaceAll("//@ICON_SAMPLE@",iconSample); +} else { + adocTPL = adocTPL.replaceAll("//@ICON_CUSTOM@",iconCustom.replaceAll("@","//")); // RgsŎc + adocTPL = adocTPL.replaceAll("//@ICON_SAMPLE@",""); } - -// var configPathTemplate = makePath(conf.tplDir,conf.adocTemplate); -// var configPathTemplateSepa = makePath(conf.tplDir,conf.adocTemplateSepa); -// var configPathIncDoc = makePath(conf.tplDir,conf.adocSepaIncDoc); +// @SCREEN_LOGOS@ +if ( pm.bSCREEN ){ + adocTPL = adocTPL.replaceAll("//@SCREEN_LOGOS@",SCREEN_Logos ); // SCREEN Logos̒u +} else { + adocTPL = adocTPL.replaceAll("//@SCREEN_LOGOS@","" ); +} -adocTPL = adocTPL.replace("@FILENAME@",adocPath.BN()); // ^Cg̃t@Cu +// ev[go adocPath.writeAllUTF8(adocTPL); +// hLg̏ꍇATuhLg̐`쐬 +if ( pm.bSepaDoc ) { + echo("TuhLg"); + each( ["Sub_First","Sub_Second"], function(i,subName) { + var subDir = tgtDir.down(subName); + doCmd({echo:false},"md",subDir); + // ggetADoc.batĂяo + var cmdVec = [ {echo:false}, getEnv().exePath, "/Force" ]; + // IvVICON,SCREEN + if (pm.bICONs) cmdVec.push("/Icons"); + if (pm.bSCREEN) cmdVec.push("/SCREEN"); + // TuhLg + cmdVec.push( subDir.down(subName) ); + doCmd(cmdVec); // getAdoc.baťĂяo + }); +} exit(0); // [End] I ُȈꍇ́A0ȊOԂ悤ɂ + function copySure(f) { if ( f.isExistFile() ) { echo("file:",f); @@ -157,6 +253,7 @@ function copySure(f) { } return true; } + // ȉ͐΂ɍ폜Ă͂Ȃ // DO-NOT-EDIT START@69cf47e2-4a1f-459c-9803-c97a999a70c2 @@ -223,8 +320,1977 @@ function include() { }; // EMBED-START@52da872d-b441-4d13-b921-65dbfde131b0 function embeddedScript(){ - // EMBOFF@e242e3fe-9328-4ff8-a24f-688beb2d0085 - return ""; + // EMBON@e242e3fe-9328-4ff8-a24f-688beb2d0085 + return ( [ + "DQp2YXIgVHlwZUVycm9yPUVycm9yLFN5bnRheEVycm9yPUVycm9yOw0KCQoNCnZhciAkZ2xv", + "YmFsX2V4cG9ydHMgPSB7fTsKdmFyICRnbG9iYWxfZXhwb3J0c19tYWtlID0gZnVuY3Rpb24o", + "KSB7Cgl2YXIgZXY9IiI7DQoJCglmb3IoIHZhciBrIGluICRnbG9iYWxfZXhwb3J0cyApIHsN", + "CgkJZXYgKz0gayArICI9JGdsb2JhbF9leHBvcnRzW1wiIitrKyJcIl1cbiI7DQoJfQ0KCUZ1", + "bmN0aW9uKCIkZ2xvYmFsX2V4cG9ydHMiLGV2KSgkZ2xvYmFsX2V4cG9ydHMpOw0KCQoNCglk", + "ZWxldGUgJGdsb2JhbF9leHBvcnRzOw0KfTsNCg0KKGZ1bmN0aW9uKCl7IAoJdmFyICRlID0g", + "ZnVuY3Rpb24oeCkgeyBXU2NyaXB0LmVjaG8oeCk7IH07DQoNCgkKCXZhciAkZ2xvYmFsID0g", + "JGdsb2JhbF9leHBvcnRzOw0KDQoJJGdsb2JhbC4kcSA9IGZ1bmN0aW9uICRxKHN0cikgeyAN", + "CgkJCgkJcmV0dXJuIHN0ci5yZXBsYWNlKC9cJHsoW157fV0rKX0vZywgZnVuY3Rpb24gKCQw", + "LCAkMSkgew0KCQkJcmV0dXJuICRnbG9iYWwuZXZhbCgkMSk7DQoJCX0pOw0KCX0NCg0KCgoN", + "Cg0KCg0KJGdsb2JhbC5mc28gPSBXU2NyaXB0LkNyZWF0ZU9iamVjdCgiU2NyaXB0aW5nLkZp", + "bGVTeXN0ZW1PYmplY3QiKTsNCiRnbG9iYWwuc2ggPSBXU2NyaXB0LkNyZWF0ZU9iamVjdCgi", + "V1NjcmlwdC5TaGVsbCIpOw0KDQokZ2xvYmFsLndzID0gV1NjcmlwdDsNCiRnbG9iYWwuaW9t", + "b2RlID0geyJGb3JSZWFkaW5nIjoxLCJGb3JXcml0aW5nIjoyLCJGb3JBcHBlbmRpbmciOjgg", + "fTsNCiRnbG9iYWwuaW9lbmNvZGluZyA9IHsiVHJpc3RhdGVVc2VEZWZhdWx0IjotMiwiVHJp", + "c3RhdGVUcnVlIjotMSwiVHJpc3RhdGVGYWxzZSI6MCwiRGVmYXVsdCI6LTIsIlVuaWNvZGUi", + "Oi0xLCJBc2NpaSI6MH07DQoNCg0KCkVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0", + "aW9uKCl7DQoJdmFyIHMgPSAiIjsNCglzID0gKHRoaXMubnVtYmVyICYgMHhGRkZGKSArICI6", + "IiArIHRoaXMuZGVzY3JpcHRpb24NCgkJOwoJCgkNCglyZXR1cm4gczsNCn07DQoNCgokZ2xv", + "YmFsLnNldExvZ19pbnN0YW5jZSA9IG51bGw7DQokZ2xvYmFsLnNldExvZyA9IGZ1bmN0aW9u", + "KGJPbixwYXRoLGJDcmVhdGUpIHsNCg0KCQ0KCWlmICggYXJndW1lbnRzLmxlbmd0aCA9PSAw", + "ICl7DQoJCWlmICggJGdsb2JhbC5zZXRMb2dfaW5zdGFuY2UgKSB7DQoJCQlyZXR1cm4gJGds", + "b2JhbC5zZXRMb2dfaW5zdGFuY2U7DQoJCX0gZWxzZSB7DQoJCQlyZXR1cm4gdW5kZWZpbmVk", + "Ow0KCQl9DQoJfQ0KCXZhciBvYmogPSB7fTsNCgl2YXIgb3B0ID0ge2xvZzpmYWxzZSwgcGF0", + "aDoiIiwgYkNyZWF0ZTpmYWxzZX07DQoJb2JqLm9wdCA9IG9wdDsNCglpZiAoICRnbG9iYWwu", + "c2V0TG9nX2luc3RhbmNlICkgewoJCW9iaiA9ICRnbG9iYWwuc2V0TG9nX2luc3RhbmNlOw0K", + "CQlvcHQgPSBvYmoub3B0Ow0KCX0NCgkKCQoJaWYgKCAoYXJndW1lbnRzLmxlbmd0aCA+IDAp", + "ICYmICh0eXBlb2YoYXJndW1lbnRzWzBdKSA9PSAnb2JqZWN0JykgKSB7DQoJCXZhciBvID0g", + "YXJndW1lbnRzWzBdOw0KCQlpZiAoImxvZyIgaW4gbyApCSBvcHQubG9nID0gby5sb2c7IA0K", + "CQlpZiAoInBhdGgiIGluIG8gKSAJIG9wdC5wYXRoID0gby5wYXRoOyANCgkJaWYgKCJiQ3Jl", + "YXRlIiBpbiBvICkgb3B0LmJDcmVhdGUgPSBvLmJDcmVhdGU7DQoJfSBlbHNlIHsNCgkJaWYg", + "KCBiT24gIT0gdW5kZWZpbmVkICkgb3B0LmxvZyA9IGJPbjsNCgkJaWYgKCBwYXRoICE9IHVu", + "ZGVmaW5lZCApIG9wdC5wYXRoID0gcGF0aDsNCgkJaWYgKCBiQ3JlYXRlICE9IHVuZGVmaW5l", + "ZCApIG9wdC5iQ3JlYXRlID0gYkNyZWF0ZTsNCgl9DQoJb2JqLnN0cm0gPSBudWxsOw0KCWlm", + "ICggb3B0LmxvZyApIHsNCgkJb3B0LnBhdGggPSBnZXRMb2dOYW1lKG9wdC5wYXRoKTsNCgkJ", + "aWYgKCAvW1xcXC9dLy50ZXN0KG9wdC5wYXRoKSApew0KCQkJOw0KCQl9IGVsc2Ugew0KCQkJ", + "CgkJCW9wdC5wYXRoID0gbWFrZVBhdGgoZ2V0RW52KCkuZXhlRGlyLG9wdC5wYXRoKTsNCgkJ", + "fQ0KCX0NCglmdW5jdGlvbiBnZXRMb2dOYW1lKHBhdGgpew0KCQl2YXIgb3Q9IiI7DQoJCWlm", + "ICggaXNOb25lKHBhdGgpICkgewoJCQlvdCA9IHdzLlNjcmlwdEZ1bGxOYW1lOw0KCQkJb3Qg", + "PSBvdC5FWCgibG9nIik7DQoJCX0gZWxzZSB7DQoJCQkKCQkJb3QgPSBwYXRoLnJlcGxhY2Uo", + "IiVUIixnZXRGbXREYXRlKCdTJykpOw0KCQkJb3QgPSBvdC5yZXBsYWNlKCIlQk4iLGdldEVu", + "digpLmV4ZVBhdGguQk4oKSk7DQoJCQlvdCA9IG90LnJlcGxhY2UoIiVGTiIsZ2V0RW52KCku", + "ZXhlUGF0aC5GTigpKTsNCgkJfQ0KCQlyZXR1cm4gb3Q7DQoJfQ0KCWlmICggJGdsb2JhbC5z", + "ZXRMb2dfaW5zdGFuY2UgKSB7DQoJCXJldHVybiAkZ2xvYmFsLnNldExvZ19pbnN0YW5jZTsN", + "Cgl9DQoJaWYgKCBvcHQubG9nICYmIG9wdC5iQ3JlYXRlICkgew0KCQlpZiAoIG9wdC5wYXRo", + "LmlzRXhpc3RGaWxlKCkgKXsNCgkJCWRlbGV0ZUZpbGUob3B0LnBhdGgpOw0KCQl9DQoJfQ0K", + "CW9iai5vcGVuID0gZnVuY3Rpb24oKXsNCgkJaWYgKCAhb2JqLm9wdC5sb2cgKSB7IG9iai5z", + "dHJtID0gbnVsbDsgcmV0dXJuIG51bGx9Ow0KCQl2YXIgY250ID0gMzsKCQl3aGlsZShjbnQt", + "LSl7DQoJCQl0cnkgew0KCQkJCW9iai5zdHJtID0gZnNvLk9wZW5UZXh0RmlsZShvYmoub3B0", + "LnBhdGgsaW9tb2RlLkZvckFwcGVuZGluZyx0cnVlKTsNCgkJCQlicmVhazsNCgkJCX0gY2F0", + "Y2goZSl7DQoJCQkJaWYgKCBjbnQgPT0gMCApIHsNCgkJCQkJd3MuRWNobygiISFsb2cgb3Bl", + "biBlcnIgPT4gcmV0cnkhISIrb2JqLm9wdC5wYXRoKTsgDQoJCQkJCQoJCQkJfQ0KCQkJCXdz", + "LlNsZWVwKDEwMDApOw0KCQkJCWNvbnRpbnVlOw0KCQkJfQ0KCQl9DQoJCXJldHVybiBvYmou", + "c3RybTsNCgl9DQoJb2JqLmNsb3NlICA9IGZ1bmN0aW9uKCkgew0KCQlpZiAoICFvYmouc3Ry", + "bSApIHJldHVybjsNCgkJb2JqLnN0cm0uQ2xvc2UoKTsNCgl9DQoJb2JqLldyaXRlID0gZnVu", + "Y3Rpb24ocykgew0KCQlpZiAoIG9iai5vcGVuKCk9PW51bGwgKSByZXR1cm47DQoJCW9iai5z", + "dHJtLldyaXRlKHMpOw0KCQlvYmouY2xvc2UoKTsNCgl9DQoJb2JqLldyaXRlTGluZSA9IGZ1", + "bmN0aW9uKHMpew0KCQlpZiAoIG9iai5vcGVuKCk9PW51bGwgKSByZXR1cm47DQoJCW9iai5z", + "dHJtLldyaXRlTGluZShzKTsNCgkJb2JqLmNsb3NlKCk7DQoJfQ0KCSRnbG9iYWwuc2V0TG9n", + "X2luc3RhbmNlID0gb2JqOw0KCQ0KCQoJdmFyIGEgPSBXU2NyaXB0LkFyZ3VtZW50cyxzPSIi", + "Ow0KCWZvciggdmFyIGk9MDtpPGEubGVuZ3RoO2krKykgcys9KCIgIiArIGEoaSkpOw0KCW9i", + "ai5Xcml0ZUxpbmUoIlsiICsgZ2V0Rm10RGF0ZSgnLycpICsgIl06U1RBUlQgTE9HOiIgKyBX", + "U2NyaXB0LlNjcmlwdE5hbWUgKyBzKTsNCgkKCXJldHVybiBvYmo7DQp9DQoNCgokZ2xvYmFs", + "LmNsb3NlTG9nRmlsZSA9IGZ1bmN0aW9uKCkgew0KDQoJaWYgKCAkZ2xvYmFsLnNldExvZygp", + "ICkgew0KCQlyZXR1cm47DQoJfQ0KCWlmICggc2V0TG9nRmlsZS5wcm90b3R5cGUuc3RybSAh", + "PSBudWxsICkgew0KCQlzZXRMb2dGaWxlLnByb3RvdHlwZS5zdHJtLkNsb3NlKCk7DQoJCXNl", + "dExvZ0ZpbGUucHJvdG90eXBlLnN0cm09bnVsbDsNCgl9DQp9DQoNCgoKJGdsb2JhbC5zZXRM", + "b2dGaWxlID0gZnVuY3Rpb24gKHBhdGgsbW9kZSkgew0KDQoKDQoNCglpZiAoIHNldExvZ0Zp", + "bGUucHJvdG90eXBlLnN0cm0gIT0gbnVsbCApIHsNCgkJcmV0dXJuIEZhbHNlOwoJfQ0KCWlm", + "ICggbW9kZSA9PSB1bmRlZmluZWQgKSB7DQoJCW1vZGUgPSBpb21vZGUuRm9yV3JpdGluZzsN", + "Cgl9DQoJCgl2YXIgbG9nZiA9IGZzby5PcGVuVGV4dEZpbGUocGF0aCxtb2RlLHRydWUpOw0K", + "CXNldExvZ0ZpbGUucHJvdG90eXBlLnN0cm0gPSBsb2dmOwkNCn0NCiRnbG9iYWwuc2V0TG9n", + "RmlsZS5wcm90b3R5cGUuc3RybSA9IG51bGw7Cg0KCg0KDQoKDQokZ2xvYmFsLmlzTm9uZSA9", + "IGZ1bmN0aW9uKHYpIHsNCglpZiAoIHYgPT09IHVuZGVmaW5lZCApIAlyZXR1cm4gdHJ1ZTsN", + "CglpZiAoIHYgPT09IG51bGwgKSAJCXJldHVybiB0cnVlOw0KCWlmICggdiA9PT0gIiIgKSAJ", + "CXJldHVybiB0cnVlOw0KCWlmICggdiA9PT0gZmFsc2UgKSAJCXJldHVybiB0cnVlOw0KCWlm", + "ICggKHR5cGVPZih2KSA9PT0gIm51bWJlciIpICYmIGlzTmFOKHYpICkgcmV0dXJuIHRydWU7", + "DQoJcmV0dXJuIGZhbHNlOw0KfQ0KJGdsb2JhbC5pc09rID0gZnVuY3Rpb24odikge3JldHVy", + "bighaXNOb25lKHYpKTt9DQokZ2xvYmFsLmlzT0sgPSAkZ2xvYmFsLmlzT2s7DQokZ2xvYmFs", + "LmlzRW1wdHkgPSBmdW5jdGlvbih2KXsNCglpZiAoICFpc09rKHYpICkgcmV0dXJuIHRydWU7", + "DQoJaWYgKCB0eXBlT2YodikgPT0gImFycmF5IiApIHsNCgkJcmV0dXJuICh2Lmxlbmd0aD09", + "MCkgPyB0cnVlOmZhbHNlOw0KCX0NCglpZiAoIHR5cGVPZih2KSA9PSAib2JqZWN0IiApIHsN", + "CgkJcmV0dXJuICh2PT17fSk/dHJ1ZTpmYWxzZTsNCgl9DQoJcmV0dXJuIGZhbHNlOwp9DQoN", + "CgokZ2xvYmFsLnJlY3VyT2JqU3RyID0gZnVuY3Rpb24oIG9iaiApIHsNCgkKCXZhciByZXQg", + "PSAiIiwgYkZpcnN0ID0gdHJ1ZTsNCglzd2l0Y2goZ2V0T2JqZWN0VHlwZShvYmopKXsNCgkg", + "IGNhc2UgIltvYmplY3QgRnVuY3Rpb25dIjoNCgkJcmV0ID0gIntmdW5jdGlvbn0iOw0KCQli", + "cmVhazsNCgkgIGNhc2UgIltvYmplY3QgT2JqZWN0XSI6DQoJCXZhciB2ZWM9W107DQoJCWZv", + "cih2YXIgayBpbiBvYmopew0KCQkJaWYgKCAoImhhc093blByb3BlcnR5IiBpbiBvYmopICYm", + "ICghb2JqLmhhc093blByb3BlcnR5KGspKSApIHsNCgkJCQkKCQkJCWNvbnRpbnVlOw0KCQkJ", + "fQ0KCQkJdmVjLnB1c2goIGsrIjoiK3JlY3VyT2JqU3RyKG9ialtrXSkgKTsNCgkJfQ0KCQly", + "ZXQgKz0gInsiOw0KCQlmb3IodmFyIGk9MDtpPHZlYy5sZW5ndGg7aSsrKXsNCgkJCXJldCAr", + "PSB2ZWNbaV07DQoJCQlpZiAoaSAhPSAodmVjLmxlbmd0aC0xKSkgcmV0ICs9ICIsIjsNCgkJ", + "fQ0KCQlyZXQgKz0gIn0iOw0KCQlicmVhazsNCgkgIGNhc2UgIltvYmplY3QgQXJyYXldIjoN", + "CgkJdmFyIHZlYz1bXTsNCgkJZm9yKHZhciBpPTA7aTxvYmoubGVuZ3RoO2krKyl7DQoJCQl2", + "ZWMucHVzaChyZWN1ck9ialN0cihvYmpbaV0pKTsNCgkJfQ0KCQlyZXQgKz0gIlsiOw0KCQlm", + "b3IodmFyIGk9MDtpPHZlYy5sZW5ndGg7aSsrKXsNCgkJCXJldCArPSB2ZWNbaV07DQoJCQlp", + "ZiAoaSAhPSAodmVjLmxlbmd0aC0xKSkgcmV0ICs9ICIsIjsNCgkJfQ0KCQlyZXQgKz0gIl0i", + "Ow0KCQlicmVhazsNCgkgIGRlZmF1bHQ6DQoJCXJldCA9IG9iai50b1N0cmluZygpOw0KCQli", + "cmVhazsNCgl9DQoJcmV0dXJuIHJldDsNCn0NCg0KCg0KJGdsb2JhbC5nZXRPYmplY3RUeXBl", + "IAk9IGZ1bmN0aW9uKHYpIHtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs", + "KHYpO30NCiRnbG9iYWwudHlwZU9mIAkJCT0gZnVuY3Rpb24odikgew0KCXJldHVybiB2PT09", + "dW5kZWZpbmVkID8gInVuZGVmaW5lZCI6IHY9PT1udWxsID8gIm51bGwiOk9iamVjdC5wcm90", + "b3R5cGUudG9TdHJpbmcuY2FsbCh2KS5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKTsNCgl9", + "DQoNCgoNCiRnbG9iYWwuY2FzdEkgPSBmdW5jdGlvbih2LHJhZCkgeyANCgl2YXIgcmFkaXgg", + "PSAocmFkPT11bmRlZmluZWQpID8gMTA6cmFkOyANCglzd2l0Y2godHlwZU9mKHYpKSB7DQoJ", + "ICBjYXNlICJudW1iZXIiCTogcmV0dXJuIChNYXRoLnJvdW5kKHYpKTsNCgkgIGNhc2UgImJv", + "b2xlYW4iOiByZXR1cm4gKHYgPyAxIDogMCk7DQoJICBkZWZhdWx0CQk6IHJldHVybiAocGFy", + "c2VJbnQodixyYWRpeCkpOw0KCX0NCn07DQokZ2xvYmFsLmNhc3RTID0gZnVuY3Rpb24odikg", + "eyANCgl2YXIgc3RyID0gdjsNCglpZiAoIHYgPT0gbnVsbCApIHsNCgkJcmV0dXJuICI8bnVs", + "bD4iOw0KCX0NCgl0cnl7DQoJCXN0ciA9IHN0ci50b1N0cmluZygpOw0KCX0gY2F0Y2goZSl7", + "DQoJCXN0ciA9ICI8ZmFpbGVkIGNhc3QgdG8gc3RyaW5nPiI7DQoJfQ0KCXJldHVybiAoc3Ry", + "KTsgDQp9Ow0KJGdsb2JhbC5jYXN0RiA9IGZ1bmN0aW9uKHYpIHsgcmV0dXJuICh0eXBlT2Yo", + "dik9PSJib29sZWFuIikgPyAodj8xOjApIDogcGFyc2VGbG9hdCh2KTsgfTsNCg0KDQoNCgoN", + "CiRnbG9iYWwuZ2V0SlNjcmlwdEluZm8gPSBmdW5jdGlvbigpew0KCXZhciBvYmogPSB7ZnVs", + "bE5hbWU6IkpTY3JpcHQgMC4wLjAiLG5hbWU6IkpTY3JpcHQiLCB2ZXI6IjAuMC4wIn07DQoJ", + "dmFyIG5hbWUJPVNjcmlwdEVuZ2luZSgpOw0KCXZhciBtYWpvciAJPVNjcmlwdEVuZ2luZU1h", + "am9yVmVyc2lvbigpOw0KCXZhciBtaW5vcgk9U2NyaXB0RW5naW5lTWlub3JWZXJzaW9uKCk7", + "DQoJdmFyIGJ1aWxkCT1TY3JpcHRFbmdpbmVCdWlsZFZlcnNpb24oKTsNCglvYmoubmFtZSA9", + "IG5hbWU7DQoJb2JqLnZlciAgPSBtYWpvcisiLiIrbWlub3IrIi4iK2J1aWxkOw0KCW9iai5m", + "dWxsTmFtZSA9IG9iai5uYW1lICsgIiAiICsgb2JqLnZlcjsNCglyZXR1cm4gb2JqOw0KfQ0K", + "DQoKDQokZ2xvYmFsLmlzNjRCaXRPUyA9IGZ1bmN0aW9uKCkgew0KCQoJdmFyIHByb2Nlc29y", + "ID0gc2guRW52aXJvbm1lbnQoIlByb2Nlc3MiKS5JdGVtKCJQUk9DRVNTT1JfQVJDSElURUNU", + "VVJFIik7DQoJdmFyIHByb2Nlc29yVzY0MzIgPSBzaC5FbnZpcm9ubWVudCgiUHJvY2VzcyIp", + "Lkl0ZW0oIlBST0NFU1NPUl9BUkNISVRFVzY0MzIiKTsNCgl2YXIgb3M2NCA9IHtBTUQ2NDp0", + "cnVlLCBJQTY0OnRydWUsICJ4ODYiOmZhbHNlfTsJCglpZiAoIGlzT0socHJvY2Vzb3JXNjQz", + "MikgKSB7DQoJCQoJCXJldHVybiAocHJvY2Vzb3JXNjQzMiBpbiBvczY0KSA/IG9zNjRbcHJv", + "Y2Vzb3JXNjQzMl06IHRydWU7DQoJfQ0KCXJldHVybiAocHJvY2Vzb3IgaW4gb3M2NCkgPyBv", + "czY0W3Byb2Nlc29yXTogdHJ1ZTsKCQoJCgkKCQoJCn0NCiRnbG9iYWwuaXM2NEJpdFNjcmlw", + "dCA9IGZ1bmN0aW9uKCkgew0KCQoJdmFyIHByb2Nlc29yID0gc2guRW52aXJvbm1lbnQoIlBy", + "b2Nlc3MiKS5JdGVtKCJQUk9DRVNTT1JfQVJDSElURUNUVVJFIik7DQoJdmFyIG9zNjQgPSB7", + "QU1ENjQ6dHJ1ZSwgSUE2NDp0cnVlLCAieDg2IjpmYWxzZX07CQoJcmV0dXJuIChwcm9jZXNv", + "ciBpbiBvczY0KSA/IG9zNjRbcHJvY2Vzb3JdOiB0cnVlOwkKfQ0KDQoKDQoNCgoKCg0KJGds", + "b2JhbC50cnlXcml0ZVNhZmUgPWZ1bmN0aW9uKG9zdHJtLHN0cil7IA0KCQoJCgkKCWZvcih2", + "YXIgbj0wO248cy5sZW5ndGg7bisrKXsNCgkJdmFyIGNoID0gc3RyLmNoYXJBdChuKTsNCgkJ", + "dHJ5IHtvc3RybS5Xcml0ZShjaCk7fSBjYXRjaChuZyl7DQoJCQlvc3RybS5Xcml0ZSgiPEA/", + "QD4iKTsNCgkJfQ0KCX0JCQkNCn0NCg0KJGdsb2JhbC5lY2hvID0gZnVuY3Rpb24gZWNobyhz", + "dHIpew0KCXZhciBsb2dGc3RybSA9IHNldExvZ0ZpbGUucHJvdG90eXBlLnN0cm07DQoNCglp", + "ZiAoICRnbG9iYWwuc2V0TG9nKCkgKSB7DQoJCWxvZ0ZzdHJtID0gJGdsb2JhbC5zZXRMb2co", + "KTsNCgl9DQogICAgZm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKykgew0KICAg", + "ICAgICB2YXIgcyA9IGFyZ3VtZW50c1tpXTsNCgkJaWYgKCBzID09PSBudWxsICkgeyAKCQkJ", + "cyA9ICIobnVsbCkiOwoJCX0gZWxzZSBpZiAoIHMgPT09IHVuZGVmaW5lZCApIHsNCgkJCXMg", + "PSAiKHVuZGVmaW5lZCkiOw0KCQl9DQoJCWlmICggZ2V0T2JqZWN0VHlwZShzKT09IltvYmpl", + "Y3QgT2JqZWN0XSIgKQ0KCQkJcyA9IHJlY3VyT2JqU3RyKHMpOwoJCXRyeSB7IA0KCQkJV1Nj", + "cmlwdC5TdGRPdXQuV3JpdGUocyk7DQoJCX0gY2F0Y2goZSl7DQoJCQkKCQkJdHJ5V3JpdGVT", + "YWZlKFdTY3JpcHQuU3RkT3V0LHMpOw0KCQl9DQoJCWlmIChsb2dGc3RybSl7DQoJCQl0cnkg", + "ew0KCQkJCWxvZ0ZzdHJtLldyaXRlKHMpOw0KCQkJfSBjYXRjaChlKSB7DQoJCQkJCgkJCQl0", + "cnlXcml0ZVNhZmUobG9nRnN0cm0scyk7DQoJCQl9DQoJCX0NCiAgICB9DQogICAgV1Njcmlw", + "dC5TdGRPdXQuV3JpdGVMaW5lKCIiKTsNCglpZiAobG9nRnN0cm0pIAlsb2dGc3RybS5Xcml0", + "ZUxpbmUoIiIpOw0KfTsNCiRnbG9iYWwucHJpbnRsbiA9ICRnbG9iYWwuZWNobzsJCg0KJGds", + "b2JhbC5lY2hvU3RyID0gZnVuY3Rpb24oc3RyKXsNCgl2YXIgb3Q9IiI7DQogICAgZm9yKHZh", + "ciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKykgew0KICAgICAgICB2YXIgcyA9IGFyZ3Vt", + "ZW50c1tpXTsNCiAgICAgICAgaWYgKCBzID09IG51bGwgKSB7DQoJCQlzID0gIihudWxsKSI7", + "CgkJfSBlbHNlIGlmICggcyA9PSB1bmRlZmluZWQgKSB7DQoJCQlzID0gIih1bmRlZmluZWQp", + "IjsNCgkJfQ0KCQlpZiAoIGdldE9iamVjdFR5cGUocyk9PSJbb2JqZWN0IE9iamVjdF0iICkN", + "CgkJCXMgPSByZWN1ck9ialN0cihzKTsKICAgICAgICBvdCArPSBzOw0KICAgIH0NCiAgICBv", + "dCArPSAiXHJcbiI7DQogICAgcmV0dXJuIG90Ow0KfTsNCg0KJGdsb2JhbC5lY2hvUyA9IGZ1", + "bmN0aW9uKHN0cil7DQoJdmFyIG90PSIiOw0KICAgIGZvcih2YXIgaT0wO2k8YXJndW1lbnRz", + "Lmxlbmd0aDtpKyspIHsNCiAgICAgICAgdmFyIHMgPSBhcmd1bWVudHNbaV07DQogICAgICAg", + "IGlmICggcyA9PSBudWxsICkgew0KCQkJcyA9ICIobnVsbCkiOwoJCX0gZWxzZSBpZiAoIHMg", + "PT0gdW5kZWZpbmVkICkgew0KCQkJcyA9ICIodW5kZWZpbmVkKSI7DQoJCX0NCgkJaWYgKCBn", + "ZXRPYmplY3RUeXBlKHMpPT0iW29iamVjdCBPYmplY3RdIiApDQoJCQlzID0gcmVjdXJPYmpT", + "dHIocyk7CiAgICAgICAgb3QgKz0gczsNCiAgICB9DQogICAgCiAgICByZXR1cm4gb3Q7DQp9", + "Ow0KDQoNCgoNCiRnbG9iYWwucHJpbnQgPSBmdW5jdGlvbihzdHIpew0KCXZhciBsb2dGc3Ry", + "bSA9IHNldExvZ0ZpbGUucHJvdG90eXBlLnN0cm07DQoJaWYgKCAkZ2xvYmFsLnNldExvZy5p", + "bnN0YW5jZSApIHsNCgkJbG9nRnN0cm0gPSAkZ2xvYmFsLnNldExvZy5pbnN0YW5jZTsNCgl9", + "DQogICAgZm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKykgew0KICAgICAgICBp", + "ZiAoIGFyZ3VtZW50c1tpXSA9PSBudWxsICkgew0KCQkJV1NjcmlwdC5TdGRPdXQuV3JpdGUo", + "IihudWxsKSIpOwoJCQlpZiAobG9nRnN0cm0pIAlsb2dGc3RybS5Xcml0ZSgiKG51bGwpIik7", + "DQoJCX0gZWxzZSB7DQoJCQl2YXIgcyA9IGFyZ3VtZW50c1tpXTsNCgkJCWlmICggZ2V0T2Jq", + "ZWN0VHlwZShzKT09IltvYmplY3QgT2JqZWN0XSIgKQ0KCQkJCXMgPSByZWN1ck9ialN0cihz", + "KTsKCQkJdHJ5ewkJCQ0KCQkJCVdTY3JpcHQuU3RkT3V0LldyaXRlKHMpOw0KCQkJfWNhdGNo", + "KGUpew0KCQkJCQoJCQkJdHJ5V3JpdGVTYWZlKFdTY3JpcHQuU3RkT3Uscyk7DQoJCQl9DQoJ", + "CQlpZiAobG9nRnN0cm0pIHsNCgkJCQl0cnl7DQoJCQkJCWxvZ0ZzdHJtLldyaXRlKHMpOw0K", + "CQkJCX1jYXRjaChlKXsNCgkJCQkJCgkJCQkJdHJ5V3JpdGVTYWZlKGxvZ0ZzdHJtLHMpOw0K", + "CQkJCX0NCgkJCX0NCgkJfQ0KCX0NCn07DQoKDQokZ2xvYmFsLmlzU3RkSW5SZWRpcmVjdCA9", + "IGZ1bmN0aW9uKCl7DQoJdmFyIHJldCA9IChzaC5FbnZpcm9ubWVudCgiUHJvY2VzcyIpKSgi", + "SlNIX1JFRElSRUNUSU4iKTsgCglpZiAoIHJldCA9PSAiIiApIHsKCQllY2hvKCJ3YXJuaW5n", + "OnVuZGVmaW5lZCBlbnZpcm9ubWVudCB2YXJpYWJsZToiLCJKU0hfUkVESVJFQ1RJTiIpOw0K", + "CQlyZXR1cm4gZmFsc2U7DQoJfQ0KCXJldHVybiAoIHJldCAhPSAiMCIpOw0KfQ0KJGdsb2Jh", + "bC5pc1N0ZE91dFJlZGlyZWN0ID0gZnVuY3Rpb24oKXsNCgl2YXIgcmV0ID0gKHNoLkVudmly", + "b25tZW50KCJQcm9jZXNzIikpKCJKU0hfUkVESVJFQ1RPVCIpOyAKCWlmICggcmV0ID09ICIi", + "ICkgewoJCWVjaG8oIndhcm5pbmc6dW5kZWZpbmVkIGVudmlyb25tZW50IHZhcmlhYmxlOiIs", + "IkpTSF9SRURJUkVDVE9UIik7DQoJCXJldHVybiBmYWxzZTsNCgl9DQoJcmV0dXJuICggcmV0", + "ICE9ICIwIik7DQp9DQoNCgoNCgokZ2xvYmFsLmV4aXQgPSBmdW5jdGlvbiAoY29kZSxtc2cp", + "ew0KCQoJCgkKDQoJdmFyIG1zZ1ZlYz0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJn", + "dW1lbnRzLDEpOw0KCQoJaWYgKG1zZ1ZlYy5sZW5ndGgpDQoJCWVjaG8uYXBwbHkodGhpcyxt", + "c2dWZWMpOw0KCXdoaWxlKCAicHVzaCIgaW4gZXhpdCApIHsNCgkJaWYgKCAhKCJmaW5WZWMi", + "IGluIGV4aXQpICkNCgkJCWJyZWFrOw0KCQlmb3IodmFyIGsgaW4gZXhpdC5maW5WZWMpew0K", + "CQkJCgkJCShleGl0LmZpblZlY1trXSkoKTsNCgkJfQ0KCQlicmVhazsNCgl9DQoJaWYgKCAi", + "YWRtaW5GdW5jIiBpbiBleGl0ICkgewoJCWV4aXQuYWRtaW5GdW5jKGNvZGUsbXNnVmVjLmpv", + "aW4oIiIpKTsNCgl9DQoJdHJ5IHsgd3MucXVpdChjb2RlKTsgfSBjYXRjaChlKSB7DQoJCWVj", + "aG8oInF1aXQgZXJyb3I6IixlKTsNCgkJdHJ5IHsNCgkJCQoJCQkKCQkJCgkJCXZhciBhY3Rj", + "dHggPSBXU2NyaXB0LkNyZWF0ZU9iamVjdCgiTWljcm9zb2Z0LldpbmRvd3MuQWN0Q3R4Iik7", + "DQoJCQlhY3RjdHgubWFuaWZlc3QgPSAiTXlSZWdGcmVlQ09NU3J2Lm1hbmlmZXN0IjsNCgkJ", + "CXZhciBvYmo7DQoJCQlvYmogPSBhY3RjdHguQ3JlYXRlT2JqZWN0KCJNeVJlZ0ZyZWVDT01T", + "cnYuMSIpOyAKCQkJb2JqLmZvcmNlUXVpdCggY2FzdEkoY29kZSkgKTsgCgkJfSBjYXRjaChl", + "ZSl7DQoJCQllY2hvKCJlcnJvcjpDaGFrcmHntYLkuoZETEzjgYzliKnnlKjjgafjgY3jgb7j", + "gZvjgpMoTXlSZWdGcmVlQ09NU3J2LmRsbCkiKTsNCgkJfQ0KCX07Cn0NCg0KJGdsb2JhbC5l", + "eGl0LnB1c2ggPSBmdW5jdGlvbiggZiApIHsNCglpZiAoICEoImZpblZlYyIgaW4gZXhpdCkg", + "KXsNCgkJZXhpdC5maW5WZWMgPSBbXTsNCgl9DQoJZXhpdC5maW5WZWMucHVzaChmKTsNCgly", + "ZXR1cm4gdGhpczsNCn0NCiRnbG9iYWwuZXhpdC5zZXRBZG1pbkNhbGwgPSBmdW5jdGlvbigg", + "ZiApIHsgZXhpdC5hZG1pbkZ1bmMgPSBmOyByZXR1cm4gdGhpczsgfTsNCg0KCg0KJGdsb2Jh", + "bC5pc0FkbWluID0gZnVuY3Rpb24gKCkgew0KCQ0KCXJldHVybiggIShkb0NtZCh7ZWNobzpm", + "YWxzZX0sIm9wZW5maWxlcyIpLmV4aXRDb2RlKSk7DQp9DQoNCgoNCiRnbG9iYWwucmVUaHJv", + "dyA9IGZ1bmN0aW9uKGZ1bmNOYW1lLG1lc3NhZ2UpIHsKCXZhciBtc2c9IlxuLT5jYWxsIGVy", + "cm9yOiIrZnVuY05hbWUrIigpOiI7DQoJZm9yKHZhciBpPTE7aTxhcmd1bWVudHMubGVuZ3Ro", + "O2krKykgew0KCQltc2cgKz0gKChpIT0xKT8iLCI6IiIpICsgYXJndW1lbnRzW2ldIDsNCgl9", + "DQoJCgl2YXIgdXBBcmcgPSBhcmd1bWVudHMuY2FsbGVlLmNhbGxlci5hcmd1bWVudHM7DQoJ", + "aWYgKGlzT2sodXBBcmcpICYmIHVwQXJnLmxlbmd0aCl7DQoJCW1zZyArPSAiXG5hcmcgc3Rh", + "Y2siKyIoIitmdW5jTmFtZSsiKVxuIjsNCgkJZm9yKHZhciBpPTA7aTx1cEFyZy5sZW5ndGg7", + "aSsrKSB7DQoJCQl2YXIgdiA9ICIiOw0KCQkJc3dpdGNoKGdldE9iamVjdFR5cGUodXBBcmdb", + "aV0pKXsNCgkJCWNhc2UgIltvYmplY3QgU3RyaW5nXSI6DQoJCQljYXNlICJbb2JqZWN0IE51", + "bWJlcl0iOg0KCQkJY2FzZSAiW29iamVjdCBCb29sZWFuXSI6DQoJCQkJdiA9IHVwQXJnW2ld", + "Ow0KCQkJCWJyZWFrOw0KCQkJY2FzZSAiW29iamVjdCBGdW5jdGlvbl0iOiB2ID0gIihmdW5j", + "dGlvbikiO2JyZWFrOw0KCQkJY2FzZSAiW29iamVjdCBSZWdFeHBdIjoJICB2ID0gIihyZWdl", + "eHApIjticmVhazsNCgkJCWNhc2UgIltvYmplY3QgT2JqZWN0XSI6CSAgdiA9ICIob2JqZWN0", + "KSI7YnJlYWs7DQoJCQljYXNlICJbb2JqZWN0IEFycmF5XSI6CSAgdiA9ICIoYXJyYXkpIjti", + "cmVhazsNCgkJCX0NCgkJCW1zZyArPSAiWyIraSsiXToiICsgdiArIlxuIjsNCgkJfQkNCgl9", + "DQoJdGhyb3cgRXJyb3IoMHg4MDBBMDFCNixtc2cpOw0KfQ0KDQoKDQokZ2xvYmFsLmVzY2Fw", + "ZUhUTUwgPSBmdW5jdGlvbihzKXtyZXR1cm4gcy5yZXBsYWNlKC9bJiI8PiwnXS9nLCANCgkJ", + "CWZ1bmN0aW9uIChjKSB7cmV0dXJuIHsnJic6JyZhbXA7JywnIic6JyZxdW90OycsJzwnOicm", + "bHQ7JywgJz4nOicmZ3Q7JywgJywnOicmIzA0NDsnLCAnXCcnOicmIzAzOTsnfVtjXTt9KTt9", + "DQokZ2xvYmFsLnVuZXNjYXBlSFRNTCA9IGZ1bmN0aW9uKHMpe3JldHVybiBzLnJlcGxhY2Uo", + "IC8mYW1wO3wmcXVvdDt8Jmx0O3wmZ3Q7fCYjMDQ0O3wmIzAzOTsvZywNCgkJCWZ1bmN0aW9u", + "IChjKSB7cmV0dXJuIHsnJmFtcDsnOicmJywnJnF1b3Q7JzonIicsJyZsdDsnOic8JywnJmd0", + "Oyc6Jz4nLCcmIzA0NDsnOicsJywnJiMwMzk7JzonXCcnfVtjXTt9KTt9DQokZ2xvYmFsLmVz", + "Y2FwZVVSTCAJCT0gZnVuY3Rpb24ocykJe3JldHVybiBlbmNvZGVVUkwocyk7fQ0KJGdsb2Jh", + "bC51bmVzY2FwZVVSTCAJPSBmdW5jdGlvbih1cmwpCXtyZXR1cm4gZGVjb2RlVVJJKHVybCk7", + "fQ0KJGdsb2JhbC5lc2NhcGVVUkwgCQk9IGZ1bmN0aW9uKHMpCXtyZXR1cm4gZW5jb2RlVVJJ", + "KHMpO30NCiRnbG9iYWwudW5lc2NhcGVVUkwgCT0gZnVuY3Rpb24odXJsKQl7cmV0dXJuIGRl", + "Y29kZVVSSSh1cmwpO30NCiRnbG9iYWwuZXNjYXBlVVJMRW0gCT0gZnVuY3Rpb24ocykJe3Jl", + "dHVybiBlbmNvZGVVUklDb21wb25lbnQocyk7fQ0KJGdsb2JhbC51bmVzY2FwZVVSTEVtIAk9", + "IGZ1bmN0aW9uKHVybEVtKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHVybEVtKTt9DQoK", + "U3RyaW5nLnByb3RvdHlwZS5lc2NhcGVIVE1MIAk9IGZ1bmN0aW9uKCl7IHJldHVybiBlc2Nh", + "cGVIVE1MKHRoaXMpOyB9DQpTdHJpbmcucHJvdG90eXBlLnVuZXNjYXBlSFRNTCAJPSBmdW5j", + "dGlvbigpeyByZXR1cm4gdW5lc2NhcGVIVE1MKHRoaXMpOyB9DQpTdHJpbmcucHJvdG90eXBl", + "LmVzY2FwZVVSTCAJCT0gZnVuY3Rpb24oKXsgcmV0dXJuIGVzY2FwZVVSTCh0aGlzKTsgfQ0K", + "U3RyaW5nLnByb3RvdHlwZS51bmVzY2FwZVVSTCAJPSBmdW5jdGlvbigpeyByZXR1cm4gdW5l", + "c2NhcGVVUkwodGhpcyk7IH0NClN0cmluZy5wcm90b3R5cGUuZXNjYXBlVVJMRW0gCT0gZnVu", + "Y3Rpb24oKXsgcmV0dXJuIGVzY2FwZVVSTEVtKHRoaXMpOyB9DQpTdHJpbmcucHJvdG90eXBl", + "LnVuZXNjYXBlVVJMRW0gCT0gZnVuY3Rpb24oKXsgcmV0dXJuIHVuZXNjYXBlVVJMRW0odGhp", + "cyk7IH0NClN0cmluZy5wcm90b3R5cGUuZXNjYXBlIAkJPSBmdW5jdGlvbigpeyByZXR1cm4g", + "ZXNjYXBlKHRoaXMpOyB9DQpTdHJpbmcucHJvdG90eXBlLnVuZXNjYXBlIAkJPSBmdW5jdGlv", + "bigpeyByZXR1cm4gdW5lc2NhcGUodGhpcyk7IH0NCg0KCg0KU3RyaW5nLnByb3RvdHlwZS5p", + "Y21wID0gZnVuY3Rpb24oczIpIHsgcmV0dXJuICh0aGlzLnRvTG93ZXJDYXNlKCkgPT0gczIu", + "dG9Mb3dlckNhc2UoKSk7IH07DQoKDQoKDQpTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VBbGwg", + "PSBmdW5jdGlvbihfYmVmb3JlLF9hZnRlcil7dmFyIHJlID0gKHR5cGVPZihfYmVmb3JlKT09", + "InJlZ2V4cCIpPyBfYmVmb3JlOiByZW1ha2VSRSgvQC9nLCJAIixfYmVmb3JlKTsgcmV0dXJu", + "IHRoaXMucmVwbGFjZShyZSxfYWZ0ZXIpO30NCgkKCQoNCiRnbG9iYWwuX3JlcGxhY2VHID0g", + "ZnVuY3Rpb24oKSB7DQoJdmFyIHNyY1N0ciA9IGFyZ3VtZW50c1swXTsNCgl2YXIgcmUgPSBh", + "cmd1bWVudHNbMV07DQoJdmFyIHJlcFZlYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChh", + "cmd1bWVudHMsMik7CgkKCXZhciBvdCA9IHNyY1N0ci5yZXBsYWNlKHJlLGZ1bmN0aW9uKCl7", + "DQoJCXZhciBhZyA9IGFyZ3VtZW50czsNCgkJdmFyIG1hdGNoU3RyID0gYWdbMF07IAoJCWlm", + "ICggYWcubGVuZ3RoIDw9IDMgKSB7CgkJCXJldHVybiAocmVwVmVjWzBdKTsNCgkJfQ0KCQl2", + "YXIgcmVwVmVjQ291bnRlcj0wOw0KCQl2YXIgcmVwRGljID0gW107DQoJCWZvcih2YXIgaT0x", + "OyBpIDwgYWcubGVuZ3RoIDsgaSsrICl7DQoJCQlpZiAoIHR5cGVPZihhZ1tpXSkgPT09ICdu", + "dW1iZXInICkgYnJlYWs7IAoJCQl2YXIgZCA9IHt9Ow0KCQkJaWYgKCBhZ1tpXSA9PSBudWxs", + "ICkgeyByZXBWZWNDb3VudGVyKys7IGNvbnRpbnVlOyB9IAoJCQlkW2FnW2ldXSA9ICggcmVw", + "VmVjQ291bnRlciA8IHJlcFZlYy5sZW5ndGggKSA/IHJlcFZlY1tyZXBWZWNDb3VudGVyKytd", + "IDogYWdbaV07CgkJCXJlcERpYy5wdXNoKCBkICkgOw0KCQl9DQoJCXJldHVybiAoDQoJCQkK", + "CQkJKGZ1bmN0aW9uKHNyYyx2ZWMpIHsKCQkJCXZhciBvdD0iIjsNCgkJCQlmb3IoIHZhciBp", + "ID0gMDsgaSA8IHZlYy5sZW5ndGg7IGkrKykgew0KCQkJCQl2YXIgZGljID0gdmVjW2ldOw0K", + "CQkJCQlmb3IodmFyIGsgaW4gZGljKSB7DQoJCQkJCQl2YXIgcG9zID0gc3JjLmluZGV4T2Yo", + "ayk7DQoJCQkJCQlpZiAoIHBvcyA9PSAtMSApIHJldHVybiAiIjsJCgkJCQkJCWlmICggcG9z", + "ICE9ICAwICkgb3QgKz0gc3JjLnNsaWNlKDAsIHBvcyk7IAoJCQkJCQlvdCArPSBkaWNba107", + "CQoJCQkJCQlzcmMgPSBzcmMuc2xpY2UocG9zK2subGVuZ3RoKTsKCQkJCQl9DQoJCQkJfQ0K", + "CQkJCXJldHVybiAoIG90ICsgc3JjICk7DQoJCQl9KShtYXRjaFN0cixyZXBEaWMpDQoJCSk7", + "DQoJfSk7DQoJcmV0dXJuIG90Ow0KfQ0KU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlRyA9IGZ1", + "bmN0aW9uKCAgKXsNCgl2YXIgYXIgPSBbdGhpc10uY29uY2F0KEFycmF5LnByb3RvdHlwZS5z", + "bGljZS5jYWxsKGFyZ3VtZW50cykpOwoJcmV0dXJuIF9yZXBsYWNlRy5hcHBseShudWxsLGFy", + "KTsNCn0NCg0KCg0KClN0cmluZy5wcm90b3R5cGUucmVwZWF0ID0gZnVuY3Rpb24oY250KSB7", + "IHJldHVybiBBcnJheShjbnQqMSsxKS5qb2luKHRoaXMpOyB9Ow0KCg0KCg0KdmFyIGdldEhh", + "bGZMZW5ndGggPSBmdW5jdGlvbiAocyl7DQoJCgl2YXIgY250ID0gMDsNCglmb3IodmFyIGk9", + "MDtpPHMubGVuZ3RoO2krKykgew0KCQl2YXIgYyA9IHMuY2hhckNvZGVBdChpKTsNCgkJY250", + "ICs9ICgoYz49MHgwMCYmYzwweDgxKXx8KGM9PT0weGY4ZjApfHwoYz49MHhmZjYxJiZjPDB4", + "ZmZhMCl8fChjPj0weGY4ZjEmJmM8MHhmOGY0KSkgPyAxOjI7IAoJfQ0KCXJldHVybiBjbnQ7", + "DQp9DQokZ2xvYmFsLnRvUGFkZGluZ1N0ciA9IGZ1bmN0aW9uKHMsIHcsIGRpckxSLCBwYWRD", + "aGFyKSB7DQoJdmFyIExSID0gZGlyTFI7CglpZih0eXBlT2YocykgIT0gInN0cmluZyIpCQlz", + "ID0gcy50b1N0cmluZygpOw0KCWlmKHBhZENoYXI9PXVuZGVmaW5lZCkJCQlwYWRDaGFyPSIw", + "IjsNCglpZih0eXBlT2YocGFkQ2hhcikgIT0gInN0cmluZyIpCXBhZENoYXIgPSBwYWRDaGFy", + "LnRvU3RyaW5nKCk7CQ0KCWlmKExSPT11bmRlZmluZWQpCQkJCUxSPSJSIjsNCglMUiA9IExS", + "LmNoYXJBdCgwKTsNCgl2YXIgbGVuID0gZ2V0SGFsZkxlbmd0aChzKTsKCWlmKGxlbiA8IHcp", + "IHsNCgkJdmFyIGMgPSAoIHBhZENoYXIubGVuZ3RoIDwgMSApID8gIiAiIDogcGFkQ2hhcjsN", + "CgkJdmFyIG5QYWRSZXBlYXQgPSBNYXRoLmNlaWwoICh3LWxlbikvYy5sZW5ndGggKTsNCgkJ", + "aWYgICAgICAgKChMUj09IkwiKXx8KExSPT0iPCIpfHwoTFI9PSIrIikpIHsJCQoJCQl3aGls", + "ZSh3Pj1nZXRIYWxmTGVuZ3RoKHMrYykpDQoJCQkJcyA9IHMgKyBjOw0KCQl9IGVsc2UgaWYo", + "KExSPT0iTSIpfHwoTFI9PSJeIikpICB7CQkJCgkJCWZvcih2YXIgaT0wO3c+PWdldEhhbGZM", + "ZW5ndGgoYytzKTtpKyspew0KCQkJCXMgPSAoKGklMik9PTApID8gKGMrcyk6KHMrYyk7CQkK", + "CQkJfQ0KCQl9IGVsc2UgeyAgCgkJCXdoaWxlKHc+PWdldEhhbGZMZW5ndGgoYytzKSkNCgkJ", + "CQlzID0gYyArIHM7DQoJCX0NCgl9DQoJcmV0dXJuIHM7DQp9DQpTdHJpbmcucHJvdG90eXBl", + "LnRvUGFkID0gZnVuY3Rpb24odyxkaXJMUixwYWRDaGFyKSB7DQoJcmV0dXJuIHRvUGFkZGlu", + "Z1N0cih0aGlzLHcsZGlyTFIscGFkQ2hhcik7DQp9DQoNCgoNCiRnbG9iYWwuZ2V0Rm10RGF0", + "ZSA9IGZ1bmN0aW9uKGZtdCxpbkRhdGUpew0KCWlmICggaW5EYXRlIGluc3RhbmNlb2YgRGF0", + "ZSApIHsNCgkJCgl9IGVsc2UgaWYgKCB0eXBlb2YoaW5EYXRlKSA9PSAnbnVtYmVyJyApew0K", + "CQlpbkRhdGUgPSBuZXcgRGF0ZShpbkRhdGUpOwoJfSBlbHNlIGlmICggdHlwZW9mKGluRGF0", + "ZSkgPT0gJ3N0cmluZycpew0KCQlpbkRhdGUgPSBuZXcgRGF0ZShEYXRlLnBhcnNlKGluRGF0", + "ZSkpOw0KCX0gZWxzZSB7DQoJCWluRGF0ZT0gaXNOb25lKGluRGF0ZSkgPyAobmV3IERhdGUo", + "KSkgOiAobmV3IERhdGUoaW5EYXRlKSk7IAoJCQoJfQ0KCXZhciBkID0gaXNOb25lKGluRGF0", + "ZSkgPyAobmV3IERhdGUoKSkgOmluRGF0ZTsNCgl2YXIgdmVjID0geyAiWSI6ZC5nZXRGdWxs", + "WWVhcigpLCAiTSI6KGQuZ2V0TW9udGgoKSsxKSwgIkQiOmQuZ2V0RGF0ZSgpLA0KCQkiaCI6", + "ZC5nZXRIb3VycygpLCAibSI6ZC5nZXRNaW51dGVzKCksICJzIjpkLmdldFNlY29uZHMoKSwg", + "InoiOmQuZ2V0TWlsbGlzZWNvbmRzKCl9Ow0KCWlmICggaXNOb25lKGZtdCkgfHwgKGZtdD09", + "Ii0iKSApIHsNCgkJZm10ID0gIllZWVktTU0tRERUaGg6bW06c3Muenp6IjsNCgl9IGVsc2Ug", + "aWYgKCBmbXQgPT0gIlMiICkgew0KCQlmbXQgPSAiWVlZWU1NRERoaG1tc3N6enoiOw0KCX0g", + "ZWxzZSBpZiAoIGZtdCA9PSAiLyIgKSB7IA0KCQlmbXQgPSAiWVlZWS9NTS9ERCBoaDptbTpz", + "cy56enoiOyAKCX0gDQoJdmFyIG90ID0gZm10LnJlcGxhY2UoDQoJCS8oW15ZTURobXN6XSop", + "KCg/OltZXSt8W01dK3xbRF0rfFtoXSt8W21dK3xbc10rfFt6XSspKS9nLA0KCQlmdW5jdGlv", + "bihhbGwsZSxtKSB7DQoJCQl2YXIgYyA9IG0uY2hhckF0KDApOw0KCQkJaWYgKCAhKGMgaW4g", + "dmVjKSApIHJldHVybihlK20pOw0KCQkJdmFyIHYgPSBjYXN0Uyh2ZWNbY10pOwoJCQlpZiAo", + "IGMgPT0gJ1knICYmIChtLmxlbmd0aCA8IDQpKSB7IAoJCQkJdiA9IHYuc3Vic3RyKG0ubGVu", + "Z3RoKTsNCgkJCX0NCgkJCXJldHVybiAoIGUgKyB2LnRvU3RyaW5nKCkudG9QYWQobS5sZW5n", + "dGgsIj4iKSApOw0KCQl9DQoJKTsNCglyZXR1cm4gb3Q7DQp9Cg0KCg0KJGdsb2JhbC5nZXRJ", + "c284NjAxRGF0ZSA9IGZ1bmN0aW9uKGlzbykgew0KCXZhciBwYXJzZSA9IGlzby5tYXRjaCgv", + "XihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pVChcZHsyfSk6KFxkezJ9KTooXGR7Mn0pXCtcZHsy", + "fTpcZHsyfS8pOwoJdmFyIG1zZWM9MDsNCglpZiAoICFwYXJzZSApIHsNCgkJcGFyc2UgPSAg", + "IGlzby5tYXRjaCgvXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pVChcZHsyfSk6KFxkezJ9KToo", + "XGR7Mn0pKC5cZCspWi8pOwkJCQoJCW1zZWMgPSAgTWF0aC5mbG9vcihwYXJzZVs3XSoxMDAw", + "KTsNCgl9DQoJcmV0dXJuIG5ldyBEYXRlKCBOdW1iZXIocGFyc2VbMV0pLCBOdW1iZXIocGFy", + "c2VbMl0pLTEsIE51bWJlcihwYXJzZVszXSksIE51bWJlcihwYXJzZVs0XSksIE51bWJlcihw", + "YXJzZVs1XSksIChwYXJzZVs2XSksbXNlYyApOw0KfTsNCg0KCg0KJGdsb2JhbC5UaW1lR2V0", + "VGltZVN0cmluZyA9IGZ1bmN0aW9uKG1zZWMpew0KCQ0KCXZhciBtaWxsaV9zZWMgPSBtc2Vj", + "ICUgMTAwMDsNCgltc2VjID0gKG1zZWMgLSBtaWxsaV9zZWMpIC8gMTAwMDsNCgl2YXIgc2Vj", + "ID0gbXNlYyAlIDYwOw0KCW1zZWMgPSAobXNlYyAtIHNlYykgLyA2MDsNCgl2YXIgbWluID0g", + "bXNlYyAlIDYwOw0KCXZhciBob3UgPSAobXNlYyAtIG1pbikgLyA2MDsNCgkKCXJldHVybiBo", + "b3UgICsgIjoiICsNCgkJKChtaW4gPCAxMCkgPyAiMCIgOiAiIikgKyBtaW4gKyAiOiIgKw0K", + "CQkoKHNlYyA8IDEwKSA/ICIwIiA6ICIiKSArIHNlYyArICIuIiArDQoJCSgobWlsbGlfc2Vj", + "IDwgMTAwKSA/ICIwIiA6ICIiKSArICgobWlsbGlfc2VjIDwgMTApID8gIjAiIDogIiIpICsg", + "bWlsbGlfc2VjOw0KfQ0KDQokZ2xvYmFsLm1TZWNUb1RpbWUgPSBmdW5jdGlvbihtc2VjKXsN", + "Cgl2YXIgbiA9IG5ldyBEYXRlKG1zZWMpOw0KCXJldHVybiBuOw0KfQ0KDQoKCQ0KJGdsb2Jh", + "bC5jcmVhdGVTdG9wV2F0Y2ggPSBmdW5jdGlvbigpIHsgCgl2YXIgbyA9IHt9Ow0KCXZhciBp", + "bnNTdFRpbWUgPSBuZXcgRGF0ZSgpOw0KCXZhciBpbnNFblRpbWUgPSBpbnNTdFRpbWU7DQoJ", + "by5zdFRpbWUgPSBuZXcgRGF0ZSgpOw0KCW8uZW5UaW1lID0gby5zdFRpbWU7DQoJby5zdGFy", + "dCA9IGZ1bmN0aW9uKCkgeyBvLnN0VGltZSA9IG5ldyBEYXRlKCk7IHJldHVybiB0aGlzOyB9", + "DQoJby5zdG9wICA9IGZ1bmN0aW9uKCkgeyBvLmVuVGltZSA9IG5ldyBEYXRlKCk7IHJldHVy", + "biB0aGlzLmRpZmYoKTsgfQ0KCW8uZGlmZlRpbWUgID0gZnVuY3Rpb24oKSB7IHJldHVybihv", + "LmVuVGltZSAtIG8uc3RUaW1lKTt9DQoJby5kaWZmICA9IGZ1bmN0aW9uKCkgeyByZXR1cm4g", + "KFRpbWVHZXRUaW1lU3RyaW5nKG8uZGlmZlRpbWUoKSkpOyB9DQoJcmV0dXJuIG87DQp9DQoN", + "CgoNCiRnbG9iYWwuZ2V0Q3VycmVudERhdGUgPSBmdW5jdGlvbihjKQ0KeyAgIAoJaWYgKCBj", + "ID09ICdTJyApIHsNCgkJcmV0dXJuIGdldEZtdERhdGUoJ1MnKTsNCgl9IA0KCXJldHVybiBn", + "ZXRGbXREYXRlKCctJyk7DQoKCgoKCgoKCgoKCgoKCn0NCg0KCiRnbG9iYWwuc3RyRGF0ZSA9", + "IGZ1bmN0aW9uKGRhdGUpIHsJDQoNCglyZXR1cm4gZ2V0Rm10RGF0ZSgnLycsZGF0ZSk7DQoJ", + "CgkKCQoJCgkKCQoJCgkKCQp9Ow0KDQoKDQpTdHJpbmcucHJvdG90eXBlLmdldEZpbGVOYW1l", + "IAk9IGZ1bmN0aW9uKCl7cmV0dXJuIGZzby5HZXRGaWxlTmFtZSh0aGlzKTt9DQpTdHJpbmcu", + "cHJvdG90eXBlLmdldEZ1bGxQYXRoIAk9IGZ1bmN0aW9uKCl7cmV0dXJuIGZzby5HZXRBYnNv", + "bHV0ZVBhdGhOYW1lKHRoaXMpO30NClN0cmluZy5wcm90b3R5cGUuZ2V0QmFzZU5hbWUgCT0g", + "ZnVuY3Rpb24oKXtyZXR1cm4gZnNvLkdldEJhc2VOYW1lKHRoaXMpO30NClN0cmluZy5wcm90", + "b3R5cGUuZ2V0UGFyZW50UGF0aAk9IGZ1bmN0aW9uKCl7cmV0dXJuIGZzby5HZXRQYXJlbnRG", + "b2xkZXJOYW1lKGZzby5HZXRBYnNvbHV0ZVBhdGhOYW1lKHRoaXMpKTt9DQpTdHJpbmcucHJv", + "dG90eXBlLmdldERyaXZlCQk9IGZ1bmN0aW9uKCl7cmV0dXJuIGZzby5HZXREcml2ZU5hbWUo", + "ZnNvLkdldEFic29sdXRlUGF0aE5hbWUodGhpcykpO30NClN0cmluZy5wcm90b3R5cGUuZ2V0", + "RXh0CQkJPSBmdW5jdGlvbigpe3JldHVybiBmc28uR2V0RXh0ZW5zaW9uTmFtZShmc28uR2V0", + "QWJzb2x1dGVQYXRoTmFtZSh0aGlzKSk7fQ0KDQoKDQpTdHJpbmcucHJvdG90eXBlLkZOID0g", + "ZnVuY3Rpb24oc2V0Tikgew0KCWlmICggc2V0TiA9PSB1bmRlZmluZWQgKSANCgkJcmV0dXJu", + "IGZzby5HZXRGaWxlTmFtZSh0aGlzKTsNCglyZXR1cm4gbWFrZVBhdGgodGhpcy5nZXRQYXJl", + "bnRQYXRoKCksIHNldE4gKTsNCn0NClN0cmluZy5wcm90b3R5cGUuRlAgPSBmdW5jdGlvbihz", + "ZXROKSB7DQoJaWYgKCBzZXROID09IHVuZGVmaW5lZCApDQoJCXJldHVybiB0aGlzLmdldEZ1", + "bGxQYXRoKCk7DQoJcmV0dXJuIHNldE4gOwp9DQpTdHJpbmcucHJvdG90eXBlLkJOID0gZnVu", + "Y3Rpb24oc2V0Tikgew0KCWlmICggc2V0TiA9PSB1bmRlZmluZWQgKQ0KCQlyZXR1cm4gdGhp", + "cy5nZXRCYXNlTmFtZSgpOw0KCXJldHVybiBtYWtlUGF0aCh0aGlzLmdldFBhcmVudFBhdGgo", + "KSwgc2V0TiArICIuIiArIHRoaXMuZ2V0RXh0KCkgKTsNCn0NClN0cmluZy5wcm90b3R5cGUu", + "UEEgPSBTdHJpbmcucHJvdG90eXBlLlBSID0gZnVuY3Rpb24oc2V0Tikgew0KCWlmICggc2V0", + "TiA9PSB1bmRlZmluZWQgKQ0KCQlyZXR1cm4gdGhpcy5nZXRQYXJlbnRQYXRoKCk7DQoJcmV0", + "dXJuIG1ha2VQYXRoKHNldE4sIHRoaXMuZ2V0RmlsZU5hbWUoKSk7DQp9DQpTdHJpbmcucHJv", + "dG90eXBlLkRSID0gZnVuY3Rpb24oc2V0Tikgew0KCWlmICggc2V0TiA9PSB1bmRlZmluZWQg", + "KQ0KCQlyZXR1cm4gdGhpcy5nZXREcml2ZSgpOw0KCXJldHVybiBtYWtlUGF0aCggKHRoaXMu", + "Z2V0UGFyZW50UGF0aCgpKS5yZXBsYWNlKHRoaXMuZ2V0RHJpdmUoKSxzZXROKSwgIHRoaXMu", + "Z2V0RmlsZU5hbWUoKSApOw0KfQ0KU3RyaW5nLnByb3RvdHlwZS5FWCA9IGZ1bmN0aW9uKHNl", + "dE4pIHsNCglpZiAoIHNldE4gPT0gdW5kZWZpbmVkICkgDQoJCXJldHVybiB0aGlzLmdldEV4", + "dCgpOw0KCXJldHVybiBtYWtlUGF0aCh0aGlzLmdldFBhcmVudFBhdGgoKSwgIHRoaXMuZ2V0", + "QmFzZU5hbWUoKSArICIuIiArIHNldE4pOw0KfQ0KClN0cmluZy5wcm90b3R5cGUudXAgPSBm", + "dW5jdGlvbihzZXROKSB7DQoJaWYgKCBzZXROID09IHVuZGVmaW5lZCApIHsgDQoJCWlmICgg", + "dGhpcyA9PSAiIiApIA0KCQkJcmV0dXJuIHRoaXM7CgkJcmV0dXJuIHRoaXMuUFIoKTsNCgl9", + "DQoJcmV0dXJuIHRoaXMuRk4oc2V0Tik7Cn0NClN0cmluZy5wcm90b3R5cGUuZG93biA9IGZ1", + "bmN0aW9uKHNldE4pIHsNCglpZiAoIHNldE4gPT0gdW5kZWZpbmVkICkNCgkJcmV0dXJuIHRo", + "aXM7DQoJdmFyIHY9W107DQoJZm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2krKykJ", + "CgkJdi5wdXNoKGFyZ3VtZW50c1tpXSk7DQoJcmV0dXJuICggdGhpcyArICJcXCIgKyB2Lmpv", + "aW4oIlxcIikgKTsNCgkKfQ0KDQoKDQpTdHJpbmcucHJvdG90eXBlLmlzRXhpc3RGaWxlID0g", + "ZnVuY3Rpb24oKXtyZXR1cm4gZnNvLkZpbGVFeGlzdHMoZnNvLkdldEFic29sdXRlUGF0aE5h", + "bWUodGhpcykpO30NClN0cmluZy5wcm90b3R5cGUuaXNFeGlzdEZvbGRlciA9IGZ1bmN0aW9u", + "KCl7cmV0dXJuIGZzby5Gb2xkZXJFeGlzdHMoZnNvLkdldEFic29sdXRlUGF0aE5hbWUodGhp", + "cykpO30NClN0cmluZy5wcm90b3R5cGUuaXNFeGlzdCA9IGZ1bmN0aW9uKCl7CglpZiAoIHRo", + "aXMuaXNFeGlzdEZvbGRlcigpIHx8IHRoaXMuaXNFeGlzdEZpbGUoKSApCXJldHVybiB0cnVl", + "Ow0KCXJldHVybiBmYWxzZTsNCn0NCg0KCg0KJGdsb2JhbC5nZXRDdXJyZW50UGF0aCA9IGZ1", + "bmN0aW9uKGFkZHBhdGgpIHsNCiAgICByZXR1cm4od3MuU2NyaXB0RnVsbE5hbWUucmVwbGFj", + "ZSh3cy5TY3JpcHROYW1lLCFhZGRwYXRoPyIiOmFkZHBhdGgpKTsNCn0NCg0KaWYgKCAwICkg", + "ew0KCgpBcnJheS5wcm90b3R5cGUudW5pcSA9IGZ1bmN0aW9uKCl7DQogICAgdmFyIHRhID0g", + "dGhpcy5zb3J0KCk7DQogICAgdmFyIHJhID0gbmV3IEFycmF5KCk7DQogICAgdmFyIHRsID0g", + "bnVsbDsNCiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdGEubGVuZ3RoIDsgaSsrKXsNCiAgICAg", + "ICAgaWYodGwgIT0gdGFbaV0pew0KICAgICAgICAgICAgdGwgPSB0YVtpXTtyYS5wdXNoKHRs", + "KTsNCiAgICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gcmE7DQp9Ow0KCkFycmF5LnByb3Rv", + "dHlwZS5tZXJnZSA9IGZ1bmN0aW9uKHYpew0KICAgIGZvcih2YXIgaSA9IDA7IGkgPCB2Lmxl", + "bmd0aCA7IGkrKyl7DQogICAgICAgIHRoaXMucHVzaCh2W2ldKTsNCiAgICB9DQogICAgcmV0", + "dXJuIHRoaXM7DQp9Ow0KDQoKQXJyYXkucHJvdG90eXBlLmVjaG8gPSBmdW5jdGlvbigpew0K", + "ICAgIGZvcih2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aCA7IGkrKyl7DQogICAgICAgIHBy", + "aW50bG4odGhpc1tpXSk7DQogICAgfQ0KICAgIHJldHVybiBmYWxzZTsNCn07DQoKQXJyYXku", + "cHJvdG90eXBlLnB1dHMgPSBmdW5jdGlvbigpew0KICAgIHRoaXMuZWNobygpDQp9Ow0KDQp9", + "Cg0KCg0KJGdsb2JhbC5yZXBsYWNlRXh0ID0gZnVuY3Rpb24oZmlsZU5hbWUsZXh0KQ0Kew0K", + "CXZhciByZT0vXC4oW15cLl0qKSQvOw0KCXJldHVybigNCgkJZmlsZU5hbWUucmVwbGFjZShy", + "ZSwiIikgKyBleHQgDQoJKTsNCn0NCgoNCiRnbG9iYWwuZ2V0RXh0ID0gZnVuY3Rpb24oZmls", + "ZU5hbWUpIHsNCiAgaWYgKCFmaWxlTmFtZSkgew0KICAgIHJldHVybiAiIjsNCiAgfQ0KICB2", + "YXIgZmlsZVR5cGVzID0gZmlsZU5hbWUuc3BsaXQoIi4iKTsNCiAgdmFyIGxlbiA9IGZpbGVU", + "eXBlcy5sZW5ndGg7DQogIGlmIChsZW4gPT09IDApIHsNCiAgICByZXR1cm4gIiI7DQogIH0N", + "CiAgcmV0dXJuIGZpbGVUeXBlc1tsZW4tMV07DQp9DQoKDQoKDQokZ2xvYmFsLm1ha2VBcmcg", + "PSBmdW5jdGlvbihhcmd1bWVudHNPYmplY3QpIHsNCgkKCWlmICggYXJndW1lbnRzT2JqZWN0", + "ID09IHVuZGVmaW5lZCApIHsNCgkJYXJndW1lbnRzT2JqZWN0ID0gV1NjcmlwdC5Bcmd1bWVu", + "dHM7DQoJfQ0KCXZhciBhcmdzID0gYXJndW1lbnRzT2JqZWN0Ow0KCXZhciBvYmogPSB7fTsN", + "CglvYmouZmxnID0gImkiOwkJCglvYmouYXJnVmFsdWUgPSBbXTsJCgkKCQoJdmFyIGlzV1NG", + "bGcgPSBmYWxzZTsNCg0KCXRyeSB7DQoJCWlmICggV1NjcmlwdC5Bcmd1bWVudHMgPT0gYXJn", + "cykgeyAKCQkJaXNXU0ZsZyA9IHRydWU7DQoJCX0gZWxzZSBpZiAoIGFyZ3MgaW5zdGFuY2Vv", + "ZiBBcnJheSApewoJCQk7DQoJCX0gZWxzZSB7IAoJCQk7DQoJCX0NCgl9IGNhdGNoKGUpew0K", + "CQk7Cgl9DQoJZm9yKHZhciBpID0gMDtpIDwgYXJncy5sZW5ndGg7IGkrKyApIHsNCgkJb2Jq", + "LmFyZ1ZhbHVlW2ldID0gKGlzV1NGbGcpID8gYXJncyhpKSA6IGFyZ3NbaV07DQoJfQ0KCQ0K", + "CXZhciBkZWxLZXkgPSAiL19ERUxFVEVfS0VZXyI7DQoJb2JqLmdldExlbiA9IGZ1bmN0aW9u", + "KCkgeyANCgkJCgkJdmFyIGNudCA9IDA7DQoJCWZvcih2YXIgaT0wO2k8b2JqLmFyZ1ZhbHVl", + "Lmxlbmd0aDtpKyspew0KCQkJaWYgKCBvYmouYXJnVmFsdWVbaV0gPT0gZGVsS2V5ICkgew0K", + "CQkJCWNvbnRpbnVlOwoJCQl9DQoJCQljbnQrKw0KCQl9DQoJCXJldHVybiBjbnQ7DQoJCQoJ", + "fTsNCglvYmouZ2V0ViA9IGZ1bmN0aW9uKCBuICkgew0KCQkKCQl2YXIgY250PTA7DQoJCWZv", + "cih2YXIgaT0wO2k8b2JqLmFyZ1ZhbHVlLmxlbmd0aDtpKyspew0KCQkJaWYgKCBvYmouYXJn", + "VmFsdWVbaV0gPT0gZGVsS2V5ICkgew0KCQkJCWNvbnRpbnVlOwoJCQl9DQoJCQlpZiAoIG4g", + "PT0gY250ICkgew0KCQkJCXJldHVybiBvYmouYXJnVmFsdWVbaV07DQoJCQl9DQoJCQljbnQr", + "Kw0KCQl9DQoJCXJldHVybiBudWxsOw0KDQoJCQoJCQoJCQoJCQoJfTsNCglvYmouaXNFeGlz", + "dCA9IGZ1bmN0aW9uKCBrZXlQYXR0ZXJuICkgew0KCQkKCQl2YXIgdXNlVmFsID0gZmFsc2UN", + "CgkJcGF0UiAgPSAiXltcXC8tXSsoIiArIGtleVBhdHRlcm4gKyAiKSQiOwkKCQl2YXIgcmUg", + "PSBuZXcgUmVnRXhwKHBhdFIsb2JqLmZsZyk7DQoJCXZhciBhciA9IG51bGw7DQoJCWZvcih2", + "YXIgaSBpbiBvYmouYXJnVmFsdWUgKXsNCgkJCWFyID0gcmUuZXhlYyhvYmouYXJnVmFsdWVb", + "aV0pDQoJCQlpZiAoIGFyICE9IG51bGwgKSANCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQly", + "ZXR1cm4gZmFsc2U7DQoJfQ0KCW9iai5zZXRDYXNlID0gZnVuY3Rpb24oYikgew0KCQlpZiAo", + "IGIgPT0gdHJ1ZSApIHsNCgkJCW9iai5mbGcgPSAiIjsgCgkJfSBlbHNlIHsNCgkJCW9iai5m", + "bGcgPSAiaSI7DQoJCX0NCgl9DQoJb2JqLmdldCA9IGZ1bmN0aW9uKCBrZXlQYXR0ZXJuLCB2", + "YWxQYXR0ZXJuICkgew0KCQkKCQl2YXIgcGF0Ow0KCQl2YXIgdXNlVmFsID0gdHJ1ZTsNCgkJ", + "dmFyIGJGaW5kS2V5ID0gZmFsc2U7DQoJCWlmICggYXJndW1lbnRzLmxlbmd0aCA8IDIgKSB7", + "CgkJCXVzZVZhbCA9IGZhbHNlOw0KCQkJdmFsUGF0dGVybiA9ICIiOw0KCQl9DQoJCXZhciBi", + "VmFsQXJyYXkgPSAodHlwZU9mKHZhbFBhdHRlcm4pID09ICJhcnJheSIpOw0KCQl2YXIgYlZh", + "bE1hcCA9ICh0eXBlT2YodmFsUGF0dGVybikgPT0gIm9iamVjdCIpOw0KDQoJCWtleVBhdHRl", + "cm4gPSBrZXlQYXR0ZXJuLnJlcGxhY2UoL15bXC8tXS8sIiIpOwoJCXBhdCA9ICJeW1xcLy1d", + "KCIgKyBrZXlQYXR0ZXJuICsgIikkIjsJCgkJdmFyIHJlID0gbmV3IFJlZ0V4cChwYXQsb2Jq", + "LmZsZyk7DQoNCgkJCgkJdmFyIHJlViA9IFtdOwoJCWlmIChiVmFsQXJyYXl8YlZhbE1hcCkg", + "ew0KCQkJZWFjaCh2YWxQYXR0ZXJuLGZ1bmN0aW9uKGksdil7CgkJCQlpZiAoIHYgPT0gIioi", + "ICkgdiA9ICIuKiI7DQoJCQkJdmFyIHJlOw0KCQkJCXRyeSB7DQoJCQkJCXJlID0gUmVnRXhw", + "KHYsb2JqLmZsZyk7DQoJCQkJfSBjYXRjaChlKSB7DQoJCQkJCWVjaG8oIndhcm5pbmcgTkcg", + "cmVndWxlclBhdHRlcm4iLHYpOw0KCQkJCQlyZSA9IFJlZ0V4cCgiLioiLG9iai5mbGcpOw0K", + "CQkJCX0NCgkJCQlyZVYucHVzaChyZSApOw0KCQkJfSk7DQoJCX0gZWxzZSB7DQoJCQlyZVYu", + "cHVzaChuZXcgUmVnRXhwKHZhbFBhdHRlcm4sb2JqLmZsZykgKTsNCgkJfQ0KCQl2YXIgYXIg", + "PSBudWxsOw0KCQl2YXIgY250ID0gMDsNCgkJdmFyIHZlYyA9IG9iai5hcmdWYWx1ZTsNCgkJ", + "dmFyIGRlbEtleSA9ICIvX0RFTEVURV9LRVlfIjsNCgkJdmFyIGdldE51bUV4aXN0TmV4dFBh", + "cmFtID0gZnVuY3Rpb24obHN0LG9mZil7CgkJCXZhciBjb3VudD0wOw0KCQkJZm9yKHZhciBp", + "ID0gb2ZmOyBpIDwgbHN0Lmxlbmd0aDtpKyspew0KCQkJCWlmICggZGVsS2V5ID09IGxzdFtp", + "XSApDQoJCQkJCWJyZWFrOw0KCQkJCWNvdW50Kys7DQoJCQl9DQoJCQlyZXR1cm4gY291bnQ7", + "DQoJCX0NCgkJZm9yKGNudCA9MDsgY250IDwgdmVjLmxlbmd0aDtjbnQrKyl7DQoJCQlpZiAo", + "IChhcj1yZS5leGVjKHZlY1tjbnRdKSk9PW51bGwpew0KCQkJCWNvbnRpbnVlOw0KCQkJfQ0K", + "CQkJYkZpbmRLZXkgPSB0cnVlOw0KCQkJYnJlYWs7DQoJCX0NCgkJaWYgKCFiRmluZEtleSl7", + "CQkKCQkJcmV0dXJuIHVuZGVmaW5lZDsNCgkJfQ0KCQl2ZWNbY250XSA9IGRlbEtleTsJCgkJ", + "CgkJCg0KCQlpZiAoIXVzZVZhbCl7CQkKCQkJcmV0dXJuIHRydWU7DQoJCX0NCgkJDQoJCWlm", + "IChnZXROdW1FeGlzdE5leHRQYXJhbSh2ZWMsY250KzEpID09IDAgKSB7CgkJCXJldHVybiB1", + "bmRlZmluZWQ7DQoJCX0NCgkJY250Kz0xOwoNCgkJaWYgKCBiVmFsQXJyYXkgKSB7DQoJCQkK", + "CQkJdmFyIHBhcmFtVmVjPVtdOw0KCQkJd2hpbGUodmVjLmxlbmd0aCA+IGNudCApIHsNCgkJ", + "CQlpZiAoIC9eW1wtXC9dJC8udGVzdCh2ZWNbY250XSkgKSB7DQoJCQkJCQoJCQkJCXZhciB2", + "ID0gdmVjLnNwbGljZShjbnQsMSk7DQoJCQkJCW9iai5sZW5ndGggPSBvYmouZ2V0TGVuKCk7", + "DQoJCQkJCWJyZWFrOw0KCQkJCX0NCgkJCQlpZiAoIC9eW1wtXC9dW14wLTlcLlwsXS8udGVz", + "dCh2ZWNbY250XSkgKQoJCQkJCWJyZWFrOwoJCQkJdmFyIHYgPSB2ZWMuc3BsaWNlKGNudCwx", + "KTsgIAoJCQkJb2JqLmxlbmd0aCA9IG9iai5nZXRMZW4oKTsNCgkJCQlwYXJhbVZlYy5wdXNo", + "KHYpOw0KCQkJfQ0KCQkJcmV0dXJuIHBhcmFtVmVjOwkKCQl9IGVsc2UgaWYgKCBiVmFsTWFw", + "ICkgew0KCQkJCgkJCXZhciBwYXJhbU1hcD17fTsNCgkJCQoJCQllYWNoKHZhbFBhdHRlcm4s", + "ZnVuY3Rpb24oayx2KSB7DQoJCQkJaWYgKCAhKHZlYy5sZW5ndGggPiBjbnQgKSApDQoJCQkJ", + "CXJldHVybiBmYWxzZTsKCQkJCWlmICggL15bXC1cL11bXjAtOVwuXCxdLy50ZXN0KHZlY1tj", + "bnRdKSApIHsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9DQoJCQkJcGFyYW1NYXBba10gPSB2", + "ZWMuc3BsaWNlKGNudCwxKTsKCQkJCW9iai5sZW5ndGggPSBvYmouZ2V0TGVuKCk7DQoJCQl9", + "KTsNCgkJCXJldHVybiBwYXJhbU1hcDsgCgkJfSBlbHNlIHsNCgkJCQoJCQkKCQkJCgkJCQoJ", + "CQkKCQkJdmFyIGFyID0gW3ZlY1tjbnRdXTsNCgkJCQoJCQl2ZWMuc3BsaWNlKGNudCwxKTsg", + "IAoJCQlvYmoubGVuZ3RoID0gb2JqLmdldExlbigpOw0KCQkJcmV0dXJuICggYXJbMF0gKTsJ", + "CgkJfQ0KCX0NCglvYmoubGVuZ3RoID0gb2JqLmdldExlbigpOw0KCXJldHVybiBvYmo7DQp9", + "DQoNCgoNCiRnbG9iYWwudVBhcmFtPWZ1bmN0aW9uKHBhcmFtRGVmKXsNCgl2YXIgdXBtT2Jq", + "ID0ge30NCgl2YXIgd2sgPSAocGFyYW1EZWY9PXVuZGVmaW5lZCkgPyB7fSA6IHBhcmFtRGVm", + "OwoJdXBtT2JqLnBhcmFtRGVmID0gd2s7DQoJdXBtT2JqLnRndE4gPSAiIjsKCXVwbU9iai5j", + "YXNlRmxnID0gZmFsc2U7Cgl1cG1PYmouc2V0Q2FzZSA9IGZ1bmN0aW9uKGIpIAl7dXBtT2Jq", + "LmNhc2VGbGc9YjtyZXR1cm4gdXBtT2JqO307DQoNCgl1cG1PYmouc2V0ID0gZnVuY3Rpb24o", + "a2V5TmFtZSkgCXt1cG1PYmoudGd0Tj1rZXlOYW1lO3drW2tleU5hbWVdPXt9O3JldHVybiB1", + "cG1PYmo7fTsNCgl1cG1PYmoub3B0ID0gZnVuY3Rpb24ob3B0TmFtZSkgCXt3a1t1cG1PYmou", + "dGd0Tl0ub3B0ICA9IG9wdE5hbWU7IHJldHVybiB1cG1PYmo7fTsNCgl1cG1PYmoubmV4dCA9", + "IGZ1bmN0aW9uKG5leHROYW1lKXt3a1t1cG1PYmoudGd0Tl0ubmV4dCA9IG5leHROYW1lOyBy", + "ZXR1cm4gdXBtT2JqO307DQoJdXBtT2JqLmluaXQgPSBmdW5jdGlvbihpbml0TmFtZSl7d2tb", + "dXBtT2JqLnRndE5dLmluaXQgPSBpbml0TmFtZTsgcmV0dXJuIHVwbU9iajt9Ow0KCXVwbU9i", + "ai5kZXNjID0gZnVuY3Rpb24oZGVzY05hbWUpe3drW3VwbU9iai50Z3ROXS5kZXNjID0gZGVz", + "Y05hbWU7IHJldHVybiB1cG1PYmo7fTsNCgl1cG1PYmoucmVhZCA9IGZ1bmN0aW9uKCl7DQoJ", + "CXZhciBvdFBtID0gW107DQoJCQoJCXZhciBwRGVmID0gdXBtT2JqLnBhcmFtRGVmOw0KCQkK", + "CQlmdW5jdGlvbiBtYWtlVXNhZ2UoZGljKXsNCgkJCQoJCQl2YXIgc3RyVXNhZ2UgPSBnZXRF", + "bnYoKS5leGVQYXRoLkJOKCk7DQoJCQl2YXIgdmVjU3ViID0gW107DQoJCQl2YXIgc3RyVXNh", + "Z2VEZXNjID0gIiI7DQoJCQlmb3IoIHZhciBrIGluIGRpYyApIHsNCgkJCQlpZiAoIGsgPT0g", + "InVzYWdlIiApIHsNCgkJCQkJc3RyVXNhZ2VEZXNjID0gZGljW2tdWyJkZXNjIl07DQoJCQkJ", + "CWNvbnRpbnVlOw0KCQkJCX0NCgkJCQlpZiAoIGsgPT0gIl9kdW1wIiApIGNvbnRpbnVlOw0K", + "CQkJCXZhciBwZCA9IGRpY1trXTsNCgkJCQlpZiAoIGlzT2socGQub3B0KSApew0KCQkJCQlz", + "dHJVc2FnZSArPSAiICIgKyBwZC5vcHQ7DQoJCQkJfQ0KCQkJCWlmICggayA9PSAiKiIgKSB7", + "CgkJCQkJc3RyVXNhZ2UgKz0gIiAiICsgIioiOw0KCQkJCX0NCgkJCQlpZiAoIGlzT2socGQu", + "bmV4dCkgKXsNCgkJCQkJc3RyVXNhZ2UgKz0gIiA8IiArIGsgKyAiPiI7DQoJCQkJfQ0KCQkJ", + "CWlmICggaXNPayhwZC5kZXNjKSApew0KCQkJCQl2YXIgb3B0ID0gaXNPayhwZC5vcHQpPyBw", + "ZC5vcHQ6IioiOw0KCQkJCQl2YXIgc3NzID0gc3ByaW50ZigiIC0gJS0xMHMgJS0xNXMgOiUt", + "cyIsDQoJCQkJCQlvcHQsDQoJCQkJCQkoaXNPayhwZC5uZXh0KSA/ICgiIDwiK2srIj4gIik6", + "IiAiKSwNCgkJCQkJCXBkLmRlc2MNCgkJCQkJKTsNCgkJCQkJdmVjU3ViLnB1c2goc3NzKTsN", + "CgkJCQl9DQoJCQl9DQoJCQkKCQkJZWNobyhzdHJVc2FnZSk7DQoJCQlpZiAoIGlzT2soc3Ry", + "VXNhZ2VEZXNjKSApew0KCQkJCWVjaG8oIiogIixzdHJVc2FnZURlc2MpOw0KCQkJfQ0KCQkJ", + "Zm9yKHZhciBpPTA7aTx2ZWNTdWIubGVuZ3RoO2krKyl7DQoJCQkJZWNobyh2ZWNTdWJbaV0p", + "Ow0KCQkJfQ0KCQl9CgkJdmFyIGFnID0gbWFrZUFyZygpOw0KCQkNCgkJaWYgKCBhZy5pc0V4", + "aXN0KCJcXD8iKSApewoJCQltYWtlVXNhZ2UocERlZik7DQoJCQlleGl0KDApOw0KCQl9DQoJ", + "CQ0KCQlhZy5zZXRDYXNlKHVwbU9iai5jYXNlRmxnKTsNCg0KCQkKCQl1UGFyYW0uYkFkbWlu", + "ID0gaXNPayhhZy5nZXQoIi9fYWRtaW5SZWJvb3QiKSApOwoJCQoNCgkJZm9yKCB2YXIgayBp", + "biBwRGVmICkgew0KCQkJdmFyIHB2ID0gcERlZltrXTsNCgkJCWlmICggayA9PSAidXNhZ2Ui", + "ICkgew0KCQkJCQoJCQkJY29udGludWU7DQoJCQl9DQoJCQlpZiAoIGsgPT0gIioiICkgew0K", + "CQkJCWNvbnRpbnVlOw0KCQkJfQ0KCQkJdmFyIG9wdF89cHZbIm9wdCJdLG5leHRfPXB2WyJu", + "ZXh0Il0saW5pdF89cHZbImluaXQiXSxkZXNjXz1wdlsiZGVzYyJdOw0KCQkJdmFyIGJGbGdN", + "b2RlPSAhKCJuZXh0IiBpbiBwdik7DQoJDQoJCQkKCQkJCg0KCQkJdmFyIHYgPSB1bmRlZmlu", + "ZWQ7CQkNCgkJCWlmICggYkZsZ01vZGUpIHsKCQkJCXYgPSBhZy5nZXQob3B0Xyk7CgkJCQlp", + "ZiAoICh2ID09IG51bGwpICYmIChpbml0XyAhPSB1bmRlZmluZWQpICl7CgkJCQkJdiA9IGlz", + "T2soaW5pdF8pOw0KCQkJCX0NCgkJCQlvdFBtW2tdPWlzT2sodik7CgkJCX0gZWxzZSB7IAoJ", + "CQkJaWYgKCBuZXh0XyA9PT0gIioiKSBuZXh0XyA9ICIuKiI7CgkJCQl2ID0gYWcuZ2V0KG9w", + "dF8sbmV4dF8pOw0KCQkNCgkJCQkKCQkJCQoNCgkJCQkKCQkJCQoJCQkJCgkJCQkKCQkJCQ0K", + "DQoJCQkJZnVuY3Rpb24gY2FzdERhdGEodiwgbmV4dFYsIGluaXRWKSB7DQoJCQkJCXZhciB2", + "VHlwZSA9IHR5cGVPZih2KTsNCgkJCQkJdmFyIG5leHRUeXBlID0gdHlwZU9mKG5leHRWKTsN", + "CgkJCQkJdmFyIGluaXRUeXBlID0gdHlwZU9mKGluaXRWKTsNCgkJCQkJCgkJCQkJdmFyIGp1", + "ZGdlVHlwZSA9IGluaXRUeXBlICE9ICJ1bmRlZmluZWQiID8gaW5pdFR5cGUgOiBuZXh0VHlw", + "ZTsNCgkJCQkJdmFyIGp1ZGdlViAJID0gaW5pdFR5cGUgIT0gInVuZGVmaW5lZCIgPyBpbml0", + "ViA6IG5leHRWOw0KCQkJCQkKCQkJCQlpZiAoIHZUeXBlID09PSAidW5kZWZpbmVkIiApIHsN", + "CgkJCQkJCXJldHVybiAoIGp1ZGdlViApOw0KCQkJCQl9DQoJCQkJCQoJCQkJCWlmICggdlR5", + "cGUgPT09ICJhcnJheSIgKSB7DQoJCQkJCQlpZiAoIGp1ZGdlVHlwZSAhPSAiYXJyYXkiICkg", + "ew0KCQkJCQkJCQoJCQkJCQkJcmV0dXJuIHY7DQoJCQkJCQl9DQoJCQkJCQlmb3IodmFyIGk9", + "MDsgaSA8IHYubGVuZ3RoOyBpKyspew0KCQkJCQkJCQoJCQkJCQkJdltpXSA9IGNhc3REYXRh", + "KHZbaV0sanVkZ2VWLHVuZGVmaW5lZCk7DQoJCQkJCQl9DQoJCQkJCQlyZXR1cm4gdjsNCgkJ", + "CQkJfSANCgkJCQkJCgkJCQkJaWYgKCB2VHlwZSA9PT0gIm9iamVjdCIgKSB7DQoJCQkJCQlp", + "ZiAoIGp1ZGdlVHlwZSAhPSAib2JqZWN0IiApIHsNCgkJCQkJCQkKCQkJCQkJCXJldHVybiB2", + "Ow0KCQkJCQkJfQ0KCQkJCQkJZm9yKHZhciBrIGluIHYgKSB7DQoJCQkJCQkJCgkJCQkJCQl2", + "W2tdID0gY2FzdERhdGEodltrXSxqdWRnZVYsdW5kZWZpbmVkKTsNCgkJCQkJCX0NCgkJCQkJ", + "CXJldHVybiB2Ow0KCQkJCQl9DQoJCQkJCQoJCQkJCWlmICggaW5pdFR5cGUgIT0gInVuZGVm", + "aW5lZCIpIHsNCgkJCQkJCXYgPSBnZXRDYXN0RnVuYyhpbml0VHlwZSkodik7CgkJCQkJfSBl", + "bHNlIHsNCgkJCQkJCXYgPSBnZXRDYXN0RnVuYyhuZXh0VHlwZSkodik7CgkJCQkJfQ0KCQkJ", + "CQlyZXR1cm4gdjsNCgkJCQkJZnVuY3Rpb24gZ2V0Q2FzdEZ1bmMoc1R5cGUpew0KCQkJCQkJ", + "ZnVuY3Rpb24gdGhydUZ1bmModikge3JldHVybiB2O307DQoJCQkJCQlmdW5jdGlvbiBudW1i", + "ZXJGdW5jKHYpIHsgdmFyIHI7IHJldHVybiAoaXNOYU4ocj1OdW1iZXIodikpPyB2IDogcik7", + "fTsKCQkJCQkJZnVuY3Rpb24gYm9vbEZ1bmModikgeyByZXR1cm4gKCAoL14oMHxGfEZhbHNl", + "fE9mZikvaSkudGVzdCh2KSA/IGZhbHNlIDogdHJ1ZSk7fTsNCgkJCQkJCXN3aXRjaChzVHlw", + "ZSkgew0KCQkJCQkJIGNhc2UgIm51bWJlciI6CXJldHVybiBudW1iZXJGdW5jOw0KCQkJCQkJ", + "IGNhc2UgImJvb2xlYW4iOiByZXR1cm4gYm9vbEZ1bmM7DQoJCQkJCQkgY2FzZSAiYXJyYXki", + "OiAJcmV0dXJuIHRocnVGdW5jOwoJCQkJCQkgY2FzZSAib2JqZWN0IjoJcmV0dXJuIHRocnVG", + "dW5jOwoJCQkJCQkgZGVmYXVsdDogCQlyZXR1cm4gU3RyaW5nOw0KCQkJCQkJfQ0KCQkJCQkJ", + "cmV0dXJuIFN0cmluZzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQkKCQkJCQoJCQkJdiA9IGNhc3RE", + "YXRhKHYsIG5leHRfLCBpbml0Xyk7DQoJCQkJCgkJCQlzd2l0Y2godHlwZU9mKHYpKXsNCgkJ", + "CQkgIGNhc2UgImFycmF5IjoNCgkJCQkJICBmb3IodmFyIGk9MDsgaTx2Lmxlbmd0aDsgaSsr", + "ICkgew0KCQkJCQkJICBpZiAoIHR5cGVPZih2W2ldKSA9PSAiYXJyYXkiICkgIA0KCQkJCQkJ", + "IAkgdltpXT12W2ldWzBdOwoJCQkJCSAgfQ0KCQkJCSAgY2FzZSAib2JqZWN0IjoNCgkJCQkJ", + "Zm9yKHZhciBrZXkgaW4gdiApIHsNCgkJCQkJCWlmICggdHlwZU9mKHZba2V5XSkgPT0gImFy", + "cmF5IiApICANCgkJCQkJCQl2W2tleV09dltrZXldWzBdOwoJCQkJCX0NCgkJCQkJYnJlYWs7", + "DQoJCQkJfQ0KCQkJCW90UG1ba109djsNCgkJCQkKCQkJfQ0KCQl9DQoJCQoJCXZhciBkZWxL", + "ZXkgPSAiL19ERUxFVEVfS0VZXyI7DQoJCXZhciBvdENvdW50PTA7DQoJCWZvcih2YXIgaT0w", + "O2k8YWcuZ2V0TGVuKCk7aSsrKXsNCgkJCXZhciByZWFsViA9IGFnLmdldFYoaSk7DQoJCQlp", + "ZiAoIHJlYWxWID09IGRlbEtleSApDQoJCQkJY29udGludWU7DQoJCQlvdFBtW290Q291bnQr", + "K109IHJlYWxWOw0KCQkJCgkJfQ0KCQkKCQlvdFBtLl9kdW1wID0gZnVuY3Rpb24oKSB7DQoJ", + "CQllY2hvKCI8PDwgZHVtcCBhcmd1bWVudHMgPj4+PiIpOw0KCQkJZm9yKHZhciBrIGluIG90", + "UG0pew0KCQkJCWlmICggayA9PSAiX2R1bXAiIHx8IGsgPT0gInVzYWdlIiApIGNvbnRpbnVl", + "Ow0KCQkJCXZhciBrdiA9ICgvXGQrLy50ZXN0KGspKT8gKCJbIitrKyJdIikgOiAoIi4iK2sp", + "Ow0KCQkJCXZhciB0ID0gdHlwZU9mKG90UG1ba10pOw0KCQkJCXZhciB2PSIiOw0KCQkJCXN3", + "aXRjaCh0KXsNCgkJCQkgY2FzZSAiZnVuY3Rpb24iOnY9KCJmdW5jdGlvbiAiK2t2KyIoKSIp", + "O2JyZWFrOw0KCQkJCSBjYXNlICJvYmplY3QiOg0KCQkJCQl2PVtdOw0KCQkJCQllYWNoKG90", + "UG1ba10sZnVuY3Rpb24oaWksdnYpeyB2LnB1c2goaWkrIjoiK3Z2KTt9KTsNCgkJCQkJdiA9", + "ICJ7IiArIHYuam9pbigiLCIpICsgIn0iOw0KCQkJCQl0ID0gIm1hcCI7DQoJCQkJCWJyZWFr", + "Ow0KCQkJCSBkZWZhdWx0Og0KCQkJCQl2ID0gb3RQbVtrXTsNCgkJCQl9DQoJCQkJZWNobygg", + "IHNwcmludGYoIiUtMTJzICUtMTBzICUtMTBzIDolLXMiLCBrdiwgIlsiK2dldE9wdE5hbWUo", + "aykrIl0gIiwgIigiK3QrIikiLHYpICk7DQoJCQkJCgkJCX0NCgkJCXJldHVybjsNCgkJCWZ1", + "bmN0aW9uIGdldE9wdE5hbWUoa2V5KSB7DQoJCQkJdmFyIG07DQoJCQkJaWYgKCAhKGtleSBp", + "biB1cG1PYmoucGFyYW1EZWYpICkgDQoJCQkJCXJldHVybiAiIjsNCgkJCQltID0gdXBtT2Jq", + "LnBhcmFtRGVmW2tleV07DQoJCQkJaWYgKCAhKCJvcHQiIGluIG0pICkgDQoJCQkJCXJldHVy", + "biAiIjsNCgkJCQlyZXR1cm4gbVsib3B0Il07DQoJCQl9DQoJCX0gCgkJb3RQbS51c2FnZSA9", + "IGZ1bmN0aW9uKCl7IG1ha2VVc2FnZShwRGVmKTt9DQoJCXJldHVybiBvdFBtOw0KCQkKCX0g", + "CglyZXR1cm4gdXBtT2JqOw0KfQ0KCg0KJGdsb2JhbC5pc0VudW0gPSBmdW5jdGlvbiAob2Jq", + "LGVudW1UeXBlICkgew0KCQoJaWYgKCBlbnVtVHlwZSA9PSB1bmRlZmluZWQgKSB7DQoJCWVu", + "dW1UeXBlID0gImFsbCI7DQoJfQ0KCQoJc3dpdGNoKCB0eXBlb2Yob2JqKSApIHsNCgkgIGNh", + "c2UgIm51bWJlciI6Y2FzZSAic3RyaW5nIjpjYXNlICJib29sZWFuIjoNCgkgIGNhc2UgImZ1", + "bmN0aW9uIjpjYXNlICJ1bmRlZmluZWQiOg0KCSAgCXJldHVybiBmYWxzZTsNCgl9DQoJCgkK", + "CQoJc3dpdGNoKCBlbnVtVHlwZSApIHsNCgkgIGNhc2UgImFsbCI6CQlyZXR1cm4gdHJ1ZTsN", + "CgkgIGNhc2UgImFycmF5IjoJCXJldHVybiAob2JqIGluc3RhbmNlb2YgQXJyYXkpOw0KCSAg", + "Y2FzZSAiYXJndW1lbnRzIjoJcmV0dXJuICgoImNhbGxlZSIgaW4gb2JqKSYmKCJsZW5ndGgi", + "IGluIG9iaikpOw0KCSAgY2FzZSAiY29sbGVjdGlvbiI6cmV0dXJuICgoIkl0ZW0iIGluIG9i", + "aikgJiYgKCJDb3VudCIgaW4gb2JqKSk7DQoJICBjYXNlICJlbnVtcmF0b3IiOiByZXR1cm4g", + "KG9iaiBpbnN0YW5jZW9mIEVudW1lcmF0b3IpOw0KCeOAgGNhc2UgIm9iamVjdERpYyI6DQoJ", + "CQoJCWlmIChpc0VudW0ob2JqLCJhcnJheSIpKSByZXR1cm4gZmFsc2U7DQoJCWlmIChpc0Vu", + "dW0ob2JqLCJhcmd1bWVudHMiKSkgcmV0dXJuIGZhbHNlOw0KCQlpZiAoaXNFbnVtKG9iaiwi", + "Y29sbGVjdGlvbiIpKSByZXR1cm4gZmFsc2U7DQoJCWlmIChpc0VudW0ob2JqLCJlbnVtcmF0", + "b3IiKSkgcmV0dXJuIGZhbHNlOw0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoJZWNobygiV2Fybmlu", + "ZzogaXNFbnVtIGVudW1UeXBlIG5vdCBtYXRjaDoiLGVudW1UeXBlKTsNCglyZXR1cm4gZmFs", + "c2U7DQp9DQoNCgoNCg0KCgoNCiRnbG9iYWwuZWFjaCA9IGZ1bmN0aW9uKG9iaiwgY2FsbGJh", + "Y2spIHsNCgl2YXIgdGd0ID0gb2JqOw0KCXZhciBzdCA9IHRydWU7DQoJCglpZiAoICEoaXNF", + "bnVtKG9iail8fCh0eXBlT2Yob2JqKT09InN0cmluZyIpKSApIHsNCgkJcmV0dXJuIGZhbHNl", + "OwoJfSANCglpZiAoIGlzRW51bShvYmosImFycmF5IikgfHwgaXNFbnVtKG9iaiwiYXJndW1l", + "bnRzIikgKXsNCgkJCgkJZm9yICh2YXIgaT0wO2k8b2JqLmxlbmd0aDtpKyspIHsNCgkJCXN0", + "ID0gY2FsbGJhY2suY2FsbChvYmpbaV0sIGksIG9ialtpXSwgb2JqKTsgDQoJCQlpZiAoIHN0", + "ID09PSBmYWxzZSkNCgkJCQlicmVhazsNCgkJfQ0KCQlyZXR1cm4gc3Q7DQoJfSBlbHNlIGlm", + "ICggaXNFbnVtKG9iaiwiY29sbGVjdGlvbiIpIHx8IGlzRW51bShvYmosImVudW1yYXRvciIp", + "ICkgew0KCQkKCQl2YXIgZW4gPSAob2JqIGluc3RhbmNlb2YgRW51bWVyYXRvcikgPyBvYmog", + "OiAobmV3IEVudW1lcmF0b3Iob2JqKSk7DQoJCXZhciBpID0gMDsNCgkJZm9yIChlbi5tb3Zl", + "Rmlyc3QoKTsgIWVuLmF0RW5kKCk7IGVuLm1vdmVOZXh0KCksaSsrKSB7DQoJCQlzdCA9IGNh", + "bGxiYWNrLmNhbGwoZW4uaXRlbSgpLCBpLCBlbi5pdGVtKCkpOyANCgkJCWlmICggc3QgPT09", + "IGZhbHNlKQ0KCQkJCWJyZWFrOw0KCQl9DQoJCXJldHVybiBzdDsNCgl9IGVsc2UgaWYgKCB0", + "eXBlT2Yob2JqKSA9PSAic3RyaW5nIikgew0KCQkJCgkJCWZvciAodmFyIGk9MDtpPG9iai5s", + "ZW5ndGg7aSsrKSB7DQoJCQkJdmFyIGMgPSBvYmouY2hhckF0KGkpOw0KCQkJCXN0ID0gY2Fs", + "bGJhY2suY2FsbChjLCBpLCBjLCBvYmopOyANCgkJCQlpZiAoIHN0ID09PSBmYWxzZSkNCgkJ", + "CQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gc3Q7DQoJfSBlbHNlIHsNCgkJCgkJZm9yICh2", + "YXIgayBpbiBvYmopIHsNCgkJCWlmICggKCJoYXNPd25Qcm9wZXJ0eSIgaW4gb2JqKSAmJiAo", + "IW9iai5oYXNPd25Qcm9wZXJ0eShrKSkgKSB7DQoJCQkJY29udGludWU7DQoJCQl9DQoJCQlp", + "ZiAoIHR5cGVPZihvYmpba10pID09ICJmdW5jdGlvbiIgKSAKCQkJCWNvbnRpbnVlOw0KCQkJ", + "c3QgPSBjYWxsYmFjay5jYWxsKG9ialtrXSwgaywgb2JqW2tdLCBvYmopOw0KCQkJaWYgKCBz", + "dCA9PT0gZmFsc2UgKQ0KCQkJCWJyZWFrOw0KCQl9DQoJCXJldHVybiBzdDsNCgl9DQp9DQoN", + "CgokZ2xvYmFsLmdldE5vZGUgPSBmdW5jdGlvbihvYmoscGF0KSB7DQoNCgl2YXIgbyA9IG9i", + "ajsNCgl2YXIgdmVjID0gcGF0LnNwbGl0KCIvIik7DQoJZW51bU9LID0gZnVuY3Rpb24oa2V5", + "LG9iaikgeyB0cnl7cmV0dXJuKChrZXkgaW4gb2JqKSA/IG9ialtrZXldIDogbnVsbCk7fSBj", + "YXRjaChlKXtyZXR1cm4gbnVsbDt9fTsNCglpZiAoIHZlY1swXSA9PSAiKiIgKSB7DQoJCQoJ", + "CWVjaG8oImR1bXAiKTsNCgkJdmFyIG5vZGVTdHI9W10sIGR1bXBEYXRhPVtdOw0KCQlmdW5j", + "dGlvbiByRnVuYyhpbmRleCx2YWx1ZSkgew0KCQkJbm9kZVN0ci5wdXNoKGluZGV4KTsNCgkJ", + "CWVjaG8oIm5vZGU6Iixub2RlU3RyLmpvaW4oIiAiKSk7DQoJCQlpZiAoICFpc0VudW0odmFs", + "dWUpICkgew0KCQkJCWR1bXBEYXRhLnB1c2gobm9kZVN0ci5qb2luKCIvIikpOwoJCQl9IGVs", + "c2Ugew0KCQkJCWVhY2godmFsdWUsckZ1bmMpOw0KCQkJfQ0KCQkJbm9kZVN0ci5wb3AoKTsN", + "CgkJfQ0KCQllYWNoKG9iaixyRnVuYyk7DQoJCXJldHVybiBkdW1wRGF0YTsNCgl9DQoJZm9y", + "KHZhciBpPTA7aTx2ZWMubGVuZ3RoOyBpKyspew0KCQl2YXIgdiA9IHZlY1tpXTsNCgkJaWYg", + "KCB2ID09ICIiICkgY29udGludWU7DQoJCQoJCW8gPSBlbnVtT0sodixvKTsNCgkJaWYgKCBp", + "c05vbmUobykgKXsNCgkJCXJldHVybiBudWxsOwoJCX0NCgl9DQoJcmV0dXJuIG87DQp9DQoN", + "CgokZ2xvYmFsLmRvQ21kID0gZnVuY3Rpb24gKHNDbWRMaW5lcykgew0KDQoJaWYgKCB0eXBl", + "T2Yoc0NtZExpbmVzKSA9PSAiYXJyYXkiICkgew0KCQkKCQlyZXR1cm4gKGFyZ3VtZW50cy5j", + "YWxsZWUuYXBwbHkobnVsbCxzQ21kTGluZXMpKTsNCgl9DQoJdmFyIG9iaiA9IG5ldyBPYmpl", + "Y3QoKTsNCgl2YXIgc0FkZENtZHM9IiI7DQoJdmFyIGJFY2hvID0gdHJ1ZSwgc3RkaW5EYXRh", + "ID0gdW5kZWZpbmVkOyBiUmVkaXJlY3RFcnIgPSB1bmRlZmluZWQ7DQoJdmFyIGJDT01TUEVD", + "ID0gdHJ1ZTsgDQoJdmFyIGJTUVVPVEEgPSBmYWxzZTsgDQoJdmFyIG5BcmdDb3VudD0wOw0K", + "CWlmICgxKSB7DQoJCQoJCQoJCWZvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKysp", + "IHsNCgkJCWlmICggdHlwZW9mKGFyZ3VtZW50c1tpXSkgPT0gIm9iamVjdCIgKSBjb250aW51", + "ZTsNCgkJCW5BcmdDb3VudCsrOw0KCQl9DQoJfQ0KCXZhciBiRmlyc3RDbWQgPSB0cnVlOw0K", + "CWZvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspIHsNCgkJaWYgKCBpc0VudW0o", + "YXJndW1lbnRzW2ldKSAmJiAodHlwZW9mKGFyZ3VtZW50c1tpXSkgPT0gIm9iamVjdCIpICkg", + "ewoJCQlvcHRzID0gYXJndW1lbnRzW2ldOw0KCQkJYkVjaG8JCT0gKCJlY2hvIiAgaW4gb3B0", + "cykgPyBvcHRzWyJlY2hvIl0gIDogYkVjaG87DQoJCQlzdGRpbkRhdGEgCT0gKCJzdGRpbiIg", + "aW4gb3B0cykgPyBvcHRzWyJzdGRpbiJdIDogc3RkaW5EYXRhOw0KCQkJYlJlZGlyZWN0RXJy", + "ID0gKCJyZWRpcmVjdEVyciIgaW4gb3B0cykgPyBvcHRzWyJyZWRpcmVjdEVyciJdIDogYlJl", + "ZGlyZWN0RXJyOw0KCQkJYkNPTVNQRUMJID0gKCJjb21zcGVjIiBpbiBvcHRzKSA/IG9wdHNb", + "ImNvbXNwZWMiXSA6IGJDT01TUEVDOw0KCQkJYlNRVU9UQQkgCT0gICgic3F1YXRhIiBpbiBv", + "cHRzKSA/IG9wdHNbInNxdWF0YSJdIDogYlNRVU9UQTsNCgkJCWNvbnRpbnVlOw0KCQl9DQoJ", + "CWlmICggc0FkZENtZHMgIT0gIiIgKSBzQWRkQ21kcyArPSAiICI7IAoJCWlmICggYkZpcnN0", + "Q21kICkgew0KCQkJc0FkZENtZHMgKz0gKCBuQXJnQ291bnQgPT0gMSApPyhhcmd1bWVudHNb", + "aV0pOm11c3RRdW90YShhcmd1bWVudHNbaV0pOw0KCQkJYkZpcnN0Q21kID0gZmFsc2U7DQoJ", + "CX0gZWxzZSB7DQoJCQlpZiAoIGJTUVVPVEEgKSB7DQoJCQkJc0FkZENtZHMgKz0gKCBuQXJn", + "Q291bnQgPT0gMSApPyhhcmd1bWVudHNbaV0pOm11c3RRdW90YShhcmd1bWVudHNbaV0sIlwn", + "Iik7DQoJCQl9IGVsc2Ugew0KCQkJCXNBZGRDbWRzICs9ICggbkFyZ0NvdW50ID09IDEgKT8o", + "YXJndW1lbnRzW2ldKTptdXN0UXVvdGEoYXJndW1lbnRzW2ldKTsNCgkJCX0NCgkJfQ0KCX0N", + "Cgl2YXIgc0NtZHMgPSBiQ09NU1BFQyA/ICIlQ09NU1BFQyUgL0MgIiA6IiI7DQoJc0NtZHMg", + "Kz0gc0FkZENtZHM7DQoJaWYgKCBiUmVkaXJlY3RFcnIgKSB7DQoJCXNDbWRzICs9IiAyPiYx", + "IjsNCgl9DQoJdmFyIG9FeGVjID0gc2guRXhlYyhzQ21kcyk7DQoNCgkKCWlmICggc3RkaW5E", + "YXRhIT11bmRlZmluZWQpIHsNCgkJb0V4ZWMuU3RkSW4uV3JpdGUoc3RkaW5EYXRhKTsNCgkJ", + "b0V4ZWMuU3RkSW4uQ2xvc2UoKTsKCX0NCgkKCW9iai5Nc2cgCQk9IFtdOwkKCW9iai5FeGl0", + "Q29kZQk9IDA7CQoJCgkKCQoJCglmdW5jdGlvbiBpc0F0RW5kT2ZTKCBzdHJtICkgew0KCQkK", + "CQkKCQkKCQlyZXR1cm4gc3RybS5BdEVuZE9mU3RyZWFtOw0KCX0NCgl3aGlsZSgxKSB7DQoJ", + "CQoJCQoJCQoNCgkJaWYgKCBpc0F0RW5kT2ZTKG9FeGVjLlN0ZE91dCkgJiYgaXNBdEVuZE9m", + "UyhvRXhlYy5TdGRFcnIpICkgew0KCQoJCQlicmVhazsKCQl9DQoNCgkJd2hpbGUoIWlzQXRF", + "bmRPZlMob0V4ZWMuU3RkT3V0KSl7DQoJCQkKCQkJCgkJCQoJCQkKCQkJdmFyIGxpbmUgPSBv", + "RXhlYy5TdGRPdXQuUmVhZExpbmUoKTsNCgkJCW9iai5Nc2cucHVzaCggbGluZSApOw0KCQkJ", + "aWYgKCBiRWNobyApIHByaW50bG4obGluZSk7DQoJCX0NCgkJCgkJd2hpbGUoIWlzQXRFbmRP", + "ZlMob0V4ZWMuU3RkRXJyKSl7DQoJCQkKCQkJdmFyIGxpbmUgPSBvRXhlYy5TdGRFcnIuUmVh", + "ZExpbmUoKTsNCgkJCW9iai5Nc2cucHVzaCggbGluZSApOw0KCQkJaWYgKCBiRWNobyApIHBy", + "aW50bG4obGluZSk7DQoJCX0NCgkJaWYgKCBvRXhlYy5TdGF0dXMgIT0gMCApIA0KCQkJYnJl", + "YWs7DQoJfQ0KCXdoaWxlKG9FeGVjLlN0YXR1cyA9PSAwICkgewoJCVdTY3JpcHQuU2xlZXAo", + "MTAwKTsNCgl9DQoJb2JqLkV4aXRDb2RlPW9FeGVjLkV4aXRDb2RlOw0KCQoJb2JqLmV4aXRD", + "b2RlID0gb2JqLkV4aXRDb2RlOw0KCW9iai5tc2cgPSBvYmouTXNnOw0KCXJldHVybiBvYmo7", + "DQp9DQoNCgoKCg0KJGdsb2JhbC5kb0V4ZWNXYWl0ID0gZnVuY3Rpb24gKHNDbWRMaW5lcykg", + "ew0KDQoJdmFyIGJFY2hvID0gZG9FeGVjV2FpdC5wcm90b3R5cGUuYkVjaG87DQoNCgl2YXIg", + "b2JqID0gbmV3IE9iamVjdCgpOw0KCXZhciBzQ21kcyA9ICJDTUQuRVhFIC9DICI7DQoJCgkK", + "CXZhciBxRnVuYyA9IChhcmd1bWVudHMubGVuZ3RoPT0xKT9mdW5jdGlvbihhKXtyZXR1cm4g", + "YTt9Om11c3RRdW90YTsNCglmb3IodmFyIGk9MDtpPGFyZ3VtZW50cy5sZW5ndGgtMTtpKysp", + "IHsNCgkJc0NtZHMgKz0gcUZ1bmMoYXJndW1lbnRzW2ldKSArICIgIjsNCgkJCgl9DQoJc0Nt", + "ZHMgKz0gcUZ1bmMoYXJndW1lbnRzW2ldKTsKCXNDbWRzICs9IiAyPiYxIg0KCQ0KCXZhciBv", + "RXhlYyA9IHNoLkV4ZWMoc0NtZHMpOw0KCW9iai5TdHJPdXQgPSBuZXcgQXJyYXk7DQoJCglv", + "RXhlYy5TdGRJbi5Xcml0ZUxpbmUoZG9FeGVjV2FpdC5wcm90b3R5cGUuc3RyUGF1c2UpOw0K", + "DQoJdmFyIGkgPSAwOw0KCXZhciBsZW4gPSAwOw0KCXdoaWxlKCFvRXhlYy5TdGRPdXQuQXRF", + "bmRPZlN0cmVhbSl7DQoJCWxlbiA9IG9iai5TdHJPdXQucHVzaCggb0V4ZWMuU3RkT3V0LlJl", + "YWRMaW5lKCkgKTsNCgkJaWYoYkVjaG8pIHsNCgkJCWVjaG8ob2JqLlN0ck91dFtsZW4tMV0p", + "Ow0KCQl9DQoJfQ0KCXdoaWxlKCFvRXhlYy5TdGRFcnIuQXRFbmRPZlN0cmVhbSl7DQoJCW9i", + "ai5TdHJPdXQucHVzaCggb0V4ZWMuU3RkRXJyLlJlYWRMaW5lKCkgKTsNCgkJaWYoYkVjaG8p", + "IHsNCgkJCWVjaG8ob2JqLlN0ck91dFtsZW4tMV0pOw0KCQl9DQoJfQ0KCXdoaWxlKG9FeGVj", + "LlN0YXR1cyA9PSAwICkgew0KCQkKCQlXU2NyaXB0LlNsZWVwKDEwMCk7DQoJfQ0KCW9iai5F", + "eGl0Q29kZSA9IG9FeGVjLkV4aXRDb2RlOw0KCQoJb2JqLmV4aXRDb2RlID0gb2JqLkV4aXRD", + "b2RlOw0KCW9iai5tc2cgPSBvYmouU3RyT3V0Ow0KDQoJcmV0dXJuIG9iajsNCn0NCg0KJGds", + "b2JhbC5kb0V4ZWNXYWl0LnByb3RvdHlwZS5iRWNobyA9IGZhbHNlOw0KJGdsb2JhbC5kb0V4", + "ZWNXYWl0LnByb3RvdHlwZS5zdHJQYXVzZSA9ICJ5eXlcbiI7IAoNCg0KCg0KCg0KDQoKZnVu", + "Y3Rpb24gX2luaXRFbmNUYWJsZXMoKSB7DQoJaWYgKCB0eXBlb2YoX21hcERlZkVuY29kaW5n", + "KSAhPSAidW5kZWZpbmVkIiApDQoJIAlyZXR1cm47CgkKCXZhciBlbmNUYmwgPSANCgl7CQoJ", + "CSJVVEY4IgkJOlsidXRmLThuIiwJCSJ1dGYtOCIsCQkidXRmLThuIl0sCgkJIlVURjhCT00i", + "CTpbInV0Zi04Qk9NIiAJCQkJCQkJXSwKCQkiVVRGMTZMRSIJOlsidW5pY29kZSIsIAkidW5p", + "Y29kZUZGRkUiLCAgInV0Zi0xNkxFIl0sCgkJIlVURjE2QkUiCTpbInVuaWNvZGVGRUZGIiwi", + "dXRmLTE2QkUiCQkJCV0sCgkJIlNKSVMiCQk6WyJzaGlmdC1qaXMiCSwiU2hpZnRKSVMiCQkJ", + "CV0sCgkJIlVOS05PV04iCTpbXQ0KCX07DQoJdmFyIGVuY1RibFJldiA9IHt9Ow0KCWVhY2go", + "ZW5jVGJsLGZ1bmN0aW9uKGssYXIpew0KCQllbmNUYmxSZXZba109azsKCQllYWNoKGFyLGZ1", + "bmN0aW9uKGksdil7DQoJCQllbmNUYmxSZXZbdl09azsNCgkJfSk7DQoJfSk7DQoJX21hcERl", + "ZkVuY29kaW5nPWVuY1RibDsNCglfbWFwRGVmRW5jb2RpbmdSZXY9ZW5jVGJsUmV2Ow0KfQ0K", + "ZnVuY3Rpb24gZ2V0RnVsbEVuY01hcCgpew0KCV9pbml0RW5jVGFibGVzKCk7DQoJdmFyIG1h", + "cD17fTsNCgllYWNoKF9tYXBEZWZFbmNvZGluZ1JldixmdW5jdGlvbihrLHYpew0KCQlpZiAo", + "IGsgPT0gIlVOS05PV04iICkgcmV0dXJuOw0KCQltYXBba109djsNCgl9KTsNCglyZXR1cm4g", + "bWFwOw0KfQ0KZnVuY3Rpb24gdG9FbmMoIGFsbEVuYyApIHsNCgoJX2luaXRFbmNUYWJsZXMo", + "KTsNCgl2YXIgcmV2VGJsID0gX21hcERlZkVuY29kaW5nUmV2Ow0KCWlmICggYWxsRW5jIGlu", + "IHJldlRibCApIHsNCgkJcmV0dXJuIChyZXZUYmxbYWxsRW5jXSk7DQoJfQ0KCQoJdmFyIGlB", + "bGxFbmMgPSBhbGxFbmMudG9Mb3dlckNhc2UoKTsNCgl2YXIgYk1hdGNoPWZhbHNlLCByZXRF", + "bmM7DQoJZWFjaChyZXZUYmwsZnVuY3Rpb24oayx2KXsNCgkJdmFyIGlrID0gay50b0xvd2Vy", + "Q2FzZShrKTsNCgkJaWYgKCBpayA9PSBpQWxsRW5jICl7DQoJCQliTWF0Y2g9dHJ1ZTtyZXRF", + "bmMgPSB2Ow0KCQkJcmV0dXJuIGZhbHNlOwoJCX0NCgl9KTsNCglpZiAoYk1hdGNoKXsNCgkJ", + "cmV0dXJuIHJldEVuYzsNCgl9DQoJcmV0dXJuICJVTktOT1dOIjsNCn0NCmZ1bmN0aW9uIHRv", + "RW5jQURPKCBhbGxFbmMgKSB7DQoJCglfaW5pdEVuY1RhYmxlcygpOw0KCQoJdmFyIGRlZkVu", + "YyA9IHRvRW5jKGFsbEVuYyk7DQoJdmFyIGFyID0gX21hcERlZkVuY29kaW5nW2RlZkVuY107", + "DQoJaWYgKCBhci5sZW5ndGggPiAwICkgew0KCQlyZXR1cm4gYXJbMF07DQoJfSBlbHNlIHsN", + "CgkJcmV0dXJuICJVTktOT1dOIg0KCX0NCn0NCiRnbG9iYWwuZ2V0RnVsbEVuY01hcCAJPSBn", + "ZXRGdWxsRW5jTWFwOw0KJGdsb2JhbC50b0VuYyAJCQk9IHRvRW5jOw0KJGdsb2JhbC50b0Vu", + "Y0FETyAJCT0gdG9FbmNBRE8NCg0KCg0KCg0KDQoNCiANCiRnbG9iYWwuZ2V0U0pJU29yVVRG", + "OCA9IGZ1bmN0aW9uKGxlbiwgYiAsZGVmYXVsdFYpIHsNCgl2YXIgY29uU0pJUz0iU0pJUyIs", + "Y29uVVRGOD0iVVRGOCI7Cgl2YXIgcmV0ID0gICh0eXBlb2YgZGVmYXVsdFYgPT0gJ3VuZGVm", + "aW5lZCcpID8gY29uU0pJUyA6ZGVmYXVsdFYgOwoJCglpZihsZW4gPCAyKQ0KCQlyZXR1cm4g", + "cmV0OyANCglpZiggKGIoMCk9PSAweEVGKSAmJiAoYigxKSA9PSAweEJCKSAmJiAoYigyKSA9", + "PSAweEJGKSApDQoJCXJldHVybiBjb25VVEY4OwoJdmFyIHNqaXMgPSAwOw0KCWZvcih2YXIg", + "aSA9IDA7IGkgPCBsZW4tMjsgaSsrKSB7DQoJICB2YXIgYjEgPSBiKGkpLCBiMiA9IGIoaSsx", + "KTsNCgkgIGlmKCAoICgweDgxIDw9IGIxICYmIGIxIDw9IDB4OUYpIHx8ICgweEUwIDw9IGIx", + "ICYmIGIxIDw9IDB4RkMpICkgJiYNCgkJICAoICgweDQwIDw9IGIyICYmIGIyIDw9IDB4N0Up", + "IHx8ICgweDgwIDw9IGIyICYmIGIyIDw9IDB4RkMpICkgKSB7DQoJCXNqaXMgKz0gMjtpKys7", + "DQoJICB9DQoJfQ0KCXZhciB1dGY4ID0gMDsNCglmb3IodmFyIGkgPSAwOyBpIDwgbGVuLTI7", + "IGkrKykgew0KCSAgdmFyIGIxID0gYihpKSwgYjIgPSBiKGkrMSk7DQoJICBpZiggKDB4QzAg", + "PD0gYjEgJiYgYjEgPD0gMHhERikgJiYNCgkJICAoMHg4MCA8PSBiMiAmJiBiMiA8PSAweEJG", + "KSApIHsNCgkJdXRmOCArPSAyOyBpKys7DQoJICB9IGVsc2UgaWYoaSA8IGxlbi0yKSB7DQoJ", + "CXZhciBiMyA9IGIoaSsyKTsNCgkJaWYoICgweEUwIDw9IGIxICYmIGIxIDw9IDB4RUYpICYm", + "DQoJCQkoMHg4MCA8PSBiMiAmJiBiMiA8PSAweEJGKSAmJg0KCQkJKDB4ODAgPD0gYjMgJiYg", + "YjMgPD0gMHhCRikgKSB7DQoJCSAgdXRmOCArPSAzOyBpICs9IDI7DQoJCX0NCgkgIH0NCgl9", + "DQoJaWYoc2ppcyA+IHV0ZjgpIA0KCSAgcmV0dXJuIGNvblNKSVM7DQoJaWYodXRmOCA+IHNq", + "aXMpIA0KCSAgcmV0dXJuIGNvblVURjg7DQoJcmV0dXJuIHJldDsKfQ0KDQoNClN0cmluZy5w", + "cm90b3R5cGUuZ2V0RW5jb2RlPWZ1bmN0aW9uKGJEZXRhaWwpDQp7DQoJaWYoISh0aGlzLmlz", + "RXhpc3RGaWxlKCkpKSByZVRocm93KCJnZXRFbmNvZGUiLCJub3QgZXhpdCIsdGhpcyk7DQoN", + "Cgl2YXIgaGV4ID0gdGhpcy5yZWFkQmluKDIpOw0KCWlmICggaGV4WzBdPT0weEVGICYmIGhl", + "eFsxXT09MHhCQiApIHsgCgkJcmV0dXJuKCJVVEY4Qk9NIik7DQoJCWVUeXBlPSAidXRmLThC", + "T00iOwkJCgkJCgkJCgkJcmV0dXJuKGVUeXBlKTsNCgl9IGVsc2UgaWYgKGhleFswXT09MHhG", + "RSAmJiBoZXhbMV09PTB4RkYgKSB7IAoJCXJldHVybigiVVRGMTZCRSIpOw0KCQllVHlwZSA9", + "ICJ1bmljb2RlRkVGRiI7CgkJcmV0dXJuKGVUeXBlKTsNCgl9IGVsc2UgaWYgKGhleFswXT09", + "MHhGRiAmJiBoZXhbMV09PTB4RkUpICB7IAoJCXJldHVybigiVVRGMTZMRSIpOw0KCQllVHlw", + "ZSA9ICJ1bmljb2RlIjsKCQlyZXR1cm4oZVR5cGUpOw0KCX1lbHNlIHsNCgkJZVR5cGUgPSAi", + "U0pJUyI7Cgl9DQoJaWYgKCBiRGV0YWlsICE9IHRydWUgKSB7DQoJCXJldHVybiBlVHlwZTsJ", + "Cgl9DQoJCgl2YXIgYmluU3RyID0gdGhpcy5yZWFkQmluU3RyKDEwMjQpOwoJdmFyIGNrID0g", + "Z2V0U0pJU29yVVRGOChiaW5TdHIubGVuZ3RoLGZ1bmN0aW9uKGkpIHtyZXR1cm4gYmluU3Ry", + "LmNoYXJDb2RlQXQoaSk7fSwiU0pJUyIpOw0KCWJpblN0ciA9IHVuZGVmaW5lZDsNCglyZXR1", + "cm4gY2s7IAoNCn0NCg0KU3RyaW5nLnByb3RvdHlwZS5yZWFkQWxsPWZ1bmN0aW9uKCkNCnsN", + "CglpZighKHRoaXMuaXNFeGlzdEZpbGUoKSkpIHJlVGhyb3coInJlYWRBbGwiLCJub3QgZXhp", + "dCIsdGhpcyk7DQoNCgl2YXIgZiA9IGZzby5PcGVuVGV4dEZpbGUodGhpcyxpb21vZGUuRm9y", + "UmVhZGluZyk7DQoJdmFyIHJlYWRTdHIgPSAiIjsNCgl0cnkgeyAKCQlyZWFkU3RyPWYuUmVh", + "ZEFsbCgpOw0KCX0gY2F0Y2goZSkgew0KCQllY2hvKCJXYXJuaW5nOiIsZSk7DQoJCXJlYWRT", + "dHI9Jyc7DQoJfQ0KCWYuQ2xvc2UoKTsNCglyZXR1cm4ocmVhZFN0cik7DQp9DQoNClN0cmlu", + "Zy5wcm90b3R5cGUud3JpdGVBbGw9ZnVuY3Rpb24oc3RyKQ0Kew0KCXRyeSB7DQoJCXZhciBi", + "T3ZlcndyaXRlPXRydWU7DQoJCXZhciBiVW5pY29kZT1mYWxzZTsNCgkJdmFyIGYgPSBmc28u", + "Q3JlYXRlVGV4dEZpbGUodGhpcyxiT3ZlcndyaXRlLGJVbmljb2RlKTsNCg0KCQl2YXIgb3RT", + "dHIgPSBzdHIucmVwbGFjZSgvXHJcbnxcbi9nLCJcclxuIik7CgkJCgkJZi5Xcml0ZShvdFN0", + "cik7DQoJCW90U3RyPW51bGw7DQoJCQ0KCQlmLkNsb3NlKCk7DQoJfSBjYXRjaChlKSB7DQoJ", + "CXJlVGhyb3coIndyaXRlQWxsIix0aGlzLGUpOw0KCX0NCglyZXR1cm4gdHJ1ZTsNCn0NClN0", + "cmluZy5wcm90b3R5cGUud3JpdGVBbGxBZGQ9ZnVuY3Rpb24oc3RyKQ0Kew0KCXRyeSB7DQoJ", + "CXZhciBiVW5pY29kZT1mYWxzZTsNCgkJdmFyIGYgPSBmc28uT3BlblRleHRGaWxlKHRoaXMs", + "OCx0cnVlKTsNCg0KCQl2YXIgb3RTdHIgPSBzdHIucmVwbGFjZSgvXHJcbnxcbi9nLCJcclxu", + "Iik7CgkJZi5Xcml0ZShvdFN0cik7DQoJCW90U3RyPW51bGw7DQoJCWYuQ2xvc2UoKTsNCgl9", + "IGNhdGNoKGUpIHsNCgkJcmVUaHJvdygid3JpdGVBbGxBZGQiLHRoaXMsZSk7DQoJfQ0KCXJl", + "dHVybiB0cnVlOw0KfQ0KDQoNClN0cmluZy5wcm90b3R5cGUucmVhZEFsbFVURjg9ZnVuY3Rp", + "b24oKSB7DQoJaWYoISh0aGlzLmlzRXhpc3RGaWxlKCkpKSByZVRocm93KCJyZWFkQWxsVVRG", + "OCIsIm5vdCBleGl0Iix0aGlzKTsNCg0KCXZhciBhZG9kYiA9IFdTY3JpcHQuQ3JlYXRlT2Jq", + "ZWN0KCJBRE9EQi5TdHJlYW0iKTsNCglhZG9kYi5UeXBlID0gMjsgCglhZG9kYi5jaGFyc2V0", + "ID0gIlVURi04IjsNCglhZG9kYi5vcGVuKCk7DQoJYWRvZGIubG9hZEZyb21GaWxlKHRoaXMp", + "Ow0KCXZhciBzdHJUZXh0ID0gYWRvZGIuUmVhZFRleHQoLTEpOwoJYWRvZGIuY2xvc2UoKTsN", + "CglhZG9kYj1udWxsOw0KCXJldHVybiBzdHJUZXh0Ow0KfQ0KU3RyaW5nLnByb3RvdHlwZS53", + "cml0ZUFsbFVURjg9ZnVuY3Rpb24oc1RleHQpIHsNCgl2YXIgYWRvZGIgPSBXU2NyaXB0LkNy", + "ZWF0ZU9iamVjdCgiQURPREIuU3RyZWFtIik7DQoJYWRvZGIuVHlwZSA9IDI7IAoJYWRvZGIu", + "Y2hhcnNldCA9ICJVVEYtOCI7DQoJYWRvZGIub3BlbigpOw0KDQoJdmFyIG90U3RyID0gc1Rl", + "eHQucmVwbGFjZSgvXHJcbnxcbi9nLCJcclxuIik7Cg0KCWFkb2RiLldyaXRlVGV4dChvdFN0", + "ciwwKTsgCQkKCWFkb2RiLlNhdmVUb0ZpbGUodGhpcywgMik7CQoJYWRvZGIuY2xvc2UoKTsN", + "CglhZG9kYj1udWxsOw0KCXJldHVybiB0cnVlOw0KfQ0KU3RyaW5nLnByb3RvdHlwZS53cml0", + "ZUFsbFVURjhBZGQ9ZnVuY3Rpb24oc1RleHQpIHsNCgl2YXIgc1ByZVRleHQgPSB0aGlzLnJl", + "YWRBbGxVVEY4KCk7DQoJdmFyIGFkb2RiID0gV1NjcmlwdC5DcmVhdGVPYmplY3QoIkFET0RC", + "LlN0cmVhbSIpOw0KCWFkb2RiLlR5cGUgPSAyOyAKCWFkb2RiLmNoYXJzZXQgPSAiVVRGLTgi", + "Ow0KCWFkb2RiLm9wZW4oKTsNCglpZiAoIHNQcmVUZXh0ICE9IG51bGwgKSB7DQoJCWFkb2Ri", + "LldyaXRlVGV4dChzUHJlVGV4dCwwKTsgCQkKCX0NCg0KCXZhciBvdFN0ciA9IHNUZXh0LnJl", + "cGxhY2UoL1xyXG58XG4vZywiXHJcbiIpOwoNCglhZG9kYi5Xcml0ZVRleHQob3RTdHIsMCk7", + "IAkJCglhZG9kYi5TYXZlVG9GaWxlKHRoaXMsIDIpOwkKCWFkb2RiLmNsb3NlKCk7DQoJYWRv", + "ZGI9bnVsbDsNCglyZXR1cm4gdHJ1ZTsNCn0NCg0KU3RyaW5nLnByb3RvdHlwZS5yZWFkQWxs", + "RW5jb2Rpbmc9ZnVuY3Rpb24oc0VuYykgew0KCXZhciBfRk49InJlYWRBbGxFbmNvZGluZyI7", + "DQoNCglpZighKHRoaXMuaXNFeGlzdEZpbGUoKSkpew0KCQlyZVRocm93KCJyZWFkYWxsRW5j", + "b2RpbmciLCJub3QgZXhpc3Q6Iix0aGlzKTsNCgkJCgl9DQoJaWYgKGlzTm9uZShzRW5jKSkg", + "ew0KCQkKCQlzRW5jPXRoaXMuZ2V0RW5jb2RlKHRydWUpOw0KCX0NCgl2YXIgYWRvZGIgPSBX", + "U2NyaXB0LkNyZWF0ZU9iamVjdCgiQURPREIuU3RyZWFtIik7DQoJYWRvZGIuVHlwZSA9IDI7", + "IAoNCglzRW5jID0gdG9FbmNBRE8oc0VuYyk7CglpZiAoIHNFbmM9PSJVTktOT1dOIiApIHsN", + "CgkJc0VuYz0ic2hpZnQtamlzIjsNCgl9IGVsc2UgaWYgKCBzRW5jID09ICJ1dGYtOG4iICkg", + "ew0KCQlzRW5jID0gIlVURi04IjsNCgl9IGVsc2UgaWYgKCBzRW5jID09ICJ1dGYtOEJPTSIg", + "KSB7DQoJCXNFbmMgPSAiVVRGLTgiOw0KCX0NCgkNCglpZiAoIHNFbmMgPT0gInNoaWZ0LWpp", + "cyIgKXsNCgkJcmV0dXJuKHRoaXMucmVhZEFsbCgpKTsKCX0gZWxzZSBpZiggc0VuYyA9PSAi", + "dW5pY29kZSIgfHwgc0VuYyA9PSAidW5pY29kZUZGRkUiIHx8IHNFbmMgPT0gInVuaWNvZGVG", + "RUZGIiApIHsgCgkJdmFyIGYgPSBmc28uT3BlblRleHRGaWxlKHRoaXMsaW9tb2RlLkZvclJl", + "YWRpbmcsZmFsc2UsLTEgICk7DQoJCXZhciByZWFkU3RyID0gIiI7DQoJCXRyeSB7IHJlYWRT", + "dHI9Zi5SZWFkQWxsKCk7fSBjYXRjaChlKSB7ZWNobygiV2FybmluZzoiLGUpOwlyZWFkU3Ry", + "PScnO30NCgkJZi5DbG9zZSgpOw0KCQlyZXR1cm4ocmVhZFN0cik7DQoJfQ0KCWFkb2RiLmNo", + "YXJzZXQgPSBzRW5jOwoJYWRvZGIub3BlbigpOw0KCWFkb2RiLmxvYWRGcm9tRmlsZSh0aGlz", + "KTsNCgl2YXIgc3RyVGV4dCA9IGFkb2RiLlJlYWRUZXh0KC0xKTsKCWFkb2RiLmNsb3NlKCk7", + "DQoJYWRvZGI9bnVsbDsNCglyZXR1cm4gc3RyVGV4dDsNCn0NClN0cmluZy5wcm90b3R5cGUu", + "d3JpdGVBbGxFbmNvZGluZz1mdW5jdGlvbihzRW5jLHNUZXh0KSB7DQoJaWYgKCBzVGV4dCA9", + "PSB1bmRlZmluZWQgKSB7DQoJCXJlVGhyb3coIndyaXRlQWxsRW5jb2Rpbmc6IiwidGV4dCBp", + "cyBudWxsIik7DQoJfQ0KCXZhciBhZG9kYiA9IFdTY3JpcHQuQ3JlYXRlT2JqZWN0KCJBRE9E", + "Qi5TdHJlYW0iKTsNCglhZG9kYi5UeXBlID0gMjsgCgkKCXZhciBiQm9tRGVsID0gZmFsc2U7", + "Cg0KCXNFbmMgPSB0b0VuY0FETyhzRW5jKTsKCWlmICggc0VuYz09IlVOS05PV04iICkgew0K", + "CQlzRW5jPSJzaGlmdC1qaXMiOw0KCX0gZWxzZSBpZiAoIHNFbmMgPT0gInV0Zi04biIgKSB7", + "DQoJCXNFbmMgPSAiVVRGLTgiOw0KCQliQm9tRGVsID0gdHJ1ZTsNCgl9IGVsc2UgaWYgKCBz", + "RW5jID09ICJ1dGYtOEJPTSIgKSB7DQoJCXNFbmMgPSAiVVRGLTgiOw0KCQliQm9tRGVsID0g", + "ZmFsc2U7DQoJfQ0KCWFkb2RiLmNoYXJzZXQgPSBzRW5jOwoJCglhZG9kYi5vcGVuKCk7DQoJ", + "dmFyIG90U3RyID0gc1RleHQucmVwbGFjZSgvXHJcbnxcbi9nLCJcclxuIik7CglhZG9kYi5X", + "cml0ZVRleHQob3RTdHIsMCk7IAkJCglpZiAoIGJCb21EZWwgKXsNCgkJCgkJdmFyIGFkb0Jp", + "biA9IFdTY3JpcHQuQ3JlYXRlT2JqZWN0KCJBRE9EQi5TdHJlYW0iKTsNCgkJYWRvZGIuUG9z", + "aXRpb24gPSAwOw0KCQlhZG9kYi5UeXBlID0gMTsKCQkKCQlhZG9CaW4ub3BlbigpOw0KCQlh", + "ZG9CaW4uVHlwZSA9IDE7CgkJCgkJYWRvZGIuUmVhZCgzKTsKCQlhZG9kYi5Db3B5VG8oYWRv", + "QmluKTsNCgkJYWRvQmluLlNhdmVUb0ZpbGUodGhpcywgMik7CQoJCWFkb0Jpbi5jbG9zZSgp", + "OwkNCgkJYWRvQmluPW51bGw7DQoJCWFkb2RiLmNsb3NlKCk7DQoJCWFkb2RiPW51bGw7DQoJ", + "CXJldHVybiB0cnVlOw0KCX0gDQoJYWRvZGIuU2F2ZVRvRmlsZSh0aGlzLCAyKTsJCglhZG9k", + "Yi5jbG9zZSgpOw0KCWFkb2RiPW51bGw7DQoJcmV0dXJuIHRydWU7DQp9DQoNCiRnbG9iYWwu", + "cmVhZEJpbiA9IGZ1bmN0aW9uKHNQYXRoLG5CeXRlKSB7DQoJdmFyIGFyQmluPVtdOw0KCXZh", + "ciBiaW5TdHIgPSByZWFkQmluU3RyKHNQYXRoLG5CeXRlKTsNCglmb3IodmFyIGk9MDtpPGJp", + "blN0ci5sZW5ndGg7aSsrKSB7DQoJCWFyQmluW2ldPWJpblN0ci5jaGFyQ29kZUF0KGkpOw0K", + "CX0NCgliaW5TdHIgPSB1bmRlZmluZWQ7DQoJcmV0dXJuIGFyQmluOw0KfQ0KJGdsb2JhbC5y", + "ZWFkQmluU3RyID0gZnVuY3Rpb24oc1BhdGgsbkJ5dGUpIHsNCgkKCQ0KCXZhciBhZFR5cGVC", + "aW5hcnkJPTE7DQoJdmFyIGFkVHlwZVRleHQJCT0yOw0KCQoJdmFyIGJTdHJlYW09V1Njcmlw", + "dC5DcmVhdGVPYmplY3QoIkFET0RCLlN0cmVhbSIpOw0KCQoJYlN0cmVhbS5PcGVuKCk7DQoJ", + "YlN0cmVhbS5UeXBlPWFkVHlwZUJpbmFyeTsNCgliU3RyZWFtLkxvYWRGcm9tRmlsZShzUGF0", + "aCk7DQoJCgl2YXIgdFN0cmVhbT1XU2NyaXB0LkNyZWF0ZU9iamVjdCgiQURPREIuU3RyZWFt", + "Iik7DQoJdFN0cmVhbS5PcGVuKCk7DQoJdFN0cmVhbS5UeXBlPWFkVHlwZVRleHQ7DQoJdFN0", + "cmVhbS5Xcml0ZVRleHQoU3RyaW5nLmZyb21DaGFyQ29kZSgwKSk7DQoJdFN0cmVhbS5Qb3Np", + "dGlvbj0wOw0KCXRTdHJlYW0uVHlwZT1hZFR5cGVCaW5hcnk7DQoJdFN0cmVhbS5Qb3NpdGlv", + "bj0yOw0KCXZhciB6PXRTdHJlYW0uUmVhZCgxKTsJCgl0U3RyZWFtLlBvc2l0aW9uPTI7DQoJ", + "aWYgKCAobkJ5dGU9PXVuZGVmaW5lZCkgfHwgKGJTdHJlYW0uU2l6ZTwgbkJ5dGUpICkgew0K", + "CQluQnl0ZSA9IGJTdHJlYW0uU2l6ZTsgCgl9DQoJZm9yKHZhciBQb3M9MDtQb3M8bkJ5dGU7", + "UG9zKyspew0KCQkKCQliU3RyZWFtLkNvcHlUbyh0U3RyZWFtLDEpOw0KCQl0U3RyZWFtLldy", + "aXRlKHopOw0KCX0NCgl0U3RyZWFtLlBvc2l0aW9uCT0gMDsNCgl0U3RyZWFtLlR5cGUJCT0g", + "YWRUeXBlVGV4dDsNCgl2YXIgYmluU3RyID0gdFN0cmVhbS5SZWFkVGV4dCgpOw0KCWJTdHJl", + "YW09dW5kZWZpbmVkO3RTdHJlYW09dW5kZWZpbmVkOw0KCXJldHVybiBiaW5TdHI7DQp9DQoN", + "Cg0KCg0KU3RyaW5nLnByb3RvdHlwZS5yZWFkQmluID0gZnVuY3Rpb24ocmVhZFNpemVNYXgp", + "e3JldHVybiggcmVhZEJpbih0aGlzLHJlYWRTaXplTWF4KSApO30NClN0cmluZy5wcm90b3R5", + "cGUucmVhZEJpblN0ciA9IGZ1bmN0aW9uKHJlYWRTaXplTWF4KXtyZXR1cm4oIHJlYWRCaW5T", + "dHIodGhpcyxyZWFkU2l6ZU1heCkgKTt9DQoNCgoNClN0cmluZy5wcm90b3R5cGUuc2F2ZUpT", + "T04gPSBmdW5jdGlvbihkYXRhLGZ1bmMpew0KCXZhciBqc29uT2JqOw0KCWlmICh0eXBlb2Yg", + "SlNPTiA9PT0gJ3VuZGVmaW5lZCcgKSB7DQoJCWpzb25PYmogPSB1SnNvbjsNCgl9IGVsc2Ug", + "ew0KCQlqc29uT2JqID0gSlNPTjsNCgl9DQoJdmFyIHBhdGggPSB0aGlzOw0KCXZhciBzSlMg", + "PSBqc29uT2JqLnN0cmluZ2lmeShkYXRhLGZ1bmMsIlx0Iik7DQoJcmV0dXJuICggcGF0aC53", + "cml0ZUFsbChzSlMpICk7DQp9DQpTdHJpbmcucHJvdG90eXBlLnNhdmVKU09OVVRGOCA9IGZ1", + "bmN0aW9uKGRhdGEsZnVuYyl7DQoJdmFyIGpzb25PYmo7DQoJaWYgKHR5cGVvZiBKU09OID09", + "PSAndW5kZWZpbmVkJyApIHsNCgkJanNvbk9iaiA9IHVKc29uOw0KCX0gZWxzZSB7DQoJCWpz", + "b25PYmogPSBKU09OOw0KCX0NCgl2YXIgcGF0aCA9IHRoaXM7DQoJdmFyIHNKUyA9IGpzb25P", + "Ymouc3RyaW5naWZ5KGRhdGEsZnVuYywiXHQiKTsNCgkKCXJldHVybiAoIHBhdGgud3JpdGVB", + "bGxFbmNvZGluZygiVVRGOCIsc0pTKSApOw0KfQ0KU3RyaW5nLnByb3RvdHlwZS5sb2FkSlNP", + "TiA9IGZ1bmN0aW9uKGZ1bmMpew0KCQoJaWYoISh0aGlzLmlzRXhpc3RGaWxlKCkpKSByZVRo", + "cm93KCJsb2FkSlNPTiIsIm5vdCBleGlzdDoiLHRoaXMpOw0KCQ0KCXZhciBwYXRoID0gdGhp", + "czsNCglpZighcGF0aC5pc0V4aXN0RmlsZSgpKQ0KCQlyZXR1cm4gbnVsbDsNCgl2YXIgaGV4", + "ID0gcGF0aC5yZWFkQmluKDIpOwoJdmFyIHNSZWFkOw0KCWlmICggaGV4WzBdID09IDB4RUYg", + "KSB7DQoJCXNSZWFkID0gcGF0aC5yZWFkQWxsVVRGOCgpOwkNCgl9IGVsc2Ugew0KCQlzUmVh", + "ZCA9IHBhdGgucmVhZEFsbFVURjgoKTsKCX0NCgkKCQoJdmFyIGRhdGE9bnVsbDsNCglldmFs", + "KCJkYXRhPSIrc1JlYWQpOw0KCQoNCglyZXR1cm4gKCBkYXRhICk7DQp9DQoNCgoNClN0cmlu", + "Zy5wcm90b3R5cGUucGFyc2VYTUwgPSBmdW5jdGlvbihmdW5jKXsNCgkNCgkKCQ0KCXZhciB4", + "bWxEb2MgPSBXU2NyaXB0LkNyZWF0ZU9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpOw0KCXht", + "bERvYy5hc3luYyA9IGZhbHNlOw0KCXhtbERvYy5sb2FkWE1MKHRoaXMpOw0KCXZhciBsb29w", + "UGFyc2UgPSBmdW5jdGlvbihvYmopew0KCQl2YXIgcmVzID0ge307IA0KCQl2YXIgb2IgPSB7", + "fSwgYXR0ID0gb2JqLmF0dHJpYnV0ZXM7DQoJCWlmIChhdHQgIT0gbnVsbCAmJiBhdHQubGVu", + "Z3RoICE9IDApIHsNCgkJCWZvciAodmFyIGEgPSAwLCBsZW5BID0gYXR0Lmxlbmd0aDsgYSA8", + "IGxlbkE7IGErKykgew0KCQkJICBvYlthdHRbYV0ubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0g", + "PSBhdHRbYV0ubm9kZVZhbHVlOw0KCQkJfQ0KCQkJcmVzLmF0dHIgPSBvYjsNCgkJfQ0KCQlp", + "ZiAob2JqLmNoaWxkTm9kZXMubGVuZ3RoID09IDApIHsNCgkJCXJldHVybiByZXM7CgkJfQ0K", + "CQl2YXIgY2FjaGVUYWcgPSB7fTsgICAgDQoJCWZvciAodmFyIGkgPSAwLCBsZW4gPSBvYmou", + "Y2hpbGROb2Rlcy5sZW5ndGg7IGkgPCBsZW47IGkrKyl7DQoJCQl2YXIgY2ggPSBvYmouY2hp", + "bGROb2Rlc1tpXTsNCgkJCWlmIChjaC5ub2RlVHlwZSA9PSAzKXsgICAgICAKICAgICAgICBp", + "ZiAoY2gubm9kZVZhbHVlLnJlcGxhY2UoL1tcc3xcdHxcbl0vZywgIiIpID09ICIiIHx8DQog", + "ICAgICAgICAgY2gubm9kZVZhbHVlID09IG51bGwpIGNvbnRpbnVlOw0KICAgICAgICBlbHNl", + "IHJldHVybiBjaC5ub2RlVmFsdWU7DQoJCQl9IGVsc2UgaWYgKGNoLm5vZGVUeXBlID09IDEp", + "IHsKICAgICAgICBpZiAoIShjaC50YWdOYW1lIGluIGNhY2hlVGFnKSkgew0KICAgICAgICAg", + "IGNhY2hlVGFnW2NoLnRhZ05hbWVdID0gW2FyZ3VtZW50cy5jYWxsZWUoY2gpXTsNCiAgICAg", + "ICAgfSBlbHNlIHsNCiAgICAgICAgICBjYWNoZVRhZ1tjaC50YWdOYW1lXS5wdXNoKGFyZ3Vt", + "ZW50cy5jYWxsZWUoY2gpKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KCQl9DQoJCXJlcy5kYXRh", + "PXt9Ow0KCQlmb3IgKHZhciBwIGluIGNhY2hlVGFnKSB7DQoJCQlpZiAoY2FjaGVUYWdbcF0u", + "Y29uc3RydWN0b3IgPT0gQXJyYXkgJiYgY2FjaGVUYWdbcF0ubGVuZ3RoID09IDEpIHsNCgkJ", + "CQlyZXMuZGF0YVtwXSA9IGNhY2hlVGFnW3BdWzBdOwoJCQl9IGVsc2Ugew0KCQkJCXJlcy5k", + "YXRhW3BdID0gY2FjaGVUYWdbcF07ICAKCQkJfQ0KCQl9DQoJCXJldHVybiByZXM7DQoJfQ0K", + "CXJldHVybiBsb29wUGFyc2UoeG1sRG9jKTsNCn0NCg0KU3RyaW5nLnByb3RvdHlwZS5wYXJz", + "ZVhNTCA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gWE1MVG9KU09OKHRoaXMpfTsNCg0KZnVuY3Rp", + "b24gWE1MVG9KU09OKHN0clhNTCkNCnsNCiAgdmFyIHhtbERvYyA9IG5ldyBBY3RpdmVYT2Jq", + "ZWN0KCJNaWNyb3NvZnQuWE1MRE9NIik7DQogIHhtbERvYy5hc3luYyA9IGZhbHNlOw0KICB4", + "bWxEb2MubG9hZFhNTChzdHJYTUwpOw0KICB2YXIgbG9vcFBhcnNlID0gZnVuY3Rpb24ob2Jq", + "KQ0KICB7DQogICAgdmFyIHJlcyA9IHt9LCBjYWNoZVRhZyA9IHt9Ow0KICAgIHZhciBvYiA9", + "IHt9LCBhdHQgPSBvYmouYXR0cmlidXRlczsNCiAgICBpZiAoYXR0ICE9IG51bGwgJiYgYXR0", + "Lmxlbmd0aCAhPSAwKQ0KICAgIHsNCiAgICAgIGZvciAodmFyIGEgPSAwLCBsZW5BID0gYXR0", + "Lmxlbmd0aDsgYSA8IGxlbkE7IGErKykNCiAgICAgIHsNCiAgICAgICAgb2JbYXR0W2FdLm5v", + "ZGVOYW1lLnRvTG93ZXJDYXNlKCldID0gYXR0W2FdLm5vZGVWYWx1ZTsNCiAgICAgIH0NCiAg", + "ICAgIHJlcy5fYXR0ciA9IG9iOw0KICAgIH0NCiAgICANCiAgICBpZiAob2JqLmNoaWxkTm9k", + "ZXMubGVuZ3RoID4gMCkNCiAgICB7DQogICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gb2Jq", + "LmNoaWxkTm9kZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspDQogICAgICB7DQogICAgICAgIHZh", + "ciBjaCA9IG9iai5jaGlsZE5vZGVzW2ldOw0KICAgICAgICBpZiAoY2gubm9kZVR5cGUgPT0g", + "MykNCiAgICAgICAgew0KICAgICAgICAgIGlmIChjaC5ub2RlVmFsdWUucmVwbGFjZSgvW1xz", + "fFx0fFxuXS9nLCAiIikgPT0gIiIgfHwNCiAgICAgICAgICAgICAgY2gubm9kZVZhbHVlID09", + "IG51bGwpIGNvbnRpbnVlOw0KICAgICAgICAgIGVsc2UgcmV0dXJuIGNoLm5vZGVWYWx1ZTsN", + "CiAgICAgICAgfQ0KICAgICAgICBlbHNlIGlmIChjaC5ub2RlVHlwZSA9PSAxKQ0KICAgICAg", + "ICB7DQogICAgICAgICAgKGNoLnRhZ05hbWUgaW4gY2FjaGVUYWcpID8NCiAgICAgICAgICAg", + "IGNhY2hlVGFnW2NoLnRhZ05hbWVdLnB1c2goYXJndW1lbnRzLmNhbGxlZShjaCkpIDoNCiAg", + "ICAgICAgICAgIGNhY2hlVGFnW2NoLnRhZ05hbWVdID0gW2FyZ3VtZW50cy5jYWxsZWUoY2gp", + "XTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICBlbHNlDQogICAgew0KICAgICAg", + "cmV0dXJuICIiOw0KICAgIH0NCiAgICBmb3IgKHZhciBwIGluIGNhY2hlVGFnKQ0KICAgIHsN", + "CiAgICAgIChjYWNoZVRhZ1twXS5jb25zdHJ1Y3RvciA9PSBBcnJheSAmJiBjYWNoZVRhZ1tw", + "XS5sZW5ndGggPT0gMSkgPw0KICAgICAgICByZXNbcF0gPSBjYWNoZVRhZ1twXVswXSA6IHJl", + "c1twXSA9IGNhY2hlVGFnW3BdOw0KICAgIH0NCiAgICByZXR1cm4gcmVzOw0KICB9DQogIHJl", + "dHVybiBsb29wUGFyc2UoeG1sRG9jKTsNCn0NCg0KCg0KCiRnbG9iYWwuZG9FeGVjTm9XYWl0", + "U2V0dXAgPSBmdW5jdGlvbihiRWNobywgc3RyUGF1c2UpIHsNCg0KCWRvRXhlY05vV2FpdC5w", + "cm90b3R5cGUuYkVjaG8gPSAoYkVjaG8gPT0gdHJ1ZSkgPyB0cnVlIDogZmFsc2U7DQoJaWYg", + "KCBzdHJQYXVzZSAhPSB1bmRlZmluZWQgKSB7DQoJCWRvRXhlY05vV2FpdC5wcm90b3R5cGUu", + "c3RyUGF1c2UgPSBzdHJQYXVzZTsNCgl9DQoJcmV0dXJuIDsNCn0NCg0KCiRnbG9iYWwuZG9F", + "eGVjTm9XYWl0ID0gZnVuY3Rpb24gZG9FeGVjTm9XYWl0KHNDbWRMaW5lcykgew0KDQoJdmFy", + "IGJFY2hvID0gZG9FeGVjTm9XYWl0LnByb3RvdHlwZS5iRWNobzsNCgl2YXIgc3RkaW5EYXRh", + "ID0gdW5kZWZpbmVkOw0KDQoJdmFyIG9iaiA9IG5ldyBPYmplY3QoKTsNCgl2YXIgc0NtZHMg", + "PSAiIjsKDQoJb2JqLmJDb24gPSB0cnVlOyAKDQoJCiAgDQogIAl2YXIgcUZ1bmMgPSAoYXJn", + "dW1lbnRzLmxlbmd0aD09MSk/ZnVuY3Rpb24oYSl7cmV0dXJuIGE7fTptdXN0UXVvdGE7DQoJ", + "Cg0KCXZhciBvcHRzID0gbnVsbDsKCWZvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aC0x", + "O2krKykgew0KCQlpZiAoIHR5cGVPZihhcmd1bWVudHNbaV0pICE9ICJzdHJpbmciICkgIHsN", + "CgkJCQlvcHRzID0gYXJndW1lbnRzW2ldOwoJCQkJY29udGludWU7CgkJfQ0KCQlzQ21kcyAr", + "PSBxRnVuYyhhcmd1bWVudHNbaV0pICsgIiAiOw0KCX0NCglzQ21kcyArPSBxRnVuYyhhcmd1", + "bWVudHNbaV0pOwoNCgkKCWlmICggaXNPayhvcHRzKSApIHsNCgkJIGJFY2hvID0gKCAiZWNo", + "byIgaW4gb3B0cyApID8gb3B0cy5lY2hvIDogZmFsc2U7DQoJCSBzdGRpbkRhdGEgCT0gKCJz", + "dGRpbiIgaW4gb3B0cykgPyBvcHRzWyJzdGRpbiJdIDogc3RkaW5EYXRhOw0KCQkgb2JqLmJD", + "b24gPSAoICJjb25zb2xlIiBpbiBvcHRzICkgPyBvcHRzLmNvbnNvbGUgOiB0cnVlOwoJfQ0K", + "CXZhciBwYXRoVGVtcEZpbGUgPSBnZXRUZW1wRmlsZShnZXRDdXJyZW50UGF0aCgiLmRvRXhl", + "Y05vV2FpdCIpLCIubG9nIik7DQoNCglpZiAoIG9iai5iQ29uICApIHsgCgkJCgkJc0NtZHMg", + "PSAiQ01ELkVYRSAvQyAiKyBzQ21kcyArICIgPiIgKyAiXCIiICsgcGF0aFRlbXBGaWxlICsg", + "IlwiIisgIiAyPiYxIjsNCgkJcGF0aFRlbXBGaWxlLndyaXRlQWxsKCJTdGFydCIpOw0KCQkN", + "Cgl9DQoJCgl2YXIgb0V4ZWMgPSBzaC5FeGVjKHNDbWRzKTsNCgl2YXIgaSA9IDA7DQoJdmFy", + "IGxlbiA9IDA7DQoJb2JqLnBhdGhUZW1wRmlsZSA9IHBhdGhUZW1wRmlsZTsNCglvYmouU3Ry", + "T3V0ID0gbmV3IEFycmF5Ow0KCW9iai5tc2cgPSBvYmouU3RyT3V0OwoJb2JqLm9FeGVjID0g", + "b0V4ZWM7CQkKCW9iai5iU3RvcCA9IGZhbHNlOw0KDQoJCglpZiAoIG9iai5iQ29uICApIHsN", + "CgkJaWYgKCBpc09rKHN0ZGluRGF0YSkgKSB7DQoJCQlvRXhlYy5TdGRJbi5Xcml0ZShzdGRp", + "bkRhdGEpOw0KCQkJb0V4ZWMuU3RkSW4uQ2xvc2UoKTsKCQl9IGVsc2Ugew0KCQkJb0V4ZWMu", + "U3RkSW4uV3JpdGVMaW5lKGRvRXhlY05vV2FpdC5wcm90b3R5cGUuc3RyUGF1c2UpOw0KCQl9", + "DQoJfQ0KCQoJb2JqLmV4aXRDb2RlID0gb2JqLkV4aXRDb2RlID0gb0V4ZWMuRXhpdENvZGU7", + "IAoJb2JqLmlzUnVubmluZyA9IGZ1bmN0aW9uKCkgew0KCQl2YXIgYkVjaG8gPSBkb0V4ZWNO", + "b1dhaXQucHJvdG90eXBlLmJFY2hvOw0KCgkJaWYgKCB0aGlzLm9FeGVjID09IG51bGwgKSB7", + "DQoJCQkKCQkJcmV0dXJuIGZhbHNlOwkNCgkJfQ0KCQlpZiAoIHRoaXMub0V4ZWMuU3RhdHVz", + "ID09IDAgKSB7DQoJCQkKCQkJcmV0dXJuIHRydWU7DQoJCX0JCQ0KCQkKCQkNCgkJCgkJdGhp", + "cy5leGl0Q29kZSA9IHRoaXMuRXhpdENvZGUgPSB0aGlzLm9FeGVjLkV4aXRDb2RlOw0KCQkK", + "CQlpZiAoIHRoaXMuYkNvbiApIHsNCgkJCXZhciBmID0gZnNvLk9wZW5UZXh0RmlsZSh0aGlz", + "LnBhdGhUZW1wRmlsZSxpb21vZGUuRm9yUmVhZGluZyk7DQoJCQl3aGlsZSghZi5BdEVuZE9m", + "U3RyZWFtKSB7DQoJCQkJdmFyIGxlbiA9IG9iai5TdHJPdXQucHVzaCggZi5SZWFkTGluZSgp", + "ICk7DQoJCQkJaWYoYkVjaG8pIHsNCgkJCQkJZWNobyhvYmouU3RyT3V0W2xlbi0xXSk7DQoJ", + "CQkJfQ0KCQkJfQ0KCQkJZi5DbG9zZSgpOw0KCQkJZiA9IG51bGw7DQoJCX0NCgkJdGhpcy5v", + "RXhlYyA9IG51bGw7CQoJCWlmICggdGhpcy5wYXRoVGVtcEZpbGUuaXNFeGlzdEZpbGUoKSAp", + "IHsNCgkJCXZhciBjbnRUcnkgPSAxMDsNCgkJCWRvIHsNCgkJCQl0cnkgew0KCQkJCQlmc28u", + "RGVsZXRlRmlsZSh0aGlzLnBhdGhUZW1wRmlsZSk7CgkJCQl9IGNhdGNoKGUpIHsNCgkJCQkJ", + "d3MuU2xlZXAoMTAwMCk7DQoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCgkJCQlicmVhazsNCgkJ", + "CX0gd2hpbGUoY250VHJ5LS0pOw0KCQl9DQoJCXJldHVybiBmYWxzZTsJDQoJfQ0KCW9iai5T", + "dG9wID0gZnVuY3Rpb24oc3RvcEZ1bmMpIHsNCgkJdmFyIGJFY2hvID0gZG9FeGVjTm9XYWl0", + "LnByb3RvdHlwZS5iRWNobzsNCgkJaWYgKCB0aGlzLm9FeGVjID09IG51bGwgKSB7DQoJCQkK", + "CQkJcmV0dXJuOwkNCgkJfQ0KCQlpZiAoIGlzT2soc3RvcEZ1bmMpICkgew0KCQkJZWNobygi", + "aW5FeGVjTm9XYWl0OlN0b3AiKTsNCgkJCXN0b3BGdW5jKHRoaXMub0V4ZWMpOw0KCQkJcmV0", + "dXJuIG9iajsNCgkJfQ0KCQlpZiAoIHRoaXMub0V4ZWMuU3RhdHVzID09IDAgKSB7DQoJCQkK", + "CQkJdGhpcy5vRXhlYy5UZXJtaW5hdGUoKTsKCQkJdGhpcy5iU3RvcCA9IHRydWU7DQoJCQkK", + "CQkJdmFyIGNudCA9IDEwOw0KCQkJd2hpbGUoIHRoaXMuaXNSdW5uaW5nKCkgKSB7DQoJCQkJ", + "d3MuU2xlZXAoMTAwMCk7DQoJCQkJaWYgKCBjbnQtLSA8IDAgKSB7DQoJCQkJCWJyZWFrOwoJ", + "CQkJfSAJDQoJCQl9DQoJCQl0aGlzLm9FeGVjID0gbnVsbDsJCgkJCXRoaXMuZXhpdENvZGUg", + "PSB0aGlzLkV4aXRDb2RlID0gLTE7DQoJCQlyZXR1cm47DQoJCX0NCgl9DQoJcmV0dXJuIG9i", + "ajsNCn0NCgokZ2xvYmFsLmRvRXhlY05vV2FpdC5wcm90b3R5cGUuYkVjaG8gPSBmYWxzZTsN", + "CiRnbG9iYWwuZG9FeGVjTm9XYWl0LnByb3RvdHlwZS5zdHJQYXVzZSA9ICJ5eXlcbiI7IAoN", + "CgokZ2xvYmFsLmRvRXhlY1F1ZXVlID0gZnVuY3Rpb24obk1heFRocmVhZHMpIHsNCg0KCXZh", + "ciBvYmogPSBuZXcgT2JqZWN0KCk7DQoJb2JqLm5NYXhUaHJlYWRzID0gICggbk1heFRocmVh", + "ZHMgPT0gdW5kZWZpbmVkICkgPyA1IDogIG5NYXhUaHJlYWRzOw0KCW9iai5jRXhlQ21kcyA9", + "IFtdOwoJb2JqLmNRdWVDbWRzID0gW107CglvYmoublJ1bm5pbmcgPSAwOyAKCW9iai5sZW5n", + "dGggPSAwOw0KCQoJCglvYmoudXBkYXRlID0gZnVuY3Rpb24oKSB7DQoJCQoJCXZhciBiVXBk", + "YXRlID0gZmFsc2U7DQoJCXRoaXMublJ1bm5pbmcgPSAwOw0KCQlmb3IodmFyIGkgPSAwOyBp", + "IDwgdGhpcy5jRXhlQ21kcy5sZW5ndGg7IGkrKyApIHsNCgkJCWlmICggdGhpcy5jRXhlQ21k", + "c1tpXS5pc1J1bm5pbmcoKSApIHsNCgkJCQl0aGlzLm5SdW5uaW5nKys7DQoJCQl9DQoJCX0N", + "CgkJCgkJCgkJaWYgKCB0aGlzLmNRdWVDbWRzLmxlbmd0aCA+IDAgKSB7DQoJCQkKCQkJCgkJ", + "CWlmICggdGhpcy5uUnVubmluZyA8IHRoaXMubk1heFRocmVhZHMgKSB7DQoJCQkJCgkJCQkK", + "CQkJCXZhciBxT2JqID0gdGhpcy5jUXVlQ21kcy5zaGlmdCgpOw0KCQkJCQoJCQkJdmFyIGV4", + "T2JqID0gZG9FeGVjTm9XYWl0KHFPYmouc0NtZHMpOw0KCQkJCQoJCQkJZXhPYmouc0pvYk5h", + "bWUgPSBxT2JqLnNKb2JOYW1lOw0KCQkJCXRoaXMuY0V4ZUNtZHMucHVzaChleE9iaik7IAoJ", + "CQkJdGhpcy5uUnVubmluZysrOwoJCQkJCgkJCQliVXBkYXRlPXRydWU7DQoJCQkJCgkJCX0g", + "ZWxzZSB7DQoJCQkJCgkJCX0NCgkJfQ0KCQlyZXR1cm4gYlVwZGF0ZTsNCgl9DQoJCglvYmou", + "cHVzaENtZCA9IGZ1bmN0aW9uKCBzSm9iTmFtZSwgc0NtZGxpbmUgKSB7DQoJCXRoaXMubGVu", + "Z3RoKys7DQoJCXRoaXMublJ1bm5pbmcgPSAwOw0KCQlmb3IodmFyIGkgPSAwOyBpIDwgdGhp", + "cy5jRXhlQ21kcy5sZW5ndGg7IGkrKyApIHsNCgkJCWlmICggdGhpcy5jRXhlQ21kc1tpXS5p", + "c1J1bm5pbmcoKSApIHsNCgkJCQl0aGlzLm5SdW5uaW5nKys7DQoJCQl9DQoJCX0NCgkJaWYg", + "KCB0aGlzLm5SdW5uaW5nIDwgdGhpcy5uTWF4VGhyZWFkcyApIHsNCgkJCQoJCQl2YXIgc0Nt", + "ZHMgPSAiIjsNCgkJCWZvcih2YXIgaT0xO2k8YXJndW1lbnRzLmxlbmd0aC0xO2krKykgew0K", + "CQkJCXNDbWRzICs9IGFyZ3VtZW50c1tpXSArICIgIjsNCgkJCX0NCgkJCXNDbWRzICs9IGFy", + "Z3VtZW50c1tpXTsKCQkJdmFyIGV4T2JqID0gZG9FeGVjTm9XYWl0KHNDbWRzKTsNCgkJCWV4", + "T2JqLnNKb2JOYW1lID0gc0pvYk5hbWU7DQoJCQlleE9iai5pc1J1bm5pbmcoKTsKCQkJdGhp", + "cy5jRXhlQ21kcy5wdXNoKGV4T2JqKTsgCgkJCXRoaXMublJ1bm5pbmcrKzsKCQl9IGVsc2Ug", + "ew0KCQkJCgkJCXZhciBxT2JqID0gbmV3IE9iamVjdCgpOw0KCQkJcU9iai5zSm9iTmFtZSA9", + "IHNKb2JOYW1lOw0KCQkJcU9iai5zQ21kcyA9ICIiOw0KCQkJZm9yKHZhciBpPTE7aTxhcmd1", + "bWVudHMubGVuZ3RoLTE7aSsrKSB7DQoJCQkJcU9iai5zQ21kcyArPSBhcmd1bWVudHNbaV0g", + "KyAiICI7DQoJCQl9DQoJCQlxT2JqLnNDbWRzICs9IGFyZ3VtZW50c1tpXTsKCQkJdGhpcy5j", + "UXVlQ21kcy5wdXNoKHFPYmopOw0KCQl9DQoJCXJldHVybiB0aGlzOw0KCX0NCgkKCW9iai5z", + "U3RhdGUgPSBmdW5jdGlvbigpIHsNCgkJdmFyIG5BbGwgPSB0aGlzLmdldE51bU9mQWxsQ21k", + "cygpOw0KCQl2YXIgbkVuZCA9IHRoaXMuZ2V0TnVtT2ZFbmRDbWRzKCkgDQoJCXJldHVybiAo", + "IkFsbCgiKyBuQWxsICsgIiksRW5kKCIgKyBuRW5kICsgIiksUmVtYWluKCIgKyhuQWxsLW5F", + "bmQpICsiKSIpOw0KCQkKCQkKCQkKCQkKCQkKCQkKCQkKDQoJfQ0KCQoJb2JqLmlzQWxsRW5k", + "ID0gZnVuY3Rpb24oKSB7DQoJCQoJCXdoaWxlKCB0aGlzLnVwZGF0ZSgpID09IHRydWUgKSB7", + "DQoJCQk7CgkJfQ0KCQl2YXIgbiA9IHRoaXMuZ2V0TnVtT2ZSZW1haW5DbWRzKCk7DQoJCQoJ", + "CWlmICggbiA+IDAgKSB7DQoJCQlyZXR1cm4gZmFsc2U7CQoJCX0NCgkJcmV0dXJuIHRydWU7", + "IAkKCX0NCgkNCgkKCW9iai5nZXROdW1PZkFsbENtZHMgPSBmdW5jdGlvbigpIHsNCgkJcmV0", + "dXJuICh0aGlzLmNFeGVDbWRzLmxlbmd0aCArIHRoaXMuY1F1ZUNtZHMubGVuZ3RoKTsNCgl9", + "DQoJCglvYmouZ2V0TnVtT2ZFbmRDbWRzID0gZnVuY3Rpb24oKSB7DQoJCXRoaXMublJ1bm5p", + "bmcgPSAwOw0KCQlmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5jRXhlQ21kcy5sZW5ndGg7IGkr", + "KyApIHsNCgkJCWlmICggdGhpcy5jRXhlQ21kc1tpXS5pc1J1bm5pbmcoKSApIHsNCgkJCQl0", + "aGlzLm5SdW5uaW5nKys7DQoJCQl9DQoJCX0NCgkJcmV0dXJuICh0aGlzLmNFeGVDbWRzLmxl", + "bmd0aCAtIHRoaXMublJ1bm5pbmcpOw0KCX0NCgkKCW9iai5nZXROdW1PZlJlbWFpbkNtZHMg", + "PSBmdW5jdGlvbigpIHsNCgkJcmV0dXJuICh0aGlzLmdldE51bU9mQWxsQ21kcygpIC0gdGhp", + "cy5nZXROdW1PZkVuZENtZHMoKSk7DQoJfQ0KCQoJb2JqLmdldEV4ZWNPYmogPSBmdW5jdGlv", + "biggbm8gKSB7DQoJCXJldHVybiB0aGlzLmNFeGVDbWRzW25vXTsNCgl9DQoJCglvYmouc3Rv", + "cEFsbCA9IGZ1bmN0aW9uKCkgew0KCQlmb3IodmFyIGkgPSAwOyBpIDwgdGhpcy5jRXhlQ21k", + "cy5sZW5ndGg7IGkrKyApIHsNCgkJCWlmICggdGhpcy5jRXhlQ21kc1tpXS5pc1J1bm5pbmco", + "KSApIHsNCgkJCQl0aGlzLmNFeGVDbWRzW2ldLnN0b3AoKTsNCgkJCX0NCgkJfQ0KCX0NCgly", + "ZXR1cm4gb2JqOw0KfQ0KCg0KCiRnbG9iYWwuZ2V0VGVtcEZvbGRlciA9IGZ1bmN0aW9uKGJh", + "c2VQYXRoLCBiQ3JlYXRlKSB7CQ0KDQoJdmFyIGJhc2VQYXRoID0gKCBiYXNlUGF0aCA9PSB1", + "bmRlZmluZWQgfHwgYmFzZVBhdGggPT0gIiIgKSA/DQoJCQkJCSAgZnNvLkdldFNwZWNpYWxG", + "b2xkZXIoMik6YmFzZVBhdGg7DQoJdmFyIGJDcmVhdGUgPSAoIGJDcmVhdGUgPT0gdW5kZWZp", + "bmVkIHx8IGJDcmVhdGUgPT0gdHJ1ZSApID8gdHJ1ZSA6IGZhbHNlOw0KCQ0KCXZhciBwYXRo", + "ID0gZnNvLkJ1aWxkUGF0aChiYXNlUGF0aCxmc28uR2V0VGVtcE5hbWUoKSk7DQoJCgl3aGls", + "ZSggcGF0aC5pc0V4aXN0Rm9sZGVyKCkgKSB7DQoJCQoJCXBhdGggPSBmc28uQnVpbGRQYXRo", + "KGJhc2VQYXRoLGZzby5HZXRUZW1wTmFtZSgpKTsNCgl9DQoJaWYgKCBiQ3JlYXRlICkgew0K", + "CQl2YXIgblJldHJ5PTU7IA0KCQl3aGlsZShuUmV0cnktLSkgew0KCQkJdHJ5IHsgDQoJCQkJ", + "aWYgKCAhcGF0aC5nZXRQYXJlbnRQYXRoKCkuaXNFeGlzdEZvbGRlcigpICkgew0KCQkJCQkK", + "CQkJCQlmc28uQ3JlYXRlRm9sZGVyKHBhdGguZ2V0UGFyZW50UGF0aCgpKTsNCgkJCQl9DQoJ", + "CQkJZnNvLkNyZWF0ZUZvbGRlcihwYXRoKTsNCgkJCX0gY2F0Y2goZSl7DQoJCQkJZWNobygi", + "UmV0cnkgdGVtcEZvbGRlcjoiLG5SZXRyeSwiOiIscGF0aCk7DQoJCQkJcGF0aCA9IGZzby5C", + "dWlsZFBhdGgoYmFzZVBhdGgsZnNvLkdldFRlbXBOYW1lKCkpOw0KCQkJCWNvbnRpbnVlOwoJ", + "CQl9DQoJCQlicmVhazsNCgkJfQ0KCQkKCQlleGl0LnB1c2goDQoJCQlmdW5jdGlvbigpew0K", + "CQkJCWlmICggcGF0aC5pc0V4aXN0Rm9sZGVyKCkgKXsNCgkJCQkJdHJ5IHsNCgkJCQkJCWZz", + "by5EZWxldGVGb2xkZXIocGF0aCx0cnVlKTsNCgkJCQkJfSBjYXRjaCAoZSkgew0KCQkJCQkJ", + "Ow0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQkpOw0KCX0NCglyZXR1cm4oIHBhdGggKTsNCn0N", + "Cg0KCiRnbG9iYWwuZ2V0VGVtcEZpbGUgPSBmdW5jdGlvbihiYXNlRm9sZGVyLCBzRXh0KXsN", + "Cg0KCWJhc2VGb2xkZXIgPSAoIGJhc2VGb2xkZXIgPT0gdW5kZWZpbmVkIHx8IGJhc2VGb2xk", + "ZXIgPT0gIiIgKSA/DQoJCQkJCQlmc28uR2V0U3BlY2lhbEZvbGRlcigyKTpiYXNlRm9sZGVy", + "Ow0KCXNFeHQgPSAoIHNFeHQgPT0gdW5kZWZpbmVkICkgID8gICIudG1wIiA6IHNFeHQ7DQoN", + "Cgl2YXIgcGF0aCA9IGZzby5CdWlsZFBhdGgoYmFzZUZvbGRlcixmc28uR2V0VGVtcE5hbWUo", + "KStzRXh0KTsNCgkKCXdoaWxlKCBwYXRoLmlzRXhpc3RGaWxlKCkgKSB7DQoJCQoJCXBhdGgg", + "PSBmc28uQnVpbGRQYXRoKGJhc2VGb2xkZXIsZnNvLkdldFRlbXBOYW1lKCkrc0V4dCk7DQoJ", + "fQ0KCWlmICggIXBhdGguZ2V0UGFyZW50UGF0aCgpLmlzRXhpc3RGb2xkZXIoKSApIHsNCgkJ", + "CgkJZnNvLkNyZWF0ZUZvbGRlcihwYXRoLmdldFBhcmVudFBhdGgoKSk7DQoJfQ0KCXJldHVy", + "biggcGF0aCApOw0KfQ0KDQoKDQoKJGdsb2JhbC5wYXVzZSA9IGZ1bmN0aW9uKHRpdGxlKSB7", + "DQoNCgl0aXRsZSA9ICh0aXRsZSA9PSB1bmRlZmluZWQgKT8gIlBsZWFzZSBlbnRlciBrZXk6", + "IiA6IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKS5qb2luKCIiKTsN", + "CglXU2NyaXB0LlN0ZE91dC5Xcml0ZSh0aXRsZSk7DQoJaWYgKCB3cy5TdGRJbi5BdEVuZE9m", + "U3RyZWFtICkNCgkJcmV0dXJuIG51bGw7DQoJdmFyIHN0cj0gd3MuU3RkSW4uUmVhZExpbmUo", + "KTsNCglyZXR1cm4gc3RyOw0KfQ0KDQoKJGdsb2JhbC5kbXAgPSBmdW5jdGlvbiggX3ZhbHVl", + "XywgX2lkeF8gKSB7IAoNCgl2YXIgX3NfPSIiOw0KCWlmIChfaWR4XyA9PSB1bmRlZmluZWQg", + "KSB7DQoJCV9zXyA9ICJlY2hvKCIrICJcIiIgKyBfdmFsdWVfICsgIjpcIixbIiArIF92YWx1", + "ZV8gKyAiXSk7IjsNCgkJcmV0dXJuIGV2YWwoX3NfKTsNCgl9IGVsc2Ugew0KCQlfc18gPSAi", + "ZWNobygiKyAiXCIiICsgX3ZhbHVlXyArICJbIiArIF9pZHhfICsgIl0iICsgIjpcIiwiICsg", + "X3ZhbHVlXyArIlsiICsgX2lkeF8gKyJdIiArICIpOyI7DQoJCXJldHVybiBldmFsKF9zXyk7", + "DQoJfQ0KfQ0KDQoNCgoKDQokZ2xvYmFsLnJlYWRLZXlWYWx1ZSA9IGZ1bmN0aW9uKHBhdGhL", + "ZXlWYWx1ZUZpbGUsIG9wdERpYykgew0KCXZhciBvYmogPSBuZXcgT2JqZWN0KCk7DQoJb2Jq", + "LmEgPSB7fTsKCW9iai5hS2V5TGlzdCA9IG5ldyBBcnJheSgpOwoJb2JqLnBhdGhGaWxlID0g", + "cGF0aEtleVZhbHVlRmlsZTsNCglvYmoubGFzdENvbW1lbnRzID0gW107DQoJaWYoICFwYXRo", + "S2V5VmFsdWVGaWxlLmlzRXhpc3RGaWxlKCkgKXsNCgkJZWNobygiRmlsZSBpcyBub3QgZXhp", + "c3Q6IixwYXRoS2V5VmFsdWVGaWxlKTsNCgkJcmV0dXJuIG51bGw7DQoJfQ0KCXZhciBmID0g", + "ZnNvLk9wZW5UZXh0RmlsZShwYXRoS2V5VmFsdWVGaWxlLGlvbW9kZS5Gb3JSZWFkaW5nKTsN", + "Cgl2YXIgcyxtLG1hOw0KCXZhciBrPSIiLHY9IiI7DQoJdmFyIHNFbHNlPVtdOwoNCgl3aGls", + "ZSghZi5BdEVuZE9mU3RyZWFtKSB7DQoJCXMgPSBmLlJlYWRMaW5lKCk7DQoJCXZhciBwb3M9", + "MDsNCgkJaWYgKChtID0gcy5tYXRjaCgvXlwqXCooW146XHRdKilbIFx0XSpcOlsgXHRdKigu", + "KikkLykpICE9IG51bGwpIHsNCgkJCWsgPSBtWzFdOw0KCQkJdiA9IHNraXBRdW90YShtWzJd", + "KTsNCgkJCW9iai5hW2tdID0ge307DQoJCQlvYmouYVtrXS52YWwgPSBbXTsNCgkJCW9iai5h", + "W2tdLnZhbC5wdXNoKHYpOw0KCQkJb2JqLmFLZXlMaXN0LnB1c2goayk7DQoJCQlvYmouYVtr", + "XS5zRWxzZSA9IFtdOw0KCQkJb2JqLmFba10uc0Vsc2VbMF0gPSBzRWxzZS5jb25jYXQoKTsN", + "CgkJCXNFbHNlID0gW107CgkJfSBlbHNlIGlmICgobWEgPSBzLm1hdGNoKC9eWyBcdF0qXCtc", + "K1sgXHRdKjpbIFx0XSooLiopJC8pKSAhPSBudWxsKSB7DQoJCQkKCQkJcG9zPW9iai5hW2td", + "LnZhbC5wdXNoKHNraXBRdW90YShtYVsxXSkpLTE7DQoJCQlvYmouYVtrXS5zRWxzZVtwb3Nd", + "ID0gc0Vsc2UuY29uY2F0KCk7DQoJCQlzRWxzZSA9IFtdOwoJCX0gZWxzZSB7DQoJCQkKCQkJ", + "c0Vsc2UucHVzaChzKTsKCQl9DQoJfQ0KCW9iai5sYXN0Q29tbWVudHMgPXNFbHNlOw0KCWYu", + "Q2xvc2UoKTsNCg0KCglvYmouaXNLZXkgPSBmdW5jdGlvbihrZXkpIHsNCgkJaWYgKHRoaXMu", + "YVtrZXldID09IHVuZGVmaW5lZCl7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJcmV0dXJu", + "IHRydWU7DQoJfQ0KCW9iai5nZXRWYWx1ZSA9IGZ1bmN0aW9uKGtleSxubykgew0KCQlpZiAo", + "dGhpcy5hW2tleV0gPT0gdW5kZWZpbmVkKXsNCgkJCXJldHVybiBudWxsOw0KCQl9DQoJCWlm", + "ICggbm8gPT0gdW5kZWZpbmVkICkgew0KCQkJCgkJCW5vID0gMDsJDQoJCX0NCgkJcmV0dXJu", + "ICB0aGlzLmFba2V5XS52YWxbbm9dOw0KCX0NCglvYmouZ2V0QXJyYXlOdW0gPSBmdW5jdGlv", + "bihrZXkpIHsNCgkJaWYgKHRoaXMuYVtrZXldID09IHVuZGVmaW5lZCl7DQoJCQlyZXR1cm4g", + "MDsNCgkJfQ0KCQlyZXR1cm4gdGhpcy5hW2tleV0udmFsLmxlbmd0aDsNCgl9DQoJb2JqLmdl", + "dEtleUxpc3QgPSBmdW5jdGlvbigpIHsNCgkJcmV0dXJuIHRoaXMuYUtleUxpc3Q7CQ0KCX0N", + "CglvYmouc2V0VmFsdWUgPSBmdW5jdGlvbihrZXksdil7DQoJCWlmKHRoaXMuYVtrZXldID09", + "IHVuZGVmaW5lZCl7DQoJCQkKCQkJdGhpcy5hW2tleV0gPSB7fTsNCgkJCXRoaXMuYVtrZXld", + "LnZhbCA9IFtdOw0KCQkJdGhpcy5hW2tleV0uc0Vsc2UgPSBbXTsNCgkJCXRoaXMuYVtrZXld", + "LnZhbC5wdXNoKHYpOw0KCQkJdGhpcy5hS2V5TGlzdC5wdXNoKGtleSk7DQoJCQlyZXR1cm4g", + "dGhpczsNCgkJfQ0KCQkKCQlpZiAoIHYgaW5zdGFuY2VvZiBBcnJheSApIHsKCQkJdGhpcy5h", + "W2tleV0udmFsID0gdi5zbGljZSgwKTsNCgkJfSBlbHNlIHsNCgkJCXRoaXMuYVtrZXldLnZh", + "bCA9IFtdOw0KCQkJCgkJCXRoaXMuYVtrZXldLnZhbC5wdXNoKHYpOw0KCQkJCgkJfQ0KDQoJ", + "CQoJCQoJCQoJCQoJCXJldHVybiB0aGlzOw0KCX0NCgkKDQoJb2JqLnNhdmVGaWxlID0gZnVu", + "Y3Rpb24oc1BhdGgpew0KCQl2YXIgcXQgPSAiXCIiOw0KCQlpZiAoc1BhdGggPT0gdW5kZWZp", + "bmVkICkNCgkJCXNQYXRoID0gdGhpcy5wYXRoRmlsZTsNCgkJdmFyIG90U3RyPSIiOw0KCQlm", + "b3IodmFyIGk9MDtpPHRoaXMuYUtleUxpc3QubGVuZ3RoO2krKyl7DQoJCQl2YXIgc0tleSA9", + "IHRoaXMuYUtleUxpc3RbaV07DQoJCQl2YXIgYSA9IHRoaXMuYVtzS2V5XTsNCgkJCWlmICgo", + "YS5zRWxzZSAhPSB1bmRlZmluZWQpICYmIChhLnNFbHNlLmxlbmd0aCkpewoJCQkJZm9yKHZh", + "ciBqPTA7ajxhLnNFbHNlWzBdLmxlbmd0aDtqKyspIHsNCgkJCQkJb3RTdHIgKz0gZWNob1N0", + "cihhLnNFbHNlWzBdW2pdKTsJCQoJCQkJfQ0KCQkJfQ0KCQkJb3RTdHIgKz0gZWNob1N0cigi", + "KioiLHNLZXksIjoiLHF0LGEudmFsWzBdLHF0KTsJCgkJCWZvcih2YXIgaj0xO2o8YS52YWwu", + "bGVuZ3RoO2orKykgew0KCQkJCWlmICggYS5zRWxzZSAhPSB1bmRlZmluZWQgJiYgKGEuc0Vs", + "c2UubGVuZ3RoKSkgew0KCQkJCQlmb3IodmFyIGNMPTA7IGNMIDwgKGEuc0Vsc2Vbal0gIT0g", + "dW5kZWZpbmVkKSAmJiBhLnNFbHNlW2pdLmxlbmd0aDtjTCsrKXsNCgkJCQkJCW90U3RyICs9", + "IGVjaG9TdHIoYS5zRWxzZVtqXVtjTF0pOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCW90U3RyICs9", + "IGVjaG9TdHIoIlx0Kys6IixxdCxhLnZhbFtqXSxxdCk7CQoJCQl9DQoJCX0NCgkJCgkJZm9y", + "KHZhciBpPTA7IGk8IHRoaXMubGFzdENvbW1lbnRzLmxlbmd0aDsgaSsrICkNCgkJCW90U3Ry", + "ICs9IGVjaG9TdHIodGhpcy5sYXN0Q29tbWVudHNbaV0pOw0KCQkKCQlzUGF0aC53cml0ZUFs", + "bChvdFN0cik7DQoJfQ0KDQoNCgl2YXIgYkV4cGFuZE1hY3JvID0gdHJ1ZTsNCglpZiAoICFp", + "c05vbmUob3B0RGljKSApIHsNCgkJaWYgKCAoImV4cGFuZE1hY3JvIiBpbiBvcHREaWMgKSYm", + "KG9wdERpYy5leHBhbmRNYWNybz09ZmFsc2UpICkgew0KCQkJYkV4cGFuZE1hY3JvID0gZmFs", + "c2U7DQoJCX0NCgl9DQoJaWYgKCBiRXhwYW5kTWFjcm8gKSB7DQoJCXZhciBrZXlzID0gb2Jq", + "LmdldEtleUxpc3QoKTsNCgkJZm9yKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoO2krKyl7", + "DQoJCQl2YXIgayA9IGtleXNbaV07CQ0KCQkJZm9yKHZhciBqPTA7IGogPCBvYmouZ2V0QXJy", + "YXlOdW0oayk7aisrKXsNCgkJCQkKCQkJCWZvcih2YXIgciA9IDA7IHIgPCBrZXlzLmxlbmd0", + "aDsgcisrICkgew0KCQkJCQl2YXIgbWFjS2V5PWtleXNbcl07DQoJCQkJCW9iai5hW2tdLnZh", + "bFtqXSA9IChvYmouYVtrXS52YWxbal0pLnJlcGxhY2UoICgiJSIrbWFjS2V5KyIlIiksb2Jq", + "LmdldFZhbHVlKG1hY0tleSkpOw0KCQkJCX0NCgkJCX0JDQoJCX0NCgl9DQoJcmV0dXJuIG9i", + "ajsNCn0NCg0KDQoKJGdsb2JhbC5tYWtlQ21kTGluZSA9IGZ1bmN0aW9uKHNDbWRMaW5lcykg", + "ew0KDQoJaWYgKCB0eXBlT2Yoc0NtZExpbmVzKSA9PSAiYXJyYXkiICkgew0KCQkKCQlyZXR1", + "cm4gKGFyZ3VtZW50cy5jYWxsZWUuYXBwbHkobnVsbCxzQ21kTGluZXMpKTsNCgl9DQoJdmFy", + "IHNDbWRzPSIiOw0KCWZvcih2YXIgaT0wO2k8YXJndW1lbnRzLmxlbmd0aDtpKyspIHsNCgkJ", + "aWYgKCB0eXBlT2YoYXJndW1lbnRzW2ldKSA9PSAib2JqZWN0IiApIHsKCQkJY29udGludWU7", + "CgkJfQ0KCQlpZiAoIHNDbWRzIT0iIikgc0NtZHMrPSIgIjsNCgkJc0NtZHMgKz0gKG11c3RR", + "dW90YShhcmd1bWVudHNbaV0pKTsNCgl9DQoJCglyZXR1cm4gc0NtZHM7DQp9DQoNCgokZ2xv", + "YmFsLm11c3RRdW90YSA9IGZ1bmN0aW9uKHBsaW5lLCBzZXApIHsNCg0KCXZhciBzdHIgPSBw", + "bGluZS50b1N0cmluZygpOw0KCQoJaWYgKHN0ci5tYXRjaCgvXlwiLipcIiQvKSkgew0KCQly", + "ZXR1cm4gc3RyOyAKCX0NCgkKCWlmICggc3RyLm1hdGNoKC9bXHQgXSsvKSApIHsNCgkJaWYg", + "KCBzZXAgPT09IHVuZGVmaW5lZCApIHsNCgkJCXJldHVybiAoIlwiIitzdHIrIlwiIik7DQoJ", + "CX0gZWxzZSB7DQoJCQlyZXR1cm4gKHNlcCtzdHIrc2VwKTsKCQl9DQoJfQ0KCXJldHVybiBz", + "dHI7Cn0NCg0KCgoNCg0KJGdsb2JhbC5za2lwUXVvdGEgPSBmdW5jdGlvbihzdHIpIHsNCgl2", + "YXIgbSA9IHN0ci5tYXRjaCgvXlwiKC4qKVwiJC8pOw0KCWlmICggbSApIHsNCgkJcmV0dXJu", + "IG1bMV07DQoJfSBlbHNlIHsNCgkJcmV0dXJuIHN0cjsJDQoJfQ0KfQ0KDQoNCgokZ2xvYmFs", + "Lm11c3REaXIgPSBmdW5jdGlvbih3UGF0aCkgew0KCQ0KCWlmICggd1BhdGguY2hhckF0KHdQ", + "YXRoLmxlbmd0aC0xKSAhPSAiXFwiICkgew0KCQlyZXR1cm4gKHdQYXRoICsgIlxcIik7DQoJ", + "fQ0KCXJldHVybiB3UGF0aDsNCn0NCg0KCg0KDQokZ2xvYmFsLnNwbGl0TGluZSA9IGZ1bmN0", + "aW9uKHN0cikgew0KCXZhciByZSA9IC9cclxufFxyfFxuL2csIHN0PTAsIHY9W107DQoJZm9y", + "ICh2YXIgYXI9bnVsbDsoYXIgPSByZS5leGVjKHN0cikpICE9IG51bGw7IHN0PWFyLmxhc3RJ", + "bmRleCkgew0KCQl2LnB1c2goc3RyLnN1YnN0cmluZyhzdCwgYXIuaW5kZXgpKTsNCgkJc3Qg", + "PSBhci5sYXN0SW5kZXg7DQoJfQ0KCWlmICggc3QgIT09IHN0ci5sZW5ndGggKSB7DQoJCXYu", + "cHVzaChzdHIuc3Vic3RyaW5nKHN0LCBzdHIubGVuZ3RoKSk7CQoJfQ0KCXJldHVybiB2Ow0K", + "fQ0KCgoKDQpTdHJpbmcucHJvdG90eXBlLnNwbGl0TGluZSA9IGZ1bmN0aW9uKCl7IHJldHVy", + "biBzcGxpdExpbmUodGhpcyk7IH07DQoNCgoNCiRnbG9iYWwucmVtb3ZlQ29tbWVudD1mdW5j", + "dGlvbihzdHIpIHsNCgkKCXJldHVybiBzdHIucmVwbGFjZSgvKFwvKSg/OlwqW1xzXFNdKj9c", + "KlwvfFwvLiopfCIoPzpcXFtcc1xTXXxbXlxcXG4iXSkqInwnKD86XFxbXHNcU118W15cXFxu", + "J10pKid8PCFcW0NEQVRBXFtbXHNcU10qP1xdXF0+fFwvKD86XFwufFxbKD86XFwufFteXG5c", + "XV0pKlxdfFteXG4vXSkrXC9cdyovZywgZnVuY3Rpb24oJDAsICQxKSB7DQoJCXJldHVybiAk", + "MSA/ICcnIDogJDA7DQoJfSk7DQp9DQoNCg0KCiRnbG9iYWwuZ2V0RmlsZXM9ZnVuY3Rpb24o", + "dGFyZ2V0LHJlRXh0LGJSZWN1cmNpYmxlLGNhbGxGdW5jKSB7DQoJDQoJdmFyIHBhdCA9ICIi", + "Ow0KCWlmICggKHJlRXh0ID09IHVuZGVmaW5lZCl8fChyZUV4dCA9PSBudWxsKXx8KHJlRXh0", + "ID09ICIiKSAgKSB7DQoJCXBhdD0iLipcLnBkZiQiOyAKCX0gZWxzZSBpZiAoIHJlRXh0ID09", + "ICIqIiApIHsKCQlwYXQ9IC8uKi87DQoJfSBlbHNlIHsNCgkJcGF0PSByZUV4dDsNCgl9DQoJ", + "aWYgKCAoYlJlY3VyY2libGUgPT0gdW5kZWZpbmVkKXx8KGJSZWN1cmNpYmxlID09IG51bGwp", + "fHwoYlJlY3VyY2libGUgPT0gIiIpICApIHsNCgkJYlJlY3VyY2libGUgPSBmYWxzZTsNCgl9", + "DQoJCgkKDQoJdmFyIHJlOw0KCWlmICggZ2V0T2JqZWN0VHlwZShwYXQpID09ICJbb2JqZWN0", + "IFJlZ0V4cF0iICkgew0KCQlyZSA9IHBhdDsKCX0gZWxzZSB7DQoJIAlyZSA9IG5ldyBSZWdF", + "eHAocGF0LCJpIik7DQoJfQ0KCQoNCglpZiAoZnNvLkZpbGVFeGlzdHModGFyZ2V0KSkgew0K", + "CQlyZXR1cm4gW107DQoJfQ0KCWlmICghZnNvLkZvbGRlckV4aXN0cyh0YXJnZXQpKSByZXR1", + "cm4gW107DQoJdmFyIHJlc3VsdCA9IFtdOw0KDQoJCglmdW5jdGlvbiBfZW51bSggZGlyICkg", + "ew0KCQkKCQl2YXIgZSA9IG5ldyBFbnVtZXJhdG9yKCBkaXIuRmlsZXMgKTsNCgkJZm9yICgg", + "OyAhZS5hdEVuZCgpOyBlLm1vdmVOZXh0KCkgKSB7DQoJCQl2YXIgZmlsZSA9IGUuaXRlbSgp", + "Ow0KCQkJdmFyIGFyID0gcmUuZXhlYyhmaWxlLlBhdGgpOw0KCQkJaWYgKCBhciAhPSBudWxs", + "KSB7DQoJCQkJcmVzdWx0LnB1c2goZmlsZS5QYXRoKTsNCgkJCQlpZiAoY2FsbEZ1bmMhPXVu", + "ZGVmaW5lZCkgew0KCQkJCQljYWxsRnVuYyhmaWxlLlBhdGgpOw0KCQkJCX0NCgkJCX0NCgkJ", + "fQ0KCQlpZiAoICFiUmVjdXJjaWJsZSApIHJldHVybjsNCgkJCgkJZSA9IG5ldyBFbnVtZXJh", + "dG9yKCBkaXIuU3ViRm9sZGVycyApOw0KCQlmb3IgKCA7ICFlLmF0RW5kKCk7IGUubW92ZU5l", + "eHQoKSApIHsNCgkJCXZhciBzZGlyID0gZS5pdGVtKCk7DQoJCQlfZW51bSggc2RpciApOw0K", + "CQl9DQoJCXJldHVybjsNCgl9DQoJdmFyIGRpciA9IGZzby5HZXRGb2xkZXIodGFyZ2V0KTsN", + "CglfZW51bShkaXIpOw0KCXJldHVybiByZXN1bHQ7DQoNCn0NCgokZ2xvYmFsLmdldERpcnMg", + "PSBmdW5jdGlvbih0YXJnZXQscmVFeHQsYlJlY3VyY2libGUsY2FsbEZ1bmMpIHsNCgkNCgl2", + "YXIgcGF0ID0gIiI7DQoJaWYgKCAocmVFeHQgPT0gdW5kZWZpbmVkKXx8KHJlRXh0ID09IG51", + "bGwpfHwocmVFeHQgPT0gIiIpICApIHsNCgkJcGF0PSIuKiI7IAoJfSBlbHNlIHsNCgkJcGF0", + "PSByZUV4dDsNCgl9DQoJaWYgKCAoYlJlY3VyY2libGUgPT0gdW5kZWZpbmVkKXx8KGJSZWN1", + "cmNpYmxlID09IG51bGwpfHwoYlJlY3VyY2libGUgPT0gIiIpICApIHsNCgkJYlJlY3VyY2li", + "bGUgPSBmYWxzZTsNCgl9DQoJCgkKCXZhciByZTsNCglpZiAoIGdldE9iamVjdFR5cGUocGF0", + "KSA9PSAiW29iamVjdCBSZWdFeHBdIiApIHsNCgkJcmUgPSBwYXQ7Cgl9IGVsc2Ugew0KCSAJ", + "cmUgPSBuZXcgUmVnRXhwKHBhdCwiaSIpOw0KCX0NCg0KCWlmIChmc28uRmlsZUV4aXN0cyh0", + "YXJnZXQpKSB7DQoJCXJldHVybiBbXTsNCgl9DQoJaWYgKCFmc28uRm9sZGVyRXhpc3RzKHRh", + "cmdldCkpIHJldHVybiBbXTsNCgl2YXIgcmVzdWx0ID0gW107DQoJCglmdW5jdGlvbiBfZW51", + "bSggZGlyICkgew0KCQkKCQl2YXIgZSA9IG5ldyBFbnVtZXJhdG9yKCBkaXIuU3ViRm9sZGVy", + "cyApOw0KCQlmb3IgKCA7ICFlLmF0RW5kKCk7IGUubW92ZU5leHQoKSApIHsNCgkJCXZhciBm", + "aWxlID0gZS5pdGVtKCk7DQoJCQl2YXIgYXIgPSByZS5leGVjKGZpbGUuUGF0aCk7DQoJCQlp", + "ZiAoIGFyICE9IG51bGwpIHsNCgkJCQlyZXN1bHQucHVzaChmaWxlLlBhdGgpOw0KCQkJCWlm", + "IChjYWxsRnVuYyE9dW5kZWZpbmVkKSB7DQoJCQkJCWNhbGxGdW5jKGZpbGUuUGF0aCk7DQoJ", + "CQkJfQkJCQkNCgkJCX0NCgkJfQ0KCQlpZiAoICFiUmVjdXJjaWJsZSApIHJldHVybjsNCgkJ", + "CgkJZSA9IG5ldyBFbnVtZXJhdG9yKCBkaXIuU3ViRm9sZGVycyApOw0KCQlmb3IgKCA7ICFl", + "LmF0RW5kKCk7IGUubW92ZU5leHQoKSApIHsNCgkJCXZhciBzZGlyID0gZS5pdGVtKCk7DQoJ", + "CQlfZW51bSggc2RpciApOw0KCQl9DQoJCXJldHVybjsNCgl9DQoJdmFyIGRpciA9IGZzby5H", + "ZXRGb2xkZXIodGFyZ2V0KTsNCglfZW51bShkaXIpOw0KCXJldHVybiByZXN1bHQ7DQoNCn0N", + "Cg0KCgoJDQoNCiRnbG9iYWwuZWNob1Byb2dyZXNzID0gZnVuY3Rpb24oKSB7DQoJdmFyIG8g", + "PSBlY2hvUHJvZ3Jlc3MubzsNCglpZiAoIG8gPT0gdW5kZWZpbmVkICkgew0KCQlvID0gZWNo", + "b1Byb2dyZXNzLm8gPSB7fTsNCgkJby5wcmVMZW4gPSAwOw0KCQlvLnByZUxlbiA9IDA7DQoJ", + "CW8ucHJlVGltZSA9IG5ldyBEYXRlKCk7DQoJCW8uc3BhbiA9IDUwKjE7DQoJCWVjaG9Qcm9n", + "cmVzcy5vID0gbzsNCgl9DQoJdmFyIG5vd1QgPSBuZXcgRGF0ZSgpOw0KCWlmICggKG5vd1Qg", + "LSBvLnByZVRpbWUpIDwgby5zcGFuICl7DQoJCXJldHVybjsNCgl9DQoJby5wcmVUaW1lID0g", + "bm93VDsNCgl2YXIgb3Q9IiI7DQoJZm9yKHZhciBpPTA7aTxhcmd1bWVudHMubGVuZ3RoO2kr", + "Kykgew0KCQl2YXIgcyA9IGFyZ3VtZW50c1tpXTsNCgkJaWYgKCBzID09IG51bGwgKSBzID0g", + "IihudWxsKSI7CgkJb3QgKz0gczsNCgl9DQoJdmFyIHNTcGFjZT0iIjsNCglmb3IodmFyIGk9", + "MDtpPG8ucHJlTGVuO2krKykgew0KCQlzU3BhY2UgKz0iICI7DQoJfQ0KCXByaW50KHNTcGFj", + "ZSwiXHIiLG90LCJcciIpOw0KCW8ucHJlTGVuID0gb3QubGVuZ3RoOw0KfQ0KJGdsb2JhbC5l", + "Y2hvU3BpbiA9IGZ1bmN0aW9uKCkgew0KCXZhciBvID0gZWNob1NwaW4ubzsNCglpZiAoIG8g", + "PT0gdW5kZWZpbmVkICl7CgkJbyA9IGVjaG9TcGluLm8gPSB7fTsNCgkJby5Db3VudCA9IDA7", + "DQoJCW8ucHJlVGltZSA9IG5ldyBEYXRlKCk7DQoJCW8uc3BhbiA9IDUwKjE7DQoJfQ0KCXZh", + "ciBub3dUID0gbmV3IERhdGUoKTsNCglpZiAoIChub3dUIC0gby5wcmVUaW1lKSA8IG8uc3Bh", + "biApew0KCQlyZXR1cm47DQoJfQ0KCW8ucHJlVGltZSA9IG5vd1Q7DQoNCglvLkNvdW50KysN", + "CglpZiAoIChvLkNvdW50ICUgMikgKQ0KCQlwcmludCgiWlxiIik7DQoJZWxzZSANCgkJcHJp", + "bnQoIk5cYiIpOw0KCXJldHVybjsNCn0NCiRnbG9iYWwuZWNob0JhciA9IGZ1bmN0aW9uKGN1", + "cixtYXgpIHsNCgl2YXIgbyA9IGVjaG9CYXIubzsNCglpZiAoIG8gPT0gdW5kZWZpbmVkICl7", + "CgkJbyA9IGVjaG9CYXIubyA9IHt9Ow0KCQlvLkN1ciA9IC0xOwkKCQlvLk1heCA9IDA7CQoJ", + "CW8uTGVuID0gODA7CQoJfQ0KCWlmICggY3VyID09IG8uQ3VyICkgDQoJCXJldHVybjsKCWlm", + "ICggY3VyID49IG1heCApIHsNCgkJcmV0dXJuOwoJfQ0KCW8uTWF4ID0gbWF4Ow0KCXZhciBj", + "Tk9OID0gIiAiLGNPSyAgPSAiPSI7DQoJdmFyIHM9IlsiOw0KCW8uQ3VyID0gY3VyOw0KCXZh", + "ciBsZW49cGFyc2VJbnQoKGN1ciAvIG1heCkgKiBvLkxlbik7DQoJZm9yICggdmFyIGk9MDsg", + "aSA8IGxlbjsgaSsrICkgDQoJCXMgKz0gY09LOw0KCWxlbj1vLkxlbi1sZW4tMTsNCglmb3Ig", + "KCB2YXIgaT0wOyBpIDwgbGVuOyBpKysgKQ0KCQlzICs9IGNOT047DQoJcys9Il0iDQoJZWNo", + "b1Byb2dyZXNzKHMpOw0KCQoJCglyZXR1cm47DQp9DQoNCgokZ2xvYmFsLm1ha2VQYXRoID0g", + "ZnVuY3Rpb24oc0NtZExpbmVzKSB7DQoNCiAgICB2YXIgYXIgPSBhcmd1bWVudHM7DQoJdmFy", + "IHNDbWRzPWFyWzBdOw0KICAgIHZhciBiRGVsaT0gKGFyWzBdKVsoYXJbMF0ubGVuZ3RoLTEp", + "XT09IlxcIjsKCWZvcih2YXIgaT0xO2k8YXIubGVuZ3RoO2krKykgew0KICAgICAgICBzQ21k", + "cyArPSAoYkRlbGkpID8gIChhcltpXSkgOigiXFwiICsgYXJbaV0pOw0KCX0NCglyZXR1cm4g", + "c0NtZHM7DQp9DQoNCg0KJGdsb2JhbC5yZWFkSGVyZURvYyA9IGZ1bmN0aW9uKGtleSxmUGF0", + "aCkgew0KCWlmICggaXNOb25lKGZQYXRoKSApIHsKCQlmUGF0aCA9IHdzLlNjcmlwdEZ1bGxO", + "YW1lOw0KCX0gDQoJdmFyIHNEYXRhID0gZlBhdGgucmVhZEFsbCgpOw0KCXNEYXRhID0gc0Rh", + "dGEucmVwbGFjZSgvXHJcbnxcbi9nLCJcbiIpOwoJCgl2YXIgcGF0PSJcXG48PFtcXFNdKj8i", + "ICsga2V5ICsgIltcXHNcXFNdKj9cbihbXFxTXFxzXFxuXSo/KVtcXG5dIiArIGtleTsNCgkK", + "CXZhciByZSA9IG5ldyBSZWdFeHAocGF0LCJnIik7DQoJdmFyIGFyID0gcmUuZXhlYyhzRGF0", + "YSk7DQoJaWYgKCBhciA9PSBudWxsKSB7DQoJCQoJCXJldHVybiAiIjsNCgl9DQoJcmV0dXJu", + "IGFyWzFdOw0KfQ0KJGdsb2JhbC5yZWFkSGVyZURvY1ZlYyA9IGZ1bmN0aW9uKGtleSxmUGF0", + "aCkge3JldHVybiBzcGxpdExpbmUocmVhZEhlcmVEb2Moa2V5LGZQYXRoKSk7fQ0KDQoKJGds", + "b2JhbC5yZWFkSGVyZUtleSA9IGZ1bmN0aW9uIChrZXkpIHsNCg0KDQoJdmFyIF90aGlzID0g", + "cmVhZEhlcmVLZXk7DQoJaWYgKCAhKCJjYWNoZU1hcCIgaW4gX3RoaXMpICkgew0KCQl2YXIg", + "cmUgPSAvXC9cLzo6KFxTKylccypcPSguKikkLzsJCgkJdmFyIHZlYyA9IHNwbGl0TGluZSh3", + "cy5TY3JpcHRGdWxsTmFtZS5yZWFkQWxsKCkpOw0KCQl2YXIga01hcCA9IHt9Ow0KCQlmb3Io", + "dmFyIGk9MDtpPHZlYy5sZW5ndGg7aSsrKSB7DQoJCQl2YXIgYXIgPSByZS5leGVjKHZlY1tp", + "XSk7DQoJCQlpZiAoIGlzTm9uZShhcikgKSANCgkJCQljb250aW51ZTsNCgkJCWlmICggYXJb", + "MV0gaW4ga01hcCApIA0KCQkJCWNvbnRpbnVlOw0KCQkJa01hcFthclsxXV0gPSBza2lwUXVv", + "dGEoYXJbMl0pOw0KCQl9DQoJCV90aGlzLmNhY2hlTWFwPWtNYXA7DQoJfQkNCglpZiAoIGlz", + "Tm9uZShrZXkpICkgDQoJCXJldHVybiBfdGhpcy5jYWNoZU1hcDsNCglyZXR1cm4gKGtleSBp", + "biBfdGhpcy5jYWNoZU1hcCkgPyBfdGhpcy5jYWNoZU1hcFtrZXldIDogbnVsbDsNCn0NCg0K", + "Cg0KDQokZ2xvYmFsLmdldFZlcnNpb25JbmZvPWZ1bmN0aW9uKCB2ZXJTdHIgKSB7DQoJdmFy", + "IG9iaj17fTsNCgl2YXIgcmUgPSAvXihcZCspXC4oXGQrKVwuKFxkKylUKFxkKylBKFxkKykv", + "Ow0KCXZhciB2S2V5ID0gezA6Im5vdXNlIiwxOiJtYWpvciIsMjoibWlub3IiLDM6InBhdGNo", + "Iiw0OiJ0VmVyIiw1OiJhVmVyIn07CQ0KCQoJCgkKCQoJCgl2YXIgYXIgPSB2ZXJTdHIubWF0", + "Y2gocmUpOw0KCWlmICghYXIpew0KCQlmb3IodmFyIGk9MTtpPDY7aSsrKQ0KCQkJb2JqW3ZL", + "ZXlbaV1dID0gMDsNCgl9IGVsc2Ugew0KCQlmb3IodmFyIGk9MTtpPGFyLmxlbmd0aDtpKysp", + "DQoJCQlvYmpbdktleVtpXV0gPSBwYXJzZUludChhcltpXSk7DQoJfQ0KCW9ialsidmVyIl09", + "b2JqWyJtYWpvciJdKyIuIitvYmpbIm1pbm9yIl0rIi4iK29ialsicGF0Y2giXSsiVCIrb2Jq", + "WyJ0VmVyIl0rIkEiK29ialsiYVZlciJdOwkNCglvYmouc2V0VmVyID0gZnVuY3Rpb24gKG8p", + "IHsNCgkJdmFyIHQgPSBnZXRPYmplY3RUeXBlKG8pOw0KCQlpZiAoIHQgPT0gIltvYmplY3Qg", + "T2JqZWN0XSIgKXsNCgkJCQoJCQlmb3IoIHZhciBrIGluIG8gKSB7DQoJCQkJaWYgKCBrIGlu", + "IG9iaiApIHsNCgkJCQkJb2JqW2tdID0gb1trXTsNCgkJCQl9DQoJCQl9DQoJCQlvYmpbInZl", + "ciJdPW9ialsibWFqb3IiXSsiLiIrb2JqWyJtaW5vciJdKyIuIitvYmpbInBhdGNoIl0rIlQi", + "K29ialsidFZlciJdKyJBIitvYmpbImFWZXIiXTsJDQoJCX0gZWxzZSB7CgkJCXZhciBpbmZv", + "ID0gZ2V0VmVyc2lvbkluZm8obyk7DQoJCQlmb3IoIHZhciBrIGluIGluZm8gKSB7DQoJCQkJ", + "aWYgKCBrIGluIG9iaiApIHsNCgkJCQkJb2JqW2tdID0gaW5mb1trXTsNCgkJCQl9DQoJCQl9", + "DQoJCX0NCgl9DQoJcmV0dXJuIG9iajsNCn0NCg0KCgkNCiRnbG9iYWwuZ2V0RW52PWZ1bmN0", + "aW9uKCkgew0KCXZhciBlbnYgPSB7fTsNCgllbnYuZXhlUGF0aCA9IHdzLlNjcmlwdEZ1bGxO", + "YW1lOw0KCWVudi5leGVEaXIJPSBlbnYuZXhlUGF0aC5QQSgpOw0KCXJldHVybiBlbnY7DQp9", + "DQoNCgp2YXIgaW5pRmlsZUlPID0geyAKDQoJc3RyaXA6CQlmdW5jdGlvbihhcmcpIHtyZXR1", + "cm4gKHR5cGVvZihhcmcpID09ICJzdHJpbmciKSA/IHNraXBRdW90YShhcmcucmVwbGFjZSgv", + "XlxzK3xccyskL2csICIiKSkgOiBhcmc7fSwNCgljYXNlY21wOglmdW5jdGlvbihhcmcxLCBh", + "cmcyKSB7DQoJCWlmICh0eXBlb2YoYXJnMSkgPT0gInN0cmluZyIpIGFyZzEgPSBhcmcxLnRv", + "TG93ZXJDYXNlKCk7DQoJCWlmICh0eXBlb2YoYXJnMikgPT0gInN0cmluZyIpIGFyZzIgPSBh", + "cmcyLnRvTG93ZXJDYXNlKCk7DQoJCXJldHVybiAoYXJnMSA9PSBhcmcyKTsNCgl9LA0KCWdl", + "dEZtdEVuYzoJZnVuY3Rpb24ocGF0aCkgew0KCQl2YXIgY29udkVuYyA9IHsgInV0Zi04Ijpp", + "b2VuY29kaW5nLlVuaWNvZGUsICJ1dGYtOEJPTSI6aW9lbmNvZGluZy5Vbmljb2RlLCJ1bmlj", + "b2RlIjppb2VuY29kaW5nLlVuaWNvZGUsInVuaWNvZGVmZmZlIjppb2VuY29kaW5nLlVuaWNv", + "ZGUgLCAic2hpZnQtamlzIjogaW9lbmNvZGluZy5EZWZhdWx0fTsNCgkJcmV0dXJuIChjb252", + "RW5jW3BhdGguZ2V0RW5jb2RlKHRydWUpLnRvTG93ZXJDYXNlKCldKTsNCgl9LA0KCWdldDoJ", + "CWZ1bmN0aW9uKGZpbGVuYW1lLCBzZWN0aW9uLCBrZXkpIHsNCgkJdmFyIGxvPSBpbmlGaWxl", + "SU87DQoJCXNlY3Rpb24gPSAodHlwZW9mKHNlY3Rpb24pID09ICJ1bmRlZmluZWQiKSA/IG51", + "bGwgOiBsby5zdHJpcChzZWN0aW9uKTsNCgkJa2V5ICAgICA9ICh0eXBlb2Yoa2V5KSAgICAg", + "PT0gInVuZGVmaW5lZCIpID8gbnVsbCA6IGxvLnN0cmlwKGtleSk7DQoJCXZhciBkYXRhID0g", + "bmV3IEFycmF5KCk7DQoJCXRyeSB7DQoJCQl2YXIgZiA9IGZzby5PcGVuVGV4dEZpbGUoZmls", + "ZW5hbWUsIDEsIGZhbHNlLCBsby5nZXRGbXRFbmMoZmlsZW5hbWUpICk7IAoJCQl2YXIgcG9z", + "ID0gMDsgDQoJCQl2YXIgbT1udWxsOwoJCQl3aGlsZSAoIWYuQXRFbmRPZlN0cmVhbSkgew0K", + "CQkJCXZhciBsaW5lID0gZi5SZWFkTGluZSgpOw0KCQkJCWlmICghbGluZS5tYXRjaCgvXlxz", + "KjsvKSkgew0KCQkJCQlpZiAobSA9IGxpbmUubWF0Y2goL15ccypcWyhbXlxdXSopXF0vKSkg", + "ew0KCQkJCQkJaWYgKHNlY3Rpb24gPT09IG51bGwpIHsNCgkJCQkJCQlkYXRhW2xvLnN0cmlw", + "KG1bMV0pXSA9IG5ldyBBcnJheSgpOw0KCQkJCQkJfSBlbHNlIGlmIChwb3MgPT0gMCAmJiBs", + "by5jYXNlY21wKGxvLnN0cmlwKG1bMV0pLCBzZWN0aW9uKSkgew0KCQkJCQkJCXBvcyA9IDE7", + "DQoJCQkJCQl9IGVsc2UgaWYgKHBvcyA9PSAxKSB7DQoJCQkJCQkJYnJlYWs7DQoJCQkJCQl9", + "DQoJCQkJCX0gZWxzZSBpZiAocG9zID09IDEgJiYgKG0gPSBsaW5lLm1hdGNoKC9eXHMqKC4q", + "Pyk9KC4qKSQvKSkpIHsNCgkJCQkJCXZhciB2ID0gbG8uc3RyaXAobVsyXSkucmVwbGFjZSgv", + "XihbIiddKSguKilcMSQvLCAiJDIiKTsNCgkJCQkJCWlmIChrZXkgPT09IG51bGwpIHsNCgkJ", + "CQkJCQlkYXRhW2xvLnN0cmlwKG1bMV0pXSA9IHY7DQoJCQkJCQl9IGVsc2UgaWYgKGxvLmNh", + "c2VjbXAobG8uc3RyaXAobVsxXSksIGtleSkpIHsNCgkJCQkJCQlkYXRhID0gdjsgCgkJCQkJ", + "CQlicmVhazsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJCWYuQ2xvc2UoKTsN", + "CgkJfSBjYXRjaChlKSB7DQoJCQlpZiAoZS5udW1iZXIgIT0gLTB4N2ZmNWZmY2IpIHsJCgkJ", + "CQlXU2NyaXB0LkVjaG8oV1NjcmlwdC5TY3JpcHRGdWxsTmFtZSArICJcbiIgKyBmaWxlbmFt", + "ZSArICJcbiIgKyBlLmRlc2NyaXB0aW9uKTsNCgkJCX0NCgkJfQ0KCQlpZiAoc2VjdGlvbiA9", + "PT0gbnVsbCkgew0KCQkJZm9yICh2YXIgcyBpbiBkYXRhKSB7DQoJCQkJZGF0YVtzXSA9IGxv", + "LmdldChmaWxlbmFtZSwgcyk7DQoJCQl9DQoJCX0gZWxzZSBpZiAoa2V5ICE9PSBudWxsICYm", + "IHR5cGVvZihkYXRhKSAhPSAic3RyaW5nIikgew0KCQkJZGF0YSA9IG51bGw7DQoJCX0NCgkJ", + "cmV0dXJuIGRhdGE7CQ0KCX0sDQoJc2V0OgkJZnVuY3Rpb24oZmlsZW5hbWUsIHNlY3Rpb24s", + "IGtleSwgdmFsdWUpIHsNCgkJdmFyIGxvID0gaW5pRmlsZUlPOwkJDQoJCXZhciByZXRDb2Rl", + "ID0gIlxyXG4iOw0KCQlpZiAodHlwZW9mKGtleSkgPT0gInVuZGVmaW5lZCIpIHJldHVybiBm", + "YWxzZTsNCgkJaWYgKHR5cGVvZih2YWx1ZSkgPT0gInVuZGVmaW5lZCIpIHJldHVybiBmYWxz", + "ZTsNCgkJc2VjdGlvbiA9IGxvLnN0cmlwKHNlY3Rpb24pOw0KCQlrZXkgPSBsby5zdHJpcChr", + "ZXkpOw0KCQl0cnkgew0KCQkJdmFyIGYgPSBmc28uT3BlblRleHRGaWxlKGZpbGVuYW1lLCAx", + "LCB0cnVlLGxvLmdldEZtdEVuYyhmaWxlbmFtZSkpOyAKCQkJdmFyIHVwcGVyID0gIiI7DQoJ", + "CQl2YXIgbG93ZXIgPSAiIjsNCgkJCXZhciBwb3MgPSAwOyAKCQkJd2hpbGUgKCFmLkF0RW5k", + "T2ZTdHJlYW0pIHsNCgkJCQl2YXIgbGluZSA9IGYuUmVhZExpbmUoKTsNCgkJCQlpZiAoIWxp", + "bmUubWF0Y2goL15ccyo7LykpIHsNCgkJCQkJaWYgKG0gPSBsaW5lLm1hdGNoKC9eXHMqXFso", + "W15cXV0qKVxdLykpIHsNCgkJCQkJCWlmIChwb3MgPT0gMCAmJiBsby5jYXNlY21wKGxvLnN0", + "cmlwKG1bMV0pLCBzZWN0aW9uKSkgew0KCQkJCQkJCXBvcyA9IDE7CgkJCQkJCQlpZiAoa2V5", + "ID09PSBudWxsKSBjb250aW51ZTsNCgkJCQkJCQl1cHBlciArPSBsaW5lICsgcmV0Q29kZTsK", + "CQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJfSBlbHNlIGlmIChwb3MgPT0gMSkgew0KCQkJCQkJ", + "CXBvcyA9IDI7CgkJCQkJCQkKCQkJCQkJCWxvd2VyICs9IGxpbmUgKyByZXRDb2RlOw0KCQkJ", + "CQkJCWJyZWFrOw0KCQkJCQkJfQ0KCQkJCQl9IGVsc2UgaWYgKHBvcyA9PSAxICYmIChtID0g", + "bGluZS5tYXRjaCgvXiguKj8pPSguKikkLykpKSB7DQoJCQkJCQlpZiAoa2V5ID09PSBudWxs", + "KSBjb250aW51ZTsNCgkJCQkJCQoJCQkJCQkKCQkJCQkJCgkJCQkJCWlmIChsby5jYXNlY21w", + "KGxvLnN0cmlwKG1bMV0pLCBrZXkpKSB7DQoJCQkJCQkJa2V5ID0gbVsxXTsNCgkJCQkJCQli", + "cmVhazsKCQkJCQkJfQ0KCQkJCQkJdXBwZXIgKz0gbGluZSArIHJldENvZGU7CgkJCQkJCWNv", + "bnRpbnVlOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCXVwcGVyICs9IGxpbmUgKyByZXRDb2RlOwoJ", + "CQkJaWYgKHBvcyA+PSAyKSBicmVhazsNCgkJCX0NCgkJCWlmIChrZXkgIT09IG51bGwgJiYg", + "dmFsdWUgIT09IG51bGwpIHsNCgkJCQlpZiAocG9zKSB7CQoJCQkJCXVwcGVyICs9IGtleSAr", + "ICI9IiArIHZhbHVlICsgcmV0Q29kZTsNCgkJCQl9IGVsc2UgewkNCgkJCQkJCgkJCQkJbG93", + "ZXIgKz0gIlsiICsgc2VjdGlvbiArICJdIiArIHJldENvZGUgKyBrZXkgKyAiPSIgKyB2YWx1", + "ZSArIHJldENvZGU7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKCFmLkF0RW5kT2ZTdHJlYW0pIHsN", + "CgkJCQl0cnkgeyAKCQkJCQlsb3dlciArPSBmLlJlYWRBbGwoKTsNCgkJCQl9IGNhdGNoKGUp", + "ew0KCQkJCQllY2hvKCJXYXJuaW5nOiIsZSk7DQoJCQkJfQ0KCQkJfQ0KCQkJZi5DbG9zZSgp", + "Ow0KCQkJdmFyIGYgPSBmc28uT3BlblRleHRGaWxlKGZpbGVuYW1lLCAyLCB0cnVlLCBsby5n", + "ZXRGbXRFbmMoZmlsZW5hbWUpKTsgCgkJCWYuV3JpdGUodXBwZXIgKyBsb3dlcik7DQoJCQlm", + "LkNsb3NlKCk7DQoJCX0gY2F0Y2goZSkgew0KCQkJV1NjcmlwdC5FY2hvKFdTY3JpcHQuU2Ny", + "aXB0RnVsbE5hbWUgKyByZXRDb2RlICsgZmlsZW5hbWUgKyByZXRDb2RlICsgZS5kZXNjcmlw", + "dGlvbik7DQoJCX0NCgkJcmV0dXJuIHVwcGVyICsgbG93ZXI7CQkNCgl9DQp9Ow0KCiRnbG9i", + "YWwuZ2V0aW5pID0gZnVuY3Rpb24oZmlsZW5hbWUsIHNlY3Rpb24sIGtleSkgCXsgcmV0dXJu", + "KGluaUZpbGVJTy5nZXQoZmlsZW5hbWUsc2VjdGlvbixrZXkpKTsgfQ0KJGdsb2JhbC5wdXRp", + "bmkgPSBmdW5jdGlvbihmaWxlbmFtZSxzZWN0aW9uLGtleSx2YWx1ZSkgeyByZXR1cm4oaW5p", + "RmlsZUlPLnNldChmaWxlbmFtZSxzZWN0aW9uLGtleSx2YWx1ZSkpO30NCg0KCgoNCnZhciBy", + "ZWdEYXRhSU8gPSB7IAoJcmVwbGFjZUhLRVk6ZnVuY3Rpb24oc3RyKXsNCgkJDQoJCXN0ciA9", + "IHN0ci5yZXBsYWNlKC9eSEtDUi8sIkhLRVlfQ0xBU1NFU19ST09UIik7DQoJCXN0ciA9IHN0", + "ci5yZXBsYWNlKC9eSEtDVS8sIkhLRVlfQ1VSUkVOVF9VU0VSIik7DQoJCXN0ciA9IHN0ci5y", + "ZXBsYWNlKC9eSEtMTS8sIkhLRVlfTE9DQUxfTUFDSElORSIpOw0KCQlyZXR1cm4gc3RyOw0K", + "CX0sDQoJYmFja3VwOmZ1bmN0aW9uKHVybCxmaWxlUGF0aCl7DQoJCXZhciBsbz1yZWdEYXRh", + "SU87DQoJCXZhciBiVG1wPWZhbHNlOw0KCQlpZiAoaXNOb25lKGZpbGVQYXRoKSl7DQoJCQlm", + "aWxlUGF0aCA9IGdldFRlbXBGaWxlKCk7DQoJCQliVG1wID0gdHJ1ZTsNCgkJfQ0KCQl2YXIg", + "byA9IGRvQ21kKHsiZWNobyI6ZmFsc2V9LCJyZWciLCJleHBvcnQiLHVybCwgZmlsZVBhdGgg", + "LCAiL3kiKTsNCgkJaWYgKCBvLkV4aXRDb2RlICE9IDAgKSB7IAoJCQllY2hvKG8uTXNnLmpv", + "aW4oIlxuIikpOw0KCQkJaWYgKCBiVG1wICkgDQoJCQkJZGVsZXRlRmlsZShmaWxlUGF0aCk7", + "DQoJCQlyZXR1cm4gbnVsbDsNCgkJfQ0KCQl2YXIgZW5jb2RpbmcgPWZpbGVQYXRoLmdldEVu", + "Y29kZSh0cnVlKTsNCgkJdmFyIG90U3RyPWZpbGVQYXRoLnJlYWRBbGxFbmNvZGluZyhlbmNv", + "ZGluZyk7DQoJCWZpbGVQYXRoLndyaXRlQWxsRW5jb2RpbmcoZW5jb2Rpbmcsb3RTdHIpOwoJ", + "CQoJCWlmICggYlRtcCApIA0KCQkJZGVsZXRlRmlsZShmaWxlUGF0aCk7DQoJCXJldHVybiBv", + "dFN0cjsNCgl9LA0KCXJlc3RvcmU6ZnVuY3Rpb24oZmlsZVBhdGgpew0KCQl2YXIgbG89cmVn", + "RGF0YUlPOwkJDQoJCWlmICggIWZpbGVQYXRoLmlzRXhpc3QoKSkNCgkJCXJldHVybiBmYWxz", + "ZTsNCgkJdmFyIG8gPSBkb0NtZCh7ImVjaG8iOmZhbHNlfSwicmVnIiwiaW1wb3J0IixmaWxl", + "UGF0aCApOw0KCQlpZiAoIG8uRXhpdENvZGUgIT0gMCApIHsgCgkJCWVjaG8oby5Nc2cuam9p", + "bigiXG4iKSk7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJcmV0dXJuIHRydWU7DQoJfSwN", + "CglnZXQ6ZnVuY3Rpb24oIHJlZ1BhdGgsIGtleU5hbWUsIGJSZWN1cnNlICkgew0KCQlpZiAo", + "YlJlY3Vyc2U9PXVuZGVmaW5lZCkgDQoJCQliUmVjdXJzZSA9IHRydWU7CgkJdmFyIGxvPXJl", + "Z0RhdGFJTzsJCQ0KCQl2YXIgb3QgPSB7fTsNCgkJdmFyIGJTaW5nbGUgPSBpc09rKGtleU5h", + "bWUpID8gdHJ1ZTpmYWxzZTsNCgkJdmFyIGJTdWIJPSBmYWxzZTsNCgkJdmFyIGhrZXkgPSBs", + "by5yZXBsYWNlSEtFWShyZWdQYXRoKTsNCgkJaWYgKCBiU2luZ2xlICkgew0KCQkJYlN1YiA9", + "IGZhbHNlOw0KCQkJdmFyIGtleU5hbWVWZWMgPSBrZXlOYW1lLnNwbGl0KCJcXCIpOw0KCQkJ", + "aWYgKCBrZXlOYW1lVmVjLmxlbmd0aCA+IDEpew0KCQkJCWtleU5hbWUgPSBrZXlOYW1lVmVj", + "LnBvcCgpOw0KCQkJCWhrZXkgKz0gKCJcXCIgKyBrZXlOYW1lVmVjLmpvaW4oIlxcIikgKTsN", + "CgkJCX0NCgkJfSBlbHNlIHsNCgkJCWJTdWIgPSBiUmVjdXJzZTsKCQl9DQoJCQoJCQoJCQoJ", + "CQoJCXZhciBvID0gZG9DbWQoe2VjaG86ZmFsc2V9LCJyZWciLCJxdWVyeSIsaGtleSwgYlN1", + "YiA/ICIvcyI6IiIsIGJTaW5nbGU/Ii92IjoiIiwgYlNpbmdsZT8ga2V5TmFtZToiIikgOw0K", + "CQlpZiAoIG8uRXhpdENvZGUgIT0gMCApIHsgCgkJCWVjaG8oby5Nc2cuam9pbigiXG4iKSk7", + "DQoJCQlyZXR1cm4gbnVsbDsNCgkJfQ0KCQl2YXIgc3Via2V5Ow0KCQl2YXIgcmVLZXk9L1xz", + "KihbXiBdKylccysoW14gXSspXHMrKC4qKSQvOwkNCgkJZm9yKHZhciBpPTA7aTxvLk1zZy5s", + "ZW5ndGg7aSsrKXsNCgkJCXZhciBsbiA9IG8uTXNnW2ldOw0KCQkJaWYgKCBsbiA9PSAiIiAp", + "IGNvbnRpbnVlOw0KCQkJaWYgKCBsbi5pbmRleE9mKGhrZXkpID09IDAgKSB7CgkJCQlzdWJr", + "ZXk9IGxuLnJlcGxhY2UoaGtleSwiIik7DQoJCQkJaWYgKCBzdWJrZXkgPT0gIiIgKSANCgkJ", + "CQkJc3Via2V5ID0gImdsb2JhbCI7DQoJCQkJc3Via2V5ID0gc3Via2V5LnJlcGxhY2UoL15c", + "XC8sIiIpOw0KCQkJCWlmICggIShzdWJrZXkgaW4gb3QpICkgew0KCQkJCQlvdFtzdWJrZXld", + "PXt9Ow0KCQkJCX0JDQoJCQkJY29udGludWU7DQoJCQl9DQoJCQl2YXIgYXIgPSByZUtleS5l", + "eGVjKGxuKTsNCgkJCWlmICggYXIgKSB7DQoJCQkJdmFyIHZkYXRhID0gKGFyWzJdPT0iUkVH", + "X0RXT1JEIik/IHBhcnNlSW50KGFyWzNdKTphclszXTsKCQkJCW90W3N1YmtleV1bYXJbMV1d", + "ID0ge3Y6dmRhdGEsdHlwZTphclsyXX07DQoJCQl9DQoJCX0NCgkJcmV0dXJuIG90Ow0KCX0s", + "DQoJc2V0OmZ1bmN0aW9uKCByZWdQYXRoLCBzZWNOYW1lLCBrZXlOYW1lLCB2YWx1ZSApIHsN", + "CgkJdmFyIHJlZ1VSTCA9IHJlZ1BhdGg7CQ0KCQlpZiAocmVnVVJMLnNsaWNlKC0xKSAhPSAi", + "XFwiICkgDQoJCQlyZWdVUkwgKz0gIlxcIjsNCgkJaWYgKCAhKGlzTm9uZShzZWNOYW1lKSB8", + "fCAoc2VjTmFtZSA9PSAiZ2xvYmFsIikpICl7DQoJCQlyZWdVUkwgKz0gKHNlY05hbWUgKyAi", + "XFwiKTsNCgkJfQ0KCQlyZWdVUkwgKz0ga2V5TmFtZTsNCgkJdmFyIHZhbHVlVHlwZSA9ICh0", + "eXBlb2YodmFsdWUpPT09Im51bWJlciIpPyAiUkVHX0RXT1JEIjoiUkVHX1NaIjsNCgkJc2gu", + "cmVnV3JpdGUocmVnVVJMLHZhbHVlLHZhbHVlVHlwZSk7DQoJfQ0KfQ0KJGdsb2JhbC5yZWdE", + "YXRhSU8gPSByZWdEYXRhSU87DQoKDQokZ2xvYmFsLnJlYWRQYXJhbSA9IGZ1bmN0aW9uKHVy", + "bCxmVHlwZSxiUmVjdXJzZSl7DQoJaWYgKCBiUmVjdXJzZT09dW5kZWZpbmVkICkgDQoJCWJS", + "ZWN1cnNlID0gdHJ1ZTsKDQoJdmFyIG9iaiA9IHt9Ow0KCW9iai5fIAk9IHt9OwkKCW9iai5k", + "YXRhID0ge307CQoJdmFyIGRhdGEgPSBvYmouZGF0YTsKCXZhciB3b3JrID0gb2JqLl87CQoJ", + "aWYgKCBpc05vbmUoZlR5cGUpICkgDQoJCWZUeXBlID0gImluaSI7IAoJd29yay5vcmdQYXRo", + "ID0gdXJsOw0KCWlmICggZlR5cGUgPT0gImluaSIgKSB7CQkJCgkJaWYgKCAhdXJsLmlzRXhp", + "c3QoKSApIHsNCgkJCWVjaG8oImZpbGUgbm90IGV4aXN0Iik7DQoJCQlyZXR1cm4gbnVsbDsN", + "CgkJfQ0KCQl2YXIgaW5pID0gaW5pRmlsZUlPLmdldCh1cmwpOwoJCXdvcmsub3JnUmVhZERh", + "dGEgPSB1cmwucmVhZEFsbEVuY29kaW5nKCk7DQoJCXdvcmsubmV3RGF0YSA9IHt9Ow0KCQlm", + "b3IodmFyIHMgaW4gaW5pKXsNCgkJCWRhdGFbc109e307DQoJCQlmb3IodmFyIGsgaW4gaW5p", + "W3NdKQ0KCQkJCWRhdGFbc11ba109aW5pW3NdW2tdOw0KCQl9DQoJCW9iai5zZXQ9ZnVuY3Rp", + "b24gKHNlYyxrZXksdmFsdWUpew0KCQkJaWYgKCAhKHNlYyBpbiBkYXRhKSApIA0KCQkJCWRh", + "dGFbc2VjXT17fTsNCgkJCWRhdGFbc2VjXVtrZXldPSB2YWx1ZTsNCgkJCQoJCQl2YXIgbmV3", + "RGF0YSA9IHdvcmsubmV3RGF0YTsNCgkJCWlmICggIShzZWMgaW4gbmV3RGF0YSkgKQ0KCQkJ", + "CW5ld0RhdGFbc2VjXT17fTsNCgkJCW5ld0RhdGFbc2VjXVtrZXldPSB2YWx1ZTsNCgkJCXJl", + "dHVybiBvYmo7DQoJCX0NCgkJb2JqLmdldD1mdW5jdGlvbihzZWMsa2V5KXsNCgkJCWlmICgg", + "aXNOb25lKHNlYykgKQ0KCQkJCXNlYyA9ICJnbG9iYWwiOw0KCQkJaWYgKCAhKHNlYyBpbiBk", + "YXRhKSApIA0KCQkJCXJldHVybiB1bmRlZmluZWQ7DQoJCQlpZiAoICEoa2V5IGluIGRhdGFb", + "c2VjXSkgKSANCgkJCQlyZXR1cm4gdW5kZWZpbmVkOw0KCQkJcmV0dXJuICBkYXRhW3NlY11b", + "a2V5XTsNCgkJfQ0KCQlvYmouc2F2ZSA9IGZ1bmN0aW9uKG90UGF0aCxmVHlwZSl7DQoJCQl2", + "YXIgYk9yZyA9IGZhbHNlOw0KCQkJaWYgKGlzTm9uZShvdFBhdGgpKQ0KCQkJCW90UGF0aCA9", + "IHdvcmsub3JnUGF0aDsNCgkJCWlmICggb3RQYXRoLkZQKCkgPT0gd29yay5vcmdQYXRoLkZQ", + "KCkgKQ0KCQkJCWJPcmcgPSB0cnVlOw0KCQkJdmFyIHNhdmVGdW5jID0gZnVuY3Rpb24ob3RG", + "KSB7DQoJCQkJZm9yKHZhciBzIGluIHdvcmsubmV3RGF0YSApew0KCQkJCQlmb3IodmFyIGsg", + "aW4gd29yay5uZXdEYXRhW3NdKXsNCgkJCQkJCWluaUZpbGVJTy5zZXQob3RGLHMsayx3b3Jr", + "Lm5ld0RhdGFbc11ba10pOw0KCQkJCQl9DQoJCQkJfQkJCQkNCgkJCX07DQoJCQlpZiAoIWJP", + "cmcpewoJCQkJb3RQYXRoLndyaXRlQWxsKHdvcmsub3JnUmVhZERhdGEpOwoJCQl9DQoJCQlz", + "YXZlRnVuYyhvdFBhdGgpOw0KCQkJcmV0dXJuIG9iajsNCgkJfTsNCgkJCgl9IGVsc2UgaWYg", + "KCBmVHlwZSA9PSAia3YiICkgewkKCQlpZiAoICF1cmwuaXNFeGlzdCgpICkgew0KCQkJZWNo", + "bygiZmlsZSBub3QgZXhpc3QiKTsNCgkJCXJldHVybiBudWxsOw0KCQl9DQoJCXZhciBrdiA9", + "IHJlYWRLZXlWYWx1ZSh1cmwse2V4cGFuZE1hY3JvOnRydWV9KTsNCgkJd29yay5vcmdLZXlW", + "YWx1ZU9iaiA9IGt2Ow0KCQl3b3JrLm9yZ1JlYWREYXRhID0gdXJsLnJlYWRBbGwoKTsNCgkJ", + "d29yay5uZXdEYXRhID0ge307DQoJCXZhciBrZXlWZWMgPSBrdi5hS2V5TGlzdDsKCQl2YXIg", + "cyA9ICJnbG9iYWwiOw0KCQlkYXRhW3NdPXt9OwkNCgkJZm9yKHZhciBpPTA7aTwga2V5VmVj", + "Lmxlbmd0aDtpKyspew0KCQkJdmFyIGsgPSBrZXlWZWNbaV07DQoJCQl2TnVtID0ga3YuZ2V0", + "QXJyYXlOdW0oayk7DQoJCQlpZiAoIHZOdW0gIT0gMSApIHsNCgkJCQlkYXRhW3NdW2tdID0g", + "W107CgkJCQlmb3IodmFyIGo9MDtqPHZOdW07aisrKQ0KCQkJCQkoZGF0YVtzXVtrXSkucHVz", + "aChrdi5nZXRWYWx1ZShrLGopKTsNCgkJCX0gZWxzZSB7DQoJCQkJZGF0YVtzXVtrXSA9IGt2", + "LmdldFZhbHVlKGspOw0KCQkJfQ0KCQl9DQoJCW9iai5zZXQgPSBmdW5jdGlvbihhcmdTZWMs", + "YXJnS2V5LGFyZ1ZhbHVlKXsNCgkJCXZhciBzZWMgPSBhcmdTZWMsIGtleT1hcmdLZXksIHZh", + "bHVlPWFyZ1ZhbHVlOw0KCQkJaWYgKCBhcmd1bWVudHMubGVuZ3RoPT0yICl7DQoJCQkJc2Vj", + "ID0gdW5kZWZpbmVkO2tleT1hcmd1bWVudHNbMF07dmFsdWU9YXJndW1lbnRzWzFdOwkNCgkJ", + "CX0JCQkNCgkJCWlmICggaXNOb25lKHNlYykgKSANCgkJCQlzZWMgPSAiZ2xvYmFsIjsNCgkJ", + "CWlmICggIShzZWMgaW4gZGF0YSkgKQ0KCQkJCWRhdGFbc2VjXT17fTsNCgkJCWRhdGFbc2Vj", + "XVtrZXldPSB2YWx1ZTsNCgkJCQoJCQl2YXIgbmV3RGF0YSA9IHdvcmsubmV3RGF0YTsNCgkJ", + "CWlmICggIShzZWMgaW4gbmV3RGF0YSkgKQ0KCQkJCW5ld0RhdGFbc2VjXT17fTsNCgkJCW5l", + "d0RhdGFbc2VjXVtrZXldPSB2YWx1ZTsNCgkJCXJldHVybiBvYmo7DQoJCX0NCgkJb2JqLmdl", + "dD1mdW5jdGlvbiAoYXJnU2VjLGFyZ0tleSl7DQoJCQl2YXIgc2VjID0gYXJnU2VjLCBrZXk9", + "YXJnS2V5Ow0KCQkJaWYgKCBhcmd1bWVudHMubGVuZ3RoPT0xICl7CgkJCQlzZWMgPSB1bmRl", + "ZmluZWQ7DQoJCQkJa2V5PWFyZ3VtZW50c1swXTsNCgkJCX0NCgkJCWlmICggaXNOb25lKHNl", + "YykgKQ0KCQkJCXNlYyA9ICJnbG9iYWwiOw0KCQkJaWYgKCAhKHNlYyBpbiBkYXRhKSApIA0K", + "CQkJCXJldHVybiB1bmRlZmluZWQ7DQoJCQlpZiAoICEoa2V5IGluIGRhdGFbc2VjXSkgKSAN", + "CgkJCQlyZXR1cm4gdW5kZWZpbmVkOw0KCQkJcmV0dXJuICBkYXRhW3NlY11ba2V5XTsNCgkJ", + "fQ0KCQlvYmouc2F2ZSA9IGZ1bmN0aW9uKG90UGF0aCxmVHlwZSl7DQoJCQl2YXIgYk9yZyA9", + "IGZhbHNlOw0KCQkJaWYgKGlzTm9uZShvdFBhdGgpKQ0KCQkJCW90UGF0aCA9IHdvcmsub3Jn", + "UGF0aDsNCgkJCWlmICggb3RQYXRoLkZQKCkgPT0gd29yay5vcmdQYXRoLkZQKCkgKQ0KCQkJ", + "CWJPcmcgPSB0cnVlOw0KCQkJaWYgICghKCJvcmdLZXlWYWx1ZU9iaiIgaW4gd29yaykpIHsN", + "CgkJCQllY2hvKCJvcmdpbmFsIHJlYWQgbm90IGtleSB2YWx1ZSIpOw0KCQkJCXJldHVybiBm", + "YWxzZTsNCgkJCX0NCgkJCXZhciBrdiA9IHdvcmsub3JnS2V5VmFsdWVPYmo7DQoJCQlmb3Io", + "dmFyIHMgaW4gd29yay5uZXdEYXRhICl7DQoJCQkJdmFyIG5kID0gd29yay5uZXdEYXRhW3Nd", + "Ow0KCQkJCWZvcih2YXIgayBpbiBuZCl7DQoJCQkJCWlmICggKG5kW2tdKSBpbnN0YW5jZW9m", + "IEFycmF5ICkgDQoJCQkJCQlrdi5zZXRWYWx1ZShrLChuZFtrXSkuc2xpY2UoMCkpOwoJCQkJ", + "CWVsc2UgDQoJCQkJCQlrdi5zZXRWYWx1ZShrLChuZFtrXSkpOwkJCQoJCQkJfQ0KCQkJfQkJ", + "CQkNCgkJCWlmICghYk9yZykKCQkJCW90UGF0aC53cml0ZUFsbCh3b3JrLm9yZ1JlYWREYXRh", + "KTsKCQkJa3Yuc2F2ZUZpbGUob3RQYXRoKTsNCgkJCXJldHVybiBvYmo7DQoJCX07DQoJCQoJ", + "fSBlbHNlIGlmICggZlR5cGUgPT0gInJlZyIgKSB7ICAKCQkKCQl2YXIgcmVnID0gcmVnRGF0", + "YUlPLmdldCh1cmwsdW5kZWZpbmVkLGJSZWN1cnNlKTsNCgkJd29yay5vcmdSZWdPYmogPSBy", + "ZWc7DQoJCXdvcmsubmV3RGF0YSA9IHt9Ow0KCQl2YXIgcyA9ICJnbG9iYWwiOw0KCQlkYXRh", + "W3NdPXt9OwkNCgkJZm9yKHZhciBzIGluIHJlZyl7DQoJCQlkYXRhW3NdPXt9Ow0KCQkJZm9y", + "KHZhciBrIGluIHJlZ1tzXSkNCgkJCQlkYXRhW3NdW2tdPXJlZ1tzXVtrXS52Ow0KCQl9DQoJ", + "CW9iai5zZXQ9ZnVuY3Rpb24oYXJnU2VjLGFyZ0tleSxhcmdWYWx1ZSl7DQoJCQkKCQkJdmFy", + "IHNlYyA9IGFyZ1NlYywga2V5PWFyZ0tleSwgdmFsdWU9YXJnVmFsdWU7DQoJCQlpZiAoIGFy", + "Z3VtZW50cy5sZW5ndGg9PTIgKXsNCgkJCQlzZWMgPSB1bmRlZmluZWQ7a2V5PWFyZ3VtZW50", + "c1swXTt2YWx1ZT1hcmd1bWVudHNbMV07CQ0KCQkJfQkJCQ0KCQkJaWYgKCBpc05vbmUoc2Vj", + "KSApIA0KCQkJCXNlYyA9ICJnbG9iYWwiOw0KCQkJaWYgKCAhKHNlYyBpbiBkYXRhKSApDQoJ", + "CQkJZGF0YVtzZWNdPXt9Ow0KCQkJZGF0YVtzZWNdW2tleV09IHZhbHVlOw0KCQkJCgkJCXZh", + "ciBuZXdEYXRhID0gd29yay5uZXdEYXRhOw0KCQkJaWYgKCAhKHNlYyBpbiBuZXdEYXRhKSAp", + "DQoJCQkJbmV3RGF0YVtzZWNdPXt9Ow0KCQkJbmV3RGF0YVtzZWNdW2tleV09IHZhbHVlOw0K", + "CQkJcmV0dXJuIG9iajsJCQkNCgkJCQoJCX0NCgkJb2JqLmdldCA9IGZ1bmN0aW9uIChhcmdT", + "ZWMsYXJnS2V5KXsNCgkJCXZhciBzZWMgPSBhcmdTZWMsIGtleT1hcmdLZXk7DQoJCQlpZiAo", + "IGFyZ3VtZW50cy5sZW5ndGg9PTEgKXsKCQkJCXNlYyA9IHVuZGVmaW5lZDsNCgkJCQlrZXk9", + "YXJndW1lbnRzWzBdOw0KCQkJfQ0KCQkJaWYgKCBpc05vbmUoc2VjKSApDQoJCQkJc2VjID0g", + "Imdsb2JhbCI7DQoJCQlpZiAoICEoc2VjIGluIGRhdGEpICkgDQoJCQkJcmV0dXJuIHVuZGVm", + "aW5lZDsNCgkJCWlmICggIShrZXkgaW4gZGF0YVtzZWNdKSApIA0KCQkJCXJldHVybiB1bmRl", + "ZmluZWQ7DQoJCQlyZXR1cm4gIGRhdGFbc2VjXVtrZXldOw0KCQl9DQoJCW9iai5zYXZlID0g", + "ZnVuY3Rpb24ob3RQYXRoLGZUeXBlKXsNCgkJCXZhciBiT3JnID0gZmFsc2U7DQoJCQlpZiAo", + "aXNOb25lKG90UGF0aCkpDQoJCQkJb3RQYXRoID0gd29yay5vcmdQYXRoOw0KCQkJaWYgKCBv", + "dFBhdGggPT0gd29yay5vcmdQYXRoICkNCgkJCQliT3JnID0gdHJ1ZTsNCgkJCWlmICAoISgi", + "b3JnUmVnT2JqIiBpbiB3b3JrKSkgew0KCQkJCWVjaG8oIm9yZ2luYWwgcmVhZCBub3QgcmVn", + "Iik7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQkJdmFyIHNldEZ1bmMgPSBmdW5jdGlv", + "bihvdCxkKXsNCgkJCQlmb3IodmFyIHMgaW4gZCApew0KCQkJCQl2YXIgbmQgPSBkW3NdOw0K", + "CQkJCQlmb3IodmFyIGsgaW4gbmQpew0KCQkJCQkJaWYgKCAobmRba10pIGluc3RhbmNlb2Yg", + "QXJyYXkgKSB7DQoJCQkJCQkJZWNobygiYXJyeSBjYW5ub3Qgc3VwcG9ydCIpOw0KCQkJCQkJ", + "CXJldHVybiBmYWxzZTsNCgkJCQkJCX0gDQoJCQkJCQlyZWdEYXRhSU8uc2V0KG90LHMsayxu", + "ZFtrXSk7DQoJCQkJCX0NCgkJCQl9CQ0KCQkJCXJldHVybiB0cnVlOwkJCQ0KCQkJfQ0KCQkJ", + "aWYgKCFiT3JnKQoJCQkJc2V0RnVuYyhvdFBhdGgsZGF0YSk7DQoJCQlzZXRGdW5jKG90UGF0", + "aCx3b3JrLm5ld0RhdGEpOw0KCQkJcmV0dXJuIG9iajsNCgkJfTsNCgkJCgl9DQoJCglyZXR1", + "cm4gb2JqOw0KfQ0KCiRnbG9iYWwucmVhZFBhcmFtLmluaSAJPSBmdW5jdGlvbih1cmwpIHsg", + "cmV0dXJuKHJlYWRQYXJhbSh1cmwsImluaSIpKTt9DQoKJGdsb2JhbC5yZWFkUGFyYW0ua3Yg", + "CT0gZnVuY3Rpb24odXJsKSB7IHJldHVybihyZWFkUGFyYW0odXJsLCJrdiIgKSk7fQ0KCiRn", + "bG9iYWwucmVhZFBhcmFtLnJlZyAJPSBmdW5jdGlvbih1cmwsYlJlY3Vyc2UpIHtyZXR1cm4o", + "cmVhZFBhcmFtKHVybCwicmVnIixiUmVjdXJzZSkpO30NCg0KJGdsb2JhbC5nZXRPYmpMaW5r", + "PWZ1bmN0aW9uKCAgKSB7Cgl2YXIgYWcgPSBhcmd1bWVudHM7DQoJaWYgKCBhZy5sZW5ndGgg", + "PT0gMCApIHJldHVybiB1bmRlZmluZWQ7DQoJdmFyIG8gPSBhZ1swXTsNCglmb3IodmFyIGk9", + "MTsgaSA8IGFnLmxlbmd0aDsgaSsrICl7DQoJCWlmICggIShhZ1tpXSBpbiBvKSApIHJldHVy", + "biB1bmRlZmluZWQ7DQoJCW8gPSBvW2FnW2ldXTsNCgl9DQoJcmV0dXJuIG87DQp9DQoNCgoN", + "CnZhciB1UkU9ew0KCWVzY2FwZVJFOmZ1bmN0aW9uKHN0cil7DQoJCXJldHVybiBzdHIucmVw", + "bGFjZSgvWy1cL1xcXiQqKz8uKCl8XFtcXXt9XS9nLCAnXFwkJicpOw0KCX0sDQoJc3BsaXRS", + "RTogZnVuY3Rpb24gKHN0cikgewoJCXZhciBhciA9IHN0ci5tYXRjaCgvXlwvKC4qKVwvKFte", + "XC9dKikkLyk7DQoJCWlmICggYXIgKQ0KCQkJcmV0dXJuIHtleHA6YXJbMV0sZmxnOmFyWzJd", + "fTsNCgkJcmV0dXJuIHtleHA6bnVsbCxmbGc6bnVsbH07DQoJfSwNCglyZW1ha2VSRTpmdW5j", + "dGlvbihyZVRwbCx2TmFtZSxyZXBTdHIpew0KCQlpZiAoIGdldE9iamVjdFR5cGUocmVUcGwp", + "ICE9ICJbb2JqZWN0IFJlZ0V4cF0iICkgew0KCQkJcmVUaHJvdygicmVtYWtlUkUiLCJub3Qg", + "UmVnRXhwIHRlbXBsYXRlIHBhdHRlcm4iKTsNCgkJfQ0KCQl2YXIgYXIgPSB1UkUuc3BsaXRS", + "RSggcmVUcGwudG9TdHJpbmcoKSApOw0KCQlpZiAoIGFyLmV4cCA9PSBudWxsICkgew0KCQkJ", + "cmV0dXJuIHJlVHBsOwoJCX0NCgkJaWYgKCB0eXBlT2Yodk5hbWUpID09ICJzdHJpbmciICkg", + "ew0KCQkJdmFyICByZV92TmFtZSA9IFJlZ0V4cCh2TmFtZSwiaWciKTsNCgkJCXZhciBleHAg", + "PSBhci5leHAucmVwbGFjZShyZV92TmFtZSwgdVJFLmVzY2FwZVJFKHJlcFN0cikgKTsNCgkJ", + "CQoNCgkJCWlmICggaXNPayhhci5mbGcpICkgDQoJCQkJcmV0dXJuICggUmVnRXhwKGV4cCxh", + "ci5mbGcpKTsNCgkJCXJldHVybiAoIFJlZ0V4cChleHApICk7CQkJDQoJCX0gZWxzZSB7DQoJ", + "CQkKCQkJdmFyIGV4cCA9IGFyLmV4cDsNCgkJCWZvcih2YXIga2V5IGluIHZOYW1lICkgew0K", + "CQkJCXZhciBzcmMgPSBrZXksIGRzdCA9IHZOYW1lW2tleV07DQoJCQkJdmFyIHJlX3NyYyA9", + "IFJlZ0V4cChzcmMsImlnIik7DQoJCQkJZXhwID0gZXhwLnJlcGxhY2UocmVfc3JjLCB1UkUu", + "ZXNjYXBlUkUoZHN0KSApOw0KCQkJfQ0KCQkJaWYgKCBpc09rKGFyLmZsZykgKSANCgkJCQly", + "ZXR1cm4gKCBSZWdFeHAoZXhwLGFyLmZsZykpOw0KCQkJcmV0dXJuICggUmVnRXhwKGV4cCkg", + "KTsJCQkNCgkJfQ0KCX0NCn0NCiRnbG9iYWwudVJFID0gdVJFOw0KJGdsb2JhbC5yZW1ha2VS", + "RSA9IHVSRS5yZW1ha2VSRTsNCg0KCg0KJGdsb2JhbC5nZXRTeXN0ZW1JbmZvID0gZnVuY3Rp", + "b24oKSB7DQoNCgl2YXIgcmVnVVJMID0gIkhLTE1cXFNPRlRXQVJFXFxNaWNyb3NvZnRcXFdp", + "bmRvd3MgTlRcXEN1cnJlbnRWZXJzaW9uIjsNCgkKCQkJCQkJCQkJCgkJCQkJCQkJCQ0KCXZh", + "ciByZWcgPSByZWFkUGFyYW0ucmVnKHJlZ1VSTCxmYWxzZSk7Cgl2YXIgbSA9IHt9Ow0KCWVh", + "Y2goDQoJCVsiQ3VycmVudFZlcnNpb24iLCJSZWxlYXNlSWQiLCJQcm9kdWN0TmFtZSIsIkN1", + "cnJlbnRCdWlsZCIsIlVCUiJdLCBmdW5jdGlvbigpeyBtW3RoaXNdPXJlZy5nZXQodGhpcyk7", + "IH0NCgkpOyANCglpZiAoaXNOb25lKG0uUmVsZWFzZUlkKSkgDQoJCW0uUmVsZWFzZUlkID0g", + "IiI7DQoJCgl2YXIgb3M9ew0KCQkiZnVsbE5hbWUiCQk6bS5Qcm9kdWN0TmFtZSsiICIrbS5S", + "ZWxlYXNlSWQrIihCdWlsZCAiK20uQ3VycmVudFZlcnNpb24rIi4iK20uQ3VycmVudEJ1aWxk", + "KyIgIittLlVCUisiKSINCgkJLCJuYW1lIgkJCTptLlByb2R1Y3ROYW1lDQoJCSwidmVyc2lv", + "biIJCTptLlJlbGVhc2VJZCANCgkJLCJjdXJyZW50VmVyIgk6bS5DdXJyZW50VmVyc2lvbg0K", + "CQksImJ1aWxkVmVyIgkJOm0uQ3VycmVudEJ1aWxkDQoJCSwiVUJSIgkJCTptLlVCUg0KCX0N", + "CglyZXR1cm4gb3M7DQp9DQoNCgoNCiRnbG9iYWwuZ2V0SG9zdE5hbWUgPSBmdW5jdGlvbigp", + "IHsgcmV0dXJuIChuZXcgQWN0aXZlWE9iamVjdCgiV1NjcmlwdC5OZXRXb3JrIikpLkNvbXB1", + "dGVyTmFtZTt9DQokZ2xvYmFsLmdldElQQWRkcmVzcyA9IGZ1bmN0aW9uKCkgewoJdmFyIHN0", + "ckNvbXB1dGVyID0gIi4iOw0KCXZhciBuYW1lID0gIndpbm1nbXRzOlxcXFwiICsgc3RyQ29t", + "cHV0ZXIgKyAiXFxyb290XFxDSU1WMiI7DQoJdmFyIG9XbWlzID0gR2V0T2JqZWN0KG5hbWUp", + "Ow0KCXZhciBjb2xzID0gb1dtaXMuRXhlY1F1ZXJ5KCJTRUxFQ1QgKiBGUk9NIFdpbjMyX05l", + "dHdvcmtBZGFwdGVyQ29uZmlndXJhdGlvbiBXSEVSRSBJUEVuYWJsZWQ9VFJVRSIpDQoJdmFy", + "IGxpc3QgPSBuZXcgRW51bWVyYXRvcihjb2xzKQ0KCWZvcig7IWxpc3QuYXRFbmQoKTsgbGlz", + "dC5tb3ZlTmV4dCgpKXsNCgkJdmFyIHByb2MgPSBsaXN0Lml0ZW0oKTsNCgkJcmV0dXJuIHBy", + "b2MuSVBBZGRyZXNzKDApOw0KCX0NCn0NCg0KCgkNCg0KCg0KCiRnbG9iYWxfZXhwb3J0c19t", + "YWtlKCk7DQp9KSgpOwoNCgoKCgoKDQooZnVuY3Rpb24oKXsNCgoNCg0KdmFyICRnbG9iYWxf", + "ZXhwb3J0cyA9IHt9OwoJdmFyICRnbG9iYWxfZXhwb3J0c19tYWtlID0gZnVuY3Rpb24oKSB7", + "CgkJdmFyIGV2PSIiOw0KCQlmb3IoIHZhciBrIGluICRnbG9iYWxfZXhwb3J0cyApDQoJCQll", + "diArPSBrICsgIj0kZ2xvYmFsX2V4cG9ydHNbXCIiK2srIlwiXVxuIjsNCgkJRnVuY3Rpb24o", + "IiRnbG9iYWxfZXhwb3J0cyIsZXYpKCRnbG9iYWxfZXhwb3J0cyk7DQoJCQoNCgkJCgl9Ow0K", + "CShmdW5jdGlvbigpeyAKCQl2YXIgJG5zID0gJ3VIZXJlRG9jJzsNCgkJCgkJZnVuY3Rpb24g", + "bWFrZUV4cG9ydHMoKXsNCgkJCXJldHVybiAoew0KCQkJCQoJCQkJCgkJCQkiaGVyZURvYyIJ", + "CTpbaGVyZURvYywJCXRydWVdLA0KCQkJCSJoZXJlS2V5IgkJOltoZXJlS2V5LAkJdHJ1ZV0s", + "DQoJCQkJCgkJCQkicmVhZEhlcmVEb2MiCTpbYl9yZWFkSGVyZURvYywgdHJ1ZV0sDQoJCQkJ", + "InJlYWRIZXJlRG9jVmVjIjpbYl9yZWFkSGVyZURvY1ZlYywgdHJ1ZV0sDQoJCQkJInJlYWRI", + "ZXJlS2V5Igk6W2JfcmVhZEhlcmVLZXksIHRydWVdDQoJCQkJCgkJCX0pOw0KCQl9DQoJCXZh", + "ciAkZyA9ICRnbG9iYWxfZXhwb3J0czsNCgkJdmFyIF90aGlzPXt9OyAkZ1skbnNdPV90aGlz", + "Ow0KDQoJCQoJCXZhciByZUNvbnRlbnRzID0gL1tcc1xTXSpcL1wqKFtcc1xTXSopXCpcL1x9", + "W1wpXSovOyANCgkJCQoJCQkKCQkJCgkJDQoJCQoJCXZhciBiX3JlYWRIZXJlRG9jPXJlYWRI", + "ZXJlRG9jLCBiX3JlYWRIZXJlRG9jVmVjPXJlYWRIZXJlRG9jVmVjLCBiX3JlYWRIZXJlS2V5", + "PXJlYWRIZXJlS2V5Ow0KDQoJCXZhciBoZXJlRG9jID0gZnVuY3Rpb24oZnVuYyxyZXApew0K", + "CQkJaWYgKHR5cGVvZiBmdW5jICE9PSAnZnVuY3Rpb24nKSB7DQoJCQkJcmV0dXJuIChiX3Jl", + "YWRIZXJlRG9jKGZ1bmMscmVwKSk7CgkJCX0NCgkJCXZhciBfZGF0YT1udWxsLCBfZnVuYz1u", + "dWxsOw0KCQkJaWYgKCBmdW5jID09IHVuZGVmaW5lZCApICANCgkJCQlyZXR1cm4gIiI7DQoJ", + "CQlfZnVuYyA9IGZ1bmM7DQoJCQlpZiAoIHJlcCAhPSB1bmRlZmluZWQgKSB7DQoJCQkJX2Rh", + "dGEgPSByZXA7DQoJCQl9DQoJCQlpZiAodHlwZW9mIF9mdW5jICE9PSAnZnVuY3Rpb24nKSBy", + "ZXR1cm4gIiI7DQoJCQl2YXIgX2RvYyA9IF9mdW5jLnRvU3RyaW5nKCkubWF0Y2gocmVDb250", + "ZW50cylbMV07DQoJCQlpZiAoIF9kb2MgPT0gdW5kZWZpbmVkICkgcmV0dXJuICIiOw0KCQkJ", + "CgkJCWZvciAodmFyIF9rZXkgaW4gX2RhdGEpew0KCQkJCV9kb2MgPSBfZG9jLnJlcGxhY2Uo", + "bmV3IFJlZ0V4cChfa2V5LCJnIiksIF9kYXRhW19rZXldKTsNCgkJCX0NCgkJCXJldHVybiBf", + "ZG9jOw0KCQl9Cg0KCQkKDQoJCXZhciBoZXJlS2V5ID0gZnVuY3Rpb24oZnVuYyxyZXApew0K", + "CQkJaWYgKHR5cGVvZiBmdW5jICE9PSAnZnVuY3Rpb24nKSB7DQoJCQkJcmV0dXJuIChiX3Jl", + "YWRIZXJlRG9jKGZ1bmMscmVwKSk7CgkJCX0NCgkJCXZhciBtYXBEYXRhID0ge307DQoJCQl2", + "YXIgdmVjID0gc3BsaXRMaW5lKGhlcmVEb2MoZnVuYyxyZXApKTsNCgkJCQoJCQl2YXIgcmUg", + "PSAvKFteIFw9XHRcblxyXGZdKylccypcPSguKikkLzsJCgkJCQoJCQlmb3IodmFyIGk9MDsg", + "aSA8IHZlYy5sZW5ndGg7aSsrKXsNCgkJCQlpZiAoICgvXltcc10qXC9cLy8pLnRlc3QodmVj", + "W2ldKSApew0KCQkJCQljb250aW51ZTsKCQkJCX0NCgkJCQl2YXIgYXIgPSByZS5leGVjKHZl", + "Y1tpXSk7DQoJCQkJaWYgKCBpc05vbmUoYXIpICkgY29udGludWU7DQoJCQkJaWYgKCBhclsx", + "XSBpbiBtYXBEYXRhICkgY29udGludWU7DQoJCQkJbWFwRGF0YVthclsxXV0gPSBza2lwUXVv", + "dGEoYXJbMl0pOw0KCQkJfQ0KCQkJcmV0dXJuIG1hcERhdGE7DQoJCX0KCQ0KCQkKCQlfdGhp", + "cy51c2luZyA9IGZ1bmN0aW9uKGIpew0KCQkJCgkJCQoJCQl2YXIgZXggPSBtYWtlRXhwb3J0", + "cygpOw0KCQkJZm9yKHZhciBrIGluIGV4KXsNCgkJCQlpZihiPT10cnVlKXsNCgkJCQkJX3Ro", + "aXNba109ZXhba11bMF07CgkJCQl9Ow0KCQkJCWlmKChiIT10cnVlKXx8KGV4W2tdWzFdPT10", + "cnVlKSl7DQoJCQkJCSRnW2tdPWV4W2tdWzBdOwkgCgkJCQl9Ow0KCQkJfQ0KCQkJJGdsb2Jh", + "bF9leHBvcnRzX21ha2UoKTsNCgkJfQ0KCQlfdGhpcy51c2luZyh0cnVlKTsNCgl9KSh0aGlz", + "KTsKfSkoKTsKDQoKKGZ1bmN0aW9uKCl7DQoNCgkoZnVuY3Rpb24oZyl7IAoJCXZhciAkbnMg", + "PSAndUpzb24nOw0KCQkKCQlmdW5jdGlvbiBtYWtlRXhwb3J0cygpew0KCQkJcmV0dXJuICh7", + "DQoJCQkJCgkJCQkKCQkJCSJzdHJpbmdpZnkiCQkJOltzdHJpbmdpZnksCWZhbHNlXSwNCgkJ", + "CQkicGFyc2UiCQkJCTpbcGFyc2UsCQlmYWxzZV0NCgkJCQkKCQkJfSk7DQoJCX0NCgkJdmFy", + "ICRnID0gbmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7DQoJCWlmICgoJG5zIGluICRn", + "KSkgcmV0dXJuOw0KCQl2YXIgX3RoaXM9e307ICRnWyRuc109X3RoaXM7DQoJDQoJCQ0KCQkK", + "CQkNCgkJCgkJdmFyIHBhcnNlID0gZnVuY3Rpb24oc0pTKSB7cmV0dXJuICggZXZhbCgnKCcg", + "KyBzSlMgKyAnKScpICk7fQ0KCQl2YXIgc3RyaW5naWZ5ID0gIChmdW5jdGlvbiAoKXsNCgkJ", + "CXZhciB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7DQoJCQl2YXIgaGFz", + "T3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5Ow0KCQkJdmFy", + "IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIChhKSB7IHJldHVybiB0b1N0", + "cmluZy5jYWxsKGEpID09PSAnW29iamVjdCBBcnJheV0nOyB9Ow0KCQkJdmFyIGVzY01hcCA9", + "IHsnIic6ICdcXCInLCAnXFwnOiAnXFxcXCcsICdcYic6ICdcXGInLCAnXGYnOiAnXFxmJywg", + "J1xuJzogJ1xcbicsICdccic6ICdcXHInLCAnXHQnOiAnXFx0J307DQoJCQl2YXIgZXNjRnVu", + "YyA9IGZ1bmN0aW9uIChtKSB7IHJldHVybiBlc2NNYXBbbV0gfHwgJ1xcdScgKyAobS5jaGFy", + "Q29kZUF0KDApICsgMHgxMDAwMCkudG9TdHJpbmcoMTYpLnN1YnN0cigxKTsgfTsNCgkJCXZh", + "ciBlc2NSRSA9IC9bXFwiXHUwMDAwLVx1MDAxRlx1MjAyOFx1MjAyOV0vZzsNCgkJCXJldHVy", + "biBmdW5jdGlvbiBzdHJpbmdpZnkodmFsdWUpIHsNCgkJCQlpZiAodmFsdWUgPT0gbnVsbCkg", + "ew0KCQkJCQlyZXR1cm4gJ251bGwnOw0KCQkJCX0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09", + "PSAnbnVtYmVyJykgew0KCQkJCQlyZXR1cm4gaXNGaW5pdGUodmFsdWUpID8gdmFsdWUudG9T", + "dHJpbmcoKSA6ICdudWxsJzsNCgkJCQl9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Jv", + "b2xlYW4nKSB7DQoJCQkJCXJldHVybiB2YWx1ZS50b1N0cmluZygpOw0KCQkJCX0gZWxzZSBp", + "ZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykgew0KCQkJCQlpZiAodHlwZW9mIHZhbHVl", + "LnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykgew0KCQkJCQkJcmV0dXJuIHN0cmluZ2lmeSh2YWx1", + "ZS50b0pTT04oKSk7DQoJCQkJCX0gZWxzZSBpZiAoaXNBcnJheSh2YWx1ZSkpIHsNCgkJCQkJ", + "CXZhciByZXMgPSAnWyc7DQoJCQkJCQlmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0", + "aDsgaSsrKQ0KCQkJCQkJCXJlcyArPSAoaSA/ICcsJyA6ICcnKSArIHN0cmluZ2lmeSh2YWx1", + "ZVtpXSk7DQoJCQkJCQlyZXR1cm4gcmVzICsgJ10nOw0KCQkJCQl9IGVsc2UgaWYgKHRvU3Ry", + "aW5nLmNhbGwodmFsdWUpID09PSAnW29iamVjdCBPYmplY3RdJykgew0KCQkJCQkJdmFyIHRt", + "cCA9IFtdOw0KCQkJCQkJZm9yICh2YXIgayBpbiB2YWx1ZSkgew0KCQkJCQkJCQoJCQkJCQkJ", + "aWYgKGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGspKQ0KCQkJCQkJCQl0bXAucHVzaChz", + "dHJpbmdpZnkoaykgKyAnOicgKyBzdHJpbmdpZnkodmFsdWVba10pKTsNCgkJCQkJCX0NCgkJ", + "CQkJCXJldHVybiAneycgKyB0bXAuam9pbignLCcpICsgJ30nOw0KCQkJCQl9DQoJCQkJfQ0K", + "CQkJCXJldHVybiAnIicgKyB2YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoZXNjUkUsIGVzY0Z1", + "bmMpICsgJyInOw0KCQkJfQ0KCQl9KSgpOw0KCQkKCQl2YXIgZXggPSBtYWtlRXhwb3J0cygp", + "Ow0KCQlfdGhpcy51c2luZyA9IGZ1bmN0aW9uKGIpew0KCQkJZm9yKHZhciBrIGluIGV4KXtp", + "ZihiPT10cnVlKXtfdGhpc1trXT1leFtrXVswXTt9O2lmKChiIT10cnVlKXx8KGV4W2tdWzFd", + "PT10cnVlKSl7JGdba109ZXhba11bMF07fTt9DQoJCX0NCgkJX3RoaXMudXNpbmcodHJ1ZSk7", + "DQoJDQoJfSkodGhpcyk7Cn0pKCk7DQoNCg0KCiFmdW5jdGlvbigpIHsKCQ0KdmFyIG9yZ0Vy", + "cm9yID0gRXJyb3I7IAooZnVuY3Rpb24oZyl7IAoJdmFyICRucyA9ICd1U3ByaW50JzsNCgkK", + "CWZ1bmN0aW9uIG1ha2VFeHBvcnRzKCl7DQoJCXJldHVybiAoew0KCQkJCgkJCQoJCQkic3By", + "aW50ZiIJOltzcHJpbnRmLAl0cnVlXSwNCgkJCSJ2c3ByaW50ZiIJOlt2c3ByaW50ZiwJdHJ1", + "ZV0NCgkJCQoJCX0pOw0KCX0NCgl2YXIgJGcgPSBuZXcgRnVuY3Rpb24oInJldHVybiB0aGlz", + "IikoKTsNCglpZiAoKCRucyBpbiAkZykpIHJldHVybjsNCgl2YXIgX3RoaXM9e307ICRnWyRu", + "c109X3RoaXM7DQoJDQoJdmFyIGV4cG9ydHMgPSBbXTsNCgl2YXIgSlNPTiA9IHVKc29uOw0K", + "CWlmICggISgnY3JlYXRlJyBpbiBPYmplY3QpICApIE9iamVjdC5jcmVhdGUgPSBmdW5jdGlv", + "bihhKSB7IHJldHVybiB7fSB9Ow0KCXZhciBFcnJvciAJCT0gZnVuY3Rpb24obXNnKSB7cmV0", + "dXJuIG5ldyBvcmdFcnJvcigweDgwMEEwMUI2LG1zZyk7fQ0KCXZhciBUeXBlRXJyb3I9RXJy", + "b3IsU3ludGF4RXJyb3I9RXJyb3I7DQoNCgoNCiFmdW5jdGlvbigpIHsNCgkndXNlIHN0cmlj", + "dCcNCg0KCXZhciByZSA9IHsNCgkJbm90X3N0cmluZzogL1tec10vLA0KCQlub3RfYm9vbDog", + "L1tedF0vLA0KCQlub3RfdHlwZTogL1teVF0vLA0KCQlub3RfcHJpbWl0aXZlOiAvW152XS8s", + "DQoJCW51bWJlcjogL1tkaWVmZ10vLA0KCQludW1lcmljX2FyZzogL1tiY2RpZWZndXhYXS8s", + "DQoJCWpzb246IC9bal0vLA0KCQlub3RfanNvbjogL1teal0vLA0KCQl0ZXh0OiAvXlteXHgy", + "NV0rLywNCgkJbW9kdWxvOiAvXlx4MjV7Mn0vLA0KCQlwbGFjZWhvbGRlcjogL15ceDI1KD86", + "KFsxLTldXGQqKVwkfFwoKFteKV0rKVwpKT8oXCspPygwfCdbXiRdKT8oLSk/KFxkKyk/KD86", + "XC4oXGQrKSk/KFtiLWdpam9zdFR1dnhYXSkvLA0KCQlrZXk6IC9eKFthLXpfXVthLXpfXGRd", + "KikvaSwNCgkJa2V5X2FjY2VzczogL15cLihbYS16X11bYS16X1xkXSopL2ksDQoJCWluZGV4", + "X2FjY2VzczogL15cWyhcZCspXF0vLA0KCQlzaWduOiAvXlsrLV0vDQoJfQ0KDQoJZnVuY3Rp", + "b24gc3ByaW50ZihrZXkpIHsNCgkJCgkJcmV0dXJuIHNwcmludGZfZm9ybWF0KHNwcmludGZf", + "cGFyc2Uoa2V5KSwgYXJndW1lbnRzKQ0KCX0NCg0KCWZ1bmN0aW9uIHZzcHJpbnRmKGZtdCwg", + "YXJndikgew0KCQlyZXR1cm4gc3ByaW50Zi5hcHBseShudWxsLCBbZm10XS5jb25jYXQoYXJn", + "diB8fCBbXSkpDQoJfQ0KDQoNCglmdW5jdGlvbiBzcHJpbnRmX2Zvcm1hdChwYXJzZV90cmVl", + "LCBhcmd2KSB7DQoJCXZhciBjdXJzb3IgPSAxLCB0cmVlX2xlbmd0aCA9IHBhcnNlX3RyZWUu", + "bGVuZ3RoLCBhcmcsIG91dHB1dCA9ICcnLCBpLCBrLCBwaCwgcGFkLCBwYWRfY2hhcmFjdGVy", + "LCBwYWRfbGVuZ3RoLCBpc19wb3NpdGl2ZSwgc2lnbg0KCQlmb3IgKGkgPSAwOyBpIDwgdHJl", + "ZV9sZW5ndGg7IGkrKykgew0KCQkJaWYgKHR5cGVvZiBwYXJzZV90cmVlW2ldID09PSAnc3Ry", + "aW5nJykgew0KCQkJCW91dHB1dCArPSBwYXJzZV90cmVlW2ldDQoJCQl9DQoJCQllbHNlIGlm", + "ICh0eXBlb2YgcGFyc2VfdHJlZVtpXSA9PT0gJ29iamVjdCcpIHsNCgkJCQlwaCA9IHBhcnNl", + "X3RyZWVbaV0gCgkJCQlpZiAocGgua2V5cykgeyAKCQkJCQlhcmcgPSBhcmd2W2N1cnNvcl0N", + "CgkJCQkJZm9yIChrID0gMDsgayA8IHBoLmtleXMubGVuZ3RoOyBrKyspIHsNCgkJCQkJCWlm", + "IChhcmcgPT0gdW5kZWZpbmVkKSB7DQoJCQkJCQkJdGhyb3cgbmV3IEVycm9yKHNwcmludGYo", + "J1tzcHJpbnRmXSBDYW5ub3QgYWNjZXNzIHByb3BlcnR5ICIlcyIgb2YgdW5kZWZpbmVkIHZh", + "bHVlICIlcyInLCBwaC5rZXlzW2tdLCBwaC5rZXlzW2stMV0pKQ0KCQkJCQkJfQ0KCQkJCQkJ", + "YXJnID0gYXJnW3BoLmtleXNba11dDQoJCQkJCX0NCgkJCQl9DQoJCQkJZWxzZSBpZiAocGgu", + "cGFyYW1fbm8pIHsgCgkJCQkJYXJnID0gYXJndltwaC5wYXJhbV9ub10NCgkJCQl9DQoJCQkJ", + "ZWxzZSB7IAoJCQkJCWFyZyA9IGFyZ3ZbY3Vyc29yKytdDQoJCQkJfQ0KDQoJCQkJaWYgKHJl", + "Lm5vdF90eXBlLnRlc3QocGgudHlwZSkgJiYgcmUubm90X3ByaW1pdGl2ZS50ZXN0KHBoLnR5", + "cGUpICYmIGFyZyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7DQoJCQkJCWFyZyA9IGFyZygpDQoJ", + "CQkJfQ0KDQoJCQkJaWYgKHJlLm51bWVyaWNfYXJnLnRlc3QocGgudHlwZSkgJiYgKHR5cGVv", + "ZiBhcmcgIT09ICdudW1iZXInICYmIGlzTmFOKGFyZykpKSB7DQoJCQkJCXRocm93IG5ldyBU", + "eXBlRXJyb3Ioc3ByaW50ZignW3NwcmludGZdIGV4cGVjdGluZyBudW1iZXIgYnV0IGZvdW5k", + "ICVUJywgYXJnKSkNCgkJCQl9DQoNCgkJCQlpZiAocmUubnVtYmVyLnRlc3QocGgudHlwZSkp", + "IHsNCgkJCQkJaXNfcG9zaXRpdmUgPSBhcmcgPj0gMA0KCQkJCX0NCg0KCQkJCXN3aXRjaCAo", + "cGgudHlwZSkgew0KCQkJCQljYXNlICdiJzoNCgkJCQkJCWFyZyA9IHBhcnNlSW50KGFyZywg", + "MTApLnRvU3RyaW5nKDIpDQoJCQkJCQlicmVhaw0KCQkJCQljYXNlICdjJzoNCgkJCQkJCWFy", + "ZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoYXJnLCAxMCkpDQoJCQkJCQlicmVh", + "aw0KCQkJCQljYXNlICdkJzoNCgkJCQkJY2FzZSAnaSc6DQoJCQkJCQlhcmcgPSBwYXJzZUlu", + "dChhcmcsIDEwKQ0KCQkJCQkJYnJlYWsNCgkJCQkJY2FzZSAnaic6DQoJCQkJCQlhcmcgPSBK", + "U09OLnN0cmluZ2lmeShhcmcsIG51bGwsIHBoLndpZHRoID8gcGFyc2VJbnQocGgud2lkdGgp", + "IDogMCkNCgkJCQkJCWJyZWFrDQoJCQkJCWNhc2UgJ2UnOg0KCQkJCQkJYXJnID0gcGgucHJl", + "Y2lzaW9uID8gcGFyc2VGbG9hdChhcmcpLnRvRXhwb25lbnRpYWwocGgucHJlY2lzaW9uKSA6", + "IHBhcnNlRmxvYXQoYXJnKS50b0V4cG9uZW50aWFsKCkNCgkJCQkJCWJyZWFrDQoJCQkJCWNh", + "c2UgJ2YnOg0KCQkJCQkJYXJnID0gcGgucHJlY2lzaW9uID8gcGFyc2VGbG9hdChhcmcpLnRv", + "Rml4ZWQocGgucHJlY2lzaW9uKSA6IHBhcnNlRmxvYXQoYXJnKQ0KCQkJCQkJYnJlYWsNCgkJ", + "CQkJY2FzZSAnZyc6DQoJCQkJCQlhcmcgPSBwaC5wcmVjaXNpb24gPyBTdHJpbmcoTnVtYmVy", + "KGFyZy50b1ByZWNpc2lvbihwaC5wcmVjaXNpb24pKSkgOiBwYXJzZUZsb2F0KGFyZykNCgkJ", + "CQkJCWJyZWFrDQoJCQkJCWNhc2UgJ28nOg0KCQkJCQkJYXJnID0gKHBhcnNlSW50KGFyZywg", + "MTApID4+PiAwKS50b1N0cmluZyg4KQ0KCQkJCQkJYnJlYWsNCgkJCQkJY2FzZSAncyc6DQoJ", + "CQkJCQlhcmcgPSBTdHJpbmcoYXJnKQ0KCQkJCQkJYXJnID0gKHBoLnByZWNpc2lvbiA/IGFy", + "Zy5zdWJzdHJpbmcoMCwgcGgucHJlY2lzaW9uKSA6IGFyZykNCgkJCQkJCWJyZWFrDQoJCQkJ", + "CWNhc2UgJ3QnOg0KCQkJCQkJYXJnID0gU3RyaW5nKCEhYXJnKQ0KCQkJCQkJYXJnID0gKHBo", + "LnByZWNpc2lvbiA/IGFyZy5zdWJzdHJpbmcoMCwgcGgucHJlY2lzaW9uKSA6IGFyZykNCgkJ", + "CQkJCWJyZWFrDQoJCQkJCWNhc2UgJ1QnOg0KCQkJCQkJYXJnID0gT2JqZWN0LnByb3RvdHlw", + "ZS50b1N0cmluZy5jYWxsKGFyZykuc2xpY2UoOCwgLTEpLnRvTG93ZXJDYXNlKCkNCgkJCQkJ", + "CWFyZyA9IChwaC5wcmVjaXNpb24gPyBhcmcuc3Vic3RyaW5nKDAsIHBoLnByZWNpc2lvbikg", + "OiBhcmcpDQoJCQkJCQlicmVhaw0KCQkJCQljYXNlICd1JzoNCgkJCQkJCWFyZyA9IHBhcnNl", + "SW50KGFyZywgMTApID4+PiAwDQoJCQkJCQlicmVhaw0KCQkJCQljYXNlICd2JzoNCgkJCQkJ", + "CWFyZyA9IGFyZy52YWx1ZU9mKCkNCgkJCQkJCWFyZyA9IChwaC5wcmVjaXNpb24gPyBhcmcu", + "c3Vic3RyaW5nKDAsIHBoLnByZWNpc2lvbikgOiBhcmcpDQoJCQkJCQlicmVhaw0KCQkJCQlj", + "YXNlICd4JzoNCgkJCQkJCWFyZyA9IChwYXJzZUludChhcmcsIDEwKSA+Pj4gMCkudG9TdHJp", + "bmcoMTYpDQoJCQkJCQlicmVhaw0KCQkJCQljYXNlICdYJzoNCgkJCQkJCWFyZyA9IChwYXJz", + "ZUludChhcmcsIDEwKSA+Pj4gMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkNCgkJCQkJ", + "CWJyZWFrDQoJCQkJfQ0KCQkJCWlmIChyZS5qc29uLnRlc3QocGgudHlwZSkpIHsNCgkJCQkJ", + "b3V0cHV0ICs9IGFyZw0KCQkJCX0NCgkJCQllbHNlIHsNCgkJCQkJaWYgKHJlLm51bWJlci50", + "ZXN0KHBoLnR5cGUpICYmICghaXNfcG9zaXRpdmUgfHwgcGguc2lnbikpIHsNCgkJCQkJCXNp", + "Z24gPSBpc19wb3NpdGl2ZSA/ICcrJyA6ICctJw0KCQkJCQkJYXJnID0gYXJnLnRvU3RyaW5n", + "KCkucmVwbGFjZShyZS5zaWduLCAnJykNCgkJCQkJfQ0KCQkJCQllbHNlIHsNCgkJCQkJCXNp", + "Z24gPSAnJw0KCQkJCQl9DQoJCQkJCXBhZF9jaGFyYWN0ZXIgPSBwaC5wYWRfY2hhciA/IHBo", + "LnBhZF9jaGFyID09PSAnMCcgPyAnMCcgOiBwaC5wYWRfY2hhci5jaGFyQXQoMSkgOiAnICcN", + "CgkJCQkJcGFkX2xlbmd0aCA9IHBoLndpZHRoIC0gKHNpZ24gKyBhcmcpLmxlbmd0aA0KCQkJ", + "CQlwYWQgPSBwaC53aWR0aCA/IChwYWRfbGVuZ3RoID4gMCA/IHBhZF9jaGFyYWN0ZXIucmVw", + "ZWF0KHBhZF9sZW5ndGgpIDogJycpIDogJycNCgkJCQkJb3V0cHV0ICs9IHBoLmFsaWduID8g", + "c2lnbiArIGFyZyArIHBhZCA6IChwYWRfY2hhcmFjdGVyID09PSAnMCcgPyBzaWduICsgcGFk", + "ICsgYXJnIDogcGFkICsgc2lnbiArIGFyZykNCgkJCQl9DQoJCQl9DQoJCX0NCgkJcmV0dXJu", + "IG91dHB1dA0KCX0NCg0KCXZhciBzcHJpbnRmX2NhY2hlID0gT2JqZWN0LmNyZWF0ZShudWxs", + "KQ0KDQoJZnVuY3Rpb24gc3ByaW50Zl9wYXJzZShmbXQpIHsNCgkJaWYgKHNwcmludGZfY2Fj", + "aGVbZm10XSkgew0KCQkJcmV0dXJuIHNwcmludGZfY2FjaGVbZm10XQ0KCQl9DQoNCgkJdmFy", + "IF9mbXQgPSBmbXQsIG1hdGNoLCBwYXJzZV90cmVlID0gW10sIGFyZ19uYW1lcyA9IDANCgkJ", + "d2hpbGUgKF9mbXQpIHsNCgkJCWlmICgobWF0Y2ggPSByZS50ZXh0LmV4ZWMoX2ZtdCkpICE9", + "PSBudWxsKSB7DQoJCQkJcGFyc2VfdHJlZS5wdXNoKG1hdGNoWzBdKQ0KCQkJfQ0KCQkJZWxz", + "ZSBpZiAoKG1hdGNoID0gcmUubW9kdWxvLmV4ZWMoX2ZtdCkpICE9PSBudWxsKSB7DQoJCQkJ", + "cGFyc2VfdHJlZS5wdXNoKCclJykNCgkJCX0NCgkJCWVsc2UgaWYgKChtYXRjaCA9IHJlLnBs", + "YWNlaG9sZGVyLmV4ZWMoX2ZtdCkpICE9PSBudWxsKSB7DQoJCQkJaWYgKG1hdGNoWzJdKSB7", + "DQoJCQkJCWFyZ19uYW1lcyB8PSAxDQoJCQkJCXZhciBmaWVsZF9saXN0ID0gW10sIHJlcGxh", + "Y2VtZW50X2ZpZWxkID0gbWF0Y2hbMl0sIGZpZWxkX21hdGNoID0gW10NCgkJCQkJaWYgKChm", + "aWVsZF9tYXRjaCA9IHJlLmtleS5leGVjKHJlcGxhY2VtZW50X2ZpZWxkKSkgIT09IG51bGwp", + "IHsNCgkJCQkJCWZpZWxkX2xpc3QucHVzaChmaWVsZF9tYXRjaFsxXSkNCgkJCQkJCXdoaWxl", + "ICgocmVwbGFjZW1lbnRfZmllbGQgPSByZXBsYWNlbWVudF9maWVsZC5zdWJzdHJpbmcoZmll", + "bGRfbWF0Y2hbMF0ubGVuZ3RoKSkgIT09ICcnKSB7DQoJCQkJCQkJaWYgKChmaWVsZF9tYXRj", + "aCA9IHJlLmtleV9hY2Nlc3MuZXhlYyhyZXBsYWNlbWVudF9maWVsZCkpICE9PSBudWxsKSB7", + "DQoJCQkJCQkJCWZpZWxkX2xpc3QucHVzaChmaWVsZF9tYXRjaFsxXSkNCgkJCQkJCQl9DQoJ", + "CQkJCQkJZWxzZSBpZiAoKGZpZWxkX21hdGNoID0gcmUuaW5kZXhfYWNjZXNzLmV4ZWMocmVw", + "bGFjZW1lbnRfZmllbGQpKSAhPT0gbnVsbCkgew0KCQkJCQkJCQlmaWVsZF9saXN0LnB1c2go", + "ZmllbGRfbWF0Y2hbMV0pDQoJCQkJCQkJfQ0KCQkJCQkJCWVsc2Ugew0KCQkJCQkJCQl0aHJv", + "dyBuZXcgU3ludGF4RXJyb3IoJ1tzcHJpbnRmXSBmYWlsZWQgdG8gcGFyc2UgbmFtZWQgYXJn", + "dW1lbnQga2V5JykNCgkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQkJZWxzZSB7DQoJ", + "CQkJCQl0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ1tzcHJpbnRmXSBmYWlsZWQgdG8gcGFyc2Ug", + "bmFtZWQgYXJndW1lbnQga2V5JykNCgkJCQkJfQ0KCQkJCQltYXRjaFsyXSA9IGZpZWxkX2xp", + "c3QNCgkJCQl9DQoJCQkJZWxzZSB7DQoJCQkJCWFyZ19uYW1lcyB8PSAyDQoJCQkJfQ0KCQkJ", + "CWlmIChhcmdfbmFtZXMgPT09IDMpIHsNCgkJCQkJdGhyb3cgbmV3IEVycm9yKCdbc3ByaW50", + "Zl0gbWl4aW5nIHBvc2l0aW9uYWwgYW5kIG5hbWVkIHBsYWNlaG9sZGVycyBpcyBub3QgKHll", + "dCkgc3VwcG9ydGVkJykNCgkJCQl9DQoNCgkJCQlwYXJzZV90cmVlLnB1c2goDQoJCQkJCXsN", + "CgkJCQkJCXBsYWNlaG9sZGVyOiBtYXRjaFswXSwNCgkJCQkJCXBhcmFtX25vOiAgICBtYXRj", + "aFsxXSwNCgkJCQkJCWtleXM6ICAgICAgICBtYXRjaFsyXSwNCgkJCQkJCXNpZ246ICAgICAg", + "ICBtYXRjaFszXSwNCgkJCQkJCXBhZF9jaGFyOiAgICBtYXRjaFs0XSwNCgkJCQkJCWFsaWdu", + "OiAgICAgICBtYXRjaFs1XSwNCgkJCQkJCXdpZHRoOiAgICAgICBtYXRjaFs2XSwNCgkJCQkJ", + "CXByZWNpc2lvbjogICBtYXRjaFs3XSwNCgkJCQkJCXR5cGU6ICAgICAgICBtYXRjaFs4XQ0K", + "CQkJCQl9DQoJCQkJKQ0KCQkJfQ0KCQkJZWxzZSB7DQoJCQkJdGhyb3cgbmV3IFN5bnRheEVy", + "cm9yKCdbc3ByaW50Zl0gdW5leHBlY3RlZCBwbGFjZWhvbGRlcicpDQoJCQl9DQoJCQlfZm10", + "ID0gX2ZtdC5zdWJzdHJpbmcobWF0Y2hbMF0ubGVuZ3RoKQ0KCQl9DQoJCXJldHVybiBzcHJp", + "bnRmX2NhY2hlW2ZtdF0gPSBwYXJzZV90cmVlDQoJfQ0KDQoJDQoJDQoJaWYgKHR5cGVvZiBl", + "eHBvcnRzICE9PSAndW5kZWZpbmVkJykgew0KCQlleHBvcnRzWydzcHJpbnRmJ10gPSBzcHJp", + "bnRmDQoJCWV4cG9ydHNbJ3ZzcHJpbnRmJ10gPSB2c3ByaW50Zg0KCX0NCglpZiAodHlwZW9m", + "IHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHsNCgkJd2luZG93WydzcHJpbnRmJ10gPSBzcHJp", + "bnRmDQoJCXdpbmRvd1sndnNwcmludGYnXSA9IHZzcHJpbnRmDQoNCgkJaWYgKHR5cGVvZiBk", + "ZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lWydhbWQnXSkgew0KCQkJZGVmaW5lKGZ1", + "bmN0aW9uKCkgew0KCQkJCXJldHVybiB7DQoJCQkJCSdzcHJpbnRmJzogc3ByaW50ZiwNCgkJ", + "CQkJJ3ZzcHJpbnRmJzogdnNwcmludGYNCgkJCQl9DQoJCQl9KQ0KCQl9DQoJfQ0KDQoJDQp9", + "KCk7IAoKCXZhciBzcHJpbnRmID0gZXhwb3J0c1snc3ByaW50ZiddOw0KCXZhciB2c3ByaW50", + "ZiA9IGV4cG9ydHNbJ3ZzcHJpbnRmJ107DQoNCgl2YXIgZXggPSBtYWtlRXhwb3J0cygpOw0K", + "CV90aGlzLnVzaW5nID0gZnVuY3Rpb24oYil7DQoJCWZvcih2YXIgayBpbiBleCl7aWYoYj09", + "dHJ1ZSl7X3RoaXNba109ZXhba11bMF07fTtpZigoYiE9dHJ1ZSl8fChleFtrXVsxXT09dHJ1", + "ZSkpeyRnW2tdPWV4W2tdWzBdO307fQ0KCX0NCglfdGhpcy51c2luZyh0cnVlKTsNCg0KfSko", + "dGhpcyk7IAp9KCk7IAoKCQ0KCihmdW5jdGlvbigpew0KDQoJKGZ1bmN0aW9uKGcpeyAKCQl2", + "YXIgJG5zID0gJ3VBZG1pbic7DQoJCQoJCWZ1bmN0aW9uIG1ha2VFeHBvcnRzKCl7DQoJCQly", + "ZXR1cm4gKHsNCgkJCQkKCQkJCQoJCQkJInJlYm9vdEFkbWluIgk6W3JlYm9vdEFkbWluLAl0", + "cnVlXSwNCgkJCQkid2FpdEZvclNpZ25hbCIJOlt3YWl0Rm9yU2lnbmFsLGZhbHNlXSwNCgkJ", + "CQkic2VuZFNpZ25hbCIJOltzZW5kU2lnbmFsLAlmYWxzZV0sDQoJCQkJImdldFBJRCIJCTpb", + "Z2V0UElELAkJZmFsc2VdLA0KCQkJCSJnZXRQYXJlbnRQSUQiCTpbZ2V0UGFyZW50UElELAlm", + "YWxzZV0sDQoJCQkJImdldENtZEFyZ3NCeVBJRCI6W2dldENtZEFyZ3NCeVBJRCxmYWxzZV0s", + "DQoJCQkJImdldFNpZ25hbE5hbWUiCTpbZ2V0U2lnbmFsTmFtZSxmYWxzZV0NCgkJCQkKCQkJ", + "fSk7DQoJCX0NCgkJdmFyICRnID0gbmV3IEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCk7DQoJ", + "CWlmICgoJG5zIGluICRnKSkgcmV0dXJuOw0KCQl2YXIgX3RoaXM9e307ICRnWyRuc109X3Ro", + "aXM7DQoJDQoJCQ0KCQkKCQl2YXIgc2hhID0gV1NjcmlwdC5DcmVhdGVPYmplY3QoIlNoZWxs", + "LkFwcGxpY2F0aW9uIik7DQoJCXZhciBiQWRtaW5SZWJvb3QgPSB0cnVlOwkKCQl2YXIgYXJn", + "QWRtaW5SZWJvb3QgPSAiX0FkbWluUmVib290IjsKCQl2YXIgZXhEYXRhID0gewkNCgkJCQlh", + "cmdzOiIiLA0KCQkJCWN1cnJlbnREaXJlY3Rvcnk6IiIsDQoJCQkJc2lnbmFsTmFtZToiIiwN", + "CgkJCQlleGl0Q29kZTotMSwNCgkJCQltc2c6IiINCgkJfQ0KCQkNCgkJCgkJZnVuY3Rpb24g", + "X2dldEFkbWluT3B0TmFtZSgpIHsgcmV0dXJuICJfYWRtaW5SZWJvb3QiOyB9Ow0KCQlmdW5j", + "dGlvbiBfZ2V0RXhjaGFuZ2VGaWxlTmFtZShwaWQpIHtyZXR1cm4gKGdldEVudigpLmV4ZVBh", + "dGguQk4oKSsiLiIrcGlkKyIucGlkIik7IH07IAoJCWZ1bmN0aW9uIHJlYm9vdEFkbWluKG9w", + "dCl7DQoJCQlvcHQgPSBvcHQgfHwge307CgkJCQoJCQkKCQkJaWYgKCAhaXNBZG1pbigpICkg", + "ew0KCQkJCQoJCQkJdmFyIFBJRCA9IHVBZG1pbi5nZXRQSUQoKTsNCgkJCQl2YXIgcHJvY0lu", + "Zm8gPSBnZXRDbWRBcmdzQnlQSUQoUElEKTsKCQkJCWlmICggaXNOb25lKHByb2NJbmZvKSAp", + "IHsNCgkJCQkJZXhpdCgtMSwiZXJyb3I6Y2FuIG5vdCBnZXQgcHJvY0luZm8iKTsNCgkJCQl9", + "DQoJCQkJCgkJCQkKCQkJCXZhciBhcmdzID0gcHJvY0luZm8uQXJncyArICIgLyIrX2dldEFk", + "bWluT3B0TmFtZSgpOw0KCQkJCQoJCQkJDQoJCQkJCgkJCQl2YXIgcGF0aEFkbWluRXhjaGFu", + "Z2U9IF9nZXRFeGNoYW5nZUZpbGVOYW1lKFBJRCk7DQoJCQkJdmFyIGV4RGF0YVBhdGggPSBt", + "YWtlUGF0aChnZXRFbnYoKS5leGVEaXIscGF0aEFkbWluRXhjaGFuZ2UpOw0KCQkJCQoJCQkJ", + "ZXhEYXRhLmFyZ3MgPSBhcmdzOw0KCQkJCWV4RGF0YS5jdXJyZW50RGlyZWN0b3J5ID0gc2gu", + "Q3VycmVudERpcmVjdG9yeTsNCgkJCQlleERhdGEuc2lnbmFsTmFtZSA9IGdldFNpZ25hbE5h", + "bWUoKTsNCgkJCQlleERhdGEuZXhpdENvZGUgPSAtMTsNCgkJCQlleERhdGEubXNnID0gIiI7", + "DQoJCQkJZXhEYXRhUGF0aC53cml0ZUFsbFVURjgoIHVKc29uLnN0cmluZ2lmeShleERhdGEp", + "ICkgOw0KCQ0KCQkJCQoJCQkJZXhpdC5wdXNoKGZ1bmN0aW9uKCl7IGlmIChleERhdGFQYXRo", + "LmlzRXhpc3RGaWxlKCkpIGRlbGV0ZUZpbGUoZXhEYXRhUGF0aCk7IH0pOw0KCQ0KCQkJCQoJ", + "CQkJc2hhLlNoZWxsRXhlY3V0ZShwcm9jSW5mby5OYW1lLCBhcmdzLCAiIiwgInJ1bmFzIiwg", + "MSk7IA0KCQkJCQkKCQkJCQkKCQkJCQ0KCQkJCQoJCQkJaWYgKCBvcHQgJiYgKCJ0aW1lb3V0", + "IiBpbiBvcHQpICkgew0KCQkJCQl3YWl0Rm9yU2lnbmFsKGV4RGF0YS5zaWduYWxOYW1lLG9w", + "dC50aW1lb3V0KTsNCgkJCQl9IGVsc2Ugew0KCQkJCQl3YWl0Rm9yU2lnbmFsKGV4RGF0YS5z", + "aWduYWxOYW1lKTsNCgkJCQl9DQoJCQkJaWYgKCAhZXhEYXRhUGF0aC5pc0V4aXN0RmlsZSgp", + "ICkgew0KCQkJCQlleGl0KGV4RGF0YS5leGl0Q29kZSwiZXJyb3I6IGNhbiBub3QgZm91bmQg", + "ZXhjaGFuZ2UgYWRtaW4gZmlsZToiLGV4RGF0YVBhdGgpOw0KCQkJCX0NCgkJCQl2YXIgZXhP", + "dERhdGEgPSB1SnNvbi5wYXJzZShleERhdGFQYXRoLnJlYWRBbGxVVEY4KCkpOw0KCQkJCQoJ", + "CQkJCgkJCQlleGl0KGV4T3REYXRhLmV4aXRDb2RlLGV4T3REYXRhLm1zZyk7IA0KCQkJCQoJ", + "CQl9IGVsc2UgaWYgKCB1UGFyYW0uYkFkbWluICkgew0KCQkJCQoJCQkJCgkJCQl2YXIgcHBp", + "ZCA9IHVBZG1pbi5nZXRQYXJlbnRQSUQoKTsNCgkJCQkKCQkJCXZhciBwYXRoQWRtaW5FeGNo", + "YW5nZT0gX2dldEV4Y2hhbmdlRmlsZU5hbWUocHBpZCk7CgkJCQl2YXIgZXhEYXRhUGF0aCA9", + "IG1ha2VQYXRoKGdldEVudigpLmV4ZURpcixwYXRoQWRtaW5FeGNoYW5nZSk7DQoJCQkJCgkJ", + "CQlpZiAoICEoZXhEYXRhUGF0aC5pc0V4aXN0RmlsZSgpKSApIHsNCgkJCQkJCgkJCQkJcmV0", + "dXJuIHRydWU7DQoJCQkJfQ0KCQkJCWV4RGF0YSA9IHVKc29uLnBhcnNlKGV4RGF0YVBhdGgu", + "cmVhZEFsbFVURjgoKSk7DQoJCQkJCgkJCQlpZiAoIGlzT2soZXhEYXRhLmN1cnJlbnREaXJl", + "Y3RvcnkpICkgew0KCQkJCQlzaC5DdXJyZW50RGlyZWN0b3J5ID0gZXhEYXRhLmN1cnJlbnRE", + "aXJlY3Rvcnk7DQoJCQkJfSBlbHNlIHsNCgkJCQkJZXhpdCgtMSwiZXJyb3I6Y2FuIG5vdCBy", + "ZWFkIGN1cnJlbnREaXJlY3RvcnkiKTsNCgkJCQl9DQoJCQkJCgkJCQlleGl0LnNldEFkbWlu", + "Q2FsbCggZnVuY3Rpb24oY29kZSxtc2cpew0KCQkJCQlleERhdGEuZXhpdENvZGUgPSBjb2Rl", + "Ow0KCQkJCQlleERhdGEubXNnID0gWyBtc2cgXTsNCgkJCQkJZXhEYXRhUGF0aC53cml0ZUFs", + "bFVURjgodUpzb24uc3RyaW5naWZ5KGV4RGF0YSkpOw0KCQkJCQlzZW5kU2lnbmFsKGV4RGF0", + "YS5zaWduYWxOYW1lKTsNCgkJCQl9KTsNCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0gZWxzZSB7", + "DQoJCQkJCgkJCQlyZXR1cm4gdHJ1ZTsNCgkJCX0NCgkJfQ0KCQlmdW5jdGlvbiBnZXRTaWdu", + "YWxOYW1lKCBiYXNlICkgew0KCQkJCgkJCQoJCQl2YXIgc05hbWUgPSBpc09LKGJhc2UpPyBi", + "YXNlIDogKGNhc3RTKE1hdGgucmFuZG9tKCkpICsgd3MuU2NyaXB0RnVsbE5hbWUuRk4oKSk7", + "DQoJCQlzTmFtZT1zTmFtZS5yZXBsYWNlQWxsKC9bXmEtekEtWjAtOV0vZywiWCIpLnN1YnN0", + "cigwLDgxKTsKCQkJcmV0dXJuIHNOYW1lOw0KCQl9DQoJCQoJCQoJCWZ1bmN0aW9uIHdhaXRG", + "b3JTaWduYWwoIHNpZ05hbWUsIGluVGltZU91dCApIHsNCgkJCXZhciB0T3V0U3RyID0gIiI7", + "DQoJCQlpZiAoIGlzT2soaW5UaW1lT3V0KSApew0KCQkJCXRPdXRTdHIgPSAiIC9UICIgKyBp", + "blRpbWVPdXQ7DQoJCQl9DQoJCQlpZiAoIHNpZ05hbWUubGVuZ3RoID4gODIgKSB7DQoJCQkJ", + "ZWNobygiZXJyb3I6IHNpZ25hbCBuYW1lIGxpbWl0IDwgODIiKTsNCgkJCX0NCgkJCWlmICgg", + "L1teYS16QS1aMC05XS8udGVzdChzaWdOYW1lKSApIHsNCgkJCQllY2hvKCJlcnJvcjogc2ln", + "bmFsIG5hbWUgOlthLXpBLVowLTldIik7DQoJCQl9DQoJCQl2YXIgZSA9IHNoLkV4ZWMoImNt", + "ZCAvQyBXQUlURk9SICIgKyBzaWdOYW1lICsgdE91dFN0cik7DQoJCQl3aGlsZSAoZS5TdGF0", + "dXM9PTApeyAKCQkJCVdTY3JpcHQuU2xlZXAoMTApOw0KCQkJfQ0KCQl9DQoJCWZ1bmN0aW9u", + "IHNlbmRTaWduYWwoIHNpZ05hbWUgKSB7DQoJCQkKCQkJdmFyIGUgPSBzaC5FeGVjKCJjbWQg", + "L0MgV0FJVEZPUiIgKyAiIC9TICIgKyAiJUNPTVBVVEVSTkFNRSUiICsgIiAvU0kgIiArIHNp", + "Z05hbWUpOyANCgkJCXdoaWxlIChlLlN0YXR1cz09MCl7IAoJCQkJV1NjcmlwdC5TbGVlcCgx", + "MCk7DQoJCQl9DQoJCX0NCgkJZnVuY3Rpb24gZ2V0UElEKCkgew0KCQkJDQoJCQl2YXIgc2ln", + "bmFsTmFtZSA9IGdldFNpZ25hbE5hbWUoKTsKCQkJCgkJCXZhciByZXRQSUQgPSBudWxsOw0K", + "CQkJCgkJCXZhciBvRXhlYyA9IHNoLkV4ZWMoImNtZCAvQyBXQUlURk9SICIgKyBzaWduYWxO", + "YW1lICk7CgkJCXZhciBQcm9jZXNzZXM9R2V0T2JqZWN0KCJ3aW5tZ210czpyb290XFxDSU1W", + "MiIpLkV4ZWNRdWVyeSgiU0VMRUNUICogRlJPTSBXaW4zMl9Qcm9jZXNzIFdIRVJFIFByb2Nl", + "c3NJRD0iICsgb0V4ZWMuUHJvY2Vzc0lEKTsNCgkJCWVhY2goUHJvY2Vzc2VzLGZ1bmN0aW9u", + "KGksdil7DQoJCQkJCgkJCQlyZXRQSUQgPSB2LlBhcmVudFByb2Nlc3NJRDsNCgkJCQlpZiAo", + "IGlzT2socmV0UElEKSApDQoJCQkJCXJldHVybiBmYWxzZTsKCQkJfSk7DQoJCQlpZiAoIGlz", + "Tm9uZShyZXRQSUQpKSB7DQoJCQkJZWNobygid2FybmluZzpyZXRQSUQgaXMgTlVMTCIpOw0K", + "CQkJfQ0KCQkJc2guRXhlYygiY21kIC9DIFdBSVRGT1IiICsgIiAvUyAiICsgIiVDT01QVVRF", + "Uk5BTUUlIiArICIgL1NJICIgKyBzaWduYWxOYW1lKTsgCg0KCQkJdmFyIGxvb3A9MTA7DQoJ", + "CQl3aGlsZSAob0V4ZWMuU3RhdHVzPT0wKXsgCgkJCQlXU2NyaXB0LlNsZWVwKDEwKTsNCgkJ", + "CQlpZiAoICEobG9vcC0tKSApIHsNCgkJCQkJCgkJCQkJb0V4ZWMuVGVybWluYXRlKCk7DQoJ", + "CQkJCW9FeGVjID0gMDsNCgkJCQl9DQoJCQl9IA0KCQkJcmV0dXJuIHJldFBJRDsNCgkJfQ0K", + "CQlmdW5jdGlvbiBnZXRQYXJlbnRQSUQoaW5QSUQpIHsNCgkJCQoJCQl2YXIgcmVmUElEID0g", + "aW5QSUQ7DQoJCQl2YXIgcmV0UElEID0gbnVsbDsNCgkJCWlmICggaXNOb25lKHJlZlBJRCkp", + "IHsNCgkJCQlyZWZQSUQgPSBnZXRQSUQoKTsKCQkJfQ0KCQkJdmFyIFByb2Nlc3Nlcz1HZXRP", + "YmplY3QoIndpbm1nbXRzOnJvb3RcXENJTVYyIikuRXhlY1F1ZXJ5KCJTRUxFQ1QgKiBGUk9N", + "IFdpbjMyX1Byb2Nlc3MgV0hFUkUgUHJvY2Vzc0lEPSIrcmVmUElEKTsNCgkJCWVhY2goUHJv", + "Y2Vzc2VzLGZ1bmN0aW9uKGksdil7DQoJCQkJcmV0UElEID0gdi5QYXJlbnRQcm9jZXNzSUQ7", + "DQoJCQl9KTsNCgkJCXJldHVybiByZXRQSUQ7DQoJCX0NCgkJZnVuY3Rpb24gZ2V0Q21kQXJn", + "c0J5UElEKCBpblBJRCApIHsNCgkJCQoJCQl2YXIgcmV0T2JqID0geyBOYW1lOm51bGwsIEFy", + "Z3M6bnVsbH07DQoJCQkKCQkJdmFyIHByb2NzID0gR2V0T2JqZWN0KCJ3aW5tZ210czpyb290", + "XFxDSU1WMiIpLkV4ZWNRdWVyeSgiU0VMRUNUICogRlJPTSBXaW4zMl9Qcm9jZXNzIFdIRVJF", + "IFByb2Nlc3NJRD0iK2luUElEKTsNCgkJCXZhciBjbWRMaW5lID0gIiI7DQoJCQllYWNoKHBy", + "b2NzLGZ1bmN0aW9uKGksdil7Y21kTGluZSA9IHYuY29tbWFuZExpbmU7fSk7DQoJCQlpZiAo", + "IGNtZExpbmUgPT0gIiIgKSByZXR1cm4gbnVsbDsNCgkNCgkJCXZhciBtID0gY21kTGluZS5t", + "YXRjaCgvXlwiKFteXCJdKylcIlxzKyguKikkLyk7CgkJCWlmICggaXNOb25lKG0pICkNCgkJ", + "CQltID0gY21kTGluZS5tYXRjaCgvXihbXiBdKylccysoLiopJC8pOwoJCQlpZiAoIGlzT2so", + "bSkgKSB7DQoJCQkJcmV0T2JqLk5hbWUgPSBtWzFdOyByZXRPYmouQXJncyA9IG1bMl07DQoJ", + "CQkJcmV0T2JqLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7IHJldHVybiAoIHJldE9iai5OYW1l", + "ICsgIiAiICsgcmV0T2JqLkFyZ3MgKTt9Ow0KCQkJCXJldHVybiByZXRPYmo7DQoJCQl9IGVs", + "c2Ugew0KCQkJCXJldHVybiBudWxsOw0KCQkJfQ0KCQl9DQoJCQoJCQoJCXZhciBleCA9IG1h", + "a2VFeHBvcnRzKCk7DQoJCV90aGlzLnVzaW5nID0gZnVuY3Rpb24oYil7DQoJCQlmb3IodmFy", + "IGsgaW4gZXgpe2lmKGI9PXRydWUpe190aGlzW2tdPWV4W2tdWzBdO307aWYoKGIhPXRydWUp", + "fHwoZXhba11bMV09PXRydWUpKXskZ1trXT1leFtrXVswXTt9O30NCgkJfQ0KCQlfdGhpcy51", + "c2luZyh0cnVlKTsNCgl9KSh0aGlzKTsKfSkoKTsNCg0KCihmdW5jdGlvbigpew0KDQoJdmFy", + "ICRnbG9iYWxfZXhwb3J0cyA9IHt9OwoJdmFyICRnbG9iYWxfZXhwb3J0c19tYWtlID0gZnVu", + "Y3Rpb24oKSB7CgkJdmFyIGV2PSIiOw0KCQlmb3IoIHZhciBrIGluICRnbG9iYWxfZXhwb3J0", + "cyApDQoJCQlldiArPSBrICsgIj0kZ2xvYmFsX2V4cG9ydHNbXCIiK2srIlwiXVxuIjsNCgkJ", + "RnVuY3Rpb24oIiRnbG9iYWxfZXhwb3J0cyIsZXYpKCRnbG9iYWxfZXhwb3J0cyk7DQoJCQoJ", + "DQoJCQoJfTsNCgkNCgkoZnVuY3Rpb24oKXsgCgkJdmFyICRucyA9ICd1TWlzYyc7DQoJCQoJ", + "CWZ1bmN0aW9uIG1ha2VFeHBvcnRzKCl7DQoJCQlyZXR1cm4gKHsNCgkJCQkKCQkJCQoJCQkJ", + "ImRlbGV0ZUZpbGUiCQk6W2RlbGV0ZUZpbGUsCQl0cnVlXSwNCgkJCQkiZGVsZXRlRGlyIgkJ", + "CTpbZGVsZXRlRGlyLAkJdHJ1ZV0sDQoJCQkJImNvcHlGaWxlIgkJCTpbY29weUZpbGUsCQkJ", + "dHJ1ZV0sDQoJCQkJIm1vdmVGaWxlIgkJCTpbbW92ZUZpbGUsCQkJdHJ1ZV0sDQoJCQkJImNv", + "cHlEaXIiCQkJOltjb3B5RGlyLAkJCXRydWVdLA0KCQkJCSJtb3ZlRGlyIgkJCTpbbW92ZURp", + "ciwJCQl0cnVlXQ0KCQkJCQoJCQl9KTsNCgkJfQ0KCQl2YXIgJGcgPSAkZ2xvYmFsX2V4cG9y", + "dHM7DQoJCXZhciBfdGhpcz17fTsgJGdbJG5zXT1fdGhpczsNCgkNCgkJDQoJCQ0KCQlmdW5j", + "dGlvbiBkZWxldGVGaWxlKHBhdGgpew0KCQkJaWYgKCAhcGF0aC5pc0V4aXN0RmlsZSgpICkg", + "ew0KCQkJCXJldHVybiB0cnVlOyAKCQkJfQ0KCQkJdmFyIGNudFRyeSA9IDEwOw0KCQkJZG8g", + "ew0KCQkJCXRyeSB7DQoJCQkJCWZzby5EZWxldGVGaWxlKHBhdGgpOwoJCQkJfSBjYXRjaChl", + "KSB7DQoJCQkJCXdzLlNsZWVwKDEwMDApOwoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCgkJCQly", + "ZXR1cm4gdHJ1ZTsNCgkJCX0gd2hpbGUoY250VHJ5LS0pOw0KCQkJZWNobygiZXJyb3I6ZGVs", + "ZXRlIGZpbGU6IixwYXRoKTsNCgkJCXJldHVybiBmYWxzZTsJDQoJCX0NCgkJZnVuY3Rpb24g", + "ZGVsZXRlRGlyKHBhdGgpew0KCQkJaWYoIShwYXRoLmlzRXhpc3RGb2xkZXIoKSkpIHsNCgkJ", + "CQlyZVRocm93KCJbVzpkZWxldGVEaXJdOm5vdCBmaW5kOiIscGF0aCk7DQoJCQkJCgkJCX0N", + "CgkJCXRyeSB7DQoJCQkJZnNvLkRlbGV0ZUZvbGRlcihwYXRoLGZhbHNlKTsNCgkJCX0gY2F0", + "Y2goZSl7DQoJCQkJcmVUaHJvdygiZGVsZXRlRGlyIixlKTsNCgkJCX0NCgkJCXJldHVybiB0", + "cnVlOw0KCQl9DQoJCWZ1bmN0aW9uIGNvcHlGaWxlKHNyYyxkc3Qpew0KCQkJdHJ5ew0KCQkJ", + "CWZzby5Db3B5RmlsZShzcmMsZHN0LHRydWUpOw0KCQkJfSBjYXRjaChlKXsNCgkJCQlyZVRo", + "cm93KCJjb3B5RmlsZSIsZSk7DQoJCQl9DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQlmdW5j", + "dGlvbiBtb3ZlRmlsZShzcmMsZHN0LGJPdmVyd3JpdGUpew0KCQkJDQoJCQl2YXIgYk92ZXJ3", + "cml0ZSA9IChiT3ZlcndyaXRlPT11bmRlZmluZWQpID8gdHJ1ZTpiT3ZlcndyaXRlOw0KCQkJ", + "dmFyIGJXaWxkID0gL1wqLy50ZXN0KHNyYyk7CgkJCWlmICggL1xcJC8udGVzdChkc3QpICkg", + "ew0KCQkJCWRzdCA9ZHN0LnJlcGxhY2UoLyhcXCkkL2csIiIpOw0KCQkJfQ0KCQkJdmFyIGJT", + "cmNJc0RpciA9IHNyYy5pc0V4aXN0Rm9sZGVyKCk7DQoJCQl2YXIgYkRzdElzRGlyID0gZHN0", + "LmlzRXhpc3RGb2xkZXIoKTsNCgkJCQ0KCQkJaWYgKCBiV2lsZCApIHsgCQ0KCQkJCWRzdCAr", + "PSAiXFwiOw0KCQkJCXRyeXtmc28uTW92ZUZpbGUoc3JjLGRzdCk7fSBjYXRjaChlKXtyZVRo", + "cm93KCJtb3ZlRmlsZSIsInNyYyBpcyB3aWxkY2FyZCIsZSk7fQ0KCQkJfSBlbHNlIHsgCQkN", + "CgkJCQlpZiAoIGJTcmNJc0RpciApIHsNCgkJCQkJcmV0dXJuIG1vdmVEaXIoc3JjLGRzdCk7", + "DQoJCQkJfQ0KCQkJCWlmICggYkRzdElzRGlyICkgewkNCgkJCQkJZHN0ICs9ICJcXCI7DQoJ", + "CQkJCXRyeXtmc28uTW92ZUZpbGUoc3JjLGRzdCk7fSBjYXRjaChlKXtyZVRocm93KCJtb3Zl", + "RmlsZSIsImRzdCBpcyBob2xkZXIiLGUpO30NCgkJCQl9IGVsc2UgewkJCQ0KCQkJCQl0cnl7", + "ZnNvLk1vdmVGaWxlKHNyYyxkc3QpO30gY2F0Y2goZSl7cmVUaHJvdygibW92ZUZpbGUiLGUp", + "O30NCgkJCQl9DQoJCQl9DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQ0KCQlmdW5jdGlvbiBjb3B5", + "RGlyKHNyYyxkc3QsYk92ZXJ3cml0ZSl7DQoJCQlpZiAoIGJPdmVyd3JpdGUgIT0gdHJ1ZSAp", + "IHsNCgkJCQliT3ZlcndyaXRlID1mYWxzZTsNCgkJCX0NCgkJCWlmICggYk92ZXJ3cml0ZT09", + "ZmFsc2UgJiYgKCBkc3QuaXNFeGlzdEZvbGRlcigpKSkgew0KCQkJCXJlVGhyb3coImNvcHlG", + "aWxlIiwiT3V0cHV0IGZvbGRlciBleGlzdHM6Iitkc3QpOw0KCQkJfQ0KCQkJdHJ5ew0KCQkJ", + "CWZzby5Db3B5Rm9sZGVyKHNyYyxkc3QsYk92ZXJ3cml0ZSk7DQoJCQl9IGNhdGNoKGUpew0K", + "CQkJCXJlVGhyb3coImNvcHlEaXIiLGUpOw0KCQkJfQ0KCQkJcmV0dXJuIHRydWU7DQoJCX0J", + "DQoJCWZ1bmN0aW9uIG1vdmVEaXIoc3JjLGRzdCxiT3ZlcndyaXRlKXsNCgkJCQkKCQkJCQoJ", + "CQkJCgkJCXRyeSB7DQoJCQkJaWYgKCBpc09rKGJPdmVyd3JpdGUpICkgew0KCQkJCQkKCQkJ", + "CQlpZiAJCSggZHN0LmlzRXhpc3RGb2xkZXIoKSApIGRlbGV0ZURpcihkc3QpOw0KCQkJCQll", + "bHNlIGlmICggZHN0LmlzRXhpc3RGaWxlKCkgKSAJZGVsZXRlRmlsZShkc3QpOw0KCQkJCX0N", + "CgkJCQlmc28ubW92ZUZvbGRlcihzcmMsZHN0KTsNCgkJCX0gY2F0Y2goZSl7DQoJCQkJcmVU", + "aHJvdygibW92ZURpciIsZSk7DQoJCQl9DQoJCQlyZXR1cm4gdHJ1ZTsNCgkJfQkNCgkJCgkJ", + "X3RoaXMudXNpbmcgPSBmdW5jdGlvbihiKXsNCgkJCQoJCQkKCQkJdmFyIGV4ID0gbWFrZUV4", + "cG9ydHMoKTsNCgkJCWZvcih2YXIgayBpbiBleCl7DQoJCQkJaWYoYj09dHJ1ZSl7DQoJCQkJ", + "CV90aGlzW2tdPWV4W2tdWzBdOwoJCQkJfTsNCgkJCQlpZigoYiE9dHJ1ZSl8fChleFtrXVsx", + "XT09dHJ1ZSkpew0KCQkJCQkkZ1trXT1leFtrXVswXTsJIAoJCQkJfTsNCgkJCX0NCgkJCSRn", + "bG9iYWxfZXhwb3J0c19tYWtlKCk7DQoJCX0NCgkJX3RoaXMudXNpbmcodHJ1ZSk7DQoJfSko", + "dGhpcyk7Cn0pKCk7IAoNCgooZnVuY3Rpb24oKXsNCgkNCgkJdmFyICRnbG9iYWxfZXhwb3J0", + "cyA9IHt9OwoJCXZhciAkZ2xvYmFsX2V4cG9ydHNfbWFrZSA9IGZ1bmN0aW9uKCkgewoJCQl2", + "YXIgZXY9IiI7DQoJCQlmb3IoIHZhciBrIGluICRnbG9iYWxfZXhwb3J0cyApDQoJCQkJZXYg", + "Kz0gayArICI9JGdsb2JhbF9leHBvcnRzW1wiIitrKyJcIl1cbiI7DQoJCQlGdW5jdGlvbigi", + "JGdsb2JhbF9leHBvcnRzIixldikoJGdsb2JhbF9leHBvcnRzKTsNCgkJCQoJCQkKCQl9Ow0K", + "CQkNCgkJKGZ1bmN0aW9uKCl7IAoJCQl2YXIgJG5zID0gJ3VHaXQnOw0KCQkJCgkJCWZ1bmN0", + "aW9uIG1ha2VFeHBvcnRzKCl7DQoJCQkJcmV0dXJuICh7DQoJCQkJCQoJCQkJCQoJCQkJCSJn", + "aXRCYXNoIgkJOltnaXRCYXNoLAkJdHJ1ZV0NCgkJCQkJCgkJCQl9KTsNCgkJCX0NCgkJCXZh", + "ciAkZyA9ICRnbG9iYWxfZXhwb3J0czsNCgkJCXZhciBfdGhpcz17fTsgJGdbJG5zXT1fdGhp", + "czsNCgkJDQoJCQkNCgkJCQ0KDQoJCQlmdW5jdGlvbiBnaXRCYXNoKCBvcHREaWMgLCBjbWRz", + "TGlzdCApIHsNCgkJCQkKCQkJCXZhciByZXQgPSB7IGV4aXRDb2RlOi0xLCBtc2c6W10gfTsN", + "CgkJCQl2YXIgb3B0ID0ge30NCgkJCQl2YXIgY21kcyA9IFtdOw0KCQkJCWVhY2goYXJndW1l", + "bnRzLGZ1bmN0aW9uKGksdil7DQoJCQkJCWlmICggaT09MCAmJiB0eXBlT2Yodik9PSJvYmpl", + "Y3QiKXsKCQkJCQkJb3B0LmVjaG8gCT0gdi5lY2hvIAl8fCBmYWxzZTsNCgkJCQkJCW9wdC5j", + "ZAkJPSB2LmNkCQl8fCB1bmRlZmluZWQ7DQoJCQkJCQlvcHQuY21kVHlwZSA9IHYuY21kVHlw", + "ZSB8fCAiY21kIjsNCgkJCQkJCXJldHVybjsNCgkJCQkJfQ0KCQkJCQljbWRzLnB1c2godik7", + "DQoJCQkJfSk7DQoJCQkJCgkJCQkKCQkJCQoJCQkJZnVuY3Rpb24gZ2V0R2l0QmFzaFBhdGgo", + "KXsNCgkJCQkJdmFyIG8gPSBkb0NtZCgge2VjaG86ZmFsc2V9LCJ3aGVyZSIsImdpdC5leGUi", + "ICk7DQoJCQkJCWlmICggby5leGl0Q29kZSAhPSAwICkgew0KCQkJCQkJZWNobygiZ2l0LWJh", + "c2jjgYzjgqTjg7Pjgrnjg4jjg7zjg6vjgZXjgozjgabjgYTjgb7jgZvjgpMiKTsNCgkJCQkJ", + "CXJldHVybiBudWxsOw0KCQkJCQl9DQoJCQkJCXZhciB3aGVyZUdpdFBhdGggPSBvLm1zZ1sw", + "XTsKCQkJCQl2YXIgcGF0aEdpdEJhc2ggPSB3aGVyZUdpdFBhdGgudXAoKS51cCgpLmRvd24o", + "ImJpbiIpLmRvd24oImJhc2guZXhlIik7IAoJCQkJCWlmICggcGF0aEdpdEJhc2guaXNFeGlz", + "dEZpbGUoKSApIHsNCgkJCQkJCXJldHVybiBwYXRoR2l0QmFzaDsNCgkJCQkJfSBlbHNlIHsN", + "CgkJCQkJCWVjaG8oImJhc2jjgYzopovjgaTjgYvjgorjgb7jgZvjgpMoIixwYXRoR2l0QmFz", + "aCwiKSIpOw0KCQkJCQkJcmV0dXJuIG51bGw7DQoJCQkJCX0NCgkJCQl9DQoJCQkJdmFyIHBh", + "dGhDbWRHaXRCYXNoID0gZ2V0R2l0QmFzaFBhdGgoKTsNCgkJCQlpZiAoIGlzTm9uZShwYXRo", + "Q21kR2l0QmFzaCkgKSB7DQoJCQkJCXJldC5leGl0Q29kZSA9IC0xOyByZXQubXNnLnB1c2go", + "IkNhbm5vdCBmaW5kIGdpdC1iYXNoIik7DQoJCQkJCXJldHVybiByZXQ7DQoJCQkJfQ0KCQkJ", + "CQoJCQkJCgkJCQlpZiAoIG9wdC5jbWRUeXBlID09ICJmaWxlIiApew0KCQkJCQkKCQkJCQlm", + "b3IodmFyIGk9MDtpPGNtZHMubGVuZ3RoO2krKyl7DQoJCQkJCQlpZiAoICFjbWRzW2ldLmlz", + "RXhpc3RGaWxlKCkgKSB7DQoJCQkJCQkJcmV0LmV4aXRDb2RlID0gLTE7IHJldC5tc2cucHVz", + "aCgiQ2Fubm90IGZpbmQgZmlsZToiICsgY21kc1tpXSsiKCIrY21kc1tpXS5QUigpKyIpIik7", + "DQoJCQkJCQkJcmV0dXJuIHJldDsNCgkJCQkJCX0NCgkJCQkJCWNtZHNbaV0gPSBjbWRzW2ld", + "LkZQKCk7IAoJCQkJCX0NCgkJCQl9DQoJCQkJCgkJCQl2YXIgdGVtcERpciA9IGdldFRlbXBG", + "b2xkZXIoZ2V0RW52KCkuZXhlRGlyLHRydWUpOw0KCQkJCXZhciB0ZW1wRmlsZSA9IGdldFRl", + "bXBGaWxlKHRlbXBEaXIsIi5vdCIpOw0KCQkJCQ0KCQkJCXZhciBkZWxUZW1wRGlyID0gZnVu", + "Y3Rpb24oKSB7DQoJCQkJCWlmICggdGVtcERpci5pc0V4aXN0Rm9sZGVyKCkgKXsNCgkJCQkJ", + "CXRyeSB7DQoJCQkJCQkJZnNvLkRlbGV0ZUZvbGRlcih0ZW1wRGlyLHRydWUpOw0KCQkJCQkJ", + "fSBjYXRjaCAoZSkgew0KCQkJCQkJCTsNCgkJCQkJCX0NCgkJCQkJfQ0KCQkJCX07DQoNCgkJ", + "CQl2YXIgYmtDRD0gc2guQ3VycmVudERpcmVjdG9yeTsgCgkJCQlpZiAoIGlzT0sob3B0LmNk", + "KSApIHsgDQoJCQkJCQoJCQkJCWlmICggIW9wdC5jZC5pc0V4aXN0Rm9sZGVyKCkgKSB7DQoJ", + "CQkJCQlyZXQuZXhpdENvZGUgPSAtMTsgcmV0Lm1zZy5wdXNoKCJOb3QgZXhpc3QgZGlyZWN0", + "b3J5OiIsb3B0LmNkKTsNCgkJCQkJCXJldHVybiByZXQ7DQoJCQkJCX0NCgkJCQkJc2guQ3Vy", + "cmVudERpcmVjdG9yeSA9IG9wdC5jZC5GUCgpOw0KCQkJCX0NCgkJCQl2YXIgb3RNc2c9IiI7", + "DQoJCQkJaWYgKCBvcHQuY21kVHlwZSA9PSAiY21kIiApIHsNCgkJCQkJZWFjaChjbWRzLGZ1", + "bmN0aW9uKGksdil7DQoJCQkJCQl2YXIgdGVtcENtZCA9IGdldFRlbXBGaWxlKHRlbXBEaXIs", + "Ii5zaCIpOw0KCQkJCQkJCgkJCQkJCQoJCQkJCQkKCQkJCQkJCgkJCQkJCXRlbXBDbWQud3Jp", + "dGVBbGxFbmNvZGluZygiVVRGLThOIix2KTsKCQkJCQkJCgkJCQkJCXZhciBvID0gZG9DbWQo", + "e2VjaG86b3B0LmVjaG8sIHJlZGlyZWN0RXJyOnRydWUsc3F1YXRhOnRydWV9LHBhdGhDbWRH", + "aXRCYXNoLHRlbXBDbWQsIj4iLHRlbXBGaWxlKTsNCgkJCQkJCW90TXNnID0gdGVtcEZpbGUu", + "cmVhZEFsbFVURjgoKTsNCgkJCQkJCXJldC5tc2cgPSByZXQubXNnLmNvbmNhdChzcGxpdExp", + "bmUob3RNc2cpKTsNCgkJCQkJCXJldC5leGl0Q29kZSA9IG8uZXhpdENvZGU7DQoJCQkJCQlp", + "ZiAoIHJldC5leGl0Q29kZSAhPSAwICkgew0KCQkJCQkJCWRlbFRlbXBEaXIoKTsNCgkJCQkJ", + "CQlyZXR1cm4gZmFsc2U7CgkJCQkJCX0NCgkJCQkJfSk7DQoJCQkJfSBlbHNlIGlmICggb3B0", + "LmNtZFR5cGUgPT0gImZpbGUiKXsNCgkJCQkJZWFjaChjbWRzLGZ1bmN0aW9uKGksdil7DQoJ", + "CQkJCQl2YXIgbyA9IGRvQ21kKHtlY2hvOm9wdC5lY2hvLCByZWRpcmVjdEVycjp0cnVlLHNx", + "dWF0YTp0cnVlfSxwYXRoQ21kR2l0QmFzaCwgdiwiPiIsdGVtcEZpbGUpOw0KCQkJCQkJb3RN", + "c2cgPSB0ZW1wRmlsZS5yZWFkQWxsVVRGOCgpOw0KCQkJCQkJcmV0Lm1zZyA9IHJldC5tc2cu", + "Y29uY2F0KHNwbGl0TGluZShvdE1zZykpOw0KCQkJCQkJcmV0LmV4aXRDb2RlID0gby5leGl0", + "Q29kZTsNCgkJCQkJCWlmICggcmV0LmV4aXRDb2RlICE9IDAgKSB7DQoJCQkJCQkJZGVsVGVt", + "cERpcigpOw0KCQkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQkJfQ0KCQkJCQl9KTsNCgkJCQkJ", + "CgkJCQkJCgkJCQl9DQoJCQkJc2guQ3VycmVudERpcmVjdG9yeSA9IGJrQ0Q7CgkJCQoJCQkJ", + "ZGVsVGVtcERpcigpOw0KCQkJCXJldHVybiByZXQ7DQoJCQl9CQkJDQoJCQkKCQkJX3RoaXMu", + "dXNpbmcgPSBmdW5jdGlvbihiKXsNCgkJCQkKCQkJCQoJCQkJdmFyIGV4ID0gbWFrZUV4cG9y", + "dHMoKTsNCgkJCQlmb3IodmFyIGsgaW4gZXgpew0KCQkJCQlpZihiPT10cnVlKXsNCgkJCQkJ", + "CV90aGlzW2tdPWV4W2tdWzBdOwoJCQkJCX07DQoJCQkJCWlmKChiIT10cnVlKXx8KGV4W2td", + "WzFdPT10cnVlKSl7DQoJCQkJCQkkZ1trXT1leFtrXVswXTsJIAoJCQkJCX07DQoJCQkJfQ0K", + "CQkJCSRnbG9iYWxfZXhwb3J0c19tYWtlKCk7DQoJCQl9DQoJCQlfdGhpcy51c2luZyh0cnVl", + "KTsNCgkJfSkodGhpcyk7Cgl9KSgpOyAKCQ0K" + ].join("\n")); }; // EMBED-END@3bd654e5-4f90-447a-96b3-450212902aa9 // DO-NOT-EDIT END@d2c890ff-9330-4e28-ba82-695a31a6a4c2