fdq
Version:
Finite Domain reduction system and solver by qFox
1 lines • 159 kB
JavaScript
"use strict";function _toConsumableArray(r){if(Array.isArray(r)){for(var e=0,n=Array(r.length);e<r.length;e++)n[e]=r[e];return n}return Array.from(r)}function _classCallCheck(r,e){if(!(r instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function r(r,e){for(var n=0;n<e.length;n++){var t=e[n];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(r,t.key,t)}}return function(e,n,t){return n&&r(e.prototype,n),t&&r(e,t),e}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r},FDQ=function(){function r(r,e,n){return r|(1<<1+(0|n)-(0|e))-1<<e}function e(r,e){return"number"==typeof r?n(r,e):i(r,e)}function n(r,e){return r>=so?t(r,e):a(r,e)}function t(r,e){return(r^so)===e}function a(r,e){return!(e<Zi||e>uo)&&0!=(r&1<<e)}function i(r,e){return o(r,e)!==eo}function o(r,e){for(var n=r.length,t=0;t<n&&l(r,t)<=e;t+=Gi)if(l(r,t+Wi)>=e)return t;return eo}function u(r){return"number"==typeof r?s(r):v(r)}function s(r){return r>=so?f(r):c(r)}function f(r){return r^so}function c(r){var e=ur(r);return r===1<<e?e:io}function v(r){if(r.length!==Gi)return io;var e=l(r,ji);return e===l(r,Pi)?e:io}function l(r,e){return r.charCodeAt(e)<<16|r.charCodeAt(e+1)}function d(r){return String.fromCharCode(r>>>16&65535,65535&r)}function p(r,e){return String.fromCharCode(r>>>16&65535,65535&r,e>>>16&65535,65535&e)}function h(r){if(!r.length)return[];(r=r.slice(0)).sort(function(r,e){return r-e});for(var e=[],n=void 0,t=void 0,a=0;a<r.length;a++){var i=r[a];0===a?(t=i,n=i):(i>n+1&&(e.push(t,n),t=i),n=i)}return e.push(t,n),e}function g(r){return"number"==typeof r?m(r):y(r)}function m(r){return r>=so?b(r):k(r)}function b(r){return[r^so]}function k(r){for(var e=[],n=0;n<uo;++n)(r&1<<n>>>0)>0&&e.push(n);return e}function y(r){for(var e=[],n=0,t=r.length;n<t;n+=Gi)for(var a=l(r,n),i=l(r,n+Wi);a<=i;++a)e.push(a);return e}function x(r,e){return"number"==typeof r?_(r,e):E(r,e)}function _(r,e){return r>=so?w(r,e):S(r,e)}function w(r,e){var n=r^so;return e.indexOf(n)>=0?n:io}function S(r,e){for(var n=0;n<e.length;++n){var t=e[n];if(t<=uo&&(r&1<<t)>0)return t}return io}function E(r,e){for(var n=0;n<e.length;n++){var t=e[n];if(i(r,t))return t}return io}function A(r){return r?r.length===Gi?de(r):(r=N(r),r=D(r),de(r)):Qi}function N(r){if(!r)return Xi;var e=r.length;if(e<=Gi)return r;for(var n=l(r,0),t=l(r,0+Wi),a=Xi,i=Xi,o=Gi;o<e;o+=Gi){var u=l(r,o);u<n||u===n&&l(r,o+Wi)<t?a+=r[o]+r[o+1]+r[o+2]+r[o+3]:i+=r[o]+r[o+1]+r[o+2]+r[o+3]}return""+N(a)+r[0]+r[1]+r[0+Wi]+r[0+Wi+1]+N(i)}function D(r){if(!r)return Xi;var e=r.length;if(e===Gi)return r;for(var n=r[ji]+r[ji+1],t=l(r,Pi),a=Pi,i=Gi;i<e;i+=Gi){var o=l(r,i),u=l(r,i+Wi);o<=t+1?u>t&&(t=u,a=i+Wi):(n+=r[a]+r[a+1]+r[i]+r[i+1],t=u,a=i+Wi)}return n+r[a]+r[a+1]}function C(r,e){if(r===e)return r;var n="number"==typeof r,t="number"==typeof e;return n&&t?O(r,e):n?R(r,e):t?R(e,r):B(r,e)}function O(r,e){var n=e>=so;return r>=so?n?M(r,e):V(r,e):n?V(e,r):T(r,e)}function V(r,e){var n=r^so;return n<=uo&&e&1<<n?r:Qi}function M(r,e){return r===e?r:Qi}function T(r,e){return ge(r&e)}function R(r,e){return r>=so?q(r,e):L(r,e)}function q(r,e){for(var n=r^so,t=0,a=e.length;t<a;t+=Gi){var i=l(e,t),o=l(e,t+Wi);if(n<i)break;if(n<=o)return r}return Qi}function L(r,e){for(var n=Qi,t=0,a=e.length;t<a;t+=Gi){var i=l(e,t);if(i>uo)break;for(var o=l(e,t+Wi),u=i,s=$i(uo,o);u<=s;++u){var f=1<<u;r&f&&(n|=f)}}return ge(n)}function B(r,e){var n=r.length,t=e.length;if(0==(n|t))return Qi;for(var a=Xi,i=0,o=0,u=l(r,ji),s=l(r,Pi),f=l(e,ji),c=l(e,Pi);;)if(s<f){if((i+=Gi)>=n)break;u=l(r,i),s=l(r,i+Wi)}else if(c<u){if((o+=Gi)>=t)break;f=l(e,o),c=l(e,o+Wi)}else{var v=$i(s,c);if(a+=p(zi(u,f),v),v+=2,u=f=v,s<v){if((i+=Gi)>=n)break;u=l(r,i),s=l(r,i+Wi)}if(c<v){if((o+=Gi)>=t)break;f=l(e,o),c=l(e,o+Wi)}}return a===Xi?Qi:de(a)}function I(r,n){return e(r,n)?Yr(n):re()}function U(r){return"number"==typeof r?r>=so?"soldom(["+(r^so)+","+(r^so)+"])":"numdom(["+ae(r)+"])":"string"==typeof r?"strdom(["+ue(r)+"])":r instanceof Array?"arrdom(["+r+"])":"???dom("+r+")"}function F(r,e){if(r&&e){var n=void 0;do{if(n=0,r.length>Gi){var t=j(r,P(e));n+=r.length-t.length,r=t}if(e.length>Gi){var a=j(e,P(r));n+=e.length-a.length,e=a}}while(0!==n)}return[r,e]}function j(r,e){for(var n=r[ji]+r[ji+1],t=l(r,Pi),a=Pi,i=Gi,o=r.length;i<o;i+=Gi){var u=l(r,i),s=l(r,i+Wi);u-t>e&&(n+=r[a]+r[a+1]+r[i]+r[i+1]),t=s,a=i+Wi}return n+=r[a]+r[a+1]}function P(r){for(var e=ro,n=0,t=r.length;n<t;n+=Gi){var a=l(r,n),i=1+l(r,n+Wi)-a;i<e&&(e=i)}return e}function $(r,e){return"number"==typeof r&&(r=fe(r)),"number"==typeof e&&(e=fe(e)),z(r,e)}function z(r,e){for(var n=Xi,t=0,a=r.length;t<a;t+=Gi)n+=H(e,l(r,t),l(r,t+Wi));return A(n)}function H(r,e,n){for(var t=Xi,a=0,i=r.length;a<i;a+=Gi){var o=l(r,a),u=l(r,a+Wi);t+=p($i(ro,e*o),$i(ro,n*u))}return t}function J(r,e){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return"number"==typeof r&&(r=fe(r)),"number"==typeof e&&(e=fe(e)),W(r,e,n)}function W(r,e){for(var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],t=Xi,a=0,i=e.length;a<i;a+=Gi)t+=G(r,l(e,a),l(e,a+Wi),n);return A(t)}function G(r,e,n,t){for(var a=Xi,i=0,o=r.length;i<o;i+=Gi){var u=l(r,i),s=l(r,i+Wi);if(n>0){var f=u/n,c=e>0?s/e:ro,v=Ji(f),d=Hi(c);v<=d?a+=p(v,d):t&&(a+=p(d,d))}}return a}function Q(r,e){return"number"==typeof r&&(r=fe(r)),"number"==typeof e&&(e=fe(e)),X(r,e)}function X(r,e){for(var n=Xi,t=0,a=e.length;t<a;t+=Gi)n+=Y(r,l(e,t),l(e,t+Wi));return A(n)}function Y(r,e,n){for(var t=Xi,a=0,i=r.length;a<i;a+=Gi){var o=l(r,a),u=l(r,a+Wi),s=n?o/n:Zi,f=e?u/e:ro,c=Ji(s),v=Hi(f);c<=v&&(t+=p(c,v))}return t}function K(r){return"number"==typeof r?Z(r):er(r)}function Z(r){return r>=so?1:rr(r)}function rr(r){switch(r){case 0:return 0;case 1:case 2:return 1;case 3:return 2}return(1&r)+(r>>1&1)+(r>>2&1)+(r>>3&1)+(r>>4&1)+(r>>5&1)+(r>>6&1)+(r>>7&1)+(r>>8&1)+(r>>9&1)+(r>>10&1)+(r>>11&1)+(r>>12&1)+(r>>13&1)+(r>>14&1)+(r>>15&1)+(r>>16&1)+(r>>17&1)+(r>>18&1)+(r>>19&1)+(r>>20&1)+(r>>21&1)+(r>>22&1)+(r>>23&1)+(r>>24&1)+(r>>25&1)+(r>>26&1)+(r>>27&1)+(r>>28&1)+(r>>29&1)+(r>>30&1)+(r>>31&1)|0}function er(r){for(var e=0,n=0,t=r.length;n<t;n+=Gi)e+=1+l(r,n+Wi)-l(r,n);return e}function nr(r){if("number"==typeof r){if(r>=so)return r^so;r=fe(r)}return tr(r)}function tr(r){if(!r)return io;for(var e=er(r),n=Hi(e/2),t=void 0,a=void 0,i=0,o=r.length;i<o;i+=Gi){t=l(r,i);var u=1+(a=l(r,i+Wi))-t;if(n<u)break;n-=u}return t+n}function ar(r){return"number"==typeof r?ir(r):sr(r)}function ir(r){return r>=so?or(r):ur(r)}function or(r){return r^so}function ur(r){if(1==(0|r))return 0;if(2==(0|r))return 1;if(3==(0|r))return 0;switch((r&-r)%37|0){case 0:return-1;case 1:return 0;case 2:return 1;case 3:return 26;case 4:return 2;case 5:return 23;case 6:return 27;case 7:return 0;case 8:return 3;case 9:return 16;case 10:return 24;case 11:return 30;case 12:return 28;case 13:return 11;case 14:return 0;case 15:return 13;case 16:return 4;case 17:return 7;case 18:return 17;case 19:return 0;case 20:return 25;case 21:return 22;case 22:return-1;case 23:return 15;case 24:return 29;case 25:return 10;case 26:return 12;case 27:return 6;case 28:return 0;case 29:return 21;case 30:return 14;case 31:return 9;case 32:return 5;case 33:return 20;case 34:return 8;case 35:return 19}return 18}function sr(r){return r?l(r,ji):io}function fr(r){return"number"==typeof r?cr(r):dr(r)}function cr(r){return r>=so?vr(r):lr(r)}function vr(r){return r^so}function lr(r){var e=30;switch(0|r){case 0:return-1;case 1:return 0;case 2:case 3:return 1}do{if(r&1<<e)break;e=e-1|0}while((0|e)>=0);return 0|e}function dr(r){return r?l(r,r.length-Wi):io}function pr(r){var e=r.length;return 0===e?io:r[e-1]}function hr(r){return"number"==typeof r&&r>=so}function gr(r){return void 0===Yi&&(Yi=Yr(0)),r===Yi}function mr(r){return!br(r)}function br(r){return 0===ar(r)}function kr(r){return void 0===Ki&&(Ki=Kr(0,1)),r===Ki}function yr(r){return xr(r)&&2===K(r)}function xr(r){return kr(r)||!gr(r)&&br(r)}function _r(r,e){return e?Lr(r,0):qr(r,0)}function wr(r){return r===Qi}function Sr(r,e){return"number"==typeof r?Er(r,e):Dr(r,e)}function Er(r,e){return r>=so?Ar(r,e):ge(Nr(r,e))}function Ar(r,e){return(r^so)>=e?Qi:r}function Nr(r,e){switch(e){case 0:return 0;case 1:return 1&r;case 2:return 3&r;case 3:return 7&r;case 4:return 15&r;case 5:return 31&r;case 6:return 63&r;case 7:return 127&r;case 8:return 255&r;case 9:return 511&r;case 10:return 1023&r;case 11:return 2047&r;case 12:return 4095&r;case 13:return 8191&r;case 14:return 16383&r;case 15:return 32767&r;case 16:return 65535&r;case 17:return 131071&r;case 18:return 262143&r;case 19:return 524287&r;case 20:return 1048575&r;case 21:return 2097151&r;case 22:return 4194303&r;case 23:return 8388607&r;case 24:return 16777215&r;case 25:return 33554431&r;case 26:return 67108863&r;case 27:return 134217727&r;case 28:return 268435455&r;case 29:return 536870911&r;case 30:return 1073741823&r}return r}function Dr(r,e){for(var n=0,t=r.length;n<t;n+=Gi){var a=l(r,n),i=l(r,n+Wi);if(a>=e)return n?de(r.slice(0,n)):Qi;if(e<=i){if(0===n&&e===a+1){var o=r.slice(0,Wi);return de(o+o)}return de(r.slice(0,n+Wi)+d(e-1))}}return r}function Cr(r,e){return"number"==typeof r?Or(r,e):Tr(r,e)}function Or(r,e){return r>=so?Vr(r,e):de(Mr(r,e))}function Vr(r,e){return(r^so)<=e?Qi:r}function Mr(r,e){switch(e){case 0:return 2147483646&r;case 1:return 2147483644&r;case 2:return 2147483640&r;case 3:return 2147483632&r;case 4:return 2147483616&r;case 5:return 2147483584&r;case 6:return 2147483520&r;case 7:return 2147483392&r;case 8:return 2147483136&r;case 9:return 2147482624&r;case 10:return 2147481600&r;case 11:return 2147479552&r;case 12:return 2147475456&r;case 13:return 2147467264&r;case 14:return 2147450880&r;case 15:return 2147418112&r;case 16:return 2147352576&r;case 17:return 2147221504&r;case 18:return 2146959360&r;case 19:return 2146435072&r;case 20:return 2145386496&r;case 21:return 2143289344&r;case 22:return 2139095040&r;case 23:return 2130706432&r;case 24:return 2113929216&r;case 25:return 2080374784&r;case 26:return 2013265920&r;case 27:return 1879048192&r;case 28:return 1610612736&r;case 29:return 1073741824&r;case 30:return 0}return e<0?r:0}function Tr(r,e){for(var n=0,t=r.length;n<t;n+=Gi){var a=l(r,n),i=l(r,n+Wi);if(a>e)return de(n?r.slice(n):r);if(i===e)return n>=t-Gi?Qi:de(r.slice(n+Gi));if(e<=i)return de(d(e+1)+r.slice(n+Wi))}return Qi}function Rr(r,e){return e<=Zi?r:e>ro?re():Cr(r,e-1)}function qr(r,e){return e>=ro?r:e<Zi?re():Sr(r,e+1)}function Lr(r,e){return"number"==typeof r?Br(r,e):de(Fr(r,e))}function Br(r,e){return r>=so?Ir(r,e):Ur(r,e)}function Ir(r,e){return e===(r^so)?Qi:r}function Ur(r,e){if(e>30)return de(r);var n=1<<e;return ge((r|n)^n)}function Fr(r,e){for(var n=-1,t=-1,a=0,i=r.length;a<i;a+=Gi){var o=l(r,a);if(e<o)break;var u=l(r,a+Wi);if(e<=u)return jr(r,i,a,o,u,e,n,t);n=o,t=u}return r}function jr(r,e,n,t,a,i,o,u){if(e===Gi){if(a-t==1)return((t===i?a:t)|so)>>>0;if(t===a)return Qi}else if(n&&e===2*Gi&&t===a&&o===u)return(o|so)>>>0;if(n===e-Gi&&i===a){if(t===a&&u<=uo){var s=e-Gi;return be(r.slice(0,s),s)}if(a-1<=uo)return be(r.slice(0,-Wi)+d(a-1),e)}var f=r.slice(0,n),c=r.slice(n+Gi);return a===i?t===i?f+c:f+p(t,a-1)+c:t===i?f+p(t+1,a)+c:f+p(t,i-1)+p(i+1,a)+c}function Pr(r,e){var n="number"==typeof r,t="number"==typeof e;return n&&t?$r(r,e):n?Wr(r,e):t?Wr(e,r):Xr(r,e)}function $r(r,e){return r>=so?e>=so?zr(r,e):Hr(r,e):e>=so?Hr(e,r):Jr(r,e)}function zr(r,e){return r!==e}function Hr(r,e){var n=r^so;return n>uo||0==(e&1<<n)}function Jr(r,e){return 0==(r&e)}function Wr(r,e){return r>=so?Gr(r,e):Qr(r,e)}function Gr(r,e){for(var n=r^so,t=0,a=e.length;t<a;t+=Gi){var i=l(e,t),o=l(e,t+Wi);if(n<i)return!0;if(n<=o)return!1}return!0}function Qr(r,e){for(var n=0,t=e.length,a=0;a<=uo;++a)if(r&1<<a){for(;n<t;){var i=l(e,n),o=l(e,n+Wi);if(a>=i&&a<=o)return!1;if(i>uo)return!0;if(i>a)break;n+=Gi}if(n>=t)return!0}return!0}function Xr(r,e){for(var n=r.length,t=e.length,a=0,i=0,o=l(r,ji),u=l(r,Pi),s=l(e,ji),f=l(e,Pi);;)if(u<s){if((a+=Gi)>=n)break;o=l(r,a),u=l(r,a+Wi)}else{if(!(f<o))return!1;if((i+=Gi)>=t)break;s=l(e,i),f=l(e,i+Wi)}return!0}function Yr(r){return(r|so)>>>0}function Kr(r,e){return r===e?Yr(r):e<=uo?Zr(r,e):p(r,e)}function Zr(r,e){return(1<<1+e-r)-1<<r}function re(){return Qi}function ee(r){return 0===r?Yr(0):1===r?Kr(0,1):ke([0,0,r,r])}function ne(r){return r|=r>>1,r|=r>>2,r|=r>>4,r|=r>>8,r|=r>>16}function te(r,e){return"number"==typeof r?ae(r):"string"==typeof r?ue(r):e?r.slice(0):r}function ae(r){return r>=so?ie(r):oe(r)}function ie(r){var e=r^so;return[e,e]}function oe(r){if(r===Qi)return[];var e=[],n=-1,t=-1;if(1&r&&(n=0,t=0),2&r&&(0!==n&&(n=1),t=1),4&r&&(0===t?(e.push(0,0),n=2):1!==t&&(n=2),t=2),8&r&&(t<0?n=3:2!==t&&(e.push(n,t),n=3),t=3),r>=16)for(var a=4;a<=uo;++a)r&1<<a&&(t<0?n=a:t!==a-1&&(e.push(n,t),n=a),t=a);return e.push(n,t),e}function ue(r){if(r===Qi)return[];for(var e=[],n=0,t=r.length;n<t;n+=Gi){var a=l(r,n),i=l(r,n+Wi);e.push(a,i)}return e}function se(r){return"number"==typeof r?fe(r):"string"==typeof r?r:le(r)}function fe(r){return r>=so?ce(r):ve(r)}function ce(r){var e=r^so;return p(e,e)}function ve(r){if(r===Qi)return Xi;var e=Xi,n=-1,t=-1;if(1&r&&(n=0,t=0),2&r&&(0!==n&&(n=1),t=1),4&r&&(0===t?(e=p(0,0),n=2):1!==t&&(n=2),t=2),8&r&&(t<0?n=3:2!==t&&(e+=p(n,t),n=3),t=3),r>=16)for(var a=4;a<=uo;++a)r&1<<a&&(t<0?n=a:t!==a-1&&(e+=p(n,t),n=a),t=a);return e+=p(n,t)}function le(r){for(var e=Xi,n=0,t=r.length;n<t;n+=oo)e+=p(r[n],r[n+1]);return e}function de(r){return"number"==typeof r?he(r):me(r)}function pe(r){return r instanceof Array&&(r=le(r)),de(r)}function he(r){return r>=so?r:ge(r)}function ge(r){var e=u(r);return e===io?r:Yr(e)}function me(r){var e=r.length;if(!e)return Qi;var n=l(r,0),t=l(r,e-Wi);return e===Gi&&n===t?Yr(n):t<=uo?be(r,e):r}function be(e,n){if(0===n)return Qi;for(var t=l(e,0),a=l(e,0+Wi),i=r(Qi,t,a),o=Gi;o<n;o+=Gi)i=r(i,l(e,o),l(e,o+Wi));return i}function ke(r){var e=r.length;return 0===e?Qi:e===oo&&r[0]===r[1]?Yr(r[0]):pr(r)<=uo?ye(r,e):le(r)}function ye(e,n){for(var t=0,a=0;a<n;a+=oo)t=r(t,e[a],e[a+1]);return t}function xe(r,e){if(!r)return Qi;if(!e)return Qi;if(0===ar(r)&&0===ar(e))return Kr(0,fr(r));var n="number"==typeof e;if("number"==typeof r){if(n)return de(we(r,e));var t=de(Ee(r,e));return t===Xi?Qi:t}var a=void 0,i=de(A(a=n?De(r,e):_e(r,e)));return i===Xi?Qi:i}function _e(r,e){var n=F(r,e);r=n[0],e=n[1];for(var t=Xi,a=0,i=r.length;a<i;a+=Gi)t+=Oe(l(r,a),l(r,a+Wi),e);return t}function we(r,e){if(r>=so){var n=r^so;if(e>=so){var t=n-(e^so);return t<0?Qi:Yr(t)}return n<=uo?Ne(n,n,e):Ce(n,n,e)}return Se(r,e)}function Se(r,e){if(n(r,0)&&n(e,0))return ne(r);for(var t=0;0==(r&1<<t);)++t;for(var a=t,i=t,o=1<<++t,u=Qi;o<=r&&t<=uo;)(o&r)>0&&(i!==t-1&&(u|=Ne(a,i,e),a=t),i=t),o=1<<++t;return u|Ne(a,i,e)}function Ee(r,e){if(r>=so){var n=r^so;return n<=uo?Ve(n,n,e):Oe(n,n,e)}return Ae(r,e)}function Ae(r,e){if(r>=so){var t=r^so;return Ve(t,t,e)}if(n(r,0)&&0===ar(e))return ne(r);for(var a=0;0==(r&1<<a);)++a;for(var i=a,o=a,u=1<<++a,s=Qi;u<=r&&a<=uo;)(u&r)>0&&(o!==a-1&&(s|=Ve(i,o,e),i=a),o=a),u=1<<++a;return s|Ve(i,o,e)}function Ne(r,e,n){if(n>=so){var t=n^so;return Te(r,e,t,t)}for(var a=0;0==(n&1<<a);)++a;for(var i=a,o=a,u=1<<++a,s=Qi;u<=n&&a<=uo;)(u&n)>0&&(o!==a-1&&(s|=Te(r,e,i,o),i=a),o=a),u=1<<++a;return s|Te(r,e,i,o)}function De(r,e){if(0===ar(r)&&0===ar(e))return Kr(0,fr(r));for(var n=Xi,t=0,a=r.length;t<a;t+=Gi)n+=Ce(l(r,t),l(r,t+Wi),e);return n}function Ce(r,e,n){if(n===Qi)return Qi;if(n>=so){var t=n^so;return Me(r,e,t,t)}for(var a=0;0==(n&1<<a);)++a;for(var i=a,o=a,u=1<<++a,s=Xi;u<=n&&a<=uo;)(u&n)>0&&(o!==a-1&&(s+=Me(r,e,i,o),i=a),o=a),u=1<<++a;return s+Me(r,e,i,o)}function Oe(r,e,n){for(var t=Xi,a=0,i=n.length;a<i;a+=Gi)t+=Me(r,e,l(n,a),l(n,a+Wi));return t}function Ve(r,e,n){for(var t=Qi,a=0,i=n.length;a<i;a+=Gi)t|=Te(r,e,l(n,a),l(n,a+Wi));return t}function Me(r,e,n,t){var a=e-n;return a>=Zi?p(zi(Zi,r-t),a):Xi}function Te(r,e,n,t){var a=e-n;return a>=Zi?Zr(zi(Zi,r-t),a):Qi}function Re(r,e){if(!r)return Qi;if(!e)return Qi;var n="number"==typeof r,t="number"==typeof e,a=void 0;if(n&&t){if(Le(r,e))return de(Ie(r,e));a=Be(r,e)}else a=n?Fe(r,e):t?Fe(e,r):qe(r,e);return de(A(a))}function qe(r,e){var n=F(r,e);r=n[0],e=n[1];for(var t=Xi,a=0,i=r.length;a<i;a+=Gi)t+=Pe(l(r,a),l(r,a+Wi),e);return t}function Le(r,e){return fr(r)+fr(e)<=uo}function Be(r,e){if(r>=so){var n=r^so;return je(n,n,e)}for(var t=0;0==(r&1<<t);)++t;for(var a=t,i=t,o=1<<++t,u=Xi;o<=r&&t<=uo;)(o&r)>0&&(i!==t-1&&(u+=je(a,i,e),a=t),i=t),o=1<<++t;return u+je(a,i,e)}function Ie(r,e){if(r>=so){var n=r^so;return Ue(n,n,e)}for(var t=0;0==(r&1<<t);)++t;for(var a=t,i=t,o=1<<++t,u=Qi;o<=r&&t<=uo;)(o&r)>0&&(i!==t-1&&(u|=Ue(a,i,e),a=t),i=t),o=1<<++t;return u|Ue(a,i,e)}function Ue(r,e,n){if(n>=so){var t=n^so;return ze(r,e,t,t)}for(var a=0;0==(n&1<<a);)++a;for(var i=a,o=a,u=1<<++a,s=Qi;u<=n&&a<=uo;)(u&n)>0&&(o!==a-1&&(s|=ze(r,e,i,o),i=a),o=a),u=1<<++a;return s|ze(r,e,i,o)}function Fe(r,e){if(r>=so){var n=r^so;return Pe(n,n,e)}for(var t=0;0==(r&1<<t);)++t;for(var a=t,i=t,o=1<<++t,u=Xi;o<=r&&t<=uo;)(o&r)>0&&(i!==t-1&&(u+=Pe(a,i,e),a=t),i=t),o=1<<++t;return u+Pe(a,i,e)}function je(r,e,n){if(n>=so){var t=n^so;return $e(r,e,t,t)}for(var a=0;0==(n&1<<a);)++a;for(var i=a,o=a,u=1<<++a,s=Xi;u<=n&&a<=uo;)(u&n)>0&&(o!==a-1&&(s+=$e(r,e,i,o),i=a),o=a),u=1<<++a;return s+$e(r,e,i,o)}function Pe(r,e,n){for(var t=Xi,a=0,i=n.length;a<i;a+=Gi)t+=$e(r,e,l(n,a),l(n,a+Wi));return t}function $e(r,e,n,t){var a=r+n;return a<=ro?p(a,$i(ro,e+t)):Xi}function ze(r,e,n,t){return Zr(r+n,e+t)}function He(r){r.log||(r.log=po.log.bind(po)),r.error||(r.error=po.error.bind(po)),r.warn||(r.warn=po.warn.bind(po)),r.trace||(r.trace=po.trace.bind(po)),r.time||(r.time=po.time.bind(po)),r.timeEnd||(r.timeEnd=po.timeEnd.bind(po)),po=r}function Je(){return po}function We(){for(var r=arguments.length,e=Array(r),n=0;n<r;n++)e[n]=arguments[n];throw new Error(e.join(": "))}function Ge(r,e,n){var t=0|e||ko;t||We("fixme");var a=Math.max(Ze(t),0|n),i={_class:"$trie",buffer:Qe(t,a),bits:a,lastNode:go,count:0};if(r)for(var o=0,u=r.length;o<u;++o)rn(i,r[o],o);return i}function Qe(r,e){switch(e){case wo:return new Uint8Array(r);case 16:return new Uint16Array(r);case Eo:return new Uint32Array(r);case Ao:return new Float64Array(r)}We("Unsupported bit size")}function Xe(r){var e=r.lastNode+bo;for(r.lastNode=e;e+bo>=r.buffer.length;)Ye(r);return e}function Ye(r){var e=r.buffer.length,n=~~(1.1*e);e+yo>n&&(n=yo+e),Ke(r,n)}function Ke(r,e){var n=Ze(e);r.bits=Math.max(r.bits,n);var t=Qe(e,r.bits);t.set(r.buffer,0),r.buffer=t}function Ze(r){return r<256?wo:r<65536?So:r<4294967296?Eo:Ao}function rn(r,e,n){return an(r,n),en(r,go,e,0,e.length,n)}function en(r,e,n,t,a,i){if(t>=a){var o=r.buffer,u=e+mo,s=r.buffer[u];return s||++r.count,o[u]=i+1,s-1}var f=n.charCodeAt(t)-32;return e=on(r,e,f%10),e=on(r,e,Math.floor(f/10)),en(r,e,n,t+1,a,i)}function nn(r,e,n){return an(r,n),tn(r,go,e+1,n)}function tn(r,e,n,t){if(0===n){var a=r.buffer,i=e+mo,o=r.buffer[i];return o||++r.count,a[i]=t+1,o-1}return e=on(r,e,n%10),n=Math.floor(n/10),tn(r,e,n,t)}function an(r,e){var n=Ze(e);n>r.bits&&(r.bits=n,Ke(r,r.buffer.length))}function on(r,e,n){e+=n;var t=r.buffer[e];return t||(t=Xe(r),r.buffer[e]=t),t}function un(r,e){return sn(r,go,e,0,e.length)}function sn(r,e,n,t,a){var i=r.buffer;if(t>=a)return i[e+mo]-1;var o=n.charCodeAt(t)-32;return(e=i[e+o%10])&&(e=i[e+Math.floor(o/10)])?sn(r,e,n,t+1,a):xo}function fn(r,e){return un(r,e)!==xo}function cn(r,e){return vn(r,go,e+1)}function vn(r,e,n){var t=r.buffer;return 0===n?t[e+mo]-1:(e=t[e+n%10])?(n=Math.floor(n/10),vn(r,e,n)):xo}function ln(){return{_class:"$config",allVarNames:[],_varNamesTrie:Ge(),varStratConfig:_n(),valueStratName:"min",targetedVars:"all",varDistOptions:{},beforeSpace:void 0,afterSpace:void 0,rngCode:"",_defaultRng:void 0,allConstraints:[],constantCache:{},initialDomains:[],_propagators:[],_varToPropagators:[],_constrainedAway:[],_constraintHash:{}}}function dn(r,e){var n=r.varStratConfig,t=r.valueStratName,a=r.targetedVars,i=r.varDistOptions,o=r.constantCache,u=r.allVarNames,s=r.allConstraints,f=r.initialDomains,c=r._propagators,v=r._varToPropagators,l=r._constrainedAway;return{_class:"$config",_varNamesTrie:Ge(u),varStratConfig:n,valueStratName:t,targetedVars:a instanceof Array?a.slice(0):a,varDistOptions:JSON.parse(JSON.stringify(i)),rngCode:r.rngCode,_defaultRng:r.rngCode?void 0:r._defaultRng,constantCache:o,allVarNames:u.slice(0),allConstraints:s.slice(0),initialDomains:e?e.map(de):f,_propagators:c&&c.slice(0),_varToPropagators:v&&v.slice(0),_constrainedAway:l&&l.slice(0),_constraintHash:{}}}function pn(r){return hn(r,!0)}function hn(r,e){return xn(r,e,Kr(Zi,ro))}function gn(r,e,n){return e===n?kn(r,e):mn(r,!0,e,n)}function mn(r,e,n,t){return xn(r,e,Kr(n,t))}function bn(r,e,n,t,a){return xn(r,e,pe(n),t,a)}function kn(r,e){return void 0!==r.constantCache[e]?r.constantCache[e]:yn(r,!0,e)}function yn(r,e,n){return xn(r,e,Kr(n,n))}function xn(r,e,n,t){if(!(arguments.length>4&&void 0!==arguments[4]&&arguments[4])){var a=r.allVarNames.length;!0===e?e="__"+String(a)+"__":("string"!=typeof e&&We("Var names should be a string or anonymous, was: "+JSON.stringify(e)),e||We("Var name cannot be empty string"),String(parseInt(e,10))===e&&We("Don't use numbers as var names ("+e+")")),a<100&&fn(r._varNamesTrie,e)&&We("Var name already part of this config. Probably a bug?",e);var i=u(n);return i===eo||r.constantCache[i]||(r.constantCache[i]=a),r.initialDomains[a]=n,r.allVarNames.push(e),rn(r._varNamesTrie,e,a),a}var o=un(r._varNamesTrie,e);r.initialDomains[o]=n}function _n(r){return{_class:"$var_strat_config",type:r&&r.type||"naive",priorityByName:r&&r.priorityByName,_priorityByIndex:void 0,inverted:!(!r||!r.inverted),fallback:r&&r.fallback}}function wn(r,e,n,t){"varStratOverride"===e&&We("deprecated, should be wiped internally");var a=!1;switch(e){case"varStrategyFallback":a=!0;case"varStrategy":"function"==typeof n&&We("functions no longer supported",n),"string"==typeof n&&We("strings should be passed on as {type:value}",n),"object"!==(void 0===n?"undefined":_typeof(n))&&We("varStrategy should be object",n),n.name&&We("name should be type"),n.dist_name&&We("dist_name should be type");var i=_n(n);if(a){for(var o=r.varStratConfig;o.fallback;)o=o.fallback;o.fallback=i}else for(r.varStratConfig=i;i.fallback;)i.fallback=_n(i.fallback),i=i.fallback;break;case"valueStrategy":r.valueStratName=n;break;case"targeted_var_names":n&&n.length||We("ONLY_USE_WITH_SOME_TARGET_VARS"),r.targetedVars=n;break;case"varStratOverrides":for(var u in n)wn(r,"varValueStrat",n[u],u);break;case"varValueStrat":if(r.varDistOptions||(r.varDistOptions={}),r.varDistOptions[t]=n,"markov"===n.valtype){var s=n.matrix;s||(n.expandVectorsWith?s=n.matrix=[{vector:[]}]:We("FDO: markov var missing distribution (needs matrix or expandVectorsWith)"));for(var f=0,c=s.length;f<c;++f){var v=s[f];v.boolean&&We("row.boolean was deprecated in favor of row.boolVarName"),void 0!==v.booleanId&&We("row.booleanId is no longer used, please use row.boolVarName");var l=v.boolVarName;"function"==typeof l&&(l=l(n)),l&&("string"!=typeof l&&We("row.boolVarName, if it exists, should be the name of a var or a func that returns that name, was/got: "+l+" ("+(void 0===l?"undefined":_typeof(l))+")"),v._boolVarIndex=un(r._varNamesTrie,l))}}break;case"beforeSpace":r.beforeSpace=n;break;case"afterSpace":r.afterSpace=n;break;case"var":return We("REMOVED. Replace `var` with `varStrategy`");case"val":return We("REMOVED. Replace `var` with `valueStrategy`");case"rng":"string"==typeof n?r.rngCode=n:"number"==typeof n?r.rngCode="return "+n+";":r._defaultRng=n;break;default:We("unknown option")}}function Sn(r,e){r._propagators.push(e)}function En(r){for(var e=new Array(r.allVarNames.length),n=r._propagators,t=r.initialDomains,a=0,i=n.length;a<i;++a){var o=n[a];An(o.index1,t,e,a),o.index2>=0&&An(o.index2,t,e,a),o.index3>=0&&An(o.index3,t,e,a)}r._varToPropagators=e}function An(r,e,n,t){hr(e[r])||(n[r]?n[r].indexOf(t)<0&&n[r].push(t):n[r]=[t])}function Nn(r,e,n,t){var a=e,i=void 0,o=!1;switch(e){case"reifier":o=!0,a=t;case"plus":case"min":case"ring-mul":case"ring-div":case"mul":case"sum":case"product":var u="product"===e||"sum"===e,s=void 0;void 0===(i=u?t:n[2])?(s=o?gn(r,0,1):pn(r),i=r.allVarNames[s]):"number"==typeof i?(s=kn(r,i),i=r.allVarNames[s]):"string"!=typeof i?We("expecting result var name to be absent or a number or string: `"+i+"`"):(s=un(r._varNamesTrie,i))<0&&We("Vars must be defined before using them ("+i+")"),u?t=s:n[2]=i;break;case"distinct":case"eq":case"neq":case"lt":case"lte":case"gt":case"gte":break;default:We("UNKNOWN_PROPAGATOR "+e)}if(Dn(r,n),On(r,a+"|"+n.join(","),i))return i;var f=Ln(e,Cn(r,n),t);return r.allConstraints.push(f),i}function Dn(r,e){for(var n=0,t=e.length;n<t;++n)if("number"==typeof e[n]){var a=kn(r,e[n]);e[n]=r.allVarNames[a]}}function Cn(r,e){for(var n=[],t=0,a=e.length;t<a;++t){var i=e[t],o=un(r._varNamesTrie,i);o===xo&&We("CONSTRAINT_VARS_SHOULD_BE_DECLARED","name=",i,"index=",t,"names=",e),n[t]=o}return n}function On(r,e,n){r._constraintHash||(r._constraintHash={});var t=r._constraintHash[e];if(!0===t){if(void 0!==n)throw new Error("How is this possible?");return!0}return void 0!==t?(Nn(r,"eq",[n,t]),!0):(r._constraintHash[e]=n||!0,!1)}function Vn(r){var e=r.allConstraints;r._propagators=[];for(var n=0,t=e.length;n<t;++n){var a=e[n];if(a.varNames){Je().warn("saw constraint.varNames, converting to varIndexes, log out result and update test accordingly"),a.varIndexes=a.varNames.map(function(e){return un(r._varNamesTrie,e)});var i=a.param;delete a.param,delete a.varNames,a.param=i}if(-1===a.varIndexes[1])throw new Error("nope? "+ho(a));Mn(r,a.name,a.varIndexes,a.param,a)}}function Mn(r,e,n,t,a){switch(e){case"plus":return Vt(r,n[0],n[1],n[2]);case"min":return Mt(r,n[0],n[1],n[2]);case"ring-mul":return Tt(r,n[0],n[1],n[2]);case"ring-div":return Et(r,n[0],n[1],n[2]);case"mul":return St(r,n[0],n[1],n[2]);case"sum":return Rt(r,n.slice(0),t);case"product":return qt(r,n.slice(0),t);case"distinct":return Dt(r,n.slice(0));case"reifier":return kt(r,t,n[0],n[1],n[2]);case"neq":return Nt(r,n[0],n[1]);case"eq":return yt(r,n[0],n[1]);case"gte":return At(r,n[0],n[1]);case"lte":return wt(r,n[0],n[1]);case"gt":return _t(r,n[0],n[1]);case"lt":return xt(r,n[0],n[1]);default:We("UNEXPECTED_NAME: "+e)}}function Tn(r){var e=r.varDistOptions;for(var n in e){var t=un(r._varNamesTrie,n);t<0&&We("Found markov var options for an unknown var name (name="+n+")");var a=e[n];if(a&&"markov"===a.valtype)return Lt(r,t)}}function Rn(r){for(var e=r.varStratConfig;e;){if(e.priorityByName){for(var n={},t=e.priorityByName,a=0,i=t.length;a<i;++a)n[un(r._varNamesTrie,t[a])]=i-a;e._priorityByIndex=n}e=e.fallback}}function qn(r){r._varNamesTrie||(r._varNamesTrie=Ge(r.allVarNames)),r._defaultRng||(r._defaultRng=r.rngCode?Function(r.rngCode):Math.random),Vn(r),Tn(r),En(r),Rn(r)}function Ln(r,e,n){return{_class:"$constraint",name:r,varIndexes:e,param:n}}function Bn(r,n,t,a){for(var i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],o=[],u=[],s=0,f=0;f<n.length;f++){var c=n[f];if(c>0){var v=t[f];e(r,v)&&(s+=c,u.push(s),o.push(v))}}if(0!==u.length)return 1===u.length?o[0]:In(a,s,u,o,i)}function In(r,e,n,t,a){var i=r(),o=i;a&&(o=i*e);for(var u=0;u<n.length&&!(n[u]>o);u++);return t[u]}function Un(r,e,n,t){var a=e.valueStratName,i=e.varDistOptions,o=e.allVarNames[n],u=i[o]&&i[o].valtype;return u&&(a=u),"function"==typeof a?a(r,n,t):Fn(a,r,e,n,t)}function Fn(r,e,n,t,a){switch(r){case"max":return $n(e,t,a);case"markov":return Qn(e,n,t,a);case"mid":return zn(e,t,a);case"min":case"naive":return Pn(e,t,a);case"minMaxCycle":return Wn(e,t,a);case"list":return jn(e,n,t,a);case"splitMax":return Jn(e,t,a);case"splitMin":return Hn(e,t,a);case"throw":return We("Throwing an error because val-strat requests it")}We("unknown next var func",r)}function jn(r,e,n,t){var a=r.vardoms[n],i=e.allVarNames[n],o=e.varDistOptions[i],u=o.list,s="";o.fallback&&(s=o.fallback.valtype);var f=u;switch("function"==typeof u&&(f=u(r,i,t)),t){case No:var c=x(a,f);return c===io?Fn(s||"naive",r,e,n,No):(r._lastChosenValue=c,Yr(c));case Do:return r._lastChosenValue>=0?Lr(a,r._lastChosenValue):Fn(s||"naive",r,e,n,Do)}return Co}function Pn(r,e,n){var t=r.vardoms[e];switch(n){case No:var a=ar(t);return r._lastChosenValue=a,Yr(a);case Do:return Lr(t,r._lastChosenValue)}return Co}function $n(r,e,n){var t=r.vardoms[e];switch(n){case No:var a=fr(t);return r._lastChosenValue=a,Yr(a);case Do:return Lr(t,r._lastChosenValue)}return Co}function zn(r,e,n){var t=r.vardoms[e];switch(n){case No:var a=nr(t);return r._lastChosenValue=a,Yr(a);case Do:return Lr(t,r._lastChosenValue)}return Co}function Hn(r,e,n){var t=r.vardoms[e],a=fr(t);switch(n){case No:var i=ar(t),o=i+Math.floor((a-i)/2);return r._lastChosenValue=o,C(t,Kr(i,o));case Do:return C(t,Kr(r._lastChosenValue+1,a))}return Co}function Jn(r,e,n){var t=r.vardoms[e],a=ar(t);switch(n){case No:var i=fr(t),o=a+Math.floor((i-a)/2);return r._lastChosenValue=o,C(t,Kr(o+1,i));case Do:return C(t,Kr(a,r._lastChosenValue))}return Co}function Wn(r,e,n){return Gn(e)?Pn(r,e,n):$n(r,e,n)}function Gn(r){return r%2==0}function Qn(r,e,n,t){var a=r.vardoms[n];switch(t){case No:var i=e.allVarNames[n],o=e.varDistOptions[i],u=o.expandVectorsWith,s=o.random||e._defaultRng,f=ht("number"==typeof u,o.legend,a),c=f.length;if(!c)return Co;var v=Bn(a,mt(r,o.matrix,u,c),f,s);return null==v?Co:(r._lastChosenValue=v,Yr(v));case Do:return Lr(a,r._lastChosenValue)}return Co}function Xn(r,e){var n=e.varStratConfig;return Kn(r,e,Yn(n.type),n)}function Yn(r){switch(r){case"naive":return null;case"size":return Zn;case"min":return rt;case"max":return et;case"markov":return nt;case"list":return tt;case"throw":return We("Throwing an error because var-strat requests it")}return We("unknown next var func",r)}function Kn(r,e,n,t){var a=0,i=r._unsolved,o=i[a++];if(n)for(var u=i.length;a<u;a++){var s=i[a];Oo===n(r,e,s,o,t)&&(o=s)}return o}function Zn(r,e,n,t){var a=K(r.vardoms[n])-K(r.vardoms[t]);return a<0?Oo:a>0?Mo:Vo}function rt(r,e,n,t){var a=ar(r.vardoms[n])-ar(r.vardoms[t]);return a<0?Oo:a>0?Mo:Vo}function et(r,e,n,t){var a=fr(r.vardoms[n])-fr(r.vardoms[t]);return a>0?Oo:a<0?Mo:Vo}function nt(r,e,n,t,a){var i=e.varDistOptions,o=e.allVarNames[n];if(i[o]&&"markov"===i[o].valtype)return Oo;var u=e.allVarNames[t];return i[u]&&"markov"===i[u].valtype?Mo:at(r,e,n,t,a.fallback)}function tt(r,e,n,t,a){var i=a._priorityByIndex,o=i[n],u=i[t];if(!o&&!u)return at(r,e,n,t,a.fallback);var s=a.inverted;return u?o&&o>u?s?Mo:Oo:s?Oo:Mo:s?Mo:Oo}function at(r,e,n,t,a){if(!a)return Vo;var i=a.type;switch(i){case"size":return Zn(r,e,n,t);case"min":return rt(r,e,n,t);case"max":return et(r,e,n,t);case"markov":return nt(r,e,n,t,a);case"list":return tt(r,e,n,t,a);case"throw":return We("nope")}return We("Unknown var dist fallback name: "+i)}function it(r,e,n,t,a,i){i=!0;var o=r.varDistOptions,s=e||r.initialDomains,f=r.allVarNames,c=i?function(r){return ot(f[r])}:t?st:ut,v=f.map(function(r,e){var n=ft(s[e]),t=": "+c(e)+" = "+n,a=o[r];if(a&&("list"!==a.valtype||a.list&&a.list.length))switch(t+=" @"+a.valtype,a.valtype){case"markov":"expandVectorsWith"in a&&(t+="expand("+(a.expandVectorsWith||0)+")"),"legend"in a&&(t+=" legend("+a.legend.join(" ")+")"),"matrix"in a&&(t+=" matrix("+JSON.stringify(a.matrix).replace(/"/g,"")+")");break;case"list":"function"==typeof a.list?t+=" prio(???func???)":t+=" prio("+a.list.join(" ")+")";break;case"max":case"mid":case"min":case"minMaxCycle":case"naive":case"splitMax":case"splitMin":break;default:Je().warn("Unknown value strategy override: "+a.valtype),t+=" @? "+JSON.stringify(a)}return i||r===String(e)||(t+=" # "+ot(r)),t}),l=n?[]:r.allConstraints.map(function(r){var e=r.varIndexes,n=e.map(c);e.forEach(function(r,e){var t=u(s[r]);t>=0&&(n[e]=t)});var o="";if("number"==typeof r.param){var f=u(s[r.param]);o=f>=0?f:c(r.param)}var v="",l="";switch(r.name){case"reifier":var d=void 0;switch(r.param){case"eq":d="==";break;case"neq":d="!=";break;case"lt":d="<";break;case"lte":d="<=";break;case"gt":d=">";break;case"gte":d=">=";break;default:We("what dis param: "+d)}v+=n[2]+" = "+n[0]+" "+d+"? "+n[1];break;case"plus":v+=n[2]+" = "+n[0]+" + "+n[1];break;case"min":v+=n[2]+" = "+n[0]+" - "+n[1];break;case"ring-mul":v+=n[2]+" = "+n[0]+" * "+n[1];break;case"ring-div":v+=n[2]+" = "+n[0]+" / "+n[1];break;case"mul":v+=n[2]+" = "+n[0]+" * "+n[1];break;case"sum":v+=o+" = sum("+n.join(" ")+")";break;case"product":v+=o+" = product("+n.join(" ")+")";break;case"markov":v+="# markov("+n+")";break;case"distinct":v+="distinct("+n+")";break;case"eq":v+=n[0]+" == "+n[1];break;case"neq":v+=n[0]+" != "+n[1];break;case"lt":v+=n[0]+" < "+n[1];break;case"lte":v+=n[0]+" <= "+n[1];break;case"gt":v+=n[0]+" > "+n[1];break;case"gte":v+=n[0]+" >= "+n[1];break;default:Je().warn("unknown constraint: "+r.name),v+="unknown = "+JSON.stringify(r)}var p=v;if((v.indexOf(i?"'":"$")<0||"distinct"===r.name&&n.length<=1||("product"===r.name||"sum"===r.name)&&0===n.length)&&(t||(l+=(l?", ":" # ")+"dropped; constraint already solved ("+v+") ("+e.map(c)+", "+c(r.param)+")"),v=""),!t||a){if(n.forEach(function(r,n){"string"==typeof r&&(p=p.replace(r,ft(s[e[n]])))}),"number"==typeof r.param&&"string"==typeof o&&(p=p.replace(o,ft(s[r.param]))),v||!t){for(var h=Math.max(0,30-v.length);h>=0;--h)v+=" ";v+=" # "+p}v+=l}return v}).filter(function(r){return!!r}),d=n?r._propagators.map(function(r){var e=r.index1,n=r.index2,a=r.index3,i=e>=0?u(s[e]):-1,o=i>=0?i:e<0?void 0:c(e),f=n>=0?u(s[n]):-1,v=f>=0?f:n<0?void 0:c(n),l=a>=0?u(s[a]):-1,d=l>=0?l:a<0?void 0:c(a),p="",h="";switch(r.name){case"reified":var g=void 0;switch(r.arg3){case"eq":g="==";break;case"neq":g="!=";break;case"lt":g="<";break;case"lte":g="<=";break;case"gt":g=">";break;case"gte":g=">=";break;default:We("what dis param: "+g)}p+=d+" = "+o+" "+g+"? "+v;break;case"eq":p+=o+" == "+v;break;case"lt":p+=o+" < "+v;break;case"lte":p+=o+" <= "+v;break;case"mul":p+=d+" = "+o+" * "+v;break;case"div":p+=d+" = "+o+" / "+v;break;case"neq":p+=o+" != "+v;break;case"min":p+=d+" = "+o+" - "+v;break;case"ring":switch(r.arg1){case"plus":p+=d+" = "+o+" + "+v;break;case"min":p+=d+" = "+o+" - "+v;break;case"ring-mul":p+=d+" = "+o+" * "+v;break;case"ring-div":p+=d+" = "+o+" / "+v;break;default:throw new Error("Unexpected ring op:"+r.arg1)}break;case"markov":return"";default:Je().warn("unknown propagator: "+r.name),p+="unknown = "+JSON.stringify(r)}var m=p;return p.indexOf("$")<0&&(t||(h+=(h?", ":" # ")+"dropped; constraint already solved ("+p+")"),p=""),t||("string"==typeof o&&(m=m.replace(o,ft(s[e]))),"string"==typeof v&&(m=m.replace(v,ft(s[n]))),"string"==typeof d&&(m=m.replace(d,ft(s[a]))),p+=" ".repeat(Math.max(0,30-p.length))+" # initial: "+m,p+=h),p}).filter(function(r){return!!r}):[];return["## constraint problem export","@custom var-strat = "+JSON.stringify(r.varStratConfig),"@custom val-strat = "+r.valueStratName,v.join("\n")||"# no vars",l.join("\n")||d.join("\n")||"# no constraints","@custom targets "+("all"===r.targetedVars?" = all":"("+r.targetedVars.map(function(e){return c(un(r._varNamesTrie,e))}).join(" ")+")"),"## end of export"].join("\n\n")}function ot(r){return"number"==typeof r?r:"'"+r+"'"}function ut(r){return"$"+r+"$"}function st(r){var e=r.toString(36);return e[0]<"a"&&(e="$"+e),e}function ft(r){var e=te(r);if(2===e.length&&e[0]===e[1])return String(e[0]);if(e.length>2){for(var n=[],t=0,a=e.length;t<a;t+=2)n.push("["+e[t]+" "+e[t+1]+"]");e=n}return"["+e.join(" ")+"]"}function ct(r){switch(void 0===r?"undefined":_typeof(r)){case"object":if(!r)return null;if(r instanceof Array)return r.map(function(r){return ct(r)});var e={};for(var n in r)e[n]=ct(r[n]);return e;case"function":var t={__THIS_IS_A_FUNCTION:1,__source:r.toString()};for(var a in r)t[a]=ct(r[a]);return t;case"string":case"number":case"boolean":case"undefined":return r}We("config value what?",r)}function vt(r,e,n,t){for(var a=[];r.more&&a.length<n;)ia(r,e,t),"end"!==r.status&&a.push(r.space);return a}function lt(r,e,n,t){t>=to&&Je().time(" - FD Solution Construction Time");for(var a=0;a<r.length;++a){var i=Da(r[a],e);n.push(i),t>=ao&&(Je().log(" - FD solution() ::::::::::::::::::::::::::::"),Je().log(JSON.stringify(i)),Je().log(" ::::::::::::::::::::::::::::"))}t>=to&&Je().timeEnd(" - FD Solution Construction Time")}function dt(r,e,n){function t(){return r[vr]}function a(e){return r[vr+e]}function i(){++vr}function o(r,e){t()!==r&&cr("Expected "+(e?e+" ":"")+"`"+r+"`, found `"+t()+"`"),i()}function u(){for(;vr<lr&&f(t());)i()}function s(){for(;!h();){var r=t();if(l(r))i();else{if(!v(r))break;E()}}}function f(r){return" "===r||"\t"===r}function c(r){return"\n"===r||"\r"===r}function v(r){return"#"===r}function l(r){return f(r)||c(r)}function d(){if(u(),vr<lr){var r=t();"#"===r?E():c(r)?i():cr("Expected EOL but got `"+t()+"`")}}function p(){if(vr>=lr)return!0;var r=t();return"#"===r||c(r)}function h(){return vr>=lr}function g(){i(),u();var r=m();if(u(),","===t()){r=[r];do{i(),u(),r.push(m()),u()}while(!h()&&","===t())}"="===t()&&(i(),u());var n=x();u();var a=_();d(),"string"==typeof r?e.decl(r,n,a,!0):r.forEach(function(r){return e.decl(r,n,a,!0)})}function m(){return"'"===t()?b():k()}function b(){o("'","start of Quoted identifier");for(var e=vr,n=t();!h()&&!c(n)&&"'"!==n;)i(),n=t();return h()&&cr("Quoted identifier must be closed"),e===vr&&cr("Expected to parse identifier, found none"),o("'","end of Quoted identifier"),r.slice(e,vr-1)}function k(){var e=vr;for(t()>="0"&&t()<="9"&&cr("Unquoted ident cant start with number");!h()&&y(t());)i();return e===vr&&cr("Expected to parse identifier, found none ["+t()+"]"),r.slice(e,vr)}function y(r){return r>="a"&&r<="z"||r>="A"&&r<="Z"||r>="0"&&r<="9"||"_"===r||"$"===r||"-"===r||r>"~"}function x(){var r=t(),e=void 0;switch(r){case"[":if(o("[","domain start"),u(),e=[],"["===t())do{i(),u();var n=q();u(),","===t()&&(i(),u());var a=q();u(),o("]","range-end"),u(),e.push(n,a),","===t()&&(i(),u())}while("["===t());else if("]"!==t())do{u();var s=q();u(),","===t()&&(i(),u());var f=q();u(),e.push(s,f),","===t()&&(i(),u())}while("]"!==t());return o("]","domain-end"),0===e.length&&cr("Empty domain [] in dsl, this problem will always reject"),e;case"*":return i(),[Zi,ro];case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":var c=q();return u(),[c,c]}cr("Expecting valid domain start, found `"+r+"`")}function _(){if("@"===t()){i();for(var e={},n=vr;t()>="a"&&t()<="z";)i();var a=r.slice(n,vr);switch(a){case"list":w(e);break;case"markov":S(e);break;case"max":case"mid":case"min":case"naive":break;case"minMaxCycle":case"splitMax":case"splitMin":default:cr("implement me (var mod) [`"+a+"`]")}return e.valtype=a,e}}function w(e){u(),"prio("!==r.slice(vr,vr+5)&&cr("Expecting the priorities to follow the `@list`"),vr+=5,e.list=nr(),o(")","list end")}function S(e){for(;;){if(u(),"matrix("===r.slice(vr,vr+7)){var n="return "+r.slice(vr+7,vr=r.indexOf(")",vr)),t=Function(n);e.matrix=t(),-1===vr&&cr("The matrix must be closed by a `)` but did not find any")}else if("legend("===r.slice(vr,vr+7))vr+=7,e.legend=nr(),u(),o(")","legend closer");else{if("expand("!==r.slice(vr,vr+7))break;vr+=7,e.expandVectorsWith=q(),u(),o(")","expand closer")}i()}}function E(){for(o("#","comment start");!h()&&!c(t());)i();h()||i()}function A(){if(!V()){var r=T();u();var n=C();switch(u(),n){case"=":N(r);break;case"==":e.eq(r,T());break;case"!=":e.neq(r,T());break;case"<":e.lt(r,T());break;case"<=":e.lte(r,T());break;case">":e.gt(r,T());break;case">=":e.gte(r,T());break;case"&":e.neq(e.mul(r,T()),e.num(0));break;case"!&":e.mul(r,T(),e.num(0));break;case"|":e.neq(e.plus(r,T()),e.num(0));break;case"!|":e.eq(r,e.num(0)),e.eq(T(),e.num(0));break;case"^":e.eq(e.plus(e.isEq(r,0),e.isEq(T(),0)),1);break;case"!^":e.eq(e.isEq(r,e.num(0)),e.isEq(T(),e.num(0)));break;case"->":var t=T();e.lte(e.isNeq(r,e.num(0)),e.isNeq(t,e.num(0))),e.lte(e.isEq(t,e.num(0)),e.isEq(r,e.num(0)));break;case"!->":e.gt(r,e.num(0)),e.eq(T(),e.num(0));break;default:n&&cr("Unknown cop that starts with: ["+n+"]")}d()}}function N(r){var n="string"==typeof r&&!e.hasVar(r);n&&(r=e.decl(r));var a=T(r,n);u();var i=t();return h()||c(i)||v(i)?(e.eq(a,r),a):D(a,r,n)}function D(r,n,t){var a=O();switch(u(),a){case"==?":return t&&e.decl(n,[0,1],void 0,!1,!0),e.isEq(r,T(),n);case"!=?":return t&&e.decl(n,[0,1],void 0,!1,!0),e.isNeq(r,T(),n);case"<?":return t&&e.decl(n,[0,1],void 0,!1,!0),e.isLt(r,T(),n);case"<=?":return t&&e.decl(n,[0,1],void 0,!1,!0),e.isLte(r,T(),n);case">?":return t&&e.decl(n,[0,1],void 0,!1,!0),e.isGt(r,T(),n);case">=?":return t&&e.decl(n,[0,1],void 0,!1,!0),e.isGte(r,T(),n);case"|?":return t&&e.decl(n,[0,1],void 0,!1,!0),Q(n,[r,T()]);case"!|?":return t&&e.decl(n,[0,1],void 0,!1,!0),J(n,[r,T()]);case"&?":return t&&e.decl(n,[0,1],void 0,!1,!0),j(n,[r,T()]);case"!&?":return t&&e.decl(n,[0,1],void 0,!1,!0),z(n,[r,T()]);case"+":return e.plus(r,T(),n);case"-":return e.minus(r,T(),n);case"*":return e.mul(r,T(),n);case"/":return e.div(r,T(),n);default:return void 0!==a&&cr("Expecting right paren or rop, got: `"+a+"`"),r}}function C(){var r=t();switch(r){case"=":return i(),"="===t()?(i(),"=="):"=";case"!":return i(),"="===(r=t())?(i(),"!="):"&"===r?(i(),"!&"):"^"===r?(i(),"!^"):"|"===r?(i(),"!|"):"-"===r&&">"===a(1)?(i(),i(),"!->"):"!";case"<":return i(),"="===t()?(i(),"<="):"<";case">":return i(),"="===t()?(i(),">="):">";case"&":case"|":case"^":return i(),r;case"#":cr("Expected to parse a cop but found a comment instead");break;case"-":if(">"===a(1))return i(),i(),"->"}h()&&cr("Expected to parse a cop but reached eof instead"),cr("Unknown cop char: `"+r+"`")}function O(){var r=t();switch(r){case"=":return i(),"="===t()?(i(),o("?","reifier suffix"),"==?"):"=";case"!":if(i(),"="===t())return o("=","middle part of !=? op"),o("?","reifier suffix"),"!=?";if("|"===t())return o("|","middle part of !|? op"),o("?","reifier suffix"),"!|?";if("&"===t())return o("&","middle part of !&? op"),o("?","reifier suffix"),"!&?";cr("invalid rop char after ! ["+t()+"]");break;case"<":return i(),"="===t()?(i(),o("?","reifier suffix"),"<=?"):(o("?","reifier suffix"),"<?");case">":return i(),"="===t()?(i(),o("?","reifier suffix"),">=?"):(o("?","reifier suffix"),">?");case"|":return i(),o("?","reifier suffix"),"|?";case"&":return i(),o("?","reifier suffix"),"&?";case"+":case"-":case"*":case"/":return i(),r;default:cr("Expecting right paren or rop, got: `"+r+"`")}}function V(){if("all("===r.slice(vr,vr+4))L();else if("distinct("===r.slice(vr,vr+9))B(9);else if("diff("===r.slice(vr,vr+5))B(5);else if("nall("===r.slice(vr,vr+5))X();else if("none("===r.slice(vr,vr+5))Y();else if("same("===r.slice(vr,vr+5))K();else if("some("===r.slice(vr,vr+5))Z();else{if("xnor("!==r.slice(vr,vr+5))return!1;rr()}return!0}function M(){var r=[];for(u();!h()&&")"!==t();){var e=T();r.push(e),u(),","===t()&&(i(),u())}return r}function T(r,n){var a=t(),o=void 0;if("("===a)o=R();else if("["===a){var u=x();o=u[0]===u[1]&&2===u.length?u[0]:e.decl(void 0,u)}else if(a>="0"&&a<="9")o=q();else{var s=m(),f=t();"sum"===s&&"("===f?o=I(r):"product"===s&&"("===f?o=U(r):"all"===s&&"?"===f&&(i(),"("===t())?(n&&e.decl(r,[0,1],void 0,!1,!0),o=F(r)):"diff"===s&&"?"===f&&(i(),"("===t())?(n&&e.decl(r,[0,1],void 0,!1,!0),o=P(r)):"nall"===s&&"?"===f&&(i(),"("===t())?(n&&e.decl(r,[0,1],void 0,!1,!0),o=$(r)):"none"===s&&"?"===f&&(i(),"("===t())?(n&&e.decl(r,[0,1],void 0,!1,!0),o=H(r)):"same"===s&&"?"===f&&(i(),"("===t())?(n&&e.decl(r,[0,1],void 0,!1,!0),o=W(r)):"some"===s&&"?"===f&&(i(),"("===t())?(n&&e.decl(r,[0,1],void 0,!1,!0),o=G(r)):"?"===f?cr("Unknown reifier constraint func: ["+s+"]"):o=s}return o}function R(){o("(","group open"),u();var r=T();if(u(),"="===t()&&"="!==t())return N(r),u(),o(")","group closer"),r;if(")"===t())return i(),r;var e=D(r);return u(),o(")","group closer"),e}function q(){for(var e=vr;t()>="0"&&t()<="9";)i();return e===vr&&cr("Expecting to parse a number but did not find any digits ["+e+","+vr+"]["+t()+"]"),parseInt(r.slice(e,vr),10)}function L(){vr+=4,u();var r=M(),n=e.product(r,e.decl(void 0,[1,ro]));return u(),o(")","ALL closer"),n}function B(r){vr+=r,u();var n=M();n.length||cr("Expecting at least one expression"),e.distinct(n),u(),o(")","distinct call closer"),d()}function I(r){o("(","sum call opener"),u();var n=M(),t=e.sum(n,r);return u(),o(")","sum closer"),t}function U(r){o("(","product call opener"),u();var n=M(),t=e.product(n,r);return u(),o(")","product closer"),t}function F(r){o("(","isall call opener"),u();var e=j(r,M());return u(),o(")","isall closer"),e}function j(r,n){var t=e.decl();return e.product(n,t),e.isNeq(t,e.num(0),r)}function P(r){o("(","isdiff call opener"),u();for(var n=M(),t=[],a=0;a<n.length;++a)for(var i=n[a],s=a+1;s<n.length;++s){var f=n[s];t.push(e.isNeq(i,f))}return e.isEq(e.sum(t),e.num(t.length),r),u(),o(")","isdiff closer"),r}function $(r){o("(","isnall call opener"),u();var e=z(r,M());return u(),o(")","isnall closer"),e}function z(r,n){var t=e.decl();return e.product(n,t),e.isEq(t,e.num(0),r)}function H(r){o("(","isnone call opener"),u();var e=J(r,M());return u(),o(")","isnone closer"),e}function J(r,n){var t=e.decl();return e.sum(n,t),e.isEq(t,e.num(0),r)}function W(r){o("(","issame call opener"),u();for(var n=M(),t=[],a=1;a<n.length;++a){var i=e.decl(void 0,[0,1]);e.isEq(n[a-1],n[a],i),t.push(i)}var s=e.decl();e.sum(t,s);var f=e.isEq(s,e.num(t.length),r);return u(),o(")","issame closer"),f}function G(r){o("(","issome call opener"),u();var e=Q(r,M());return u(),o(")","issome closer"),e}function Q(r,n){var t=e.decl();return e.sum(n,t),e.isNeq(t,e.num(0),r)}function X(){vr+=5,u();var r=M();e.product(r,e.num(0)),u(),o(")","nall closer"),d()}function Y(){vr+=5,u();var r=M();e.sum(r,e.num(0)),u(),o(")","none closer"),d()}function K(){vr+=5,u();for(var r=M(),n=1;n<r.length;++n)e.eq(r[n-1],r[n]);u(),o(")","same closer"),d()}function Z(){vr+=5,u();var r=M();e.sum(r,e.decl(void 0,[1,ro])),u(),o(")","some closer"),d()}function rr(){vr+=5,u();var r=M();u(),o(")","xnor() closer"),d();var n=e.decl(),t=e.decl();e.sum(r,n),e.product(r,t),e.plus(e.isEq(n,0),e.isNeq(t,0),1)}function er(){for(var e=vr;t()>="0"&&t()<="9";)i();return r.slice(e,vr)}function nr(){var r=[];u();for(var e=er();e;)r.push(parseInt(e,10)),u(),","===t()&&(++vr,u()),e=er();return r.length||cr("Expected to parse a list of at least some numbers but found none"),r}function tr(){for(var r=[];;){if(u(),p()&&cr("Missing target char at eol/eof"),")"===t())break;","===t()&&(i(),u(),p()&&cr("Trailing comma not supported")),","===t()&&cr("Double comma not supported");var e=m();r.push(e)}return r.length||cr("Expected to parse a list of at least some identifiers but found none"),r}function ar(){for(var r="";!h()&&!c(t());)r+=t(),i();return r}function ir(){if(o("@"),"custom"===r.slice(vr,vr+6)){vr+=6,u();var n=m();switch(u(),"="===t()&&(i(),u(),"="===t()&&cr("Unexpected double eq sign")),n){case"var-strat":or();break;case"val-strat":ur();break;case"set-valdist":u();var a=m(),s=sr();e.setValueDistributionFor(a,JSON.parse(s));break;case"targets":fr();break;case"nobool":case"noleaf":case"free":u(),","===t()&&cr("Leading comma not supported"),p()&&cr("Expected to parse some var values"),ar();break;default:cr("Unsupported custom rule: "+n)}}else cr("Unknown atrule");d()}function or(){u();var r=!1;"f"===t()&&("fallback"!==m()&&cr("Expecting `fallback` here"),r=!0,u());var n=!1;if("i"===t()&&("inverted"!==m()&&cr("Expecting `inverted` here"),n=!0,u()),"l"===t()||"("===t()){"l"===t()&&("list"!==m()&&cr("Unexpected ident after `inverted` (only expecting `list` or the list)"),u()),o("(");var a=tr();a.length?wn(e.config,r?"varStrategyFallback":"varStrategy",{type:"list",inverted:n,priorityByName:a}):wn(e.config,r?"varStrategyFallback":"varStrategy",{type:"naive"}),u(),o(")")}else{"="===t()&&(i(),u()),n&&cr("The `inverted` keyword is only valid for a prio list");var s=m();"list"===s&&cr("Use a grouped list of idents for vardist=list"),"naive"!==s&&"size"!==s&&"min"!==s&&"max"!==s&&"throw"!==s&&cr("Unknown var dist ["+s+"]"),wn(e.config,r?"varStrategyFallback":"varStrategy",{type:s})}}function ur(){var r=m();d(),e.config.valueStratName=r}function sr(){return u(),"="===t()&&(i(),u()),ar()}function fr(){if(u(),"all"===r.slice(vr,vr+3))vr+=3,e.config.targetedVars="all";else{o("(","ONLY_USE_WITH_SOME_TARGET_VARS"),u(),","===t()&&cr("Leading comma not supported");var n=tr();n.length&&(e.config.targetedVars=n),o(")")}}function cr(e){throw n&&Je().log(r.slice(0,vr)+"##|PARSER_IS_HERE["+e+"]|##"+r.slice(vr)),e="Importer parser error: "+e+", source at #|#: `"+r.slice(Math.max(0,vr-70),vr)+"#|#"+r.slice(vr,Math.min(r.length,vr+70))+"`",new Error(e)}e||(e=new To);for(var vr=0,lr=r.length;!h();)!function(){switch(s(),t()){case":":return g();case"#":return E();case"@":return ir();default:if(!h())A()}}();return e}function pt(r,e){for(var n=r.vardoms,t=0;t<e.length;t++){var a=e[t],i=n[a._boolVarIndex];if(void 0===i||1===u(i))break}return a}function ht(r,e,n){return r?gt(e,n):e}function gt(r,e){var n=void 0;n=r?r.slice(0):[];for(var t=g(e),a=0;a<t.length;++a){var i=t[a];n.indexOf(i)<0&&n.push(i)}return n}function mt(r,e,n,t){var a=pt(r,e).vector;if(null!=n){var i=t-(a=a?a.slice(0):[]).length;if(i>0)for(var o=0;o<i;++o)a.push(n);return a}return a&&a.length===t||We("E_EACH_MARKOV_VAR_MUST_HAVE_PROB_VECTOR_OR_ENABLE_EXPAND_VECTORS"),a}function bt(r,e,n,t,a,i,o,u,s,f,c){return{_class:"$propagator",name:r,stepper:e,index1:void 0===n?-1:n,index2:void 0===t?-1:t,index3:void 0===a?-1:a,arg1:void 0===i?"":i,arg2:void 0===o?"":o,arg3:void 0===u?"":u,arg4:void 0===s?"":s,arg5:void 0===f?"":f,arg6:void 0===c?"":c}}function kt(r