@famir/database 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.md +4 -0
  2. package/dist/database.d.ts +27 -0
  3. package/dist/database.error.d.ts +9 -0
  4. package/dist/database.error.js +13 -0
  5. package/dist/database.error.js.map +1 -0
  6. package/dist/database.functions.d.ts +242 -0
  7. package/dist/database.functions.js +17 -0
  8. package/dist/database.functions.js.map +1 -0
  9. package/dist/database.js +5 -0
  10. package/dist/database.js.map +1 -0
  11. package/dist/database.keys.d.ts +21 -0
  12. package/dist/database.keys.js +67 -0
  13. package/dist/database.keys.js.map +1 -0
  14. package/dist/database.schemas.d.ts +3 -0
  15. package/dist/database.schemas.js +12 -0
  16. package/dist/database.schemas.js.map +1 -0
  17. package/dist/index.d.ts +7 -0
  18. package/dist/index.js +8 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/models/campaign/campaign.d.ts +24 -0
  21. package/dist/models/campaign/campaign.js +47 -0
  22. package/dist/models/campaign/campaign.js.map +1 -0
  23. package/dist/models/campaign/index.d.ts +1 -0
  24. package/dist/models/campaign/index.js +2 -0
  25. package/dist/models/campaign/index.js.map +1 -0
  26. package/dist/models/index.d.ts +7 -0
  27. package/dist/models/index.js +8 -0
  28. package/dist/models/index.js.map +1 -0
  29. package/dist/models/lure/index.d.ts +1 -0
  30. package/dist/models/lure/index.js +2 -0
  31. package/dist/models/lure/index.js.map +1 -0
  32. package/dist/models/lure/lure.d.ts +17 -0
  33. package/dist/models/lure/lure.js +25 -0
  34. package/dist/models/lure/lure.js.map +1 -0
  35. package/dist/models/message/index.d.ts +1 -0
  36. package/dist/models/message/index.js +2 -0
  37. package/dist/models/message/index.js.map +1 -0
  38. package/dist/models/message/message.d.ts +38 -0
  39. package/dist/models/message/message.js +58 -0
  40. package/dist/models/message/message.js.map +1 -0
  41. package/dist/models/proxy/index.d.ts +1 -0
  42. package/dist/models/proxy/index.js +2 -0
  43. package/dist/models/proxy/index.js.map +1 -0
  44. package/dist/models/proxy/proxy.d.ts +16 -0
  45. package/dist/models/proxy/proxy.js +23 -0
  46. package/dist/models/proxy/proxy.js.map +1 -0
  47. package/dist/models/redirector/index.d.ts +1 -0
  48. package/dist/models/redirector/index.js +2 -0
  49. package/dist/models/redirector/index.js.map +1 -0
  50. package/dist/models/redirector/redirector.d.ts +12 -0
  51. package/dist/models/redirector/redirector.js +23 -0
  52. package/dist/models/redirector/redirector.js.map +1 -0
  53. package/dist/models/session/index.d.ts +1 -0
  54. package/dist/models/session/index.js +2 -0
  55. package/dist/models/session/index.js.map +1 -0
  56. package/dist/models/session/session.d.ts +13 -0
  57. package/dist/models/session/session.js +27 -0
  58. package/dist/models/session/session.js.map +1 -0
  59. package/dist/models/target/index.d.ts +1 -0
  60. package/dist/models/target/index.js +2 -0
  61. package/dist/models/target/index.js.map +1 -0
  62. package/dist/models/target/target.d.ts +51 -0
  63. package/dist/models/target/target.js +110 -0
  64. package/dist/models/target/target.js.map +1 -0
  65. package/dist/redis-database-connector.d.ts +15 -0
  66. package/dist/redis-database-connector.js +47 -0
  67. package/dist/redis-database-connector.js.map +1 -0
  68. package/dist/redis-database-manager.d.ts +11 -0
  69. package/dist/redis-database-manager.js +27 -0
  70. package/dist/redis-database-manager.js.map +1 -0
  71. package/dist/redis-functions.d.ts +1 -0
  72. package/dist/redis-functions.js +1396 -0
  73. package/dist/redis-functions.js.map +1 -0
  74. package/dist/repositories/base/index.d.ts +1 -0
  75. package/dist/repositories/base/index.js +2 -0
  76. package/dist/repositories/base/index.js.map +1 -0
  77. package/dist/repositories/base/redis-base.repository.d.ts +23 -0
  78. package/dist/repositories/base/redis-base.repository.js +140 -0
  79. package/dist/repositories/base/redis-base.repository.js.map +1 -0
  80. package/dist/repositories/campaign/campaign.d.ts +13 -0
  81. package/dist/repositories/campaign/campaign.functions.d.ts +66 -0
  82. package/dist/repositories/campaign/campaign.functions.js +111 -0
  83. package/dist/repositories/campaign/campaign.functions.js.map +1 -0
  84. package/dist/repositories/campaign/campaign.js +2 -0
  85. package/dist/repositories/campaign/campaign.js.map +1 -0
  86. package/dist/repositories/campaign/campaign.schemas.d.ts +9 -0
  87. package/dist/repositories/campaign/campaign.schemas.js +148 -0
  88. package/dist/repositories/campaign/campaign.schemas.js.map +1 -0
  89. package/dist/repositories/campaign/index.d.ts +3 -0
  90. package/dist/repositories/campaign/index.js +4 -0
  91. package/dist/repositories/campaign/index.js.map +1 -0
  92. package/dist/repositories/campaign/redis-campaign.repository.d.ts +25 -0
  93. package/dist/repositories/campaign/redis-campaign.repository.js +138 -0
  94. package/dist/repositories/campaign/redis-campaign.repository.js.map +1 -0
  95. package/dist/repositories/index.d.ts +8 -0
  96. package/dist/repositories/index.js +9 -0
  97. package/dist/repositories/index.js.map +1 -0
  98. package/dist/repositories/lure/index.d.ts +3 -0
  99. package/dist/repositories/lure/index.js +4 -0
  100. package/dist/repositories/lure/index.js.map +1 -0
  101. package/dist/repositories/lure/lure.d.ts +11 -0
  102. package/dist/repositories/lure/lure.functions.d.ts +49 -0
  103. package/dist/repositories/lure/lure.functions.js +82 -0
  104. package/dist/repositories/lure/lure.functions.js.map +1 -0
  105. package/dist/repositories/lure/lure.js +2 -0
  106. package/dist/repositories/lure/lure.js.map +1 -0
  107. package/dist/repositories/lure/lure.schemas.d.ts +3 -0
  108. package/dist/repositories/lure/lure.schemas.js +45 -0
  109. package/dist/repositories/lure/lure.schemas.js.map +1 -0
  110. package/dist/repositories/lure/redis-lure.repository.d.ts +21 -0
  111. package/dist/repositories/lure/redis-lure.repository.js +107 -0
  112. package/dist/repositories/lure/redis-lure.repository.js.map +1 -0
  113. package/dist/repositories/message/index.d.ts +3 -0
  114. package/dist/repositories/message/index.js +4 -0
  115. package/dist/repositories/message/index.js.map +1 -0
  116. package/dist/repositories/message/message.d.ts +6 -0
  117. package/dist/repositories/message/message.functions.d.ts +44 -0
  118. package/dist/repositories/message/message.functions.js +53 -0
  119. package/dist/repositories/message/message.functions.js.map +1 -0
  120. package/dist/repositories/message/message.js +2 -0
  121. package/dist/repositories/message/message.js.map +1 -0
  122. package/dist/repositories/message/message.schemas.d.ts +2 -0
  123. package/dist/repositories/message/message.schemas.js +206 -0
  124. package/dist/repositories/message/message.schemas.js.map +1 -0
  125. package/dist/repositories/message/redis-message.repository.d.ts +20 -0
  126. package/dist/repositories/message/redis-message.repository.js +72 -0
  127. package/dist/repositories/message/redis-message.repository.js.map +1 -0
  128. package/dist/repositories/proxy/index.d.ts +3 -0
  129. package/dist/repositories/proxy/index.js +4 -0
  130. package/dist/repositories/proxy/index.js.map +1 -0
  131. package/dist/repositories/proxy/proxy.d.ts +10 -0
  132. package/dist/repositories/proxy/proxy.functions.d.ts +43 -0
  133. package/dist/repositories/proxy/proxy.functions.js +72 -0
  134. package/dist/repositories/proxy/proxy.functions.js.map +1 -0
  135. package/dist/repositories/proxy/proxy.js +2 -0
  136. package/dist/repositories/proxy/proxy.js.map +1 -0
  137. package/dist/repositories/proxy/proxy.schemas.d.ts +3 -0
  138. package/dist/repositories/proxy/proxy.schemas.js +34 -0
  139. package/dist/repositories/proxy/proxy.schemas.js.map +1 -0
  140. package/dist/repositories/proxy/redis-proxy.repository.d.ts +20 -0
  141. package/dist/repositories/proxy/redis-proxy.repository.js +93 -0
  142. package/dist/repositories/proxy/redis-proxy.repository.js.map +1 -0
  143. package/dist/repositories/redirector/index.d.ts +3 -0
  144. package/dist/repositories/redirector/index.js +4 -0
  145. package/dist/repositories/redirector/index.js.map +1 -0
  146. package/dist/repositories/redirector/redirector.d.ts +11 -0
  147. package/dist/repositories/redirector/redirector.functions.d.ts +44 -0
  148. package/dist/repositories/redirector/redirector.functions.js +70 -0
  149. package/dist/repositories/redirector/redirector.functions.js.map +1 -0
  150. package/dist/repositories/redirector/redirector.js +2 -0
  151. package/dist/repositories/redirector/redirector.js.map +1 -0
  152. package/dist/repositories/redirector/redirector.schemas.d.ts +3 -0
  153. package/dist/repositories/redirector/redirector.schemas.js +51 -0
  154. package/dist/repositories/redirector/redirector.schemas.js.map +1 -0
  155. package/dist/repositories/redirector/redis-redirector.repository.d.ts +23 -0
  156. package/dist/repositories/redirector/redis-redirector.repository.js +121 -0
  157. package/dist/repositories/redirector/redis-redirector.repository.js.map +1 -0
  158. package/dist/repositories/session/index.d.ts +3 -0
  159. package/dist/repositories/session/index.js +4 -0
  160. package/dist/repositories/session/index.js.map +1 -0
  161. package/dist/repositories/session/redis-session.repository.d.ts +18 -0
  162. package/dist/repositories/session/redis-session.repository.js +85 -0
  163. package/dist/repositories/session/redis-session.repository.js.map +1 -0
  164. package/dist/repositories/session/session.d.ts +8 -0
  165. package/dist/repositories/session/session.functions.d.ts +35 -0
  166. package/dist/repositories/session/session.functions.js +47 -0
  167. package/dist/repositories/session/session.functions.js.map +1 -0
  168. package/dist/repositories/session/session.js +2 -0
  169. package/dist/repositories/session/session.js.map +1 -0
  170. package/dist/repositories/session/session.schemas.d.ts +2 -0
  171. package/dist/repositories/session/session.schemas.js +44 -0
  172. package/dist/repositories/session/session.schemas.js.map +1 -0
  173. package/dist/repositories/target/index.d.ts +3 -0
  174. package/dist/repositories/target/index.js +4 -0
  175. package/dist/repositories/target/index.js.map +1 -0
  176. package/dist/repositories/target/redis-target.repository.d.ts +30 -0
  177. package/dist/repositories/target/redis-target.repository.js +198 -0
  178. package/dist/repositories/target/redis-target.repository.js.map +1 -0
  179. package/dist/repositories/target/target.d.ts +17 -0
  180. package/dist/repositories/target/target.functions.d.ts +89 -0
  181. package/dist/repositories/target/target.functions.js +184 -0
  182. package/dist/repositories/target/target.functions.js.map +1 -0
  183. package/dist/repositories/target/target.js +2 -0
  184. package/dist/repositories/target/target.js.map +1 -0
  185. package/dist/repositories/target/target.schemas.d.ts +13 -0
  186. package/dist/repositories/target/target.schemas.js +241 -0
  187. package/dist/repositories/target/target.schemas.js.map +1 -0
  188. package/package.json +46 -0
