@burgan-tech/morph-touch-runtime 0.0.5 → 0.0.6

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 (40) hide show
  1. package/burgan-tech-morph-touch-runtime-0.0.6.tgz +0 -0
  2. package/morph-touch/Functions/get-matrix-sync.1.0.0.json +1 -1
  3. package/morph-touch/Functions/get-room-messages.1.0.0.json +1 -1
  4. package/morph-touch/Functions/send-room-message.1.0.0.json +1 -1
  5. package/morph-touch/Functions/src/GetMatrixSyncMapping.csx +5 -1
  6. package/morph-touch/Functions/src/GetRoomMessagesMapping.csx +5 -1
  7. package/morph-touch/Functions/src/SendRoomMessageMapping.csx +5 -1
  8. package/morph-touch/Workflows/chat-room.json +9 -9
  9. package/morph-touch/Workflows/notification-sender.json +2 -2
  10. package/morph-touch/Workflows/rezervation-start.json +1 -1
  11. package/morph-touch/Workflows/rezervation-transfer.json +3 -3
  12. package/morph-touch/Workflows/rezervation.json +1 -1
  13. package/morph-touch/Workflows/src/ChatRoomRemoveMapping.csx +5 -1
  14. package/morph-touch/Workflows/src/ChatRoomTransferInviteMapping.csx +6 -2
  15. package/morph-touch/Workflows/src/ChatRoomTransferRemoveMapping.csx +5 -1
  16. package/morph-touch/Workflows/src/ChatRoomUpdateMapping.csx +6 -2
  17. package/morph-touch/Workflows/src/CreateChatRoomForRezervationMapping.csx +5 -1
  18. package/morph-touch/Workflows/src/CreatePermanentChatRoomMapping.csx +5 -1
  19. package/morph-touch/Workflows/src/FetchRoomMessagesForSummaryMapping.csx +5 -1
  20. package/morph-touch/Workflows/src/GetUserInfoForRezervationMapping.csx +5 -1
  21. package/morph-touch/Workflows/src/GetVideoCallUrlMapping.csx +5 -1
  22. package/morph-touch/Workflows/src/InviteAdvisorForRandevuUpdateMapping.csx +5 -1
  23. package/morph-touch/Workflows/src/InviteNewAdvisorToRezervationRoomMapping.csx +5 -1
  24. package/morph-touch/Workflows/src/InviteNewParticipantToRandevuRoomMapping.csx +5 -1
  25. package/morph-touch/Workflows/src/JoinChatRoomForAddParticipantMapping.csx +5 -1
  26. package/morph-touch/Workflows/src/JoinChatRoomForRandevuStartMapping.csx +5 -1
  27. package/morph-touch/Workflows/src/JoinChatRoomForRezervationMapping.csx +5 -1
  28. package/morph-touch/Workflows/src/JoinMatrixRoomMapping.csx +5 -1
  29. package/morph-touch/Workflows/src/JoinUserToRoomMapping.csx +5 -1
  30. package/morph-touch/Workflows/src/SendPushNotificationMapping.csx +5 -1
  31. package/morph-touch/Workflows/src/SendSmsNotificationMapping.csx +5 -1
  32. package/morph-touch/Workflows/src/SendSummaryToNewRoomMapping.csx +5 -1
  33. package/morph-touch/Workflows/src/SetRoomHistoryVisibilityMapping.csx +5 -1
  34. package/morph-touch/Workflows/src/SummarizeChatWithOpenAIMapping.csx +5 -1
  35. package/morph-touch/Workflows/start-video-call.json +1 -1
  36. package/morph-touch/doc/morph-touch-domain.en.md +328 -0
  37. package/morph-touch/doc/morph-touch-domain.md +328 -0
  38. package/package.json +1 -1
  39. package/vnext.config.json +1 -1
  40. package/burgan-tech-morph-touch-runtime-0.0.5.tgz +0 -0
@@ -404,7 +404,7 @@
404
404
  },
405
405
  "mapping": {
406
406
  "location": "./src/JoinChatRoomForRandevuStartMapping.csx",
407
- "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3Igam9pbi1jaGF0LXJvb20tZm9yLXJlemVydmF0aW9uIHdoZW4gdXNlZCBpbiByZXplcnZhdGlvbi1zdGFydCBmbG93LgovLy8gVXNlcyBjaGF0SW50ZWdyYXRpb24ucm9vbUlkIGZyb20gcmV6ZXJ2YXRpb24uIFVzZXMgeC1tYXRyaXgtdXNlciBoZWFkZXIgaW5zdGVhZCBvZiBsb2dpbi9zZXNzaW9uSWQuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBKb2luQ2hhdFJvb21Gb3JSYW5kZXZ1U3RhcnRNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIGFzeW5jIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBodHRwVGFzayA9IHRhc2sgYXMgSHR0cFRhc2s7CiAgICAgICAgaWYgKGh0dHBUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYW4gSHR0cFRhc2siKTsKCiAgICAgICAgdmFyIG1hdHJpeEJhc2VVcmwgPSBhd2FpdCBHZXRTZWNyZXRBc3luYygidm5leHQtc2VjcmV0IiwgIndvcmtmbG93LXNlY3JldCIsICJNYXRyaXhCYXNlVXJsIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UobWF0cml4QmFzZVVybCkpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJNYXRyaXhCYXNlVXJsIHNlY3JldCBpcyByZXF1aXJlZCIpOwoKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIGNoYXRJbnRlZ3JhdGlvbiA9IGRhdGE/LmNoYXRJbnRlZ3JhdGlvbjsKICAgICAgICB2YXIgcm9vbUlkID0gR2V0U3RyaW5nKGNoYXRJbnRlZ3JhdGlvbiwgInJvb21JZCIpOwogICAgICAgIHZhciBwYXJ0aWNpcGFudFR5cGUgPSBHZXRTdHJpbmcoZGF0YSwgInBhcnRpY2lwYW50VHlwZSIpOwogICAgICAgIHZhciB1c2VyID0gR2V0U3RyaW5nKGRhdGEsICJ1c2VyIik7CiAgICAgICAgdmFyIGFkdmlzb3JJZCA9IEdldFN0cmluZyhkYXRhLCAiYWR2aXNvciIpOwogICAgICAgIHZhciBpbnZpdGVkVXNlcklkID0gR2V0U3RyaW5nKGRhdGEsICJpbnZpdGVkVXNlcklkIik7CgogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHJvb21JZCkpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJjaGF0SW50ZWdyYXRpb24ucm9vbUlkIGlzIHJlcXVpcmVkIHRvIGpvaW4gcm9vbSIpOwoKICAgICAgICB2YXIgeE1hdHJpeFVzZXIgPSBwYXJ0aWNpcGFudFR5cGUgPT0gImFkdmlzb3IiID8gYWR2aXNvcklkCiAgICAgICAgICAgIDogcGFydGljaXBhbnRUeXBlID09ICJpbnZpdGVkIiA/IGludml0ZWRVc2VySWQKICAgICAgICAgICAgOiB1c2VyOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHhNYXRyaXhVc2VyKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkNhbm5vdCBkZXRlcm1pbmUgeC1tYXRyaXgtdXNlcjogcGFydGljaXBhbnRUeXBlLCB1c2VyLCBhZHZpc29yLCBvciBpbnZpdGVkVXNlcklkIG1pc3NpbmciKTsKCiAgICAgICAgdmFyIGZ1bGxVcmwgPSBtYXRyaXhCYXNlVXJsLlRyaW1FbmQoJy8nKSArICIvX21hdHJpeC9jbGllbnQvdjMvam9pbi8iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcocm9vbUlkID8/ICIiKTsKICAgICAgICBodHRwVGFzay5TZXRVcmwoZnVsbFVybCk7CgogICAgICAgIHZhciBoZWFkZXJzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+CiAgICAgICAgewogICAgICAgICAgICBbIkNvbnRlbnQtVHlwZSJdID0gImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgICBbIkFjY2VwdCJdID0gImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgICBbIngtbWF0cml4LXVzZXIiXSA9IHhNYXRyaXhVc2VyLlRyaW0oKQogICAgICAgIH07CgogICAgICAgIGh0dHBUYXNrLlNldEhlYWRlcnMoaGVhZGVycyk7CiAgICAgICAgaHR0cFRhc2suU2V0Qm9keShuZXcgeyB9KTsKCiAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSgpOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFNjcmlwdFJlc3BvbnNlKCk7CiAgICAgICAgdmFyIHJlc3BvbnNlID0gY29udGV4dC5Cb2R5OwogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICB2YXIgcGFydGljaXBhbnRUeXBlID0gR2V0U3RyaW5nKGRhdGEsICJwYXJ0aWNpcGFudFR5cGUiKTsKICAgICAgICB2YXIgdXNlciA9IEdldFN0cmluZyhkYXRhLCAidXNlciIpOwogICAgICAgIHZhciBhZHZpc29ySWQgPSBHZXRTdHJpbmcoZGF0YSwgImFkdmlzb3IiKTsKICAgICAgICB2YXIgaW52aXRlZFVzZXJJZCA9IEdldFN0cmluZyhkYXRhLCAiaW52aXRlZFVzZXJJZCIpOwogICAgICAgIHZhciBjaGF0SW50ZWdyYXRpb24gPSBkYXRhPy5jaGF0SW50ZWdyYXRpb247CiAgICAgICAgdmFyIHVzZXJuYW1lID0gcGFydGljaXBhbnRUeXBlID09ICJhZHZpc29yIiA/IGFkdmlzb3JJZAogICAgICAgICAgICA6IHBhcnRpY2lwYW50VHlwZSA9PSAiaW52aXRlZCIgPyBpbnZpdGVkVXNlcklkCiAgICAgICAgICAgIDogdXNlcjsKCiAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3MgPT0gdHJ1ZSkKICAgICAgICB7CiAgICAgICAgICAgIGR5bmFtaWMgcmVzcERhdGEgPSByZXNwb25zZS5kYXRhOwogICAgICAgICAgICBzdHJpbmcgam9pbmVkUm9vbUlkID0gR2V0U3RyaW5nKHJlc3BEYXRhLCAicm9vbV9pZCIpID8/IEdldFN0cmluZyhyZXNwRGF0YSwgInJvb21JZCIpID8/IEdldFN0cmluZyhyZXNwRGF0YSwgIlJvb21JZCIpOwoKICAgICAgICAgICAgcmVzdWx0LkRhdGEgPSBuZXcKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2hhdEludGVncmF0aW9uID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgcm9vbUlkID0gam9pbmVkUm9vbUlkID8/IEdldFN0cmluZyhjaGF0SW50ZWdyYXRpb24sICJyb29tSWQiKSwKICAgICAgICAgICAgICAgICAgICBlcnJvciA9IChzdHJpbmcpbnVsbCwKICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGUgPSAoc3RyaW5nKW51bGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgc3RyaW5nIGVycm9yTWVzc2FnZSA9IHJlc3BvbnNlPy5lcnJvck1lc3NhZ2U/LlRvU3RyaW5nKCkgPz8gIkZhaWxlZCB0byBqb2luIHJvb20iOwogICAgICAgICAgICBzdHJpbmcgc3RhdHVzQ29kZSA9IHJlc3BvbnNlPy5zdGF0dXNDb2RlICE9IG51bGwgPyByZXNwb25zZS5zdGF0dXNDb2RlLlRvU3RyaW5nKCkgOiBudWxsOwogICAgICAgICAgICByZXN1bHQuRGF0YSA9IG5ldwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGF0SW50ZWdyYXRpb24gPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSwKICAgICAgICAgICAgICAgICAgICByb29tSWQgPSAoc3RyaW5nKW51bGwsCiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvck1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlID0gc3RhdHVzQ29kZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChyZXN1bHQpOwogICAgfQoKICAgIHByaXZhdGUgc3RyaW5nIEdldFN0cmluZyhkeW5hbWljIG9iaiwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUob2JqLCBuYW1lKTsKICAgICAgICAgICAgICAgIHJldHVybiB2Py5Ub1N0cmluZygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9Cg=="
407
+ "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3Igam9pbi1jaGF0LXJvb20tZm9yLXJlemVydmF0aW9uIHdoZW4gdXNlZCBpbiByZXplcnZhdGlvbi1zdGFydCBmbG93LgovLy8gVXNlcyBjaGF0SW50ZWdyYXRpb24ucm9vbUlkIGZyb20gcmV6ZXJ2YXRpb24uIFVzZXMgeC1tYXRyaXgtdXNlciBoZWFkZXIgaW5zdGVhZCBvZiBsb2dpbi9zZXNzaW9uSWQuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBKb2luQ2hhdFJvb21Gb3JSYW5kZXZ1U3RhcnRNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIGFzeW5jIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBodHRwVGFzayA9IHRhc2sgYXMgSHR0cFRhc2s7CiAgICAgICAgaWYgKGh0dHBUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYW4gSHR0cFRhc2siKTsKCiAgICAgICAgdmFyIHNlY3JldE5hbWUgPSBHZXRDb25maWdWYWx1ZSgiREFQUl9TRUNSRVRfU1RPUkVfTkFNRSIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHNlY3JldE5hbWUpKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiREFQUl9TRUNSRVRfU1RPUkVfTkFNRSBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIik7CgogICAgICAgIHZhciBtYXRyaXhCYXNlVXJsID0gYXdhaXQgR2V0U2VjcmV0QXN5bmMoc2VjcmV0TmFtZSwgIndvcmtmbG93LXNlY3JldCIsICJNYXRyaXhCYXNlVXJsIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UobWF0cml4QmFzZVVybCkpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJNYXRyaXhCYXNlVXJsIHNlY3JldCBpcyByZXF1aXJlZCIpOwoKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIGNoYXRJbnRlZ3JhdGlvbiA9IGRhdGE/LmNoYXRJbnRlZ3JhdGlvbjsKICAgICAgICB2YXIgcm9vbUlkID0gR2V0U3RyaW5nKGNoYXRJbnRlZ3JhdGlvbiwgInJvb21JZCIpOwogICAgICAgIHZhciBwYXJ0aWNpcGFudFR5cGUgPSBHZXRTdHJpbmcoZGF0YSwgInBhcnRpY2lwYW50VHlwZSIpOwogICAgICAgIHZhciB1c2VyID0gR2V0U3RyaW5nKGRhdGEsICJ1c2VyIik7CiAgICAgICAgdmFyIGFkdmlzb3JJZCA9IEdldFN0cmluZyhkYXRhLCAiYWR2aXNvciIpOwogICAgICAgIHZhciBpbnZpdGVkVXNlcklkID0gR2V0U3RyaW5nKGRhdGEsICJpbnZpdGVkVXNlcklkIik7CgogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHJvb21JZCkpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJjaGF0SW50ZWdyYXRpb24ucm9vbUlkIGlzIHJlcXVpcmVkIHRvIGpvaW4gcm9vbSIpOwoKICAgICAgICB2YXIgeE1hdHJpeFVzZXIgPSBwYXJ0aWNpcGFudFR5cGUgPT0gImFkdmlzb3IiID8gYWR2aXNvcklkCiAgICAgICAgICAgIDogcGFydGljaXBhbnRUeXBlID09ICJpbnZpdGVkIiA/IGludml0ZWRVc2VySWQKICAgICAgICAgICAgOiB1c2VyOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHhNYXRyaXhVc2VyKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkNhbm5vdCBkZXRlcm1pbmUgeC1tYXRyaXgtdXNlcjogcGFydGljaXBhbnRUeXBlLCB1c2VyLCBhZHZpc29yLCBvciBpbnZpdGVkVXNlcklkIG1pc3NpbmciKTsKCiAgICAgICAgdmFyIGZ1bGxVcmwgPSBtYXRyaXhCYXNlVXJsLlRyaW1FbmQoJy8nKSArICIvX21hdHJpeC9jbGllbnQvdjMvam9pbi8iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcocm9vbUlkID8/ICIiKTsKICAgICAgICBodHRwVGFzay5TZXRVcmwoZnVsbFVybCk7CgogICAgICAgIHZhciBoZWFkZXJzID0gbmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+CiAgICAgICAgewogICAgICAgICAgICBbIkNvbnRlbnQtVHlwZSJdID0gImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgICBbIkFjY2VwdCJdID0gImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgICBbIngtbWF0cml4LXVzZXIiXSA9IHhNYXRyaXhVc2VyLlRyaW0oKQogICAgICAgIH07CgogICAgICAgIGh0dHBUYXNrLlNldEhlYWRlcnMoaGVhZGVycyk7CiAgICAgICAgaHR0cFRhc2suU2V0Qm9keShuZXcgeyB9KTsKCiAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSgpOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IFNjcmlwdFJlc3BvbnNlKCk7CiAgICAgICAgdmFyIHJlc3BvbnNlID0gY29udGV4dC5Cb2R5OwogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICB2YXIgcGFydGljaXBhbnRUeXBlID0gR2V0U3RyaW5nKGRhdGEsICJwYXJ0aWNpcGFudFR5cGUiKTsKICAgICAgICB2YXIgdXNlciA9IEdldFN0cmluZyhkYXRhLCAidXNlciIpOwogICAgICAgIHZhciBhZHZpc29ySWQgPSBHZXRTdHJpbmcoZGF0YSwgImFkdmlzb3IiKTsKICAgICAgICB2YXIgaW52aXRlZFVzZXJJZCA9IEdldFN0cmluZyhkYXRhLCAiaW52aXRlZFVzZXJJZCIpOwogICAgICAgIHZhciBjaGF0SW50ZWdyYXRpb24gPSBkYXRhPy5jaGF0SW50ZWdyYXRpb247CiAgICAgICAgdmFyIHVzZXJuYW1lID0gcGFydGljaXBhbnRUeXBlID09ICJhZHZpc29yIiA/IGFkdmlzb3JJZAogICAgICAgICAgICA6IHBhcnRpY2lwYW50VHlwZSA9PSAiaW52aXRlZCIgPyBpbnZpdGVkVXNlcklkCiAgICAgICAgICAgIDogdXNlcjsKCiAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3MgPT0gdHJ1ZSkKICAgICAgICB7CiAgICAgICAgICAgIGR5bmFtaWMgcmVzcERhdGEgPSByZXNwb25zZS5kYXRhOwogICAgICAgICAgICBzdHJpbmcgam9pbmVkUm9vbUlkID0gR2V0U3RyaW5nKHJlc3BEYXRhLCAicm9vbV9pZCIpID8/IEdldFN0cmluZyhyZXNwRGF0YSwgInJvb21JZCIpID8/IEdldFN0cmluZyhyZXNwRGF0YSwgIlJvb21JZCIpOwoKICAgICAgICAgICAgcmVzdWx0LkRhdGEgPSBuZXcKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY2hhdEludGVncmF0aW9uID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgcm9vbUlkID0gam9pbmVkUm9vbUlkID8/IEdldFN0cmluZyhjaGF0SW50ZWdyYXRpb24sICJyb29tSWQiKSwKICAgICAgICAgICAgICAgICAgICBlcnJvciA9IChzdHJpbmcpbnVsbCwKICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGUgPSAoc3RyaW5nKW51bGwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgc3RyaW5nIGVycm9yTWVzc2FnZSA9IHJlc3BvbnNlPy5lcnJvck1lc3NhZ2U/LlRvU3RyaW5nKCkgPz8gIkZhaWxlZCB0byBqb2luIHJvb20iOwogICAgICAgICAgICBzdHJpbmcgc3RhdHVzQ29kZSA9IHJlc3BvbnNlPy5zdGF0dXNDb2RlICE9IG51bGwgPyByZXNwb25zZS5zdGF0dXNDb2RlLlRvU3RyaW5nKCkgOiBudWxsOwogICAgICAgICAgICByZXN1bHQuRGF0YSA9IG5ldwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjaGF0SW50ZWdyYXRpb24gPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSwKICAgICAgICAgICAgICAgICAgICByb29tSWQgPSAoc3RyaW5nKW51bGwsCiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvck1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlID0gc3RhdHVzQ29kZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChyZXN1bHQpOwogICAgfQoKICAgIHByaXZhdGUgc3RyaW5nIEdldFN0cmluZyhkeW5hbWljIG9iaiwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKG9iaiA9PSBudWxsKSByZXR1cm4gbnVsbDsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShvYmosIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUob2JqLCBuYW1lKTsKICAgICAgICAgICAgICAgIHJldHVybiB2Py5Ub1N0cmluZygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9Cg=="
408
408
  }
