/********************************************************* {COPYRIGHT-TOP} ***
* Licensed Materials - Property of IBM
* 5725-Z22, 5725-Z63, 5725-U33, 5725-Z63
*
* (C) Copyright IBM Corporation 2017
*
* All Rights Reserved.
* US Government Users Restricted Rights - Use, duplication or disclosure
* restricted by GSA ADP Schedule Contract with IBM Corp.
********************************************************** {COPYRIGHT-END} **/
.apim .main-nav-button-container .staging-dropdown .dropdown-menu .dropdown-header {
  color: #808080;
  font-size: 14px;
  padding: 5px 20px;
  width: 300px;
}
.apim .main-nav-button-container .staging-dropdown .dropdown-menu .dropdown-item {
  color: #000;
  margin: 15px 0;
  padding: 5px 30px;
  width: 100%;
}
.apim .main-nav-button-container .staging-dropdown .dropdown-menu .dropdown-item div {
  white-space: nowrap;
}
.apim .main-nav-button-container .staging-dropdown .dropdown-menu .dropdown-item .staging-nav-key {
  color: #808080;
}
.apim .main-nav-button-container .staging-dropdown .dropdown-menu li :hover {
  background-color: #f2f2f2;
}
.apim .main-nav-button-container .staging-dropdown .dropdown-menu hr {
  margin: 0;
}
.apim .main-nav-button-container .staging-dropdown .dropdown-menu .select-other-target {
  height: 50px;
}
.apim .staging-modal {
  padding-left: 30px;
  padding-right: 30px;
}
.apim .staging-modal .title-subheader {
  font-size: 12px;
  margin-top: 10px;
}
.apim .staging-modal .scrollable-list {
  height: 350px;
  overflow-y: auto;
}
.apim .staging-modal .modal-header {
  border: 0;
  padding-top: 25px;
}
.apim .staging-modal .modal-body {
  padding-top: 10px;
}
.apim .staging-modal .modal-body button {
  height: 50px;
  margin: 5px 0;
}
.apim .staging-modal .modal-body .targetButtonRow {
  background: -webkit-linear-gradient(0deg, #fff 50%, #d7dff6 50%);
  background: -moz-linear-gradient(0deg, #fff 50%, #d7dff6 50%);
  background: -o-linear-gradient(0deg, #fff 50%, #d7dff6 50%);
  background: -ms-linear-gradient(0deg, #fff 50%, #d7dff6 50%);
  background: linear-gradient(90deg, #fff 50%, #d7dff6 50%);
  margin-bottom: 5px;
}
.apim .staging-modal .modal-body .targetButtonRow button {
  margin: 0;
  vertical-align: top;
}
.apim .staging-modal .modal-body .targetButtonRow button:hover {
  color: #636d6b;
}
.apim .staging-modal .modal-body .targetButtonRow button:hover .orgLine {
  color: #fff;
}
.apim .staging-modal .modal-body .targetButtonRow button:hover .catalogSpaceLine {
  color: #fff;
}
.apim .staging-modal .modal-body .targetButton {
  min-width: 200px;
  width: calc(100% - 44px);
}
.apim .staging-modal .modal-body .targetButton .catalogSpaceLine {
  line-height: 14px;
}
.apim .staging-modal .modal-body .targetButton .orgLine {
  color: #808080;
  font-size: 12px;
  line-height: 14px;
  padding-top: 5px;
}
.apim .staging-modal .modal-body .deleteButton {
  background: transparent;
  border: 0;
  min-width: 40px;
}
.apim .staging-modal .modal-body .deleteButton :hover {
  color: #636d6b;
}
.apim .staging-modal .modal-body .planButtons {
  margin-top: 15px;
}
.apim .staging-modal .modal-body .planButtons button {
  height: 80px;
  padding: 10px 40px;
  text-align: left;
}
.apim .staging-modal .modal-body .planButtons button:hover .planDesc {
  color: #fff;
}
.apim .staging-modal .modal-body .planButtons .selected {
  background-color: #4b68fa;
  color: #fff;
}
.apim .staging-modal .modal-body .planButtons .planInfo {
  font-size: 16px;
}
.apim .staging-modal .modal-body .planButtons .planDesc {
  font-size: 12px;
  font-weight: normal;
  line-height: 18px;
}
.apim .staging-modal .modal-body .planButtons :not(.selected) .planDesc {
  color: #000;
}
.apim .staging-modal .modal-footer {
  border: 0;
  padding-bottom: 25px !important;
}
.apim .staging-modal .bluemix-logo {
  width: 50px;
  height: 50px;
}
.apim .staging-modal md-input-container {
  margin-left: 0;
  padding: 2px;
}
.apim .staging-modal .smallTextLink {
  font-size: 10px;
  margin-top: 10px;
}
.apim .staging-modal .stagingListSelector {
  border: 1px solid #e0e0e0;
  height: 400px;
  margin-top: 10px;
}
.apim .staging-modal .stagingListSelector .resetButton {
  height: 16px;
}
.apim .staging-modal .stagingListSelector .selected {
  background-color: #e0e0e0;
}
.apim .staging-modal .listDisabled {
  background-color: rgba(0,0,0,0.15);
  position: fixed;
  width: calc(100% - 111px);
  height: 400px;
  z-index: 17;
}
.apim .staging-modal .listDisabled .spinner:after {
  background-color: #d9d9d9;
}
.apim .staging-modal .stagingListSelectorItem {
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  -o-box-flex: 1;
  box-flex: 1;
  -webkit-flex: 1;
  -ms-flex: 1;
  flex: 1;
  height: 50px;
  line-height: 50px;
  padding-left: 30px;
  padding-right: 10px;
}
.apim .staging-modal .stagingListSelectorItem .requiresApproval {
  color: #788299;
  font-size: 14px;
  padding-right: 30px;
}
.apim .staging-modal .stagingListSelectorItem .spaceParentOrgName {
  color: #808080;
  font-size: 10px;
}
.apim .staging-modal .stagingListSelectorItem:hover {
  background-color: #f2f2f2;
}
.apim .staging-modal .addAppBar {
  height: 50px;
}
.apim .staging-modal .addAppBar .addAppButton {
  position: absolute;
  top: 5px;
  right: 10px;
  height: 28px;
}
.apim .staging-modal .addAppInput {
  border-bottom: 1px solid #e0e0e0;
  border-left: 0;
  border-right: 0;
  border-top: 1px solid #e0e0e0;
  padding: 14px 20px;
}
.apim .staging-modal .targetSignIn {
  margin-bottom: 25px;
  margin-top: 40px;
}
.apim .staging-modal .bluemixLogin button {
  background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzIgMzIiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGZpbGw9IiMxRDM2NDkiIGQ9Ik05LjgsMTYuMWMwLDEuMSwwLjIsMi4xLDAuNiwzLjFjMC40LDAuOSwxLDEuOCwxLjcsMi41YzAuMSwwLjEsMC4zLDAuMywwLjUsMC40VjEwCgkJYy0wLjIsMC4xLTAuMywwLjMtMC41LDAuNGMtMC43LDAuNy0xLjMsMS42LTEuNywyLjVDMTAsMTQsOS44LDE1LDkuOCwxNi4xeiIvPgoJPHBhdGggZmlsbD0iIzAwQjRBMCIgZD0iTTIzLjMsMTAuNWMtMC43LTAuNy0xLjYtMS4zLTIuNS0xLjdjLTEtMC40LTItMC42LTMuMS0wLjZjLTAuOSwwLTEuOCwwLjEtMi43LDAuNWwxMC41LDYKCQljLTAuMS0wLjYtMC4zLTEuMi0wLjUtMS43QzI0LjYsMTIsMjQsMTEuMiwyMy4zLDEwLjV6Ii8+Cgk8cGF0aCBmaWxsPSIjMDBCNEEwIiBkPSJNMTQuMSw5LjFMMTQuMSw5LjFsMy45LDYuN2g3LjdjMC0wLjEsMC0wLjIsMC0wLjNMMTQuMyw4LjlDMTQuMiw5LDE0LjEsOSwxNC4xLDkuMXoiLz4KCTxwYXRoIGZpbGw9IiM1QUFBRkEiIGQ9Ik0yNS42LDE2LjRMMjUuNiwxNi40aC03LjdsMCwwTDE0LDIzbDAsMGMwLjEsMCwwLjEsMC4xLDAuMiwwLjFsMTEuMy02LjZDMjUuNiwxNi41LDI1LjYsMTYuNCwyNS42LDE2LjR6IgoJCS8+Cgk8cGF0aCBmaWxsPSIjNUFBQUZBIiBkPSJNMjAuOCwyMy4zYzAuOS0wLjQsMS44LTEsMi41LTEuN3MxLjMtMS42LDEuNy0yLjVjMC4yLTAuNiwwLjQtMS4xLDAuNS0xLjdsLTEwLjUsNgoJCWMwLjksMC4zLDEuOCwwLjUsMi43LDAuNUMxOC44LDI0LDE5LjgsMjMuNywyMC44LDIzLjN6Ii8+Cgk8cGF0aCBmaWxsPSIjMUQzNjQ5IiBkPSJNMTcuMywxNi4xTDE3LjMsMTYuMUwxNy4zLDE2LjFsLTMuOS02LjdsMCwwYzAsMC0wLjIsMC4xLTAuMiwwLjF2MTMuMWMwLjEsMC4xLDAuMSwwLjEsMC4yLDAuMWwwLDAKCQlMMTcuMywxNi4xeiIvPgoJPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTE3LjksMTYuNEwxNy45LDE2LjRMMTcuOSwxNi40eiIvPgoJPHBhdGggZmlsbD0iIzAwQjRBMCIgZD0iTTE3LjcsNy42YzQuNCwwLDgsMy4zLDguNCw3LjVjMCwwLjEsMCwwLjIsMCwwLjRsMCwwbDMuOS02LjhMMjYsMS42aC04LjJMMTQsOC40YzAuMS0wLjEsMC4yLTAuMSwwLjQtMC4yCgkJQzE1LjQsNy44LDE2LjUsNy42LDE3LjcsNy42eiIvPgoJPHJlY3QgeD0iMTQuMSIgeT0iMjMuNyIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjAiIGhlaWdodD0iMC4zIi8+Cgk8cGF0aCBmaWxsPSIjNUFBQUZBIiBkPSJNMjYuMiwxNi43TDI2LjIsMTYuN2MwLDAuMSwwLDAuMiwwLDAuNGMtMC41LDQuMi00LjEsNy41LTguNCw3LjVjLTEuMiwwLTIuMy0wLjItMy40LTAuNwoJCWMtMC4xLTAuMS0wLjItMC4xLTAuNC0wLjFsMy45LDYuOGg4LjJsNC4xLTcuMUwyNi4yLDE2Ljd6Ii8+Cgk8cGF0aCBmaWxsPSIjMUQzNjQ5IiBkPSJNMTMsOUg1LjJsLTQuMSw3LjFsNC4xLDcuMUgxM2wwLDBjLTAuMS0wLjEtMC4yLTAuMS0wLjMtMC4yYy0yLjEtMS41LTMuNC00LTMuNC02LjhzMS4zLTUuMywzLjQtNi44CgkJQzEyLjgsOS4yLDEyLjksOS4xLDEzLDl6Ii8+CjwvZz4KPC9zdmc+Cg==") no-repeat 55px center;
  background-color: #fff;
  -webkit-background-size: 28px;
  -moz-background-size: 28px;
  background-size: 28px;
  border-color: #4b68fa;
  color: #4b68fa;
  cursor: pointer;
  font-family: Arial, Verdana, Helvetica, sans-serif;
  font-size: 16px;
  font-weight: bold;
  padding: 15px 15px 15px 45px;
  -webkit-transition: background-color 0.2s, color 0.2s;
  -moz-transition: background-color 0.2s, color 0.2s;
  -o-transition: background-color 0.2s, color 0.2s;
  -ms-transition: background-color 0.2s, color 0.2s;
  transition: background-color 0.2s, color 0.2s;
  width: 100%;
}
.apim .staging-modal .bluemixLogin button:disabled {
  background: #ccc;
  border-color: #ccc;
  color: #999;
  cursor: not-allowed;
}
.apim .staging-modal .appName {
  color: #808080;
  font-style: italic;
  margin-left: 15px;
}
.apim .clearLoadingOverlay {
  position: fixed;
  width: calc(100% - 111px);
  z-index: 17;
}
.apim .staging-modal .animate-show.ng-hide-add,
.apim .animate-show.ng-hide-remove {
  -webkit-transition: all linear 0.5s;
  -moz-transition: all linear 0.5s;
  -o-transition: all linear 0.5s;
  -ms-transition: all linear 0.5s;
  transition: all linear 0.5s;
}
.apim .staging-modal .bluemixLogin button:hover:not(:disabled),
.apim .staging-modal .bluemixLogin button:focus {
  background-color: #4b68fa;
  background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMzIgMzIiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik05LjgsMTYuMWMwLDEuMSwwLjIsMi4xLDAuNiwzLjFjMC40LDAuOSwxLDEuOCwxLjcsMi41YzAuMSwwLjEsMC4zLDAuMywwLjUsMC40VjEwCgkJYy0wLjIsMC4xLTAuMywwLjMtMC41LDAuNGMtMC43LDAuNy0xLjMsMS42LTEuNywyLjVDMTAsMTQsOS44LDE1LDkuOCwxNi4xeiIvPgoJPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTIzLjMsMTAuNWMtMC43LTAuNy0xLjYtMS4zLTIuNS0xLjdjLTEtMC40LTItMC42LTMuMS0wLjZjLTAuOSwwLTEuOCwwLjEtMi43LDAuNWwxMC41LDYKCQljLTAuMS0wLjYtMC4zLTEuMi0wLjUtMS43QzI0LjYsMTIsMjQsMTEuMiwyMy4zLDEwLjV6Ii8+Cgk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTQuMSw5LjFMMTQuMSw5LjFsMy45LDYuN2g3LjdjMC0wLjEsMC0wLjIsMC0wLjNMMTQuMyw4LjlDMTQuMiw5LDE0LjEsOSwxNC4xLDkuMXoiLz4KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Ik0yNS42LDE2LjRMMjUuNiwxNi40aC03LjdsMCwwTDE0LDIzbDAsMGMwLjEsMCwwLjEsMC4xLDAuMiwwLjFsMTEuMy02LjZDMjUuNiwxNi41LDI1LjYsMTYuNCwyNS42LDE2LjR6IgoJCS8+Cgk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMjAuOCwyMy4zYzAuOS0wLjQsMS44LTEsMi41LTEuN3MxLjMtMS42LDEuNy0yLjVjMC4yLTAuNiwwLjQtMS4xLDAuNS0xLjdsLTEwLjUsNgoJCWMwLjksMC4zLDEuOCwwLjUsMi43LDAuNUMxOC44LDI0LDE5LjgsMjMuNywyMC44LDIzLjN6Ii8+Cgk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTcuMywxNi4xTDE3LjMsMTYuMUwxNy4zLDE2LjFsLTMuOS02LjdsMCwwYzAsMC0wLjIsMC4xLTAuMiwwLjF2MTMuMWMwLjEsMC4xLDAuMSwwLjEsMC4yLDAuMWwwLDAKCQlMMTcuMywxNi4xeiIvPgoJPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTE3LjksMTYuNEwxNy45LDE2LjRMMTcuOSwxNi40eiIvPgoJPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0iTTE3LjcsNy42YzQuNCwwLDgsMy4zLDguNCw3LjVjMCwwLjEsMCwwLjIsMCwwLjRsMCwwbDMuOS02LjhMMjYsMS42aC04LjJMMTQsOC40YzAuMS0wLjEsMC4yLTAuMSwwLjQtMC4yCgkJQzE1LjQsNy44LDE2LjUsNy42LDE3LjcsNy42eiIvPgoJPHJlY3QgeD0iMTQuMSIgeT0iMjMuNyIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjAiIGhlaWdodD0iMC4zIi8+Cgk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMjYuMiwxNi43TDI2LjIsMTYuN2MwLDAuMSwwLDAuMiwwLDAuNGMtMC41LDQuMi00LjEsNy41LTguNCw3LjVjLTEuMiwwLTIuMy0wLjItMy40LTAuNwoJCWMtMC4xLTAuMS0wLjItMC4xLTAuNC0wLjFsMy45LDYuOGg4LjJsNC4xLTcuMUwyNi4yLDE2Ljd6Ii8+Cgk8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTMsOUg1LjJsLTQuMSw3LjFsNC4xLDcuMUgxM2wwLDBjLTAuMS0wLjEtMC4yLTAuMS0wLjMtMC4yYy0yLjEtMS41LTMuNC00LTMuNC02LjhzMS4zLTUuMywzLjQtNi44CgkJQzEyLjgsOS4yLDEyLjksOS4xLDEzLDl6Ii8+CjwvZz4KPC9zdmc+Cg==");
  border-color: #4b68fa;
  color: #fff;
}
.staging-modal-backdrop-z-index {
  z-index: 49 !important;
}
.staging-modal-z-index {
  z-index: 50 !important;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaW0vY3NzL3N0YWdpbmcuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9ib3JkZXIuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi92ZW5kb3Iuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9zaXplLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvcG9zaXRpb25zLnN0eWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7QUFZSTtFQUNFLE9BQU8sUUFBUDtFQUNBLFdBQVcsS0FBWDtFQUNBLFNBQVMsU0FBVDtFQUNBLE9BQU8sTUFBUDs7QUFFRjtFQUNFLE9BQU8sS0FBUDtFQUNBLFFBQVEsT0FBUjtFQUNBLFNBQVMsU0FBVDtFQUNBLE9BQU8sS0FBUDs7QUFFQTtFQUNFLGFBQWEsT0FBYjs7QUFFRjtFQUNFLE9BQU8sUUFBUDs7QUFFRjtFQUNFLGtCQUFrQixRQUFsQjs7QUFFSjtFQUNFLFFBQVEsRUFBUjs7QUFFRjtFQUNFLFFBQVEsS0FBUjs7QUFFSjtFQUNFLGNBQWMsS0FBZDtFQUNBLGVBQWUsS0FBZjs7QUFFQTtFQUNFLFdBQVcsS0FBWDtFQUNBLFlBQVksS0FBWjs7QUFFRjtFQUNFLFFBQVEsTUFBUjtFQUNBLFlBQVksS0FBWjs7QUFFRjtFQzFDQSxRQUFRLEVBQVI7RUQ0Q0UsYUFBYSxLQUFiOztBQUVGO0VBQ0UsYUFBYSxLQUFiOztBQUVBO0VBQ0UsUUFBUSxLQUFSO0VBQ0EsUUFBUSxNQUFSOztBQUVGO0VFckJZLFlBQUcscURBQUg7RUFBQSxZQUFHLGtEQUFIO0VBQUEsWUFBRyxnREFBSDtFQUFBLFlBQUcsaURBQUg7RUFSSCxZQUFHLDhDQUFIO0VGK0JQLGVBQWUsSUFBZjs7QUFFQTtFQUNFLFFBQVEsRUFBUjtFQUNBLGdCQUFnQixJQUFoQjs7QUFFRjtFQUNFLE9BQU8sUUFBUDs7QUFFQTtFQUNFLE9BQU8sS0FBUDs7QUFFRjtFQUNFLE9BQU8sS0FB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SDtFQUFBLGlCQUFHLGdCQUFIO0VBQUEsZUFBRyxnQkFBSDtFQUFBLGdCQUFHLGdCQUFIO0VBUkgsWUFBRyxnQkFBSDs7QUZ1TVg7QUFDSjtFQUNNLGtCQUFrQixRQUFsQjtFRThRRixrQkFBaUIsaytFQUFqQjtFRjVRRSxjQUFjLFFBQWQ7RUFDQSxPQUFPLEtBQVA7O0FBRU47RUFDRSxTQUFTLGNBQVQ7O0FBRUY7RUFDRSxTQUFTLGNBQVQiLCJmaWxlIjoiYXBpbS9jc3Mvc3RhZ2luZy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIHtDT1BZUklHSFQtVE9QfSAqKipcbiogTGljZW5zZWQgTWF0ZXJpYWxzIC0gUHJvcGVydHkgb2YgSUJNXG4qIDU3MjUtWjIyLCA1NzI1LVo2MywgNTcyNS1VMzMsIDU3MjUtWjYzXG4qXG4qIChDKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMTdcbipcbiogQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiogVVMgR292ZXJubWVudCBVc2VycyBSZXN0cmljdGVkIFJpZ2h0cyAtIFVzZSwgZHVwbGljYXRpb24gb3IgZGlzY2xvc3VyZVxuKiByZXN0cmljdGVkIGJ5IEdTQSBBRFAgU2NoZWR1bGUgQ29udHJhY3Qgd2l0aCBJQk0gQ29ycC5cbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioge0NPUFlSSUdIVC1FTkR9ICoqL1xuLmFwaW1cbiAgLm1haW4tbmF2LWJ1dHRvbi1jb250YWluZXIgLnN0YWdpbmctZHJvcGRvd24gLmRyb3Bkb3duLW1lbnVcbiAgICAuZHJvcGRvd24taGVhZGVyXG4gICAgICBjb2xvcjogZ3JleVxuICAgICAgZm9udC1zaXplOiAxNHB4XG4gICAgICBwYWRkaW5nOiA1cHggMjBweFxuICAgICAgd2lkdGg6IDMwMHB4XG5cbiAgICAuZHJvcGRvd24taXRlbVxuICAgICAgY29sb3I6IGJsYWNrXG4gICAgICBtYXJnaW46IDE1cHggMFxuICAgICAgcGFkZGluZzogNXB4IDMwcHhcbiAgICAgIHdpZHRoOiAxMDAlXG5cbiAgICAgIGRpdlxuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwXG5cbiAgICAgIC5zdGFnaW5nLW5hdi1rZXlcbiAgICAgICAgY29sb3I6IGdyZXlcbiAgICBsaVxuICAgICAgOmhvdmVyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjJcblxuICAgIGhyXG4gICAgICBtYXJnaW46IDBcblxuICAgIC5zZWxlY3Qtb3RoZXItdGFyZ2V0XG4gICAgICBoZWlnaHQ6IDUwcHhcblxuICAuc3RhZ2luZy1tb2RhbFxuICAgIHBhZGRpbmctbGVmdDogMzBweFxuICAgIHBhZGRpbmctcmlnaHQ6IDMwcHhcblxuICAgIC50aXRsZS1zdWJoZWFkZXJcbiAgICAgIGZvbnQtc2l6ZTogMTJweFxuICAgICAgbWFyZ2luLXRvcDogMTBweFxuXG4gICAgLnNjcm9sbGFibGUtbGlzdFxuICAgICAgaGVpZ2h0OiAzNTBweFxuICAgICAgb3ZlcmZsb3cteTogYXV0b1xuXG4gICAgLm1vZGFsLWhlYWRlclxuICAgICAgYm9yZGVyOiAwXG4gICAgICBwYWRkaW5nLXRvcDogMjVweFxuXG4gICAgLm1vZGFsLWJvZHlcbiAgICAgIHBhZGRpbmctdG9wOiAxMHB4XG5cbiAgICAgIGJ1dHRvblxuICAgICAgICBoZWlnaHQ6IDUwcHhcbiAgICAgICAgbWFyZ2luOiA1cHggMFxuXG4gICAgICAudGFyZ2V0QnV0dG9uUm93XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgd2hpdGUgNTAlLCAjRDdERkY2IDUwJSlcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4XG5cbiAgICAgICAgYnV0dG9uXG4gICAgICAgICAgbWFyZ2luOiAwXG4gICAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcFxuXG4gICAgICAgIGJ1dHRvbjpob3ZlclxuICAgICAgICAgIGNvbG9yOiAjNjM2ZDZiXG5cbiAgICAgICAgICAub3JnTGluZVxuICAgICAgICAgICAgY29sb3I6IHdoaXRlXG5cbiAgICAgICAgICAuY2F0YWxvZ1NwYWNlTGluZVxuICAgICAgICAgICAgY29sb3I6IHdoaXRlXG5cbiAgICAgIC50YXJnZXRCdXR0b25cbiAgICAgICAgbWluLXdpZHRoOiAyMDBweFxuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNDRweClcblxuICAgICAgICAuY2F0YWxvZ1NwYWNlTGluZVxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB4XG5cbiAgICAgICAgLm9yZ0xpbmVcbiAgICAgICAgICBjb2xvcjogZ3JleVxuICAgICAgICAgIGZvbnQtc2l6ZTogMTJweFxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxNHB4XG4gICAgICAgICAgcGFkZGluZy10b3A6IDVweFxuXG4gICAgICAuZGVsZXRlQnV0dG9uXG4gICAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50XG4gICAgICAgIGJvcmRlcjogMFxuICAgICAgICBtaW4td2lkdGg6IDQwcHhcblxuICAgICAgICA6aG92ZXJcbiAgICAgICAgICBjb2xvcjogIzYzNmQ2YlxuXG4gICAgICAucGxhbkJ1dHRvbnNcbiAgICAgICAgbWFyZ2luLXRvcDogMTVweFxuXG4gICAgICAgIGJ1dHRvblxuICAgICAgICAgIGhlaWdodDogODBweFxuICAgICAgICAgIHBhZGRpbmc6IDEwcHggNDBweFxuICAgICAgICAgIHRleHQtYWxpZ246IGxlZnRcblxuICAgICAgICAgICY6aG92ZXIgLnBsYW5EZXNjXG4gICAgICAgICAgICBjb2xvcjogd2hpdGVcblxuICAgICAgICAuc2VsZWN0ZWRcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGI2OGZhXG4gICAgICAgICAgY29sb3I6IHdoaXRlXG5cbiAgICAgICAgLnBsYW5JbmZvXG4gICAgICAgICAgZm9udC1zaXplOiAxNnB4XG5cbiAgICAgICAgLnBsYW5EZXNjXG4gICAgICAgICAgZm9udC1zaXplOiAxMnB4XG4gICAgICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbFxuICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxOHB4XG5cbiAgICAgICAgOm5vdCguc2VsZWN0ZWQpIC5wbGFuRGVzY1xuICAgICAgICAgIGNvbG9yOiBibGFja1xuXG4gICAgLm1vZGFsLWZvb3RlclxuICAgICAgYm9yZGVyOiAwXG4gICAgICBwYWRkaW5nLWJvdHRvbTogMjVweCAhaW1wb3J0YW50IC8vIEBzdHlsaW50IGlnbm9yZSBpbXBvcnRhbnRcblxuICAgIC5ibHVlbWl4LWxvZ29cbiAgICAgIHNpemU6IDUwcHhcblxuICAgIG1kLWlucHV0LWNvbnRhaW5lclxuICAgICAgbWFyZ2luLWxlZnQ6IDBcbiAgICAgIHBhZGRpbmc6IDJweFxuXG4gICAgLnNtYWxsVGV4dExpbmtcbiAgICAgIGZvbnQtc2l6ZTogMTBweFxuICAgICAgbWFyZ2luLXRvcDogMTBweFxuXG4gICAgLnN0YWdpbmdMaXN0U2VsZWN0b3JcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMGUwZTBcbiAgICAgIGhlaWdodDogNDAwcHhcbiAgICAgIG1hcmdpbi10b3A6IDEwcHhcblxuICAgICAgLnJlc2V0QnV0dG9uXG4gICAgICAgIGhlaWdodDogMTZweFxuXG4gICAgICAuc2VsZWN0ZWRcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMFxuXG4gICAgLmxpc3REaXNhYmxlZFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMTUpXG4gICAgICBwb3NpdGlvbjogZml4ZWRcbiAgICAgIHNpemU6IGNhbGMoMTAwJSAtIDExMXB4KSA0MDBweFxuICAgICAgei1pbmRleDogMTdcblxuICAgICAgLnNwaW5uZXI6YWZ0ZXJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIxNywgMjE3LCAyMTcpXG5cbiAgICAuc3RhZ2luZ0xpc3RTZWxlY3Rvckl0ZW1cbiAgICAgIGZsZXg6IDFcbiAgICAgIGhlaWdodDogNTBweFxuICAgICAgbGluZS1oZWlnaHQ6IDUwcHhcbiAgICAgIHBhZGRpbmctbGVmdDogMzBweFxuICAgICAgcGFkZGluZy1yaWdodDogMTBweFxuXG4gICAgICAucmVxdWlyZXNBcHByb3ZhbFxuICAgICAgICBjb2xvcjogIzc4ODI5OVxuICAgICAgICBmb250LXNpemU6IDE0cHhcbiAgICAgICAgcGFkZGluZy1yaWdodDogMzBweFxuXG4gICAgICAuc3BhY2VQYXJlbnRPcmdOYW1lXG4gICAgICAgIGNvbG9yOiBncmV5XG4gICAgICAgIGZvbnQtc2l6ZTogMTBweFxuXG4gICAgICAmOmhvdmVyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjJcblxuICAgIC5hZGRBcHBCYXJcbiAgICAgIGhlaWdodDogNTBweFxuXG4gICAgICAuYWRkQXBwQnV0dG9uXG4gICAgICAgIGFic29sdXRlOiB0b3AgNXB4IHJpZ2h0IDEwcHhcbiAgICAgICAgaGVpZ2h0OiAyOHB4XG5cbiAgICAuYWRkQXBwSW5wdXRcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwXG4gICAgICBib3JkZXItbGVmdDogMFxuICAgICAgYm9yZGVyLXJpZ2h0OiAwXG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2UwZTBlMFxuICAgICAgcGFkZGluZzogMTRweCAyMHB4XG5cbiAgICAudGFyZ2V0U2lnbkluXG4gICAgICBtYXJnaW4tYm90dG9tOiAyNXB4XG4gICAgICBtYXJnaW4tdG9wOiA0MHB4XG5cbiAgICAuYmx1ZW1peExvZ2luIGJ1dHRvblxuICAgICAgYmFja2dyb3VuZDogZW1iZWR1cmwoJy4uL2ltYWdlcy9ibHVlbWl4X2xvZ28uc3ZnJywgJ3V0Zi04Jykgbm8tcmVwZWF0IDU1cHggY2VudGVyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZVxuICAgICAgYmFja2dyb3VuZC1zaXplOiAyOHB4XG4gICAgICBib3JkZXItY29sb3I6ICM0YjY4ZmFcbiAgICAgIGNvbG9yOiAjNGI2OGZhXG4gICAgICBjdXJzb3I6IHBvaW50ZXJcbiAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgVmVyZGFuYSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmXG4gICAgICBmb250LXNpemU6IDE2cHhcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkXG4gICAgICBwYWRkaW5nOiAxNXB4IDE1cHggMTVweCA0NXB4XG4gICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIC4ycywgY29sb3IgLjJzXG4gICAgICB3aWR0aDogMTAwJVxuXG4gICAgICAmOmRpc2FibGVkXG4gICAgICAgIGJhY2tncm91bmQ6ICNjY2NcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjY2NjXG4gICAgICAgIGNvbG9yOiAjOTk5XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWRcblxuICAgIC5hcHBOYW1lXG4gICAgICBjb2xvcjogZ3JleVxuICAgICAgZm9udC1zdHlsZTogaXRhbGljXG4gICAgICBtYXJnaW4tbGVmdDogMTVweFxuXG4gIC5jbGVhckxvYWRpbmdPdmVybGF5XG4gICAgcG9zaXRpb246IGZpeGVkXG4gICAgd2lkdGg6IGNhbGMoMTAwJSAtIDExMXB4KVxuICAgIHotaW5kZXg6IDE3XG5cbiAgLnN0YWdpbmctbW9kYWwgLmFuaW1hdGUtc2hvdy5uZy1oaWRlLWFkZCwgLmFuaW1hdGUtc2hvdy5uZy1oaWRlLXJlbW92ZVxuICAgIHRyYW5zaXRpb246IGFsbCBsaW5lYXIgLjVzXG5cbiAgLnN0YWdpbmctbW9kYWwgLmJsdWVtaXhMb2dpbiBidXR0b25cbiAgICAmOmhvdmVyOm5vdCg6ZGlzYWJsZWQpLFxuICAgICY6Zm9jdXNcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICM0YjY4ZmFcbiAgICAgIGJhY2tncm91bmQtaW1hZ2U6IGVtYmVkdXJsKCcuLi9pbWFnZXMvYmx1ZW1peF9sb2dvX3doaXRlLnN2ZycsICd1dGYtOCcpXG4gICAgICBib3JkZXItY29sb3I6ICM0YjY4ZmFcbiAgICAgIGNvbG9yOiB3aGl0ZVxuXG4uc3RhZ2luZy1tb2RhbC1iYWNrZHJvcC16LWluZGV4XG4gIHotaW5kZXg6IDQ5ICFpbXBvcnRhbnQgLy8gQHN0eWxpbnQgaWdub3JlIGltcG9ydGFudFxuXG4uc3RhZ2luZy1tb2RhbC16LWluZGV4XG4gIHotaW5kZXg6IDUwICFpbXBvcnRhbnQgLy8gQHN0eWxpbnQgaWdub3JlIGltcG9ydGFudFxuIiwiLypcbiAqIGJvcmRlcjogPGNvbG9yPlxuICogYm9yZGVyOiAuLi5cbiAqL1xuXG5ib3JkZXIoY29sb3IsIGFyZ3MuLi4pXG4gIGlmIGNvbG9yIGlzIGEgJ2NvbG9yJ1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIGNvbG9yIGFyZ3NcbiAgZWxzZVxuICAgIGJvcmRlcjogYXJndW1lbnRzXG4iLCJ1c2UoJy4uL25vZGVzL3ZlbmRvci1oZWxwZXJzLmpzJylcbkBpbXBvcnQgJ2NvbmZpZydcblxuLypcbiAqIEFsaWFzIFwibm93cmFwXCIgYXMgXCJuby13cmFwXCIuXG4gKi9cblxubm8td3JhcCA9IHVucXVvdGUoJ25vd3JhcCcpXG5cbi8qXG4gKiBIZWxwZXIgdG8gZmluZCBvdXQgaWYgYSBnaXZlbiB2YWx1ZSBpcyBhIHdpZHRoXG4gKi9cblxuaXMtd2lkdGgodmFsKVxuICBpZiBhdXRvID09IHZhbFxuICAgIHJldHVybiB0cnVlXG4gIGVsc2UgaWYgdmFsICYmICd1bml0JyA9PSB0eXBlKHZhbClcbiAgICAvLyBTdHlsdXMgZG9lcyBub3Qgc2hvcnQgY2lyY3VpdCBzbyB3ZSBuZWVkIHRvIHBlcmZvcm0gdGhpcyBhcyBhIGRpc3RpbmN0XG4gICAgLy8gb3BlcmF0aW9uIHRvIHByZXZlbnQgZXJyb3JzXG4gICAgcmV0dXJuICcnICE9IHVuaXQodmFsKVxuICByZXR1cm4gZmFsc2VcblxuLypcbiAqIFZlbmRvciBzdXBwb3J0IGZvciB0aGUgZ2l2ZW4gcHJvcCAvIGFyZ3VtZW50cywgb3B0aW9uYWxseSBzcGVjaWZ5aW5nIHRoZVxuICogb25seSBwcmVmaXhlcyB0byB1dGlsaXplLCBvciB0aG9zZSB3aGljaCBzaG91bGQgYmUgaWdub3JlZC5cbiAqL1xuXG52ZW5kb3IocHJvcCwgYXJncywgb25seSA9IG51bGwsIGlnbm9yZSA9IG51bGwsIHZlbmRvci1wcm9wZXJ0eSA9IHRydWUpXG4gIG5lZWRfbm9ybWFsaXplID0gIXZlbmRvci1wcm9wZXJ0eSBvciBwcm9wIGluICgndHJhbnNpdGlvbicgJ3RyYW5zaXRpb24tcHJvcGVydHknICdib3JkZXItaW1hZ2UnICdib3JkZXItaW1hZ2Utc2xpY2UnKVxuICBmb3IgcHJlZml4IGluIHZlbmRvci1wcmVmaXhlc1xuICAgIHVubGVzcyAob25seSBhbmQgIShwcmVmaXggaW4gb25seSkpIG9yIChpZ25vcmUgYW5kIHByZWZpeCBpbiBpZ25vcmUpXG4gICAgICBpZiBvZmZpY2lhbCA9PSBwcmVmaXhcbiAgICAgICAgaWYgbmVlZF9ub3JtYWxpemVcbiAgICAgICAgICB7cHJvcH06IG5vcm1hbGl6ZShwcm9wLCgnJXMnICUgYXJncykpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7cHJvcH06IGFyZ3NcbiAgICAgIGVsc2VcbiAgICAgICAgbmV3cHJvcCA9IHByb3BcbiAgICAgICAgbmV3cHJvcCA9ICctJyArIHByZWZpeCArICctJyArIHByb3AgaWYgdmVuZG9yLXByb3BlcnR5XG5cbiAgICAgICAgaWYgbmVlZF9ub3JtYWxpemVcbiAgICAgICAgICB7bmV3cHJvcH06IG5vcm1hbGl6ZShwcm9wLCgnJXMnICUgYXJncykscHJlZml4KVxuICAgICAgICBlbHNlXG4gICAgICAgICAge25ld3Byb3B9OiBhcmdzXG4vKlxuICogVmVuZG9yaXplIHRoZSBnaXZlbiB2YWx1ZS5cbiAqL1xuXG52ZW5kb3ItdmFsdWUoYXJnLCBvbmx5ID0gbnVsbCwgaWdub3JlID0gbnVsbClcbiAgcHJvcCA9IGN1cnJlbnQtcHJvcGVydHlbMF1cbiAgZm9yIHByZWZpeCBpbiB2ZW5kb3ItcHJlZml4ZXNcbiAgICB1bmxlc3MgKG9ubHkgYW5kICEocHJlZml4IGluIG9ubHkpKSBvciAoaWdub3JlIGFuZCBwcmVmaXggaW4gaWdub3JlKSBvciBvZmZpY2lhbCA9PSBwcmVmaXhcbiAgICAgIGFkZC1wcm9wZXJ0eShwcm9wLCAnLSVzLSVzJyAlIChwcmVmaXggYXJnKSlcbiAgYXJnXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtc2hhZG93XCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtc2hhZG93KClcbiAgdmVuZG9yKCdib3gtc2hhZG93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ1c2VyLXNlbGVjdFwiIHN1cHBvcnQuXG4gKi9cblxudXNlci1zZWxlY3QoKVxuICB2ZW5kb3IoJ3VzZXItc2VsZWN0JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLWNvdW50XCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tY291bnQoKVxuICB2ZW5kb3IoJ2NvbHVtbi1jb3VudCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1nYXBcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1nYXAoKVxuICB2ZW5kb3IoJ2NvbHVtbi1nYXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZVwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGUtY29sb3JcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlLWNvbG9yKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS1jb2xvcicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1ydWxlLXdpZHRoXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tcnVsZS13aWR0aCgpXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtd2lkdGgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZS1zdHlsZVwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUtc3R5bGUoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlLXN0eWxlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXdpZHRoXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4td2lkdGgoKVxuICB2ZW5kb3IoJ2NvbHVtbi13aWR0aCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1zcGFuXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tc3BhbigpXG4gIHZlbmRvcignY29sdW1uLXNwYW4nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1maWxsXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tZmlsbCgpXG4gIHZlbmRvcignY29sdW1uLWZpbGwnLCBhcmd1bWVudHMsIG9ubHk6IG1veilcblxuLypcbiAqIExlZ2FjeSBzeW50YXggc3VwcG9ydCBmb3IgYmFja2dyb3VuZC1jbGlwIGFuZCBiYWNrZ3JvdW5kLW9yaWdpblxuICovXG5cbmxlZ2FjeS1iZy12YWx1ZXMocHJvcGVydHksIGFyZ3MpXG4gIGxlZ2FjeV9hcmdzID0gKClcbiAgaW1wb3J0YW5jZSA9IHVucXVvdGUoJycpXG4gIGZvciBzdWJhcmdzIGluIGFyZ3NcbiAgICBmb3IgYXJnIGluIHN1YmFyZ3NcbiAgICAgIGlmIGFyZyBpbiAoYm9yZGVyLWJveCBwYWRkaW5nLWJveCBjb250ZW50LWJveClcbiAgICAgICAgYXJnID0gdW5xdW90ZSgnYm9yZGVyJykgIGlmIGFyZyA9PSBib3JkZXItYm94XG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ3BhZGRpbmcnKSBpZiBhcmcgPT0gcGFkZGluZy1ib3hcbiAgICAgICAgYXJnID0gdW5xdW90ZSgnY29udGVudCcpIGlmIGFyZyA9PSBjb250ZW50LWJveFxuICAgICAgaWYgYXJnICE9ICchaW1wb3J0YW50J1xuICAgICAgICBwdXNoKGxlZ2FjeV9hcmdzLGFyZylcbiAgICAgIGVsc2VcbiAgICAgICAgaW1wb3J0YW5jZSA9ICFpbXBvcnRhbnRcbiAgdmVuZG9yKHByb3BlcnR5LCB1bnF1b3RlKGpvaW4oJywgJyxsZWdhY3lfYXJncykpIGltcG9ydGFuY2UsIG9ubHk6IG1veiB3ZWJraXQpXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZ3JvdW5kLWNsaXBcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtY2xpcCgpXG4gIGlmIGFyZ3VtZW50c1swXSA9PSB0ZXh0XG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWNsaXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdClcbiAgZWxzZVxuICAgIGxlZ2FjeS1iZy12YWx1ZXMoJ2JhY2tncm91bmQtY2xpcCcsIGFyZ3VtZW50cylcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IGFyZ3VtZW50c1xuXG4vKlxuICogVmVuZG9yIFwiYmFja2dyb3VuZC1vcmlnaW5cIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtb3JpZ2luKClcbiAgbGVnYWN5LWJnLXZhbHVlcygnYmFja2dyb3VuZC1vcmlnaW4nLCBhcmd1bWVudHMpXG4gIGJhY2tncm91bmQtb3JpZ2luOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJhY2tncm91bmQtc2l6ZVwiIHN1cHBvcnQuXG4gKi9cblxuYmFja2dyb3VuZC1zaXplKClcbiAgdmVuZG9yKCdiYWNrZ3JvdW5kLXNpemUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2Zvcm1cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zZm9ybSgpXG4gIHZlbmRvcigndHJhbnNmb3JtJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNmb3JtLW9yaWdpblwiIHN1cHBvcnQuXG4gKi9cbnRyYW5zZm9ybS1vcmlnaW4oKVxuICAgIHZlbmRvcigndHJhbnNmb3JtLW9yaWdpbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zZm9ybS1zdHlsZVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNmb3JtLXN0eWxlKClcbiAgdmVuZG9yKCd0cmFuc2Zvcm0tc3R5bGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3JkZXItaW1hZ2VcIiBzdXBwb3J0LlxuICovXG5cbmJvcmRlci1pbWFnZSgpXG4gIHZlbmRvcignYm9yZGVyLWltYWdlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG8gb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi1wcm9wZXJ0eVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi1wcm9wZXJ0eSgpXG4gIHZlbmRvcigndHJhbnNpdGlvbi1wcm9wZXJ0eScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tZHVyYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tZHVyYXRpb24oKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tZHVyYXRpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvblwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi1kZWxheVwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbi1kZWxheSgpXG4gIHZlbmRvcigndHJhbnNpdGlvbi1kZWxheScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImJhY2tmYWNlLXZpc2liaWxpdHlcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tmYWNlLXZpc2liaWxpdHkoKVxuICB2ZW5kb3IoJ2JhY2tmYWNlLXZpc2liaWxpdHknLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJwZXJzcGVjdGl2ZVwiIHN1cHBvcnQuXG4gKi9cblxucGVyc3BlY3RpdmUoKVxuICBpZiBtaXhpblxuICAgIHZlbmRvcigncGVyc3BlY3RpdmUnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG4gIGVsc2VcbiAgICAncGVyc3BlY3RpdmUoJXMpJyAlIGFyZ3VtZW50c1xuXG4vKlxuICogVmVuZG9yIFwicGVyc3BlY3RpdmUtb3JpZ2luXCIgc3VwcG9ydC5cbiAqL1xuXG5wZXJzcGVjdGl2ZS1vcmlnaW4oKVxuICB2ZW5kb3IoJ3BlcnNwZWN0aXZlLW9yaWdpbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIE9wYWNpdHkgd2l0aCBjb25kaXRpb25hbCBJRSBzdXBwb3J0LlxuICovXG5cbm9wYWNpdHkobiwgYXJncy4uLilcbiAgb3BhY2l0eTogbiBhcmdzXG4gIGlmIHN1cHBvcnQtZm9yLWllXG4gICAgaWYgbiA9PSBpbmhlcml0IG9yIG4gPT0gaW5pdGlhbFxuICAgICAgLW1zLWZpbHRlcjogbiBhcmdzXG4gICAgICBmaWx0ZXI6IG4gYXJnc1xuICAgIGVsc2VcbiAgICAgIHZhbCA9IHJvdW5kKG4gKiAxMDApXG4gICAgICBpZiB2YWwgPT0gMTAwXG4gICAgICAgIC1tcy1maWx0ZXI6IG5vbmUgYXJnc1xuICAgICAgICBmaWx0ZXI6IG5vbmUgYXJnc1xuICAgICAgZWxzZVxuICAgICAgICAtbXMtZmlsdGVyOiAnXCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT0lcylcIicgJSB2YWwgYXJnc1xuICAgICAgICBmaWx0ZXI6ICdhbHBoYShvcGFjaXR5PSVzKScgJSB2YWwgYXJnc1xuXG4vKlxuICogVmVuZG9yIFwidGV4dC1zaXplLWFkanVzdFwiXG4gKi9cblxudGV4dC1zaXplLWFkanVzdCgpXG4gIHZlbmRvcigndGV4dC1zaXplLWFkanVzdCcsIGFyZ3VtZW50cylcblxuLypcbiAqIEFsaWFzIHRoZSBcIndoaXRlLXNwYWNlXCIgcHJvcGVydHkuXG4gKi9cblxud2hpdGVzcGFjZSgpXG4gIHdoaXRlLXNwYWNlOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJveC1zaXppbmdcIiBzdXBwb3J0LlxuICovXG5cbmJveC1zaXppbmcoKVxuICB2ZW5kb3IoJ2JveC1zaXppbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtb3JpZW50XCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtb3JpZW50KClcbiAgdmVuZG9yKCdib3gtb3JpZW50JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LWZsZXgtZ3JvdXBcIiBzdXBwb3J0LlxuICovXG5cbmJveC1mbGV4LWdyb3VwKClcbiAgdmVuZG9yKCdib3gtZmxleC1ncm91cCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1vcmRpbmFsLWdyb3VwXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtb3JkaW5hbC1ncm91cCgpXG4gIHZlbmRvcignYm94LW9yZGluYWwtZ3JvdXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cblxuLypcbiAqIFZlbmRvciBcImJveC1hbGlnblwiIHN1cHBvcnQuXG4gKi9cblxuYm94LWFsaWduKClcbiAgdmVuZG9yKCdib3gtYWxpZ24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtcGFja1wiIHN1cHBvcnQuXG4gKi9cblxuYm94LXBhY2soKVxuICB2ZW5kb3IoJ2JveC1wYWNrJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LWRpcmVjdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYm94LWRpcmVjdGlvbigpXG4gIHZlbmRvcignYm94LWRpcmVjdGlvbicsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uKClcbiAgdmVuZG9yKCdhbmltYXRpb24nLCBhcmd1bWVudHMpXG5cblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1uYW1lXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tbmFtZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLW5hbWUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZHVyYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1kdXJhdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uLWR1cmF0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWRlbGF5XCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZGVsYXkoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kZWxheScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1kaXJlY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi1kaXJlY3Rpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kaXJlY3Rpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24taXRlcmF0aW9uLWNvdW50XCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24taXRlcmF0aW9uLWNvdW50KClcbiAgdmVuZG9yKCdhbmltYXRpb24taXRlcmF0aW9uLWNvdW50JywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvblwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1wbGF5LXN0YXRlXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tcGxheS1zdGF0ZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLXBsYXktc3RhdGUnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZmlsbC1tb2RlXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZmlsbC1tb2RlKClcbiAgdmVuZG9yKCdhbmltYXRpb24tZmlsbC1tb2RlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiaHlwaGVuc1wiIHN1cHBvcnQuXG4gKi9cblxuaHlwaGVucygpXG4gIHZlbmRvcignaHlwaGVucycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImFwcGVhcmFuY2VcIiBzdXBwb3J0LlxuICovXG5cbmFwcGVhcmFuY2UoKVxuICB2ZW5kb3IoJ2FwcGVhcmFuY2UnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0YWItc2l6ZVwiIHN1cHBvcnQuXG4gKi9cblxudGFiLXNpemUoKVxuICB2ZW5kb3IoJ3RhYi1zaXplJywgYXJndW1lbnRzLCBvbmx5OiBtb3ogbyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcIm92ZXJmbG93LXNjcm9sbGluZ1wiIHN1cHBvcnQuXG4gKi9cblxub3ZlcmZsb3ctc2Nyb2xsaW5nKClcbiAgdmVuZG9yKCdvdmVyZmxvdy1zY3JvbGxpbmcnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcInRleHQtb3ZlcmZsb3dcIiBzdXBwb3J0LCAsIC1vLSBmb3Igb3BlcmEgOS4qIC0gMTAuKlxuICovXG5cbnRleHQtb3ZlcmZsb3coKVxuICB2ZW5kb3IoJ3RleHQtb3ZlcmZsb3cnLCBhcmd1bWVudHMsIG9ubHk6IG9mZmljaWFsIG8pXG5cbi8qXG4gKiBWZW5kb3IgXCJ0ZXh0LXNpemUtYWRqdXN0XCIgc3VwcG9ydC5cbiAqL1xudGV4dC1zaXplLWFkanVzdCgpXG4gIHZlbmRvcigndGV4dC1zaXplLWFkanVzdCcsIGFyZ3VtZW50cywgb25seTogb2ZmaWNpYWwgd2Via2l0IG1zKVxuXG4vKlxuICogVmVuZG9yIFwiZm9udC1zbW9vdGhpbmdcIiBzdXBwb3J0LCB3ZWJraXQgb25seS5cbiAqL1xuZm9udC1zbW9vdGhpbmcoKVxuICB2ZW5kb3IoJ2ZvbnQtc21vb3RoaW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQpXG5cblxuLyoqXG4gKiBWZW5kb3IgaW5wdXQtcGxhY2Vob2xkZXIvcGxhY2Vob2xkZXIgc3VwcG9ydC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqICAgIC8vIERlZmF1bHQgc3ludGF4XG4gKiAgICBib2R5XG4gKiAgICAgIHBsYWNlaG9sZGVyKGNvbG9yICMzMzMsIGZvbnQtd2VpZ2h0IG5vcm1hbClcbiAqXG4gKiAgICAvLyBUaGUgY29tbWEgaXMgaW1wb3J0YW50XG4gKiAgICAucGxhY2Vob2xkZXItcmVkXG4gKiAgICAgIHBsYWNlaG9sZGVyKGNvbG9yIHJlZCwpXG4gKlxuICogICAgLy8gV2UgY2FuIHBhc3MgYSBmdW5jdGlvblxuICogICAgZ3JlZW4tcGxhY2Vob2xkZXIoKVxuICogICAgICBjb2xvciBncmVlblxuICogICAgLnBsYWNlaG9sZGVyLWdyZWVuXG4gKiAgICAgIHBsYWNlaG9sZGVyKGdyZWVuLXBsYWNlaG9sZGVyKVxuICpcbiAqICAgIC8vIFdlIGNhbiBwYXNzIGEgaGFzaFxuICogICAgdGV4dGFyZWFcbiAqICAgICAgcGxhY2Vob2xkZXIoKGZvbnQtc3R5bGUgaXRhbGljKSAoZm9udC13ZWlnaHQgYm9sZCkgKHBhZGRpbmcgJzRweCAxMHB4JykpXG4gKi9cbnBsYWNlaG9sZGVyKClcbiAgZm9yIHYgaW4gJzotd2Via2l0LWlucHV0JyAnLW1veicgJzotbW96JyAnLW1zLWlucHV0J1xuICAgICY6e3Z9LXBsYWNlaG9sZGVyXG4gICAgICBmb3IgcGFpciBpbiBhcmd1bWVudHNcbiAgICAgICAgaWYgdHlwZW9mKHBhaXIpID09ICdmdW5jdGlvbidcbiAgICAgICAgICBwYWlyKClcbiAgICAgICAgZWxzZSBpZiBwYWlyIGlzIG5vdCBudWxsICYmIHBhaXJbMF0gaXMgbm90IG51bGxcbiAgICAgICAgICB7cGFpclswXX06IHR5cGUocGFpclsxXSkgPT0gJ3N0cmluZycgPyBzKHBhaXJbMV0pIDogcGFpclsxXVxuaW5wdXQtcGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlclxuXG4vKlxuICogVmVuZG9yIGJhY2tncm91bmQgc3VwcG9ydCAoZ3JhZGllbnRzKS5cbiAqL1xuXG5iYWNrZ3JvdW5kKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBiYWNrZ3JvdW5kIGFyZ3VtZW50c1xuXG5iYWNrZ3JvdW5kLWltYWdlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2JhY2tncm91bmQtaW1hZ2UnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBiYWNrZ3JvdW5kLWltYWdlIGFyZ3VtZW50c1xuXG5jdXJzb3IoKVxuICBpZiBtYXRjaCgnLWdyYWRpZW50XFwoJywgJycrYXJndW1lbnRzKVxuICAgIHZlbmRvcignY3Vyc29yJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgY3Vyc29yIGFyZ3VtZW50c1xuXG5saXN0LXN0eWxlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2xpc3Qtc3R5bGUnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBsaXN0LXN0eWxlIGFyZ3VtZW50c1xuXG5saXN0LXN0eWxlLWltYWdlKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2xpc3Qtc3R5bGUtaW1hZ2UnLCBhcmd1bWVudHMsIHZlbmRvci1wcm9wZXJ0eTogZmFsc2UpXG4gIGVsc2VcbiAgICBsaXN0LXN0eWxlLWltYWdlIGFyZ3VtZW50c1xuIiwiLypcbiAqIFNpemUgdXRpbGl0eS5cbiAqXG4gKiBTeW5vcHNpczpcbiAqXG4gKiAgIHNpemU6IDx3aWR0aD4gPGhlaWdodD4gfCA8d2lkdGggJiBoZWlnaHQ+XG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIHNpemU6IDEwMCUgMzBweFxuICogICAgICAgeWllbGRzOlxuICogICAgICAgICB3aWR0aDogMTAwJVxuICogICAgICAgICBoZWlnaHQ6IDMwcHhcbiAqXG4gKiAgICAgc2l6ZTogNXB4XG4gKiAgICAgICB5aWVsZHM6XG4gKiAgICAgICAgIHdpZHRoOiA1cHhcbiAqICAgICAgICAgaGVpZ2h0OiA1cHhcbiAqXG4gKi9cblxuc2l6ZSgpXG4gIGlmIGxlbmd0aChhcmd1bWVudHMpID09IDFcbiAgICB3aWR0aDogYXJndW1lbnRzWzBdXG4gICAgaGVpZ2h0OiBhcmd1bWVudHNbMF1cbiAgZWxzZVxuICAgIHdpZHRoOiBhcmd1bWVudHNbMF1cbiAgICBoZWlnaHQ6IGFyZ3VtZW50c1sxXVxuIiwiLy8gaGVscGVyXG5cbi1wb3ModHlwZSwgYXJncylcbiAgaSA9IDBcbiAgcG9zaXRpb246IHVucXVvdGUodHlwZSlcbiAgZm9yIGogaW4gKDEuLjQpXG4gICAgaWYgbGVuZ3RoKGFyZ3MpID4gaVxuICAgICAge2FyZ3NbaV19OiBhcmdzW2kgKyAxXSBpcyBhICd1bml0JyA/IGFyZ3NbaSArPSAxXSA6IDBcbiAgICBpICs9IDFcblxuLypcbiAqIFBvc2l0aW9uIHV0aWxpdHkuXG4gKlxuICogU3lub3BzaXM6XG4gKlxuICogICBmaXhlZDogPHBvcz4gW25dIDxwb3M+IFtuXVxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICBmaXhlZDogdG9wIGxlZnRcbiAqICAgICBmaXhlZDogdG9wIDVweCBsZWZ0XG4gKiAgICAgZml4ZWQ6IHRvcCBsZWZ0IDVweFxuICogICAgIGZpeGVkOiB0b3AgNXB4IGxlZnQgNXB4XG4gKlxuICovXG5cbmZpeGVkKClcbiAgLXBvcygnZml4ZWQnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBQb3NpdGlvbiB1dGlsaXR5LlxuICpcbiAqIFN5bm9wc2lzOlxuICpcbiAqICAgYWJzb2x1dGU6IDxwb3M+IFtuXSA8cG9zPiBbbl1cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgYWJzb2x1dGU6IHRvcCBsZWZ0XG4gKiAgICAgYWJzb2x1dGU6IHRvcCA1cHggbGVmdFxuICogICAgIGFic29sdXRlOiB0b3AgbGVmdCA1cHhcbiAqICAgICBhYnNvbHV0ZTogdG9wIDVweCBsZWZ0IDVweFxuICpcbiAqL1xuXG5hYnNvbHV0ZSgpXG4gIC1wb3MoJ2Fic29sdXRlJywgYXJndW1lbnRzKVxuXG4vKlxuICogUG9zaXRpb24gdXRpbGl0eS5cbiAqXG4gKiBTeW5vcHNpczpcbiAqXG4gKiAgIHJlbGF0aXZlOiA8cG9zPiBbbl0gPHBvcz4gW25dXG4gKlxuICogRXhhbXBsZXM6XG4gKlxuICogICAgIHJlbGF0aXZlOiB0b3AgbGVmdFxuICogICAgIHJlbGF0aXZlOiB0b3AgNXB4IGxlZnRcbiAqICAgICByZWxhdGl2ZTogdG9wIGxlZnQgNXB4XG4gKiAgICAgcmVsYXRpdmU6IHRvcCA1cHggbGVmdCA1cHhcbiAqXG4gKi9cblxucmVsYXRpdmUoKVxuICAtcG9zKCdyZWxhdGl2ZScsIGFyZ3VtZW50cylcbiJdfQ== */
