• RCTF crypto100(1)




    题面是一个文件,里面是用base64加密的字符串,如下所示:

    IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN=
    IyAJCQkJRG9jdW1lbnRhdGlvbgkJCQkgICAgI0==
    IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyO=
    IyBBdXRob3I6ICAgVG9kZCBXaGl0ZW1hbk==
    IyBEYXRlOiAgICAgN3RoIE1heSwgMjAwM/==
    IyBWZXJpb246ICAgMS4x
    IyBIb21lcGFnZTogaHR0cDovL2hvbWUucGFjaWZpYy5uZXQuYXUvfnR3aGl0ZW1hL2Rlcy5odG1s
    I0==
    IyBNb2RpZmljYXRpb25zIHRvIDNkZXMgQ0JDIGNvZGUgYnkgTWF0dCBKb2huc3RvbiAyMDA0IDxtYXR0IGF0IHVjYyBhc24gYXU+
    I5==
    IyBUaGlzIGFsZ29yaXRobSBpcyBhIHB1cmUgcHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoZSBERVMgYWxnb3JpdGhtLl==
    IyBJdCBpcyBpbiBwdXJlIHB5dGhvbiB0byBhdm9pZCBwb3J0YWJpbGl0eSBpc3N1ZXMsIHNpbmNlIG1vc3QgREVTID==
    IyBpbXBsZW1lbnRhdGlvbnMgYXJlIHByb2dyYW1tZWQgaW4gQyAoZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMpLn==
    I7==
    IyBUcmlwbGUgREVTIGNsYXNzIGlzIGFsc28gaW1wbGVtZW50ZWQsIHV0aWxpc2luZyB0aGUgREVTIGJhc2UuIFRyaXBsZSBERVN=
    IyBpcyBlaXRoZXIgREVTLUVERTMgd2l0aCBhIDI0IGJ5dGUga2V5LCBvciBERVMtRURFMiB3aXRoIGEgMTYgYnl0ZSBrZXku
    I4==
    IyBTZWUgdGhlIFJFQURNRS50eHQgdGhhdCBzaG91bGQgY29tZSB3aXRoIHRoaXMgcHl0aG9uIG1vZHVsZSBmb3IgdGhl
    IyBpbXBsZW1lbnRhdGlvbiBtZXRob2RzIHVzZWQu
    IiIiQSBwdXJlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgREVTIGFuZCBUUklQTEUgREVTIGVuY3J5cHRpb24gYWxnb3JpdGhtc5==
    cHlEZXMuZGVzKGtleSwgW21vZGVdLCBbSVZdKY==
    cHlEZXMudHJpcGxlX2RlcyhrZXksIFttb2RlXSwgW0lWXSl=
    a2V5ICAtPiBTdHJpbmcgY29udGFpbmluZyB0aGUgZW5jcnlwdGlvbiBrZXkuIDggYnl0ZXMgZm9yIERFUywgMTYgb3IgMjQgYnl0ZXN=
    CWZvciBUcmlwbGUgREVT
    bW9kZSAtPiBPcHRpb25hbCBhcmd1bWVudCBmb3IgZW5jcnlwdGlvbiB0eXBlLCBjYW4gYmUgZWl0aGVy
    ICAgICAgICBweURlcy5FQ0IgKEVsZWN0cm9uaWMgQ29kZSBCb29rKSBvciBweURlcy5DQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZyn=
    SVYgICAtPiBPcHRpb25hbCBhcmd1bWVudCwgbXVzdCBiZSBzdXBwbGllZCBpZiB1c2luZyBDQkMgbW9kZS4gTXVzdCBiZSA4IGJ5dGVz
    RXhhbXBsZTo=
    ZnJvbSBweURlcyBpbXBvcnQgKt==
    ZGF0YSA9ICJQbGVhc2UgZW5jcnlwdCBteSBzdHJpbmci
    ayA9IGRlcygiREVTQ1JZUFQiLCAiICIsIENCQywgIlwwXDBcMFwwXDBcMFwwXDAiKZ==
    ZCA9IGsuZW5jcnlwdChkYXRhKV==
    cHJpbnQgIkVuY3lwdGVkIHN0cmluZzogIiArIGR=
    cHJpbnQgIkRlY3lwdGVkIHN0cmluZzogIiArIGsuZGVjcnlwdChkKf==
    U2VlIHRoZSBtb2R1bGUgc291cmNlIChweURlcy5weSkgZm9yIG1vcmUgZXhhbXBsZXMgb2YgdXNlLk==
    WW91IGNhbiBzbG8gcnVuIHRoZSBweURlcy5weSBmaWxlIHdpdGhvdXQgYW5kIGFyZ3VtZW50cyB0byBzZWUgYSBzaW1wbGUgdGVzdC5=
    Tm90ZTogVGhpcyBjb2RlIHdhcyBub3Qgd3JpdHRlbiBmb3IgaGlnaC1lbmQgc3lzdGVtcyBuZWVkaW5nIGEgZmFzdN==
    ICAgICAgaW1wbGVtZW50YXRpb24sIGJ1dCByYXRoZXIgYSBoYW5keSBwb3J0YWJsZSBzb2x1dGlvbiB3aXRoIHNtYWxsIHVzYWdlLg==
    IiIi
    IyBNb2RlcyBvZiBjcnlwdGluZyAvIGN5cGhlcmluZ1==
    RUNCID0JMH==
    Q0JDID0JMd==
    IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyO=
    IyAJCQkJICAgIERFUwkJCQkJICAgICM=
    IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyP=
    Y2xhc3MgZGVzOm==
    CSIiIkRFUyBlbmNyeXB0aW9uL2RlY3J5dHBpb24gY2xhc3M=
    CVN1cHBvcnRzIEVDQiAoRWxlY3Ryb25pYyBDb2RlIEJvb2spIGFuZCBDQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZykgbW9kZXMu
    CXB5RGVzLmRlcyhrZXksW21vZGVdLCBbSVZdKV==
    CWtleSAgLT4gVGhlIGVuY3J5cHRpb24ga2V5IHN0cmluZywgbXVzdCBiZSBleGFjdGx5IDggYnl0ZXM=
    CW1vZGUgLT4gT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gdHlwZSwgY2FuIGJlIGVpdGhlciBweURlcy5FQ0L=
    CQkoRWxlY3Ryb25pYyBDb2RlIEJvb2spLCBweURlcy5DQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZym=
    CUlWICAgLT4gT3B0aW9uYWwgc3RyaW5nIGFyZ3VtZW50LCBtdXN0IGJlIHN1cHBsaWVkIGlmIHVzaW5nIENCQyBtb2RlLl==
    CQlNdXN0IGJlIDggYnl0ZXMgaW4gbGVuZ3RoLv==
    CSIiIm==
    CSMgUGVybXV0YXRpb24gYW5kIHRyYW5zbGF0aW9uIHRhYmxlcyBmb3IgREVT
    CV9fcGMxID0gWzU2LCA0OCwgNDAsIDMyLCAyNCwgMTYsICA4LC==
    CQkgIDAsIDU3LCA0OSwgNDEsIDMzLCAyNSwgMTcs
    CQkgIDksICAxLCA1OCwgNTAsIDQyLCAzNCwgMjYs
    CQkgMTgsIDEwLCAgMiwgNTksIDUxLCA0MywgMzUs
    CQkgNjIsIDU0LCA0NiwgMzgsIDMwLCAyMiwgMTQs
    CQkgIDYsIDYxLCA1MywgNDUsIDM3LCAyOSwgMjEs
    CQkgMTMsICA1LCA2MCwgNTIsIDQ0LCAzNiwgMjgs
    CQkgMjAsIDEyLCAgNCwgMjcsIDE5LCAxMSwgIDM=
    CV3=
    CSMgbnVtYmVyIGxlZnQgcm90YXRpb25zIG9mIHBjMT==
    CV9fbGVmdF9yb3RhdGlvbnMgPSBb
    CQkxLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAxLCAyLCAyLCAyLCAyLCAyLCAyLCAx
    CV1=
    CSMgcGVybXV0ZWQgY2hvaWNlIGtleSAodGFibGUgMil=
    CV9fcGMyID0gW/==
    CQkxMywgMTYsIDEwLCAyMywgIDAsICA0LG==
    CQkgMiwgMjcsIDE0LCAgNSwgMjAsICA5LE==
    CQkyMiwgMTgsIDExLCAgMywgMjUsICA3LD==
    CQkxNSwgIDYsIDI2LCAxOSwgMTIsICAxLB==
    CQk0MCwgNTEsIDMwLCAzNiwgNDYsIDU0LG==
    CQkyOSwgMzksIDUwLCA0NCwgMzIsIDQ3LG==
    CQk0MywgNDgsIDM4LCA1NSwgMzMsIDUyLG==
    CQk0NSwgNDEsIDQ5LCAzNSwgMjgsIDMx
    CV1=
    CSMgaW5pdGlhbCBwZXJtdXRhdGlvbiBJUJ==
    CV9faXAgPSBbNTcsIDQ5LCA0MSwgMzMsIDI1LCAxNywgOSwgIDEs
    CQk1OSwgNTEsIDQzLCAzNSwgMjcsIDE5LCAxMSwgMyy=
    CQk2MSwgNTMsIDQ1LCAzNywgMjksIDIxLCAxMywgNSx=
    CQk2MywgNTUsIDQ3LCAzOSwgMzEsIDIzLCAxNSwgNyx=
    CQk1NiwgNDgsIDQwLCAzMiwgMjQsIDE2LCA4LCAgMCx=
    CQk1OCwgNTAsIDQyLCAzNCwgMjYsIDE4LCAxMCwgMix=
    CQk2MCwgNTIsIDQ0LCAzNiwgMjgsIDIwLCAxMiwgNCw=
    CQk2MiwgNTQsIDQ2LCAzOCwgMzAsIDIyLCAxNCwgNo==
    CV3=
    CSMgRXhwYW5zaW9uIHRhYmxlIGZvciB0dXJuaW5nIDMyIGJpdCBibG9ja3MgaW50byA0OCBiaXRz
    CV9fZXhwYW5zaW9uX3RhYmxlID0gWz==
    CQkzMSwgIDAsICAxLCAgMiwgIDMsICA0LG==
    CQkgMywgIDQsICA1LCAgNiwgIDcsICA4LO==
    CQkgNywgIDgsICA5LCAxMCwgMTEsIDEyLF==
    CQkxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LE==
    CQkxNSwgMTYsIDE3LCAxOCwgMTksIDIwLH==
    CQkxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LN==
    CQkyMywgMjQsIDI1LCAyNiwgMjcsIDI4LA==
    CQkyNywgMjgsIDI5LCAzMCwgMzEsICAw
    CV0=
    CSMgVGhlIChpbilmYW1vdXMgUy1ib3hlcw==
    CV9fc2JveCA9IFs=
    CQkjIFMx
    CQlbMTQsIDQsIDEzLCAxLCAyLCAxNSwgMTEsIDgsIDMsIDEwLCA2LCAxMiwgNSwgOSwgMCwgNyw=
    CQkgMCwgMTUsIDcsIDQsIDE0LCAyLCAxMywgMSwgMTAsIDYsIDEyLCAxMSwgOSwgNSwgMywgOCw=
    CQkgNCwgMSwgMTQsIDgsIDEzLCA2LCAyLCAxMSwgMTUsIDEyLCA5LCA3LCAzLCAxMCwgNSwgMCw=
    CQkgMTUsIDEyLCA4LCAyLCA0LCA5LCAxLCA3LCA1LCAxMSwgMywgMTQsIDEwLCAwLCA2LCAxM10s
    CQkjIFMy
    CQlbMTUsIDEsIDgsIDE0LCA2LCAxMSwgMywgNCwgOSwgNywgMiwgMTMsIDEyLCAwLCA1LCAxMCw=
    CQkgMywgMTMsIDQsIDcsIDE1LCAyLCA4LCAxNCwgMTIsIDAsIDEsIDEwLCA2LCA5LCAxMSwgNSw=
    CQkgMCwgMTQsIDcsIDExLCAxMCwgNCwgMTMsIDEsIDUsIDgsIDEyLCA2LCA5LCAzLCAyLCAxNSw=
    CQkgMTMsIDgsIDEwLCAxLCAzLCAxNSwgNCwgMiwgMTEsIDYsIDcsIDEyLCAwLCA1LCAxNCwgOV0s
    CQkjIFMz
    CQlbMTAsIDAsIDksIDE0LCA2LCAzLCAxNSwgNSwgMSwgMTMsIDEyLCA3LCAxMSwgNCwgMiwgOCw=
    CQkgMTMsIDcsIDAsIDksIDMsIDQsIDYsIDEwLCAyLCA4LCA1LCAxNCwgMTIsIDExLCAxNSwgMSw=
    CQkgMTMsIDYsIDQsIDksIDgsIDE1LCAzLCAwLCAxMSwgMSwgMiwgMTIsIDUsIDEwLCAxNCwgNyw=
    CQkgMSwgMTAsIDEzLCAwLCA2LCA5LCA4LCA3LCA0LCAxNSwgMTQsIDMsIDExLCA1LCAyLCAxMl0s
    CQkjIFM0
    CQlbNywgMTMsIDE0LCAzLCAwLCA2LCA5LCAxMCwgMSwgMiwgOCwgNSwgMTEsIDEyLCA0LCAxNSw=
    CQkgMTMsIDgsIDExLCA1LCA2LCAxNSwgMCwgMywgNCwgNywgMiwgMTIsIDEsIDEwLCAxNCwgOSw=
    CQkgMTAsIDYsIDksIDAsIDEyLCAxMSwgNywgMTMsIDE1LCAxLCAzLCAxNCwgNSwgMiwgOCwgNCw=
    CQkgMywgMTUsIDAsIDYsIDEwLCAxLCAxMywgOCwgOSwgNCwgNSwgMTEsIDEyLCA3LCAyLCAxNF0s
    CQkjIFM1
    CQlbMiwgMTIsIDQsIDEsIDcsIDEwLCAxMSwgNiwgOCwgNSwgMywgMTUsIDEzLCAwLCAxNCwgOSw=
    CQkgMTQsIDExLCAyLCAxMiwgNCwgNywgMTMsIDEsIDUsIDAsIDE1LCAxMCwgMywgOSwgOCwgNiw=
    CQkgNCwgMiwgMSwgMTEsIDEwLCAxMywgNywgOCwgMTUsIDksIDEyLCA1LCA2LCAzLCAwLCAxNCw=
    CQkgMTEsIDgsIDEyLCA3LCAxLCAxNCwgMiwgMTMsIDYsIDE1LCAwLCA5LCAxMCwgNCwgNSwgM10s
    CQkjIFM2
    CQlbMTIsIDEsIDEwLCAxNSwgOSwgMiwgNiwgOCwgMCwgMTMsIDMsIDQsIDE0LCA3LCA1LCAxMSw=
    CQkgMTAsIDE1LCA0LCAyLCA3LCAxMiwgOSwgNSwgNiwgMSwgMTMsIDE0LCAwLCAxMSwgMywgOCw=
    CQkgOSwgMTQsIDE1LCA1LCAyLCA4LCAxMiwgMywgNywgMCwgNCwgMTAsIDEsIDEzLCAxMSwgNiw=
    CQkgNCwgMywgMiwgMTIsIDksIDUsIDE1LCAxMCwgMTEsIDE0LCAxLCA3LCA2LCAwLCA4LCAxM10s
    CQkjIFM3
    CQlbNCwgMTEsIDIsIDE0LCAxNSwgMCwgOCwgMTMsIDMsIDEyLCA5LCA3LCA1LCAxMCwgNiwgMSw=
    CQkgMTMsIDAsIDExLCA3LCA0LCA5LCAxLCAxMCwgMTQsIDMsIDUsIDEyLCAyLCAxNSwgOCwgNiw=
    CQkgMSwgNCwgMTEsIDEzLCAxMiwgMywgNywgMTQsIDEwLCAxNSwgNiwgOCwgMCwgNSwgOSwgMiw=
    CQkgNiwgMTEsIDEzLCA4LCAxLCA0LCAxMCwgNywgOSwgNSwgMCwgMTUsIDE0LCAyLCAzLCAxMl0s
    CQkjIFM4
    CQlbMTMsIDIsIDgsIDQsIDYsIDE1LCAxMSwgMSwgMTAsIDksIDMsIDE0LCA1LCAwLCAxMiwgNyw=
    CQkgMSwgMTUsIDEzLCA4LCAxMCwgMywgNywgNCwgMTIsIDUsIDYsIDExLCAwLCAxNCwgOSwgMiw=
    CQkgNywgMTEsIDQsIDEsIDksIDEyLCAxNCwgMiwgMCwgNiwgMTAsIDEzLCAxNSwgMywgNSwgOCw=
    CQkgMiwgMSwgMTQsIDcsIDQsIDEwLCA4LCAxMywgMTUsIDEyLCA5LCAwLCAzLCA1LCA2LCAxMV0s
    CV0=
    CSMgMzItYml0IHBlcm11dGF0aW9uIGZ1bmN0aW9uIFAgdXNlZCBvbiB0aGUgb3V0cHV0IG9mIHRoZSBTLWJveGVz
    CV9fcCA9IFs=
    CQkxNSwgNiwgMTksIDIwLCAyOCwgMTEs
    CQkyNywgMTYsIDAsIDE0LCAyMiwgMjUs
    CQk0LCAxNywgMzAsIDksIDEsIDcs
    CQkyMywxMywgMzEsIDI2LCAyLCA4LA==
    CQkxOCwgMTIsIDI5LCA1LCAyMSwgMTAs
    CQkzLCAyNA==
    CV0=
    CSMgZmluYWwgcGVybXV0YXRpb24gSVBeLTE=
    CV9fZnAgPSBb
    CQkzOSwgIDcsIDQ3LCAxNSwgNTUsIDIzLCA2MywgMzEs
    CQkzOCwgIDYsIDQ2LCAxNCwgNTQsIDIyLCA2MiwgMzAs
    CQkzNywgIDUsIDQ1LCAxMywgNTMsIDIxLCA2MSwgMjks
    CQkzNiwgIDQsIDQ0LCAxMiwgNTIsIDIwLCA2MCwgMjgs
    CQkzNSwgIDMsIDQzLCAxMSwgNTEsIDE5LCA1OSwgMjcs
    CQkzNCwgIDIsIDQyLCAxMCwgNTAsIDE4LCA1OCwgMjYs
    CQkzMywgIDEsIDQxLCAgOSwgNDksIDE3LCA1NywgMjUs
    CQkzMiwgIDAsIDQwLCAgOCwgNDgsIDE2LCA1NiwgMjQ=
    CV0=
    CSMgVHlwZSBvZiBjcnlwdGluZyBiZWluZyBkb25l
    CUVOQ1JZUFQgPQkweDAw
    CURFQ1JZUFQgPQkweDAx
    CSMgSW5pdGlhbGlzYXRpb24=
    CWRlZiBfX2luaXRfXyhzZWxmLCBrZXksIG1vZGU9RUNCLCBJVj1Ob25lKTo=
    CQlpZiBsZW4oa2V5KSAhPSA4Og==
    CQkJcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBERVMga2V5IHNpemUuIEtleSBtdXN0IGJlIGV4YWN0bHkgOCBieXRlcyBsb25nLiIp
    CQlzZWxmLmJsb2NrX3NpemUgPSA4
    CQlzZWxmLmtleV9zaXplID0gOA==
    CQlzZWxmLl9fcGFkZGluZyA9ICcn
    CQkjIFNldCB0aGUgcGFzc2VkIGluIHZhcmlhYmxlcw==
    CQlzZWxmLnNldE1vZGUobW9kZSk=
    CQlpZiBJVjo=
    CQkJc2VsZi5zZXRJVihJVik=
    CQlzZWxmLkwgPSBbXQ==
    CQlzZWxmLlIgPSBbXQ==
    CQlzZWxmLktuID0gWyBbMF0gKiA0OCBdICogMTYJIyAxNiA0OC1iaXQga2V5cyAoSzEgLSBLMTYp
    CQlzZWxmLmZpbmFsID0gW10=
    CQlzZWxmLnNldEtleShrZXkp
    CWRlZiBnZXRLZXkoc2VsZik6
    CQkiIiJnZXRLZXkoKSAtPiBzdHJpbmciIiI=
    CQlyZXR1cm4gc2VsZi5fX2tleQ==
    CWRlZiBzZXRLZXkoc2VsZiwga2V5KTo=
    CQkiIiJXaWxsIHNldCB0aGUgY3J5cHRpbmcga2V5IGZvciB0aGlzIG9iamVjdC4gTXVzdCBiZSA4IGJ5dGVzLiIiIg==
    CQlzZWxmLl9fa2V5ID0ga2V5
    CQlzZWxmLl9fY3JlYXRlX3N1Yl9rZXlzKCk=
    CWRlZiBnZXRNb2RlKHNlbGYpOg==
    CQkiIiJnZXRNb2RlKCkgLT4gcHlEZXMuRUNCIG9yIHB5RGVzLkNCQyIiIg==
    CQlyZXR1cm4gc2VsZi5fX21vZGU=
    CWRlZiBzZXRNb2RlKHNlbGYsIG1vZGUpOg==
    CQkiIiJTZXRzIHRoZSB0eXBlIG9mIGNyeXB0aW5nIG1vZGUsIHB5RGVzLkVDQiBvciBweURlcy5DQkMiIiI=
    CQlzZWxmLl9fbW9kZSA9IG1vZGU=
    CWRlZiBnZXRJVihzZWxmKTo=
    CQkiIiJnZXRJVigpIC0+IHN0cmluZyIiIg==
    CQlyZXR1cm4gc2VsZi5fX2l2
    CWRlZiBzZXRJVihzZWxmLCBJVik6
    CQkiIiJXaWxsIHNldCB0aGUgSW5pdGlhbCBWYWx1ZSwgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIENCQyBtb2RlIiIi
    CQlpZiBub3QgSVYgb3IgbGVuKElWKSAhPSBzZWxmLmJsb2NrX3NpemU6
    CQkJcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBJbml0aWFsIFZhbHVlIChJViksIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAiICsgc3RyKHNlbGYuYmxvY2tfc2l6ZSkgKyAiIGJ5dGVzIik=
    CQlzZWxmLl9faXYgPSBJVg==
    CWRlZiBnZXRQYWRkaW5nKHNlbGYpOg==
    CQkiIiJnZXRQYWRkaW5nKCkgLT4gc3RyaW5nIG9mIGxlbmd0aCAxLiBQYWRkaW5nIGNoYXJhY3Rlci4iIiI=
    CQlyZXR1cm4gc2VsZi5fX3BhZGRpbmc=
    CWRlZiBfX1N0cmluZ190b19CaXRMaXN0KHNlbGYsIGRhdGEpOg==
    CQkiIiJUdXJuIHRoZSBzdHJpbmcgZGF0YSwgaW50byBhIGxpc3Qgb2YgYml0cyAoMSwgMCkncyIiIg==
    CQlsID0gbGVuKGRhdGEpICogOA==
    CQlyZXN1bHQgPSBbMF0gKiBs
    CQlwb3MgPSAw
    CQlmb3IgYyBpbiBkYXRhOg==
    CQkJaSA9IDc=
    CQkJY2ggPSBvcmQoYyk=
    CQkJd2hpbGUgaSA+PSAwOg==
    CQkJCWlmIGNoICYgKDEgPDwgaSkgIT0gMDo=
    CQkJCQlyZXN1bHRbcG9zXSA9IDE=
    CQkJCWVsc2U6
    CQkJCQlyZXN1bHRbcG9zXSA9IDA=
    CQkJCXBvcyArPSAx
    CQkJCWkgLT0gMQ==
    CQlyZXR1cm4gcmVzdWx0
    CWRlZiBfX0JpdExpc3RfdG9fU3RyaW5nKHNlbGYsIGRhdGEpOg==
    CQkiIiJUdXJuIHRoZSBsaXN0IG9mIGJpdHMgLT4gZGF0YSwgaW50byBhIHN0cmluZyIiIg==
    CQlyZXN1bHQgPSAnJw==
    CQlwb3MgPSAw
    CQljID0gMA==
    CQl3aGlsZSBwb3MgPCBsZW4oZGF0YSk6
    CQkJYyArPSBkYXRhW3Bvc10gPDwgKDcgLSAocG9zICUgOCkp
    CQkJaWYgKHBvcyAlIDgpID09IDc6
    CQkJCXJlc3VsdCArPSBjaHIoYyk=
    CQkJCWMgPSAw
    CQkJcG9zICs9IDE=
    CQlyZXR1cm4gcmVzdWx0
    CWRlZiBfX3Blcm11dGF0ZShzZWxmLCB0YWJsZSwgYmxvY2spOg==
    CQkiIiJQZXJtdXRhdGUgdGhpcyBibG9jayB3aXRoIHRoZSBzcGVjaWZpZWQgdGFibGUiIiI=
    CQlyZXR1cm4gbWFwKGxhbWJkYSB4OiBibG9ja1t4XSwgdGFibGUp
    CQkJIyBUcmFuc2Zvcm0gdGhlIHNlY3JldCBrZXksIHNvIHRoYXQgaXQgaXMgcmVhZHkgZm9yIGRhdGEgcHJvY2Vzc2luZw==
    CSMgQ3JlYXRlIHRoZSAxNiBzdWJrZXlzLCBLWzFdIC0gS1sxNl0=
    CWRlZiBfX2NyZWF0ZV9zdWJfa2V5cyhzZWxmKTo=
    CQkiIiJDcmVhdGUgdGhlIDE2IHN1YmtleXMgS1sxXSB0byBLWzE2XSBmcm9tIHRoZSBnaXZlbiBrZXkiIiI=
    CQlrZXkgPSBzZWxmLl9fcGVybXV0YXRlKGRlcy5fX3BjMSwgc2VsZi5fX1N0cmluZ190b19CaXRMaXN0KHNlbGYuZ2V0S2V5KCkpKQ==
    CQlpID0gMA==
    CQkjIFNwbGl0IGludG8gTGVmdCBhbmQgUmlnaHQgc2VjdGlvbnM=
    CQlzZWxmLkwgPSBrZXlbOjI4XQ==
    CQlzZWxmLlIgPSBrZXlbMjg6XQ==
    CQl3aGlsZSBpIDwgMTY6
    CQkJaiA9IDA=
    CQkJIyBQZXJmb3JtIGNpcmN1bGFyIGxlZnQgc2hpZnRz
    CQkJd2hpbGUgaiA8IGRlcy5fX2xlZnRfcm90YXRpb25zW2ldOg==
    CQkJCXNlbGYuTC5hcHBlbmQoc2VsZi5MWzBdKQ==
    CQkJCWRlbCBzZWxmLkxbMF0=
    CQkJCXNlbGYuUi5hcHBlbmQoc2VsZi5SWzBdKQ==
    CQkJCWRlbCBzZWxmLlJbMF0=
    CQkJCWogKz0gMQ==
    CQkJIyBDcmVhdGUgb25lIG9mIHRoZSAxNiBzdWJrZXlzIHRocm91Z2ggcGMyIHBlcm11dGF0aW9u
    CQkJc2VsZi5LbltpXSA9IHNlbGYuX19wZXJtdXRhdGUoZGVzLl9fcGMyLCBzZWxmLkwgKyBzZWxmLlIp
    CQkJaSArPSAx
    CSMgTWFpbiBwYXJ0IG9mIHRoZSBlbmNyeXB0aW9uIGFsZ29yaXRobSwgdGhlIG51bWJlciBjcnVuY2hlciA6KQ==
    CWRlZiBfX2Rlc19jcnlwdChzZWxmLCBibG9jaywgY3J5cHRfdHlwZSk6
    CQkiIiJDcnlwdCB0aGUgYmxvY2sgb2YgZGF0YSB0aHJvdWdoIERFUyBiaXQtbWFuaXB1bGF0aW9uIiIi
    CQlibG9jayA9IHNlbGYuX19wZXJtdXRhdGUoZGVzLl9faXAsIGJsb2NrKQ==
    CQlzZWxmLkwgPSBibG9ja1s6MzJd
    CQlzZWxmLlIgPSBibG9ja1szMjpd
    CQkjIEVuY3J5cHRpb24gc3RhcnRzIGZyb20gS25bMV0gdGhyb3VnaCB0byBLblsxNl0=
    CQlpZiBjcnlwdF90eXBlID09IGRlcy5FTkNSWVBUOg==
    CQkJaXRlcmF0aW9uID0gMA==
    CQkJaXRlcmF0aW9uX2FkanVzdG1lbnQgPSAx
    CQkjIERlY3J5cHRpb24gc3RhcnRzIGZyb20gS25bMTZdIGRvd24gdG8gS25bMV0=
    CQllbHNlOg==
    CQkJaXRlcmF0aW9uID0gMTU=
    CQkJaXRlcmF0aW9uX2FkanVzdG1lbnQgPSAtMQ==
    CQlpID0gMA==
    CQl3aGlsZSBpIDwgMTY6
    CQkJIyBNYWtlIGEgY29weSBvZiBSW2ktMV0sIHRoaXMgd2lsbCBsYXRlciBiZWNvbWUgTFtpXQ==
    CQkJdGVtcFIgPSBzZWxmLlJbOl0=
    CQkJIyBQZXJtdXRhdGUgUltpIC0gMV0gdG8gc3RhcnQgY3JlYXRpbmcgUltpXQ==
    CQkJc2VsZi5SID0gc2VsZi5fX3Blcm11dGF0ZShkZXMuX19leHBhbnNpb25fdGFibGUsIHNlbGYuUik=
    CQkJIyBFeGNsdXNpdmUgb3IgUltpIC0gMV0gd2l0aCBLW2ldLCBjcmVhdGUgQlsxXSB0byBCWzhdIHdoaWxzdCBoZXJl
    CQkJc2VsZi5SID0gbWFwKGxhbWJkYSB4LCB5OiB4IF4geSwgc2VsZi5SLCBzZWxmLktuW2l0ZXJhdGlvbl0p
    CQkJQiA9IFtzZWxmLlJbOjZdLCBzZWxmLlJbNjoxMl0sIHNlbGYuUlsxMjoxOF0sIHNlbGYuUlsxODoyNF0sIHNlbGYuUlsyNDozMF0sIHNlbGYuUlszMDozNl0sIHNlbGYuUlszNjo0Ml0sIHNlbGYuUls0MjpdXQ==
    CQkJIyBPcHRpbWl6YXRpb246IFJlcGxhY2VkIGJlbG93IGNvbW1lbnRlZCBjb2RlIHdpdGggYWJvdmU=
    CQkJI2ogPSAw
    CQkJI0IgPSBbXQ==
    CQkJI3doaWxlIGogPCBsZW4oc2VsZi5SKTo=
    CQkJIwlzZWxmLlJbal0gPSBzZWxmLlJbal0gXiBzZWxmLktuW2l0ZXJhdGlvbl1bal0=
    CQkJIwlqICs9IDE=
    CQkJIwlpZiBqICUgNiA9PSAwOg==
    CQkJIwkJQi5hcHBlbmQoc2VsZi5SW2otNjpqXSk=
    CQkJIyBQZXJtdXRhdGUgQlsxXSB0byBCWzhdIHVzaW5nIHRoZSBTLUJveGVz
    CQkJaiA9IDA=
    CQkJQm4gPSBbMF0gKiAzMg==
    CQkJcG9zID0gMA==
    CQkJd2hpbGUgaiA8IDg6
    CQkJCSMgV29yayBvdXQgdGhlIG9mZnNldHM=
    CQkJCW0gPSAoQltqXVswXSA8PCAxKSArIEJbal1bNV0=
    CQkJCW4gPSAoQltqXVsxXSA8PCAzKSArIChCW2pdWzJdIDw8IDIpICsgKEJbal1bM10gPDwgMSkgKyBCW2pdWzRd
    CQkJCSMgRmluZCB0aGUgcGVybXV0YXRpb24gdmFsdWU=
    CQkJCXYgPSBkZXMuX19zYm94W2pdWyhtIDw8IDQpICsgbl0=
    CQkJCSMgVHVybiB2YWx1ZSBpbnRvIGJpdHMsIGFkZCBpdCB0byByZXN1bHQ6IEJu
    CQkJCUJuW3Bvc10gPSAodiAmIDgpID4+IDM=
    CQkJCUJuW3BvcyArIDFdID0gKHYgJiA0KSA+PiAy
    CQkJCUJuW3BvcyArIDJdID0gKHYgJiAyKSA+PiAx
    CQkJCUJuW3BvcyArIDNdID0gdiAmIDE=
    CQkJCXBvcyArPSA0
    CQkJCWogKz0gMQ==
    CQkJIyBQZXJtdXRhdGUgdGhlIGNvbmNhdGluYXRpb24gb2YgQlsxXSB0byBCWzhdIChCbik=
    CQkJc2VsZi5SID0gc2VsZi5fX3Blcm11dGF0ZShkZXMuX19wLCBCbik=
    CQkJIyBYb3Igd2l0aCBMW2kgLSAxXQ==
    CQkJc2VsZi5SID0gbWFwKGxhbWJkYSB4LCB5OiB4IF4geSwgc2VsZi5SLCBzZWxmLkwp
    CQkJIyBPcHRpbWl6YXRpb246IFRoaXMgbm93IHJlcGxhY2VzIHRoZSBiZWxvdyBjb21tZW50ZWQgY29kZQ==
    CQkJI2ogPSAw
    CQkJI3doaWxlIGogPCBsZW4oc2VsZi5SKTo=
    CQkJIwlzZWxmLlJbal0gPSBzZWxmLlJbal0gXiBzZWxmLkxbal0=
    CQkJIwlqICs9IDE=
    CQkJIyBMW2ldIGJlY29tZXMgUltpIC0gMV0=
    CQkJc2VsZi5MID0gdGVtcFI=
    CQkJaSArPSAx
    CQkJaXRlcmF0aW9uICs9IGl0ZXJhdGlvbl9hZGp1c3RtZW50
    CQkJIyBGaW5hbCBwZXJtdXRhdGlvbiBvZiBSWzE2XUxbMTZd
    CQlzZWxmLmZpbmFsID0gc2VsZi5fX3Blcm11dGF0ZShkZXMuX19mcCwgc2VsZi5SICsgc2VsZi5MKQ==
    CQlyZXR1cm4gc2VsZi5maW5hbA==
    CSMgRGF0YSB0byBiZSBlbmNyeXB0ZWQvZGVjcnlwdGVk
    CWRlZiBjcnlwdChzZWxmLCBkYXRhLCBjcnlwdF90eXBlKTo=
    CQkiIiJDcnlwdCB0aGUgZGF0YSBpbiBibG9ja3MsIHJ1bm5pbmcgaXQgdGhyb3VnaCBkZXNfY3J5cHQoKSIiIg==
    CQkjIEVycm9yIGNoZWNrIHRoZSBkYXRh
    CQlpZiBub3QgZGF0YTo=
    CQkJcmV0dXJuICcn
    CQlpZiBsZW4oZGF0YSkgJSBzZWxmLmJsb2NrX3NpemUgIT0gMDo=
    CQkJaWYgY3J5cHRfdHlwZSA9PSBkZXMuREVDUllQVDogIyBEZWNyeXB0aW9uIG11c3Qgd29yayBvbiA4IGJ5dGUgYmxvY2tz
    CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZGF0YSBsZW5ndGgsIGRhdGEgbXVzdCBiZSBhIG11bHRpcGxlIG9mICIgKyBzdHIoc2VsZi5ibG9ja19zaXplKSArICIgYnl0ZXNcbi4iKQ==
    CQkJaWYgbm90IHNlbGYuZ2V0UGFkZGluZygpOg==
    CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgZGF0YSBsZW5ndGgsIGRhdGEgbXVzdCBiZSBhIG11bHRpcGxlIG9mICIgKyBzdHIoc2VsZi5ibG9ja19zaXplKSArICIgYnl0ZXNcbi4gVHJ5IHNldHRpbmcgdGhlIG9wdGlvbmFsIHBhZGRpbmcgY2hhcmFjdGVyIik=
    CQkJZWxzZTo=
    CQkJCWRhdGEgKz0gKHNlbGYuYmxvY2tfc2l6ZSAtIChsZW4oZGF0YSkgJSBzZWxmLmJsb2NrX3NpemUpKSAqIHNlbGYuZ2V0UGFkZGluZygp
    CQkJIyBwcmludCAiTGVuIG9mIGRhdGE6ICVmIiAlIChsZW4oZGF0YSkgLyBzZWxmLmJsb2NrX3NpemUp
    CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkM6
    CQkJaWYgc2VsZi5nZXRJVigpOg==
    CQkJCWl2ID0gc2VsZi5fX1N0cmluZ190b19CaXRMaXN0KHNlbGYuZ2V0SVYoKSk=
    CQkJZWxzZTo=
    CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkZvciBDQkMgbW9kZSwgeW91IG11c3Qgc3VwcGx5IHRoZSBJbml0aWFsIFZhbHVlIChJVikgZm9yIGNpcGhlcmluZyIp
    CQkjIFNwbGl0IHRoZSBkYXRhIGludG8gYmxvY2tzLCBjcnlwdGluZyBlYWNoIG9uZSBzZXBlcmF0ZWx5
    CQlpID0gMA==
    CQlkaWN0ID0ge30=
    CQlyZXN1bHQgPSBbXQ==
    CQkjY2FjaGVkID0gMA==
    CQkjbGluZXMgPSAw
    CQl3aGlsZSBpIDwgbGVuKGRhdGEpOg==
    CQkJIyBUZXN0IGNvZGUgZm9yIGNhY2hpbmcgZW5jcnlwdGlvbiByZXN1bHRz
    CQkJI2xpbmVzICs9IDE=
    CQkJI2lmIGRpY3QuaGFzX2tleShkYXRhW2k6aSs4XSk6
    CQkJCSNwcmludCAiQ2FjaGVkIHJlc3VsdCBmb3I6ICVzIiAlIGRhdGFbaTppKzhd
    CQkJIwljYWNoZWQgKz0gMQ==
    CQkJIwlyZXN1bHQuYXBwZW5kKGRpY3RbZGF0YVtpOmkrOF1dKQ==
    CQkJIwlpICs9IDg=
    CQkJIwljb250aW51ZQ==
    CQkJCQkJYmxvY2sgPSBzZWxmLl9fU3RyaW5nX3RvX0JpdExpc3QoZGF0YVtpOmkrOF0p
    CQkJIyBYb3Igd2l0aCBJViBpZiB1c2luZyBDQkMgbW9kZQ==
    CQkJaWYgc2VsZi5nZXRNb2RlKCkgPT0gQ0JDOg==
    CQkJCWlmIGNyeXB0X3R5cGUgPT0gZGVzLkVOQ1JZUFQ6
    CQkJCQlibG9jayA9IG1hcChsYW1iZGEgeCwgeTogeCBeIHksIGJsb2NrLCBpdik=
    CQkJCQkjaiA9IDA=
    CQkJCQkjd2hpbGUgaiA8IGxlbihibG9jayk6
    CQkJCQkjCWJsb2NrW2pdID0gYmxvY2tbal0gXiBpdltqXQ==
    CQkJCQkjCWogKz0gMQ==
    CQkJCXByb2Nlc3NlZF9ibG9jayA9IHNlbGYuX19kZXNfY3J5cHQoYmxvY2ssIGNyeXB0X3R5cGUp
    CQkJCWlmIGNyeXB0X3R5cGUgPT0gZGVzLkRFQ1JZUFQ6
    CQkJCQlwcm9jZXNzZWRfYmxvY2sgPSBtYXAobGFtYmRhIHgsIHk6IHggXiB5LCBwcm9jZXNzZWRfYmxvY2ssIGl2KQ==
    CQkJCQkjaiA9IDA=
    CQkJCQkjd2hpbGUgaiA8IGxlbihwcm9jZXNzZWRfYmxvY2spOg==
    CQkJCQkjCXByb2Nlc3NlZF9ibG9ja1tqXSA9IHByb2Nlc3NlZF9ibG9ja1tqXSBeIGl2W2pd
    CQkJCQkjCWogKz0gMQ==
    CQkJCQlpdiA9IGJsb2Nr
    CQkJCWVsc2U6
    CQkJCQlpdiA9IHByb2Nlc3NlZF9ibG9jaw==
    CQkJZWxzZTo=
    CQkJCXByb2Nlc3NlZF9ibG9jayA9IHNlbGYuX19kZXNfY3J5cHQoYmxvY2ssIGNyeXB0X3R5cGUp
    CQkJIyBBZGQgdGhlIHJlc3VsdGluZyBjcnlwdGVkIGJsb2NrIHRvIG91ciBsaXN0
    CQkJI2QgPSBzZWxmLl9fQml0TGlzdF90b19TdHJpbmcocHJvY2Vzc2VkX2Jsb2NrKQ==
    CQkJI3Jlc3VsdC5hcHBlbmQoZCk=
    CQkJcmVzdWx0LmFwcGVuZChzZWxmLl9fQml0TGlzdF90b19TdHJpbmcocHJvY2Vzc2VkX2Jsb2NrKSk=
    CQkJI2RpY3RbZGF0YVtpOmkrOF1dID0gZA==
    CQkJaSArPSA4
    CQkjIHByaW50ICJMaW5lczogJWQsIGNhY2hlZDogJWQiICUgKGxpbmVzLCBjYWNoZWQp
    CQkjIFJlbW92ZSB0aGUgcGFkZGluZyBmcm9tIHRoZSBsYXN0IGJsb2Nr
    CQlpZiBjcnlwdF90eXBlID09IGRlcy5ERUNSWVBUIGFuZCBzZWxmLmdldFBhZGRpbmcoKTo=
    CQkJI3ByaW50ICJSZW1vdmluZyBkZWNyeXB0IHBhZCI=
    CQkJcyA9IHJlc3VsdFstMV0=
    CQkJd2hpbGUgc1stMV0gPT0gc2VsZi5nZXRQYWRkaW5nKCk6
    CQkJCXMgPSBzWzotMV0=
    CQkJcmVzdWx0Wy0xXSA9IHM=
    CQkjIFJldHVybiB0aGUgZnVsbCBjcnlwdGVkIHN0cmluZw==
    CQlyZXR1cm4gJycuam9pbihyZXN1bHQp
    CWRlZiBlbmNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6
    CQkiIiJlbmNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=
    CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==
    CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRl
    CQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBlbmNyeXB0ZWQ=
    CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIERhdGEgZG9lcyBub3QgaGF2ZSB0byBiZSBh
    CQltdWx0aXBsZSBvZiA4IGJ5dGVzIGlmIHRoZSBwYWRkaW5nIGNoYXJhY3RlciBpcyBzdXBwbGllZCwgdGhl
    CQlkYXRhIHdpbGwgdGhlbiBiZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiA4IGJ5dGVzIHdpdGggdGhpcw==
    CQlwYWQgY2hhcmFjdGVyLg==
    CQkiIiI=
    CQlzZWxmLl9fcGFkZGluZyA9IHBhZA==
    CQlyZXR1cm4gc2VsZi5jcnlwdChkYXRhLCBkZXMuRU5DUllQVCk=
    CWRlZiBkZWNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6
    CQkiIiJkZWNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=
    CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==
    CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGRlY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRl
    CQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBkZWNyeXB0ZWQ=
    CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIElmIHRoZSBvcHRpb25hbCBwYWRkaW5nIGNoYXJhY3Rlcg==
    CQlpcyBzdXBwbGllZCwgdGhlbiB0aGUgdW4tZW5jeXB0ZWQgZGF0YSB3aWxsIGhhdmUgdGhlIHBhZGRpbmcgY2hhcmFjdGVycw==
    CQlyZW1vdmVkIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGlzIHBhZCByZW1vdmFsIG9ubHkgb2NjdXJzIG9uIHRoZQ==
    CQlsYXN0IDggYnl0ZXMgb2YgdGhlIGRhdGEgKGxhc3QgZGF0YSBibG9jayku
    CQkiIiI=
    CQlzZWxmLl9fcGFkZGluZyA9IHBhZA==
    CQlyZXR1cm4gc2VsZi5jcnlwdChkYXRhLCBkZXMuREVDUllQVCk=
    IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=
    IyAJCQkJVHJpcGxlIERFUwkJCQkgICAgIw==
    IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=
    Y2xhc3MgdHJpcGxlX2Rlczo=
    CSIiIlRyaXBsZSBERVMgZW5jcnlwdGlvbi9kZWNyeXRwaW9uIGNsYXNz
    CVRoaXMgYWxnb3JpdGhtIHVzZXMgdGhlIERFUy1FREUzICh3aGVuIGEgMjQgYnl0ZSBrZXkgaXMgc3VwcGxpZWQpIG9y
    CXRoZSBERVMtRURFMiAod2hlbiBhIDE2IGJ5dGUga2V5IGlzIHN1cHBsaWVkKSBlbmNyeXB0aW9uIG1ldGhvZHMu
    CVN1cHBvcnRzIEVDQiAoRWxlY3Ryb25pYyBDb2RlIEJvb2spIGFuZCBDQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZykgbW9kZXMu
    CXB5RGVzLmRlcyhrZXksIFttb2RlXSwgW0lWXSk=
    CWtleSAgLT4gVGhlIGVuY3J5cHRpb24ga2V5IHN0cmluZywgbXVzdCBiZSBlaXRoZXIgMTYgb3IgMjQgYnl0ZXMgbG9uZw==
    CW1vZGUgLT4gT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gdHlwZSwgY2FuIGJlIGVpdGhlciBweURlcy5FQ0I=
    CQkoRWxlY3Ryb25pYyBDb2RlIEJvb2spLCBweURlcy5DQkMgKEN5cGhlciBCbG9jayBDaGFpbmluZyk=
    CUlWICAgLT4gT3B0aW9uYWwgc3RyaW5nIGFyZ3VtZW50LCBtdXN0IGJlIHN1cHBsaWVkIGlmIHVzaW5nIENCQyBtb2RlLg==
    CQlNdXN0IGJlIDggYnl0ZXMgaW4gbGVuZ3RoLg==
    CSIiIg==
    CWRlZiBfX2luaXRfXyhzZWxmLCBrZXksIG1vZGU9RUNCLCBJVj1Ob25lKTo=
    CQlzZWxmLmJsb2NrX3NpemUgPSA4
    CQlzZWxmLnNldE1vZGUobW9kZSk=
    CQlzZWxmLl9fcGFkZGluZyA9ICcn
    CQlzZWxmLl9faXYgPSBJVg==
    CQlzZWxmLnNldEtleShrZXkp
    CWRlZiBnZXRLZXkoc2VsZik6
    CQkiIiJnZXRLZXkoKSAtPiBzdHJpbmciIiI=
    CQlyZXR1cm4gc2VsZi5fX2tleQ==
    CWRlZiBzZXRLZXkoc2VsZiwga2V5KTo=
    CQkiIiJXaWxsIHNldCB0aGUgY3J5cHRpbmcga2V5IGZvciB0aGlzIG9iamVjdC4gRWl0aGVyIDE2IG9yIDI0IGJ5dGVzIGxvbmcuIiIi
    CQlzZWxmLmtleV9zaXplID0gMjQgICMgVXNlIERFUy1FREUzIG1vZGU=
    CQlpZiBsZW4oa2V5KSAhPSBzZWxmLmtleV9zaXplOg==
    CQkJaWYgbGVuKGtleSkgPT0gMTY6ICMgVXNlIERFUy1FREUyIG1vZGU=
    CQkJCXNlbGYua2V5X3NpemUgPSAxNg==
    CQkJZWxzZTo=
    CQkJCXJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdHJpcGxlIERFUyBrZXkgc2l6ZS4gS2V5IG11c3QgYmUgZWl0aGVyIDE2IG9yIDI0IGJ5dGVzIGxvbmciKQ==
    CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkMgYW5kIChub3Qgc2VsZi5nZXRJVigpIG9yIGxlbihzZWxmLmdldElWKCkpICE9IHNlbGYuYmxvY2tfc2l6ZSk6
    CQkJcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBJViwgbXVzdCBiZSA4IGJ5dGVzIGluIGxlbmd0aCIpICMjIFRPRE86IENoZWNrIHRoaXM=
    CQkjIG1vZGVzIGdldCBoYW5kbGVkIGxhdGVyLCBzaW5jZSBDQkMgZ29lcyBvbiB0b3Agb2YgdGhlIHRyaXBsZS1kZXM=
    CQlzZWxmLl9fa2V5MSA9IGRlcyhrZXlbOjhdKQ==
    CQlzZWxmLl9fa2V5MiA9IGRlcyhrZXlbODoxNl0p
    CQlpZiBzZWxmLmtleV9zaXplID09IDE2Og==
    CQkJc2VsZi5fX2tleTMgPSBzZWxmLl9fa2V5MQ==
    CQllbHNlOg==
    CQkJc2VsZi5fX2tleTMgPSBkZXMoa2V5WzE2Ol0p
    CQlzZWxmLl9fa2V5ID0ga2V5
    CWRlZiBnZXRNb2RlKHNlbGYpOg==
    CQkiIiJnZXRNb2RlKCkgLT4gcHlEZXMuRUNCIG9yIHB5RGVzLkNCQyIiIg==
    CQlyZXR1cm4gc2VsZi5fX21vZGU=
    CWRlZiBzZXRNb2RlKHNlbGYsIG1vZGUpOg==
    CQkiIiJTZXRzIHRoZSB0eXBlIG9mIGNyeXB0aW5nIG1vZGUsIHB5RGVzLkVDQiBvciBweURlcy5DQkMiIiI=
    CQlzZWxmLl9fbW9kZSA9IG1vZGU=
    CWRlZiBnZXRJVihzZWxmKTo=
    CQkiIiJnZXRJVigpIC0+IHN0cmluZyIiIg==
    CQlyZXR1cm4gc2VsZi5fX2l2
    CWRlZiBzZXRJVihzZWxmLCBJVik6
    CQkiIiJXaWxsIHNldCB0aGUgSW5pdGlhbCBWYWx1ZSwgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIENCQyBtb2RlIiIi
    CQlzZWxmLl9faXYgPSBJVg==
    CWRlZiB4b3JzdHIoIHNlbGYsIHgsIHkgKTo=
    CQkiIiJSZXR1cm5zIHRoZSBiaXR3aXNlIHhvciBvZiB0aGUgYnl0ZXMgaW4gdHdvIHN0cmluZ3MiIiI=
    CQlpZiBsZW4oeCkgIT0gbGVuKHkpOg==
    CQkJcmFpc2UgInN0cmluZyBsZW5ndGhzIGRpZmZlciAlZCAlZCIgJSAobGVuKHgpLCBsZW4oeSkp
    CQlyZXQgPSAnJw==
    CQlmb3IgaSBpbiByYW5nZShsZW4oeCkpOg==
    CQkJcmV0ICs9IGNocihvcmQoeFtpXSkgXiBvcmQoeVtpXSkp
    CQlyZXR1cm4gcmV0
    CWRlZiBlbmNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6
    CQkiIiJlbmNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=
    CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==
    CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGVuY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRl
    CQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBlbmNyeXB0ZWQ=
    CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIERhdGEgZG9lcyBub3QgaGF2ZSB0byBiZSBh
    CQltdWx0aXBsZSBvZiA4IGJ5dGVzIGlmIHRoZSBwYWRkaW5nIGNoYXJhY3RlciBpcyBzdXBwbGllZCwgdGhl
    CQlkYXRhIHdpbGwgdGhlbiBiZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiA4IGJ5dGVzIHdpdGggdGhpcw==
    CQlwYWQgY2hhcmFjdGVyLg==
    CQkiIiI=
    CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBFQ0I6
    CQkJIyBzaW1wbGU=
    CQkJZGF0YSA9IHNlbGYuX19rZXkxLmVuY3J5cHQoZGF0YSwgcGFkKQ==
    CQkJZGF0YSA9IHNlbGYuX19rZXkyLmRlY3J5cHQoZGF0YSk=
    CQkJcmV0dXJuIHNlbGYuX19rZXkzLmVuY3J5cHQoZGF0YSk=
    CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkM6
    CQkJcmFpc2UgIlRoaXMgY29kZSBoYXNuJ3QgYmVlbiB0ZXN0ZWQgeWV0Ig==
    CQkJaWYgbGVuKGRhdGEpICUgc2VsZi5ibG9ja19zaXplICE9IDA6
    CQkJCXJhaXNlICJDQkMgbW9kZSBuZWVkcyBkYXRhbGVuIHRvIGJlIGEgbXVsdGlwbGUgb2YgYmxvY2tzaXplIChpZ25vcmluZyBwYWRkaW5nIGZvciBub3cpIg==
    CQkJIyBzaW1wbGU=
    CQkJbGFzdGJsb2NrID0gc2VsZi5nZXRJVigp
    CQkJcmV0ZGF0YSA9ICcn
    CQkJZm9yIGkgaW4gcmFuZ2UoIDAsIGxlbihkYXRhKSwgc2VsZi5ibG9ja19zaXplICk6
    CQkJCXRoaXNibG9jayA9IGRhdGFbIGk6aStzZWxmLmJsb2NrX3NpemUgXQ==
    CQkJCSMgdGhlIFhPUiBmb3IgQ0JD
    CQkJCXRoaXNibG9jayA9IHNlbGYueG9yc3RyKCBsYXN0YmxvY2ssIHRoaXNibG9jayAp
    CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkxLmVuY3J5cHQodGhpc2Jsb2NrKQ==
    CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkyLmRlY3J5cHQodGhpc2Jsb2NrKQ==
    CQkJCWxhc3RibG9jayA9IHNlbGYuX19rZXkzLmVuY3J5cHQodGhpc2Jsb2NrKQ==
    CQkJCXJldGRhdGEgKz0gbGFzdGJsb2Nr
    CQkJcmV0dXJuIHJldGRhdGE=
    CQlyYWlzZSAiTm90IHJlYWNoZWQi
    CWRlZiBkZWNyeXB0KHNlbGYsIGRhdGEsIHBhZD0nJyk6
    CQkiIiJkZWNyeXB0KGRhdGEsIFtwYWRdKSAtPiBzdHJpbmc=
    CQlkYXRhIDogU3RyaW5nIHRvIGJlIGVuY3J5cHRlZA==
    CQlwYWQgIDogT3B0aW9uYWwgYXJndW1lbnQgZm9yIGRlY3J5cHRpb24gcGFkZGluZy4gTXVzdCBvbmx5IGJlIG9uZSBieXRl
    CQlUaGUgZGF0YSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgOCBieXRlcyBhbmQgd2lsbCBiZSBkZWNyeXB0ZWQ=
    CQl3aXRoIHRoZSBhbHJlYWR5IHNwZWNpZmllZCBrZXkuIElmIHRoZSBvcHRpb25hbCBwYWRkaW5nIGNoYXJhY3Rlcg==
    CQlpcyBzdXBwbGllZCwgdGhlbiB0aGUgdW4tZW5jeXB0ZWQgZGF0YSB3aWxsIGhhdmUgdGhlIHBhZGRpbmcgY2hhcmFjdGVycw==
    CQlyZW1vdmVkIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBUaGlzIHBhZCByZW1vdmFsIG9ubHkgb2NjdXJzIG9uIHRoZQ==
    CQlsYXN0IDggYnl0ZXMgb2YgdGhlIGRhdGEgKGxhc3QgZGF0YSBibG9jayku
    CQkiIiI=
    CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBFQ0I6
    CQkJIyBzaW1wbGU=
    CQkJZGF0YSA9IHNlbGYuX19rZXkzLmRlY3J5cHQoZGF0YSk=
    CQkJZGF0YSA9IHNlbGYuX19rZXkyLmVuY3J5cHQoZGF0YSk=
    CQkJcmV0dXJuIHNlbGYuX19rZXkxLmRlY3J5cHQoZGF0YSwgcGFkKQ==
    CQlpZiBzZWxmLmdldE1vZGUoKSA9PSBDQkM6
    CQkJaWYgbGVuKGRhdGEpICUgc2VsZi5ibG9ja19zaXplICE9IDA6
    CQkJCXJhaXNlICJDYW4gb25seSBkZWNyeXB0IG11bHRpcGxlcyBvZiBibG9ja3NpemUi
    CQkJbGFzdGJsb2NrID0gc2VsZi5nZXRJVigp
    CQkJcmV0ZGF0YSA9ICcn
    CQkJZm9yIGkgaW4gcmFuZ2UoIDAsIGxlbihkYXRhKSwgc2VsZi5ibG9ja19zaXplICk6
    CQkJCSMgY2FuIEkgYXJyYW5nZSB0aGlzIGJldHRlcj8gcHJvYmFibHkuLi4=
    CQkJCWNpcGhlcmNodW5rID0gZGF0YVsgaTppK3NlbGYuYmxvY2tfc2l6ZSBd
    CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkzLmRlY3J5cHQoY2lwaGVyY2h1bmsp
    CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkyLmVuY3J5cHQodGhpc2Jsb2NrKQ==
    CQkJCXRoaXNibG9jayA9IHNlbGYuX19rZXkxLmRlY3J5cHQodGhpc2Jsb2NrKQ==
    CQkJCXJldGRhdGEgKz0gc2VsZi54b3JzdHIoIGxhc3RibG9jaywgdGhpc2Jsb2NrICk=
    CQkJCWxhc3RibG9jayA9IGNpcGhlcmNodW5r
    CQkJcmV0dXJuIHJldGRhdGE=
    CQlyYWlzZSAiTm90IHJlYWNoZWQi
    IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=
    IyAJCQkJRXhhbXBsZXMJCQkJICAgICM=
    IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM=
    ZGVmIGV4YW1wbGVfdHJpcGxlX2RlcygpOg==
    CWZyb20gdGltZSBpbXBvcnQgdGltZQ==
    CSMgVXRpbGl0eSBtb2R1bGU=
    CWZyb20gYmluYXNjaWkgaW1wb3J0IHVuaGV4bGlmeSBhcyB1bmhleA==
    CSMgZXhhbXBsZSBzaG93cyB0cmlwbGUtZGVzIGVuY3J5cHRpb24gdXNpbmcgdGhlIGRlcyBjbGFzcw==
    CXByaW50ICJFeGFtcGxlIG9mIHRyaXBsZSBERVMgZW5jcnlwdGlvbiBpbiBkZWZhdWx0IEVDQiBtb2RlIChERVMtRURFMylcbiI=
    CXByaW50ICJUcmlwbGUgZGVzIHVzaW5nIHRoZSBkZXMgY2xhc3MgKDMgdGltZXMpIg==
    CXQgPSB0aW1lKCk=
    CWsxID0gZGVzKHVuaGV4KCIxMzM0NTc3OTlCQkNERkYxIikp
    CWsyID0gZGVzKHVuaGV4KCIxMTIyMzM0NDU1NjY3Nzg4Iikp
    CWszID0gZGVzKHVuaGV4KCI3NzY2MTEwMEREMjIzMzExIikp
    CWQgPSAiVHJpcGxlIERFUyB0ZXN0IHN0cmluZywgdG8gYmUgZW5jcnlwdGVkIGFuZCBkZWNyeXB0ZWQuLi4i
    CXByaW50ICJLZXkxOiAgICAgICVzIiAlIGsxLmdldEtleSgp
    CXByaW50ICJLZXkyOiAgICAgICVzIiAlIGsyLmdldEtleSgp
    CXByaW50ICJLZXkzOiAgICAgICVzIiAlIGszLmdldEtleSgp
    CXByaW50ICJEYXRhOiAgICAgICVzIiAlIGQ=
    CWUxID0gazEuZW5jcnlwdChkKQ==
    CWUyID0gazIuZGVjcnlwdChlMSk=
    CWUzID0gazMuZW5jcnlwdChlMik=
    CXByaW50ICJFbmNyeXB0ZWQ6ICIgKyBlMw==
    CWQzID0gazMuZGVjcnlwdChlMyk=
    CWQyID0gazIuZW5jcnlwdChkMyk=
    CWQxID0gazEuZGVjcnlwdChkMik=
    CXByaW50ICJEZWNyeXB0ZWQ6ICIgKyBkMQ==
    CXByaW50ICJERVMgdGltZSB0YWtlbjogJWYgKCVkIGNyeXB0IG9wZXJhdGlvbnMpIiAlICh0aW1lKCkgLSB0LCA2ICogKGxlbihkKSAvIDgpKQ==
    CXByaW50ICIi
    CSMgRXhhbXBsZSBiZWxvdyB1c2VzIHRoZSB0cmlwbGUtZGVzIGNsYXNzIHRvIGFjaGlldmUgdGhlIHNhbWUgYXMgYWJvdmU=
    CXByaW50ICJOb3cgdXNpbmcgdHJpcGxlIGRlcyBjbGFzcyI=
    CXQgPSB0aW1lKCk=
    CXQxID0gdHJpcGxlX2Rlcyh1bmhleCgiMTMzNDU3Nzk5QkJDREZGMTExMjIzMzQ0NTU2Njc3ODg3NzY2MTEwMEREMjIzMzExIikp
    CXByaW50ICJLZXk6ICAgICAgICVzIiAlIHQxLmdldEtleSgp
    CXByaW50ICJEYXRhOiAgICAgICVzIiAlIGQ=
    CXRkMSA9IHQxLmVuY3J5cHQoZCk=
    CXByaW50ICJFbmNyeXB0ZWQ6ICIgKyB0ZDE=
    CXRkMiA9IHQxLmRlY3J5cHQodGQxKQ==
    CXByaW50ICJEZWNyeXB0ZWQ6ICIgKyB0ZDI=
    CXByaW50ICJUcmlwbGUgREVTIHRpbWUgdGFrZW46ICVmICglZCBjcnlwdCBvcGVyYXRpb25zKSIgJSAodGltZSgpIC0gdCwgNiAqIChsZW4oZCkgLyA4KSk=
    ZGVmIGV4YW1wbGVfZGVzKCk6
    CWZyb20gdGltZSBpbXBvcnQgdGltZQ==
    CSMgZXhhbXBsZSBvZiBERVMgZW5jcnlwdGluZyBpbiBDQkMgbW9kZSB3aXRoIHRoZSBJViBvZiAiXDBcMFwwXDBcMFwwXDBcMCI=
    CXByaW50ICJFeGFtcGxlIG9mIERFUyBlbmNyeXB0aW9uIHVzaW5nIENCQyBtb2RlXG4i
    CXQgPSB0aW1lKCk=
    CWsgPSBkZXMoIkRFU0NSWVBUIiwgQ0JDLCAiXDBcMFwwXDBcMFwwXDBcMCIp
    CWRhdGEgPSAiREVTIGVuY3J5cHRpb24gYWxnb3JpdGhtIg==
    CXByaW50ICJLZXkgICAgICA6ICIgKyBrLmdldEtleSgp
    CXByaW50ICJEYXRhICAgICA6ICIgKyBkYXRh
    CWQgPSBrLmVuY3J5cHQoZGF0YSk=
    CXByaW50ICJFbmNyeXB0ZWQ6ICIgKyBk
    CWQgPSBrLmRlY3J5cHQoZCk=
    CXByaW50ICJEZWNyeXB0ZWQ6ICIgKyBk
    CXByaW50ICJERVMgdGltZSB0YWtlbjogJWYgKDYgY3J5cHQgb3BlcmF0aW9ucykiICUgKHRpbWUoKSAtIHQp
    CXByaW50ICIi
    ZGVmIF9fdGVzdF9fKCk6
    CWV4YW1wbGVfZGVzKCk=
    CWV4YW1wbGVfdHJpcGxlX2Rlcygp
    ZGVmIF9fZnVsbHRlc3RfXygpOg==
    CSMgVGhpcyBzaG91bGQgbm90IHByb2R1Y2UgYW55IHVuZXhwZWN0ZWQgZXJyb3JzIG9yIGV4Y2VwdGlvbnM=
    CWZyb20gYmluYXNjaWkgaW1wb3J0IHVuaGV4bGlmeSBhcyB1bmhleA==
    CWZyb20gYmluYXNjaWkgaW1wb3J0IGhleGxpZnkgYXMgZG9oZXg=
    CV9fdGVzdF9fKCk=
    CXByaW50ICIi
    CWsgPSBkZXMoIlwwXDBcMFwwXDBcMFwwXDAiLCBDQkMsICJcMFwwXDBcMFwwXDBcMFwwIik=
    CWQgPSBrLmVuY3J5cHQoIkRFUyBlbmNyeXB0aW9uIGFsZ29yaXRobSIp
    CWlmIGsuZGVjcnlwdChkKSAhPSAiREVTIGVuY3J5cHRpb24gYWxnb3JpdGhtIjo=
    CQlwcmludCAiVGVzdCAxIEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=
    CWsgPSBkZXMoIlwwXDBcMFwwXDBcMFwwXDAiLCBDQkMsICJcMFwwXDBcMFwwXDBcMFwwIik=
    CWQgPSBrLmVuY3J5cHQoIkRlZmF1bHQgc3RyaW5nIG9mIHRleHQiLCAnKicp
    CWlmIGsuZGVjcnlwdChkLCAiKiIpICE9ICJEZWZhdWx0IHN0cmluZyBvZiB0ZXh0Ijo=
    CQlwcmludCAiVGVzdCAyIEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=
    CWsgPSBkZXMoIlxyXG5cdEFCQ1xyXG4iKQ==
    CWQgPSBrLmVuY3J5cHQoIlN0cmluZyB0byBQYWQiLCAnKicp
    CWlmIGsuZGVjcnlwdChkKSAhPSAiU3RyaW5nIHRvIFBhZCoqKiI6
    CQlwcmludCAiJyVzJyIgJSBrLmRlY3J5cHQoZCk=
    CQlwcmludCAiVGVzdCAzIEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=
    CWsgPSBkZXMoIlxyXG5cdEFCQ1xyXG4iKQ==
    CWQgPSBrLmVuY3J5cHQodW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpLCB1bmhleCgiNDQiKSk=
    CWlmIGsuZGVjcnlwdChkLCB1bmhleCgiNDQiKSkgIT0gdW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpOg==
    CQlwcmludCAiVGVzdCA0YSBFcnJvcjogVW5lbmN5cHRlZCBkYXRhIGJsb2NrIGRvZXMgbm90IG1hdGNoIHN0YXJ0IGRhdGEi
    CWlmIGsuZGVjcnlwdChkKSAhPSB1bmhleCgiMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwNDQiKTo=
    CQlwcmludCAiVGVzdCA0YiBFcnJvcjogVW5lbmN5cHRlZCBkYXRhIGJsb2NrIGRvZXMgbm90IG1hdGNoIHN0YXJ0IGRhdGEi
    CWsgPSB0cmlwbGVfZGVzKCJNeURlc0tleVxyXG5cdEFCQ1xyXG4wOTg3KjU0MyIp
    CWQgPSBrLmVuY3J5cHQodW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpKQ==
    CWlmIGsuZGVjcnlwdChkKSAhPSB1bmhleCgiMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwIik6
    CQlwcmludCAiVGVzdCA1IEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=
    CWsgPSB0cmlwbGVfZGVzKCJcclxuXHRBQkNcclxuMDk4Nyo1NDMiKQ==
    CWQgPSBrLmVuY3J5cHQodW5oZXgoIjAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MDAwMDEwMjAzMDQwNTA2MDcwOEZGOEZEQ0IwNDA4MCIpKQ==
    CWlmIGsuZGVjcnlwdChkKSAhPSB1bmhleCgiMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwMDAwMTAyMDMwNDA1MDYwNzA4RkY4RkRDQjA0MDgwIik6
    CQlwcmludCAiVGVzdCA2IEVycm9yOiBVbmVuY3lwdGVkIGRhdGEgYmxvY2sgZG9lcyBub3QgbWF0Y2ggc3RhcnQgZGF0YSI=
    ZGVmIF9fZmlsZXRlc3RfXygpOg==
    CWZyb20gdGltZSBpbXBvcnQgdGltZQ==
    CWYgPSBvcGVuKCJweURlcy5weSIsICJyYisiKQ==
    CWQgPSBmLnJlYWQoKQ==
    CWYuY2xvc2UoKQ==
    CXQgPSB0aW1lKCk=
    CWsgPSBkZXMoIk15REVTS2V5Iik=
    CWQgPSBrLmVuY3J5cHQoZCwgIiAiKQ==
    CWYgPSBvcGVuKCJweURlcy5weS5lbmMiLCAid2IrIik=
    CWYud3JpdGUoZCk=
    CWYuY2xvc2UoKQ==
    CWQgPSBrLmRlY3J5cHQoZCwgIiAiKQ==
    CWYgPSBvcGVuKCJweURlcy5weS5kZWMiLCAid2IrIik=
    CWYud3JpdGUoZCk=
    CWYuY2xvc2UoKQ==
    CXByaW50ICJERVMgZmlsZSB0ZXN0IHRpbWU6ICVmIiAlICh0aW1lKCkgLSB0KQ==
    ZGVmIF9fcHJvZmlsZV9fKCk6
    CWltcG9ydCBwcm9maWxl
    CXByb2ZpbGUucnVuKCdfX2Z1bGx0ZXN0X18oKScp
    CSNwcm9maWxlLnJ1bignX19maWxldGVzdF9fKCknKQ==
    aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzo=
    CV9fdGVzdF9fKCk=
    CSNfX2Z1bGx0ZXN0X18oKQ==
    CSNfX2ZpbGV0ZXN0X18oKQ==
    CSNfX3Byb2ZpbGVfXygp
    


    于是解密之后发现和python的一个官方文档相同。这个时候思路就开始跑偏了。。。当时自己想的是比较这两个文件,结果就是越来越偏。

    看了别人的writeup之后才搞清楚base64原来有这么多的奥秘在里面。。。
    事实上,这个题目利用的是base64加密后的字符串来藏字符。如果base64字符串后面有==时,说明前一个字符的后四位是任意的,既可以写入信息的。如果是=结尾的,前一个字符的后两位是任意的,可以写入信息。
    然后还有一个地方在于base64的字符集,要对之前和之后的位置进行异或,再将其拼接起来,就是01字符串,转成字符串得flag。。。
    代码:

    import base64
    
    f=open("C:\Users\wangchong\Desktop\wangchong\crypto100\timian.txt")
    
    index='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    line=f.readline()
    while line:
        line2=base64.b64encode(base64.b64decode(line))
        line=line[0:len(line)-1]
        if(line[-1]==line[-2]=='='):
            x=line[-3]
            x1=line2[-3]
            res=str(bin((index.find(x))^(index.find(x1)))).replace('0b','00')[-4:]
            if(len(res)==3):
               res='0'+res
            print (str(res)),            
        elif(line[-1]=='=' and line[-2]!='='):
            x=line[-2]
            x1=line2[-2]
            print str(bin((index.find(x))^(index.find(x1)))).replace('0b','00')[-2:],
        line=f.readline()

    结果如下:



    将这些字符拼接到一起转字符串,得到:



  • 相关阅读:
    shell script 学习笔记-----标准输出
    《TCP/IP详解 卷一》读书笔记-----TCP persist &Keeplive timer
    《TCP/IP详解 卷一》读书笔记-----TCP超时重传
    《TCP/IP详解 卷一》读书笔记-----TCP数据流
    《TCP/IP详解 卷一》读书笔记-----TCP连接建立
    《TCP/IP详解 卷一》读书笔记-----DNS
    《TCP/IP详解 卷一》读书笔记-----广播&多播&IGMP
    《TCP/IP详解 卷一》读书笔记-----UDP&IP 分片
    《TCP/IP详解 卷一》读书笔记-----动态路由协议
    《TCP/IP 详解 卷一》读书笔记-----IP静态 路由
  • 原文地址:https://www.cnblogs.com/lightspeedsmallson/p/5173965.html
Copyright © 2020-2023  润新知