409
409
  }
410
410
  ],
@@ -477,7 +477,7 @@
477
477
  },
478
478
  "mapping": {
479
479
  "location": "./src/FetchRoomMessagesForSummaryMapping.csx",
480
- "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIGdldC1tYXRyaXgtcm9vbS1tZXNzYWdlcyBIdHRwVGFzayAoVHlwZSA2KSBpbiB0aGUgdGVybWluYXRpb24gdHJhbnNmZXIgbG9vcC4KLy8vIFJlYWRzIHJvb21JZCBmcm9tIHBlcm1hbmVudENoYXRSb29tcyAobWF0Y2hlZCBieSBjaGF0Um9vbUtleSkgYW5kIGZldGNoZXMgdGhlIGxhc3QgMTAwIG1lc3NhZ2VzLgovLy8gU3RvcmVzIGZvcm1hdHRlZCBtZXNzYWdlcyBpbiBsYXN0Um9vbU1lc3NhZ2VzIGZvciBBSSBzdW1tYXJpemF0aW9uLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgRmV0Y2hSb29tTWVzc2FnZXNGb3JTdW1tYXJ5TWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgaHR0cFRhc2sgPSB0YXNrIGFzIEh0dHBUYXNrOwogICAgICAgIGlmIChodHRwVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGFuIEh0dHBUYXNrIik7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8taW5zdGFuY2UtZGF0YSIgfSB9OwoKICAgICAgICB2YXIgcm9vbUlkID0gR2V0U3RyaW5nKGRhdGEsICJsYXN0RGVhY3RpdmF0ZWRSb29tSWQiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShyb29tSWQpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tcm9vbUlkIiB9IH07CgogICAgICAgIHN0cmluZyB1c2VyID0gbnVsbDsKICAgICAgICB2YXIgcGVybWFuZW50Um9vbVBsYW4gPSBkYXRhLnBlcm1hbmVudFJvb21QbGFuOwogICAgICAgIGlmIChwZXJtYW5lbnRSb29tUGxhbiAhPSBudWxsKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHByb2Nlc3NlZEluZGV4ID0gMDsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGRhdGEsICJwZXJtYW5lbnRQcm9jZXNzZWRJbmRleCIpKQogICAgICAgICAgICAgICAgaW50LlRyeVBhcnNlKGRhdGEucGVybWFuZW50UHJvY2Vzc2VkSW5kZXg/LlRvU3RyaW5nKCkgPz8gIjAiLCBvdXQgcHJvY2Vzc2VkSW5kZXgpOwoKICAgICAgICAgICAgdmFyIGl0ZW1zID0gcGVybWFuZW50Um9vbVBsYW4gYXMgSUVudW1lcmFibGU8b2JqZWN0PjsKICAgICAgICAgICAgaWYgKGl0ZW1zICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBpdGVtc0xpc3QgPSBpdGVtcy5Ub0xpc3QoKTsKICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWRJbmRleCA8IGl0ZW1zTGlzdC5Db3VudCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkeW5hbWljIGN1cnJlbnRJdGVtID0gaXRlbXNMaXN0W3Byb2Nlc3NlZEluZGV4XTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2hhdFJvb21LZXkgPSBjdXJyZW50SXRlbT8uY2hhdFJvb21LZXk/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjaGF0Um9vbUtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBMb29rdXBVc2VyKGRhdGEsIGNoYXRSb29tS2V5KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UodXNlcikpCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UgeyBEYXRhID0gbmV3IHsgc2tpcHBlZCA9IHRydWUsIHJlYXNvbiA9ICJuby11c2VyIiB9IH07CgogICAgICAgIHZhciBtYXRyaXhCYXNlVXJsID0gYXdhaXQgR2V0U2VjcmV0QXN5bmMoInZuZXh0LXNlY3JldCIsICJ3b3JrZmxvdy1zZWNyZXQiLCAiTWF0cml4QmFzZVVybCIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKG1hdHJpeEJhc2VVcmwpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tTWF0cml4QmFzZVVybCIgfSB9OwoKICAgICAgICB2YXIgZnVsbFVybCA9IG1hdHJpeEJhc2VVcmwuVHJpbUVuZCgnLycpICsKICAgICAgICAgICAgIi9fbWF0cml4L2NsaWVudC92My9yb29tcy8iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcocm9vbUlkKSArCiAgICAgICAgICAgICIvbWVzc2FnZXM/ZGlyPWImbGltaXQ9MTAwIjsKCiAgICAgICAgaHR0cFRhc2suU2V0VXJsKGZ1bGxVcmwpOwogICAgICAgIGh0dHBUYXNrLlNldEhlYWRlcnMobmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+CiAgICAgICAgewogICAgICAgICAgICBbIkFjY2VwdCJdID0gImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgICBbIlgtTWF0cml4LVVzZXIiXSA9IHVzZXIKICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSgpOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PigpOwogICAgICAgIENvcHlBbGxGaWVsZHMocmVzdWx0LCBkYXRhKTsKCiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBjb250ZXh0LkJvZHk7CiAgICAgICAgICAgIHZhciBib2R5RGF0YSA9IHJlc3BvbnNlPy5kYXRhOwoKICAgICAgICAgICAgc3RyaW5nIGVycmNvZGUgPSBHZXRTdHJpbmcoYm9keURhdGEsICJlcnJjb2RlIik7CiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoZXJyY29kZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJlc3VsdFsibGFzdFJvb21NZXNzYWdlcyJdID0gbmV3IExpc3Q8c3RyaW5nPigpOwogICAgICAgICAgICAgICAgcmVzdWx0WyJsYXN0Um9vbU1lc3NhZ2VzU3VjY2VzcyJdID0gZmFsc2U7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSByZXN1bHQgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBtZXNzYWdlcyA9IG5ldyBMaXN0PHN0cmluZz4oKTsKICAgICAgICAgICAgaWYgKGJvZHlEYXRhICE9IG51bGwgJiYgSGFzUHJvcGVydHkoYm9keURhdGEsICJjaHVuayIpICYmIGJvZHlEYXRhLmNodW5rICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBldnQgaW4gYm9keURhdGEuY2h1bmspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGV2dFR5cGUgPSBHZXRTdHJpbmcoZXZ0LCAidHlwZSIpOwogICAgICAgICAgICAgICAgICAgIGlmIChldnRUeXBlICE9ICJtLnJvb20ubWVzc2FnZSIpIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IGV2dD8uY29udGVudDsKICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudCA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGJvZHkgPSBHZXRTdHJpbmcoY29udGVudCwgImJvZHkiKTsKICAgICAgICAgICAgICAgICAgICBzdHJpbmcgc2VuZGVyID0gR2V0U3RyaW5nKGV2dCwgInNlbmRlciIpOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShib2R5KSAmJiAhc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzZW5kZXIpKQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcy5BZGQoc2VuZGVyICsgIjogIiArIGJvZHkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBtZXNzYWdlcy5SZXZlcnNlKCk7CiAgICAgICAgICAgIHJlc3VsdFsibGFzdFJvb21NZXNzYWdlcyJdID0gbWVzc2FnZXM7CiAgICAgICAgICAgIHJlc3VsdFsibGFzdFJvb21NZXNzYWdlc1N1Y2Nlc3MiXSA9IG1lc3NhZ2VzLkNvdW50ID4gMDsKICAgICAgICB9CiAgICAgICAgY2F0Y2gKICAgICAgICB7CiAgICAgICAgICAgIHJlc3VsdFsibGFzdFJvb21NZXNzYWdlcyJdID0gbmV3IExpc3Q8c3RyaW5nPigpOwogICAgICAgICAgICByZXN1bHRbImxhc3RSb29tTWVzc2FnZXNTdWNjZXNzIl0gPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IHJlc3VsdCB9KTsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBMb29rdXBVc2VyKGR5bmFtaWMgZGF0YSwgc3RyaW5nIGNoYXRSb29tS2V5KQogICAgewogICAgICAgIGlmICghSGFzUHJvcGVydHkoZGF0YSwgInBlcm1hbmVudENoYXRSb29tcyIpIHx8IGRhdGEucGVybWFuZW50Q2hhdFJvb21zID09IG51bGwpCiAgICAgICAgICAgIHJldHVybiBudWxsOwoKICAgICAgICBmb3JlYWNoICh2YXIgcm9vbSBpbiBkYXRhLnBlcm1hbmVudENoYXRSb29tcykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBrZXkgPSBHZXRTdHJpbmcocm9vbSwgImNoYXRSb29tS2V5Iik7CiAgICAgICAgICAgIGlmIChzdHJpbmcuRXF1YWxzKGtleSwgY2hhdFJvb21LZXksIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICAgICAgcmV0dXJuIEdldFN0cmluZyhyb29tLCAidXNlciIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkob2JqLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHByaXZhdGUgdm9pZCBDb3B5QWxsRmllbGRzKERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHJlc3VsdCwgZHluYW1pYyBkYXRhKQogICAgewogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAidHJhbnNmZXJQbGFuIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJ2YWxpZGF0aW9uUmVzdWx0Iik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJzb3VyY2VBZHZpc29ySWQiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImFkdmlzb3JUeXBlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJzdGFydERhdGUiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImVuZERhdGUiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInRyYW5zZmVyVHlwZSIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAiZW5yaWNoZWRSZXplcnZhdGlvbnMiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInJlekNoYXRSb29tUGxhbiIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAicGVybWFuZW50Um9vbVBsYW4iKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudENoYXRSb29tcyIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAicGVybWFuZW50UHJvY2Vzc2VkSW5kZXgiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImxhc3RQZXJtYW5lbnREZWFjdGl2YXRlU3VjY2VzcyIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdERlYWN0aXZhdGVkUm9vbUlkIik7CiAgICB9CgogICAgcHJpdmF0ZSB2b2lkIENvcHlJZlByZXNlbnQoRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gdGFyZ2V0LCBkeW5hbWljIHNvdXJjZSwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm47CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkoc291cmNlLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKHNvdXJjZSwgbmFtZSk7CiAgICAgICAgICAgICAgICBpZiAodiAhPSBudWxsKSB0YXJnZXRbbmFtZV0gPSB2OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgfQp9Cg=="
480
+ "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIGdldC1tYXRyaXgtcm9vbS1tZXNzYWdlcyBIdHRwVGFzayAoVHlwZSA2KSBpbiB0aGUgdGVybWluYXRpb24gdHJhbnNmZXIgbG9vcC4KLy8vIFJlYWRzIHJvb21JZCBmcm9tIHBlcm1hbmVudENoYXRSb29tcyAobWF0Y2hlZCBieSBjaGF0Um9vbUtleSkgYW5kIGZldGNoZXMgdGhlIGxhc3QgMTAwIG1lc3NhZ2VzLgovLy8gU3RvcmVzIGZvcm1hdHRlZCBtZXNzYWdlcyBpbiBsYXN0Um9vbU1lc3NhZ2VzIGZvciBBSSBzdW1tYXJpemF0aW9uLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgRmV0Y2hSb29tTWVzc2FnZXNGb3JTdW1tYXJ5TWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgaHR0cFRhc2sgPSB0YXNrIGFzIEh0dHBUYXNrOwogICAgICAgIGlmIChodHRwVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGFuIEh0dHBUYXNrIik7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8taW5zdGFuY2UtZGF0YSIgfSB9OwoKICAgICAgICB2YXIgcm9vbUlkID0gR2V0U3RyaW5nKGRhdGEsICJsYXN0RGVhY3RpdmF0ZWRSb29tSWQiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShyb29tSWQpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tcm9vbUlkIiB9IH07CgogICAgICAgIHN0cmluZyB1c2VyID0gbnVsbDsKICAgICAgICB2YXIgcGVybWFuZW50Um9vbVBsYW4gPSBkYXRhLnBlcm1hbmVudFJvb21QbGFuOwogICAgICAgIGlmIChwZXJtYW5lbnRSb29tUGxhbiAhPSBudWxsKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHByb2Nlc3NlZEluZGV4ID0gMDsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGRhdGEsICJwZXJtYW5lbnRQcm9jZXNzZWRJbmRleCIpKQogICAgICAgICAgICAgICAgaW50LlRyeVBhcnNlKGRhdGEucGVybWFuZW50UHJvY2Vzc2VkSW5kZXg/LlRvU3RyaW5nKCkgPz8gIjAiLCBvdXQgcHJvY2Vzc2VkSW5kZXgpOwoKICAgICAgICAgICAgdmFyIGl0ZW1zID0gcGVybWFuZW50Um9vbVBsYW4gYXMgSUVudW1lcmFibGU8b2JqZWN0PjsKICAgICAgICAgICAgaWYgKGl0ZW1zICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBpdGVtc0xpc3QgPSBpdGVtcy5Ub0xpc3QoKTsKICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWRJbmRleCA8IGl0ZW1zTGlzdC5Db3VudCkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBkeW5hbWljIGN1cnJlbnRJdGVtID0gaXRlbXNMaXN0W3Byb2Nlc3NlZEluZGV4XTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2hhdFJvb21LZXkgPSBjdXJyZW50SXRlbT8uY2hhdFJvb21LZXk/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShjaGF0Um9vbUtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBMb29rdXBVc2VyKGRhdGEsIGNoYXRSb29tS2V5KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UodXNlcikpCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UgeyBEYXRhID0gbmV3IHsgc2tpcHBlZCA9IHRydWUsIHJlYXNvbiA9ICJuby11c2VyIiB9IH07CgogICAgICAgIHZhciBzZWNyZXROYW1lID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfU0VDUkVUX1NUT1JFX05BTUUiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzZWNyZXROYW1lKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkRBUFJfU0VDUkVUX1NUT1JFX05BTUUgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCIpOwoKICAgICAgICB2YXIgbWF0cml4QmFzZVVybCA9IGF3YWl0IEdldFNlY3JldEFzeW5jKHNlY3JldE5hbWUsICJ3b3JrZmxvdy1zZWNyZXQiLCAiTWF0cml4QmFzZVVybCIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKG1hdHJpeEJhc2VVcmwpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tTWF0cml4QmFzZVVybCIgfSB9OwoKICAgICAgICB2YXIgZnVsbFVybCA9IG1hdHJpeEJhc2VVcmwuVHJpbUVuZCgnLycpICsKICAgICAgICAgICAgIi9fbWF0cml4L2NsaWVudC92My9yb29tcy8iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcocm9vbUlkKSArCiAgICAgICAgICAgICIvbWVzc2FnZXM/ZGlyPWImbGltaXQ9MTAwIjsKCiAgICAgICAgaHR0cFRhc2suU2V0VXJsKGZ1bGxVcmwpOwogICAgICAgIGh0dHBUYXNrLlNldEhlYWRlcnMobmV3IERpY3Rpb25hcnk8c3RyaW5nLCBzdHJpbmc+CiAgICAgICAgewogICAgICAgICAgICBbIkFjY2VwdCJdID0gImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgICBbIlgtTWF0cml4LVVzZXIiXSA9IHVzZXIKICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSgpOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PigpOwogICAgICAgIENvcHlBbGxGaWVsZHMocmVzdWx0LCBkYXRhKTsKCiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBjb250ZXh0LkJvZHk7CiAgICAgICAgICAgIHZhciBib2R5RGF0YSA9IHJlc3BvbnNlPy5kYXRhOwoKICAgICAgICAgICAgc3RyaW5nIGVycmNvZGUgPSBHZXRTdHJpbmcoYm9keURhdGEsICJlcnJjb2RlIik7CiAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoZXJyY29kZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJlc3VsdFsibGFzdFJvb21NZXNzYWdlcyJdID0gbmV3IExpc3Q8c3RyaW5nPigpOwogICAgICAgICAgICAgICAgcmVzdWx0WyJsYXN0Um9vbU1lc3NhZ2VzU3VjY2VzcyJdID0gZmFsc2U7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSByZXN1bHQgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBtZXNzYWdlcyA9IG5ldyBMaXN0PHN0cmluZz4oKTsKICAgICAgICAgICAgaWYgKGJvZHlEYXRhICE9IG51bGwgJiYgSGFzUHJvcGVydHkoYm9keURhdGEsICJjaHVuayIpICYmIGJvZHlEYXRhLmNodW5rICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciBldnQgaW4gYm9keURhdGEuY2h1bmspCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGV2dFR5cGUgPSBHZXRTdHJpbmcoZXZ0LCAidHlwZSIpOwogICAgICAgICAgICAgICAgICAgIGlmIChldnRUeXBlICE9ICJtLnJvb20ubWVzc2FnZSIpIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudCA9IGV2dD8uY29udGVudDsKICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudCA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIGJvZHkgPSBHZXRTdHJpbmcoY29udGVudCwgImJvZHkiKTsKICAgICAgICAgICAgICAgICAgICBzdHJpbmcgc2VuZGVyID0gR2V0U3RyaW5nKGV2dCwgInNlbmRlciIpOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShib2R5KSAmJiAhc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzZW5kZXIpKQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcy5BZGQoc2VuZGVyICsgIjogIiArIGJvZHkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBtZXNzYWdlcy5SZXZlcnNlKCk7CiAgICAgICAgICAgIHJlc3VsdFsibGFzdFJvb21NZXNzYWdlcyJdID0gbWVzc2FnZXM7CiAgICAgICAgICAgIHJlc3VsdFsibGFzdFJvb21NZXNzYWdlc1N1Y2Nlc3MiXSA9IG1lc3NhZ2VzLkNvdW50ID4gMDsKICAgICAgICB9CiAgICAgICAgY2F0Y2gKICAgICAgICB7CiAgICAgICAgICAgIHJlc3VsdFsibGFzdFJvb21NZXNzYWdlcyJdID0gbmV3IExpc3Q8c3RyaW5nPigpOwogICAgICAgICAgICByZXN1bHRbImxhc3RSb29tTWVzc2FnZXNTdWNjZXNzIl0gPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IHJlc3VsdCB9KTsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBMb29rdXBVc2VyKGR5bmFtaWMgZGF0YSwgc3RyaW5nIGNoYXRSb29tS2V5KQogICAgewogICAgICAgIGlmICghSGFzUHJvcGVydHkoZGF0YSwgInBlcm1hbmVudENoYXRSb29tcyIpIHx8IGRhdGEucGVybWFuZW50Q2hhdFJvb21zID09IG51bGwpCiAgICAgICAgICAgIHJldHVybiBudWxsOwoKICAgICAgICBmb3JlYWNoICh2YXIgcm9vbSBpbiBkYXRhLnBlcm1hbmVudENoYXRSb29tcykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBrZXkgPSBHZXRTdHJpbmcocm9vbSwgImNoYXRSb29tS2V5Iik7CiAgICAgICAgICAgIGlmIChzdHJpbmcuRXF1YWxzKGtleSwgY2hhdFJvb21LZXksIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICAgICAgcmV0dXJuIEdldFN0cmluZyhyb29tLCAidXNlciIpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkob2JqLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHByaXZhdGUgdm9pZCBDb3B5QWxsRmllbGRzKERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHJlc3VsdCwgZHluYW1pYyBkYXRhKQogICAgewogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAidHJhbnNmZXJQbGFuIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJ2YWxpZGF0aW9uUmVzdWx0Iik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJzb3VyY2VBZHZpc29ySWQiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImFkdmlzb3JUeXBlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJzdGFydERhdGUiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImVuZERhdGUiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInRyYW5zZmVyVHlwZSIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAiZW5yaWNoZWRSZXplcnZhdGlvbnMiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInJlekNoYXRSb29tUGxhbiIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAicGVybWFuZW50Um9vbVBsYW4iKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudENoYXRSb29tcyIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAicGVybWFuZW50UHJvY2Vzc2VkSW5kZXgiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImxhc3RQZXJtYW5lbnREZWFjdGl2YXRlU3VjY2VzcyIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdERlYWN0aXZhdGVkUm9vbUlkIik7CiAgICB9CgogICAgcHJpdmF0ZSB2b2lkIENvcHlJZlByZXNlbnQoRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4gdGFyZ2V0LCBkeW5hbWljIHNvdXJjZSwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm47CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkoc291cmNlLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKHNvdXJjZSwgbmFtZSk7CiAgICAgICAgICAgICAgICBpZiAodiAhPSBudWxsKSB0YXJnZXRbbmFtZV0gPSB2OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGNhdGNoIHsgfQogICAgfQp9Cg=="
481
481
  }
