# Name: cbe_members va.1.2 # Type: Client side plugin # cbe_frontauth companion: users accounts management (change and reset passwords) # Author: Claire Brione # URL: http://www.clairebrione.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjExOiJjYmVfbWVtYmVycyI7czo2OiJhdXRob3IiO3M6MTM6 IkNsYWlyZSBCcmlvbmUiO3M6MTA6ImF1dGhvcl91cmkiO3M6Mjg6Imh0dHA6Ly93d3cuY2xh aXJlYnJpb25lLmNvbS8iO3M6NzoidmVyc2lvbiI7czo1OiJhLjEuMiI7czoxMToiZGVzY3Jp cHRpb24iO3M6Nzk6ImNiZV9mcm9udGF1dGggY29tcGFuaW9uOiB1c2VycyBhY2NvdW50cyBt YW5hZ2VtZW50IChjaGFuZ2UgYW5kIHJlc2V0IHBhc3N3b3JkcykiO3M6NDoiaGVscCI7czoy MzgxOiI8ZGl2IGlkPSJjYmUtcGx1Z2luLWhlbHAiPg0KDQo8aDE+Y2JlX21lbWJlcnM8L2gx Pg0KDQo8cD5JdCdzIGEgY2xpZW50LXNpZGUgcGx1Z2luLg0KPGJyIC8+SXQgY3VycmVudGx5 IGlzIGEgY29tcGFuaW9uIGZvciA8Y29kZT5jYmVfZnJvbnRhdXRoPC9jb2RlPiB0aGF0IGFk ZHMgdGhlIHJlc2V0IGFuZCBjaGFuZ2UgcGFzc3dvcmQgZmVhdHVyZXMuPC9wPg0KPHA+RnVs bHkgcGx1Zy1hbmQtcGxheToganVzdCBpbnN0YWxsIGFuZCBhY3RpdmF0ZSwgYW5kIHlvdSdy ZSBkb25lICE8L3A+DQo8cD5EZXZlbG9wZWQgYW5kIHRlc3RlZCB3aXRoIFRleHRwYXR0ZXJu IDQuNC4xPC9wPg0KPHAgY2xhc3M9InJlYWRtZSI+UmVxdWlyZXMgY2JlX2Zyb250YXV0aCAw LjkgYW5kIGFib3ZlPC9wPg0KDQo8aDI+VGFibGUgb2YgY29udGVudHM8L2gyPg0KPHVsPg0K ICA8bGk+PGEgaHJlZj0iI2ZlYXR1cmVzIj5GZWF0dXJlczwvYT48L2xpPg0KICA8bGk+PGEg aHJlZj0iI2RsLWluc3RhbGwtc3VwcCI+RG93bmxvYWQsIGluc3RhbGxhdGlvbiwgc3VwcG9y dDwvYT48L2xpPg0KICA8bGk+PGEgaHJlZj0iI3RhZ3MtbGlzdCI+VGFncyBsaXN0PC9hPjwv bGk+DQogIDxsaT48YSBocmVmPSIjY2hhbmdlbG9nIj5DaGFuZ2Vsb2c8L2E+PC9saT4NCjwv dWw+DQoNCjxoMiBpZD0iZmVhdHVyZXMiPkZlYXR1cmVzPC9oMj4NCjx1bD4NCjxsaT48Yj5D aGFuZ2UgcGFzc3dvcmQ8L2I+OiBkaXNwbGF5cyBhIGZvcm0gKG9sZCBwYXNzd29yZCwgbmV3 IHBhc3N3b3JkIHR3aWNlKSwgY29udHJvbHMgZGF0YXMsIGlmIGNvcnJlY3QgY2hhbmdlcyB0 aGUgcGFzc3dvcmQgYW5kIG1haWxzIGl0PC9saT4NCjxsaT48Yj5SZXNldCBwYXNzd29yZDwv Yj46IGRpc3BsYXlzIGEgZm9ybSAodXNlcidzIG5hbWUgb3IgZW1haWwgZGVwZW5kaW5nIG9u IDxjb2RlPmNiZV9mcm9udGF1dGg8L2NvZGU+J3MgcGFyYW1ldGVycyksIGNvbnRyb2xzIGRh dGFzLCBpZiBjb3JyZWN0IHJlc2V0cyB0aGUgcGFzc3dvcmQgYW5kIG1haWxzIGl0PC9saT4N CjxsaT48Yj5FcnJvciBtZXNzYWdlczwvYj46IGNhbiBiZSBlZGl0ZWQgaW4gdGhlIGZpcnN0 IGxpbmVzIG9mIHBsdWdpbiBjb2RlPC9saT4NCjwvdWw+DQoNCjxoMiBpZD0iZGwtaW5zdGFs bC1zdXBwIj5Eb3dubG9hZCwgaW5zdGFsbGF0aW9uLCBzdXBwb3J0PC9oMj4NCg0KPHA+RG93 bmxvYWQgZnJvbSA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvMTI1 MC9jYmVfbWVtYmVycyI+dGV4dHBhdHRlcm4gcmVzb3VyY2VzPC9hPiBvciB0aGUgPGEgaHJl Zj0iaHR0cDovL3d3dy5jbGFpcmVicmlvbmUuY29tL2NiZV9tZW1iZXJzIj5wbHVnaW4gcGFn ZTwvYT4uPC9wPg0KPHA+Q29weS9wYXN0ZSBpbiB0aGUgQWRtaW4gPiBQbHVnaW5zIHRhYiB0 byBpbnN0YWxsIG9yIHVuaW5zdGFsbCwgYWN0aXZhdGUgb3IgZGVzYWN0aXZhdGUuPC9wPg0K PHA+VmlzaXQgdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS50ZXh0cGF0dGVybi5jb20vdmll d3RvcGljLnBocD9pZD0zNzc2MCI+Zm9ydW0gdGhyZWFkPC9hPiBmb3Igc3VwcG9ydC48L3A+ DQoNCjxoMiBpZD0idGFncy1saXN0Ij5UYWdzIGxpc3Q8L2gyPg0KDQo8cD4oTGF0ZXIpPC9w Pg0KDQo8aDIgaWQ9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMj4NCjx1bD4NCiAgPGxpPjI4 IE1hciAxMiAtdiBhLjEuMi0gRml4OiBtaXNzaW5nIGluY2x1ZGUgZm9yIHBhc3N3b3JkIGdl bmVyYXRpb248L2xpPg0KICA8bGk+MjEgTWFyIDEyIC0gdiBhLjEgLSBBbHBoYTogcmVzZXQg YW5kIGNoYW5nZSBwYXNzd29yZDwvbGk+DQo8L3VsPg0KDQo8L2Rpdj4KPCEtLSAtLS0gQkVH SU4gUExVR0lOIENTUyAtLS0gLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQojY2JlLXBs dWdpbi1oZWxwIC5yZWFkbWUgew0KICBjb2xvcjogcmVkOw0KICBmb250LXdlaWdodDogYm9s ZDsNCn0NCiNjYmUtcGx1Z2luLWhlbHAgLmFjY2VudCB7DQogIGZvbnQtd2VpZ2h0OiBib2xk Ow0KfQ0KI2NiZS1wbHVnaW4taGVscCAubGlzdCB0aHsNCgl0ZXh0LWFsaWduOmxlZnQ7DQoJ Y29sb3I6I2ZmZjsNCgliYWNrZ3JvdW5kOiM1NTU7DQoJcGFkZGluZzo2cHggMTZweCA2cHgg NHB4Ow0KCWJvcmRlci1yaWdodDoxcHggc29saWQgIzk5OTsNCglmb250LXdlaWdodDpub3Jt YWw7DQp9DQojY2JlLXBsdWdpbi1oZWxwIC5saXN0IHRoIGF7DQoJY29sb3I6I2ZmZjsNCglk aXNwbGF5OmJsb2NrOw0KfQ0KI2NiZS1wbHVnaW4taGVscCAubGlzdCB0aCBoMnsNCgltYXJn aW46MDsNCglmb250LXNpemU6MTFweDsNCn0NCiNjYmUtcGx1Z2luLWhlbHAgLmxpc3QgdGR7 DQoJcGFkZGluZzo2cHggNHB4Ow0KfQ0KPC9zdHlsZT4KPCEtLSAtLS0gRU5EIFBMVUdJTiBD U1MgLS0tIC0tPiI7czo0OiJjb2RlIjtzOjEyNzc3OiIvKg0KKiogY2JlX21lbWJlcnMNCioq IENsaWVudC1zaWRlIHRleHRwYXR0ZXJuIHBsdWdpbg0KKiogRnJvbnRzaWRlIHVzZXIgc2Vs ZiBtYW5hZ2VtZW50DQoqKiBJbnRlbmRlZCB0byBiZSBwbHVnZ2VkIGludG8gY2JlX2Zyb250 YXV0aA0KKiogQ2xhaXJlIEJyaW9uZSAtIGh0dHA6Ly93d3cuY2xhaXJlYnJpb25lLmNvbS8N CioqDQoqKiBhLjEgLSAyMSBNYXIgMjAxMiAtIEFscGhhIDogcmVzZXQgYW5kIGNoYW5nZSBw YXNzd29yZA0KKiogYS4xLjItMjggTWFyIDIwMTIgLSBGaXg6IG1pc3NpbmcgaW5jbHVkZSBm b3IgcGFzc3dvcmQgZ2VuZXJhdGlvbg0KKioNCiAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCi8q KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICoq DQogKiogTG9jYWwgbGFuZyB2YWx1ZXMsIHBvc3NpYmxlIGN1c3RvbWlzYXRpb24gaGVyZQ0K ICoqDQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovDQoNCmZ1bmN0aW9uIF9jYmVfbWJfbGFuZygpDQp7DQogICAgcmV0dXJuKCBhcnJheSgg J2FsbF9maWVsZHNfcmVxdWlyZWQnICAgID0+ICJNZXJjaSBkZSByZW1wbGlyIHRvdXMgbGVz IGNoYW1wcyINCiAgICAgICAgICAgICAgICAgLCAnbmV3X3Bhc3N3b3JkX2Vycm9yJyAgICAg PT4gIkxlcyB2YWxldXJzIGR1IG5vdXZlYXUgbW90IGRlIHBhc3NlIG5lIGNvcnJlc3BvbmRl bnQgcGFzIg0KICAgICAgICAgICAgICAgICAsICdvbGRfcGFzc3dvcmRfZXJyb3InICAgICA9 PiAiQW5jaWVuIG1vdCBkZSBwYXNzZSBpbnZhbGlkZSINCiAgICAgICAgICAgICAgICAgLCAn cGFzc3dvcmRzX211c3RfYmVfZGlmZicgPT4gIkFuY2llbiBldCBub3V2ZWF1IG1vdHMgZGUg cGFzc2UgZG9pdmVudCDDqnRyZSBkaWZmw6lyZW50cyINCiAgICAgICAgICAgICAgICAgLCAn cGFzc3dvcmRfdG9vX3Nob3J0JyAgICAgPT4gIk5vdXZlYXUgbW90IGRlIHBhc3NlIHRyb3Ag Y291cnQgKDYgY2FyYWN0w6hyZXMgbWluaW11bSkiDQogICAgICAgICAgICAgICAgICwgJ3Jl Z2lzdGVyJyAgICAgICAgICAgICAgID0+ICJFbnZveWVyIg0KICAgICAgICAgICAgICAgICAp DQogICAgICAgICAgKSA7DQp9DQoNCi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PSBT dG9wIGVkaXRpbmcgPT09PT09PT09PT09PT09PT09PT09PT09PT09ICovDQoNCi8qKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICoqDQogKiog QXZhaWxhYmxlIHRhZ3MNCiAqKg0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqLw0KDQovLyAtLSBTZWxmIHJlZ2lzdHJhdGlvbg0KLy8gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0KZnVuY3Rpb24gY2JlX21lbWJlcnMoICRhdHRzLCAkdGhpbmcgPSAnJyAp DQp7DQogICAgLyogLi4uICh0byBiZSBjb250aW51ZWQpIC4uLiAqLw0KfQ0KDQovLyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tDQovLyAtLSBNZW1iZXIgbWFuYWdlbWVudCB1dGlsaXRpZXMNCi8vIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCg0KLy8gLS0gR2VuZXJhdGVzIGZpZWxkcyBmb3IgcmVnaXN0ZXIgZm9ybQ0K Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX2NiZV9tYl9mSW5wdXQoICRmaWVsZCwgJHR5 cGUsICRkYXRhID0gbnVsbCApDQp7DQogICAgJG91dCA9IGFycmF5KCkgOw0KICAgIGlmKCAk ZGF0YSAhPT0gbnVsbCApDQogICAgICAgIGV4dHJhY3QoICRkYXRhICkgOw0KDQogICAgaWYo ICR0eXBlICE9PSAnc3VibWl0JyApDQogICAgICAgICRvdXRbXSA9ICc8bGFiZWwgZm9yPSIn LiAkZmllbGQgLiciPicuIF9jYmVfbWJfZ1R4dCggJGZpZWxkICkgLic8L2xhYmVsPicgOw0K ICAgICRvdXRbXSA9IGZJbnB1dCggJHR5cGUNCiAgICAgICAgICAgICAgICAgICAsICRmaWVs ZA0KICAgICAgICAgICAgICAgICAgICwgaXNzZXQoICQkZmllbGQgKSA/ICQkZmllbGQgOiAn Jw0KICAgICAgICAgICAgICAgICAgICwgJycsICcnLCAnJywgJycsICcnLCAkZmllbGQgKSA7 DQogICAgcmV0dXJuKCBqb2luKCBuLCAkb3V0ICkgKSA7DQp9DQoNCi8qKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICoqDQogKiogRnVuY3Rp b25zIHRvIGJlIHBsdWdnZWQgaW50byBjYmVfZnJvbnRhdXRoDQogKioNCiAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCg0KcmVnaXN0ZXJf Y2FsbGJhY2soICdjYmVfbWVtYmVyc19yZXNldF9wYXNzd29yZCcgLCAnY2JlZnJvbnRhdXRo LnJlc2V0X3Bhc3N3b3JkJyAgKSA7DQpyZWdpc3Rlcl9jYWxsYmFjayggJ2NiZV9tZW1iZXJz X2NoYW5nZV9wYXNzd29yZCcsICdjYmVmcm9udGF1dGguY2hhbmdlX3Bhc3N3b3JkJyApIDsN Cg0KLy8gLS0gUmVzZXQgcGFzc3dvcmQNCi8vIC0tIEF2YWlsYWJsZSBzdGVwcyA6DQovLyAt LSBjYmVfZmFfYmVmb3JlX2xvZ2luDQovLyAtLSBjYmVfZmFfYWZ0ZXJfbG9naW4NCi8vIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9tZW1iZXJzX3Jlc2V0X3Bhc3N3b3JkKCAkZXZl bnQsICRzdGVwLCAkZGF0YT1udWxsICkNCnsNCiAgICBnbG9iYWwgJHByZWZzIDsNCg0KICAg IGlmKCAkc3RlcCA9PSAnY2JlX2ZhX2JlZm9yZV9sb2dpbicgKQ0KICAgIHsNCiAgICAgICAg aWYoICRkYXRhID09PSBudWxsICkNCiAgICAgICAgew0KICAgICAgICAgICAgcmV0dXJuKCBf Y2JlX21iX3Bhc3N3ZGNyX2Zvcm0oICdyZXNldCcsICRzdGVwICkgKSA7DQogICAgICAgIH0N CiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgICBleHRyYWN0KCAkZGF0YSAp IDsNCiAgICAgICAgICAgIC8vICAgICAgICBeIGNvbnRhaW5zICRwX3VzZXJpZCwgJGxvZ2lu X3dpdGgsICR0YWdfZXJyb3IsICRjbGFzc19lcnJvcg0KDQogICAgICAgICAgICAkcmV0dXJu X3VybCA9IFBST1RPQ09MLiRwcmVmc1snc2l0ZXVybCddDQogICAgICAgICAgICAgICAgICAg ICAgICAuIHByZWdfcmVwbGFjZSggIi9bPyZdcmVzZXQ9MS8iLCAiIiwgc2VydmVyU2V0KCdS RVFVRVNUX1VSSScpICkgOw0KICAgICAgICAgICAgJG91dCA9IGFycmF5KCkgOw0KICAgICAg ICAgICAgZXh0cmFjdCggX2NiZV9tYl9nZXRfYXV0aG9yKCAkbG9naW5fd2l0aCwgJHBfdXNl cmlkICkgKSA7DQogICAgICAgICAgICAvLyAgICAgICAgXmNvbnRhaW5zICRuZXdwYXNzLCAk bmFtZSwgJGVtYWlsDQoNCiAgICAgICAgICAgICRvdXRbXSA9ICRuZXdwYXNzID8gX2NiZV9t Yl9zZXRfYXV0aG9yX3Bhc3MoICRuZXdwYXNzLCAkbmFtZSwgJGVtYWlsLCAkcmV0dXJuX3Vy bCwgJHBfdXNlcmlkICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZG9UYWco IF9jYmVfbWJfZ1R4dCggJ3Vua25vd25fYXV0aG9yJywgYXJyYXkoICd7bmFtZX0nID0+ICRw X3VzZXJpZCApICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICR0 YWdfZXJyb3IsICRjbGFzc19lcnJvciApIDsNCiAgICAgICAgICAgICRvdXRbXSA9IGNiZV9m cm9udGF1dGhfbGluayggYXJyYXkoICdsYWJlbCcgPT4gX2NiZV9tYl9nVHh0KCAncmV2ZXJ0 JyApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAn bGluaycgID0+ICRyZXR1cm5fdXJsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLCAndGFyZ2V0JyA9PiAnX3NlbGYnLCAnd3JhcHRhZycgPT4gJ3An ICkgKSA7DQogICAgICAgICAgICByZXR1cm4oIGpvaW4oIG4sICRvdXQgKSApIDsNCiAgICAg ICAgfQ0KICAgIH0NCiAgICBlbHNlaWYoICRzdGVwID09ICdjYmVfZmFfYWZ0ZXJfbG9naW4n ICkNCiAgICB7DQogICAgICAgIHJldHVybiggX2NiZV9tYl9wYXNzd2Rjcl9saW5rKCAncmVz ZXQnLCBhcnJheSggJ2xhYmVsJyA9PiBfY2JlX21iX2dUeHQoICdwYXNzd29yZF9mb3Jnb3R0 ZW4nICkgKSApICkgOw0KICAgIH0NCn0NCg0KLy8gLS0gQ2hhbmdlIHBhc3N3b3JkDQovLyAt LSBBdmFpbGFibGUgc3RlcHMgOg0KLy8gLS0gY2JlX2ZhX2JlZm9yZV9sb2dvdXQNCi8vIC0t IGNiZV9mYV9hZnRlcl9sb2dvdXQNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIGNiZV9t ZW1iZXJzX2NoYW5nZV9wYXNzd29yZCggJGV2ZW50LCAkc3RlcCwgJGRhdGE9bnVsbCApDQp7 DQogICAgZ2xvYmFsICRwcmVmcyA7DQoNCiAgICBpZiggJHN0ZXAgPT0gJ2NiZV9mYV9iZWZv cmVfbG9nb3V0JyApDQogICAgew0KICAgICAgICBpZiggJGRhdGEgPT09IG51bGwgKQ0KICAg ICAgICB7DQogICAgICAgICAgICByZXR1cm4oIF9jYmVfbWJfcGFzc3dkY3JfZm9ybSggJ2No YW5nZScsICRzdGVwICkgKSA7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7 DQogICAgICAgICAgICBleHRyYWN0KCAkZGF0YSApIDsNCiAgICAgICAgICAgIC8vICAgICAg IF4gY29udGFpbnMgJHBfdXNlcmlkLCAkcF9wYXNzd29yZCwgJHBfcGFzc3dvcmRfMSwgJHBf cGFzc3dvcmRfMiwgJHRhZ19lcnJvciwgJGNsYXNzX2Vycm9yDQoNCiAgICAgICAgICAgICRj b250cm9scyA9IGFycmF5KCAnYWxsX2ZpZWxkc19yZXF1aXJlZCcNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPT4gImVtcHR5KCBcJHBfcGFzc3dvcmQgKSB8fCBlbXB0eSgg XCRwX3Bhc3N3b3JkXzEgKSB8fCBlbXB0eSggXCRwX3Bhc3N3b3JkXzIgKSINCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLCAnb2xkX3Bhc3N3b3JkX2Vycm9yJw0KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA9PiAidHhwX3ZhbGlkYXRlKCBcJHBfdXNlcmlkLCBc JHBfcGFzc3dvcmQsIGZhbHNlICkgPT09IGZhbHNlIg0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAsICduZXdfcGFzc3dvcmRfZXJyb3InDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgID0+ICJcJHBfcGFzc3dvcmRfMSAhPT0gXCRwX3Bhc3N3b3JkXzIiDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3Bhc3N3b3Jkc19tdXN0X2JlX2RpZmYnDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJcJHBfcGFzc3dvcmRfMSA9PT0g XCRwX3Bhc3N3b3JkIg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICdwYXNzd29y ZF90b29fc2hvcnQnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICJzdHJs ZW4oIFwkcF9wYXNzd29yZF8xICkgPCA2Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICApIDsNCg0KICAgICAgICAgICAgJGlzZXJyb3IgPSBmYWxzZSA7DQogICAgICAgICAgICAk b3V0ID0gYXJyYXkoKSA7DQoNCiAgICAgICAgICAgIGZvcmVhY2goICRjb250cm9scyBhcyAk ZXJyID0+ICRjb25kICkNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICBpZiggZXZh bCggInJldHVybiggJGNvbmQgKSA7IiApICkNCiAgICAgICAgICAgICAgICB7DQogICAgICAg ICAgICAgICAgICAgICRpc2Vycm9yID0gdHJ1ZSA7DQogICAgICAgICAgICAgICAgICAgICRv dXRbXSA9IF9jYmVfbWJfbWVzc2FnZSggJGVyciwgJHRhZ19lcnJvciwgJGNsYXNzX2Vycm9y ICkgOw0KICAgICAgICAgICAgICAgICAgICBicmVhayA7DQogICAgICAgICAgICAgICAgfQ0K ICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZiggISAkaXNlcnJvciApDQogICAgICAg ICAgICB7DQogICAgICAgICAgICAgICAgJHJldHVybl91cmwgPSBQUk9UT0NPTC4kcHJlZnNb J3NpdGV1cmwnXQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gcHJlZ19yZXBsYWNl KCAiL1s/Jl1jaGFuZ2U9MS8iLCAiIiwgc2VydmVyU2V0KCdSRVFVRVNUX1VSSScpICkgOw0K DQogICAgICAgICAgICAgICAgJG91dFtdID0gX2NiZV9tYl9zZXRfYXV0aG9yX3Bhc3MoICRw X3Bhc3N3b3JkXzEsICRwX3VzZXJpZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLCBmZXRjaCggJ2VtYWlsJywgJ3R4cF91c2VycycsICduYW1l JywgJHBfdXNlcmlkICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICwgJHJldHVybl91cmwgKSA7DQogICAgICAgICAgICAgICAgJG91dFtdID0g Y2JlX2Zyb250YXV0aF9saW5rKCBhcnJheSggJ2xhYmVsJyA9PiBfY2JlX21iX2dUeHQoICdy ZXZlcnQnICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLCAnbGluaycgID0+ICRyZXR1cm5fdXJsDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3RhcmdldCcgPT4gJ19zZWxmJywgJ3dy YXB0YWcnID0+ICdwJyApICkgOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZigg JGlzZXJyb3IgKQ0KICAgICAgICAgICAgICAgICRvdXRbXSA9ICBfY2JlX21iX3Bhc3N3ZGNy X2Zvcm0oICdjaGFuZ2UnLCAkc3RlcCwgY29tcGFjdCggYXJyYXlfa2V5cyggJGRhdGEgKSAp ICkgOw0KDQogICAgICAgICAgICByZXR1cm4oIGpvaW4oIG4sICRvdXQgKSApIDsNCiAgICAg ICAgfQ0KICAgIH0NCiAgICBlbHNlaWYoICRzdGVwID09ICdjYmVfZmFfYWZ0ZXJfbG9nb3V0 JyApDQogICAgew0KICAgICAgICByZXR1cm4oIF9jYmVfbWJfcGFzc3dkY3JfbGluayggJ2No YW5nZScsIGFycmF5KCAnbGFiZWwnID0+IF9jYmVfbWJfZ1R4dCggJ2NoYW5nZV9wYXNzd29y ZCcgKSApICkgKSA7DQogICAgfQ0KfQ0KDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQovLyAtLSBDYWxs YmFja3MgYW5kIGdlbmVyYWwgdXRpbGl0aWVzDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCi8vIC0t IEdldHMgYW5kIHJldHVybnMgYWRtaW4gbGFuZyBzdHJpbmdzDQovLyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQpmdW5jdGlvbiBfY2JlX21iX2dUeHQoICR0ZXh0LCAkYXR0cyA9IGFycmF5KCkgKQ0Kew0K ICAgIHN0YXRpYyAkYVRleHRzID0gYXJyYXkoKSA7DQogICAgaWYoICEgJGFUZXh0cyApDQog ICAgICAgICRhVGV4dHMgPSBsb2FkX2xhbmdfZXZlbnQoICdhZG1pbicgKSArIF9jYmVfbWJf bGFuZygpIDsNCg0KICAgIGlmKCAoJHNUZXh0ID0gZ1R4dCggJHRleHQgKSkgPT09ICR0ZXh0 ICYmIGlzc2V0KCAkYVRleHRzWyAkdGV4dCBdICkgKQ0KICAgIHsNCiAgICAgICAgJHNUZXh0 ID0gc3RydHIoICRhVGV4dHNbICR0ZXh0IF0sICRhdHRzICkgOw0KICAgIH0NCg0KICAgIHJl dHVybiggJHNUZXh0ICkgOw0KfQ0KDQovLyAtLSBSZXR1cm5zIHRhZ2dpZmllZCBtZXNzYWdl DQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBfY2JlX21iX21lc3NhZ2UoICR0ZXh0LCAk dGFnLCAkY2xhc3MgKQ0Kew0KICAgIHJldHVybiggZG9UYWcoIF9jYmVfbWJfZ1R4dCggJHRl eHQgKSwgJHRhZywgJGNsYXNzICkgKSA7DQp9DQoNCi8vIC0tIEdlbmVyYXRlcyBsaW5rIGZv ciByZXNldHRpbmcgb3IgY2hhbmdpbmcgcGFzc3dvcmQNCi8vIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1 bmN0aW9uIF9jYmVfbWJfcGFzc3dkY3JfbGluayggJHR5cGUsICRhdHRzICkNCnsNCiAgICBl eHRyYWN0KCBsQXR0cyggYXJyYXkgKCAnbGFiZWwnID0+ICcnICkNCiAgICAgICAgICAgICAg ICAgICAgKyBfY2JlX2ZhX2Zvcm1hdCgpDQogICAgICAgICAgICAgICAgICAsICRhdHRzDQog ICAgICAgICAgICAgICAgICApDQogICAgICAgICAgICkgOw0KDQogICAgcmV0dXJuKCBjYmVf ZnJvbnRhdXRoX2xpbmsoIGFycmF5KCAnbGFiZWwnID0+IF9jYmVfbWJfZ1R4dCggJHR5cGU9 PSdyZXNldCcgPyAncGFzc3dvcmRfZm9yZ290dGVuJw0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDogJ2NoYW5nZV9wYXNzd29yZCcgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICwgJ2xpbmsnID0+ICR0eXBlLic9MScsICd0YXJnZXQnID0+ICdfZ2V0Jw0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgJ3dyYXB0YWcnID0+ICdw JywgJ2NsYXNzJyA9PiAkY2xhc3MgPyAkY2xhc3MgOiAnJyApICkgKSA7DQp9DQoNCi8vIC0t IFdyYXAgZm9ybSBmaWVsZHMgaW4gZm9ybQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24g X2NiZV9tYl9mb3JtKCAkY29udGVudHMsICRhY3Rpb24sICRzdGVwID0gbnVsbCwgJG1ldGhv ZCA9IG51bGwgKQ0Kew0KICAgIHJldHVybiggJzxmb3JtIGFjdGlvbj0iJy4gJGFjdGlvbiAu JyIgbWV0aG9kPSInLiAoJG1ldGhvZCAhPT0gbnVsbCA/ICRtZXRob2QgOiAncG9zdCcpIC4n Ij4nDQogICAgICAgICAgICAubi4gJGNvbnRlbnRzDQogICAgICAgICAgICAuICgkc3RlcCAh PT0gbnVsbCA/IG4gLiBzSW5wdXQoICRzdGVwICkgOiAnJykNCiAgICAgICAgICAgIC5uLiAn PC9mb3JtPicgKSA7DQp9DQoNCi8vIC0tIEdlbmVyYXRlcyBmb3JtIGZvciByZXNldHRpbmcg b3IgY2hhbmdpbmcgcGFzc3dvcmQNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZ1bmN0aW9uIF9jYmVf bWJfcGFzc3dkY3JfZm9ybSggJHR5cGUsICRzdGVwLCAkZGF0YT1udWxsICkNCnsNCiAgICAk b3V0ID0gYXJyYXkoKSA7DQogICAgaWYoICRkYXRhICE9PSBudWxsICkNCiAgICAgICAgZXh0 cmFjdCggJGRhdGEgKSA7DQoNCiAgICBpZiggJHR5cGUgPT0gJ3Jlc2V0JyApDQogICAgICAg ICRvdXRbXSA9IGNiZV9mcm9udGF1dGhfbG9nbmFtZSggYXJyYXkoICdjbGFzcycgPT4gJ2Vk aXQnKSApIDsNCiAgICBlbHNlDQogICAgeyAvLyBvbGQgcGFzcywgbmV3IHBhc3MsIG5ldyBw YXNzDQogICAgICAgICRsYWJlbF9uZXcgPSBfY2JlX21iX2dUeHQoICduZXdfcGFzc3dvcmQn ICkgOw0KICAgICAgICAkb3V0W10gPSBjYmVfZnJvbnRhdXRoX3Bhc3N3b3JkKCBhcnJheSgg J2NsYXNzJyA9PiAnZWRpdCcpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAsIGlzc2V0KCAkcF9wYXNzd29yZCApID8gJHBfcGFzc3dvcmQgOiBudWxsICkgOw0K ICAgICAgICAkb3V0W10gPSBfY2JlX2ZhX2lkZW50aXR5KCAnbmV3X3Bhc3N3b3JkJywgYXJy YXkoICdsYWJlbCcgPT4gJGxhYmVsX25ldywgJ2xhYmVsX3NmeCcgPT4gJ18xJyApDQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIGlzc2V0KCAkcF9wYXNzd29yZF8xICkg PyAkcF9wYXNzd29yZF8xIDogbnVsbCApIDsNCiAgICAgICAgJG91dFtdID0gX2NiZV9mYV9p ZGVudGl0eSggJ25ld19wYXNzd29yZCcsIGFycmF5KCAnbGFiZWwnID0+ICRsYWJlbF9uZXcs ICdsYWJlbF9zZngnID0+ICdfMicgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLCBpc3NldCggJHBfcGFzc3dvcmRfMiApID8gJHBfcGFzc3dvcmRfMiA6IG51bGwgKSA7 DQogICAgfQ0KDQogICAgJG91dFtdID0gY2JlX2Zyb250YXV0aF9zdWJtaXQoIGFycmF5KCAn bGFiZWwnID0+IF9jYmVfbWJfZ1R4dCggJHR5cGU9PSdyZXNldCcgPyAncGFzc3dvcmRfcmVz ZXQnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnY2hhbmdlX3Bhc3N3b3JkJyAp DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAnY2xhc3MnID0+ ICdwdWJsaXNoJyApICkgOw0KDQogICAgcmV0dXJuKCBfY2JlX21iX2Zvcm0oIGpvaW4oIG4s ICRvdXQgKSwgcGFnZV91cmwoIGFycmF5KCkgKSwgJHN0ZXAgKSApIDsNCn0NCg0KLy8gLS0g TWFpbHMgbmV3IHBhc3N3b3JkIChjaGFuZ2VkIG9yIHJlc2V0KQ0KLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KZnVuY3Rpb24gX2NiZV9tYl9nZXRfYXV0aG9yKCAkbG9naW5fd2l0aCwgJG5hbWUgKQ0K ew0KICAgIGluY2x1ZGVfb25jZSggdHhwYXRoLicvbGliL3R4cGxpYl9hZG1pbi5waHAnICkg Ow0KDQogICAgJHVzZXJtYWlsID0gc2FmZV9yb3dzKCAnbmFtZSwgZW1haWwnLCAndHhwX3Vz ZXJzJw0KICAgICAgICAgICAgICAgICAgICAgICAgICwgKCRsb2dpbl93aXRoICE9ICdlbWFp bCcgPyAibmFtZSIgOiAiZW1haWwiKSAuIj0nJG5hbWUnIiApIDsNCg0KICAgIGlmKCBjb3Vu dCggJHVzZXJtYWlsICkgIT0gMSAmJiAkbG9naW5fd2l0aCA9PSAnYXV0bycgKQ0KICAgICAg ICAkdXNlcm1haWwgPSBzYWZlX3Jvd3MoICduYW1lLCBlbWFpbCcsICd0eHBfdXNlcnMnLCAi ZW1haWw9JyRuYW1lJyIgKSA7DQoNCiAgICBpZiggY291bnQoICR1c2VybWFpbCApID09IDEg KQ0KICAgICAgICByZXR1cm4oIGFycmF5KCAnbmFtZScgICAgPT4gJHVzZXJtYWlsWzBdWyAn bmFtZScgIF0NCiAgICAgICAgICAgICAgICAgICAgICwgJ2VtYWlsJyAgID0+ICR1c2VybWFp bFswXVsgJ2VtYWlsJyBdDQogICAgICAgICAgICAgICAgICAgICAsICduZXdwYXNzJyA9PiBn ZW5lcmF0ZV9wYXNzd29yZCggNiApDQogICAgICAgICAgICAgICAgICAgICApICkgOw0KDQog ICAgcmV0dXJuKCBhcnJheSggJ25hbWUnID0+ICcnLCAnZW1haWwnID0+ICcnLCAnbmV3cGFz cycgPT4gJycgKSApIDsNCn0NCg0KLy8gLS0gTWFpbHMgbmV3IHBhc3N3b3JkIChjaGFuZ2Vk IG9yIHJlc2V0KQ0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gX2NiZV9tYl9zZW5kX25l d19wYXNzd29yZCggJHBhc3MsICRlbWFpbCwgJG5hbWUsICRyZXR1cm5fdXJsLCAkZ2l2ZW5p ZCApDQp7DQogICAgZ2xvYmFsICRwcmVmcywgJHR4cF91c2VyLCAkc2l0ZW5hbWUgOw0KICAg ICRjdXJyX3VzZXIgPSAkdHhwX3VzZXIgOw0KDQogICAgJG1lc3NhZ2UgPSBfY2JlX21iX2dU eHQoJ2dyZWV0aW5nJykuJyAnLiRnaXZlbmlkLicsJy4NCiAgICAgICAgbi5uLl9jYmVfbWJf Z1R4dCgneW91cl9wYXNzd29yZF9pcycpLic6ICcuJHBhc3MuDQogICAgICAgIG4ubi5fY2Jl X21iX2dUeHQoJ2xvZ19pbl9hdCcpLic6ICcuJHJldHVybl91cmwgOw0KDQogICAgJHR4cF91 c2VyID0gJG5hbWUgOyAvLyB0eHBNYWlsKCkgcmVjaGVyY2hlIFJlYWxOYW1lIMOgIHBhcnRp ciBkZSBuYW1lDQogICAgJG91dCA9IHR4cE1haWwoJGVtYWlsLCAiWyRzaXRlbmFtZV0gIi5f Y2JlX21iX2dUeHQoJ3lvdXJfbmV3X3Bhc3N3b3JkJyksICRtZXNzYWdlKTsNCiAgICAkdHhw X3VzZXIgPSAkY3Vycl91c2VyIDsNCiAgICByZXR1cm4oICRvdXQgKSA7DQp9DQoNCi8vIC0t IFJlc2V0cy9jaGFuZ2VzIHBhc3N3b3JkIGFuZCBtYWlscyBpdA0KLy8gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KZnVuY3Rpb24gX2NiZV9tYl9zZXRfYXV0aG9yX3Bhc3MoICRuZXdfcGFzcywgJG5hbWUs ICRlbWFpbCwgJHJldHVybl91cmwsICRnaXZlbmlkPW51bGwgKQ0Kew0KICAgICRoYXNoID0g ZG9TbGFzaCh0eHBfaGFzaF9wYXNzd29yZCgkbmV3X3Bhc3MpKTsNCiAgICAkZ2l2ZW5pZCA9 ICgkZ2l2ZW5pZCA9PSBudWxsID8gJG5hbWUgOiAkZ2l2ZW5pZCkgOw0KDQogICAgaWYoIHNh ZmVfdXBkYXRlKCAndHhwX3VzZXJzJywgInBhc3MgPSAnJGhhc2gnIiwgIm5hbWUgPSAnIi5k b1NsYXNoKCRuYW1lKS4iJyIgKSApDQogICAgICAgICRvdXQgPSBfY2JlX21iX2dUeHQoIF9j YmVfbWJfc2VuZF9uZXdfcGFzc3dvcmQoICRuZXdfcGFzcywgJGVtYWlsLCAkbmFtZSwgJHJl dHVybl91cmwsICRnaXZlbmlkICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJ3Bh c3N3b3JkX3NlbnRfdG8nDQogICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdjb3VsZF9u b3RfbWFpbCcgKQ0KICAgICAgICAgICAgIC4gJyAnIC4gJGdpdmVuaWQgOw0KDQogICAgZWxz ZQ0KICAgICAgICAkb3V0ID0gX2NiZV9tYl9nVHh0KCdjb3VsZF9ub3RfdXBkYXRlX2F1dGhv cicpLicgJy5odG1sc3BlY2lhbGNoYXJzKCAkZ2l2ZW5pZCApIDsNCiAgICByZXR1cm4oICRv dXQgKSA7DQp9DQoiO3M6NDoidHlwZSI7czoxOiIwIjtzOjU6ImZsYWdzIjtzOjE6IjAiO3M6 NToib3JkZXIiO3M6MToiNSI7czozOiJtZDUiO3M6MzI6IjM4ZTEwNmUwNDJkMmYzNDEwMmM2 MzhhNTAzN2VlNzAzIjt9