/**
 * @package 	WordPress
 * @subpackage 	Agricole
 * @version 	1.0.0
 * 
 * WooCommerce Responsive CSS Rules
 * Created by CMSMasters
 * 
 */
@media only screen {
  /*-------------------------------------------------------------------------*/
  /* Large Max Monitor
/*-------------------------------------------------------------------------*/
  /*-------------------------------------------------------------------------*/
  /* Large Monitor
/*-------------------------------------------------------------------------*/
  /*-------------------------------------------------------------------------*/
  /* Medium Monitor
/*-------------------------------------------------------------------------*/
  /*-------------------------------------------------------------------------*/
  /* Tablet Monitor
/*-------------------------------------------------------------------------*/
  /*-------------------------------------------------------------------------*/
  /* Small Tablet Monitor
/*-------------------------------------------------------------------------*/
  /*-------------------------------------------------------------------------*/
  /*	Tablet Monitor 600
/*-------------------------------------------------------------------------*/
  /*-------------------------------------------------------------------------*/
  /* Phone Monitor
/*-------------------------------------------------------------------------*/
}
@media only screen and (max-width: 1440px) {
  ul.order_details {
    -webkit-flex-wrap: wrap;
    -moz-flex-wrap: wrap;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
  }
  ul.order_details li {
    width: 50%;
  }
  ul.order_details li:nth-child(5) {
    width: 100%;
  }
}
@media only screen and (min-width: 1440px) {
  ul.order_details li {
    padding: 17px 5px 13px;
  }
  ul.order_details li:first-child {
    padding: 17px 5px 13px 30px;
  }
  ul.order_details li:last-child {
    padding: 17px 30px 13px 5px;
  }
  ul.order_details li strong {
    margin: 17px -30px -13px;
    padding: 15px 30px;
  }
  .content .cmsmasters_products.columns-6 .product {
    width: 14.07%;
  }
  .content .cmsmasters_products.columns-6 .product:nth-child(3n+1) {
    clear: none;
  }
  .content .cmsmasters_products.columns-6 .product:nth-child(6n+1) {
    clear: left;
  }
  .content .cmsmasters_products.columns-5 .product {
    width: 17.4%;
  }
  .content .cmsmasters_products.columns-5 .product:nth-child(3n+1) {
    clear: none;
  }
  .content .cmsmasters_products.columns-5 .product:nth-child(5n+1) {
    clear: left;
  }
}
@media only screen and (min-width: 1025px) {
  .cmsmasters_products {
    outline: none;
  }
}
@media only screen and (max-width: 1024px) {
  .cmsmasters_products.columns-6 .product {
    width: 30.73%;
  }
  .cmsmasters_products.columns-6 .product:nth-child(6n+1) {
    clear: none;
  }
  .cmsmasters_products.columns-6 .product:nth-child(3n+1) {
    clear: left;
  }
  .cmsmasters_products.columns-5 .product {
    width: 30.73%;
  }
  .cmsmasters_products.columns-5 .product:nth-child(5n+1) {
    clear: none;
  }
  .cmsmasters_products.columns-5 .product:nth-child(3n+1) {
    clear: left;
  }
  .cmsmasters_products.columns-4 .product {
    width: 47.4%;
  }
  .cmsmasters_products.columns-4 .product:nth-child(4n+1) {
    clear: none;
  }
  .cmsmasters_products.columns-4 .product:nth-child(2n+1) {
    clear: left;
  }
  .enable_header_centered #header .header_bot .header_bot_inner .cmsmasters_header_cart_link {
    float: none;
    display: inline-block;
    margin: 0 15px;
    vertical-align: middle;
  }
  .cmsmasters_dynamic_cart_wrap {
    display: none !important;
  }
  .cmsmasters_header_cart_link {
    display: inline-block;
    vertical-align: middle;
    margin: 0 0 0 15px;
    float: right;
    text-align: center;
  }
  .cmsmasters_header_cart_link:after {
    content: '';
    display: inline-block;
    vertical-align: middle;
    height: 100%;
  }
  .cmsmasters_product .cmsmasters_product_add_wrap {
    visibility: visible;
    width: auto;
    height: auto;
    padding: 10px 0 0;
    position: relative;
    left: auto;
    right: auto;
    top: auto;
    bottom: auto;
    opacity: 1;
  }
  .cmsmasters_product .cmsmasters_product_info_wrap {
    height: auto;
  }
  ul.order_details {
    -webkit-flex-wrap: wrap;
    -moz-flex-wrap: wrap;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
  }
  ul.order_details li {
    width: 50%;
  }
  ul.order_details li:nth-child(5) {
    width: 100%;
  }
  ul.order_details li:nth-child(2n) strong {
    border-right-width: 1px;
    border-right-style: solid;
  }
  ul.order_details li:nth-child(2n+1) strong {
    border-left-width: 1px;
    border-left-style: solid;
  }
  .widget_shopping_cart .buttons .button {
    width: auto;
  }
}
@media only screen and (max-width: 768px) {
  .col2-set > * {
    width: 97.4%;
    margin-bottom: 40px;
    float: none;
    clear: both;
  }
  .col2-set > *:last-child {
    margin-bottom: 0;
  }
  .cmsmasters_header_cart_link {
    float: none;
    margin: 0 4px 20px;
  }
  .cmsmasters_single_product .cmsmasters_product_left_column {
    width: 100%;
    float: none;
    padding: 0 0 40px;
  }
  .cmsmasters_single_product .cmsmasters_product_right_column {
    width: 100%;
    float: none;
    padding: 0;
  }
  .cmsmasters_tabs.cmsmasters_woo_tabs {
    margin: 35px 0 0;
  }
  .cmsmasters_tabs.cmsmasters_woo_tabs .cmsmasters_tabs_list {
    margin: 0;
  }
  .cmsmasters_tabs.cmsmasters_woo_tabs .cmsmasters_tabs_list_item > a {
    padding: 10px 0;
  }
  .shop_table.cart {
    display: block;
    text-align: center;
    overflow: hidden;
  }
  .shop_table.cart tbody,
  .shop_table.cart tr,
  .shop_table.cart th,
  .shop_table.cart td {
    display: block;
    text-align: center;
    overflow: hidden;
  }
  .shop_table.cart thead {
    display: none;
  }
  .shop_table.cart .cart_item {
    padding: 20px 0;
    position: relative;
    border-bottom-width: 1px;
    border-bottom-style: solid;
  }
  .shop_table.cart td {
    padding: 15px;
    border-width: 0;
    border-style: solid;
  }
  .shop_table.cart .product-remove {
    padding: 0;
    position: absolute;
    left: auto;
    right: 0;
    top: 20px;
    z-index: 1;
  }
  .shop_table.cart .product-thumbnail {
    width: auto;
    padding-left: 0;
    padding-right: 0;
    text-align: center;
  }
  .shop_table.cart .product-name .variation {
    padding: 10px 0 0;
  }
  .shop_table.cart .product-name .variation dt,
  .shop_table.cart .product-name .variation dd {
    width: 50%;
  }
  .shop_table.cart .product-name .variation dt {
    text-align: right;
  }
  .shop_table.cart .product-name .variation dd {
    text-align: left;
  }
  .shop_table.cart .product-price,
  .shop_table.cart .product-quantity,
  .shop_table.cart .product-subtotal {
    display: inline-block;
    width: 33.33%;
    margin: 0 -2px;
    vertical-align: middle;
  }
  .shop_table.cart .product-price {
    text-align: right;
  }
  .shop_table.cart .product-quantity {
    padding-left: 0;
    padding-right: 0;
  }
  .shop_table.cart .product-subtotal {
    text-align: left;
  }
  .shop_table.cart .actions {
    text-align: center;
  }
  .shop_table.cart .actions .coupon {
    padding: 0 0 20px;
    float: none;
    text-align: center;
  }
  .shop_table.cart .actions .input-text {
    display: block;
    margin: 0 auto 10px;
  }
  .shop_table.woocommerce-checkout-review-order-table th,
  .shop_table.order_details th,
  .shop_table.woocommerce-checkout-review-order-table td,
  .shop_table.order_details td {
    padding: 10px 15px;
  }
  .cart_totals table {
    width: 100%;
  }
  ul.order_details li {
    padding: 10px 15px;
    position: relative;
    float: left;
    overflow: hidden;
  }
  ul.order_details li strong {
    display: block;
    margin: 10px -15px -10px;
    padding: 10px 15px;
  }
}
@media only screen and (max-width: 600px) {
  .cmsmasters_products.columns-6 .product,
  .cmsmasters_products.columns-5 .product,
  .cmsmasters_products.columns-3 .product {
    width: 97.4%;
    float: none;
  }
  .cmsmasters_products.columns-6 .product:nth-child(n),
  .cmsmasters_products.columns-5 .product:nth-child(n),
  .cmsmasters_products.columns-3 .product:nth-child(n) {
    clear: both;
  }
  .content .cmsmasters_products.columns-6 .product,
  .content .cmsmasters_products.columns-5 .product {
    width: 97.4%;
  }
  .content .cmsmasters_products.columns-6 .product:nth-child(n),
  .content .cmsmasters_products.columns-5 .product:nth-child(n) {
    clear: both;
  }
}
@media only screen and (max-width: 540px) {
  .cmsmasters_products.columns-6 .product,
  .cmsmasters_products.columns-5 .product,
  .cmsmasters_products.columns-4 .product,
  .cmsmasters_products.columns-3 .product,
  .cmsmasters_products.columns-2 .product {
    width: 97.4%;
    float: none;
  }
  .cmsmasters_products.columns-6 .product:nth-child(n),
  .cmsmasters_products.columns-5 .product:nth-child(n),
  .cmsmasters_products.columns-4 .product:nth-child(n),
  .cmsmasters_products.columns-3 .product:nth-child(n),
  .cmsmasters_products.columns-2 .product:nth-child(n) {
    clear: both;
  }
  .form-row {
    width: 97.4%;
    float: none;
    clear: both;
  }
  .cmsmasters_woo_comments .commentlist .comment .cmsmasters_comment_item_cont_info .cmsmasters_comment_item_title {
    display: block;
  }
  .cmsmasters_woo_comments .commentlist .comment .cmsmasters_comment_item_cont_info .cmsmasters_comment_item_title + .cmsmasters_comment_item_date:before {
    content: none;
  }
  .woocommerce-error,
  .woocommerce-message,
  .woocommerce-info {
    display: block;
    text-align: center;
  }
  .woocommerce-error .button,
  .woocommerce-message .button,
  .woocommerce-info .button {
    display: block;
    margin: 0 0 20px;
    text-align: center;
  }
  table.variations select {
    display: block;
  }
  table.variations .reset_variations {
    display: inline-block;
    margin: 10px 0 0;
  }
  .cmsmasters_woo_wrap_result .woocommerce-result-count {
    padding: 0 10px 20px;
    float: none;
    text-align: center;
  }
  .cmsmasters_woo_wrap_result .woocommerce-ordering {
    float: none;
  }
  .woocommerce-checkout-payment {
    padding: 20px 15px;
  }
  .woocommerce-checkout-payment .place-order .terms {
    display: block;
  }
  ul.order_details li {
    width: 100%;
    float: none;
  }
  ul.order_details li strong {
    border-right-width: 1px;
    border-right-style: solid;
    border-left-width: 1px;
    border-left-style: solid;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBsdWdpbi1hZGFwdGl2ZS5sZXNzIiwiLi4vLi4vLi4vLi4vLi4vdGhlbWUtZnJhbWV3b3JrL3RoZW1lLXN0eWxlL2Nzcy9sZXNzL2dlbmVyYWwubGVzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFpQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0E7RUFDQyxFQUFFO0lDMEpGLHVCQUFBO0lBQ0Esb0JBQUE7SUFDQSxtQkFBQTtJQUNBLGVBQUE7O0VEN0pBLEVBQUUsY0FHRDtJQUNDLFVBQUE7O0VBRUEsRUFOQSxjQUdELEdBR0UsVUFBVTtJQUNWLFdBQUE7OztBQVdKO0VBQ0MsRUFBRSxjQUNEO0lBQ0Msc0JBQUE7O0VBRUEsRUFKQSxjQUNELEdBR0U7SUFDQSwyQkFBQTs7RUFHRCxFQVJBLGNBQ0QsR0FPRTtJQUNBLDJCQUFBOztFQVRILEVBQUUsY0FDRCxHQVdDO0lBQ0Msd0JBQUE7SUFDQSxrQkFBQTs7RUFLSCxRQUNDLHFCQUFvQixVQUNuQjtJQUNDLGFBQUE7O0VBRUEsUUFKRixxQkFBb0IsVUFDbkIsU0FHRSxVQUFVO0lBQ1YsV0FBQTs7RUFHRCxRQVJGLHFCQUFvQixVQUNuQixTQU9FLFVBQVU7SUFDVixXQUFBOztFQVZKLFFBZUMscUJBQW9CLFVBQ25CO0lBQ0MsWUFBQTs7RUFFQSxRQUpGLHFCQUFvQixVQUNuQixTQUdFLFVBQVU7SUFDVixXQUFBOztFQUdELFFBUkYscUJBQW9CLFVBQ25CLFNBT0UsVUFBVTtJQUNWLFdBQUE7OztBQVlMO0VBQ0M7SUFDQyxhQUFBOzs7QUFTRjtFQUNDLG9CQUFvQixVQUFXO0lBQzlCLGFBQUE7O0VBRUEsb0JBSG1CLFVBQVcsU0FHN0IsVUFBVTtJQUNWLFdBQUE7O0VBR0Qsb0JBUG1CLFVBQVcsU0FPN0IsVUFBVTtJQUNWLFdBQUE7O0VBSUYsb0JBQW9CLFVBQVc7SUFDOUIsYUFBQTs7RUFFQSxvQkFIbUIsVUFBVyxTQUc3QixVQUFVO0lBQ1YsV0FBQTs7RUFHRCxvQkFQbUIsVUFB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QVgsb0JBSm1CLFVBQVcsU0FJN0IsVUFBVTtJQ3BXWixXQUFBOztFRHlXQTtJQUNDLFlBQUE7SUFDQSxXQUFBO0lDM1dELFdBQUE7O0VEK1dBLHdCQUNDLGFBQ0MsU0FDQyxtQ0FDQztJQUNDLGNBQUE7O0VBTEwsd0JBQ0MsYUFDQyxTQUNDLG1DQUNDLCtCQUdDLGdDQUErQjtJQUM5QixhQUFBOztFQVFOO0VBQ0E7RUFDQTtJQUNDLGNBQUE7SUMxWUQsa0JBQUE7O0VEdVlBLGtCQU1DO0VBTEQsb0JBS0M7RUFKRCxpQkFJQztJQUNDLGNBQUE7SUFDQSxnQkFBQTtJQy9ZRixrQkFBQTs7RURvWkEsS0FBSyxXQUNKO0lBQ0MsY0FBQTs7RUFGRixLQUFLLFdBS0o7SUFDQyxxQkFBQTtJQUNBLGdCQUFBOztFQUlGLDJCQUNDO0lBQ0Msb0JBQUE7SUFDQSxXQUFBO0lDbGFGLGtCQUFBOztFRCtaQSwyQkFPQztJQUNDLFdBQUE7O0VBSUY7SUFDQyxrQkFBQTs7RUFERCw2QkFHQyxhQUNDO0lBQ0MsY0FBQTs7RUFLSCxFQUFFLGNBQ0Q7SUFDQyxXQUFBO0lBQ0EsV0FBQTs7RUFIRixFQUFFLGNBQ0QsR0FJQztJQ3ZaRix1QkFBQTtJQUNBLHlCQUFBO0lBSUEsc0JBQUE7SUFDQSx3QkFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHBhY2thZ2UgXHRXb3JkUHJlc3NcbiAqIEBzdWJwYWNrYWdlIFx0QWdyaWNvbGVcbiAqIEB2ZXJzaW9uIFx0MS4wLjBcbiAqIFxuICogV29vQ29tbWVyY2UgUmVzcG9uc2l2ZSBDU1MgUnVsZXNcbiAqIENyZWF0ZWQgYnkgQ01TTWFzdGVyc1xuICogXG4gKi9cblxuXG5cbkBpbXBvcnQgXCIuLi8uLi8uLi8uLi8uLi90aGVtZS1mcmFtZXdvcmsvdGhlbWUtc3R5bGUvY3NzL2xlc3MvZ2VuZXJhbC5sZXNzXCI7XG5cbkBtb25pdG9yX2xhcmdlX21heDogficobWF4LXdpZHRoOiAxNDQwcHgpJztcblxuXG5AbWVkaWEgb25seSBzY3JlZW4ge1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyogTGFyZ2UgTWF4IE1vbml0b3Jcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5AbWVkaWEgQG1vbml0b3JfbGFyZ2VfbWF4IHtcblx0dWwub3JkZXJfZGV0YWlscyB7XG5cdFx0LmZsZXhfd3JhcCh3cmFwKTtcblx0XHRcblx0XHRsaSB7XG5cdFx0XHR3aWR0aDo1MCU7XG5cdFx0XHRcblx0XHRcdCY6bnRoLWNoaWxkKDUpIHtcblx0XHRcdFx0d2lkdGg6MTAwJTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKiBMYXJnZSBNb25pdG9yXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuQG1lZGlhIEBtb25pdG9yX2xhcmdlIHtcblx0dWwub3JkZXJfZGV0YWlscyB7XG5cdFx0bGkge1xuXHRcdFx0cGFkZGluZzoxN3B4IDVweCAxM3B4O1xuXG5cdFx0XHQmOmZpcnN0LWNoaWxkIHtcblx0XHRcdFx0cGFkZGluZzoxN3B4IDVweCAxM3B4IDMwcHg7XG5cdFx0XHR9XG5cblx0XHRcdCY6bGFzdC1jaGlsZCB7XG5cdFx0XHRcdHBhZGRpbmc6MTdweCAzMHB4IDEzcHggNXB4O1xuXHRcdFx0fVxuXG5cdFx0XHRzdHJvbmcge1xuXHRcdFx0XHRtYXJnaW46MTdweCAtMzBweCAtMTNweDtcblx0XHRcdFx0cGFkZGluZzoxNXB4IDMwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdFxuXHQuY29udGVudCB7XG5cdFx0LmNtc21hc3RlcnNfcHJvZHVjdHMuY29sdW1ucy02IHtcblx0XHRcdC5wcm9kdWN0IHtcblx0XHRcdFx0d2lkdGg6cm91bmQoKDEwMCUgLyA2KSAtIChAY29sX21hciAqIDIpLCAyKTtcblx0XHRcdFx0XG5cdFx0XHRcdCY6bnRoLWNoaWxkKDNuKzEpIHtcblx0XHRcdFx0XHRjbGVhcjpub25lO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHQmOm50aC1jaGlsZCg2bisxKSB7XG5cdFx0XHRcdFx0Y2xlYXI6bGVmdDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRcblx0XHQuY21zbWFzdGVyc19wcm9kdWN0cy5jb2x1bW5zLTUge1xuXHRcdFx0LnByb2R1Y3Qge1xuXHRcdFx0XHR3aWR0aDpyb3VuZCgoMTAwJSAvIDUpIC0gKEBjb2xfbWFyICogMiksIDIpO1xuXHRcdFx0XHRcblx0XHRcdFx0JjpudGgtY2hpbGQoM24rMSkge1xuXHRcdFx0XHRcdGNsZWFyOm5vbmU7XG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHRcdCY6bnRoLWNoaWxkKDVuKzEpIHtcblx0XHRcdFx0XHRjbGVhcjpsZWZ0O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cblxuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuLyogTWVkaXVtIE1vbml0b3Jcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5AbWVkaWEgQG1vbml0b3JfbWVkaXVtIHtcblx0LmNtc21hc3RlcnNfcHJvZHVjdHMge1xuXHRcdG91dGxpbmU6bm9uZTtcblx0fVxufVxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qIFRhYmxldCBNb25pdG9yXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuQG1lZGlhIEBtb25pdG9yX3RhYmxldCB7XG5cdC5jbXNtYXN0ZXJzX3Byb2R1Y3RzLmNvbHVtbnMtNiAucHJvZHVjdCB7XG5cdFx0d2lkdGg6cm91bmQoKDEwMCUgLyAzKSAtIChAY29sX21hciAqIDIpLCAyKTtcblx0XHRcblx0XHQmOm50aC1jaGlsZCg2bisxKSB7XG5cdFx0XHRjbGVhcjpub25lO1xuXHRcdH1cblx0XHRcblx0XHQmOm50aC1jaGlsZCgzbisxKSB7XG5cdFx0XHRjbGVhcjpsZWZ0O1xuXHRcdH1cblx0fVxuXHRcblx0LmNtc21hc3RlcnNfcHJvZHVjdHMuY29sdW1ucy01IC5wcm9kdWN0IHtcblx0XHR3aWR0aDpyb3VuZCgoMTAwJSAvIDMpIC0gKEBjb2xfbWFyICogMiksIDIpO1xuXHRcdFxuXHRcdCY6bnRoLWNoaWxkKDVuKzEpIHtcblx0XHRcdGNsZWFyOm5vbmU7XG5cdFx0fVxuXHRcdFxuXHRcdCY6bnRoLWNoaWxkKDNuKzEpIHtcblx0XHRcdGNsZWFyOmxlZnQ7XG5cdFx0fVxuXHR9XG5cdFxuXHQuY21zbWFzdGVyc19wcm9kdWN0cy5jb2x1bW5zLTQgLnByb2R1Y3Qge1xuXHRcdHdpZHRoOnJvdW5kKCgxMDAlIC8gMikgLSAoQGNvbF9tYXIgKiAyKSwgMik7XG5cdFx0XG5cdFx0JjpudGgtY2hpbGQoNG4rMSkge1xuXHRcdFx0Y2xlYXI6bm9uZTtcblx0XHR9XG5cdFx0XG5cdFx0JjpudGgtY2hpbGQoMm4rMSkge1xuXHRcdFx0Y2xlYXI6bGVmdDtcblx0XHR9XG5cdH1cblx0XG5cdCNoZWFkZXIge1xuXHRcdC5oZWFkZXJfYm90IHtcblx0XHRcdC5oZWFkZXJfYm90X2lubmVyIHtcblx0XHRcdFx0LmNtc21hc3RlcnNfaGVhZGVyX2NhcnRfbGluayB7XG5cdFx0XHRcdFx0LmVuYWJsZV9oZWFkZXJfY2VudGVyZWQgJiB7XG5cdFx0XHRcdFx0XHRmbG9hdDpub25lO1xuXHRcdFx0XHRcdFx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG5cdFx0XHRcdFx0XHRtYXJnaW46MCAxNXB4O1xuXHRcdFx0XHRcdFx0dmVydGljYWwtYWxpZ246bWlkZGxlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRcblx0LmNtc21hc3RlcnNfZHluYW1pY19jYXJ0X3dyYXAge1xuXHRcdC5kbiAhaW1wb3J0YW50O1xuXHR9XG5cdFxuXHQuY21zbWFzdGVyc19oZWFkZXJfY2FydF9saW5rICB7XG5cdFx0ZGlzcGxheTppbmxpbmUtYmxvY2s7XG5cdFx0dmVydGljYWwtYWxpZ246bWlkZGxlO1xuXHRcdG1hcmdpbjowIDAgMCAxNXB4O1xuXHRcdC5mcjtcblx0XHQudGFjO1xuXHRcdFxuXHRcdCY6YWZ0ZXIge1xuXHRcdFx0LnZhbGlnbl9hZnRlcjtcblx0XHR9XG5cdH1cblx0XG5cdC5jbXNtYXN0ZXJzX3Byb2R1Y3Qge1xuXHRcdC5jbXNtYXN0ZXJzX3Byb2R1Y3RfYWRkX3dyYXAge1xuXHRcdFx0dmlzaWJpbGl0eTp2aXNpYmxlO1xuXHRcdFx0d2lkdGg6YXV0bztcblx0XHRcdGhlaWdodDphdXRvO1xuXHRcdFx0cGFkZGluZzoxMHB4IDAgMDtcblx0XHRcdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRcdFx0bGVmdDphdXRvO1xuXHRcdFx0cmlnaHQ6YXV0bztcblx0XHRcdHRvcDphdXRvO1xuXHRcdFx0Ym90dG9tOmF1dG87XG5cdFx0XHQub3AoMSk7XG5cdFx0fVxuXHRcdFxuXHRcdC5jbXNtYXN0ZXJzX3Byb2R1Y3RfaW5mb193cmFwIHtcblx0XHRcdGhlaWdodDphdXRvO1xuXHRcdH1cblx0fVxuXHRcblx0dWwub3JkZXJfZGV0YWlscyB7XG5cdFx0LmZsZXhfd3JhcCh3cmFwKTtcblx0XHRcblx0XHRsaSB7XG5cdFx0XHR3aWR0aDo1MCU7XG5cdFx0XHRcblx0XHRcdCY6bnRoLWNoaWxkKDUpIHtcblx0XHRcdFx0d2lkdGg6MTAwJTtcblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0JjpudGgtY2hpbGQoMm4pIHtcblx0XHRcdFx0c3Ryb25nIHtcblx0XHRcdFx0XHQuYmRyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdCY6bnRoLWNoaWxkKDJuKzEpIHtcblx0XHRcdFx0c3Ryb25nIHtcblx0XHRcdFx0XHQuYmRsO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdFxuXHQud2lkZ2V0X3Nob3BwaW5nX2NhcnQgLmJ1dHRvbnMgLmJ1dHRvbiB7XG5cdFx0d2lkdGg6YXV0bztcblx0fVxufVxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qIFNtYWxsIFRhYmxldCBNb25pdG9yXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuQG1lZGlhIEBtb25pdG9yX3RhYmxldF9zbWFsbCB7XG5cdC5jb2wyLXNldCB7XG5cdFx0PiAqIHtcblx0XHRcdHdpZHRoOnJvdW5kKDEwMCUgLSAoQGNvbF9tYXIgKiAyKSwgMik7XG5cdFx0XHRtYXJnaW4tYm90dG9tOjQwcHg7XG5cdFx0XHRmbG9hdDpub25lO1xuXHRcdFx0LmNsO1xuXHRcdFx0XG5cdFx0XHQmOmxhc3QtY2hpbGQge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOjA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdFxuXHQuY21zbWFzdGVyc19oZWFkZXJfY2FydF9saW5rICB7XG5cdFx0ZmxvYXQ6bm9uZTtcblx0XHRtYXJnaW46MCA0cHggMjBweDtcblx0fVxuXHRcblx0LmNtc21hc3RlcnNfc2luZ2xlX3Byb2R1Y3Qge1xuXHRcdC5jbXNtYXN0ZXJzX3Byb2R1Y3RfbGVmdF9jb2x1bW4ge1xuXHRcdFx0d2lkdGg6MTAwJTtcblx0XHRcdGZsb2F0Om5vbmU7XG5cdFx0XHRwYWRkaW5nOjAgMCA0MHB4O1xuXHRcdH1cblx0XHRcblx0XHQuY21zbWFzdGVyc19wcm9kdWN0X3JpZ2h0X2NvbHVtbiB7XG5cdFx0XHR3aWR0aDoxMDAlO1xuXHRcdFx0ZmxvYXQ6bm9uZTtcblx0XHRcdHBhZGRpbmc6MDtcblx0XHR9XG5cdH1cblx0XG5cdC5jbXNtYXN0ZXJzX3RhYnN7XG5cdFx0Ji5jbXNtYXN0ZXJzX3dvb190YWJzIHtcblx0XHRcdG1hcmdpbjozNXB4IDAgMDtcblx0XHRcdFxuXHRcdFx0LmNtc21hc3RlcnNfdGFic19saXN0IHtcblx0XHRcdFx0bWFyZ2luOjA7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdC5jbXNtYXN0ZXJzX3RhYnNfbGlzdF9pdGVtIHtcblx0XHRcdFx0PiBhIHtcblx0XHRcdFx0XHRwYWRkaW5nOjEwcHggMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRcblx0LnNob3BfdGFibGUuY2FydCB7XG5cdFx0ZGlzcGxheTpibG9jaztcblx0XHQudGFjO1xuXHRcdC5vdmg7XG5cdFx0XG5cdFx0dGJvZHksIFxuXHRcdHRyLCBcblx0XHR0aCwgXG5cdFx0dGQge1xuXHRcdFx0ZGlzcGxheTpibG9jaztcblx0XHRcdC50YWM7XG5cdFx0XHQub3ZoO1xuXHRcdH1cblx0XHRcblx0XHR0aGVhZCB7XG5cdFx0XHQuZG47XG5cdFx0fVxuXHRcdFxuXHRcdC5jYXJ0X2l0ZW0ge1xuXHRcdFx0cGFkZGluZzoyMHB4IDA7XG5cdFx0XHRwb3NpdGlvbjpyZWxhdGl2ZTtcblx0XHRcdC5iZGI7XG5cdFx0fVxuXHRcdFxuXHRcdHRkIHtcblx0XHRcdHBhZGRpbmc6MTVweDtcblx0XHRcdC5iZCgwKTtcblx0XHR9XG5cdFx0XG5cdFx0LnByb2R1Y3QtcmVtb3ZlIHtcblx0XHRcdHBhZGRpbmc6MDtcblx0XHRcdHBvc2l0aW9uOmFic29sdXRlO1xuXHRcdFx0bGVmdDphdXRvO1xuXHRcdFx0cmlnaHQ6MDtcblx0XHRcdHRvcDoyMHB4O1xuXHRcdFx0ei1pbmRleDoxO1xuXHRcdH1cblx0XHRcblx0XHQucHJvZHVjdC10aHVtYm5haWwge1xuXHRcdFx0d2lkdGg6YXV0bztcblx0XHRcdHBhZGRpbmctbGVmdDowO1xuXHRcdFx0cGFkZGluZy1yaWdodDowO1xuXHRcdFx0LnRhYztcblx0XHR9XG5cdFx0XG5cdFx0LnByb2R1Y3QtbmFtZSB7XG5cdFx0XHQudmFyaWF0aW9uIHtcblx0XHRcdFx0cGFkZGluZzoxMHB4IDAgMDtcblx0XHRcdFx0XG5cdFx0XHRcdGR0LFxuXHRcdFx0XHRkZCB7XG5cdFx0XHRcdFx0d2lkdGg6NTAlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHRkdCB7XG5cdFx0XHRcdFx0LnRhcjtcblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdFx0ZGQge1xuXHRcdFx0XHRcdC50YWw7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0LnByb2R1Y3QtcHJpY2UsIFxuXHRcdC5wcm9kdWN0LXF1YW50aXR5LCBcblx0XHQucHJvZHVjdC1zdWJ0b3RhbCB7XG5cdFx0XHRkaXNwbGF5OmlubGluZS1ibG9jaztcblx0XHRcdHdpZHRoOjMzLjMzJTtcblx0XHRcdG1hcmdpbjowIC0ycHg7XG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XG5cdFx0fVxuXHRcdFxuXHRcdC5wcm9kdWN0LXByaWNlIHtcblx0XHRcdC50YXI7XG5cdFx0fVxuXHRcdFxuXHRcdC5wcm9kdWN0LXF1YW50aXR5IHtcblx0XHRcdHBhZGRpbmctbGVmdDowO1xuXHRcdFx0cGFkZGluZy1yaWdodDowO1xuXHRcdH1cblx0XHRcblx0XHQucHJvZHVjdC1zdWJ0b3RhbCB7XG5cdFx0XHQudGFsO1xuXHRcdH1cblx0XHRcblx0XHQuYWN0aW9ucyB7XG5cdFx0XHQudGFjO1xuXHRcdFx0XG5cdFx0XHQuY291cG9uIHtcblx0XHRcdFx0cGFkZGluZzowIDAgMjBweDtcblx0XHRcdFx0ZmxvYXQ6bm9uZTtcblx0XHRcdFx0LnRhYztcblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0LmlucHV0LXRleHQge1xuXHRcdFx0XHRkaXNwbGF5OmJsb2NrO1xuXHRcdFx0XHRtYXJnaW46MCBhdXRvIDEwcHg7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdFxuXHQuc2hvcF90YWJsZS53b29jb21tZXJjZS1jaGVja291dC1yZXZpZXctb3JkZXItdGFibGUsIFxuXHQuc2hvcF90YWJsZS5vcmRlcl9kZXRhaWxzIHtcblx0XHR0aCwgXG5cdFx0dGQge1xuXHRcdFx0cGFkZGluZzoxMHB4IDE1cHg7XG5cdFx0fVxuXHR9XG5cdFxuXHQuY2FydF90b3RhbHMge1xuXHRcdHRhYmxlIHtcblx0XHRcdHdpZHRoOjEwMCU7XG5cdFx0fVxuXHR9XG5cdFxuXHR1bC5vcmRlcl9kZXRhaWxzIHtcblx0XHRsaSB7XG5cdFx0XHRwYWRkaW5nOjEwcHggMTVweDtcblx0XHRcdHBvc2l0aW9uOnJlbGF0aXZlO1xuXHRcdFx0LmZsO1xuXHRcdFx0Lm92aDtcblx0XHRcdFxuXHRcdFx0c3Ryb25nIHtcblx0XHRcdFx0ZGlzcGxheTpibG9jaztcblx0XHRcdFx0bWFyZ2luOjEwcHggLTE1cHggLTEwcHg7XG5cdFx0XHRcdHBhZGRpbmc6MTBweCAxNXB4O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5cblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbi8qXHRUYWJsZXQgTW9uaXRvciA2MDBcbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5AbWVkaWEgQG1vbml0b3JfdGFibGV0XzYwMCB7XG5cdC5jbXNtYXN0ZXJzX3Byb2R1Y3RzLmNvbHVtbnMtNiAucHJvZHVjdCwgXG5cdC5jbXNtYXN0ZXJzX3Byb2R1Y3RzLmNvbHVtbnMtNSAucHJvZHVjdCwgXG5cdC5jbXNtYXN0ZXJzX3Byb2R1Y3RzLmNvbHVtbnMtMyAucHJvZHVjdCB7XG5cdFx0d2lkdGg6cm91bmQoMTAwJSAtIChAY29sX21hciAqIDIpLCAyKTtcblx0XHRmbG9hdDpub25lO1xuXHRcdFxuXHRcdCY6bnRoLWNoaWxkKG4pIHtcblx0XHRcdC5jbDtcblx0XHR9XG5cdH1cblx0XG5cdC5jb250ZW50IHtcblx0XHQuY21zbWFzdGVyc19wcm9kdWN0cy5jb2x1bW5zLTYsXG5cdFx0LmNtc21hc3RlcnNfcHJvZHVjdHMuY29sdW1ucy01IHtcblx0XHRcdC5wcm9kdWN0IHtcblx0XHRcdFx0d2lkdGg6cm91bmQoMTAwJSAtIChAY29sX21hciAqIDIpLCAyKTtcblx0XHRcdFx0XG5cdFx0XHRcdCY6bnRoLWNoaWxkKG4pIHtcblx0XHRcdFx0XHQuY2w7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuXG5cbi8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4vKiBQaG9uZSBNb25pdG9yXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuQG1lZGlhIEBtb25pdG9yX3Bob25lIHtcblx0LmNtc21hc3RlcnNfcHJvZHVjdHMuY29sdW1ucy02IC5wcm9kdWN0LCBcblx0LmNtc21hc3RlcnNfcHJvZHVjdHMuY29sdW1ucy01IC5wcm9kdWN0LCBcblx0LmNtc21hc3RlcnNfcHJvZHVjdHMuY29sdW1ucy00IC5wcm9kdWN0LCBcblx0LmNtc21hc3RlcnNfcHJvZHVjdHMuY29sdW1ucy0zIC5wcm9kdWN0LCBcblx0LmNtc21hc3RlcnNfcHJvZHVjdHMuY29sdW1ucy0yIC5wcm9kdWN0IHtcblx0XHR3aWR0aDpyb3VuZCgxMDAlIC0gKEBjb2xfbWFyICogMiksIDIpO1xuXHRcdGZsb2F0Om5vbmU7XG5cdFx0XG5cdFx0JjpudGgtY2hpbGQobikge1xuXHRcdFx0LmNsO1xuXHRcdH1cblx0fVxuXHRcblx0LmZvcm0tcm93IHtcblx0XHR3aWR0aDpyb3VuZCgxMDAlIC0gKEBjb2xfbWFyICogMiksIDIpO1xuXHRcdGZsb2F0Om5vbmU7XG5cdFx0LmNsO1xuXHR9XG5cdFxuXHQuY21zbWFzdGVyc193b29fY29tbWVudHMge1xuXHRcdC5jb21tZW50bGlzdCB7XG5cdFx0XHQuY29tbWVudCB7XG5cdFx0XHRcdC5jbXNtYXN0ZXJzX2NvbW1lbnRfaXRlbV9jb250X2luZm8ge1xuXHRcdFx0XHRcdC5jbXNtYXN0ZXJzX2NvbW1lbnRfaXRlbV90aXRsZSB7XG5cdFx0XHRcdFx0XHRkaXNwbGF5OmJsb2NrO1xuXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHQrIC5jbXNtYXN0ZXJzX2NvbW1lbnRfaXRlbV9kYXRlOmJlZm9yZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6bm9uZTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0XG5cdC53b29jb21tZXJjZS1lcnJvcixcblx0Lndvb2NvbW1lcmNlLW1lc3NhZ2UsIFxuXHQud29vY29tbWVyY2UtaW5mbyB7XG5cdFx0ZGlzcGxheTpibG9jaztcblx0XHQudGFjO1xuXHRcblx0XHQuYnV0dG9uIHtcblx0XHRcdGRpc3BsYXk6YmxvY2s7XG5cdFx0XHRtYXJnaW46MCAwIDIwcHg7XG5cdFx0XHQudGFjO1xuXHRcdH1cblx0fVxuXHRcblx0dGFibGUudmFyaWF0aW9ucyB7XG5cdFx0c2VsZWN0IHtcblx0XHRcdGRpc3BsYXk6YmxvY2s7XG5cdFx0fVxuXHRcdFxuXHRcdC5yZXNldF92YXJpYXRpb25zIHtcblx0XHRcdGRpc3BsYXk6aW5saW5lLWJsb2NrO1xuXHRcdFx0bWFyZ2luOjEwcHggMCAwO1xuXHRcdH1cblx0fVxuXHRcblx0LmNtc21hc3RlcnNfd29vX3dyYXBfcmVzdWx0IHtcblx0XHQud29vY29tbWVyY2UtcmVzdWx0LWNvdW50IHtcblx0XHRcdHBhZGRpbmc6MCAxMHB4IDIwcHg7XG5cdFx0XHRmbG9hdDpub25lO1xuXHRcdFx0LnRhYztcblx0XHR9XG5cdFx0XG5cdFx0Lndvb2NvbW1lcmNlLW9yZGVyaW5nIHtcblx0XHRcdGZsb2F0Om5vbmU7XG5cdFx0fVxuXHR9XG5cdFxuXHQud29vY29tbWVyY2UtY2hlY2tvdXQtcGF5bWVudCB7XG5cdFx0cGFkZGluZzoyMHB4IDE1cHg7XG5cdFx0XG5cdFx0LnBsYWNlLW9yZGVyIHtcblx0XHRcdC50ZXJtcyB7XG5cdFx0XHRcdGRpc3BsYXk6YmxvY2s7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdFxuXHR1bC5vcmRlcl9kZXRhaWxzIHtcblx0XHRsaSB7XG5cdFx0XHR3aWR0aDoxMDAlO1xuXHRcdFx0ZmxvYXQ6bm9uZTtcblx0XHRcdFxuXHRcdFx0c3Ryb25nIHtcblx0XHRcdFx0LmJkcjtcblx0XHRcdFx0LmJkbDtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbn1cblxuIiwiXHJcbkBpbnB1dF9wYWQ6IDhweDtcclxuQGlucHV0X2hlaWdodDogNDhweDtcclxuXHJcbkBsaW5lX2hlaWdodF9wYWQ6IDIwcHg7XHJcbkBkZWZhdWx0X2xpc3RfdG9wX3BhZDogMTBweDtcclxuQGRlZmF1bHRfbGlzdF9sZWZ0X3BhZDogMjBweDtcclxuQGJsb2Nrc19ob3JfcGFkOiAyMHB4O1xyXG5AY29udF9zaWRlYmFyX3BhZDogNjBweDtcclxuQGNvbnRfdmVydF9wYWQ6IDgwcHg7XHJcblxyXG5AYmRyc193aWR0aDogMzBweDtcclxuQGJ1dF9iZHJzX3dpZHRoOiBAYmRyc193aWR0aDtcclxuQGJ1dF9iZF93aWR0aDogMXB4O1xyXG5cclxuQGNvbF9tYXI6IDEuMyU7XHJcblxyXG5AcmVzcF9ibG9ja3NfcGFkOiA2Ni44NiU7XHJcblxyXG5AcHJlbG9hZGVyX2Jsb2dfZGVmYXVsdF9wYWQ6IDU1LjglO1xyXG5AcHJlbG9hZGVyX2Jsb2dfbWFzb25yeV9wYWQ6IDYzLjElO1xyXG5AcHJlbG9hZGVyX2Jsb2dfdGltZWxpbmVfcGFkOiA2My4xJTtcclxuQHByZWxvYWRlcl9vcGVuX3Bvc3RfcGFkOiA2Ni44NiU7XHJcbkBwcmVsb2FkZXJfcG9ydGZvbGlvX2dyaWRfcGFkOiA3MC42OSU7XHJcbkBwcmVsb2FkZXJfb3Blbl9wcm9qZWN0X3BhZDogNTUuOCU7XHJcbkBwcmVsb2FkZXJfcG9zdHNfc2xpZGVyX3BhZDogNjMuMSU7XHJcbkBwcmVsb2FkZXJfcG9zdHNfc2xpZGVyX3Byb2plY3RfcGFkOiA3MC42OSU7XHJcbkBwcmVsb2FkZXJfYXJjaGl2ZXNfcGFkOiAxMDAlO1xyXG5cclxuQHNpZGViYXJfd2lkdGg6IDI4JTtcclxuQGNvbnRlbnRfd2lkdGg6IDEwMCUgLSBAc2lkZWJhcl93aWR0aDtcclxuXHJcbkBtaWRfbmF2X2Ryb3Bkb3duX3dpZHRoOiAyMDZweDtcclxuQG1pZF9uYXZfZHJvcGRvd25fcGFkX3RvcDogMTVweDtcclxuQG1pZF9uYXZfZHJvcGRvd25fcGFkX2JvdDogMTVweDtcclxuQG1pZF9uYXZfZHJvcGRvd25fdmVydF9tYXJfc3RhcnQ6IDI1cHg7XHJcbkBtaWRfbmF2X2Ryb3Bkb3duX3ZlcnRfbWFyX2VuZDogMTVweDtcclxuQG1pZF9uYXZfZHJvcGRvd25faG9yX21hcl9zdGFydDogMTBweDtcclxuQG1pZF9uYXZfZHJvcGRvd25faG9yX21hcl9lbmQ6IDJweDtcclxuXHJcbkBib3RfbmF2X2Ryb3Bkb3duX3dpZHRoOiAyMDZweDtcclxuQGJvdF9uYXZfZHJvcGRvd25fcGFkX3RvcDogMTVweDtcclxuQGJvdF9uYXZfZHJvcGRvd25fcGFkX2JvdDogMTVweDtcclxuQGJvdF9uYXZfZHJvcGRvd25fdmVydF9tYXJfc3RhcnQ6IDIwcHg7XHJcbkBib3RfbmF2X2Ryb3Bkb3duX3ZlcnRfbWFyX2VuZDogMHB4O1xyXG5AYm90X25hdl9kcm9wZG93bl9ob3JfbWFyX3N0YXJ0OiAxMHB4O1xyXG5AYm90X25hdl9kcm9wZG93bl9ob3JfbWFyX2VuZDogMnB4O1xyXG5cclxuQHRvcF9uYXZfZHJvcGRvd25fd2lkdGg6IDE3NXB4O1xyXG5AdG9wX25hdl9kcm9wZG93bl9wYWRfdG9wOiAxM3B4O1xyXG5AdG9wX25hdl9kcm9wZG93bl9wYWRfYm90OiAxM3B4O1xyXG5AdG9wX25hdl9kcm9wZG93bl92ZXJ0X21hcl9zdGFydDogMjBweDtcclxuQHRvcF9uYXZfZHJvcGRvd25fdmVydF9tYXJfZW5kOiAwcHg7XHJcbkB0b3BfbmF2X2Ryb3Bkb3duX2hvcl9tYXJfc3RhcnQ6IDIwcHg7XHJcbkB0b3BfbmF2X2Ryb3Bkb3duX2hvcl9tYXJfZW5kOiAycHg7XHJcblxyXG5AY29udF93aWR0aF9kZWY6IDk4MHB4O1xyXG5AY29udF93aWR0aF9sYXJnZTogMTIwMHB4O1xyXG5AY29udF93aWR0aF9mdWxsOiAxMDAlO1xyXG5AY29udF93aWR0aF9taW46IDMyMHB4O1xyXG5cclxuQGlucHV0X3RleHQ6IGUoJ2lucHV0Om5vdChbdHlwZT1idXR0b25dKTpub3QoW3R5cGU9Y2hlY2tib3hdKTpub3QoW3R5cGU9ZmlsZV0pOm5vdChbdHlwZT1oaWRkZW5dKTpub3QoW3R5cGU9aW1hZ2VdKTpub3QoW3R5cGU9cmFkaW9dKTpub3QoW3R5cGU9cmVzZXRdKTpub3QoW3R5cGU9c3VibWl0XSk6bm90KFt0eXBlPWNvbG9yXSk6bm90KFt0eXBlPXJhbmdlXSknKTtcclxuXHJcbkBtb25pdG9yX2xhcmdlOiB+JyhtaW4td2lkdGg6IDE0NDBweCknO1xyXG5AbW9uaXRvcl9tZWRpdW06IH4nKG1pbi13aWR0aDogMTAyNXB4KSc7XHJcbkBtb25pdG9yX3RhYmxldDogficobWF4LXdpZHRoOiAxMDI0cHgpJztcclxuQG1vbml0b3JfdGFibGV0Xzk1MDogficobWF4LXdpZHRoOiA5NTBweCknO1xyXG5AbW9uaXRvcl90YWJsZXRfc21hbGw6IH4nKG1heC13aWR0aDogNzY4cHgpJztcclxuQG1vbml0b3JfdGFibGV0XzYwMDogficobWF4LXdpZHRoOiA2MDBweCknO1xyXG5AbW9uaXRvcl9waG9uZTogficobWF4LXdpZHRoOiA1NDBweCknO1xyXG5AbW9uaXRvcl9waG9uZV9zbWFsbDogficobWF4LXdpZHRoOiAzMjBweCknO1xyXG5cclxuXHJcblxyXG4uZmwgKCkge1xyXG5cdGZsb2F0OmxlZnQ7XHJcbn1cclxuXHJcbi5mciAoKSB7XHJcblx0ZmxvYXQ6cmlnaHQ7XHJcbn1cclxuXHJcbi5kbiAoKSB7XHJcblx0ZGlzcGxheTpub25lO1xyXG59XHJcblxyXG4udGFsICgpIHtcclxuXHR0ZXh0LWFsaWduOmxlZnQ7XHJcbn1cclxuXHJcbi50YWMgKCkge1xyXG5cdHRleHQtYWxpZ246Y2VudGVyO1xyXG59XHJcblxyXG4udGFyICgpIHtcclxuXHR0ZXh0LWFsaWduOnJpZ2h0O1xyXG59XHJcblxyXG4uY2wgKCkge1xyXG5cdGNsZWFyOmJvdGg7XHJcbn1cclxuXHJcbi5vdmggKCkge1xyXG5cdG92ZXJmbG93OmhpZGRlbjtcclxufVxyXG5cclxuLm0wYSAoKSB7XHJcblx0bWFyZ2luOjAgYXV0bztcclxufVxyXG5cclxuLmJkIChAdzoxcHg7IEB0OnNvbGlkKSB7XHJcblx0Ym9yZGVyLXdpZHRoOkB3O1xyXG5cdGJvcmRlci1zdHlsZTpAdDtcclxufVxyXG5cclxuLmJkdCAoQHc6MXB4OyBAdDpzb2xpZCkge1xyXG5cdGJvcmRlci10b3Atd2lkdGg6QHc7XHJcblx0Ym9yZGVyLXRvcC1zdHlsZTpAdDtcclxufVxyXG5cclxuLmJkYiAoQHc6MXB4OyBAdDpzb2xpZCkge1xyXG5cdGJvcmRlci1ib3R0b20td2lkdGg6QHc7XHJcblx0Ym9yZGVyLWJvdHRvbS1zdHlsZTpAdDtcclxufVxyXG5cclxuLmJkciAoQHc6MXB4OyBAdDpzb2xpZCkge1xyXG5cdGJvcmRlci1yaWdodC13aWR0aDpAdztcclxuXHRib3JkZXItcmlnaHQtc3R5bGU6QHQ7XHJcbn1cclxuXHJcbi5iZGwgKEB3OjFweDsgQHQ6c29saWQpIHtcclxuXHRib3JkZXItbGVmdC13aWR0aDpAdztcclxuXHRib3JkZXItbGVmdC1zdHlsZTpAdDtcclxufVxyXG5cclxuLmNvbG9yX3doaXRlX29wYWNpdHkgKEBvcDouNSkge1xyXG5cdGNvbG9yOnJnYmEoMjU1LCAyNTUsIDI1NSwgQG9wKTtcclxufVxyXG5cclxuLmJnX3doaXRlX29wYWNpdHkgKEBvcDouNSkge1xyXG5cdGJhY2tncm91bmQtY29sb3I6cmdiYSgyNTUsIDI1NSwgMjU1LCBAb3ApO1xyXG59XHJcblxyXG4uZnVsbHdpZHRoX2luX2Jsb2NrICgpIHtcclxuXHR3aWR0aDoxMDAlO1xyXG5cdGhlaWdodDoxMDAlO1xyXG5cdHBvc2l0aW9uOmFic29sdXRlO1xyXG5cdHRvcDowO1xyXG5cdGxlZnQ6MDtcclxufVxyXG5cclxuLm9wIChAb3A6LjUpIHtcclxuXHRvcGFjaXR5OkBvcDtcclxufVxyXG5cclxuLmRpc3BsYXlfZmxleCAoKSB7XHJcblx0ZGlzcGxheTotd2Via2l0LWZsZXg7XHJcblx0ZGlzcGxheTotbW96LWZsZXg7XHJcblx0ZGlzcGxheTotbXMtZmxleDtcclxuXHRkaXNwbGF5OmZsZXg7XHJcbn1cclxuXHJcbi5kaXNwbGF5X2lubGluZV9mbGV4ICgpIHtcclxuXHRkaXNwbGF5Oi13ZWJraXQtaW5saW5lLWZsZXg7XHJcblx0ZGlzcGxheTotbW96LWlubGluZS1mbGV4O1xyXG5cdGRpc3BsYXk6LW1zLWlubGluZS1mbGV4O1xyXG5cdGRpc3BsYXk6aW5saW5lLWZsZXg7XHJcbn1cclxuXHJcbi5mbGV4X2RpcmVjdGlvbiAoQGQ6cm93KSB7XHJcblx0LXdlYmtpdC1mbGV4LWRpcmVjdGlvbjpAZDtcclxuXHQtbW96LWZsZXgtZGlyZWN0aW9uOkBkO1xyXG5cdC1tcy1mbGV4LWRpcmVjdGlvbjpAZDtcclxuXHRmbGV4LWRpcmVjdGlvbjpAZDtcclxufVxyXG5cclxuLmZsZXhfd3JhcCAoQGQ6bm93cmFwKSB7XHJcblx0LXdlYmtpdC1mbGV4LXdyYXA6QGQ7XHJcblx0LW1vei1mbGV4LXdyYXA6QGQ7XHJcblx0LW1zLWZsZXgtd3JhcDpAZDtcclxuXHRmbGV4LXdyYXA6QGQ7XHJcbn1cclxuXHJcbi5qdXN0aWZ5X2NvbnRlbnQgKEBkOmZsZXgtc3RhcnQpIHtcclxuXHQtd2Via2l0LWp1c3RpZnktY29udGVudDpAZDtcclxuXHQtbW96LWp1c3RpZnktY29udGVudDpAZDtcclxuXHQtbXMtanVzdGlmeS1jb250ZW50OkBkO1xyXG5cdGp1c3RpZnktY29udGVudDpAZDtcclxufVxyXG5cclxuLmFsaWduX2l0ZW1zIChAZDpzdHJldGNoKSB7XHJcblx0LXdlYmtpdC1hbGlnbi1pdGVtczpAZDtcclxuXHQtbW96LWFsaWduLWl0ZW1zOkBkO1xyXG5cdC1tcy1hbGlnbi1pdGVtczpAZDtcclxuXHRhbGlnbi1pdGVtczpAZDtcclxufVxyXG5cclxuLmFsaWduX2NvbnRlbnQgKEBkOnN0cmV0Y2gpIHtcclxuXHQtd2Via2l0LWFsaWduLWNvbnRlbnQ6QGQ7XHJcblx0LW1vei1hbGlnbi1jb250ZW50OkBkO1xyXG5cdC1tcy1hbGlnbi1jb250ZW50OkBkO1xyXG5cdGFsaWduLWNvbnRlbnQ6QGQ7XHJcbn1cclxuXHJcbi5jbF9hZnRlciAoKSB7XHJcblx0Y29udGVudDonLic7XHJcblx0ZGlzcGxheTpibG9jaztcclxuXHRjbGVhcjpib3RoO1xyXG5cdGhlaWdodDowO1xyXG5cdHZpc2liaWxpdHk6aGlkZGVuO1xyXG5cdG92ZXJmbG93OmhpZGRlbjtcclxufVxyXG5cclxuLnZhbGlnbl9hZnRlciAoKSB7XHJcblx0Y29udGVudDonJztcclxuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcclxuXHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XHJcblx0aGVpZ2h0OjEwMCU7XHJcbn1cclxuXHJcbi5wb3NfYWJzIChAdzoxZW07IEBoOjFlbTsgQGw6MDsgQHI6MDsgQHQ6MDsgQGI6MCkge1xyXG5cdHdpZHRoOkB3O1xyXG5cdGhlaWdodDpAaDtcclxuXHRtYXJnaW46YXV0byAhaW1wb3J0YW50O1xyXG5cdHBvc2l0aW9uOmFic29sdXRlO1xyXG5cdGxlZnQ6QGw7XHJcblx0cmlnaHQ6QHI7XHJcblx0dG9wOkB0O1xyXG5cdGJvdHRvbTpAYjtcclxufVxyXG5cclxuLmJkYnggKCkge1xyXG5cdC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94O1xyXG5cdC1tb3otYm94LXNpemluZzpib3JkZXItYm94O1xyXG5cdGJveC1zaXppbmc6Ym9yZGVyLWJveDtcclxufVxyXG5cclxuLmN0YnggKCkge1xyXG5cdC13ZWJraXQtYm94LXNpemluZzpjb250ZW50LWJveDtcclxuXHQtbW96LWJveC1zaXppbmc6Y29udGVudC1ib3g7XHJcblx0Ym94LXNpemluZzpjb250ZW50LWJveDtcclxufVxyXG5cclxuLmJkcnMgKEByYWRpdXM6QGJkcnNfd2lkdGgpIHtcclxuXHQtd2Via2l0LWJvcmRlci1yYWRpdXM6QHJhZGl1cztcclxuXHRib3JkZXItcmFkaXVzOkByYWRpdXM7XHJcbn1cclxuXHJcbi5ieHNoIChAeDowOyBAeTowOyBAYmx1cjo1cHg7IEBzcHJlZDowOyBAYWxwaGE6LjA1KSB7XHJcblx0LXdlYmtpdC1ib3gtc2hhZG93OkB4IEB5IEBibHVyIEBzcHJlZCByZ2JhKDAsIDAsIDAsIEBhbHBoYSk7XHJcblx0Ym94LXNoYWRvdzpAeCBAeSBAYmx1ciBAc3ByZWQgcmdiYSgwLCAwLCAwLCBAYWxwaGEpO1xyXG59XHJcblxyXG4uYnhzaF93aGl0ZSAoQHg6MDsgQHk6MDsgQGJsdXI6NXB4OyBAc3ByZWQ6MDsgQGFscGhhOi4wNSkge1xyXG5cdC13ZWJraXQtYm94LXNoYWRvdzpAeCBAeSBAYmx1ciBAc3ByZWQgcmdiYSgyNTUsIDI1NSwgMjU1LCBAYWxwaGEpO1xyXG5cdGJveC1zaGFkb3c6QHggQHkgQGJsdXIgQHNwcmVkIHJnYmEoMjU1LCAyNTUsIDI1NSwgQGFscGhhKTtcclxufVxyXG5cclxuLmJ4c2hpIChAeDowOyBAeTowOyBAYmx1cjo1cHg7IEBzcHJlZDowOyBAYWxwaGE6LjA1KSB7XHJcblx0LXdlYmtpdC1ib3gtc2hhZG93Omluc2V0IEB4IEB5IEBibHVyIEBzcHJlZCByZ2JhKDAsIDAsIDAsIEBhbHBoYSk7XHJcblx0Ym94LXNoYWRvdzppbnNldCBAeCBAeSBAYmx1ciBAc3ByZWQgcmdiYSgwLCAwLCAwLCBAYWxwaGEpO1xyXG59XHJcblxyXG4uYnhzaGlfd2hpdGUgKEB4OjA7IEB5OjA7IEBibHVyOjVweDsgQHNwcmVkOjA7IEBhbHBoYTouMDUpIHtcclxuXHQtd2Via2l0LWJveC1zaGFkb3c6aW5zZXQgQHggQHkgQGJsdXIgQHNwcmVkIHJnYmEoMjU1LCAyNTUsIDI1NSwgQGFscGhhKTtcclxuXHRib3gtc2hhZG93Omluc2V0IEB4IEB5IEBibHVyIEBzcHJlZCByZ2JhKDI1NSwgMjU1LCAyNTUsIEBhbHBoYSk7XHJcbn1cclxuXHJcbi5ieHNoX25vbmUgKCkge1xyXG5cdC13ZWJraXQtYm94LXNoYWRvdzpub25lO1xyXG5cdGJveC1zaGFkb3c6bm9uZTtcclxufVxyXG5cclxuLnRyYW5zKEB0cmFuczowKSB3aGVuIG5vdCAoQHRyYW5zID0gMCkge1xyXG4gICAgLXdlYmtpdC10cmFuc2l0aW9uOkB0cmFucztcclxuICAgIC1tb3otdHJhbnNpdGlvbjpAdHJhbnM7XHJcbiAgICAtbXMtdHJhbnNpdGlvbjpAdHJhbnM7XHJcbiAgICAtby10cmFuc2l0aW9uOkB0cmFucztcclxuICAgIHRyYW5zaXRpb246QHRyYW5zO1xyXG59XHJcblxyXG4uYXJyb3dfdG9wIChAaDo1cHg7IEB3OjVweCkge1xyXG5cdGJvcmRlci10b3A6MCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1sZWZ0OkB3IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLXJpZ2h0OkB3IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDpAaDtcclxuXHRib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO1xyXG59XHJcblxyXG4uYXJyb3dfYm90dG9tIChAaDo1cHg7IEB3OjVweCkge1xyXG5cdGJvcmRlci1ib3R0b206MCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1sZWZ0OkB3IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLXJpZ2h0OkB3IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLXRvcC13aWR0aDpAaDtcclxuXHRib3JkZXItdG9wLXN0eWxlOnNvbGlkO1xyXG59XHJcblxyXG4uYXJyb3dfbGVmdCAoQGg6NXB4OyBAdzo1cHgpIHtcclxuXHRib3JkZXItbGVmdDowIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLXRvcDpAdyBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1ib3R0b206QHcgc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHRib3JkZXItcmlnaHQtd2lkdGg6QGg7XHJcblx0Ym9yZGVyLXJpZ2h0LXN0eWxlOnNvbGlkO1xyXG59XHJcblxyXG4uYXJyb3dfcmlnaHQgKEBoOjVweDsgQHc6NXB4KSB7XHJcblx0Ym9yZGVyLXJpZ2h0OjAgc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHRib3JkZXItdG9wOkB3IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLWJvdHRvbTpAdyBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1sZWZ0LXdpZHRoOkBoO1xyXG5cdGJvcmRlci1sZWZ0LXN0eWxlOnNvbGlkO1xyXG59XHJcblxyXG4uYXJyb3dfdG9wX2xlZnQgKEBoOjVweDsgQHc6NXB4KSB7XHJcblx0Ym9yZGVyLXJpZ2h0OkB3IHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLWxlZnQ6MCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1ib3R0b206MCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci10b3Atd2lkdGg6QGg7XHJcblx0Ym9yZGVyLXRvcC1zdHlsZTpzb2xpZDtcclxufVxyXG5cclxuLmFycm93X3RvcF9yaWdodCAoQGg6NXB4OyBAdzo1cHgpIHtcclxuXHRib3JkZXItYm90dG9tOkBoIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLXRvcDowIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLWxlZnQ6MCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1yaWdodC13aWR0aDpAdztcclxuXHRib3JkZXItcmlnaHQtc3R5bGU6c29saWQ7XHJcbn1cclxuXHJcbi5hcnJvd19ib3R0b21fbGVmdCAoQGg6NXB4OyBAdzo1cHgpIHtcclxuXHRib3JkZXItdG9wOkBoIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLXJpZ2h0OjAgc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHRib3JkZXItYm90dG9tOjAgc29saWQgdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcclxuXHRib3JkZXItbGVmdC13aWR0aDpAdztcclxuXHRib3JkZXItbGVmdC1zdHlsZTpzb2xpZDtcclxufVxyXG5cclxuLmFycm93X2JvdHRvbV9yaWdodCAoQGg6NXB4OyBAdzo1cHgpIHtcclxuXHRib3JkZXItbGVmdDpAdyBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci10b3A6MCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdGJvcmRlci1yaWdodDowIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XHJcblx0Ym9yZGVyLWJvdHRvbS13aWR0aDpAaDtcclxuXHRib3JkZXItYm90dG9tLXN0eWxlOnNvbGlkO1xyXG59XHJcblxyXG4uZGVmYXVsdF9saXN0IChAdzo0cHg7IEBoOjRweDsgQG06MCAxMHB4IDAgMDsgQGJkcnM6NTAlKSB7XHJcblx0bGlzdC1zdHlsZS10eXBlOm5vbmU7XHJcblx0XHJcblx0PiBsaSB7XHJcblx0XHRkaXNwbGF5OmJsb2NrO1xyXG5cdFx0cG9zaXRpb246cmVsYXRpdmU7XHJcblx0XHRcclxuXHRcdCY6YmVmb3JlIHtcclxuXHRcdFx0Y29udGVudDonJztcclxuXHRcdFx0bGluZS1oZWlnaHQ6MWVtO1xyXG5cdFx0XHRkaXNwbGF5OmlubGluZS1ibG9jaztcclxuXHRcdFx0d2lkdGg6QHc7XHJcblx0XHRcdGhlaWdodDpAaDtcclxuXHRcdFx0bWFyZ2luOkBtO1xyXG5cdFx0XHR2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7XHJcblx0XHRcdHBvc2l0aW9uOnJlbGF0aXZlO1xyXG5cdFx0XHQuYmRycyhAYmRycyk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcblxyXG4uZGVmYXVsdF9ibG9ja3F1b3RlICgpIHtcclxuXHRwYWRkaW5nOjA7XHJcblx0bWFyZ2luOjAgMCAyMHB4O1xyXG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xyXG5cdHF1b3Rlczpub25lO1xyXG5cdC5iZCgwKTtcclxuXHQudGFjO1xyXG5cdFxyXG5cdCY6YmVmb3JlLFxyXG5cdCY6YWZ0ZXIge1xyXG5cdFx0Y29udGVudDpub25lO1xyXG5cdH1cclxuXHRcclxuXHRwOmxhc3Qtb2YtdHlwZSB7XHJcblx0XHRtYXJnaW46MDtcclxuXHRcdHBhZGRpbmc6MDtcclxuXHR9XHJcblx0XHJcblx0Y2l0ZSB7XHJcblx0XHRkaXNwbGF5OmJsb2NrO1xyXG5cdFx0bWFyZ2luLXRvcDoxMHB4O1xyXG5cdH1cclxufVxyXG5cclxuLmRlZmF1bHRfdGFibGUgKCkge1xyXG5cdGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTtcclxuXHRib3JkZXItc3BhY2luZzowO1xyXG5cdHdpZHRoOjEwMCU7XHJcblx0bWFyZ2luLWJvdHRvbTpAbGluZV9oZWlnaHRfcGFkO1xyXG5cdFxyXG5cdGNhcHRpb24ge1xyXG5cdFx0dGV4dC1hbGlnbjpjZW50ZXI7XHJcblx0XHRwYWRkaW5nOjIwcHg7XHJcblx0fVxyXG5cdFxyXG5cdHRoLFxyXG5cdHRkIHtcclxuXHRcdC5iZCgwKTsgLyogZm9yIGd1dGVuYmVyZyAqL1xyXG5cdFx0LmJkYjtcclxuXHR9XHJcblx0XHJcblx0LyogZm9yIGd1dGVuYmVyZyBzdGFydCAqL1xyXG5cdCYuaXMtc3R5bGUtc3RyaXBlcyB7XHJcblx0XHQuYmQoMCk7XHJcblx0XHRcclxuXHRcdHRyOm50aC1jaGlsZChvZGQpIHtcclxuXHRcdFx0YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvKiBmb3IgZ3V0ZW5iZXJnIGVuZCAqL1xyXG5cdFxyXG5cdHRoZWFkIHtcclxuXHRcdHRyIHtcclxuXHRcdFx0JjpmaXJzdC1jaGlsZCB7XHJcblx0XHRcdFx0dGgge1xyXG5cdFx0XHRcdFx0LmJkdDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdFx0XHJcblx0XHRcdHRoLFxyXG5cdFx0XHR0ZCB7XHJcblx0XHRcdFx0cGFkZGluZzoxN3B4IDI1cHg7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0KyB0Ym9keSB7XHJcblx0XHRcdHRyIHtcclxuXHRcdFx0XHQmOmZpcnN0LWNoaWxkIHtcclxuXHRcdFx0XHRcdHRoLFxyXG5cdFx0XHRcdFx0dGQge1xyXG5cdFx0XHRcdFx0XHQuYmR0KDApO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHR0Ym9keSB7XHJcblx0XHR0ciB7XHJcblx0XHRcdCY6Zmlyc3QtY2hpbGQge1xyXG5cdFx0XHRcdHRoLFxyXG5cdFx0XHRcdHRkIHtcclxuXHRcdFx0XHRcdC5iZHQ7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0XHR0aCxcclxuXHRcdFx0dGQge1xyXG5cdFx0XHRcdHBhZGRpbmc6MTNweCAyNXB4O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdFxyXG5cdHRmb290IHtcclxuXHRcdHRyIHtcclxuXHRcdFx0dGgsXHJcblx0XHRcdHRkIHtcclxuXHRcdFx0XHRwYWRkaW5nOjE2cHggMjVweDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHRcclxuXHR0aCxcclxuXHR0ZCB7XHJcblx0XHQuYmRiO1xyXG5cdH1cclxuXHRcclxuXHR0ciB7XHJcblx0XHR0aCxcclxuXHRcdHRkIHtcclxuXHRcdFx0JjpmaXJzdC1jaGlsZCB7XHJcblx0XHRcdFx0LmJkbDtcclxuXHRcdFx0fVxyXG5cdFx0XHRcclxuXHRcdFx0JjpsYXN0LWNoaWxkIHtcclxuXHRcdFx0XHQuYmRyO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdFxyXG5cdGNhcHRpb24ge1xyXG5cdFx0dGV4dC1hbGlnbjpjZW50ZXI7XHJcblx0XHRwYWRkaW5nOjIwcHg7XHJcblx0fVxyXG59XHJcblxyXG4uZGVmYXVsdF9idXR0b24gKCkge1xyXG5cdGRpc3BsYXk6aW5saW5lLWJsb2NrO1xyXG5cdHBhZGRpbmc6MCAzNXB4O1xyXG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xyXG5cdHdoaXRlLXNwYWNlOm5vd3JhcDtcclxuXHQudGFjO1xyXG5cdC5iZChAYnV0X2JkX3dpZHRoKTtcclxuXHQuYmRycyhAYnV0X2JkcnNfd2lkdGgpO1xyXG59XHJcblxyXG4uZGVmYXVsdF9zZWxlY3QgKEBwbHVnaW46MCkge1xyXG5cdGxpbmUtaGVpZ2h0OjFlbTtcclxuXHR0ZXh0LWluZGVudDowLjAxcHg7XHJcblx0dGV4dC1vdmVyZmxvdzonJztcclxuXHRtaW4td2lkdGg6MTAwcHg7XHJcblx0bWF4LXdpZHRoOjEwMCU7XHJcblx0aGVpZ2h0OkBpbnB1dF9oZWlnaHQ7XHJcblx0cGFkZGluZzpAaW5wdXRfcGFkIDQwcHggQGlucHV0X3BhZCAyNXB4O1xyXG5cdGJhY2tncm91bmQtcG9zaXRpb246MTAwJSBjZW50ZXI7XHJcblx0YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O1xyXG5cdC13ZWJraXQtYXBwZWFyYW5jZTpub25lO1xyXG5cdC1tb3otYXBwZWFyYW5jZTpub25lO1xyXG5cdC1tcy1hcHBlYXJhbmNlOm5vbmU7XHJcblx0YXBwZWFyYW5jZTpub25lICFpbXBvcnRhbnQ7XHJcblx0LmJkO1xyXG5cdC5iZHJzKEBiZHJzX3dpZHRoKTtcclxuXHRcclxuXHQmIHdoZW4gKEBwbHVnaW4gPiAwKSB7XHJcblx0XHRiYWNrZ3JvdW5kLWltYWdlOnVybCgnLi4vLi4vLi4vLi4vaW1nL3NlbGVjdC5wbmcnKTtcclxuXHR9XHJcblx0XHJcblx0JiB3aGVuIChAcGx1Z2luID0gMCkge1xyXG5cdFx0YmFja2dyb3VuZC1pbWFnZTp1cmwoJy4uLy4uLy4uL2ltZy9zZWxlY3QucG5nJyk7XHJcblx0fVxyXG59Il0sImZpbGUiOiJwbHVnaW4tYWRhcHRpdmUuY3NzIn0= */