482
482
  },
483
483
  {
@@ -490,7 +490,7 @@
490
490
  },
491
491
  "mapping": {
492
492
  "location": "./src/SummarizeChatWithOpenAIMapping.csx",
493
- "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHN1bW1hcml6ZS1jaGF0LW9wZW5haSBIdHRwVGFzayAoVHlwZSA2KSBpbiB0aGUgdGVybWluYXRpb24gdHJhbnNmZXIgbG9vcC4KLy8vIFJlYWRzIGxhc3RSb29tTWVzc2FnZXMgZnJvbSBpbnN0YW5jZSBkYXRhLCBzZW5kcyB0aGVtIHRvIE9wZW5BSSBDaGF0IENvbXBsZXRpb25zIEFQSSwKLy8vIGFuZCBzdG9yZXMgdGhlIHN1bW1hcnkgaW4gY2hhdFN1bW1hcnkuCi8vLyBTa2lwcyBncmFjZWZ1bGx5IGlmIG5vIG1lc3NhZ2VzIG9yIG9uIGVycm9yIC0tIHRyYW5zZmVyIGlzIG5ldmVyIGJsb2NrZWQuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBTdW1tYXJpemVDaGF0V2l0aE9wZW5BSU1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwcml2YXRlIGNvbnN0IHN0cmluZyBTeXN0ZW1Qcm9tcHQgPQogICAgICAgICJBc2FnaWRha2kgbXVzdGVyaS1kYW5pc21hbiBzb2hiZXQgZ2VjbWlzaW5pIFR1cmtjZSBvbGFyYWsgMy01IGN1bWxlIGlsZSBvemV0bGUuICIgKwogICAgICAgICJPbmVtbGkga29udWxhcmksIGthcmFybGFyaSB2ZSBha3NpeW9ubGFyaSB2dXJndWxhLiAiICsKICAgICAgICAiS2lzaXNlbCB2ZXJpbGVyaSAoVEMga2ltbGlrLCBoZXNhcCBudW1hcmFzaSB2Yi4pIG96ZXRsZW1lLiI7CgogICAgcHVibGljIGFzeW5jIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBodHRwVGFzayA9IHRhc2sgYXMgSHR0cFRhc2s7CiAgICAgICAgaWYgKGh0dHBUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYW4gSHR0cFRhc2siKTsKCiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIGlmIChkYXRhID09IG51bGwpCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UgeyBEYXRhID0gbmV3IHsgc2tpcHBlZCA9IHRydWUsIHJlYXNvbiA9ICJuby1pbnN0YW5jZS1kYXRhIiB9IH07CgogICAgICAgIGJvb2wgbWVzc2FnZXNPayA9IGZhbHNlOwogICAgICAgIGlmIChIYXNQcm9wZXJ0eShkYXRhLCAibGFzdFJvb21NZXNzYWdlc1N1Y2Nlc3MiKSkKICAgICAgICAgICAgYm9vbC5UcnlQYXJzZShkYXRhLmxhc3RSb29tTWVzc2FnZXNTdWNjZXNzPy5Ub1N0cmluZygpLCBvdXQgbWVzc2FnZXNPayk7CgogICAgICAgIGlmICghbWVzc2FnZXNPayB8fCAhSGFzUHJvcGVydHkoZGF0YSwgImxhc3RSb29tTWVzc2FnZXMiKSB8fCBkYXRhLmxhc3RSb29tTWVzc2FnZXMgPT0gbnVsbCkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLW1lc3NhZ2VzIiB9IH07CgogICAgICAgIHZhciBtc2dzID0gZGF0YS5sYXN0Um9vbU1lc3NhZ2VzIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgaWYgKG1zZ3MgPT0gbnVsbCB8fCAhbXNncy5BbnkoKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gImVtcHR5LW1lc3NhZ2VzIiB9IH07CgogICAgICAgIHZhciBjb21iaW5lZCA9IHN0cmluZy5Kb2luKCJcbiIsIG1zZ3MuU2VsZWN0KG0gPT4gbT8uVG9TdHJpbmcoKSA/PyAiIikpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKGNvbWJpbmVkKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gImJsYW5rLW1lc3NhZ2VzIiB9IH07CgogICAgICAgIHZhciBhcGlLZXkgPSBhd2FpdCBHZXRTZWNyZXRBc3luYygidm5leHQtc2VjcmV0IiwgIndvcmtmbG93LXNlY3JldCIsICJPcGVuQUlBcGlLZXkiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShhcGlLZXkpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tT3BlbkFJQXBpS2V5IiB9IH07CgogICAgICAgIGh0dHBUYXNrLlNldFVybCgiaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MS9jaGF0L2NvbXBsZXRpb25zIik7CiAgICAgICAgaHR0cFRhc2suU2V0SGVhZGVycyhuZXcgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4KICAgICAgICB7CiAgICAgICAgICAgIFsiQ29udGVudC1UeXBlIl0gPSAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAgIFsiQWNjZXB0Il0gPSAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAgIFsiQXV0aG9yaXphdGlvbiJdID0gIkJlYXJlciAiICsgYXBpS2V5LlRyaW0oKQogICAgICAgIH0pOwogICAgICAgIGh0dHBUYXNrLlNldEJvZHkobmV3CiAgICAgICAgewogICAgICAgICAgICBtb2RlbCA9ICJncHQtNG8tbWluaSIsCiAgICAgICAgICAgIG1lc3NhZ2VzID0gbmV3IG9iamVjdFtdCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5ldyB7IHJvbGUgPSAic3lzdGVtIiwgY29udGVudCA9IFN5c3RlbVByb21wdCB9LAogICAgICAgICAgICAgICAgbmV3IHsgcm9sZSA9ICJ1c2VyIiwgY29udGVudCA9IGNvbWJpbmVkIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgbWF4X3Rva2VucyA9IDUwMCwKICAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAwLjMKICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSgpOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PigpOwogICAgICAgIENvcHlBbGxGaWVsZHMocmVzdWx0LCBkYXRhKTsKCiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBjb250ZXh0LkJvZHk7CiAgICAgICAgICAgIHZhciBib2R5RGF0YSA9IHJlc3BvbnNlPy5kYXRhOwoKICAgICAgICAgICAgaWYgKGJvZHlEYXRhID09IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJlc3VsdFsiY2hhdFN1bW1hcnkiXSA9IG51bGw7CiAgICAgICAgICAgICAgICByZXN1bHRbImNoYXRTdW1tYXJ5U3VjY2VzcyJdID0gZmFsc2U7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSByZXN1bHQgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHN0cmluZyBlcnJUeXBlID0gR2V0U3RyaW5nKGJvZHlEYXRhLCAiZXJyb3IiKTsKICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShlcnJUeXBlKSAmJiBIYXNQcm9wZXJ0eShib2R5RGF0YSwgIm1lc3NhZ2UiKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmVzdWx0WyJjaGF0U3VtbWFyeSJdID0gbnVsbDsKICAgICAgICAgICAgICAgIHJlc3VsdFsiY2hhdFN1bW1hcnlTdWNjZXNzIl0gPSBmYWxzZTsKICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IHJlc3VsdCB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3RyaW5nIHN1bW1hcnkgPSBudWxsOwogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkoYm9keURhdGEsICJjaG9pY2VzIikgJiYgYm9keURhdGEuY2hvaWNlcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgY2hvaWNlIGluIGJvZHlEYXRhLmNob2ljZXMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBjaG9pY2U/Lm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnkgPSBHZXRTdHJpbmcobWVzc2FnZSwgImNvbnRlbnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXN1bHRbImNoYXRTdW1tYXJ5Il0gPSBzdW1tYXJ5OwogICAgICAgICAgICByZXN1bHRbImNoYXRTdW1tYXJ5U3VjY2VzcyJdID0gIXN0cmluZy5Jc051bGxPcldoaXRlU3BhY2Uoc3VtbWFyeSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoCiAgICAgICAgewogICAgICAgICAgICByZXN1bHRbImNoYXRTdW1tYXJ5Il0gPSBudWxsOwogICAgICAgICAgICByZXN1bHRbImNoYXRTdW1tYXJ5U3VjY2VzcyJdID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSByZXN1bHQgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHZvaWQgQ29weUFsbEZpZWxkcyhEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiByZXN1bHQsIGR5bmFtaWMgZGF0YSkKICAgIHsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInRyYW5zZmVyUGxhbiIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAidmFsaWRhdGlvblJlc3VsdCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAic291cmNlQWR2aXNvcklkIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJhZHZpc29yVHlwZSIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAic3RhcnREYXRlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJlbmREYXRlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJ0cmFuc2ZlclR5cGUiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImVucmljaGVkUmV6ZXJ2YXRpb25zIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJyZXpDaGF0Um9vbVBsYW4iKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudFJvb21QbGFuIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJwZXJtYW5lbnRDaGF0Um9vbXMiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudFByb2Nlc3NlZEluZGV4Iik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJsYXN0UGVybWFuZW50RGVhY3RpdmF0ZVN1Y2Nlc3MiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImxhc3REZWFjdGl2YXRlZFJvb21JZCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFJvb21NZXNzYWdlcyIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFJvb21NZXNzYWdlc1N1Y2Nlc3MiKTsKICAgIH0KCiAgICBwcml2YXRlIHZvaWQgQ29weUlmUHJlc2VudChEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiB0YXJnZXQsIGR5bmFtaWMgc291cmNlLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybjsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShzb3VyY2UsIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUoc291cmNlLCBuYW1lKTsKICAgICAgICAgICAgICAgIGlmICh2ICE9IG51bGwpIHRhcmdldFtuYW1lXSA9IHY7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICB9Cn0K"
493
+ "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHN1bW1hcml6ZS1jaGF0LW9wZW5haSBIdHRwVGFzayAoVHlwZSA2KSBpbiB0aGUgdGVybWluYXRpb24gdHJhbnNmZXIgbG9vcC4KLy8vIFJlYWRzIGxhc3RSb29tTWVzc2FnZXMgZnJvbSBpbnN0YW5jZSBkYXRhLCBzZW5kcyB0aGVtIHRvIE9wZW5BSSBDaGF0IENvbXBsZXRpb25zIEFQSSwKLy8vIGFuZCBzdG9yZXMgdGhlIHN1bW1hcnkgaW4gY2hhdFN1bW1hcnkuCi8vLyBTa2lwcyBncmFjZWZ1bGx5IGlmIG5vIG1lc3NhZ2VzIG9yIG9uIGVycm9yIC0tIHRyYW5zZmVyIGlzIG5ldmVyIGJsb2NrZWQuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBTdW1tYXJpemVDaGF0V2l0aE9wZW5BSU1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwcml2YXRlIGNvbnN0IHN0cmluZyBTeXN0ZW1Qcm9tcHQgPQogICAgICAgICJBc2FnaWRha2kgbXVzdGVyaS1kYW5pc21hbiBzb2hiZXQgZ2VjbWlzaW5pIFR1cmtjZSBvbGFyYWsgMy01IGN1bWxlIGlsZSBvemV0bGUuICIgKwogICAgICAgICJPbmVtbGkga29udWxhcmksIGthcmFybGFyaSB2ZSBha3NpeW9ubGFyaSB2dXJndWxhLiAiICsKICAgICAgICAiS2lzaXNlbCB2ZXJpbGVyaSAoVEMga2ltbGlrLCBoZXNhcCBudW1hcmFzaSB2Yi4pIG96ZXRsZW1lLiI7CgogICAgcHVibGljIGFzeW5jIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHZhciBodHRwVGFzayA9IHRhc2sgYXMgSHR0cFRhc2s7CiAgICAgICAgaWYgKGh0dHBUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYW4gSHR0cFRhc2siKTsKCiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIGlmIChkYXRhID09IG51bGwpCiAgICAgICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UgeyBEYXRhID0gbmV3IHsgc2tpcHBlZCA9IHRydWUsIHJlYXNvbiA9ICJuby1pbnN0YW5jZS1kYXRhIiB9IH07CgogICAgICAgIGJvb2wgbWVzc2FnZXNPayA9IGZhbHNlOwogICAgICAgIGlmIChIYXNQcm9wZXJ0eShkYXRhLCAibGFzdFJvb21NZXNzYWdlc1N1Y2Nlc3MiKSkKICAgICAgICAgICAgYm9vbC5UcnlQYXJzZShkYXRhLmxhc3RSb29tTWVzc2FnZXNTdWNjZXNzPy5Ub1N0cmluZygpLCBvdXQgbWVzc2FnZXNPayk7CgogICAgICAgIGlmICghbWVzc2FnZXNPayB8fCAhSGFzUHJvcGVydHkoZGF0YSwgImxhc3RSb29tTWVzc2FnZXMiKSB8fCBkYXRhLmxhc3RSb29tTWVzc2FnZXMgPT0gbnVsbCkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLW1lc3NhZ2VzIiB9IH07CgogICAgICAgIHZhciBtc2dzID0gZGF0YS5sYXN0Um9vbU1lc3NhZ2VzIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgaWYgKG1zZ3MgPT0gbnVsbCB8fCAhbXNncy5BbnkoKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gImVtcHR5LW1lc3NhZ2VzIiB9IH07CgogICAgICAgIHZhciBjb21iaW5lZCA9IHN0cmluZy5Kb2luKCJcbiIsIG1zZ3MuU2VsZWN0KG0gPT4gbT8uVG9TdHJpbmcoKSA/PyAiIikpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKGNvbWJpbmVkKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gImJsYW5rLW1lc3NhZ2VzIiB9IH07CgogICAgICAgIHZhciBzZWNyZXROYW1lID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfU0VDUkVUX1NUT1JFX05BTUUiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzZWNyZXROYW1lKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIkRBUFJfU0VDUkVUX1NUT1JFX05BTUUgY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCIpOwoKICAgICAgICB2YXIgYXBpS2V5ID0gYXdhaXQgR2V0U2VjcmV0QXN5bmMoc2VjcmV0TmFtZSwgIndvcmtmbG93LXNlY3JldCIsICJPcGVuQUlBcGlLZXkiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShhcGlLZXkpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tT3BlbkFJQXBpS2V5IiB9IH07CgogICAgICAgIGh0dHBUYXNrLlNldFVybCgiaHR0cHM6Ly9hcGkub3BlbmFpLmNvbS92MS9jaGF0L2NvbXBsZXRpb25zIik7CiAgICAgICAgaHR0cFRhc2suU2V0SGVhZGVycyhuZXcgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4KICAgICAgICB7CiAgICAgICAgICAgIFsiQ29udGVudC1UeXBlIl0gPSAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAgIFsiQWNjZXB0Il0gPSAiYXBwbGljYXRpb24vanNvbiIsCiAgICAgICAgICAgIFsiQXV0aG9yaXphdGlvbiJdID0gIkJlYXJlciAiICsgYXBpS2V5LlRyaW0oKQogICAgICAgIH0pOwogICAgICAgIGh0dHBUYXNrLlNldEJvZHkobmV3CiAgICAgICAgewogICAgICAgICAgICBtb2RlbCA9ICJncHQtNG8tbWluaSIsCiAgICAgICAgICAgIG1lc3NhZ2VzID0gbmV3IG9iamVjdFtdCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5ldyB7IHJvbGUgPSAic3lzdGVtIiwgY29udGVudCA9IFN5c3RlbVByb21wdCB9LAogICAgICAgICAgICAgICAgbmV3IHsgcm9sZSA9ICJ1c2VyIiwgY29udGVudCA9IGNvbWJpbmVkIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgbWF4X3Rva2VucyA9IDUwMCwKICAgICAgICAgICAgdGVtcGVyYXR1cmUgPSAwLjMKICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSgpOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIHJlc3VsdCA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PigpOwogICAgICAgIENvcHlBbGxGaWVsZHMocmVzdWx0LCBkYXRhKTsKCiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBjb250ZXh0LkJvZHk7CiAgICAgICAgICAgIHZhciBib2R5RGF0YSA9IHJlc3BvbnNlPy5kYXRhOwoKICAgICAgICAgICAgaWYgKGJvZHlEYXRhID09IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJlc3VsdFsiY2hhdFN1bW1hcnkiXSA9IG51bGw7CiAgICAgICAgICAgICAgICByZXN1bHRbImNoYXRTdW1tYXJ5U3VjY2VzcyJdID0gZmFsc2U7CiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSByZXN1bHQgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHN0cmluZyBlcnJUeXBlID0gR2V0U3RyaW5nKGJvZHlEYXRhLCAiZXJyb3IiKTsKICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShlcnJUeXBlKSAmJiBIYXNQcm9wZXJ0eShib2R5RGF0YSwgIm1lc3NhZ2UiKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmVzdWx0WyJjaGF0U3VtbWFyeSJdID0gbnVsbDsKICAgICAgICAgICAgICAgIHJlc3VsdFsiY2hhdFN1bW1hcnlTdWNjZXNzIl0gPSBmYWxzZTsKICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IHJlc3VsdCB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3RyaW5nIHN1bW1hcnkgPSBudWxsOwogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkoYm9keURhdGEsICJjaG9pY2VzIikgJiYgYm9keURhdGEuY2hvaWNlcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgY2hvaWNlIGluIGJvZHlEYXRhLmNob2ljZXMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSBjaG9pY2U/Lm1lc3NhZ2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2UgIT0gbnVsbCkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcnkgPSBHZXRTdHJpbmcobWVzc2FnZSwgImNvbnRlbnQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXN1bHRbImNoYXRTdW1tYXJ5Il0gPSBzdW1tYXJ5OwogICAgICAgICAgICByZXN1bHRbImNoYXRTdW1tYXJ5U3VjY2VzcyJdID0gIXN0cmluZy5Jc051bGxPcldoaXRlU3BhY2Uoc3VtbWFyeSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoCiAgICAgICAgewogICAgICAgICAgICByZXN1bHRbImNoYXRTdW1tYXJ5Il0gPSBudWxsOwogICAgICAgICAgICByZXN1bHRbImNoYXRTdW1tYXJ5U3VjY2VzcyJdID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSByZXN1bHQgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHZvaWQgQ29weUFsbEZpZWxkcyhEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiByZXN1bHQsIGR5bmFtaWMgZGF0YSkKICAgIHsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInRyYW5zZmVyUGxhbiIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAidmFsaWRhdGlvblJlc3VsdCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAic291cmNlQWR2aXNvcklkIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJhZHZpc29yVHlwZSIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAic3RhcnREYXRlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJlbmREYXRlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJ0cmFuc2ZlclR5cGUiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImVucmljaGVkUmV6ZXJ2YXRpb25zIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJyZXpDaGF0Um9vbVBsYW4iKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudFJvb21QbGFuIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJwZXJtYW5lbnRDaGF0Um9vbXMiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudFByb2Nlc3NlZEluZGV4Iik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJsYXN0UGVybWFuZW50RGVhY3RpdmF0ZVN1Y2Nlc3MiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImxhc3REZWFjdGl2YXRlZFJvb21JZCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFJvb21NZXNzYWdlcyIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFJvb21NZXNzYWdlc1N1Y2Nlc3MiKTsKICAgIH0KCiAgICBwcml2YXRlIHZvaWQgQ29weUlmUHJlc2VudChEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiB0YXJnZXQsIGR5bmFtaWMgc291cmNlLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybjsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShzb3VyY2UsIG5hbWUpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgdiA9IEdldFByb3BlcnR5VmFsdWUoc291cmNlLCBuYW1lKTsKICAgICAgICAgICAgICAgIGlmICh2ICE9IG51bGwpIHRhcmdldFtuYW1lXSA9IHY7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICB9Cn0K"
494
494
  }
