{"schema":"eggio.cn.bl021-state-before.v1","snippets":[{"id":10,"name":"管理员“上帝之手”平反引擎","active":1,"scope":"global","priority":10,"code_sha256":"19d1de676a18b24ddc27f60836efba77eff79bb60a7608dbbf87adfc253465d7","code_base64":"LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIEVnZ2lvIC0gQWRtaW4gUmVzdG9yZSBPdmVycmlkZSBmb3IgRmFsc2UgUG9zaXRpdmVzCiAqIExvZ2ljOgogKiBXaGVuIGFuIGFkbWluIHJlc3RvcmVzIGEgcHJvamVjdCBmcm9tIFRyYXNoIHRoYXQgd2FzIHByZXZpb3VzbHkgcmVqZWN0ZWQKICogYnkgQUkgcmV2aWV3IG9yIGR1cGxpY2F0ZSBkZXRlY3Rpb24sIHRoZSBzeXN0ZW0gcmVmdW5kcyB0aGUgVHJ1c3QgU2NvcmUKICogcGVuYWx0eSwgcmVjb3JkcyB0aGUgY29ycmVjdGlvbiwgYXNzaWducyBhIGRlZmF1bHQgcHJvamVjdCBzY29yZSwgYW5kCiAqIHJlcHVibGlzaGVzIHRoZSBwcm9qZWN0LgogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCmFkZF9hY3Rpb24oJ3VudHJhc2hlZF9wb3N0JywgJ2ppbmRhbl91bmRvX3BlbmFsdHlfb25fcmVzdG9yZScpOwpmdW5jdGlvbiBqaW5kYW5fdW5kb19wZW5hbHR5X29uX3Jlc3RvcmUoJHBvc3RfaWQpIHsKICAgIC8vIDEuIENoZWNrIHdoeSB0aGUgcHJvamVjdCB3YXMgbW92ZWQgdG8gVHJhc2guCiAgICAkYXVkaXRfc3RhdHVzID0gZ2V0X3Bvc3RfbWV0YSgkcG9zdF9pZCwgJ2FpX2F1ZGl0X3N0YXR1cycsIHRydWUpOwogICAgCiAgICAvLyBJZiBpdCB3YXMgcmVqZWN0ZWQgYnkgQUkgcmV2aWV3IG9yIGR1cGxpY2F0ZSBkZXRlY3Rpb24sIHRyaWdnZXIgYWRtaW4gY29ycmVjdGlvbi4KICAgIGlmICgkYXVkaXRfc3RhdHVzID09PSAncmVqZWN0ZWRfYnlfYWknIHx8ICRhdWRpdF9zdGF0dXMgPT09ICdyZWplY3RlZF9ieV9kdXBsaWNhdGUnKSB7CiAgICAgICAgCiAgICAgICAgJGF1dGhvcl9pZCA9IGdldF9wb3N0X2ZpZWxkKCdwb3N0X2F1dGhvcicsICRwb3N0X2lkKTsKICAgICAgICAkdXNlcl9jcmVkaXQgPSAoaW50KSBnZXRfdXNlcl9tZXRhKCRhdXRob3JfaWQsICdqaW5kYW5fY3JlZGl0X3Njb3JlJywgdHJ1ZSk7CiAgICAgICAgJGxvZyA9IGdldF91c2VyX21ldGEoJGF1dGhvcl9pZCwgJ2ppbmRhbl9jcmVkaXRfbG9nJywgdHJ1ZSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkbG9nKSkgJGxvZyA9IGFycmF5KCk7CgogICAgICAgIC8vIDIuIENhbGN1bGF0ZSByZWZ1bmQgcG9pbnRzIGJhc2VkIG9uIHJlamVjdGlvbiB0eXBlLgogICAgICAgIGlmICgkYXVkaXRfc3RhdHVzID09PSAncmVqZWN0ZWRfYnlfYWknKSB7CiAgICAgICAgICAgICRyZWZ1bmRfcG9pbnRzID0gMTU7CiAgICAgICAgICAgICRhY3Rpb25fdGV4dCA9ICfnrqHnkIblkZjlpI3moLjmkqTplIAgQUkg6amz5ZueJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVmdW5kX3BvaW50cyA9IDU7CiAgICAgICAgICAgICRhY3Rpb25fdGV4dCA9ICfnrqHnkIblkZjlpI3moLjmkqTplIDph43lpI3lhoXlrrnpqbPlm54nOwogICAgICAgIH0KCiAgICAgICAgLy8gMy4gUmVmdW5kIFRydXN0IFNjb3JlIHBvaW50cy4KICAgICAgICAkbmV3X2NyZWRpdCA9IG1pbigxMjAsICR1c2VyX2NyZWRpdCArICRyZWZ1bmRfcG9pbnRzKTsKICAgICAgICB1cGRhdGVfdXNlcl9tZXRhKCRhdXRob3JfaWQsICdqaW5kYW5fY3JlZGl0X3Njb3JlJywgJG5ld19jcmVkaXQpOwoKICAgICAgICAvLyA0LiBSZWNvcmQgdGhlIGNvcnJlY3Rpb24gaW4gVHJ1c3QgU2NvcmUgYWN0aXZpdHkuCiAgICAgICAgYXJyYXlfdW5zaGlmdCgkbG9nLCBhcnJheSgndGltZScgPT4gY3VycmVudF90aW1lKCdZLW0tZCBIOmknKSwgJ2FjdGlvbicgPT4gJGFjdGlvbl90ZXh0LCAnY2hhbmdlJyA9PiAnKycgLiAkcmVmdW5kX3BvaW50cykpOwogICAgICAgIHVwZGF0ZV91c2VyX21ldGEoJGF1dGhvcl9pZCwgJ2ppbmRhbl9jcmVkaXRfbG9nJywgYXJyYXlfc2xpY2UoJGxvZywgMCwgMjApKTsKCiAgICAgICAgLy8gNS4gTWFyayBhcyBhZG1pbi1yZXN0b3JlZCBhbmQgYXNzaWduIGEgZGVmYXVsdCBwcm9qZWN0IHNjb3JlLgogICAgICAgIHVwZGF0ZV9wb3N0X21ldGEoJHBvc3RfaWQsICdhaV9hdWRpdF9zdGF0dXMnLCAncmVzdG9yZWRfYnlfYWRtaW4nKTsKICAgICAgICB1cGRhdGVfcG9zdF9tZXRhKCRwb3N0X2lkLCAnamluZGFuX3Byb2plY3Rfc2NvcmUnLCA4MCk7IAogICAgICAgIAogICAgICAgIC8vIDYuIFJlcHVibGlzaCB0aGUgcHJvamVjdC4KICAgICAgICByZW1vdmVfYWN0aW9uKCd0cmFuc2l0aW9uX3Bvc3Rfc3RhdHVzJywgJ2ppbmRhbl9tYXJrX2Zvcl9haV9hdWRpdCcsIDEwKTsKICAgICAgICB3cF91cGRhdGVfcG9zdChhcnJheSgnSUQnID0+ICRwb3N0X2lkLCAncG9zdF9zdGF0dXMnID0+ICdwdWJsaXNoJykpOwogICAgICAgIGFkZF9hY3Rpb24oJ3RyYW5zaXRpb25fcG9zdF9zdGF0dXMnLCAnamluZGFuX21hcmtfZm9yX2FpX2F1ZGl0JywgMTAsIDMpOwogICAgfQp9"},{"id":28,"name":"已发布文章修改后自动重审","active":1,"scope":"global","priority":10,"code_sha256":"46a732997fc5af8d82a32f70ac532b3a30f65ee78a55a1f584b2b964226f9896","code_base64":"YWRkX2FjdGlvbigncG9zdF91cGRhdGVkJywgJ2ppbmRhbl9yZWF1ZGl0X3B1Ymxpc2hlZF9wb3N0X2FmdGVyX2VkaXQnLCAxMCwgMyk7CgpmdW5jdGlvbiBqaW5kYW5fcmVhdWRpdF9wdWJsaXNoZWRfcG9zdF9hZnRlcl9lZGl0KCRwb3N0X2lkLCAkcG9zdF9hZnRlciwgJHBvc3RfYmVmb3JlKSB7CiAgICAvLyAxLiDlj6rlpITnkIbmlofnq6AKICAgIGlmICghJHBvc3RfYWZ0ZXIgfHwgJHBvc3RfYWZ0ZXItPnBvc3RfdHlwZSAhPT0gJ3Bvc3QnKSByZXR1cm47CgogICAgLy8gMi4g6Ieq5Yqo5L+d5a2Y44CB5L+u6K6i54mI5pys44CB5ZCO5Y+w6K+v6Kem5Y+R6YO96Lez6L+HCiAgICBpZiAoZGVmaW5lZCgnRE9JTkdfQVVUT1NBVkUnKSAmJiBET0lOR19BVVRPU0FWRSkgcmV0dXJuOwogICAgaWYgKHdwX2lzX3Bvc3RfcmV2aXNpb24oJHBvc3RfaWQpKSByZXR1cm47CiAgICBpZiAod3BfaXNfcG9zdF9hdXRvc2F2ZSgkcG9zdF9pZCkpIHJldHVybjsKCiAgICAvLyAzLiDlj6rlpITnkIbigJzljp/mnKzlt7Llj5HluIPigJ3nmoTmlofnq6AKICAgIGlmICgkcG9zdF9iZWZvcmUtPnBvc3Rfc3RhdHVzICE9PSAncHVibGlzaCcpIHJldHVybjsKCiAgICAvLyA0LiDlpoLmnpznjrDlnKjkuI3mmK/lj5HluIPnirbmgIHvvIzkuZ/kuI3lpITnkIYKICAgIGlmICgkcG9zdF9hZnRlci0+cG9zdF9zdGF0dXMgIT09ICdwdWJsaXNoJykgcmV0dXJuOwoKICAgIC8vIDUuIOWPquWFgeiuuOS9nOiAheacrOS6uuS/ruaUueaXtuinpuWPke+8m+euoeeQhuWRmOaUueWGheWuueS4jeiHquWKqOaJk+WbngogICAgJGN1cnJlbnRfdXNlcl9pZCA9IGdldF9jdXJyZW50X3VzZXJfaWQoKTsKICAgIGlmICghJGN1cnJlbnRfdXNlcl9pZCkgcmV0dXJuOwogICAgaWYgKChpbnQpJGN1cnJlbnRfdXNlcl9pZCAhPT0gKGludCkkcG9zdF9hZnRlci0+cG9zdF9hdXRob3IpIHJldHVybjsKCiAgICAvLyA2LiDlpoLmnpzmoIfpopjlkozlhoXlrrnpg73msqHlj5jljJbvvIzlsLHkuI3op6blj5EKICAgICR0aXRsZV9jaGFuZ2VkID0gJHBvc3RfYmVmb3JlLT5wb3N0X3RpdGxlICE9PSAkcG9zdF9hZnRlci0+cG9zdF90aXRsZTsKICAgICRjb250ZW50X2NoYW5nZWQgPSAkcG9zdF9iZWZvcmUtPnBvc3RfY29udGVudCAhPT0gJHBvc3RfYWZ0ZXItPnBvc3RfY29udGVudDsKCiAgICBpZiAoISR0aXRsZV9jaGFuZ2VkICYmICEkY29udGVudF9jaGFuZ2VkKSByZXR1cm47CgogICAgLy8gNy4g6Ziy5q2i5q275b6q546vCiAgICByZW1vdmVfYWN0aW9uKCdwb3N0X3VwZGF0ZWQnLCAnamluZGFuX3JlYXVkaXRfcHVibGlzaGVkX3Bvc3RfYWZ0ZXJfZWRpdCcsIDEwKTsKCiAgICAvLyA4LiDmiZPlm57lvoXlrqHmoLjvvIzlubbph43mlrDmoIforrAgd2FpdGluZwogICAgdXBkYXRlX3Bvc3RfbWV0YSgkcG9zdF9pZCwgJ2FpX2F1ZGl0X3N0YXR1cycsICd3YWl0aW5nJyk7CiAgICB3cF91cGRhdGVfcG9zdChhcnJheSgKICAgICAgICAnSUQnID0+ICRwb3N0X2lkLAogICAgICAgICdwb3N0X3N0YXR1cycgPT4gJ3BlbmRpbmcnCiAgICApKTsKCiAgICAvLyA5LiDmgaLlpI3pkqnlrZAKICAgIGFkZF9hY3Rpb24oJ3Bvc3RfdXBkYXRlZCcsICdqaW5kYW5fcmVhdWRpdF9wdWJsaXNoZWRfcG9zdF9hZnRlcl9lZGl0JywgMTAsIDMpOwp9"},{"id":57,"name":"前台投稿管理—草稿流转修复 [CLONE]","active":1,"scope":"front-end","priority":10,"code_sha256":"6138150bbadc04137d465d7a2031a3442fd68ae8dd479a6a54ebc3d15adec12d","code_base64":"Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIDEuIOWFrOWFseaguOW/g+WkhOeQhuWZqO+8muWIhuexu+W8uuagoemqjCArIOi1hOa6kOW8uuagoemqjCArIOeKtuaAgea1gei9rOaeoue6vQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLyoqCiAqIOWkhOeQhumhueebruiNieeov+a1gei9rOeahOaguOW/g+mAu+i+kQogKiBAcGFyYW0gaW50ICRwb3N0X2lkIOaWh+eroElECiAqIEBwYXJhbSBzdHJpbmcgJHRhcmdldF9zdGF0dXMg55uu5qCH54q25oCBICgncGVuZGluZycgfCAncHVibGlzaCcpCiAqIEByZXR1cm4gYXJyYXkgWydzdWNjZXNzJyA9PiBib29sLCAndHlwZScgPT4gc3RyaW5nLCAnbXNnJyA9PiBzdHJpbmddCiAqLwpmdW5jdGlvbiBqaW5kYW5fcHJvY2Vzc19kcmFmdF9mbG93X2NvcmUoJHBvc3RfaWQsICR0YXJnZXRfc3RhdHVzKSB7CiAgICAvLyAxLiDmnYPpmZDlvLrmoKHpqowKICAgIGlmICgkdGFyZ2V0X3N0YXR1cyA9PT0gJ3B1Ymxpc2gnKSB7CiAgICAgICAgJHBvc3RfdHlwZV9vYmogPSBnZXRfcG9zdF90eXBlX29iamVjdCgncG9zdCcpOwogICAgICAgICRwdWJsaXNoX2NhcCAgID0gKCRwb3N0X3R5cGVfb2JqICYmICFlbXB0eSgkcG9zdF90eXBlX29iai0+Y2FwLT5wdWJsaXNoX3Bvc3RzKSkgPyAkcG9zdF90eXBlX29iai0+Y2FwLT5wdWJsaXNoX3Bvc3RzIDogJ3B1Ymxpc2hfcG9zdHMnOwogICAgICAgIGlmICghY3VycmVudF91c2VyX2NhbigkcHVibGlzaF9jYXApKSB7CiAgICAgICAgICAgIHJldHVybiBbJ3N1Y2Nlc3MnID0+IGZhbHNlLCAndHlwZScgPT4gJ3Blcm1pc3Npb24nLCAnbXNnJyA9PiAn5b2T5YmN6LSm5Y+35rKh5pyJ55u05o6l5Y+R5biD5p2D6ZmQ44CCJ107CiAgICAgICAgfQogICAgfQoKICAgIC8vIDIuIOWIhuexu+WPtuWtkOiKgueCueW8uuagoemqjAogICAgJGJsb2NrZWRfcGFyZW50cyA9IFtdOwogICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnamluZGFuX2NhdGVnb3J5X2J1aWxkX3RyZWVfZGF0YScpKSB7CiAgICAgICAgJGNhdGVnb3J5X2RhdGEgPSBqaW5kYW5fY2F0ZWdvcnlfYnVpbGRfdHJlZV9kYXRhKCk7CiAgICAgICAgaWYgKCFlbXB0eSgkY2F0ZWdvcnlfZGF0YVsnYmxvY2tlZF9wYXJlbnRzJ10pICYmIGlzX2FycmF5KCRjYXRlZ29yeV9kYXRhWydibG9ja2VkX3BhcmVudHMnXSkpIHsKICAgICAgICAgICAgJGJsb2NrZWRfcGFyZW50cyA9IGFycmF5X21hcCgnaW50dmFsJywgJGNhdGVnb3J5X2RhdGFbJ2Jsb2NrZWRfcGFyZW50cyddKTsKICAgICAgICB9CiAgICB9CgogICAgJGN1cnJlbnRfY2F0ZWdvcmllcyA9IHdwX2dldF9wb3N0X2NhdGVnb3JpZXMoJHBvc3RfaWQsIFsnZmllbGRzJyA9PiAnaWRzJ10pOwogICAgJGN1cnJlbnRfY2F0ZWdvcmllcyA9IGFycmF5X21hcCgnaW50dmFsJywgKGFycmF5KSAkY3VycmVudF9jYXRlZ29yaWVzKTsKICAgICRwbGFjZWhvbGRlcl9jYXRlZ29yeSA9IChpbnQpIGdldF9vcHRpb24oJ2RlZmF1bHRfY2F0ZWdvcnknKTsKCiAgICAkaW52YWxpZF9jYXRlZ29yaWVzID0gJGJsb2NrZWRfcGFyZW50czsKICAgIGlmICgkcGxhY2Vob2xkZXJfY2F0ZWdvcnkgPiAwKSB7CiAgICAgICAgJGludmFsaWRfY2F0ZWdvcmllc1tdID0gJHBsYWNlaG9sZGVyX2NhdGVnb3J5OwogICAgfQogICAgJGludmFsaWRfY2F0ZWdvcmllcyA9IGFycmF5X3ZhbHVlcyhhcnJheV91bmlxdWUoYXJyYXlfbWFwKCdpbnR2YWwnLCAkaW52YWxpZF9jYXRlZ29yaWVzKSkpOwoKICAgICRsZWFmX2NhdGVnb3JpZXMgPSBlbXB0eSgkaW52YWxpZF9jYXRlZ29yaWVzKQogICAgICAgID8gJGN1cnJlbnRfY2F0ZWdvcmllcwogICAgICAgIDogYXJyYXlfdmFsdWVzKGFycmF5X2RpZmYoJGN1cnJlbnRfY2F0ZWdvcmllcywgJGludmFsaWRfY2F0ZWdvcmllcykpOwoKICAgIGlmIChlbXB0eSgkbGVhZl9jYXRlZ29yaWVzKSkgewogICAgICAgIHJldHVybiBbJ3N1Y2Nlc3MnID0+IGZhbHNlLCAndHlwZScgPT4gJ2NhdGVnb3J5JywgJ21zZycgPT4gJ+atpOiNieeov+WwmuacqumAieaLqeWFt+S9k+WIhuexu++8jOivt+WFiOmAieaLqeacieaViOeahOWtkOWIhuexu+WGjeaPkOS6pOWuoeaguOaIluWPkeW4g+OAgiddOwogICAgfQoKICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgLy8gMy4g5LuY6LS56LWE5rqQ6Ziy56m65aOz5LiO56Gs5p2Q5paZ5by65qCh6aqMCiAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICRpc19wb3N0ID0gKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID09PSAnUE9TVCcpOwoKICAgICRnZXRfZnJlc2hfZGF0YSA9IGZ1bmN0aW9uKCRrZXkpIHVzZSAoJGlzX3Bvc3QsICRwb3N0X2lkKSB7CiAgICAgICAgaWYgKCRpc19wb3N0KSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJGtleV0pKSByZXR1cm4gd3BfdW5zbGFzaCgkX1BPU1RbJGtleV0pOwogICAgICAgICAgICBpZiAoaXNzZXQoJF9QT1NUWydfJyAuICRrZXldKSkgcmV0dXJuIHdwX3Vuc2xhc2goJF9QT1NUWydfJyAuICRrZXldKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsncG9zdF9tZXRhJ11bJGtleV0pKSByZXR1cm4gd3BfdW5zbGFzaCgkX1BPU1RbJ3Bvc3RfbWV0YSddWyRrZXldKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsncG9zdF9tZXRhJ11bJ18nIC4gJGtleV0pKSByZXR1cm4gd3BfdW5zbGFzaCgkX1BPU1RbJ3Bvc3RfbWV0YSddWydfJyAuICRrZXldKTsKICAgICAgICB9CiAgICAgICAgJHZhbCA9IGdldF9wb3N0X21ldGEoJHBvc3RfaWQsICRrZXksIHRydWUpOwogICAgICAgIGlmICgkdmFsICE9PSAnJyAmJiAkdmFsICE9PSBmYWxzZSkgcmV0dXJuICR2YWw7CiAgICAgICAgcmV0dXJuIGdldF9wb3N0X21ldGEoJHBvc3RfaWQsICdfJyAuICRrZXksIHRydWUpOwogICAgfTsKCiAgICAkY2FvX3ByaWNlICA9IChmbG9hdCkgJGdldF9mcmVzaF9kYXRhKCdjYW9fcHJpY2UnKTsKICAgICRjYW9fc3RhdHVzID0gJGdldF9mcmVzaF9kYXRhKCdjYW9fc3RhdHVzJyk7CiAgICAKICAgIC8vIOWinuW8uuWIpOaWre+8muWFvOWuueWQhOenjeW8gOWFs+WPr+iDveWPkemAgeeahCAnb24nLCAneWVzJywgJ3RydWUnLCAnMScKICAgICRzdGF0dXNfdmFsID0gc3RydG9sb3dlcih0cmltKChzdHJpbmcpJGNhb19zdGF0dXMpKTsKICAgICRpc19zdGF0dXNfb24gPSBpbl9hcnJheSgkc3RhdHVzX3ZhbCwgWycxJywgJ3RydWUnLCAnb24nLCAneWVzJ10sIHRydWUpOwogICAgCiAgICAvLyDlv4XpobvlkIzml7bmu6HotrPigJzlvIDlkK/ku5jotLnlvIDlhbPigJ3lkozigJzku7fmoLzlpKfkuo4w4oCdCiAgICAkaXNfcGFpZCA9ICgkY2FvX3ByaWNlID4gMCAmJiAkaXNfc3RhdHVzX29uKTsKCiAgICBpZiAoJGlzX3BhaWQpIHsKICAgICAgICAvLyAtLS0gMy4xIOi1hOa6kOmTvuaOpeW8uuagoemqjCAtLS0KICAgICAgICAkaGFzX3ZhbGlkX3Jlc291cmNlID0gZmFsc2U7CiAgICAgICAgJGRvd251cmxfZGF0YSA9ICRnZXRfZnJlc2hfZGF0YSgnY2FvX2Rvd251cmxfbmV3Jyk7CiAgICAgICAgaWYgKGlzX3N0cmluZygkZG93bnVybF9kYXRhKSAmJiBzdHJwb3ModHJpbSgkZG93bnVybF9kYXRhKSwgJ1snKSA9PT0gMCkgewogICAgICAgICAgICAkZG93bnVybF9kYXRhID0ganNvbl9kZWNvZGUoJGRvd251cmxfZGF0YSwgdHJ1ZSk7CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJGRvd251cmxfZGF0YSkgJiYgaXNfYXJyYXkoJGRvd251cmxfZGF0YSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGRvd251cmxfZGF0YSBhcyAkcmVzKSB7CiAgICAgICAgICAgICAgICAkcl9uYW1lID0gaXNzZXQoJHJlc1snbmFtZSddKSA/IHRyaW0oJHJlc1snbmFtZSddKSA6ICcnOwogICAgICAgICAgICAgICAgJHJfdXJsICA9IGlzc2V0KCRyZXNbJ3VybCddKSA/IHRyaW0oJHJlc1sndXJsJ10pIDogJyc7CiAgICAgICAgICAgICAgICBpZiAoJHJfbmFtZSAhPT0gJycgJiYgJHJfdXJsICE9PSAnJykgewogICAgICAgICAgICAgICAgICAgICRoYXNfdmFsaWRfcmVzb3VyY2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghJGhhc192YWxpZF9yZXNvdXJjZSkgewogICAgICAgICAgICByZXR1cm4gWydzdWNjZXNzJyA9PiBmYWxzZSwgJ3R5cGUnID0+ICdyZXNvdXJjZScsICdtc2cnID0+ICfku5jotLnpobnnm67lv4XpobvloavlhpnlrozmlbTotYTmupDkv6Hmga/vvIzljIXmi6zotYTmupDlkI3np7DlkozkuIvovb3lnLDlnYDjgIInXTsKICAgICAgICB9CgogICAgICAgIC8vIC0tLSAzLjIg6K+B5piO5p2Q5paZ5q2j5paH6Kej5p6Q56Gs5qCh6aqMIC0tLQogICAgICAgICRwb3N0X2NvbnRlbnQgPSAnJzsKICAgICAgICBpZiAoJGlzX3Bvc3QgJiYgaXNzZXQoJF9QT1NUWydwb3N0X2NvbnRlbnQnXSkpIHsKICAgICAgICAgICAgJHBvc3RfY29udGVudCA9IHdwX3Vuc2xhc2goJF9QT1NUWydwb3N0X2NvbnRlbnQnXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHBfb2JqID0gZ2V0X3Bvc3QoJHBvc3RfaWQpOwogICAgICAgICAgICAkcG9zdF9jb250ZW50ID0gJHBfb2JqID8gJHBfb2JqLT5wb3N0X2NvbnRlbnQgOiAnJzsKICAgICAgICB9CiAgICAgICAgJHBsYWluX2NvbnRlbnQgPSBzdHJpcF90YWdzKCRwb3N0X2NvbnRlbnQpOyAKCiAgICAgICAgcHJlZ19tYXRjaCgnLyg/OuOAkOi1hOa6kOeyvuehruS6pOS7mOa4heWNleOAkXzjgJBQcmVjaXNlIFJlc291cmNlIERlbGl2ZXJ5IExpc3TjgJF844CQUmVzb3VyY2UgRGVsaXZlcnkgTGlzdOOAkSkoLio/KSg/OuOAkOeOr+Wig+S4juWfuuehgOimgeaxguOAkXzjgJBFbnZpcm9ubWVudCAmIFJlcXVpcmVtZW50c+OAkXzjgJBSZXF1aXJlbWVudHPjgJEpL3MnLCAkcGxhaW5fY29udGVudCwgJG1fbGlzdCk7CiAgICAgICAgJHByb29mX2xpc3QgPSBpc3NldCgkbV9saXN0WzFdKSA/IHRyaW0oJG1fbGlzdFsxXSkgOiAnJzsKICAgICAgICAKICAgICAgICBwcmVnX21hdGNoKCcvKD8644CQ546v5aKD5LiO5Z+656GA6KaB5rGC44CRfOOAkEVudmlyb25tZW50ICYgUmVxdWlyZW1lbnRz44CRfOOAkFJlcXVpcmVtZW50c+OAkSkoLio/KSg/OuOAkOKaoO+4jyDllK7lkI7lhY3otKPlo7DmmI7jgJF844CQQWZ0ZXItU2FsZXMgRGlzY2xhaW1lcuOAkXzjgJBEaXNjbGFpbWVy44CRKS9zJywgJHBsYWluX2NvbnRlbnQsICRtX2Vudik7CiAgICAgICAgJHByb29mX2VudiA9IGlzc2V0KCRtX2VudlsxXSkgPyB0cmltKCRtX2VudlsxXSkgOiAnJzsKICAgICAgICAKICAgICAgICBwcmVnX21hdGNoKCcvKD8644CQ5ryU56S65LiO6aKE6KeI44CRXHMqKD865Zyw5Z2A77yaKT9844CQRGVtbyAmIFByZXZpZXfjgJFccyooPzpVUkw6fExpbms6fEFkZHJlc3M6KT9844CQRGVtbyBQcmV2aWV344CRXHMqKD86VVJMOnxMaW5rOnxBZGRyZXNzOik/KSguKj8pKD8644CQ6aOO6Zmp5o+Q6YaS44CRfOOAkFJpc2sgTm90aWNl44CRfOOAkFJpc2sgUmVtaW5kZXLjgJF8JCkvcycsICRwbGFpbl9jb250ZW50LCAkbV9kZW1vKTsKICAgICAgICAkcHJvb2ZfZGVtbyA9IGlzc2V0KCRtX2RlbW9bMV0pID8gdHJpbSgkbV9kZW1vWzFdKSA6ICcnOwoKICAgICAgICBpZiAobWJfc3RybGVuKCRwcm9vZl9saXN0KSA8IDEwIHx8ICFwcmVnX21hdGNoKCcvXGQvJywgJHByb29mX2xpc3QpKSB7CiAgICAgICAgICAgIHJldHVybiBbJ3N1Y2Nlc3MnID0+IGZhbHNlLCAndHlwZScgPT4gJ3Byb29mJywgJ21zZycgPT4gJ+ajgOa1i+WIsOS7mOi0uemhueebruOAguS4uuS/neaKpOi0reS5sOiAhe+8jOivt+aPkOS+m+WMheWQq+aYjuehruaVsOmHj+aIluadoeebruaVsOeahOi1hOa6kOS6pOS7mOa4heWNleOAgiddOwogICAgICAgIH0KICAgICAgICBpZiAobWJfc3RybGVuKCRwcm9vZl9lbnYpIDwgNSkgewogICAgICAgICAgICByZXR1cm4gWydzdWNjZXNzJyA9PiBmYWxzZSwgJ3R5cGUnID0+ICdwcm9vZicsICdtc2cnID0+ICfmo4DmtYvliLDku5jotLnpobnnm67jgILor7fmuIXmpZror7TmmI7miYDpnIDnjq/looPjgIHlt6XlhbfjgIHotKblj7fmnaHku7bmiJblhbbku5bliY3nva7opoHmsYLjgIInXTsKICAgICAgICB9CiAgICAgICAgaWYgKG1iX3N0cmxlbigkcHJvb2ZfZGVtbykgPCA1KSB7CiAgICAgICAgICAgIHJldHVybiBbJ3N1Y2Nlc3MnID0+IGZhbHNlLCAndHlwZScgPT4gJ3Byb29mJywgJ21zZycgPT4gJ+ajgOa1i+WIsOS7mOi0uemhueebruOAguivt+aPkOS+m+a8lOekuuOAgemihOiniOmTvuaOpeOAgeaIquWbvumTvuaOpeaIluWFtuS7luWPr+W4ruWKqei0reS5sOiAheWIpOaWreS6pOS7mOWGheWuueeahOivgeaYjuOAgiddOwogICAgICAgIH0KICAgIH0KCiAgICAvLyA0LiDlvLrooYzop6blj5HnirbmgIHmm7TmlrDokL3lupMKICAgIHJlbW92ZV9hY3Rpb24oJ3NhdmVfcG9zdF9wb3N0JywgJ2ppbmRhbl9iYWNrZW5kX3NhdmVfcG9zdF9oYW5kbGVyJywgOTkpOwogICAgJHJlc3VsdCA9IHdwX3VwZGF0ZV9wb3N0KFsnSUQnID0+ICRwb3N0X2lkLCAncG9zdF9zdGF0dXMnID0+ICR0YXJnZXRfc3RhdHVzXSwgdHJ1ZSk7CiAgICBhZGRfYWN0aW9uKCdzYXZlX3Bvc3RfcG9zdCcsICdqaW5kYW5fYmFja2VuZF9zYXZlX3Bvc3RfaGFuZGxlcicsIDk5LCAzKTsKCiAgICBpZiAoaXNfd3BfZXJyb3IoJHJlc3VsdCkpIHsKICAgICAgICByZXR1cm4gWydzdWNjZXNzJyA9PiBmYWxzZSwgJ3R5cGUnID0+ICdzeXN0ZW0nLCAnbXNnJyA9PiAn54q25oCB5pu05paw5aSx6LSl77yaJyAuIGVzY19odG1sKCRyZXN1bHQtPmdldF9lcnJvcl9tZXNzYWdlKCkpXTsKICAgIH0KCiAgICBpZiAoZ2V0X3Bvc3Rfc3RhdHVzKCRwb3N0X2lkKSAhPT0gJHRhcmdldF9zdGF0dXMpIHsKICAgICAgICByZXR1cm4gWydzdWNjZXNzJyA9PiBmYWxzZSwgJ3R5cGUnID0+ICdzeXN0ZW0nLCAnbXNnJyA9PiAn57O757uf6ZSZ6K+v77ya6aG555uu54q25oCB5pyq6IO95L+d5a2Y77yM6K+36YeN6K+V44CCJ107CiAgICB9CgogICAgcmV0dXJuIFsnc3VjY2VzcycgPT4gdHJ1ZV07Cn0KCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyAyLiBHRVQg5rWB6L2s5YWl5Y+jCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQphZGRfYWN0aW9uKCd0ZW1wbGF0ZV9yZWRpcmVjdCcsIGZ1bmN0aW9uICgpIHsKICAgIGlmIChpc19hZG1pbigpIHx8IGVtcHR5KCRfR0VUWydqaW5kYW5fZHJhZnRfYWN0aW9uJ10pKSByZXR1cm47CiAgICBpZiAoIWlzX3VzZXJfbG9nZ2VkX2luKCkpIHsgd3Bfc2FmZV9yZWRpcmVjdChob21lX3VybCgnLycpKTsgZXhpdDsgfQoKICAgICRwb3N0X2lkID0gaXNzZXQoJF9HRVRbJ3Bvc3RfaWQnXSkgPyBhYnNpbnQoJF9HRVRbJ3Bvc3RfaWQnXSkgOiAwOwogICAgJHRhcmdldCAgPSBpc3NldCgkX0dFVFsndGFyZ2V0X3N0YXR1cyddKSA/IHNhbml0aXplX2tleSgkX0dFVFsndGFyZ2V0X3N0YXR1cyddKSA6ICcnOwogICAgJG5vbmNlICAgPSBpc3NldCgkX0dFVFsnX3dwbm9uY2UnXSkgPyBzYW5pdGl6ZV90ZXh0X2ZpZWxkKHdwX3Vuc2xhc2goJF9HRVRbJ193cG5vbmNlJ10pKSA6ICcnOwoKICAgIGlmICghJHBvc3RfaWQgfHwgIWluX2FycmF5KCR0YXJnZXQsIFsncGVuZGluZycsICdwdWJsaXNoJ10sIHRydWUpKSB7IHdwX3NhZmVfcmVkaXJlY3QoaG9tZV91cmwoJy8nKSk7IGV4aXQ7IH0KICAgIGlmICghd3BfdmVyaWZ5X25vbmNlKCRub25jZSwgJ2ppbmRhbl9kcmFmdF9hY3Rpb25fJyAuICRwb3N0X2lkIC4gJ18nIC4gJHRhcmdldCkpIHsKICAgICAgICB3cF9kaWUoJ+ivt+axguW3sui/h+acn++8jOivt+i/lOWbnuWQjumHjeivleOAgicpOwogICAgfQoKICAgICRwb3N0ID0gZ2V0X3Bvc3QoJHBvc3RfaWQpOwogICAgaWYgKCEkcG9zdCB8fCAkcG9zdC0+cG9zdF90eXBlICE9PSAncG9zdCcpIHsgd3Bfc2FmZV9yZWRpcmVjdChob21lX3VybCgnLycpKTsgZXhpdDsgfQoKICAgICR1c2VyX2lkICAgPSBnZXRfY3VycmVudF91c2VyX2lkKCk7CiAgICAkaXNfYXV0aG9yID0gKChpbnQpICRwb3N0LT5wb3N0X2F1dGhvciA9PT0gKGludCkgJHVzZXJfaWQpOwogICAgJGNhbl9lZGl0ICA9IGN1cnJlbnRfdXNlcl9jYW4oJ2VkaXRfcG9zdCcsICRwb3N0X2lkKTsKICAgIGlmICghJGlzX2F1dGhvciAmJiAhJGNhbl9lZGl0KSB3cF9kaWUoJ+S9oOayoeacieeuoeeQhuatpOmhueebrueahOadg+mZkOOAgicpOwoKICAgIGlmICgkcG9zdC0+cG9zdF9zdGF0dXMgIT09ICdkcmFmdCcpIHsgd3Bfc2FmZV9yZWRpcmVjdChob21lX3VybCgnLycpKTsgZXhpdDsgfQoKICAgICRyZXN1bHQgPSBqaW5kYW5fcHJvY2Vzc19kcmFmdF9mbG93X2NvcmUoJHBvc3RfaWQsICR0YXJnZXQpOwoKICAgIGlmICghJHJlc3VsdFsnc3VjY2VzcyddKSB7CiAgICAgICAgJHJlZGlyZWN0X3RvID0gIWVtcHR5KCRfR0VUWydyZWRpcmVjdF90byddKSA/IHdwX3Vuc2xhc2goJF9HRVRbJ3JlZGlyZWN0X3RvJ10pIDogaG9tZV91cmwoJy91c2VyL3RvdWdhbz9hY3Rpb249ZHJhZnQnKTsKICAgICAgICAkcmVkaXJlY3RfdG8gPSBhZGRfcXVlcnlfYXJnKFsnamluZGFuX25vdGljZScgPT4gJ2RyYWZ0X2Zsb3dfZXJyb3InLCAnamluZGFuX21zZycgPT4gJHJlc3VsdFsnbXNnJ11dLCAkcmVkaXJlY3RfdG8pOwogICAgICAgIHdwX3NhZmVfcmVkaXJlY3QoJHJlZGlyZWN0X3RvKTsKICAgICAgICBleGl0OwogICAgfQoKICAgICRmaW5hbF9yZWRpcmVjdCA9ICgkdGFyZ2V0ID09PSAncGVuZGluZycpID8gaG9tZV91cmwoJy91c2VyL3RvdWdhbz9hY3Rpb249cGVuZGluZycpIDogaG9tZV91cmwoJy91c2VyL3RvdWdhbz9hY3Rpb249cHVibGlzaCcpOwogICAgJGZpbmFsX3JlZGlyZWN0ID0gYWRkX3F1ZXJ5X2FyZyhbJ2ppbmRhbl9hY3Rpb25fZG9uZScgPT4gJHRhcmdldCA9PT0gJ3B1Ymxpc2gnID8gJ3B1Ymxpc2hlZCcgOiAnc3VibWl0dGVkJywgJ2ppbmRhbl9wb3N0X2lkJyA9PiAkcG9zdF9pZF0sICRmaW5hbF9yZWRpcmVjdCk7CiAgICB3cF9zYWZlX3JlZGlyZWN0KCRmaW5hbF9yZWRpcmVjdCk7CiAgICBleGl0Owp9LCAxKTsKCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQovLyAzLiBQT1NUIOa1gei9rOWFpeWPowovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KZnVuY3Rpb24gamluZGFuX2JhY2tlbmRfc2F2ZV9wb3N0X2hhbmRsZXIoJHBvc3RfaWQsICRwb3N0LCAkdXBkYXRlKSB7CiAgICBpZiAoZGVmaW5lZCgnRE9JTkdfQVVUT1NBVkUnKSAmJiBET0lOR19BVVRPU0FWRSkgcmV0dXJuOwogICAgaWYgKHdwX2lzX3Bvc3RfcmV2aXNpb24oJHBvc3RfaWQpKSByZXR1cm47CgogICAgc3RhdGljICRpc19wcm9jZXNzaW5nID0gZmFsc2U7CiAgICBpZiAoJGlzX3Byb2Nlc3NpbmcpIHJldHVybjsKCiAgICAkdXNlcl9pZCAgID0gZ2V0X2N1cnJlbnRfdXNlcl9pZCgpOwogICAgJGlzX2F1dGhvciA9ICgoaW50KSAkcG9zdC0+cG9zdF9hdXRob3IgPT09IChpbnQpICR1c2VyX2lkKTsKICAgICRjYW5fZWRpdCAgPSBjdXJyZW50X3VzZXJfY2FuKCdlZGl0X3Bvc3QnLCAkcG9zdF9pZCk7CiAgICBpZiAoISRpc19hdXRob3IgJiYgISRjYW5fZWRpdCkgcmV0dXJuOwoKICAgICRpc19jdXN0b21fZmxvdyA9ICFlbXB0eSgkX1BPU1RbJ2ppbmRhbl9iYWNrZW5kX3N1Ym1pdF90YXJnZXQnXSk7CiAgICAkdGFyZ2V0ID0gJyc7CgogICAgaWYgKCRpc19jdXN0b21fZmxvdykgewogICAgICAgICR0YXJnZXQgPSBzYW5pdGl6ZV9rZXkod3BfdW5zbGFzaCgkX1BPU1RbJ2ppbmRhbl9iYWNrZW5kX3N1Ym1pdF90YXJnZXQnXSkpOwogICAgICAgIGlmICghaW5fYXJyYXkoJHRhcmdldCwgWydwZW5kaW5nJywgJ3B1Ymxpc2gnXSwgdHJ1ZSkpIHJldHVybjsKICAgICAgICBpZiAoJHBvc3QtPnBvc3Rfc3RhdHVzICE9PSAnZHJhZnQnKSB7CiAgICAgICAgICAgICRyZWZlcmVyID0gd3BfZ2V0X3JlZmVyZXIoKSA/OiBob21lX3VybCgnL3VzZXIvdG91Z2FvJyk7CiAgICAgICAgICAgIHdwX3NhZmVfcmVkaXJlY3QoYWRkX3F1ZXJ5X2FyZyhbJ2ppbmRhbl9ub3RpY2UnID0+ICdkcmFmdF9mbG93X2Vycm9yJywgJ2ppbmRhbl9tc2cnID0+ICdUaGlzIGFjdGlvbiBjYW4gb25seSBiZSBwZXJmb3JtZWQgb24gZHJhZnRzLiddLCAkcmVmZXJlcikpOwogICAgICAgICAgICBleGl0OwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgJHRhcmdldCA9IGlzc2V0KCRfUE9TVFsncG9zdF9zdGF0dXMnXSkgPyBzYW5pdGl6ZV9rZXkoJF9QT1NUWydwb3N0X3N0YXR1cyddKSA6ICRwb3N0LT5wb3N0X3N0YXR1czsKICAgICAgICBpZiAoIWluX2FycmF5KCR0YXJnZXQsIFsncGVuZGluZycsICdwdWJsaXNoJ10sIHRydWUpKSByZXR1cm47CiAgICB9CgogICAgJGlzX3Byb2Nlc3NpbmcgPSB0cnVlOyAKICAgICRyZXN1bHQgPSBqaW5kYW5fcHJvY2Vzc19kcmFmdF9mbG93X2NvcmUoJHBvc3RfaWQsICR0YXJnZXQpOwoKICAgIGlmICghJHJlc3VsdFsnc3VjY2VzcyddKSB7CiAgICAgICAgLy8g5oum5oiq5aSx6LSl5by66KGM5omT5Zue6I2J56i/CiAgICAgICAgcmVtb3ZlX2FjdGlvbignc2F2ZV9wb3N0X3Bvc3QnLCAnamluZGFuX2JhY2tlbmRfc2F2ZV9wb3N0X2hhbmRsZXInLCA5OSk7CiAgICAgICAgd3BfdXBkYXRlX3Bvc3QoWydJRCcgPT4gJHBvc3RfaWQsICdwb3N0X3N0YXR1cycgPT4gJ2RyYWZ0J10pOwogICAgICAgIGFkZF9hY3Rpb24oJ3NhdmVfcG9zdF9wb3N0JywgJ2ppbmRhbl9iYWNrZW5kX3NhdmVfcG9zdF9oYW5kbGVyJywgOTksIDMpOwoKICAgICAgICAkcmVmZXJlciA9IHdwX2dldF9yZWZlcmVyKCkgPzogaG9tZV91cmwoJy91c2VyL3RvdWdhbycpOwogICAgICAgICRyZWRpcmVjdF90byA9IGFkZF9xdWVyeV9hcmcoWydqaW5kYW5fbm90aWNlJyA9PiAnZHJhZnRfZmxvd19lcnJvcicsICdqaW5kYW5fbXNnJyA9PiAkcmVzdWx0Wydtc2cnXV0sICRyZWZlcmVyKTsKICAgICAgICB3cF9zYWZlX3JlZGlyZWN0KCRyZWRpcmVjdF90byk7CiAgICAgICAgZXhpdDsgCiAgICB9CgogICAgaWYgKCRpc19jdXN0b21fZmxvdykgewogICAgICAgICRsaXN0X3VybCA9IGhvbWVfdXJsKCcvdXNlci90b3VnYW8/YWN0aW9uPScgLiAkdGFyZ2V0KTsKICAgICAgICAkcmVkaXJlY3RfdG8gPSBhZGRfcXVlcnlfYXJnKFsnamluZGFuX2FjdGlvbl9kb25lJyA9PiAkdGFyZ2V0ID09PSAncHVibGlzaCcgPyAncHVibGlzaGVkJyA6ICdzdWJtaXR0ZWQnLCAnamluZGFuX3Bvc3RfaWQnID0+ICRwb3N0X2lkXSwgJGxpc3RfdXJsKTsKICAgICAgICB3cF9zYWZlX3JlZGlyZWN0KCRyZWRpcmVjdF90byk7CiAgICAgICAgZXhpdDsKICAgIH0gZWxzZSB7CiAgICAgICAgJGlzX3Byb2Nlc3NpbmcgPSBmYWxzZTsKICAgICAgICByZXR1cm47CiAgICB9Cn0KYWRkX2FjdGlvbignc2F2ZV9wb3N0X3Bvc3QnLCAnamluZGFuX2JhY2tlbmRfc2F2ZV9wb3N0X2hhbmRsZXInLCA5OSwgMyk7CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8gNC4g5YmN56uv6YC76L6R5rOo5YWlCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQphZGRfYWN0aW9uKCd3cF9mb290ZXInLCBmdW5jdGlvbiAoKSB7CiAgICBpZiAoaXNfYWRtaW4oKSB8fCAhaXNfdXNlcl9sb2dnZWRfaW4oKSkgcmV0dXJuOwogICAgJHVzZXJfaWQgPSBnZXRfY3VycmVudF91c2VyX2lkKCk7CiAgICBpZiAoISR1c2VyX2lkKSByZXR1cm47CgogICAgJGRyYWZ0X3Bvc3RzID0gZ2V0X3Bvc3RzKFsncG9zdF90eXBlJyA9PiAncG9zdCcsICdwb3N0X3N0YXR1cycgPT4gWydkcmFmdCddLCAnYXV0aG9yJyA9PiAkdXNlcl9pZCwgJ3Bvc3RzX3Blcl9wYWdlJyA9PiAtMSwgJ29yZGVyYnknID0+ICdkYXRlJywgJ29yZGVyJyA9PiAnREVTQyddKTsKICAgICRwb3N0X3R5cGVfb2JqID0gZ2V0X3Bvc3RfdHlwZV9vYmplY3QoJ3Bvc3QnKTsKICAgICRwdWJsaXNoX2NhcCAgID0gKCRwb3N0X3R5cGVfb2JqICYmICFlbXB0eSgkcG9zdF90eXBlX29iai0+Y2FwLT5wdWJsaXNoX3Bvc3RzKSkgPyAkcG9zdF90eXBlX29iai0+Y2FwLT5wdWJsaXNoX3Bvc3RzIDogJ3B1Ymxpc2hfcG9zdHMnOwogICAgJGNhbl9wdWJsaXNoID0gY3VycmVudF91c2VyX2NhbigkcHVibGlzaF9jYXApOwoKICAgICRkcmFmdF9tYXAgPSBbXTsKICAgIGZvcmVhY2ggKCRkcmFmdF9wb3N0cyBhcyAkcG9zdCkgewogICAgICAgICRkcmFmdF9tYXBbKHN0cmluZykgJHBvc3QtPklEXSA9IFsKICAgICAgICAgICAgJ3N1Ym1pdF9ub25jZScgID0+IHdwX2NyZWF0ZV9ub25jZSgnamluZGFuX2RyYWZ0X2FjdGlvbl8nIC4gJHBvc3QtPklEIC4gJ19wZW5kaW5nJyksCiAgICAgICAgICAgICdwdWJsaXNoX25vbmNlJyA9PiAkY2FuX3B1Ymxpc2ggPyB3cF9jcmVhdGVfbm9uY2UoJ2ppbmRhbl9kcmFmdF9hY3Rpb25fJyAuICRwb3N0LT5JRCAuICdfcHVibGlzaCcpIDogJycsCiAgICAgICAgICAgICdjYW5fcHVibGlzaCcgICA9PiAkY2FuX3B1Ymxpc2gsCiAgICAgICAgXTsKICAgIH0KICAgID8+CiAgICA8c3R5bGUgaWQ9ImppbmRhbi1kcmFmdC1mbG93LXN0eWxlIj4KICAgICAgICAuamluZGFuLWRyYWZ0LWZsb3ctd3JhcHsgZGlzcGxheTppbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6Y2VudGVyOyBnYXA6OHB4OyBtYXJnaW4tbGVmdDoxMHB4OyBmbGV4LXdyYXA6d3JhcDsgfQogICAgICAgIC5qaW5kYW4tZHJhZnQtZmxvdy1idG57IGRpc3BsYXk6aW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsganVzdGlmeS1jb250ZW50OmNlbnRlcjsgaGVpZ2h0OjMwcHg7IHBhZGRpbmc6MCAxMnB4OyBib3JkZXItcmFkaXVzOjk5OXB4OyBmb250LXNpemU6MTNweDsgZm9udC13ZWlnaHQ6NjAwOyB0ZXh0LWRlY29yYXRpb246bm9uZSAhaW1wb3J0YW50OyBjdXJzb3I6cG9pbnRlcjsgYm9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDsgdHJhbnNpdGlvbjphbGwgLjJzIGVhc2U7IH0KICAgICAgICAuamluZGFuLWRyYWZ0LWZsb3ctYnRuLmlzLXN1Ym1pdHsgYmFja2dyb3VuZDojZjhmYWZjOyBib3JkZXItY29sb3I6I2QxZDVkYjsgY29sb3I6IzM3NDE1MSAhaW1wb3J0YW50OyB9CiAgICAgICAgLmppbmRhbi1kcmFmdC1mbG93LWJ0bi5pcy1zdWJtaXQ6aG92ZXJ7IGJhY2tncm91bmQ6I2YxZjVmOTsgY29sb3I6IzExMTgyNyAhaW1wb3J0YW50OyB9CiAgICAgICAgLmppbmRhbi1kcmFmdC1mbG93LWJ0bi5pcy1wdWJsaXNoeyBiYWNrZ3JvdW5kOiMxMTE4Mjc7IGJvcmRlci1jb2xvcjojMTExODI3OyBjb2xvcjojZmZmICFpbXBvcnRhbnQ7IH0KICAgICAgICAuamluZGFuLWRyYWZ0LWZsb3ctYnRuLmlzLXB1Ymxpc2g6aG92ZXJ7IG9wYWNpdHk6LjkyOyBjb2xvcjojZmZmICFpbXBvcnRhbnQ7IH0KICAgICAgICAuamluZGFuLWVkaXQtZHJhZnQtYWN0aW9uc3sgZGlzcGxheTpmbGV4OyBmbGV4LWRpcmVjdGlvbjpjb2x1bW47IGdhcDoxMHB4OyBtYXJnaW4tdG9wOjEycHg7IH0KICAgICAgICAuamluZGFuLWVkaXQtZHJhZnQtYWN0aW9ucyAuamluZGFuLWRyYWZ0LWZsb3ctYnRueyB3aWR0aDoxMDAlOyBoZWlnaHQ6NDJweDsgYm9yZGVyLXJhZGl1czo2cHg7IGZvbnQtc2l6ZToxNXB4OyBtYXJnaW4tbGVmdDowOyB9CiAgICAgICAgLmppbmRhbi1wcmV2aWV3LWRyYWZ0LWJhcnsgcG9zaXRpb246c3RpY2t5OyB0b3A6MTJweDsgei1pbmRleDo5OTk5OyB3aWR0aDptaW4oMTE4MHB4LCBjYWxjKDEwMHZ3IC0gNDBweCkpOyBtYXJnaW46MTZweCBhdXRvIDE4cHg7IHBhZGRpbmc6MTJweCAxNHB4OyBiYWNrZ3JvdW5kOiNmZmZmZmY7IGJvcmRlcjoxcHggc29saWQgI2U1ZTdlYjsgYm9yZGVyLXJhZGl1czoxMnB4OyBib3gtc2hhZG93OjAgOHB4IDI0cHggcmdiYSgwLDAsMCwuMDYpOyBkaXNwbGF5OmZsZXg7IGFsaWduLWl0ZW1zOmNlbnRlcjsgZ2FwOjEycHg7IGZsZXgtd3JhcDp3cmFwOyB9CiAgICAgICAgLmppbmRhbi1wcmV2aWV3LWRyYWZ0LW5vdGV7IGZvbnQtc2l6ZToxNHB4OyBjb2xvcjojMzc0MTUxOyBmb250LXdlaWdodDo2MDA7IG1hcmdpbi1yaWdodDo2cHg7IH0KICAgICAgICAuamluZGFuLXByZXZpZXctZHJhZnQtYmFyIC5qaW5kYW4tZHJhZnQtZmxvdy1idG57IGhlaWdodDo0MHB4OyBwYWRkaW5nOjAgMTZweDsgYm9yZGVyLXJhZGl1czo4cHg7IGZvbnQtc2l6ZToxNHB4OyB9CiAgICAgICAgLmppbmRhbi1tYW5hZ2UtZmlsdGVyLXNhZmV7IHBvc2l0aW9uOnJlbGF0aXZlICFpbXBvcnRhbnQ7IHotaW5kZXg6OTk5OSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kOiNmZmYgIWltcG9ydGFudDsgfQogICAgICAgIC5qaW5kYW4tbWFuYWdlLWZpbHRlci1zYWZlICp7IHBvc2l0aW9uOnJlbGF0aXZlOyB6LWluZGV4OjEwMDAwICFpbXBvcnRhbnQ7IH0KICAgICAgICBAbWVkaWEgKG1heC13aWR0aDogNzY4cHgpeyAuamluZGFuLXByZXZpZXctZHJhZnQtYmFyeyB3aWR0aDpjYWxjKDEwMHZ3IC0gMjRweCk7IG1hcmdpbjoxMnB4IGF1dG8gMTZweDsgcGFkZGluZzoxMnB4OyB9IC5qaW5kYW4tcHJldmlldy1kcmFmdC1ub3RleyB3aWR0aDoxMDAlOyBtYXJnaW4tcmlnaHQ6MDsgfSB9CiAgICA8L3N0eWxlPgogICAgPHNjcmlwdCBpZD0iamluZGFuLWRyYWZ0LWZsb3ctc2NyaXB0Ij4KICAgIChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIGRyYWZ0TWFwID0gPD9waHAgZWNobyB3cF9qc29uX2VuY29kZSgkZHJhZnRfbWFwLCBKU09OX1VORVNDQVBFRF9VTklDT0RFIHwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyk7ID8+OwogICAgICAgIHZhciBhY3Rpb25CYXNlID0gPD9waHAgZWNobyB3cF9qc29uX2VuY29kZShob21lX3VybCgnLycpKTsgPz47CiAgICAgICAgZnVuY3Rpb24gbm9ybShzdHIpIHsgcmV0dXJuIChzdHIgfHwgJycpLnJlcGxhY2UoL1xzKy9nLCAnICcpLnRyaW0oKTsgfQogICAgICAgIGZ1bmN0aW9uIGdldFVybFBhcmFtKG5hbWUpIHsgdHJ5IHsgcmV0dXJuIG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLnNlYXJjaFBhcmFtcy5nZXQobmFtZSkgfHwgJyc7IH0gY2F0Y2ggKGUpIHsgcmV0dXJuICcnOyB9IH0KCiAgICAgICAgZnVuY3Rpb24gaXNNYW5hZ2VQYWdlKCkgewogICAgICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmJvZHkgPyAoZG9jdW1lbnQuYm9keS5pbm5lclRleHQgfHwgJycpIDogJyc7CiAgICAgICAgICAgIHJldHVybiB0ZXh0LmluZGV4T2YoJ+aKleeov+euoeeQhicpID4gLTEgfHwgdGV4dC5pbmRleE9mKCdTdWJtaXNzaW9uIE1hbmFnZW1lbnQnKSA+IC0xIHx8IHRleHQuaW5kZXhPZignTXkgU3VibWlzc2lvbnMnKSA+IC0xIHx8IGxvY2F0aW9uLnBhdGhuYW1lLmluZGV4T2YoJy91c2VyL3RvdWdhbycpID4gLTE7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpc0VkaXRQYWdlKCkgewogICAgICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmJvZHkgPyAoZG9jdW1lbnQuYm9keS5pbm5lclRleHQgfHwgJycpIDogJyc7CiAgICAgICAgICAgIHJldHVybiB0ZXh0LmluZGV4T2YoJ+WPkeW4g+aWh+eroCcpID4gLTEgfHwgdGV4dC5pbmRleE9mKCfnvJbovpHmlofnq6AnKSA+IC0xIHx8IHRleHQuaW5kZXhPZignU3VibWl0IFByb2plY3QnKSA+IC0xIHx8IHRleHQuaW5kZXhPZignRWRpdCBQcm9qZWN0JykgPiAtMSB8fCB0ZXh0LmluZGV4T2YoJ1B1Ymxpc2ggUHJvamVjdCcpID4gLTE7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpc1ByZXZpZXdQYWdlKCkgeyByZXR1cm4gZ2V0VXJsUGFyYW0oJ3ByZXZpZXcnKSA9PT0gJ3RydWUnOyB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gZ2V0UG9zdElkRnJvbUhyZWYoaHJlZikgewogICAgICAgICAgICBpZiAoIWhyZWYpIHJldHVybiAnJzsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciB1cmwgPSBuZXcgVVJMKGhyZWYsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pOwogICAgICAgICAgICAgICAgdmFyIGtleXMgPSBbJ3AnLCAncG9zdF9pZCcsICdwaWQnLCAnaWQnXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSB1cmwuc2VhcmNoUGFyYW1zLmdldChrZXlzW2ldKTsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsICYmIC9eXGQrJC8udGVzdCh2YWwpKSByZXR1cm4gdmFsOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgICAgICB2YXIgbSA9IGhyZWYubWF0Y2goL1s/Jl0oPzpwfHBvc3RfaWR8cGlkfGlkKT0oXGQrKS9pKTsKICAgICAgICAgICAgcmV0dXJuIG0gPyBtWzFdIDogJyc7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBnZXRDdXJyZW50UGFnZVBvc3RJZCgpIHsKICAgICAgICAgICAgdmFyIHByZXZpZXdJZCA9IGdldFVybFBhcmFtKCdwcmV2aWV3X2lkJyk7IGlmIChwcmV2aWV3SWQgJiYgZHJhZnRNYXBbcHJldmlld0lkXSkgcmV0dXJuIHByZXZpZXdJZDsKICAgICAgICAgICAgdmFyIHAgPSBnZXRVcmxQYXJhbSgncCcpOyBpZiAocCAmJiBkcmFmdE1hcFtwXSkgcmV0dXJuIHA7CiAgICAgICAgICAgIHZhciBzZWxlY3RvcnMgPSBbJ2lucHV0W25hbWU9InBvc3RfaWQiXScsICdpbnB1dFtuYW1lPSJwb3N0aWQiXScsICdpbnB1dFtuYW1lPSJpZCJdJywgJ2lucHV0W25hbWU9InBvc3RfSUQiXScsICdpbnB1dFtuYW1lPSJwb3N0W0lEXSJdJ107CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0b3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yc1tpXSk7CiAgICAgICAgICAgICAgICBpZiAoZWwgJiYgL15cZCskLy50ZXN0KGVsLnZhbHVlIHx8ICcnKSkgcmV0dXJuIFN0cmluZyhlbC52YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZ2V0TWFuYWdlUmVkaXJlY3RVcmwodGFyZ2V0U3RhdHVzKSB7CiAgICAgICAgICAgIHZhciBiYXNlID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArICcvdXNlci90b3VnYW8nOwogICAgICAgICAgICByZXR1cm4gdGFyZ2V0U3RhdHVzID09PSAncGVuZGluZycgPyBiYXNlICsgJz9hY3Rpb249cGVuZGluZycgOiBiYXNlICsgJz9hY3Rpb249cHVibGlzaCc7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBidWlsZEFjdGlvblVybChwb3N0SWQsIHRhcmdldFN0YXR1cywgbm9uY2UpIHsKICAgICAgICAgICAgdmFyIHVybCA9IG5ldyBVUkwoYWN0aW9uQmFzZSwgd2luZG93LmxvY2F0aW9uLm9yaWdpbik7CiAgICAgICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdqaW5kYW5fZHJhZnRfYWN0aW9uJywgJzEnKTsgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3Bvc3RfaWQnLCBwb3N0SWQpOwogICAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndGFyZ2V0X3N0YXR1cycsIHRhcmdldFN0YXR1cyk7IHVybC5zZWFyY2hQYXJhbXMuc2V0KCdfd3Bub25jZScsIG5vbmNlKTsKICAgICAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlZGlyZWN0X3RvJywgZ2V0TWFuYWdlUmVkaXJlY3RVcmwodGFyZ2V0U3RhdHVzKSk7CiAgICAgICAgICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIG1ha2VCdG4odGV4dCwgY2xhc3NOYW1lLCBocmVmKSB7CiAgICAgICAgICAgIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOyBhLmNsYXNzTmFtZSA9ICdqaW5kYW4tZHJhZnQtZmxvdy1idG4gJyArIGNsYXNzTmFtZTsKICAgICAgICAgICAgYS5ocmVmID0gaHJlZjsgYS50ZXh0Q29udGVudCA9IHRleHQ7IHJldHVybiBhOwogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gZW5zdXJlU3RhdHVzT3B0aW9uKHNlbGVjdCwgdmFsdWUsIGxhYmVsKSB7CiAgICAgICAgICAgIGlmICghc2VsZWN0KSByZXR1cm47CiAgICAgICAgICAgIHZhciBleGlzdHMgPSBmYWxzZTsKICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbChzZWxlY3Qub3B0aW9ucywgZnVuY3Rpb24gKG9wdCkgewogICAgICAgICAgICAgICAgaWYgKFN0cmluZyhvcHQudmFsdWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09IHZhbHVlIHx8IG5vcm0ob3B0LnRleHRDb250ZW50IHx8IG9wdC5pbm5lclRleHQgfHwgJycpID09PSBsYWJlbCkgZXhpc3RzID0gdHJ1ZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICghZXhpc3RzKSB7CiAgICAgICAgICAgICAgICB2YXIgb3B0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7IG9wdC52YWx1ZSA9IHZhbHVlOyBvcHQudGV4dCA9IGxhYmVsOyBzZWxlY3QuYXBwZW5kQ2hpbGQob3B0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gc3VibWl0RWRpdEZvcm1XaXRoU3RhdHVzKHRhcmdldFN0YXR1cykgewogICAgICAgICAgICB2YXIgZm9ybSA9IG51bGwsIG5hdGl2ZVN1Ym1pdEJ0biA9IG51bGw7CiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2J1dHRvbiwgaW5wdXRbdHlwZT0ic3VibWl0Il0nKS5mb3JFYWNoKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgICAgICAgICB2YXIgdHh0ID0gbm9ybShlbC50ZXh0Q29udGVudCB8fCBlbC5pbm5lclRleHQgfHwgZWwudmFsdWUgfHwgJycpOwogICAgICAgICAgICAgICAgaWYgKCFlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2ppbmRhbi1kcmFmdC1mbG93LWJ0bicpICYmICFlbC5jbGFzc0xpc3QuY29udGFpbnMoJ2ppbmRhbi1kcmFmdC1idG4nKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgdHh0LmluZGV4T2YoJ+WPkeW4g+aWh+eroCcpID4gLTEgfHwKICAgICAgICAgICAgICAgICAgICAgICAgdHh0LmluZGV4T2YoJ+abtOaWsOaWh+eroCcpID4gLTEgfHwKICAgICAgICAgICAgICAgICAgICAgICAgdHh0LmluZGV4T2YoJ1B1Ymxpc2ggUHJvamVjdCcpID4gLTEgfHwKICAgICAgICAgICAgICAgICAgICAgICAgdHh0LmluZGV4T2YoJ1VwZGF0ZSBQcm9qZWN0JykgPiAtMSB8fAogICAgICAgICAgICAgICAgICAgICAgICB0eHQuaW5kZXhPZignU3VibWl0IFByb2plY3QnKSA+IC0xIHx8CiAgICAgICAgICAgICAgICAgICAgICAgIHR4dC5pbmRleE9mKCdTYXZlIENoYW5nZXMnKSA+IC0xCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZVN1Ym1pdEJ0biA9IGVsOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWwuY2xvc2VzdCgnZm9ybScpKSBmb3JtID0gZWwuY2xvc2VzdCgnZm9ybScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICghZm9ybSkgewogICAgICAgICAgICAgICAgdmFyIHRpdGxlSW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJwb3N0X3RpdGxlIl0sICNwb3N0X3RpdGxlJyk7CiAgICAgICAgICAgICAgICBpZiAodGl0bGVJbnB1dCkgZm9ybSA9IHRpdGxlSW5wdXQuY2xvc2VzdCgnZm9ybScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghZm9ybSkgeyB3aW5kb3cuRUdHSU9JbnRlcmFjdGlvbi5ub3RpY2UoeyB0b25lOiAnZXJyb3InLCBtZXNzYWdlOiAn5pyq5om+5Yiw5oqV56i/6KGo5Y2V77yM6K+35Yi35paw6aG16Z2i5ZCO6YeN6K+V44CCJyB9KTsgcmV0dXJuOyB9CgogICAgICAgICAgICB2YXIgaGlkZGVuID0gZm9ybS5xdWVyeVNlbGVjdG9yKCdpbnB1dFtuYW1lPSJqaW5kYW5fYmFja2VuZF9zdWJtaXRfdGFyZ2V0Il0nKTsKICAgICAgICAgICAgaWYgKCFoaWRkZW4pIHsKICAgICAgICAgICAgICAgIGhpZGRlbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7IGhpZGRlbi50eXBlID0gJ2hpZGRlbic7IGhpZGRlbi5uYW1lID0gJ2ppbmRhbl9iYWNrZW5kX3N1Ym1pdF90YXJnZXQnOwogICAgICAgICAgICAgICAgZm9ybS5hcHBlbmRDaGlsZChoaWRkZW4pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGhpZGRlbi52YWx1ZSA9IHRhcmdldFN0YXR1czsKCiAgICAgICAgICAgIHZhciBzdGF0dXNTZWxlY3QgPSBudWxsOwogICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGZvcm0ucXVlcnlTZWxlY3RvckFsbCgnc2VsZWN0JyksIGZ1bmN0aW9uIChzZWxlY3QpIHsKICAgICAgICAgICAgICAgIHZhciBwb29sID0gW107CiAgICAgICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHNlbGVjdC5vcHRpb25zLCBmdW5jdGlvbihvcHQpIHsKICAgICAgICAgICAgICAgICAgICBwb29sLnB1c2gobm9ybShvcHQudGV4dENvbnRlbnQgfHwgb3B0LmlubmVyVGV4dCB8fCAnJykpOyBwb29sLnB1c2goU3RyaW5nKG9wdC52YWx1ZSB8fCAnJykudG9Mb3dlckNhc2UoKSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHZhciBhbGwgPSBwb29sLmpvaW4oJ3wnKTsKICAgICAgICAgICAgICAgIGlmIChhbGwuaW5kZXhPZign562J5b6F5a6h5qC4JykgPiAtMSB8fCBhbGwuaW5kZXhPZigncGVuZGluZycpID4gLTEgfHwgYWxsLmluZGV4T2YoJ+iNieeovycpID4gLTEgfHwgYWxsLmluZGV4T2YoJ2RyYWZ0JykgPiAtMSkgewogICAgICAgICAgICAgICAgICAgIHN0YXR1c1NlbGVjdCA9IHNlbGVjdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoc3RhdHVzU2VsZWN0KSB7CiAgICAgICAgICAgICAgICBlbnN1cmVTdGF0dXNPcHRpb24oc3RhdHVzU2VsZWN0LCAnZHJhZnQnLCAn6I2J56i/Jyk7IHN0YXR1c1NlbGVjdC52YWx1ZSA9ICdkcmFmdCc7CiAgICAgICAgICAgICAgICBzdGF0dXNTZWxlY3QuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2NoYW5nZScsIHsgYnViYmxlczogdHJ1ZSB9KSk7IHN0YXR1c1NlbGVjdC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudCgnaW5wdXQnLCB7IGJ1YmJsZXM6IHRydWUgfSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBoaWRkZW5TdGF0dXMgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9InBvc3Rfc3RhdHVzIl0nKTsgaWYgKGhpZGRlblN0YXR1cykgaGlkZGVuU3RhdHVzLnZhbHVlID0gJ2RyYWZ0JzsKICAgICAgICAgICAgdmFyIGhpZGRlblN0YXR1czIgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9InN0YXR1cyJdJyk7IGlmIChoaWRkZW5TdGF0dXMyKSBoaWRkZW5TdGF0dXMyLnZhbHVlID0gJ2RyYWZ0JzsKCiAgICAgICAgICAgIGlmIChuYXRpdmVTdWJtaXRCdG4gJiYgdHlwZW9mIG5hdGl2ZVN1Ym1pdEJ0bi5jbGljayA9PT0gJ2Z1bmN0aW9uJykgbmF0aXZlU3VibWl0QnRuLmNsaWNrKCk7CiAgICAgICAgICAgIGVsc2UgSFRNTEZvcm1FbGVtZW50LnByb3RvdHlwZS5zdWJtaXQuY2FsbChmb3JtKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGluamVjdEVkaXRBY3Rpb25zKCkgewogICAgICAgICAgICBpZiAoIWlzRWRpdFBhZ2UoKSB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuamluZGFuLWVkaXQtZHJhZnQtYWN0aW9ucycpKSByZXR1cm47CiAgICAgICAgICAgIHZhciBwb3N0SWQgPSBnZXRDdXJyZW50UGFnZVBvc3RJZCgpOwogICAgICAgICAgICBpZiAoIXBvc3RJZCB8fCAhZHJhZnRNYXBbcG9zdElkXSkgcmV0dXJuOwogICAgICAgICAgICB2YXIgZGF0YSA9IGRyYWZ0TWFwW3Bvc3RJZF0sIHB1Ymxpc2hCb3ggPSBudWxsOwogICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdidXR0b24sIGlucHV0W3R5cGU9InN1Ym1pdCJdLCBhJykuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgICAgICAgICAgIHZhciB0eHQgPSBub3JtKGVsLnRleHRDb250ZW50IHx8IGVsLmlubmVyVGV4dCB8fCBlbC52YWx1ZSB8fCAnJyk7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgdHh0LmluZGV4T2YoJ+WPkeW4g+aWh+eroCcpID4gLTEgfHwKICAgICAgICAgICAgICAgICAgICB0eHQuaW5kZXhPZign5pu05paw5paH56ugJykgPiAtMSB8fAogICAgICAgICAgICAgICAgICAgIHR4dC5pbmRleE9mKCfmj5DkuqQnKSA+IC0xIHx8CiAgICAgICAgICAgICAgICAgICAgdHh0LmluZGV4T2YoJ1B1Ymxpc2ggUHJvamVjdCcpID4gLTEgfHwKICAgICAgICAgICAgICAgICAgICB0eHQuaW5kZXhPZignVXBkYXRlIFByb2plY3QnKSA+IC0xIHx8CiAgICAgICAgICAgICAgICAgICAgdHh0LmluZGV4T2YoJ1N1Ym1pdCcpID4gLTEgfHwKICAgICAgICAgICAgICAgICAgICB0eHQuaW5kZXhPZignU2F2ZSBDaGFuZ2VzJykgPiAtMQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFwdWJsaXNoQm94KSBwdWJsaXNoQm94ID0gZWwucGFyZW50RWxlbWVudDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGlmICghcHVibGlzaEJveCkgcmV0dXJuOwoKICAgICAgICAgICAgdmFyIHdyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgd3JhcC5jbGFzc05hbWUgPSAnamluZGFuLWVkaXQtZHJhZnQtYWN0aW9ucyc7CiAgICAgICAgICAgIHZhciBzdWJtaXRCdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsgc3VibWl0QnRuLnR5cGUgPSAnYnV0dG9uJzsgc3VibWl0QnRuLmNsYXNzTmFtZSA9ICdqaW5kYW4tZHJhZnQtZmxvdy1idG4gaXMtc3VibWl0JzsKICAgICAgICAgICAgc3VibWl0QnRuLnRleHRDb250ZW50ID0gJ+aPkOS6pOWuoeaguCc7CiAgICAgICAgICAgIHN1Ym1pdEJ0bi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsgc3VibWl0RWRpdEZvcm1XaXRoU3RhdHVzKCdwZW5kaW5nJyk7IH0pOwogICAgICAgICAgICB3cmFwLmFwcGVuZENoaWxkKHN1Ym1pdEJ0bik7CgogICAgICAgICAgICBpZiAoZGF0YS5jYW5fcHVibGlzaCkgewogICAgICAgICAgICAgICAgdmFyIHB1Ymxpc2hCdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTsgcHVibGlzaEJ0bi50eXBlID0gJ2J1dHRvbic7IHB1Ymxpc2hCdG4uY2xhc3NOYW1lID0gJ2ppbmRhbi1kcmFmdC1mbG93LWJ0biBpcy1wdWJsaXNoJzsKICAgICAgICAgICAgICAgIHB1Ymxpc2hCdG4udGV4dENvbnRlbnQgPSAn55u05o6l5Y+R5biDJzsKICAgICAgICAgICAgICAgIHB1Ymxpc2hCdG4uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7IHN1Ym1pdEVkaXRGb3JtV2l0aFN0YXR1cygncHVibGlzaCcpOyB9KTsKICAgICAgICAgICAgICAgIHdyYXAuYXBwZW5kQ2hpbGQocHVibGlzaEJ0bik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVibGlzaEJveC5hcHBlbmRDaGlsZCh3cmFwKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGZpbmRSb3dDb250YWluZXIoc2VlZCkgewogICAgICAgICAgICB2YXIgY3VycmVudCA9IHNlZWQ7CiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNyAmJiBjdXJyZW50OyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBsaW5rcyA9IGN1cnJlbnQucXVlcnlTZWxlY3RvckFsbCA/IGN1cnJlbnQucXVlcnlTZWxlY3RvckFsbCgnYVtocmVmXScpIDogW107CiAgICAgICAgICAgICAgICBpZiAobGlua3MubGVuZ3RoID49IDIpIHJldHVybiBjdXJyZW50OwogICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50RWxlbWVudDsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGdldERyYWZ0SW5mb0Zyb21Sb3cocm93KSB7CiAgICAgICAgICAgIGlmICghcm93KSByZXR1cm4gbnVsbDsKICAgICAgICAgICAgdmFyIGxpbmtzID0gcm93LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl0nKTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIHBvc3RJZCA9IGdldFBvc3RJZEZyb21IcmVmKGxpbmtzW2ldLmdldEF0dHJpYnV0ZSgnaHJlZicpIHx8ICcnKTsKICAgICAgICAgICAgICAgIGlmIChwb3N0SWQgJiYgZHJhZnRNYXBbcG9zdElkXSkgcmV0dXJuIHsgcG9zdElkOiBwb3N0SWQsIGRhdGE6IGRyYWZ0TWFwW3Bvc3RJZF0gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGluamVjdExpc3RBY3Rpb25zKCkgewogICAgICAgICAgICBpZiAoIWlzTWFuYWdlUGFnZSgpKSByZXR1cm47CiAgICAgICAgICAgIHZhciBsaW5rcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl0nKSk7CiAgICAgICAgICAgIHZhciBzZWVkTGlua3MgPSBsaW5rcy5maWx0ZXIoZnVuY3Rpb24gKGEpIHsKICAgICAgICAgICAgICAgIHZhciB0eHQgPSBub3JtKGEudGV4dENvbnRlbnQgfHwgYS5pbm5lclRleHQgfHwgJycpOwogICAgICAgICAgICAgICAgcmV0dXJuIHR4dCA9PT0gJ+e8lui+kScgfHwgdHh0ID09PSAn5Yig6ZmkJyB8fCB0eHQgPT09ICfpooTop4gnIHx8IHR4dCA9PT0gJ+afpeeciycgfHwgdHh0ID09PSAnRWRpdCcgfHwgdHh0ID09PSAnRGVsZXRlJyB8fCB0eHQgPT09ICdQcmV2aWV3JyB8fCB0eHQgPT09ICdWaWV3JzsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBzZWVkTGlua3MuZm9yRWFjaChmdW5jdGlvbiAoc2VlZCkgewogICAgICAgICAgICAgICAgdmFyIHJvdyA9IGZpbmRSb3dDb250YWluZXIoc2VlZCk7CiAgICAgICAgICAgICAgICBpZiAoIXJvdyB8fCByb3cuZGF0YXNldC5qaW5kYW5EcmFmdEZsb3dSZWFkeSA9PT0gJzEnKSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IGdldERyYWZ0SW5mb0Zyb21Sb3cocm93KTsgaWYgKCFpbmZvKSByZXR1cm47CgogICAgICAgICAgICAgICAgdmFyIGFjdGlvbldyYXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7IGFjdGlvbldyYXAuY2xhc3NOYW1lID0gJ2ppbmRhbi1kcmFmdC1mbG93LXdyYXAnOwogICAgICAgICAgICAgICAgYWN0aW9uV3JhcC5hcHBlbmRDaGlsZChtYWtlQnRuKCfmj5DkuqTlrqHmoLgnLCAnaXMtc3VibWl0JywgYnVpbGRBY3Rpb25VcmwoaW5mby5wb3N0SWQsICdwZW5kaW5nJywgaW5mby5kYXRhLnN1Ym1pdF9ub25jZSkpKTsKICAgICAgICAgICAgICAgIGlmIChpbmZvLmRhdGEuY2FuX3B1Ymxpc2ggJiYgaW5mby5kYXRhLnB1Ymxpc2hfbm9uY2UpIHsKICAgICAgICAgICAgICAgICAgICBhY3Rpb25XcmFwLmFwcGVuZENoaWxkKG1ha2VCdG4oJ+ebtOaOpeWPkeW4gycsICdpcy1wdWJsaXNoJywgYnVpbGRBY3Rpb25VcmwoaW5mby5wb3N0SWQsICdwdWJsaXNoJywgaW5mby5kYXRhLnB1Ymxpc2hfbm9uY2UpKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoc2VlZC5wYXJlbnROb2RlKSB7IHNlZWQucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChhY3Rpb25XcmFwKTsgfSBlbHNlIHsgcm93LmFwcGVuZENoaWxkKGFjdGlvbldyYXApOyB9CiAgICAgICAgICAgICAgICByb3cuZGF0YXNldC5qaW5kYW5EcmFmdEZsb3dSZWFkeSA9ICcxJzsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBpbmplY3RQcmV2aWV3QWN0aW9ucygpIHsKICAgICAgICAgICAgaWYgKCFpc1ByZXZpZXdQYWdlKCkgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmppbmRhbi1wcmV2aWV3LWRyYWZ0LWJhcicpKSByZXR1cm47CiAgICAgICAgICAgIHZhciBwb3N0SWQgPSBnZXRDdXJyZW50UGFnZVBvc3RJZCgpOwogICAgICAgICAgICBpZiAoIXBvc3RJZCB8fCAhZHJhZnRNYXBbcG9zdElkXSkgcmV0dXJuOwogICAgICAgICAgICB2YXIgZGF0YSA9IGRyYWZ0TWFwW3Bvc3RJZF0sIG1haW4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdtYWluJykgfHwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnNpdGUtY29udGVudCcpIHx8IGRvY3VtZW50LmJvZHk7CiAgICAgICAgICAgIGlmICghbWFpbikgcmV0dXJuOwoKICAgICAgICAgICAgdmFyIGJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyBiYXIuY2xhc3NOYW1lID0gJ2ppbmRhbi1wcmV2aWV3LWRyYWZ0LWJhcic7CiAgICAgICAgICAgIHZhciBub3RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOyBub3RlLmNsYXNzTmFtZSA9ICdqaW5kYW4tcHJldmlldy1kcmFmdC1ub3RlJzsKICAgICAgICAgICAgbm90ZS50ZXh0Q29udGVudCA9ICfov5nmmK/ojYnnqL/pooTop4jvvIzkvaDlj6/ku6XlnKjov5nph4znu6fnu63lpITnkIbpobnnm67vvJonOyBiYXIuYXBwZW5kQ2hpbGQobm90ZSk7CgogICAgICAgICAgICBiYXIuYXBwZW5kQ2hpbGQobWFrZUJ0bign5o+Q5Lqk5a6h5qC4JywgJ2lzLXN1Ym1pdCcsIGJ1aWxkQWN0aW9uVXJsKHBvc3RJZCwgJ3BlbmRpbmcnLCBkYXRhLnN1Ym1pdF9ub25jZSkpKTsKICAgICAgICAgICAgaWYgKGRhdGEuY2FuX3B1Ymxpc2ggJiYgZGF0YS5wdWJsaXNoX25vbmNlKSBiYXIuYXBwZW5kQ2hpbGQobWFrZUJ0bign55u05o6l5Y+R5biDJywgJ2lzLXB1Ymxpc2gnLCBidWlsZEFjdGlvblVybChwb3N0SWQsICdwdWJsaXNoJywgZGF0YS5wdWJsaXNoX25vbmNlKSkpOwogICAgICAgICAgICBtYWluLmluc2VydEJlZm9yZShiYXIsIG1haW4uZmlyc3RDaGlsZCk7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBjb3VudEZpbHRlclRleHRzKHJvb3QpIHsKICAgICAgICAgICAgaWYgKCFyb290KSByZXR1cm4gMDsKICAgICAgICAgICAgdmFyIHRhcmdldFRleHRzID0gWyflt7Llj5HluIMnLCAn6I2J56i/JywgJ+W+heWuoeaguCcsICflm57mlLbnq5knLCAnUHVibGlzaGVkJywgJ0RyYWZ0cycsICdQZW5kaW5nIFJldmlldycsICdUcmFzaCddLCBmb3VuZCA9IG5ldyBTZXQoKTsKICAgICAgICAgICAgcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcqJykuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHsKICAgICAgICAgICAgICAgIHZhciB0eHQgPSBub3JtKGVsLnRleHRDb250ZW50IHx8IGVsLmlubmVyVGV4dCB8fCAnJyk7CiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0VGV4dHMuaW5kZXhPZih0eHQpID4gLTEpIGZvdW5kLmFkZCh0eHQpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIGZvdW5kLnNpemU7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiBmaW5kQmVzdEZpbHRlcldyYXAoKSB7CiAgICAgICAgICAgIGlmICghaXNNYW5hZ2VQYWdlKCkpIHJldHVybiBudWxsOwogICAgICAgICAgICB2YXIgdGFyZ2V0VGV4dHMgPSBbJ+W3suWPkeW4gycsICfojYnnqL8nLCAn5b6F5a6h5qC4JywgJ+WbnuaUtuermScsICdQdWJsaXNoZWQnLCAnRHJhZnRzJywgJ1BlbmRpbmcgUmV2aWV3JywgJ1RyYXNoJ107CiAgICAgICAgICAgIHZhciBub2RlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2EsIGJ1dHRvbiwgbGFiZWwsIHNwYW4sIHN0cm9uZywgbGksIGRpdicpKS5maWx0ZXIoZnVuY3Rpb24gKGVsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0VGV4dHMuaW5kZXhPZihub3JtKGVsLnRleHRDb250ZW50IHx8IGVsLmlubmVyVGV4dCB8fCAnJykpID4gLTE7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICB2YXIgYmVzdCA9IG51bGwsIGJlc3RDb3VudCA9IDA7CiAgICAgICAgICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24gKG5vZGUpIHsKICAgICAgICAgICAgICAgIHZhciBjdXJyZW50ID0gbm9kZTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNiAmJiBjdXJyZW50OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBjb3VudEZpbHRlclRleHRzKGN1cnJlbnQpOwogICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA+IGJlc3RDb3VudCkgeyBiZXN0ID0gY3VycmVudDsgYmVzdENvdW50ID0gY291bnQ7IH0KICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnRFbGVtZW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIGJlc3RDb3VudCA+PSAzID8gYmVzdCA6IG51bGw7CiAgICAgICAgfQoKICAgICAgICBmdW5jdGlvbiByZWN0T3ZlcmxhcChhLCBiKSB7IHJldHVybiAhKGEucmlnaHQgPD0gYi5sZWZ0IHx8IGEubGVmdCA+PSBiLnJpZ2h0IHx8IGEuYm90dG9tIDw9IGIudG9wIHx8IGEudG9wID49IGIuYm90dG9tKTsgfQoKICAgICAgICBmdW5jdGlvbiBmaXhNYW5hZ2VUYWJzQ2xpY2soKSB7CiAgICAgICAgICAgIHZhciBmaWx0ZXJXcmFwID0gZmluZEJlc3RGaWx0ZXJXcmFwKCk7IGlmICghZmlsdGVyV3JhcCkgcmV0dXJuOwogICAgICAgICAgICBpZiAoIWZpbHRlcldyYXAuY2xhc3NMaXN0LmNvbnRhaW5zKCdqaW5kYW4tbWFuYWdlLWZpbHRlci1zYWZlJykpIGZpbHRlcldyYXAuY2xhc3NMaXN0LmFkZCgnamluZGFuLW1hbmFnZS1maWx0ZXItc2FmZScpOwogICAgICAgICAgICB2YXIgZmlsdGVyUmVjdCA9IGZpbHRlcldyYXAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IGlmICghZmlsdGVyUmVjdC53aWR0aCB8fCAhZmlsdGVyUmVjdC5oZWlnaHQpIHJldHVybjsKCiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2FbaHJlZl0nKS5mb3JFYWNoKGZ1bmN0aW9uIChhKSB7CiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyV3JhcC5jb250YWlucyhhKSB8fCBhLmRhdGFzZXQuamluZGFuT3ZlcmxheURpc2FibGVkID09PSAnMScpIHJldHVybjsKICAgICAgICAgICAgICAgIHZhciByZWN0ID0gYS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgaWYgKCFyZWN0LndpZHRoIHx8ICFyZWN0LmhlaWdodCkgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKHJlY3RPdmVybGFwKHJlY3QsIGZpbHRlclJlY3QpKSB7CiAgICAgICAgICAgICAgICAgICAgYS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnOyBhLmRhdGFzZXQuamluZGFuT3ZlcmxheURpc2FibGVkID0gJzEnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIHNob3dEb25lVGlwKCkgewogICAgICAgICAgICB2YXIgZG9uZSA9IGdldFVybFBhcmFtKCdqaW5kYW5fYWN0aW9uX2RvbmUnKTsgaWYgKCFkb25lKSByZXR1cm47CiAgICAgICAgICAgIGlmIChkb25lID09PSAnc3VibWl0dGVkJykgd2luZG93LkVHR0lPSW50ZXJhY3Rpb24ubm90aWNlKHsgdG9uZTogJ3N1Y2Nlc3MnLCBtZXNzYWdlOiAn6I2J56i/5bey5o+Q5Lqk5a6h5qC477yM5Y+v5Zyo5oqV56i/566h55CG55qE4oCc5b6F5a6h5qC44oCd5Lit5p+l55yL44CCJyB9KTsKICAgICAgICAgICAgZWxzZSBpZiAoZG9uZSA9PT0gJ3B1Ymxpc2hlZCcpIHdpbmRvdy5FR0dJT0ludGVyYWN0aW9uLm5vdGljZSh7IHRvbmU6ICdzdWNjZXNzJywgbWVzc2FnZTogJ+iNieeov+W3suaIkOWKn+WPkeW4g+OAgicgfSk7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICB2YXIgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7CiAgICAgICAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZSgnamluZGFuX2FjdGlvbl9kb25lJyk7IHVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKCdqaW5kYW5fcG9zdF9pZCcpOwogICAgICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgdXJsLnRvU3RyaW5nKCkpOwogICAgICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgICAgIH0KCiAgICAgICAgZnVuY3Rpb24gcnVuKCkgewogICAgICAgICAgICBpbmplY3RMaXN0QWN0aW9ucygpOyBpbmplY3RFZGl0QWN0aW9ucygpOyBpbmplY3RQcmV2aWV3QWN0aW9ucygpOyBmaXhNYW5hZ2VUYWJzQ2xpY2soKTsgc2hvd0RvbmVUaXAoKTsKICAgICAgICB9CgogICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7IHJ1bigpOyBzZXRUaW1lb3V0KHJ1biwgNTAwKTsgc2V0VGltZW91dChydW4sIDE1MDApOyB9KTsKICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHsgc2V0VGltZW91dChydW4sIDMwMCk7IHNldFRpbWVvdXQocnVuLCAxMjAwKTsgfSk7CiAgICB9KSgpOwogICAgPC9zY3JpcHQ+CiAgICA8P3BocAp9LCAxMDIpOwoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIDUuIOe7n+S4gOaLpuaIquaJgOacieexu+Wei+eahOaKpemUmeW8ueeql+W5tuWbnui3swovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KYWRkX2FjdGlvbignd3BfZm9vdGVyJywgZnVuY3Rpb24gKCkgewogICAgaWYgKGlzX2FkbWluKCkgfHwgIWlzX3VzZXJfbG9nZ2VkX2luKCkpIHJldHVybjsKICAgIGlmIChlbXB0eSgkX0dFVFsnamluZGFuX25vdGljZSddKSB8fCAhaW5fYXJyYXkoJF9HRVRbJ2ppbmRhbl9ub3RpY2UnXSwgWydkcmFmdF9mbG93X2Vycm9yJywgJ25lZWRfbGVhZl9jYXRlZ29yeSddKSkgcmV0dXJuOwoKICAgICRtc2cgPSAhZW1wdHkoJF9HRVRbJ2ppbmRhbl9tc2cnXSkgPyBzYW5pdGl6ZV90ZXh0X2ZpZWxkKHdwX3Vuc2xhc2goJF9HRVRbJ2ppbmRhbl9tc2cnXSkpIDogJ+aTjeS9nOacquWujOaIkO+8jOivt+ajgOafpemhueebruWIhuexu+OAgeW/heWhq+Wtl+auteaIluezu+e7n+eKtuaAgeOAgic7CiAgICA/PgogICAgPHNjcmlwdD4KICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgd2luZG93LkVHR0lPSW50ZXJhY3Rpb24ubm90aWNlKHsgdG9uZTogJ2Vycm9yJywgbWVzc2FnZTogPD9waHAgZWNobyB3cF9qc29uX2VuY29kZSgkbXNnKTsgPz4gfSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgdmFyIHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZSgnamluZGFuX25vdGljZScpOyB1cmwuc2VhcmNoUGFyYW1zLmRlbGV0ZSgnamluZGFuX21zZycpOwogICAgICAgICAgICBoaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgJycsIHVybC50b1N0cmluZygpKTsKICAgICAgICB9IGNhdGNoIChlKSB7fQogICAgfSk7CiAgICA8L3NjcmlwdD4KICAgIDw/cGhwCn0sIDEwMik7CgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8g5YmN5Y+w57yW6L6R6aG1IFVJIOecn+WunuWbnuWhq+aVsOaNruazqOWFpQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KYWRkX2FjdGlvbignd3BfaGVhZCcsICdqaW5kYW5faW5qZWN0X3NhdmVkX2NhdGVnb3J5X2Zvcl91aScpOwpmdW5jdGlvbiBqaW5kYW5faW5qZWN0X3NhdmVkX2NhdGVnb3J5X2Zvcl91aSgpIHsKICAgIGlmICghaXNfdXNlcl9sb2dnZWRfaW4oKSB8fCAoZW1wdHkoJF9HRVRbJ2lkJ10pICYmIGVtcHR5KCRfR0VUWydwb3N0X2lkJ10pICYmIGVtcHR5KCRfR0VUWydlZGl0J10pKSkgcmV0dXJuOwogICAgCiAgICAkcG9zdF9pZCA9ICFlbXB0eSgkX0dFVFsnaWQnXSkgPyBpbnR2YWwoJF9HRVRbJ2lkJ10pIDogKCFlbXB0eSgkX0dFVFsncG9zdF9pZCddKSA/IGludHZhbCgkX0dFVFsncG9zdF9pZCddKSA6IGludHZhbCgkX0dFVFsnZWRpdCddKSk7CiAgICAKICAgIGlmICgkcG9zdF9pZCA8PSAwIHx8IGdldF9wb3N0X3R5cGUoJHBvc3RfaWQpICE9PSAncG9zdCcgfHwgIWN1cnJlbnRfdXNlcl9jYW4oJ2VkaXRfcG9zdCcsICRwb3N0X2lkKSkgcmV0dXJuOwoKICAgICRzYXZlZF9jYXRzID0gd3BfZ2V0X3Bvc3RfY2F0ZWdvcmllcygkcG9zdF9pZCwgYXJyYXkoJ2ZpZWxkcycgPT4gJ2lkcycpKTsKICAgIGlmIChlbXB0eSgkc2F2ZWRfY2F0cykpIHJldHVybjsKCiAgICAkY2F0X2RhdGEgPSBhcnJheSgncGFyZW50JyA9PiAwLCAnY2hpbGQnID0+IDApOwogICAgJGRlZmF1bHRfY2F0ID0gKGludCkgZ2V0X29wdGlvbignZGVmYXVsdF9jYXRlZ29yeScpOwoKICAgIGZvcmVhY2ggKCRzYXZlZF9jYXRzIGFzICRjaWQpIHsKICAgICAgICBpZiAoJGNpZCA9PSAkZGVmYXVsdF9jYXQpIGNvbnRpbnVlOwogICAgICAgIAogICAgICAgICRwYXJlbnRfaWQgPSB3cF9nZXRfdGVybV90YXhvbm9teV9wYXJlbnRfaWQoJGNpZCwgJ2NhdGVnb3J5Jyk7CiAgICAgICAgaWYgKCRwYXJlbnRfaWQgPiAwKSB7CiAgICAgICAgICAgICRjYXRfZGF0YVsncGFyZW50J10gPSAkcGFyZW50X2lkOwogICAgICAgICAgICAkY2F0X2RhdGFbJ2NoaWxkJ10gPSAkY2lkOwogICAgICAgICAgICBicmVhazsgCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGNhdF9kYXRhWydwYXJlbnQnXSA9ICRjaWQ7CiAgICAgICAgfQogICAgfQoKICAgIGlmICgkY2F0X2RhdGFbJ3BhcmVudCddID4gMCkgewogICAgICAgIGVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4nOwogICAgICAgIGVjaG8gJ3dpbmRvdy5KaW5kYW5DYXRlZ29yeURhdGEgPSAnIC4ganNvbl9lbmNvZGUoJGNhdF9kYXRhKSAuICc7JzsKICAgICAgICBlY2hvICc8L3NjcmlwdD4nOwogICAgfQp9"},{"id":60,"name":"智谱AI全自动风控审核官 [CLONE]","active":1,"scope":"global","priority":10,"code_sha256":"4486ec3fc76aa3a1655020f5550aa7d08cd0fc64ddeb3e9b5e04217b7bebce37","code_base64":"LyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIOmHkeibi+e9kSAtIFY0LjAgQUnpo47mjqcgKyDmnoHpgJ/mn6Xph40gKyDnp6/liIbnu4/mtY7pl63njq/niYggKOe7iOaegeavleS4mueJiCkKICogRWdnaW8gRW5nbGlzaCBlZGl0aW9uIHBhdGNoOgogKiAtIEVuZ2xpc2ggQUkgcmV2aWV3IHByb21wdAogKiAtIFNpbXBsaWZpZWQgQ2hpbmVzZSB1c2VyLWZhY2luZyBhdWRpdCByZWFzb25zIGFuZCBjcmVkaXQgbG9ncwogKiAtIFN1cHBvcnRzIGJvdGggb2xkIENoaW5lc2Ugc3RydWN0dXJlIG1hcmtlcnMgYW5kIG5ldyBFbmdsaXNoIHN0cnVjdHVyZSBtYXJrZXJzCiAqIC0gS2VlcHMgb3JpZ2luYWwgaG9va3MsIG1ldGEga2V5cywgc2NvcmUgcnVsZXMsIGFuZCBjcmVkaXQgZWNvbm9teSBsb2dpYwogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KCmFkZF9hY3Rpb24oICd0cmFuc2l0aW9uX3Bvc3Rfc3RhdHVzJywgJ2ppbmRhbl9tYXJrX2Zvcl9haV9hdWRpdCcsIDEwLCAzICk7CmZ1bmN0aW9uIGppbmRhbl9tYXJrX2Zvcl9haV9hdWRpdCggJG5ld19zdGF0dXMsICRvbGRfc3RhdHVzLCAkcG9zdCApIHsKICAgIGlmICggJG5ld19zdGF0dXMgPT09ICdwZW5kaW5nJyAmJiAkb2xkX3N0YXR1cyAhPT0gJ3BlbmRpbmcnICYmICRwb3N0LT5wb3N0X3R5cGUgPT09ICdwb3N0JyApIHsKICAgICAgICB1cGRhdGVfcG9zdF9tZXRhKCAkcG9zdC0+SUQsICdhaV9hdWRpdF9zdGF0dXMnLCAnd2FpdGluZycgKTsKICAgICAgICBkZWxldGVfcG9zdF9tZXRhKCAkcG9zdC0+SUQsICdhaV9yZXRyeV9jb3VudCcgKTsgLy8g6YeN5paw6YCB5a6h5pe25riF56m66YeN6K+V5qyh5pWwCiAgICB9Cn0KCmFkZF9maWx0ZXIoICdjcm9uX3NjaGVkdWxlcycsICdqaW5kYW5fYWRkX2Nyb25faW50ZXJ2YWwnICk7CmZ1bmN0aW9uIGppbmRhbl9hZGRfY3Jvbl9pbnRlcnZhbCggJHNjaGVkdWxlcyApIHsKICAgICRzY2hlZHVsZXNbJ2V2ZXJ5X2ZpdmVfbWludXRlcyddID0gYXJyYXkoICdpbnRlcnZhbCcgPT4gMzAwLCAnZGlzcGxheScgPT4gX18oICdFdmVyeSA1IG1pbnV0ZXMnICkgKTsKICAgIHJldHVybiAkc2NoZWR1bGVzOwp9CgppZiAoICEgd3BfbmV4dF9zY2hlZHVsZWQoICdqaW5kYW5fYWlfYXVkaXRfY3Jvbl9ob29rJyApICkgewogICAgd3Bfc2NoZWR1bGVfZXZlbnQoIHRpbWUoKSwgJ2V2ZXJ5X2ZpdmVfbWludXRlcycsICdqaW5kYW5fYWlfYXVkaXRfY3Jvbl9ob29rJyApOwp9CgphZGRfYWN0aW9uKCAnamluZGFuX2FpX2F1ZGl0X2Nyb25faG9vaycsICdqaW5kYW5fZXhlY3V0ZV9haV9hdWRpdCcgKTsKZnVuY3Rpb24gamluZGFuX2V4ZWN1dGVfYWlfYXVkaXQoKSB7CiAgICAKICAgIC8vIOOAkOWuieWFqOivu+WPluOAkSBBUEkgS2V5CiAgICAkemhpcHVfYXBpX2tleSA9IGRlZmluZWQoJ1pISVBVX0FQSV9LRVknKSA/IFpISVBVX0FQSV9LRVkgOiBnZXRfb3B0aW9uKCdqaW5kYW5femhpcHVfYXBpX2tleScpOwogICAgaWYgKCBlbXB0eSgkemhpcHVfYXBpX2tleSkgKSB7CiAgICAgICAgZXJyb3JfbG9nKCdFZ2dpbyBBSSByZXZpZXcgYmxvY2tlZDogWmhpcHUgQVBJIGtleSBpcyBub3QgY29uZmlndXJlZC4nKTsKICAgICAgICByZXR1cm47IAogICAgfQoKICAgICRhcmdzID0gYXJyYXkoCiAgICAgICAgJ3Bvc3RfdHlwZScgPT4gJ3Bvc3QnLCAncG9zdF9zdGF0dXMnID0+ICdwZW5kaW5nJywgJ3Bvc3RzX3Blcl9wYWdlJyA9PiA1LCAKICAgICAgICAnbWV0YV9xdWVyeScgPT4gYXJyYXkoIGFycmF5KCAna2V5JyA9PiAnYWlfYXVkaXRfc3RhdHVzJywgJ3ZhbHVlJyA9PiAnd2FpdGluZycgKSApCiAgICApOwogICAgJHF1ZXJ5ID0gbmV3IFdQX1F1ZXJ5KCAkYXJncyApOwoKICAgIGlmICggJHF1ZXJ5LT5oYXZlX3Bvc3RzKCkgKSB7CiAgICAgICAgCiAgICAgICAgZ2xvYmFsICR3cGRiOwogICAgICAgICRyZWNlbnRfcG9zdHNfZGIgPSAkd3BkYi0+Z2V0X3Jlc3VsdHMoIgogICAgICAgICAgICBTRUxFQ1QgSUQsIHBvc3RfdGl0bGUsIHBvc3RfY29udGVudCAKICAgICAgICAgICAgRlJPTSB7JHdwZGItPnBvc3RzfSAKICAgICAgICAgICAgV0hFUkUgcG9zdF90eXBlID0gJ3Bvc3QnIEFORCBwb3N0X3N0YXR1cyA9ICdwdWJsaXNoJyAKICAgICAgICAgICAgT1JERVIgQlkgcG9zdF9kYXRlIERFU0MgCiAgICAgICAgICAgIExJTUlUIDEwMDAKICAgICAgICAiKTsKCiAgICAgICAgJHRlbXBsYXRlX21hcmtlcnMgPSBhcnJheSgKICAgICAgICAgICAgJ+OAkOmhueebruaRmOimgeOAkScsICfjgJDpobnnm67moIfnrb7jgJEnLCAn44CQ6aG555uu6aKE6KeI44CRJywgJ+OAkOS9oOWwhuiOt+W+l+OAkScsICfjgJDotYTmupDnsr7noa7kuqTku5jmuIXljZXjgJEnLCAn44CQ546v5aKD5LiO5Z+656GA6KaB5rGC44CRJywgJ+OAkOKaoO+4jyDllK7lkI7lhY3otKPlo7DmmI7jgJEnLCAn44CQ5ryU56S65LiO6aKE6KeI44CRJywgJ+OAkOmjjumZqeaPkOmGkuOAkScsCiAgICAgICAgICAgICfjgJBQcm9qZWN0IFN1bW1hcnnjgJEnLCAn44CQUHJvamVjdCBUYWdz44CRJywgJ+OAkFByb2plY3QgUHJldmlld+OAkScsICfjgJBXaGF0IEJ1eWVycyBXaWxsIEdldOOAkScsICfjgJBQcmVjaXNlIFJlc291cmNlIERlbGl2ZXJ5IExpc3TjgJEnLCAn44CQUmVzb3VyY2UgRGVsaXZlcnkgTGlzdOOAkScsICfjgJBFbnZpcm9ubWVudCAmIFJlcXVpcmVtZW50c+OAkScsICfjgJBSZXF1aXJlbWVudHPjgJEnLCAn44CQQWZ0ZXItU2FsZXMgRGlzY2xhaW1lcuOAkScsICfjgJBEaXNjbGFpbWVy44CRJywgJ+OAkERlbW8gJiBQcmV2aWV344CRJywgJ+OAkERlbW8gUHJldmlld+OAkScsICfjgJBSaXNrIE5vdGljZeOAkScsICfjgJBSaXNrIFJlbWluZGVy44CRJwogICAgICAgICk7CgogICAgICAgIHdoaWxlICggJHF1ZXJ5LT5oYXZlX3Bvc3RzKCkgKSB7CiAgICAgICAgICAgICRxdWVyeS0+dGhlX3Bvc3QoKTsKICAgICAgICAgICAgZ2xvYmFsICRwb3N0OwogICAgICAgICAgICAKICAgICAgICAgICAgJHBvc3RfdGl0bGUgPSBnZXRfdGhlX3RpdGxlKCk7CiAgICAgICAgICAgICRwb3N0X2NvbnRlbnRfcmF3ID0gZ2V0X3RoZV9jb250ZW50KCk7CiAgICAgICAgICAgICRwb3N0X2NvbnRlbnQgPSB3cF9zdHJpcF9hbGxfdGFncyggJHBvc3RfY29udGVudF9yYXcgKTsKICAgICAgICAgICAgJGF1dGhvcl9pZCA9ICRwb3N0LT5wb3N0X2F1dGhvcjsgCgogICAgICAgICAgICAkcmV0cnlfY291bnQgPSAoaW50KSBnZXRfcG9zdF9tZXRhKCAkcG9zdC0+SUQsICdhaV9yZXRyeV9jb3VudCcsIHRydWUgKTsKCiAgICAgICAgICAgICR1c2VyX2NyZWRpdCA9IGdldF91c2VyX21ldGEoICRhdXRob3JfaWQsICdqaW5kYW5fY3JlZGl0X3Njb3JlJywgdHJ1ZSApOwogICAgICAgICAgICBpZiAoICR1c2VyX2NyZWRpdCA9PT0gJycgKSB7CiAgICAgICAgICAgICAgICAkdXNlcl9jcmVkaXQgPSA2MDsgCiAgICAgICAgICAgICAgICB1cGRhdGVfdXNlcl9tZXRhKCAkYXV0aG9yX2lkLCAnamluZGFuX2NyZWRpdF9zY29yZScsIDYwICk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdXNlcl9jcmVkaXQgPSBpbnR2YWwoICR1c2VyX2NyZWRpdCApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgLy8gIOesrOS4gOWFs++8muacrOWcsOaegemAn+Wkp+WuuemHj+afpemHje+8iOiEseWjs+eyvuWHhueJiO+8iQogICAgICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgJGlzX2R1cGxpY2F0ZSA9IGZhbHNlOwogICAgICAgICAgICAkY2xlYW5fcG9zdF9jb250ZW50ID0gc3RyX3JlcGxhY2UoJHRlbXBsYXRlX21hcmtlcnMsICcnLCAkcG9zdF9jb250ZW50KTsgCiAgICAgICAgICAgICRjbGVhbl9wb3N0X2NvbnRlbnQgPSBwcmVnX3JlcGxhY2UoJy9ccysvJywgJycsICRjbGVhbl9wb3N0X2NvbnRlbnQpOyAKCiAgICAgICAgICAgIGZvcmVhY2ggKCRyZWNlbnRfcG9zdHNfZGIgYXMgJHJwKSB7CiAgICAgICAgICAgICAgICBpZiAoJHJwLT5JRCA9PSAkcG9zdC0+SUQpIGNvbnRpbnVlOyAKICAgICAgICAgICAgICAgIGlmICgkcG9zdF90aXRsZSA9PT0gJHJwLT5wb3N0X3RpdGxlKSB7ICRpc19kdXBsaWNhdGUgPSB0cnVlOyBicmVhazsgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkcnBfY29udGVudCA9IHdwX3N0cmlwX2FsbF90YWdzKCRycC0+cG9zdF9jb250ZW50KTsKICAgICAgICAgICAgICAgICRjbGVhbl9ycF9jb250ZW50ID0gc3RyX3JlcGxhY2UoJHRlbXBsYXRlX21hcmtlcnMsICcnLCAkcnBfY29udGVudCk7CiAgICAgICAgICAgICAgICAkY2xlYW5fcnBfY29udGVudCA9IHByZWdfcmVwbGFjZSgnL1xzKy8nLCAnJywgJGNsZWFuX3JwX2NvbnRlbnQpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAobWJfc3RybGVuKCRjbGVhbl9wb3N0X2NvbnRlbnQpID4gNTAgJiYgbWJfc3Vic3RyKCRjbGVhbl9wb3N0X2NvbnRlbnQsIDAsIDEwMCkgPT09IG1iX3N1YnN0cigkY2xlYW5fcnBfY29udGVudCwgMCwgMTAwKSkgewogICAgICAgICAgICAgICAgICAgICRpc19kdXBsaWNhdGUgPSB0cnVlOyBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRpc19kdXBsaWNhdGUpIHsKICAgICAgICAgICAgICAgIHdwX3RyYXNoX3Bvc3QoICRwb3N0LT5JRCApOwogICAgICAgICAgICAgICAgJG5ld19jcmVkaXQgPSBtYXgoIDAsICR1c2VyX2NyZWRpdCAtIDUgKTsgCiAgICAgICAgICAgICAgICB1cGRhdGVfdXNlcl9tZXRhKCAkYXV0aG9yX2lkLCAnamluZGFuX2NyZWRpdF9zY29yZScsICRuZXdfY3JlZGl0ICk7CiAgICAgICAgICAgICAgICB1cGRhdGVfcG9zdF9tZXRhKCAkcG9zdC0+SUQsICdhaV9hdWRpdF9zdGF0dXMnLCAncmVqZWN0ZWRfYnlfZHVwbGljYXRlJyApOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkbG9nID0gZ2V0X3VzZXJfbWV0YSggJGF1dGhvcl9pZCwgJ2ppbmRhbl9jcmVkaXRfbG9nJywgdHJ1ZSApOwogICAgICAgICAgICAgICAgaWYgKCFpc19hcnJheSgkbG9nKSkgJGxvZyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRsb2csIGFycmF5KCd0aW1lJyA9PiBjdXJyZW50X3RpbWUoJ1ktbS1kIEg6aScpLCAnYWN0aW9uJyA9PiAn5raJ5auM5pCs6L+Q5oiW6YeN5aSN5YaF5a656KKr5oum5oiqJywgJ2NoYW5nZScgPT4gJy01JykpOwogICAgICAgICAgICAgICAgdXBkYXRlX3VzZXJfbWV0YSgkYXV0aG9yX2lkLCAnamluZGFuX2NyZWRpdF9sb2cnLCBhcnJheV9zbGljZSgkbG9nLCAwLCAyMCkpOwogICAgICAgICAgICAgICAgY29udGludWU7IAogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgLy8g5o+Q5Y+W77ya6I635Y+W55yf5a6e6LWE5rqQ5ZKM6K+B5piO5oOF5Ya1CiAgICAgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAkaGFzX3Jlc291cmNlID0gZmFsc2U7CiAgICAgICAgICAgICRkb3dudXJsX2RhdGEgPSBnZXRfcG9zdF9tZXRhKCRwb3N0LT5JRCwgJ2Nhb19kb3dudXJsX25ldycsIHRydWUpID86IGdldF9wb3N0X21ldGEoJHBvc3QtPklELCAnX2Nhb19kb3dudXJsX25ldycsIHRydWUpOwoKICAgICAgICAgICAgaWYgKCFlbXB0eSgkZG93bnVybF9kYXRhKSkgewogICAgICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkZG93bnVybF9kYXRhKSkgewogICAgICAgICAgICAgICAgICAgICRkZWNvZGVkID0ganNvbl9kZWNvZGUoJGRvd251cmxfZGF0YSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgJGRvd251cmxfZGF0YSA9IChqc29uX2xhc3RfZXJyb3IoKSA9PT0gSlNPTl9FUlJPUl9OT05FKSA/ICRkZWNvZGVkIDogbWF5YmVfdW5zZXJpYWxpemUoJGRvd251cmxfZGF0YSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGRvd251cmxfZGF0YSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZG93bnVybF9kYXRhIGFzICR1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cmltKCR1Wyd1cmwnXSA/PyAnJykgIT09ICcnICYmIHRyaW0oJHVbJ25hbWUnXSA/PyAnJykgIT09ICcnKSB7ICRoYXNfcmVzb3VyY2UgPSB0cnVlOyBicmVhazsgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gSGVscGVyOiByZWFkIGNvbnRlbnQgYmV0d2VlbiBtdWx0aXBsZSBwb3NzaWJsZSBzZWN0aW9uIG1hcmtlcnMuCiAgICAgICAgICAgICRnZXRfc2VjdGlvbl9iZXR3ZWVuID0gZnVuY3Rpb24oJHRleHQsICRzdGFydF9tYXJrZXJzLCAkZW5kX21hcmtlcnMgPSBhcnJheSgpKSB7CiAgICAgICAgICAgICAgICAkc3RhcnRfcG9zID0gZmFsc2U7CiAgICAgICAgICAgICAgICAkc3RhcnRfbGVuID0gMDsKCiAgICAgICAgICAgICAgICBmb3JlYWNoICgkc3RhcnRfbWFya2VycyBhcyAkbWFya2VyKSB7CiAgICAgICAgICAgICAgICAgICAgJHBvcyA9IHN0cnBvcygkdGV4dCwgJG1hcmtlcik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRwb3MgIT09IGZhbHNlICYmICgkc3RhcnRfcG9zID09PSBmYWxzZSB8fCAkcG9zIDwgJHN0YXJ0X3BvcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHN0YXJ0X3BvcyA9ICRwb3M7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdGFydF9sZW4gPSBzdHJsZW4oJG1hcmtlcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkc3RhcnRfcG9zID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkY29udGVudF9zdGFydCA9ICRzdGFydF9wb3MgKyAkc3RhcnRfbGVuOwogICAgICAgICAgICAgICAgJGVuZF9wb3MgPSBzdHJsZW4oJHRleHQpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRlbmRfbWFya2VycyBhcyAkbWFya2VyKSB7CiAgICAgICAgICAgICAgICAgICAgJHBvcyA9IHN0cnBvcygkdGV4dCwgJG1hcmtlciwgJGNvbnRlbnRfc3RhcnQpOwogICAgICAgICAgICAgICAgICAgIGlmICgkcG9zICE9PSBmYWxzZSAmJiAkcG9zIDwgJGVuZF9wb3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGVuZF9wb3MgPSAkcG9zOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gdHJpbShzdWJzdHIoJHRleHQsICRjb250ZW50X3N0YXJ0LCAkZW5kX3BvcyAtICRjb250ZW50X3N0YXJ0KSk7CiAgICAgICAgICAgIH07CgogICAgICAgICAgICAkZGVsaXZlcnlfdGV4dCA9ICRnZXRfc2VjdGlvbl9iZXR3ZWVuKAogICAgICAgICAgICAgICAgJHBvc3RfY29udGVudCwKICAgICAgICAgICAgICAgIGFycmF5KCfjgJDotYTmupDnsr7noa7kuqTku5jmuIXljZXjgJEnLCAn44CQUHJlY2lzZSBSZXNvdXJjZSBEZWxpdmVyeSBMaXN044CRJywgJ+OAkFJlc291cmNlIERlbGl2ZXJ5IExpc3TjgJEnKSwKICAgICAgICAgICAgICAgIGFycmF5KCfjgJDnjq/looPkuI7ln7rnoYDopoHmsYLjgJEnLCAn44CQRW52aXJvbm1lbnQgJiBSZXF1aXJlbWVudHPjgJEnLCAn44CQUmVxdWlyZW1lbnRz44CRJykKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRlbnZfdGV4dCA9ICRnZXRfc2VjdGlvbl9iZXR3ZWVuKAogICAgICAgICAgICAgICAgJHBvc3RfY29udGVudCwKICAgICAgICAgICAgICAgIGFycmF5KCfjgJDnjq/looPkuI7ln7rnoYDopoHmsYLjgJEnLCAn44CQRW52aXJvbm1lbnQgJiBSZXF1aXJlbWVudHPjgJEnLCAn44CQUmVxdWlyZW1lbnRz44CRJyksCiAgICAgICAgICAgICAgICBhcnJheSgn44CQ4pqg77iPIOWUruWQjuWFjei0o+WjsOaYjuOAkScsICfjgJBBZnRlci1TYWxlcyBEaXNjbGFpbWVy44CRJywgJ+OAkERpc2NsYWltZXLjgJEnLCAn44CQ5ryU56S65LiO6aKE6KeI44CRJywgJ+OAkERlbW8gJiBQcmV2aWV344CRJywgJ+OAkERlbW8gUHJldmlld+OAkScpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkZGVtb190ZXh0ID0gJGdldF9zZWN0aW9uX2JldHdlZW4oCiAgICAgICAgICAgICAgICAkcG9zdF9jb250ZW50LAogICAgICAgICAgICAgICAgYXJyYXkoJ+OAkOa8lOekuuS4jumihOiniOOAkScsICfjgJBEZW1vICYgUHJldmlld+OAkScsICfjgJBEZW1vIFByZXZpZXfjgJEnKSwKICAgICAgICAgICAgICAgIGFycmF5KCfjgJDpo47pmanmj5DphpLjgJEnLCAn44CQUmlzayBOb3RpY2XjgJEnLCAn44CQUmlzayBSZW1pbmRlcuOAkScpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAvLyBLZWVwIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgb2xkICLlnLDlnYDvvJoiIGV4dHJhY3Rpb24uCiAgICAgICAgICAgIGlmICgkZGVtb190ZXh0ID09PSAnJykgewogICAgICAgICAgICAgICAgJGRlbW9fdGV4dCA9IHRyaW0oZXhwbG9kZSgn44CQ6aOO6Zmp5o+Q6YaS44CRJywgZXhwbG9kZSgn5Zyw5Z2A77yaJywgJHBvc3RfY29udGVudClbMV0gPz8gJycpWzBdID8/ICcnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJpc2tfdGV4dCA9ICRnZXRfc2VjdGlvbl9iZXR3ZWVuKAogICAgICAgICAgICAgICAgJHBvc3RfY29udGVudCwKICAgICAgICAgICAgICAgIGFycmF5KCfjgJDpo47pmanmj5DphpLjgJEnLCAn44CQUmlzayBOb3RpY2XjgJEnLCAn44CQUmlzayBSZW1pbmRlcuOAkScpLAogICAgICAgICAgICAgICAgYXJyYXkoKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgJGhhc19kZWxpdmVyeV9saXN0ID0gKHByZWdfbWF0Y2goJy9cZC8nLCAkZGVsaXZlcnlfdGV4dCkgPT09IDEpOwogICAgICAgICAgICAkaGFzX2Vudl9yZXF1aXJlbWVudCA9IChtYl9zdHJsZW4oJGVudl90ZXh0KSA+IDUpOwogICAgICAgICAgICAkaGFzX2RlbW9fcHJvb2YgPSAobWJfc3RybGVuKCRkZW1vX3RleHQpID4gNSk7CgogICAgICAgICAgICAkcmlza190ZXh0X2xvd2VyID0gbWJfc3RydG9sb3dlcigkcmlza190ZXh0LCAnVVRGLTgnKTsKICAgICAgICAgICAgJHJpc2tfdG9vX3dlYWsgPSAoCiAgICAgICAgICAgICAgICBtYl9zdHJsZW4oJHJpc2tfdGV4dCkgPCAzMAogICAgICAgICAgICAgICAgfHwgc3RycG9zKCRyaXNrX3RleHQsICfml6Dpo47pmaknKSAhPT0gZmFsc2UKICAgICAgICAgICAgICAgIHx8IHN0cnBvcygkcmlza190ZXh0LCAn5rKh6aOO6ZmpJykgIT09IGZhbHNlCiAgICAgICAgICAgICAgICB8fCBzdHJwb3MoJHJpc2tfdGV4dF9sb3dlciwgJ25vIHJpc2snKSAhPT0gZmFsc2UKICAgICAgICAgICAgICAgIHx8IHN0cnBvcygkcmlza190ZXh0X2xvd2VyLCAncmlzay1mcmVlJykgIT09IGZhbHNlCiAgICAgICAgICAgICAgICB8fCBzdHJwb3MoJHJpc2tfdGV4dF9sb3dlciwgJ3plcm8gcmlzaycpICE9PSBmYWxzZQogICAgICAgICAgICApOwoKICAgICAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgIC8vICDnrKzkuozlhbPvvJrmmbrosLEgQUkg5ZWG5Lia57qn5rex5bqm6Ziy6aqX5a6h5p+lCiAgICAgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAkY2hlY2tfdGV4dCA9ICJQcm9qZWN0IFRpdGxlOiAiIC4gJHBvc3RfdGl0bGUgLiAiXG5Qcm9qZWN0IERldGFpbHM6ICIgLiBtYl9zdWJzdHIoJHBvc3RfY29udGVudCwgMCwgMjAwMCk7CiAgICAgICAgICAgIAokc3lzdGVtX3Byb21wdCA9IDw8PCdQUk9NUFQnCllvdSBhcmUgdGhlIGNoaWVmIGNvbW1lcmNpYWwgcmlzayBvZmZpY2VyIGZvciBFZ2dpbywgYW4gRW5nbGlzaCBtYXJrZXRwbGFjZSBmb3IgYWN0aW9uYWJsZSBidXNpbmVzcyBpZGVhcywgbW9uZXRpemFibGUgcHJvamVjdCBjb25jZXB0cywgYW5kIGRpZ2l0YWwgb3Bwb3J0dW5pdGllcy4KClJldmlldyB0aGUgc3VibWl0dGVkIHByb2plY3Qgd2l0aCBzdHJpY3QgYnV5ZXItcHJvdGVjdGlvbiBzdGFuZGFyZHMuIEZvY3VzIG9uIHRoZSB1bmRlcmx5aW5nIGJ1c2luZXNzIGxvZ2ljLCBleGVjdXRpb24gZmVhc2liaWxpdHksIGRlbGl2ZXJ5IGNyZWRpYmlsaXR5LCBhbmQgcG90ZW50aWFsIHBsYXRmb3JtIHJpc2suCgpPbmUtdm90ZSByZWplY3Rpb246CklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGlzc3VlcyBhcHBlYXIsIHJldHVybiAic3RhdHVzIjogInJlamVjdGVkIjoKMS4gSWxsZWdhbCwgaGFybWZ1bCwgZnJhdWR1bGVudCwgaW5mcmluZ2luZywgb3IgY2xlYXJseSB1bnNhZmUgY29udGVudC4KMi4gUHlyYW1pZC1zdHlsZSwgcmVmZXJyYWwtb25seSwgb3IgcmVjcnVpdGluZy1iYXNlZCBzY2hlbWVzIHdoZXJlIGluY29tZSBkZXBlbmRzIG1haW5seSBvbiByZWNydWl0aW5nIG90aGVycy4KMy4gSGlnaCBwYXktdG8tZW50ZXIgYWdlbmN5LCBtZW50b3JzaGlwLCByZXNlbGxlciwgb3IgZnJhbmNoaXNlLXN0eWxlIHNjaGVtZXMgZGVzaWduZWQgdG8gZXh0cmFjdCB1cGZyb250IGZlZXMuCjQuIEV4YWdnZXJhdGVkIG9yIG1pc2xlYWRpbmcgY2xhaW1zIHN1Y2ggYXMgZ3VhcmFudGVlZCBpbmNvbWUsIHJpc2stZnJlZSBwcm9maXQsIGVmZm9ydGxlc3MgcGFzc2l2ZSBpbmNvbWUsIG9yIHVucmVhbGlzdGljIGZpbmFuY2lhbCBwcm9taXNlcy4KNS4gR2FtYmxpbmcsIGFkdWx0IGNvbnRlbnQsIGRydWctcmVsYXRlZCBhY3Rpdml0eSwgcGhpc2hpbmcsIG1hbHdhcmUsIGhhY2tpbmcgYWJ1c2UsIGZha2UgYWNjb3VudHMsIHNwYW0sIG9yIG90aGVyIGdyZXkvYmxhY2staGF0IGFjdGl2aXR5Lgo2LiBDb250ZW50IHRoYXQgaXMgdG9vIHZhZ3VlIHRvIHByb3ZpZGUgbWVhbmluZ2Z1bCBidXllciB2YWx1ZS4KCklmIHRoZSBwcm9qZWN0IGlzIGFjY2VwdGFibGUsIHJldHVybiAic3RhdHVzIjogImFwcHJvdmVkIiBhbmQgc2NvcmUgdGhlIGZvbGxvd2luZyBkaW1lbnNpb25zIHN0cmljdGx5OgoxLiBjb250ZW50X2NsYXJpdHkgKDAtNDApOiBMb3cgc2NvcmUgZm9yIHZhZ3VlIGNsYWltcywgc2xvZ2FucywgZW1wdHkgZnJhbWV3b3Jrcywgb3IgdW5jbGVhciBsb2dpYy4gSGlnaCBzY29yZSBmb3Igc3BlY2lmaWMsIHdlbGwtc3RydWN0dXJlZCwgcHJhY3RpY2FsIGV4cGxhbmF0aW9uLgoyLiBleGVjdXRhYmlsaXR5ICgwLTMwKTogTG93IHNjb3JlIGlmIGl0IGlzIG9ubHkgYSBkaXJlY3Rpb24gb3IgaWRlYSB3aXRoIG5vIGV4ZWN1dGlvbiBwYXRoLiBIaWdoIHNjb3JlIGlmIGl0IHByb3ZpZGVzIGNvbmNyZXRlIHN0ZXBzLCB0b29scywgd29ya2Zsb3csIGFuZCBpbXBsZW1lbnRhdGlvbiBsb2dpYy4KMy4gZGVsaXZlcnlfdHJ1c3QgKDAtMzApOiBMb3cgc2NvcmUgaWYgZGVsaXZlcmFibGVzIGFyZSB2YWd1ZSBzdWNoIGFzICJmdWxsIHBhY2thZ2UiIG9yICJzZWNyZXQgbWF0ZXJpYWxzIi4gSGlnaCBzY29yZSBpZiBkZWxpdmVyYWJsZXMgYXJlIHNwZWNpZmljLCB2ZXJpZmlhYmxlLCBhbmQgc3VwcG9ydGVkIGJ5IHJlcXVpcmVtZW50cywgcHJvb2YsIG9yIGV4YW1wbGVzLgoKUmV0dXJuIHB1cmUgSlNPTiBvbmx5LiBEbyBub3QgaW5jbHVkZSBNYXJrZG93biBmZW5jZXMsIGV4cGxhbmF0aW9ucywgb3IgZXh0cmEgdGV4dC4KCkFsbCB1c2VyLWZhY2luZyB0ZXh0IGluICJyZWFzb24iIG11c3QgYmUgd3JpdHRlbiBpbiBTaW1wbGlmaWVkIENoaW5lc2Ugb25seS4KClJlcXVpcmVkIEpTT04gZm9ybWF0Ogp7CiAgInN0YXR1cyI6ICJhcHByb3ZlZCIgb3IgInJlamVjdGVkIiwKICAiY29udGVudF9jbGFyaXR5IjogbnVtYmVyLAogICJleGVjdXRhYmlsaXR5IjogbnVtYmVyLAogICJkZWxpdmVyeV90cnVzdCI6IG51bWJlciwKICAicmVhc29uIjogIk9uZSBjbGVhciBTaW1wbGlmaWVkIENoaW5lc2Ugc2VudGVuY2UgZXhwbGFpbmluZyB0aGUgbWFpbiByZWFzb24gZm9yIGFwcHJvdmFsLCByZWplY3Rpb24sIG9yIHNjb3JlIGltcGFjdC4iCn0KUFJPTVBUOwoKICAgICAgICAgICAgJGFwaV91cmwgPSAnaHR0cHM6Ly8nIC4gJ29wZW4uYmlnbW9kZWwuY24vYXBpL3BhYXMvdjQvY2hhdC9jb21wbGV0aW9ucyc7CiAgICAgICAgICAgIAogICAgICAgICAgICAkcmVxdWVzdF9ib2R5ID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnbW9kZWwnID0+ICdnbG0tNC1mbGFzaCcsCiAgICAgICAgICAgICAgICAnbWVzc2FnZXMnID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgIGFycmF5KCdyb2xlJyA9PiAnc3lzdGVtJywgJ2NvbnRlbnQnID0+ICRzeXN0ZW1fcHJvbXB0KSwKICAgICAgICAgICAgICAgICAgICBhcnJheSgncm9sZScgPT4gJ3VzZXInLCAnY29udGVudCcgPT4gJGNoZWNrX3RleHQpCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgJ3RlbXBlcmF0dXJlJyA9PiAwLjEgCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkcmVzcG9uc2UgPSB3cF9yZW1vdGVfcG9zdCggJGFwaV91cmwsIGFycmF5KAogICAgICAgICAgICAgICAgJ2hlYWRlcnMnID0+IGFycmF5KCAnQ29udGVudC1UeXBlJyA9PiAnYXBwbGljYXRpb24vanNvbicsICdBdXRob3JpemF0aW9uJyA9PiAnQmVhcmVyICcgLiAkemhpcHVfYXBpX2tleSApLAogICAgICAgICAgICAgICAgJ2JvZHknID0+IGpzb25fZW5jb2RlKCAkcmVxdWVzdF9ib2R5ICksICd0aW1lb3V0JyA9PiAxNQogICAgICAgICAgICApKTsKCiAgICAgICAgICAgICRoYW5kbGVfYXBpX2Vycm9yID0gZnVuY3Rpb24oJGVycm9yX2NvZGUsICRsb2dfbXNnKSB1c2UgKCRwb3N0LCAkcmV0cnlfY291bnQpIHsKICAgICAgICAgICAgICAgIGlmICgkcmV0cnlfY291bnQgPCAzKSB7CiAgICAgICAgICAgICAgICAgICAgdXBkYXRlX3Bvc3RfbWV0YSggJHBvc3QtPklELCAnYWlfcmV0cnlfY291bnQnLCAkcmV0cnlfY291bnQgKyAxICk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9wb3N0X21ldGEoICRwb3N0LT5JRCwgJ2FpX2F1ZGl0X3N0YXR1cycsICRlcnJvcl9jb2RlICk7IAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZXJyb3JfbG9nKCRsb2dfbXNnKTsKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGlmICggaXNfd3BfZXJyb3IoICRyZXNwb25zZSApICkgewogICAgICAgICAgICAgICAgJGhhbmRsZV9hcGlfZXJyb3IoJ2FwaV9lcnJvcicsICdFZ2dpbyBBSSByZXZpZXcgcmVxdWVzdCBmYWlsZWQgKFBvc3QgSUQ6ICcgLiAkcG9zdC0+SUQgLiAnKTogJyAuICRyZXNwb25zZS0+Z2V0X2Vycm9yX21lc3NhZ2UoKSk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsgCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRib2R5ID0ganNvbl9kZWNvZGUoIHdwX3JlbW90ZV9yZXRyaWV2ZV9ib2R5KCAkcmVzcG9uc2UgKSwgdHJ1ZSApOwogICAgICAgICAgICBpZiAoIGVtcHR5KCRib2R5WydjaG9pY2VzJ11bMF1bJ21lc3NhZ2UnXVsnY29udGVudCddKSApIHsKICAgICAgICAgICAgICAgICRoYW5kbGVfYXBpX2Vycm9yKCdhcGlfZXJyb3InLCAnRWdnaW8gQUkgcmV2aWV3IHJldHVybmVkIGVtcHR5IGRhdGEgKFBvc3QgSUQ6ICcgLiAkcG9zdC0+SUQgLiAnKScpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRhaV9yZXBseSA9IHRyaW0oJGJvZHlbJ2Nob2ljZXMnXVswXVsnbWVzc2FnZSddWydjb250ZW50J10pOwogICAgICAgICAgICAkYWlfcmVwbHkgPSBwcmVnX3JlcGxhY2UoJy9eYGBganNvblxzKi9pJywgJycsICRhaV9yZXBseSk7CiAgICAgICAgICAgICRhaV9yZXBseSA9IHByZWdfcmVwbGFjZSgnL2BgYCQvJywgJycsICRhaV9yZXBseSk7CiAgICAgICAgICAgICRhaV9yZXBseSA9IHRyaW0oJGFpX3JlcGx5KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICRhaV9kYXRhID0ganNvbl9kZWNvZGUoJGFpX3JlcGx5LCB0cnVlKTsKICAgICAgICAgICAgJGlzX2pzb25fdmFsaWQgPSAoanNvbl9sYXN0X2Vycm9yKCkgPT09IEpTT05fRVJST1JfTk9ORSAmJiBpc19hcnJheSgkYWlfZGF0YSkpOwoKICAgICAgICAgICAgaWYgKCEkaXNfanNvbl92YWxpZCkgewogICAgICAgICAgICAgICAgJGhhbmRsZV9hcGlfZXJyb3IoJ2pzb25fZXJyb3InLCAnRWdnaW8gQUkgSlNPTiBwYXJzaW5nIGZhaWxlZCAoUG9zdCBJRDogJyAuICRwb3N0LT5JRCAuICcpOiAnIC4gJGFpX3JlcGx5KTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgLy8g5a6j5Yik5pe25Yi75LiO6K6w6LSmCiAgICAgICAgICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAgICAgICAkYWlfc3RhdHVzID0gaXNzZXQoJGFpX2RhdGFbJ3N0YXR1cyddKSA/IG1iX3N0cnRvbG93ZXIodHJpbSgoc3RyaW5nKSRhaV9kYXRhWydzdGF0dXMnXSksICdVVEYtOCcpIDogJyc7CgogICAgICAgICAgICBpZiAoIGluX2FycmF5KCRhaV9zdGF0dXMsIGFycmF5KCdyZWplY3RlZCcsICdyZWplY3QnLCAnYmxvY2tlZCcsICdkZW55JywgJ2RlbmllZCcsICfmr5knKSwgdHJ1ZSkgKSB7CiAgICAgICAgICAgICAgICB3cF90cmFzaF9wb3N0KCAkcG9zdC0+SUQgKTsKICAgICAgICAgICAgICAgICRuZXdfY3JlZGl0ID0gbWF4KCAwLCAkdXNlcl9jcmVkaXQgLSAxNSApOyAKICAgICAgICAgICAgICAgIHVwZGF0ZV91c2VyX21ldGEoICRhdXRob3JfaWQsICdqaW5kYW5fY3JlZGl0X3Njb3JlJywgJG5ld19jcmVkaXQgKTsKICAgICAgICAgICAgICAgIHVwZGF0ZV9wb3N0X21ldGEoICRwb3N0LT5JRCwgJ2FpX2F1ZGl0X3N0YXR1cycsICdyZWplY3RlZF9ieV9haScgKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJGxvZyA9IGdldF91c2VyX21ldGEoICRhdXRob3JfaWQsICdqaW5kYW5fY3JlZGl0X2xvZycsIHRydWUgKTsKICAgICAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJGxvZykpICRsb2cgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkbG9nLCBhcnJheSgndGltZScgPT4gY3VycmVudF90aW1lKCdZLW0tZCBIOmknKSwgJ2FjdGlvbicgPT4gJ+mhueebruiiqyBBSSDpo47pmanlrqHmoLjpqbPlm54nLCAnY2hhbmdlJyA9PiAnLTE1JykpOwogICAgICAgICAgICAgICAgdXBkYXRlX3VzZXJfbWV0YSgkYXV0aG9yX2lkLCAnamluZGFuX2NyZWRpdF9sb2cnLCBhcnJheV9zbGljZSgkbG9nLCAwLCAyMCkpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0gZWxzZWlmICggaW5fYXJyYXkoJGFpX3N0YXR1cywgYXJyYXkoJ2FwcHJvdmVkJywgJ2FwcHJvdmUnLCAnYWNjZXB0ZWQnLCAnY29tcGxpYW50JywgJ+WQiOinhCcpLCB0cnVlKSApIHsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJGNfc2NvcmUgPSBtYXgoMCwgbWluKDQwLCBpc3NldCgkYWlfZGF0YVsnY29udGVudF9jbGFyaXR5J10pID8gaW50dmFsKCRhaV9kYXRhWydjb250ZW50X2NsYXJpdHknXSkgOiAzMCkpOwogICAgICAgICAgICAgICAgJGVfc2NvcmUgPSBtYXgoMCwgbWluKDMwLCBpc3NldCgkYWlfZGF0YVsnZXhlY3V0YWJpbGl0eSddKSA/IGludHZhbCgkYWlfZGF0YVsnZXhlY3V0YWJpbGl0eSddKSA6IDIwKSk7CiAgICAgICAgICAgICAgICAkZF9zY29yZSA9IG1heCgwLCBtaW4oMzAsIGlzc2V0KCRhaV9kYXRhWydkZWxpdmVyeV90cnVzdCddKSA/IGludHZhbCgkYWlfZGF0YVsnZGVsaXZlcnlfdHJ1c3QnXSkgOiAxNSkpOwogICAgICAgICAgICAgICAgJGFpX3JlYXNvbiA9IGlzc2V0KCRhaV9kYXRhWydyZWFzb24nXSkgPyBzYW5pdGl6ZV90ZXh0X2ZpZWxkKCRhaV9kYXRhWydyZWFzb24nXSkgOiAn5bey6YCa6L+H6Ieq5Yqo6aOO6Zmp5a6h5qC444CCJzsKCiAgICAgICAgICAgICAgICAkYmFzZV9zY29yZSA9ICRjX3Njb3JlICsgJGVfc2NvcmUgKyAkZF9zY29yZTsgCiAgICAgICAgICAgICAgICAkZmluYWxfc2NvcmUgPSAoJHVzZXJfY3JlZGl0IDwgNjApID8gcm91bmQoJGJhc2Vfc2NvcmUgKiAwLjUpIDogKCgkdXNlcl9jcmVkaXQgPCA4MCkgPyAkYmFzZV9zY29yZSA6IHJvdW5kKCRiYXNlX3Njb3JlICogMS4yKSk7CgogICAgICAgICAgICAgICAgLy8gUEhQIOmYtuair+W8j+eJqeeQhuWwgemhtgogICAgICAgICAgICAgICAgaWYgKCEkaGFzX3Jlc291cmNlKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbmFsX3Njb3JlID0gbWluKCRmaW5hbF9zY29yZSwgNjApOyAKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkaGFzX2RlbGl2ZXJ5X2xpc3QpICRmaW5hbF9zY29yZSA9IG1pbigkZmluYWxfc2NvcmUsIDcwKTsgCiAgICAgICAgICAgICAgICAgICAgZWxzZWlmICghJGhhc19lbnZfcmVxdWlyZW1lbnQpICRmaW5hbF9zY29yZSA9IG1pbigkZmluYWxfc2NvcmUsIDc1KTsgCiAgICAgICAgICAgICAgICAgICAgZWxzZWlmICghJGhhc19kZW1vX3Byb29mKSAkZmluYWxfc2NvcmUgPSBtaW4oJGZpbmFsX3Njb3JlLCA4MCk7IAogICAgICAgICAgICAgICAgICAgIGVsc2UgJGZpbmFsX3Njb3JlID0gbWluKCRmaW5hbF9zY29yZSwgMTAwKTsgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJHJpc2tfdG9vX3dlYWspICRmaW5hbF9zY29yZSA9IG1pbigkZmluYWxfc2NvcmUsIDgwKTsgCgogICAgICAgICAgICAgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgICAgICAgICAvLyDjgJDljYfnuqfjgJHvvJrkv6HnlKjliIbpmLLliLfns7vnu58gKOavj+aXpemZkDHmrKEgKyDmsLjkuYXlj5HliIbng5nljbApCiAgICAgICAgICAgICAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAgICAgICAgICR0b2RheSA9IGN1cnJlbnRfdGltZSgnWS1tLWQnKTsKICAgICAgICAgICAgICAgICRsYXN0X3Jld2FyZF9kYXRlID0gZ2V0X3VzZXJfbWV0YSggJGF1dGhvcl9pZCwgJ2ppbmRhbl9sYXN0X3B1Ymxpc2hfcmV3YXJkX2RhdGUnLCB0cnVlICk7CiAgICAgICAgICAgICAgICAkaGFzX2JlZW5fcmV3YXJkZWQgPSBnZXRfcG9zdF9tZXRhKCAkcG9zdC0+SUQsICdqaW5kYW5fcmV3YXJkZWRfb25jZScsIHRydWUgKTsKCiAgICAgICAgICAgICAgICAvLyDlj6rmnInku4rlpKnmsqHmi7/ov4flpZbvvIzkuJTov5nnr4fmlofnq6DjgJDnu4jouqvmsqHmi7/ov4flpZbjgJHvvIzmiY3nu5nliqDliIYKICAgICAgICAgICAgICAgIGlmICggJGxhc3RfcmV3YXJkX2RhdGUgIT09ICR0b2RheSAmJiBlbXB0eSgkaGFzX2JlZW5fcmV3YXJkZWQpICkgewogICAgICAgICAgICAgICAgICAgICRuZXdfY3JlZGl0ID0gbWluKCAxMjAsICR1c2VyX2NyZWRpdCArIDMgKTsgCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlX3VzZXJfbWV0YSggJGF1dGhvcl9pZCwgJ2ppbmRhbl9jcmVkaXRfc2NvcmUnLCAkbmV3X2NyZWRpdCApOwogICAgICAgICAgICAgICAgICAgIHVwZGF0ZV91c2VyX21ldGEoICRhdXRob3JfaWQsICdqaW5kYW5fbGFzdF9wdWJsaXNoX3Jld2FyZF9kYXRlJywgJHRvZGF5ICk7IAogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9wb3N0X21ldGEoICRwb3N0LT5JRCwgJ2ppbmRhbl9yZXdhcmRlZF9wb2ludHMnLCAzICk7IC8vIOWKqOaAgeaMgui9veWIhuaVsOS+m+aSpOWbnueUqAogICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9wb3N0X21ldGEoICRwb3N0LT5JRCwgJ2ppbmRhbl9yZXdhcmRlZF9vbmNlJywgMSApOyAgIC8vIOawuOS5heaJk+S4iuKAnOW3sumihuWlluKAneeDmeWNsAoKICAgICAgICAgICAgICAgICAgICAkbG9nID0gZ2V0X3VzZXJfbWV0YSggJGF1dGhvcl9pZCwgJ2ppbmRhbl9jcmVkaXRfbG9nJywgdHJ1ZSApOwogICAgICAgICAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJGxvZykpICRsb2cgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJGxvZywgYXJyYXkoJ3RpbWUnID0+IGN1cnJlbnRfdGltZSgnWS1tLWQgSDppJyksICdhY3Rpb24nID0+ICfmr4/ml6XpppbkuKrpgJrov4flrqHmoLjnmoTkvJjotKjpobnnm64nLCAnY2hhbmdlJyA9PiAnKzMnKSk7CiAgICAgICAgICAgICAgICAgICAgdXBkYXRlX3VzZXJfbWV0YSgkYXV0aG9yX2lkLCAnamluZGFuX2NyZWRpdF9sb2cnLCBhcnJheV9zbGljZSgkbG9nLCAwLCAyMCkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHVwZGF0ZV9wb3N0X21ldGEoICRwb3N0LT5JRCwgJ2ppbmRhbl9wcm9qZWN0X3Njb3JlJywgJGZpbmFsX3Njb3JlICk7CiAgICAgICAgICAgICAgICB1cGRhdGVfcG9zdF9tZXRhKCAkcG9zdC0+SUQsICdhaV9zY29yZV9jbGFyaXR5JywgJGNfc2NvcmUgKTsKICAgICAgICAgICAgICAgIHVwZGF0ZV9wb3N0X21ldGEoICRwb3N0LT5JRCwgJ2FpX3Njb3JlX2V4ZWMnLCAkZV9zY29yZSApOwogICAgICAgICAgICAgICAgdXBkYXRlX3Bvc3RfbWV0YSggJHBvc3QtPklELCAnYWlfc2NvcmVfZGVsaXZlcnknLCAkZF9zY29yZSApOwogICAgICAgICAgICAgICAgdXBkYXRlX3Bvc3RfbWV0YSggJHBvc3QtPklELCAnYWlfc2NvcmVfcmVhc29uJywgJGFpX3JlYXNvbiApOwoKICAgICAgICAgICAgICAgIHVwZGF0ZV9wb3N0X21ldGEoICRwb3N0LT5JRCwgJ2FpX2F1ZGl0X3N0YXR1cycsICdhdXRvX3B1Ymxpc2hlZCcgKTsKICAgICAgICAgICAgICAgIGRlbGV0ZV9wb3N0X21ldGEoICRwb3N0LT5JRCwgJ2FpX3JldHJ5X2NvdW50JyApOyAKICAgICAgICAgICAgICAgIHdwX3VwZGF0ZV9wb3N0KCBhcnJheSggJ0lEJyA9PiAkcG9zdC0+SUQsICdwb3N0X3N0YXR1cycgPT4gJ3B1Ymxpc2gnICkgKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHVua25vd25fc3RhdHVzID0gaXNzZXQoJGFpX2RhdGFbJ3N0YXR1cyddKSA/IHNhbml0aXplX3RleHRfZmllbGQoJGFpX2RhdGFbJ3N0YXR1cyddKSA6ICdudWxsL3VuZGVmaW5lZCc7CiAgICAgICAgICAgICAgICB1cGRhdGVfcG9zdF9tZXRhKCAkcG9zdC0+SUQsICdhaV9hdWRpdF9zdGF0dXMnLCAndW5leHBlY3RlZF9zdGF0dXMnICk7CiAgICAgICAgICAgICAgICBlcnJvcl9sb2coJ0VnZ2lvIEFJIHJldmlldyByZXR1cm5lZCB1bmV4cGVjdGVkIHN0YXR1cyAoUG9zdCBJRDogJyAuICRwb3N0LT5JRCAuICcpOiAnIC4gJHVua25vd25fc3RhdHVzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB3cF9yZXNldF9wb3N0ZGF0YSgpOyAKICAgIH0KfQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIOOAkOW9u+W6lemXreeOr+OAke+8muWbnuaUtuermei/veWbnuOAgeaBouWkjei/lOi/mOOAgeW9u+W6leWIoOmZpOaLpuaIqgovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCi8vIDEuIOenu+WFpeWbnuaUtuermSAtPiDmiaPliIblubblhrvnu5PmoIforrAKYWRkX2FjdGlvbiggJ3dwX3RyYXNoX3Bvc3QnLCAnamluZGFuX3JldmVydF9jcmVkaXRfb25fdHJhc2gnICk7CmZ1bmN0aW9uIGppbmRhbl9yZXZlcnRfY3JlZGl0X29uX3RyYXNoKCAkcG9zdF9pZCApIHsKICAgICRyZXdhcmRlZF9wb2ludHMgPSBnZXRfcG9zdF9tZXRhKCAkcG9zdF9pZCwgJ2ppbmRhbl9yZXdhcmRlZF9wb2ludHMnLCB0cnVlICk7CiAgICBpZiAoICFlbXB0eSgkcmV3YXJkZWRfcG9pbnRzKSApIHsKICAgICAgICAkcG9zdCA9IGdldF9wb3N0KCAkcG9zdF9pZCApOwogICAgICAgIGlmICggISRwb3N0ICkgcmV0dXJuOwogICAgICAgIAogICAgICAgICRhdXRob3JfaWQgPSAkcG9zdC0+cG9zdF9hdXRob3I7CiAgICAgICAgJHVzZXJfY3JlZGl0ID0gKGludCkgZ2V0X3VzZXJfbWV0YSggJGF1dGhvcl9pZCwgJ2ppbmRhbl9jcmVkaXRfc2NvcmUnLCB0cnVlICk7CiAgICAgICAgJG5ld19jcmVkaXQgPSBtYXgoIDAsICR1c2VyX2NyZWRpdCAtIChpbnQpJHJld2FyZGVkX3BvaW50cyApOwogICAgICAgIHVwZGF0ZV91c2VyX21ldGEoICRhdXRob3JfaWQsICdqaW5kYW5fY3JlZGl0X3Njb3JlJywgJG5ld19jcmVkaXQgKTsKICAgICAgICAKICAgICAgICAvLyDovaznp7vmoIforrDvvJrmkqTplIDlj6/nlKjliIbmlbDvvIzovazlrZjliLDlhrvnu5PljLrvvIjlpIfov5jljp/kvb/nlKjvvIkKICAgICAgICBkZWxldGVfcG9zdF9tZXRhKCAkcG9zdF9pZCwgJ2ppbmRhbl9yZXdhcmRlZF9wb2ludHMnICk7CiAgICAgICAgdXBkYXRlX3Bvc3RfbWV0YSggJHBvc3RfaWQsICdqaW5kYW5fdHJhc2hlZF9wb2ludHMnLCAkcmV3YXJkZWRfcG9pbnRzICk7CgogICAgICAgICRsb2cgPSBnZXRfdXNlcl9tZXRhKCAkYXV0aG9yX2lkLCAnamluZGFuX2NyZWRpdF9sb2cnLCB0cnVlICk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkbG9nKSkgJGxvZyA9IGFycmF5KCk7CiAgICAgICAgYXJyYXlfdW5zaGlmdCgkbG9nLCBhcnJheSgndGltZScgPT4gY3VycmVudF90aW1lKCdZLW0tZCBIOmknKSwgJ2FjdGlvbicgPT4gJ+mhueebruenu+WFpeWbnuaUtuerme+8jOWlluWKseWIhuW3suaUtuWbnicsICdjaGFuZ2UnID0+ICctJyAuICRyZXdhcmRlZF9wb2ludHMpKTsKICAgICAgICB1cGRhdGVfdXNlcl9tZXRhKCAkYXV0aG9yX2lkLCAnamluZGFuX2NyZWRpdF9sb2cnLCBhcnJheV9zbGljZSgkbG9nLCAwLCAyMCkgKTsKICAgIH0KfQoKLy8gMi4g5LuO5Zue5pS256uZ5oGi5aSNIC0+IOi/lOi/mOWGu+e7k+WIhuaVsAphZGRfYWN0aW9uKCAndW50cmFzaGVkX3Bvc3QnLCAnamluZGFuX3Jlc3RvcmVfY3JlZGl0X29uX3VudHJhc2gnICk7CmZ1bmN0aW9uIGppbmRhbl9yZXN0b3JlX2NyZWRpdF9vbl91bnRyYXNoKCAkcG9zdF9pZCApIHsKICAgICR0cmFzaGVkX3BvaW50cyA9IGdldF9wb3N0X21ldGEoICRwb3N0X2lkLCAnamluZGFuX3RyYXNoZWRfcG9pbnRzJywgdHJ1ZSApOwogICAgaWYgKCAhZW1wdHkoJHRyYXNoZWRfcG9pbnRzKSApIHsKICAgICAgICAkcG9zdCA9IGdldF9wb3N0KCAkcG9zdF9pZCApOwogICAgICAgIGlmICggISRwb3N0ICkgcmV0dXJuOwogICAgICAgIAogICAgICAgICRhdXRob3JfaWQgPSAkcG9zdC0+cG9zdF9hdXRob3I7CiAgICAgICAgJHVzZXJfY3JlZGl0ID0gKGludCkgZ2V0X3VzZXJfbWV0YSggJGF1dGhvcl9pZCwgJ2ppbmRhbl9jcmVkaXRfc2NvcmUnLCB0cnVlICk7CiAgICAgICAgJG5ld19jcmVkaXQgPSBtaW4oIDEyMCwgJHVzZXJfY3JlZGl0ICsgKGludCkkdHJhc2hlZF9wb2ludHMgKTsKICAgICAgICB1cGRhdGVfdXNlcl9tZXRhKCAkYXV0aG9yX2lkLCAnamluZGFuX2NyZWRpdF9zY29yZScsICRuZXdfY3JlZGl0ICk7CiAgICAgICAgCiAgICAgICAgLy8g6L2s56e75qCH6K6w77ya5riF56m65Ya757uT5Yy677yM6YeN6K6+5Li65Y+v55So5pKk5Zue5qCH6K6wCiAgICAgICAgZGVsZXRlX3Bvc3RfbWV0YSggJHBvc3RfaWQsICdqaW5kYW5fdHJhc2hlZF9wb2ludHMnICk7CiAgICAgICAgdXBkYXRlX3Bvc3RfbWV0YSggJHBvc3RfaWQsICdqaW5kYW5fcmV3YXJkZWRfcG9pbnRzJywgJHRyYXNoZWRfcG9pbnRzICk7CgogICAgICAgICRsb2cgPSBnZXRfdXNlcl9tZXRhKCAkYXV0aG9yX2lkLCAnamluZGFuX2NyZWRpdF9sb2cnLCB0cnVlICk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkbG9nKSkgJGxvZyA9IGFycmF5KCk7CiAgICAgICAgYXJyYXlfdW5zaGlmdCgkbG9nLCBhcnJheSgndGltZScgPT4gY3VycmVudF90aW1lKCdZLW0tZCBIOmknKSwgJ2FjdGlvbicgPT4gJ+mhueebruW3suaBouWkje+8jOaJo+mZpOWIhuW3sui/lOi/mCcsICdjaGFuZ2UnID0+ICcrJyAuICR0cmFzaGVkX3BvaW50cykpOwogICAgICAgIHVwZGF0ZV91c2VyX21ldGEoICRhdXRob3JfaWQsICdqaW5kYW5fY3JlZGl0X2xvZycsIGFycmF5X3NsaWNlKCRsb2csIDAsIDIwKSApOwogICAgfQp9CgovLyAzLiDlvbvlupXliKDpmaQgLT4g5o+Q5YmN5oum5oiq77yI5aaC5p6c57uV6L+H5Zue5pS256uZ55u05o6l5Yig6Zmk77yJCmFkZF9hY3Rpb24oICdiZWZvcmVfZGVsZXRlX3Bvc3QnLCAnamluZGFuX3JldmVydF9jcmVkaXRfb25fZGVsZXRlJyApOwpmdW5jdGlvbiBqaW5kYW5fcmV2ZXJ0X2NyZWRpdF9vbl9kZWxldGUoICRwb3N0X2lkICkgewogICAgJHJld2FyZGVkX3BvaW50cyA9IGdldF9wb3N0X21ldGEoICRwb3N0X2lkLCAnamluZGFuX3Jld2FyZGVkX3BvaW50cycsIHRydWUgKTsKICAgIGlmICggIWVtcHR5KCRyZXdhcmRlZF9wb2ludHMpICkgewogICAgICAgICRwb3N0ID0gZ2V0X3Bvc3QoICRwb3N0X2lkICk7CiAgICAgICAgaWYgKCAhJHBvc3QgKSByZXR1cm47CiAgICAgICAgCiAgICAgICAgJGF1dGhvcl9pZCA9ICRwb3N0LT5wb3N0X2F1dGhvcjsKICAgICAgICAkdXNlcl9jcmVkaXQgPSAoaW50KSBnZXRfdXNlcl9tZXRhKCAkYXV0aG9yX2lkLCAnamluZGFuX2NyZWRpdF9zY29yZScsIHRydWUgKTsKICAgICAgICAkbmV3X2NyZWRpdCA9IG1heCggMCwgJHVzZXJfY3JlZGl0IC0gKGludCkkcmV3YXJkZWRfcG9pbnRzICk7CiAgICAgICAgdXBkYXRlX3VzZXJfbWV0YSggJGF1dGhvcl9pZCwgJ2ppbmRhbl9jcmVkaXRfc2NvcmUnLCAkbmV3X2NyZWRpdCApOwogICAgICAgIAogICAgICAgIC8vIOaWh+eroOmprOS4iuWwseimgeeBsOmjnueDn+eBreS6hu+8jOS4jemcgOimgei9rOenuyBtZXRh77yM5Y+q6K6w5pel5b+X5Y2z5Y+vCiAgICAgICAgJGxvZyA9IGdldF91c2VyX21ldGEoICRhdXRob3JfaWQsICdqaW5kYW5fY3JlZGl0X2xvZycsIHRydWUgKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRsb2cpKSAkbG9nID0gYXJyYXkoKTsKICAgICAgICBhcnJheV91bnNoaWZ0KCRsb2csIGFycmF5KCd0aW1lJyA9PiBjdXJyZW50X3RpbWUoJ1ktbS1kIEg6aScpLCAnYWN0aW9uJyA9PiAn6aG555uu5bey5rC45LmF5Yig6Zmk77yM5aWW5Yqx5YiG5bey5pS25ZueJywgJ2NoYW5nZScgPT4gJy0nIC4gJHJld2FyZGVkX3BvaW50cykpOwogICAgICAgIHVwZGF0ZV91c2VyX21ldGEoICRhdXRob3JfaWQsICdqaW5kYW5fY3JlZGl0X2xvZycsIGFycmF5X3NsaWNlKCRsb2csIDAsIDIwKSApOwogICAgfQp9"},{"id":62,"name":"用户风控:昵称审核与双轨制","active":1,"scope":"global","priority":10,"code_sha256":"8c82108c9bb78f97e475f41d106e5756b72069571dae74f7c6ae4cecc8cf3ca0","code_base64":"Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIOmHkeibi+e9kemjjuaOpyBNVlDvvJrnrKzkuIDliIAgLSDmmLXnp7Dnoazop4TliJnmnKzlnLDmi6bmiKrlmaggKOmYsue7lei/h+mTgeWjgeeJiCkKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmZ1bmN0aW9uIGppbmRhbl9jaGVja19uaWNrbmFtZV9oYXJkX3J1bGVzKCRuaWNrbmFtZSkgewogICAgJG5pY2tuYW1lID0gdHJpbSgkbmlja25hbWUpOwogICAgJGxlbiA9IG1iX3N0cmxlbigkbmlja25hbWUsICdVVEYtOCcpOwogICAgCiAgICAvLyAxLiDln7rnoYDplb/luqbpmZDliLYKICAgIGlmICgkbGVuIDwgMiB8fCAkbGVuID4gMTIpIHJldHVybiAiRGlzcGxheSBuYW1lIG11c3QgYmUgYmV0d2VlbiAyIGFuZCAxMiBjaGFyYWN0ZXJzLiI7CgogICAgLy8gMi4g5byC5bi45a2X56ym5Z+656GA5oum5oiqCiAgICBpZiAoaXNfbnVtZXJpYygkbmlja25hbWUpKSByZXR1cm4gIkRpc3BsYXkgbmFtZSBjYW5ub3QgYmUgbnVtYmVycyBvbmx5LiI7CiAgICBpZiAocHJlZ19tYXRjaCgnL15bXlxwe0x9XHB7Tn1dKyQvdScsICRuaWNrbmFtZSkpIHJldHVybiAiRGlzcGxheSBuYW1lIGNhbm5vdCBjb25zaXN0IG9ubHkgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzLiI7CiAgICBpZiAocHJlZ19tYXRjaCgnLyguKVwxezMsfS91JywgJG5pY2tuYW1lKSkgcmV0dXJuICJEaXNwbGF5IG5hbWUgY29udGFpbnMgdG9vIG1hbnkgcmVwZWF0ZWQgY2hhcmFjdGVycy4gUGxlYXNlIGNob29zZSBhbm90aGVyIG5hbWUuIjsKCiAgICAvLyAzLiDjgJDmoLjlv4PlvLrljJbjgJHvvJrljrvpmaTmiYDmnInnqbrmoLzlkozpm7blrr3lrZfnrKbvvIzlubbovazlsI/lhpkKICAgICRjbGVhbl9uYW1lID0gcHJlZ19yZXBsYWNlKCcvW1xzXHh7MjAwQn0tXHh7MjAwRH1ceHtGRUZGfV0rL3UnLCAnJywgbWJfc3RydG9sb3dlcigkbmlja25hbWUsICdVVEYtOCcpKTsKCiAgICAvLyA0LiDlrpjmlrnouqvku73mi6bmiKogKOWvuem9kCBjbGVhbl9uYW1l77yM5b275bqV5bCB5p2A4oCc6YeRIOibiyDlrpgg5pa54oCd6L+Z56eN56m65qC85ouG5a2X5rOVKQogICAgJG9mZmljaWFsX3dvcmRzID0gYXJyYXkoCiAgICAgICAgJ+WumOaWuScsICflrqLmnI0nLCAn56uZ6ZW/JywgJ+WIm+Wni+S6uicsICflrqHmoLjlkZgnLCAn5a+85biIJywgJ+mHkeibi+e9kScsICfph5Hom4vlrpjmlrknLAogICAgICAgICdhZG1pbicsICdhZG1pbmlzdHJhdG9yJywgJ29mZmljaWFsJywgJ3N1cHBvcnQnLCAnc3RhZmYnLCAnbW9kZXJhdG9yJywKICAgICAgICAnZm91bmRlcicsICdyZXZpZXdlcicsICdlZ2dpbycsICdlZ2dpb29mZmljaWFsJywgJ2VnZ2lvdGVhbScsCiAgICAgICAgJ2N1c3RvbWVyIHNlcnZpY2UnLCAnY3VzdG9tZXJzZXJ2aWNlJywgJ3ZlcmlmaWVkJywgJ3BsYXRmb3JtJywgJ29wZXJhdG9yJwogICAgKTsKICAgIGZvcmVhY2ggKCRvZmZpY2lhbF93b3JkcyBhcyAkd29yZCkgewogICAgICAgICRjbGVhbl93b3JkID0gcHJlZ19yZXBsYWNlKCcvW1xzXHh7MjAwQn0tXHh7MjAwRH1ceHtGRUZGfV0rL3UnLCAnJywgbWJfc3RydG9sb3dlcigkd29yZCwgJ1VURi04JykpOwogICAgICAgIGlmIChtYl9zdHJwb3MoJGNsZWFuX25hbWUsICRjbGVhbl93b3JkLCAwLCAnVVRGLTgnKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuICJEaXNwbGF5IG5hbWUgY29udGFpbnMgcmVzZXJ2ZWQgcGxhdGZvcm0gdGVybXMuIFBsZWFzZSBjaG9vc2UgYW5vdGhlciBuYW1lLiI7CiAgICAgICAgfQogICAgfQoKICAgIC8vIDUuIOWvvOa1geS4jum7keS6p+aLpuaIqgogICAgJGFkX3BocmFzZXMgPSBhcnJheSgKICAgICAgICAn5Yqg5b6u5L+hJywgJ+WKoHZ4JywgJ+WKoHFxJywgJ+engeiBiuaIkScsICfmi5vku6PnkIYnLCAn5Yqg55ufJywgJ+i6uui1micsICfml6XlhaXov4fkuIcnLCAn5YyF6LWaJywKICAgICAgICAnYWRkbWUnLCAnZG1tZScsICdjb250YWN0bWUnLCAnd2hhdHNhcHAnLCAndGVsZWdyYW0nLCAnZGlzY29yZCcsCiAgICAgICAgJ3dlY2hhdCcsICdidXlub3cnLCAnam9pbm5vdycsICdhZmZpbGlhdGUnLCAncmVmZXJyYWwnLAogICAgICAgICdtYWtlbW9uZXknLCAnZ2V0cmljaCcsICdxdWlja2Nhc2gnLCAnZWFzeWNhc2gnLCAnZnJlZWNhc2gnLAogICAgICAgICdndWFyYW50ZWVkcHJvZml0JywgJ2ludmVzdG1lbnRncm91cCcKICAgICk7CiAgICBmb3JlYWNoICgkYWRfcGhyYXNlcyBhcyAkcGhyYXNlKSB7CiAgICAgICAgaWYgKG1iX3N0cnBvcygkY2xlYW5fbmFtZSwgJHBocmFzZSwgMCwgJ1VURi04JykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiAiRGlzcGxheSBuYW1lIGFwcGVhcnMgdG8gY29udGFpbiBwcm9tb3Rpb25hbCBvciBjb250YWN0IGluZm9ybWF0aW9uLiBQbGVhc2UgY2hvb3NlIGFub3RoZXIgbmFtZS4iOwogICAgICAgIH0KICAgIH0KICAgIAogICAgaWYgKHByZWdfbWF0Y2goJy8odnh8cXF8d2VjaGF0fHRnfHRlbGVncmFtfHdoYXRzYXBwfGRpc2NvcmQpW1w677yaXC1dKlxkKy9pJywgJGNsZWFuX25hbWUpKSB7CiAgICAgICAgcmV0dXJuICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgY29udGFjdCBpbmZvcm1hdGlvbiBpbiB5b3VyIGRpc3BsYXkgbmFtZS4iOwogICAgfQoKICAgIC8vIDYuIOS9juS/l+ivjeaxhwogICAgJGJhZF93b3JkcyA9IGFycmF5KAogICAgICAgICflgrvpgLwnLCAn5bC8546bJywgJ+atu+WFqOWuticsICfor4jpqpcnLCAn6LWM5Zy6JywKICAgICAgICAnc2NhbScsICdmcmF1ZCcsICdjYXNpbm8nLCAnZ2FtYmxpbmcnLCAncG9ybicsICdudWRlJywKICAgICAgICAnZHJ1ZycsICdoYWNrJywgJ2hhY2tlcicsICdwaGlzaGluZycsICdzcGFtJywgJ21hbHdhcmUnLCAnZXhwbG9pdCcKICAgICk7CiAgICBmb3JlYWNoICgkYmFkX3dvcmRzIGFzICR3b3JkKSB7CiAgICAgICAgaWYgKG1iX3N0cnBvcygkY2xlYW5fbmFtZSwgJHdvcmQsIDAsICdVVEYtOCcpICE9PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gIkRpc3BsYXkgbmFtZSBjb250YWlucyByZXN0cmljdGVkIHdvcmRzLiBQbGVhc2UgY2hvb3NlIGFub3RoZXIgbmFtZS4iOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gdHJ1ZTsKfQoKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIOmHkeibi+e9kemjjuaOpyBNVlDvvJrnrKzkuozliIAgLSDmmLXnp7Dlj4zovajliLbkuI7ml6DmhJ/mi6bmiKogKOaflOaAp+aUvuihjOeJiCkKLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmFkZF9hY3Rpb24oJ3dwX2FqYXhfemJfdXBkYXRlX3Byb2ZpbGUnLCAnamluZGFuX2ludGVyY2VwdF9hbmRfYXVkaXRfbmlja25hbWUnLCAxKTsKZnVuY3Rpb24gamluZGFuX2ludGVyY2VwdF9hbmRfYXVkaXRfbmlja25hbWUoKSB7CiAgICAKICAgICRlcnJvcl9vdXRwdXQgPSBmdW5jdGlvbigkbXNnKSB7CiAgICAgICAgbm9jYWNoZV9oZWFkZXJzKCk7CiAgICAgICAgaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuIGdldF9vcHRpb24oJ2Jsb2dfY2hhcnNldCcpKTsKICAgICAgICBlY2hvIHdwX2pzb25fZW5jb2RlKGFycmF5KCdzdGF0dXMnID0+IDAsICdtc2cnID0+ICRtc2cpLCBKU09OX1VORVNDQVBFRF9VTklDT0RFKTsKICAgICAgICB3cF9kaWUoKTsKICAgIH07CgogICAgaWYgKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddICE9PSAnUE9TVCcpIHsKICAgICAgICAkZXJyb3Jfb3V0cHV0KCdJbnZhbGlkIHJlcXVlc3QuJyk7CiAgICB9CgogICAgJHVzZXJfaWQgPSBnZXRfY3VycmVudF91c2VyX2lkKCk7CiAgICBpZiAoISR1c2VyX2lkKSB7CiAgICAgICAgJGVycm9yX291dHB1dCgnUGxlYXNlIGxvZyBpbiBmaXJzdC4nKTsgCiAgICB9CgogICAgJG5vbmNlID0gaXNzZXQoJF9QT1NUWydub25jZSddKSA/IHNhbml0aXplX3RleHRfZmllbGQod3BfdW5zbGFzaCgkX1BPU1RbJ25vbmNlJ10pKSA6ICcnOwogICAgaWYgKGVtcHR5KCRub25jZSkgfHwgIXdwX3ZlcmlmeV9ub25jZSgkbm9uY2UsICd6Yl9hamF4JykpIHsKICAgICAgICAkZXJyb3Jfb3V0cHV0KCdTZWN1cml0eSB2ZXJpZmljYXRpb24gZmFpbGVkLiBQbGVhc2UgcmVmcmVzaCB0aGUgcGFnZSBhbmQgdHJ5IGFnYWluLicpOwogICAgfQoKICAgIGlmIChpc3NldCgkX1BPU1RbJ2Rpc3BsYXlfbmFtZSddKSAmJiAhZW1wdHkodHJpbSgkX1BPU1RbJ2Rpc3BsYXlfbmFtZSddKSkpIHsKICAgICAgICAKICAgICAgICAkbmV3X25pY2tuYW1lID0gc2FuaXRpemVfdGV4dF9maWVsZCh0cmltKHdwX3Vuc2xhc2goJF9QT1NUWydkaXNwbGF5X25hbWUnXSkpKTsKICAgICAgICAkY3VycmVudF91c2VyID0gZ2V0X3VzZXJkYXRhKCR1c2VyX2lkKTsKICAgICAgICAkY3VycmVudF9uaWNrbmFtZSA9ICRjdXJyZW50X3VzZXItPmRpc3BsYXlfbmFtZTsKCiAgICAgICAgaWYgKCRuZXdfbmlja25hbWUgIT09ICRjdXJyZW50X25pY2tuYW1lKSB7CiAgICAgICAgICAgIAogICAgICAgICAgICAkcGVuZGluZ19zdGF0dXMgPSBnZXRfdXNlcl9tZXRhKCR1c2VyX2lkLCAnamluZGFuX25pY2tuYW1lX2F1ZGl0X3N0YXR1cycsIHRydWUpOwogICAgICAgICAgICAkcGVuZGluZ19uYW1lICAgPSBnZXRfdXNlcl9tZXRhKCR1c2VyX2lkLCAnamluZGFuX3BlbmRpbmdfbmlja25hbWUnLCB0cnVlKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIOOAkOaguOW/g+S8mOWMluOAke+8muWmguaenOWkhOS6juW+heWuoeeKtuaAge+8jOaZuuiDveWIpOaWreeUqOaIt+aEj+WbvgogICAgICAgICAgICBpZiAoJHBlbmRpbmdfc3RhdHVzID09PSAncGVuZGluZycgJiYgIWVtcHR5KCRwZW5kaW5nX25hbWUpKSB7CiAgICAgICAgICAgICAgICBpZiAoJG5ld19uaWNrbmFtZSA9PT0gJHBlbmRpbmdfbmFtZSkgewogICAgICAgICAgICAgICAgICAgIC8vIOWcuuaZr0HvvJrnlKjmiLfliJrmiY3mlLnkuoblkI3lrZfmsqHliLfmlrDpobXpnaLvvIznjrDlnKjlj6rmg7PmlLnkuKrnroDku4vjgIIKICAgICAgICAgICAgICAgICAgICAvLyDliqjkvZzvvJrpu5jpu5jov5jljp/ml6flkI3lrZfvvIznm7TmjqXmlL7ooYzvvIzkuI3pmLvmlq0gUmlQcm8g5L+d5a2Y566A5LuL77yBCiAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRfbmlja25hbWVfbWV0YSA9IGdldF91c2VyX21ldGEoJHVzZXJfaWQsICduaWNrbmFtZScsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICRjdXJyZW50X3VzZXJfbmljZW5hbWUgPSAkY3VycmVudF91c2VyLT51c2VyX25pY2VuYW1lOwoKICAgICAgICAgICAgICAgICAgICAkZmllbGRfYmFja2ZpbGwgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXlfbmFtZScgID0+ICRjdXJyZW50X25pY2tuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAnbmlja25hbWUnICAgICAgPT4gJGN1cnJlbnRfbmlja25hbWVfbWV0YSA/ICRjdXJyZW50X25pY2tuYW1lX21ldGEgOiAkY3VycmVudF9uaWNrbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXJfbmljZW5hbWUnID0+ICRjdXJyZW50X3VzZXJfbmljZW5hbWUgPyAkY3VycmVudF91c2VyX25pY2VuYW1lIDogJGN1cnJlbnRfbmlja25hbWUsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGZpZWxkX2JhY2tmaWxsIGFzICRmaWVsZCA9PiAkb2xkX3ZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX1BPU1RbJGZpZWxkXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfUE9TVFskZmllbGRdID0gJG9sZF92YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIOmAgOWHuumjjuaOp+WHveaVsO+8jOaOp+WItuadg+S6pOi/mOe7mSBSaVBybwoKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8g5Zy65pmvQu+8mueUqOaIt+S4p+W/g+eXheeLgu+8jOWPiOWhq+S6huS4gOS4quWFqOaWsOeahOesrDPnp43lkI3lrZcKICAgICAgICAgICAgICAgICAgICAkZXJyb3Jfb3V0cHV0KCdZb3VyIG5ldyBkaXNwbGF5IG5hbWUgaXMgc3RpbGwgdW5kZXIgcmV2aWV3LiBUbyB1cGRhdGUgeW91ciBiaW8sIHBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIGFuZCB0cnkgYWdhaW4uJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIC0tLSDkuIvpnaLmmK/mraPluLjnmoTmlrDlkI3lrZfliJ3mrKHmj5DkuqTmtYHnqIsgLS0tCiAgICAgICAgICAgIAogICAgICAgICAgICAkY2hlY2tfcmVzdWx0ID0gamluZGFuX2NoZWNrX25pY2tuYW1lX2hhcmRfcnVsZXMoJG5ld19uaWNrbmFtZSk7CgogICAgICAgICAgICBpZiAoJGNoZWNrX3Jlc3VsdCAhPT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJHZpb2xhdGlvbnMgPSAoaW50KWdldF91c2VyX21ldGEoJHVzZXJfaWQsICdqaW5kYW5fbmlja25hbWVfdmlvbGF0aW9uX2NvdW50JywgdHJ1ZSk7CiAgICAgICAgICAgICAgICB1cGRhdGVfdXNlcl9tZXRhKCR1c2VyX2lkLCAnamluZGFuX25pY2tuYW1lX3Zpb2xhdGlvbl9jb3VudCcsICR2aW9sYXRpb25zICsgMSk7CiAgICAgICAgICAgICAgICB1cGRhdGVfdXNlcl9tZXRhKCR1c2VyX2lkLCAnamluZGFuX25pY2tuYW1lX3JlamVjdF9yZWFzb24nLCAkY2hlY2tfcmVzdWx0KTsKCiAgICAgICAgICAgICAgICAkZXJyb3Jfb3V0cHV0KCRjaGVja19yZXN1bHQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyDlrZjlhaXlvoXlrqEKICAgICAgICAgICAgdXBkYXRlX3VzZXJfbWV0YSgkdXNlcl9pZCwgJ2ppbmRhbl9wZW5kaW5nX25pY2tuYW1lJywgJG5ld19uaWNrbmFtZSk7CiAgICAgICAgICAgIHVwZGF0ZV91c2VyX21ldGEoJHVzZXJfaWQsICdqaW5kYW5fbmlja25hbWVfYXVkaXRfc3RhdHVzJywgJ3BlbmRpbmcnKTsKICAgICAgICAgICAgdXBkYXRlX3VzZXJfbWV0YSgkdXNlcl9pZCwgJ2ppbmRhbl9uaWNrbmFtZV9sYXN0X3N1Ym1pdF90aW1lJywgY3VycmVudF90aW1lKCdteXNxbCcpKTsKICAgICAgICAgICAgZGVsZXRlX3VzZXJfbWV0YSgkdXNlcl9pZCwgJ2ppbmRhbl9uaWNrbmFtZV9yZWplY3RfcmVhc29uJyk7CgogICAgICAgICAgICAvLyDov5jljp/ml6flkI3vvIzpgb/lhY3msaHmn5MKICAgICAgICAgICAgJGN1cnJlbnRfbmlja25hbWVfbWV0YSA9IGdldF91c2VyX21ldGEoJHVzZXJfaWQsICduaWNrbmFtZScsIHRydWUpOwogICAgICAgICAgICAkY3VycmVudF91c2VyX25pY2VuYW1lID0gJGN1cnJlbnRfdXNlci0+dXNlcl9uaWNlbmFtZTsKCiAgICAgICAgICAgICRmaWVsZF9iYWNrZmlsbCA9IGFycmF5KAogICAgICAgICAgICAgICAgJ2Rpc3BsYXlfbmFtZScgID0+ICRjdXJyZW50X25pY2tuYW1lLAogICAgICAgICAgICAgICAgJ25pY2tuYW1lJyAgICAgID0+ICRjdXJyZW50X25pY2tuYW1lX21ldGEgPyAkY3VycmVudF9uaWNrbmFtZV9tZXRhIDogJGN1cnJlbnRfbmlja25hbWUsCiAgICAgICAgICAgICAgICAndXNlcl9uaWNlbmFtZScgPT4gJGN1cnJlbnRfdXNlcl9uaWNlbmFtZSA/ICRjdXJyZW50X3VzZXJfbmljZW5hbWUgOiAkY3VycmVudF9uaWNrbmFtZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRmaWVsZF9iYWNrZmlsbCBhcyAkZmllbGQgPT4gJG9sZF92YWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFskZmllbGRdKSkgewogICAgICAgICAgICAgICAgICAgICRfUE9TVFskZmllbGRdID0gJG9sZF92YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy8g6YeR6JuL572R6aOO5o6nIE1WUO+8muS9k+mqjOihpeS4gSAtIOWJjeerr+W+heWuoeeKtuaAgeaPkOekuuS4juaXp+WAvOaBouWkjQovLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KYWRkX2FjdGlvbignd3BfZm9vdGVyJywgJ2ppbmRhbl9wcm9maWxlX3BlbmRpbmdfbm90aWNlX3NjcmlwdCcsIDk5KTsKZnVuY3Rpb24gamluZGFuX3Byb2ZpbGVfcGVuZGluZ19ub3RpY2Vfc2NyaXB0KCkgewogICAgLy8g5Y+q5pyJ55m75b2V55So5oi35omN6ZyA6KaB5omn6KGMCiAgICBpZiAoIWlzX3VzZXJfbG9nZ2VkX2luKCkpIHJldHVybjsKCiAgICAkdXNlcl9pZCA9IGdldF9jdXJyZW50X3VzZXJfaWQoKTsKICAgICRzdGF0dXMgPSBnZXRfdXNlcl9tZXRhKCR1c2VyX2lkLCAnamluZGFuX25pY2tuYW1lX2F1ZGl0X3N0YXR1cycsIHRydWUpOwoKICAgIC8vIOWmguaenOivpeeUqOaIt+ato+WkhOS6juKAnOW+heWuoeKAneeKtuaAgQogICAgaWYgKCRzdGF0dXMgPT09ICdwZW5kaW5nJykgewogICAgICAgIC8vIOiOt+WPluW9k+WJjeecn+ato+eUn+aViOeahOaXp+aYteensAogICAgICAgICRjdXJyZW50X25hbWUgPSB3cF9nZXRfY3VycmVudF91c2VyKCktPmRpc3BsYXlfbmFtZTsKICAgICAgICA/PgogICAgICAgIDxzY3JpcHQ+CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyDlsJ3or5XlnKjpobXpnaLkuIrlr7vmib7mmLXnp7DovpPlhaXmoYYKICAgICAgICAgICAgbGV0IG5hbWVJbnB1dCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9ImRpc3BsYXlfbmFtZSJdJyk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAobmFtZUlucHV0KSB7CiAgICAgICAgICAgICAgICAvLyAxLiDlvLrliLbmiorovpPlhaXmoYbph4znmoTlrZfvvIzmk6bpmaTlm57lvZPliY3nmoTml6fmmLXnp7AKICAgICAgICAgICAgICAgIG5hbWVJbnB1dC52YWx1ZSA9ICI8P3BocCBlY2hvIGVzY19qcygkY3VycmVudF9uYW1lKTsgPz4iOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyAyLiDlnKjovpPlhaXmoYbkuIvmlrnotLTkuKrlsI/nurjmnaHmj5DnpLoKICAgICAgICAgICAgICAgIGxldCBub3RpY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgICAgICAgICAgICBub3RpY2Uuc3R5bGUuY29sb3IgPSAnI2ZmNmI2Yic7CiAgICAgICAgICAgICAgICBub3RpY2Uuc3R5bGUuZm9udFNpemUgPSAnMTJweCc7CiAgICAgICAgICAgICAgICBub3RpY2Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgICAgICAgICAgICAgICBub3RpY2Uuc3R5bGUubWFyZ2luVG9wID0gJzVweCc7CiAgICAgICAgICAgICAgICBub3RpY2UuaW5uZXJUZXh0ID0gJ+KaoO+4jyBZb3VyIG5ldyBkaXNwbGF5IG5hbWUgaXMgdW5kZXIgcmV2aWV3LiBZb3VyIGN1cnJlbnQgZGlzcGxheSBuYW1lIHdpbGwgcmVtYWluIHZpc2libGUgdW50aWwgaXQgaXMgYXBwcm92ZWQuJzsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgbmFtZUlucHV0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKG5vdGljZSwgbmFtZUlucHV0Lm5leHRTaWJsaW5nKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIDwvc2NyaXB0PgogICAgICAgIDw/cGhwCiAgICB9Cn0="},{"id":64,"name":"用户风控:后台审核控制台","active":1,"scope":"global","priority":10,"code_sha256":"651f1ce78cab46276485140e4ad199ce13011e7b6e2723b6f83c1e93ac186cc0","code_base64":"Ly8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci8vIEVnZ2lvIFJpc2sgQ29udHJvbDogQWRtaW4gTmlja25hbWUgUmV2aWV3IFBhbmVsCi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKLy8gMS4gQWRkIHVzZXIgdGFibGUgY29sdW1uLgphZGRfZmlsdGVyKCdtYW5hZ2VfdXNlcnNfY29sdW1ucycsICdqaW5kYW5fYWRkX3VzZXJfYXVkaXRfY29sdW1uJyk7CmZ1bmN0aW9uIGppbmRhbl9hZGRfdXNlcl9hdWRpdF9jb2x1bW4oJGNvbHVtbnMpIHsKICAgICRjb2x1bW5zWydqaW5kYW5fYXVkaXQnXSA9ICdOaWNrbmFtZSBSZXZpZXcnOwogICAgcmV0dXJuICRjb2x1bW5zOwp9CgovLyAyLiBSZW5kZXIgY29sdW1uIGNvbnRlbnQuCmFkZF9maWx0ZXIoJ21hbmFnZV91c2Vyc19jdXN0b21fY29sdW1uJywgJ2ppbmRhbl9zaG93X3VzZXJfYXVkaXRfY29sdW1uJywgOTk5OSwgMyk7CmZ1bmN0aW9uIGppbmRhbl9zaG93X3VzZXJfYXVkaXRfY29sdW1uKCR2YWwsICRjb2x1bW5fbmFtZSwgJHVzZXJfaWQpIHsKICAgIGlmICgkY29sdW1uX25hbWUgPT09ICdqaW5kYW5fYXVkaXQnKSB7CiAgICAgICAgJHN0YXR1cyA9IGdldF91c2VyX21ldGEoJHVzZXJfaWQsICdqaW5kYW5fbmlja25hbWVfYXVkaXRfc3RhdHVzJywgdHJ1ZSk7CiAgICAgICAgJHBlbmRpbmdfbmFtZSA9IGdldF91c2VyX21ldGEoJHVzZXJfaWQsICdqaW5kYW5fcGVuZGluZ19uaWNrbmFtZScsIHRydWUpOwogICAgICAgIAogICAgICAgIGlmIChlbXB0eSgkc3RhdHVzKSkgewogICAgICAgICAgICByZXR1cm4gJzxzcGFuIHN0eWxlPSJjb2xvcjojY2NjOyI+Tm8gcGVuZGluZyByZXZpZXc8L3NwYW4+JzsKICAgICAgICB9CgogICAgICAgICRub25jZSA9IHdwX2NyZWF0ZV9ub25jZSgnamluZGFuX2F1ZGl0X25vbmNlXycgLiAkdXNlcl9pZCk7CiAgICAgICAgJGFwcHJvdmVfdXJsID0gYWRtaW5fdXJsKCJ1c2Vycy5waHA/YWN0aW9uPWppbmRhbl9hcHByb3ZlJnVzZXJfaWQ9eyR1c2VyX2lkfSZfd3Bub25jZT17JG5vbmNlfSIpOwogICAgICAgICRyZWplY3RfdXJsID0gYWRtaW5fdXJsKCJ1c2Vycy5waHA/YWN0aW9uPWppbmRhbl9yZWplY3QmdXNlcl9pZD17JHVzZXJfaWR9Jl93cG5vbmNlPXskbm9uY2V9Iik7CiAgICAgICAgJGNsZWFyX3VybCA9IGFkbWluX3VybCgidXNlcnMucGhwP2FjdGlvbj1qaW5kYW5fY2xlYXImdXNlcl9pZD17JHVzZXJfaWR9Jl93cG5vbmNlPXskbm9uY2V9Iik7CgogICAgICAgIGlmICgkc3RhdHVzID09PSAncGVuZGluZycpIHsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkcGVuZGluZ19uYW1lKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNwcmludGYoCiAgICAgICAgICAgICAgICAgICAgJzxzdHJvbmc+UGVuZGluZzogPHNwYW4gc3R5bGU9ImNvbG9yOiNmZjZiNmI7Ij4lczwvc3Bhbj48L3N0cm9uZz48YnI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iJXMiIHN0eWxlPSJjb2xvcjpncmVlbjsgZm9udC13ZWlnaHQ6Ym9sZDsiPltBcHByb3ZlXTwvYT4gfCAKICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIlcyIgc3R5bGU9ImNvbG9yOmdyYXk7Ij5bUmVqZWN0XTwvYT4nLAogICAgICAgICAgICAgICAgICAgIGVzY19odG1sKCRwZW5kaW5nX25hbWUpLAogICAgICAgICAgICAgICAgICAgIGVzY191cmwoJGFwcHJvdmVfdXJsKSwKICAgICAgICAgICAgICAgICAgICBlc2NfdXJsKCRyZWplY3RfdXJsKQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICc8c3BhbiBzdHlsZT0iY29sb3I6cmVkOyBmb250LXdlaWdodDpib2xkOyI+U3R1Y2sgc3RhdHVzOiBtaXNzaW5nIG5pY2tuYW1lPC9zcGFuPjxicj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIlcyIgc3R5bGU9ImNvbG9yOmJsdWU7IGZvbnQtd2VpZ2h0OmJvbGQ7Ij5bQ2xlYXIgc3R1Y2sgc3RhdHVzXTwvYT4nLAogICAgICAgICAgICAgICAgICAgIGVzY191cmwoJGNsZWFyX3VybCkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoJHN0YXR1cyA9PT0gJ2FwcHJvdmVkJykgewogICAgICAgICAgICByZXR1cm4gJzxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbjsiPkFwcHJvdmVkPC9zcGFuPic7CiAgICAgICAgfSBlbHNlaWYgKCRzdGF0dXMgPT09ICdyZWplY3RlZCcpIHsKICAgICAgICAgICAgcmV0dXJuICc8c3BhbiBzdHlsZT0iY29sb3I6Z3JheTsiPlJlamVjdGVkPC9zcGFuPic7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAnPHNwYW4gc3R5bGU9ImNvbG9yOiNjY2M7Ij5Vbmtub3duIHN0YXR1czwvc3Bhbj4nOwogICAgfQoKICAgIHJldHVybiAkdmFsOwp9CgovLyAzLiBIYW5kbGUgcmV2aWV3IGFjdGlvbnMuCmFkZF9hY3Rpb24oJ2FkbWluX2luaXQnLCAnamluZGFuX2hhbmRsZV9hdWRpdF9hY3Rpb25zJyk7CmZ1bmN0aW9uIGppbmRhbl9oYW5kbGVfYXVkaXRfYWN0aW9ucygpIHsKICAgIGlmICghaXNzZXQoJF9HRVRbJ2FjdGlvbiddKSB8fCAhaW5fYXJyYXkoJF9HRVRbJ2FjdGlvbiddLCBbJ2ppbmRhbl9hcHByb3ZlJywgJ2ppbmRhbl9yZWplY3QnLCAnamluZGFuX2NsZWFyJ10pKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgCiAgICBpZiAoIWN1cnJlbnRfdXNlcl9jYW4oJ2VkaXRfdXNlcnMnKSkgewogICAgICAgIHdwX2RpZSgnSW5zdWZmaWNpZW50IHBlcm1pc3Npb25zLicpOwogICAgfQoKICAgICR1c2VyX2lkID0gaW50dmFsKCRfR0VUWyd1c2VyX2lkJ10pOwogICAgaWYgKCEkdXNlcl9pZCkgcmV0dXJuOwoKICAgIGNoZWNrX2FkbWluX3JlZmVyZXIoJ2ppbmRhbl9hdWRpdF9ub25jZV8nIC4gJHVzZXJfaWQpOwoKICAgIGlmICgkX0dFVFsnYWN0aW9uJ10gPT09ICdqaW5kYW5fYXBwcm92ZScpIHsKICAgICAgICAkcGVuZGluZ19uYW1lID0gZ2V0X3VzZXJfbWV0YSgkdXNlcl9pZCwgJ2ppbmRhbl9wZW5kaW5nX25pY2tuYW1lJywgdHJ1ZSk7CgogICAgICAgIGlmICgkcGVuZGluZ19uYW1lKSB7CiAgICAgICAgICAgIHdwX3VwZGF0ZV91c2VyKGFycmF5KAogICAgICAgICAgICAgICAgJ0lEJyAgICAgICAgICAgPT4gJHVzZXJfaWQsCiAgICAgICAgICAgICAgICAnZGlzcGxheV9uYW1lJyA9PiAkcGVuZGluZ19uYW1lLAogICAgICAgICAgICAgICAgJ25pY2tuYW1lJyAgICAgPT4gJHBlbmRpbmdfbmFtZQogICAgICAgICAgICApKTsKCiAgICAgICAgICAgIHVwZGF0ZV91c2VyX21ldGEoJHVzZXJfaWQsICdqaW5kYW5fbmlja25hbWVfYXVkaXRfc3RhdHVzJywgJ2FwcHJvdmVkJyk7CiAgICAgICAgfQogICAgfSAKICAgIGVsc2VpZiAoJF9HRVRbJ2FjdGlvbiddID09PSAnamluZGFuX3JlamVjdCcpIHsKICAgICAgICB1cGRhdGVfdXNlcl9tZXRhKCR1c2VyX2lkLCAnamluZGFuX25pY2tuYW1lX2F1ZGl0X3N0YXR1cycsICdyZWplY3RlZCcpOwogICAgICAgIHVwZGF0ZV91c2VyX21ldGEoJHVzZXJfaWQsICdqaW5kYW5fbmlja25hbWVfcmVqZWN0X3JlYXNvbicsICdNYW51YWxseSByZWplY3RlZCBieSBhZG1pbi4nKTsKICAgIH0KICAgIGVsc2VpZiAoJF9HRVRbJ2FjdGlvbiddID09PSAnamluZGFuX2NsZWFyJykgewogICAgICAgIGRlbGV0ZV91c2VyX21ldGEoJHVzZXJfaWQsICdqaW5kYW5fbmlja25hbWVfYXVkaXRfc3RhdHVzJyk7CiAgICAgICAgZGVsZXRlX3VzZXJfbWV0YSgkdXNlcl9pZCwgJ2ppbmRhbl9wZW5kaW5nX25pY2tuYW1lJyk7CiAgICB9CgogICAgd3BfcmVkaXJlY3QoYWRtaW5fdXJsKCd1c2Vycy5waHAnKSk7CiAgICBleGl0Owp9"},{"id":138,"name":"EGGIO-站内信短代码独立恢复 V1.0","active":1,"scope":"global","priority":10,"code_sha256":"23c8214a44620da88336e0b658479b56704207d3deae1e1704480344120039c0","code_base64":"LyoqCiAqIEVHR0lPIC0gTm90aWNlcyBTaG9ydGNvZGUgUmVzdG9yZSBWMS4wCiAqCiAqIE9ubHkgcmVzdG9yZXMgW2VnZ2lvX25vdGljZXNdLgogKiBEb2VzIG5vdCByZXN0b3JlIGRpc3B1dGUvcmVwb3J0L29yZGVyL2Vhcm5pbmdzIGxvZ2ljLgogKi8KCmlmICghZGVmaW5lZCgnQUJTUEFUSCcpKSB7CiAgICBleGl0Owp9CgpmdW5jdGlvbiBlZ2dpb19ub3RpY2VzX3Jlc3RvcmVfdjEwX3RhYmxlKCkgewogICAgZ2xvYmFsICR3cGRiOwogICAgcmV0dXJuICR3cGRiLT5wcmVmaXggLiAnZWdnaW9fdXNlcl9ub3RpY2VzX3YxJzsKfQoKZnVuY3Rpb24gZWdnaW9fbm90aWNlc19yZXN0b3JlX3YxMF90YWJsZV9leGlzdHMoJHRhYmxlKSB7CiAgICBnbG9iYWwgJHdwZGI7CgogICAgJGZvdW5kID0gJHdwZGItPmdldF92YXIoCiAgICAgICAgJHdwZGItPnByZXBhcmUoJ1NIT1cgVEFCTEVTIExJS0UgJXMnLCAkdGFibGUpCiAgICApOwoKICAgIHJldHVybiAkZm91bmQgPT09ICR0YWJsZTsKfQoKZnVuY3Rpb24gZWdnaW9fbm90aWNlc19yZXN0b3JlX3YxMF9tYXliZV9jcmVhdGVfdGFibGUoKSB7CiAgICBnbG9iYWwgJHdwZGI7CgogICAgJHRhYmxlID0gZWdnaW9fbm90aWNlc19yZXN0b3JlX3YxMF90YWJsZSgpOwoKICAgIGlmIChlZ2dpb19ub3RpY2VzX3Jlc3RvcmVfdjEwX3RhYmxlX2V4aXN0cygkdGFibGUpKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJlcXVpcmVfb25jZSBBQlNQQVRIIC4gJ3dwLWFkbWluL2luY2x1ZGVzL3VwZ3JhZGUucGhwJzsKCiAgICAkY2hhcnNldF9jb2xsYXRlID0gJHdwZGItPmdldF9jaGFyc2V0X2NvbGxhdGUoKTsKCiAgICAkc3FsID0gIkNSRUFURSBUQUJMRSB7JHRhYmxlfSAoCiAgICAgICAgaWQgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxMIEFVVE9fSU5DUkVNRU5ULAogICAgICAgIHVzZXJfaWQgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxMIERFRkFVTFQgMCwKICAgICAgICBub3RpY2VfdHlwZSBWQVJDSEFSKDgwKSBOT1QgTlVMTCBERUZBVUxUICcnLAogICAgICAgIHRpdGxlIFZBUkNIQVIoMTkwKSBOT1QgTlVMTCBERUZBVUxUICcnLAogICAgICAgIG1lc3NhZ2UgVEVYVCBOVUxMLAogICAgICAgIHJlbGF0ZWRfdHlwZSBWQVJDSEFSKDUwKSBOT1QgTlVMTCBERUZBVUxUICcnLAogICAgICAgIHJlbGF0ZWRfaWQgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxMIERFRkFVTFQgMCwKICAgICAgICBpc19yZWFkIFRJTllJTlQoMSkgTk9UIE5VTEwgREVGQVVMVCAwLAogICAgICAgIGNyZWF0ZWRfYXQgREFURVRJTUUgTk9UIE5VTEwsCiAgICAgICAgUFJJTUFSWSBLRVkgKGlkKSwKICAgICAgICBLRVkgdXNlcl9yZWFkICh1c2VyX2lkLCBpc19yZWFkKSwKICAgICAgICBLRVkgcmVsYXRlZCAocmVsYXRlZF90eXBlLCByZWxhdGVkX2lkKSwKICAgICAgICBLRVkgY3JlYXRlZF9hdCAoY3JlYXRlZF9hdCkKICAgICkgeyRjaGFyc2V0X2NvbGxhdGV9OyI7CgogICAgZGJEZWx0YSgkc3FsKTsKfQphZGRfYWN0aW9uKCdpbml0JywgJ2VnZ2lvX25vdGljZXNfcmVzdG9yZV92MTBfbWF5YmVfY3JlYXRlX3RhYmxlJywgMjApOwoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2VnZ2lvX2Rpc3B1dGVfdjFfbm90aWNlc190YWJsZScpKSB7CiAgICBmdW5jdGlvbiBlZ2dpb19kaXNwdXRlX3YxX25vdGljZXNfdGFibGUoKSB7CiAgICAgICAgcmV0dXJuIGVnZ2lvX25vdGljZXNfcmVzdG9yZV92MTBfdGFibGUoKTsKICAgIH0KfQoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2VnZ2lvX2Rpc3B1dGVfdjFfdGFibGVfZXhpc3RzJykpIHsKICAgIGZ1bmN0aW9uIGVnZ2lvX2Rpc3B1dGVfdjFfdGFibGVfZXhpc3RzKCR0YWJsZSkgewogICAgICAgIHJldHVybiBlZ2dpb19ub3RpY2VzX3Jlc3RvcmVfdjEwX3RhYmxlX2V4aXN0cygkdGFibGUpOwogICAgfQp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnZWdnaW9fZGlzcHV0ZV92MV9hZGRfbm90aWNlJykpIHsKICAgIGZ1bmN0aW9uIGVnZ2lvX2Rpc3B1dGVfdjFfYWRkX25vdGljZSgkdXNlcl9pZCwgJHR5cGUsICR0aXRsZSwgJG1lc3NhZ2UsICRyZWxhdGVkX3R5cGUgPSAnJywgJHJlbGF0ZWRfaWQgPSAwKSB7CiAgICAgICAgZ2xvYmFsICR3cGRiOwoKICAgICAgICAkdXNlcl9pZCA9IGFic2ludCgkdXNlcl9pZCk7CgogICAgICAgIGlmICghJHVzZXJfaWQpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgZWdnaW9fbm90aWNlc19yZXN0b3JlX3YxMF9tYXliZV9jcmVhdGVfdGFibGUoKTsKCiAgICAgICAgJHRhYmxlID0gZWdnaW9fbm90aWNlc19yZXN0b3JlX3YxMF90YWJsZSgpOwoKICAgICAgICBpZiAoIWVnZ2lvX25vdGljZXNfcmVzdG9yZV92MTBfdGFibGVfZXhpc3RzKCR0YWJsZSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChib29sKSAkd3BkYi0+aW5zZXJ0KAogICAgICAgICAgICAkdGFibGUsCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgJ3VzZXJfaWQnID0+ICR1c2VyX2lkLAogICAgICAgICAgICAgICAgJ25vdGljZV90eXBlJyA9PiBzYW5pdGl6ZV90ZXh0X2ZpZWxkKCR0eXBlKSwKICAgICAgICAgICAgICAgICd0aXRsZScgPT4gc2FuaXRpemVfdGV4dF9maWVsZCgkdGl0bGUpLAogICAgICAgICAgICAgICAgJ21lc3NhZ2UnID0+IHdwX2tzZXNfcG9zdCgkbWVzc2FnZSksCiAgICAgICAgICAgICAgICAncmVsYXRlZF90eXBlJyA9PiBzYW5pdGl6ZV90ZXh0X2ZpZWxkKCRyZWxhdGVkX3R5cGUpLAogICAgICAgICAgICAgICAgJ3JlbGF0ZWRfaWQnID0+IGFic2ludCgkcmVsYXRlZF9pZCksCiAgICAgICAgICAgICAgICAnaXNfcmVhZCcgPT4gMCwKICAgICAgICAgICAgICAgICdjcmVhdGVkX2F0JyA9PiBjdXJyZW50X3RpbWUoJ215c3FsJyksCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgJyVkJywKICAgICAgICAgICAgICAgICclcycsCiAgICAgICAgICAgICAgICAnJXMnLAogICAgICAgICAgICAgICAgJyVzJywKICAgICAgICAgICAgICAgICclcycsCiAgICAgICAgICAgICAgICAnJWQnLAogICAgICAgICAgICAgICAgJyVkJywKICAgICAgICAgICAgICAgICclcycsCiAgICAgICAgICAgICkKICAgICAgICApOwogICAgfQp9CgpmdW5jdGlvbiBlZ2dpb19ub3RpY2VzX3Jlc3RvcmVfdjEwX3JlbmRlcl9zaG9ydGNvZGUoKSB7CiAgICBpZiAoIWlzX3VzZXJfbG9nZ2VkX2luKCkpIHsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImVnZ2lvLW5vdGljZXMtd3JhcCI+PHA+UGxlYXNlIGxvZyBpbiB0byB2aWV3IHlvdXIgRUdHSU8gbm90aWNlcy48L3A+PC9kaXY+JzsKICAgIH0KCiAgICBnbG9iYWwgJHdwZGI7CgogICAgZWdnaW9fbm90aWNlc19yZXN0b3JlX3YxMF9tYXliZV9jcmVhdGVfdGFibGUoKTsKCiAgICAkdGFibGUgPSBlZ2dpb19ub3RpY2VzX3Jlc3RvcmVfdjEwX3RhYmxlKCk7CiAgICAkdXNlcl9pZCA9IGdldF9jdXJyZW50X3VzZXJfaWQoKTsKCiAgICBpZiAoIWVnZ2lvX25vdGljZXNfcmVzdG9yZV92MTBfdGFibGVfZXhpc3RzKCR0YWJsZSkpIHsKICAgICAgICByZXR1cm4gJzxkaXYgY2xhc3M9ImVnZ2lvLW5vdGljZXMtd3JhcCI+PHA+Tm8gbm90aWNlIHRhYmxlIGZvdW5kLjwvcD48L2Rpdj4nOwogICAgfQoKICAgIGlmICgKICAgICAgICBpc3NldCgkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSkgJiYKICAgICAgICAkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXSA9PT0gJ1BPU1QnICYmCiAgICAgICAgIWVtcHR5KCRfUE9TVFsnZWdnaW9fbm90aWNlX2FjdGlvbiddKQogICAgKSB7CiAgICAgICAgaWYgKAogICAgICAgICAgICAhZW1wdHkoJF9QT1NUWydlZ2dpb19ub3RpY2Vfbm9uY2UnXSkgJiYKICAgICAgICAgICAgd3BfdmVyaWZ5X25vbmNlKHNhbml0aXplX3RleHRfZmllbGQod3BfdW5zbGFzaCgkX1BPU1RbJ2VnZ2lvX25vdGljZV9ub25jZSddKSksICdlZ2dpb19ub3RpY2VfYWN0aW9uJykKICAgICAgICApIHsKICAgICAgICAgICAgJHdwZGItPnVwZGF0ZSgKICAgICAgICAgICAgICAgICR0YWJsZSwKICAgICAgICAgICAgICAgIGFycmF5KCdpc19yZWFkJyA9PiAxKSwKICAgICAgICAgICAgICAgIGFycmF5KCd1c2VyX2lkJyA9PiAkdXNlcl9pZCksCiAgICAgICAgICAgICAgICBhcnJheSgnJWQnKSwKICAgICAgICAgICAgICAgIGFycmF5KCclZCcpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkcmVkaXJlY3RfdXJsID0gZ2V0X3Blcm1hbGluaygpOwogICAgICAgIGlmICghJHJlZGlyZWN0X3VybCkgewogICAgICAgICAgICAkcmVkaXJlY3RfdXJsID0gaG9tZV91cmwoJy9lZ2dpby1ub3RpY2VzLycpOwogICAgICAgIH0KCiAgICAgICAgd3Bfc2FmZV9yZWRpcmVjdCgkcmVkaXJlY3RfdXJsKTsKICAgICAgICBleGl0OwogICAgfQoKICAgICRub3RpY2VzID0gJHdwZGItPmdldF9yZXN1bHRzKAogICAgICAgICR3cGRiLT5wcmVwYXJlKAogICAgICAgICAgICAiU0VMRUNUICoKICAgICAgICAgICAgIEZST00geyR0YWJsZX0KICAgICAgICAgICAgIFdIRVJFIHVzZXJfaWQgPSAlZAogICAgICAgICAgICAgT1JERVIgQlkgaWQgREVTQwogICAgICAgICAgICAgTElNSVQgMTAwIiwKICAgICAgICAgICAgJHVzZXJfaWQKICAgICAgICApCiAgICApOwoKICAgIG9iX3N0YXJ0KCk7CiAgICA/PgogICAgPHN0eWxlIGlkPSJlZ2dpby1ub3RpY2VzLXNob3J0Y29kZS1jc3MiPgogICAgICAgIC5lZ2dpby1ub3RpY2VzLXdyYXAgewogICAgICAgICAgICBtYXgtd2lkdGg6IDk4MHB4OwogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgICAgICAgICAgcGFkZGluZzogMjRweCAxNnB4IDQwcHg7CiAgICAgICAgICAgIGNvbG9yOiAjMzc0MTUxOwogICAgICAgIH0KICAgICAgICAuZWdnaW8tbm90aWNlcy13cmFwIGgyIHsKICAgICAgICAgICAgZm9udC1zaXplOiAyOHB4OwogICAgICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgICAgICBtYXJnaW46IDAgMCAxOHB4OwogICAgICAgICAgICBjb2xvcjogIzExMTgyNzsKICAgICAgICB9CiAgICAgICAgLmVnZ2lvLW5vdGljZXMtdG9vbGJhciB7CiAgICAgICAgICAgIG1hcmdpbjogMTZweCAwIDIwcHg7CiAgICAgICAgfQogICAgICAgIC5lZ2dpby1ub3RpY2VzLXRvb2xiYXIgYnV0dG9uIHsKICAgICAgICAgICAgYm9yZGVyOiAwOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgICAgICAgICAgYmFja2dyb3VuZDogIzExMTgyNzsKICAgICAgICAgICAgY29sb3I6ICNmZmY7CiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMThweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOwogICAgICAgIH0KICAgICAgICAuZWdnaW8tbm90aWNlLWNhcmQgewogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmOwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZTVlN2ViOwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAxNHB4OwogICAgICAgICAgICBwYWRkaW5nOiAxNnB4OwogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4OwogICAgICAgICAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMTUsMjMsNDIsLjA0KTsKICAgICAgICB9CiAgICAgICAgLmVnZ2lvLW5vdGljZS1jYXJkLnVucmVhZCB7CiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogIzI1NjNlYjsKICAgICAgICAgICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDM3LDk5LDIzNSwuMDgpOwogICAgICAgIH0KICAgICAgICAuZWdnaW8tbm90aWNlLWNhcmQgaDMgewogICAgICAgICAgICBtYXJnaW46IDAgMCA4cHg7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDsKICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICAgICAgY29sb3I6ICMxMTE4Mjc7CiAgICAgICAgfQogICAgICAgIC5lZ2dpby1ub3RpY2UtbWV0YSB7CiAgICAgICAgICAgIGNvbG9yOiAjNmI3MjgwOwogICAgICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgICAgICB9CiAgICAgICAgLmVnZ2lvLW5vdGljZS1tZXNzYWdlIHsKICAgICAgICAgICAgY29sb3I6ICMzNzQxNTE7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY1OwogICAgICAgIH0KICAgICAgICAuZWdnaW8tbm90aWNlLWVtcHR5IHsKICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjsKICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDsKICAgICAgICAgICAgcGFkZGluZzogMThweDsKICAgICAgICAgICAgY29sb3I6ICM2YjcyODA7CiAgICAgICAgfQogICAgPC9zdHlsZT4KCiAgICA8ZGl2IGNsYXNzPSJlZ2dpby1ub3RpY2VzLXdyYXAiPgogICAgICAgIDxoMj5FR0dJTyDpgJrnn6U8L2gyPgoKICAgICAgICA8Zm9ybSBtZXRob2Q9InBvc3QiIGNsYXNzPSJlZ2dpby1ub3RpY2VzLXRvb2xiYXIiPgogICAgICAgICAgICA8P3BocCB3cF9ub25jZV9maWVsZCgnZWdnaW9fbm90aWNlX2FjdGlvbicsICdlZ2dpb19ub3RpY2Vfbm9uY2UnKTsgPz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZWdnaW9fbm90aWNlX2FjdGlvbiIgdmFsdWU9Im1hcmtfYWxsX3JlYWQiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCI+5YWo6YOo5qCH5Li65bey6K+7PC9idXR0b24+CiAgICAgICAgPC9mb3JtPgoKICAgICAgICA8P3BocCBpZiAoZW1wdHkoJG5vdGljZXMpKSA6ID8+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVnZ2lvLW5vdGljZS1lbXB0eSI+5pqC5peg6YCa55+l44CCPC9kaXY+CiAgICAgICAgPD9waHAgZWxzZSA6ID8+CiAgICAgICAgICAgIDw/cGhwIGZvcmVhY2ggKCRub3RpY2VzIGFzICRub3RpY2UpIDogPz4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVnZ2lvLW5vdGljZS1jYXJkIDw/cGhwIGVjaG8gYWJzaW50KCRub3RpY2UtPmlzX3JlYWQpID8gJycgOiAndW5yZWFkJzsgPz4iPgogICAgICAgICAgICAgICAgICAgIDxoMz48P3BocCBlY2hvIGVzY19odG1sKCRub3RpY2UtPnRpdGxlKTsgPz48L2gzPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVnZ2lvLW5vdGljZS1tZXRhIj4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgZWNobyBlc2NfaHRtbCgkbm90aWNlLT5jcmVhdGVkX2F0KTsgPz4KICAgICAgICAgICAgICAgICAgICAgICAgPD9waHAgaWYgKCFhYnNpbnQoJG5vdGljZS0+aXNfcmVhZCkpIDogPz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIMK3IOacquivuwogICAgICAgICAgICAgICAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJlZ2dpby1ub3RpY2UtbWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDw/cGhwIGVjaG8gd3Bfa3Nlc19wb3N0KHdwYXV0b3AoJG5vdGljZS0+bWVzc2FnZSkpOyA/PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+CiAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICA8L2Rpdj4KICAgIDw/cGhwCgogICAgcmV0dXJuIG9iX2dldF9jbGVhbigpOwp9CgphZGRfc2hvcnRjb2RlKCdlZ2dpb19ub3RpY2VzJywgJ2VnZ2lvX25vdGljZXNfcmVzdG9yZV92MTBfcmVuZGVyX3Nob3J0Y29kZScpOw=="}],"options":{"active_plugins":["better-search-replace/better-search-replace.php","code-snippets/code-snippets.php","eggio-account-center-features/eggio-account-center-features.php","eggio-cn-account-compat/eggio-cn-account-compat.php","eggio-cn-admin-product/eggio-cn-admin-product.php","eggio-cn-article-community/eggio-cn-article-community.php","eggio-cn-creator-finance/eggio-cn-creator-finance.php","eggio-cn-localization/eggio-cn-localization.php","eggio-cn-notification-center/eggio-cn-notification-center.php","eggio-cn-reputation/eggio-cn-reputation.php","eggio-early-access-optimizer/eggio-early-access-optimizer.php","eggio-ga4-funnel-tracker/eggio-ga4-funnel-tracker.php","eggio-mobile-account-skin/eggio-mobile-account-skin.php","eggio-mobile-app-skin/eggio-mobile-app-skin.php","eggio-mobile-auth-skin/eggio-mobile-auth-skin.php","eggio-mobile-discovery-skin/eggio-mobile-discovery-skin.php","eggio-project-cover-workflow/eggio-project-cover-workflow.php","eggio-seo-recovery-v1/eggio-seo-recovery-v1.php","google-site-kit/google-site-kit.php","loco-translate/loco.php","wp-mail-smtp/wp_mail_smtp.php","eggio-cn-interaction-ui/eggio-cn-interaction-ui.php"],"eggio_project_domain_primary_writer_enabled":null,"eggio_account_governance_enabled":null}}