# arc_redirect v1.01beta # Love redirects, hate 404s # Andy Carter # http://redhotchilliproject.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YToxMTp7czo0OiJuYW1lIjtzOjEyOiJhcmNfcmVkaXJlY3QiO3M6NzoidmVyc2lvbiI7czo4 OiIxLjAxYmV0YSI7czo2OiJhdXRob3IiO3M6MTE6IkFuZHkgQ2FydGVyIjtzOjEwOiJhdXRo b3JfdXJpIjtzOjMxOiJodHRwOi8vcmVkaG90Y2hpbGxpcHJvamVjdC5jb20vIjtzOjExOiJk ZXNjcmlwdGlvbiI7czoyNToiTG92ZSByZWRpcmVjdHMsIGhhdGUgNDA0cyI7czo1OiJvcmRl ciI7czoxOiI1IjtzOjQ6InR5cGUiO3M6MToiMSI7czo1OiJmbGFncyI7czoxOiIyIjtzOjQ6 ImhlbHAiO3M6MjE2MzoiCTxoMSBjbGFzcz0idGl0bGUiPmFyY19yZWRpcmVjdCAobG92ZSBy ZWRpcmVjdHMsIGhhdGUgNDA0cyk8L2gxPgoKCTxwPklmIHlvdSYjODIxNztyZSBpbiB0aGUg cHJvY2VzcyBvZiByZXN0cnVjdHVyaW5nIGEgVGV4dHBhdHRlcm4gc2l0ZSwgdGhlbiB0aGlz IGlzIHRoZSBwbHVnaW4gZm9yIHlvdSE8L3A+CgoJPHA+UmVxdWlyZW1lbnRzOi08L3A+CgoJ PHVsPgoJCTxsaT5UZXh0cGF0dGVybiA0LjIrPC9saT4KCTwvdWw+CgoJPGgyIGNsYXNzPSJz ZWN0aW9uIj5BdXRob3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9yZWRob3RjaGlsbGlw cm9qZWN0LmNvbSI+QW5keSBDYXJ0ZXI8L2E+LiBGb3Igb3RoZXIgVGV4dHBhdHRlcm4gcGx1 Z2lucyBieSBtZSB2aXNpdCBteSA8YSBocmVmPSJodHRwOi8vcmVkaG90Y2hpbGxpcHJvamVj dC5jb20vdHhwIj5QbHVnaW5zIHBhZ2U8L2E+LjwvcD4KCgk8cD5UaGFua3MgdG8gPGEgaHJl Zj0iaHR0cDovL29saXZlcmtlci5jby51ay8iPk9saXZlciBLZXI8L2E+IGZvciBnaXZpbmcg bWUgdGhlIGlkZWEgZm9yIHRoaXMgcGx1Z2luLjwvcD4KCgk8aDIgY2xhc3M9InNlY3Rpb24i Pkluc3RhbGxhdGlvbiAvIFVuaW5zdGFsbGF0aW9uPC9oMj4KCgk8cD5UbyBpbnN0YWxsIGdv IHRvIHRoZSAmIzgyMTY7cGx1Z2lucyYjODIxNzsgdGFiIHVuZGVyICYjODIxNjthZG1pbiYj ODIxNzsgYW5kIHBhc3RlIHRoZSBwbHVnaW4gY29kZSBpbnRvIHRoZSAmIzgyMTY7SW5zdGFs bCBwbHVnaW4mIzgyMTc7IGJveCwgJiM4MjE2O3VwbG9hZCYjODIxNzsgYW5kIHRoZW4gJiM4 MjE2O2luc3RhbGwmIzgyMTc7LiBGaW5hbGx5IGFjdGl2YXRlIHRoZSBwbHVnaW4uPC9wPgoK CTxwPlRvIHVuaW5zdGFsbCA8c3BhbiBjbGFzcz0idGFnIj5hcmNfcmVkaXJlY3Q8L3NwYW4+ IHNpbXBseSBkZWxldGUgdGhlIHBsdWdpbiBmcm9tIHRoZSAmIzgyMTY7UGx1Z2lucyYjODIx NzsgdGFiLiAgVGhpcyB3aWxsIHJlbW92ZSB0aGUgcGx1Z2luIGNvZGUgYW5kIGRyb3AgdGhl IDxzcGFuIGNsYXNzPSJ0YWciPmFyY19yZWRpcmVjdDwvc3Bhbj4gdGFibGUgZnJvbSB5b3Vy IFRleHRwYXR0ZXJuIGRhdGFiYXNlLjwvcD4KCgk8aDIgY2xhc3M9InNlY3Rpb24iPlVzYWdl PC9oMj4KCgk8cD48c3BhbiBjbGFzcz0idGFnIj5hcmNfcmVkaXJlY3Q8L3NwYW4+IGFkZHMg YSBuZXcgdGFiIHVuZGVyICYjODIxNjtFeHRlbnNpb25zJiM4MjE3OyBmcm9tIHdoZXJlIHlv dSBjYW4gZGVmaW5lIHBhaXJzIG9mIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+cyBm b3IgaGFuZGxpbmcgcmVkaXJlY3RzLiBCYXNpY2FsbHkgcHJvdmlkZSBhbiBvcmlnaW5hbCA8 c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBvbiB5b3VyIFRleHRwYXR0ZXJuIHNpdGUg dGhhdCBpcyBnZW5lcmF0aW5nIGEgNDA0LCAmIzgyMjA7cGFnZSBub3QgZm91bmQmIzgyMjE7 LCBlcnJvciBhbmQgYSByZWRpcmVjdCA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPi4g VGhlbiB3aGVuZXZlciBzb21lb25lIGdvZXMgdG8gdGhlIG9yaWdpbmFsIDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+IHJhdGhlciB0aGFuIGdldCB0aGUgc3RhbmRhcmQgNDA0IGVy cm9yIHBhZ2UgdGhleSB3aWxsIGJlIHJlZGlyY3RlZCB0byB0aGUgbmV3IDxzcGFuIGNsYXNz PSJjYXBzIj5VUkw8L3NwYW4+ICh3aXRoIGEgMzAxIHBlcm1lbmFudGVseSBtb3ZlZCkuPC9w PgoKCTxwPlRoZSByZWRpcmVjdCBmcm9tIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ IG11c3QgcHJvZHVjZSBhIDQwNCBwYWdlIGluIFRleHRwYXR0ZXJuIG9uIHRoZSBzaXRlIHRo aXMgcGx1Z2luIGlzIGluc3RhbGxlZC48L3A+CgoJPHVsPgoJCTxsaT48c3BhbiBjbGFzcz0i dGFnIj5hcmNfcmVkaXJlY3Q8L3NwYW4+IHRyZWF0cyBodHRwOi8vd3d3LmV4YW1wbGUuY29t L21pc3NpbmcgdGhlIHNhbWUgYXMgaHR0cDovL3d3dy5leGFtcGxlLmNvbS9taXNzaW5nLzwv bGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJ0YWciPmFyY19yZWRpcmVjdDwvc3Bhbj4gZG9lcyBu b3QgdHJlYXQgaHR0cDovL2V4YW1wbGUuY29tL21pc3NpbmcgYW5kIGh0dHA6Ly93d3cuZXhh bXBsZS5jb20vbWlzc2luZyBhcyB0aGUgc2FtZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9z cGFuPjwvbGk+Cgk8L3VsPgoKIjtzOjQ6ImNvZGUiO3M6NzQzMToicmVnaXN0ZXJfY2FsbGJh Y2soJ2FyY19yZWRpcmVjdF9pbnN0YWxsJywncGx1Z2luX2xpZmVjeWNsZS5hcmNfcmVkaXJl Y3QnLCAnaW5zdGFsbGVkJyk7CnJlZ2lzdGVyX2NhbGxiYWNrKCdhcmNfcmVkaXJlY3RfdW5p bnN0YWxsJywncGx1Z2luX2xpZmVjeWNsZS5hcmNfcmVkaXJlY3QnLCAnZGVsZXRlZCcpOwpy ZWdpc3Rlcl9jYWxsYmFjaygnYXJjX3JlZGlyZWN0JywgJ3R4cF9kaWUnLCA0MDQpOwphZGRf cHJpdnMoJ2FyY19yZWRpcmVjdCcsICcxLDIsMyw0Jyk7CnJlZ2lzdGVyX3RhYignZXh0ZW5z aW9ucycsICdhcmNfcmVkaXJlY3QnLCAnYXJjX3JlZGlyZWN0Jyk7CnJlZ2lzdGVyX2NhbGxi YWNrKCdhcmNfcmVkaXJlY3RfdGFiJywgJ2FyY19yZWRpcmVjdCcpOwoKLyoKICogQ2hlY2sg Zm9yIHJlZGlyZWN0ZWQgVVJMcyBhbmQgZm9yd2FyZCB3aXRoIGEgMzAxIHdoZXJlIG5lY2Vz c2FyeS4KICovCmZ1bmN0aW9uIGFyY19yZWRpcmVjdCgkZXZlbnQsICRzdGVwKSB7CiAgJHVy bCA9IFBST1RPQ09MLiRfU0VSVkVSWydTRVJWRVJfTkFNRSddLiRfU0VSVkVSWydSRVFVRVNU X1VSSSddOwoKICAvLyBTdHJpcCBmaW5hbCBzbGFzaCBmcm9tIHVybAogICR1cmwgPSBydHJp bSgkdXJsLCAnLycpOwoKICAkdXJsID0gZG9TbGFzaCgkdXJsKTsKCiAgJHJlZGlyZWN0ID0g c2FmZV9yb3coJ3JlZGlyZWN0VXJsJywgJ2FyY19yZWRpcmVjdCcsICJvcmlnaW5hbFVybCA9 ICckdXJsJyIpOwoKCSAgaWYgKGlzc2V0KCRyZWRpcmVjdFsncmVkaXJlY3RVcmwnXSkpIHsK CQkgIG9iX2VuZF9jbGVhbigpOwoKCQkgIGhlYWRlcigiU3RhdHVzOiAzMDEiKTsKCQkgIGhl YWRlcigiSFRUUC8xLjAgMzAxIE1vdmVkIFBlcm1hbmVudGx5Iik7CgkJICBoZWFkZXIoIkxv Y2F0aW9uOiAiLiRyZWRpcmVjdFsncmVkaXJlY3RVcmwnXSwgVFJVRSwgMzAxKTsKCgkJICAv LyBJbiBjYXNlIHRoZSBoZWFkZXIoKSBtZXRob2QgZmFpbHMsIGZhbGwgYmFjayBvbiBhIGNs YXNzaWMgcmVkaXJlY3QKCQkgIGVjaG8gJzxodG1sPjxoZWFkPjxNRVRBIEhUVFAtRVFVSVY9 IlJlZnJlc2giIENPTlRFTlQ9IjA7VVJMPScKCQkgICAgLiRwZXJtbGluay4nIj48L2hlYWQ+ PGJvZHk+PC9ib2R5PjwvaHRtbD4nOwoJCSAgZGllKCk7CgkgIH0KCn0KCmZ1bmN0aW9uIGFy Y19yZWRpcmVjdF90YWIoJGV2ZW50LCAkc3RlcCkgewogIHN3aXRjaCAoJHN0ZXApIHsKICAg IGNhc2UgJ2FkZCc6IGFyY19yZWRpcmVjdF9hZGQoKTsgYnJlYWs7CiAgICBjYXNlICdzYXZl JzogYXJjX3JlZGlyZWN0X3NhdmUoKTsgYnJlYWs7CiAgICBjYXNlICdlZGl0JzogYXJjX3Jl ZGlyZWN0X2VkaXQoKTsgYnJlYWs7CiAgICBjYXNlICdhcmNfcmVkaXJlY3RfbXVsdGlfZWRp dCc6IGFyY19yZWRpcmVjdF9tdWx0aWVkaXQoKTsgYnJlYWs7CiAgICBkZWZhdWx0OiBhcmNf cmVkaXJlY3RfbGlzdCgpOwogIH0KfQoKZnVuY3Rpb24gYXJjX3JlZGlyZWN0X2xpc3QoJG1l c3NhZ2UgPSAnJykgewoKICBnbG9iYWwgJGV2ZW50OwoKICBleHRyYWN0KGdwc2EoYXJyYXko J3BhZ2UnKSkpOwoKICBwYWdldG9wKCdhcmNfcmVkaXJlY3QnLCRtZXNzYWdlKTsKCiAgJGNy aXRlcmlhID0gMTsKCiAgJHRvdGFsID0gZ2V0Q291bnQoJ2FyY19yZWRpcmVjdCcsICRjcml0 ZXJpYSk7CgogICRsaW1pdCA9IDI1OwogIGxpc3QoJHBhZ2UsICRvZmZzZXQsICRudW1QYWdl cykgPSBwYWdlcigkdG90YWwsICRsaW1pdCwgJHBhZ2UpOwoKICAkc29ydF9zcWwgPSAnYXJj X3JlZGlyZWN0SUQgZGVzYyc7CgogICRycyA9IHNhZmVfcm93c19zdGFydCgnKicsICdhcmNf cmVkaXJlY3QnLCAiJGNyaXRlcmlhIG9yZGVyIGJ5ICRzb3J0X3NxbCBsaW1pdCAkb2Zmc2V0 LCAkbGltaXQiKTsKCgogIC8vIEluY2x1ZGUgYSBxdWljayBhZGQgZm9ybQogICRodG1sID0g Zm9ybSgKICAgIHN0YXJ0VGFibGUoJ2VkaXQnKQogICAgICAudHIoCiAgICAgICAgdGRhKHRh ZygnUmVkaXJlY3QgZnJvbSBVUkwgKHByb2R1Y2VzIDQwNCBwYWdlKScsJ2xhYmVsJywgJyBm b3I9Im9yaWdpbmFsVXJsIicpLCcgc3R5bGU9InZlcnRpY2FsLWFsaWduOm1pZGRsZSInKQog ICAgICAgIC50ZChmSW5wdXQoJ3RleHQnLCdvcmlnaW5hbFVybCcsJycsJ2VkaXQnLCcnLCcn LCcnLCcnLCdvcmlnaW5hbFVybCcpKQogICAgICApLnRyKAogICAgICAgIHRkYSh0YWcoJ1Jl ZGlyZWN0IHRvIFVSTCcsJ2xhYmVsJywgJyBmb3I9InJlZGlyZWN0VXJsIicpLCcgc3R5bGU9 InZlcnRpY2FsLWFsaWduOm1pZGRsZSInKQogICAgICAgIC50ZChmSW5wdXQoJ3RleHQnLCdy ZWRpcmVjdFVybCcsJycsJ2VkaXQnLCcnLCcnLCcnLCcnLCdyZWRpcmVjdFVybCcpCiAgICAg ICAgLmVJbnB1dCgnYXJjX3JlZGlyZWN0JykKICAgICAgICAuc0lucHV0KCdhZGQnKS4nJm5i c3A7Jy5mSW5wdXQoJ3N1Ym1pdCcsJ2FkZCcsZ1R4dCgnQWRkJyksJ3B1Ymxpc2gnKQogICAg ICAgICkKICAgICAgKQogICAgLmVuZFRhYmxlKCkKICAsICdtYXJnaW4tYm90dG9tOjI1cHgn KTsKCiAgLy8gQWRkIGEgbGlzdCBvZiBleGlzdGluZyByZWRpcmVjdHMKICAkaHRtbCAuPSBu Lm4uJzxmb3JtIGFjdGlvbj0iaW5kZXgucGhwIiBpZD0iYXJjX3JlZGlyZWN0X2Zvcm0iIG1l dGhvZD0icG9zdCIgbmFtZT0ibG9uZ2Zvcm0iIG9uc3VibWl0PSJyZXR1cm4gdmVyaWZ5KFwn Jy5nVHh0KCdhcmVfeW91X3N1cmUnKS4nXCcpIj4nOwogICRodG1sIC49IHN0YXJ0VGFibGUo J2xpc3QnKTsKCiAgJGh0bWwgLj0gdHIoCiAgICBoQ2VsbCgnSUQjJykKICAgIC5oQ2VsbCgp CiAgICAuaENlbGwoJ09yaWdpbmFsIFVSTCcpCiAgICAuaENlbGwoJ1JlZGlyZWN0IFVSTCcp CiAgICAuaENlbGwoKQogICk7CgogIHdoaWxlICgkcmVkaXJlY3QgPSBuZXh0Um93KCRycykp IHsKICAgICRlZGl0TGluayA9IGhyZWYoZ1R4dCgnZWRpdCcpLAogICAgICAnP2V2ZW50PWFy Y19yZWRpcmVjdCZhbXA7c3RlcD1lZGl0JmFtcDtpZD0nLiRyZWRpcmVjdFsnYXJjX3JlZGly ZWN0SUQnXSk7CiAgICAkcmVkaXJlY3RMaW5rID0gaHJlZignVGVzdCcsJHJlZGlyZWN0Wydv cmlnaW5hbFVybCddKTsKICAgICRodG1sIC49IHRyKAogICAgICB0ZCgkcmVkaXJlY3RbJ2Fy Y19yZWRpcmVjdElEJ10sIDIwLCAnaWQnKQogICAgICAudGQoIjx1bD48bGkgY2xhc3M9J2Fj dGlvbi1lZGl0Jz4kZWRpdExpbms8L2xpPjxsaSBjbGFzcz0nYWN0aW9uLXZpZXcnPiRyZWRp cmVjdExpbms8L2xpPjwvdWw+IiwgMzUsICdhY3Rpb25zJykKICAgICAgLnRkKCRyZWRpcmVj dFsnb3JpZ2luYWxVcmwnXSwgMTc1KQogICAgICAudGQoJHJlZGlyZWN0WydyZWRpcmVjdFVy bCddLCAxNzUpCiAgICAgIC50ZChmSW5wdXQoJ2NoZWNrYm94JywgJ3NlbGVjdGVkW10nLCAk cmVkaXJlY3RbJ2FyY19yZWRpcmVjdElEJ10pLCAnJywgJ211bHRpLWVkaXQnKQogICAgKTsK ICB9CgogICRodG1sIC49IG4uJzx0Zm9vdD4nLnRyKAogICAgICB0ZGEoc2VsZWN0X2J1dHRv bnMoKQogICAgICAuZXZlbnRfbXVsdGllZGl0X2Zvcm0oJ2FyY19yZWRpcmVjdCcsIGFycmF5 KCdkZWxldGUnPT5nVHh0KCdkZWxldGUnKSksMSwnJywnJywnJywnJyksCiAgICAgICcgY2xh c3M9Im11bHRpLWVkaXQiIGNvbHNwYW49IjUiIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0O2Jv cmRlcjpub25lIicpCiAgICApLm4uJzwvdGZvb3Q+JzsKCiAgJGh0bWwgLj0gZW5kVGFibGUo KTsKICAkaHRtbCAuPSAnPC9mb3JtPic7CgogICRodG1sIC49IG4uJzxkaXYgaWQ9IicuJGV2 ZW50LidfbmF2aWdhdGlvbiIgY2xhc3M9InR4cC1uYXZpZ2F0aW9uIj4nCiAgICAubi5uYXZf Zm9ybSgnYXJjX3JlZGlyZWN0JywgJHBhZ2UsICRudW1QYWdlcywgJycsICcnLCAnJywgJycs ICR0b3RhbCwgJGxpbWl0KQogICAgLm4uJzwvZGl2Pic7CgogIGVjaG8gJGh0bWw7Cgp9Cgpm dW5jdGlvbiBhcmNfcmVkaXJlY3RfZWRpdCgkbWVzc2FnZT0nJykgewogIHBhZ2V0b3AoJ2Fy Y19yZWRpcmVjdCcsJG1lc3NhZ2UpOwoKICAkb3JpZ2luYWxVcmwgPSBncHMoJ29yaWdpbmFs VXJsJyk7CiAgJHJlZGlyZWN0VXJsID0gZ3BzKCdyZWRpcmVjdFVybCcpOwoKICBpZiAoJGlk PWdwcygnaWQnKSkgewogICAgJGlkID0gZG9TbGFzaCgkaWQpOwogICAgJHJzID0gc2FmZV9y b3coJ29yaWdpbmFsVXJsLHJlZGlyZWN0VXJsJywgJ2FyY19yZWRpcmVjdCcsICJhcmNfcmVk aXJlY3RJRCA9ICRpZCIpOwogICAgZXh0cmFjdCgkcnMpOwogIH0KCiAgJGh0bWwgPSBmb3Jt KAogICAgc3RhcnRUYWJsZSgnZWRpdCcpCiAgICAgIC50cigKICAgICAgICB0ZGEodGFnKCdS ZWRpcmVjdCBmcm9tIFVSTCAocHJvZHVjZXMgNDA0IHBhZ2UpJywnbGFiZWwnLCAnIGZvcj0i b3JpZ2luYWxVcmwiJyksJyBzdHlsZT0idmVydGljYWwtYWxpZ246bWlkZGxlIicpCiAgICAg ICAgLnRkKGZJbnB1dCgndGV4dCcsJ29yaWdpbmFsVXJsJywkb3JpZ2luYWxVcmwsJ2VkaXQn LCcnLCcnLCcnLCcnLCdvcmlnaW5hbFVybCcpKQogICAgICApLnRyKAogICAgICAgIHRkYSh0 YWcoJ1JlZGlyZWN0IHRvIFVSTCcsJ2xhYmVsJywgJyBmb3I9InJlZGlyZWN0VXJsIicpLCcg c3R5bGU9InZlcnRpY2FsLWFsaWduOm1pZGRsZSInKQogICAgICAgIC50ZChmSW5wdXQoJ3Rl eHQnLCdyZWRpcmVjdFVybCcsJHJlZGlyZWN0VXJsLCdlZGl0JywnJywnJywnJywnJywncmVk aXJlY3RVcmwnKQogICAgICAgIC5lSW5wdXQoJ2FyY19yZWRpcmVjdCcpLicmbmJzcDsnCiAg ICAgICAgLigoJGlkKT8KICAgICAgICBzSW5wdXQoJ3NhdmUnKS5oSW5wdXQoJ2lkJywkaWQp LmZJbnB1dCgnc3VibWl0Jywnc2F2ZScsZ1R4dCgnU2F2ZScpLCdwdWJsaXNoJykKICAgICAg ICAgIDpzSW5wdXQoJ2FkZCcpLmZJbnB1dCgnc3VibWl0JywnYWRkJyxnVHh0KCdBZGQnKSwn cHVibGlzaCcpCiAgICAgICAgKSkKICAgICAgKQogICAgLmVuZFRhYmxlKCkKICApOwoKICBl Y2hvICRodG1sOwoKfQoKZnVuY3Rpb24gYXJjX3JlZGlyZWN0X2FkZCgpIHsKICAkb3JpZ2lu YWxVcmwgPSBncHMoJ29yaWdpbmFsVXJsJyk7CiAgJHJlZGlyZWN0VXJsID0gZ3BzKCdyZWRp cmVjdFVybCcpOwoKICBpZiAoJG9yaWdpbmFsVXJsID09PSAnJyB8fCAkcmVkaXJlY3RVcmwg PT09ICcnKSB7CiAgICBhcmNfcmVkaXJlY3RfZWRpdCgnVW5hYmxlIHRvIGFkZCBuZXcgcmVk aXJlY3QnKTsKICAgIHJldHVybjsKICB9CgogIC8vIFN0cmlwIGZpbmFsIHNsYXNoIGZyb20g b3JpZ2luYWwgdXJsCiAgJG9yaWdpbmFsVXJsID0gcnRyaW0oJG9yaWdpbmFsVXJsLCAnLycp OwoKICAkcSA9IHNhZmVfaW5zZXJ0KCJhcmNfcmVkaXJlY3QiLAogICAgIm9yaWdpbmFsVXJs ID0gJyIudHJpbShkb1NsYXNoKCRvcmlnaW5hbFVybCkpLiInLCByZWRpcmVjdFVybCA9ICci LnRyaW0oZG9TbGFzaCgkcmVkaXJlY3RVcmwpKS4iJyIKICApOwoKICAkR0xPQkFMU1snSUQn XSA9IG15c3FsX2luc2VydF9pZCgpOwoKICBpZiAoJHEpIHsKICAgICRtZXNzYWdlID0gZ1R4 dCgnUmVkaXJlY3QgYWRkZWQnKTsKICAgIGFyY19yZWRpcmVjdF9saXN0KCRtZXNzYWdlKTsK ICB9Cn0KCmZ1bmN0aW9uIGFyY19yZWRpcmVjdF9zYXZlKCkgewoKICBpZiAoISRpZD1ncHMo J2lkJykpIHsKICAgIGFyY19yZWRpcmVjdF9saXN0KCdVbmFibGUgdG8gc2F2ZSByZWRpcmVj dCcpOwogICAgcmV0dXJuOwogIH0KCiAgJG9yaWdpbmFsVXJsID0gZ3BzKCdvcmlnaW5hbFVy bCcpOwogICRyZWRpcmVjdFVybCA9IGdwcygncmVkaXJlY3RVcmwnKTsKCiAgaWYgKCRvcmln aW5hbFVybCA9PSAnJyB8fCAkcmVkaXJlY3RVcmwgPT0gJycpIHsKICAgIGFyY19yZWRpcmVj dF9lZGl0KCdVbmFibGUgdG8gc2F2ZSByZWRpcmVjdCcpOwogICAgcmV0dXJuOwogIH0KCiAg Ly8gU3RyaXAgZmluYWwgc2xhc2ggZnJvbSBvcmlnaW5hbCB1cmwKICAkb3JpZ2luYWxVcmwg PSBydHJpbSgkb3JpZ2luYWxVcmwsICcvJyk7CgogICRpZCA9IGRvU2xhc2goJGlkKTsKCiAg JHJzID0gc2FmZV91cGRhdGUoImFyY19yZWRpcmVjdCIsCiAgICAib3JpZ2luYWxVcmwgICAg PSAnIi50cmltKGRvU2xhc2goJG9yaWdpbmFsVXJsKSkuIicsICByZWRpcmVjdFVybCA9ICci LnRyaW0oZG9TbGFzaCgkcmVkaXJlY3RVcmwpKS4iJyIsCiAgICAiYXJjX3JlZGlyZWN0SUQg PSAkaWQiCiAgKTsKCiAgaWYgKCRycykgewogICAgJG1lc3NhZ2UgPSBnVHh0KCdSZWRpcmVj dCB1cGRhdGVkJyk7CiAgICBhcmNfcmVkaXJlY3RfbGlzdCgkbWVzc2FnZSk7CiAgfQp9Cgpm dW5jdGlvbiBhcmNfcmVkaXJlY3RfbXVsdGllZGl0KCkgewogICRzZWxlY3RlZCA9IHBzKCdz ZWxlY3RlZCcpOwoKICBpZiAoISRzZWxlY3RlZCB8fCAhaXNfYXJyYXkoJHNlbGVjdGVkKSkg ewogICAgYXJjX3JlZGlyZWN0X2xpc3QoKTsKICAgIHJldHVybjsKICB9CgogICRtZXRob2Qg PSBwcygnZWRpdF9tZXRob2QnKTsKICAkY2hhbmdlZCA9IGFycmF5KCk7CgogICRtZXNzYWdl ID0gJyc7CgogIHN3aXRjaCAoJG1ldGhvZCkgewogICAgY2FzZSAnZGVsZXRlJzoKCiAgICAg IGZvcmVhY2ggKCRzZWxlY3RlZCBhcyAkaWQpIHsKICAgICAgICAkaWQgPSBkb1NsYXNoKCRp ZCk7CiAgICAgICAgaWYgKHNhZmVfZGVsZXRlKCdhcmNfcmVkaXJlY3QnLCAnYXJjX3JlZGly ZWN0SUQgPSAnLiRpZCkpIHsKICAgICAgICAgICRjaGFuZ2VkW10gPSAkaWQ7CiAgICAgICAg fQogICAgICB9CiAgICAgICRtZXNzYWdlID0gY291bnQoJGNoYW5nZWQpLicgcmVkaXJlY3Rz IGRlbGV0ZWQnOwogICAgICBicmVhazsKICB9CgogIGFyY19yZWRpcmVjdF9saXN0KCRtZXNz YWdlKTsKfQoKLy8gSW5zdGFsbGF0aW9uIGZ1bmN0aW9uIC0gYnVpbGRzIE15U1FMIHRhYmxl CmZ1bmN0aW9uIGFyY19yZWRpcmVjdF9pbnN0YWxsKCkKewoKICAvLyBGb3IgZmlyc3QgaW5z dGFsbCwgY3JlYXRlIHRhYmxlIGZvciB0d2VldHMKICAkc3FsID0gIkNSRUFURSBUQUJMRSBJ RiBOT1QgRVhJU1RTICIuUEZYLiJhcmNfcmVkaXJlY3QgIjsKICAkc3FsLj0gIihhcmNfcmVk aXJlY3RJRCBJTlRFR0VSIEFVVE9fSU5DUkVNRU5UIFBSSU1BUlkgS0VZLAogICAgb3JpZ2lu YWxVcmwgVkFSQ0hBUigyNTUpLAogICAgcmVkaXJlY3RVcmwgVkFSQ0hBUigyNTUpKTsiOwoK ICBpZiAoIXNhZmVfcXVlcnkoJHNxbCkpIHsKICAgIHJldHVybiAnRXJyb3IgLSB1bmFibGUg dG8gY3JlYXRlIGFyY19yZWRpcmVjdCB0YWJsZSc7CiAgfQoKfQoKLy8gVW5pbnN0YWxsIGZ1 bmN0aW9uIC0gZGVsZXRlcyBNeVNRTCB0YWJsZSBhbmQgcmVsYXRlZCBwcmVmZXJlbmNlcwoK ZnVuY3Rpb24gYXJjX3JlZGlyZWN0X3VuaW5zdGFsbCgpCnsKICAkc3FsID0gIkRST1AgVEFC TEUgSUYgRVhJU1RTICIuUEZYLiJhcmNfcmVkaXJlY3Q7IjsKICBpZiAoIXNhZmVfcXVlcnko JHNxbCkpIHsKICAgIHJldHVybiAnRXJyb3IgLSB1bmFibGUgdG8gZGVsZXRlIGFyY19yZWRp cmVjdCB0YWJsZSc7CiAgfQp9IjtzOjM6Im1kNSI7czozMjoiNWZiM2NhNjYwZjAxNTBlMzU5 MmU3NGIzZTkzYTk1N2YiO30=