jarvisbot_songfinder 1.0.0

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 (51) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +2 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +122 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +91 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +24 -0
  11. data/bin/setup +8 -0
  12. data/fixtures/vcr_cassettes/query_text.yml +211 -0
  13. data/fixtures/vcr_cassettes/query_track_delegation.yml +211 -0
  14. data/fixtures/vcr_cassettes/query_youtube_url.yml +140 -0
  15. data/fixtures/vcr_cassettes/search_query_auxiliary_provider.yml +517 -0
  16. data/fixtures/vcr_cassettes/search_query_not_found.yml +111 -0
  17. data/fixtures/vcr_cassettes/search_query_preferred_and_auxiliary.yml +211 -0
  18. data/fixtures/vcr_cassettes/search_query_preferred_provider.yml +211 -0
  19. data/fixtures/vcr_cassettes/spotify_invalid_region_restricted.yml +55 -0
  20. data/fixtures/vcr_cassettes/spotify_invalid_search.yml +55 -0
  21. data/fixtures/vcr_cassettes/spotify_invalid_too_long.yml +55 -0
  22. data/fixtures/vcr_cassettes/spotify_valid.yml +55 -0
  23. data/fixtures/vcr_cassettes/spotify_valid_clean_or_unknown.yml +55 -0
  24. data/fixtures/vcr_cassettes/spotify_valid_explicit.yml +55 -0
  25. data/fixtures/vcr_cassettes/spotify_valid_search.yml +107 -0
  26. data/fixtures/vcr_cassettes/spotify_vcr_test.yml +55 -0
  27. data/fixtures/vcr_cassettes/url_query_known_provider.yml +187 -0
  28. data/fixtures/vcr_cassettes/youtube_invalid.yml +58 -0
  29. data/fixtures/vcr_cassettes/youtube_invalid_region_restricted.yml +147 -0
  30. data/fixtures/vcr_cassettes/youtube_invalid_regionrestricted.yml +147 -0
  31. data/fixtures/vcr_cassettes/youtube_invalid_search.yml +59 -0
  32. data/fixtures/vcr_cassettes/youtube_invalid_too_long.yml +140 -0
  33. data/fixtures/vcr_cassettes/youtube_invalid_wrong_category.yml +254 -0
  34. data/fixtures/vcr_cassettes/youtube_invalid_wrongcategory.yml +254 -0
  35. data/fixtures/vcr_cassettes/youtube_valid.yml +427 -0
  36. data/fixtures/vcr_cassettes/youtube_valid_search.yml +287 -0
  37. data/jarvisbot_songfinder.gemspec +52 -0
  38. data/lib/jarvisbot_songfinder.rb +21 -0
  39. data/lib/jarvisbot_songfinder/configuration.rb +28 -0
  40. data/lib/jarvisbot_songfinder/helpers/query.rb +34 -0
  41. data/lib/jarvisbot_songfinder/helpers/reply_message.rb +101 -0
  42. data/lib/jarvisbot_songfinder/helpers/search_query.rb +21 -0
  43. data/lib/jarvisbot_songfinder/helpers/url_query.rb +22 -0
  44. data/lib/jarvisbot_songfinder/providers/bandrequest.rb +36 -0
  45. data/lib/jarvisbot_songfinder/providers/provider.rb +64 -0
  46. data/lib/jarvisbot_songfinder/providers/spotify_api.rb +93 -0
  47. data/lib/jarvisbot_songfinder/providers/unknown_provider.rb +13 -0
  48. data/lib/jarvisbot_songfinder/providers/unknown_search_provider.rb +13 -0
  49. data/lib/jarvisbot_songfinder/providers/youtube_api.rb +137 -0
  50. data/lib/jarvisbot_songfinder/version.rb +3 -0
  51. metadata +237 -0