495
495
  },
496
496
  {
@@ -516,7 +516,7 @@
516
516
  },
517
517
  "mapping": {
518
518
  "location": "./src/SendSummaryToNewRoomMapping.csx",
519
- "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHNlbmQtbWF0cml4LXJvb20tbWVzc2FnZSBIdHRwVGFzayAoVHlwZSA2KSBpbiB0aGUgdGVybWluYXRpb24gdHJhbnNmZXIgbG9vcC4KLy8vIFNlbmRzIHRoZSBBSS1nZW5lcmF0ZWQgY2hhdFN1bW1hcnkgYXMgdGhlIGZpcnN0IG1lc3NhZ2UgaW4gdGhlIG5ld2x5IGNyZWF0ZWQgcm9vbS4KLy8vIFNraXBzIGdyYWNlZnVsbHkgaWYgbm8gc3VtbWFyeSBpcyBhdmFpbGFibGUgLS0gdHJhbnNmZXIgaXMgbmV2ZXIgYmxvY2tlZC4KLy8vIDwvc3VtbWFyeT4KcHVibGljIGNsYXNzIFNlbmRTdW1tYXJ5VG9OZXdSb29tTWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgaHR0cFRhc2sgPSB0YXNrIGFzIEh0dHBUYXNrOwogICAgICAgIGlmIChodHRwVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGFuIEh0dHBUYXNrIik7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8taW5zdGFuY2UtZGF0YSIgfSB9OwoKICAgICAgICB2YXIgY2hhdFN1bW1hcnkgPSBHZXRTdHJpbmcoZGF0YSwgImNoYXRTdW1tYXJ5Iik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoY2hhdFN1bW1hcnkpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tY2hhdFN1bW1hcnkiIH0gfTsKCiAgICAgICAgdmFyIG5ld1Jvb21JZCA9IEdldFN0cmluZyhkYXRhLCAibmV3Um9vbUlkIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UobmV3Um9vbUlkKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLW5ld1Jvb21JZCIgfSB9OwoKICAgICAgICBzdHJpbmcgdXNlciA9IG51bGw7CiAgICAgICAgdmFyIHBlcm1hbmVudFJvb21QbGFuID0gZGF0YS5wZXJtYW5lbnRSb29tUGxhbjsKICAgICAgICBpZiAocGVybWFuZW50Um9vbVBsYW4gIT0gbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgIGludCBwcm9jZXNzZWRJbmRleCA9IDA7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShkYXRhLCAicGVybWFuZW50UHJvY2Vzc2VkSW5kZXgiKSkKICAgICAgICAgICAgICAgIGludC5UcnlQYXJzZShkYXRhLnBlcm1hbmVudFByb2Nlc3NlZEluZGV4Py5Ub1N0cmluZygpID8/ICIwIiwgb3V0IHByb2Nlc3NlZEluZGV4KTsKCiAgICAgICAgICAgIHZhciBpdGVtcyA9IHBlcm1hbmVudFJvb21QbGFuIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgICAgIGlmIChpdGVtcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgaXRlbXNMaXN0ID0gaXRlbXMuVG9MaXN0KCk7CiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkSW5kZXggPCBpdGVtc0xpc3QuQ291bnQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZHluYW1pYyBjdXJyZW50SXRlbSA9IGl0ZW1zTGlzdFtwcm9jZXNzZWRJbmRleF07CiAgICAgICAgICAgICAgICAgICAgdmFyIGNoYXRSb29tS2V5ID0gY3VycmVudEl0ZW0/LmNoYXRSb29tS2V5Py5Ub1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoY2hhdFJvb21LZXkpKQogICAgICAgICAgICAgICAgICAgICAgICB1c2VyID0gTG9va3VwVXNlcihkYXRhLCBjaGF0Um9vbUtleSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVzZXIpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tdXNlciIgfSB9OwoKICAgICAgICB2YXIgbWF0cml4QmFzZVVybCA9IGF3YWl0IEdldFNlY3JldEFzeW5jKCJ2bmV4dC1zZWNyZXQiLCAid29ya2Zsb3ctc2VjcmV0IiwgIk1hdHJpeEJhc2VVcmwiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShtYXRyaXhCYXNlVXJsKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLU1hdHJpeEJhc2VVcmwiIH0gfTsKCiAgICAgICAgdmFyIHR4bklkID0gR3VpZC5OZXdHdWlkKCkuVG9TdHJpbmcoIk4iKTsKICAgICAgICB2YXIgZnVsbFVybCA9IG1hdHJpeEJhc2VVcmwuVHJpbUVuZCgnLycpICsKICAgICAgICAgICAgIi9fbWF0cml4L2NsaWVudC92My9yb29tcy8iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcobmV3Um9vbUlkKSArCiAgICAgICAgICAgICIvc2VuZC9tLnJvb20ubWVzc2FnZS8iICsgdHhuSWQ7CgogICAgICAgIGh0dHBUYXNrLlNldFVybChmdWxsVXJsKTsKICAgICAgICBodHRwVGFzay5TZXRIZWFkZXJzKG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPgogICAgICAgIHsKICAgICAgICAgICAgWyJDb250ZW50LVR5cGUiXSA9ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICAgWyJBY2NlcHQiXSA9ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICAgWyJYLU1hdHJpeC1Vc2VyIl0gPSB1c2VyCiAgICAgICAgfSk7CgogICAgICAgIHZhciBtZXNzYWdlQm9keSA9CiAgICAgICAgICAgICJPbmNla2kgZGFuaXNtYW4gaWxlIHlhcGlsYW4gZ29ydXNtZSBvemV0aTpcblxuIiArCiAgICAgICAgICAgIGNoYXRTdW1tYXJ5ICsgIlxuXG4iICsKICAgICAgICAgICAgIi0tLVxuIiArCiAgICAgICAgICAgICJCdSBvemV0IG90b21hdGlrIG9sYXJhayBvbHVzdHVydWxtdXN0dXIuIjsKCiAgICAgICAgaHR0cFRhc2suU2V0Qm9keShuZXcKICAgICAgICB7CiAgICAgICAgICAgIG1zZ3R5cGUgPSAibS50ZXh0IiwKICAgICAgICAgICAgYm9keSA9IG1lc3NhZ2VCb2R5CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UoKTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIHZhciByZXN1bHQgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4oKTsKICAgICAgICBDb3B5QWxsRmllbGRzKHJlc3VsdCwgZGF0YSk7CgogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gY29udGV4dC5Cb2R5OwogICAgICAgICAgICB2YXIgYm9keURhdGEgPSByZXNwb25zZT8uZGF0YTsKICAgICAgICAgICAgc3RyaW5nIGVycmNvZGUgPSBHZXRTdHJpbmcoYm9keURhdGEsICJlcnJjb2RlIik7CgogICAgICAgICAgICByZXN1bHRbInNlbmRTdW1tYXJ5U3VjY2VzcyJdID0gc3RyaW5nLklzTnVsbE9yRW1wdHkoZXJyY29kZSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoCiAgICAgICAgewogICAgICAgICAgICByZXN1bHRbInNlbmRTdW1tYXJ5U3VjY2VzcyJdID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSByZXN1bHQgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgTG9va3VwVXNlcihkeW5hbWljIGRhdGEsIHN0cmluZyBjaGF0Um9vbUtleSkKICAgIHsKICAgICAgICBpZiAoIUhhc1Byb3BlcnR5KGRhdGEsICJwZXJtYW5lbnRDaGF0Um9vbXMiKSB8fCBkYXRhLnBlcm1hbmVudENoYXRSb29tcyA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAodmFyIHJvb20gaW4gZGF0YS5wZXJtYW5lbnRDaGF0Um9vbXMpCiAgICAgICAgewogICAgICAgICAgICB2YXIga2V5ID0gR2V0U3RyaW5nKHJvb20sICJjaGF0Um9vbUtleSIpOwogICAgICAgICAgICBpZiAoc3RyaW5nLkVxdWFscyhrZXksIGNoYXRSb29tS2V5LCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkKICAgICAgICAgICAgICAgIHJldHVybiBHZXRTdHJpbmcocm9vbSwgInVzZXIiKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHZvaWQgQ29weUFsbEZpZWxkcyhEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiByZXN1bHQsIGR5bmFtaWMgZGF0YSkKICAgIHsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInRyYW5zZmVyUGxhbiIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAidmFsaWRhdGlvblJlc3VsdCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAic291cmNlQWR2aXNvcklkIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJhZHZpc29yVHlwZSIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAic3RhcnREYXRlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJlbmREYXRlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJ0cmFuc2ZlclR5cGUiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImVucmljaGVkUmV6ZXJ2YXRpb25zIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJyZXpDaGF0Um9vbVBsYW4iKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudFJvb21QbGFuIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJwZXJtYW5lbnRDaGF0Um9vbXMiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudFByb2Nlc3NlZEluZGV4Iik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJsYXN0UGVybWFuZW50RGVhY3RpdmF0ZVN1Y2Nlc3MiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImxhc3REZWFjdGl2YXRlZFJvb21JZCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFJvb21NZXNzYWdlcyIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFJvb21NZXNzYWdlc1N1Y2Nlc3MiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImNoYXRTdW1tYXJ5Iik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJjaGF0U3VtbWFyeVN1Y2Nlc3MiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgIm5ld1Jvb21JZCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFBlcm1hbmVudENoYXRSb29tU3VjY2VzcyIpOwogICAgfQoKICAgIHByaXZhdGUgdm9pZCBDb3B5SWZQcmVzZW50KERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHRhcmdldCwgZHluYW1pYyBzb3VyY2UsIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KHNvdXJjZSwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShzb3VyY2UsIG5hbWUpOwogICAgICAgICAgICAgICAgaWYgKHYgIT0gbnVsbCkgdGFyZ2V0W25hbWVdID0gdjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgIH0KfQo="
519
+ "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKCi8vLyA8c3VtbWFyeT4KLy8vIE1hcHBpbmcgZm9yIHNlbmQtbWF0cml4LXJvb20tbWVzc2FnZSBIdHRwVGFzayAoVHlwZSA2KSBpbiB0aGUgdGVybWluYXRpb24gdHJhbnNmZXIgbG9vcC4KLy8vIFNlbmRzIHRoZSBBSS1nZW5lcmF0ZWQgY2hhdFN1bW1hcnkgYXMgdGhlIGZpcnN0IG1lc3NhZ2UgaW4gdGhlIG5ld2x5IGNyZWF0ZWQgcm9vbS4KLy8vIFNraXBzIGdyYWNlZnVsbHkgaWYgbm8gc3VtbWFyeSBpcyBhdmFpbGFibGUgLS0gdHJhbnNmZXIgaXMgbmV2ZXIgYmxvY2tlZC4KLy8vIDwvc3VtbWFyeT4KcHVibGljIGNsYXNzIFNlbmRTdW1tYXJ5VG9OZXdSb29tTWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgaHR0cFRhc2sgPSB0YXNrIGFzIEh0dHBUYXNrOwogICAgICAgIGlmIChodHRwVGFzayA9PSBudWxsKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVGFzayBtdXN0IGJlIGFuIEh0dHBUYXNrIik7CgogICAgICAgIHZhciBkYXRhID0gY29udGV4dC5JbnN0YW5jZT8uRGF0YTsKICAgICAgICBpZiAoZGF0YSA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8taW5zdGFuY2UtZGF0YSIgfSB9OwoKICAgICAgICB2YXIgY2hhdFN1bW1hcnkgPSBHZXRTdHJpbmcoZGF0YSwgImNoYXRTdW1tYXJ5Iik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UoY2hhdFN1bW1hcnkpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tY2hhdFN1bW1hcnkiIH0gfTsKCiAgICAgICAgdmFyIG5ld1Jvb21JZCA9IEdldFN0cmluZyhkYXRhLCAibmV3Um9vbUlkIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2UobmV3Um9vbUlkKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLW5ld1Jvb21JZCIgfSB9OwoKICAgICAgICBzdHJpbmcgdXNlciA9IG51bGw7CiAgICAgICAgdmFyIHBlcm1hbmVudFJvb21QbGFuID0gZGF0YS5wZXJtYW5lbnRSb29tUGxhbjsKICAgICAgICBpZiAocGVybWFuZW50Um9vbVBsYW4gIT0gbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgIGludCBwcm9jZXNzZWRJbmRleCA9IDA7CiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShkYXRhLCAicGVybWFuZW50UHJvY2Vzc2VkSW5kZXgiKSkKICAgICAgICAgICAgICAgIGludC5UcnlQYXJzZShkYXRhLnBlcm1hbmVudFByb2Nlc3NlZEluZGV4Py5Ub1N0cmluZygpID8/ICIwIiwgb3V0IHByb2Nlc3NlZEluZGV4KTsKCiAgICAgICAgICAgIHZhciBpdGVtcyA9IHBlcm1hbmVudFJvb21QbGFuIGFzIElFbnVtZXJhYmxlPG9iamVjdD47CiAgICAgICAgICAgIGlmIChpdGVtcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2YXIgaXRlbXNMaXN0ID0gaXRlbXMuVG9MaXN0KCk7CiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkSW5kZXggPCBpdGVtc0xpc3QuQ291bnQpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZHluYW1pYyBjdXJyZW50SXRlbSA9IGl0ZW1zTGlzdFtwcm9jZXNzZWRJbmRleF07CiAgICAgICAgICAgICAgICAgICAgdmFyIGNoYXRSb29tS2V5ID0gY3VycmVudEl0ZW0/LmNoYXRSb29tS2V5Py5Ub1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoY2hhdFJvb21LZXkpKQogICAgICAgICAgICAgICAgICAgICAgICB1c2VyID0gTG9va3VwVXNlcihkYXRhLCBjaGF0Um9vbUtleSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVzZXIpKQogICAgICAgICAgICByZXR1cm4gbmV3IFNjcmlwdFJlc3BvbnNlIHsgRGF0YSA9IG5ldyB7IHNraXBwZWQgPSB0cnVlLCByZWFzb24gPSAibm8tdXNlciIgfSB9OwoKICAgICAgICB2YXIgc2VjcmV0TmFtZSA9IEdldENvbmZpZ1ZhbHVlKCJEQVBSX1NFQ1JFVF9TVE9SRV9OQU1FIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2Uoc2VjcmV0TmFtZSkpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJEQVBSX1NFQ1JFVF9TVE9SRV9OQU1FIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgdmFyIG1hdHJpeEJhc2VVcmwgPSBhd2FpdCBHZXRTZWNyZXRBc3luYyhzZWNyZXROYW1lLCAid29ya2Zsb3ctc2VjcmV0IiwgIk1hdHJpeEJhc2VVcmwiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShtYXRyaXhCYXNlVXJsKSkKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSBuZXcgeyBza2lwcGVkID0gdHJ1ZSwgcmVhc29uID0gIm5vLU1hdHJpeEJhc2VVcmwiIH0gfTsKCiAgICAgICAgdmFyIHR4bklkID0gR3VpZC5OZXdHdWlkKCkuVG9TdHJpbmcoIk4iKTsKICAgICAgICB2YXIgZnVsbFVybCA9IG1hdHJpeEJhc2VVcmwuVHJpbUVuZCgnLycpICsKICAgICAgICAgICAgIi9fbWF0cml4L2NsaWVudC92My9yb29tcy8iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcobmV3Um9vbUlkKSArCiAgICAgICAgICAgICIvc2VuZC9tLnJvb20ubWVzc2FnZS8iICsgdHhuSWQ7CgogICAgICAgIGh0dHBUYXNrLlNldFVybChmdWxsVXJsKTsKICAgICAgICBodHRwVGFzay5TZXRIZWFkZXJzKG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPgogICAgICAgIHsKICAgICAgICAgICAgWyJDb250ZW50LVR5cGUiXSA9ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICAgWyJBY2NlcHQiXSA9ICJhcHBsaWNhdGlvbi9qc29uIiwKICAgICAgICAgICAgWyJYLU1hdHJpeC1Vc2VyIl0gPSB1c2VyCiAgICAgICAgfSk7CgogICAgICAgIHZhciBtZXNzYWdlQm9keSA9CiAgICAgICAgICAgICJPbmNla2kgZGFuaXNtYW4gaWxlIHlhcGlsYW4gZ29ydXNtZSBvemV0aTpcblxuIiArCiAgICAgICAgICAgIGNoYXRTdW1tYXJ5ICsgIlxuXG4iICsKICAgICAgICAgICAgIi0tLVxuIiArCiAgICAgICAgICAgICJCdSBvemV0IG90b21hdGlrIG9sYXJhayBvbHVzdHVydWxtdXN0dXIuIjsKCiAgICAgICAgaHR0cFRhc2suU2V0Qm9keShuZXcKICAgICAgICB7CiAgICAgICAgICAgIG1zZ3R5cGUgPSAibS50ZXh0IiwKICAgICAgICAgICAgYm9keSA9IG1lc3NhZ2VCb2R5CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiBuZXcgU2NyaXB0UmVzcG9uc2UoKTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIGRhdGEgPSBjb250ZXh0Lkluc3RhbmNlPy5EYXRhOwogICAgICAgIHZhciByZXN1bHQgPSBuZXcgRGljdGlvbmFyeTxzdHJpbmcsIG9iamVjdD4oKTsKICAgICAgICBDb3B5QWxsRmllbGRzKHJlc3VsdCwgZGF0YSk7CgogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gY29udGV4dC5Cb2R5OwogICAgICAgICAgICB2YXIgYm9keURhdGEgPSByZXNwb25zZT8uZGF0YTsKICAgICAgICAgICAgc3RyaW5nIGVycmNvZGUgPSBHZXRTdHJpbmcoYm9keURhdGEsICJlcnJjb2RlIik7CgogICAgICAgICAgICByZXN1bHRbInNlbmRTdW1tYXJ5U3VjY2VzcyJdID0gc3RyaW5nLklzTnVsbE9yRW1wdHkoZXJyY29kZSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoCiAgICAgICAgewogICAgICAgICAgICByZXN1bHRbInNlbmRTdW1tYXJ5U3VjY2VzcyJdID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSB7IERhdGEgPSByZXN1bHQgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgTG9va3VwVXNlcihkeW5hbWljIGRhdGEsIHN0cmluZyBjaGF0Um9vbUtleSkKICAgIHsKICAgICAgICBpZiAoIUhhc1Byb3BlcnR5KGRhdGEsICJwZXJtYW5lbnRDaGF0Um9vbXMiKSB8fCBkYXRhLnBlcm1hbmVudENoYXRSb29tcyA9PSBudWxsKQogICAgICAgICAgICByZXR1cm4gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAodmFyIHJvb20gaW4gZGF0YS5wZXJtYW5lbnRDaGF0Um9vbXMpCiAgICAgICAgewogICAgICAgICAgICB2YXIga2V5ID0gR2V0U3RyaW5nKHJvb20sICJjaGF0Um9vbUtleSIpOwogICAgICAgICAgICBpZiAoc3RyaW5nLkVxdWFscyhrZXksIGNoYXRSb29tS2V5LCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkKICAgICAgICAgICAgICAgIHJldHVybiBHZXRTdHJpbmcocm9vbSwgInVzZXIiKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHZvaWQgQ29weUFsbEZpZWxkcyhEaWN0aW9uYXJ5PHN0cmluZywgb2JqZWN0PiByZXN1bHQsIGR5bmFtaWMgZGF0YSkKICAgIHsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInRyYW5zZmVyUGxhbiIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAidmFsaWRhdGlvblJlc3VsdCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAic291cmNlQWR2aXNvcklkIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJhZHZpc29yVHlwZSIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAic3RhcnREYXRlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJlbmREYXRlIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJ0cmFuc2ZlclR5cGUiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImVucmljaGVkUmV6ZXJ2YXRpb25zIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJyZXpDaGF0Um9vbVBsYW4iKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudFJvb21QbGFuIik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJwZXJtYW5lbnRDaGF0Um9vbXMiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgInBlcm1hbmVudFByb2Nlc3NlZEluZGV4Iik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJsYXN0UGVybWFuZW50RGVhY3RpdmF0ZVN1Y2Nlc3MiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImxhc3REZWFjdGl2YXRlZFJvb21JZCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFJvb21NZXNzYWdlcyIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFJvb21NZXNzYWdlc1N1Y2Nlc3MiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgImNoYXRTdW1tYXJ5Iik7CiAgICAgICAgQ29weUlmUHJlc2VudChyZXN1bHQsIGRhdGEsICJjaGF0U3VtbWFyeVN1Y2Nlc3MiKTsKICAgICAgICBDb3B5SWZQcmVzZW50KHJlc3VsdCwgZGF0YSwgIm5ld1Jvb21JZCIpOwogICAgICAgIENvcHlJZlByZXNlbnQocmVzdWx0LCBkYXRhLCAibGFzdFBlcm1hbmVudENoYXRSb29tU3VjY2VzcyIpOwogICAgfQoKICAgIHByaXZhdGUgdm9pZCBDb3B5SWZQcmVzZW50KERpY3Rpb25hcnk8c3RyaW5nLCBvYmplY3Q+IHRhcmdldCwgZHluYW1pYyBzb3VyY2UsIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KHNvdXJjZSwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShzb3VyY2UsIG5hbWUpOwogICAgICAgICAgICAgICAgaWYgKHYgIT0gbnVsbCkgdGFyZ2V0W25hbWVdID0gdjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgIH0KfQo="
520
520
  }
