@famir/database 0.0.1 → 0.0.2

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 (85) hide show
  1. package/README.md +1 -1
  2. package/dist/database.d.ts +1 -1
  3. package/dist/database.error.js.map +1 -1
  4. package/dist/database.functions.d.ts +29 -14
  5. package/dist/database.js.map +1 -1
  6. package/dist/database.keys.d.ts +5 -4
  7. package/dist/database.keys.js +11 -8
  8. package/dist/database.keys.js.map +1 -1
  9. package/dist/database.schemas.js +1 -5
  10. package/dist/database.schemas.js.map +1 -1
  11. package/dist/models/campaign/campaign.js.map +1 -1
  12. package/dist/models/lure/lure.js.map +1 -1
  13. package/dist/models/message/message.d.ts +12 -21
  14. package/dist/models/message/message.js +5 -7
  15. package/dist/models/message/message.js.map +1 -1
  16. package/dist/models/proxy/proxy.js.map +1 -1
  17. package/dist/models/redirector/redirector.js.map +1 -1
  18. package/dist/models/session/session.d.ts +3 -3
  19. package/dist/models/session/session.js +5 -5
  20. package/dist/models/session/session.js.map +1 -1
  21. package/dist/models/target/target.d.ts +6 -3
  22. package/dist/models/target/target.js +8 -5
  23. package/dist/models/target/target.js.map +1 -1
  24. package/dist/redis-database-connector.d.ts +2 -2
  25. package/dist/redis-database-connector.js +4 -4
  26. package/dist/redis-database-connector.js.map +1 -1
  27. package/dist/redis-database-manager.d.ts +1 -1
  28. package/dist/redis-database-manager.js +2 -2
  29. package/dist/redis-database-manager.js.map +1 -1
  30. package/dist/redis-functions.js +1003 -943
  31. package/dist/redis-functions.js.map +1 -1
  32. package/dist/repositories/base/redis-base.repository.js.map +1 -1
  33. package/dist/repositories/campaign/campaign.d.ts +5 -0
  34. package/dist/repositories/campaign/campaign.functions.d.ts +15 -5
  35. package/dist/repositories/campaign/campaign.functions.js +30 -14
  36. package/dist/repositories/campaign/campaign.functions.js.map +1 -1
  37. package/dist/repositories/campaign/redis-campaign.repository.d.ts +3 -2
  38. package/dist/repositories/campaign/redis-campaign.repository.js +22 -5
  39. package/dist/repositories/campaign/redis-campaign.repository.js.map +1 -1
  40. package/dist/repositories/lure/lure.functions.d.ts +1 -1
  41. package/dist/repositories/lure/lure.functions.js +2 -2
  42. package/dist/repositories/lure/lure.functions.js.map +1 -1
  43. package/dist/repositories/lure/redis-lure.repository.d.ts +1 -1
  44. package/dist/repositories/lure/redis-lure.repository.js +3 -3
  45. package/dist/repositories/lure/redis-lure.repository.js.map +1 -1
  46. package/dist/repositories/message/message.d.ts +6 -3
  47. package/dist/repositories/message/message.functions.d.ts +7 -2
  48. package/dist/repositories/message/message.functions.js +17 -6
  49. package/dist/repositories/message/message.functions.js.map +1 -1
  50. package/dist/repositories/message/message.schemas.js +11 -57
  51. package/dist/repositories/message/message.schemas.js.map +1 -1
  52. package/dist/repositories/message/redis-message.repository.d.ts +11 -9
  53. package/dist/repositories/message/redis-message.repository.js +30 -7
  54. package/dist/repositories/message/redis-message.repository.js.map +1 -1
  55. package/dist/repositories/proxy/proxy.functions.d.ts +1 -1
  56. package/dist/repositories/proxy/proxy.functions.js +5 -5
  57. package/dist/repositories/proxy/proxy.functions.js.map +1 -1
  58. package/dist/repositories/proxy/redis-proxy.repository.d.ts +1 -1
  59. package/dist/repositories/proxy/redis-proxy.repository.js +3 -3
  60. package/dist/repositories/proxy/redis-proxy.repository.js.map +1 -1
  61. package/dist/repositories/redirector/redirector.functions.d.ts +2 -2
  62. package/dist/repositories/redirector/redirector.functions.js +2 -2
  63. package/dist/repositories/redirector/redirector.functions.js.map +1 -1
  64. package/dist/repositories/redirector/redis-redirector.repository.d.ts +1 -1
  65. package/dist/repositories/redirector/redis-redirector.repository.js +4 -4
  66. package/dist/repositories/redirector/redis-redirector.repository.js.map +1 -1
  67. package/dist/repositories/session/redis-session.repository.d.ts +1 -1
  68. package/dist/repositories/session/redis-session.repository.js +5 -5
  69. package/dist/repositories/session/redis-session.repository.js.map +1 -1
  70. package/dist/repositories/session/session.functions.d.ts +4 -4
  71. package/dist/repositories/session/session.functions.js +4 -4
  72. package/dist/repositories/session/session.functions.js.map +1 -1
  73. package/dist/repositories/session/session.schemas.js +4 -4
  74. package/dist/repositories/session/session.schemas.js.map +1 -1
  75. package/dist/repositories/target/redis-target.repository.d.ts +4 -4
  76. package/dist/repositories/target/redis-target.repository.js +10 -8
  77. package/dist/repositories/target/redis-target.repository.js.map +1 -1
  78. package/dist/repositories/target/target.d.ts +3 -3
  79. package/dist/repositories/target/target.functions.d.ts +4 -3
  80. package/dist/repositories/target/target.functions.js +28 -23
  81. package/dist/repositories/target/target.functions.js.map +1 -1
  82. package/dist/repositories/target/target.schemas.d.ts +3 -1
  83. package/dist/repositories/target/target.schemas.js +19 -9
  84. package/dist/repositories/target/target.schemas.js.map +1 -1
  85. package/package.json +1 -1