@@ -0,0 +1,287 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://www.googleapis.com/youtube/v3/search?key=AIzaSyBopkXxz7Dzi9ZrFYPqjmL_JogByn-BBqI&maxResults=50&order=relevance&part=snippet&q=In%20Flames%20-%20Alias&type=video&videoCategoryId=10
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Content-Length:
11
+ - '0'
12
+ User-Agent:
13
+ - Yt::Request (gzip)
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Expires:
20
+ - Fri, 01 Feb 2019 09:55:52 GMT
21
+ Date:
22
+ - Fri, 01 Feb 2019 09:55:52 GMT
23
+ Cache-Control:
24
+ - private, max-age=120, must-revalidate, no-transform
25
+ Etag:
26
+ - '"XpPGQXPnxQJhLgs6enD_n8JR4Qk/rUvmNgczsVBNCsqlp5XqWK_yJrg"'
27
+ Vary:
28
+ - Origin
29
+ - X-Origin
30
+ Content-Type:
31
+ - application/json; charset=UTF-8
32
+ X-Content-Type-Options:
33
+ - nosniff
34
+ X-Frame-Options:
35
+ - SAMEORIGIN
36
+ X-Xss-Protection:
37
+ - 1; mode=block
38
+ Content-Length:
39
+ - '47702'
40
+ Server:
41
+ - GSE
42
+ Alt-Svc:
43
+ - quic=":443"; ma=2592000; v="44,43,39"
44
+ body:
45
+ encoding: ASCII-8BIT
46
+ string: !binary |-
47
+ ewogImtpbmQiOiAieW91dHViZSNzZWFyY2hMaXN0UmVzcG9uc2UiLAogImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvclV2bU5nY3pzVkJOQ3NxbHA1WHFXS195SnJnXCIiLAogIm5leHRQYWdlVG9rZW4iOiAiQ0RJUUFBIiwKICJyZWdpb25Db2RlIjogIlJVIiwKICJwYWdlSW5mbyI6IHsKICAidG90YWxSZXN1bHRzIjogNzMwMjMsCiAgInJlc3VsdHNQZXJQYWdlIjogNTAKIH0sCiAiaXRlbXMiOiBbCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL0lWUzkyTEZWXzM4azZnekswemVlOWRxelBoVVwiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJmVjZxNUJyUzBCdyIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxMC0xMS0zMFQyMTozNDozNS4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUM5cWpEeklRb3lXM1VTbHdfX3FkbW5RIiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcyAoT2ZmaWNpYWwgVmlkZW8pIiwKICAgICJkZXNjcmlwdGlvbiI6ICJEaXJlY3RvcjogUGF0cmljIFVsbGFldXMuIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvZlY2cTVCclMwQncvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL2ZWNnE1QnJTMEJ3L21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvZlY2cTVCclMwQncvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIkluRmxhbWVzR0JHIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvOEdfXzNRZkh0dVpzQTAybDFKd0lTeVRGMVNBXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIm9IS24xbnhPWDlzIgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDE0LTEwLTE2VDE3OjQwOjE5LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ1dCZTR4SUJMUlhTTktXOVBXd0Y5TUEiLAogICAgInRpdGxlIjogIkluIEZsYW1lcyAtIEFsaWFzIFtIRC9IUSBMeXJpY3MgaW4gVmlkZW9dIiwKICAgICJkZXNjcmlwdGlvbiI6ICJJIGRvIG5vdCBvd24gYW55IHJpZ2h0cyB0byB0aGlzIHNvbmcuIFRoaXMgaXMgcHVyZWx5IHByb21vdGlvbiBmb3IgdGhlIGJhbmQgYW5kIGZvciBlbnRlcnRhaW5tZW50LiBJZiB5b3UgbGlrZSBpdCBidXkgdGhlIENEJ3MgYW5kIHN1cHBvcnQgdGhlIGJhbmQgKGxpbmtzIGJlbG93KS4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9vSEtuMW54T1g5cy9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvb0hLbjFueE9YOXMvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9vSEtuMW54T1g5cy9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiUnV1c2kgTHlyaWNzIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvWkhzWjRPdnlNNGp2a0YtMWdveTVjVjJDLTJ3XCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIllDM3J3NzRjZkc0IgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDA5LTAxLTA4VDAxOjI2OjQ1LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ25mVkFRTFhoMjJlOUlBekw2Q2pTM0EiLAogICAgInRpdGxlIjogIkluIEZsYW1lcyBmZWF0IFRpbW8gUmFpc2FuZW4gLSBBbGlhcyAoTGl2ZSBHcmFtbWlzZ2FsYW4pIiwKICAgICJkZXNjcmlwdGlvbiI6ICJJbiBGbGFtZXMgb2NoIFRpbW8gcsO2amplciBsaXRlZ3Jhbm5hIHDDpSBncmFtbWlzLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1lDM3J3NzRjZkc0L2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9ZQzNydzc0Y2ZHNC9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1lDM3J3NzRjZkc0L2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJCdWx0aVoiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay8xLWdXRWtlckJjTmVmTUVxMVkyWnNjYS1CLU1cIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiVUJoZnJWNTlGM2siCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTctMDQtMTRUMTA6MDY6MTAuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDY1gyWmd5QjRJbVlPM3VQX3VsMk1OQSIsCiAgICAidGl0bGUiOiAiQWxpYXMiLAogICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVkIHRvIFlvdVR1YmUgYnkgU29ueSBNdXNpYyBFbnRlcnRhaW5tZW50IEFsaWFzIMK3IEluIEZsYW1lcyBBIFNlbnNlIE9mIFB1cnBvc2UgKFJlLWlzc3VlIDIwMTQpIOKElyAyMDExIEZpZ2h0ZXJzdHJlZXQgUmVjb3JkcyBDb21wb3NlciwgTHlyaWNpc3Q6IC4uLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1VCaGZyVjU5RjNrL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9VQmhmclY1OUYzay9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1VCaGZyVjU5RjNrL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJJbiBGbGFtZXMgLSBUb3BpYyIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL0RxZWpxelhHTGxQWW90QTVOXy1mSlhJeFNNNFwiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJfRUw3NDhNZlJVMCIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxNS0wNi0wOFQxOTozNDowOC4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUM0S2hwWE1KQkFfaHFIZEFKeHJjYXR3IiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSAwNC5BbGlhcyBMaXZlIEAgUm9jayBBbSBSaW5nIDIwMTUgSEQgQUMzIiwKICAgICJkZXNjcmlwdGlvbiI6ICJJJ20gbm90IHRoZSBvd25lciBvZiB0aGlzIHR2IGJyb2FkY2FzdCAoRWluc1BsdXMgSEQgRGV1dHNjaGxhbmQpLiBBbGwgcmlnaHRzIGluIHR2IGNoYW5uZWwsIGxhYmVscyBhbmQgSW4gRmxhbWVzIGJhbmQuIEZpbmQgdXM6IC4uLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL19FTDc0OE1mUlUwL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9fRUw3NDhNZlJVMC9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL19FTDc0OE1mUlUwL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJyb2Nrb25tZWRpYW9mZmljaWFsIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvSlFJWW5ReEFSVlQzdVpYTDI3OXdHWFFvdDZnXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIl8zSWxmMjYtUlg4IgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDEwLTA1LTE2VDAxOjIzOjM1LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ2tBYzdqaDZ3dGtvbGkwaWVVemNVeGciLAogICAgInRpdGxlIjogIkluIEZsYW1lcyAtIEFsaWFzIC0gQSBTZW5zZSBPZiBQdXJwb3NlIChIUSkiLAogICAgImRlc2NyaXB0aW9uIjogIlBsZWFzZSBDb21tZW50IC8gUmF0ZS4gTHlyaWNzIGFuZCBJbmZvIGJlbG93LiBFbmpveS4gU29uZzogQWxpYXMgQXJ0aXN0OiBJbiBGbGFtZXMgQWxidW06IEEgU2Vuc2UgT2YgUHVycG9zZSB+fn5+fn5+fn5+fn5+fn5+fn5+fn4gTHlyaWNzIEZyb20gLi4uIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvXzNJbGYyNi1SWDgvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL18zSWxmMjYtUlg4L21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvXzNJbGYyNi1SWDgvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogInRqMTExMTIxMjkiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9fS3RDMEZGYlA0cEJJOXg2VV9lblF6d3dJYzBcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiUHBLc3lVajNMYUkiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTItMDgtMThUMDI6MDY6MDQuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDc3JQNjVoNUo4ckJ4UlE1anZlTFA0QSIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC0gQWxpYXMgQCBXYWNrZW4gMjAxMiBMaXZlIiwKICAgICJkZXNjcmlwdGlvbiI6ICJJbiBGbGFtZXMgbGl2ZSBhdCBXYWNrZW4gMjAxMiBwZXJmb3JtaW5nIFwiQWxpYXNcIiBmcm9tIHRoZSBcIkEgU2Vuc2Ugb2YgUHVycG9zZVwiIGFsYnVtLiBTZXRsaXN0IEAgV2Fja2VuIDIwMTI6IDEuIENsb3VkIENvbm5lY3RlZCAyLiBUcmlnZ2VyIChNaXNzaW5nKSAzLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1BwS3N5VWozTGFJL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9QcEtzeVVqM0xhSS9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1BwS3N5VWozTGFJL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJzWXp6ZWd5IiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvaFRKRmExNF9PeW02RjZzRnVhNlNLd3pwSFV3XCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIk52Q3FhQWZIeUc0IgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDEwLTA2LTIwVDE0OjM2OjU4LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ0I1Tk96R0tFVzlyc2lqcTNoZkxiU1EiLAogICAgInRpdGxlIjogIkluIEZsYW1lcyAtIENvdmVyIC0gQWxpYXMiLAogICAgImRlc2NyaXB0aW9uIjogImh0dHA6Ly93d3cudGhpc2NvbGRsaWZlLm5ldCBodHRwOi8vd3d3LmZhY2Vib29rLmNvbS90aGlzY29sZGxpZmUgTW9ybmluZyBwZW9wbGUsIG1hbnkgcGVvcGxlIGFza2VkIG1lIHRvIGRvIHRoaXMgc29uZywgSSBhbHdheXMgcmVmdXNlZCBjYXVzZSBJIGFtIG5vdCB0aGUgLi4uIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvTnZDcWFBZkh5RzQvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL052Q3FhQWZIeUc0L21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvTnZDcWFBZkh5RzQvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIkRhIFNjaGVoZiIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL09ZbFNRRHZDNWlYbnpLY2hLOENObDgzeVFXa1wiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJZY0hhZU9WZFBySSIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAwOS0wMS0wOFQwMTo0ODo1OC4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUN4TkU3YmhKbWM3MlpoVnZqNFBaT1NBIiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgZmVhdCBUaW1vIFLDpGlzw6RuZW4gLSBBbGlhcyAoTGl2ZSBAIEdyYW1taXNnYWxhbiAyMDA5KSIsCiAgICAiZGVzY3JpcHRpb24iOiAiSW4gRmxhbWVzIC0gQWxpYXMuIExpdmUgd2l0aCBUaW1vIFLDpGlzw6RuZW4uIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvWWNIYWVPVmRQckkvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1ljSGFlT1ZkUHJJL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvWWNIYWVPVmRQckkvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIkR1bWhldGVyMjQiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay84aFp4VDBZTDBwbFl0T1pNQk55bXFMeHhselFcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiZ25ITFNhNWhjNkkiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMDktMDItMDRUMjI6NDA6MDIuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDbENkZDhINW5XLUdEU0hKS2E5TWFQdyIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC0gQWxpYXMgKHN1YnRpdHVsYWRvIGVzcGHDsW9sKSIsCiAgICAiZGVzY3JpcHRpb24iOiAiRXhjZWxlbnRlIHZpZGVvIGRlIGluIEZsYW1lcyBzdWJ0aXR1bGFkbyBhbCBlc3Bhw7FvbC4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9nbkhMU2E1aGM2SS9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvZ25ITFNhNWhjNkkvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9nbkhMU2E1aGM2SS9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiamF2aW1ldGFsY2hpbGUiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9senVyNjRpb1lGOXBsbWtEMF90UktaS0NScklcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAibV9ZM3hYS3hhUEEiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTgtMDctMjhUMjM6NDQ6MzguMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDdzh0b0ZZZUhFcGd4WnFmMjJ1YlB2USIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC1BbGlhcyBAIEJPUkdIT0xNIEJSSU5ORVIiLAogICAgImRlc2NyaXB0aW9uIjogIiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL21fWTN4WEt4YVBBL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9tX1kzeFhLeGFQQS9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL21fWTN4WEt4YVBBL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJkYXdpY2g5MSIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL1lobUM1YVo3NEswTkRYWHZIN3JuWGVKQm1XRVwiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJfMGZmM1ZrZ2h6WSIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxMS0wNC0xN1QxNTo0MzowNS4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNPb000YllmTXhfXzdfa2ZZTGUzb213IiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcyBHdWl0YXIgQ292ZXIgSEQiLAogICAgImRlc2NyaXB0aW9uIjogIkluZm86IFdoYXQgYSBjYXRjaHkgc29uZyEgSSBsb3ZlZCBBIFNlbnNlIG9mIFB1cnBvc2UgYWxidW0sIG15IHBlcnNvbmFsIGZhdm9yaXRlIEluIEZsYW1lcyBhbGJ1bSB0byBkYXRlIChhbHRob3VnaCB0aGUgb2xkIHNjaG9vbCBJRiBmYW5zIG1pZ2h0IGRpc2FncmVlKSwgYW5kIC4uLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL18wZmYzVmtnaHpZL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9fMGZmM1ZrZ2h6WS9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL18wZmYzVmtnaHpZL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJEaWxwaWwwMSIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL1FXUzQ3OWZOUFVvWktkTFB2bFJzSHZKQVBUQVwiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJ2dEFuUUhERkV6NCIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxNy0wOC0xNVQxODoyMjo1NS4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNFcWxRMmJoZXpFeWJKSmV6TnZhdk1RIiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBMaXZlIGF0IFdpdGggRnVsbCBGb3JjZSAyMDE3IFtQcm8tU2hvdF0iLAogICAgImRlc2NyaXB0aW9uIjogIkluIEZsYW1lcyBsaXZlIGF0IFdpdGggRnVsbCBGb3JjZSAwOjE4IEFsaWFzIDU6MDkgQWxsIEZvciBNZSA5OjQzIE9ubHkgRm9yIFRoZSBXZWFrIDE0OjA1IENsb3VkIENvbm5lY3RlZCAxODozNCBEZWxpdmVyIFVzIDI1OjMzIEhlcmUgVW50aWwgRm9yZXZlciAzMDowMCAuLi4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS92dEFuUUhERkV6NC9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvdnRBblFIREZFejQvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS92dEFuUUhERkV6NC9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAieE1lZ2FtZXQiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9OeVdWZHlacktaYmp5dlJFc2hxYmYwc3ZzYW9cIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAicUZJdHhSSTIzTTgiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTctMDYtMTFUMDU6MDY6MjMuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDX1Z1N2VuNjZrQjN0U01PYVhORTFWZyIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIEAgU3dlZGVuIFJvY2sgMjAxNyAtIEFsaWFzIiwKICAgICJkZXNjcmlwdGlvbiI6ICIiLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9xRkl0eFJJMjNNOC9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvcUZJdHhSSTIzTTgvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9xRkl0eFJJMjNNOC9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiR29Qcm9DcmFzaFRlc3REdW1teSIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL2Via3dHdFhGR1E3RlplTEVBWkM4OHctbUZ5d1wiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJUaGlsZWpMNnp0USIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxOC0wNy0zMVQxMTo1NToxNy4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNXUTJPSEI2Szdhdmx5eXBDNUpmQzh3IiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcyB3LiBzdHJpbmdzICg0IGNhbSBtaXgpIEAgQm9yZ2hvbG0gQnJpbm5lciAyMDE4IiwKICAgICJkZXNjcmlwdGlvbiI6ICJJbiBGbGFtZXMgLSBBbGlhcyBCb3JnaG9sbSBCcmlubmVyLCBKdWx5IDI3dGgsIDIwMTggUmVjb3JkZWQgbGl2ZSBhdCBCb3JnaG9sbSBDYXN0bGUsIMOWbGFuZCwgU3dlZGVuLiBGb290YWdlIHNhdmFnZWx5IHN0b2xlbiBmcm9tIEpvaGFuaXNhbm9yYW5nZSwgRGF2aWQgLi4uIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvVGhpbGVqTDZ6dFEvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1RoaWxlakw2enRRL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvVGhpbGVqTDZ6dFEvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIkNydW1icyIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrLy1ZOFJDWGx1SHBFQkRfTVFvVzVnbG5vVFczQVwiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICI2SnVFbTRZa0JNbyIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxNS0xMi0xOVQxNDozMzoyMC4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNOc3BMa2cwbjc0TktIaTNQUm04RDB3IiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLy8gQWxpYXMgQ292ZXIgKExpdmUgVmVyc2lvbikiLAogICAgImRlc2NyaXB0aW9uIjogIkdlYXIgVXNlZCA5MCdzIE9ydmlsbGUgTGVzIFBhdWwgQ3VzdG9tIHdpdGggc3RvY2sgcHVwcyBEdW5sb3AgOTVRIFdhaCAxMC01MiBEciBTdHJpbmdzIHR1bmVkIHRvIERyb3AgQSMgQmlhcyBGeCBGZWVsIGZyZWUgdG8gY29tbWVudCEiLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS82SnVFbTRZa0JNby9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNkp1RW00WWtCTW8vbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS82SnVFbTRZa0JNby9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiRmlyZGF1cyBUYWhyaW4iLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9yTDY1eDhySklZbHNjN0RUOHlid05lUmpLR0FcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAicEZ0b09iSTRjdE0iCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMDgtMTEtMjNUMjA6MTE6MTAuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDUUI0bWU4VFZpMGdvVGJQbENfcUt3dyIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC0gQWxpYXMgKyBMeXJpY3MiLAogICAgImRlc2NyaXB0aW9uIjogIjIwMDggTnVjbGVhciBCbGFzdCAoSW4gRmxhbWVzKSBUaGUgc2VycGVudCBrbm93cyBXaGVuIHRoZSBjdXJ0YWluIGZhbGxzIFdpdGggZGVuaWFsJ3MgYmxpbmRmb2xkIEhlIGdyZWV0cyBhbm90aGVyIGRheSBEb24ndCBiZWxpZXZlIHRoZSBtYXNrIEl0IGFkYXB0cyB0byBhbnkgbGllIC4uLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL3BGdG9PYkk0Y3RNL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9wRnRvT2JJNGN0TS9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL3BGdG9PYkk0Y3RNL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJEYW4gR3VydSAoZi5rLmEuIFJvcXFSKSIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL2RCeVc1UFJucnplVjFwWW4ySElzV01uSFk1TVwiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICItQVhxZGN3eXBwayIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxMi0wMS0xNlQwMTowOTo0Ny4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNQdklQYXJjdlBRc2ZwdWxIRnRNV1F3IiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcyAoTGFpZCBSZW1peCkiLAogICAgImRlc2NyaXB0aW9uIjogIiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpLy1BWHFkY3d5cHBrL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS8tQVhxZGN3eXBway9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpLy1BWHFkY3d5cHBrL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJNYXJ0w61uIE9jaG9hIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvLUF3d0tNemhLUEMwM3NqY0VKcTdsRXpzaGlVXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIk80emR4MUpRVm1zIgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDA5LTAxLTA4VDEzOjA0OjM5LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ1RrTTZZcWkwTGp1WkJIOEdYeFFMdFEiLAogICAgInRpdGxlIjogIklOIEZMQU1FUyAmIFRpbW8gUsOkaXPDpG5lbiAtIEFsaWFzIChMaXZlIEdyYW1taXNnYWxhbiAyMDA5KSIsCiAgICAiZGVzY3JpcHRpb24iOiAiSW4gRmxhbWVzIGFuZCBUaW1vIGxpdmUgaW4gU3dlZGlzaCB0ZWxldmlzaW9uLiBodHRwOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9STFmeGNpNFRCSlUmZmVhdHVyZT1jaGFubmVsX3BhZ2UuIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvTzR6ZHgxSlFWbXMvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL080emR4MUpRVm1zL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvTzR6ZHgxSlFWbXMvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIlNpbW9uIFBldGVyc3NvbiIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrLzV5WHVCczNuRWxwV2NybTBHWXUwaFZVNHNhd1wiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJ3aHNCT2hJd2VSQSIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxOC0wOS0wMlQxNjowOTozMC4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUM0c0xRc1J1ZVpkZWNzSXdtSFo0NmZnIiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcy4gQmFja2luZyB0cmFjayIsCiAgICAiZGVzY3JpcHRpb24iOiAi0JjRgdC/0L7Qu9C90LjRgtC10LvRjDogSW4gRmxhbWVzINCQ0LvRjNCx0L7QvDogQSBTZW5zZSBvZiBQdXJwb3NlINCU0LDRgtCwINCy0YvQv9GD0YHQutCwOiAyMDA4INCzLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL3doc0JPaEl3ZVJBL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS93aHNCT2hJd2VSQS9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL3doc0JPaEl3ZVJBL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJMZXNuaTRlayIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL2E4UEoxcTBPS1FWdW5hWm5ZbDhnblJvOEhrc1wiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJxb0xsUFJNeU9fTSIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAwOC0wNi0yNFQxODo1Nzo1MC4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNBa3NvdDNweEhsTkQ0ZzZWeWpKZDR3IiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcyAocGlhbm8gY292ZXIpIiwKICAgICJkZXNjcmlwdGlvbiI6ICJob25lc3RseSBpIGRvIGl0IGJldHRlcl5eIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvcW9MbFBSTXlPX00vZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL3FvTGxQUk15T19NL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvcW9MbFBSTXlPX00vaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIkdpem1vIG5hbWUiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9EejJEdjNTbFF2Y0sxbnBaT2pzRGJQNzViWW9cIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiNFhyNTdySVdRS28iCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTQtMDctMjBUMjM6NTA6MzQuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDazhFUDBkTnJ5bGlqNU1iY0J6TmF2QSIsCiAgICAidGl0bGUiOiAiW0luIEZsYW1lcyAtIEFsaWFzXSBQaWFubyBUdXRvcmlhbCIsCiAgICAiZGVzY3JpcHRpb24iOiAiSSBzZXJpb3VzbHkgbG92ZSB0aGUgaW50cm8gdG8gdGhpcyBzb25nISBNSURJIGFuZCBTaGVldCBtdXNpYyBjYW4gYmUgZG93bmxvYWRlZCBoZXJlOiBodHRwczovL21lZ2EuY28ubnovI0YhQlpoM0ZLb0MhdGlwY0o3T2Y3Tm1FYy1xVFk4d2VNdyBGaWxlZCB1bmRlcjogLi4uIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNFhyNTdySVdRS28vZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpLzRYcjU3cklXUUtvL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNFhyNTdySVdRS28vaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIk1hbGF3aW1hbiIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL2g2TmliWmVVTG9rUmhiVTdkVmhFbVMwLWdNUVwiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJHVTN0Y3ZlUGdjayIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAwOC0xMC0wNVQwOToyMToyNS4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNoZjBQWld2cDFNcVVqdjZPeDVtYTJnIiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcyIsCiAgICAiZGVzY3JpcHRpb24iOiAiNHRoIHNvbmcgb24gdGhlIGFsYnVtIEEgU2Vuc2Ugb2YgUHVycG9zZSBieSBJbiBGbGFtZXMuIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvR1UzdGN2ZVBnY2svZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL0dVM3RjdmVQZ2NrL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvR1UzdGN2ZVBnY2svaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogImpKbnRlIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvaEZ2cVBSWHNnaTloTWZTM3VNd0x4Z21PVkdNXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIjR0SzNHWGJBN2lZIgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDE4LTEyLTAxVDE1OjA5OjU2LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ0p6VW8zVFNsc1dQTzBiWTFjeDItZWciLAogICAgInRpdGxlIjogIkluIEZsYW1lcywgQWxpYXMgKGxpdmUpLCBEYWxsYXMsIFRleGFzIDMwMTEyMDE4IiwKICAgICJkZXNjcmlwdGlvbiI6ICJHYXMgTW9ua2V5IEJhciBuIEdyaWwuIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNHRLM0dYYkE3aVkvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpLzR0SzNHWGJBN2lZL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNHRLM0dYYkE3aVkvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIkouUC4gRm9zdGVyIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvOFNiSXZRVE8xZ0RneUt3RkJaa2VpaV9jZUJJXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogInFBWkREa2RMZV9jIgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDEyLTA5LTIwVDE2OjIyOjEwLjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ3I4LXdlUjhMZTJ2Y3hoQkdpUmQ5Q1EiLAogICAgInRpdGxlIjogIkluIEZsYW1lcyAtIEEgU2Vuc2Ugb2YgUHVycG9zZSAoSFEgQWxidW0pIiwKICAgICJkZXNjcmlwdGlvbiI6ICJJbiBGbGFtZXMgbmludGggc3R1ZGlvIGFsYnVtLCBBIFNlbnNlIG9mIFB1cnBvc2UuIFllYXI6IDIwMDggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVHJhY2sgbGlzdGluZzogMS4gVGhlIE1pcnJvcidzIFRydXRoIC4uLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL3FBWkREa2RMZV9jL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9xQVpERGtkTGVfYy9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL3FBWkREa2RMZV9jL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJwcGhlcm9lcyIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL0NPWC1IdV91ckVwY29YdEpRR3Y3VHh0LUJnQVwiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJCTWdQTGg3a2RYNCIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxMS0wMS0zMFQxMjo1MToxMi4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNOY1ZRQVZvNG9mVE1WTEhnTmxjWUV3IiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcyAoRmF0YWxHLUZvcmNlIFRlY2hubyBDb3ZlcikiLAogICAgImRlc2NyaXB0aW9uIjogIlRlY2hubyBjb3ZlciBJbiBGbGFtZXMgLSBBbGlhcyBhbGwgc291bmRzIG1hZGUgaW4gTUFHSVggTXVzaWMgTWFrZXIgMTUgUHJlbWl1bS4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9CTWdQTGg3a2RYNC9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvQk1nUExoN2tkWDQvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9CTWdQTGg3a2RYNC9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiRmF0YWxHRm9yY2UiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9FTGIxektDVnJnNTY5OThXTnZmbUYtQ3cxMEVcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiZDl3aHZyNWpIcWMiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMDktMTEtMDhUMjE6NDk6MzQuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDUXdpNEYwYlZ1WGNGMUY0UW1ESGN3QSIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC0gQWxpYXMgKERydW0gQ292ZXIpIFtIRF0iLAogICAgImRlc2NyaXB0aW9uIjogIlRoaXMgaXMgbWUgZG9pbmcgYSBkcnVtIGNvdmVyIG9mIFwiQWxpYXNcIiBieSBJbiBGbGFtZXMuIFRoZSBzb25nIGZyb20gdGhlIDIwMDggcmVsZWFzZSBcIkEgU2Vuc2UgT2YgUHVycG9zZVwiLCBpcyB0aGUgY29weXJpZ2h0ZWQgcHJvcGVydHkgb2YgaXQncyBvd25lcihzKS4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9kOXdodnI1akhxYy9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvZDl3aHZyNWpIcWMvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9kOXdodnI1akhxYy9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiVGltIEVtYW51ZWwgU2Now6RyZGluIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvd1ZvTjdtVEhyWWk0eVdXQWZmTXY0dWhGYmdrXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogImxRQUtUd3d5aUk4IgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDA5LTA4LTIwVDAwOjMzOjM4LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ3BSOFpDMDFvRGkzT3BUeko3aUtaYlEiLAogICAgInRpdGxlIjogIkluIEZsYW1lcy1BbGlhcyB3aXRoIGx5cmljcyAoSFEpIiwKICAgICJkZXNjcmlwdGlvbiI6ICJBbGlhcyBieSBpbiBGbGFtZXMgZnJvbSB0aGUgQWxidW0gXCJBIFNlbnNlIG9mIFB1cnBvc2VcIiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL2xRQUtUd3d5aUk4L2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9sUUFLVHd3eWlJOC9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL2xRQUtUd3d5aUk4L2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJLaXdpbzEyIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvY0RXdXBuX2hRR01CWWFyRWFXdWI2SFFJZ29nXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIlo1eC0tMUd6dUtFIgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDE1LTEwLTA2VDIyOjIyOjU2LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ2lUM1g5VFlPMVhydnVPcGprd3hBOUEiLAogICAgInRpdGxlIjogIkluIEZsYW1lcyAtIEFsaWFzIEd1aXRhciBDb3ZlciAoSEQpIiwKICAgICJkZXNjcmlwdGlvbiI6ICJDb3ZlciBvZiB0aGUgc29uZyBBbGlhcyBieSBJbiBGbGFtZXMgSSBkbyBub3Qgb3duIHRoZSBzb25nLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1o1eC0tMUd6dUtFL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9aNXgtLTFHenVLRS9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1o1eC0tMUd6dUtFL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJKb2ZmcmV5IEJpcnN0ZXIiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9zSGJKOF9ncmJSY1A4WWVXSTFkd3pNT1BXQWdcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAib2U3R3RXWDktMHciCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTgtMDgtMDVUMTc6NDY6MDAuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDYXpIcVJGMkh3ckVUMWRJRG5DZERKdyIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC0gQWxpYXMgKFBvbCdhbmQncm9jayBGZXN0aXZhbCAyMDE4IEtvc3RyenluIG4vT2RyYSkiLAogICAgImRlc2NyaXB0aW9uIjogIkluIEZsYW1lcyAtIEFsaWFzIChQb2wnYW5kJ3JvY2sgRmVzdGl2YWwgMjAxOCBLb3N0cnp5biBuL09kcmEpIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvb2U3R3RXWDktMHcvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL29lN0d0V1g5LTB3L21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvb2U3R3RXWDktMHcvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIlJlYmVsIFZpa2luZyBWaWRlb3MiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9yTnR2Y3NnRnlMUHZwb3hlXzVjY21VMkp6a3NcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiYmUxY2QxWlpfUVEiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTgtMTAtMzFUMDg6Mzc6MDIuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDWkZuaTdjTExESld4OUxiYnhQR0RtdyIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC0gQWxpYXMgbGl2ZSBpbiBUZW1wZSwgQVogMjAxOCIsCiAgICAiZGVzY3JpcHRpb24iOiAiSW4gRmxhbWVzIHBlcmZvcm1pbmcgQWxpYXMgYXQgdGhlIE1hcnF1ZWUgVGhlYXRyZSBpbiBUZW1wZSwgQVogMTAtMzAtMjAxOC4gRW5qb3khIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvYmUxY2QxWlpfUVEvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL2JlMWNkMVpaX1FRL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvYmUxY2QxWlpfUVEvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIkFuZHJldyBXaWxsaWFtcyIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL3Q2c2tHWEpqUURnYThQQ3lPMlFQbHI5OTk0c1wiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJVZlJjS1VUdmJjbyIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxNy0xMS0xN1QxNjowNzowMC4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNWYk5yTkM4ZVlOYmN2WFlVVDhFazJRIiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcyAtIExpdmUgQCBTY2FuZGluYXZpdW0gR8O2dGVib3JnIFN3ZWRlbiAtIDE2LzExIDIwMTciLAogICAgImRlc2NyaXB0aW9uIjogIiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1VmUmNLVVR2YmNvL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9VZlJjS1VUdmJjby9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1VmUmNLVVR2YmNvL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJKaW1taWUgU3RqZXJuc3Ryw7ZtIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvNkxSeS1Ea3VqWl95eXBlSmRHa3RIRHEyUjhNXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIks4eVJmdTNSejE0IgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDE2LTA1LTA5VDAzOjI0OjQwLjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ2wtMzNIRWVRSWxfY2FwVHVEdS1Kb2ciLAogICAgInRpdGxlIjogIkluIEZsYW1lcyAtIEFsaWFzIC0gVm9jYWwgQ292ZXIiLAogICAgImRlc2NyaXB0aW9uIjogIk15IGNvdmVyIG9mIHRoZSBzb25nIEFsaWFzIGJ5IHRoZSBiYW5kIEluIEZsYW1lcy4gSSBhbSBub3cgcnVubmluZyBhIG5ldyBwYWdlIGZvciBteSBzdHVkaW8geW91IGNhbiBmaW5kIGl0IGF0IC4uLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL0s4eVJmdTNSejE0L2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9LOHlSZnUzUnoxNC9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL0s4eVJmdTNSejE0L2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJOYXRlIEJvaG5ldCIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL2JNdkQzQVpmdG1Eb3hTTlYzU2V2aERxZm50a1wiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJHTjZ3WmxxaTR1SSIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxOC0xMi0yMFQxODoxNTowMS4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNTczVOQzdpcGNtNjlGZ2plcmprSXBRIiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcyAoSFEgTGFpZCBSZW1peCkiLAogICAgImRlc2NyaXB0aW9uIjogIkJ5IFwiQSBTZW5zZSBPZiBQdXJwb3NlXCIgcmUtaXNzdWUsIDIwMTQuIEFsbCByaWdodHMgcmVzZXJ2ZWQgdG8gdGhlIGJhbmQgYW5kIENlbnR1cnkgTWVkaWEuIH4gQkxLIH4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9HTjZ3WmxxaTR1SS9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvR042d1pscWk0dUkvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9HTjZ3WmxxaTR1SS9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiSm8gS2lvdXIiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9yLXpHMlZXWGIwcnVXQXBoT0hCQ2pUMG5XelVcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiNnJ2bmVjVWRnb0UiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMDktMDgtMDVUMTQ6MTQ6MTcuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDcXo0c0xQQjhWMkhrOVlObThXYlRFZyIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC0gQWxpYXMgLSBXYWNrZW4gMjAwOSIsCiAgICAiZGVzY3JpcHRpb24iOiAiSW4gRmxhbWVzIExJVkUgQCBXYWNrZW4gMjAwOSBBbGlhcy4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS82cnZuZWNVZGdvRS9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNnJ2bmVjVWRnb0UvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS82cnZuZWNVZGdvRS9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiRWx2ZW5XaXRjaGNyYWZ0IiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvLVA2MXFyTDB5TlVmTXEybVRQNGRqTUtLRHNZXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIjVzd2l1UnQzR1lJIgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDE0LTA2LTIyVDIzOjE2OjM3LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ0VPeEl2cUZ0d19qT19NaUhxYnNjRFEiLAogICAgInRpdGxlIjogIkluIGZsYW1lcyAnQWxpYXMnIGFjb3VzdGljIHZhcmlhdGlvbiAvIGNvdmVyIiwKICAgICJkZXNjcmlwdGlvbiI6ICJyZS1oYXNoIG9mIGFuIG9sZGVyIHZpZGVvLCBob3BlZnVsbHkgYW4gaW1wcm92ZW1lbnQhIGFjb3VzdGljIGNyZWRpdGVkIHRvIElhbiBTYW5kb3ZhbCwgcGxlYXNlIGdvIGNoZWNrIGhpbSBvdXQgOikgdGhhbmtzIGZvciB3YXRjaGluZyEiLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS81c3dpdVJ0M0dZSS9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNXN3aXVSdDNHWUkvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS81c3dpdVJ0M0dZSS9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiS2FybWFyaW4gTmF0dXJlcyIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL2NYY1c5VTFFZ29neVpKaDBtREhGOTJuelRlZ1wiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJQT2todjVOS2ZXSSIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxOC0wNS0xNVQwNjo0MDozOC4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNMRVdocVgyRHJQbkVGZE1oaDlUQzZBIiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSBBbGlhcyAoQXByaWwgMzAsIFRvcm9udG8sIEdpZ2FudG91cikiLAogICAgImRlc2NyaXB0aW9uIjogIlBlcmZvcm1pbmcgQWxpYXMgb2ZmIHRoZWlyIG5ldyBjZCBBIFNlbnNlIG9mIFB1cnBvc2UuIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvUE9raHY1TktmV0kvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1BPa2h2NU5LZldJL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvUE9raHY1TktmV0kvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogImdldGJlYXRzIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvTVd2aUIxcWVldEwxLWkxMUtXTTFtdWw2UXVJXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIjc0ajc5RU45UnlvIgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDE3LTExLTA0VDIzOjM0OjIwLjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ3kxNy1xbTZyOWRCZXluU2JYZTRUYVEiLAogICAgInRpdGxlIjogIkluIEZsYW1lcyAtIEFsaWFzIC0gTm9ydGhzaWRlIDIwMTciLAogICAgImRlc2NyaXB0aW9uIjogIk5vcnRoc2lkZSAyMDE3IFBhcnF1ZSBGdW5kaWRvcmEsIE1vbnRlcnJleSBOLkwgLCBNZXhpY28gMjggLSBPY3R1YnJlIC0gMjAxNy4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS83NGo3OUVOOVJ5by9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNzRqNzlFTjlSeW8vbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS83NGo3OUVOOVJ5by9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiSmVzdXMgTWVuZG96YSIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL1ZMVlcwUVdncmlPc3JyQVpxX3FDR3RNVVQtY1wiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJSVlgxcXdpLTlvRSIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAxNC0wOS0xMlQwMjoxMToxNS4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUNvQXl0ZFhvV2ZKd2lDNWVnX0JlX0tnIiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgYWxpYXMgY292ZXIiLAogICAgImRlc2NyaXB0aW9uIjogIkluRmxhbWVzIEFsaWFzIENvdmVyLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1JWWDFxd2ktOW9FL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9SVlgxcXdpLTlvRS9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1JWWDFxd2ktOW9FL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJDaHJpcyBHcmFuZHkiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9yQmdpYVgyaFhRREE4LUI4OE1DNl9SY1ZidDBcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiNzV4WU43VkJpVFkiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTMtMTItMjVUMTc6Mzc6NDQuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDcUgwYWZsUFRuVHFyZTl0aDNGbXl3dyIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC0gQWxpYXMiLAogICAgImRlc2NyaXB0aW9uIjogIkFsYnVtOiBhIFNlbnNlIG9mIFB1cnBvc2UuIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNzV4WU43VkJpVFkvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpLzc1eFlON1ZCaVRZL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNzV4WU43VkJpVFkvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIkFuZHJlYXMgSG9ybmVtYW5uIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvb3lhQTZPZXowcENFOEhQRGtMZnUxaWVuZzFjXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIlV5UlN2TXVkMFo0IgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDE1LTA2LTIxVDA4OjIyOjI1LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ0VEYjRuX0xkeWNDZTEwTjlINk5fSHciLAogICAgInRpdGxlIjogIkluIEZsYW1lcyAtIEFsaWFzIChMaXZlIEAgR3Jhc3BvcCAyMDE1KSIsCiAgICAiZGVzY3JpcHRpb24iOiAiSW4gRmxhbWVzIC0gQWxpYXMgKExpdmUgQCBHcmFzcG9wIDIwMTUpIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvVXlSU3ZNdWQwWjQvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL1V5UlN2TXVkMFo0L21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvVXlSU3ZNdWQwWjQvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogIkRlYmJpZSBHIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvbEtHUGlBRFFBdm5HQUZCZnhKRUs5R2Q3UUdVXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIkFycDk0V3RiMGx3IgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDA4LTA5LTIyVDE2OjA3OjMxLjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ2FIZUtWTUVwSTZjVGk2Um96VzZVWlEiLAogICAgInRpdGxlIjogIkluIEZsYW1lcyAtIEFsaWFzIChhbGJ1bSB2ZXJzaW9uKSIsCiAgICAiZGVzY3JpcHRpb24iOiAiVGhlIHZpZGVvIHRvIEluIEZsYW1lcyBzb25nIEFsaWFzIEZyb20gdGhlIGFsYnVtIEEgU2Vuc2UgT2YgUHVycG9zZS4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9BcnA5NFd0YjBsdy9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvQXJwOTRXdGIwbHcvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9BcnA5NFd0YjBsdy9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiVW5pdmVyc2FsIE11c2ljIFN3ZWRlbiIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0sCiAgewogICAia2luZCI6ICJ5b3V0dWJlI3NlYXJjaFJlc3VsdCIsCiAgICJldGFnIjogIlwiWHBQR1FYUG54UUpoTGdzNmVuRF9uOEpSNFFrL25KM21BSlduMVR3UnpYLUZLZkp2YTRKSUFkd1wiIiwKICAgImlkIjogewogICAgImtpbmQiOiAieW91dHViZSN2aWRlbyIsCiAgICAidmlkZW9JZCI6ICJpLVoxdV95M0ZZWSIKICAgfSwKICAgInNuaXBwZXQiOiB7CiAgICAicHVibGlzaGVkQXQiOiAiMjAwOC0wNS0zMFQwODowNjoxMi4wMDBaIiwKICAgICJjaGFubmVsSWQiOiAiVUMzekhxbEVBNEl5bnRpSXpoNXNoOEtRIiwKICAgICJ0aXRsZSI6ICJJbiBGbGFtZXMgLSAgQWxpYXMgKCBMaXZlIFN0b2NraG9sbSAwOCApIiwKICAgICJkZXNjcmlwdGlvbiI6ICJJbiBGbGFtZXMgLSBBbGlhcyBMaXZlIGF0IEdyw7ZuYWx1bmQgQCBTdG9ja2hvbG0uIiwKICAgICJ0aHVtYm5haWxzIjogewogICAgICJkZWZhdWx0IjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvaS1aMXVfeTNGWVkvZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAxMjAsCiAgICAgICJoZWlnaHQiOiA5MAogICAgIH0sCiAgICAgIm1lZGl1bSI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL2ktWjF1X3kzRllZL21xZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiAzMjAsCiAgICAgICJoZWlnaHQiOiAxODAKICAgICB9LAogICAgICJoaWdoIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvaS1aMXVfeTNGWVkvaHFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDQ4MCwKICAgICAgImhlaWdodCI6IDM2MAogICAgIH0KICAgIH0sCiAgICAiY2hhbm5lbFRpdGxlIjogInJoZWJvcmciLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9WWDBvbEFqcFUxRGtqQUFQTkh5TmUxRnlZUWtcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAibDNOd2FZWnAxYUUiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTQtMTAtMzFUMDQ6MTk6MDguMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDM19aX2s4Q291Y2NVQmtrUDhkLXhWUSIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC0gQWxpYXMgR3VpdGFyIENvdmVyIiwKICAgICJkZXNjcmlwdGlvbiI6ICJGaXJzdCBjb3ZlciBpbiA1IG1vbnRocy4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9sM053YVlacDFhRS9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvbDNOd2FZWnAxYUUvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9sM053YVlacDFhRS9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiTUVUQUxNVVNJQ05FVFdPUksiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay8xSjZDc280S1ZFaFRwT1FGX2l3RW02cGpxNUFcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiNHNSVnY2QjhNcGMiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTgtMDctMjlUMDA6MjA6NDMuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDX2pzR3UzWDZuWW5MM0g1NENFZFhPZyIsCiAgICAidGl0bGUiOiAiSW4gZmxhbWVzIC0gQWxpYXMgQCBib3JnaG9sbSBicmlubmVyIiwKICAgICJkZXNjcmlwdGlvbiI6ICIiLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS80c1JWdjZCOE1wYy9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvNHNSVnY2QjhNcGMvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS80c1JWdjZCOE1wYy9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiRGF2aWQgUGV0ZXJzc29uIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvNGJ3SlY3c1hoRUx3bjEwZmRkTGNDZ0U1YzhRXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogIjBGQmhLZmREVmZFIgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDA4LTA5LTI3VDAxOjU0OjQ1LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ0xqbFRjckxNVG4yaDlCZk5LTjZuNkEiLAogICAgInRpdGxlIjogIkluIEZsYW1lcy1BbGlhcy1TdWJ0aXR1bGFkby1Fc3Bhw7FvbCIsCiAgICAiZGVzY3JpcHRpb24iOiAiU2kgZGVzZWFzIGRlc2NhcmdhciBlc3RlIHZpZGVvIHB1ZWRlcyBoYWNlcmxvIGFxdWk6IGh0dHA6Ly9jaWQtYWUyYjkyMTMyNzYyZTFhZC5za3lkcml2ZS5saXZlLmNvbS9icm93c2UuYXNweC9WJWMzJWFkZGVvcy4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS8wRkJoS2ZkRFZmRS9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvMEZCaEtmZERWZkUvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS8wRkJoS2ZkRFZmRS9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiRWxNZWpvck1ldGFsIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvUGdHT1lwZE1wYW5adDRQVVEzSG9LTmcydnlrXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogInVoNXB2cUJ1enNFIgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDEwLTA2LTI2VDEzOjI1OjMxLjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ1BQUGxZUGNGZFFWSEN3M1NEZHhaLUEiLAogICAgInRpdGxlIjogIkluIEZsYW1lcy1BbGlhcyA4IGJpdCIsCiAgICAiZGVzY3JpcHRpb24iOiAiaW4gZmxhbWVzJyBBbGlhcyBpbiA4IGJpdCAqQUxMIHJpZ2h0cyBnb2VzIHRvIHRoZSBiYW5kIGFuZCByZXNwZWN0aXZlIG93bmVycyoiLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS91aDVwdnFCdXpzRS9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvdWg1cHZxQnV6c0UvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS91aDVwdnFCdXpzRS9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAiam9uZ21hZ2VlIiwKICAgICJsaXZlQnJvYWRjYXN0Q29udGVudCI6ICJub25lIgogICB9CiAgfSwKICB7CiAgICJraW5kIjogInlvdXR1YmUjc2VhcmNoUmVzdWx0IiwKICAgImV0YWciOiAiXCJYcFBHUVhQbnhRSmhMZ3M2ZW5EX244SlI0UWsvUzdYc09XcDhvRWtteGtEWkp6bk81RGllSnlJXCIiLAogICAiaWQiOiB7CiAgICAia2luZCI6ICJ5b3V0dWJlI3ZpZGVvIiwKICAgICJ2aWRlb0lkIjogInB6cUc2SWpKZjgwIgogICB9LAogICAic25pcHBldCI6IHsKICAgICJwdWJsaXNoZWRBdCI6ICIyMDE3LTExLTIwVDE1OjExOjA3LjAwMFoiLAogICAgImNoYW5uZWxJZCI6ICJVQ0wzcXlpVjdCYk5RazROZEo5SGU2SWciLAogICAgInRpdGxlIjogIkFsaWFzIGJ5IEluIEZsYW1lcyAoRWxlY3RyaWMgR3VpdGFyIFRyaWJ1dGUpIiwKICAgICJkZXNjcmlwdGlvbiI6ICJTdWJzY3JpYmUgZm9yIGEgbmV3IHZpZGVvIGV2ZXJ5IHdlZWsgYW5kIGxlYXZlIGEgY292ZXIgcmVxdWVzdCBpbiB0aGUgY29tbWVudHMgYmVsb3chIEZyZWUgbXVzaWMgYXQgQmFuZENhbXA6IC4uLiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL3B6cUc2SWpKZjgwL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9wenFHNklqSmY4MC9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpL3B6cUc2SWpKZjgwL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJURE9WbXVzaWMiLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9tbUx6cWdOaWdoRmZ0ZUY5LTdZTUo1NTdWNGdcIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiNllGYnJ6NzFHd3MiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMDktMTEtMjVUMTI6MTY6MDYuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDdFJoNzRYN1NYODdkQXZKd0xZU3BZZyIsCiAgICAidGl0bGUiOiAiSU4gRkxBTUVTIC0gQWxpYXMgLSIsCiAgICAiZGVzY3JpcHRpb24iOiAiSU4gRkxBTUVTIC0gQWxpYXMgLSBsaXZlIGF1IEJhdGFjbGFuLCBQYXJpcyAoRnJhbmNlKSBsZSAyNC8xMS8yMDA5LiIsCiAgICAidGh1bWJuYWlscyI6IHsKICAgICAiZGVmYXVsdCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpLzZZRmJyejcxR3dzL2RlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMTIwLAogICAgICAiaGVpZ2h0IjogOTAKICAgICB9LAogICAgICJtZWRpdW0iOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS82WUZicno3MUd3cy9tcWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogMzIwLAogICAgICAiaGVpZ2h0IjogMTgwCiAgICAgfSwKICAgICAiaGlnaCI6IHsKICAgICAgInVybCI6ICJodHRwczovL2kueXRpbWcuY29tL3ZpLzZZRmJyejcxR3dzL2hxZGVmYXVsdC5qcGciLAogICAgICAid2lkdGgiOiA0ODAsCiAgICAgICJoZWlnaHQiOiAzNjAKICAgICB9CiAgICB9LAogICAgImNoYW5uZWxUaXRsZSI6ICJva2d3ZW4iLAogICAgImxpdmVCcm9hZGNhc3RDb250ZW50IjogIm5vbmUiCiAgIH0KICB9LAogIHsKICAgImtpbmQiOiAieW91dHViZSNzZWFyY2hSZXN1bHQiLAogICAiZXRhZyI6ICJcIlhwUEdRWFBueFFKaExnczZlbkRfbjhKUjRRay9YMENEMDBsdXRnbUZZNlBNQXFSUnZDdHJvNE1cIiIsCiAgICJpZCI6IHsKICAgICJraW5kIjogInlvdXR1YmUjdmlkZW8iLAogICAgInZpZGVvSWQiOiAiUUVobFBJRUdqcWsiCiAgIH0sCiAgICJzbmlwcGV0IjogewogICAgInB1Ymxpc2hlZEF0IjogIjIwMTItMDctMjJUMTg6NDE6MjEuMDAwWiIsCiAgICAiY2hhbm5lbElkIjogIlVDTnEwWi0yUDNYTldEQTMydFp1b3hmZyIsCiAgICAidGl0bGUiOiAiSW4gRmxhbWVzIC0gQWxpYXMgY292ZXIiLAogICAgImRlc2NyaXB0aW9uIjogIkluIEZsYW1lcyBBbGlhcyBDb3Zlci4iLAogICAgInRodW1ibmFpbHMiOiB7CiAgICAgImRlZmF1bHQiOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9RRWhsUElFR2pxay9kZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDEyMCwKICAgICAgImhlaWdodCI6IDkwCiAgICAgfSwKICAgICAibWVkaXVtIjogewogICAgICAidXJsIjogImh0dHBzOi8vaS55dGltZy5jb20vdmkvUUVobFBJRUdqcWsvbXFkZWZhdWx0LmpwZyIsCiAgICAgICJ3aWR0aCI6IDMyMCwKICAgICAgImhlaWdodCI6IDE4MAogICAgIH0sCiAgICAgImhpZ2giOiB7CiAgICAgICJ1cmwiOiAiaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS9RRWhsUElFR2pxay9ocWRlZmF1bHQuanBnIiwKICAgICAgIndpZHRoIjogNDgwLAogICAgICAiaGVpZ2h0IjogMzYwCiAgICAgfQogICAgfSwKICAgICJjaGFubmVsVGl0bGUiOiAicnlrbm93MTI5NyIsCiAgICAibGl2ZUJyb2FkY2FzdENvbnRlbnQiOiAibm9uZSIKICAgfQogIH0KIF0KfQo=
48
+ http_version:
49
+ recorded_at: Fri, 01 Feb 2019 09:55:52 GMT
50
+ - request:
51
+ method: get
52
+ uri: https://www.googleapis.com/youtube/v3/videos?id=fV6q5BrS0Bw&key=AIzaSyBopkXxz7Dzi9ZrFYPqjmL_JogByn-BBqI&part=status
53
+ body:
54
+ encoding: US-ASCII
55
+ string: ''
56
+ headers:
57
+ Content-Length:
58
+ - '0'
59
+ User-Agent:
60
+ - Yt::Request (gzip)
61
+ response:
62
+ status:
63
+ code: 200
64
+ message: OK
65
+ headers:
66
+ Expires:
67
+ - Fri, 01 Feb 2019 09:55:53 GMT
68
+ Date:
69
+ - Fri, 01 Feb 2019 09:55:53 GMT
70
+ Cache-Control:
71
+ - private, max-age=0, must-revalidate, no-transform
72
+ Etag:
73
+ - '"XpPGQXPnxQJhLgs6enD_n8JR4Qk/UdhB6gsbogkm2v4CtC4R9H8SmuQ"'
74
+ Vary:
75
+ - Origin
76
+ - X-Origin
77
+ Content-Type:
78
+ - application/json; charset=UTF-8
79
+ X-Content-Type-Options:
80
+ - nosniff
81
+ X-Frame-Options:
82
+ - SAMEORIGIN
83
+ X-Xss-Protection:
84
+ - 1; mode=block
85
+ Content-Length:
86
+ - '491'
87
+ Server:
88
+ - GSE
89
+ Alt-Svc:
90
+ - quic=":443"; ma=2592000; v="44,43,39"
91
+ body:
92
+ encoding: UTF-8
93
+ string: |
94
+ {
95
+ "kind": "youtube#videoListResponse",
96
+ "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/UdhB6gsbogkm2v4CtC4R9H8SmuQ\"",
97
+ "pageInfo": {
98
+ "totalResults": 1,
99
+ "resultsPerPage": 1
100
+ },
101
+ "items": [
102
+ {
103
+ "kind": "youtube#video",
104
+ "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/J9VuKHX-yfFbmRXdOyW5V9MxDUE\"",
105
+ "id": "fV6q5BrS0Bw",
106
+ "status": {
107
+ "uploadStatus": "processed",
108
+ "privacyStatus": "public",
109
+ "license": "youtube",
110
+ "embeddable": true,
111
+ "publicStatsViewable": true
112
+ }
113
+ }
114
+ ]
115
+ }
116
+ http_version:
117
+ recorded_at: Fri, 01 Feb 2019 09:55:53 GMT
118
+ - request:
119
+ method: get
120
+ uri: https://www.googleapis.com/youtube/v3/videos?id=fV6q5BrS0Bw&key=AIzaSyBopkXxz7Dzi9ZrFYPqjmL_JogByn-BBqI&maxResults=50&part=contentDetails
121
+ body:
122
+ encoding: US-ASCII
123
+ string: ''
124
+ headers:
125
+ Content-Length:
126
+ - '0'
127
+ User-Agent:
128
+ - Yt::Request (gzip)
129
+ response:
130
+ status:
131
+ code: 200
132
+ message: OK
133
+ headers:
134
+ Expires:
135
+ - Fri, 01 Feb 2019 09:55:53 GMT
136
+ Date:
137
+ - Fri, 01 Feb 2019 09:55:53 GMT
138
+ Cache-Control:
139
+ - private, max-age=300, must-revalidate, no-transform
140
+ Etag:
141
+ - '"XpPGQXPnxQJhLgs6enD_n8JR4Qk/XH-1OGFZBvcwWSnSWGe_eBKkQoo"'
142
+ Vary:
143
+ - Origin
144
+ - X-Origin
145
+ Content-Type:
146
+ - application/json; charset=UTF-8
147
+ X-Content-Type-Options:
148
+ - nosniff
149
+ X-Frame-Options:
150
+ - SAMEORIGIN
151
+ X-Xss-Protection:
152
+ - 1; mode=block
153
+ Content-Length:
154
+ - '513'
155
+ Server:
156
+ - GSE
157
+ Alt-Svc:
158
+ - quic=":443"; ma=2592000; v="44,43,39"
159
+ body:
160
+ encoding: UTF-8
161
+ string: |
162
+ {
163
+ "kind": "youtube#videoListResponse",
164
+ "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/XH-1OGFZBvcwWSnSWGe_eBKkQoo\"",
165
+ "pageInfo": {
166
+ "totalResults": 1,
167
+ "resultsPerPage": 1
168
+ },
169
+ "items": [
170
+ {
171
+ "kind": "youtube#video",
172
+ "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/jhWa6DvR5Tfibk9RRzYAkxMoqBw\"",
173
+ "id": "fV6q5BrS0Bw",
174
+ "contentDetails": {
175
+ "duration": "PT4M54S",
176
+ "dimension": "2d",
177
+ "definition": "sd",
178
+ "caption": "false",
179
+ "licensedContent": false,
180
+ "projection": "rectangular"
181
+ }
182
+ }
183
+ ]
184
+ }
185
+ http_version:
186
+ recorded_at: Fri, 01 Feb 2019 09:55:53 GMT
187
+ - request:
188
+ method: get
189
+ uri: https://www.googleapis.com/youtube/v3/videos?id=fV6q5BrS0Bw&key=AIzaSyBopkXxz7Dzi9ZrFYPqjmL_JogByn-BBqI&part=snippet
190
+ body:
191
+ encoding: US-ASCII
192
+ string: ''
193
+ headers:
194
+ Content-Length:
195
+ - '0'
196
+ User-Agent:
197
+ - Yt::Request (gzip)
198
+ response:
199
+ status:
200
+ code: 200
201
+ message: OK
202
+ headers:
203
+ Expires:
204
+ - Fri, 01 Feb 2019 09:55:53 GMT
205
+ Date:
206
+ - Fri, 01 Feb 2019 09:55:53 GMT
207
+ Cache-Control:
208
+ - private, max-age=300, must-revalidate, no-transform
209
+ Etag:
210
+ - '"XpPGQXPnxQJhLgs6enD_n8JR4Qk/SVqZx4jd1cpQp3JEjZ5LZIpCgZg"'
211
+ Vary:
212
+ - Origin
213
+ - X-Origin
214
+ Content-Type:
215
+ - application/json; charset=UTF-8
216
+ X-Content-Type-Options:
217
+ - nosniff
218
+ X-Frame-Options:
219
+ - SAMEORIGIN
220
+ X-Xss-Protection:
221
+ - 1; mode=block
222
+ Content-Length:
223
+ - '1302'
224
+ Server:
225
+ - GSE
226
+ Alt-Svc:
227
+ - quic=":443"; ma=2592000; v="44,43,39"
228
+ body:
229
+ encoding: UTF-8
230
+ string: |
231
+ {
232
+ "kind": "youtube#videoListResponse",
233
+ "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/SVqZx4jd1cpQp3JEjZ5LZIpCgZg\"",
234
+ "pageInfo": {
235
+ "totalResults": 1,
236
+ "resultsPerPage": 1
237
+ },
238
+ "items": [
239
+ {
240
+ "kind": "youtube#video",
241
+ "etag": "\"XpPGQXPnxQJhLgs6enD_n8JR4Qk/BWMkvVRsva3UV-Rqn6h3llSUFUQ\"",
242
+ "id": "fV6q5BrS0Bw",
243
+ "snippet": {
244
+ "publishedAt": "2010-11-30T21:34:35.000Z",
245
+ "channelId": "UC9qjDzIQoyW3USlw__qdmnQ",
246
+ "title": "In Flames - Alias (Official Video)",
247
+ "description": "Director: Patric Ullaeus",
248
+ "thumbnails": {
249
+ "default": {
250
+ "url": "https://i.ytimg.com/vi/fV6q5BrS0Bw/default.jpg",
251
+ "width": 120,
252
+ "height": 90
253
+ },
254
+ "medium": {
255
+ "url": "https://i.ytimg.com/vi/fV6q5BrS0Bw/mqdefault.jpg",
256
+ "width": 320,
257
+ "height": 180
258
+ },
259
+ "high": {
260
+ "url": "https://i.ytimg.com/vi/fV6q5BrS0Bw/hqdefault.jpg",
261
+ "width": 480,
262
+ "height": 360
263
+ }
264
+ },
265
+ "channelTitle": "InFlamesGBG",
266
+ "tags": [
267
+ "in flames",
268
+ "metal",
269
+ "death metal",
270
+ "punk",
271
+ "hardcore",
272
+ "rock",
273
+ "heavy metal"
274
+ ],
275
+ "categoryId": "10",
276
+ "liveBroadcastContent": "none",
277
+ "localized": {
278
+ "title": "In Flames - Alias (Official Video)",
279
+ "description": "Director: Patric Ullaeus"
280
+ }
281
+ }
282
+ }
283
+ ]
284
+ }
285
+ http_version:
286
+ recorded_at: Fri, 01 Feb 2019 09:55:53 GMT
287
+ recorded_with: VCR 4.0.0
@@ -0,0 +1,52 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "jarvisbot_songfinder/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "jarvisbot_songfinder"
8
+ spec.version = JarvisbotSongfinder::VERSION
9
+ spec.authors = ["Nick"]
10
+ spec.email = ["doublejarvis@gmail.com"]
11
+
12
+ spec.summary = "Take user input and return music track"
13
+ spec.description = "Gem jarvissongbot uses to take user input and transform it into queryable music track found on enabled providers (youtube, spotify), validating it afterwards"
14
+ spec.homepage = "https://gitlab.com/DoubleJarvis/jarvisbot_songfinder"
15
+ spec.license = "MIT"
16
+
17
+ spec.required_ruby_version = ">= 2.5.0"
18
+
19
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
20
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
21
+ if spec.respond_to?(:metadata)
22
+ # spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
23
+
24
+ spec.metadata["homepage_uri"] = spec.homepage
25
+ spec.metadata["source_code_uri"] = "https://gitlab.com/DoubleJarvis/jarvisbot_songfinder"
26
+ spec.metadata["changelog_uri"] = "https://gitlab.com/DoubleJarvis/jarvisbot_songfinder/changelog.md"
27
+ else
28
+ raise "RubyGems 2.0 or newer is required to protect against " \
29
+ "public gem pushes."
30
+ end
31
+
32
+ # Specify which files should be added to the gem when it is released.
33
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
34
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
35
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
36
+ end
37
+ spec.bindir = "exe"
38
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
39
+ spec.require_paths = ["lib"]
40
+
41
+ spec.add_development_dependency "bundler", "~> 1.17"
42
+ spec.add_development_dependency "rake", "~> 10.0"
43
+ spec.add_development_dependency "rspec", "~> 3.0"
44
+ spec.add_development_dependency "simplecov", "~> 0.16"
45
+ spec.add_development_dependency "pry"
46
+ spec.add_development_dependency "vcr"
47
+ spec.add_development_dependency "webmock"
48
+
49
+ spec.add_dependency "httparty", "~> 0.16"
50
+ spec.add_dependency "yt", "~> 0.29.1"
51
+ spec.add_dependency "rspotify", "~> 2.4.0"
52
+ end
@@ -0,0 +1,21 @@
1
+ module JarvisbotSongfinder
2
+ require "jarvisbot_songfinder/version"
3
+ require "jarvisbot_songfinder/configuration"
4
+
5
+ require "jarvisbot_songfinder/helpers/query"
6
+ require "jarvisbot_songfinder/helpers/url_query"
7
+ require "jarvisbot_songfinder/helpers/search_query"
8
+ require "jarvisbot_songfinder/helpers/reply_message"
9
+
10
+ require "jarvisbot_songfinder/providers/provider"
11
+ require "jarvisbot_songfinder/providers/unknown_search_provider"
12
+ require "jarvisbot_songfinder/providers/unknown_provider"
13
+
14
+ require "yt"
15
+ require "rspotify"
16
+ require "jarvisbot_songfinder/providers/spotify_api"
17
+ require "jarvisbot_songfinder/providers/youtube_api"
18
+ require "jarvisbot_songfinder/providers/bandrequest"
19
+
20
+ class Error < StandardError; end
21
+ end
@@ -0,0 +1,28 @@
1
+ module JarvisbotSongfinder
2
+ class << self
3
+ attr_accessor :configuration
4
+ end
5
+
6
+ def self.configure
7
+ self.configuration ||= Configuration.new
8
+ yield(configuration)
9
+ end
10
+
11
+ class Configuration
12
+ attr_accessor :spotify_client_id,
13
+ :spotify_secret,
14
+ :youtube_api_key,
15
+ :region,
16
+ :length_min,
17
+ :length_max
18
+
19
+ def initialize
20
+ @spotify_client_id = nil
21
+ @spotify_secret = nil
22
+ @youtube_api_key = nil
23
+ @region = nil
24
+ @length_min = 0
25
+ @length_max = Float::INFINITY
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,34 @@
1
+ module JarvisbotSongfinder
2
+ require 'forwardable'
3
+
4
+ class Query
5
+ extend Forwardable
6
+
7
+ URL_REGEX = /\Ahttps?:\/\//
8
+ attr_reader :concrete_query
9
+
10
+ def initialize(input)
11
+ @input = input
12
+ @concrete_query = select_concrete_query
13
+ end
14
+
15
+ def_delegators :track, :length,
16
+ :artist,
17
+ :title,
18
+ :provider,
19
+ :url,
20
+ :valid?,
21
+ :explicit?,
22
+ :errors
23
+
24
+ private
25
+
26
+ def track
27
+ @concrete_query.track
28
+ end
29
+
30
+ def select_concrete_query
31
+ @input.match(URL_REGEX) ? UrlQuery.new(@input) : SearchQuery.new(@input)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,101 @@
1
+ module JarvisbotSongfinder
2
+ module ReplyMessage
3
+ module Request
4
+ def self.usage
5
+ "Usage: '!sr $url'"
6
+ end
7
+
8
+ def self.queue_closed
9
+ "Song queue is closed. Please wait until Dan opens it."
10
+ end
11
+
12
+ def self.submitted_successfully(request)
13
+ "Your request: #{request} successfully submitted"
14
+ end
15
+
16
+ def self.already_requested(request)
17
+ "#{request} already exists in the queue"
18
+ end
19
+
20
+ def self.user_already_requested(request)
21
+ "You already have #{request} in the queue, use '!replace url/search term' to replace"
22
+ end
23
+
24
+ def self.invalid_url(request)
25
+ "#{request} is invalid"
26
+ end
27
+
28
+ def self.too_long
29
+ "Your request is too long, please stick to videos not longer than 10 minutes"
30
+ end
31
+
32
+ def self.invalid_category
33
+ "Your request is not in Music category"
34
+ end
35
+
36
+ def self.replaced_successfully(request)
37
+ "Your previous request was replaced with #{request}"
38
+ end
39
+
40
+ def self.nothing_to_replace
41
+ "Nothing to replace. Use '!sr url/search term' to request something"
42
+ end
43
+
44
+ def self.nothing_to_remove
45
+ "Nothing to remove. Use '!sr url/search term' to request something"
46
+ end
47
+
48
+ def self.removed_successfully
49
+ "Your request removed from the queue successfully"
50
+ end
51
+
52
+ def self.region_restricted
53
+ "This video is not availible in the US"
54
+ end
55
+
56
+ def self.invalid_video_id
57
+ "Invalid video ID"
58
+ end
59
+
60
+ def self.promoted_successfully(request)
61
+ "Request: #{request} was promoted successfully"
62
+ end
63
+
64
+ def self.promoted_unsuccessfully
65
+ "Cannot promote"
66
+ end
67
+
68
+ def self.demoted_successfully(request)
69
+ "Request: #{request} was demoted successfully"
70
+ end
71
+
72
+ def self.demoted_unsuccessfully
73
+ "Cannot demote"
74
+ end
75
+
76
+ def self.unknown_provider
77
+ "Unknown provider. Available providers: #{JarvisbotSongfinder::Provider.available_providers}"
78
+ end
79
+
80
+ def self.song_banned
81
+ "Song was banned by Dan, request something else"
82
+ end
83
+ end
84
+
85
+ module Song
86
+ def self.currently_playing(song)
87
+ "#{song} is currently playing"
88
+ end
89
+
90
+ def self.not_playing
91
+ "Nothing is currently playing"
92
+ end
93
+ end
94
+
95
+ module Search
96
+ def self.not_found
97
+ "Nothing is found, check your spelling"
98
+ end
99
+ end
100
+ end
101
+ end