521
521
  }
522
522
  ]
@@ -335,7 +335,7 @@
335
335
  },
336
336
  "mapping": {
337
337
  "location": "./src/GetUserInfoForRezervationMapping.csx",
338
- "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nLkZ1bmN0aW9uczsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgZ2V0LXVzZXItaW5mby1mb3ItcmV6ZXJ2YXRpb24gSHR0cFRhc2suCi8vLyBHZXRzIHVzZXIgZnJvbSBpbnN0YW5jZSBkYXRhIChzZXQgYXQgc3RhcnQgYnkgc2V0LXVzZXItZnJvbS1oZWFkZXJzLWZvci1yZXplcnZhdGlvbiBmcm9tIEhlYWRlcnMgc3ViKSwgdXNlclNlZ21lbnRCYXNlVXJsIGZyb20gdmF1bHQgKEdldFNlY3JldEFzeW5jKSwgYnVpbGRzIEdFVCB1cmwvdXNlci1pbmZvL3t1c2VyfSwgc2V0cyBVUkwgb24gSHR0cFRhc2suCi8vLyBPdXRwdXQgbWVyZ2VzIHVzZXItaW5mbyByZXNwb25zZSBhcyB1c2VySW5mbyBmb3Igb3JkZXIgMiAoc3RhcnQtbm90aWZpY2F0aW9uLXNlbmRlcikgdG8gdXNlLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgR2V0VXNlckluZm9Gb3JSZXplcnZhdGlvbk1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgYXN5bmMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIGh0dHBUYXNrID0gdGFzayBhcyBIdHRwVGFzazsKICAgICAgICBpZiAoaHR0cFRhc2sgPT0gbnVsbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhbiBIdHRwVGFzayIpOwoKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIHVzZXIgPSBHZXRTdHJpbmcoZGF0YSwgInN1YiIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVzZXIpKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiSW5zdGFuY2UgZGF0YSBzdWIgaXMgcmVxdWlyZWQgZm9yIHVzZXItaW5mbyBjYWxsIChzZXQgYXQgc3RhcnQgZnJvbSBIZWFkZXJzIHN1YikiKTsKCiAgICAgICAgdmFyIGJhc2VVcmwgPSBhd2FpdCBHZXRTZWNyZXRBc3luYygidm5leHQtc2VjcmV0IiwgIndvcmtmbG93LXNlY3JldCIsICJVc2VyU2VnbWVudEJhc2VVcmwiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShiYXNlVXJsKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlVzZXJTZWdtZW50QmFzZVVybCBzZWNyZXQgaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgdmFyIHRyaW1tZWRCYXNlID0gYmFzZVVybC5UcmltRW5kKCcvJyk7CiAgICAgICAgdmFyIGZ1bGxVcmwgPSB0cmltbWVkQmFzZSArICIvdXNlci1pbmZvLyIgKyBVcmkuRXNjYXBlRGF0YVN0cmluZyh1c2VyLlRyaW0oKSk7CgogICAgICAgIGh0dHBUYXNrLlNldFVybChmdWxsVXJsKTsKCiAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSgpOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgcmVzcG9uc2UgPSBjb250ZXh0LkJvZHk7CiAgICAgICAgdmFyIHJhdyA9IHJlc3BvbnNlPy5kYXRhID8/IHJlc3BvbnNlPy5EYXRhID8/IHJlc3BvbnNlOwogICAgICAgIHZhciB1c2VySW5mbyA9IHJhdzsKCiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICB7CiAgICAgICAgICAgIERhdGEgPSBuZXcgeyB1c2VySW5mbyB9CiAgICAgICAgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9Cn0K"
338
+ "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nLkZ1bmN0aW9uczsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgZ2V0LXVzZXItaW5mby1mb3ItcmV6ZXJ2YXRpb24gSHR0cFRhc2suCi8vLyBHZXRzIHVzZXIgZnJvbSBpbnN0YW5jZSBkYXRhIChzZXQgYXQgc3RhcnQgYnkgc2V0LXVzZXItZnJvbS1oZWFkZXJzLWZvci1yZXplcnZhdGlvbiBmcm9tIEhlYWRlcnMgc3ViKSwgdXNlclNlZ21lbnRCYXNlVXJsIGZyb20gdmF1bHQgKEdldFNlY3JldEFzeW5jKSwgYnVpbGRzIEdFVCB1cmwvdXNlci1pbmZvL3t1c2VyfSwgc2V0cyBVUkwgb24gSHR0cFRhc2suCi8vLyBPdXRwdXQgbWVyZ2VzIHVzZXItaW5mbyByZXNwb25zZSBhcyB1c2VySW5mbyBmb3Igb3JkZXIgMiAoc3RhcnQtbm90aWZpY2F0aW9uLXNlbmRlcikgdG8gdXNlLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgR2V0VXNlckluZm9Gb3JSZXplcnZhdGlvbk1hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgYXN5bmMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIGh0dHBUYXNrID0gdGFzayBhcyBIdHRwVGFzazsKICAgICAgICBpZiAoaHR0cFRhc2sgPT0gbnVsbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhbiBIdHRwVGFzayIpOwoKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIHVzZXIgPSBHZXRTdHJpbmcoZGF0YSwgInN1YiIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVzZXIpKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiSW5zdGFuY2UgZGF0YSBzdWIgaXMgcmVxdWlyZWQgZm9yIHVzZXItaW5mbyBjYWxsIChzZXQgYXQgc3RhcnQgZnJvbSBIZWFkZXJzIHN1YikiKTsKCiAgICAgICAgdmFyIHNlY3JldE5hbWUgPSBHZXRDb25maWdWYWx1ZSgiREFQUl9TRUNSRVRfU1RPUkVfTkFNRSIpOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHNlY3JldE5hbWUpKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiREFQUl9TRUNSRVRfU1RPUkVfTkFNRSBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIik7CgogICAgICAgIHZhciBiYXNlVXJsID0gYXdhaXQgR2V0U2VjcmV0QXN5bmMoc2VjcmV0TmFtZSwgIndvcmtmbG93LXNlY3JldCIsICJVc2VyU2VnbWVudEJhc2VVcmwiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShiYXNlVXJsKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlVzZXJTZWdtZW50QmFzZVVybCBzZWNyZXQgaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgdmFyIHRyaW1tZWRCYXNlID0gYmFzZVVybC5UcmltRW5kKCcvJyk7CiAgICAgICAgdmFyIGZ1bGxVcmwgPSB0cmltbWVkQmFzZSArICIvdXNlci1pbmZvLyIgKyBVcmkuRXNjYXBlRGF0YVN0cmluZyh1c2VyLlRyaW0oKSk7CgogICAgICAgIGh0dHBUYXNrLlNldFVybChmdWxsVXJsKTsKCiAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZSgpOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgcmVzcG9uc2UgPSBjb250ZXh0LkJvZHk7CiAgICAgICAgdmFyIHJhdyA9IHJlc3BvbnNlPy5kYXRhID8/IHJlc3BvbnNlPy5EYXRhID8/IHJlc3BvbnNlOwogICAgICAgIHZhciB1c2VySW5mbyA9IHJhdzsKCiAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICB7CiAgICAgICAgICAgIERhdGEgPSBuZXcgeyB1c2VySW5mbyB9CiAgICAgICAgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RyaW5nKGR5bmFtaWMgb2JqLCBzdHJpbmcgbmFtZSkKICAgIHsKICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBudWxsOwogICAgICAgIHRyeQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KG9iaiwgbmFtZSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciB2ID0gR2V0UHJvcGVydHlWYWx1ZShvYmosIG5hbWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIHY/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY2F0Y2ggeyB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9Cn0K"
339
339
  }