@@ -0,0 +1,1396 @@
1
+ const REDIS_FUNCTIONS = [
2
+ '1-campaign.lua',
3
+ `IyFsdWEgbmFtZT1jYW1wYWlnbgoKLS1bWwogIENyZWF0ZSBjYW1wYWlnbgotLV1dCmxvY2FsIGZ1
4
+ bmN0aW9uIGNyZWF0ZV9jYW1wYWlnbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDMgb3IgI2Fy
5
+ Z3Mgfj0gMTAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVu
6
+ Y3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2Fs
7
+ IGNhbXBhaWduX3VuaXF1ZV9taXJyb3JfZG9tYWluX2tleSA9IGtleXNbMl0KICBsb2NhbCBjYW1w
8
+ YWlnbl9pbmRleF9rZXkgPSBrZXlzWzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBh
9
+ aWduX2tleSkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdDT05GTElD
10
+ VCBDYW1wYWlnbiBhbGxyZWFkeSBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAg
11
+ IGNhbXBhaWduX2lkID0gYXJnc1sxXSwKICAgIG1pcnJvcl9kb21haW4gPSBhcmdzWzJdLAogICAg
12
+ ZGVzY3JpcHRpb24gPSBhcmdzWzNdLAogICAgY3J5cHRfc2VjcmV0ID0gYXJnc1s0XSwKICAgIGxh
13
+ bmRpbmdfdXBncmFkZV9wYXRoID0gYXJnc1s1XSwKICAgIHNlc3Npb25fY29va2llX25hbWUgPSBh
14
+ cmdzWzZdLAogICAgc2Vzc2lvbl9leHBpcmUgPSB0b251bWJlcihhcmdzWzddKSwKICAgIG5ld19z
15
+ ZXNzaW9uX2V4cGlyZSA9IHRvbnVtYmVyKGFyZ3NbOF0pLAogICAgbWVzc2FnZV9leHBpcmUgPSB0
16
+ b251bWJlcihhcmdzWzldKSwKICAgIHNlc3Npb25fY291bnQgPSAwLAogICAgbWVzc2FnZV9jb3Vu
17
+ dCA9IDAsCiAgICBjcmVhdGVkX2F0ID0gdG9udW1iZXIoYXJnc1sxMF0pLAogIH0KCiAgZm9yIGZp
18
+ ZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAg
19
+ IHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIG1vZGVsLicgLi4gZmllbGQpCiAg
20
+ ICBlbmQKCiAgICBpZgogICAgICAoZmllbGQgPT0gJ2NhbXBhaWduX2lkJyBvciBmaWVsZCA9PSAn
21
+ bWlycm9yX2RvbWFpbicgb3IgZmllbGQgPT0gJ2NyeXB0X3NlY3JldCcpCiAgICAgIGFuZCB2YWx1
22
+ ZSA9PSAnJwogICAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
23
+ ZyBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYKICAgICAgKGZpZWxkID09ICdzZXNz
24
+ aW9uX2V4cGlyZScgb3IgZmllbGQgPT0gJ25ld19zZXNzaW9uX2V4cGlyZScgb3IgZmllbGQgPT0g
25
+ J21lc3NhZ2VfZXhwaXJlJykKICAgICAgYW5kIHZhbHVlIDw9IDAKICAgIHRoZW4KICAgICAgcmV0
26
+ dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVu
27
+ ZAogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdTSVNNRU1CRVInLCBjYW1wYWlnbl91bmlxdWVfbWly
28
+ cm9yX2RvbWFpbl9rZXksIG1vZGVsLm1pcnJvcl9kb21haW4pIH49IDAgdGhlbgogICAgcmV0dXJu
29
+ IHJlZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgQ2FtcGFpZ24gbWlycm9yX2RvbWFpbiBhbGxy
30
+ ZWFkeSB0YWtlbicpCiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICBsb2NhbCBzdG9y
31
+ ZSA9IHt9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwpIGRvCiAgICB0YWJsZS5p
32
+ bnNlcnQoc3RvcmUsIGZpZWxkKQogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCB2YWx1ZSkKICBlbmQK
33
+ CiAgcmVkaXMuY2FsbCgnSFNFVCcsIGNhbXBhaWduX2tleSwgdW5wYWNrKHN0b3JlKSkKCiAgcmVk
34
+ aXMuY2FsbCgnWkFERCcsIGNhbXBhaWduX2luZGV4X2tleSwgbW9kZWwuY3JlYXRlZF9hdCwgbW9k
35
+ ZWwuY2FtcGFpZ25faWQpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIENhbXBhaWdu
36
+ IGNyZWF0ZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1l
37
+ ID0gJ2NyZWF0ZV9jYW1wYWlnbicsCiAgY2FsbGJhY2sgPSBjcmVhdGVfY2FtcGFpZ24sCiAgZGVz
38
+ Y3JpcHRpb24gPSAnQ3JlYXRlIGNhbXBhaWduJywKfSkKCi0tW1sKICBSZWFkIGNhbXBhaWduCi0t
39
+ XV0KbG9jYWwgZnVuY3Rpb24gcmVhZF9jYW1wYWlnbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49
40
+ IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBX
41
+ cm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFd
42
+ CiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VY
43
+ SVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIC0t
44
+ IHN0eWx1YTogaWdub3JlCiAgbG9jYWwgdmFsdWVzID0gcmVkaXMuY2FsbCgKICAgICdITUdFVCcs
45
+ IGNhbXBhaWduX2tleSwKICAgICdjYW1wYWlnbl9pZCcsCiAgICAnbWlycm9yX2RvbWFpbicsCiAg
46
+ ICAnc2Vzc2lvbl9jb3VudCcsCiAgICAnbWVzc2FnZV9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcK
47
+ ICApCgogIGlmICN2YWx1ZXMgfj0gNSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHko
48
+ J0VSUiBNYWxmb3JtIHZhbHVlcycpCiAgZW5kCgogIGxvY2FsIG1vZGVsID0gewogICAgY2FtcGFp
49
+ Z25faWQgPSB2YWx1ZXNbMV0sCiAgICBtaXJyb3JfZG9tYWluID0gdmFsdWVzWzJdLAogICAgaXNf
50
+ bG9ja2VkID0gcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpLAogICAgc2Vz
51
+ c2lvbl9jb3VudCA9IHRvbnVtYmVyKHZhbHVlc1szXSksCiAgICBtZXNzYWdlX2NvdW50ID0gdG9u
52
+ dW1iZXIodmFsdWVzWzRdKSwKICAgIGNyZWF0ZWRfYXQgPSB0b251bWJlcih2YWx1ZXNbNV0pLAog
53
+ IH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1
54
+ ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwu
55
+ JyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoK
56
+ cmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9jYW1wYWln
57
+ bicsCiAgY2FsbGJhY2sgPSByZWFkX2NhbXBhaWduLAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9
58
+ LAogIGRlc2NyaXB0aW9uID0gJ1JlYWQgY2FtcGFpZ24nLAp9KQoKLS1bWwogIFJlYWQgZnVsbCBj
59
+ YW1wYWlnbgotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRfZnVsbF9jYW1wYWlnbihrZXlzLCBhcmdz
60
+ KQogIGlmICNrZXlzIH49IDYgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJy
61
+ b3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWln
62
+ bl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9j
63
+ YWwgcHJveHlfaW5kZXhfa2V5ID0ga2V5c1szXQogIGxvY2FsIHRhcmdldF9pbmRleF9rZXkgPSBr
64
+ ZXlzWzRdCiAgbG9jYWwgcmVkaXJlY3Rvcl9pbmRleF9rZXkgPSBrZXlzWzVdCiAgbG9jYWwgbHVy
65
+ ZV9pbmRleF9rZXkgPSBrZXlzWzZdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWdu
66
+ X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIC0tIHN0eWx1YTogaWdub3Jl
67
+ CiAgbG9jYWwgdmFsdWVzID0gcmVkaXMuY2FsbCgKICAgICdITUdFVCcsIGNhbXBhaWduX2tleSwK
68
+ ICAgICdjYW1wYWlnbl9pZCcsCiAgICAnbWlycm9yX2RvbWFpbicsCiAgICAnZGVzY3JpcHRpb24n
69
+ LAogICAgJ2NyeXB0X3NlY3JldCcsCiAgICAnbGFuZGluZ191cGdyYWRlX3BhdGgnLAogICAgJ3Nl
70
+ c3Npb25fY29va2llX25hbWUnLAogICAgJ3Nlc3Npb25fZXhwaXJlJywKICAgICduZXdfc2Vzc2lv
71
+ bl9leHBpcmUnLAogICAgJ21lc3NhZ2VfZXhwaXJlJywKICAgICdzZXNzaW9uX2NvdW50JywKICAg
72
+ ICdtZXNzYWdlX2NvdW50JywKICAgICdjcmVhdGVkX2F0JwogICkKCiAgaWYgI3ZhbHVlcyB+PSAx
73
+ MiB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3JtIHZhbHVlcycp
74
+ CiAgZW5kCgogIGxvY2FsIG1vZGVsID0gewogICAgY2FtcGFpZ25faWQgPSB2YWx1ZXNbMV0sCiAg
75
+ ICBtaXJyb3JfZG9tYWluID0gdmFsdWVzWzJdLAogICAgZGVzY3JpcHRpb24gPSB2YWx1ZXNbM10s
76
+ CiAgICBjcnlwdF9zZWNyZXQgPSB2YWx1ZXNbNF0sCiAgICBsYW5kaW5nX3VwZ3JhZGVfcGF0aCA9
77
+ IHZhbHVlc1s1XSwKICAgIHNlc3Npb25fY29va2llX25hbWUgPSB2YWx1ZXNbNl0sCiAgICBzZXNz
78
+ aW9uX2V4cGlyZSA9IHRvbnVtYmVyKHZhbHVlc1s3XSksCiAgICBuZXdfc2Vzc2lvbl9leHBpcmUg
79
+ PSB0b251bWJlcih2YWx1ZXNbOF0pLAogICAgbWVzc2FnZV9leHBpcmUgPSB0b251bWJlcih2YWx1
80
+ ZXNbOV0pLAogICAgaXNfbG9ja2VkID0gcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9j
81
+ a19rZXkpLAogICAgcHJveHlfY291bnQgPSByZWRpcy5jYWxsKCdaQ0FSRCcsIHByb3h5X2luZGV4
82
+ X2tleSksCiAgICB0YXJnZXRfY291bnQgPSByZWRpcy5jYWxsKCdaQ0FSRCcsIHRhcmdldF9pbmRl
83
+ eF9rZXkpLAogICAgcmVkaXJlY3Rvcl9jb3VudCA9IHJlZGlzLmNhbGwoJ1pDQVJEJywgcmVkaXJl
84
+ Y3Rvcl9pbmRleF9rZXkpLAogICAgbHVyZV9jb3VudCA9IHJlZGlzLmNhbGwoJ1pDQVJEJywgbHVy
85
+ ZV9pbmRleF9rZXkpLAogICAgc2Vzc2lvbl9jb3VudCA9IHRvbnVtYmVyKHZhbHVlc1sxMF0pLAog
86
+ ICAgbWVzc2FnZV9jb3VudCA9IHRvbnVtYmVyKHZhbHVlc1sxMV0pLAogICAgY3JlYXRlZF9hdCA9
87
+ IHRvbnVtYmVyKHZhbHVlc1sxMl0pLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyht
88
+ b2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9y
89
+ ZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1
90
+ cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0
91
+ aW9uX25hbWUgPSAncmVhZF9mdWxsX2NhbXBhaWduJywKICBjYWxsYmFjayA9IHJlYWRfZnVsbF9j
92
+ YW1wYWlnbiwKICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwKICBkZXNjcmlwdGlvbiA9ICdSZWFk
93
+ IGZ1bGwgY2FtcGFpZ24nLAp9KQoKLS1bWwogIFJlYWQgY2FtcGFpZ24gaW5kZXgKLS1dXQpsb2Nh
94
+ bCBmdW5jdGlvbiByZWFkX2NhbXBhaWduX2luZGV4KGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0g
95
+ MSBvciAjYXJncyB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdy
96
+ b25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2luZGV4X2tleSA9IGtl
97
+ eXNbMV0KCiAgcmV0dXJuIHJlZGlzLmNhbGwoJ1pSQU5HRScsIGNhbXBhaWduX2luZGV4X2tleSwg
98
+ MCwgLTEpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAn
99
+ cmVhZF9jYW1wYWlnbl9pbmRleCcsCiAgY2FsbGJhY2sgPSByZWFkX2NhbXBhaWduX2luZGV4LAog
100
+ IGZsYWdzID0geyAnbm8td3JpdGVzJyB9LAogIGRlc2NyaXB0aW9uID0gJ1JlYWQgY2FtcGFpZ24g
101
+ aW5kZXgnLAp9KQoKLS1bWwogIExvY2sgY2FtcGFpZ24KLS1dXQpsb2NhbCBmdW5jdGlvbiBsb2Nr
102
+ X2NhbXBhaWduKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMiBvciAjYXJncyB+PSAyIHRoZW4K
103
+ ICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAg
104
+ ZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBjYW1wYWlnbl9sb2Nr
105
+ X2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+
106
+ PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWln
107
+ biBub3QgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25f
108
+ bG9ja19rZXkpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklE
109
+ REVOIENhbXBhaWduIGFsbHJlYWR5IGxvY2tlZCcpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewog
110
+ ICAgbG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAgbG9ja190aW1lb3V0ID0gdG9udW1iZXIoYXJn
111
+ c1syXSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYg
112
+ bm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcg
113
+ c3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmIGZpZWxkID09ICdsb2NrX3NlY3JldCcg
114
+ YW5kIHZhbHVlID09ICcnIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIg
115
+ V3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmIGZpZWxkID09ICdsb2NrX3Rp
116
+ bWVvdXQnIGFuZCB2YWx1ZSA8PSAwIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5
117
+ KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICAtLSBQb2ludCBv
118
+ ZiBubyByZXR1cm4KCiAgcmVkaXMuY2FsbCgnU0VUJywgY2FtcGFpZ25fbG9ja19rZXksIHN0YXNo
119
+ LmxvY2tfc2VjcmV0LCAnUFgnLCBzdGFzaC5sb2NrX3RpbWVvdXQpCgogIHJldHVybiByZWRpcy5z
120
+ dGF0dXNfcmVwbHkoJ09LIENhbXBhaWduIGxvY2tlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVu
121
+ Y3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAnbG9ja19jYW1wYWlnbicsCiAgY2FsbGJhY2sgPSBs
122
+ b2NrX2NhbXBhaWduLAogIGRlc2NyaXB0aW9uID0gJ0xvY2sgY2FtcGFpZ24nLAp9KQoKLS1bWwog
123
+ IFVubG9jayBjYW1wYWlnbgotLV1dCmxvY2FsIGZ1bmN0aW9uIHVubG9ja19jYW1wYWlnbihrZXlz
124
+ LCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVk
125
+ aXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBj
126
+ YW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJd
127
+ CgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICBy
128
+ ZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0cycp
129
+ CiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2xvY2tfa2V5KSB+PSAx
130
+ IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIENhbXBhaWduIG5vdCBsb2Nr
131
+ ZWQnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tfc2VjcmV0ID0gYXJnc1sxXSwK
132
+ ICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tl
133
+ eSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90
134
+ IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rh
135
+ c2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9y
136
+ IGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcnIHRoZW4KICAgICAg
137
+ cmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAg
138
+ IGVuZAogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0YXNoLmxvY2tfc2Vj
139
+ cmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWln
140
+ biBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4K
141
+ CiAgcmVkaXMuY2FsbCgnREVMJywgY2FtcGFpZ25fbG9ja19rZXkpCgogIHJldHVybiByZWRpcy5z
142
+ dGF0dXNfcmVwbHkoJ09LIENhbXBhaWduIHVubG9ja2VkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9m
143
+ dW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICd1bmxvY2tfY2FtcGFpZ24nLAogIGNhbGxiYWNr
144
+ ID0gdW5sb2NrX2NhbXBhaWduLAogIGRlc2NyaXB0aW9uID0gJ1VubG9jayBjYW1wYWlnbicsCn0p
145
+ CgotLVtbCiAgVXBkYXRlIGNhbXBhaWduCi0tXV0KbG9jYWwgZnVuY3Rpb24gdXBkYXRlX2NhbXBh
146
+ aWduKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMiBvciAjYXJncyA8IDEgdGhlbgogICAgcmV0
147
+ dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNlJykKICBlbmQKCiAg
148
+ bG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGNhbXBhaWduX2xvY2tfa2V5ID0g
149
+ a2V5c1syXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhl
150
+ bgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBl
151
+ eGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2NrX2tl
152
+ eSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2Ft
153
+ cGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbG9ja19zZWNy
154
+ ZXQgPSB0YWJsZS5yZW1vdmUoYXJncyksCiAgICBvcmlnX2xvY2tfc2VjcmV0ID0gcmVkaXMuY2Fs
155
+ bCgnR0VUJywgY2FtcGFpZ25fbG9ja19rZXkpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBw
156
+ YWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5l
157
+ cnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiAo
158
+ ZmllbGQgPT0gJ2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcpIGFu
159
+ ZCB2YWx1ZSA9PSAnJyB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdy
160
+ b25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgaWYgI2FyZ3MgJSAyIH49IDAg
161
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgT2RkIG51bWJlciBvZiBhcmdz
162
+ JykKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7fQoKICBmb3IgaSA9IDEsICNhcmdzLCAyIGRvCiAg
163
+ ICBsb2NhbCBmaWVsZCwgdmFsdWUgPSBhcmdzW2ldLCBhcmdzW2kgKyAxXQoKICAgIGlmIG1vZGVs
164
+ W2ZpZWxkXSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIER1cGxpY2F0
165
+ ZSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYgZmllbGQgPT0gJ2Rlc2NyaXB0aW9u
166
+ JyB0aGVuCiAgICAgIG1vZGVsLmRlc2NyaXB0aW9uID0gdmFsdWUKICAgIGVsc2VpZiBmaWVsZCA9
167
+ PSAnc2Vzc2lvbl9leHBpcmUnIHRoZW4KICAgICAgbW9kZWwuc2Vzc2lvbl9leHBpcmUgPSB0b251
168
+ bWJlcih2YWx1ZSkKICAgIGVsc2VpZiBmaWVsZCA9PSAnbmV3X3Nlc3Npb25fZXhwaXJlJyB0aGVu
169
+ CiAgICAgIG1vZGVsLm5ld19zZXNzaW9uX2V4cGlyZSA9IHRvbnVtYmVyKHZhbHVlKQogICAgZWxz
170
+ ZWlmIGZpZWxkID09ICdtZXNzYWdlX2V4cGlyZScgdGhlbgogICAgICBtb2RlbC5tZXNzYWdlX2V4
171
+ cGlyZSA9IHRvbnVtYmVyKHZhbHVlKQogICAgZWxzZQogICAgICByZXR1cm4gcmVkaXMuZXJyb3Jf
172
+ cmVwbHkoJ0VSUiBVbmtub3duIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgZm9y
173
+ IGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAg
174
+ ICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIG1vZGVsLicgLi4gZmllbGQp
175
+ CiAgICBlbmQKICBlbmQKCiAgaWYgbmV4dChtb2RlbCkgPT0gbmlsIHRoZW4KICAgIHJldHVybiBy
176
+ ZWRpcy5zdGF0dXNfcmVwbHkoJ09LIE5vdGhpbmcgdG8gdXBkYXRlJykKICBlbmQKCiAgaWYgc3Rh
177
+ c2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1cm4g
178
+ cmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90IG1h
179
+ dGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIGxvY2FsIHN0b3JlID0ge30K
180
+ CiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIHRhYmxlLmluc2VydChz
181
+ dG9yZSwgZmllbGQpCiAgICB0YWJsZS5pbnNlcnQoc3RvcmUsIHZhbHVlKQogIGVuZAoKICByZWRp
182
+ cy5jYWxsKCdIU0VUJywgY2FtcGFpZ25fa2V5LCB1bnBhY2soc3RvcmUpKQoKICByZXR1cm4gcmVk
183
+ aXMuc3RhdHVzX3JlcGx5KCdPSyBDYW1wYWlnbiB1cGRhdGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rl
184
+ cl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICd1cGRhdGVfY2FtcGFpZ24nLAogIGNhbGxi
185
+ YWNrID0gdXBkYXRlX2NhbXBhaWduLAogIGRlc2NyaXB0aW9uID0gJ1VwZGF0ZSBjYW1wYWlnbics
186
+ Cn0pCgotLVtbCiAgRGVsZXRlIGNhbXBhaWduCi0tXV0KbG9jYWwgZnVuY3Rpb24gZGVsZXRlX2Nh
187
+ bXBhaWduKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gOCBvciAjYXJncyB+PSAxIHRoZW4KICAg
188
+ IHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5k
189
+ CgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBjYW1wYWlnbl9sb2NrX2tl
190
+ eSA9IGtleXNbMl0KICBsb2NhbCBjYW1wYWlnbl91bmlxdWVfbWlycm9yX2RvbWFpbl9rZXkgPSBr
191
+ ZXlzWzNdCiAgbG9jYWwgY2FtcGFpZ25faW5kZXhfa2V5ID0ga2V5c1s0XQogIGxvY2FsIHByb3h5
192
+ X2luZGV4X2tleSA9IGtleXNbNV0KICBsb2NhbCB0YXJnZXRfaW5kZXhfa2V5ID0ga2V5c1s2XQog
193
+ IGxvY2FsIHJlZGlyZWN0b3JfaW5kZXhfa2V5ID0ga2V5c1s3XQogIGxvY2FsIGx1cmVfaW5kZXhf
194
+ a2V5ID0ga2V5c1s4XQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49
195
+ IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWdu
196
+ IG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9s
197
+ b2NrX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURE
198
+ RU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbG9j
199
+ a19zZWNyZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dF
200
+ VCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIGNhbXBhaWduX2lkID0gcmVkaXMuY2FsbCgnSEdF
201
+ VCcsIGNhbXBhaWduX2tleSwgJ2NhbXBhaWduX2lkJyksCiAgICBtaXJyb3JfZG9tYWluID0gcmVk
202
+ aXMuY2FsbCgnSEdFVCcsIGNhbXBhaWduX2tleSwgJ21pcnJvcl9kb21haW4nKSwKICB9CgogIGZv
203
+ ciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgog
204
+ ICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxk
205
+ KQogICAgZW5kCgogICAgaWYKICAgICAgKAogICAgICAgIGZpZWxkID09ICdsb2NrX3NlY3JldCcK
206
+ ICAgICAgICBvciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcKICAgICAgICBvciBmaWVsZCA9
207
+ PSAnY2FtcGFpZ25faWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ21pcnJvcl9kb21haW4nCiAgICAg
208
+ ICkgYW5kIHZhbHVlID09ICcnCiAgICB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBs
209
+ eSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgaWYgcmVkaXMu
210
+ Y2FsbCgnWkNBUkQnLCBwcm94eV9pbmRleF9rZXkpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlz
211
+ LnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIHByb3hpZXMgZXhpc3RzJykKICBlbmQK
212
+ CiAgaWYgcmVkaXMuY2FsbCgnWkNBUkQnLCB0YXJnZXRfaW5kZXhfa2V5KSB+PSAwIHRoZW4KICAg
213
+ IHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiB0YXJnZXRzIGV4
214
+ aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ1pDQVJEJywgcmVkaXJlY3Rvcl9pbmRleF9r
215
+ ZXkpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENh
216
+ bXBhaWduIHJlZGlyZWN0b3JzIGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ1pDQVJE
217
+ JywgbHVyZV9pbmRleF9rZXkpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBs
218
+ eSgnRk9SQklEREVOIENhbXBhaWduIGx1cmVzIGV4aXN0cycpCiAgZW5kCgogIGlmIHN0YXNoLm9y
219
+ aWdfbG9ja19zZWNyZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlz
220
+ LnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcp
221
+ CiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdERUwnLCBjYW1w
222
+ YWlnbl9rZXksIGNhbXBhaWduX2xvY2tfa2V5KQoKICByZWRpcy5jYWxsKCdTUkVNJywgY2FtcGFp
223
+ Z25fdW5pcXVlX21pcnJvcl9kb21haW5fa2V5LCBzdGFzaC5taXJyb3JfZG9tYWluKQoKICByZWRp
224
+ cy5jYWxsKCdaUkVNJywgY2FtcGFpZ25faW5kZXhfa2V5LCBzdGFzaC5jYW1wYWlnbl9pZCkKCiAg
225
+ cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgQ2FtcGFpZ24gZGVsZXRlZCcpCmVuZAoKcmVk
226
+ aXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAnZGVsZXRlX2NhbXBhaWdu
227
+ JywKICBjYWxsYmFjayA9IGRlbGV0ZV9jYW1wYWlnbiwKICBkZXNjcmlwdGlvbiA9ICdEZWxldGUg
228
+ Y2FtcGFpZ24nLAp9KQo=`,
229
+ '2-proxy.lua',
230
+ `IyFsdWEgbmFtZT1wcm94eQoKLS1bWwogIENyZWF0ZSBwcm94eQotLV1dCmxvY2FsIGZ1bmN0aW9u
231
+ IGNyZWF0ZV9wcm94eShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDUgb3IgI2FyZ3Mgfj0gNSB0
232
+ aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2Un
233
+ KQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25f
234
+ bG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJveHlfa2V5ID0ga2V5c1szXQogIGxvY2FsIHBy
235
+ b3h5X3VuaXF1ZV91cmxfa2V5ID0ga2V5c1s0XQogIGxvY2FsIHByb3h5X2luZGV4X2tleSA9IGtl
236
+ eXNbNV0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4K
237
+ ICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWlnbiBub3QgZXhp
238
+ c3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkp
239
+ IH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBh
240
+ aWduIG5vdCBsb2NrZWQnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBwcm94eV9r
241
+ ZXkpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgUHJv
242
+ eHkgYWxscmVhZHkgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3Nl
243
+ Y3JldCA9IGFyZ3NbNV0sCiAgICBvcmlnX2xvY2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywg
244
+ Y2FtcGFpZ25fbG9ja19rZXkpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFz
245
+ aCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBs
246
+ eSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiAoZmllbGQgPT0g
247
+ J2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcpIGFuZCB2YWx1ZSA9
248
+ PSAnJyB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNo
249
+ LicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7CiAgICBjYW1wYWln
250
+ bl9pZCA9IGFyZ3NbMV0sCiAgICBwcm94eV9pZCA9IGFyZ3NbMl0sCiAgICB1cmwgPSBhcmdzWzNd
251
+ LAogICAgaXNfZW5hYmxlZCA9IDAsCiAgICBtZXNzYWdlX2NvdW50ID0gMCwKICAgIGNyZWF0ZWRf
252
+ YXQgPSBhcmdzWzRdLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8K
253
+ ICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJS
254
+ IFdyb25nIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiAoZmllbGQgPT0gJ2NhbXBh
255
+ aWduX2lkJyBvciBmaWVsZCA9PSAncHJveHlfaWQnIG9yIGZpZWxkID09ICd1cmwnKSBhbmQgdmFs
256
+ dWUgPT0gJycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBt
257
+ b2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ1NJU01FTUJF
258
+ UicsIHByb3h5X3VuaXF1ZV91cmxfa2V5LCBtb2RlbC51cmwpIH49IDAgdGhlbgogICAgcmV0dXJu
259
+ IHJlZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgUHJveHkgdXJsIGFsbHJlYWR5IHRha2VuJykK
260
+ ICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0
261
+ aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9j
262
+ a19zZWNyZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIGxv
263
+ Y2FsIHN0b3JlID0ge30KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAg
264
+ IHRhYmxlLmluc2VydChzdG9yZSwgZmllbGQpCiAgICB0YWJsZS5pbnNlcnQoc3RvcmUsIHZhbHVl
265
+ KQogIGVuZAoKICByZWRpcy5jYWxsKCdIU0VUJywgcHJveHlfa2V5LCB1bnBhY2soc3RvcmUpKQoK
266
+ ICByZWRpcy5jYWxsKCdTQUREJywgcHJveHlfdW5pcXVlX3VybF9rZXksIG1vZGVsLnVybCkKCiAg
267
+ cmVkaXMuY2FsbCgnWkFERCcsIHByb3h5X2luZGV4X2tleSwgbW9kZWwuY3JlYXRlZF9hdCwgbW9k
268
+ ZWwucHJveHlfaWQpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFByb3h5IGNyZWF0
269
+ ZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2Ny
270
+ ZWF0ZV9wcm94eScsCiAgY2FsbGJhY2sgPSBjcmVhdGVfcHJveHksCiAgZGVzY3JpcHRpb24gPSAn
271
+ Q3JlYXRlIHByb3h5JywKfSkKCi0tW1sKICBSZWFkIHByb3h5Ci0tXV0KbG9jYWwgZnVuY3Rpb24g
272
+ cmVhZF9wcm94eShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mgfj0gMCB0aGVu
273
+ CiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQog
274
+ IGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgcHJveHlfa2V5ID0g
275
+ a2V5c1syXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhl
276
+ bgogICAgcmV0dXJuIG5pbAogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBwcm94eV9r
277
+ ZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICAtLSBzdHlsdWE6IGlnbm9yZQog
278
+ IGxvY2FsIHZhbHVlcyA9IHJlZGlzLmNhbGwoCiAgICAnSE1HRVQnLCBwcm94eV9rZXksCiAgICAn
279
+ Y2FtcGFpZ25faWQnLAogICAgJ3Byb3h5X2lkJywKICAgICd1cmwnLAogICAgJ2lzX2VuYWJsZWQn
280
+ LAogICAgJ21lc3NhZ2VfY291bnQnLAogICAgJ2NyZWF0ZWRfYXQnCiAgKQoKICBpZiAjdmFsdWVz
281
+ IH49IDYgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1
282
+ ZXMnKQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFd
283
+ LAogICAgcHJveHlfaWQgPSB2YWx1ZXNbMl0sCiAgICB1cmwgPSB2YWx1ZXNbM10sCiAgICBpc19l
284
+ bmFibGVkID0gdG9udW1iZXIodmFsdWVzWzRdKSwKICAgIG1lc3NhZ2VfY291bnQgPSB0b251bWJl
285
+ cih2YWx1ZXNbNV0pLAogICAgY3JlYXRlZF9hdCA9IHRvbnVtYmVyKHZhbHVlc1s2XSksCiAgfQoK
286
+ ICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRo
287
+ ZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSBtb2RlbC4nIC4u
288
+ IGZpZWxkKQogICAgZW5kCiAgZW5kCgogIHJldHVybiB7IG1hcCA9IG1vZGVsIH0KZW5kCgpyZWRp
289
+ cy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdyZWFkX3Byb3h5JywKICBj
290
+ YWxsYmFjayA9IHJlYWRfcHJveHksCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3Jp
291
+ cHRpb24gPSAnUmVhZCBwcm94eScsCn0pCgotLVtbCiAgUmVhZCBwcm94eSBpbmRleAotLV1dCmxv
292
+ Y2FsIGZ1bmN0aW9uIHJlYWRfcHJveHlfaW5kZXgoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAy
293
+ IG9yICNhcmdzIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jv
294
+ bmcgZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQog
295
+ IGxvY2FsIHByb3h5X2luZGV4X2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RT
296
+ JywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgcmV0dXJu
297
+ IHJlZGlzLmNhbGwoJ1pSQU5HRScsIHByb3h5X2luZGV4X2tleSwgMCwgLTEpCmVuZAoKcmVkaXMu
298
+ cmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9wcm94eV9pbmRleCcs
299
+ CiAgY2FsbGJhY2sgPSByZWFkX3Byb3h5X2luZGV4LAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9
300
+ LAogIGRlc2NyaXB0aW9uID0gJ1JlYWQgcHJveHkgaW5kZXgnLAp9KQoKLS1bWwogIEVuYWJsZSBw
301
+ cm94eQotLV1dCmxvY2FsIGZ1bmN0aW9uIGVuYWJsZV9wcm94eShrZXlzLCBhcmdzKQogIGlmICNr
302
+ ZXlzIH49IDQgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHko
303
+ J0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBr
304
+ ZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJveHlf
305
+ a2V5ID0ga2V5c1szXQogIGxvY2FsIGVuYWJsZWRfcHJveHlfaW5kZXhfa2V5ID0ga2V5c1s0XQoK
306
+ ICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0
307
+ dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQog
308
+ IGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2NrX2tleSkgfj0gMSB0
309
+ aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbm90
310
+ IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHByb3h5X2tleSkgfj0g
311
+ MSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUHJveHkgbm90
312
+ IGV4aXN0cycpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbG9ja19zZWNyZXQgPSBhcmdz
313
+ WzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNhbXBhaWduX2xv
314
+ Y2tfa2V5KSwKICAgIHByb3h5X2lkID0gcmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5X2tleSwgJ3By
315
+ b3h5X2lkJyksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2FsbCgnSEdFVCcsIHBy
316
+ b3h5X2tleSwgJ2lzX2VuYWJsZWQnKSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJz
317
+ KHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9y
318
+ X3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAg
319
+ IChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JyBv
320
+ ciBmaWVsZCA9PSAncHJveHlfaWQnKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAg
321
+ ICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkK
322
+ ICAgIGVuZAogIGVuZAoKICBpZiBzdGFzaC5pc19lbmFibGVkIH49IDAgdGhlbgogICAgcmV0dXJu
323
+ IHJlZGlzLnN0YXR1c19yZXBseSgnT0sgUHJveHkgYWxscmVhZHkgZW5hYmxlZCcpCiAgZW5kCgog
324
+ IGlmIHN0YXNoLm9yaWdfbG9ja19zZWNyZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAg
325
+ cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0
326
+ IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxs
327
+ KCdIU0VUJywgcHJveHlfa2V5LCAnaXNfZW5hYmxlZCcsIDEpCgogIHJlZGlzLmNhbGwoJ1NBREQn
328
+ LCBlbmFibGVkX3Byb3h5X2luZGV4X2tleSwgc3Rhc2gucHJveHlfaWQpCgogIHJldHVybiByZWRp
329
+ cy5zdGF0dXNfcmVwbHkoJ09LIFByb3h5IGVuYWJsZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1
330
+ bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2VuYWJsZV9wcm94eScsCiAgY2FsbGJhY2sgPSBl
331
+ bmFibGVfcHJveHksCiAgZGVzY3JpcHRpb24gPSAnRW5hYmxlIHByb3h5JywKfSkKCi0tW1sKICBE
332
+ aXNhYmxlIHByb3h5Ci0tXV0KbG9jYWwgZnVuY3Rpb24gZGlzYWJsZV9wcm94eShrZXlzLCBhcmdz
333
+ KQogIGlmICNrZXlzIH49IDQgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJy
334
+ b3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWln
335
+ bl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9j
336
+ YWwgcHJveHlfa2V5ID0ga2V5c1szXQogIGxvY2FsIGVuYWJsZWRfcHJveHlfaW5kZXhfa2V5ID0g
337
+ a2V5c1s0XQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhl
338
+ bgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBl
339
+ eGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2NrX2tl
340
+ eSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2Ft
341
+ cGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHByb3h5
342
+ X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQg
343
+ UHJveHkgbm90IGV4aXN0cycpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbG9ja19zZWNy
344
+ ZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNh
345
+ bXBhaWduX2xvY2tfa2V5KSwKICAgIHByb3h5X2lkID0gcmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5
346
+ X2tleSwgJ3Byb3h5X2lkJyksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2FsbCgn
347
+ SEdFVCcsIHByb3h5X2tleSwgJ2lzX2VuYWJsZWQnKSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVl
348
+ IGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJl
349
+ ZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAg
350
+ IGlmCiAgICAgIChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tf
351
+ c2VjcmV0JyBvciBmaWVsZCA9PSAncHJveHlfaWQnKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAg
352
+ IHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAu
353
+ LiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBzdGFzaC5pc19lbmFibGVkID09IDAgdGhlbgog
354
+ ICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgUHJveHkgYWxscmVhZHkgZGlzYWJsZWQn
355
+ KQogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0YXNoLmxvY2tfc2VjcmV0
356
+ IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBs
357
+ b2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAg
358
+ cmVkaXMuY2FsbCgnSFNFVCcsIHByb3h5X2tleSwgJ2lzX2VuYWJsZWQnLCAwKQoKICByZWRpcy5j
359
+ YWxsKCdTUkVNJywgZW5hYmxlZF9wcm94eV9pbmRleF9rZXksIHN0YXNoLnByb3h5X2lkKQoKICBy
360
+ ZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBQcm94eSBkaXNhYmxlZCcpCmVuZAoKcmVkaXMu
361
+ cmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAnZGlzYWJsZV9wcm94eScsCiAg
362
+ Y2FsbGJhY2sgPSBkaXNhYmxlX3Byb3h5LAogIGRlc2NyaXB0aW9uID0gJ0Rpc2FibGUgcHJveHkn
363
+ LAp9KQoKLS1bWwogIERlbGV0ZSBwcm94eQotLV1dCmxvY2FsIGZ1bmN0aW9uIGRlbGV0ZV9wcm94
364
+ eShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDUgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1
365
+ cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBs
366
+ b2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBr
367
+ ZXlzWzJdCiAgbG9jYWwgcHJveHlfa2V5ID0ga2V5c1szXQogIGxvY2FsIHByb3h5X3VuaXF1ZV91
368
+ cmxfa2V5ID0ga2V5c1s0XQogIGxvY2FsIHByb3h5X2luZGV4X2tleSA9IGtleXNbNV0KCiAgaWYg
369
+ cmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBy
370
+ ZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWlnbiBub3QgZXhpc3RzJykKICBlbmQK
371
+ CiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpIH49IDEgdGhlbgog
372
+ ICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIG5vdCBsb2Nr
373
+ ZWQnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBwcm94eV9rZXkpIH49IDEgdGhl
374
+ bgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFByb3h5IG5vdCBleGlz
375
+ dHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tfc2VjcmV0ID0gYXJnc1sxXSwK
376
+ ICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tl
377
+ eSksCiAgICBwcm94eV9pZCA9IHJlZGlzLmNhbGwoJ0hHRVQnLCBwcm94eV9rZXksICdwcm94eV9p
378
+ ZCcpLAogICAgdXJsID0gcmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5X2tleSwgJ3VybCcpLAogICAg
379
+ aXNfZW5hYmxlZCA9IHRvbnVtYmVyKHJlZGlzLmNhbGwoJ0hHRVQnLCBwcm94eV9rZXksICdpc19l
380
+ bmFibGVkJykpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAg
381
+ IGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdy
382
+ b25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZgogICAgICAoCiAgICAgICAgZmll
383
+ bGQgPT0gJ2xvY2tfc2VjcmV0JwogICAgICAgIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0
384
+ JwogICAgICAgIG9yIGZpZWxkID09ICdwcm94eV9pZCcKICAgICAgICBvciBmaWVsZCA9PSAndXJs
385
+ JwogICAgICApIGFuZCB2YWx1ZSA9PSAnJwogICAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJy
386
+ b3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlm
387
+ IHN0YXNoLmlzX2VuYWJsZWQgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5
388
+ KCdGT1JCSURERU4gUHJveHkgbm90IGRpc2FibGVkJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19s
389
+ b2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3Rh
390
+ dHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90IG1hdGNoJykKICBl
391
+ bmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNhbGwoJ0RFTCcsIHByb3h5X2tl
392
+ eSkKCiAgcmVkaXMuY2FsbCgnU1JFTScsIHByb3h5X3VuaXF1ZV91cmxfa2V5LCBzdGFzaC51cmwp
393
+ CgogIHJlZGlzLmNhbGwoJ1pSRU0nLCBwcm94eV9pbmRleF9rZXksIHN0YXNoLnByb3h5X2lkKQoK
394
+ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBQcm94eSBkZWxldGVkJykKZW5kCgpyZWRp
395
+ cy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdkZWxldGVfcHJveHknLAog
396
+ IGNhbGxiYWNrID0gZGVsZXRlX3Byb3h5LAogIGRlc2NyaXB0aW9uID0gJ0RlbGV0ZSBwcm94eScs
397
+ Cn0pCg==`,
398
+ '3-target.lua',
399
+ `IyFsdWEgbmFtZT10YXJnZXQKCi0tW1sKICBDcmVhdGUgdGFyZ2V0Ci0tXV0KbG9jYWwgZnVuY3Rp
400
+ b24gY3JlYXRlX3RhcmdldChrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDcgb3IgI2FyZ3Mgfj0g
401
+ MjIgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24g
402
+ dXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGNhbXBh
403
+ aWduX2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIHRhcmdldF9rZXkgPSBrZXlzWzNdCiAgbG9j
404
+ YWwgdGFyZ2V0X3VuaXF1ZV9kb25vcl9rZXkgPSBrZXlzWzRdCiAgbG9jYWwgdGFyZ2V0X3VuaXF1
405
+ ZV9taXJyb3Jfa2V5ID0ga2V5c1s1XQogIGxvY2FsIHRhcmdldF9taXJyb3JfaG9zdHNfa2V5ID0g
406
+ a2V5c1s2XQogIGxvY2FsIHRhcmdldF9pbmRleF9rZXkgPSBrZXlzWzddCgogIGlmIHJlZGlzLmNh
407
+ bGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3Rh
408
+ dHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJl
409
+ ZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVy
410
+ biByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBl
411
+ bmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgdGFyZ2V0X2tleSkgfj0gMCB0aGVuCiAgICBy
412
+ ZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdDT05GTElDVCBUYXJnZXQgYWxscmVhZHkgZXhpc3Rz
413
+ JykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3JldCA9IGFyZ3NbMjJdLAog
414
+ ICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5
415
+ KSwKICAgIG1pcnJvcl9kb21haW4gPSByZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAn
416
+ bWlycm9yX2RvbWFpbicpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkg
417
+ ZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgn
418
+ RVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZgogICAgICAoZmllbGQg
419
+ PT0gJ2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcgb3IgZmllbGQg
420
+ PT0gJ21pcnJvcl9kb21haW4nKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAgICAg
421
+ cmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAg
422
+ IGVuZAogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gYXJnc1sxXSwK
423
+ ICAgIHRhcmdldF9pZCA9IGFyZ3NbMl0sCiAgICBpc19sYW5kaW5nID0gdG9udW1iZXIoYXJnc1sz
424
+ XSksCiAgICBkb25vcl9zZWN1cmUgPSB0b251bWJlcihhcmdzWzRdKSwKICAgIGRvbm9yX3N1YiA9
425
+ IGFyZ3NbNV0sCiAgICBkb25vcl9kb21haW4gPSBhcmdzWzZdLAogICAgZG9ub3JfcG9ydCA9IGFy
426
+ Z3NbN10sCiAgICBtaXJyb3Jfc2VjdXJlID0gdG9udW1iZXIoYXJnc1s4XSksCiAgICBtaXJyb3Jf
427
+ c3ViID0gYXJnc1s5XSwKICAgIG1pcnJvcl9wb3J0ID0gYXJnc1sxMF0sCiAgICBjb25uZWN0X3Rp
428
+ bWVvdXQgPSB0b251bWJlcihhcmdzWzExXSksCiAgICBzaW1wbGVfdGltZW91dCA9IHRvbnVtYmVy
429
+ KGFyZ3NbMTJdKSwKICAgIHN0cmVhbV90aW1lb3V0ID0gdG9udW1iZXIoYXJnc1sxM10pLAogICAg
430
+ aGVhZGVyc19zaXplX2xpbWl0ID0gdG9udW1iZXIoYXJnc1sxNF0pLAogICAgYm9keV9zaXplX2xp
431
+ bWl0ID0gdG9udW1iZXIoYXJnc1sxNV0pLAogICAgbWFpbl9wYWdlID0gYXJnc1sxNl0sCiAgICBu
432
+ b3RfZm91bmRfcGFnZSA9IGFyZ3NbMTddLAogICAgZmF2aWNvbl9pY28gPSBhcmdzWzE4XSwKICAg
433
+ IHJvYm90c190eHQgPSBhcmdzWzE5XSwKICAgIHNpdGVtYXBfeG1sID0gYXJnc1syMF0sCiAgICBp
434
+ c19lbmFibGVkID0gMCwKICAgIG1lc3NhZ2VfY291bnQgPSAwLAogICAgY3JlYXRlZF9hdCA9IHRv
435
+ bnVtYmVyKGFyZ3NbMjFdKSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwp
436
+ IGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHko
437
+ J0VSUiBXcm9uZyBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYKICAgICAgKAogICAg
438
+ ICAgIGZpZWxkID09ICdjYW1wYWlnbl9pZCcKICAgICAgICBvciBmaWVsZCA9PSAndGFyZ2V0X2lk
439
+ JwogICAgICAgIG9yIGZpZWxkID09ICdkb25vcl9zdWInCiAgICAgICAgb3IgZmllbGQgPT0gJ2Rv
440
+ bm9yX2RvbWFpbicKICAgICAgICBvciBmaWVsZCA9PSAnZG9ub3JfcG9ydCcKICAgICAgICBvciBm
441
+ aWVsZCA9PSAnbWlycm9yX3N1YicKICAgICAgICBvciBmaWVsZCA9PSAnbWlycm9yX3BvcnQnCiAg
442
+ ICAgICkgYW5kIHZhbHVlID09ICcnCiAgICB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9y
443
+ ZXBseSgnRVJSIFdyb25nIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgLS0gc3R5
444
+ bHVhOiBpZ25vcmUKICBsb2NhbCBkb25vcl9zdHIgPSBtb2RlbC5jYW1wYWlnbl9pZAogICAgLi4g
445
+ J1x0JyAuLiBtb2RlbC5kb25vcl9zdWIKICAgIC4uICdcdCcgLi4gbW9kZWwuZG9ub3JfZG9tYWlu
446
+ CiAgICAuLiAnXHQnIC4uIG1vZGVsLmRvbm9yX3BvcnQKCiAgaWYgcmVkaXMuY2FsbCgnU0lTTUVN
447
+ QkVSJywgdGFyZ2V0X3VuaXF1ZV9kb25vcl9rZXksIGRvbm9yX3N0cikgfj0gMCB0aGVuCiAgICBy
448
+ ZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdDT05GTElDVCBUYXJnZXQgZG9ub3IgYWxscmVhZHkg
449
+ dGFrZW4nKQogIGVuZAoKICAtLSBzdHlsdWE6IGlnbm9yZQogIGxvY2FsIG1pcnJvcl9zdHIgPSBt
450
+ b2RlbC5jYW1wYWlnbl9pZAogICAgLi4gJ1x0JyAuLiBtb2RlbC5taXJyb3Jfc3ViCiAgICAuLiAn
451
+ XHQnIC4uIG1vZGVsLm1pcnJvcl9wb3J0CgogIGlmIHJlZGlzLmNhbGwoJ1NJU01FTUJFUicsIHRh
452
+ cmdldF91bmlxdWVfbWlycm9yX2tleSwgbWlycm9yX3N0cikgfj0gMCB0aGVuCiAgICByZXR1cm4g
453
+ cmVkaXMuc3RhdHVzX3JlcGx5KCdDT05GTElDVCBUYXJnZXQgbWlycm9yIGFsbHJlYWR5IHRha2Vu
454
+ JykKICBlbmQKCiAgbG9jYWwgbWlycm9yX2hvc3RuYW1lID0gbW9kZWwubWlycm9yX3N1YiB+PSAn
455
+ LicKICAgICAgYW5kIChtb2RlbC5taXJyb3Jfc3ViIC4uICcuJyAuLiBzdGFzaC5taXJyb3JfZG9t
456
+ YWluKQogICAgb3Igc3Rhc2gubWlycm9yX2RvbWFpbgogIGxvY2FsIG1pcnJvcl9ob3N0ID0gbWly
457
+ cm9yX2hvc3RuYW1lIC4uICc6JyAuLiBtb2RlbC5taXJyb3JfcG9ydAoKICBpZiByZWRpcy5jYWxs
458
+ KCdIRVhJU1RTJywgdGFyZ2V0X21pcnJvcl9ob3N0c19rZXksIG1pcnJvcl9ob3N0KSB+PSAwIHRo
459
+ ZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFRhcmdldCBtaXJyb3IgaG9zdCBh
460
+ bGxyZWFkeSB0YWtlbicpCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNyZXQgfj0gc3Rh
461
+ c2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklE
462
+ REVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0tIFBvaW50IG9m
463
+ IG5vIHJldHVybgoKICBsb2NhbCBzdG9yZSA9IHt9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFp
464
+ cnMobW9kZWwpIGRvCiAgICB0YWJsZS5pbnNlcnQoc3RvcmUsIGZpZWxkKQogICAgdGFibGUuaW5z
465
+ ZXJ0KHN0b3JlLCB2YWx1ZSkKICBlbmQKCiAgcmVkaXMuY2FsbCgnSFNFVCcsIHRhcmdldF9rZXks
466
+ IHVucGFjayhzdG9yZSkpCgogIHJlZGlzLmNhbGwoJ1NBREQnLCB0YXJnZXRfdW5pcXVlX2Rvbm9y
467
+ X2tleSwgZG9ub3Jfc3RyKQogIHJlZGlzLmNhbGwoJ1NBREQnLCB0YXJnZXRfdW5pcXVlX21pcnJv
468
+ cl9rZXksIG1pcnJvcl9zdHIpCgogIGxvY2FsIHRhcmdldF9saW5rID0gbW9kZWwuY2FtcGFpZ25f
469
+ aWQgLi4gJ1x0JyAuLiBtb2RlbC50YXJnZXRfaWQKICByZWRpcy5jYWxsKCdIU0VUJywgdGFyZ2V0
470
+ X21pcnJvcl9ob3N0c19rZXksIG1pcnJvcl9ob3N0LCB0YXJnZXRfbGluaykKCiAgcmVkaXMuY2Fs
471
+ bCgnWkFERCcsIHRhcmdldF9pbmRleF9rZXksIG1vZGVsLmNyZWF0ZWRfYXQsIG1vZGVsLnRhcmdl
472
+ dF9pZCkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgVGFyZ2V0IGNyZWF0ZWQnKQpl
473
+ bmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2NyZWF0ZV90
474
+ YXJnZXQnLAogIGNhbGxiYWNrID0gY3JlYXRlX3RhcmdldCwKICBkZXNjcmlwdGlvbiA9ICdDcmVh
475
+ dGUgdGFyZ2V0JywKfSkKCi0tW1sKICBSZWFkIHRhcmdldAotLV1dCmxvY2FsIGZ1bmN0aW9uIHJl
476
+ YWRfdGFyZ2V0KGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMyBvciAjYXJncyB+PSAwIHRoZW4K
477
+ ICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAg
478
+ ZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCB0YXJnZXRfa2V5ID0g
479
+ a2V5c1syXQogIGxvY2FsIHRhcmdldF9sYWJlbHNfa2V5ID0ga2V5c1szXQoKICBpZiByZWRpcy5j
480
+ YWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVu
481
+ ZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCB0YXJnZXRfa2V5KSB+PSAxIHRoZW4KICAgIHJl
482
+ dHVybiBuaWwKICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUKICBsb2NhbCB2YWx1ZXMgPSByZWRp
483
+ cy5jYWxsKAogICAgJ0hNR0VUJywgdGFyZ2V0X2tleSwKICAgICdjYW1wYWlnbl9pZCcsCiAgICAn
484
+ dGFyZ2V0X2lkJywKICAgICdpc19sYW5kaW5nJywKICAgICdkb25vcl9zZWN1cmUnLAogICAgJ2Rv
485
+ bm9yX3N1YicsCiAgICAnZG9ub3JfZG9tYWluJywKICAgICdkb25vcl9wb3J0JywKICAgICdtaXJy
486
+ b3Jfc2VjdXJlJywKICAgICdtaXJyb3Jfc3ViJywKICAgICdtaXJyb3JfcG9ydCcsCiAgICAnaXNf
487
+ ZW5hYmxlZCcsCiAgICAnbWVzc2FnZV9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcKICApCgogIGlm
488
+ ICN2YWx1ZXMgfj0gMTMgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFs
489
+ Zm9ybSB2YWx1ZXMnKQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0g
490
+ dmFsdWVzWzFdLAogICAgdGFyZ2V0X2lkID0gdmFsdWVzWzJdLAogICAgaXNfbGFuZGluZyA9IHRv
491
+ bnVtYmVyKHZhbHVlc1szXSksCiAgICBkb25vcl9zZWN1cmUgPSB0b251bWJlcih2YWx1ZXNbNF0p
492
+ LAogICAgZG9ub3Jfc3ViID0gdmFsdWVzWzVdLAogICAgZG9ub3JfZG9tYWluID0gdmFsdWVzWzZd
493
+ LAogICAgZG9ub3JfcG9ydCA9IHZhbHVlc1s3XSwKICAgIG1pcnJvcl9zZWN1cmUgPSB0b251bWJl
494
+ cih2YWx1ZXNbOF0pLAogICAgbWlycm9yX3N1YiA9IHZhbHVlc1s5XSwKICAgIG1pcnJvcl9kb21h
495
+ aW4gPSByZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnbWlycm9yX2RvbWFpbicpLAog
496
+ ICAgbWlycm9yX3BvcnQgPSB2YWx1ZXNbMTBdLAogICAgbGFiZWxzID0gcmVkaXMuY2FsbCgnU01F
497
+ TUJFUlMnLCB0YXJnZXRfbGFiZWxzX2tleSksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIodmFs
498
+ dWVzWzExXSksCiAgICBtZXNzYWdlX2NvdW50ID0gdG9udW1iZXIodmFsdWVzWzEyXSksCiAgICBj
499
+ cmVhdGVkX2F0ID0gdG9udW1iZXIodmFsdWVzWzEzXSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVl
500
+ IGluIHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJl
501
+ ZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAg
502
+ ZW5kCgogIHJldHVybiB7IG1hcCA9IG1vZGVsIH0KZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlv
503
+ bih7CiAgZnVuY3Rpb25fbmFtZSA9ICdyZWFkX3RhcmdldCcsCiAgY2FsbGJhY2sgPSByZWFkX3Rh
504
+ cmdldCwKICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwKICBkZXNjcmlwdGlvbiA9ICdSZWFkIHRh
505
+ cmdldCcsCn0pCgotLVtbCiAgUmVhZCBmdWxsIHRhcmdldAotLV1dCmxvY2FsIGZ1bmN0aW9uIHJl
506
+ YWRfZnVsbF90YXJnZXQoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAzIG9yICNhcmdzIH49IDAg
507
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNl
508
+ JykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIHRhcmdldF9r
509
+ ZXkgPSBrZXlzWzJdCiAgbG9jYWwgdGFyZ2V0X2xhYmVsc19rZXkgPSBrZXlzWzNdCgogIGlmIHJl
510
+ ZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmls
511
+ CiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHRhcmdldF9rZXkpIH49IDEgdGhlbgog
512
+ ICAgcmV0dXJuIG5pbAogIGVuZAoKICAtLSBzdHlsdWE6IGlnbm9yZQogIGxvY2FsIHZhbHVlcyA9
513
+ IHJlZGlzLmNhbGwoCiAgICAnSE1HRVQnLCB0YXJnZXRfa2V5LAogICAgJ2NhbXBhaWduX2lkJywK
514
+ ICAgICd0YXJnZXRfaWQnLAogICAgJ2lzX2xhbmRpbmcnLAogICAgJ2Rvbm9yX3NlY3VyZScsCiAg
515
+ ICAnZG9ub3Jfc3ViJywKICAgICdkb25vcl9kb21haW4nLAogICAgJ2Rvbm9yX3BvcnQnLAogICAg
516
+ J21pcnJvcl9zZWN1cmUnLAogICAgJ21pcnJvcl9zdWInLAogICAgJ21pcnJvcl9wb3J0JywKICAg
517
+ ICdjb25uZWN0X3RpbWVvdXQnLAogICAgJ3NpbXBsZV90aW1lb3V0JywKICAgICdzdHJlYW1fdGlt
518
+ ZW91dCcsCiAgICAnaGVhZGVyc19zaXplX2xpbWl0JywKICAgICdib2R5X3NpemVfbGltaXQnLAog
519
+ ICAgJ21haW5fcGFnZScsCiAgICAnbm90X2ZvdW5kX3BhZ2UnLAogICAgJ2Zhdmljb25faWNvJywK
520
+ ICAgICdyb2JvdHNfdHh0JywKICAgICdzaXRlbWFwX3htbCcsCiAgICAnaXNfZW5hYmxlZCcsCiAg
521
+ ICAnbWVzc2FnZV9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcKICApCgogIGlmICN2YWx1ZXMgfj0g
522
+ MjMgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMn
523
+ KQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAog
524
+ ICAgdGFyZ2V0X2lkID0gdmFsdWVzWzJdLAogICAgaXNfbGFuZGluZyA9IHRvbnVtYmVyKHZhbHVl
525
+ c1szXSksCiAgICBkb25vcl9zZWN1cmUgPSB0b251bWJlcih2YWx1ZXNbNF0pLAogICAgZG9ub3Jf
526
+ c3ViID0gdmFsdWVzWzVdLAogICAgZG9ub3JfZG9tYWluID0gdmFsdWVzWzZdLAogICAgZG9ub3Jf
527
+ cG9ydCA9IHZhbHVlc1s3XSwKICAgIG1pcnJvcl9zZWN1cmUgPSB0b251bWJlcih2YWx1ZXNbOF0p
528
+ LAogICAgbWlycm9yX3N1YiA9IHZhbHVlc1s5XSwKICAgIG1pcnJvcl9kb21haW4gPSByZWRpcy5j
529
+ YWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnbWlycm9yX2RvbWFpbicpLAogICAgbWlycm9yX3Bv
530
+ cnQgPSB2YWx1ZXNbMTBdLAogICAgbGFiZWxzID0gcmVkaXMuY2FsbCgnU01FTUJFUlMnLCB0YXJn
531
+ ZXRfbGFiZWxzX2tleSksCiAgICBjb25uZWN0X3RpbWVvdXQgPSB0b251bWJlcih2YWx1ZXNbMTFd
532
+ KSwKICAgIHNpbXBsZV90aW1lb3V0ID0gdG9udW1iZXIodmFsdWVzWzEyXSksCiAgICBzdHJlYW1f
533
+ dGltZW91dCA9IHRvbnVtYmVyKHZhbHVlc1sxM10pLAogICAgaGVhZGVyc19zaXplX2xpbWl0ID0g
534
+ dG9udW1iZXIodmFsdWVzWzE0XSksCiAgICBib2R5X3NpemVfbGltaXQgPSB0b251bWJlcih2YWx1
535
+ ZXNbMTVdKSwKICAgIG1haW5fcGFnZSA9IHZhbHVlc1sxNl0sCiAgICBub3RfZm91bmRfcGFnZSA9
536
+ IHZhbHVlc1sxN10sCiAgICBmYXZpY29uX2ljbyA9IHZhbHVlc1sxOF0sCiAgICByb2JvdHNfdHh0
537
+ ID0gdmFsdWVzWzE5XSwKICAgIHNpdGVtYXBfeG1sID0gdmFsdWVzWzIwXSwKICAgIGlzX2VuYWJs
538
+ ZWQgPSB0b251bWJlcih2YWx1ZXNbMjFdKSwKICAgIG1lc3NhZ2VfY291bnQgPSB0b251bWJlcih2
539
+ YWx1ZXNbMjJdKSwKICAgIGNyZWF0ZWRfYXQgPSB0b251bWJlcih2YWx1ZXNbMjNdKSwKICB9Cgog
540
+ IGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhl
541
+ bgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3JtIG1vZGVsLicgLi4g
542
+ ZmllbGQpCiAgICBlbmQKICBlbmQKCiAgcmV0dXJuIHsgbWFwID0gbW9kZWwgfQplbmQKCnJlZGlz
543
+ LnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ3JlYWRfZnVsbF90YXJnZXQn
544
+ LAogIGNhbGxiYWNrID0gcmVhZF9mdWxsX3RhcmdldCwKICBmbGFncyA9IHsgJ25vLXdyaXRlcycg
545
+ fSwKICBkZXNjcmlwdGlvbiA9ICdSZWFkIGZ1bGwgdGFyZ2V0JywKfSkKCi0tW1sKICBGaW5kIHRh
546
+ cmdldCBsaW5rCi0tXV0KbG9jYWwgZnVuY3Rpb24gZmluZF90YXJnZXRfbGluayhrZXlzLCBhcmdz
547
+ KQogIGlmICNrZXlzIH49IDEgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJy
548
+ b3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCB0YXJnZXRf
549
+ bWlycm9yX2hvc3RzX2tleSA9IGtleXNbMV0KCiAgbG9jYWwgbWlycm9yX2hvc3QgPSBhcmdzWzFd
550
+ CgogIGlmIG5vdCAobWlycm9yX2hvc3QgYW5kIG1pcnJvcl9ob3N0IH49ICcnKSB0aGVuCiAgICBy
551
+ ZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtaXJyb3JfaG9zdCcpCiAgZW5kCgog
552
+ IGlmIHJlZGlzLmNhbGwoJ0hFWElTVFMnLCB0YXJnZXRfbWlycm9yX2hvc3RzX2tleSwgbWlycm9y
553
+ X2hvc3QpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICBsb2NhbCB0YXJnZXRfbGlu
554
+ ayA9IHJlZGlzLmNhbGwoJ0hHRVQnLCB0YXJnZXRfbWlycm9yX2hvc3RzX2tleSwgbWlycm9yX2hv
555
+ c3QpCiAgbG9jYWwgY2FtcGFpZ25faWQsIHRhcmdldF9pZCA9IHN0cmluZy5tYXRjaCh0YXJnZXRf
556
+ bGluaywgJyhbXlx0XSspXHQoW15cdF0rKScpCgogIGlmIG5vdCAoY2FtcGFpZ25faWQgYW5kIGNh
557
+ bXBhaWduX2lkIH49ICcnIGFuZCB0YXJnZXRfaWQgYW5kIHRhcmdldF9pZCB+PSAnJykgdGhlbgog
558
+ ICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB0YXJnZXRfbGluaycpCiAg
559
+ ZW5kCgogIHJldHVybiB7IGNhbXBhaWduX2lkLCB0YXJnZXRfaWQgfQplbmQKCnJlZGlzLnJlZ2lz
560
+ dGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2ZpbmRfdGFyZ2V0X2xpbmsnLAogIGNh
561
+ bGxiYWNrID0gZmluZF90YXJnZXRfbGluaywKICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwKICBk
562
+ ZXNjcmlwdGlvbiA9ICdGaW5kIHRhcmdldCBsaW5rJywKfSkKCi0tW1sKICBSZWFkIHRhcmdldCBp
563
+ bmRleAotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRfdGFyZ2V0X2luZGV4KGtleXMsIGFyZ3MpCiAg
564
+ aWYgI2tleXMgfj0gMiBvciAjYXJncyB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9y
565
+ ZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tl
566
+ eSA9IGtleXNbMV0KICBsb2NhbCB0YXJnZXRfaW5kZXhfa2V5ID0ga2V5c1syXQoKICBpZiByZWRp
567
+ cy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAog
568
+ IGVuZAoKICByZXR1cm4gcmVkaXMuY2FsbCgnWlJBTkdFJywgdGFyZ2V0X2luZGV4X2tleSwgMCwg
569
+ LTEpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVh
570
+ ZF90YXJnZXRfaW5kZXgnLAogIGNhbGxiYWNrID0gcmVhZF90YXJnZXRfaW5kZXgsCiAgZmxhZ3Mg
571
+ PSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnUmVhZCB0YXJnZXQgaW5kZXgnLAp9
572
+ KQoKLS1bWwogIFVwZGF0ZSB0YXJnZXQKLS1dXQpsb2NhbCBmdW5jdGlvbiB1cGRhdGVfdGFyZ2V0
573
+ KGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMyBvciAjYXJncyA8IDEgdGhlbgogICAgcmV0dXJu
574
+ IHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9j
575
+ YWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGNhbXBhaWduX2xvY2tfa2V5ID0ga2V5
576
+ c1syXQogIGxvY2FsIHRhcmdldF9rZXkgPSBrZXlzWzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
577
+ UycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5
578
+ KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwo
579
+ J0VYSVNUUycsIGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5z
580
+ dGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYg
581
+ cmVkaXMuY2FsbCgnRVhJU1RTJywgdGFyZ2V0X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVk
582
+ aXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgVGFyZ2V0IG5vdCBleGlzdHMnKQogIGVuZAoKICBs
583
+ b2NhbCBzdGFzaCA9IHsKICAgIGxvY2tfc2VjcmV0ID0gdGFibGUucmVtb3ZlKGFyZ3MpLAogICAg
584
+ b3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwK
585
+ ICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBpZiBub3QgdmFs
586
+ dWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4n
587
+ IC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYgKGZpZWxkID09ICdsb2NrX3NlY3JldCcgb3IgZmll
588
+ bGQgPT0gJ29yaWdfbG9ja19zZWNyZXQnKSBhbmQgdmFsdWUgPT0gJycgdGhlbgogICAgICByZXR1
589
+ cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5k
590
+ CiAgZW5kCgogIGlmICNhcmdzICUgMiB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9y
591
+ ZXBseSgnRVJSIE9kZCBudW1iZXIgb2YgYXJncycpCiAgZW5kCgogIGxvY2FsIG1vZGVsID0ge30K
592
+ CiAgZm9yIGkgPSAxLCAjYXJncywgMiBkbwogICAgbG9jYWwgZmllbGQsIHZhbHVlID0gYXJnc1tp
593
+ XSwgYXJnc1tpICsgMV0KCiAgICBpZiBtb2RlbFtmaWVsZF0gdGhlbgogICAgICByZXR1cm4gcmVk
594
+ aXMuZXJyb3JfcmVwbHkoJ0VSUiBEdXBsaWNhdGUgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAoK
595
+ ICAgIGlmIGZpZWxkID09ICdjb25uZWN0X3RpbWVvdXQnIHRoZW4KICAgICAgbW9kZWwuY29ubmVj
596
+ dF90aW1lb3V0ID0gdG9udW1iZXIodmFsdWUpCiAgICBlbHNlaWYgZmllbGQgPT0gJ3NpbXBsZV90
597
+ aW1lb3V0JyB0aGVuCiAgICAgIG1vZGVsLnNpbXBsZV90aW1lb3V0ID0gdG9udW1iZXIodmFsdWUp
598
+ CiAgICBlbHNlaWYgZmllbGQgPT0gJ3N0cmVhbV90aW1lb3V0JyB0aGVuCiAgICAgIG1vZGVsLnN0
599
+ cmVhbV90aW1lb3V0ID0gdG9udW1iZXIodmFsdWUpCiAgICBlbHNlaWYgZmllbGQgPT0gJ2hlYWRl
600
+ cnNfc2l6ZV9saW1pdCcgdGhlbgogICAgICBtb2RlbC5oZWFkZXJzX3NpemVfbGltaXQgPSB0b251
601
+ bWJlcih2YWx1ZSkKICAgIGVsc2VpZiBmaWVsZCA9PSAnYm9keV9zaXplX2xpbWl0JyB0aGVuCiAg
602
+ ICAgIG1vZGVsLmJvZHlfc2l6ZV9saW1pdCA9IHRvbnVtYmVyKHZhbHVlKQogICAgZWxzZWlmIGZp
603
+ ZWxkID09ICdtYWluX3BhZ2UnIHRoZW4KICAgICAgbW9kZWwubWFpbl9wYWdlID0gdmFsdWUKICAg
604
+ IGVsc2VpZiBmaWVsZCA9PSAnbm90X2ZvdW5kX3BhZ2UnIHRoZW4KICAgICAgbW9kZWwubm90X2Zv
605
+ dW5kX3BhZ2UgPSB2YWx1ZQogICAgZWxzZWlmIGZpZWxkID09ICdmYXZpY29uX2ljbycgdGhlbgog
606
+ ICAgICBtb2RlbC5mYXZpY29uX2ljbyA9IHZhbHVlCiAgICBlbHNlaWYgZmllbGQgPT0gJ3JvYm90
607
+ c190eHQnIHRoZW4KICAgICAgbW9kZWwucm9ib3RzX3R4dCA9IHZhbHVlCiAgICBlbHNlaWYgZmll
608
+ bGQgPT0gJ3NpdGVtYXBfeG1sJyB0aGVuCiAgICAgIG1vZGVsLnNpdGVtYXBfeG1sID0gdmFsdWUK
609
+ ICAgIGVsc2UKICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgVW5rbm93biBtb2Rl
610
+ bC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMo
611
+ bW9kZWwpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3Jf
612
+ cmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIG5l
613
+ eHQobW9kZWwpID09IG5pbCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBO
614
+ b3RoaW5nIHRvIHVwZGF0ZScpCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNyZXQgfj0g
615
+ c3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9S
616
+ QklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0tIFBvaW50
617
+ IG9mIG5vIHJldHVybgoKICBsb2NhbCBzdG9yZSA9IHt9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4g
618
+ cGFpcnMobW9kZWwpIGRvCiAgICB0YWJsZS5pbnNlcnQoc3RvcmUsIGZpZWxkKQogICAgdGFibGUu
619
+ aW5zZXJ0KHN0b3JlLCB2YWx1ZSkKICBlbmQKCiAgcmVkaXMuY2FsbCgnSFNFVCcsIHRhcmdldF9r
620
+ ZXksIHVucGFjayhzdG9yZSkpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFRhcmdl
621
+ dCB1cGRhdGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFt
622
+ ZSA9ICd1cGRhdGVfdGFyZ2V0JywKICBjYWxsYmFjayA9IHVwZGF0ZV90YXJnZXQsCiAgZGVzY3Jp
623
+ cHRpb24gPSAnVXBkYXRlIHRhcmdldCcsCn0pCgotLVtbCiAgRW5hYmxlIHRhcmdldAotLV1dCmxv
624
+ Y2FsIGZ1bmN0aW9uIGVuYWJsZV90YXJnZXQoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAzIG9y
625
+ ICNhcmdzIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcg
626
+ ZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxv
627
+ Y2FsIGNhbXBhaWduX2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIHRhcmdldF9rZXkgPSBrZXlz
628
+ WzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAg
629
+ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0
630
+ cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2xvY2tfa2V5KSB+
631
+ PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWln
632
+ biBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgdGFyZ2V0X2tl
633
+ eSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgVGFy
634
+ Z2V0IG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tfc2VjcmV0
635
+ ID0gYXJnc1sxXSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1w
636
+ YWlnbl9sb2NrX2tleSksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2FsbCgnSEdF
637
+ VCcsIHRhcmdldF9rZXksICdpc19lbmFibGVkJykpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBp
638
+ biBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRp
639
+ cy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBp
640
+ ZiAoZmllbGQgPT0gJ2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcp
641
+ IGFuZCB2YWx1ZSA9PSAnJyB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJS
642
+ IFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgaWYgc3Rhc2guaXNfZW5h
643
+ YmxlZCB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFRhcmdldCBh
644
+ bGxyZWFkeSBlbmFibGVkJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBz
645
+ dGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JC
646
+ SURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQg
647
+ b2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCB0YXJnZXRfa2V5LCAnaXNfZW5hYmxl
648
+ ZCcsIDEpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFRhcmdldCBlbmFibGVkJykK
649
+ ZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdlbmFibGVf
650
+ dGFyZ2V0JywKICBjYWxsYmFjayA9IGVuYWJsZV90YXJnZXQsCiAgZGVzY3JpcHRpb24gPSAnRW5h
651
+ YmxlIHRhcmdldCcsCn0pCgotLVtbCiAgRGlzYWJsZSB0YXJnZXQKLS1dXQpsb2NhbCBmdW5jdGlv
652
+ biBkaXNhYmxlX3RhcmdldChrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDMgb3IgI2FyZ3Mgfj0g
653
+ MSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1
654
+ c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFp
655
+ Z25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgdGFyZ2V0X2tleSA9IGtleXNbM10KCiAgaWYg
656
+ cmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBy
657
+ ZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWlnbiBub3QgZXhpc3RzJykKICBlbmQK
658
+ CiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpIH49IDEgdGhlbgog
659
+ ICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIG5vdCBsb2Nr
660
+ ZWQnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCB0YXJnZXRfa2V5KSB+PSAxIHRo
661
+ ZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBUYXJnZXQgbm90IGV4
662
+ aXN0cycpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbG9ja19zZWNyZXQgPSBhcmdzWzFd
663
+ LAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tf
664
+ a2V5KSwKICAgIGlzX2VuYWJsZWQgPSB0b251bWJlcihyZWRpcy5jYWxsKCdIR0VUJywgdGFyZ2V0
665
+ X2tleSwgJ2lzX2VuYWJsZWQnKSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0
666
+ YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3Jl
667
+ cGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmIChmaWVsZCA9
668
+ PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JykgYW5kIHZhbHVl
669
+ ID09ICcnIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rh
670
+ c2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBzdGFzaC5pc19lbmFibGVkID09IDAg
671
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgVGFyZ2V0IGFsbHJlYWR5IGRp
672
+ c2FibGVkJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2Nr
673
+ X3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2Ft
674
+ cGFpZ24gbG9ja19zZWNyZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0
675
+ dXJuCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCB0YXJnZXRfa2V5LCAnaXNfZW5hYmxlZCcsIDApCgog
676
+ IHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFRhcmdldCBkaWFibGVkJykKZW5kCgpyZWRp
677
+ cy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdkaXNhYmxlX3RhcmdldCcs
678
+ CiAgY2FsbGJhY2sgPSBkaXNhYmxlX3RhcmdldCwKICBkZXNjcmlwdGlvbiA9ICdEaXNhYmxlIHRh
679
+ cmdldCcsCn0pCgotLVtbCiAgQXBwZW5kIHRhcmdldCBsYWJlbAotLV1dCmxvY2FsIGZ1bmN0aW9u
680
+ IGFwcGVuZF90YXJnZXRfbGFiZWwoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSA0IG9yICNhcmdz
681
+ IH49IDIgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rp
682
+ b24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGNh
683
+ bXBhaWduX2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIHRhcmdldF9rZXkgPSBrZXlzWzNdCiAg
684
+ bG9jYWwgdGFyZ2V0X2xhYmVsc19rZXkgPSBrZXlzWzRdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
685
+ UycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5
686
+ KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwo
687
+ J0VYSVNUUycsIGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5z
688
+ dGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYg
689
+ cmVkaXMuY2FsbCgnRVhJU1RTJywgdGFyZ2V0X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVk
690
+ aXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgVGFyZ2V0IG5vdCBleGlzdHMnKQogIGVuZAoKICBs
691
+ b2NhbCBzdGFzaCA9IHsKICAgIGxhYmVsID0gYXJnc1sxXSwKICAgIGxvY2tfc2VjcmV0ID0gYXJn
692
+ c1syXSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9s
693
+ b2NrX2tleSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAg
694
+ aWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jv
695
+ bmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAgIChmaWVsZCA9PSAnbGFi
696
+ ZWwnIG9yIGZpZWxkID09ICdsb2NrX3NlY3JldCcgb3IgZmllbGQgPT0gJ29yaWdfbG9ja19zZWNy
697
+ ZXQnKSBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3Jl
698
+ cGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiByZWRp
699
+ cy5jYWxsKCdTSVNNRU1CRVInLCB0YXJnZXRfbGFiZWxzX2tleSwgc3Rhc2gubGFiZWwpIH49IDAg
700
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgVGFyZ2V0IGxhYmVsIGFsbHJl
701
+ YWR5IGV4aXN0cycpCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNyZXQgfj0gc3Rhc2gu
702
+ bG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVO
703
+ IENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0tIFBvaW50IG9mIG5v
704
+ IHJldHVybgoKICByZWRpcy5jYWxsKCdTQUREJywgdGFyZ2V0X2xhYmVsc19rZXksIHN0YXNoLmxh
705
+ YmVsKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBUYXJnZXQgbGFiZWwgYXBwZW5k
706
+ ZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2Fw
707
+ cGVuZF90YXJnZXRfbGFiZWwnLAogIGNhbGxiYWNrID0gYXBwZW5kX3RhcmdldF9sYWJlbCwKICBk
708
+ ZXNjcmlwdGlvbiA9ICdBcHBlbmQgdGFyZ2V0IGxhYmVsJywKfSkKCi0tW1sKICBSZW1vdmUgdGFy
709
+ Z2V0IGxhYmVsCi0tXV0KbG9jYWwgZnVuY3Rpb24gcmVtb3ZlX3RhcmdldF9sYWJlbChrZXlzLCBh
710
+ cmdzKQogIGlmICNrZXlzIH49IDQgb3IgI2FyZ3Mgfj0gMiB0aGVuCiAgICByZXR1cm4gcmVkaXMu
711
+ ZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1w
712
+ YWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAg
713
+ bG9jYWwgdGFyZ2V0X2tleSA9IGtleXNbM10KICBsb2NhbCB0YXJnZXRfbGFiZWxzX2tleSA9IGtl
714
+ eXNbNF0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4K
715
+ ICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWlnbiBub3QgZXhp
716
+ c3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkp
717
+ IH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBh
718
+ aWduIG5vdCBsb2NrZWQnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCB0YXJnZXRf
719
+ a2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBU
720
+ YXJnZXQgbm90IGV4aXN0cycpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbGFiZWwgPSBh
721
+ cmdzWzFdLAogICAgbG9ja19zZWNyZXQgPSBhcmdzWzJdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9
722
+ IHJlZGlzLmNhbGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICB9CgogIGZvciBmaWVsZCwg
723
+ dmFsdWUgaW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1
724
+ cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5k
725
+ CgogICAgaWYKICAgICAgKGZpZWxkID09ICdsYWJlbCcgb3IgZmllbGQgPT0gJ2xvY2tfc2VjcmV0
726
+ JyBvciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcpIGFuZCB2YWx1ZSA9PSAnJwogICAgdGhl
727
+ bgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZp
728
+ ZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ1NJU01FTUJFUicsIHRhcmdldF9s
729
+ YWJlbHNfa2V5LCBzdGFzaC5sYWJlbCkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVz
730
+ X3JlcGx5KCdPSyBUYXJnZXQgbGFiZWwgbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHN0YXNoLm9y
731
+ aWdfbG9ja19zZWNyZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlz
732
+ LnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcp
733
+ CiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdTUkVNJywgdGFy
734
+ Z2V0X2xhYmVsc19rZXksIHN0YXNoLmxhYmVsKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5
735
+ KCdPSyBUYXJnZXQgbGFiZWwgcmVtb3ZlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24o
736
+ ewogIGZ1bmN0aW9uX25hbWUgPSAncmVtb3ZlX3RhcmdldF9sYWJlbCcsCiAgY2FsbGJhY2sgPSBy
737
+ ZW1vdmVfdGFyZ2V0X2xhYmVsLAogIGRlc2NyaXB0aW9uID0gJ1JlbW92ZSB0YXJnZXQgbGFiZWwn
738
+ LAp9KQoKLS1bWwogIERlbGV0ZSB0YXJnZXQKLS1dXQpsb2NhbCBmdW5jdGlvbiBkZWxldGVfdGFy
739
+ Z2V0KGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gOCBvciAjYXJncyB+PSAxIHRoZW4KICAgIHJl
740
+ dHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgog
741
+ IGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBjYW1wYWlnbl9sb2NrX2tleSA9
742
+ IGtleXNbMl0KICBsb2NhbCB0YXJnZXRfa2V5ID0ga2V5c1szXQogIGxvY2FsIHRhcmdldF9sYWJl
743
+ bHNfa2V5ID0ga2V5c1s0XQogIGxvY2FsIHRhcmdldF91bmlxdWVfZG9ub3Jfa2V5ID0ga2V5c1s1
744
+ XQogIGxvY2FsIHRhcmdldF91bmlxdWVfbWlycm9yX2tleSA9IGtleXNbNl0KICBsb2NhbCB0YXJn
745
+ ZXRfbWlycm9yX2hvc3RzX2tleSA9IGtleXNbN10KICBsb2NhbCB0YXJnZXRfaW5kZXhfa2V5ID0g
746
+ a2V5c1s4XQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhl
747
+ bgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBl
748
+ eGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2NrX2tl
749
+ eSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2Ft
750
+ cGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHRhcmdl
751
+ dF9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5E
752
+ IFRhcmdldCBub3QgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3Nl
753
+ Y3JldCA9IGFyZ3NbMV0sCiAgICBvcmlnX2xvY2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywg
754
+ Y2FtcGFpZ25fbG9ja19rZXkpLAogICAgY2FtcGFpZ25faWQgPSByZWRpcy5jYWxsKCdIR0VUJywg
755
+ dGFyZ2V0X2tleSwgJ2NhbXBhaWduX2lkJyksCiAgICB0YXJnZXRfaWQgPSByZWRpcy5jYWxsKCdI
756
+ R0VUJywgdGFyZ2V0X2tleSwgJ3RhcmdldF9pZCcpLAogICAgZG9ub3Jfc3ViID0gcmVkaXMuY2Fs
757
+ bCgnSEdFVCcsIHRhcmdldF9rZXksICdkb25vcl9zdWInKSwKICAgIGRvbm9yX2RvbWFpbiA9IHJl
758
+ ZGlzLmNhbGwoJ0hHRVQnLCB0YXJnZXRfa2V5LCAnZG9ub3JfZG9tYWluJyksCiAgICBkb25vcl9w
759
+ b3J0ID0gcmVkaXMuY2FsbCgnSEdFVCcsIHRhcmdldF9rZXksICdkb25vcl9wb3J0JyksCiAgICBt
760
+ aXJyb3Jfc3ViID0gcmVkaXMuY2FsbCgnSEdFVCcsIHRhcmdldF9rZXksICdtaXJyb3Jfc3ViJyks
761
+ CiAgICBtaXJyb3JfZG9tYWluID0gcmVkaXMuY2FsbCgnSEdFVCcsIGNhbXBhaWduX2tleSwgJ21p
762
+ cnJvcl9kb21haW4nKSwKICAgIG1pcnJvcl9wb3J0ID0gcmVkaXMuY2FsbCgnSEdFVCcsIHRhcmdl
763
+ dF9rZXksICdtaXJyb3JfcG9ydCcpLAogICAgaXNfZW5hYmxlZCA9IHRvbnVtYmVyKHJlZGlzLmNh
764
+ bGwoJ0hHRVQnLCB0YXJnZXRfa2V5LCAnaXNfZW5hYmxlZCcpKSwKICB9CgogIGZvciBmaWVsZCwg
765
+ dmFsdWUgaW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1
766
+ cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5k
767
+ CgogICAgaWYKICAgICAgKAogICAgICAgIGZpZWxkID09ICdsb2NrX3NlY3JldCcKICAgICAgICBv
768
+ ciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcKICAgICAgICBvciBmaWVsZCA9PSAnY2FtcGFp
769
+ Z25faWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ3RhcmdldF9pZCcKICAgICAgICBvciBmaWVsZCA9
770
+ PSAnZG9ub3Jfc3ViJwogICAgICAgIG9yIGZpZWxkID09ICdkb25vcl9kb21haW4nCiAgICAgICAg
771
+ b3IgZmllbGQgPT0gJ2Rvbm9yX3BvcnQnCiAgICAgICAgb3IgZmllbGQgPT0gJ21pcnJvcl9zdWIn
772
+ CiAgICAgICAgb3IgZmllbGQgPT0gJ21pcnJvcl9kb21haW4nCiAgICAgICAgb3IgZmllbGQgPT0g
773
+ J21pcnJvcl9wb3J0JwogICAgICApIGFuZCB2YWx1ZSA9PSAnJwogICAgdGhlbgogICAgICByZXR1
774
+ cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5k
775
+ CiAgZW5kCgogIC0tIHN0eWx1YTogaWdub3JlCiAgbG9jYWwgZG9ub3Jfc3RyID0gc3Rhc2guY2Ft
776
+ cGFpZ25faWQKICAgIC4uICdcdCcgLi4gc3Rhc2guZG9ub3Jfc3ViCiAgICAuLiAnXHQnIC4uIHN0
777
+ YXNoLmRvbm9yX2RvbWFpbgogICAgLi4gJ1x0JyAuLiBzdGFzaC5kb25vcl9wb3J0CgogIC0tIHN0
778
+ eWx1YTogaWdub3JlCiAgbG9jYWwgbWlycm9yX3N0ciA9IHN0YXNoLmNhbXBhaWduX2lkCiAgICAu
779
+ LiAnXHQnIC4uIHN0YXNoLm1pcnJvcl9zdWIKICAgIC4uICdcdCcgLi4gc3Rhc2gubWlycm9yX3Bv
780
+ cnQKCiAgbG9jYWwgbWlycm9yX2hvc3RuYW1lID0gc3Rhc2gubWlycm9yX3N1YiB+PSAnLicKICAg
781
+ ICAgYW5kIChzdGFzaC5taXJyb3Jfc3ViIC4uICcuJyAuLiBzdGFzaC5taXJyb3JfZG9tYWluKQog
782
+ ICAgb3Igc3Rhc2gubWlycm9yX2RvbWFpbgogIGxvY2FsIG1pcnJvcl9ob3N0ID0gbWlycm9yX2hv
783
+ c3RuYW1lIC4uICc6JyAuLiBzdGFzaC5taXJyb3JfcG9ydAoKICBpZiBzdGFzaC5pc19lbmFibGVk
784
+ IH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIFRhcmdl
785
+ dCBub3QgZGlzYWJsZWQnKQogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0
786
+ YXNoLmxvY2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJ
787
+ RERFTiBDYW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2ludCBv
788
+ ZiBubyByZXR1cm4KCiAgcmVkaXMuY2FsbCgnREVMJywgdGFyZ2V0X2tleSkKICByZWRpcy5jYWxs
789
+ KCdERUwnLCB0YXJnZXRfbGFiZWxzX2tleSkKCiAgcmVkaXMuY2FsbCgnU1JFTScsIHRhcmdldF91
790
+ bmlxdWVfZG9ub3Jfa2V5LCBkb25vcl9zdHIpCiAgcmVkaXMuY2FsbCgnU1JFTScsIHRhcmdldF91
791
+ bmlxdWVfbWlycm9yX2tleSwgbWlycm9yX3N0cikKCiAgcmVkaXMuY2FsbCgnSERFTCcsIHRhcmdl
792
+ dF9taXJyb3JfaG9zdHNfa2V5LCBtaXJyb3JfaG9zdCkKCiAgcmVkaXMuY2FsbCgnWlJFTScsIHRh
793
+ cmdldF9pbmRleF9rZXksIHN0YXNoLnRhcmdldF9pZCkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19y
794
+ ZXBseSgnT0sgVGFyZ2V0IGRlbGV0ZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsK
795
+ ICBmdW5jdGlvbl9uYW1lID0gJ2RlbGV0ZV90YXJnZXQnLAogIGNhbGxiYWNrID0gZGVsZXRlX3Rh
796
+ cmdldCwKICBkZXNjcmlwdGlvbiA9ICdEZWxldGUgdGFyZ2V0JywKfSkK`,
797
+ '4-redirector.lua',
798
+ `IyFsdWEgbmFtZT1yZWRpcmVjdG9yCgotLVtbCiAgQ3JlYXRlIHJlZGlyZWN0b3IKLS1dXQpsb2Nh
799
+ bCBmdW5jdGlvbiBjcmVhdGVfcmVkaXJlY3RvcihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDQg
800
+ b3IgI2FyZ3Mgfj0gNSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
801
+ ZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAg
802
+ bG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcmVkaXJlY3Rvcl9rZXkg
803
+ PSBrZXlzWzNdCiAgbG9jYWwgcmVkaXJlY3Rvcl9pbmRleF9rZXkgPSBrZXlzWzRdCgogIGlmIHJl
804
+ ZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVk
805
+ aXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgog
806
+ IGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAg
807
+ IHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2Vk
808
+ JykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgcmVkaXJlY3Rvcl9rZXkpIH49IDAg
809
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgUmVkaXJlY3RvciBh
810
+ bGxyZWFkeSBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tfc2VjcmV0
811
+ ID0gYXJnc1s1XSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1w
812
+ YWlnbl9sb2NrX2tleSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBk
813
+ bwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdF
814
+ UlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9j
815
+ a19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcn
816
+ IHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAu
817
+ LiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lk
818
+ ID0gYXJnc1sxXSwKICAgIHJlZGlyZWN0b3JfaWQgPSBhcmdzWzJdLAogICAgcGFnZSA9IGFyZ3Nb
819
+ M10sCiAgICBsdXJlX2NvdW50ID0gMCwKICAgIGNyZWF0ZWRfYXQgPSB0b251bWJlcihhcmdzWzRd
820
+ KSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwpIGRvCiAgICBpZiBub3Qg
821
+ dmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtb2Rl
822
+ bC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYgKGZpZWxkID09ICdjYW1wYWlnbl9pZCcgb3Ig
823
+ ZmllbGQgPT0gJ3JlZGlyZWN0b3JfaWQnKSBhbmQgdmFsdWUgPT0gJycgdGhlbgogICAgICByZXR1
824
+ cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5k
825
+ CiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNyZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQg
826
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIGxv
827
+ Y2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICBs
828
+ b2NhbCBzdG9yZSA9IHt9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwpIGRvCiAg
829
+ ICB0YWJsZS5pbnNlcnQoc3RvcmUsIGZpZWxkKQogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCB2YWx1
830
+ ZSkKICBlbmQKCiAgcmVkaXMuY2FsbCgnSFNFVCcsIHJlZGlyZWN0b3Jfa2V5LCB1bnBhY2soc3Rv
831
+ cmUpKQoKICByZWRpcy5jYWxsKCdaQUREJywgcmVkaXJlY3Rvcl9pbmRleF9rZXksIG1vZGVsLmNy
832
+ ZWF0ZWRfYXQsIG1vZGVsLnJlZGlyZWN0b3JfaWQpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVw
833
+ bHkoJ09LIFJlZGlyZWN0b3IgY3JlYXRlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24o
834
+ ewogIGZ1bmN0aW9uX25hbWUgPSAnY3JlYXRlX3JlZGlyZWN0b3InLAogIGNhbGxiYWNrID0gY3Jl
835
+ YXRlX3JlZGlyZWN0b3IsCiAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIHJlZGlyZWN0b3InLAp9KQoK
836
+ LS1bWwogIFJlYWQgcmVkaXJlY3RvcgotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRfcmVkaXJlY3Rv
837
+ cihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1
838
+ cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBs
839
+ b2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgcmVkaXJlY3Rvcl9rZXkgPSBrZXlz
840
+ WzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAg
841
+ ICByZXR1cm4gbmlsCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHJlZGlyZWN0b3Jf
842
+ a2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUK
843
+ ICBsb2NhbCB2YWx1ZXMgPSByZWRpcy5jYWxsKAogICAgJ0hNR0VUJywgcmVkaXJlY3Rvcl9rZXks
844
+ CiAgICAnY2FtcGFpZ25faWQnLAogICAgJ3JlZGlyZWN0b3JfaWQnLAogICAgJ2x1cmVfY291bnQn
845
+ LAogICAgJ2NyZWF0ZWRfYXQnCiAgKQoKICBpZiAjdmFsdWVzIH49IDQgdGhlbgogICAgcmV0dXJu
846
+ IHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoKICBsb2NhbCBt
847
+ b2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgcmVkaXJlY3Rvcl9pZCA9
848
+ IHZhbHVlc1syXSwKICAgIGx1cmVfY291bnQgPSB0b251bWJlcih2YWx1ZXNbM10pLAogICAgY3Jl
849
+ YXRlZF9hdCA9IHRvbnVtYmVyKHZhbHVlc1s0XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGlu
850
+ IHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlz
851
+ LmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5k
852
+ CgogIHJldHVybiB7IG1hcCA9IG1vZGVsIH0KZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7
853
+ CiAgZnVuY3Rpb25fbmFtZSA9ICdyZWFkX3JlZGlyZWN0b3InLAogIGNhbGxiYWNrID0gcmVhZF9y
854
+ ZWRpcmVjdG9yLAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9LAogIGRlc2NyaXB0aW9uID0gJ1Jl
855
+ YWQgcmVkaXJlY3RvcicsCn0pCgotLVtbCiAgUmVhZCBmdWxsIHJlZGlyZWN0b3IKLS1dXQpsb2Nh
856
+ bCBmdW5jdGlvbiByZWFkX2Z1bGxfcmVkaXJlY3RvcihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49
857
+ IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBX
858
+ cm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFd
859
+ CiAgbG9jYWwgcmVkaXJlY3Rvcl9rZXkgPSBrZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
860
+ UycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIGlmIHJl
861
+ ZGlzLmNhbGwoJ0VYSVNUUycsIHJlZGlyZWN0b3Jfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBu
862
+ aWwKICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUKICBsb2NhbCB2YWx1ZXMgPSByZWRpcy5jYWxs
863
+ KAogICAgJ0hNR0VUJywgcmVkaXJlY3Rvcl9rZXksCiAgICAnY2FtcGFpZ25faWQnLAogICAgJ3Jl
864
+ ZGlyZWN0b3JfaWQnLAogICAgJ3BhZ2UnLAogICAgJ2x1cmVfY291bnQnLAogICAgJ2NyZWF0ZWRf
865
+ YXQnCiAgKQoKICBpZiAjdmFsdWVzIH49IDUgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3Jl
866
+ cGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAgIGNh
867
+ bXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgcmVkaXJlY3Rvcl9pZCA9IHZhbHVlc1syXSwKICAg
868
+ IHBhZ2UgPSB2YWx1ZXNbM10sCiAgICBsdXJlX2NvdW50ID0gdG9udW1iZXIodmFsdWVzWzRdKSwK
869
+ ICAgIGNyZWF0ZWRfYXQgPSB0b251bWJlcih2YWx1ZXNbNV0pLAogIH0KCiAgZm9yIGZpZWxkLCB2
870
+ YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVy
871
+ biByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVu
872
+ ZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVu
873
+ Y3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9mdWxsX3JlZGlyZWN0b3InLAogIGNhbGxi
874
+ YWNrID0gcmVhZF9mdWxsX3JlZGlyZWN0b3IsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAg
875
+ ZGVzY3JpcHRpb24gPSAnUmVhZCBmdWxsIHJlZGlyZWN0b3InLAp9KQoKLS1bWwogIFJlYWQgcmVk
876
+ aXJlY3RvciBpbmRleAotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRfcmVkaXJlY3Rvcl9pbmRleChr
877
+ ZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4g
878
+ cmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2Nh
879
+ bCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgcmVkaXJlY3Rvcl9pbmRleF9rZXkgPSBr
880
+ ZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVu
881
+ CiAgICByZXR1cm4gbmlsCiAgZW5kCgogIHJldHVybiByZWRpcy5jYWxsKCdaUkFOR0UnLCByZWRp
882
+ cmVjdG9yX2luZGV4X2tleSwgMCwgLTEpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewog
883
+ IGZ1bmN0aW9uX25hbWUgPSAncmVhZF9yZWRpcmVjdG9yX2luZGV4JywKICBjYWxsYmFjayA9IHJl
884
+ YWRfcmVkaXJlY3Rvcl9pbmRleCwKICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwKICBkZXNjcmlw
885
+ dGlvbiA9ICdSZWFkIHJlZGlyZWN0b3IgaW5kZXgnLAp9KQoKLS1bWwogIFVwZGF0ZSByZWRpcmVj
886
+ dG9yCi0tXV0KbG9jYWwgZnVuY3Rpb24gdXBkYXRlX3JlZGlyZWN0b3Ioa2V5cywgYXJncykKICBp
887
+ ZiAja2V5cyB+PSAzIG9yICNhcmdzIDwgMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
888
+ bHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkg
889
+ PSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcmVk
890
+ aXJlY3Rvcl9rZXkgPSBrZXlzWzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWdu
891
+ X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQg
892
+ Q2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNh
893
+ bXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHko
894
+ J0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgn
895
+ RVhJU1RTJywgcmVkaXJlY3Rvcl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
896
+ c19yZXBseSgnTk9UX0ZPVU5EIFJlZGlyZWN0b3Igbm90IGV4aXN0cycpCiAgZW5kCgogIGxvY2Fs
897
+ IHN0YXNoID0gewogICAgbG9ja19zZWNyZXQgPSB0YWJsZS5yZW1vdmUoYXJncyksCiAgICBvcmln
898
+ X2xvY2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywgY2FtcGFpZ25fbG9ja19rZXkpLAogIH0K
899
+ CiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0
900
+ aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4g
901
+ ZmllbGQpCiAgICBlbmQKCiAgICBpZiAoZmllbGQgPT0gJ2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9
902
+ PSAnb3JpZ19sb2NrX3NlY3JldCcpIGFuZCB2YWx1ZSA9PSAnJyB0aGVuCiAgICAgIHJldHVybiBy
903
+ ZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBl
904
+ bmQKCiAgaWYgI2FyZ3MgJSAyIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5
905
+ KCdFUlIgT2RkIG51bWJlciBvZiBhcmdzJykKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7fQoKICBm
906
+ b3IgaSA9IDEsICNhcmdzLCAyIGRvCiAgICBsb2NhbCBmaWVsZCwgdmFsdWUgPSBhcmdzW2ldLCBh
907
+ cmdzW2kgKyAxXQoKICAgIGlmIG1vZGVsW2ZpZWxkXSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5l
908
+ cnJvcl9yZXBseSgnRVJSIER1cGxpY2F0ZSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAg
909
+ aWYgZmllbGQgPT0gJ3BhZ2UnIHRoZW4KICAgICAgbW9kZWwucGFnZSA9IHZhbHVlCiAgICBlbHNl
910
+ CiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFVua25vd24gbW9kZWwuJyAuLiBm
911
+ aWVsZCkKICAgIGVuZAogIGVuZAoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBk
912
+ bwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdF
913
+ UlIgV3JvbmcgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBuZXh0KG1vZGVs
914
+ KSA9PSBuaWwgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgTm90aGluZyB0
915
+ byB1cGRhdGUnKQogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0YXNoLmxv
916
+ Y2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBD
917
+ YW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyBy
918
+ ZXR1cm4KCiAgbG9jYWwgc3RvcmUgPSB7fQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1v
919
+ ZGVsKSBkbwogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCBmaWVsZCkKICAgIHRhYmxlLmluc2VydChz
920
+ dG9yZSwgdmFsdWUpCiAgZW5kCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCByZWRpcmVjdG9yX2tleSwg
921
+ dW5wYWNrKHN0b3JlKSkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgUmVkaXJlY3Rv
922
+ ciB1cGRhdGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFt
923
+ ZSA9ICd1cGRhdGVfcmVkaXJlY3RvcicsCiAgY2FsbGJhY2sgPSB1cGRhdGVfcmVkaXJlY3RvciwK
924
+ ICBkZXNjcmlwdGlvbiA9ICdVcGRhdGUgcmVkaXJlY3RvcicsCn0pCgotLVtbCiAgRGVsZXRlIHJl
925
+ ZGlyZWN0b3IKLS1dXQpsb2NhbCBmdW5jdGlvbiBkZWxldGVfcmVkaXJlY3RvcihrZXlzLCBhcmdz
926
+ KQogIGlmICNrZXlzIH49IDQgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJy
927
+ b3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWln
928
+ bl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9j
929
+ YWwgcmVkaXJlY3Rvcl9rZXkgPSBrZXlzWzNdCiAgbG9jYWwgcmVkaXJlY3Rvcl9pbmRleF9rZXkg
930
+ PSBrZXlzWzRdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0
931
+ aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgY2FtcGFpZ24gbm90
932
+ IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2xvY2tf
933
+ a2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBD
934
+ YW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgcmVk
935
+ aXJlY3Rvcl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9U
936
+ X0ZPVU5EIHJlZGlyZWN0b3Igbm90IGV4aXN0cycpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewog
937
+ ICAgbG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNh
938
+ bGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIHJlZGlyZWN0b3JfaWQgPSByZWRpcy5j
939
+ YWxsKCdIR0VUJywgcmVkaXJlY3Rvcl9rZXksICdyZWRpcmVjdG9yX2lkJyksCiAgICBsdXJlX2Nv
940
+ dW50ID0gdG9udW1iZXIocmVkaXMuY2FsbCgnSEdFVCcsIHJlZGlyZWN0b3Jfa2V5LCAnbHVyZV9j
941
+ b3VudCcpKSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBp
942
+ ZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
943
+ ZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYKICAgICAgKGZpZWxkID09ICdsb2Nr
944
+ X3NlY3JldCcgb3IgZmllbGQgPT0gJ29yaWdfbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdyZWRp
945
+ cmVjdG9yX2lkJykKICAgICAgYW5kIHZhbHVlID09ICcnCiAgICB0aGVuCiAgICAgIHJldHVybiBy
946
+ ZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAg
947
+ ICBpZiBmaWVsZCA9PSAnbHVyZV9jb3VudCcgYW5kIHZhbHVlIDwgMCB0aGVuCiAgICAgIHJldHVy
948
+ biByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQK
949
+ ICBlbmQKCiAgaWYgc3Rhc2gubHVyZV9jb3VudCA+IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0
950
+ YXR1c19yZXBseSgnRk9SQklEREVOIEx1cmVzIGV4aXN0cycpCiAgZW5kCgogIGlmIHN0YXNoLm9y
951
+ aWdfbG9ja19zZWNyZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlz
952
+ LnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcp
953
+ CiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdERUwnLCByZWRp
954
+ cmVjdG9yX2tleSkKCiAgcmVkaXMuY2FsbCgnWlJFTScsIHJlZGlyZWN0b3JfaW5kZXhfa2V5LCBz
955
+ dGFzaC5yZWRpcmVjdG9yX2lkKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBSZWRp
956
+ cmVjdG9yIGRlbGV0ZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlv
957
+ bl9uYW1lID0gJ2RlbGV0ZV9yZWRpcmVjdG9yJywKICBjYWxsYmFjayA9IGRlbGV0ZV9yZWRpcmVj
958
+ dG9yLAogIGRlc2NyaXB0aW9uID0gJ0RlbGV0ZSB0YXJnZXQnLAp9KQo=`,
959
+ '5-lure.lua',
960
+ `IyFsdWEgbmFtZT1sdXJlCgotLVtbCiAgQ3JlYXRlIGx1cmUKLS1dXQpsb2NhbCBmdW5jdGlvbiBj
961
+ cmVhdGVfbHVyZShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDYgb3IgI2FyZ3Mgfj0gNiB0aGVu
962
+ CiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQog
963
+ IGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9j
964
+ a19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgbHVyZV9rZXkgPSBrZXlzWzNdCiAgbG9jYWwgbHVyZV9w
965
+ YXRoc19rZXkgPSBrZXlzWzRdCiAgbG9jYWwgbHVyZV9pbmRleF9rZXkgPSBrZXlzWzVdCiAgbG9j
966
+ YWwgcmVkaXJlY3Rvcl9rZXkgPSBrZXlzWzZdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNh
967
+ bXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1Rf
968
+ Rk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
969
+ UycsIGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNf
970
+ cmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMu
971
+ Y2FsbCgnRVhJU1RTJywgbHVyZV9rZXkpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
972
+ c19yZXBseSgnQ09ORkxJQ1QgTHVyZSBhbGxyZWFkeSBleGlzdHMnKQogIGVuZAoKICBpZiByZWRp
973
+ cy5jYWxsKCdFWElTVFMnLCByZWRpcmVjdG9yX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVk
974
+ aXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUmVkaXJlY3RvciBub3QgZm91bmQnKQogIGVuZAoK
975
+ ICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tfc2VjcmV0ID0gYXJnc1s2XSwKICAgIG9yaWdfbG9j
976
+ a19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tleSksCiAgfQoKICBm
977
+ b3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4K
978
+ ICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVs
979
+ ZCkKICAgIGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdv
980
+ cmlnX2xvY2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcnIHRoZW4KICAgICAgcmV0dXJuIHJlZGlz
981
+ LmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoK
982
+ ICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gYXJnc1sxXSwKICAgIGx1cmVfaWQg
983
+ PSBhcmdzWzJdLAogICAgcGF0aCA9IGFyZ3NbM10sCiAgICByZWRpcmVjdG9yX2lkID0gYXJnc1s0
984
+ XSwKICAgIGlzX2VuYWJsZWQgPSAwLAogICAgc2Vzc2lvbl9jb3VudCA9IDAsCiAgICBjcmVhdGVk
985
+ X2F0ID0gdG9udW1iZXIoYXJnc1s1XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJz
986
+ KG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9y
987
+ X3JlcGx5KCdFUlIgV3JvbmcgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAg
988
+ IChmaWVsZCA9PSAnY2FtcGFpZ25faWQnIG9yIGZpZWxkID09ICdsdXJlX2lkJyBvciBmaWVsZCA9
989
+ PSAncGF0aCcgb3IgZmllbGQgPT0gJ3JlZGlyZWN0b3JfaWQnKQogICAgICBhbmQgdmFsdWUgPT0g
990
+ JycKICAgIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9k
991
+ ZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0
992
+ IH49IHN0YXNoLmxvY2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHko
993
+ J0ZPUkJJRERFTiBDYW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQ
994
+ b2ludCBvZiBubyByZXR1cm4KCiAgbG9jYWwgc3RvcmUgPSB7fQoKICBmb3IgZmllbGQsIHZhbHVl
995
+ IGluIHBhaXJzKG1vZGVsKSBkbwogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCBmaWVsZCkKICAgIHRh
996
+ YmxlLmluc2VydChzdG9yZSwgdmFsdWUpCiAgZW5kCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCBsdXJl
997
+ X2tleSwgdW5wYWNrKHN0b3JlKSkKCiAgcmVkaXMuY2FsbCgnSFNFVCcsIGx1cmVfcGF0aHNfa2V5
998
+ LCBtb2RlbC5wYXRoLCBtb2RlbC5sdXJlX2lkKQoKICByZWRpcy5jYWxsKCdaQUREJywgbHVyZV9p
999
+ bmRleF9rZXksIG1vZGVsLmNyZWF0ZWRfYXQsIG1vZGVsLmx1cmVfaWQpCgogIHJlZGlzLmNhbGwo
1000
+ J0hJTkNSQlknLCByZWRpcmVjdG9yX2tleSwgJ2x1cmVfY291bnQnLCAxKQoKICByZXR1cm4gcmVk
1001
+ aXMuc3RhdHVzX3JlcGx5KCdPSyBMdXJlIGNyZWF0ZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1
1002
+ bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2NyZWF0ZV9sdXJlJywKICBjYWxsYmFjayA9IGNy
1003
+ ZWF0ZV9sdXJlLAogIGRlc2NyaXB0aW9uID0gJ0NyZWF0ZSBsdXJlJywKfSkKCi0tW1sKICBSZWFk
1004
+ IGx1cmUKLS1dXQpsb2NhbCBmdW5jdGlvbiByZWFkX2x1cmUoa2V5cywgYXJncykKICBpZiAja2V5
1005
+ cyB+PSAyIG9yICNhcmdzIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdF
1006
+ UlIgV3JvbmcgZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5
1007
+ c1sxXQogIGxvY2FsIGx1cmVfa2V5ID0ga2V5c1syXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMn
1008
+ LCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICBpZiByZWRp
1009
+ cy5jYWxsKCdFWElTVFMnLCBsdXJlX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5k
1010
+ CgogIC0tIHN0eWx1YTogaWdub3JlCiAgbG9jYWwgdmFsdWVzID0gIHJlZGlzLmNhbGwoCiAgICAn
1011
+ SE1HRVQnLCBsdXJlX2tleSwKICAgICdjYW1wYWlnbl9pZCcsCiAgICAnbHVyZV9pZCcsCiAgICAn
1012
+ cGF0aCcsCiAgICAncmVkaXJlY3Rvcl9pZCcsCiAgICAnaXNfZW5hYmxlZCcsCiAgICAnc2Vzc2lv
1013
+ bl9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcKICApCgogIGlmICN2YWx1ZXMgfj0gNyB0aGVuCiAg
1014
+ ICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3JtIHZhbHVlcycpCiAgZW5kCgog
1015
+ IGxvY2FsIG1vZGVsID0gewogICAgY2FtcGFpZ25faWQgPSB2YWx1ZXNbMV0sCiAgICBsdXJlX2lk
1016
+ ID0gdmFsdWVzWzJdLAogICAgcGF0aCA9IHZhbHVlc1szXSwKICAgIHJlZGlyZWN0b3JfaWQgPSB2
1017
+ YWx1ZXNbNF0sCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIodmFsdWVzWzVdKSwKICAgIHNlc3Np
1018
+ b25fY291bnQgPSB0b251bWJlcih2YWx1ZXNbNl0pLAogICAgY3JlYXRlZF9hdCA9IHRvbnVtYmVy
1019
+ KHZhbHVlc1s3XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwog
1020
+ ICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIg
1021
+ TWFsZm9ybSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIHJldHVybiB7IG1hcCA9
1022
+ IG1vZGVsIH0KZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9
1023
+ ICdyZWFkX2x1cmUnLAogIGNhbGxiYWNrID0gcmVhZF9sdXJlLAogIGZsYWdzID0geyAnbm8td3Jp
1024
+ dGVzJyB9LAogIGRlc2NyaXB0aW9uID0gJ1JlYWQgbHVyZScsCn0pCgotLVtbCiAgRmluZCBsdXJl
1025
+ IGlkCi0tXV0KbG9jYWwgZnVuY3Rpb24gZmluZF9sdXJlX2lkKGtleXMsIGFyZ3MpCiAgaWYgI2tl
1026
+ eXMgfj0gMiBvciAjYXJncyB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgn
1027
+ RVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtl
1028
+ eXNbMV0KICBsb2NhbCBsdXJlX3BhdGhzX2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgn
1029
+ RVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAg
1030
+ bG9jYWwgcGF0aCA9IGFyZ3NbMV0KCiAgaWYgbm90IChwYXRoIGFuZCBwYXRoIH49ICcnKSB0aGVu
1031
+ CiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBwYXRoJykKICBlbmQKCiAg
1032
+ aWYgcmVkaXMuY2FsbCgnSEVYSVNUUycsIGx1cmVfcGF0aHNfa2V5LCBwYXRoKSB+PSAxIHRoZW4K
1033
+ ICAgIHJldHVybiBuaWwKICBlbmQKCiAgbG9jYWwgbHVyZV9pZCA9IHJlZGlzLmNhbGwoJ0hHRVQn
1034
+ LCBsdXJlX3BhdGhzX2tleSwgcGF0aCkKCiAgaWYgbm90IChsdXJlX2lkIGFuZCBsdXJlX2lkIH49
1035
+ ICcnKSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3JtIGx1cmVf
1036
+ aWQnKQogIGVuZAoKICByZXR1cm4gbHVyZV9pZAplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9u
1037
+ KHsKICBmdW5jdGlvbl9uYW1lID0gJ2ZpbmRfbHVyZV9pZCcsCiAgY2FsbGJhY2sgPSBmaW5kX2x1
1038
+ cmVfaWQsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnRmluZCBs
1039
+ dXJlIGlkJywKfSkKCi0tW1sKICBSZWFkIGx1cmUgaW5kZXgKLS1dXQpsb2NhbCBmdW5jdGlvbiBy
1040
+ ZWFkX2x1cmVfaW5kZXgoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAyIG9yICNhcmdzIH49IDAg
1041
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNl
1042
+ JykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGx1cmVfaW5k
1043
+ ZXhfa2V5ID0ga2V5c1syXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkp
1044
+ IH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICByZXR1cm4gcmVkaXMuY2FsbCgnWlJB
1045
+ TkdFJywgbHVyZV9pbmRleF9rZXksIDAsIC0xKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9u
1046
+ KHsKICBmdW5jdGlvbl9uYW1lID0gJ3JlYWRfbHVyZV9pbmRleCcsCiAgY2FsbGJhY2sgPSByZWFk
1047
+ X2x1cmVfaW5kZXgsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAn
1048
+ UmVhZCBsdXJlIGluZGV4JywKfSkKCi0tW1sKICBFbmFibGUgbHVyZQotLV1dCmxvY2FsIGZ1bmN0
1049
+ aW9uIGVuYWJsZV9sdXJlKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMyBvciAjYXJncyB+PSAx
1050
+ IHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVz
1051
+ ZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBjYW1wYWln
1052
+ bl9sb2NrX2tleSA9IGtleXNbMl0KICBsb2NhbCBsdXJlX2tleSA9IGtleXNbM10KCiAgaWYgcmVk
1053
+ aXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRp
1054
+ cy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWlnbiBub3QgZXhpc3RzJykKICBlbmQKCiAg
1055
+ aWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpIH49IDEgdGhlbgogICAg
1056
+ cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIG5vdCBsb2NrZWQn
1057
+ KQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBsdXJlX2tleSkgfj0gMSB0aGVuCiAg
1058
+ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgTHVyZSBub3QgZXhpc3RzJykK
1059
+ ICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3JldCA9IGFyZ3NbMV0sCiAgICBv
1060
+ cmlnX2xvY2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywgY2FtcGFpZ25fbG9ja19rZXkpLAog
1061
+ ICAgaXNfZW5hYmxlZCA9IHRvbnVtYmVyKHJlZGlzLmNhbGwoJ0hHRVQnLCBsdXJlX2tleSwgJ2lz
1062
+ X2VuYWJsZWQnKSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwog
1063
+ ICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIg
1064
+ V3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9ja19z
1065
+ ZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcnIHRo
1066
+ ZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBm
1067
+ aWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBzdGFzaC5pc19lbmFibGVkIH49IDAgdGhlbgogICAg
1068
+ cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgTHVyZSBhbGxyZWFkeSBlbmFibGVkJykKICBl
1069
+ bmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVu
1070
+ CiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19z
1071
+ ZWNyZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlz
1072
+ LmNhbGwoJ0hTRVQnLCBsdXJlX2tleSwgJ2lzX2VuYWJsZWQnLCAxKQoKICByZXR1cm4gcmVkaXMu
1073
+ c3RhdHVzX3JlcGx5KCdPSyBMdXJlIGVuYWJsZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0
1074
+ aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2VuYWJsZV9sdXJlJywKICBjYWxsYmFjayA9IGVuYWJs
1075
+ ZV9sdXJlLAogIGRlc2NyaXB0aW9uID0gJ0VuYWJsZSBsdXJlJywKfSkKCi0tW1sKICBEaXNhYmxl
1076
+ IGx1cmUKLS1dXQpsb2NhbCBmdW5jdGlvbiBkaXNhYmxlX2x1cmUoa2V5cywgYXJncykKICBpZiAj
1077
+ a2V5cyB+PSAzIG9yICNhcmdzIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5
1078
+ KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0g
1079
+ a2V5c1sxXQogIGxvY2FsIGNhbXBhaWduX2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIGx1cmVf
1080
+ a2V5ID0ga2V5c1szXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49
1081
+ IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWdu
1082
+ IG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9s
1083
+ b2NrX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURE
1084
+ RU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycs
1085
+ IGx1cmVfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9G
1086
+ T1VORCBMdXJlIG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tf
1087
+ c2VjcmV0ID0gYXJnc1sxXSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQn
1088
+ LCBjYW1wYWlnbl9sb2NrX2tleSksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2Fs
1089
+ bCgnSEdFVCcsIGx1cmVfa2V5LCAnaXNfZW5hYmxlZCcpKSwKICB9CgogIGZvciBmaWVsZCwgdmFs
1090
+ dWUgaW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4g
1091
+ cmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgog
1092
+ ICAgaWYgKGZpZWxkID09ICdsb2NrX3NlY3JldCcgb3IgZmllbGQgPT0gJ29yaWdfbG9ja19zZWNy
1093
+ ZXQnKSBhbmQgdmFsdWUgPT0gJycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHko
1094
+ J0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHN0YXNoLmlz
1095
+ X2VuYWJsZWQgPT0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBMdXJl
1096
+ IGFsbHJlYWR5IGRpc2FibGVkJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+
1097
+ PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdG
1098
+ T1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9p
1099
+ bnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCBsdXJlX2tleSwgJ2lzX2VuYWJs
1100
+ ZWQnLCAwKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBMdXJlIGRpc2FibGVkJykK
1101
+ ZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdkaXNhYmxl
1102
+ X2x1cmUnLAogIGNhbGxiYWNrID0gZGlzYWJsZV9sdXJlLAogIGRlc2NyaXB0aW9uID0gJ0Rpc2Fi
1103
+ bGUgbHVyZScsCn0pCgotLVtbCiAgRGVsZXRlIGx1cmUKLS1dXQpsb2NhbCBmdW5jdGlvbiBkZWxl
1104
+ dGVfbHVyZShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDYgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAg
1105
+ ICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVu
1106
+ ZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19r
1107
+ ZXkgPSBrZXlzWzJdCiAgbG9jYWwgbHVyZV9rZXkgPSBrZXlzWzNdCiAgbG9jYWwgbHVyZV9wYXRo
1108
+ c19rZXkgPSBrZXlzWzRdCiAgbG9jYWwgbHVyZV9pbmRleF9rZXkgPSBrZXlzWzVdCiAgbG9jYWwg
1109
+ cmVkaXJlY3Rvcl9rZXkgPSBrZXlzWzZdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBh
1110
+ aWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9V
1111
+ TkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycs
1112
+ IGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVw
1113
+ bHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMuY2Fs
1114
+ bCgnRVhJU1RTJywgbHVyZV9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19y
1115
+ ZXBseSgnTk9UX0ZPVU5EIEx1cmUgbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwo
1116
+ J0VYSVNUUycsIHJlZGlyZWN0b3Jfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0
1117
+ dXNfcmVwbHkoJ05PVF9GT1VORCBSZWRpcmVjdG9yIG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2Nh
1118
+ bCBzdGFzaCA9IHsKICAgIGxvY2tfc2VjcmV0ID0gYXJnc1sxXSwKICAgIG9yaWdfbG9ja19zZWNy
1119
+ ZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tleSksCiAgICBsdXJlX2lkID0g
1120
+ cmVkaXMuY2FsbCgnSEdFVCcsIGx1cmVfa2V5LCAnbHVyZV9pZCcpLAogICAgcGF0aCA9IHJlZGlz
1121
+ LmNhbGwoJ0hHRVQnLCBsdXJlX2tleSwgJ3BhdGgnKSwKICAgIHJlZGlyZWN0b3JfaWQgPSByZWRp
1122
+ cy5jYWxsKCdIR0VUJywgbHVyZV9rZXksICdyZWRpcmVjdG9yX2lkJyksCiAgICBvcmlnX3JlZGly
1123
+ ZWN0b3JfaWQgPSByZWRpcy5jYWxsKCdIR0VUJywgcmVkaXJlY3Rvcl9rZXksICdyZWRpcmVjdG9y
1124
+ X2lkJyksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2FsbCgnSEdFVCcsIGx1cmVf
1125
+ a2V5LCAnaXNfZW5hYmxlZCcpKSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rh
1126
+ c2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
1127
+ bHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYKICAgICAgKAog
1128
+ ICAgICAgIGZpZWxkID09ICdsb2NrX3NlY3JldCcKICAgICAgICBvciBmaWVsZCA9PSAnb3JpZ19s
1129
+ b2NrX3NlY3JldCcKICAgICAgICBvciBmaWVsZCA9PSAnbHVyZV9pZCcKICAgICAgICBvciBmaWVs
1130
+ ZCA9PSAncGF0aCcKICAgICAgICBvciBmaWVsZCA9PSAncmVkaXJlY3Rvcl9pZCcKICAgICAgICBv
1131
+ ciBmaWVsZCA9PSAnb3JpZ19yZWRpcmVjdG9yX2lkJwogICAgICApIGFuZCB2YWx1ZSA9PSAnJwog
1132
+ ICAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4n
1133
+ IC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfcmVkaXJlY3Rvcl9pZCB+
1134
+ PSBzdGFzaC5yZWRpcmVjdG9yX2lkIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHko
1135
+ J0ZPUkJJRERFTiBMdXJlIHJlZGlyZWN0b3Igbm90IG1hdGNoJykKICBlbmQKCiAgaWYgc3Rhc2gu
1136
+ aXNfZW5hYmxlZCB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJ
1137
+ RERFTiBMdXJlIG5vdCBkaXNhYmxlZCcpCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNy
1138
+ ZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBs
1139
+ eSgnRk9SQklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0t
1140
+ IFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdERUwnLCBsdXJlX2tleSkKCiAgcmVk
1141
+ aXMuY2FsbCgnSERFTCcsIGx1cmVfcGF0aHNfa2V5LCBzdGFzaC5wYXRoKQoKICByZWRpcy5jYWxs
1142
+ KCdaUkVNJywgbHVyZV9pbmRleF9rZXksIHN0YXNoLmx1cmVfaWQpCgogIHJlZGlzLmNhbGwoJ0hJ
1143
+ TkNSQlknLCByZWRpcmVjdG9yX2tleSwgJ2x1cmVfY291bnQnLCAtMSkKCiAgcmV0dXJuIHJlZGlz
1144
+ LnN0YXR1c19yZXBseSgnT0sgTHVyZSBkZWxldGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5j
1145
+ dGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdkZWxldGVfbHVyZScsCiAgY2FsbGJhY2sgPSBkZWxl
1146
+ dGVfbHVyZSwKICBkZXNjcmlwdGlvbiA9ICdEZWxldGUgbHVyZScsCn0pCg==`,
1147
+ '6-session.lua',
1148
+ `IyFsdWEgbmFtZT1zZXNzaW9uCgotLVtbCiAgQ3JlYXRlIHNlc3Npb24KLS1dXQpsb2NhbCBmdW5j
1149
+ dGlvbiBjcmVhdGVfc2Vzc2lvbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDMgb3IgI2FyZ3Mg
1150
+ fj0gNCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlv
1151
+ biB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgc2Vz
1152
+ c2lvbl9rZXkgPSBrZXlzWzJdCiAgbG9jYWwgZW5hYmxlZF9wcm94eV9pbmRleF9rZXkgPSBrZXlz
1153
+ WzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAg
1154
+ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0
1155
+ cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHNlc3Npb25fa2V5KSB+PSAwIHRo
1156
+ ZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0NPTkZMSUNUIFNlc3Npb24gYWxscmVh
1157
+ ZHkgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBuZXdfc2Vzc2lvbl9leHBp
1158
+ cmUgPSB0b251bWJlcihyZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnbmV3X3Nlc3Np
1159
+ b25fZXhwaXJlJykpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8K
1160
+ ICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJS
1161
+ IFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiBmaWVsZCA9PSAnbmV3X3Nl
1162
+ c3Npb25fZXhwaXJlJyBhbmQgdmFsdWUgPD0gMCB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJv
1163
+ cl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgaWYg
1164
+ cmVkaXMuY2FsbCgnU0NBUkQnLCBlbmFibGVkX3Byb3h5X2luZGV4X2tleSkgPT0gMCB0aGVuCiAg
1165
+ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgTm8gZW5hYmxlZCBwcm94aWVz
1166
+ IGZvdW5kJykKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7CiAgICBjYW1wYWlnbl9pZCA9IGFyZ3Nb
1167
+ MV0sCiAgICBzZXNzaW9uX2lkID0gYXJnc1syXSwKICAgIHByb3h5X2lkID0gcmVkaXMuY2FsbCgn
1168
+ U1JBTkRNRU1CRVInLCBlbmFibGVkX3Byb3h5X2luZGV4X2tleSksCiAgICBzZWNyZXQgPSBhcmdz
1169
+ WzNdLAogICAgaXNfbGFuZGluZyA9IDAsCiAgICBtZXNzYWdlX2NvdW50ID0gMCwKICAgIGNyZWF0
1170
+ ZWRfYXQgPSB0b251bWJlcihhcmdzWzRdKSwKICAgIGxhc3RfYXV0aF9hdCA9IHRvbnVtYmVyKGFy
1171
+ Z3NbNF0pLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlm
1172
+ IG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25n
1173
+ IG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZgogICAgICAoZmllbGQgPT0gJ2NhbXBh
1174
+ aWduX2lkJyBvciBmaWVsZCA9PSAnc2Vzc2lvbl9pZCcgb3IgZmllbGQgPT0gJ3Byb3h5X2lkJyBv
1175
+ ciBmaWVsZCA9PSAnc2VjcmV0JykKICAgICAgYW5kIHZhbHVlID09ICcnCiAgICB0aGVuCiAgICAg
1176
+ IHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIG1vZGVsLicgLi4gZmllbGQpCiAg
1177
+ ICBlbmQKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIGxvY2FsIHN0b3JlID0ge30K
1178
+ CiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIHRhYmxlLmluc2VydChz
1179
+ dG9yZSwgZmllbGQpCiAgICB0YWJsZS5pbnNlcnQoc3RvcmUsIHZhbHVlKQogIGVuZAoKICByZWRp
1180
+ cy5jYWxsKCdIU0VUJywgc2Vzc2lvbl9rZXksIHVucGFjayhzdG9yZSkpCgogIHJlZGlzLmNhbGwo
1181
+ J0hJTkNSQlknLCBjYW1wYWlnbl9rZXksICdzZXNzaW9uX2NvdW50JywgMSkKCiAgcmVkaXMuY2Fs
1182
+ bCgnUEVYUElSRScsIHNlc3Npb25fa2V5LCBzdGFzaC5uZXdfc2Vzc2lvbl9leHBpcmUpCgogIHJl
1183
+ dHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFNlc3Npb24gY3JlYXRlZCcpCmVuZAoKcmVkaXMu
1184
+ cmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAnY3JlYXRlX3Nlc3Npb24nLAog
1185
+ IGNhbGxiYWNrID0gY3JlYXRlX3Nlc3Npb24sCiAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIHNlc3Np
1186
+ b24nLAp9KQoKLS1bWwogIFJlYWQgc2Vzc2lvbgotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRfc2Vz
1187
+ c2lvbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICBy
1188
+ ZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoK
1189
+ ICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgc2Vzc2lvbl9rZXkgPSBrZXlz
1190
+ WzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAg
1191
+ ICByZXR1cm4gbmlsCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHNlc3Npb25fa2V5
1192
+ KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUKICBs
1193
+ b2NhbCB2YWx1ZXMgPSByZWRpcy5jYWxsKAogICAgJ0hNR0VUJywgc2Vzc2lvbl9rZXksCiAgICAn
1194
+ Y2FtcGFpZ25faWQnLAogICAgJ3Nlc3Npb25faWQnLAogICAgJ3Byb3h5X2lkJywKICAgICdzZWNy
1195
+ ZXQnLAogICAgJ2lzX2xhbmRpbmcnLAogICAgJ21lc3NhZ2VfY291bnQnLAogICAgJ2NyZWF0ZWRf
1196
+ YXQnLAogICAgJ2xhc3RfYXV0aF9hdCcKICApCgogIGlmICN2YWx1ZXMgfj0gOCB0aGVuCiAgICBy
1197
+ ZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3JtIHZhbHVlcycpCiAgZW5kCgogIGxv
1198
+ Y2FsIG1vZGVsID0gewogICAgY2FtcGFpZ25faWQgPSB2YWx1ZXNbMV0sCiAgICBzZXNzaW9uX2lk
1199
+ ID0gdmFsdWVzWzJdLAogICAgcHJveHlfaWQgPSB2YWx1ZXNbM10sCiAgICBzZWNyZXQgPSB2YWx1
1200
+ ZXNbNF0sCiAgICBpc19sYW5kaW5nID0gdG9udW1iZXIodmFsdWVzWzVdKSwKICAgIG1lc3NhZ2Vf
1201
+ Y291bnQgPSB0b251bWJlcih2YWx1ZXNbNl0pLAogICAgY3JlYXRlZF9hdCA9IHRvbnVtYmVyKHZh
1202
+ bHVlc1s3XSksCiAgICBsYXN0X2F1dGhfYXQgPSB0b251bWJlcih2YWx1ZXNbOF0pLAogIH0KCiAg
1203
+ Zm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVu
1204
+ CiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwuJyAuLiBm
1205
+ aWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoKcmVkaXMu
1206
+ cmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9zZXNzaW9uJywKICBj
1207
+ YWxsYmFjayA9IHJlYWRfc2Vzc2lvbiwKICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwKICBkZXNj
1208
+ cmlwdGlvbiA9ICdSZWFkIHNlc3Npb24nLAp9KQoKLS1bWwogIEF1dGggc2Vzc2lvbgotLV1dCmxv
1209
+ Y2FsIGZ1bmN0aW9uIGF1dGhfc2Vzc2lvbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDMgb3Ig
1210
+ I2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBm
1211
+ dW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9j
1212
+ YWwgc2Vzc2lvbl9rZXkgPSBrZXlzWzJdCiAgbG9jYWwgZW5hYmxlZF9wcm94eV9pbmRleF9rZXkg
1213
+ PSBrZXlzWzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0
1214
+ aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90
1215
+ IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHNlc3Npb25fa2V5KSB+
1216
+ PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBTZXNzaW9u
1217
+ IG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGxhc3RfYXV0aF9hdCA9
1218
+ IHRvbnVtYmVyKGFyZ3NbMV0pLAogICAgcHJveHlfaWQgPSByZWRpcy5jYWxsKCdIR0VUJywgc2Vz
1219
+ c2lvbl9rZXksICdwcm94eV9pZCcpLAogICAgc2Vzc2lvbl9leHBpcmUgPSB0b251bWJlcihyZWRp
1220
+ cy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnc2Vzc2lvbl9leHBpcmUnKSksCiAgfQoKICBm
1221
+ b3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4K
1222
+ ICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVs
1223
+ ZCkKICAgIGVuZAoKICAgIGlmIGZpZWxkID09ICdwcm94eV9pZCcgYW5kIHZhbHVlID09ICcnIHRo
1224
+ ZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBm
1225
+ aWVsZCkKICAgIGVuZAoKICAgIGlmIGZpZWxkID09ICdzZXNzaW9uX2V4cGlyZScgYW5kIHZhbHVl
1226
+ IDw9IDAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFz
1227
+ aC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ1NDQVJEJywgZW5h
1228
+ YmxlZF9wcm94eV9pbmRleF9rZXkpID09IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19y
1229
+ ZXBseSgnTk9UX0ZPVU5EIE5vIGVuYWJsZWQgcHJveGllcyBmb3VuZCcpCiAgZW5kCgogIC0tIFBv
1230
+ aW50IG9mIG5vIHJldHVybgoKICBpZiByZWRpcy5jYWxsKCdTSVNNRU1CRVInLCBlbmFibGVkX3By
1231
+ b3h5X2luZGV4X2tleSwgc3Rhc2gucHJveHlfaWQpID09IDAgdGhlbgogICAgbG9jYWwgZW5hYmxl
1232
+ ZF9wcm94eV9pZCA9IHJlZGlzLmNhbGwoJ1NSQU5ETUVNQkVSJywgZW5hYmxlZF9wcm94eV9pbmRl
1233
+ eF9rZXkpCgogICAgaWYgbm90IGVuYWJsZWRfcHJveHlfaWQgb3IgZW5hYmxlZF9wcm94eV9pZCA9
1234
+ PSAnJyB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGVuYWJs
1235
+ ZWRfcHJveHlfaWQnKQogICAgZW5kCgogICAgLS0gc3R5bHVhOiBpZ25vcmUKICAgIHJlZGlzLmNh
1236
+ bGwoCiAgICAgICdIU0VUJywgc2Vzc2lvbl9rZXksCiAgICAgICdwcm94eV9pZCcsIGVuYWJsZWRf
1237
+ cHJveHlfaWQsCiAgICAgICdsYXN0X2F1dGhfYXQnLCBzdGFzaC5sYXN0X2F1dGhfYXQKICAgICkK
1238
+ ICBlbHNlCiAgICByZWRpcy5jYWxsKCdIU0VUJywgc2Vzc2lvbl9rZXksICdsYXN0X2F1dGhfYXQn
1239
+ LCBzdGFzaC5sYXN0X2F1dGhfYXQpCiAgZW5kCgogIHJlZGlzLmNhbGwoJ1BFWFBJUkUnLCBzZXNz
1240
+ aW9uX2tleSwgc3Rhc2guc2Vzc2lvbl9leHBpcmUpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVw
1241
+ bHkoJ09LIFNlc3Npb24gYXV0aG9yaXplZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24o
1242
+ ewogIGZ1bmN0aW9uX25hbWUgPSAnYXV0aF9zZXNzaW9uJywKICBjYWxsYmFjayA9IGF1dGhfc2Vz
1243
+ c2lvbiwKICBkZXNjcmlwdGlvbiA9ICdBdXRoIHNlc3Npb24nLAp9KQoKLS1bWwogIFVwZ3JhZGUg
1244
+ c2Vzc2lvbgotLV1dCmxvY2FsIGZ1bmN0aW9uIHVwZ3JhZGVfc2Vzc2lvbihrZXlzLCBhcmdzKQog
1245
+ IGlmICNrZXlzIH49IDMgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3Jf
1246
+ cmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9r
1247
+ ZXkgPSBrZXlzWzFdCiAgbG9jYWwgbHVyZV9rZXkgPSBrZXlzWzJdCiAgbG9jYWwgc2Vzc2lvbl9r
1248
+ ZXkgPSBrZXlzWzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0g
1249
+ MSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24g
1250
+ bm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGx1cmVfa2V5KSB+
1251
+ PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBMdXJlIG5v
1252
+ dCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBzZXNzaW9uX2tleSkg
1253
+ fj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gU2Vzc2lv
1254
+ biBub3QgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBzZWNyZXQgPSBhcmdz
1255
+ WzFdLAogICAgb3JpZ19zZWNyZXQgPSByZWRpcy5jYWxsKCdIR0VUJywgc2Vzc2lvbl9rZXksICdz
1256
+ ZWNyZXQnKSwKICAgIGlzX2xhbmRpbmcgPSB0b251bWJlcihyZWRpcy5jYWxsKCdIR0VUJywgc2Vz
1257
+ c2lvbl9rZXksICdpc19sYW5kaW5nJykpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWly
1258
+ cyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJv
1259
+ cl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiAoZmll
1260
+ bGQgPT0gJ3NlY3JldCcgb3IgZmllbGQgPT0gJ29yaWdfc2VjcmV0JykgYW5kIHZhbHVlID09ICcn
1261
+ IHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAu
1262
+ LiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBzdGFzaC5vcmlnX3NlY3JldCB+PSBzdGFzaC5z
1263
+ ZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIFNlc3Np
1264
+ b24gc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIGlmIHN0YXNoLmlzX2xhbmRpbmcgfj0gMCB0
1265
+ aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBTZXNzaW9uIGFsbHJlYWR5IHVw
1266
+ Z3JhZGVkJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNhbGwoJ0hT
1267
+ RVQnLCBzZXNzaW9uX2tleSwgJ2lzX2xhbmRpbmcnLCAxKQoKICByZWRpcy5jYWxsKCdISU5DUkJZ
1268
+ JywgbHVyZV9rZXksICdzZXNzaW9uX2NvdW50JywgMSkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19y
1269
+ ZXBseSgnT0sgU2Vzc2lvbiB1cGdyYWRlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24o
1270
+ ewogIGZ1bmN0aW9uX25hbWUgPSAndXBncmFkZV9zZXNzaW9uJywKICBjYWxsYmFjayA9IHVwZ3Jh
1271
+ ZGVfc2Vzc2lvbiwKICBkZXNjcmlwdGlvbiA9ICdVcGdyYWRlIHNlc3Npb24nLAp9KQo=`,
1272
+ '7-message.lua',
1273
+ `IyFsdWEgbmFtZT1tZXNzYWdlCgotLVtbCiAgQ3JlYXRlIG1lc3NhZ2UKLS1dXQpsb2NhbCBmdW5j
1274
+ dGlvbiBjcmVhdGVfbWVzc2FnZShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDUgb3IgI2FyZ3Mg
1275
+ fj0gMjAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rp
1276
+ b24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIG1l
1277
+ c3NhZ2Vfa2V5ID0ga2V5c1syXQogIGxvY2FsIHByb3h5X2tleSA9IGtleXNbM10KICBsb2NhbCB0
1278
+ YXJnZXRfa2V5ID0ga2V5c1s0XQogIGxvY2FsIHNlc3Npb25fa2V5ID0ga2V5c1s1XQoKICBpZiBy
1279
+ ZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJl
1280
+ ZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQogIGVuZAoK
1281
+ ICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBtZXNzYWdlX2tleSkgfj0gMCB0aGVuCiAgICByZXR1
1282
+ cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdDT05GTElDVCBNZXNzYWdlIGFsbHJlYWR5IGV4aXN0cycp
1283
+ CiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHByb3h5X2tleSkgfj0gMSB0aGVuCiAg
1284
+ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUHJveHkgbm90IGV4aXN0cycp
1285
+ CiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHRhcmdldF9rZXkpIH49IDEgdGhlbgog
1286
+ ICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFRhcmdldCBub3QgZXhpc3Rz
1287
+ JykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgc2Vzc2lvbl9rZXkpIH49IDEgdGhl
1288
+ bgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFNlc3Npb24gbm90IGV4
1289
+ aXN0cycpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbWVzc2FnZV9leHBpcmUgPSB0b251
1290
+ bWJlcihyZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnbWVzc2FnZV9leHBpcmUnKSks
1291
+ CiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZh
1292
+ bHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2gu
1293
+ JyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmIGZpZWxkID09ICdtZXNzYWdlX2V4cGlyZScgYW5k
1294
+ IHZhbHVlIDw9IDAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
1295
+ ZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGxvY2FsIG1vZGVsID0gewogICAg
1296
+ Y2FtcGFpZ25faWQgPSBhcmdzWzFdLAogICAgbWVzc2FnZV9pZCA9IGFyZ3NbMl0sCiAgICBwcm94
1297
+ eV9pZCA9IGFyZ3NbM10sCiAgICB0YXJnZXRfaWQgPSBhcmdzWzRdLAogICAgc2Vzc2lvbl9pZCA9
1298
+ IGFyZ3NbNV0sCiAgICBraW5kID0gYXJnc1s2XSwKICAgIG1ldGhvZCA9IGFyZ3NbN10sCiAgICB1
1299
+ cmwgPSBhcmdzWzhdLAogICAgcmVxdWVzdF9oZWFkZXJzID0gYXJnc1s5XSwKICAgIHJlcXVlc3Rf
1300
+ Ym9keSA9IGFyZ3NbMTBdLAogICAgc3RhdHVzID0gdG9udW1iZXIoYXJnc1sxMV0pLAogICAgcmVz
1301
+ cG9uc2VfaGVhZGVycyA9IGFyZ3NbMTJdLAogICAgcmVzcG9uc2VfYm9keSA9IGFyZ3NbMTNdLAog
1302
+ ICAgY29ubmVjdGlvbiA9IGFyZ3NbMTRdLAogICAgcGF5bG9hZCA9IGFyZ3NbMTVdLAogICAgZXJy
1303
+ b3JzID0gYXJnc1sxNl0sCiAgICBwcm9jZXNzb3IgPSBhcmdzWzE3XSwKICAgIHN0YXJ0X3RpbWUg
1304
+ PSB0b251bWJlcihhcmdzWzE4XSksCiAgICBmaW5pc2hfdGltZSA9IHRvbnVtYmVyKGFyZ3NbMTld
1305
+ KSwKICAgIGNyZWF0ZWRfYXQgPSB0b251bWJlcihhcmdzWzIwXSksCiAgfQoKICBmb3IgZmllbGQs
1306
+ IHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0
1307
+ dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVu
1308
+ ZAoKICAgIGlmCiAgICAgICgKICAgICAgICBmaWVsZCA9PSAnY2FtcGFpZ25faWQnCiAgICAgICAg
1309
+ b3IgZmllbGQgPT0gJ21lc3NhZ2VfaWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ3Byb3h5X2lkJwog
1310
+ ICAgICAgIG9yIGZpZWxkID09ICd0YXJnZXRfaWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ3Nlc3Np
1311
+ b25faWQnCiAgICAgICkgYW5kIHZhbHVlID09ICcnCiAgICB0aGVuCiAgICAgIHJldHVybiByZWRp
1312
+ cy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQK
1313
+ CiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIGxvY2FsIHN0b3JlID0ge30KCiAgZm9yIGZpZWxk
1314
+ LCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIHRhYmxlLmluc2VydChzdG9yZSwgZmllbGQp
1315
+ CiAgICB0YWJsZS5pbnNlcnQoc3RvcmUsIHZhbHVlKQogIGVuZAoKICByZWRpcy5jYWxsKCdIU0VU
1316
+ JywgbWVzc2FnZV9rZXksIHVucGFjayhzdG9yZSkpCgogIHJlZGlzLmNhbGwoJ0hJTkNSQlknLCBj
1317
+ YW1wYWlnbl9rZXksICdtZXNzYWdlX2NvdW50JywgMSkKICByZWRpcy5jYWxsKCdISU5DUkJZJywg
1318
+ cHJveHlfa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCiAgcmVkaXMuY2FsbCgnSElOQ1JCWScsIHRh
1319
+ cmdldF9rZXksICdtZXNzYWdlX2NvdW50JywgMSkKICByZWRpcy5jYWxsKCdISU5DUkJZJywgc2Vz
1320
+ c2lvbl9rZXksICdtZXNzYWdlX2NvdW50JywgMSkKCiAgcmVkaXMuY2FsbCgnUEVYUElSRScsIG1l
1321
+ c3NhZ2Vfa2V5LCBzdGFzaC5tZXNzYWdlX2V4cGlyZSkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19y
1322
+ ZXBseSgnT0sgTWVzc2FnZSBjcmVhdGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7
1323
+ CiAgZnVuY3Rpb25fbmFtZSA9ICdjcmVhdGVfbWVzc2FnZScsCiAgY2FsbGJhY2sgPSBjcmVhdGVf
1324
+ bWVzc2FnZSwKICBkZXNjcmlwdGlvbiA9ICdDcmVhdGUgbWVzc2FnZScsCn0pCgotLVtbCiAgUmVh
1325
+ ZCBtZXNzYWdlCi0tXV0KbG9jYWwgZnVuY3Rpb24gcmVhZF9tZXNzYWdlKGtleXMsIGFyZ3MpCiAg
1326
+ aWYgI2tleXMgfj0gMiBvciAjYXJncyB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9y
1327
+ ZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tl
1328
+ eSA9IGtleXNbMV0KICBsb2NhbCBtZXNzYWdlX2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2Fs
1329
+ bCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQK
1330
+ CiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgbWVzc2FnZV9rZXkpIH49IDEgdGhlbgogICAgcmV0
1331
+ dXJuIG5pbAogIGVuZAoKICAtLSBzdHlsdWE6IGlnbm9yZQogIGxvY2FsIHZhbHVlcyA9IHJlZGlz
1332
+ LmNhbGwoCiAgICAnSE1HRVQnLCBtZXNzYWdlX2tleSwKICAgICdjYW1wYWlnbl9pZCcsCiAgICAn
1333
+ bWVzc2FnZV9pZCcsCiAgICAncHJveHlfaWQnLAogICAgJ3RhcmdldF9pZCcsCiAgICAnc2Vzc2lv
1334
+ bl9pZCcsCiAgICAna2luZCcsCiAgICAnbWV0aG9kJywKICAgICd1cmwnLAogICAgJ3N0YXR1cycs
1335
+ CiAgICAncHJvY2Vzc29yJywKICAgICdzdGFydF90aW1lJywKICAgICdmaW5pc2hfdGltZScsCiAg
1336
+ ICAnY3JlYXRlZF9hdCcKICApCgogIGlmICN2YWx1ZXMgfj0gMTMgdGhlbgogICAgcmV0dXJuIHJl
1337
+ ZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoKICBsb2NhbCBtb2Rl
1338
+ bCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgbWVzc2FnZV9pZCA9IHZhbHVl
1339
+ c1syXSwKICAgIHByb3h5X2lkID0gdmFsdWVzWzNdLAogICAgdGFyZ2V0X2lkID0gdmFsdWVzWzRd
1340
+ LAogICAgc2Vzc2lvbl9pZCA9IHZhbHVlc1s1XSwKICAgIGtpbmQgPSB2YWx1ZXNbNl0sCiAgICBt
1341
+ ZXRob2QgPSB2YWx1ZXNbN10sCiAgICB1cmwgPSB2YWx1ZXNbOF0sCiAgICBzdGF0dXMgPSB0b251
1342
+ bWJlcih2YWx1ZXNbOV0pLAogICAgcHJvY2Vzc29yID0gdmFsdWVzWzEwXSwKICAgIHN0YXJ0X3Rp
1343
+ bWUgPSB0b251bWJlcih2YWx1ZXNbMTFdKSwKICAgIGZpbmlzaF90aW1lID0gdG9udW1iZXIodmFs
1344
+ dWVzWzEyXSksCiAgICBjcmVhdGVkX2F0ID0gdG9udW1iZXIodmFsdWVzWzEzXSksCiAgfQoKICBm
1345
+ b3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4K
1346
+ ICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSBtb2RlbC4nIC4uIGZp
1347
+ ZWxkKQogICAgZW5kCiAgZW5kCgogIHJldHVybiB7IG1hcCA9IG1vZGVsIH0KZW5kCgpyZWRpcy5y
1348
+ ZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdyZWFkX21lc3NhZ2UnLAogIGNh
1349
+ bGxiYWNrID0gcmVhZF9tZXNzYWdlLAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9LAogIGRlc2Ny
1350
+ aXB0aW9uID0gJ1JlYWQgbWVzc2FnZScsCn0pCgotLVtbCiAgUmVhZCBmdWxsIG1lc3NhZ2UKLS1d
1351
+ XQpsb2NhbCBmdW5jdGlvbiByZWFkX2Z1bGxfbWVzc2FnZShrZXlzLCBhcmdzKQogIGlmICNrZXlz
1352
+ IH49IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VS
1353
+ UiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlz
1354
+ WzFdCiAgbG9jYWwgbWVzc2FnZV9rZXkgPSBrZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
1355
+ UycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIGlmIHJl
1356
+ ZGlzLmNhbGwoJ0VYSVNUUycsIG1lc3NhZ2Vfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwK
1357
+ ICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUKICBsb2NhbCB2YWx1ZXMgPSByZWRpcy5jYWxsKAog
1358
+ ICAgJ0hNR0VUJywgbWVzc2FnZV9rZXksCiAgICAnY2FtcGFpZ25faWQnLAogICAgJ21lc3NhZ2Vf
1359
+ aWQnLAogICAgJ3Byb3h5X2lkJywKICAgICd0YXJnZXRfaWQnLAogICAgJ3Nlc3Npb25faWQnLAog
1360
+ ICAgJ2tpbmQnLAogICAgJ21ldGhvZCcsCiAgICAndXJsJywKICAgICdyZXF1ZXN0X2hlYWRlcnMn
1361
+ LAogICAgJ3JlcXVlc3RfYm9keScsCiAgICAnc3RhdHVzJywKICAgICdyZXNwb25zZV9oZWFkZXJz
1362
+ JywKICAgICdyZXNwb25zZV9ib2R5JywKICAgICdjb25uZWN0aW9uJywKICAgICdwYXlsb2FkJywK
1363
+ ICAgICdlcnJvcnMnLAogICAgJ3Byb2Nlc3NvcicsCiAgICAnc3RhcnRfdGltZScsCiAgICAnZmlu
1364
+ aXNoX3RpbWUnLAogICAgJ2NyZWF0ZWRfYXQnCiAgKQoKICBpZiAjdmFsdWVzIH49IDIwIHRoZW4K
1365
+ ICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0gdmFsdWVzJykKICBlbmQK
1366
+ CiAgbG9jYWwgbW9kZWwgPSB7CiAgICBjYW1wYWlnbl9pZCA9IHZhbHVlc1sxXSwKICAgIG1lc3Nh
1367
+ Z2VfaWQgPSB2YWx1ZXNbMl0sCiAgICBwcm94eV9pZCA9IHZhbHVlc1szXSwKICAgIHRhcmdldF9p
1368
+ ZCA9IHZhbHVlc1s0XSwKICAgIHNlc3Npb25faWQgPSB2YWx1ZXNbNV0sCiAgICBraW5kID0gdmFs
1369
+ dWVzWzZdLAogICAgbWV0aG9kID0gdmFsdWVzWzddLAogICAgdXJsID0gdmFsdWVzWzhdLAogICAg
1370
+ cmVxdWVzdF9oZWFkZXJzID0gdmFsdWVzWzldLAogICAgcmVxdWVzdF9ib2R5ID0gdmFsdWVzWzEw
1371
+ XSwKICAgIHN0YXR1cyA9IHRvbnVtYmVyKHZhbHVlc1sxMV0pLAogICAgcmVzcG9uc2VfaGVhZGVy
1372
+ cyA9IHZhbHVlc1sxMl0sCiAgICByZXNwb25zZV9ib2R5ID0gdmFsdWVzWzEzXSwKICAgIGNvbm5l
1373
+ Y3Rpb24gPSB2YWx1ZXNbMTRdLAogICAgcGF5bG9hZCA9IHZhbHVlc1sxNV0sCiAgICBlcnJvcnMg
1374
+ PSB2YWx1ZXNbMTZdLAogICAgcHJvY2Vzc29yID0gdmFsdWVzWzE3XSwKICAgIHN0YXJ0X3RpbWUg
1375
+ PSB0b251bWJlcih2YWx1ZXNbMThdKSwKICAgIGZpbmlzaF90aW1lID0gdG9udW1iZXIodmFsdWVz
1376
+ WzE5XSksCiAgICBjcmVhdGVkX2F0ID0gdG9udW1iZXIodmFsdWVzWzIwXSksCiAgfQoKICBmb3Ig
1377
+ ZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAg
1378
+ ICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSBtb2RlbC4nIC4uIGZpZWxk
1379
+ KQogICAgZW5kCiAgZW5kCgogIHJldHVybiB7IG1hcCA9IG1vZGVsIH0KZW5kCgpyZWRpcy5yZWdp
1380
+ c3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdyZWFkX2Z1bGxfbWVzc2FnZScsCiAg
1381
+ Y2FsbGJhY2sgPSByZWFkX2Z1bGxfbWVzc2FnZSwKICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwK
1382
+ ICBkZXNjcmlwdGlvbiA9ICdSZWFkIGZ1bGwgbWVzc2FnZScsCn0pCg==`,
1383
+ ];
1384
+ export function makeRedisFunctions() {
1385
+ const entries = [];
1386
+ for (let idx = 0; idx < REDIS_FUNCTIONS.length; idx += 2) {
1387
+ const name = REDIS_FUNCTIONS[idx];
1388
+ const body = REDIS_FUNCTIONS[idx + 1];
1389
+ if (name && body) {
1390
+ const data = Buffer.from(body, 'base64').toString();
1391
+ entries.push([name, data]);
1392
+ }
1393
+ }
1394
+ return entries;
1395
+ }
1396
+ //# sourceMappingURL=redis-functions.js.map