@@ -1,799 +1,832 @@
1
1
  const REDIS_FUNCTIONS = [
2
2
  '1-campaign.lua',
3
3
  `IyFsdWEgbmFtZT1jYW1wYWlnbgoKLS1bWwogIENyZWF0ZSBjYW1wYWlnbgotLV1dCmxvY2FsIGZ1
4
- bmN0aW9uIGNyZWF0ZV9jYW1wYWlnbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDMgb3IgI2Fy
4
+ bmN0aW9uIGNyZWF0ZV9jYW1wYWlnbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDQgb3IgI2Fy
5
5
  Z3Mgfj0gMTAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVu
6
6
  Y3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2Fs
7
- IGNhbXBhaWduX3VuaXF1ZV9taXJyb3JfZG9tYWluX2tleSA9IGtleXNbMl0KICBsb2NhbCBjYW1w
8
- YWlnbl9pbmRleF9rZXkgPSBrZXlzWzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBh
9
- aWduX2tleSkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdDT05GTElD
10
- VCBDYW1wYWlnbiBhbGxyZWFkeSBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAg
11
- IGNhbXBhaWduX2lkID0gYXJnc1sxXSwKICAgIG1pcnJvcl9kb21haW4gPSBhcmdzWzJdLAogICAg
12
- ZGVzY3JpcHRpb24gPSBhcmdzWzNdLAogICAgY3J5cHRfc2VjcmV0ID0gYXJnc1s0XSwKICAgIGxh
13
- bmRpbmdfdXBncmFkZV9wYXRoID0gYXJnc1s1XSwKICAgIHNlc3Npb25fY29va2llX25hbWUgPSBh
14
- cmdzWzZdLAogICAgc2Vzc2lvbl9leHBpcmUgPSB0b251bWJlcihhcmdzWzddKSwKICAgIG5ld19z
15
- ZXNzaW9uX2V4cGlyZSA9IHRvbnVtYmVyKGFyZ3NbOF0pLAogICAgbWVzc2FnZV9leHBpcmUgPSB0
16
- b251bWJlcihhcmdzWzldKSwKICAgIHNlc3Npb25fY291bnQgPSAwLAogICAgbWVzc2FnZV9jb3Vu
17
- dCA9IDAsCiAgICBjcmVhdGVkX2F0ID0gdG9udW1iZXIoYXJnc1sxMF0pLAogIH0KCiAgZm9yIGZp
7
+ IGNhbXBhaWduX21pcnJvcl9kb21haW5zX2tleSA9IGtleXNbMl0KICBsb2NhbCBjYW1wYWlnbl9z
8
+ ZXNzaW9uX2Nvb2tpZV9uYW1lc19rZXkgPSBrZXlzWzNdCiAgbG9jYWwgY2FtcGFpZ25faW5kZXhf
9
+ a2V5ID0ga2V5c1s0XQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49
10
+ IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgQ2FtcGFpZ24g
11
+ YWxscmVhZHkgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7CiAgICBjYW1wYWlnbl9p
12
+ ZCA9IGFyZ3NbMV0sCiAgICBtaXJyb3JfZG9tYWluID0gYXJnc1syXSwKICAgIGRlc2NyaXB0aW9u
13
+ ID0gYXJnc1szXSwKICAgIGNyeXB0X3NlY3JldCA9IGFyZ3NbNF0sCiAgICBsYW5kaW5nX3VwZ3Jh
14
+ ZGVfcGF0aCA9IGFyZ3NbNV0sCiAgICBzZXNzaW9uX2Nvb2tpZV9uYW1lID0gYXJnc1s2XSwKICAg
15
+ IHNlc3Npb25fZXhwaXJlID0gdG9udW1iZXIoYXJnc1s3XSksCiAgICBuZXdfc2Vzc2lvbl9leHBp
16
+ cmUgPSB0b251bWJlcihhcmdzWzhdKSwKICAgIG1lc3NhZ2VfZXhwaXJlID0gdG9udW1iZXIoYXJn
17
+ c1s5XSksCiAgICBzZXNzaW9uX2NvdW50ID0gMCwKICAgIG1lc3NhZ2VfY291bnQgPSAwLAogICAg
18
+ Y3JlYXRlZF9hdCA9IHRvbnVtYmVyKGFyZ3NbMTBdKSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUg
19
+ aW4gcGFpcnMobW9kZWwpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVk
20
+ aXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAg
21
+ aWYKICAgICAgKAogICAgICAgIGZpZWxkID09ICdjYW1wYWlnbl9pZCcKICAgICAgICBvciBmaWVs
22
+ ZCA9PSAnbWlycm9yX2RvbWFpbicKICAgICAgICBvciBmaWVsZCA9PSAnY3J5cHRfc2VjcmV0Jwog
23
+ ICAgICAgIG9yIGZpZWxkID09ICdsYW5kaW5nX3VwZ3JhZGVfcGF0aCcKICAgICAgICBvciBmaWVs
24
+ ZCA9PSAnc2Vzc2lvbl9jb29raWVfbmFtZScKICAgICAgKSBhbmQgdmFsdWUgPT0gJycKICAgIHRo
25
+ ZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9kZWwuJyAuLiBm
26
+ aWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAgIChmaWVsZCA9PSAnc2Vzc2lvbl9leHBpcmUnIG9y
27
+ IGZpZWxkID09ICduZXdfc2Vzc2lvbl9leHBpcmUnIG9yIGZpZWxkID09ICdtZXNzYWdlX2V4cGly
28
+ ZScpCiAgICAgIGFuZCB2YWx1ZSA8PSAwCiAgICB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJv
29
+ cl9yZXBseSgnRVJSIFdyb25nIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgaWYg
30
+ cmVkaXMuY2FsbCgnU0lTTUVNQkVSJywgY2FtcGFpZ25fbWlycm9yX2RvbWFpbnNfa2V5LCBtb2Rl
31
+ bC5taXJyb3JfZG9tYWluKSB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHko
32
+ J0NPTkZMSUNUIENhbXBhaWduIG1pcnJvcl9kb21haW4gYWxscmVhZHkgdGFrZW4nKQogIGVuZAoK
33
+ ICBpZiByZWRpcy5jYWxsKCdTSVNNRU1CRVInLCBjYW1wYWlnbl9zZXNzaW9uX2Nvb2tpZV9uYW1l
34
+ c19rZXksIG1vZGVsLnNlc3Npb25fY29va2llX25hbWUpIH49IDAgdGhlbgogICAgcmV0dXJuIHJl
35
+ ZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgQ2FtcGFpZ24gc2Vzc2lvbl9jb29raWVfbmFtZSBh
36
+ bGxyZWFkeSB0YWtlbicpCiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICBsb2NhbCBz
37
+ dG9yZSA9IHt9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwpIGRvCiAgICB0YWJs
38
+ ZS5pbnNlcnQoc3RvcmUsIGZpZWxkKQogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCB2YWx1ZSkKICBl
39
+ bmQKCiAgcmVkaXMuY2FsbCgnSFNFVCcsIGNhbXBhaWduX2tleSwgdW5wYWNrKHN0b3JlKSkKCiAg
40
+ cmVkaXMuY2FsbCgnU0FERCcsIGNhbXBhaWduX21pcnJvcl9kb21haW5zX2tleSwgbW9kZWwubWly
41
+ cm9yX2RvbWFpbikKCiAgcmVkaXMuY2FsbCgnU0FERCcsIGNhbXBhaWduX3Nlc3Npb25fY29va2ll
42
+ X25hbWVzX2tleSwgbW9kZWwuc2Vzc2lvbl9jb29raWVfbmFtZSkKCiAgcmVkaXMuY2FsbCgnWkFE
43
+ RCcsIGNhbXBhaWduX2luZGV4X2tleSwgbW9kZWwuY3JlYXRlZF9hdCwgbW9kZWwuY2FtcGFpZ25f
44
+ aWQpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIENhbXBhaWduIGNyZWF0ZWQnKQpl
45
+ bmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2NyZWF0ZV9j
46
+ YW1wYWlnbicsCiAgY2FsbGJhY2sgPSBjcmVhdGVfY2FtcGFpZ24sCiAgZGVzY3JpcHRpb24gPSAn
47
+ Q3JlYXRlIGNhbXBhaWduJywKfSkKCi0tW1sKICBSZWFkIGNhbXBhaWduCi0tXV0KbG9jYWwgZnVu
48
+ Y3Rpb24gcmVhZF9jYW1wYWlnbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mg
49
+ fj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlv
50
+ biB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2Ft
51
+ cGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBh
52
+ aWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIC0tIHN0eWx1YTogaWdu
53
+ b3JlCiAgbG9jYWwgdmFsdWVzID0gcmVkaXMuY2FsbCgKICAgICdITUdFVCcsIGNhbXBhaWduX2tl
54
+ eSwKICAgICdjYW1wYWlnbl9pZCcsCiAgICAnbWlycm9yX2RvbWFpbicsCiAgICAnc2Vzc2lvbl9j
55
+ b3VudCcsCiAgICAnbWVzc2FnZV9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcKICApCgogIGlmICN2
56
+ YWx1ZXMgfj0gNSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3Jt
57
+ IHZhbHVlcycpCiAgZW5kCgogIGxvY2FsIG1vZGVsID0gewogICAgY2FtcGFpZ25faWQgPSB2YWx1
58
+ ZXNbMV0sCiAgICBtaXJyb3JfZG9tYWluID0gdmFsdWVzWzJdLAogICAgaXNfbG9ja2VkID0gcmVk
59
+ aXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpLAogICAgc2Vzc2lvbl9jb3VudCA9
60
+ IHRvbnVtYmVyKHZhbHVlc1szXSksCiAgICBtZXNzYWdlX2NvdW50ID0gdG9udW1iZXIodmFsdWVz
61
+ WzRdKSwKICAgIGNyZWF0ZWRfYXQgPSB0b251bWJlcih2YWx1ZXNbNV0pLAogIH0KCiAgZm9yIGZp
18
62
  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
63
+ IHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkK
64
+ ICAgIGVuZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0
65
+ ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9jYW1wYWlnbicsCiAgY2FsbGJh
66
+ Y2sgPSByZWFkX2NhbXBhaWduLAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9LAogIGRlc2NyaXB0
67
+ aW9uID0gJ1JlYWQgY2FtcGFpZ24nLAp9KQoKLS1bWwogIFJlYWQgZnVsbCBjYW1wYWlnbgotLV1d
68
+ CmxvY2FsIGZ1bmN0aW9uIHJlYWRfZnVsbF9jYW1wYWlnbihrZXlzLCBhcmdzKQogIGlmICNrZXlz
69
+ IH49IDYgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VS
70
+ UiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlz
71
+ WzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJveHlfaW5k
72
+ ZXhfa2V5ID0ga2V5c1szXQogIGxvY2FsIHRhcmdldF9pbmRleF9rZXkgPSBrZXlzWzRdCiAgbG9j
73
+ YWwgcmVkaXJlY3Rvcl9pbmRleF9rZXkgPSBrZXlzWzVdCiAgbG9jYWwgbHVyZV9pbmRleF9rZXkg
74
+ PSBrZXlzWzZdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0
75
+ aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIC0tIHN0eWx1YTogaWdub3JlCiAgbG9jYWwgdmFs
76
+ dWVzID0gcmVkaXMuY2FsbCgKICAgICdITUdFVCcsIGNhbXBhaWduX2tleSwKICAgICdjYW1wYWln
77
+ bl9pZCcsCiAgICAnbWlycm9yX2RvbWFpbicsCiAgICAnZGVzY3JpcHRpb24nLAogICAgJ2NyeXB0
78
+ X3NlY3JldCcsCiAgICAnbGFuZGluZ191cGdyYWRlX3BhdGgnLAogICAgJ3Nlc3Npb25fY29va2ll
79
+ X25hbWUnLAogICAgJ3Nlc3Npb25fZXhwaXJlJywKICAgICduZXdfc2Vzc2lvbl9leHBpcmUnLAog
80
+ ICAgJ21lc3NhZ2VfZXhwaXJlJywKICAgICdzZXNzaW9uX2NvdW50JywKICAgICdtZXNzYWdlX2Nv
81
+ dW50JywKICAgICdjcmVhdGVkX2F0JwogICkKCiAgaWYgI3ZhbHVlcyB+PSAxMiB0aGVuCiAgICBy
82
+ ZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBNYWxmb3JtIHZhbHVlcycpCiAgZW5kCgogIGxv
83
+ Y2FsIG1vZGVsID0gewogICAgY2FtcGFpZ25faWQgPSB2YWx1ZXNbMV0sCiAgICBtaXJyb3JfZG9t
84
+ YWluID0gdmFsdWVzWzJdLAogICAgZGVzY3JpcHRpb24gPSB2YWx1ZXNbM10sCiAgICBjcnlwdF9z
85
+ ZWNyZXQgPSB2YWx1ZXNbNF0sCiAgICBsYW5kaW5nX3VwZ3JhZGVfcGF0aCA9IHZhbHVlc1s1XSwK
86
+ ICAgIHNlc3Npb25fY29va2llX25hbWUgPSB2YWx1ZXNbNl0sCiAgICBzZXNzaW9uX2V4cGlyZSA9
87
+ IHRvbnVtYmVyKHZhbHVlc1s3XSksCiAgICBuZXdfc2Vzc2lvbl9leHBpcmUgPSB0b251bWJlcih2
88
+ YWx1ZXNbOF0pLAogICAgbWVzc2FnZV9leHBpcmUgPSB0b251bWJlcih2YWx1ZXNbOV0pLAogICAg
89
+ aXNfbG9ja2VkID0gcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpLAogICAg
90
+ cHJveHlfY291bnQgPSByZWRpcy5jYWxsKCdaQ0FSRCcsIHByb3h5X2luZGV4X2tleSksCiAgICB0
91
+ YXJnZXRfY291bnQgPSByZWRpcy5jYWxsKCdaQ0FSRCcsIHRhcmdldF9pbmRleF9rZXkpLAogICAg
92
+ cmVkaXJlY3Rvcl9jb3VudCA9IHJlZGlzLmNhbGwoJ1pDQVJEJywgcmVkaXJlY3Rvcl9pbmRleF9r
93
+ ZXkpLAogICAgbHVyZV9jb3VudCA9IHJlZGlzLmNhbGwoJ1pDQVJEJywgbHVyZV9pbmRleF9rZXkp
94
+ LAogICAgc2Vzc2lvbl9jb3VudCA9IHRvbnVtYmVyKHZhbHVlc1sxMF0pLAogICAgbWVzc2FnZV9j
95
+ b3VudCA9IHRvbnVtYmVyKHZhbHVlc1sxMV0pLAogICAgY3JlYXRlZF9hdCA9IHRvbnVtYmVyKHZh
96
+ bHVlc1sxMl0pLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAg
97
+ IGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1h
98
+ bGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBt
99
+ b2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAn
100
+ cmVhZF9mdWxsX2NhbXBhaWduJywKICBjYWxsYmFjayA9IHJlYWRfZnVsbF9jYW1wYWlnbiwKICBm
101
+ bGFncyA9IHsgJ25vLXdyaXRlcycgfSwKICBkZXNjcmlwdGlvbiA9ICdSZWFkIGZ1bGwgY2FtcGFp
102
+ Z24nLAp9KQoKLS1bWwogIFJlYWQgY2FtcGFpZ24gbWlycm9yIGRvbWFpbnMKLS1dXQpsb2NhbCBm
103
+ dW5jdGlvbiByZWFkX2NhbXBhaWduX21pcnJvcl9kb21haW5zKGtleXMsIGFyZ3MpCiAgaWYgI2tl
104
+ eXMgfj0gMSBvciAjYXJncyB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgn
105
+ RVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX21pcnJvcl9k
106
+ b21haW5zX2tleSA9IGtleXNbMV0KCiAgcmV0dXJuIHJlZGlzLmNhbGwoJ1NNRU1CRVJTJywgY2Ft
107
+ cGFpZ25fbWlycm9yX2RvbWFpbnNfa2V5KQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsK
108
+ ICBmdW5jdGlvbl9uYW1lID0gJ3JlYWRfY2FtcGFpZ25fbWlycm9yX2RvbWFpbnMnLAogIGNhbGxi
109
+ YWNrID0gcmVhZF9jYW1wYWlnbl9taXJyb3JfZG9tYWlucywKICBmbGFncyA9IHsgJ25vLXdyaXRl
110
+ cycgfSwKICBkZXNjcmlwdGlvbiA9ICdSZWFkIGNhbXBhaWduIG1pcnJvciBkb21haW5zJywKfSkK
111
+ Ci0tW1sKICBSZWFkIGNhbXBhaWduIHNlc3Npb24gY29va2llIG5hbWVzCi0tXV0KbG9jYWwgZnVu
112
+ Y3Rpb24gcmVhZF9jYW1wYWlnbl9zZXNzaW9uX2Nvb2tpZV9uYW1lcyhrZXlzLCBhcmdzKQogIGlm
113
+ ICNrZXlzIH49IDEgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
114
+ bHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9zZXNz
115
+ aW9uX2Nvb2tpZV9uYW1lc19rZXkgPSBrZXlzWzFdCgogIHJldHVybiByZWRpcy5jYWxsKCdTTUVN
116
+ QkVSUycsIGNhbXBhaWduX3Nlc3Npb25fY29va2llX25hbWVzX2tleSkKZW5kCgpyZWRpcy5yZWdp
117
+ c3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdyZWFkX2NhbXBhaWduX3Nlc3Npb25f
118
+ Y29va2llX25hbWVzJywKICBjYWxsYmFjayA9IHJlYWRfY2FtcGFpZ25fc2Vzc2lvbl9jb29raWVf
119
+ bmFtZXMsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnUmVhZCBj
120
+ YW1wYWlnbiBzZXNzaW9uIGNvb2tpZSBuYW1lcycsCn0pCgotLVtbCiAgUmVhZCBjYW1wYWlnbiBp
121
+ bmRleAotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRfY2FtcGFpZ25faW5kZXgoa2V5cywgYXJncykK
122
+ ICBpZiAja2V5cyB+PSAxIG9yICNhcmdzIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9y
123
+ X3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25f
124
+ aW5kZXhfa2V5ID0ga2V5c1sxXQoKICByZXR1cm4gcmVkaXMuY2FsbCgnWlJBTkdFJywgY2FtcGFp
125
+ Z25faW5kZXhfa2V5LCAwLCAtMSkKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVu
126
+ Y3Rpb25fbmFtZSA9ICdyZWFkX2NhbXBhaWduX2luZGV4JywKICBjYWxsYmFjayA9IHJlYWRfY2Ft
127
+ cGFpZ25faW5kZXgsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAn
128
+ UmVhZCBjYW1wYWlnbiBpbmRleCcsCn0pCgotLVtbCiAgTG9jayBjYW1wYWlnbgotLV1dCmxvY2Fs
129
+ IGZ1bmN0aW9uIGxvY2tfY2FtcGFpZ24oa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAyIG9yICNh
130
+ cmdzIH49IDIgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVu
131
+ Y3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2Fs
132
+ IGNhbXBhaWduX2xvY2tfa2V5ID0ga2V5c1syXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBj
133
+ YW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9U
134
+ X0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElT
135
+ VFMnLCBjYW1wYWlnbl9sb2NrX2tleSkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVz
136
+ X3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gYWxscmVhZHkgbG9ja2VkJykKICBlbmQKCiAgbG9j
137
+ YWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3JldCA9IGFyZ3NbMV0sCiAgICBsb2NrX3RpbWVvdXQg
138
+ PSB0b251bWJlcihhcmdzWzJdKSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rh
139
+ c2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
140
+ bHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYgZmllbGQgPT0g
141
+ J2xvY2tfc2VjcmV0JyBhbmQgdmFsdWUgPT0gJycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJy
142
+ b3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYgZmll
143
+ bGQgPT0gJ2xvY2tfdGltZW91dCcgYW5kIHZhbHVlIDw9IDAgdGhlbgogICAgICByZXR1cm4gcmVk
144
+ aXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5k
145
+ CgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdTRVQnLCBjYW1wYWlnbl9s
146
+ b2NrX2tleSwgc3Rhc2gubG9ja19zZWNyZXQsICdQWCcsIHN0YXNoLmxvY2tfdGltZW91dCkKCiAg
147
+ cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgQ2FtcGFpZ24gbG9ja2VkJykKZW5kCgpyZWRp
148
+ cy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdsb2NrX2NhbXBhaWduJywK
149
+ ICBjYWxsYmFjayA9IGxvY2tfY2FtcGFpZ24sCiAgZGVzY3JpcHRpb24gPSAnTG9jayBjYW1wYWln
150
+ bicsCn0pCgotLVtbCiAgVW5sb2NrIGNhbXBhaWduCi0tXV0KbG9jYWwgZnVuY3Rpb24gdW5sb2Nr
151
+ X2NhbXBhaWduKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMiBvciAjYXJncyB+PSAxIHRoZW4K
103
152
  ICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAg
104
153
  ZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBjYW1wYWlnbl9sb2Nr
105
154
  X2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+
106
155
  PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWln
107
156
  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
157
+ bG9ja19rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgQ2Ft
153
158
  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=`,
159
+ ZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNh
160
+ bXBhaWduX2xvY2tfa2V5KSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rhc2gp
161
+ IGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHko
162
+ J0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYgKGZpZWxkID09ICds
163
+ b2NrX3NlY3JldCcgb3IgZmllbGQgPT0gJ29yaWdfbG9ja19zZWNyZXQnKSBhbmQgdmFsdWUgPT0g
164
+ JycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4n
165
+ IC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNyZXQgfj0g
166
+ c3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9S
167
+ QklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0tIFBvaW50
168
+ IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdERUwnLCBjYW1wYWlnbl9sb2NrX2tleSkKCiAg
169
+ cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgQ2FtcGFpZ24gdW5sb2NrZWQnKQplbmQKCnJl
170
+ ZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ3VubG9ja19jYW1wYWln
171
+ bicsCiAgY2FsbGJhY2sgPSB1bmxvY2tfY2FtcGFpZ24sCiAgZGVzY3JpcHRpb24gPSAnVW5sb2Nr
172
+ IGNhbXBhaWduJywKfSkKCi0tW1sKICBVcGRhdGUgY2FtcGFpZ24KLS1dXQpsb2NhbCBmdW5jdGlv
173
+ biB1cGRhdGVfY2FtcGFpZ24oa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAyIG9yICNhcmdzIDwg
174
+ MSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1
175
+ c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFp
176
+ Z25fbG9ja19rZXkgPSBrZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWdu
177
+ X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQg
178
+ Q2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNh
179
+ bXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHko
180
+ J0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7
181
+ CiAgICBsb2NrX3NlY3JldCA9IHRhYmxlLnJlbW92ZShhcmdzKSwKICAgIG9yaWdfbG9ja19zZWNy
182
+ ZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tleSksCiAgfQoKICBmb3IgZmll
183
+ bGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAg
184
+ cmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAg
185
+ IGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xv
186
+ Y2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcnIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9y
187
+ X3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiAj
188
+ YXJncyAlIDIgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBPZGQg
189
+ bnVtYmVyIG9mIGFyZ3MnKQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHt9CgogIGZvciBpID0gMSwg
190
+ I2FyZ3MsIDIgZG8KICAgIGxvY2FsIGZpZWxkLCB2YWx1ZSA9IGFyZ3NbaV0sIGFyZ3NbaSArIDFd
191
+ CgogICAgaWYgbW9kZWxbZmllbGRdIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5
192
+ KCdFUlIgRHVwbGljYXRlIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiBmaWVsZCA9
193
+ PSAnZGVzY3JpcHRpb24nIHRoZW4KICAgICAgbW9kZWwuZGVzY3JpcHRpb24gPSB2YWx1ZQogICAg
194
+ ZWxzZWlmIGZpZWxkID09ICdzZXNzaW9uX2V4cGlyZScgdGhlbgogICAgICBtb2RlbC5zZXNzaW9u
195
+ X2V4cGlyZSA9IHRvbnVtYmVyKHZhbHVlKQogICAgZWxzZWlmIGZpZWxkID09ICduZXdfc2Vzc2lv
196
+ bl9leHBpcmUnIHRoZW4KICAgICAgbW9kZWwubmV3X3Nlc3Npb25fZXhwaXJlID0gdG9udW1iZXIo
197
+ dmFsdWUpCiAgICBlbHNlaWYgZmllbGQgPT0gJ21lc3NhZ2VfZXhwaXJlJyB0aGVuCiAgICAgIG1v
198
+ ZGVsLm1lc3NhZ2VfZXhwaXJlID0gdG9udW1iZXIodmFsdWUpCiAgICBlbHNlCiAgICAgIHJldHVy
199
+ biByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFVua25vd24gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVu
200
+ ZAogIGVuZAoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90
201
+ IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9k
202
+ ZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBuZXh0KG1vZGVsKSA9PSBuaWwgdGhl
203
+ bgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgTm90aGluZyB0byB1cGRhdGUnKQog
204
+ IGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0YXNoLmxvY2tfc2VjcmV0IHRo
205
+ ZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBsb2Nr
206
+ X3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAgbG9j
207
+ YWwgc3RvcmUgPSB7fQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAg
208
+ dGFibGUuaW5zZXJ0KHN0b3JlLCBmaWVsZCkKICAgIHRhYmxlLmluc2VydChzdG9yZSwgdmFsdWUp
209
+ CiAgZW5kCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCBjYW1wYWlnbl9rZXksIHVucGFjayhzdG9yZSkp
210
+ CgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIENhbXBhaWduIHVwZGF0ZWQnKQplbmQK
211
+ CnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ3VwZGF0ZV9jYW1w
212
+ YWlnbicsCiAgY2FsbGJhY2sgPSB1cGRhdGVfY2FtcGFpZ24sCiAgZGVzY3JpcHRpb24gPSAnVXBk
213
+ YXRlIGNhbXBhaWduJywKfSkKCi0tW1sKICBEZWxldGUgY2FtcGFpZ24KLS1dXQpsb2NhbCBmdW5j
214
+ dGlvbiBkZWxldGVfY2FtcGFpZ24oa2V5cywgYXJncykKICBpZiAja2V5cyB+PSA5IG9yICNhcmdz
215
+ IH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rp
216
+ b24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGNh
217
+ bXBhaWduX2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIGNhbXBhaWduX21pcnJvcl9kb21haW5z
218
+ X2tleSA9IGtleXNbM10KICBsb2NhbCBjYW1wYWlnbl9zZXNzaW9uX2Nvb2tpZV9uYW1lc19rZXkg
219
+ PSBrZXlzWzRdCiAgbG9jYWwgY2FtcGFpZ25faW5kZXhfa2V5ID0ga2V5c1s1XQogIGxvY2FsIHBy
220
+ b3h5X2luZGV4X2tleSA9IGtleXNbNl0KICBsb2NhbCB0YXJnZXRfaW5kZXhfa2V5ID0ga2V5c1s3
221
+ XQogIGxvY2FsIHJlZGlyZWN0b3JfaW5kZXhfa2V5ID0ga2V5c1s4XQogIGxvY2FsIGx1cmVfaW5k
222
+ ZXhfa2V5ID0ga2V5c1s5XQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkp
223
+ IH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBh
224
+ aWduIG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWln
225
+ bl9sb2NrX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JC
226
+ SURERU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAg
227
+ bG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwo
228
+ J0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIGNhbXBhaWduX2lkID0gcmVkaXMuY2FsbCgn
229
+ SEdFVCcsIGNhbXBhaWduX2tleSwgJ2NhbXBhaWduX2lkJyksCiAgICBtaXJyb3JfZG9tYWluID0g
230
+ cmVkaXMuY2FsbCgnSEdFVCcsIGNhbXBhaWduX2tleSwgJ21pcnJvcl9kb21haW4nKSwKICAgIHNl
231
+ c3Npb25fY29va2llX25hbWUgPSByZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnc2Vz
232
+ c2lvbl9jb29raWVfbmFtZScpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFz
233
+ aCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBs
234
+ eSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZgogICAgICAoCiAg
235
+ ICAgICAgZmllbGQgPT0gJ2xvY2tfc2VjcmV0JwogICAgICAgIG9yIGZpZWxkID09ICdvcmlnX2xv
236
+ Y2tfc2VjcmV0JwogICAgICAgIG9yIGZpZWxkID09ICdjYW1wYWlnbl9pZCcKICAgICAgICBvciBm
237
+ aWVsZCA9PSAnbWlycm9yX2RvbWFpbicKICAgICAgICBvciBmaWVsZCA9PSAnc2Vzc2lvbl9jb29r
238
+ aWVfbmFtZScKICAgICAgKSBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAgICAgcmV0dXJuIHJl
239
+ ZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVu
240
+ ZAoKICBpZiByZWRpcy5jYWxsKCdaQ0FSRCcsIHByb3h5X2luZGV4X2tleSkgfj0gMCB0aGVuCiAg
241
+ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gcHJveGllcyBl
242
+ eGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdaQ0FSRCcsIHRhcmdldF9pbmRleF9rZXkp
243
+ IH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBh
244
+ aWduIHRhcmdldHMgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnWkNBUkQnLCByZWRp
245
+ cmVjdG9yX2luZGV4X2tleSkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5
246
+ KCdGT1JCSURERU4gQ2FtcGFpZ24gcmVkaXJlY3RvcnMgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVk
247
+ aXMuY2FsbCgnWkNBUkQnLCBsdXJlX2luZGV4X2tleSkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVk
248
+ aXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbHVyZXMgZXhpc3RzJykKICBlbmQK
249
+ CiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAg
250
+ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNy
251
+ ZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNh
252
+ bGwoJ0RFTCcsIGNhbXBhaWduX2tleSwgY2FtcGFpZ25fbG9ja19rZXkpCgogIHJlZGlzLmNhbGwo
253
+ J1NSRU0nLCBjYW1wYWlnbl9taXJyb3JfZG9tYWluc19rZXksIHN0YXNoLm1pcnJvcl9kb21haW4p
254
+ CgogIHJlZGlzLmNhbGwoJ1NSRU0nLCBjYW1wYWlnbl9zZXNzaW9uX2Nvb2tpZV9uYW1lc19rZXks
255
+ IHN0YXNoLnNlc3Npb25fY29va2llX25hbWUpCgogIHJlZGlzLmNhbGwoJ1pSRU0nLCBjYW1wYWln
256
+ bl9pbmRleF9rZXksIHN0YXNoLmNhbXBhaWduX2lkKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3Jl
257
+ cGx5KCdPSyBDYW1wYWlnbiBkZWxldGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7
258
+ CiAgZnVuY3Rpb25fbmFtZSA9ICdkZWxldGVfY2FtcGFpZ24nLAogIGNhbGxiYWNrID0gZGVsZXRl
259
+ X2NhbXBhaWduLAogIGRlc2NyaXB0aW9uID0gJ0RlbGV0ZSBjYW1wYWlnbicsCn0pCg==`,
229
260
  '2-proxy.lua',
230
261
  `IyFsdWEgbmFtZT1wcm94eQoKLS1bWwogIENyZWF0ZSBwcm94eQotLV1dCmxvY2FsIGZ1bmN0aW9u
231
262
  IGNyZWF0ZV9wcm94eShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDUgb3IgI2FyZ3Mgfj0gNSB0
232
263
  aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2Un
233
264
  KQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25f
234
265
  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
266
+ b3h5X3VybHNfa2V5ID0ga2V5c1s0XQogIGxvY2FsIHByb3h5X2luZGV4X2tleSA9IGtleXNbNV0K
267
+ CiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJl
268
+ dHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWlnbiBub3QgZXhpc3RzJykK
269
+ ICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpIH49IDEg
270
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIG5v
271
+ dCBsb2NrZWQnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBwcm94eV9rZXkpIH49
272
+ IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgUHJveHkgYWxs
273
+ cmVhZHkgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3JldCA9
274
+ IGFyZ3NbNV0sCiAgICBvcmlnX2xvY2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywgY2FtcGFp
275
+ Z25fbG9ja19rZXkpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8K
253
276
  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
277
+ IFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiAoZmllbGQgPT0gJ2xvY2tf
278
+ c2VjcmV0JyBvciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcpIGFuZCB2YWx1ZSA9PSAnJyB0
279
+ aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4g
280
+ ZmllbGQpCiAgICBlbmQKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7CiAgICBjYW1wYWlnbl9pZCA9
281
+ IGFyZ3NbMV0sCiAgICBwcm94eV9pZCA9IGFyZ3NbMl0sCiAgICB1cmwgPSBhcmdzWzNdLAogICAg
282
+ aXNfZW5hYmxlZCA9IDAsCiAgICBtZXNzYWdlX2NvdW50ID0gMCwKICAgIGNyZWF0ZWRfYXQgPSBh
283
+ cmdzWzRdLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlm
284
+ IG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25n
285
+ IG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiAoZmllbGQgPT0gJ2NhbXBhaWduX2lk
286
+ JyBvciBmaWVsZCA9PSAncHJveHlfaWQnIG9yIGZpZWxkID09ICd1cmwnKSBhbmQgdmFsdWUgPT0g
287
+ JycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4n
288
+ IC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ1NJU01FTUJFUicsIHBy
289
+ b3h5X3VybHNfa2V5LCBtb2RlbC51cmwpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
290
+ c19yZXBseSgnQ09ORkxJQ1QgUHJveHkgdXJsIGFsbHJlYWR5IHRha2VuJykKICBlbmQKCiAgaWYg
291
+ c3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1
292
+ cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90
293
+ IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIGxvY2FsIHN0b3JlID0g
294
+ e30KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIHRhYmxlLmluc2Vy
295
+ dChzdG9yZSwgZmllbGQpCiAgICB0YWJsZS5pbnNlcnQoc3RvcmUsIHZhbHVlKQogIGVuZAoKICBy
296
+ ZWRpcy5jYWxsKCdIU0VUJywgcHJveHlfa2V5LCB1bnBhY2soc3RvcmUpKQoKICByZWRpcy5jYWxs
297
+ KCdTQUREJywgcHJveHlfdXJsc19rZXksIG1vZGVsLnVybCkKCiAgcmVkaXMuY2FsbCgnWkFERCcs
298
+ IHByb3h5X2luZGV4X2tleSwgbW9kZWwuY3JlYXRlZF9hdCwgbW9kZWwucHJveHlfaWQpCgogIHJl
299
+ dHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFByb3h5IGNyZWF0ZWQnKQplbmQKCnJlZGlzLnJl
300
+ Z2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2NyZWF0ZV9wcm94eScsCiAgY2Fs
301
+ bGJhY2sgPSBjcmVhdGVfcHJveHksCiAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIHByb3h5JywKfSkK
302
+ Ci0tW1sKICBSZWFkIHByb3h5Ci0tXV0KbG9jYWwgZnVuY3Rpb24gcmVhZF9wcm94eShrZXlzLCBh
303
+ cmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMu
304
+ ZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1w
305
+ YWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgcHJveHlfa2V5ID0ga2V5c1syXQoKICBpZiByZWRp
306
+ cy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAog
307
+ IGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBwcm94eV9rZXkpIH49IDEgdGhlbgogICAg
308
+ cmV0dXJuIG5pbAogIGVuZAoKICAtLSBzdHlsdWE6IGlnbm9yZQogIGxvY2FsIHZhbHVlcyA9IHJl
309
+ ZGlzLmNhbGwoCiAgICAnSE1HRVQnLCBwcm94eV9rZXksCiAgICAnY2FtcGFpZ25faWQnLAogICAg
310
+ J3Byb3h5X2lkJywKICAgICd1cmwnLAogICAgJ2lzX2VuYWJsZWQnLAogICAgJ21lc3NhZ2VfY291
311
+ bnQnLAogICAgJ2NyZWF0ZWRfYXQnCiAgKQoKICBpZiAjdmFsdWVzIH49IDYgdGhlbgogICAgcmV0
312
+ dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoKICBsb2Nh
313
+ bCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgcHJveHlfaWQgPSB2
314
+ YWx1ZXNbMl0sCiAgICB1cmwgPSB2YWx1ZXNbM10sCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIo
315
+ dmFsdWVzWzRdKSwKICAgIG1lc3NhZ2VfY291bnQgPSB0b251bWJlcih2YWx1ZXNbNV0pLAogICAg
316
+ Y3JlYXRlZF9hdCA9IHRvbnVtYmVyKHZhbHVlc1s2XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVl
500
317
  IGluIHBhaXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJl
501
318
  ZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAg
502
319
  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
320
+ bih7CiAgZnVuY3Rpb25fbmFtZSA9ICdyZWFkX3Byb3h5JywKICBjYWxsYmFjayA9IHJlYWRfcHJv
321
+ eHksCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnUmVhZCBwcm94
322
+ eScsCn0pCgotLVtbCiAgUmVhZCBwcm94eSBpbmRleAotLV1dCmxvY2FsIGZ1bmN0aW9uIHJlYWRf
323
+ cHJveHlfaW5kZXgoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAyIG9yICNhcmdzIH49IDAgdGhl
324
+ bgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNlJykK
325
+ ICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIHByb3h5X2luZGV4
326
+ X2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+
327
+ PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgcmV0dXJuIHJlZGlzLmNhbGwoJ1pSQU5H
328
+ RScsIHByb3h5X2luZGV4X2tleSwgMCwgLTEpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24o
329
+ ewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9wcm94eV9pbmRleCcsCiAgY2FsbGJhY2sgPSByZWFk
330
+ X3Byb3h5X2luZGV4LAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9LAogIGRlc2NyaXB0aW9uID0g
331
+ J1JlYWQgcHJveHkgaW5kZXgnLAp9KQoKLS1bWwogIEVuYWJsZSBwcm94eQotLV1dCmxvY2FsIGZ1
332
+ bmN0aW9uIGVuYWJsZV9wcm94eShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDQgb3IgI2FyZ3Mg
333
+ fj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlv
334
+ biB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgY2Ft
335
+ cGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJveHlfa2V5ID0ga2V5c1szXQogIGxv
336
+ Y2FsIGVuYWJsZWRfcHJveHlfaW5kZXhfa2V5ID0ga2V5c1s0XQoKICBpZiByZWRpcy5jYWxsKCdF
337
+ WElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19y
338
+ ZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5j
339
+ YWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2NrX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVk
340
+ aXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgog
341
+ IGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHByb3h5X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4g
342
+ cmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUHJveHkgbm90IGV4aXN0cycpCiAgZW5kCgog
343
+ IGxvY2FsIHN0YXNoID0gewogICAgbG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2Nr
344
+ X3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIHByb3h5
345
+ X2lkID0gcmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5X2tleSwgJ3Byb3h5X2lkJyksCiAgICBpc19l
346
+ bmFibGVkID0gdG9udW1iZXIocmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5X2tleSwgJ2lzX2VuYWJs
347
+ ZWQnKSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYg
348
+ bm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcg
349
+ c3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAgIChmaWVsZCA9PSAnbG9ja19z
350
+ ZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9PSAncHJveHlf
351
+ aWQnKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVy
352
+ cm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBp
353
+ ZiBzdGFzaC5pc19lbmFibGVkIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBs
354
+ eSgnT0sgUHJveHkgYWxscmVhZHkgZW5hYmxlZCcpCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9j
355
+ a19zZWNyZXQgfj0gc3Rhc2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
356
+ c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5k
357
+ CgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdIU0VUJywgcHJveHlfa2V5
358
+ LCAnaXNfZW5hYmxlZCcsIDEpCgogIHJlZGlzLmNhbGwoJ1NBREQnLCBlbmFibGVkX3Byb3h5X2lu
359
+ ZGV4X2tleSwgc3Rhc2gucHJveHlfaWQpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09L
360
+ IFByb3h5IGVuYWJsZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlv
361
+ bl9uYW1lID0gJ2VuYWJsZV9wcm94eScsCiAgY2FsbGJhY2sgPSBlbmFibGVfcHJveHksCiAgZGVz
362
+ Y3JpcHRpb24gPSAnRW5hYmxlIHByb3h5JywKfSkKCi0tW1sKICBEaXNhYmxlIHByb3h5Ci0tXV0K
363
+ bG9jYWwgZnVuY3Rpb24gZGlzYWJsZV9wcm94eShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDQg
364
+ b3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
365
+ ZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAg
366
+ bG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJveHlfa2V5ID0ga2V5
367
+ c1szXQogIGxvY2FsIGVuYWJsZWRfcHJveHlfaW5kZXhfa2V5ID0ga2V5c1s0XQoKICBpZiByZWRp
368
+ cy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlz
369
+ LnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQogIGVuZAoKICBp
370
+ ZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2NrX2tleSkgfj0gMSB0aGVuCiAgICBy
371
+ ZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcp
372
+ CiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHByb3h5X2tleSkgfj0gMSB0aGVuCiAg
373
+ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUHJveHkgbm90IGV4aXN0cycp
374
+ CiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAg
584
375
  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
376
+ ICAgIHByb3h5X2lkID0gcmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5X2tleSwgJ3Byb3h5X2lkJyks
377
+ CiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2FsbCgnSEdFVCcsIHByb3h5X2tleSwg
378
+ J2lzX2VuYWJsZWQnKSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBk
379
+ bwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdF
380
+ UlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAgIChmaWVsZCA9
381
+ PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9
382
+ PSAncHJveHlfaWQnKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAgICAgcmV0dXJu
383
+ IHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAog
384
+ IGVuZAoKICBpZiBzdGFzaC5pc19lbmFibGVkID09IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0
385
+ YXR1c19yZXBseSgnT0sgUHJveHkgYWxscmVhZHkgZGlzYWJsZWQnKQogIGVuZAoKICBpZiBzdGFz
386
+ aC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0YXNoLmxvY2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiBy
387
+ ZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0
388
+ Y2gnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAgcmVkaXMuY2FsbCgnSFNFVCcs
389
+ IHByb3h5X2tleSwgJ2lzX2VuYWJsZWQnLCAwKQoKICByZWRpcy5jYWxsKCdTUkVNJywgZW5hYmxl
390
+ ZF9wcm94eV9pbmRleF9rZXksIHN0YXNoLnByb3h5X2lkKQoKICByZXR1cm4gcmVkaXMuc3RhdHVz
391
+ X3JlcGx5KCdPSyBQcm94eSBkaXNhYmxlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24o
392
+ ewogIGZ1bmN0aW9uX25hbWUgPSAnZGlzYWJsZV9wcm94eScsCiAgY2FsbGJhY2sgPSBkaXNhYmxl
393
+ X3Byb3h5LAogIGRlc2NyaXB0aW9uID0gJ0Rpc2FibGUgcHJveHknLAp9KQoKLS1bWwogIERlbGV0
394
+ ZSBwcm94eQotLV1dCmxvY2FsIGZ1bmN0aW9uIGRlbGV0ZV9wcm94eShrZXlzLCBhcmdzKQogIGlm
395
+ ICNrZXlzIH49IDUgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
396
+ bHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkg
397
+ PSBrZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgcHJv
398
+ eHlfa2V5ID0ga2V5c1szXQogIGxvY2FsIHByb3h5X3VybHNfa2V5ID0ga2V5c1s0XQogIGxvY2Fs
399
+ IHByb3h5X2luZGV4X2tleSA9IGtleXNbNV0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2Ft
400
+ cGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9G
401
+ T1VORCBDYW1wYWlnbiBub3QgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RT
402
+ JywgY2FtcGFpZ25fbG9ja19rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19y
403
+ ZXBseSgnRk9SQklEREVOIENhbXBhaWduIG5vdCBsb2NrZWQnKQogIGVuZAoKICBpZiByZWRpcy5j
404
+ YWxsKCdFWElTVFMnLCBwcm94eV9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
405
+ c19yZXBseSgnTk9UX0ZPVU5EIFByb3h5IG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFz
406
+ aCA9IHsKICAgIGxvY2tfc2VjcmV0ID0gYXJnc1sxXSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSBy
407
+ ZWRpcy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tleSksCiAgICBwcm94eV9pZCA9IHJlZGlz
408
+ LmNhbGwoJ0hHRVQnLCBwcm94eV9rZXksICdwcm94eV9pZCcpLAogICAgdXJsID0gcmVkaXMuY2Fs
409
+ bCgnSEdFVCcsIHByb3h5X2tleSwgJ3VybCcpLAogICAgaXNfZW5hYmxlZCA9IHRvbnVtYmVyKHJl
410
+ ZGlzLmNhbGwoJ0hHRVQnLCBwcm94eV9rZXksICdpc19lbmFibGVkJykpLAogIH0KCiAgZm9yIGZp
411
+ ZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAg
412
+ IHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAg
413
+ ICBlbmQKCiAgICBpZgogICAgICAoCiAgICAgICAgZmllbGQgPT0gJ2xvY2tfc2VjcmV0JwogICAg
414
+ ICAgIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JwogICAgICAgIG9yIGZpZWxkID09ICdw
415
+ cm94eV9pZCcKICAgICAgICBvciBmaWVsZCA9PSAndXJsJwogICAgICApIGFuZCB2YWx1ZSA9PSAn
416
+ JwogICAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFz
417
+ aC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHN0YXNoLmlzX2VuYWJsZWQgfj0gMCB0
418
+ aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gUHJveHkgbm90IGRp
672
419
  c2FibGVkJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2Nr
673
420
  X3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2Ft
674
421
  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
422
+ dXJuCgogIHJlZGlzLmNhbGwoJ0RFTCcsIHByb3h5X2tleSkKCiAgcmVkaXMuY2FsbCgnU1JFTScs
423
+ IHByb3h5X3VybHNfa2V5LCBzdGFzaC51cmwpCgogIHJlZGlzLmNhbGwoJ1pSRU0nLCBwcm94eV9p
424
+ bmRleF9rZXksIHN0YXNoLnByb3h5X2lkKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdP
425
+ SyBQcm94eSBkZWxldGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rp
426
+ b25fbmFtZSA9ICdkZWxldGVfcHJveHknLAogIGNhbGxiYWNrID0gZGVsZXRlX3Byb3h5LAogIGRl
427
+ c2NyaXB0aW9uID0gJ0RlbGV0ZSBwcm94eScsCn0pCg==`,
428
+ '3-target.lua',
429
+ `IyFsdWEgbmFtZT10YXJnZXQKCi0tW1sKICBDcmVhdGUgdGFyZ2V0Ci0tXV0KbG9jYWwgZnVuY3Rp
430
+ b24gY3JlYXRlX3RhcmdldChrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDcgb3IgI2FyZ3Mgfj0g
431
+ MjMgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24g
432
+ dXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGNhbXBh
433
+ aWduX2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIHRhcmdldF9rZXkgPSBrZXlzWzNdCiAgbG9j
434
+ YWwgdGFyZ2V0X2Rvbm9yc19rZXkgPSBrZXlzWzRdCiAgbG9jYWwgdGFyZ2V0X21pcnJvcnNfa2V5
435
+ ID0ga2V5c1s1XQogIGxvY2FsIHRhcmdldF9taXJyb3JfaG9zdHNfa2V5ID0ga2V5c1s2XQogIGxv
436
+ Y2FsIHRhcmdldF9pbmRleF9rZXkgPSBrZXlzWzddCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycs
437
+ IGNhbXBhaWduX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdO
438
+ T1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VY
439
+ SVNUUycsIGNhbXBhaWduX2xvY2tfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0
440
+ dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVk
441
+ aXMuY2FsbCgnRVhJU1RTJywgdGFyZ2V0X2tleSkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMu
442
+ c3RhdHVzX3JlcGx5KCdDT05GTElDVCBUYXJnZXQgYWxscmVhZHkgZXhpc3RzJykKICBlbmQKCiAg
443
+ bG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3JldCA9IGFyZ3NbMjNdLAogICAgb3JpZ19sb2Nr
444
+ X3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIG1pcnJv
445
+ cl9kb21haW4gPSByZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnbWlycm9yX2RvbWFp
446
+ bicpLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5v
447
+ dCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0
448
+ YXNoLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZgogICAgICAoZmllbGQgPT0gJ2xvY2tfc2Vj
449
+ cmV0JyBvciBmaWVsZCA9PSAnb3JpZ19sb2NrX3NlY3JldCcgb3IgZmllbGQgPT0gJ21pcnJvcl9k
450
+ b21haW4nKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAgICAgcmV0dXJuIHJlZGlz
451
+ LmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoK
452
+ ICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gYXJnc1sxXSwKICAgIHRhcmdldF9p
453
+ ZCA9IGFyZ3NbMl0sCiAgICBhY2Nlc3NfbGV2ZWwgPSBhcmdzWzNdLAogICAgZG9ub3Jfc2VjdXJl
454
+ ID0gdG9udW1iZXIoYXJnc1s0XSksCiAgICBkb25vcl9zdWIgPSBhcmdzWzVdLAogICAgZG9ub3Jf
455
+ ZG9tYWluID0gYXJnc1s2XSwKICAgIGRvbm9yX3BvcnQgPSBhcmdzWzddLAogICAgbWlycm9yX3Nl
456
+ Y3VyZSA9IHRvbnVtYmVyKGFyZ3NbOF0pLAogICAgbWlycm9yX3N1YiA9IGFyZ3NbOV0sCiAgICBt
457
+ aXJyb3JfcG9ydCA9IGFyZ3NbMTBdLAogICAgY29ubmVjdF90aW1lb3V0ID0gdG9udW1iZXIoYXJn
458
+ c1sxMV0pLAogICAgc2ltcGxlX3RpbWVvdXQgPSB0b251bWJlcihhcmdzWzEyXSksCiAgICBzdHJl
459
+ YW1fdGltZW91dCA9IHRvbnVtYmVyKGFyZ3NbMTNdKSwKICAgIGhlYWRlcnNfc2l6ZV9saW1pdCA9
460
+ IHRvbnVtYmVyKGFyZ3NbMTRdKSwKICAgIGJvZHlfc2l6ZV9saW1pdCA9IHRvbnVtYmVyKGFyZ3Nb
461
+ MTVdKSwKICAgIG1haW5fcGFnZSA9IGFyZ3NbMTZdLAogICAgbm90X2ZvdW5kX3BhZ2UgPSBhcmdz
462
+ WzE3XSwKICAgIGZhdmljb25faWNvID0gYXJnc1sxOF0sCiAgICByb2JvdHNfdHh0ID0gYXJnc1sx
463
+ OV0sCiAgICBzaXRlbWFwX3htbCA9IGFyZ3NbMjBdLAogICAgYWxsb3dfd2Vic29ja2V0cyA9IHRv
464
+ bnVtYmVyKGFyZ3NbMjFdKSwKICAgIGlzX2VuYWJsZWQgPSAwLAogICAgbWVzc2FnZV9jb3VudCA9
465
+ IDAsCiAgICBjcmVhdGVkX2F0ID0gdG9udW1iZXIoYXJnc1syMl0pLAogIH0KCiAgZm9yIGZpZWxk
466
+ LCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJl
467
+ dHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIG1vZGVsLicgLi4gZmllbGQpCiAgICBl
468
+ bmQKCiAgICBpZgogICAgICAoCiAgICAgICAgZmllbGQgPT0gJ2NhbXBhaWduX2lkJwogICAgICAg
469
+ IG9yIGZpZWxkID09ICd0YXJnZXRfaWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ2FjY2Vzc19sZXZl
470
+ bCcKICAgICAgICBvciBmaWVsZCA9PSAnZG9ub3Jfc3ViJwogICAgICAgIG9yIGZpZWxkID09ICdk
471
+ b25vcl9kb21haW4nCiAgICAgICAgb3IgZmllbGQgPT0gJ2Rvbm9yX3BvcnQnCiAgICAgICAgb3Ig
472
+ ZmllbGQgPT0gJ21pcnJvcl9zdWInCiAgICAgICAgb3IgZmllbGQgPT0gJ21pcnJvcl9wb3J0Jwog
473
+ ICAgICApIGFuZCB2YWx1ZSA9PSAnJwogICAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3Jf
474
+ cmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIC0tIHN0
475
+ eWx1YTogaWdub3JlCiAgbG9jYWwgZG9ub3Jfc3RyID0gbW9kZWwuY2FtcGFpZ25faWQKICAgIC4u
476
+ ICdcdCcgLi4gbW9kZWwuZG9ub3Jfc3ViCiAgICAuLiAnXHQnIC4uIG1vZGVsLmRvbm9yX2RvbWFp
477
+ bgogICAgLi4gJ1x0JyAuLiBtb2RlbC5kb25vcl9wb3J0CgogIGlmIHJlZGlzLmNhbGwoJ1NJU01F
478
+ TUJFUicsIHRhcmdldF9kb25vcnNfa2V5LCBkb25vcl9zdHIpIH49IDAgdGhlbgogICAgcmV0dXJu
479
+ IHJlZGlzLnN0YXR1c19yZXBseSgnQ09ORkxJQ1QgVGFyZ2V0IGRvbm9yIGFsbHJlYWR5IHRha2Vu
480
+ JykKICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUKICBsb2NhbCBtaXJyb3Jfc3RyID0gbW9kZWwu
481
+ Y2FtcGFpZ25faWQKICAgIC4uICdcdCcgLi4gbW9kZWwubWlycm9yX3N1YgogICAgLi4gJ1x0JyAu
482
+ LiBtb2RlbC5taXJyb3JfcG9ydAoKICBpZiByZWRpcy5jYWxsKCdTSVNNRU1CRVInLCB0YXJnZXRf
483
+ bWlycm9yc19rZXksIG1pcnJvcl9zdHIpIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1
484
+ c19yZXBseSgnQ09ORkxJQ1QgVGFyZ2V0IG1pcnJvciBhbGxyZWFkeSB0YWtlbicpCiAgZW5kCgog
485
+ IGxvY2FsIG1pcnJvcl9ob3N0bmFtZSA9IG1vZGVsLm1pcnJvcl9zdWIgfj0gJy4nCiAgICAgIGFu
486
+ ZCAobW9kZWwubWlycm9yX3N1YiAuLiAnLicgLi4gc3Rhc2gubWlycm9yX2RvbWFpbikKICAgIG9y
487
+ IHN0YXNoLm1pcnJvcl9kb21haW4KICBsb2NhbCBtaXJyb3JfaG9zdCA9IG1pcnJvcl9ob3N0bmFt
488
+ ZSAuLiAnOicgLi4gbW9kZWwubWlycm9yX3BvcnQKCiAgaWYgcmVkaXMuY2FsbCgnSEVYSVNUUycs
489
+ IHRhcmdldF9taXJyb3JfaG9zdHNfa2V5LCBtaXJyb3JfaG9zdCkgfj0gMCB0aGVuCiAgICByZXR1
490
+ cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBUYXJnZXQgbWlycm9yIGhvc3QgYWxscmVhZHkgdGFr
491
+ ZW4nKQogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49IHN0YXNoLmxvY2tfc2Vj
492
+ cmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWln
493
+ biBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4K
494
+ CiAgbG9jYWwgc3RvcmUgPSB7fQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBk
495
+ bwogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCBmaWVsZCkKICAgIHRhYmxlLmluc2VydChzdG9yZSwg
496
+ dmFsdWUpCiAgZW5kCgogIHJlZGlzLmNhbGwoJ0hTRVQnLCB0YXJnZXRfa2V5LCB1bnBhY2soc3Rv
497
+ cmUpKQoKICByZWRpcy5jYWxsKCdTQUREJywgdGFyZ2V0X2Rvbm9yc19rZXksIGRvbm9yX3N0cikK
498
+ ICByZWRpcy5jYWxsKCdTQUREJywgdGFyZ2V0X21pcnJvcnNfa2V5LCBtaXJyb3Jfc3RyKQoKICBs
499
+ b2NhbCB0YXJnZXRfbGluayA9IG1vZGVsLmNhbXBhaWduX2lkIC4uICdcdCcgLi4gbW9kZWwudGFy
500
+ Z2V0X2lkCiAgcmVkaXMuY2FsbCgnSFNFVCcsIHRhcmdldF9taXJyb3JfaG9zdHNfa2V5LCBtaXJy
501
+ b3JfaG9zdCwgdGFyZ2V0X2xpbmspCgogIHJlZGlzLmNhbGwoJ1pBREQnLCB0YXJnZXRfaW5kZXhf
502
+ a2V5LCBtb2RlbC5jcmVhdGVkX2F0LCBtb2RlbC50YXJnZXRfaWQpCgogIHJldHVybiByZWRpcy5z
503
+ dGF0dXNfcmVwbHkoJ09LIFRhcmdldCBjcmVhdGVkJykKZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5j
504
+ dGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdjcmVhdGVfdGFyZ2V0JywKICBjYWxsYmFjayA9IGNy
505
+ ZWF0ZV90YXJnZXQsCiAgZGVzY3JpcHRpb24gPSAnQ3JlYXRlIHRhcmdldCcsCn0pCgotLVtbCiAg
506
+ UmVhZCB0YXJnZXQKLS1dXQpsb2NhbCBmdW5jdGlvbiByZWFkX3RhcmdldChrZXlzLCBhcmdzKQog
507
+ IGlmICNrZXlzIH49IDMgb3IgI2FyZ3Mgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3Jf
508
+ cmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9r
509
+ ZXkgPSBrZXlzWzFdCiAgbG9jYWwgdGFyZ2V0X2tleSA9IGtleXNbMl0KICBsb2NhbCB0YXJnZXRf
510
+ bGFiZWxzX2tleSA9IGtleXNbM10KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25f
511
+ a2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJ
512
+ U1RTJywgdGFyZ2V0X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIC0tIHN0
513
+ eWx1YTogaWdub3JlCiAgbG9jYWwgdmFsdWVzID0gcmVkaXMuY2FsbCgKICAgICdITUdFVCcsIHRh
514
+ cmdldF9rZXksCiAgICAnY2FtcGFpZ25faWQnLAogICAgJ3RhcmdldF9pZCcsCiAgICAnYWNjZXNz
515
+ X2xldmVsJywKICAgICdkb25vcl9zZWN1cmUnLAogICAgJ2Rvbm9yX3N1YicsCiAgICAnZG9ub3Jf
516
+ ZG9tYWluJywKICAgICdkb25vcl9wb3J0JywKICAgICdtaXJyb3Jfc2VjdXJlJywKICAgICdtaXJy
517
+ b3Jfc3ViJywKICAgICdtaXJyb3JfcG9ydCcsCiAgICAnaXNfZW5hYmxlZCcsCiAgICAnbWVzc2Fn
518
+ ZV9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcKICApCgogIGlmICN2YWx1ZXMgfj0gMTMgdGhlbgog
519
+ ICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoK
520
+ ICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgdGFyZ2V0
521
+ X2lkID0gdmFsdWVzWzJdLAogICAgYWNjZXNzX2xldmVsID0gdmFsdWVzWzNdLAogICAgZG9ub3Jf
522
+ c2VjdXJlID0gdG9udW1iZXIodmFsdWVzWzRdKSwKICAgIGRvbm9yX3N1YiA9IHZhbHVlc1s1XSwK
523
+ ICAgIGRvbm9yX2RvbWFpbiA9IHZhbHVlc1s2XSwKICAgIGRvbm9yX3BvcnQgPSB2YWx1ZXNbN10s
524
+ CiAgICBtaXJyb3Jfc2VjdXJlID0gdG9udW1iZXIodmFsdWVzWzhdKSwKICAgIG1pcnJvcl9zdWIg
525
+ PSB2YWx1ZXNbOV0sCiAgICBtaXJyb3JfZG9tYWluID0gcmVkaXMuY2FsbCgnSEdFVCcsIGNhbXBh
526
+ aWduX2tleSwgJ21pcnJvcl9kb21haW4nKSwKICAgIG1pcnJvcl9wb3J0ID0gdmFsdWVzWzEwXSwK
527
+ ICAgIGxhYmVscyA9IHJlZGlzLmNhbGwoJ1NNRU1CRVJTJywgdGFyZ2V0X2xhYmVsc19rZXkpLAog
528
+ ICAgaXNfZW5hYmxlZCA9IHRvbnVtYmVyKHZhbHVlc1sxMV0pLAogICAgbWVzc2FnZV9jb3VudCA9
529
+ IHRvbnVtYmVyKHZhbHVlc1sxMl0pLAogICAgY3JlYXRlZF9hdCA9IHRvbnVtYmVyKHZhbHVlc1sx
530
+ M10pLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5v
531
+ dCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0g
532
+ bW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBtb2RlbCB9
533
+ CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF90
534
+ YXJnZXQnLAogIGNhbGxiYWNrID0gcmVhZF90YXJnZXQsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMn
535
+ IH0sCiAgZGVzY3JpcHRpb24gPSAnUmVhZCB0YXJnZXQnLAp9KQoKLS1bWwogIFJlYWQgZnVsbCB0
536
+ YXJnZXQKLS1dXQpsb2NhbCBmdW5jdGlvbiByZWFkX2Z1bGxfdGFyZ2V0KGtleXMsIGFyZ3MpCiAg
537
+ aWYgI2tleXMgfj0gMyBvciAjYXJncyB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9y
538
+ ZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tl
539
+ eSA9IGtleXNbMV0KICBsb2NhbCB0YXJnZXRfa2V5ID0ga2V5c1syXQogIGxvY2FsIHRhcmdldF9s
540
+ YWJlbHNfa2V5ID0ga2V5c1szXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9r
541
+ ZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElT
542
+ VFMnLCB0YXJnZXRfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgLS0gc3R5
543
+ bHVhOiBpZ25vcmUKICBsb2NhbCB2YWx1ZXMgPSByZWRpcy5jYWxsKAogICAgJ0hNR0VUJywgdGFy
544
+ Z2V0X2tleSwKICAgICdjYW1wYWlnbl9pZCcsCiAgICAndGFyZ2V0X2lkJywKICAgICdhY2Nlc3Nf
545
+ bGV2ZWwnLAogICAgJ2Rvbm9yX3NlY3VyZScsCiAgICAnZG9ub3Jfc3ViJywKICAgICdkb25vcl9k
546
+ b21haW4nLAogICAgJ2Rvbm9yX3BvcnQnLAogICAgJ21pcnJvcl9zZWN1cmUnLAogICAgJ21pcnJv
547
+ cl9zdWInLAogICAgJ21pcnJvcl9wb3J0JywKICAgICdjb25uZWN0X3RpbWVvdXQnLAogICAgJ3Np
548
+ bXBsZV90aW1lb3V0JywKICAgICdzdHJlYW1fdGltZW91dCcsCiAgICAnaGVhZGVyc19zaXplX2xp
549
+ bWl0JywKICAgICdib2R5X3NpemVfbGltaXQnLAogICAgJ21haW5fcGFnZScsCiAgICAnbm90X2Zv
550
+ dW5kX3BhZ2UnLAogICAgJ2Zhdmljb25faWNvJywKICAgICdyb2JvdHNfdHh0JywKICAgICdzaXRl
551
+ bWFwX3htbCcsCiAgICAnYWxsb3dfd2Vic29ja2V0cycsCiAgICAnaXNfZW5hYmxlZCcsCiAgICAn
552
+ bWVzc2FnZV9jb3VudCcsCiAgICAnY3JlYXRlZF9hdCcKICApCgogIGlmICN2YWx1ZXMgfj0gMjQg
553
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQog
554
+ IGVuZAoKICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAg
555
+ dGFyZ2V0X2lkID0gdmFsdWVzWzJdLAogICAgYWNjZXNzX2xldmVsID0gdmFsdWVzWzNdLAogICAg
556
+ ZG9ub3Jfc2VjdXJlID0gdG9udW1iZXIodmFsdWVzWzRdKSwKICAgIGRvbm9yX3N1YiA9IHZhbHVl
557
+ c1s1XSwKICAgIGRvbm9yX2RvbWFpbiA9IHZhbHVlc1s2XSwKICAgIGRvbm9yX3BvcnQgPSB2YWx1
558
+ ZXNbN10sCiAgICBtaXJyb3Jfc2VjdXJlID0gdG9udW1iZXIodmFsdWVzWzhdKSwKICAgIG1pcnJv
559
+ cl9zdWIgPSB2YWx1ZXNbOV0sCiAgICBtaXJyb3JfZG9tYWluID0gcmVkaXMuY2FsbCgnSEdFVCcs
560
+ IGNhbXBhaWduX2tleSwgJ21pcnJvcl9kb21haW4nKSwKICAgIG1pcnJvcl9wb3J0ID0gdmFsdWVz
561
+ WzEwXSwKICAgIGxhYmVscyA9IHJlZGlzLmNhbGwoJ1NNRU1CRVJTJywgdGFyZ2V0X2xhYmVsc19r
562
+ ZXkpLAogICAgY29ubmVjdF90aW1lb3V0ID0gdG9udW1iZXIodmFsdWVzWzExXSksCiAgICBzaW1w
563
+ bGVfdGltZW91dCA9IHRvbnVtYmVyKHZhbHVlc1sxMl0pLAogICAgc3RyZWFtX3RpbWVvdXQgPSB0
564
+ b251bWJlcih2YWx1ZXNbMTNdKSwKICAgIGhlYWRlcnNfc2l6ZV9saW1pdCA9IHRvbnVtYmVyKHZh
565
+ bHVlc1sxNF0pLAogICAgYm9keV9zaXplX2xpbWl0ID0gdG9udW1iZXIodmFsdWVzWzE1XSksCiAg
566
+ ICBtYWluX3BhZ2UgPSB2YWx1ZXNbMTZdLAogICAgbm90X2ZvdW5kX3BhZ2UgPSB2YWx1ZXNbMTdd
567
+ LAogICAgZmF2aWNvbl9pY28gPSB2YWx1ZXNbMThdLAogICAgcm9ib3RzX3R4dCA9IHZhbHVlc1sx
568
+ OV0sCiAgICBzaXRlbWFwX3htbCA9IHZhbHVlc1syMF0sCiAgICBhbGxvd193ZWJzb2NrZXRzID0g
569
+ dG9udW1iZXIodmFsdWVzWzIxXSksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIodmFsdWVzWzIy
570
+ XSksCiAgICBtZXNzYWdlX2NvdW50ID0gdG9udW1iZXIodmFsdWVzWzIzXSksCiAgICBjcmVhdGVk
571
+ X2F0ID0gdG9udW1iZXIodmFsdWVzWzI0XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBh
572
+ aXJzKG1vZGVsKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVy
573
+ cm9yX3JlcGx5KCdFUlIgTWFsZm9ybSBtb2RlbC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgog
574
+ IHJldHVybiB7IG1hcCA9IG1vZGVsIH0KZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAg
575
+ ZnVuY3Rpb25fbmFtZSA9ICdyZWFkX2Z1bGxfdGFyZ2V0JywKICBjYWxsYmFjayA9IHJlYWRfZnVs
576
+ bF90YXJnZXQsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnUmVh
577
+ ZCBmdWxsIHRhcmdldCcsCn0pCgotLVtbCiAgRmluZCB0YXJnZXQgbGluawotLV1dCmxvY2FsIGZ1
578
+ bmN0aW9uIGZpbmRfdGFyZ2V0X2xpbmsoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAxIG9yICNh
579
+ cmdzIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVu
580
+ Y3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgdGFyZ2V0X21pcnJvcl9ob3N0c19rZXkgPSBrZXlz
581
+ WzFdCgogIGxvY2FsIG1pcnJvcl9ob3N0ID0gYXJnc1sxXQoKICBpZiBub3QgKG1pcnJvcl9ob3N0
582
+ IGFuZCBtaXJyb3JfaG9zdCB+PSAnJykgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5
583
+ KCdFUlIgV3JvbmcgbWlycm9yX2hvc3QnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdIRVhJU1RT
584
+ JywgdGFyZ2V0X21pcnJvcl9ob3N0c19rZXksIG1pcnJvcl9ob3N0KSB+PSAxIHRoZW4KICAgIHJl
585
+ dHVybiBuaWwKICBlbmQKCiAgbG9jYWwgdGFyZ2V0X2xpbmsgPSByZWRpcy5jYWxsKCdIR0VUJywg
586
+ dGFyZ2V0X21pcnJvcl9ob3N0c19rZXksIG1pcnJvcl9ob3N0KQogIGxvY2FsIGNhbXBhaWduX2lk
587
+ LCB0YXJnZXRfaWQgPSBzdHJpbmcubWF0Y2godGFyZ2V0X2xpbmssICcoW15cdF0rKVx0KFteXHRd
588
+ KyknKQoKICBpZiBub3QgKGNhbXBhaWduX2lkIGFuZCBjYW1wYWlnbl9pZCB+PSAnJyBhbmQgdGFy
589
+ Z2V0X2lkIGFuZCB0YXJnZXRfaWQgfj0gJycpIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9y
590
+ ZXBseSgnRVJSIE1hbGZvcm0gdGFyZ2V0X2xpbmsnKQogIGVuZAoKICByZXR1cm4geyBjYW1wYWln
591
+ bl9pZCwgdGFyZ2V0X2lkIH0KZW5kCgpyZWRpcy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rp
592
+ b25fbmFtZSA9ICdmaW5kX3RhcmdldF9saW5rJywKICBjYWxsYmFjayA9IGZpbmRfdGFyZ2V0X2xp
593
+ bmssCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnRmluZCB0YXJn
594
+ ZXQgbGluaycsCn0pCgotLVtbCiAgUmVhZCB0YXJnZXQgaW5kZXgKLS1dXQpsb2NhbCBmdW5jdGlv
595
+ biByZWFkX3RhcmdldF9pbmRleChrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mg
596
+ fj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlv
597
+ biB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgdGFy
598
+ Z2V0X2luZGV4X2tleSA9IGtleXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFp
599
+ Z25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgcmV0dXJuIHJlZGlzLmNh
600
+ bGwoJ1pSQU5HRScsIHRhcmdldF9pbmRleF9rZXksIDAsIC0xKQplbmQKCnJlZGlzLnJlZ2lzdGVy
601
+ X2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ3JlYWRfdGFyZ2V0X2luZGV4JywKICBjYWxs
602
+ YmFjayA9IHJlYWRfdGFyZ2V0X2luZGV4LAogIGZsYWdzID0geyAnbm8td3JpdGVzJyB9LAogIGRl
603
+ c2NyaXB0aW9uID0gJ1JlYWQgdGFyZ2V0IGluZGV4JywKfSkKCi0tW1sKICBVcGRhdGUgdGFyZ2V0
604
+ Ci0tXV0KbG9jYWwgZnVuY3Rpb24gdXBkYXRlX3RhcmdldChrZXlzLCBhcmdzKQogIGlmICNrZXlz
605
+ IH49IDMgb3IgI2FyZ3MgPCAxIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJS
606
+ IFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNb
607
+ MV0KICBsb2NhbCBjYW1wYWlnbl9sb2NrX2tleSA9IGtleXNbMl0KICBsb2NhbCB0YXJnZXRfa2V5
608
+ ID0ga2V5c1szXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEg
609
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5v
610
+ dCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2Nr
611
+ X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4g
612
+ Q2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHRh
613
+ cmdldF9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZP
614
+ VU5EIFRhcmdldCBub3QgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2Nr
615
+ X3NlY3JldCA9IHRhYmxlLnJlbW92ZShhcmdzKSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRp
616
+ cy5jYWxsKCdHRVQnLCBjYW1wYWlnbl9sb2NrX2tleSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVl
617
+ IGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJl
618
+ ZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAoKICAg
619
+ IGlmIChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0
620
+ JykgYW5kIHZhbHVlID09ICcnIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdF
621
+ UlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiAjYXJncyAlIDIg
622
+ fj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBPZGQgbnVtYmVyIG9m
623
+ IGFyZ3MnKQogIGVuZAoKICBsb2NhbCBtb2RlbCA9IHt9CgogIGZvciBpID0gMSwgI2FyZ3MsIDIg
624
+ ZG8KICAgIGxvY2FsIGZpZWxkLCB2YWx1ZSA9IGFyZ3NbaV0sIGFyZ3NbaSArIDFdCgogICAgaWYg
625
+ bW9kZWxbZmllbGRdIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgRHVw
626
+ bGljYXRlIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiBmaWVsZCA9PSAnY29ubmVj
627
+ dF90aW1lb3V0JyB0aGVuCiAgICAgIG1vZGVsLmNvbm5lY3RfdGltZW91dCA9IHRvbnVtYmVyKHZh
628
+ bHVlKQogICAgZWxzZWlmIGZpZWxkID09ICdzaW1wbGVfdGltZW91dCcgdGhlbgogICAgICBtb2Rl
629
+ bC5zaW1wbGVfdGltZW91dCA9IHRvbnVtYmVyKHZhbHVlKQogICAgZWxzZWlmIGZpZWxkID09ICdz
630
+ dHJlYW1fdGltZW91dCcgdGhlbgogICAgICBtb2RlbC5zdHJlYW1fdGltZW91dCA9IHRvbnVtYmVy
631
+ KHZhbHVlKQogICAgZWxzZWlmIGZpZWxkID09ICdoZWFkZXJzX3NpemVfbGltaXQnIHRoZW4KICAg
632
+ ICAgbW9kZWwuaGVhZGVyc19zaXplX2xpbWl0ID0gdG9udW1iZXIodmFsdWUpCiAgICBlbHNlaWYg
633
+ ZmllbGQgPT0gJ2JvZHlfc2l6ZV9saW1pdCcgdGhlbgogICAgICBtb2RlbC5ib2R5X3NpemVfbGlt
634
+ aXQgPSB0b251bWJlcih2YWx1ZSkKICAgIGVsc2VpZiBmaWVsZCA9PSAnbWFpbl9wYWdlJyB0aGVu
635
+ CiAgICAgIG1vZGVsLm1haW5fcGFnZSA9IHZhbHVlCiAgICBlbHNlaWYgZmllbGQgPT0gJ25vdF9m
636
+ b3VuZF9wYWdlJyB0aGVuCiAgICAgIG1vZGVsLm5vdF9mb3VuZF9wYWdlID0gdmFsdWUKICAgIGVs
637
+ c2VpZiBmaWVsZCA9PSAnZmF2aWNvbl9pY28nIHRoZW4KICAgICAgbW9kZWwuZmF2aWNvbl9pY28g
638
+ PSB2YWx1ZQogICAgZWxzZWlmIGZpZWxkID09ICdyb2JvdHNfdHh0JyB0aGVuCiAgICAgIG1vZGVs
639
+ LnJvYm90c190eHQgPSB2YWx1ZQogICAgZWxzZWlmIGZpZWxkID09ICdzaXRlbWFwX3htbCcgdGhl
640
+ bgogICAgICBtb2RlbC5zaXRlbWFwX3htbCA9IHZhbHVlCiAgICBlbHNlaWYgZmllbGQgPT0gJ2Fs
641
+ bG93X3dlYnNvY2tldHMnIHRoZW4KICAgICAgbW9kZWwuYWxsb3dfd2Vic29ja2V0cyA9IHRvbnVt
642
+ YmVyKHZhbHVlKQogICAgZWxzZQogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBV
643
+ bmtub3duIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgZm9yIGZpZWxkLCB2YWx1
644
+ ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiBy
645
+ ZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIG1vZGVsLicgLi4gZmllbGQpCiAgICBlbmQKICBl
646
+ bmQKCiAgaWYgbmV4dChtb2RlbCkgPT0gbmlsIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNf
647
+ cmVwbHkoJ09LIE5vdGhpbmcgdG8gdXBkYXRlJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2Nr
648
+ X3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVz
649
+ X3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90IG1hdGNoJykKICBlbmQK
650
+ CiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIGxvY2FsIHN0b3JlID0ge30KCiAgZm9yIGZpZWxk
651
+ LCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIHRhYmxlLmluc2VydChzdG9yZSwgZmllbGQp
652
+ CiAgICB0YWJsZS5pbnNlcnQoc3RvcmUsIHZhbHVlKQogIGVuZAoKICByZWRpcy5jYWxsKCdIU0VU
653
+ JywgdGFyZ2V0X2tleSwgdW5wYWNrKHN0b3JlKSkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBs
654
+ eSgnT0sgVGFyZ2V0IHVwZGF0ZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBm
655
+ dW5jdGlvbl9uYW1lID0gJ3VwZGF0ZV90YXJnZXQnLAogIGNhbGxiYWNrID0gdXBkYXRlX3Rhcmdl
656
+ dCwKICBkZXNjcmlwdGlvbiA9ICdVcGRhdGUgdGFyZ2V0JywKfSkKCi0tW1sKICBFbmFibGUgdGFy
657
+ Z2V0Ci0tXV0KbG9jYWwgZnVuY3Rpb24gZW5hYmxlX3RhcmdldChrZXlzLCBhcmdzKQogIGlmICNr
658
+ ZXlzIH49IDMgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHko
659
+ J0VSUiBXcm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBr
660
+ ZXlzWzFdCiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgdGFyZ2V0
661
+ X2tleSA9IGtleXNbM10KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+
662
+ PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWln
663
+ biBub3QgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25f
664
+ bG9ja19rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklE
665
+ REVOIENhbXBhaWduIG5vdCBsb2NrZWQnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMn
666
+ LCB0YXJnZXRfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05P
667
+ VF9GT1VORCBUYXJnZXQgbm90IGV4aXN0cycpCiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAg
668
+ bG9ja19zZWNyZXQgPSBhcmdzWzFdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwo
669
+ J0dFVCcsIGNhbXBhaWduX2xvY2tfa2V5KSwKICAgIGlzX2VuYWJsZWQgPSB0b251bWJlcihyZWRp
670
+ cy5jYWxsKCdIR0VUJywgdGFyZ2V0X2tleSwgJ2lzX2VuYWJsZWQnKSksCiAgfQoKICBmb3IgZmll
671
+ bGQsIHZhbHVlIGluIHBhaXJzKHN0YXNoKSBkbwogICAgaWYgbm90IHZhbHVlIHRoZW4KICAgICAg
672
+ cmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAg
673
+ IGVuZAoKICAgIGlmIChmaWVsZCA9PSAnbG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xv
674
+ Y2tfc2VjcmV0JykgYW5kIHZhbHVlID09ICcnIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9y
675
+ X3JlcGx5KCdFUlIgV3Jvbmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiBz
676
+ dGFzaC5pc19lbmFibGVkIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgn
677
+ T0sgVGFyZ2V0IGFsbHJlYWR5IGVuYWJsZWQnKQogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tf
678
+ c2VjcmV0IH49IHN0YXNoLmxvY2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNf
679
+ cmVwbHkoJ0ZPUkJJRERFTiBDYW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoK
680
+ ICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAgcmVkaXMuY2FsbCgnSFNFVCcsIHRhcmdldF9rZXks
681
+ ICdpc19lbmFibGVkJywgMSkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgVGFyZ2V0
682
+ IGVuYWJsZWQnKQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1l
683
+ ID0gJ2VuYWJsZV90YXJnZXQnLAogIGNhbGxiYWNrID0gZW5hYmxlX3RhcmdldCwKICBkZXNjcmlw
684
+ dGlvbiA9ICdFbmFibGUgdGFyZ2V0JywKfSkKCi0tW1sKICBEaXNhYmxlIHRhcmdldAotLV1dCmxv
685
+ Y2FsIGZ1bmN0aW9uIGRpc2FibGVfdGFyZ2V0KGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMyBv
686
+ ciAjYXJncyB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25n
687
+ IGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBs
688
+ b2NhbCBjYW1wYWlnbl9sb2NrX2tleSA9IGtleXNbMl0KICBsb2NhbCB0YXJnZXRfa2V5ID0ga2V5
689
+ c1szXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgog
690
+ ICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlz
691
+ dHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9sb2NrX2tleSkg
692
+ fj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFp
693
+ Z24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHRhcmdldF9r
694
+ ZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFRh
695
+ cmdldCBub3QgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAgICBsb2NrX3NlY3Jl
696
+ dCA9IGFyZ3NbMV0sCiAgICBvcmlnX2xvY2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywgY2Ft
697
+ cGFpZ25fbG9ja19rZXkpLAogICAgaXNfZW5hYmxlZCA9IHRvbnVtYmVyKHJlZGlzLmNhbGwoJ0hH
698
+ RVQnLCB0YXJnZXRfa2V5LCAnaXNfZW5hYmxlZCcpKSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUg
699
+ aW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVk
700
+ aXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAg
701
+ aWYgKGZpZWxkID09ICdsb2NrX3NlY3JldCcgb3IgZmllbGQgPT0gJ29yaWdfbG9ja19zZWNyZXQn
702
+ KSBhbmQgdmFsdWUgPT0gJycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VS
703
+ UiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGlmIHN0YXNoLmlzX2Vu
704
+ YWJsZWQgPT0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBUYXJnZXQg
705
+ YWxscmVhZHkgZGlzYWJsZWQnKQogIGVuZAoKICBpZiBzdGFzaC5vcmlnX2xvY2tfc2VjcmV0IH49
706
+ IHN0YXNoLmxvY2tfc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZP
707
+ UkJJRERFTiBDYW1wYWlnbiBsb2NrX3NlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICAtLSBQb2lu
708
+ dCBvZiBubyByZXR1cm4KCiAgcmVkaXMuY2FsbCgnSFNFVCcsIHRhcmdldF9rZXksICdpc19lbmFi
709
+ bGVkJywgMCkKCiAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgVGFyZ2V0IGRpYWJsZWQn
710
+ KQplbmQKCnJlZGlzLnJlZ2lzdGVyX2Z1bmN0aW9uKHsKICBmdW5jdGlvbl9uYW1lID0gJ2Rpc2Fi
711
+ bGVfdGFyZ2V0JywKICBjYWxsYmFjayA9IGRpc2FibGVfdGFyZ2V0LAogIGRlc2NyaXB0aW9uID0g
712
+ J0Rpc2FibGUgdGFyZ2V0JywKfSkKCi0tW1sKICBBcHBlbmQgdGFyZ2V0IGxhYmVsCi0tXV0KbG9j
713
+ YWwgZnVuY3Rpb24gYXBwZW5kX3RhcmdldF9sYWJlbChrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49
714
+ IDQgb3IgI2FyZ3Mgfj0gMiB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBX
715
+ cm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFd
716
+ CiAgbG9jYWwgY2FtcGFpZ25fbG9ja19rZXkgPSBrZXlzWzJdCiAgbG9jYWwgdGFyZ2V0X2tleSA9
717
+ IGtleXNbM10KICBsb2NhbCB0YXJnZXRfbGFiZWxzX2tleSA9IGtleXNbNF0KCiAgaWYgcmVkaXMu
718
+ Y2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5z
719
+ dGF0dXNfcmVwbHkoJ05PVF9GT1VORCBDYW1wYWlnbiBub3QgZXhpc3RzJykKICBlbmQKCiAgaWYg
720
+ cmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fbG9ja19rZXkpIH49IDEgdGhlbgogICAgcmV0
721
+ dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklEREVOIENhbXBhaWduIG5vdCBsb2NrZWQnKQog
722
+ IGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCB0YXJnZXRfa2V5KSB+PSAxIHRoZW4KICAg
723
+ IHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VORCBUYXJnZXQgbm90IGV4aXN0cycp
724
+ CiAgZW5kCgogIGxvY2FsIHN0YXNoID0gewogICAgbGFiZWwgPSBhcmdzWzFdLAogICAgbG9ja19z
725
+ ZWNyZXQgPSBhcmdzWzJdLAogICAgb3JpZ19sb2NrX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0dFVCcs
726
+ IGNhbXBhaWduX2xvY2tfa2V5KSwKICB9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMoc3Rh
727
+ c2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVw
728
+ bHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCgogICAgaWYKICAgICAgKGZp
729
+ ZWxkID09ICdsYWJlbCcgb3IgZmllbGQgPT0gJ2xvY2tfc2VjcmV0JyBvciBmaWVsZCA9PSAnb3Jp
730
+ Z19sb2NrX3NlY3JldCcpIGFuZCB2YWx1ZSA9PSAnJwogICAgdGhlbgogICAgICByZXR1cm4gcmVk
731
+ aXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5k
732
+ CgogIGlmIHJlZGlzLmNhbGwoJ1NJU01FTUJFUicsIHRhcmdldF9sYWJlbHNfa2V5LCBzdGFzaC5s
733
+ YWJlbCkgfj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBUYXJnZXQg
734
+ bGFiZWwgYWxscmVhZHkgZXhpc3RzJykKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19sb2NrX3NlY3Jl
735
+ dCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5
736
+ KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQgbm90IG1hdGNoJykKICBlbmQKCiAgLS0g
737
+ UG9pbnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNhbGwoJ1NBREQnLCB0YXJnZXRfbGFiZWxzX2tl
738
+ eSwgc3Rhc2gubGFiZWwpCgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFRhcmdldCBs
739
+ YWJlbCBhcHBlbmRlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9u
740
+ X25hbWUgPSAnYXBwZW5kX3RhcmdldF9sYWJlbCcsCiAgY2FsbGJhY2sgPSBhcHBlbmRfdGFyZ2V0
741
+ X2xhYmVsLAogIGRlc2NyaXB0aW9uID0gJ0FwcGVuZCB0YXJnZXQgbGFiZWwnLAp9KQoKLS1bWwog
742
+ IFJlbW92ZSB0YXJnZXQgbGFiZWwKLS1dXQpsb2NhbCBmdW5jdGlvbiByZW1vdmVfdGFyZ2V0X2xh
743
+ YmVsKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gNCBvciAjYXJncyB+PSAyIHRoZW4KICAgIHJl
740
744
  dHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgog
741
745
  IGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBjYW1wYWlnbl9sb2NrX2tleSA9
742
746
  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`,
747
+ bHNfa2V5ID0ga2V5c1s0XQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkp
748
+ IH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBh
749
+ aWduIG5vdCBleGlzdHMnKQogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWln
750
+ bl9sb2NrX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JC
751
+ SURERU4gQ2FtcGFpZ24gbm90IGxvY2tlZCcpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
752
+ UycsIHRhcmdldF9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgn
753
+ Tk9UX0ZPVU5EIFRhcmdldCBub3QgZXhpc3RzJykKICBlbmQKCiAgbG9jYWwgc3Rhc2ggPSB7CiAg
754
+ ICBsYWJlbCA9IGFyZ3NbMV0sCiAgICBsb2NrX3NlY3JldCA9IGFyZ3NbMl0sCiAgICBvcmlnX2xv
755
+ Y2tfc2VjcmV0ID0gcmVkaXMuY2FsbCgnR0VUJywgY2FtcGFpZ25fbG9ja19rZXkpLAogIH0KCiAg
756
+ Zm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVu
757
+ CiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmll
758
+ bGQpCiAgICBlbmQKCiAgICBpZgogICAgICAoZmllbGQgPT0gJ2xhYmVsJyBvciBmaWVsZCA9PSAn
759
+ bG9ja19zZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JykgYW5kIHZhbHVlID09
760
+ ICcnCiAgICB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0
761
+ YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnU0lTTUVNQkVS
762
+ JywgdGFyZ2V0X2xhYmVsc19rZXksIHN0YXNoLmxhYmVsKSB+PSAxIHRoZW4KICAgIHJldHVybiBy
763
+ ZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFRhcmdldCBsYWJlbCBub3QgZXhpc3RzJykKICBlbmQKCiAg
764
+ aWYgc3Rhc2gub3JpZ19sb2NrX3NlY3JldCB+PSBzdGFzaC5sb2NrX3NlY3JldCB0aGVuCiAgICBy
765
+ ZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gQ2FtcGFpZ24gbG9ja19zZWNyZXQg
766
+ bm90IG1hdGNoJykKICBlbmQKCiAgLS0gUG9pbnQgb2Ygbm8gcmV0dXJuCgogIHJlZGlzLmNhbGwo
767
+ J1NSRU0nLCB0YXJnZXRfbGFiZWxzX2tleSwgc3Rhc2gubGFiZWwpCgogIHJldHVybiByZWRpcy5z
768
+ dGF0dXNfcmVwbHkoJ09LIFRhcmdldCBsYWJlbCByZW1vdmVkJykKZW5kCgpyZWRpcy5yZWdpc3Rl
769
+ cl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdyZW1vdmVfdGFyZ2V0X2xhYmVsJywKICBj
770
+ YWxsYmFjayA9IHJlbW92ZV90YXJnZXRfbGFiZWwsCiAgZGVzY3JpcHRpb24gPSAnUmVtb3ZlIHRh
771
+ cmdldCBsYWJlbCcsCn0pCgotLVtbCiAgRGVsZXRlIHRhcmdldAotLV1dCmxvY2FsIGZ1bmN0aW9u
772
+ IGRlbGV0ZV90YXJnZXQoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSA4IG9yICNhcmdzIH49IDEg
773
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNl
774
+ JykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIGNhbXBhaWdu
775
+ X2xvY2tfa2V5ID0ga2V5c1syXQogIGxvY2FsIHRhcmdldF9rZXkgPSBrZXlzWzNdCiAgbG9jYWwg
776
+ dGFyZ2V0X2xhYmVsc19rZXkgPSBrZXlzWzRdCiAgbG9jYWwgdGFyZ2V0X2Rvbm9yc19rZXkgPSBr
777
+ ZXlzWzVdCiAgbG9jYWwgdGFyZ2V0X21pcnJvcnNfa2V5ID0ga2V5c1s2XQogIGxvY2FsIHRhcmdl
778
+ dF9taXJyb3JfaG9zdHNfa2V5ID0ga2V5c1s3XQogIGxvY2FsIHRhcmdldF9pbmRleF9rZXkgPSBr
779
+ ZXlzWzhdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkgfj0gMSB0aGVu
780
+ CiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFpZ24gbm90IGV4
781
+ aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2xvY2tfa2V5
782
+ KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBDYW1w
783
+ YWlnbiBub3QgbG9ja2VkJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgdGFyZ2V0
784
+ X2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQg
785
+ VGFyZ2V0IG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGxvY2tfc2Vj
786
+ cmV0ID0gYXJnc1sxXSwKICAgIG9yaWdfbG9ja19zZWNyZXQgPSByZWRpcy5jYWxsKCdHRVQnLCBj
787
+ YW1wYWlnbl9sb2NrX2tleSksCiAgICBjYW1wYWlnbl9pZCA9IHJlZGlzLmNhbGwoJ0hHRVQnLCB0
788
+ YXJnZXRfa2V5LCAnY2FtcGFpZ25faWQnKSwKICAgIHRhcmdldF9pZCA9IHJlZGlzLmNhbGwoJ0hH
789
+ RVQnLCB0YXJnZXRfa2V5LCAndGFyZ2V0X2lkJyksCiAgICBkb25vcl9zdWIgPSByZWRpcy5jYWxs
790
+ KCdIR0VUJywgdGFyZ2V0X2tleSwgJ2Rvbm9yX3N1YicpLAogICAgZG9ub3JfZG9tYWluID0gcmVk
791
+ aXMuY2FsbCgnSEdFVCcsIHRhcmdldF9rZXksICdkb25vcl9kb21haW4nKSwKICAgIGRvbm9yX3Bv
792
+ cnQgPSByZWRpcy5jYWxsKCdIR0VUJywgdGFyZ2V0X2tleSwgJ2Rvbm9yX3BvcnQnKSwKICAgIG1p
793
+ cnJvcl9zdWIgPSByZWRpcy5jYWxsKCdIR0VUJywgdGFyZ2V0X2tleSwgJ21pcnJvcl9zdWInKSwK
794
+ ICAgIG1pcnJvcl9kb21haW4gPSByZWRpcy5jYWxsKCdIR0VUJywgY2FtcGFpZ25fa2V5LCAnbWly
795
+ cm9yX2RvbWFpbicpLAogICAgbWlycm9yX3BvcnQgPSByZWRpcy5jYWxsKCdIR0VUJywgdGFyZ2V0
796
+ X2tleSwgJ21pcnJvcl9wb3J0JyksCiAgICBpc19lbmFibGVkID0gdG9udW1iZXIocmVkaXMuY2Fs
797
+ bCgnSEdFVCcsIHRhcmdldF9rZXksICdpc19lbmFibGVkJykpLAogIH0KCiAgZm9yIGZpZWxkLCB2
798
+ YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVy
799
+ biByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQK
800
+ CiAgICBpZgogICAgICAoCiAgICAgICAgZmllbGQgPT0gJ2xvY2tfc2VjcmV0JwogICAgICAgIG9y
801
+ IGZpZWxkID09ICdvcmlnX2xvY2tfc2VjcmV0JwogICAgICAgIG9yIGZpZWxkID09ICdjYW1wYWln
802
+ bl9pZCcKICAgICAgICBvciBmaWVsZCA9PSAndGFyZ2V0X2lkJwogICAgICAgIG9yIGZpZWxkID09
803
+ ICdkb25vcl9zdWInCiAgICAgICAgb3IgZmllbGQgPT0gJ2Rvbm9yX2RvbWFpbicKICAgICAgICBv
804
+ ciBmaWVsZCA9PSAnZG9ub3JfcG9ydCcKICAgICAgICBvciBmaWVsZCA9PSAnbWlycm9yX3N1YicK
805
+ ICAgICAgICBvciBmaWVsZCA9PSAnbWlycm9yX2RvbWFpbicKICAgICAgICBvciBmaWVsZCA9PSAn
806
+ bWlycm9yX3BvcnQnCiAgICAgICkgYW5kIHZhbHVlID09ICcnCiAgICB0aGVuCiAgICAgIHJldHVy
807
+ biByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQK
808
+ ICBlbmQKCiAgLS0gc3R5bHVhOiBpZ25vcmUKICBsb2NhbCBkb25vcl9zdHIgPSBzdGFzaC5jYW1w
809
+ YWlnbl9pZAogICAgLi4gJ1x0JyAuLiBzdGFzaC5kb25vcl9zdWIKICAgIC4uICdcdCcgLi4gc3Rh
810
+ c2guZG9ub3JfZG9tYWluCiAgICAuLiAnXHQnIC4uIHN0YXNoLmRvbm9yX3BvcnQKCiAgLS0gc3R5
811
+ bHVhOiBpZ25vcmUKICBsb2NhbCBtaXJyb3Jfc3RyID0gc3Rhc2guY2FtcGFpZ25faWQKICAgIC4u
812
+ ICdcdCcgLi4gc3Rhc2gubWlycm9yX3N1YgogICAgLi4gJ1x0JyAuLiBzdGFzaC5taXJyb3JfcG9y
813
+ dAoKICBsb2NhbCBtaXJyb3JfaG9zdG5hbWUgPSBzdGFzaC5taXJyb3Jfc3ViIH49ICcuJwogICAg
814
+ ICBhbmQgKHN0YXNoLm1pcnJvcl9zdWIgLi4gJy4nIC4uIHN0YXNoLm1pcnJvcl9kb21haW4pCiAg
815
+ ICBvciBzdGFzaC5taXJyb3JfZG9tYWluCiAgbG9jYWwgbWlycm9yX2hvc3QgPSBtaXJyb3JfaG9z
816
+ dG5hbWUgLi4gJzonIC4uIHN0YXNoLm1pcnJvcl9wb3J0CgogIGlmIHN0YXNoLmlzX2VuYWJsZWQg
817
+ fj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdGT1JCSURERU4gVGFyZ2V0
818
+ IG5vdCBkaXNhYmxlZCcpCiAgZW5kCgogIGlmIHN0YXNoLm9yaWdfbG9ja19zZWNyZXQgfj0gc3Rh
819
+ c2gubG9ja19zZWNyZXQgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnRk9SQklE
820
+ REVOIENhbXBhaWduIGxvY2tfc2VjcmV0IG5vdCBtYXRjaCcpCiAgZW5kCgogIC0tIFBvaW50IG9m
821
+ IG5vIHJldHVybgoKICByZWRpcy5jYWxsKCdERUwnLCB0YXJnZXRfa2V5KQogIHJlZGlzLmNhbGwo
822
+ J0RFTCcsIHRhcmdldF9sYWJlbHNfa2V5KQoKICByZWRpcy5jYWxsKCdTUkVNJywgdGFyZ2V0X2Rv
823
+ bm9yc19rZXksIGRvbm9yX3N0cikKICByZWRpcy5jYWxsKCdTUkVNJywgdGFyZ2V0X21pcnJvcnNf
824
+ a2V5LCBtaXJyb3Jfc3RyKQoKICByZWRpcy5jYWxsKCdIREVMJywgdGFyZ2V0X21pcnJvcl9ob3N0
825
+ c19rZXksIG1pcnJvcl9ob3N0KQoKICByZWRpcy5jYWxsKCdaUkVNJywgdGFyZ2V0X2luZGV4X2tl
826
+ eSwgc3Rhc2gudGFyZ2V0X2lkKQoKICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdPSyBUYXJn
827
+ ZXQgZGVsZXRlZCcpCmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25h
828
+ bWUgPSAnZGVsZXRlX3RhcmdldCcsCiAgY2FsbGJhY2sgPSBkZWxldGVfdGFyZ2V0LAogIGRlc2Ny
829
+ aXB0aW9uID0gJ0RlbGV0ZSB0YXJnZXQnLAp9KQo=`,
797
830
  '4-redirector.lua',
798
831
  `IyFsdWEgbmFtZT1yZWRpcmVjdG9yCgotLVtbCiAgQ3JlYXRlIHJlZGlyZWN0b3IKLS1dXQpsb2Nh
799
832
  bCBmdW5jdGlvbiBjcmVhdGVfcmVkaXJlY3RvcihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDQg
@@ -1166,109 +1199,110 @@ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgTm8gZW5hYmxlZCBwcm94aWVz
1166
1199
  IGZvdW5kJykKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7CiAgICBjYW1wYWlnbl9pZCA9IGFyZ3Nb
1167
1200
  MV0sCiAgICBzZXNzaW9uX2lkID0gYXJnc1syXSwKICAgIHByb3h5X2lkID0gcmVkaXMuY2FsbCgn
1168
1201
  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=`,
1202
+ WzNdLAogICAgaXNfdXBncmFkZWQgPSAwLAogICAgbWVzc2FnZV9jb3VudCA9IDAsCiAgICBjcmVh
1203
+ dGVkX2F0ID0gdG9udW1iZXIoYXJnc1s0XSksCiAgICBhdXRob3JpemVkX2F0ID0gdG9udW1iZXIo
1204
+ YXJnc1s0XSksCiAgfQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAg
1205
+ aWYgbm90IHZhbHVlIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jv
1206
+ bmcgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAoKICAgIGlmCiAgICAgIChmaWVsZCA9PSAnY2Ft
1207
+ cGFpZ25faWQnIG9yIGZpZWxkID09ICdzZXNzaW9uX2lkJyBvciBmaWVsZCA9PSAncHJveHlfaWQn
1208
+ IG9yIGZpZWxkID09ICdzZWNyZXQnKQogICAgICBhbmQgdmFsdWUgPT0gJycKICAgIHRoZW4KICAg
1209
+ ICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9kZWwuJyAuLiBmaWVsZCkK
1210
+ ICAgIGVuZAogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAgbG9jYWwgc3RvcmUgPSB7
1211
+ fQoKICBmb3IgZmllbGQsIHZhbHVlIGluIHBhaXJzKG1vZGVsKSBkbwogICAgdGFibGUuaW5zZXJ0
1212
+ KHN0b3JlLCBmaWVsZCkKICAgIHRhYmxlLmluc2VydChzdG9yZSwgdmFsdWUpCiAgZW5kCgogIHJl
1213
+ ZGlzLmNhbGwoJ0hTRVQnLCBzZXNzaW9uX2tleSwgdW5wYWNrKHN0b3JlKSkKCiAgcmVkaXMuY2Fs
1214
+ bCgnSElOQ1JCWScsIGNhbXBhaWduX2tleSwgJ3Nlc3Npb25fY291bnQnLCAxKQoKICByZWRpcy5j
1215
+ YWxsKCdQRVhQSVJFJywgc2Vzc2lvbl9rZXksIHN0YXNoLm5ld19zZXNzaW9uX2V4cGlyZSkKCiAg
1216
+ cmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnT0sgU2Vzc2lvbiBjcmVhdGVkJykKZW5kCgpyZWRp
1217
+ cy5yZWdpc3Rlcl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdjcmVhdGVfc2Vzc2lvbics
1218
+ CiAgY2FsbGJhY2sgPSBjcmVhdGVfc2Vzc2lvbiwKICBkZXNjcmlwdGlvbiA9ICdDcmVhdGUgc2Vz
1219
+ c2lvbicsCn0pCgotLVtbCiAgUmVhZCBzZXNzaW9uCi0tXV0KbG9jYWwgZnVuY3Rpb24gcmVhZF9z
1220
+ ZXNzaW9uKGtleXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMiBvciAjYXJncyB+PSAwIHRoZW4KICAg
1221
+ IHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5k
1222
+ CgogIGxvY2FsIGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBzZXNzaW9uX2tleSA9IGtl
1223
+ eXNbMl0KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFpZ25fa2V5KSB+PSAxIHRoZW4K
1224
+ ICAgIHJldHVybiBuaWwKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgc2Vzc2lvbl9r
1225
+ ZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICAtLSBzdHlsdWE6IGlnbm9yZQog
1226
+ IGxvY2FsIHZhbHVlcyA9IHJlZGlzLmNhbGwoCiAgICAnSE1HRVQnLCBzZXNzaW9uX2tleSwKICAg
1227
+ ICdjYW1wYWlnbl9pZCcsCiAgICAnc2Vzc2lvbl9pZCcsCiAgICAncHJveHlfaWQnLAogICAgJ3Nl
1228
+ Y3JldCcsCiAgICAnaXNfdXBncmFkZWQnLAogICAgJ21lc3NhZ2VfY291bnQnLAogICAgJ2NyZWF0
1229
+ ZWRfYXQnLAogICAgJ2F1dGhvcml6ZWRfYXQnCiAgKQoKICBpZiAjdmFsdWVzIH49IDggdGhlbgog
1230
+ ICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgTWFsZm9ybSB2YWx1ZXMnKQogIGVuZAoK
1231
+ ICBsb2NhbCBtb2RlbCA9IHsKICAgIGNhbXBhaWduX2lkID0gdmFsdWVzWzFdLAogICAgc2Vzc2lv
1232
+ bl9pZCA9IHZhbHVlc1syXSwKICAgIHByb3h5X2lkID0gdmFsdWVzWzNdLAogICAgc2VjcmV0ID0g
1233
+ dmFsdWVzWzRdLAogICAgaXNfdXBncmFkZWQgPSB0b251bWJlcih2YWx1ZXNbNV0pLAogICAgbWVz
1234
+ c2FnZV9jb3VudCA9IHRvbnVtYmVyKHZhbHVlc1s2XSksCiAgICBjcmVhdGVkX2F0ID0gdG9udW1i
1235
+ ZXIodmFsdWVzWzddKSwKICAgIGF1dGhvcml6ZWRfYXQgPSB0b251bWJlcih2YWx1ZXNbOF0pLAog
1236
+ IH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1
1237
+ ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwu
1238
+ JyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoK
1239
+ cmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAncmVhZF9zZXNzaW9u
1240
+ JywKICBjYWxsYmFjayA9IHJlYWRfc2Vzc2lvbiwKICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwK
1241
+ ICBkZXNjcmlwdGlvbiA9ICdSZWFkIHNlc3Npb24nLAp9KQoKLS1bWwogIEF1dGggc2Vzc2lvbgot
1242
+ LV1dCmxvY2FsIGZ1bmN0aW9uIGF1dGhfc2Vzc2lvbihrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49
1243
+ IDMgb3IgI2FyZ3Mgfj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBX
1244
+ cm9uZyBmdW5jdGlvbiB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFd
1245
+ CiAgbG9jYWwgc2Vzc2lvbl9rZXkgPSBrZXlzWzJdCiAgbG9jYWwgZW5hYmxlZF9wcm94eV9pbmRl
1246
+ eF9rZXkgPSBrZXlzWzNdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tleSkg
1247
+ fj0gMSB0aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgQ2FtcGFp
1248
+ Z24gbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHNlc3Npb25f
1249
+ a2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJRERFTiBT
1250
+ ZXNzaW9uIG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIGF1dGhvcml6
1251
+ ZWRfYXQgPSB0b251bWJlcihhcmdzWzFdKSwKICAgIHByb3h5X2lkID0gcmVkaXMuY2FsbCgnSEdF
1252
+ VCcsIHNlc3Npb25fa2V5LCAncHJveHlfaWQnKSwKICAgIHNlc3Npb25fZXhwaXJlID0gdG9udW1i
1253
+ ZXIocmVkaXMuY2FsbCgnSEdFVCcsIGNhbXBhaWduX2tleSwgJ3Nlc3Npb25fZXhwaXJlJykpLAog
1254
+ IH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyhzdGFzaCkgZG8KICAgIGlmIG5vdCB2YWx1
1255
+ ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNoLicg
1256
+ Li4gZmllbGQpCiAgICBlbmQKCiAgICBpZiBmaWVsZCA9PSAncHJveHlfaWQnIGFuZCB2YWx1ZSA9
1257
+ PSAnJyB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIHN0YXNo
1258
+ LicgLi4gZmllbGQpCiAgICBlbmQKCiAgICBpZiBmaWVsZCA9PSAnc2Vzc2lvbl9leHBpcmUnIGFu
1259
+ ZCB2YWx1ZSA8PSAwIHRoZW4KICAgICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jv
1260
+ bmcgc3Rhc2guJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdTQ0FS
1261
+ RCcsIGVuYWJsZWRfcHJveHlfaW5kZXhfa2V5KSA9PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5z
1262
+ dGF0dXNfcmVwbHkoJ05PVF9GT1VORCBObyBlbmFibGVkIHByb3hpZXMgZm91bmQnKQogIGVuZAoK
1263
+ ICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAgaWYgcmVkaXMuY2FsbCgnU0lTTUVNQkVSJywgZW5h
1264
+ YmxlZF9wcm94eV9pbmRleF9rZXksIHN0YXNoLnByb3h5X2lkKSA9PSAwIHRoZW4KICAgIGxvY2Fs
1265
+ IGVuYWJsZWRfcHJveHlfaWQgPSByZWRpcy5jYWxsKCdTUkFORE1FTUJFUicsIGVuYWJsZWRfcHJv
1266
+ eHlfaW5kZXhfa2V5KQoKICAgIGlmIG5vdCBlbmFibGVkX3Byb3h5X2lkIG9yIGVuYWJsZWRfcHJv
1267
+ eHlfaWQgPT0gJycgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
1268
+ ZyBlbmFibGVkX3Byb3h5X2lkJykKICAgIGVuZAoKICAgIC0tIHN0eWx1YTogaWdub3JlCiAgICBy
1269
+ ZWRpcy5jYWxsKAogICAgICAnSFNFVCcsIHNlc3Npb25fa2V5LAogICAgICAncHJveHlfaWQnLCBl
1270
+ bmFibGVkX3Byb3h5X2lkLAogICAgICAnYXV0aG9yaXplZF9hdCcsIHN0YXNoLmF1dGhvcml6ZWRf
1271
+ YXQKICAgICkKICBlbHNlCiAgICByZWRpcy5jYWxsKCdIU0VUJywgc2Vzc2lvbl9rZXksICdhdXRo
1272
+ b3JpemVkX2F0Jywgc3Rhc2guYXV0aG9yaXplZF9hdCkKICBlbmQKCiAgcmVkaXMuY2FsbCgnUEVY
1273
+ UElSRScsIHNlc3Npb25fa2V5LCBzdGFzaC5zZXNzaW9uX2V4cGlyZSkKCiAgcmV0dXJuIHJlZGlz
1274
+ LnN0YXR1c19yZXBseSgnT0sgU2Vzc2lvbiBhdXRob3JpemVkJykKZW5kCgpyZWRpcy5yZWdpc3Rl
1275
+ cl9mdW5jdGlvbih7CiAgZnVuY3Rpb25fbmFtZSA9ICdhdXRoX3Nlc3Npb24nLAogIGNhbGxiYWNr
1276
+ ID0gYXV0aF9zZXNzaW9uLAogIGRlc2NyaXB0aW9uID0gJ0F1dGggc2Vzc2lvbicsCn0pCgotLVtb
1277
+ CiAgVXBncmFkZSBzZXNzaW9uCi0tXV0KbG9jYWwgZnVuY3Rpb24gdXBncmFkZV9zZXNzaW9uKGtl
1278
+ eXMsIGFyZ3MpCiAgaWYgI2tleXMgfj0gMyBvciAjYXJncyB+PSAxIHRoZW4KICAgIHJldHVybiBy
1279
+ ZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdyb25nIGZ1bmN0aW9uIHVzZScpCiAgZW5kCgogIGxvY2Fs
1280
+ IGNhbXBhaWduX2tleSA9IGtleXNbMV0KICBsb2NhbCBsdXJlX2tleSA9IGtleXNbMl0KICBsb2Nh
1281
+ bCBzZXNzaW9uX2tleSA9IGtleXNbM10KCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgY2FtcGFp
1282
+ Z25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ05PVF9GT1VO
1283
+ RCBDYW1wYWlnbiBub3QgZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywg
1284
+ bHVyZV9rZXkpIH49IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZP
1285
+ VU5EIEx1cmUgbm90IGV4aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHNl
1286
+ c3Npb25fa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZPUkJJ
1287
+ RERFTiBTZXNzaW9uIG5vdCBleGlzdHMnKQogIGVuZAoKICBsb2NhbCBzdGFzaCA9IHsKICAgIHNl
1288
+ Y3JldCA9IGFyZ3NbMV0sCiAgICBvcmlnX3NlY3JldCA9IHJlZGlzLmNhbGwoJ0hHRVQnLCBzZXNz
1289
+ aW9uX2tleSwgJ3NlY3JldCcpLAogICAgaXNfdXBncmFkZWQgPSB0b251bWJlcihyZWRpcy5jYWxs
1290
+ KCdIR0VUJywgc2Vzc2lvbl9rZXksICdpc191cGdyYWRlZCcpKSwKICB9CgogIGZvciBmaWVsZCwg
1291
+ dmFsdWUgaW4gcGFpcnMoc3Rhc2gpIGRvCiAgICBpZiBub3QgdmFsdWUgdGhlbgogICAgICByZXR1
1292
+ cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5k
1293
+ CgogICAgaWYgKGZpZWxkID09ICdzZWNyZXQnIG9yIGZpZWxkID09ICdvcmlnX3NlY3JldCcpIGFu
1294
+ ZCB2YWx1ZSA9PSAnJyB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIFdy
1295
+ b25nIHN0YXNoLicgLi4gZmllbGQpCiAgICBlbmQKICBlbmQKCiAgaWYgc3Rhc2gub3JpZ19zZWNy
1296
+ ZXQgfj0gc3Rhc2guc2VjcmV0IHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ0ZP
1297
+ UkJJRERFTiBTZXNzaW9uIHNlY3JldCBub3QgbWF0Y2gnKQogIGVuZAoKICBpZiBzdGFzaC5pc191
1298
+ cGdyYWRlZCB+PSAwIHRoZW4KICAgIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIFNlc3Np
1299
+ b24gYWxscmVhZHkgdXBncmFkZWQnKQogIGVuZAoKICAtLSBQb2ludCBvZiBubyByZXR1cm4KCiAg
1300
+ cmVkaXMuY2FsbCgnSFNFVCcsIHNlc3Npb25fa2V5LCAnaXNfdXBncmFkZWQnLCAxKQoKICByZWRp
1301
+ cy5jYWxsKCdISU5DUkJZJywgbHVyZV9rZXksICdzZXNzaW9uX2NvdW50JywgMSkKCiAgcmV0dXJu
1302
+ IHJlZGlzLnN0YXR1c19yZXBseSgnT0sgU2Vzc2lvbiB1cGdyYWRlZCcpCmVuZAoKcmVkaXMucmVn
1303
+ aXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAndXBncmFkZV9zZXNzaW9uJywKICBj
1304
+ YWxsYmFjayA9IHVwZ3JhZGVfc2Vzc2lvbiwKICBkZXNjcmlwdGlvbiA9ICdVcGdyYWRlIHNlc3Np
1305
+ b24nLAp9KQo=`,
1272
1306
  '7-message.lua',
1273
1307
  `IyFsdWEgbmFtZT1tZXNzYWdlCgotLVtbCiAgQ3JlYXRlIG1lc3NhZ2UKLS1dXQpsb2NhbCBmdW5j
1274
1308
  dGlvbiBjcmVhdGVfbWVzc2FnZShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDUgb3IgI2FyZ3Mg
@@ -1295,7 +1329,7 @@ IHZhbHVlIDw9IDAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9u
1295
1329
  ZyBzdGFzaC4nIC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIGxvY2FsIG1vZGVsID0gewogICAg
1296
1330
  Y2FtcGFpZ25faWQgPSBhcmdzWzFdLAogICAgbWVzc2FnZV9pZCA9IGFyZ3NbMl0sCiAgICBwcm94
1297
1331
  eV9pZCA9IGFyZ3NbM10sCiAgICB0YXJnZXRfaWQgPSBhcmdzWzRdLAogICAgc2Vzc2lvbl9pZCA9
1298
- IGFyZ3NbNV0sCiAgICBraW5kID0gYXJnc1s2XSwKICAgIG1ldGhvZCA9IGFyZ3NbN10sCiAgICB1
1332
+ IGFyZ3NbNV0sCiAgICB0eXBlID0gYXJnc1s2XSwKICAgIG1ldGhvZCA9IGFyZ3NbN10sCiAgICB1
1299
1333
  cmwgPSBhcmdzWzhdLAogICAgcmVxdWVzdF9oZWFkZXJzID0gYXJnc1s5XSwKICAgIHJlcXVlc3Rf
1300
1334
  Ym9keSA9IGFyZ3NbMTBdLAogICAgc3RhdHVzID0gdG9udW1iZXIoYXJnc1sxMV0pLAogICAgcmVz
1301
1335
  cG9uc2VfaGVhZGVycyA9IGFyZ3NbMTJdLAogICAgcmVzcG9uc2VfYm9keSA9IGFyZ3NbMTNdLAog
@@ -1308,78 +1342,104 @@ dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVu
1308
1342
  ZAoKICAgIGlmCiAgICAgICgKICAgICAgICBmaWVsZCA9PSAnY2FtcGFpZ25faWQnCiAgICAgICAg
1309
1343
  b3IgZmllbGQgPT0gJ21lc3NhZ2VfaWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ3Byb3h5X2lkJwog
1310
1344
  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==`,
1345
+ b25faWQnCiAgICAgICAgb3IgZmllbGQgPT0gJ3R5cGUnCiAgICAgICAgb3IgZmllbGQgPT0gJ21l
1346
+ dGhvZCcKICAgICAgICBvciBmaWVsZCA9PSAndXJsJwogICAgICApIGFuZCB2YWx1ZSA9PSAnJwog
1347
+ ICAgdGhlbgogICAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBtb2RlbC4n
1348
+ IC4uIGZpZWxkKQogICAgZW5kCiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICBsb2Nh
1349
+ bCBzdG9yZSA9IHt9CgogIGZvciBmaWVsZCwgdmFsdWUgaW4gcGFpcnMobW9kZWwpIGRvCiAgICB0
1350
+ YWJsZS5pbnNlcnQoc3RvcmUsIGZpZWxkKQogICAgdGFibGUuaW5zZXJ0KHN0b3JlLCB2YWx1ZSkK
1351
+ ICBlbmQKCiAgcmVkaXMuY2FsbCgnSFNFVCcsIG1lc3NhZ2Vfa2V5LCB1bnBhY2soc3RvcmUpKQoK
1352
+ ICByZWRpcy5jYWxsKCdISU5DUkJZJywgY2FtcGFpZ25fa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEp
1353
+ CiAgcmVkaXMuY2FsbCgnSElOQ1JCWScsIHByb3h5X2tleSwgJ21lc3NhZ2VfY291bnQnLCAxKQog
1354
+ IHJlZGlzLmNhbGwoJ0hJTkNSQlknLCB0YXJnZXRfa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCiAg
1355
+ cmVkaXMuY2FsbCgnSElOQ1JCWScsIHNlc3Npb25fa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCgog
1356
+ IHJlZGlzLmNhbGwoJ1BFWFBJUkUnLCBtZXNzYWdlX2tleSwgc3Rhc2gubWVzc2FnZV9leHBpcmUp
1357
+ CgogIHJldHVybiByZWRpcy5zdGF0dXNfcmVwbHkoJ09LIE1lc3NhZ2UgY3JlYXRlZCcpCmVuZAoK
1358
+ cmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAnY3JlYXRlX21lc3Nh
1359
+ Z2UnLAogIGNhbGxiYWNrID0gY3JlYXRlX21lc3NhZ2UsCiAgZGVzY3JpcHRpb24gPSAnQ3JlYXRl
1360
+ IG1lc3NhZ2UnLAp9KQoKLS1bWwogIENyZWF0ZSBkdW1teSBtZXNzYWdlCi0tXV0KbG9jYWwgZnVu
1361
+ Y3Rpb24gY3JlYXRlX2R1bW15X21lc3NhZ2Uoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSA1IG9y
1362
+ ICNhcmdzIH49IDAgdGhlbgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3Jvbmcg
1363
+ ZnVuY3Rpb24gdXNlJykKICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxv
1364
+ Y2FsIG1lc3NhZ2Vfa2V5ID0ga2V5c1syXQogIGxvY2FsIHByb3h5X2tleSA9IGtleXNbM10KICBs
1365
+ b2NhbCB0YXJnZXRfa2V5ID0ga2V5c1s0XQogIGxvY2FsIHNlc3Npb25fa2V5ID0ga2V5c1s1XQoK
1366
+ ICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEgdGhlbgogICAgcmV0
1367
+ dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIENhbXBhaWduIG5vdCBleGlzdHMnKQog
1368
+ IGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBtZXNzYWdlX2tleSkgfj0gMCB0aGVuCiAg
1369
+ ICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdDT05GTElDVCBNZXNzYWdlIGFsbHJlYWR5IGV4
1370
+ aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHByb3h5X2tleSkgfj0gMSB0
1371
+ aGVuCiAgICByZXR1cm4gcmVkaXMuc3RhdHVzX3JlcGx5KCdOT1RfRk9VTkQgUHJveHkgbm90IGV4
1372
+ aXN0cycpCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIHRhcmdldF9rZXkpIH49IDEg
1373
+ dGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFRhcmdldCBub3Qg
1374
+ ZXhpc3RzJykKICBlbmQKCiAgaWYgcmVkaXMuY2FsbCgnRVhJU1RTJywgc2Vzc2lvbl9rZXkpIH49
1375
+ IDEgdGhlbgogICAgcmV0dXJuIHJlZGlzLnN0YXR1c19yZXBseSgnTk9UX0ZPVU5EIFNlc3Npb24g
1376
+ bm90IGV4aXN0cycpCiAgZW5kCgogIC0tIFBvaW50IG9mIG5vIHJldHVybgoKICByZWRpcy5jYWxs
1377
+ KCdISU5DUkJZJywgY2FtcGFpZ25fa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCiAgcmVkaXMuY2Fs
1378
+ bCgnSElOQ1JCWScsIHByb3h5X2tleSwgJ21lc3NhZ2VfY291bnQnLCAxKQogIHJlZGlzLmNhbGwo
1379
+ J0hJTkNSQlknLCB0YXJnZXRfa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCiAgcmVkaXMuY2FsbCgn
1380
+ SElOQ1JCWScsIHNlc3Npb25fa2V5LCAnbWVzc2FnZV9jb3VudCcsIDEpCgogIHJldHVybiByZWRp
1381
+ cy5zdGF0dXNfcmVwbHkoJ09LIER1bW15IG1lc3NhZ2UgY3JlYXRlZCcpCmVuZAoKcmVkaXMucmVn
1382
+ aXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0aW9uX25hbWUgPSAnY3JlYXRlX2R1bW15X21lc3NhZ2Un
1383
+ LAogIGNhbGxiYWNrID0gY3JlYXRlX2R1bW15X21lc3NhZ2UsCiAgZGVzY3JpcHRpb24gPSAnQ3Jl
1384
+ YXRlIGR1bW15IG1lc3NhZ2UnLAp9KQoKLS1bWwogIFJlYWQgbWVzc2FnZQotLV1dCmxvY2FsIGZ1
1385
+ bmN0aW9uIHJlYWRfbWVzc2FnZShrZXlzLCBhcmdzKQogIGlmICNrZXlzIH49IDIgb3IgI2FyZ3Mg
1386
+ fj0gMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3JfcmVwbHkoJ0VSUiBXcm9uZyBmdW5jdGlv
1387
+ biB1c2UnKQogIGVuZAoKICBsb2NhbCBjYW1wYWlnbl9rZXkgPSBrZXlzWzFdCiAgbG9jYWwgbWVz
1388
+ c2FnZV9rZXkgPSBrZXlzWzJdCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNUUycsIGNhbXBhaWduX2tl
1389
+ eSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIGlmIHJlZGlzLmNhbGwoJ0VYSVNU
1390
+ UycsIG1lc3NhZ2Vfa2V5KSB+PSAxIHRoZW4KICAgIHJldHVybiBuaWwKICBlbmQKCiAgLS0gc3R5
1391
+ bHVhOiBpZ25vcmUKICBsb2NhbCB2YWx1ZXMgPSByZWRpcy5jYWxsKAogICAgJ0hNR0VUJywgbWVz
1392
+ c2FnZV9rZXksCiAgICAnY2FtcGFpZ25faWQnLAogICAgJ21lc3NhZ2VfaWQnLAogICAgJ3Byb3h5
1393
+ X2lkJywKICAgICd0YXJnZXRfaWQnLAogICAgJ3Nlc3Npb25faWQnLAogICAgJ3R5cGUnLAogICAg
1394
+ J21ldGhvZCcsCiAgICAndXJsJywKICAgICdzdGF0dXMnLAogICAgJ3Byb2Nlc3NvcicsCiAgICAn
1395
+ c3RhcnRfdGltZScsCiAgICAnZmluaXNoX3RpbWUnLAogICAgJ2NyZWF0ZWRfYXQnCiAgKQoKICBp
1396
+ ZiAjdmFsdWVzIH49IDEzIHRoZW4KICAgIHJldHVybiByZWRpcy5lcnJvcl9yZXBseSgnRVJSIE1h
1397
+ bGZvcm0gdmFsdWVzJykKICBlbmQKCiAgbG9jYWwgbW9kZWwgPSB7CiAgICBjYW1wYWlnbl9pZCA9
1398
+ IHZhbHVlc1sxXSwKICAgIG1lc3NhZ2VfaWQgPSB2YWx1ZXNbMl0sCiAgICBwcm94eV9pZCA9IHZh
1399
+ bHVlc1szXSwKICAgIHRhcmdldF9pZCA9IHZhbHVlc1s0XSwKICAgIHNlc3Npb25faWQgPSB2YWx1
1400
+ ZXNbNV0sCiAgICB0eXBlID0gdmFsdWVzWzZdLAogICAgbWV0aG9kID0gdmFsdWVzWzddLAogICAg
1401
+ dXJsID0gdmFsdWVzWzhdLAogICAgc3RhdHVzID0gdG9udW1iZXIodmFsdWVzWzldKSwKICAgIHBy
1402
+ b2Nlc3NvciA9IHZhbHVlc1sxMF0sCiAgICBzdGFydF90aW1lID0gdG9udW1iZXIodmFsdWVzWzEx
1403
+ XSksCiAgICBmaW5pc2hfdGltZSA9IHRvbnVtYmVyKHZhbHVlc1sxMl0pLAogICAgY3JlYXRlZF9h
1404
+ dCA9IHRvbnVtYmVyKHZhbHVlc1sxM10pLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWly
1405
+ cyhtb2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJv
1406
+ cl9yZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICBy
1407
+ ZXR1cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1
1408
+ bmN0aW9uX25hbWUgPSAncmVhZF9tZXNzYWdlJywKICBjYWxsYmFjayA9IHJlYWRfbWVzc2FnZSwK
1409
+ ICBmbGFncyA9IHsgJ25vLXdyaXRlcycgfSwKICBkZXNjcmlwdGlvbiA9ICdSZWFkIG1lc3NhZ2Un
1410
+ LAp9KQoKLS1bWwogIFJlYWQgZnVsbCBtZXNzYWdlCi0tXV0KbG9jYWwgZnVuY3Rpb24gcmVhZF9m
1411
+ dWxsX21lc3NhZ2Uoa2V5cywgYXJncykKICBpZiAja2V5cyB+PSAyIG9yICNhcmdzIH49IDAgdGhl
1412
+ bgogICAgcmV0dXJuIHJlZGlzLmVycm9yX3JlcGx5KCdFUlIgV3JvbmcgZnVuY3Rpb24gdXNlJykK
1413
+ ICBlbmQKCiAgbG9jYWwgY2FtcGFpZ25fa2V5ID0ga2V5c1sxXQogIGxvY2FsIG1lc3NhZ2Vfa2V5
1414
+ ID0ga2V5c1syXQoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBjYW1wYWlnbl9rZXkpIH49IDEg
1415
+ dGhlbgogICAgcmV0dXJuIG5pbAogIGVuZAoKICBpZiByZWRpcy5jYWxsKCdFWElTVFMnLCBtZXNz
1416
+ YWdlX2tleSkgfj0gMSB0aGVuCiAgICByZXR1cm4gbmlsCiAgZW5kCgogIC0tIHN0eWx1YTogaWdu
1417
+ b3JlCiAgbG9jYWwgdmFsdWVzID0gcmVkaXMuY2FsbCgKICAgICdITUdFVCcsIG1lc3NhZ2Vfa2V5
1418
+ LAogICAgJ2NhbXBhaWduX2lkJywKICAgICdtZXNzYWdlX2lkJywKICAgICdwcm94eV9pZCcsCiAg
1419
+ ICAndGFyZ2V0X2lkJywKICAgICdzZXNzaW9uX2lkJywKICAgICd0eXBlJywKICAgICdtZXRob2Qn
1420
+ LAogICAgJ3VybCcsCiAgICAncmVxdWVzdF9oZWFkZXJzJywKICAgICdyZXF1ZXN0X2JvZHknLAog
1421
+ ICAgJ3N0YXR1cycsCiAgICAncmVzcG9uc2VfaGVhZGVycycsCiAgICAncmVzcG9uc2VfYm9keScs
1422
+ CiAgICAnY29ubmVjdGlvbicsCiAgICAncGF5bG9hZCcsCiAgICAnZXJyb3JzJywKICAgICdwcm9j
1423
+ ZXNzb3InLAogICAgJ3N0YXJ0X3RpbWUnLAogICAgJ2ZpbmlzaF90aW1lJywKICAgICdjcmVhdGVk
1424
+ X2F0JwogICkKCiAgaWYgI3ZhbHVlcyB+PSAyMCB0aGVuCiAgICByZXR1cm4gcmVkaXMuZXJyb3Jf
1425
+ cmVwbHkoJ0VSUiBNYWxmb3JtIHZhbHVlcycpCiAgZW5kCgogIGxvY2FsIG1vZGVsID0gewogICAg
1426
+ Y2FtcGFpZ25faWQgPSB2YWx1ZXNbMV0sCiAgICBtZXNzYWdlX2lkID0gdmFsdWVzWzJdLAogICAg
1427
+ cHJveHlfaWQgPSB2YWx1ZXNbM10sCiAgICB0YXJnZXRfaWQgPSB2YWx1ZXNbNF0sCiAgICBzZXNz
1428
+ aW9uX2lkID0gdmFsdWVzWzVdLAogICAgdHlwZSA9IHZhbHVlc1s2XSwKICAgIG1ldGhvZCA9IHZh
1429
+ bHVlc1s3XSwKICAgIHVybCA9IHZhbHVlc1s4XSwKICAgIHJlcXVlc3RfaGVhZGVycyA9IHZhbHVl
1430
+ c1s5XSwKICAgIHJlcXVlc3RfYm9keSA9IHZhbHVlc1sxMF0sCiAgICBzdGF0dXMgPSB0b251bWJl
1431
+ cih2YWx1ZXNbMTFdKSwKICAgIHJlc3BvbnNlX2hlYWRlcnMgPSB2YWx1ZXNbMTJdLAogICAgcmVz
1432
+ cG9uc2VfYm9keSA9IHZhbHVlc1sxM10sCiAgICBjb25uZWN0aW9uID0gdmFsdWVzWzE0XSwKICAg
1433
+ IHBheWxvYWQgPSB2YWx1ZXNbMTVdLAogICAgZXJyb3JzID0gdmFsdWVzWzE2XSwKICAgIHByb2Nl
1434
+ c3NvciA9IHZhbHVlc1sxN10sCiAgICBzdGFydF90aW1lID0gdG9udW1iZXIodmFsdWVzWzE4XSks
1435
+ CiAgICBmaW5pc2hfdGltZSA9IHRvbnVtYmVyKHZhbHVlc1sxOV0pLAogICAgY3JlYXRlZF9hdCA9
1436
+ IHRvbnVtYmVyKHZhbHVlc1syMF0pLAogIH0KCiAgZm9yIGZpZWxkLCB2YWx1ZSBpbiBwYWlycyht
1437
+ b2RlbCkgZG8KICAgIGlmIG5vdCB2YWx1ZSB0aGVuCiAgICAgIHJldHVybiByZWRpcy5lcnJvcl9y
1438
+ ZXBseSgnRVJSIE1hbGZvcm0gbW9kZWwuJyAuLiBmaWVsZCkKICAgIGVuZAogIGVuZAoKICByZXR1
1439
+ cm4geyBtYXAgPSBtb2RlbCB9CmVuZAoKcmVkaXMucmVnaXN0ZXJfZnVuY3Rpb24oewogIGZ1bmN0
1440
+ aW9uX25hbWUgPSAncmVhZF9mdWxsX21lc3NhZ2UnLAogIGNhbGxiYWNrID0gcmVhZF9mdWxsX21l
1441
+ c3NhZ2UsCiAgZmxhZ3MgPSB7ICduby13cml0ZXMnIH0sCiAgZGVzY3JpcHRpb24gPSAnUmVhZCBm
1442
+ dWxsIG1lc3NhZ2UnLAp9KQo=`,
1383
1443
  ];
1384
1444
  export function makeRedisFunctions() {
1385
1445
  const entries = [];