340
340
  },
341
341
  {
@@ -29,7 +29,11 @@ public class ChatRoomRemoveMapping : ScriptBase, IMapping
29
29
  if (string.IsNullOrWhiteSpace(removeMemberId))
30
30
  return new ScriptResponse();
31
31
 
32
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
32
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
33
+ if (string.IsNullOrWhiteSpace(secretName))
34
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
35
+
36
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
33
37
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
34
38
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
35
39
  var fullUrl = matrixBaseUrl.TrimEnd('/') + "/_matrix/client/v3/rooms/" + Uri.EscapeDataString(roomId) + "/kick";
@@ -9,7 +9,7 @@ using BBT.Workflow.Definitions;
9
9
  /// Invites the new advisor to the room after the old one was kicked.
10
10
  /// Uses /_matrix/client/v3/rooms/{roomId}/invite.
11
11
  /// APISIX converts X-Matrix-User header to Bearer token automatically.
12
- /// MatrixBaseUrl is read from Vault (vnext-secret/workflow-secret).
12
+ /// MatrixBaseUrl is read from the Dapr secret store (DAPR_SECRET_STORE_NAME / workflow-secret).
13
13
  /// Also updates instanceData.advisorId to the new advisor.
14
14
  /// </summary>
15
15
  public class ChatRoomTransferInviteMapping : ScriptBase, IMapping
@@ -30,7 +30,11 @@ public class ChatRoomTransferInviteMapping : ScriptBase, IMapping
30
30
  if (string.IsNullOrWhiteSpace(roomId) || string.IsNullOrWhiteSpace(newAdvisorId))
31
31
  return new ScriptResponse();
32
32
 
33
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
33
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
34
+ if (string.IsNullOrWhiteSpace(secretName))
35
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
36
+
37
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
34
38
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
35
39
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
36
40
  var fullUrl = matrixBaseUrl.TrimEnd('/') + "/_matrix/client/v3/rooms/" + Uri.EscapeDataString(roomId) + "/invite";
@@ -18,7 +18,11 @@ public class ChatRoomTransferRemoveMapping : ScriptBase, IMapping
18
18
  if (httpTask == null)
19
19
  throw new InvalidOperationException("Task must be an HttpTask");
20
20
 
21
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
21
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
22
+ if (string.IsNullOrWhiteSpace(secretName))
23
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
24
+
25
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
22
26
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
23
27
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
24
28
 
@@ -8,7 +8,7 @@ using BBT.Workflow.Definitions;
8
8
  /// Mapping for invite-user-to-rezervation-room HttpTask (Type 6) in the chat-room update transition.
9
9
  /// Invites a new member to the permanent room via native /_matrix/client/v3/rooms/{roomId}/invite.
10
10
  /// APISIX converts X-Matrix-User header to Bearer token automatically.
11
- /// MatrixBaseUrl is read from Vault (vnext-secret/workflow-secret).
11
+ /// MatrixBaseUrl is read from the Dapr secret store (DAPR_SECRET_STORE_NAME / workflow-secret).
12
12
  /// </summary>
13
13
  public class ChatRoomUpdateMapping : ScriptBase, IMapping
14
14
  {
@@ -30,7 +30,11 @@ public class ChatRoomUpdateMapping : ScriptBase, IMapping
30
30
  if (string.IsNullOrWhiteSpace(newMemberId))
31
31
  return new ScriptResponse();
32
32
 
33
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
33
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
34
+ if (string.IsNullOrWhiteSpace(secretName))
35
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
36
+
37
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
34
38
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
35
39
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
36
40
  var fullUrl = matrixBaseUrl.TrimEnd('/') + "/_matrix/client/v3/rooms/" + Uri.EscapeDataString(roomId) + "/invite";
@@ -18,7 +18,11 @@ public class CreateChatRoomForRezervationMapping : ScriptBase, IMapping
18
18
  if (httpTask == null)
19
19
  throw new InvalidOperationException("Task must be an HttpTask");
20
20
 
21
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
21
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
22
+ if (string.IsNullOrWhiteSpace(secretName))
23
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
24
+
25
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
22
26
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
23
27
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
24
28
  var fullUrl = matrixBaseUrl.TrimEnd('/') + "/_matrix/client/v3/createRoom";
@@ -23,7 +23,11 @@ public class CreatePermanentChatRoomMapping : ScriptBase, IMapping
23
23
  if (httpTask == null)
24
24
  throw new InvalidOperationException("Task must be an HttpTask");
25
25
 
26
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
26
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
27
+ if (string.IsNullOrWhiteSpace(secretName))
28
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
29
+
30
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
27
31
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
28
32
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
29
33
  var fullUrl = matrixBaseUrl.TrimEnd('/') + "/_matrix/client/v3/createRoom";
@@ -51,7 +51,11 @@ public class FetchRoomMessagesForSummaryMapping : ScriptBase, IMapping
51
51
  if (string.IsNullOrWhiteSpace(user))
52
52
  return new ScriptResponse { Data = new { skipped = true, reason = "no-user" } };
53
53
 
54
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
54
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
55
+ if (string.IsNullOrWhiteSpace(secretName))
56
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
57
+
58
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
55
59
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
56
60
  return new ScriptResponse { Data = new { skipped = true, reason = "no-MatrixBaseUrl" } };
57
61
 
@@ -22,7 +22,11 @@ public class GetUserInfoForRezervationMapping : ScriptBase, IMapping
22
22
  if (string.IsNullOrWhiteSpace(user))
23
23
  throw new InvalidOperationException("Instance data sub is required for user-info call (set at start from Headers sub)");
24
24
 
25
- var baseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "UserSegmentBaseUrl");
25
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
26
+ if (string.IsNullOrWhiteSpace(secretName))
27
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
28
+
29
+ var baseUrl = await GetSecretAsync(secretName, "workflow-secret", "UserSegmentBaseUrl");
26
30
  if (string.IsNullOrWhiteSpace(baseUrl))
27
31
  throw new InvalidOperationException("UserSegmentBaseUrl secret is required");
28
32
 
@@ -42,7 +42,11 @@ public class GetVideoCallUrlMapping : ScriptBase, IMapping
42
42
  };
43
43
  }
44
44
 
45
- var baseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "VideoCallBaseUrl");
45
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
46
+ if (string.IsNullOrWhiteSpace(secretName))
47
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
48
+
49
+ var baseUrl = await GetSecretAsync(secretName, "workflow-secret", "VideoCallBaseUrl");
46
50
  if (string.IsNullOrWhiteSpace(baseUrl))
47
51
  throw new InvalidOperationException("VideoCallBaseUrl secret is required");
48
52
 
@@ -33,7 +33,11 @@ public class InviteAdvisorForRandevuUpdateMapping : ScriptBase, IMapping
33
33
  if (string.IsNullOrWhiteSpace(roomId) || string.IsNullOrWhiteSpace(user))
34
34
  return new ScriptResponse();
35
35
 
36
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
36
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
37
+ if (string.IsNullOrWhiteSpace(secretName))
38
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
39
+
40
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
37
41
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
38
42
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
39
43
  var fullUrl = matrixBaseUrl.TrimEnd('/') + "/_matrix/client/v3/rooms/" + Uri.EscapeDataString(roomId ?? "") + "/invite";
@@ -35,7 +35,11 @@ public class InviteNewAdvisorToRezervationRoomMapping : ScriptBase, IMapping
35
35
  if (string.IsNullOrWhiteSpace(roomId))
36
36
  return new ScriptResponse();
37
37
 
38
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
38
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
39
+ if (string.IsNullOrWhiteSpace(secretName))
40
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
41
+
42
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
39
43
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
40
44
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
41
45
  var fullUrl = matrixBaseUrl.TrimEnd('/') + "/_matrix/client/v3/rooms/" + Uri.EscapeDataString(roomId) + "/invite";
@@ -31,7 +31,11 @@ public class InviteNewParticipantToRandevuRoomMapping : ScriptBase, IMapping
31
31
  if (string.IsNullOrWhiteSpace(roomId))
32
32
  return new ScriptResponse();
33
33
 
34
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
34
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
35
+ if (string.IsNullOrWhiteSpace(secretName))
36
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
37
+
38
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
35
39
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
36
40
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
37
41
  var fullUrl = matrixBaseUrl.TrimEnd('/') + "/_matrix/client/v3/rooms/" + Uri.EscapeDataString(roomId ?? "") + "/invite";
@@ -27,7 +27,11 @@ public class JoinChatRoomForAddParticipantMapping : ScriptBase, IMapping
27
27
  if (string.IsNullOrWhiteSpace(newUserId))
28
28
  return new ScriptResponse();
29
29
 
30
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
30
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
31
+ if (string.IsNullOrWhiteSpace(secretName))
32
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
33
+
34
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
31
35
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
32
36
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
33
37
  var fullUrl = matrixBaseUrl.TrimEnd('/') + "/_matrix/client/v3/join/" + Uri.EscapeDataString(roomId ?? "");
@@ -16,7 +16,11 @@ public class JoinChatRoomForRandevuStartMapping : ScriptBase, IMapping
16
16
  if (httpTask == null)
17
17
  throw new InvalidOperationException("Task must be an HttpTask");
18
18
 
19
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
19
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
20
+ if (string.IsNullOrWhiteSpace(secretName))
21
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
22
+
23
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
20
24
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
21
25
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
22
26
 
@@ -17,7 +17,11 @@ public class JoinChatRoomForRezervationMapping : ScriptBase, IMapping
17
17
  if (httpTask == null)
18
18
  throw new InvalidOperationException("Task must be an HttpTask");
19
19
 
20
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
20
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
21
+ if (string.IsNullOrWhiteSpace(secretName))
22
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
23
+
24
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
21
25
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
22
26
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
23
27
 
@@ -19,7 +19,11 @@ public class JoinMatrixRoomMapping : ScriptBase, IMapping
19
19
  if (httpTask == null)
20
20
  throw new InvalidOperationException("Task must be an HttpTask");
21
21
 
22
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
22
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
23
+ if (string.IsNullOrWhiteSpace(secretName))
24
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
25
+
26
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
23
27
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
24
28
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
25
29
 
@@ -33,7 +33,11 @@ public class JoinUserToRoomMapping : ScriptBase, IMapping
33
33
  if (string.IsNullOrWhiteSpace(roomId) || string.IsNullOrWhiteSpace(pendingJoinUserId))
34
34
  return new ScriptResponse();
35
35
 
36
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
36
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
37
+ if (string.IsNullOrWhiteSpace(secretName))
38
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
39
+
40
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
37
41
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
38
42
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
39
43
  var fullUrl = matrixBaseUrl.TrimEnd('/') + "/_matrix/client/v3/join/" + Uri.EscapeDataString(roomId);
@@ -19,7 +19,11 @@ public class SendPushNotificationMapping : ScriptBase, IMapping
19
19
  if (httpTask == null)
20
20
  throw new InvalidOperationException("Task must be an HttpTask");
21
21
 
22
- var baseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MessagingBaseUrl");
22
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
23
+ if (string.IsNullOrWhiteSpace(secretName))
24
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
25
+
26
+ var baseUrl = await GetSecretAsync(secretName, "workflow-secret", "MessagingBaseUrl");
23
27
  if (string.IsNullOrWhiteSpace(baseUrl))
24
28
  throw new InvalidOperationException("MessagingBaseUrl secret is required");
25
29
  var fullUrl = baseUrl.TrimEnd('/') + "/Messaging/push-notification/message";
@@ -18,7 +18,11 @@ public class SendSmsNotificationMapping : ScriptBase, IMapping
18
18
  if (httpTask == null)
19
19
  throw new InvalidOperationException("Task must be an HttpTask");
20
20
 
21
- var baseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MessagingBaseUrl");
21
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
22
+ if (string.IsNullOrWhiteSpace(secretName))
23
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
24
+
25
+ var baseUrl = await GetSecretAsync(secretName, "workflow-secret", "MessagingBaseUrl");
22
26
  if (string.IsNullOrWhiteSpace(baseUrl))
23
27
  throw new InvalidOperationException("MessagingBaseUrl secret is required");
24
28
  var fullUrl = baseUrl.TrimEnd('/') + "/Messaging/sms/message/string";
@@ -55,7 +55,11 @@ public class SendSummaryToNewRoomMapping : ScriptBase, IMapping
55
55
  if (string.IsNullOrWhiteSpace(user))
56
56
  return new ScriptResponse { Data = new { skipped = true, reason = "no-user" } };
57
57
 
58
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
58
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
59
+ if (string.IsNullOrWhiteSpace(secretName))
60
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
61
+
62
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
59
63
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
60
64
  return new ScriptResponse { Data = new { skipped = true, reason = "no-MatrixBaseUrl" } };
61
65
 
@@ -28,7 +28,11 @@ public class SetRoomHistoryVisibilityMapping : ScriptBase, IMapping
28
28
  var chatIntegration = data?.chatIntegration;
29
29
  var roomId = GetString(chatIntegration, "roomId");
30
30
 
31
- var matrixBaseUrl = await GetSecretAsync("vnext-secret", "workflow-secret", "MatrixBaseUrl");
31
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
32
+ if (string.IsNullOrWhiteSpace(secretName))
33
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
34
+
35
+ var matrixBaseUrl = await GetSecretAsync(secretName, "workflow-secret", "MatrixBaseUrl");
32
36
  if (string.IsNullOrWhiteSpace(matrixBaseUrl))
33
37
  throw new InvalidOperationException("MatrixBaseUrl secret is required");
34
38
  var baseTrim = matrixBaseUrl.TrimEnd('/');
@@ -43,7 +43,11 @@ public class SummarizeChatWithOpenAIMapping : ScriptBase, IMapping
43
43
  if (string.IsNullOrWhiteSpace(combined))
44
44
  return new ScriptResponse { Data = new { skipped = true, reason = "blank-messages" } };
45
45
 
46
- var apiKey = await GetSecretAsync("vnext-secret", "workflow-secret", "OpenAIApiKey");
46
+ var secretName = GetConfigValue("DAPR_SECRET_STORE_NAME");
47
+ if (string.IsNullOrWhiteSpace(secretName))
48
+ throw new InvalidOperationException("DAPR_SECRET_STORE_NAME configuration is required");
49
+
50
+ var apiKey = await GetSecretAsync(secretName, "workflow-secret", "OpenAIApiKey");
47
51
  if (string.IsNullOrWhiteSpace(apiKey))
48
52
  return new ScriptResponse { Data = new { skipped = true, reason = "no-OpenAIApiKey" } };
49
53
 
@@ -126,7 +126,7 @@
126
126
  },
127
127
  "mapping": {
128
128
  "location": "./src/GetVideoCallUrlMapping.csx",
129
- "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBNYXBwaW5nIGZvciBnZXQtdmlkZW8tY2FsbC11cmwgU2NyaXB0IFRhc2sgKFR5cGUgNykuCi8vLyBCdWlsZHMgTGl2ZUtpdCB2aWRlbyBjYWxsIHBhZ2UgVVJMOiBiYXNlVXJsLz9yb29tPXJvb21OYW1lJmFtcDt1c2VyPXBhcnRpY2lwYW50TmFtZSZhbXA7YXV0b0pvaW49MQovLy8gcGFydGljaXBhbnROYW1lID0gdXNlciB3aGVuIHN0YXR1cyBpcyBjdXN0b21lci1lbnRlciwgYWR2aXNvciB3aGVuIHN0YXR1cyBpcyBzdGFmZi1lbnRlci4KLy8vIEJhc2UgVVJMIGlzIHJlYWQgZnJvbSB2YXVsdCAoVmlkZW9DYWxsQmFzZVVybCkuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBHZXRWaWRlb0NhbGxVcmxNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlKCkpOwogICAgfQoKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIHJvb21OYW1lID0gZGF0YT8ucm9vbU5hbWU/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkocm9vbU5hbWUpICYmIGRhdGEgIT0gbnVsbCAmJiBIYXNQcm9wZXJ0eShkYXRhLCAia2V5IikpCiAgICAgICAgICAgIHJvb21OYW1lID0gZGF0YS5rZXk/LlRvU3RyaW5nKCk/LlRyaW0oKTsKCiAgICAgICAgdmFyIHN0YXR1cyA9IGRhdGE/LnN0YXR1cz8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgIHZhciB1c2VyID0gZGF0YT8udXNlcj8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgIHZhciBhZHZpc29yID0gZGF0YT8uYWR2aXNvcj8uVG9TdHJpbmcoKT8uVHJpbSgpOwoKICAgICAgICB2YXIgcGFydGljaXBhbnROYW1lID0gc3RhdHVzID09ICJjdXN0b21lci1lbnRlciIgPyB1c2VyIDogYWR2aXNvcjsKCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHJvb21OYW1lKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShwYXJ0aWNpcGFudE5hbWUpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmlkZW9DYWxsVXJsID0gKHN0cmluZyludWxsLAogICAgICAgICAgICAgICAgICAgIGdldFRva2VuU3VjY2VzcyA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIGdldFRva2VuRXJyb3IgPSAiTWlzc2luZyByb29tTmFtZSBvciBwYXJ0aWNpcGFudE5hbWUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICB2YXIgYmFzZVVybCA9IGF3YWl0IEdldFNlY3JldEFzeW5jKCJ2bmV4dC1zZWNyZXQiLCAid29ya2Zsb3ctc2VjcmV0IiwgIlZpZGVvQ2FsbEJhc2VVcmwiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShiYXNlVXJsKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlZpZGVvQ2FsbEJhc2VVcmwgc2VjcmV0IGlzIHJlcXVpcmVkIik7CgogICAgICAgIHZhciB2aWRlb0NhbGxVcmwgPSBiYXNlVXJsLlRyaW1FbmQoJy8nKSArICI/cm9vbT0iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcocm9vbU5hbWUpCiAgICAgICAgICAgICsgIiZ1c2VyPSIgKyBVcmkuRXNjYXBlRGF0YVN0cmluZyhwYXJ0aWNpcGFudE5hbWUpCiAgICAgICAgICAgICsgIiZhdXRvSm9pbj0xIjsKCiAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgIHsKICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2aWRlb0NhbGxVcmwsCiAgICAgICAgICAgICAgICBnZXRUb2tlblN1Y2Nlc3MgPSB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQp9Cg=="
129
+ "code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwp1c2luZyBCQlQuV29ya2Zsb3cuU2NyaXB0aW5nOwp1c2luZyBCQlQuV29ya2Zsb3cuRGVmaW5pdGlvbnM7CgovLy8gPHN1bW1hcnk+Ci8vLyBNYXBwaW5nIGZvciBnZXQtdmlkZW8tY2FsbC11cmwgU2NyaXB0IFRhc2sgKFR5cGUgNykuCi8vLyBCdWlsZHMgTGl2ZUtpdCB2aWRlbyBjYWxsIHBhZ2UgVVJMOiBiYXNlVXJsLz9yb29tPXJvb21OYW1lJmFtcDt1c2VyPXBhcnRpY2lwYW50TmFtZSZhbXA7YXV0b0pvaW49MQovLy8gcGFydGljaXBhbnROYW1lID0gdXNlciB3aGVuIHN0YXR1cyBpcyBjdXN0b21lci1lbnRlciwgYWR2aXNvciB3aGVuIHN0YXR1cyBpcyBzdGFmZi1lbnRlci4KLy8vIEJhc2UgVVJMIGlzIHJlYWQgZnJvbSB2YXVsdCAoVmlkZW9DYWxsQmFzZVVybCkuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBHZXRWaWRlb0NhbGxVcmxNYXBwaW5nIDogU2NyaXB0QmFzZSwgSU1hcHBpbmcKewogICAgcHVibGljIFRhc2s8U2NyaXB0UmVzcG9uc2U+IElucHV0SGFuZGxlcihXb3JrZmxvd1Rhc2sgdGFzaywgU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlKCkpOwogICAgfQoKICAgIHB1YmxpYyBhc3luYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgZGF0YSA9IGNvbnRleHQuSW5zdGFuY2U/LkRhdGE7CiAgICAgICAgdmFyIHJvb21OYW1lID0gZGF0YT8ucm9vbU5hbWU/LlRvU3RyaW5nKCk/LlRyaW0oKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkocm9vbU5hbWUpICYmIGRhdGEgIT0gbnVsbCAmJiBIYXNQcm9wZXJ0eShkYXRhLCAia2V5IikpCiAgICAgICAgICAgIHJvb21OYW1lID0gZGF0YS5rZXk/LlRvU3RyaW5nKCk/LlRyaW0oKTsKCiAgICAgICAgdmFyIHN0YXR1cyA9IGRhdGE/LnN0YXR1cz8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgIHZhciB1c2VyID0gZGF0YT8udXNlcj8uVG9TdHJpbmcoKT8uVHJpbSgpOwogICAgICAgIHZhciBhZHZpc29yID0gZGF0YT8uYWR2aXNvcj8uVG9TdHJpbmcoKT8uVHJpbSgpOwoKICAgICAgICB2YXIgcGFydGljaXBhbnROYW1lID0gc3RhdHVzID09ICJjdXN0b21lci1lbnRlciIgPyB1c2VyIDogYWR2aXNvcjsKCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHJvb21OYW1lKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShwYXJ0aWNpcGFudE5hbWUpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmlkZW9DYWxsVXJsID0gKHN0cmluZyludWxsLAogICAgICAgICAgICAgICAgICAgIGdldFRva2VuU3VjY2VzcyA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIGdldFRva2VuRXJyb3IgPSAiTWlzc2luZyByb29tTmFtZSBvciBwYXJ0aWNpcGFudE5hbWUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICB2YXIgc2VjcmV0TmFtZSA9IEdldENvbmZpZ1ZhbHVlKCJEQVBSX1NFQ1JFVF9TVE9SRV9OQU1FIik7CiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPcldoaXRlU3BhY2Uoc2VjcmV0TmFtZSkpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJEQVBSX1NFQ1JFVF9TVE9SRV9OQU1FIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQiKTsKCiAgICAgICAgdmFyIGJhc2VVcmwgPSBhd2FpdCBHZXRTZWNyZXRBc3luYyhzZWNyZXROYW1lLCAid29ya2Zsb3ctc2VjcmV0IiwgIlZpZGVvQ2FsbEJhc2VVcmwiKTsKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShiYXNlVXJsKSkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlZpZGVvQ2FsbEJhc2VVcmwgc2VjcmV0IGlzIHJlcXVpcmVkIik7CgogICAgICAgIHZhciB2aWRlb0NhbGxVcmwgPSBiYXNlVXJsLlRyaW1FbmQoJy8nKSArICI/cm9vbT0iICsgVXJpLkVzY2FwZURhdGFTdHJpbmcocm9vbU5hbWUpCiAgICAgICAgICAgICsgIiZ1c2VyPSIgKyBVcmkuRXNjYXBlRGF0YVN0cmluZyhwYXJ0aWNpcGFudE5hbWUpCiAgICAgICAgICAgICsgIiZhdXRvSm9pbj0xIjsKCiAgICAgICAgcmV0dXJuIG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgIHsKICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB2aWRlb0NhbGxVcmwsCiAgICAgICAgICAgICAgICBnZXRUb2tlblN1Y2Nlc3MgPSB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQp9Cg=="
130
130
  }
131
131
  }
132
132
  ],