From c2d8c0cb64cad3fafa67f37c6c9a2b51a7f73046 Mon Sep 17 00:00:00 2001 From: ComBatVision Date: Sun, 28 Apr 2024 08:49:59 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20WorldWin?= =?UTF-8?q?dEarth/WorldWindKotlin@52b3b473fab8002c589854cf16f367092b27927b?= =?UTF-8?q?=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- worldwind-tutorials.js | 2 +- worldwind-tutorials.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/worldwind-tutorials.js b/worldwind-tutorials.js index 86e849a88..63fd84569 100644 --- a/worldwind-tutorials.js +++ b/worldwind-tutorials.js @@ -1,3 +1,3 @@ /*! For license information please see worldwind-tutorials.js.LICENSE.txt */ -!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports["worldwind-tutorials"]=n():t["worldwind-tutorials"]=n()}(this,(()=>(()=>{var __webpack_modules__={135:(t,n,i)=>{"use strict";function e(t,n,i){function e(t){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=t,n&&n.apply(this,arguments),this.toString=function(){return this.name+": "+this.message}}return void 0===i&&(i=Error),e.prototype=Object.create(i.prototype),e.prototype.name=t,e.prototype.constructor=e,e}i.r(n),i.d(n,{ArithmeticException:()=>u,ChronoField:()=>O,ChronoLocalDate:()=>Y,ChronoLocalDateTime:()=>_n,ChronoUnit:()=>E,ChronoZonedDateTime:()=>rn,Clock:()=>dn,DateTimeException:()=>r,DateTimeFormatter:()=>Wt,DateTimeFormatterBuilder:()=>Ut,DateTimeParseException:()=>s,DayOfWeek:()=>M,DecimalStyle:()=>mt,Duration:()=>x,IllegalArgumentException:()=>a,IllegalStateException:()=>h,Instant:()=>vn,IsoChronology:()=>nn,IsoFields:()=>rt,LocalDate:()=>hn,LocalDateTime:()=>ln,LocalTime:()=>cn,Month:()=>N,MonthDay:()=>Gt,NullPointerException:()=>_,OffsetDateTime:()=>on,OffsetTime:()=>en,Period:()=>P,ResolverStyle:()=>U,SignStyle:()=>gt,Temporal:()=>V,TemporalAccessor:()=>A,TemporalAdjuster:()=>H,TemporalAdjusters:()=>Jt,TemporalAmount:()=>y,TemporalField:()=>C,TemporalQueries:()=>z,TemporalQuery:()=>T,TemporalUnit:()=>k,TextStyle:()=>bt,UnsupportedTemporalTypeException:()=>o,ValueRange:()=>q,Year:()=>Xt,YearConstants:()=>S,YearMonth:()=>Kt,ZoneId:()=>G,ZoneOffset:()=>Q,ZoneOffsetTransition:()=>gn,ZoneRegion:()=>Mt,ZoneRules:()=>K,ZoneRulesProvider:()=>jt,ZonedDateTime:()=>sn,_:()=>An,convert:()=>En,nativeJs:()=>qn,use:()=>In});var r=e("DateTimeException",(function(t,n){void 0===n&&(n=null);var i=t||this.name;null!==n&&n instanceof Error&&(i+="\n-------\nCaused by: "+n.stack+"\n-------\n"),this.message=i})),s=e("DateTimeParseException",(function(t,n,i,e){void 0===n&&(n=""),void 0===i&&(i=0),void 0===e&&(e=null);var r=t||this.name;r+=": "+n+", at index: "+i,null!==e&&e instanceof Error&&(r+="\n-------\nCaused by: "+e.stack+"\n-------\n"),this.message=r,this.parsedString=function(){return n},this.errorIndex=function(){return i}})),o=e("UnsupportedTemporalTypeException",null,r),u=e("ArithmeticException"),a=e("IllegalArgumentException"),h=e("IllegalStateException"),_=e("NullPointerException");function l(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function c(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(t,n,i){if(!t)throw i?new i(n):new Error(n)}function v(t,n){if(null==t)throw new _(n+" must not be null");return t}function d(t,n,i){if(!(t instanceof n))throw new a(i+" must be an instance of "+(n.name?n.name:n)+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""));return t}function w(t){throw new TypeError('abstract method "'+t+'" is not implemented')}var p=Object.freeze({__proto__:null,assert:f,requireNonNull:v,requireInstance:d,abstractMethodFail:w}),m=9007199254740991,g=-9007199254740991,b=function(){function t(){}return t.intDiv=function(n,i){var e=n/i;return e=t.roundDown(e),t.safeZero(e)},t.intMod=function(n,i){var e=n-t.intDiv(n,i)*i;return e=t.roundDown(e),t.safeZero(e)},t.roundDown=function(t){return t<0?Math.ceil(t):Math.floor(t)},t.floorDiv=function(n,i){var e=Math.floor(n/i);return t.safeZero(e)},t.floorMod=function(n,i){var e=n-t.floorDiv(n,i)*i;return t.safeZero(e)},t.safeAdd=function(n,i){if(t.verifyInt(n),t.verifyInt(i),0===n)return t.safeZero(i);if(0===i)return t.safeZero(n);var e=t.safeToInt(n+i);if(e===n||e===i)throw new u("Invalid addition beyond MAX_SAFE_INTEGER!");return e},t.safeSubtract=function(n,i){return t.verifyInt(n),t.verifyInt(i),0===n&&0===i?0:0===n?t.safeZero(-1*i):0===i?t.safeZero(n):t.safeToInt(n-i)},t.safeMultiply=function(n,i){if(t.verifyInt(n),t.verifyInt(i),1===n)return t.safeZero(i);if(1===i)return t.safeZero(n);if(0===n||0===i)return 0;var e=t.safeToInt(n*i);if(e/i!==n||n===g&&-1===i||i===g&&-1===n)throw new u("Multiplication overflows: "+n+" * "+i);return e},t.parseInt=function(t){function n(n){return t.apply(this,arguments)}return n.toString=function(){return t.toString()},n}((function(n){var i=parseInt(n);return t.safeToInt(i)})),t.safeToInt=function(n){return t.verifyInt(n),t.safeZero(n)},t.verifyInt=function(t){if(null==t)throw new u("Invalid value: '"+t+"', using null or undefined as argument");if(isNaN(t))throw new u("Invalid int value, using NaN as argument");if(t%1!=0)throw new u("Invalid value: '"+t+"' is a float");if(t>m||tn?1:0},t.smi=function(t){return t>>>1&1073741824|3221225471&t},t.hash=function(n){if(n!=n||n===1/0)return 0;for(var i=n;n>4294967295;)i^=n/=4294967295;return t.smi(i)},t.hashCode=function(){for(var n=17,i=arguments.length,e=new Array(i),r=0;r0&&e<0)e+=cn.NANOS_PER_SECOND;else if(i<0&&e>0)e-=cn.NANOS_PER_SECOND;else if(0===i&&0!==e){var s=n.with(O.NANO_OF_SECOND,r);i=t.until(s,E.SECONDS)}}catch(t){}return this.ofSeconds(i,e)},n.parse=function(t){v(t,"text");var i=new RegExp("([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?","i").exec(t);if(null!==i&&"T"===i[3]==0){var e="-"===i[1],r=i[2],o=i[4],u=i[5],a=i[6],h=i[7];if(null!=r||null!=o||null!=u||null!=a){var _=n._parseNumber(t,r,cn.SECONDS_PER_DAY,"days"),l=n._parseNumber(t,o,cn.SECONDS_PER_HOUR,"hours"),c=n._parseNumber(t,u,cn.SECONDS_PER_MINUTE,"minutes"),f=n._parseNumber(t,a,1,"seconds"),d=null!=a&&"-"===a.charAt(0),w=n._parseFraction(t,h,d?-1:1);try{return n._create(e,_,l,c,f,w)}catch(n){throw new s("Text cannot be parsed to a Duration: overflow",t,0,n)}}}throw new s("Text cannot be parsed to a Duration",t,0)},n._parseNumber=function(t,n,i,e){if(null==n)return 0;try{return"+"===n[0]&&(n=n.substring(1)),b.safeMultiply(parseFloat(n),i)}catch(n){throw new s("Text cannot be parsed to a Duration: "+e,t,0,n)}},n._parseFraction=function(t,n,i){return null==n||0===n.length?0:(n=(n+"000000000").substring(0,9),parseFloat(n)*i)},n._create=function(){return arguments.length<=2?n._createSecondsNanos(arguments[0],arguments[1]):n._createNegateDaysHoursMinutesSecondsNanos(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])},n._createNegateDaysHoursMinutesSecondsNanos=function(t,i,e,r,s,o){var u=b.safeAdd(i,b.safeAdd(e,b.safeAdd(r,s)));return t?n.ofSeconds(u,o).negated():n.ofSeconds(u,o)},n._createSecondsNanos=function(t,i){return void 0===t&&(t=0),void 0===i&&(i=0),0===t&&0===i?n.ZERO:new n(t,i)};var i=n.prototype;return i.get=function(t){if(t===E.SECONDS)return this._seconds;if(t===E.NANOS)return this._nanos;throw new o("Unsupported unit: "+t)},i.units=function(){return[E.SECONDS,E.NANOS]},i.isZero=function(){return 0===this._seconds&&0===this._nanos},i.isNegative=function(){return this._seconds<0},i.seconds=function(){return this._seconds},i.nano=function(){return this._nanos},i.withSeconds=function(t){return n._create(t,this._nanos)},i.withNanos=function(t){return O.NANO_OF_SECOND.checkValidIntValue(t),n._create(this._seconds,t)},i.plusDuration=function(t){return v(t,"duration"),this.plus(t.seconds(),t.nano())},i.plus=function(t,n){return 1===arguments.length?this.plusDuration(t):2===arguments.length&&n instanceof k?this.plusAmountUnit(t,n):this.plusSecondsNanos(t,n)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n===E.DAYS)return this.plusSecondsNanos(b.safeMultiply(t,cn.SECONDS_PER_DAY),0);if(n.isDurationEstimated())throw new o("Unit must not have an estimated duration");if(0===t)return this;if(n instanceof E){switch(n){case E.NANOS:return this.plusNanos(t);case E.MICROS:return this.plusSecondsNanos(1e3*b.intDiv(t,1e9),1e3*b.intMod(t,1e9));case E.MILLIS:return this.plusMillis(t);case E.SECONDS:return this.plusSeconds(t)}return this.plusSecondsNanos(b.safeMultiply(n.duration().seconds(),t),0)}var i=n.duration().multipliedBy(t);return this.plusSecondsNanos(i.seconds(),i.nano())},i.plusDays=function(t){return this.plusSecondsNanos(b.safeMultiply(t,cn.SECONDS_PER_DAY),0)},i.plusHours=function(t){return this.plusSecondsNanos(b.safeMultiply(t,cn.SECONDS_PER_HOUR),0)},i.plusMinutes=function(t){return this.plusSecondsNanos(b.safeMultiply(t,cn.SECONDS_PER_MINUTE),0)},i.plusSeconds=function(t){return this.plusSecondsNanos(t,0)},i.plusMillis=function(t){return this.plusSecondsNanos(b.intDiv(t,1e3),1e6*b.intMod(t,1e3))},i.plusNanos=function(t){return this.plusSecondsNanos(0,t)},i.plusSecondsNanos=function(t,i){if(v(t,"secondsToAdd"),v(i,"nanosToAdd"),0===t&&0===i)return this;var e=b.safeAdd(this._seconds,t);e=b.safeAdd(e,b.intDiv(i,cn.NANOS_PER_SECOND)),i=b.intMod(i,cn.NANOS_PER_SECOND);var r=b.safeAdd(this._nanos,i);return n.ofSeconds(e,r)},i.minus=function(t,n){return 1===arguments.length?this.minusDuration(t):this.minusAmountUnit(t,n)},i.minusDuration=function(t){v(t,"duration");var n=t.seconds(),i=t.nano();return n===g?this.plus(m,-i):this.plus(-n,-i)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),t===g?this.plusAmountUnit(m,n):this.plusAmountUnit(-t,n)},i.minusDays=function(t){return t===g?this.plusDays(m):this.plusDays(-t)},i.minusHours=function(t){return t===g?this.plusHours(m):this.plusHours(-t)},i.minusMinutes=function(t){return t===g?this.plusMinutes(m):this.plusMinutes(-t)},i.minusSeconds=function(t){return t===g?this.plusSeconds(m):this.plusSeconds(-t)},i.minusMillis=function(t){return t===g?this.plusMillis(m):this.plusMillis(-t)},i.minusNanos=function(t){return t===g?this.plusNanos(m):this.plusNanos(-t)},i.multipliedBy=function(t){if(0===t)return n.ZERO;if(1===t)return this;var i=b.safeMultiply(this._seconds,t),e=b.safeMultiply(this._nanos,t);return i+=b.intDiv(e,cn.NANOS_PER_SECOND),e=b.intMod(e,cn.NANOS_PER_SECOND),n.ofSeconds(i,e)},i.dividedBy=function(t){if(0===t)throw new u("Cannot divide by zero");if(1===t)return this;var i=b.intDiv(this._seconds,t),e=b.roundDown((this._seconds/t-i)*cn.NANOS_PER_SECOND),r=b.intDiv(this._nanos,t);return r=e+r,n.ofSeconds(i,r)},i.negated=function(){return this.multipliedBy(-1)},i.abs=function(){return this.isNegative()?this.negated():this},i.addTo=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.plus(this._seconds,E.SECONDS)),0!==this._nanos&&(t=t.plus(this._nanos,E.NANOS)),t},i.subtractFrom=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.minus(this._seconds,E.SECONDS)),0!==this._nanos&&(t=t.minus(this._nanos,E.NANOS)),t},i.toDays=function(){return b.intDiv(this._seconds,cn.SECONDS_PER_DAY)},i.toHours=function(){return b.intDiv(this._seconds,cn.SECONDS_PER_HOUR)},i.toMinutes=function(){return b.intDiv(this._seconds,cn.SECONDS_PER_MINUTE)},i.toMillis=function(){var t=Math.round(b.safeMultiply(this._seconds,1e3));return b.safeAdd(t,b.intDiv(this._nanos,1e6))},i.toNanos=function(){var t=b.safeMultiply(this._seconds,cn.NANOS_PER_SECOND);return b.safeAdd(t,this._nanos)},i.compareTo=function(t){v(t,"otherDuration"),d(t,n,"otherDuration");var i=b.compareNumbers(this._seconds,t.seconds());return 0!==i?i:this._nanos-t.nano()},i.equals=function(t){return this===t||t instanceof n&&this.seconds()===t.seconds()&&this.nano()===t.nano()},i.toString=function(){if(this===n.ZERO)return"PT0S";var t,i=b.intDiv(this._seconds,cn.SECONDS_PER_HOUR),e=b.intDiv(b.intMod(this._seconds,cn.SECONDS_PER_HOUR),cn.SECONDS_PER_MINUTE),r=b.intMod(this._seconds,cn.SECONDS_PER_MINUTE),s="PT";if(0!==i&&(s+=i+"H"),0!==e&&(s+=e+"M"),0===r&&0===this._nanos&&s.length>2)return s;if(r<0&&this._nanos>0?s+=-1===r?"-0":r+1:s+=r,this._nanos>0)for(s+=".",s+=t=(t=r<0?""+(2*cn.NANOS_PER_SECOND-this._nanos):""+(cn.NANOS_PER_SECOND+this._nanos)).slice(1,t.length);"0"===s.charAt(s.length-1);)s=s.slice(0,s.length-1);return s+"S"},i.toJSON=function(){return this.toString()},n}(y),S=function(){},E=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return this.isDateBased()||this===n.FOREVER},i.isDateBased=function(){return this.compareTo(n.DAYS)>=0&&this!==n.FOREVER},i.isTimeBased=function(){return this.compareTo(n.DAYS)<0},i.isSupportedBy=function(t){if(this===n.FOREVER)return!1;try{return t.plus(1,this),!0}catch(n){try{return t.plus(-1,this),!0}catch(t){return!1}}},i.addTo=function(t,n){return t.plus(n,this)},i.between=function(t,n){return t.until(n,this)},i.toString=function(){return this._name},i.compareTo=function(t){return this.duration().compareTo(t.duration())},n}(k),C=function(){function t(){}var n=t.prototype;return n.isDateBased=function(){w("isDateBased")},n.isTimeBased=function(){w("isTimeBased")},n.baseUnit=function(){w("baseUnit")},n.rangeUnit=function(){w("rangeUnit")},n.range=function(){w("range")},n.rangeRefinedBy=function(t){w("rangeRefinedBy")},n.getFrom=function(t){w("getFrom")},n.adjustInto=function(t,n){w("adjustInto")},n.isSupportedBy=function(t){w("isSupportedBy")},n.displayName=function(){w("displayName")},n.equals=function(t){w("equals")},n.name=function(){w("name")},t}(),q=function(){function t(t,n,i,e){f(!(t>n),"Smallest minimum value '"+t+"' must be less than largest minimum value '"+n+"'",a),f(!(i>e),"Smallest maximum value '"+i+"' must be less than largest maximum value '"+e+"'",a),f(!(n>e),"Minimum value '"+n+"' must be less than maximum value '"+e+"'",a),this._minSmallest=t,this._minLargest=n,this._maxLargest=e,this._maxSmallest=i}var n=t.prototype;return n.isFixed=function(){return this._minSmallest===this._minLargest&&this._maxSmallest===this._maxLargest},n.minimum=function(){return this._minSmallest},n.largestMinimum=function(){return this._minLargest},n.maximum=function(){return this._maxLargest},n.smallestMaximum=function(){return this._maxSmallest},n.isValidValue=function(t){return this.minimum()<=t&&t<=this.maximum()},n.checkValidValue=function(t,n){return this.isValidValue(t)?t:f(!1,null!=n?"Invalid value for "+n+" (valid values "+this.toString()+"): "+t:"Invalid value (valid values "+this.toString()+"): "+t,r)},n.checkValidIntValue=function(t,n){if(!1===this.isValidIntValue(t))throw new r("Invalid int value for "+n+": "+t);return t},n.isValidIntValue=function(t){return this.isIntValue()&&this.isValidValue(t)},n.isIntValue=function(){return this.minimum()>=b.MIN_SAFE_INTEGER&&this.maximum()<=b.MAX_SAFE_INTEGER},n.equals=function(n){return n===this||n instanceof t&&this._minSmallest===n._minSmallest&&this._minLargest===n._minLargest&&this._maxSmallest===n._maxSmallest&&this._maxLargest===n._maxLargest},n.hashCode=function(){return b.hashCode(this._minSmallest,this._minLargest,this._maxSmallest,this._maxLargest)},n.toString=function(){var t=this.minimum()+(this.minimum()!==this.largestMinimum()?"/"+this.largestMinimum():"");return(t+=" - ")+(this.smallestMaximum()+(this.smallestMaximum()!==this.maximum()?"/"+this.maximum():""))},t.of=function(){return 2===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[1]):3===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[2]):4===arguments.length?new t(arguments[0],arguments[1],arguments[2],arguments[3]):f(!1,"Invalid number of arguments "+arguments.length,a)},t}(),O=function(t){function n(n,i,e,r){var s;return(s=t.call(this)||this)._name=n,s._baseUnit=i,s._rangeUnit=e,s._range=r,s}l(n,t),n.byName=function(t){for(var i in n)if(n[i]&&n[i]instanceof n&&n[i].name()===t)return n[i]};var i=n.prototype;return i.name=function(){return this._name},i.baseUnit=function(){return this._baseUnit},i.rangeUnit=function(){return this._rangeUnit},i.range=function(){return this._range},i.displayName=function(){return this.toString()},i.checkValidValue=function(t){return this.range().checkValidValue(t,this)},i.checkValidIntValue=function(t){return this.range().checkValidIntValue(t,this)},i.isDateBased=function(){return this===n.DAY_OF_WEEK||this===n.ALIGNED_DAY_OF_WEEK_IN_MONTH||this===n.ALIGNED_DAY_OF_WEEK_IN_YEAR||this===n.DAY_OF_MONTH||this===n.DAY_OF_YEAR||this===n.EPOCH_DAY||this===n.ALIGNED_WEEK_OF_MONTH||this===n.ALIGNED_WEEK_OF_YEAR||this===n.MONTH_OF_YEAR||this===n.YEAR_OF_ERA||this===n.YEAR||this===n.ERA},i.isTimeBased=function(){return this===n.NANO_OF_SECOND||this===n.NANO_OF_DAY||this===n.MICRO_OF_SECOND||this===n.MICRO_OF_DAY||this===n.MILLI_OF_SECOND||this===n.MILLI_OF_DAY||this===n.SECOND_OF_MINUTE||this===n.SECOND_OF_DAY||this===n.MINUTE_OF_HOUR||this===n.MINUTE_OF_DAY||this===n.HOUR_OF_AMPM||this===n.CLOCK_HOUR_OF_AMPM||this===n.HOUR_OF_DAY||this===n.CLOCK_HOUR_OF_DAY||this===n.AMPM_OF_DAY},i.rangeRefinedBy=function(t){return t.range(this)},i.getFrom=function(t){return t.getLong(this)},i.toString=function(){return this.name()},i.equals=function(t){return this===t},i.adjustInto=function(t,n){return t.with(this,n)},i.isSupportedBy=function(t){return t.isSupported(this)},n}(C),z=function(){function t(){}return t.zoneId=function(){return t.ZONE_ID},t.chronology=function(){return t.CHRONO},t.precision=function(){return t.PRECISION},t.zone=function(){return t.ZONE},t.offset=function(){return t.OFFSET},t.localDate=function(){return t.LOCAL_DATE},t.localTime=function(){return t.LOCAL_TIME},t}(),A=function(){function t(){}var n=t.prototype;return n.query=function(t){return t===z.zoneId()||t===z.chronology()||t===z.precision()?null:t.queryFrom(this)},n.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},n.range=function(t){if(t instanceof O){if(this.isSupported(t))return t.range();throw new o("Unsupported field: "+t)}return t.rangeRefinedBy(this)},t}(),T=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n.prototype.queryFrom=function(t){w("queryFrom")},n}($);function I(t,n){var i=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n}(T);return i.prototype.queryFrom=n,new i(t)}var D,j,M=function(t){function n(n,i){var e;return(e=t.call(this)||this)._ordinal=n,e._name=i,e}l(n,t);var i=n.prototype;return i.ordinal=function(){return this._ordinal},i.name=function(){return this._name},n.values=function(){return D.slice()},n.valueOf=function(t){for(var i=0;i7)throw new r("Invalid value for DayOfWeek: "+t);return D[t-1]},n.from=function(t){if(f(null!=t,"temporal",_),t instanceof n)return t;try{return n.of(t.get(O.DAY_OF_WEEK))}catch(n){throw n instanceof r?new r("Unable to obtain DayOfWeek from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""),n):n}},i.value=function(){return this._ordinal+1},i.displayName=function(t,n){throw new a("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return t instanceof O?t===O.DAY_OF_WEEK:null!=t&&t.isSupportedBy(this)},i.range=function(t){if(t===O.DAY_OF_WEEK)return t.range();if(t instanceof O)throw new o("Unsupported field: "+t);return t.rangeRefinedBy(this)},i.get=function(t){return t===O.DAY_OF_WEEK?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===O.DAY_OF_WEEK)return this.value();if(t instanceof O)throw new o("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var n=b.floorMod(t,7);return D[b.floorMod(this._ordinal+(n+7),7)]},i.minus=function(t){return this.plus(-1*b.floorMod(t,7))},i.query=function(t){return t===z.precision()?E.DAYS:t===z.localDate()||t===z.localTime()||t===z.chronology()||t===z.zone()||t===z.zoneId()||t===z.offset()?null:(f(null!=t,"query",_),t.queryFrom(this))},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.DAY_OF_WEEK,this.value())},i.equals=function(t){return this===t},i.toString=function(){return this._name},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._ordinal-t._ordinal},i.toJSON=function(){return this.toString()},n}(A),N=function(t){function n(n,i){var e;return(e=t.call(this)||this)._value=b.safeToInt(n),e._name=i,e}l(n,t);var i=n.prototype;return i.value=function(){return this._value},i.ordinal=function(){return this._value-1},i.name=function(){return this._name},i.displayName=function(t,n){throw new a("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return null!==t&&(t instanceof O?t===O.MONTH_OF_YEAR:null!=t&&t.isSupportedBy(this))},i.get=function(t){return t===O.MONTH_OF_YEAR?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===O.MONTH_OF_YEAR)return this.value();if(t instanceof O)throw new o("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var i=b.intMod(t,12)+12,e=b.intMod(this.value()+i,12);return e=0===e?12:e,n.of(e)},i.minus=function(t){return this.plus(-1*b.intMod(t,12))},i.length=function(t){switch(this){case n.FEBRUARY:return t?29:28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.minLength=function(){switch(this){case n.FEBRUARY:return 28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.maxLength=function(){switch(this){case n.FEBRUARY:return 29;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.firstDayOfYear=function(t){var i=t?1:0;switch(this){case n.JANUARY:return 1;case n.FEBRUARY:return 32;case n.MARCH:return 60+i;case n.APRIL:return 91+i;case n.MAY:return 121+i;case n.JUNE:return 152+i;case n.JULY:return 182+i;case n.AUGUST:return 213+i;case n.SEPTEMBER:return 244+i;case n.OCTOBER:return 274+i;case n.NOVEMBER:return 305+i;case n.DECEMBER:default:return 335+i}},i.firstMonthOfQuarter=function(){switch(this){case n.JANUARY:case n.FEBRUARY:case n.MARCH:return n.JANUARY;case n.APRIL:case n.MAY:case n.JUNE:return n.APRIL;case n.JULY:case n.AUGUST:case n.SEPTEMBER:return n.JULY;case n.OCTOBER:case n.NOVEMBER:case n.DECEMBER:default:return n.OCTOBER}},i.query=function(n){return f(null!=n,"query() parameter must not be null",r),n===z.chronology()?nn.INSTANCE:n===z.precision()?E.MONTHS:t.prototype.query.call(this,n)},i.toString=function(){switch(this){case n.JANUARY:return"JANUARY";case n.FEBRUARY:return"FEBRUARY";case n.MARCH:return"MARCH";case n.APRIL:return"APRIL";case n.MAY:return"MAY";case n.JUNE:return"JUNE";case n.JULY:return"JULY";case n.AUGUST:return"AUGUST";case n.SEPTEMBER:return"SEPTEMBER";case n.OCTOBER:return"OCTOBER";case n.NOVEMBER:return"NOVEMBER";case n.DECEMBER:return"DECEMBER";default:return"unknown Month, value: "+this.value()}},i.toJSON=function(){return this.toString()},i.adjustInto=function(t){return t.with(O.MONTH_OF_YEAR,this.value())},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._value-t._value},i.equals=function(t){return this===t},n.valueOf=function(t){for(var i=0;i12)&&f(!1,"Invalid value for MonthOfYear: "+t,r),j[t-1]},n.from=function(t){if(t instanceof n)return t;try{return n.of(t.get(O.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain Month from TemporalAccessor: "+t+" of type "+(t&&null!=t.constructor?t.constructor.name:""),n)}},n}(A),R=/([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/,P=function(t){function n(i,e,r){var s;s=t.call(this)||this;var o=b.safeToInt(i),u=b.safeToInt(e),a=b.safeToInt(r);return 0===o&&0===u&&0===a?(n.ZERO||(s._years=o,s._months=u,s._days=a,n.ZERO=c(s)),n.ZERO||c(s)):(s._years=o,s._months=u,s._days=a,s)}l(n,t),n.ofYears=function(t){return n.create(t,0,0)},n.ofMonths=function(t){return n.create(0,t,0)},n.ofWeeks=function(t){return n.create(0,0,b.safeMultiply(t,7))},n.ofDays=function(t){return n.create(0,0,t)},n.of=function(t,i,e){return n.create(t,i,e)},n.from=function(t){if(t instanceof n)return t;v(t,"amount");for(var i=0,e=0,s=0,o=t.units(),u=0;un.MAX_SECONDS)throw new r("Zone offset not in valid range: -18:00 to +18:00")},n._validate=function(t,n,i){if(t<-18||t>18)throw new r("Zone offset hours not in valid range: value "+t+" is not in the range -18 to 18");if(t>0){if(n<0||i<0)throw new r("Zone offset minutes and seconds must be positive because hours is positive")}else if(t<0){if(n>0||i>0)throw new r("Zone offset minutes and seconds must be negative because hours is negative")}else if(n>0&&i<0||n<0&&i>0)throw new r("Zone offset minutes and seconds must have the same sign");if(Math.abs(n)>59)throw new r("Zone offset minutes not in valid range: abs(value) "+Math.abs(n)+" is not in the range 0 to 59");if(Math.abs(i)>59)throw new r("Zone offset seconds not in valid range: abs(value) "+Math.abs(i)+" is not in the range 0 to 59");if(18===Math.abs(t)&&(Math.abs(n)>0||Math.abs(i)>0))throw new r("Zone offset not in valid range: -18:00 to +18:00")},n.of=function(t){v(t,"offsetId");var i,e,s,o=Z[t];if(null!=o)return o;switch(t.length){case 2:t=t[0]+"0"+t[1];case 3:i=n._parseNumber(t,1,!1),e=0,s=0;break;case 5:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=0;break;case 6:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=0;break;case 7:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=n._parseNumber(t,5,!1);break;case 9:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=n._parseNumber(t,7,!0);break;default:throw new r("Invalid ID for ZoneOffset, invalid format: "+t)}var u=t[0];if("+"!==u&&"-"!==u)throw new r("Invalid ID for ZoneOffset, plus/minus not found when expected: "+t);return"-"===u?n.ofHoursMinutesSeconds(-i,-e,-s):n.ofHoursMinutesSeconds(i,e,s)},n._parseNumber=function(t,n,i){if(i&&":"!==t[n-1])throw new r("Invalid ID for ZoneOffset, colon not found when expected: "+t);var e=t[n],s=t[n+1];if(e<"0"||e>"9"||s<"0"||s>"9")throw new r("Invalid ID for ZoneOffset, non numeric characters found: "+t);return 10*(e.charCodeAt(0)-48)+(s.charCodeAt(0)-48)},n.ofHours=function(t){return n.ofHoursMinutesSeconds(t,0,0)},n.ofHoursMinutes=function(t,i){return n.ofHoursMinutesSeconds(t,i,0)},n.ofHoursMinutesSeconds=function(t,i,e){n._validate(t,i,e);var r=t*cn.SECONDS_PER_HOUR+i*cn.SECONDS_PER_MINUTE+e;return n.ofTotalSeconds(r)},n.ofTotalMinutes=function(t){var i=t*cn.SECONDS_PER_MINUTE;return n.ofTotalSeconds(i)},n.ofTotalSeconds=function(t){if(t%(15*cn.SECONDS_PER_MINUTE)==0){var i=t,e=J[i];return null==e&&(e=new n(t),J[i]=e,Z[e.id()]=e),e}return new n(t)},i.rules=function(){return this._rules},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t===O.OFFSET_SECONDS)return this._totalSeconds;if(t instanceof O)throw new r("Unsupported field: "+t);return t.getFrom(this)},i.query=function(t){return v(t,"query"),t===z.offset()||t===z.zone()?this:t===z.localDate()||t===z.localTime()||t===z.precision()||t===z.chronology()||t===z.zoneId()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(O.OFFSET_SECONDS,this._totalSeconds)},i.compareTo=function(t){return v(t,"other"),t._totalSeconds-this._totalSeconds},i.equals=function(t){return this===t||t instanceof n&&this._totalSeconds===t._totalSeconds},i.hashCode=function(){return this._totalSeconds},i.toString=function(){return this._id},n}(G),tt=function(t){function n(){var n;return(n=t.call(this)||this).fieldValues=new F,n.chrono=null,n.zone=null,n.date=null,n.time=null,n.leapSecond=!1,n.excessDays=null,n}l(n,t),n.create=function(t,i){var e=new n;return e._addFieldValue(t,i),e};var i=n.prototype;return i.getFieldValue0=function(t){return this.fieldValues.get(t)},i._addFieldValue=function(t,n){v(t,"field");var i=this.getFieldValue0(t);if(null!=i&&i!==n)throw new r("Conflict found: "+t+" "+i+" differs from "+t+" "+n+": "+this);return this._putFieldValue0(t,n)},i._putFieldValue0=function(t,n){return this.fieldValues.put(t,n),this},i.resolve=function(t,n){return null!=n&&this.fieldValues.retainAll(n),this._mergeDate(t),this._mergeTime(t),this._resolveTimeInferZeroes(t),null!=this.excessDays&&!1===this.excessDays.isZero()&&null!=this.date&&null!=this.time&&(this.date=this.date.plus(this.excessDays),this.excessDays=P.ZERO),this._resolveInstant(),this},i._mergeDate=function(t){this._checkDate(nn.INSTANCE.resolveDate(this.fieldValues,t))},i._checkDate=function(t){if(null!=t)for(var n in this._addObject(t),this.fieldValues.keySet()){var i=O.byName(n);if(i&&void 0!==this.fieldValues.get(i)&&i.isDateBased()){var e=void 0;try{e=t.getLong(i)}catch(t){if(t instanceof r)continue;throw t}var s=this.fieldValues.get(i);if(e!==s)throw new r("Conflict found: Field "+i+" "+e+" differs from "+i+" "+s+" derived from "+t)}}},i._mergeTime=function(t){if(this.fieldValues.containsKey(O.CLOCK_HOUR_OF_DAY)){var n=this.fieldValues.remove(O.CLOCK_HOUR_OF_DAY);t!==U.LENIENT&&(t===U.SMART&&0===n||O.CLOCK_HOUR_OF_DAY.checkValidValue(n)),this._addFieldValue(O.HOUR_OF_DAY,24===n?0:n)}if(this.fieldValues.containsKey(O.CLOCK_HOUR_OF_AMPM)){var i=this.fieldValues.remove(O.CLOCK_HOUR_OF_AMPM);t!==U.LENIENT&&(t===U.SMART&&0===i||O.CLOCK_HOUR_OF_AMPM.checkValidValue(i)),this._addFieldValue(O.HOUR_OF_AMPM,12===i?0:i)}if(t!==U.LENIENT&&(this.fieldValues.containsKey(O.AMPM_OF_DAY)&&O.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(O.AMPM_OF_DAY)),this.fieldValues.containsKey(O.HOUR_OF_AMPM)&&O.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(O.HOUR_OF_AMPM))),this.fieldValues.containsKey(O.AMPM_OF_DAY)&&this.fieldValues.containsKey(O.HOUR_OF_AMPM)){var e=this.fieldValues.remove(O.AMPM_OF_DAY),r=this.fieldValues.remove(O.HOUR_OF_AMPM);this._addFieldValue(O.HOUR_OF_DAY,12*e+r)}if(this.fieldValues.containsKey(O.NANO_OF_DAY)){var s=this.fieldValues.remove(O.NANO_OF_DAY);t!==U.LENIENT&&O.NANO_OF_DAY.checkValidValue(s),this._addFieldValue(O.SECOND_OF_DAY,b.intDiv(s,1e9)),this._addFieldValue(O.NANO_OF_SECOND,b.intMod(s,1e9))}if(this.fieldValues.containsKey(O.MICRO_OF_DAY)){var o=this.fieldValues.remove(O.MICRO_OF_DAY);t!==U.LENIENT&&O.MICRO_OF_DAY.checkValidValue(o),this._addFieldValue(O.SECOND_OF_DAY,b.intDiv(o,1e6)),this._addFieldValue(O.MICRO_OF_SECOND,b.intMod(o,1e6))}if(this.fieldValues.containsKey(O.MILLI_OF_DAY)){var u=this.fieldValues.remove(O.MILLI_OF_DAY);t!==U.LENIENT&&O.MILLI_OF_DAY.checkValidValue(u),this._addFieldValue(O.SECOND_OF_DAY,b.intDiv(u,1e3)),this._addFieldValue(O.MILLI_OF_SECOND,b.intMod(u,1e3))}if(this.fieldValues.containsKey(O.SECOND_OF_DAY)){var a=this.fieldValues.remove(O.SECOND_OF_DAY);t!==U.LENIENT&&O.SECOND_OF_DAY.checkValidValue(a),this._addFieldValue(O.HOUR_OF_DAY,b.intDiv(a,3600)),this._addFieldValue(O.MINUTE_OF_HOUR,b.intMod(b.intDiv(a,60),60)),this._addFieldValue(O.SECOND_OF_MINUTE,b.intMod(a,60))}if(this.fieldValues.containsKey(O.MINUTE_OF_DAY)){var h=this.fieldValues.remove(O.MINUTE_OF_DAY);t!==U.LENIENT&&O.MINUTE_OF_DAY.checkValidValue(h),this._addFieldValue(O.HOUR_OF_DAY,b.intDiv(h,60)),this._addFieldValue(O.MINUTE_OF_HOUR,b.intMod(h,60))}if(t!==U.LENIENT&&(this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&O.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(O.MILLI_OF_SECOND)),this.fieldValues.containsKey(O.MICRO_OF_SECOND)&&O.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(O.MICRO_OF_SECOND))),this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&this.fieldValues.containsKey(O.MICRO_OF_SECOND)){var _=this.fieldValues.remove(O.MILLI_OF_SECOND),l=this.fieldValues.get(O.MICRO_OF_SECOND);this._putFieldValue0(O.MICRO_OF_SECOND,1e3*_+b.intMod(l,1e3))}if(this.fieldValues.containsKey(O.MICRO_OF_SECOND)&&this.fieldValues.containsKey(O.NANO_OF_SECOND)){var c=this.fieldValues.get(O.NANO_OF_SECOND);this._putFieldValue0(O.MICRO_OF_SECOND,b.intDiv(c,1e3)),this.fieldValues.remove(O.MICRO_OF_SECOND)}if(this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&this.fieldValues.containsKey(O.NANO_OF_SECOND)){var f=this.fieldValues.get(O.NANO_OF_SECOND);this._putFieldValue0(O.MILLI_OF_SECOND,b.intDiv(f,1e6)),this.fieldValues.remove(O.MILLI_OF_SECOND)}if(this.fieldValues.containsKey(O.MICRO_OF_SECOND)){var v=this.fieldValues.remove(O.MICRO_OF_SECOND);this._putFieldValue0(O.NANO_OF_SECOND,1e3*v)}else if(this.fieldValues.containsKey(O.MILLI_OF_SECOND)){var d=this.fieldValues.remove(O.MILLI_OF_SECOND);this._putFieldValue0(O.NANO_OF_SECOND,1e6*d)}},i._resolveTimeInferZeroes=function(t){var n=this.fieldValues.get(O.HOUR_OF_DAY),i=this.fieldValues.get(O.MINUTE_OF_HOUR),e=this.fieldValues.get(O.SECOND_OF_MINUTE),r=this.fieldValues.get(O.NANO_OF_SECOND);if(null!=n&&(null!=i||null==e&&null==r)&&(null==i||null!=e||null==r)){if(t!==U.LENIENT){if(null!=n){t!==U.SMART||24!==n||null!=i&&0!==i||null!=e&&0!==e||null!=r&&0!==r||(n=0,this.excessDays=P.ofDays(1));var s=O.HOUR_OF_DAY.checkValidIntValue(n);if(null!=i){var o=O.MINUTE_OF_HOUR.checkValidIntValue(i);if(null!=e){var u=O.SECOND_OF_MINUTE.checkValidIntValue(e);if(null!=r){var a=O.NANO_OF_SECOND.checkValidIntValue(r);this._addObject(cn.of(s,o,u,a))}else this._addObject(cn.of(s,o,u))}else null==r&&this._addObject(cn.of(s,o))}else null==e&&null==r&&this._addObject(cn.of(s,0))}}else if(null!=n){var h=n;if(null!=i)if(null!=e){null==r&&(r=0);var _=b.safeMultiply(h,36e11);_=b.safeAdd(_,b.safeMultiply(i,6e10)),_=b.safeAdd(_,b.safeMultiply(e,1e9)),_=b.safeAdd(_,r);var l=b.floorDiv(_,864e11),c=b.floorMod(_,864e11);this._addObject(cn.ofNanoOfDay(c)),this.excessDays=P.ofDays(l)}else{var f=b.safeMultiply(h,3600);f=b.safeAdd(f,b.safeMultiply(i,60));var v=b.floorDiv(f,86400),d=b.floorMod(f,86400);this._addObject(cn.ofSecondOfDay(d)),this.excessDays=P.ofDays(v)}else{var w=b.safeToInt(b.floorDiv(h,24));h=b.floorMod(h,24),this._addObject(cn.of(h,0)),this.excessDays=P.ofDays(w)}}this.fieldValues.remove(O.HOUR_OF_DAY),this.fieldValues.remove(O.MINUTE_OF_HOUR),this.fieldValues.remove(O.SECOND_OF_MINUTE),this.fieldValues.remove(O.NANO_OF_SECOND)}},i._addObject=function(t){t instanceof Y?this.date=t:t instanceof cn&&(this.time=t)},i._resolveInstant=function(){if(null!=this.date&&null!=this.time){var t=this.fieldValues.get(O.OFFSET_SECONDS);if(null!=t){var n=Q.ofTotalSeconds(t),i=this.date.atTime(this.time).atZone(n).getLong(O.INSTANT_SECONDS);this.fieldValues.put(O.INSTANT_SECONDS,i)}else if(null!=this.zone){var e=this.date.atTime(this.time).atZone(this.zone).getLong(O.INSTANT_SECONDS);this.fieldValues.put(O.INSTANT_SECONDS,e)}}},i.build=function(t){return t.queryFrom(this)},i.isSupported=function(t){return null!=t&&(this.fieldValues.containsKey(t)&&void 0!==this.fieldValues.get(t)||null!=this.date&&this.date.isSupported(t)||null!=this.time&&this.time.isSupported(t))},i.getLong=function(t){v(t,"field");var n=this.getFieldValue0(t);if(null==n){if(null!=this.date&&this.date.isSupported(t))return this.date.getLong(t);if(null!=this.time&&this.time.isSupported(t))return this.time.getLong(t);throw new r("Field not found: "+t)}return n},i.query=function(t){return t===z.zoneId()?this.zone:t===z.chronology()?this.chrono:t===z.localDate()?null!=this.date?hn.from(this.date):null:t===z.localTime()?this.time:t===z.zone()||t===z.offset()?t.queryFrom(this):t===z.precision()?null:t.queryFrom(this)},n}(A),nt=function(){function t(){if(1===arguments.length){if(arguments[0]instanceof t)return void this._constructorSelf.apply(this,arguments);this._constructorFormatter.apply(this,arguments)}else this._constructorParam.apply(this,arguments);this._caseSensitive=!0,this._strict=!0,this._parsed=[new it(this)]}var n=t.prototype;return n._constructorParam=function(t,n,i){this._locale=t,this._symbols=n,this._overrideChronology=i},n._constructorFormatter=function(t){this._locale=t.locale(),this._symbols=t.decimalStyle(),this._overrideChronology=t.chronology()},n._constructorSelf=function(t){this._locale=t._locale,this._symbols=t._symbols,this._overrideChronology=t._overrideChronology,this._overrideZone=t._overrideZone,this._caseSensitive=t._caseSensitive,this._strict=t._strict,this._parsed=[new it(this)]},n.copy=function(){return new t(this)},n.symbols=function(){return this._symbols},n.isStrict=function(){return this._strict},n.setStrict=function(t){this._strict=t},n.locale=function(){return this._locale},n.setLocale=function(t){this._locale=t},n.startOptional=function(){this._parsed.push(this.currentParsed().copy())},n.endOptional=function(t){t?this._parsed.splice(this._parsed.length-2,1):this._parsed.splice(this._parsed.length-1,1)},n.isCaseSensitive=function(){return this._caseSensitive},n.setCaseSensitive=function(t){this._caseSensitive=t},n.subSequenceEquals=function(t,n,i,e,r){if(n+r>t.length||e+r>i.length)return!1;this.isCaseSensitive()||(t=t.toLowerCase(),i=i.toLowerCase());for(var s=0;s0)return null;throw t}},n.temporal=function(){return this._temporal},n.locale=function(){return this._locale},n.setDateTime=function(t){this._temporal=t},n.setLocale=function(t){this._locale=t},t}(),rt={},st=[0,90,181,273,0,91,182,274],ot=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i._isIso=function(){return!0},n._getWeekRangeByLocalDate=function(t){var i=n._getWeekBasedYear(t);return q.of(1,n._getWeekRangeByYear(i))},n._getWeekRangeByYear=function(t){var n=hn.of(t,1,1);return n.dayOfWeek()===M.THURSDAY||n.dayOfWeek()===M.WEDNESDAY&&n.isLeapYear()?53:52},n._getWeek=function(t){var i=t.dayOfWeek().ordinal(),e=t.dayOfYear()-1,r=e+(3-i),s=r-7*b.intDiv(r,7)-3;if(s<-3&&(s+=7),e=363){var e=t.dayOfWeek().ordinal();(i=i-363-(t.isLeapYear()?1:0))-e>=0&&n++}return n},i.displayName=function(){return this.toString()},i.resolve=function(){return null},i.name=function(){return this.toString()},n}(C),ut=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"DayOfQuarter"},i.baseUnit=function(){return E.DAYS},i.rangeUnit=function(){return pt},i.range=function(){return q.of(1,90,92)},i.isSupportedBy=function(t){return t.isSupported(O.DAY_OF_YEAR)&&t.isSupported(O.MONTH_OF_YEAR)&&t.isSupported(O.YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: DayOfQuarter");var n=t.getLong(ft);if(1===n){var i=t.getLong(O.YEAR);return nn.isLeapYear(i)?q.of(1,91):q.of(1,90)}return 2===n?q.of(1,91):3===n||4===n?q.of(1,92):this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: DayOfQuarter");var n=t.get(O.DAY_OF_YEAR),i=t.get(O.MONTH_OF_YEAR),e=t.getLong(O.YEAR);return n-st[b.intDiv(i-1,3)+(nn.isLeapYear(e)?4:0)]},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(O.DAY_OF_YEAR,t.getLong(O.DAY_OF_YEAR)+(n-i))},i.resolve=function(t,n,i){var e=t.get(O.YEAR),r=t.get(ft);if(null==e||null==r)return null;var s,o=O.YEAR.checkValidIntValue(e),u=t.get(ct);if(i===U.LENIENT){var a=r;s=(s=(s=hn.of(o,1,1)).plusMonths(b.safeMultiply(b.safeSubtract(a,1),3))).plusDays(b.safeSubtract(u,1))}else{var h=ft.range().checkValidIntValue(r,ft);if(i===U.STRICT){var _=92;1===h?_=nn.isLeapYear(o)?91:90:2===h&&(_=91),q.of(1,_).checkValidValue(u,this)}else this.range().checkValidValue(u,this);s=hn.of(o,3*(h-1)+1,1).plusDays(u-1)}return t.remove(this),t.remove(O.YEAR),t.remove(ft),s},n}(ot),at=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"QuarterOfYear"},i.baseUnit=function(){return pt},i.rangeUnit=function(){return E.YEARS},i.range=function(){return q.of(1,4)},i.isSupportedBy=function(t){return t.isSupported(O.MONTH_OF_YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){return this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: QuarterOfYear");var n=t.getLong(O.MONTH_OF_YEAR);return b.intDiv(n+2,3)},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(O.MONTH_OF_YEAR,t.getLong(O.MONTH_OF_YEAR)+3*(n-i))},n}(ot),ht=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekOfWeekBasedYear"},i.baseUnit=function(){return E.WEEKS},i.rangeUnit=function(){return wt},i.range=function(){return q.of(1,52,53)},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekOfWeekBasedYear");return ot._getWeekRangeByLocalDate(hn.from(t))},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekOfWeekBasedYear");return ot._getWeek(hn.from(t))},i.adjustInto=function(t,n){return this.range().checkValidValue(n,this),t.plus(b.safeSubtract(n,this.getFrom(t)),E.WEEKS)},i.resolve=function(t,n,i){var e=t.get(dt),r=t.get(O.DAY_OF_WEEK);if(null==e||null==r)return null;var s,o=dt.range().checkValidIntValue(e,dt),u=t.get(vt);if(i===U.LENIENT){var a=r,h=0;a>7?(h=b.intDiv(a-1,7),a=b.intMod(a-1,7)+1):a<1&&(h=b.intDiv(a,7)-1,a=b.intMod(a,7)+7),s=hn.of(o,1,4).plusWeeks(u-1).plusWeeks(h).with(O.DAY_OF_WEEK,a)}else{var _=O.DAY_OF_WEEK.checkValidIntValue(r);if(i===U.STRICT){var l=hn.of(o,1,4);ot._getWeekRangeByLocalDate(l).checkValidValue(u,this)}else this.range().checkValidValue(u,this);s=hn.of(o,1,4).plusWeeks(u-1).with(O.DAY_OF_WEEK,_)}return t.remove(this),t.remove(dt),t.remove(O.DAY_OF_WEEK),s},i.displayName=function(){return"Week"},n}(ot),_t=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekBasedYear"},i.baseUnit=function(){return wt},i.rangeUnit=function(){return E.FOREVER},i.range=function(){return O.YEAR.range()},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){return O.YEAR.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekBasedYear");return ot._getWeekBasedYear(hn.from(t))},i.adjustInto=function(t,n){if(!1===this.isSupportedBy(t))throw new o("Unsupported field: WeekBasedYear");var i=this.range().checkValidIntValue(n,dt),e=hn.from(t),r=e.get(O.DAY_OF_WEEK),s=ot._getWeek(e);53===s&&52===ot._getWeekRangeByYear(i)&&(s=52);var u=hn.of(i,1,4),a=r-u.get(O.DAY_OF_WEEK)+7*(s-1);return u=u.plusDays(a),t.with(u)},n}(ot),lt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return!0},i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)},i.addTo=function(t,n){switch(this){case wt:var i=b.safeAdd(t.get(dt),n);return t.with(dt,i);case pt:return t.plus(b.intDiv(n,256),E.YEARS).plus(3*b.intMod(n,256),E.MONTHS);default:throw new h("Unreachable")}},i.between=function(t,n){switch(this){case wt:return b.safeSubtract(n.getLong(dt),t.getLong(dt));case pt:return b.intDiv(t.until(n,E.MONTHS),3);default:throw new h("Unreachable")}},i.toString=function(){return name},n}(k),ct=null,ft=null,vt=null,dt=null,wt=null,pt=null,mt=function(){function t(t,n,i,e){this._zeroDigit=t,this._zeroDigitCharCode=t.charCodeAt(0),this._positiveSign=n,this._negativeSign=i,this._decimalSeparator=e}var n=t.prototype;return n.positiveSign=function(){return this._positiveSign},n.withPositiveSign=function(n){return n===this._positiveSign?this:new t(this._zeroDigit,n,this._negativeSign,this._decimalSeparator)},n.negativeSign=function(){return this._negativeSign},n.withNegativeSign=function(n){return n===this._negativeSign?this:new t(this._zeroDigit,this._positiveSign,n,this._decimalSeparator)},n.zeroDigit=function(){return this._zeroDigit},n.withZeroDigit=function(n){return n===this._zeroDigit?this:new t(n,this._positiveSign,this._negativeSign,this._decimalSeparator)},n.decimalSeparator=function(){return this._decimalSeparator},n.withDecimalSeparator=function(n){return n===this._decimalSeparator?this:new t(this._zeroDigit,this._positiveSign,this._negativeSign,n)},n.convertToDigit=function(t){var n=t.charCodeAt(0)-this._zeroDigitCharCode;return n>=0&&n<=9?n:-1},n.convertNumberToI18N=function(t){if("0"===this._zeroDigit)return t;for(var n=this._zeroDigitCharCode-"0".charCodeAt(0),i="",e=0;e1)throw new a('invalid literal, too long: "'+t+'"');this._literal=t}var n=t.prototype;return n.print=function(t,n){return n.append(this._literal),!0},n.parse=function(t,n,i){if(i===n.length)return~i;var e=n.charAt(i);return!1===t.charEquals(this._literal,e)?~i:i+this._literal.length},n.toString=function(){return"'"===this._literal?"''":"'"+this._literal+"'"},t}(),yt=function(){function t(t,n){this._printerParsers=t,this._optional=n}var n=t.prototype;return n.withOptional=function(n){return n===this._optional?this:new t(this._printerParsers,n)},n.print=function(t,n){var i=n.length();this._optional&&t.startOptional();try{for(var e=0;e9)throw new a("Minimum width must be from 0 to 9 inclusive but was "+n);if(i<1||i>9)throw new a("Maximum width must be from 1 to 9 inclusive but was "+i);if(i0){this.decimalPoint&&n.append(e.decimalSeparator());for(var r=0;r0)for(;s.length>this.minWidth&&"0"===s[s.length-1];)s=s.substr(0,s.length-1);var u=s;u=e.convertNumberToI18N(u),this.decimalPoint&&n.append(e.decimalSeparator()),n.append(u)}return!0},n.parse=function(t,n,i){var e=t.isStrict()?this.minWidth:0,r=t.isStrict()?this.maxWidth:9,s=n.length;if(i===s)return e>0?~i:i;if(this.decimalPoint){if(n[i]!==t.symbols().decimalSeparator())return e>0?~i:i;i++}var o=i+e;if(o>s)return~i;for(var u=Math.min(i+r,s),a=0,h=i;h0&&this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE},n.print=function(t,n){var i=t.getValue(this._field);if(null==i)return!1;var e=this._getValue(t,i),s=t.symbols(),o=""+Math.abs(e);if(o.length>this._maxWidth)throw new r("Field "+this._field+" cannot be printed as the value "+e+" exceeds the maximum print width of "+this._maxWidth);if(o=s.convertNumberToI18N(o),e>=0)switch(this._signStyle){case gt.EXCEEDS_PAD:this._minWidth<15&&e>=xt[this._minWidth]&&n.append(s.positiveSign());break;case gt.ALWAYS:n.append(s.positiveSign())}else switch(this._signStyle){case gt.NORMAL:case gt.EXCEEDS_PAD:case gt.ALWAYS:n.append(s.negativeSign());break;case gt.NOT_NEGATIVE:throw new r("Field "+this._field+" cannot be printed as the value "+e+" cannot be negative according to the SignStyle")}for(var u=0;u=0&&ie)return~i;for(var _=(t.isStrict()||this._isFixedWidth()?this._maxWidth:9)+Math.max(this._subsequentWidth,0),l=0,c=i,v=0;v<2;v++){for(var d=Math.min(c+_,e);c15)throw new u("number text exceeds length");l=10*l+p}if(!(this._subsequentWidth>0&&0===v))break;var m=c-i;_=Math.max(a,m-this._subsequentWidth),c=i,l=0}if(s){if(0===l&&t.isStrict())return~(i-1);0!==l&&(l=-l)}else if(this._signStyle===gt.EXCEEDS_PAD&&t.isStrict()){var g=c-i;if(o){if(g<=this._minWidth)return~(i-1)}else if(g>this._minWidth)return~i}return this._setValue(t,l,i,c)},n._getValue=function(t,n){return n},n._setValue=function(t,n,i,e){return t.setParsedField(this._field,n,i,e)},n.toString=function(){return 1===this._minWidth&&15===this._maxWidth&&this._signStyle===gt.NORMAL?"Value("+this._field+")":this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE?"Value("+this._field+","+this._minWidth+")":"Value("+this._field+","+this._minWidth+","+this._maxWidth+","+this._signStyle+")"},t}(),Et=function(t){function n(n,i,e,s,o){var u;if(u=t.call(this,n,i,e,gt.NOT_NEGATIVE)||this,i<1||i>10)throw new a("The width must be from 1 to 10 inclusive but was "+i);if(e<1||e>10)throw new a("The maxWidth must be from 1 to 10 inclusive but was "+e);if(eb.MAX_SAFE_INTEGER)throw new r("Unable to add printer-parser as the range exceeds the capacity of an int")}return u._baseValue=s,u._baseDate=o,u}l(n,t);var i=n.prototype;return i._getValue=function(t,n){var i=Math.abs(n),e=this._baseValue;return null!==this._baseDate&&(t.temporal(),e=nn.INSTANCE.date(this._baseDate).get(this._field)),n>=e&&n=0){var s=xt[this._minWidth],o=r-r%s;(n=r>0?o+n:o-n)=3||this.type>=1&&s>0)&&(n.append(this.type%2==0?":":"").appendChar(b.intDiv(s,10)+"0").appendChar(s%10+"0"),a+=s,(this.type>=7||this.type>=5&&o>0)&&(n.append(this.type%2==0?":":"").appendChar(b.intDiv(o,10)+"0").appendChar(o%10+"0"),a+=o)),0===a&&(n.setLength(u),n.append(this.noOffsetText))}return!0},n.parse=function(t,n,i){var e=n.length,r=this.noOffsetText.length;if(0===r){if(i===e)return t.setParsedField(O.OFFSET_SECONDS,0,i,i)}else{if(i===e)return~i;if(t.subSequenceEquals(n,i,this.noOffsetText,0,r))return t.setParsedField(O.OFFSET_SECONDS,0,i,i+r)}var s=n[i];if("+"===s||"-"===s){var o="-"===s?-1:1,u=[0,0,0,0];if(u[0]=i+1,!1===(this._parseNumber(u,1,n,!0)||this._parseNumber(u,2,n,this.type>=3)||this._parseNumber(u,3,n,!1))){var a=b.safeZero(o*(3600*u[1]+60*u[2]+u[3]));return t.setParsedField(O.OFFSET_SECONDS,a,i,u[0])}}return 0===r?t.setParsedField(O.OFFSET_SECONDS,0,i,i+r):~i},n._parseNumber=function(t,n,i,e){if((this.type+3)/21){if(r+1>i.length||":"!==i[r])return e;r++}if(r+2>i.length)return e;var s=i[r++],o=i[r++];if(s<"0"||s>"9"||o<"0"||o>"9")return e;var u=10*(s.charCodeAt(0)-48)+(o.charCodeAt(0)-48);return u<0||u>59?e:(t[n]=u,t[0]=r,!1)},n.toString=function(){var t=this.noOffsetText.replace("'","''");return"Offset("+Ct[this.type]+",'"+t+"')"},t}();qt.INSTANCE_ID=new qt("Z","+HH:MM:ss"),qt.PATTERNS=Ct;var Ot=function(){function t(t,n,i){this._printerParser=t,this._padWidth=n,this._padChar=i}var n=t.prototype;return n.print=function(t,n){var i=n.length();if(!1===this._printerParser.print(t,n))return!1;var e=n.length()-i;if(e>this._padWidth)throw new r("Cannot print as output of "+e+" characters exceeds pad width of "+this._padWidth);for(var s=0;sn.length)),f(i>=0),i===n.length)return~i;var s=i+this._padWidth;if(s>n.length){if(e)return~i;s=n.length}for(var o=i;on.length||i<0)),!1===t.subSequenceEquals(n,i,this._literal,0,this._literal.length)?~i:i+this._literal.length},n.toString=function(){return"'"+this._literal.replace("'","''")+"'"},t}(),jt=function(){function t(){}return t.getRules=function(t){throw new r("unsupported ZoneId:"+t)},t.getAvailableZoneIds=function(){return[]},t}(),Mt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._id=n,e._rules=i,e}l(n,t),n.ofId=function(t){return new n(t,jt.getRules(t))};var i=n.prototype;return i.id=function(){return this._id},i.rules=function(){return this._rules},n}(G),Nt=function(){function t(t,n){this.query=t,this.description=n}var n=t.prototype;return n.print=function(t,n){var i=t.getValueQuery(this.query);return null!=i&&(n.append(i.id()),!0)},n.parse=function(t,n,i){var e=n.length;if(i>e)return~i;if(i===e)return~i;var r=n.charAt(i);if("+"===r||"-"===r){var s=t.copy(),o=qt.INSTANCE_ID.parse(s,n,i);if(o<0)return o;var u=s.getParsed(O.OFFSET_SECONDS),a=Q.ofTotalSeconds(u);return t.setParsedZone(a),o}if(e>=i+2){var h=n.charAt(i+1);if(t.charEquals(r,"U")&&t.charEquals(h,"T"))return e>=i+3&&t.charEquals(n.charAt(i+2),"C")?this._parsePrefixedOffset(t,n,i,i+3):this._parsePrefixedOffset(t,n,i,i+2);if(t.charEquals(r,"G")&&e>=i+3&&t.charEquals(h,"M")&&t.charEquals(n.charAt(i+2),"T"))return this._parsePrefixedOffset(t,n,i,i+3)}if("SYSTEM"===n.substr(i,6))return t.setParsedZone(G.systemDefault()),i+6;if(t.charEquals(r,"Z"))return t.setParsedZone(Q.UTC),i+1;var _=jt.getAvailableZoneIds();Lt.size!==_.length&&(Lt=Rt.createTreeMap(_));for(var l=e-i,c=Lt.treeMap,f=null,v=0;null!=c;){var d=n.substr(i,Math.min(c.length,l));null!=(c=c.get(d))&&c.isLeaf&&(f=d,v=c.length)}return null!=f?(t.setParsedZone(Mt.ofId(f)),i+v):~i},n._parsePrefixedOffset=function(t,n,i,e){var r=n.substring(i,e).toUpperCase(),s=t.copy();if(ethis.length){var e=n.substr(0,this.length),r=this._treeMap[e];null==r&&(r=new t(i,!1),this._treeMap[e]=r),r.add(n)}},n.get=function(t){return this._treeMap[t]},t}(),Lt=new Rt([]),Ft=15,Ut=function(){function t(){this._active=this,this._parent=null,this._printerParsers=[],this._optional=!1,this._padNextWidth=0,this._padNextChar=null,this._valueParserIndex=-1}t._of=function(n,i){v(n,"parent"),v(i,"optional");var e=new t;return e._parent=n,e._optional=i,e};var n=t.prototype;return n.parseCaseSensitive=function(){return this._appendInternalPrinterParser(zt.SENSITIVE),this},n.parseCaseInsensitive=function(){return this._appendInternalPrinterParser(zt.INSENSITIVE),this},n.parseStrict=function(){return this._appendInternalPrinterParser(zt.STRICT),this},n.parseLenient=function(){return this._appendInternalPrinterParser(zt.LENIENT),this},n.appendValue=function(){return 1===arguments.length?this._appendValue1.apply(this,arguments):2===arguments.length?this._appendValue2.apply(this,arguments):this._appendValue4.apply(this,arguments)},n._appendValue1=function(t){return v(t),this._appendValuePrinterParser(new St(t,1,Ft,gt.NORMAL)),this},n._appendValue2=function(t,n){if(v(t),n<1||n>Ft)throw new a("The width must be from 1 to 15 inclusive but was "+n);var i=new St(t,n,n,gt.NOT_NEGATIVE);return this._appendValuePrinterParser(i),this},n._appendValue4=function(t,n,i,e){if(v(t),v(e),n===i&&e===gt.NOT_NEGATIVE)return this._appendValue2(t,i);if(n<1||n>Ft)throw new a("The minimum width must be from 1 to 15 inclusive but was "+n);if(i<1||i>Ft)throw new a("The minimum width must be from 1 to 15 inclusive but was "+i);if(i=0&&this._active._printerParsers[this._active._valueParserIndex]instanceof St){var n=this._active._valueParserIndex,i=this._active._printerParsers[n];t.minWidth()===t.maxWidth()&&t.signStyle()===gt.NOT_NEGATIVE?(i=i.withSubsequentWidth(t.maxWidth()),this._appendInternal(t.withFixedWidth()),this._active._valueParserIndex=n):(i=i.withFixedWidth(),this._active._valueParserIndex=this._appendInternal(t)),this._active._printerParsers[n]=i}else this._active._valueParserIndex=this._appendInternal(t);return this},n.appendFraction=function(t,n,i,e){return this._appendInternal(new kt(t,n,i,e)),this},n.appendInstant=function(t){if(void 0===t&&(t=-2),t<-2||t>9)throw new a("Invalid fractional digits: "+t);return this._appendInternal(new Bt(t)),this},n.appendOffsetId=function(){return this._appendInternal(qt.INSTANCE_ID),this},n.appendOffset=function(t,n){return this._appendInternalPrinterParser(new qt(n,t)),this},n.appendZoneId=function(){return this._appendInternal(new Nt(z.zoneId(),"ZoneId()")),this},n.appendPattern=function(t){return v(t,"pattern"),this._parsePattern(t),this},n.appendZoneText=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendText=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendLocalizedOffset=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendWeekField=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n._parsePattern=function(t){for(var n={G:O.ERA,y:O.YEAR_OF_ERA,u:O.YEAR,Q:rt.QUARTER_OF_YEAR,q:rt.QUARTER_OF_YEAR,M:O.MONTH_OF_YEAR,L:O.MONTH_OF_YEAR,D:O.DAY_OF_YEAR,d:O.DAY_OF_MONTH,F:O.ALIGNED_DAY_OF_WEEK_IN_MONTH,E:O.DAY_OF_WEEK,c:O.DAY_OF_WEEK,e:O.DAY_OF_WEEK,a:O.AMPM_OF_DAY,H:O.HOUR_OF_DAY,k:O.CLOCK_HOUR_OF_DAY,K:O.HOUR_OF_AMPM,h:O.CLOCK_HOUR_OF_AMPM,m:O.MINUTE_OF_HOUR,s:O.SECOND_OF_MINUTE,S:O.NANO_OF_SECOND,A:O.MILLI_OF_DAY,n:O.NANO_OF_SECOND,N:O.NANO_OF_DAY},i=0;i="A"&&e<="Z"||e>="a"&&e<="z"){for(var r=i++;i="A"&&e<="Z"||e>="a"&&e<="z")){for(o=s,r=i++;i4)throw new a("Too many pattern letters: "+e);4===s?this.appendZoneText(bt.FULL):this.appendZoneText(bt.SHORT)}else if("V"===e){if(2!==s)throw new a("Pattern letter count must be 2: "+e);this.appendZoneId()}else if("Z"===e)if(s<4)this.appendOffset("+HHMM","+0000");else if(4===s)this.appendLocalizedOffset(bt.FULL);else{if(5!==s)throw new a("Too many pattern letters: "+e);this.appendOffset("+HH:MM:ss","Z")}else if("O"===e)if(1===s)this.appendLocalizedOffset(bt.SHORT);else{if(4!==s)throw new a("Pattern letter count must be 1 or 4: "+e);this.appendLocalizedOffset(bt.FULL)}else if("X"===e){if(s>5)throw new a("Too many pattern letters: "+e);this.appendOffset(qt.PATTERNS[s+(1===s?0:1)],"Z")}else if("x"===e){if(s>5)throw new a("Too many pattern letters: "+e);var h=1===s?"+00":s%2==0?"+0000":"+00:00";this.appendOffset(qt.PATTERNS[s+(1===s?0:1)],h)}else if("W"===e){if(s>1)throw new a("Too many pattern letters: "+e);this.appendWeekField("W",s)}else if("w"===e){if(s>2)throw new a("Too many pattern letters: "+e);this.appendWeekField("w",s)}else{if("Y"!==e)throw new a("Unknown pattern letter: "+e);this.appendWeekField("Y",s)}i--}else if("'"===e){for(var _=i++;i=t.length)throw new a("Pattern ends with an incomplete string literal: "+t);var l=t.substring(_+1,i);0===l.length?this.appendLiteral("'"):this.appendLiteral(l.replace("''","'"))}else if("["===e)this.optionalStart();else if("]"===e){if(null===this._active._parent)throw new a("Pattern invalid as it contains ] without previous [");this.optionalEnd()}else{if("{"===e||"}"===e||"#"===e)throw new a("Pattern includes reserved character: '"+e+"'");this.appendLiteral(e)}}},n._parseField=function(t,n,i){switch(t){case"u":case"y":2===n?this.appendValueReduced(i,2,2,Et.BASE_DATE):n<4?this.appendValue(i,n,Ft,gt.NORMAL):this.appendValue(i,n,Ft,gt.EXCEEDS_PAD);break;case"M":case"Q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,bt.SHORT);break;case 4:this.appendText(i,bt.FULL);break;case 5:this.appendText(i,bt.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"L":case"q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,bt.SHORT_STANDALONE);break;case 4:this.appendText(i,bt.FULL_STANDALONE);break;case 5:this.appendText(i,bt.NARROW_STANDALONE);break;default:throw new a("Too many pattern letters: "+t)}break;case"e":switch(n){case 1:case 2:this.appendWeekField("e",n);break;case 3:this.appendText(i,bt.SHORT);break;case 4:this.appendText(i,bt.FULL);break;case 5:this.appendText(i,bt.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"c":switch(n){case 1:this.appendWeekField("c",n);break;case 2:throw new a("Invalid number of pattern letters: "+t);case 3:this.appendText(i,bt.SHORT_STANDALONE);break;case 4:this.appendText(i,bt.FULL_STANDALONE);break;case 5:this.appendText(i,bt.NARROW_STANDALONE);break;default:throw new a("Too many pattern letters: "+t)}break;case"a":if(1!==n)throw new a("Too many pattern letters: "+t);this.appendText(i,bt.SHORT);break;case"E":case"G":switch(n){case 1:case 2:case 3:this.appendText(i,bt.SHORT);break;case 4:this.appendText(i,bt.FULL);break;case 5:this.appendText(i,bt.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"S":this.appendFraction(O.NANO_OF_SECOND,n,n,!1);break;case"F":if(1!==n)throw new a("Too many pattern letters: "+t);this.appendValue(i);break;case"d":case"h":case"H":case"k":case"K":case"m":case"s":if(1===n)this.appendValue(i);else{if(2!==n)throw new a("Too many pattern letters: "+t);this.appendValue(i,n)}break;case"D":if(1===n)this.appendValue(i);else{if(!(n<=3))throw new a("Too many pattern letters: "+t);this.appendValue(i,n)}break;default:1===n?this.appendValue(i):this.appendValue(i,n)}},n.padNext=function(){return 1===arguments.length?this._padNext1.apply(this,arguments):this._padNext2.apply(this,arguments)},n._padNext1=function(t){return this._padNext2(t," ")},n._padNext2=function(t,n){if(t<1)throw new a("The pad width must be at least one but was "+t);return this._active._padNextWidth=t,this._active._padNextChar=n,this._active._valueParserIndex=-1,this},n.optionalStart=function(){return this._active._valueParserIndex=-1,this._active=t._of(this._active,!0),this},n.optionalEnd=function(){if(null==this._active._parent)throw new h("Cannot call optionalEnd() as there was no previous call to optionalStart()");if(this._active._printerParsers.length>0){var t=new yt(this._active._printerParsers,this._active._optional);this._active=this._active._parent,this._appendInternal(t)}else this._active=this._active._parent;return this},n._appendInternal=function(t){return f(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new Ot(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.appendLiteral=function(t){return f(null!=t),t.length>0&&(1===t.length?this._appendInternalPrinterParser(new $t(t.charAt(0))):this._appendInternalPrinterParser(new Dt(t))),this},n._appendInternalPrinterParser=function(t){return f(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new Ot(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.append=function(t){return v(t,"formatter"),this._appendInternal(t._toPrinterParser(!1)),this},n.toFormatter=function(t){for(void 0===t&&(t=U.SMART);null!=this._active._parent;)this.optionalEnd();var n=new yt(this._printerParsers,!1);return new Wt(n,null,mt.STANDARD,t,null,null,null)},t}(),Ht=31556952e4,Vt=62167219200,Bt=function(){function t(t){this.fractionalDigits=t}var n=t.prototype;return n.print=function(t,n){var i=t.getValue(O.INSTANT_SECONDS),e=0;if(t.temporal().isSupported(O.NANO_OF_SECOND)&&(e=t.temporal().getLong(O.NANO_OF_SECOND)),null==i)return!1;var r=i,s=O.NANO_OF_SECOND.checkValidIntValue(e);if(r>=-62167219200){var o=r-Ht+Vt,u=b.floorDiv(o,Ht)+1,a=b.floorMod(o,Ht),h=ln.ofEpochSecond(a-Vt,0,Q.UTC);u>0&&n.append("+").append(u),n.append(h),0===h.second()&&n.append(":00")}else{var _=r+Vt,l=b.intDiv(_,Ht),c=b.intMod(_,Ht),f=ln.ofEpochSecond(c-Vt,0,Q.UTC),v=n.length();n.append(f),0===f.second()&&n.append(":00"),l<0&&(-1e4===f.year()?n.replace(v,v+2,""+(l-1)):0===c?n.insert(v,l):n.insert(v+1,Math.abs(l)))}if(-2===this.fractionalDigits)0!==s&&(n.append("."),0===b.intMod(s,1e6)?n.append((""+(b.intDiv(s,1e6)+1e3)).substring(1)):0===b.intMod(s,1e3)?n.append((""+(b.intDiv(s,1e3)+1e6)).substring(1)):n.append((""+(s+1e9)).substring(1)));else if(this.fractionalDigits>0||-1===this.fractionalDigits&&s>0){n.append(".");for(var d=1e8,w=0;-1===this.fractionalDigits&&s>0||w64?t.substring(0,64)+"...":t,new s("Text '"+i+"' could not be parsed: "+n.message,t,0,n)},n._parseToBuilder=function(t,n){var i=null!=n?n:new L(0),e=this._parseUnresolved0(t,i);if(null==e||i.getErrorIndex()>=0||null==n&&i.getIndex()64?t.substr(0,64).toString()+"...":t,i.getErrorIndex()>=0?new s("Text '"+r+"' could not be parsed at index "+i.getErrorIndex(),t,i.getErrorIndex()):new s("Text '"+r+"' could not be parsed, unparsed text found at index "+i.getIndex(),t,i.getIndex())}return e.toBuilder()},n.parseUnresolved=function(t,n){return this._parseUnresolved0(t,n)},n._parseUnresolved0=function(t,n){f(null!=t,"text",_),f(null!=n,"position",_);var i=new nt(this),e=n.getIndex();return(e=this._printerParser.parse(i,t,e))<0?(n.setErrorIndex(~e),null):(n.setIndex(e),i.toParsed())},n._toPrinterParser=function(t){return this._printerParser.withOptional(t)},n.toString=function(){var t=this._printerParser.toString();return 0===t.indexOf("[")?t:t.substring(1,t.length-1)},t}(),Gt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._month=b.safeToInt(n),e._day=b.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return this.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),this.nowClock(dn.system(t))},n.nowClock=function(t){v(t,"clock");var i=hn.now(t);return n.of(i.month(),i.dayOfMonth())},n.of=function(t,i){return 2===arguments.length&&t instanceof N?n.ofMonthNumber(t,i):n.ofNumberNumber(t,i)},n.ofMonthNumber=function(t,i){if(v(t,"month"),O.DAY_OF_MONTH.checkValidValue(i),i>t.maxLength())throw new r("Illegal value for DayOfMonth field, value "+i+" is not valid for month "+t.toString());return new n(t.value(),i)},n.ofNumberNumber=function(t,i){return v(t,"month"),v(i,"dayOfMonth"),n.of(N.of(t),i)},n.from=function(t){if(v(t,"temporal"),d(t,A,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.MONTH_OF_YEAR),t.get(O.DAY_OF_MONTH))}catch(n){throw new r("Unable to obtain MonthDay from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,At)},n.parseStringFormatter=function(t,i){return v(t,"text"),v(i,"formatter"),d(i,Wt,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.isSupported=function(t){return t instanceof O?t===O.MONTH_OF_YEAR||t===O.DAY_OF_MONTH:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===O.MONTH_OF_YEAR?n.range():n===O.DAY_OF_MONTH?q.of(1,this.month().minLength(),this.month().maxLength()):t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.DAY_OF_MONTH:return this._day;case O.MONTH_OF_YEAR:return this._month}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isValidYear=function(t){return 0==(29===this._day&&2===this._month&&!1===Xt.isLeap(t))},i.withMonth=function(t){return this.with(N.of(t))},i.with=function(t){if(v(t,"month"),t.value()===this._month)return this;var i=Math.min(this._day,t.maxLength());return new n(t.value(),i)},i.withDayOfMonth=function(t){return t===this._day?this:n.of(this._month,t)},i.query=function(n){return v(n,"query"),d(n,T,"query"),n===z.chronology()?nn.INSTANCE:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),(t=t.with(O.MONTH_OF_YEAR,this._month)).with(O.DAY_OF_MONTH,Math.min(t.range(O.DAY_OF_MONTH).maximum(),this._day))},i.atYear=function(t){return hn.of(t,this._month,this.isValidYear(t)?this._day:28)},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=this._month-t.monthValue();return 0===i&&(i=this._day-t.dayOfMonth()),i},i.isAfter=function(t){return v(t,"other"),d(t,n,"other"),this.compareTo(t)>0},i.isBefore=function(t){return v(t,"other"),d(t,n,"other"),this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.monthValue()===i.monthValue()&&this.dayOfMonth()===i.dayOfMonth()}return!1},i.toString=function(){return"--"+(this._month<10?"0":"")+this._month+(this._day<10?"-0":"-")+this._day},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),d(t,Wt,"formatter"),t.format(this)},n}(A),Kt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._year=b.safeToInt(n),e._month=b.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return n.nowClock(dn.system(t))},n.nowClock=function(t){var i=hn.now(t);return n.of(i.year(),i.month())},n.of=function(t,i){return 2===arguments.length&&i instanceof N?n.ofNumberMonth(t,i):n.ofNumberNumber(t,i)},n.ofNumberMonth=function(t,i){return v(i,"month"),d(i,N,"month"),n.ofNumberNumber(t,i.value())},n.ofNumberNumber=function(t,i){return v(t,"year"),v(i,"month"),O.YEAR.checkValidValue(t),O.MONTH_OF_YEAR.checkValidValue(i),new n(t,i)},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.YEAR),t.get(O.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain YearMonth from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,Tt)},n.parseStringFormatter=function(t,i){return v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.isSupported=function(t){return 1===arguments.length&&t instanceof C?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof O?t===O.YEAR||t===O.MONTH_OF_YEAR||t===O.PROLEPTIC_MONTH||t===O.YEAR_OF_ERA||t===O.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof E?t===E.MONTHS||t===E.YEARS||t===E.DECADES||t===E.CENTURIES||t===E.MILLENNIA||t===E.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===O.YEAR_OF_ERA?this.year()<=0?q.of(1,Xt.MAX_VALUE+1):q.of(1,Xt.MAX_VALUE):t.prototype.range.call(this,n)},i.get=function(t){return v(t,"field"),d(t,C,"field"),this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t){case O.MONTH_OF_YEAR:return this._month;case O.PROLEPTIC_MONTH:return this._getProlepticMonth();case O.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case O.YEAR:return this._year;case O.ERA:return this._year<1?0:1}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i._getProlepticMonth=function(){return b.safeAdd(b.safeMultiply(this._year,12),this._month-1)},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.isValidDay=function(t){return t>=1&&t<=this.lengthOfMonth()},i.lengthOfMonth=function(){return this.month().length(this.isLeapYear())},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.with=function(t,n){return 1===arguments.length?this.withAdjuster(t):this.withFieldValue(t,n)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,n){if(v(t,"field"),d(t,C,"field"),t instanceof O){var i=t;switch(i.checkValidValue(n),i){case O.MONTH_OF_YEAR:return this.withMonth(n);case O.PROLEPTIC_MONTH:return this.plusMonths(n-this.getLong(O.PROLEPTIC_MONTH));case O.YEAR_OF_ERA:return this.withYear(this._year<1?1-n:n);case O.YEAR:return this.withYear(n);case O.ERA:return this.getLong(O.ERA)===n?this:this.withYear(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,n)},i.withYear=function(t){return O.YEAR.checkValidValue(t),new n(t,this._month)},i.withMonth=function(t){return O.MONTH_OF_YEAR.checkValidValue(t),new n(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),d(t,y,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),d(n,k,"unit"),n instanceof E){switch(n){case E.MONTHS:return this.plusMonths(t);case E.YEARS:return this.plusYears(t);case E.DECADES:return this.plusYears(b.safeMultiply(t,10));case E.CENTURIES:return this.plusYears(b.safeMultiply(t,100));case E.MILLENNIA:return this.plusYears(b.safeMultiply(t,1e3));case E.ERAS:return this.with(O.ERA,b.safeAdd(this.getLong(O.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var n=O.YEAR.checkValidIntValue(this._year+t);return this.withYear(n)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t;return new n(O.YEAR.checkValidIntValue(b.floorDiv(i,12)),b.floorMod(i,12)+1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return t===b.MIN_SAFE_INTEGER?this.plusAmountUnit(b.MAX_SAFE_INTEGER,n).plusAmountUnit(1,n):this.plusAmountUnit(-t,n)},i.minusYears=function(t){return t===b.MIN_SAFE_INTEGER?this.plusYears(b.MIN_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.minusMonths=function(t){return t===b.MIN_SAFE_INTEGER?this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1):this.plusMonths(-t)},i.query=function(n){return v(n,"query"),d(n,T,"query"),n===z.chronology()?nn.INSTANCE:n===z.precision()?E.MONTHS:n===z.localDate()||n===z.localTime()||n===z.zone()||n===z.zoneId()||n===z.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),d(t,V,"temporal"),t.with(O.PROLEPTIC_MONTH,this._getProlepticMonth())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit"),d(t,V,"endExclusive"),d(i,k,"unit");var e=n.from(t);if(i instanceof E){var r=e._getProlepticMonth()-this._getProlepticMonth();switch(i){case E.MONTHS:return r;case E.YEARS:return r/12;case E.DECADES:return r/120;case E.CENTURIES:return r/1200;case E.MILLENNIA:return r/12e3;case E.ERAS:return e.getLong(O.ERA)-this.getLong(O.ERA)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.atDay=function(t){return hn.of(this._year,this._month,t)},i.atEndOfMonth=function(){return hn.of(this._year,this._month,this.lengthOfMonth())},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=this._year-t.year();return 0===i&&(i=this._month-t.monthValue()),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.year()===i.year()&&this.monthValue()===i.monthValue()}return!1},i.toString=function(){return Tt.format(this)},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V),Xt=function(t){function n(n){var i;return(i=t.call(this)||this)._year=b.safeToInt(n),i}l(n,t);var i=n.prototype;return i.value=function(){return this._year},n.now=function(t){return void 0===t&&(t=void 0),void 0===t?n.now0():t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),d(t,G,"zone"),n.nowClock(dn.system(t))},n.nowClock=function(t){v(t,"clock"),d(t,dn,"clock");var i=hn.now(t);return n.of(i.year())},n.of=function(t){return v(t,"isoYear"),O.YEAR.checkValidValue(t),new n(t)},n.from=function(t){if(v(t,"temporal"),d(t,A,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.YEAR))}catch(n){throw new r("Unable to obtain Year from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return arguments.length<=1?n.parseText(t):n.parseTextFormatter(t,i)},n.parseText=function(t){return v(t,"text"),n.parse(t,It)},n.parseTextFormatter=function(t,i){return void 0===i&&(i=It),v(t,"text"),v(i,"formatter"),d(i,Wt,"formatter"),i.parse(t,n.FROM)},n.isLeap=function(t){return 0===b.intMod(t,4)&&(0!==b.intMod(t,100)||0===b.intMod(t,400))},i.isSupported=function(t){return 1===arguments.length&&t instanceof C?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof O?t===O.YEAR||t===O.YEAR_OF_ERA||t===O.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof E?t===E.YEARS||t===E.DECADES||t===E.CENTURIES||t===E.MILLENNIA||t===E.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){if(this.isSupported(n))return n.range();if(n instanceof O)throw new o("Unsupported field: "+n);return t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case O.YEAR:return this._year;case O.ERA:return this._year<1?0:1}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isLeap=function(){return n.isLeap(this._year)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.YEAR_OF_ERA:return n.of(this._year<1?1-i:i);case O.YEAR:return n.of(i);case O.ERA:return this.getLong(O.ERA)===i?this:n.of(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.plusAmount=function(t){return v(t,"amount"),d(t,y,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),d(n,k,"unit"),n instanceof E){switch(n){case E.YEARS:return this.plusYears(t);case E.DECADES:return this.plusYears(b.safeMultiply(t,10));case E.CENTURIES:return this.plusYears(b.safeMultiply(t,100));case E.MILLENNIA:return this.plusYears(b.safeMultiply(t,1e3));case E.ERAS:return this.with(O.ERA,b.safeAdd(this.getLong(O.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){return 0===t?this:n.of(O.YEAR.checkValidIntValue(b.safeAdd(this._year,t)))},i.minusAmount=function(t){return v(t,"amount"),d(t,y,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),d(n,k,"unit"),t===b.MIN_SAFE_INTEGER?this.plus(b.MAX_SAFE_INTEGER,n).plus(1,n):this.plus(-t,n)},i.minusYears=function(t){return t===b.MIN_SAFE_INTEGER?this.plusYears(b.MAX_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.YEAR,this._year)},i.isValidMonthDay=function(t){return null!=t&&t.isValidYear(this._year)},i.length=function(){return this.isLeap()?366:365},i.atDay=function(t){return hn.ofYearDay(this._year,t)},i.atMonth=function(t){return 1===arguments.length&&t instanceof N?this.atMonthMonth(t):this.atMonthNumber(t)},i.atMonthMonth=function(t){return v(t,"month"),d(t,N,"month"),Kt.of(this._year,t)},i.atMonthNumber=function(t){return v(t,"month"),Kt.of(this._year,t)},i.atMonthDay=function(t){return v(t,"monthDay"),d(t,Gt,"monthDay"),t.atYear(this._year)},i.query=function(n){return v(n,"query()"),d(n,T,"query()"),n===z.chronology()?nn.INSTANCE:n===z.precision()?E.YEARS:n===z.localDate()||n===z.localTime()||n===z.zone()||n===z.zoneId()||n===z.offset()?null:t.prototype.query.call(this,n)},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._year-t._year},i.isAfter=function(t){return v(t,"other"),d(t,n,"other"),this._year>t._year},i.isBefore=function(t){return v(t,"other"),d(t,n,"other"),this._year=0){var n=t.with(O.DAY_OF_MONTH,1),i=n.get(O.DAY_OF_WEEK),e=b.intMod(this._dowValue-i+7,7);return e+=7*(this._ordinal-1),n.plus(e,E.DAYS)}var r=t.with(O.DAY_OF_MONTH,t.range(O.DAY_OF_MONTH).maximum()),s=r.get(O.DAY_OF_WEEK),o=this._dowValue-s;return o=0===o?0:o>0?o-7:o,o-=7*(-this._ordinal-1),r.plus(o,E.DAYS)},n}(H),tn=function(t){function n(n,i){var e;return e=t.call(this)||this,v(i,"dayOfWeek"),e._relative=n,e._dowValue=i.value(),e}return l(n,t),n.prototype.adjustInto=function(t){var n=t.get(O.DAY_OF_WEEK);if(this._relative<2&&n===this._dowValue)return t;if(0==(1&this._relative)){var i=n-this._dowValue;return t.plus(i>=0?7-i:-i,E.DAYS)}var e=this._dowValue-n;return t.minus(e>=0?7-e:-e,E.DAYS)},n}(H),nn=function(t){function n(){return t.apply(this,arguments)||this}l(n,t),n.isLeapYear=function(t){return 0==(3&t)&&(t%100!=0||t%400==0)};var i=n.prototype;return i._updateResolveMap=function(t,n,i){v(t,"fieldValues"),v(n,"field");var e=t.get(n);if(null!=e&&e!==i)throw new r("Invalid state, field: "+n+" "+e+" conflicts with "+n+" "+i);t.put(n,i)},i.resolveDate=function(t,n){if(t.containsKey(O.EPOCH_DAY))return hn.ofEpochDay(t.remove(O.EPOCH_DAY));var i=t.remove(O.PROLEPTIC_MONTH);null!=i&&(n!==U.LENIENT&&O.PROLEPTIC_MONTH.checkValidValue(i),this._updateResolveMap(t,O.MONTH_OF_YEAR,b.floorMod(i,12)+1),this._updateResolveMap(t,O.YEAR,b.floorDiv(i,12)));var e=t.remove(O.YEAR_OF_ERA);if(null!=e){n!==U.LENIENT&&O.YEAR_OF_ERA.checkValidValue(e);var s=t.remove(O.ERA);if(null==s){var o=t.get(O.YEAR);n===U.STRICT?null!=o?this._updateResolveMap(t,O.YEAR,o>0?e:b.safeSubtract(1,e)):t.put(O.YEAR_OF_ERA,e):this._updateResolveMap(t,O.YEAR,null==o||o>0?e:b.safeSubtract(1,e))}else if(1===s)this._updateResolveMap(t,O.YEAR,e);else{if(0!==s)throw new r("Invalid value for era: "+s);this._updateResolveMap(t,O.YEAR,b.safeSubtract(1,e))}}else t.containsKey(O.ERA)&&O.ERA.checkValidValue(t.get(O.ERA));if(t.containsKey(O.YEAR)){if(t.containsKey(O.MONTH_OF_YEAR)&&t.containsKey(O.DAY_OF_MONTH)){var u=O.YEAR.checkValidIntValue(t.remove(O.YEAR)),a=t.remove(O.MONTH_OF_YEAR),h=t.remove(O.DAY_OF_MONTH);if(n===U.LENIENT){var _=a-1,l=h-1;return hn.of(u,1,1).plusMonths(_).plusDays(l)}return n===U.SMART?(O.DAY_OF_MONTH.checkValidValue(h),4===a||6===a||9===a||11===a?h=Math.min(h,30):2===a&&(h=Math.min(h,N.FEBRUARY.length(Xt.isLeap(u)))),hn.of(u,a,h)):hn.of(u,a,h)}if(t.containsKey(O.DAY_OF_YEAR)){var c=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var f=b.safeSubtract(t.remove(O.DAY_OF_YEAR),1);return hn.ofYearDay(c,1).plusDays(f)}var v=O.DAY_OF_YEAR.checkValidIntValue(t.remove(O.DAY_OF_YEAR));return hn.ofYearDay(c,v)}if(t.containsKey(O.ALIGNED_WEEK_OF_YEAR)){if(t.containsKey(O.ALIGNED_DAY_OF_WEEK_IN_YEAR)){var d=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var w=b.safeSubtract(t.remove(O.ALIGNED_WEEK_OF_YEAR),1),p=b.safeSubtract(t.remove(O.ALIGNED_DAY_OF_WEEK_IN_YEAR),1);return hn.of(d,1,1).plusWeeks(w).plusDays(p)}var m=O.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(O.ALIGNED_WEEK_OF_YEAR)),g=O.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(t.remove(O.ALIGNED_DAY_OF_WEEK_IN_YEAR)),$=hn.of(d,1,1).plusDays(7*(m-1)+(g-1));if(n===U.STRICT&&$.get(O.YEAR)!==d)throw new r("Strict mode rejected date parsed to a different year");return $}if(t.containsKey(O.DAY_OF_WEEK)){var y=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var k=b.safeSubtract(t.remove(O.ALIGNED_WEEK_OF_YEAR),1),x=b.safeSubtract(t.remove(O.DAY_OF_WEEK),1);return hn.of(y,1,1).plusWeeks(k).plusDays(x)}var S=O.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(O.ALIGNED_WEEK_OF_YEAR)),E=O.DAY_OF_WEEK.checkValidIntValue(t.remove(O.DAY_OF_WEEK)),C=hn.of(y,1,1).plusWeeks(S-1).with(Jt.nextOrSame(M.of(E)));if(n===U.STRICT&&C.get(O.YEAR)!==y)throw new r("Strict mode rejected date parsed to a different month");return C}}}return null},i.date=function(t){return hn.from(t)},n}($),en=function(t){function n(n,i){var e;return e=t.call(this)||this,v(n,"time"),d(n,cn,"time"),v(i,"offset"),d(i,Q,"offset"),e._time=n,e._offset=i,e}l(n,t),n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof on)return t.toOffsetTime();try{return new n(cn.from(t),Q.from(t))}catch(n){throw new r("Unable to obtain OffsetTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.now=function(t){return 0===arguments.length?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){v(t,"clock");var i=t.instant();return n.ofInstant(i,t.zone().rules().offset(i))},n.of=function(){return arguments.length<=2?n.ofTimeAndOffset.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s){return new n(cn.of(t,i,e,r),s)},n.ofTimeAndOffset=function(t,i){return new n(t,i)},n.ofInstant=function(t,i){v(t,"instant"),d(t,vn,"instant"),v(i,"zone"),d(i,G,"zone");var e=i.rules().offset(t),r=t.epochSecond()%cn.SECONDS_PER_DAY;return(r=(r+e.totalSeconds())%cn.SECONDS_PER_DAY)<0&&(r+=cn.SECONDS_PER_DAY),new n(cn.ofSecondOfDay(r,t.nano()),e)},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_OFFSET_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.adjustInto=function(t){return t.with(O.NANO_OF_DAY,this._time.toNanoOfDay()).with(O.OFFSET_SECONDS,this.offset().totalSeconds())},i.atDate=function(t){return on.of(t,this._time,this._offset)},i.format=function(t){return v(t,"formatter"),t.format(this,n.FROM)},i.get=function(n){return t.prototype.get.call(this,n)},i.getLong=function(t){return t instanceof O?t===O.OFFSET_SECONDS?this._offset.totalSeconds():this._time.getLong(t):t.getFrom(this)},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.offset=function(){return this._offset},i.isAfter=function(t){return v(t,"other"),this._toEpochNano()>t._toEpochNano()},i.isBefore=function(t){return v(t,"other"),this._toEpochNano()i?1:0),e},i.isAfter=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return n>i||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ni||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ns.firstDayOfYear(e)+s.length(e)-1&&(s=s.plus(1));var o=i-s.firstDayOfYear(e)+1;return new n(t,s.value(),o)},n.ofEpochDay=function(t){var i,e,r,s,o;void 0===t&&(t=0),o=t+an,i=0,(o-=60)<0&&(i=400*(e=b.intDiv(o+1,un)-1),o+=-e*un),(r=o-(365*(s=b.intDiv(400*o+591,un))+b.intDiv(s,4)-b.intDiv(s,100)+b.intDiv(s,400)))<0&&(r=o-(365*--s+b.intDiv(s,4)-b.intDiv(s,100)+b.intDiv(s,400))),s+=i;var u=r,a=b.intDiv(5*u+2,153),h=(a+2)%12+1,_=u-b.intDiv(306*a+5,10)+1;return new n(s+=b.intDiv(a,10),h,_)},n.from=function(t){v(t,"temporal");var n=t.query(z.localDate());if(null==n)throw new r("Unable to obtain LocalDate from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_DATE),f(null!=i,"formatter",_),i.parse(t,n.FROM)},n._resolvePreviousValid=function(t,i,e){switch(i){case 2:e=Math.min(e,nn.isLeapYear(t)?29:28);break;case 4:case 6:case 9:case 11:e=Math.min(e,30)}return n.of(t,i,e)},n._validate=function(t,n,i){var e;if(O.YEAR.checkValidValue(t),O.MONTH_OF_YEAR.checkValidValue(n),O.DAY_OF_MONTH.checkValidValue(i),i>28){switch(e=31,n){case 2:e=nn.isLeapYear(t)?29:28;break;case 4:case 6:case 9:case 11:e=30}i>e&&f(!1,29===i?"Invalid date 'February 29' as '"+t+"' is not a leap year":"Invalid date '"+t+"' '"+n+"' '"+i+"'",r)}};var i=n.prototype;return i.isSupported=function(n){return t.prototype.isSupported.call(this,n)},i.range=function(t){if(t instanceof O){if(t.isDateBased()){switch(t){case O.DAY_OF_MONTH:return q.of(1,this.lengthOfMonth());case O.DAY_OF_YEAR:return q.of(1,this.lengthOfYear());case O.ALIGNED_WEEK_OF_MONTH:return q.of(1,this.month()===N.FEBRUARY&&!1===this.isLeapYear()?4:5);case O.YEAR_OF_ERA:return this._year<=0?q.of(1,Xt.MAX_VALUE+1):q.of(1,Xt.MAX_VALUE)}return t.range()}throw new o("Unsupported field: "+t)}return t.rangeRefinedBy(this)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return f(null!=t,"",_),t instanceof O?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case O.DAY_OF_WEEK:return this.dayOfWeek().value();case O.ALIGNED_DAY_OF_WEEK_IN_MONTH:return b.intMod(this._day-1,7)+1;case O.ALIGNED_DAY_OF_WEEK_IN_YEAR:return b.intMod(this.dayOfYear()-1,7)+1;case O.DAY_OF_MONTH:return this._day;case O.DAY_OF_YEAR:return this.dayOfYear();case O.EPOCH_DAY:return this.toEpochDay();case O.ALIGNED_WEEK_OF_MONTH:return b.intDiv(this._day-1,7)+1;case O.ALIGNED_WEEK_OF_YEAR:return b.intDiv(this.dayOfYear()-1,7)+1;case O.MONTH_OF_YEAR:return this._month;case O.PROLEPTIC_MONTH:return this._prolepticMonth();case O.YEAR_OF_ERA:return this._year>=1?this._year:1-this._year;case O.YEAR:return this._year;case O.ERA:return this._year>=1?1:0}throw new o("Unsupported field: "+t)},i._prolepticMonth=function(){return 12*this._year+(this._month-1)},i.chronology=function(){return nn.INSTANCE},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.dayOfYear=function(){return this.month().firstDayOfYear(this.isLeapYear())+this._day-1},i.dayOfWeek=function(){var t=b.floorMod(this.toEpochDay()+3,7);return M.of(t+1)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.lengthOfMonth=function(){switch(this._month){case 2:return this.isLeapYear()?29:28;case 4:case 6:case 9:case 11:return 30;default:return 31}},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,i){if(f(null!=t,"field",_),t instanceof O){var e=t;switch(e.checkValidValue(i),e){case O.DAY_OF_WEEK:return this.plusDays(i-this.dayOfWeek().value());case O.ALIGNED_DAY_OF_WEEK_IN_MONTH:return this.plusDays(i-this.getLong(O.ALIGNED_DAY_OF_WEEK_IN_MONTH));case O.ALIGNED_DAY_OF_WEEK_IN_YEAR:return this.plusDays(i-this.getLong(O.ALIGNED_DAY_OF_WEEK_IN_YEAR));case O.DAY_OF_MONTH:return this.withDayOfMonth(i);case O.DAY_OF_YEAR:return this.withDayOfYear(i);case O.EPOCH_DAY:return n.ofEpochDay(i);case O.ALIGNED_WEEK_OF_MONTH:return this.plusWeeks(i-this.getLong(O.ALIGNED_WEEK_OF_MONTH));case O.ALIGNED_WEEK_OF_YEAR:return this.plusWeeks(i-this.getLong(O.ALIGNED_WEEK_OF_YEAR));case O.MONTH_OF_YEAR:return this.withMonth(i);case O.PROLEPTIC_MONTH:return this.plusMonths(i-this.getLong(O.PROLEPTIC_MONTH));case O.YEAR_OF_ERA:return this.withYear(this._year>=1?i:1-i);case O.YEAR:return this.withYear(i);case O.ERA:return this.getLong(O.ERA)===i?this:this.withYear(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withYear=function(t){return this._year===t?this:(O.YEAR.checkValidValue(t),n._resolvePreviousValid(t,this._month,this._day))},i.withMonth=function(t){var i=t instanceof N?t.value():t;return this._month===i?this:(O.MONTH_OF_YEAR.checkValidValue(i),n._resolvePreviousValid(this._year,i,this._day))},i.withDayOfMonth=function(t){return this._day===t?this:n.of(this._year,this._month,t)},i.withDayOfYear=function(t){return this.dayOfYear()===t?this:n.ofYearDay(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n instanceof E){switch(n){case E.DAYS:return this.plusDays(t);case E.WEEKS:return this.plusWeeks(t);case E.MONTHS:return this.plusMonths(t);case E.YEARS:return this.plusYears(t);case E.DECADES:return this.plusYears(b.safeMultiply(t,10));case E.CENTURIES:return this.plusYears(b.safeMultiply(t,100));case E.MILLENNIA:return this.plusYears(b.safeMultiply(t,1e3));case E.ERAS:return this.with(O.ERA,b.safeAdd(this.getLong(O.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var i=O.YEAR.checkValidIntValue(this._year+t);return n._resolvePreviousValid(i,this._month,this._day)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t,e=O.YEAR.checkValidIntValue(b.floorDiv(i,12)),r=b.floorMod(i,12)+1;return n._resolvePreviousValid(e,r,this._day)},i.plusWeeks=function(t){return this.plusDays(b.safeMultiply(t,7))},i.plusDays=function(t){if(0===t)return this;var i=b.safeAdd(this.toEpochDay(),t);return n.ofEpochDay(i)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.query=function(n){return v(n,"query"),n===z.localDate()?this:t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,n){return arguments.length<2?this.until1(t):this.until2(t,n)},i.until2=function(t,i){var e=n.from(t);if(i instanceof E){switch(i){case E.DAYS:return this.daysUntil(e);case E.WEEKS:return b.intDiv(this.daysUntil(e),7);case E.MONTHS:return this._monthsUntil(e);case E.YEARS:return b.intDiv(this._monthsUntil(e),12);case E.DECADES:return b.intDiv(this._monthsUntil(e),120);case E.CENTURIES:return b.intDiv(this._monthsUntil(e),1200);case E.MILLENNIA:return b.intDiv(this._monthsUntil(e),12e3);case E.ERAS:return e.getLong(O.ERA)-this.getLong(O.ERA)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.daysUntil=function(t){return t.toEpochDay()-this.toEpochDay()},i._monthsUntil=function(t){var n=32*this._prolepticMonth()+this.dayOfMonth(),i=32*t._prolepticMonth()+t.dayOfMonth();return b.intDiv(i-n,32)},i.until1=function(t){var i=n.from(t),e=i._prolepticMonth()-this._prolepticMonth(),r=i._day-this._day;if(e>0&&r<0){e--;var s=this.plusMonths(e);r=i.toEpochDay()-s.toEpochDay()}else e<0&&r>0&&(e++,r-=i.lengthOfMonth());var o=b.intDiv(e,12),u=b.intMod(e,12);return P.of(o,u,r)},i.atTime=function(){return 1===arguments.length?this.atTime1.apply(this,arguments):this.atTime4.apply(this,arguments)},i.atTime1=function(t){if(v(t,"time"),t instanceof cn)return ln.of(this,t);if(t instanceof en)return this._atTimeOffsetTime(t);throw new a("time must be an instance of LocalTime or OffsetTime"+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""))},i.atTime4=function(t,n,i,e){return void 0===i&&(i=0),void 0===e&&(e=0),this.atTime1(cn.of(t,n,i,e))},i._atTimeOffsetTime=function(t){return on.of(ln.of(this,t.toLocalTime()),t.offset())},i.atStartOfDay=function(t){return null!=t?this.atStartOfDayWithZone(t):ln.of(this,cn.MIDNIGHT)},i.atStartOfDayWithZone=function(t){v(t,"zone");var n=this.atTime(cn.MIDNIGHT);if(t instanceof Q==0){var i=t.rules().transition(n);null!=i&&i.isGap()&&(n=i.dateTimeAfter())}return sn.of(n,t)},i.toEpochDay=function(){var t=this._year,n=this._month,i=0;return i+=365*t,t>=0?i+=b.intDiv(t+3,4)-b.intDiv(t+99,100)+b.intDiv(t+399,400):i-=b.intDiv(t,-4)-b.intDiv(t,-100)+b.intDiv(t,-400),i+=b.intDiv(367*n-362,12),i+=this.dayOfMonth()-1,n>2&&(i--,nn.isLeapYear(t)||i--),i-an},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._year-t._year;return 0===n&&0==(n=this._month-t._month)&&(n=this._day-t._day),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&0===this._compareTo0(t)},i.hashCode=function(){var t=this._year,n=this._month,i=this._day;return b.hash(4294965248&t^(t<<11)+(n<<6)+i)},i.toString=function(){var t=this._year,n=this._month,i=this._day;return(Math.abs(t)<1e3?t<0?"-"+(""+(t-1e4)).slice(-4):(""+(t+1e4)).slice(-4):t>9999?"+"+t:""+t)+(n<10?"-0"+n:"-"+n)+(i<10?"-0"+i:"-"+i)},i.toJSON=function(){return this.toString()},i.format=function(n){return v(n,"formatter"),d(n,Wt,"formatter"),t.prototype.format.call(this,n)},n}(Y),_n=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.chronology=function(){return this.toLocalDate().chronology()},i.query=function(n){return n===z.chronology()?this.chronology():n===z.precision()?E.NANOS:n===z.localDate()?hn.ofEpochDay(this.toLocalDate().toEpochDay()):n===z.localTime()?this.toLocalTime():n===z.zone()||n===z.zoneId()||n===z.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return t.with(O.EPOCH_DAY,this.toLocalDate().toEpochDay()).with(O.NANO_OF_DAY,this.toLocalTime().toNanoOfDay())},i.toInstant=function(t){return d(t,Q,"zoneId"),vn.ofEpochSecond(this.toEpochSecond(t),this.toLocalTime().nano())},i.toEpochSecond=function(t){v(t,"offset");var n=86400*this.toLocalDate().toEpochDay()+this.toLocalTime().toSecondOfDay();return n-=t.totalSeconds(),b.safeToInt(n)},n}(B),ln=function(t){function n(n,i){var e;return e=t.call(this)||this,d(n,hn,"date"),d(i,cn,"time"),e._date=n,e._time=i,e}l(n,t),n.now=function(t){return null==t?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){return v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n._ofEpochMillis=function(t,i){var e=b.floorDiv(t,1e3)+i.totalSeconds(),r=b.floorDiv(e,cn.SECONDS_PER_DAY),s=b.floorMod(e,cn.SECONDS_PER_DAY),o=1e6*b.floorMod(t,1e3);return new n(hn.ofEpochDay(r),cn.ofSecondOfDay(s,o))},n.of=function(){return arguments.length<=2?n.ofDateAndTime.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s,o,u){return void 0===r&&(r=0),void 0===s&&(s=0),void 0===o&&(o=0),void 0===u&&(u=0),new n(hn.of(t,i,e),cn.of(r,s,o,u))},n.ofDateAndTime=function(t,i){return v(t,"date"),v(i,"time"),new n(t,i)},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault()),v(t,"instant"),d(t,vn,"instant"),v(i,"zone");var e=i.rules().offset(t);return n.ofEpochSecond(t.epochSecond(),t.nano(),e)},n.ofEpochSecond=function(t,i,e){void 0===t&&(t=0),void 0===i&&(i=0),2===arguments.length&&i instanceof Q&&(e=i,i=0),v(e,"offset");var r=t+e.totalSeconds(),s=b.floorDiv(r,cn.SECONDS_PER_DAY),o=b.floorMod(r,cn.SECONDS_PER_DAY);return new n(hn.ofEpochDay(s),cn.ofSecondOfDay(o,i))},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof sn)return t.toLocalDateTime();try{return new n(hn.from(t),cn.from(t))}catch(n){throw new r("Unable to obtain LocalDateTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_DATE_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i._withDateTime=function(t,i){return this._date.equals(t)&&this._time.equals(i)?this:new n(t,i)},i.isSupported=function(t){return t instanceof O||t instanceof E?t.isDateBased()||t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(t){return t instanceof O?t.isTimeBased()?this._time.range(t):this._date.range(t):t.rangeRefinedBy(this)},i.get=function(n){return n instanceof O?n.isTimeBased()?this._time.get(n):this._date.get(n):t.prototype.get.call(this,n)},i.getLong=function(t){return v(t,"field"),t instanceof O?t.isTimeBased()?this._time.getLong(t):this._date.getLong(t):t.getFrom(this)},i.year=function(){return this._date.year()},i.monthValue=function(){return this._date.monthValue()},i.month=function(){return this._date.month()},i.dayOfMonth=function(){return this._date.dayOfMonth()},i.dayOfYear=function(){return this._date.dayOfYear()},i.dayOfWeek=function(){return this._date.dayOfWeek()},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof hn?this._withDateTime(t,this._time):t instanceof cn?this._withDateTime(this._date,t):t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,n){return v(t,"field"),t instanceof O?t.isTimeBased()?this._withDateTime(this._date,this._time.with(t,n)):this._withDateTime(this._date.with(t,n),this._time):t.adjustInto(this,n)},i.withYear=function(t){return this._withDateTime(this._date.withYear(t),this._time)},i.withMonth=function(t){return this._withDateTime(this._date.withMonth(t),this._time)},i.withDayOfMonth=function(t){return this._withDateTime(this._date.withDayOfMonth(t),this._time)},i.withDayOfYear=function(t){return this._withDateTime(this._date.withDayOfYear(t),this._time)},i.withHour=function(t){var n=this._time.withHour(t);return this._withDateTime(this._date,n)},i.withMinute=function(t){var n=this._time.withMinute(t);return this._withDateTime(this._date,n)},i.withSecond=function(t){var n=this._time.withSecond(t);return this._withDateTime(this._date,n)},i.withNano=function(t){var n=this._time.withNano(t);return this._withDateTime(this._date,n)},i.truncatedTo=function(t){return this._withDateTime(this._date,this._time.truncatedTo(t))},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),n instanceof E){switch(n){case E.NANOS:return this.plusNanos(t);case E.MICROS:return this.plusDays(b.intDiv(t,cn.MICROS_PER_DAY)).plusNanos(1e3*b.intMod(t,cn.MICROS_PER_DAY));case E.MILLIS:return this.plusDays(b.intDiv(t,cn.MILLIS_PER_DAY)).plusNanos(1e6*b.intMod(t,cn.MILLIS_PER_DAY));case E.SECONDS:return this.plusSeconds(t);case E.MINUTES:return this.plusMinutes(t);case E.HOURS:return this.plusHours(t);case E.HALF_DAYS:return this.plusDays(b.intDiv(t,256)).plusHours(12*b.intMod(t,256))}return this._withDateTime(this._date.plus(t,n),this._time)}return n.addTo(this,t)},i.plusYears=function(t){var n=this._date.plusYears(t);return this._withDateTime(n,this._time)},i.plusMonths=function(t){var n=this._date.plusMonths(t);return this._withDateTime(n,this._time)},i.plusWeeks=function(t){var n=this._date.plusWeeks(t);return this._withDateTime(n,this._time)},i.plusDays=function(t){var n=this._date.plusDays(t);return this._withDateTime(n,this._time)},i.plusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,1)},i.plusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,1)},i.plusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,1)},i.plusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.minusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,-1)},i.minusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,-1)},i.minusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,-1)},i.minusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,-1)},i._plusWithOverflow=function(t,n,i,e,r,s){if(0===n&&0===i&&0===e&&0===r)return this._withDateTime(t,this._time);var o=b.intDiv(r,cn.NANOS_PER_DAY)+b.intDiv(e,cn.SECONDS_PER_DAY)+b.intDiv(i,cn.MINUTES_PER_DAY)+b.intDiv(n,cn.HOURS_PER_DAY);o*=s;var u=b.intMod(r,cn.NANOS_PER_DAY)+b.intMod(e,cn.SECONDS_PER_DAY)*cn.NANOS_PER_SECOND+b.intMod(i,cn.MINUTES_PER_DAY)*cn.NANOS_PER_MINUTE+b.intMod(n,cn.HOURS_PER_DAY)*cn.NANOS_PER_HOUR,a=this._time.toNanoOfDay();u=u*s+a,o+=b.floorDiv(u,cn.NANOS_PER_DAY);var h=b.floorMod(u,cn.NANOS_PER_DAY),_=h===a?this._time:cn.ofNanoOfDay(h);return this._withDateTime(t.plusDays(o),_)},i.query=function(n){return v(n,"query"),n===z.localDate()?this.toLocalDate():t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof E){if(i.isTimeBased()){var r=this._date.daysUntil(e._date),s=e._time.toNanoOfDay()-this._time.toNanoOfDay();r>0&&s<0?(r--,s+=cn.NANOS_PER_DAY):r<0&&s>0&&(r++,s-=cn.NANOS_PER_DAY);var u=r;switch(i){case E.NANOS:return u=b.safeMultiply(u,cn.NANOS_PER_DAY),b.safeAdd(u,s);case E.MICROS:return u=b.safeMultiply(u,cn.MICROS_PER_DAY),b.safeAdd(u,b.intDiv(s,1e3));case E.MILLIS:return u=b.safeMultiply(u,cn.MILLIS_PER_DAY),b.safeAdd(u,b.intDiv(s,1e6));case E.SECONDS:return u=b.safeMultiply(u,cn.SECONDS_PER_DAY),b.safeAdd(u,b.intDiv(s,cn.NANOS_PER_SECOND));case E.MINUTES:return u=b.safeMultiply(u,cn.MINUTES_PER_DAY),b.safeAdd(u,b.intDiv(s,cn.NANOS_PER_MINUTE));case E.HOURS:return u=b.safeMultiply(u,cn.HOURS_PER_DAY),b.safeAdd(u,b.intDiv(s,cn.NANOS_PER_HOUR));case E.HALF_DAYS:return u=b.safeMultiply(u,2),b.safeAdd(u,b.intDiv(s,12*cn.NANOS_PER_HOUR))}throw new o("Unsupported unit: "+i)}var a=e._date,h=e._time;return a.isAfter(this._date)&&h.isBefore(this._time)?a=a.minusDays(1):a.isBefore(this._date)&&h.isAfter(this._time)&&(a=a.plusDays(1)),this._date.until(a,i)}return i.between(this,e)},i.atOffset=function(t){return on.of(this,t)},i.atZone=function(t){return sn.of(this,t)},i.toLocalDate=function(){return this._date},i.toLocalTime=function(){return this._time},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._date.compareTo(t.toLocalDate());return 0===n&&(n=this._time.compareTo(t.toLocalTime())),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&this._date.equals(t._date)&&this._time.equals(t._time)},i.hashCode=function(){return this._date.hashCode()^this._time.hashCode()},i.toString=function(){return this._date.toString()+"T"+this._time.toString()},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(_n),cn=function(t){function n(i,e,r,s){var o;void 0===i&&(i=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===s&&(s=0),o=t.call(this)||this;var u=b.safeToInt(i),a=b.safeToInt(e),h=b.safeToInt(r),_=b.safeToInt(s);return n._validate(u,a,h,_),0===a&&0===h&&0===_?(n.HOURS[u]||(o._hour=u,o._minute=a,o._second=h,o._nano=_,n.HOURS[u]=c(o)),n.HOURS[u]||c(o)):(o._hour=u,o._minute=a,o._second=h,o._nano=_,o)}l(n,t),n.now=function(t){return null==t?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){return void 0===t&&(t=dn.systemDefaultZone()),v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault());var e=i.rules().offset(t),r=b.intMod(t.epochSecond(),n.SECONDS_PER_DAY);return(r=b.intMod(r+e.totalSeconds(),n.SECONDS_PER_DAY))<0&&(r+=n.SECONDS_PER_DAY),n.ofSecondOfDay(r,t.nano())},n.of=function(t,i,e,r){return new n(t,i,e,r)},n.ofSecondOfDay=function(t,i){void 0===t&&(t=0),void 0===i&&(i=0),O.SECOND_OF_DAY.checkValidValue(t),O.NANO_OF_SECOND.checkValidValue(i);var e=b.intDiv(t,n.SECONDS_PER_HOUR);t-=e*n.SECONDS_PER_HOUR;var r=b.intDiv(t,n.SECONDS_PER_MINUTE);return new n(e,r,t-=r*n.SECONDS_PER_MINUTE,i)},n.ofNanoOfDay=function(t){void 0===t&&(t=0),O.NANO_OF_DAY.checkValidValue(t);var i=b.intDiv(t,n.NANOS_PER_HOUR);t-=i*n.NANOS_PER_HOUR;var e=b.intDiv(t,n.NANOS_PER_MINUTE);t-=e*n.NANOS_PER_MINUTE;var r=b.intDiv(t,n.NANOS_PER_SECOND);return new n(i,e,r,t-=r*n.NANOS_PER_SECOND)},n.from=function(t){v(t,"temporal");var n=t.query(z.localTime());if(null==n)throw new r("Unable to obtain LocalTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_TIME),v(i,"formatter"),i.parse(t,n.FROM)},n._validate=function(t,n,i,e){O.HOUR_OF_DAY.checkValidValue(t),O.MINUTE_OF_HOUR.checkValidValue(n),O.SECOND_OF_MINUTE.checkValidValue(i),O.NANO_OF_SECOND.checkValidValue(e)};var i=n.prototype;return i.isSupported=function(t){return t instanceof O||t instanceof E?t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(n){return v(n),t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return v(t,"field"),t instanceof O?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case O.NANO_OF_SECOND:return this._nano;case O.NANO_OF_DAY:return this.toNanoOfDay();case O.MICRO_OF_SECOND:return b.intDiv(this._nano,1e3);case O.MICRO_OF_DAY:return b.intDiv(this.toNanoOfDay(),1e3);case O.MILLI_OF_SECOND:return b.intDiv(this._nano,1e6);case O.MILLI_OF_DAY:return b.intDiv(this.toNanoOfDay(),1e6);case O.SECOND_OF_MINUTE:return this._second;case O.SECOND_OF_DAY:return this.toSecondOfDay();case O.MINUTE_OF_HOUR:return this._minute;case O.MINUTE_OF_DAY:return 60*this._hour+this._minute;case O.HOUR_OF_AMPM:return b.intMod(this._hour,12);case O.CLOCK_HOUR_OF_AMPM:var n=b.intMod(this._hour,12);return n%12==0?12:n;case O.HOUR_OF_DAY:return this._hour;case O.CLOCK_HOUR_OF_DAY:return 0===this._hour?24:this._hour;case O.AMPM_OF_DAY:return b.intDiv(this._hour,12)}throw new o("Unsupported field: "+t)},i.hour=function(){return this._hour},i.minute=function(){return this._minute},i.second=function(){return this._second},i.nano=function(){return this._nano},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,i){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.NANO_OF_SECOND:return this.withNano(i);case O.NANO_OF_DAY:return n.ofNanoOfDay(i);case O.MICRO_OF_SECOND:return this.withNano(1e3*i);case O.MICRO_OF_DAY:return n.ofNanoOfDay(1e3*i);case O.MILLI_OF_SECOND:return this.withNano(1e6*i);case O.MILLI_OF_DAY:return n.ofNanoOfDay(1e6*i);case O.SECOND_OF_MINUTE:return this.withSecond(i);case O.SECOND_OF_DAY:return this.plusSeconds(i-this.toSecondOfDay());case O.MINUTE_OF_HOUR:return this.withMinute(i);case O.MINUTE_OF_DAY:return this.plusMinutes(i-(60*this._hour+this._minute));case O.HOUR_OF_AMPM:return this.plusHours(i-b.intMod(this._hour,12));case O.CLOCK_HOUR_OF_AMPM:return this.plusHours((12===i?0:i)-b.intMod(this._hour,12));case O.HOUR_OF_DAY:return this.withHour(i);case O.CLOCK_HOUR_OF_DAY:return this.withHour(24===i?0:i);case O.AMPM_OF_DAY:return this.plusHours(12*(i-b.intDiv(this._hour,12)))}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withHour=function(t){return void 0===t&&(t=0),this._hour===t?this:new n(t,this._minute,this._second,this._nano)},i.withMinute=function(t){return void 0===t&&(t=0),this._minute===t?this:new n(this._hour,t,this._second,this._nano)},i.withSecond=function(t){return void 0===t&&(t=0),this._second===t?this:new n(this._hour,this._minute,t,this._nano)},i.withNano=function(t){return void 0===t&&(t=0),this._nano===t?this:new n(this._hour,this._minute,this._second,t)},i.truncatedTo=function(t){if(v(t,"unit"),t===E.NANOS)return this;var i=t.duration();if(i.seconds()>n.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var e=i.toNanos();if(0!==b.intMod(n.NANOS_PER_DAY,e))throw new r("Unit must divide into a standard day without remainder");var s=this.toNanoOfDay();return n.ofNanoOfDay(b.intDiv(s,e)*e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,i){if(v(i,"unit"),i instanceof E){switch(i){case E.NANOS:return this.plusNanos(t);case E.MICROS:return this.plusNanos(1e3*b.intMod(t,n.MICROS_PER_DAY));case E.MILLIS:return this.plusNanos(1e6*b.intMod(t,n.MILLIS_PER_DAY));case E.SECONDS:return this.plusSeconds(t);case E.MINUTES:return this.plusMinutes(t);case E.HOURS:return this.plusHours(t);case E.HALF_DAYS:return this.plusHours(12*b.intMod(t,2))}throw new o("Unsupported unit: "+i)}return i.addTo(this,t)},i.plusHours=function(t){return 0===t?this:new n(b.intMod(b.intMod(t,n.HOURS_PER_DAY)+this._hour+n.HOURS_PER_DAY,n.HOURS_PER_DAY),this._minute,this._second,this._nano)},i.plusMinutes=function(t){if(0===t)return this;var i=this._hour*n.MINUTES_PER_HOUR+this._minute,e=b.intMod(b.intMod(t,n.MINUTES_PER_DAY)+i+n.MINUTES_PER_DAY,n.MINUTES_PER_DAY);return i===e?this:new n(b.intDiv(e,n.MINUTES_PER_HOUR),b.intMod(e,n.MINUTES_PER_HOUR),this._second,this._nano)},i.plusSeconds=function(t){if(0===t)return this;var i=this._hour*n.SECONDS_PER_HOUR+this._minute*n.SECONDS_PER_MINUTE+this._second,e=b.intMod(b.intMod(t,n.SECONDS_PER_DAY)+i+n.SECONDS_PER_DAY,n.SECONDS_PER_DAY);return i===e?this:new n(b.intDiv(e,n.SECONDS_PER_HOUR),b.intMod(b.intDiv(e,n.SECONDS_PER_MINUTE),n.MINUTES_PER_HOUR),b.intMod(e,n.SECONDS_PER_MINUTE),this._nano)},i.plusNanos=function(t){if(0===t)return this;var i=this.toNanoOfDay(),e=b.intMod(b.intMod(t,n.NANOS_PER_DAY)+i+n.NANOS_PER_DAY,n.NANOS_PER_DAY);return i===e?this:new n(b.intDiv(e,n.NANOS_PER_HOUR),b.intMod(b.intDiv(e,n.NANOS_PER_MINUTE),n.MINUTES_PER_HOUR),b.intMod(b.intDiv(e,n.NANOS_PER_SECOND),n.SECONDS_PER_MINUTE),b.intMod(e,n.NANOS_PER_SECOND))},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusHours=function(t){return this.plusHours(-1*b.intMod(t,n.HOURS_PER_DAY))},i.minusMinutes=function(t){return this.plusMinutes(-1*b.intMod(t,n.MINUTES_PER_DAY))},i.minusSeconds=function(t){return this.plusSeconds(-1*b.intMod(t,n.SECONDS_PER_DAY))},i.minusNanos=function(t){return this.plusNanos(-1*b.intMod(t,n.NANOS_PER_DAY))},i.query=function(t){return v(t,"query"),t===z.precision()?E.NANOS:t===z.localTime()?this:t===z.chronology()||t===z.zoneId()||t===z.zone()||t===z.offset()||t===z.localDate()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(n.NANO_OF_DAY,this.toNanoOfDay())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof E){var r=e.toNanoOfDay()-this.toNanoOfDay();switch(i){case E.NANOS:return r;case E.MICROS:return b.intDiv(r,1e3);case E.MILLIS:return b.intDiv(r,1e6);case E.SECONDS:return b.intDiv(r,n.NANOS_PER_SECOND);case E.MINUTES:return b.intDiv(r,n.NANOS_PER_MINUTE);case E.HOURS:return b.intDiv(r,n.NANOS_PER_HOUR);case E.HALF_DAYS:return b.intDiv(r,12*n.NANOS_PER_HOUR)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.atDate=function(t){return ln.of(t,this)},i.toSecondOfDay=function(){var t=this._hour*n.SECONDS_PER_HOUR;return(t+=this._minute*n.SECONDS_PER_MINUTE)+this._second},i.toNanoOfDay=function(){var t=this._hour*n.NANOS_PER_HOUR;return t+=this._minute*n.NANOS_PER_MINUTE,(t+=this._second*n.NANOS_PER_SECOND)+this._nano},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=b.compareNumbers(this._hour,t._hour);return 0===i&&0===(i=b.compareNumbers(this._minute,t._minute))&&0===(i=b.compareNumbers(this._second,t._second))&&(i=b.compareNumbers(this._nano,t._nano)),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this._hour===t._hour&&this._minute===t._minute&&this._second===t._second&&this._nano===t._nano},i.hashCode=function(){var t=this.toNanoOfDay();return b.hash(t)},i.toString=function(){var t="",n=this._hour,i=this._minute,e=this._second,r=this._nano;return t+=n<10?"0":"",t+=n,t+=i<10?":0":":",t+=i,(e>0||r>0)&&(t+=e<10?":0":":",t+=e,r>0&&(t+=".",0===b.intMod(r,1e6)?t+=(""+(b.intDiv(r,1e6)+1e3)).substring(1):0===b.intMod(r,1e3)?t+=(""+(b.intDiv(r,1e3)+1e6)).substring(1):t+=(""+(r+1e9)).substring(1))),t},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V);cn.HOURS_PER_DAY=24,cn.MINUTES_PER_HOUR=60,cn.MINUTES_PER_DAY=cn.MINUTES_PER_HOUR*cn.HOURS_PER_DAY,cn.SECONDS_PER_MINUTE=60,cn.SECONDS_PER_HOUR=cn.SECONDS_PER_MINUTE*cn.MINUTES_PER_HOUR,cn.SECONDS_PER_DAY=cn.SECONDS_PER_HOUR*cn.HOURS_PER_DAY,cn.MILLIS_PER_DAY=1e3*cn.SECONDS_PER_DAY,cn.MICROS_PER_DAY=1e6*cn.SECONDS_PER_DAY,cn.NANOS_PER_SECOND=1e9,cn.NANOS_PER_MINUTE=cn.NANOS_PER_SECOND*cn.SECONDS_PER_MINUTE,cn.NANOS_PER_HOUR=cn.NANOS_PER_MINUTE*cn.MINUTES_PER_HOUR,cn.NANOS_PER_DAY=cn.NANOS_PER_HOUR*cn.HOURS_PER_DAY;var fn=1e6,vn=function(t){function n(i,e){var r;return r=t.call(this)||this,n._validate(i,e),r._seconds=b.safeToInt(i),r._nanos=b.safeToInt(e),r}l(n,t),n.now=function(t){return void 0===t&&(t=dn.systemUTC()),t.instant()},n.ofEpochSecond=function(t,i){void 0===i&&(i=0);var e=t+b.floorDiv(i,cn.NANOS_PER_SECOND),r=b.floorMod(i,cn.NANOS_PER_SECOND);return n._create(e,r)},n.ofEpochMilli=function(t){var i=b.floorDiv(t,1e3),e=b.floorMod(t,1e3);return n._create(i,1e6*e)},n.from=function(t){try{var i=t.getLong(O.INSTANT_SECONDS),e=t.get(O.NANO_OF_SECOND);return n.ofEpochSecond(i,e)}catch(n){throw new r("Unable to obtain Instant from TemporalAccessor: "+t+", type "+typeof t,n)}},n.parse=function(t){return Wt.ISO_INSTANT.parse(t,n.FROM)},n._create=function(t,i){return 0===t&&0===i?n.EPOCH:new n(t,i)},n._validate=function(t,i){if(tn.MAX_SECONDS)throw new r("Instant exceeds minimum or maximum instant");if(i<0||i>cn.NANOS_PER_SECOND)throw new r("Instant exceeds minimum or maximum instant")};var i=n.prototype;return i.isSupported=function(t){return t instanceof O?t===O.INSTANT_SECONDS||t===O.NANO_OF_SECOND||t===O.MICRO_OF_SECOND||t===O.MILLI_OF_SECOND:t instanceof E?t.isTimeBased()||t===E.DAYS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t instanceof O){switch(t){case O.NANO_OF_SECOND:return this._nanos;case O.MICRO_OF_SECOND:return b.intDiv(this._nanos,1e3);case O.MILLI_OF_SECOND:return b.intDiv(this._nanos,fn);case O.INSTANT_SECONDS:return this._seconds}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.epochSecond=function(){return this._seconds},i.nano=function(){return this._nanos},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.MILLI_OF_SECOND:var e=i*fn;return e!==this._nanos?n._create(this._seconds,e):this;case O.MICRO_OF_SECOND:var r=1e3*i;return r!==this._nanos?n._create(this._seconds,r):this;case O.NANO_OF_SECOND:return i!==this._nanos?n._create(this._seconds,i):this;case O.INSTANT_SECONDS:return i!==this._seconds?n._create(i,this._nanos):this}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.truncatedTo=function(t){if(v(t,"unit"),t===E.NANOS)return this;var n=t.duration();if(n.seconds()>cn.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var i=n.toNanos();if(0!==b.intMod(cn.NANOS_PER_DAY,i))throw new r("Unit must divide into a standard day without remainder");var e=b.intMod(this._seconds,cn.SECONDS_PER_DAY)*cn.NANOS_PER_SECOND+this._nanos,s=b.intDiv(e,i)*i;return this.plusNanos(s-e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),d(n,k),n instanceof E){switch(n){case E.NANOS:return this.plusNanos(t);case E.MICROS:return this._plus(b.intDiv(t,1e6),1e3*b.intMod(t,1e6));case E.MILLIS:return this.plusMillis(t);case E.SECONDS:return this.plusSeconds(t);case E.MINUTES:return this.plusSeconds(b.safeMultiply(t,cn.SECONDS_PER_MINUTE));case E.HOURS:return this.plusSeconds(b.safeMultiply(t,cn.SECONDS_PER_HOUR));case E.HALF_DAYS:return this.plusSeconds(b.safeMultiply(t,cn.SECONDS_PER_DAY/2));case E.DAYS:return this.plusSeconds(b.safeMultiply(t,cn.SECONDS_PER_DAY))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusSeconds=function(t){return this._plus(t,0)},i.plusMillis=function(t){return this._plus(b.intDiv(t,1e3),b.intMod(t,1e3)*fn)},i.plusNanos=function(t){return this._plus(0,t)},i._plus=function(t,i){if(0===t&&0===i)return this;var e=this._seconds+t;e+=b.intDiv(i,cn.NANOS_PER_SECOND);var r=this._nanos+i%cn.NANOS_PER_SECOND;return n.ofEpochSecond(e,r)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return this.plusAmountUnit(-1*t,n)},i.minusSeconds=function(t){return this.plusSeconds(-1*t)},i.minusMillis=function(t){return this.plusMillis(-1*t)},i.minusNanos=function(t){return this.plusNanos(-1*t)},i.query=function(t){return v(t,"query"),t===z.precision()?E.NANOS:t===z.localDate()||t===z.localTime()||t===z.chronology()||t===z.zoneId()||t===z.zone()||t===z.offset()?null:t.queryFrom(this)},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.INSTANT_SECONDS,this._seconds).with(O.NANO_OF_SECOND,this._nanos)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof E){switch(i){case E.NANOS:return this._nanosUntil(e);case E.MICROS:return b.intDiv(this._nanosUntil(e),1e3);case E.MILLIS:return b.safeSubtract(e.toEpochMilli(),this.toEpochMilli());case E.SECONDS:return this._secondsUntil(e);case E.MINUTES:return b.intDiv(this._secondsUntil(e),cn.SECONDS_PER_MINUTE);case E.HOURS:return b.intDiv(this._secondsUntil(e),cn.SECONDS_PER_HOUR);case E.HALF_DAYS:return b.intDiv(this._secondsUntil(e),12*cn.SECONDS_PER_HOUR);case E.DAYS:return b.intDiv(this._secondsUntil(e),cn.SECONDS_PER_DAY)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i._nanosUntil=function(t){var n=b.safeSubtract(t.epochSecond(),this.epochSecond()),i=b.safeMultiply(n,cn.NANOS_PER_SECOND);return b.safeAdd(i,t.nano()-this.nano())},i._secondsUntil=function(t){var n=b.safeSubtract(t.epochSecond(),this.epochSecond()),i=t.nano()-this.nano();return n>0&&i<0?n--:n<0&&i>0&&n++,n},i.atOffset=function(t){return on.ofInstant(this,t)},i.atZone=function(t){return sn.ofInstant(this,t)},i.toEpochMilli=function(){return b.safeMultiply(this._seconds,1e3)+b.intDiv(this._nanos,fn)},i.compareTo=function(t){v(t,"otherInstant"),d(t,n,"otherInstant");var i=b.compareNumbers(this._seconds,t._seconds);return 0!==i?i:this._nanos-t._nanos},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this.epochSecond()===t.epochSecond()&&this.nano()===t.nano()},i.hashCode=function(){return b.hashCode(this._seconds,this._nanos)},i.toString=function(){return Wt.ISO_INSTANT.format(this)},i.toJSON=function(){return this.toString()},n}(V),dn=function(){function t(){}t.systemUTC=function(){return new wn(Q.UTC)},t.systemDefaultZone=function(){return new wn(G.systemDefault())},t.system=function(t){return new wn(t)},t.fixed=function(t,n){return new pn(t,n)},t.offset=function(t,n){return new mn(t,n)};var n=t.prototype;return n.millis=function(){w("Clock.millis")},n.instant=function(){w("Clock.instant")},n.zone=function(){w("Clock.zone")},n.withZone=function(){w("Clock.withZone")},t}(),wn=function(t){function n(n){var i;return v(n,"zone"),(i=t.call(this)||this)._zone=n,i}l(n,t);var i=n.prototype;return i.zone=function(){return this._zone},i.millis=function(){return(new Date).getTime()},i.instant=function(){return vn.ofEpochMilli(this.millis())},i.equals=function(t){return t instanceof n&&this._zone.equals(t._zone)},i.withZone=function(t){return t.equals(this._zone)?this:new n(t)},i.toString=function(){return"SystemClock["+this._zone.toString()+"]"},n}(dn),pn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._instant=n,e._zoneId=i,e}l(n,t);var i=n.prototype;return i.instant=function(){return this._instant},i.millis=function(){return this._instant.toEpochMilli()},i.zone=function(){return this._zoneId},i.toString=function(){return"FixedClock[]"},i.equals=function(t){return t instanceof n&&this._instant.equals(t._instant)&&this._zoneId.equals(t._zoneId)},i.withZone=function(t){return t.equals(this._zoneId)?this:new n(this._instant,t)},n}(dn),mn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._baseClock=n,e._offset=i,e}l(n,t);var i=n.prototype;return i.zone=function(){return this._baseClock.zone()},i.withZone=function(t){return t.equals(this._baseClock.zone())?this:new n(this._baseClock.withZone(t),this._offset)},i.millis=function(){return this._baseClock.millis()+this._offset.toMillis()},i.instant=function(){return this._baseClock.instant().plus(this._offset)},i.equals=function(t){return t instanceof n&&this._baseClock.equals(t._baseClock)&&this._offset.equals(t._offset)},i.toString=function(){return"OffsetClock["+this._baseClock+","+this._offset+"]"},n}(dn),gn=function(){function t(t,n,i){if(v(t,"transition"),v(n,"offsetBefore"),v(i,"offsetAfter"),n.equals(i))throw new a("Offsets must not be equal");if(0!==t.nano())throw new a("Nano-of-second must be zero");this._transition=t instanceof ln?t:ln.ofEpochSecond(t,0,n),this._offsetBefore=n,this._offsetAfter=i}t.of=function(n,i,e){return new t(n,i,e)};var n=t.prototype;return n.instant=function(){return this._transition.toInstant(this._offsetBefore)},n.toEpochSecond=function(){return this._transition.toEpochSecond(this._offsetBefore)},n.dateTimeBefore=function(){return this._transition},n.dateTimeAfter=function(){return this._transition.plusSeconds(this.durationSeconds())},n.offsetBefore=function(){return this._offsetBefore},n.offsetAfter=function(){return this._offsetAfter},n.duration=function(){return x.ofSeconds(this.durationSeconds())},n.durationSeconds=function(){return this._offsetAfter.totalSeconds()-this._offsetBefore.totalSeconds()},n.isGap=function(){return this._offsetAfter.totalSeconds()>this._offsetBefore.totalSeconds()},n.isOverlap=function(){return this._offsetAfter.totalSeconds()>>16},n.toString=function(){return"Transition["+(this.isGap()?"Gap":"Overlap")+" at "+this._transition.toString()+this._offsetBefore.toString()+" to "+this._offsetAfter+"]"},t}(),bn=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isFixedOffset=function(){return!1},i.offsetOfInstant=function(t){var n=new Date(t.toEpochMilli()).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfEpochMilli=function(t){var n=new Date(t).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfLocalDateTime=function(t){var n=1e3*t.toEpochSecond(Q.UTC),i=new Date(n).getTimezoneOffset(),e=new Date(n+6e4*i).getTimezoneOffset();return Q.ofTotalMinutes(-1*e)},i.validOffsets=function(t){return[this.offsetOfLocalDateTime(t)]},i.transition=function(){return null},i.standardOffset=function(t){return this.offsetOfInstant(t)},i.daylightSavings=function(){this._throwNotSupported()},i.isDaylightSavings=function(){this._throwNotSupported()},i.isValidOffset=function(t,n){return this.offsetOfLocalDateTime(t).equals(n)},i.nextTransition=function(){this._throwNotSupported()},i.previousTransition=function(){this._throwNotSupported()},i.transitions=function(){this._throwNotSupported()},i.transitionRules=function(){this._throwNotSupported()},i._throwNotSupported=function(){throw new r("not supported operation")},i.equals=function(t){return this===t||t instanceof n},i.toString=function(){return"SYSTEM"},n}(K),$n=function(t){function n(){var n;return(n=t.call(this)||this)._rules=new bn,n}l(n,t);var i=n.prototype;return i.rules=function(){return this._rules},i.equals=function(t){return this===t},i.id=function(){return"SYSTEM"},n}(G),yn=function(){function t(){}return t.systemDefault=function(){return kn},t.getAvailableZoneIds=function(){return jt.getAvailableZoneIds()},t.of=function(t){if(v(t,"zoneId"),"Z"===t)return Q.UTC;if(1===t.length)throw new r("Invalid zone: "+t);if(W.startsWith(t,"+")||W.startsWith(t,"-"))return Q.of(t);if("UTC"===t||"GMT"===t||"GMT0"===t||"UT"===t)return new Mt(t,Q.UTC.rules());if(W.startsWith(t,"UTC+")||W.startsWith(t,"GMT+")||W.startsWith(t,"UTC-")||W.startsWith(t,"GMT-")){var n=Q.of(t.substring(3));return 0===n.totalSeconds()?new Mt(t.substring(0,3),n.rules()):new Mt(t.substring(0,3)+n.id(),n.rules())}if(W.startsWith(t,"UT+")||W.startsWith(t,"UT-")){var i=Q.of(t.substring(2));return 0===i.totalSeconds()?new Mt("UT",i.rules()):new Mt("UT"+i.id(),i.rules())}return"SYSTEM"===t?G.systemDefault():Mt.ofId(t)},t.ofOffset=function(t,n){if(v(t,"prefix"),v(n,"offset"),0===t.length)return n;if("GMT"===t||"UTC"===t||"UT"===t)return 0===n.totalSeconds()?new Mt(t,n.rules()):new Mt(t+n.id(),n.rules());throw new a("Invalid prefix, must be GMT, UTC or UT: "+t)},t.from=function(t){v(t,"temporal");var n=t.query(z.zone());if(null==n)throw new r("Unable to obtain ZoneId from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},t}(),kn=null,xn=!1;xn||(xn=!0,S.MIN_VALUE=-999999,S.MAX_VALUE=999999,x.ZERO=new x(0,0),E.NANOS=new E("Nanos",x.ofNanos(1)),E.MICROS=new E("Micros",x.ofNanos(1e3)),E.MILLIS=new E("Millis",x.ofNanos(1e6)),E.SECONDS=new E("Seconds",x.ofSeconds(1)),E.MINUTES=new E("Minutes",x.ofSeconds(60)),E.HOURS=new E("Hours",x.ofSeconds(3600)),E.HALF_DAYS=new E("HalfDays",x.ofSeconds(43200)),E.DAYS=new E("Days",x.ofSeconds(86400)),E.WEEKS=new E("Weeks",x.ofSeconds(604800)),E.MONTHS=new E("Months",x.ofSeconds(2629746)),E.YEARS=new E("Years",x.ofSeconds(31556952)),E.DECADES=new E("Decades",x.ofSeconds(315569520)),E.CENTURIES=new E("Centuries",x.ofSeconds(3155695200)),E.MILLENNIA=new E("Millennia",x.ofSeconds(31556952e3)),E.ERAS=new E("Eras",x.ofSeconds(31556952*(S.MAX_VALUE+1))),E.FOREVER=new E("Forever",x.ofSeconds(b.MAX_SAFE_INTEGER,999999999)),O.NANO_OF_SECOND=new O("NanoOfSecond",E.NANOS,E.SECONDS,q.of(0,999999999)),O.NANO_OF_DAY=new O("NanoOfDay",E.NANOS,E.DAYS,q.of(0,86399999999999)),O.MICRO_OF_SECOND=new O("MicroOfSecond",E.MICROS,E.SECONDS,q.of(0,999999)),O.MICRO_OF_DAY=new O("MicroOfDay",E.MICROS,E.DAYS,q.of(0,86399999999)),O.MILLI_OF_SECOND=new O("MilliOfSecond",E.MILLIS,E.SECONDS,q.of(0,999)),O.MILLI_OF_DAY=new O("MilliOfDay",E.MILLIS,E.DAYS,q.of(0,86399999)),O.SECOND_OF_MINUTE=new O("SecondOfMinute",E.SECONDS,E.MINUTES,q.of(0,59)),O.SECOND_OF_DAY=new O("SecondOfDay",E.SECONDS,E.DAYS,q.of(0,86399)),O.MINUTE_OF_HOUR=new O("MinuteOfHour",E.MINUTES,E.HOURS,q.of(0,59)),O.MINUTE_OF_DAY=new O("MinuteOfDay",E.MINUTES,E.DAYS,q.of(0,1439)),O.HOUR_OF_AMPM=new O("HourOfAmPm",E.HOURS,E.HALF_DAYS,q.of(0,11)),O.CLOCK_HOUR_OF_AMPM=new O("ClockHourOfAmPm",E.HOURS,E.HALF_DAYS,q.of(1,12)),O.HOUR_OF_DAY=new O("HourOfDay",E.HOURS,E.DAYS,q.of(0,23)),O.CLOCK_HOUR_OF_DAY=new O("ClockHourOfDay",E.HOURS,E.DAYS,q.of(1,24)),O.AMPM_OF_DAY=new O("AmPmOfDay",E.HALF_DAYS,E.DAYS,q.of(0,1)),O.DAY_OF_WEEK=new O("DayOfWeek",E.DAYS,E.WEEKS,q.of(1,7)),O.ALIGNED_DAY_OF_WEEK_IN_MONTH=new O("AlignedDayOfWeekInMonth",E.DAYS,E.WEEKS,q.of(1,7)),O.ALIGNED_DAY_OF_WEEK_IN_YEAR=new O("AlignedDayOfWeekInYear",E.DAYS,E.WEEKS,q.of(1,7)),O.DAY_OF_MONTH=new O("DayOfMonth",E.DAYS,E.MONTHS,q.of(1,28,31),"day"),O.DAY_OF_YEAR=new O("DayOfYear",E.DAYS,E.YEARS,q.of(1,365,366)),O.EPOCH_DAY=new O("EpochDay",E.DAYS,E.FOREVER,q.of(Math.floor(365.25*S.MIN_VALUE),Math.floor(365.25*S.MAX_VALUE))),O.ALIGNED_WEEK_OF_MONTH=new O("AlignedWeekOfMonth",E.WEEKS,E.MONTHS,q.of(1,4,5)),O.ALIGNED_WEEK_OF_YEAR=new O("AlignedWeekOfYear",E.WEEKS,E.YEARS,q.of(1,53)),O.MONTH_OF_YEAR=new O("MonthOfYear",E.MONTHS,E.YEARS,q.of(1,12),"month"),O.PROLEPTIC_MONTH=new O("ProlepticMonth",E.MONTHS,E.FOREVER,q.of(12*S.MIN_VALUE,12*S.MAX_VALUE+11)),O.YEAR_OF_ERA=new O("YearOfEra",E.YEARS,E.FOREVER,q.of(1,S.MAX_VALUE,S.MAX_VALUE+1)),O.YEAR=new O("Year",E.YEARS,E.FOREVER,q.of(S.MIN_VALUE,S.MAX_VALUE),"year"),O.ERA=new O("Era",E.ERAS,E.FOREVER,q.of(0,1)),O.INSTANT_SECONDS=new O("InstantSeconds",E.SECONDS,E.FOREVER,q.of(g,m)),O.OFFSET_SECONDS=new O("OffsetSeconds",E.SECONDS,E.FOREVER,q.of(-64800,64800)),function(){cn.HOURS=[];for(var t=0;t<24;t++)cn.of(t,0,0,0);cn.MIN=cn.HOURS[0],cn.MAX=new cn(23,59,59,999999999),cn.MIDNIGHT=cn.HOURS[0],cn.NOON=cn.HOURS[12],cn.FROM=I("LocalTime.FROM",(function(t){return cn.from(t)}))}(),ct=new ut,ft=new at,vt=new ht,dt=new _t,wt=new lt("WeekBasedYears",x.ofSeconds(31556952)),pt=new lt("QuarterYears",x.ofSeconds(7889238)),rt.DAY_OF_QUARTER=ct,rt.QUARTER_OF_YEAR=ft,rt.WEEK_OF_WEEK_BASED_YEAR=vt,rt.WEEK_BASED_YEAR=dt,rt.WEEK_BASED_YEARS=wt,rt.QUARTER_YEARS=pt,hn.prototype.isoWeekOfWeekyear=function(){return this.get(rt.WEEK_OF_WEEK_BASED_YEAR)},hn.prototype.isoWeekyear=function(){return this.get(rt.WEEK_BASED_YEAR)},z.ZONE_ID=I("ZONE_ID",(function(t){return t.query(z.ZONE_ID)})),z.CHRONO=I("CHRONO",(function(t){return t.query(z.CHRONO)})),z.PRECISION=I("PRECISION",(function(t){return t.query(z.PRECISION)})),z.OFFSET=I("OFFSET",(function(t){return t.isSupported(O.OFFSET_SECONDS)?Q.ofTotalSeconds(t.get(O.OFFSET_SECONDS)):null})),z.ZONE=I("ZONE",(function(t){var n=t.query(z.ZONE_ID);return null!=n?n:t.query(z.OFFSET)})),z.LOCAL_DATE=I("LOCAL_DATE",(function(t){return t.isSupported(O.EPOCH_DAY)?hn.ofEpochDay(t.getLong(O.EPOCH_DAY)):null})),z.LOCAL_TIME=I("LOCAL_TIME",(function(t){return t.isSupported(O.NANO_OF_DAY)?cn.ofNanoOfDay(t.getLong(O.NANO_OF_DAY)):null})),M.MONDAY=new M(0,"MONDAY"),M.TUESDAY=new M(1,"TUESDAY"),M.WEDNESDAY=new M(2,"WEDNESDAY"),M.THURSDAY=new M(3,"THURSDAY"),M.FRIDAY=new M(4,"FRIDAY"),M.SATURDAY=new M(5,"SATURDAY"),M.SUNDAY=new M(6,"SUNDAY"),M.FROM=I("DayOfWeek.FROM",(function(t){return M.from(t)})),D=[M.MONDAY,M.TUESDAY,M.WEDNESDAY,M.THURSDAY,M.FRIDAY,M.SATURDAY,M.SUNDAY],vn.MIN_SECONDS=-31619119219200,vn.MAX_SECONDS=31494816403199,vn.EPOCH=new vn(0,0),vn.MIN=vn.ofEpochSecond(vn.MIN_SECONDS,0),vn.MAX=vn.ofEpochSecond(vn.MAX_SECONDS,999999999),vn.FROM=I("Instant.FROM",(function(t){return vn.from(t)})),hn.MIN=hn.of(S.MIN_VALUE,1,1),hn.MAX=hn.of(S.MAX_VALUE,12,31),hn.EPOCH_0=hn.ofEpochDay(0),hn.FROM=I("LocalDate.FROM",(function(t){return hn.from(t)})),ln.MIN=ln.of(hn.MIN,cn.MIN),ln.MAX=ln.of(hn.MAX,cn.MAX),ln.FROM=I("LocalDateTime.FROM",(function(t){return ln.from(t)})),Xt.MIN_VALUE=S.MIN_VALUE,Xt.MAX_VALUE=S.MAX_VALUE,It=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).toFormatter(),Xt.FROM=I("Year.FROM",(function(t){return Xt.from(t)})),N.JANUARY=new N(1,"JANUARY"),N.FEBRUARY=new N(2,"FEBRUARY"),N.MARCH=new N(3,"MARCH"),N.APRIL=new N(4,"APRIL"),N.MAY=new N(5,"MAY"),N.JUNE=new N(6,"JUNE"),N.JULY=new N(7,"JULY"),N.AUGUST=new N(8,"AUGUST"),N.SEPTEMBER=new N(9,"SEPTEMBER"),N.OCTOBER=new N(10,"OCTOBER"),N.NOVEMBER=new N(11,"NOVEMBER"),N.DECEMBER=new N(12,"DECEMBER"),j=[N.JANUARY,N.FEBRUARY,N.MARCH,N.APRIL,N.MAY,N.JUNE,N.JULY,N.AUGUST,N.SEPTEMBER,N.OCTOBER,N.NOVEMBER,N.DECEMBER],Tt=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.MONTH_OF_YEAR,2).toFormatter(),Kt.FROM=I("YearMonth.FROM",(function(t){return Kt.from(t)})),At=(new Ut).appendLiteral("--").appendValue(O.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(O.DAY_OF_MONTH,2).toFormatter(),Gt.FROM=I("MonthDay.FROM",(function(t){return Gt.from(t)})),P.ofDays(0),Q.MAX_SECONDS=18*cn.SECONDS_PER_HOUR,Q.UTC=Q.ofTotalSeconds(0),Q.MIN=Q.ofTotalSeconds(-Q.MAX_SECONDS),Q.MAX=Q.ofTotalSeconds(Q.MAX_SECONDS),sn.FROM=I("ZonedDateTime.FROM",(function(t){return sn.from(t)})),kn=new $n,G.systemDefault=yn.systemDefault,G.getAvailableZoneIds=yn.getAvailableZoneIds,G.of=yn.of,G.ofOffset=yn.ofOffset,G.from=yn.from,Q.from=yn.from,G.SYSTEM=kn,G.UTC=Q.ofTotalSeconds(0),nn.INSTANCE=new nn("IsoChronology"),Wt.ISO_LOCAL_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(O.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_LOCAL_TIME=(new Ut).appendValue(O.HOUR_OF_DAY,2).appendLiteral(":").appendValue(O.MINUTE_OF_HOUR,2).optionalStart().appendLiteral(":").appendValue(O.SECOND_OF_MINUTE,2).optionalStart().appendFraction(O.NANO_OF_SECOND,0,9,!0).toFormatter(U.STRICT),Wt.ISO_LOCAL_DATE_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE).appendLiteral("T").append(Wt.ISO_LOCAL_TIME).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_INSTANT=(new Ut).parseCaseInsensitive().appendInstant().toFormatter(U.STRICT),Wt.ISO_OFFSET_DATE_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_ZONED_DATE_TIME=(new Ut).append(Wt.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral("[").parseCaseSensitive().appendZoneId().appendLiteral("]").toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.BASIC_ISO_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendValue(O.MONTH_OF_YEAR,2).appendValue(O.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_OFFSET_DATE=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_OFFSET_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_ORDINAL_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.DAY_OF_YEAR).toFormatter(U.STRICT),Wt.ISO_WEEK_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-W").appendValue(O.ALIGNED_WEEK_OF_YEAR).appendLiteral("-").appendValue(O.DAY_OF_WEEK).toFormatter(U.STRICT),Wt.PARSED_EXCESS_DAYS=I("PARSED_EXCESS_DAYS",(function(t){return t instanceof tt?t.excessDays:P.ZERO})),Wt.PARSED_LEAP_SECOND=I("PARSED_LEAP_SECOND",(function(t){return t instanceof tt&&t.leapSecond})),Et.BASE_DATE=hn.of(2e3,1,1),Ut.CompositePrinterParser=yt,Ut.PadPrinterParserDecorator=Ot,Ut.SettingsParser=zt,Ut.CharLiteralPrinterParser=Dt,Ut.StringLiteralPrinterParser=Dt,Ut.CharLiteralPrinterParser=$t,Ut.NumberPrinterParser=St,Ut.ReducedPrinterParser=Et,Ut.FractionPrinterParser=kt,Ut.OffsetIdPrinterParser=qt,Ut.ZoneIdPrinterParser=Nt,on.MIN=ln.MIN.atOffset(Q.MAX),on.MAX=ln.MAX.atOffset(Q.MIN),on.FROM=I("OffsetDateTime.FROM",(function(t){return on.from(t)})),en.MIN=en.ofNumbers(0,0,0,0,Q.MAX),en.MAX=en.ofNumbers(23,59,59,999999999,Q.MIN),en.FROM=I("OffsetTime.FROM",(function(t){return en.from(t)})));var Sn=function(){function t(t,n){var i;if(t instanceof hn)n=null==n?G.systemDefault():n,i=t.atStartOfDay(n);else if(t instanceof ln)n=null==n?G.systemDefault():n,i=t.atZone(n);else{if(!(t instanceof sn))throw new a("unsupported instance for convert operation:"+t);i=null==n?t:t.withZoneSameInstant(n)}this.instant=i.toInstant()}var n=t.prototype;return n.toDate=function(){return new Date(this.instant.toEpochMilli())},n.toEpochMilli=function(){return this.instant.toEpochMilli()},t}();function En(t,n){return new Sn(t,n)}var Cn=function(t){function n(n,i){var e;return void 0===i&&(i=G.systemDefault()),(e=t.call(this)||this)._zone=i,n instanceof Date?(e._epochMilli=n.getTime(),c(e)):"function"==typeof n.toDate&&n.toDate()instanceof Date?(e._epochMilli=n.toDate().getTime(),c(e)):(f(!1,"date must be either a javascript date or a moment"),e)}l(n,t);var i=n.prototype;return i.query=function(n){return v(n,"query"),n===z.localDate()?hn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===z.localTime()?cn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===z.zone()?this._zone:t.prototype.query.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.NANO_OF_SECOND:return 1e6*b.floorMod(this._epochMilli,1e3);case O.INSTANT_SECONDS:return b.floorDiv(this._epochMilli,1e3)}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isSupported=function(t){return t===O.INSTANT_SECONDS||t===O.NANO_OF_SECOND},n}(A);function qn(t,n){return new Cn(t,n)}var On,zn,An={assert:p,DateTimeBuilder:tt,DateTimeParseContext:nt,DateTimePrintContext:et,MathUtil:b,StringUtil:W,StringBuilder:Yt},Tn={_:An,convert:En,nativeJs:qn,ArithmeticException:u,DateTimeException:r,DateTimeParseException:s,IllegalArgumentException:a,IllegalStateException:h,UnsupportedTemporalTypeException:o,NullPointerException:_,Clock:dn,DayOfWeek:M,Duration:x,Instant:vn,LocalDate:hn,LocalTime:cn,LocalDateTime:ln,OffsetTime:en,OffsetDateTime:on,Month:N,MonthDay:Gt,Period:P,Year:Xt,YearConstants:S,YearMonth:Kt,ZonedDateTime:sn,ZoneOffset:Q,ZoneId:G,ZoneRegion:Mt,ZoneOffsetTransition:gn,ZoneRules:K,ZoneRulesProvider:jt,ChronoLocalDate:Y,ChronoLocalDateTime:_n,ChronoZonedDateTime:rn,IsoChronology:nn,ChronoField:O,ChronoUnit:E,IsoFields:rt,Temporal:V,TemporalAccessor:A,TemporalAdjuster:H,TemporalAdjusters:Jt,TemporalAmount:y,TemporalField:C,TemporalQueries:z,TemporalQuery:T,TemporalUnit:k,ValueRange:q,DateTimeFormatter:Wt,DateTimeFormatterBuilder:Ut,DecimalStyle:mt,ResolverStyle:U,SignStyle:gt,TextStyle:bt},In=(On=Tn,zn=[],function(t){return~zn.indexOf(t)||(t(On),zn.push(t)),On});Tn.use=In},453:function(t,n,i){var e,r,s;r=[n,i(135),i(675),i(755)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V=n.Instant,B=n.Clock,Y=n.OffsetDateTime,W=n.Duration,G=n.LocalDate,K=n.LocalDateTime,X=n.ZoneOffset,J=n.ZoneId,Z=i.$_$.gb,Q=i.$_$.fb,tt=i.$_$.hb,nt=i.$_$.lb,it=i.$_$.t1,et=i.$_$.r1,rt=i.$_$.eb,st=i.$_$.q9,ot=i.$_$.p1,ut=i.$_$.vf,at=i.$_$.w9,ht=i.$_$.f,_t=i.$_$.h2,lt=i.$_$.g2,ct=i.$_$.eg,ft=i.$_$.yf,vt=e.$_$.h,dt=e.$_$.e1,wt=e.$_$.p2,pt=e.$_$.c,mt=i.$_$.m9,gt=i.$_$.a5,bt=i.$_$.sf,$t=i.$_$.r2,yt=i.$_$.nd,kt=i.$_$.u9,xt=i.$_$.t9,St=i.$_$.jb,Et=i.$_$.nf,Ct=i.$_$.cb,qt=i.$_$.bb,Ot=i.$_$.s4,zt=i.$_$.h,At=i.$_$.lf,Tt=i.$_$.g,It=i.$_$.q2,Dt=i.$_$.fg,jt=i.$_$.pf,Mt=i.$_$.q1,Nt=i.$_$.g1;function Rt(){}function Pt(t){if(!(1<=t&&t<=7))throw it(nt("Failed requirement."));return(null==x&&(x=mt([sn(),on(),un(),an(),hn(),_n(),ln()])),x).h1(t-1|0)}function Lt(t){var n=function(t,n){return ot(t,n),Ft.call(n),n}(t,rt(Z(Ft)));return st(n,Lt),n}function Ft(){st(this,Ft)}function Ut(t){var n=function(t,n){return ot(t,n),Ht.call(n),n}(t,rt(Z(Ht)));return st(n,Ut),n}function Ht(){st(this,Ht)}function Vt(t){var n=function(t,n){return lt(t,n),Bt.call(n),n}(t,rt(Z(Bt)));return st(n,Vt),n}function Bt(){st(this,Bt)}function Yt(t){if(!(1<=t&&t<=12))throw it(nt("Failed requirement."));return(null==F&&(F=mt([Sn(),En(),Cn(),qn(),On(),zn(),An(),Tn(),In(),Dn(),jn(),Mn()])),F).h1(t-1|0)}function Wt(){return u}function Gt(){return a}function Kt(){return h}function Xt(){_=this,this.j3k_1=dt("Instant",vt())}function Jt(){l=this,this.k3k_1=dt("LocalDate",vt())}function Zt(){c=this,this.n3k_1=dt("LocalDateTime",vt())}function Qt(){f=this,this.q3k_1=dt("TimeZone",vt())}function tn(){v=this,this.t3k_1=dt("FixedOffsetTimeZone",vt())}function nn(){d=this,this.u3k_1=dt("UtcOffset",vt())}function en(){if(k)return gt;k=!0,w=new rn("MONDAY",0),p=new rn("TUESDAY",1),m=new rn("WEDNESDAY",2),g=new rn("THURSDAY",3),b=new rn("FRIDAY",4),$=new rn("SATURDAY",5),y=new rn("SUNDAY",6)}function rn(t,n){bt.call(this,t,n)}function sn(){return en(),w}function on(){return en(),p}function un(){return en(),m}function an(){return en(),g}function hn(){return en(),b}function _n(){return en(),$}function ln(){return en(),y}function cn(){S=this;var t=V.ofEpochSecond(s.c6(),999999999);this.b3k_1=new vn(t);var n=V.ofEpochSecond(o.c6(),0);this.c3k_1=new vn(n),this.d3k_1=new vn(V.MIN),this.e3k_1=new vn(V.MAX)}function fn(){return null==S&&new cn,S}function vn(t){fn(),this.y3k_1=t}function dn(t){return Gn(t,"DateTimeException")}function wn(t){return Gn(t,"DateTimeParseException")}function pn(){E=this,this.l3k_1=new gn(G.MIN),this.m3k_1=new gn(G.MAX)}function mn(){return null==E&&new pn,E}function gn(t){mn(),this.f3k_1=t}function bn(){C=this,this.o3k_1=new yn(K.MIN),this.p3k_1=new yn(K.MAX)}function $n(){return null==C&&new bn,C}function yn(t){$n(),this.f3l_1=t}function kn(){if(L)return gt;L=!0,q=new xn("JANUARY",0),O=new xn("FEBRUARY",1),z=new xn("MARCH",2),A=new xn("APRIL",3),T=new xn("MAY",4),I=new xn("JUNE",5),D=new xn("JULY",6),j=new xn("AUGUST",7),M=new xn("SEPTEMBER",8),N=new xn("OCTOBER",9),R=new xn("NOVEMBER",10),P=new xn("DECEMBER",11)}function xn(t,n){bt.call(this,t,n)}function Sn(){return kn(),q}function En(){return kn(),O}function Cn(){return kn(),z}function qn(){return kn(),A}function On(){return kn(),T}function zn(){return kn(),I}function An(){return kn(),D}function Tn(){return kn(),j}function In(){return kn(),M}function Dn(){return kn(),N}function jn(){return kn(),R}function Mn(){return kn(),P}function Nn(t,n){var i;if(n instanceof X)i=Fn(new Wn(n));else if(n.rules().isFixedOffset()){var e=n.normalized();i=new Hn(new Wn(e instanceof X?e:Dt()),n)}else i=new Ln(n);return i}function Rn(){U=this,this.r3k_1=Fn(new Wn(X.UTC))}function Pn(){return null==U&&new Rn,U}function Ln(t){Pn(),this.p3l_1=t}function Fn(t){return function(t,n){return Hn.call(n,t,t.q3l_1),n}(t,rt(Z(Hn)))}function Un(){}function Hn(t,n){Ln.call(this,n),this.s3l_1=t}function Vn(t,n){var i;try{i=new Wn(t.p3l_1.rules().offsetOfInstant(n.y3k_1))}catch(t){if(t instanceof Error){var e=t;if(function(t){return Gn(t,"ArithmeticException")}(e))throw Vt(e);throw e}throw t}return i}function Bn(){H=this,this.v3k_1=new Wn(X.UTC)}function Yn(){return null==H&&new Bn,H}function Wn(t){Yn(),this.q3l_1=t}function Gn(t,n){return t.name==n}return tt(Rt,"System",Q),tt(Ft,"DateTimeFormatException",at,ut,ht,(function t(){var n,i=(n=rt(Z(Ft)),et(n),Ft.call(n),n);return st(i,t),i})),tt(Ht,"IllegalTimeZoneException",at,ut,ht,(function t(){var n,i=(n=rt(Z(Ht)),et(n),Ht.call(n),n);return st(i,t),i})),tt(Bt,"DateTimeArithmeticException",at,ct,ht,(function t(){var n,i=(n=rt(Z(Bt)),_t(n),Bt.call(n),n);return st(i,t),i})),tt(Xt,"InstantIso8601Serializer",Q,ht,[wt]),tt(Jt,"LocalDateIso8601Serializer",Q,ht,[wt]),tt(Zt,"LocalDateTimeIso8601Serializer",Q,ht,[wt]),tt(Qt,"TimeZoneSerializer",Q,ht,[wt]),tt(tn,"FixedOffsetTimeZoneSerializer",Q,ht,[wt]),tt(nn,"UtcOffsetSerializer",Q,ht,[wt]),tt(rn,"DayOfWeek",at,bt),tt(cn,"Companion",Q),tt(vn,"Instant",at,ht,[jt],ht,ht,{0:function(){return null==_&&new Xt,_}}),tt(pn,"Companion",Q),tt(gn,"LocalDate",at,ht,[jt],ht,ht,{0:function(){return null==l&&new Jt,l}}),tt(bn,"Companion",Q),tt(yn,"LocalDateTime",at,ht,[jt],ht,ht,{0:function(){return null==c&&new Zt,c}}),tt(xn,"Month",at,bt),tt(Rn,"Companion",Q),tt(Ln,"TimeZone",at,ht,ht,ht,ht,{0:function(){return null==f&&new Qt,f}}),tt(Un,"Companion",Q),tt(Hn,"FixedOffsetTimeZone",at,Ln,ht,ht,ht,{0:function(){return null==v&&new tn,v}}),tt(Bn,"Companion",Q),tt(Wn,"UtcOffset",at,ht,ht,ht,ht,{0:function(){return null==d&&new nn,d}}),Z(Rt).a3k=function(){return fn().a3k()},Z(Xt).g34=function(){return this.j3k_1},Z(Xt).h34=function(t){return fn().z1t(t.d37())},Z(Jt).g34=function(){return this.k3k_1},Z(Jt).h34=function(t){return mn().z1t(t.d37())},Z(Zt).g34=function(){return this.n3k_1},Z(Zt).h34=function(t){return $n().z1t(t.d37())},Z(Qt).g34=function(){return this.q3k_1},Z(Qt).h34=function(t){return Pn().s3k(t.d37())},Z(tn).g34=function(){return this.t3k_1},Z(tn).h34=function(t){var n=Pn().s3k(t.d37());if(n instanceof Hn)return n;throw pt("Timezone identifier '"+n+"' does not correspond to a fixed-offset timezone")},Z(nn).g34=function(){return this.u3k_1},Z(nn).h34=function(t){return Yn().z1t(t.d37())},Z(cn).a3k=function(){return new vn(B.systemUTC().instant())},Z(cn).w3k=function(t){var n;try{var i=Gt(),e=t.x9(St(i)),r=Gt(),s=t.fb(St(r)),o=Wt(),u=s.y9(St(o));n=this.x3k(e,u)}catch(i){if(!(i instanceof Error))throw i;var a=i;if(!dn(a))throw a;n=t.z9(new ft(0,0))>0?this.e3k_1:this.d3k_1}return n},Z(cn).z1t=function(t){var n;try{n=new vn(Y.parse(function(t,n){var i,e=yt(n,$t(84),ht,!0);if(-1===e)return n;t:{var r=kt(n)-1|0;if(0<=r)do{var s=r;r=r+-1|0;var o=xt(n,s);if(o===$t(43)||o===$t(45)){i=s;break t}}while(0<=r);i=-1}var u=i;return u=0)throw Nt("Addition overflows a long: "+t.toString()+" + "+n.toString());return i}(t,r),o=St(Kt()),u=n.fb(o),a=u.db(o.nb(u.pb(o).nb(u.ob(u.ib())).lb(63))).ia();i=new vn(V.ofEpochSecond(s.c6(),a))}catch(n){if(!(n instanceof Error))throw n;var h=n;if(!(dn(h)||h instanceof Et))throw h;i=t.z9(new ft(0,0))>0?this.e3k_1:this.d3k_1}return i},Z(vn).z3k=function(){return Ct(this.y3k_1.epochSecond())},Z(vn).a3l=function(){return qt(this.y3k_1.nano())},Z(vn).b3l=function(){var t=this.z3k(),n=Gt(),i=t.y9(St(n)),e=this.a3l()/Wt()|0;return i.db(St(e))},Z(vn).c3l=function(t){var n=W.between(t.y3k_1,this.y3k_1);Ot();var i=n.seconds(),e=At(i,zt());Ot();var r=n.nano(),s=At(r,Tt());return It(e,s)},Z(vn).d3l=function(t){return this.y3k_1.compareTo(t.y3k_1)},Z(vn).d=function(t){return this.d3l(t instanceof vn?t:Dt())},Z(vn).equals=function(t){return this===t||t instanceof vn&&(this.y3k_1===t.y3k_1||this.y3k_1.equals(t.y3k_1))},Z(vn).hashCode=function(){return this.y3k_1.hashCode()},Z(vn).toString=function(){return this.y3k_1.toString()},Z(pn).z1t=function(t){var n;try{n=new gn(G.parse(t))}catch(t){if(t instanceof Error){var i=t;if(wn(i))throw Lt(i);throw i}throw t}return n},Z(gn).g3k=function(){return this.f3k_1.year()},Z(gn).h3k=function(){return this.f3k_1.monthValue()},Z(gn).i3k=function(){return this.f3k_1.dayOfMonth()},Z(gn).equals=function(t){return this===t||t instanceof gn&&(this.f3k_1===t.f3k_1||this.f3k_1.equals(t.f3k_1))},Z(gn).hashCode=function(){return this.f3k_1.hashCode()},Z(gn).toString=function(){return this.f3k_1.toString()},Z(gn).e3l=function(t){return this.f3k_1.compareTo(t.f3k_1)},Z(gn).d=function(t){return this.e3l(t instanceof gn?t:Dt())},Z(bn).z1t=function(t){var n;try{n=new yn(K.parse(t))}catch(t){if(t instanceof Error){var i=t;if(wn(i))throw Lt(i);throw i}throw t}return n},Z(yn).g3k=function(){return this.f3l_1.year()},Z(yn).h3k=function(){return this.f3l_1.monthValue()},Z(yn).g3l=function(){return Yt(this.f3l_1.month().value())},Z(yn).i3k=function(){return this.f3l_1.dayOfMonth()},Z(yn).h3l=function(){return Pt(this.f3l_1.dayOfWeek().value())},Z(yn).i3l=function(){return this.f3l_1.dayOfYear()},Z(yn).j3l=function(){return this.f3l_1.hour()},Z(yn).k3l=function(){return this.f3l_1.minute()},Z(yn).l3l=function(){return this.f3l_1.second()},Z(yn).m3l=function(){return qt(this.f3l_1.nano())},Z(yn).equals=function(t){return this===t||t instanceof yn&&(this.f3l_1===t.f3l_1||this.f3l_1.equals(t.f3l_1))},Z(yn).hashCode=function(){return this.f3l_1.hashCode()},Z(yn).toString=function(){return this.f3l_1.toString()},Z(yn).n3l=function(t){return this.f3l_1.compareTo(t.f3l_1)},Z(yn).d=function(t){return this.n3l(t instanceof yn?t:Dt())},Z(Rn).o3l=function(){return Nn(0,J.systemDefault())},Z(Rn).s3k=function(t){var n;try{n=Nn(0,J.of(t))}catch(t){if(t instanceof Error){var i=t;if(dn(i))throw Ut(i);throw i}throw t}return n},Z(Ln).equals=function(t){return this===t||t instanceof Ln&&(this.p3l_1===t.p3l_1||this.p3l_1.equals(t.p3l_1))},Z(Ln).hashCode=function(){return this.p3l_1.hashCode()},Z(Ln).toString=function(){return this.p3l_1.toString()},Z(Bn).z1t=function(t){var n;try{n=new Wn(X.of(t))}catch(t){if(t instanceof Error){var i=t;if(dn(i))throw Lt(i);throw i}throw t}return n},Z(Wn).t3l=function(){return this.q3l_1.totalSeconds()},Z(Wn).hashCode=function(){return this.q3l_1.hashCode()},Z(Wn).equals=function(t){return t instanceof Wn&&(this.q3l_1===t.q3l_1||this.q3l_1.equals(t.q3l_1))},Z(Wn).toString=function(){return this.q3l_1.toString()},r=new Rt,s=new ft(-931914497,-750),o=new ft(1151527680,720),u=1e6,a=1e3,h=1e9,new Un,t.$_$=t.$_$||{},t.$_$.a=r,t.$_$.b=fn,t.$_$.c=Pn,t.$_$.d=vn,t.$_$.e=yn,t.$_$.f=gn,t.$_$.g=function(t,n,i,e,r){return e=e===ht?0:e,r=r===ht?0:r,function(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){var a;s=s===ht?0:s,o=o===ht?0:o;try{a=K.of(t,n,i,e,r,s,o)}catch(t){if(t instanceof Error){var h=t;if(dn(h))throw Mt(h);throw h}throw t}return yn.call(u,a),u}(t,n,i,e,r,s,o,rt(Z(yn)))}(t.g3k(),t.h3k(),t.i3k(),n,i,e,r)},t.$_$.h=function(t){return t.v9_1+1|0},t.$_$.i=function(t){return t.v9_1+1|0},t.$_$.j=Vn,t.$_$.k=function(t,n){return Vn(n,t)},t.$_$.l=function(t,n){return new vn(t.f3l_1.atZone(n.p3l_1).toInstant())},t.$_$.m=function(t,n){var i;try{i=new yn(K.ofInstant(t.y3k_1,n.p3l_1))}catch(t){if(t instanceof Error){var e=t;if(dn(e))throw Vt(e);throw e}throw t}return i},t})?e.apply(n,r):e)||(t.exports=s)},960:function(t,n,i){var e,r,s;r=[n,i(426),i(675),i(453),i(585),i(485)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,o){"use strict";var u,a=n.$_$.c,h=e.$_$.fg,_=n.$_$.d,l=e.$_$.gb,c=e.$_$.fb,f=e.$_$.hb,v=e.$_$.w9,d=r.$_$.a,w=s.$_$.s,p=s.$_$.o,m=e.$_$.a5,g=s.$_$.p1,b=s.$_$.n1,$=s.$_$.h1,y=s.$_$.r,k=s.$_$.a,x=s.$_$.u,S=s.$_$.y,E=s.$_$.i1,C=s.$_$.x,q=s.$_$.p,O=s.$_$.z,z=s.$_$.o1,A=s.$_$.j1,T=s.$_$.l1,I=s.$_$.k1,D=s.$_$.q,j=e.$_$.o7,M=s.$_$.c1,N=s.$_$.v1,R=s.$_$.d1,P=s.$_$.w1,L=s.$_$.u1,F=s.$_$.e1,U=s.$_$.m1,H=s.$_$.v,V=s.$_$.b1,B=s.$_$.b,Y=s.$_$.q1,W=s.$_$.f1,G=s.$_$.w,K=e.$_$.k9,X=o.$_$.x,J=e.$_$.qa,Z=s.$_$.s1,Q=e.$_$.n7,tt=e.$_$.f,nt=e.$_$.w8,it=s.$_$.y1,et=o.$_$.j1,rt=s.$_$.x1,st=o.$_$.l1,ot=s.$_$.t1,ut=s.$_$.g1,at=e.$_$.jh,ht=e.$_$.q7,_t=s.$_$.n,lt=s.$_$.m,ct=s.$_$.t,ft=s.$_$.r1,vt=s.$_$.l,dt=e.$_$.x6,wt=e.$_$.vg,pt=s.$_$.a1,mt=s.$_$.d,gt=s.$_$.c,bt=s.$_$.j,$t=s.$_$.i,yt=s.$_$.h,kt=s.$_$.e,xt=s.$_$.f,St=s.$_$.g,Et=s.$_$.k;function Ct(){u=this,this.y9o_1=new a;var t=i(918),n=null!=t&&"string"==typeof t?t:h();this.z9o_1=_("aircraft_fighter.png",n);var e=i(520),r=null!=e&&"string"==typeof e?e:h();this.a9p_1=_("worldwind_logo.png",r);var s=i(513),o=null!=s&&"string"==typeof s?s:h();this.b9p_1=_("aircraft_fixwing.png",o);var l=i(105),c=null!=l&&"string"==typeof l?l:h();this.c9p_1=_("ehipcc.png",c);var f=i(36),v=null!=f&&"string"==typeof f?f:h();this.d9p_1=_("pattern_sample_houndstooth.png",v);var d=i(79),w=null!=d&&"string"==typeof d?d:h();this.e9p_1=_("airport_terminal.png",w)}function qt(){return null==u&&new Ct,u}function Ot(){this.f9p_1=null}function zt(t){Ot.call(this),this.l9p_1=t,this.m9p_1=null,this.n9p_1=null}function At(t){Ot.call(this),this.p9p_1=t}function Tt(t){Ot.call(this),this.r9p_1=t,this.s9p_1=new y}function It(t){Ot.call(this),this.u9p_1=t;var n=new x("Ellipses"),i=new S(g.g5x(45,-120,0),5e5,3e5);i.v6s(E()),i.w6s(!0),n.k6j(i);var e=new S(g.g5x(45,-100,0),5e5,3e5),r=e.b2a();r.x8i(new C(1,1,1,.5)),r.m6v_1=3,e.v6s(E()),e.w6s(!0),n.k6j(e);var s=new S(g.g5x(35,-120,0),5e5,3e5);s.v6s(E()),s.w6s(!0);var o=b().d5d(45);s.k8a(o),n.k6j(s);var u=new S(g.g5x(35,-100,0),4e5,4e5);u.v6s(E()),u.w6s(!0),n.k6j(u),n.k6j(new S(g.g5x(25,-120,2e5),5e5,3e5));var a=new S(g.g5x(25,-100,2e5),5e5,3e5),h=a.b2a();h.x8i(new C(1,1,1,.5)),h.i6v_1=!0,a.a88(!0),n.k6j(a),this.v9p_1=n}function Dt(t){Ot.call(this),this.x9p_1=t,this.y9p_1=new q}function jt(t){Ot.call(this),this.a9q_1=t;var n=new x("Labels"),i=new O(g.g5x(38.8977,-77.0365,0),"The White House");i.v6s(E()),n.k6j(i);var e=new O(g.g5x(38.881389,-77.036944,0),"Thomas Jefferson Memorial");e.v6s(E());var r=e.e6t_1;r.c6v(new C(0,0,0,1)),r.d6v(new C(1,1,1,1)),r.u6u_1=5,n.k6j(e);var s=new O(g.g5x(38.8893,-77.050111,0),"Lincoln Memorial");s.v6s(E()),s.e6t_1.r71(z.y5w()),n.k6j(s);var o=new O(g.g5x(38.889803,-77.009114,0),"United States Capitol");o.v6s(E()),o.e6t_1.r71(z.w5w()),n.k6j(o);var u=new O(g.g5x(38.907192,-77.036871,0),"Washington");u.v6s(E()),u.e6t_1.e6v(T("arial",A(),28)),n.k6j(u);var a=new O(g.g5x(38.89,-77.023611,0),"National Mall");a.v6s(E()),a.i6t_1=I(),n.k6j(a),this.b9q_1=n}function Mt(t){Ot.call(this),this.d9q_1=t}function Nt(t){Ot.call(this),this.f9q_1=t,this.g9q_1=new D}function Rt(t){Ot.call(this),this.i9q_1=t;var n=new x("Paths");n.k6j(new M(j([g.g5x(50,-180,1e5),g.g5x(30,-100,1e6),g.g5x(50,-40,1e5)])));var i=new M(j([g.g5x(40,-180,0),g.g5x(20,-100,0),g.g5x(40,-40,0)]));i.v6s(E()),i.w6s(!0),n.k6j(i);var e=new M(j([g.g5x(30,-180,1e5),g.g5x(10,-100,1e6),g.g5x(30,-40,1e5)]));e.a88(!0),n.k6j(e);var r=new M(j([g.g5x(20,-180,1e5),g.g5x(0,-100,1e6),g.g5x(20,-40,1e5)])),s=r.b2a();s.i6v_1=!0,s.x8i(new C(1,1,1,.5)),s.m6v_1=3,r.a88(!0),n.k6j(r),this.j9q_1=n}function Pt(t){Ot.call(this),this.l9q_1=t;var n=new x("Placemarks"),i=N().a8e(g.g5x(34.281,-119.293,0),new C(0,1,1,1),20);i.v6s(E()),n.k6j(i);var e=new R(g.g5x(34.26,-119.2,5e3)),r=e,s=P.u8f(L().m6j(qt().b9p_1));s.c8e_1=1.5,r.r8e_1=s,n.k6j(e);var o=new R(g.g5x(34.2,-119.208,0));o.v6s(E());var u=o,a=P.t8f(L().m6j(qt().e9p_1));a.v8f(z.x5w()),a.c8e_1=2,u.r8e_1=a,o.n82("Oxnard Airport"),n.k6j(o);var h=new R(g.g5x(34.3,-119.25,0));h.v6s(E());var _=h,l=P.t8f(L().m6j(qt().c9p_1));l.v8f(z.x5w()),_.r8e_1=l,n.k6j(h),this.m9q_1=n}function Lt(t){Ot.call(this),this.o9q_1=t;var n=new x("Polygons");n.k6j(new F(j([g.g5x(40,-135,5e5),g.g5x(45,-140,7e5),g.g5x(50,-130,9e5),g.g5x(45,-120,7e5),g.g5x(40,-125,5e5)])));var i=new F(j([g.g5x(40,-105,0),g.g5x(45,-110,0),g.g5x(50,-100,0),g.g5x(45,-90,0),g.g5x(40,-95,0)]));i.v6s(E()),i.w6s(!0),n.k6j(i);var e=new F(j([g.g5x(20,-135,5e5),g.g5x(25,-140,7e5),g.g5x(30,-130,9e5),g.g5x(25,-120,7e5),g.g5x(20,-125,5e5)]));e.a88(!0),n.k6j(e);var r=new F(j([g.g5x(20,-105,5e5),g.g5x(25,-110,7e5),g.g5x(30,-100,9e5),g.g5x(25,-90,7e5),g.g5x(20,-95,5e5)])),s=r.b2a();s.i6v_1=!0,s.x8i(new C(1,1,1,.5)),s.m6v_1=3,r.a88(!0),n.k6j(r);var o=new F;o.m8i(j([g.g5x(0,-135,5e5),g.g5x(5,-140,7e5),g.g5x(10,-130,9e5),g.g5x(5,-120,7e5),g.g5x(0,-125,5e5)])),o.m8i(j([g.g5x(2.5,-130,6e5),g.g5x(5,-135,7e5),g.g5x(7.5,-130,8e5),g.g5x(5,-125,7e5)])),n.k6j(o);var u=new F,a=u.b2a();a.i6v_1=!0,a.x8i(new C(1,1,1,.5)),a.m6v_1=3,u.m8i(j([g.g5x(0,-105,5e5),g.g5x(5,-110,7e5),g.g5x(10,-100,9e5),g.g5x(5,-90,7e5),g.g5x(0,-95,5e5)])),u.m8i(j([g.g5x(2.5,-100,6e5),g.g5x(5,-105,7e5),g.g5x(7.5,-100,8e5),g.g5x(5,-95,7e5)])),u.a88(!0),n.k6j(u),this.p9q_1=n}function Ft(t){Ot.call(this),this.r9q_1=t;var n=new x("Dash and fill"),i=U();i.m6v_1=4;var e=i,r=new M(j([g.g5x(60,-100,1e5),g.g5x(30,-120,1e5),g.g5x(0,-100,1e5)]));r.b2a().y8i(e).o6v_1=L().v6v(2,-3856),n.k6j(r);var s=new M(j([g.g5x(60,-90,5e4),g.g5x(30,-110,5e4),g.g5x(0,-90,5e4)]));s.b2a().y8i(e).o6v_1=L().v6v(4,-3856),n.k6j(s);var o=new M(j([g.g5x(60,-80,0),g.g5x(30,-100,0),g.g5x(0,-80,0)]));o.b2a().y8i(e).o6v_1=L().v6v(8,-8202),o.v6s(E()),o.w6s(!0),n.k6j(o);var u=new S(g.g5x(40,-70,1e5),15e5,8e5);u.b2a().y8i(e).n6v_1=L().m6j(qt().d9p_1),n.k6j(u);var a=new F(j([g.g5x(25,-85,0),g.g5x(10,-80,0),g.g5x(10,-60,0),g.g5x(25,-55,0)])),h=a.b2a().y8i(e);h.n6v_1=L().m6j(qt().d9p_1),h.o6v_1=L().v6v(8,-8202),a.v6s(E()),a.w6s(!0),n.k6j(a),this.s9q_1=n}function Ut(t){Ot.call(this),this.u9q_1=t,this.v9q_1=new H}function Ht(t){Ot.call(this),this.x9q_1=t;var n=new x("Sightline"),i=g.g5x(46.23,-122.19,2500),e=new V(i,1e4);e.b2a().x8i(new C(0,1,0,.5)),e.s8b_1.x8i(new C(.1,.1,.1,.8)),n.k6j(e);var r=new R(i),s=r.r8e_1;s.b8e_1=L().m6j(qt().b9p_1),s.v8f(z.x5w()),s.c8e_1=2,s.f8e_1=!0,n.k6j(r),this.y9q_1=n}function Vt(t){Ot.call(this),this.a9r_1=t;var n=new x("Surface image");n.k6j(new W(Y.k5x(37.46,15.5,.5,.6),L().m6j(qt().a9p_1))),n.k6j(new W(Y.k5x(37.46543388598137,14.60128369746704,.45360804083528,.75704283995502),L().m7e("https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg"))),this.b9r_1=n}function Bt(t){Ot.call(this),this.d9r_1=t,this.e9r_1=new G("https://elevation.nationalmap.gov/arcgis/services/3DEPElevation/ImageServer/WCSServer","DEP3Elevation","geotiff",Y.k5x(25,-125,25,60),b().n5t(.3333333333333333))}function Yt(t,n){this.n9r_1=t,K.call(this,n)}function Wt(t,n){Ot.call(this),this.q9r_1=t,this.r9r_1=n,this.s9r_1=null,this.t9r_1=null}function Gt(t,n){this.c9s_1=t,K.call(this,n)}function Kt(t,n){Ot.call(this),this.f9s_1=t,this.g9s_1=n,this.h9s_1=null,this.i9s_1=null}function Xt(){window.onload=Jt}function Jt(t){var n,i,e,r,s=document.getElementById("WorldWindow"),o=new ut(s instanceof HTMLCanvasElement?s:h()),u=document.getElementById("Tutorials"),a=u instanceof HTMLSelectElement?u:h(),_=document.getElementById("Projections"),l=_ instanceof HTMLSelectElement?_:h(),c=document.getElementById("Actions"),f=c instanceof HTMLDivElement?c:h(),v=ht([at("Basic globe",new zt(o.t8x())),at("Set camera view",new At(o.t8x())),at('Set "look at" view',new Mt(o.t8x())),at("Placemarks",new Pt(o.t8x())),at("Paths",new Rt(o.t8x())),at("Polygons",new Lt(o.t8x())),at("Ellipses",new It(o.t8x())),at("Dash and fill",new Ft(o.t8x())),at("Labels",new jt(o.t8x())),at("Sight line",new Ht(o.t8x())),at("Surface image",new Vt(o.t8x())),at("Show tessellation",new Ut(o.t8x())),at("MGRS Graticule",new Nt(o.t8x())),at("Gauss-Kruger Graticule",new Dt(o.t8x())),at("WMS Layer",new Wt(o.t8x(),o.s91())),at("WMTS Layer",new Kt(o.t8x(),o.s91())),at("WCS Elevation",new Bt(o.t8x())),at("Elevation Heatmap",new Tt(o.t8x()))]),d=ht([at("WGS84 Projection",new _t),at("Mercator Projection",new lt)]),g={_v:null},b=o.t8x().c53_1;b.n6k(new ct),b.n6k(ft().l7f("https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&hl={lang}","image/jpeg",tt,"Google Satellite")),b.n6k(new w),b.n6k(new p),o.t8x().y52_1.b55_1.t69(new vt),o.t91().j9e_1=new nn;for(var $=v.b2().v();$.w();){var y=$.y(),k=document.createElement("option"),x=k instanceof HTMLOptionElement?k:h();x.value=y,x.innerHTML=y,a.append(x)}for(var S=d.b2().v();S.w();){var E=S.y(),C=document.createElement("option"),q=C instanceof HTMLOptionElement?C:h();q.value=E,q.innerHTML=E,l.append(q)}return a.onchange=(n=g,i=v,e=f,r=o,function(t){var s=t.target;return Qt(n,i,e,r,(s instanceof HTMLSelectElement?s:h()).value),m}),l.onchange=function(t,n){return function(i){var e=i.target;return tn(t,n,(e instanceof HTMLSelectElement?e:h()).value),m}}(o,d),Qt(g,v,f,o,dt(v.b2())),tn(o,d,dt(d.b2())),m}function Zt(t,n,i,e){var r,s,o,u=document.createElement("button"),a=u instanceof HTMLButtonElement?u:h();a.innerHTML=e,t.append(a),a.onclick=(r=e,s=n,o=i,function(t){return function(t,n,i){var e=t._v;if(null==e);else{var r=n.o2(e);null!=r&&r.h9p(i)}}(s,o,r),m})}function Qt(t,n,i,e,r){var s=t._v;if(null==s);else{var o=n.o2(s);null!=o&&o.j9p()}t._v=r;var u=n.o2(r);if(null==u);else{u.i9p(),i.innerHTML="";var a=u.g9p();if(null==a);else for(var h=a.v();h.w();)Zt(i,t,n,h.y());var _=u.g9p();i.hidden=!(!1===(null==_?null:_.d1()))}e.w52()}function tn(t,n,i){t.t8x().y52_1.a55_1=wt(n.o2(i)),t.w52()}function nn(){}return f(Ct,"images",c),f(Ot,"AbstractTutorial",v),f(zt,"BasicTutorial",v,Ot),f(At,"CameraViewTutorial",v,Ot),f(Tt,"ElevationHeatmapTutorial",v,Ot),f(It,"EllipsesTutorial",v,Ot),f(Dt,"GKGraticuleTutorial",v,Ot),f(jt,"LabelsTutorial",v,Ot),f(Mt,"LookAtViewTutorial",v,Ot),f(Nt,"MGRSGraticuleTutorial",v,Ot),f(Rt,"PathsTutorial",v,Ot),f(Pt,"PlacemarksTutorial",v,Ot),f(Lt,"PolygonsTutorial",v,Ot),f(Ft,"ShapesDashAndFillTutorial",v,Ot),f(Ut,"ShowTessellationTutorial",v,Ot),f(Ht,"SightlineTutorial",v,Ot),f(Vt,"SurfaceImageTutorial",v,Ot),f(Bt,"WcsElevationTutorial",v,Ot),f(Yt,"WmsLayerTutorial$start$slambda",v,K,tt,tt,tt,tt,[1]),f(Wt,"WmsLayerTutorial",v,Ot),f(Gt,"WmtsLayerTutorial$start$slambda",v,K,tt,tt,tt,tt,[1]),f(Kt,"WmtsLayerTutorial",v,Ot),f(nn,tt,v,tt,[Et]),l(Ot).g9p=function(){return this.f9p_1},l(Ot).h9p=function(t){},l(Ot).i9p=function(){},l(Ot).j9p=function(){},l(zt).i9p=function(){l(Ot).i9p.call(this);var t=this.l9p_1.c53_1,n=d.a3k(),i=t.l6k(t.m6k("StarField")),e=i instanceof w?i:h();e.j7g_1=n,this.m9p_1=e;var r=t.l6k(t.m6k("Atmosphere")),s=r instanceof p?r:h();s.j6n_1=n,this.n9p_1=s},l(zt).j9p=function(){l(Ot).j9p.call(this);var t=this.m9p_1;null!=t&&(t.j7g_1=null);var n=this.n9p_1;null!=n&&(n.j6n_1=null)},l(At).i9p=function(){var t,n,i,e,r,s,o,u,a;l(Ot).i9p.call(this),t=this,n=g.g5x(34.2,-119.2,3e3),i=g.g5x(34.1192744,-119.119585,4),e=n.s5v(i),r=n.t5v(i)*t.p9p_1.y52_1.f69(n.b54_1,n.c54_1),s=b(),o=r/n.f54_1,u=Math.atan(o),a=s.i59(u),t.p9p_1.d53_1.v5u(n.b54_1,n.c54_1,n.f54_1,$(),e,a,b().j58_1)},l(Tt).i9p=function(){l(Ot).i9p.call(this),this.r9p_1.c53_1.n6k(this.s9p_1);var t=g.g5x(50.4501,30.5234,0),n=$(),i=b().j58_1,e=b().d5d(0);this.r9p_1.a58(new k(t,n,1e4,i,e,b().j58_1))},l(Tt).j9p=function(){l(Ot).j9p.call(this),this.r9p_1.c53_1.o6k(this.s9p_1)},l(It).i9p=function(){l(Ot).i9p.call(this),this.u9p_1.c53_1.n6k(this.v9p_1);var t=this.u9p_1.d53_1,n=b().d5d(30),i=b().d5d(-110);t.v5u(n,i,1.1*this.u9p_1.u53(),$(),b().j58_1,b().j58_1,b().j58_1)},l(It).j9p=function(){l(Ot).j9p.call(this),this.u9p_1.c53_1.o6k(this.v9p_1)},l(Dt).i9p=function(){l(Ot).i9p.call(this),this.x9p_1.c53_1.n6k(this.y9p_1)},l(Dt).j9p=function(){l(Ot).j9p.call(this),this.x9p_1.c53_1.o6k(this.y9p_1)},l(jt).i9p=function(){l(Ot).i9p.call(this),this.a9q_1.c53_1.n6k(this.b9q_1);var t=this.a9q_1.d53_1,n=b().d5d(38.89),i=b().d5d(-77.023611);t.v5u(n,i,1e4,$(),b().j58_1,b().j58_1,b().j58_1)},l(jt).j9p=function(){l(Ot).j9p.call(this),this.a9q_1.c53_1.o6k(this.b9q_1)},l(Mt).i9p=function(){var t,n,i,e,r,s,o,u,a,h,_,c;l(Ot).i9p.call(this),t=this,n=g.g5x(34.0158333,-118.4513056,2500),i=g.g5x(33.9424368,-118.4081222,38.7),e=n.s5v(i),r=n.t5v(i)*t.d9q_1.y52_1.f69(n.b54_1,n.c54_1),s=n.f54_1-i.f54_1,o=s*s+r*r,u=Math.sqrt(o),a=b(),h=r/n.f54_1,_=Math.atan(h),c=a.i59(_),t.d9q_1.a58(new k(i,$(),u,e,c,b().j58_1))},l(Nt).i9p=function(){l(Ot).i9p.call(this),this.f9q_1.c53_1.n6k(this.g9q_1)},l(Nt).j9p=function(){l(Ot).j9p.call(this),this.f9q_1.c53_1.o6k(this.g9q_1)},l(Rt).i9p=function(){l(Ot).i9p.call(this),this.i9q_1.c53_1.n6k(this.j9q_1);var t=this.i9q_1.d53_1,n=b().d5d(30),i=b().d5d(-100);t.v5u(n,i,1.1*this.i9q_1.u53(),$(),b().j58_1,b().j58_1,b().j58_1)},l(Rt).j9p=function(){l(Ot).j9p.call(this),this.i9q_1.c53_1.o6k(this.j9q_1)},l(Pt).i9p=function(){l(Ot).i9p.call(this),this.l9q_1.c53_1.n6k(this.m9q_1);var t=g.g5x(34.2,-119.208,0),n=$(),i=b().j58_1,e=b().d5d(80);this.l9q_1.a58(new k(t,n,1e4,i,e,b().j58_1))},l(Pt).j9p=function(){l(Ot).j9p.call(this),this.l9q_1.c53_1.o6k(this.m9q_1)},l(Lt).i9p=function(){l(Ot).i9p.call(this),this.o9q_1.c53_1.n6k(this.p9q_1);var t=this.o9q_1.d53_1,n=b().d5d(30),i=b().d5d(-115);t.v5u(n,i,1.1*this.o9q_1.u53(),$(),b().j58_1,b().j58_1,b().j58_1)},l(Lt).j9p=function(){l(Ot).j9p.call(this),this.o9q_1.c53_1.o6k(this.p9q_1)},l(Ft).i9p=function(){l(Ot).i9p.call(this),this.r9q_1.c53_1.n6k(this.s9q_1);var t=this.r9q_1.d53_1,n=b().d5d(30),i=b().d5d(-85);t.v5u(n,i,1.1*this.r9q_1.u53(),$(),b().j58_1,b().j58_1,b().j58_1)},l(Ft).j9p=function(){l(Ot).j9p.call(this),this.r9q_1.c53_1.o6k(this.s9q_1)},l(Ut).i9p=function(){l(Ot).i9p.call(this),this.u9q_1.c53_1.n6k(this.v9q_1)},l(Ut).j9p=function(){l(Ot).j9p.call(this),this.u9q_1.c53_1.o6k(this.v9q_1)},l(Ht).i9p=function(){l(Ot).i9p.call(this),this.x9q_1.c53_1.n6k(this.y9q_1);var t=b().d5d(46.23),n=b().d5d(-122.19),i=new B(t,n,500),e=$(),r=b().d5d(45),s=b().d5d(70),o=b().d5d(0);this.x9q_1.a58(new k(i,e,15e3,r,s,o))},l(Ht).j9p=function(){l(Ot).j9p.call(this),this.x9q_1.c53_1.o6k(this.y9q_1)},l(Vt).i9p=function(){l(Ot).i9p.call(this),this.a9r_1.c53_1.n6k(this.b9r_1);var t=this.a9r_1.d53_1,n=b().d5d(37.46543388598137),i=b().d5d(14.97980511744455);t.v5u(n,i,4e5,$(),b().j58_1,b().j58_1,b().j58_1)},l(Vt).j9p=function(){l(Ot).j9p.call(this),this.a9r_1.c53_1.o6k(this.b9r_1)},l(Bt).i9p=function(){l(Ot).i9p.call(this);for(var t=this.d9r_1.y52_1.b55_1,n=t.v();n.w();)n.y().d6a(!1);t.t69(this.e9r_1),function(t){var n=g.g5x(46.852886,-121.760374,4392),i=g.g5x(46.912,-121.527,2e3),e=i.s5v(n),r=n.t5v(i)*t.d9r_1.y52_1.f69(n.b54_1,n.c54_1),s=b(),o=r/i.f54_1,u=Math.atan(o),a=s.i59(u);t.d9r_1.d53_1.v5u(i.b54_1,i.c54_1,i.f54_1,$(),e,a,b().j58_1)}(this)},l(Bt).j9p=function(){l(Ot).j9p.call(this);var t=this.d9r_1.y52_1.b55_1;t.u69(this.e9r_1);for(var n=t.v();n.w();)n.y().d6a(!0)},l(Yt).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=m,i.cc_1=null,i.mc()},l(Yt).zc=function(t,n){return this.v1g(null!=t&&J(t,X)?t:h(),n)},l(Yt).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.ac_1=2,this.zb_1=1,(t=Z().h7o("https://neo.gsfc.nasa.gov/wms/wms",Q("MOD_LSTD_CLIM_M"),tt,tt,this))===nt())return t;continue t;case 1:var n=t;et(this.o9r_1)&&(this.n9r_1.s9r_1=n,this.n9r_1.q9r_1.c53_1.n6k(n),it().w52()),rt.v5o(rt.k54_1,"WMS layer creation succeeded"),this.ac_1=3,this.zb_1=4;continue t;case 2:if(this.ac_1=3,this.cc_1 instanceof Error){var i=this.cc_1;rt.u9o(rt.i54_1,"WMS layer creation failed",i),this.zb_1=4;continue t}throw this.cc_1;case 3:throw this.cc_1;case 4:return this.ac_1=3,m}}catch(t){var e=t;if(3===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},l(Yt).w1g=function(t,n){var i=new Yt(this.n9r_1,n);return i.o9r_1=t,i},l(Wt).i9p=function(){var t,n;l(Ot).i9p.call(this),this.t9r_1=st(this.r9r_1,tt,tt,(t=new Yt(this,null),(n=function(n,i){return t.v1g(n,i)}).$arity=1,n));var i=this.q9r_1.d53_1;i.v53_1.f54_1=1.1*this.q9r_1.u53(),i.x53_1=b().j58_1,i.y53_1=b().j58_1,i.z53_1=b().j58_1},l(Wt).j9p=function(){l(Ot).j9p.call(this);var t=this.t9r_1;null==t||t.in();var n=this.s9r_1;null==n||this.q9r_1.c53_1.o6k(n),this.s9r_1=null},l(Gt).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=m,i.cc_1=null,i.mc()},l(Gt).zc=function(t,n){return this.v1g(null!=t&&J(t,X)?t:h(),n)},l(Gt).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.ac_1=2,this.zb_1=1,(t=ot().o7u("https://tiles.geoservice.dlr.de/service/wmts","hillshade",tt,tt,this))===nt())return t;continue t;case 1:var n=t;et(this.d9s_1)&&(this.c9s_1.h9s_1=n,this.c9s_1.f9s_1.c53_1.n6k(n),it().w52()),rt.v5o(rt.k54_1,"WMTS layer creation succeeded"),this.ac_1=3,this.zb_1=4;continue t;case 2:if(this.ac_1=3,this.cc_1 instanceof Error){var i=this.cc_1;rt.u9o(rt.i54_1,"WMTS layer creation failed",i),this.zb_1=4;continue t}throw this.cc_1;case 3:throw this.cc_1;case 4:return this.ac_1=3,m}}catch(t){var e=t;if(3===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},l(Gt).w1g=function(t,n){var i=new Gt(this.c9s_1,n);return i.d9s_1=t,i},l(Kt).i9p=function(){var t,n;l(Ot).i9p.call(this),this.i9s_1=st(this.g9s_1,tt,tt,(t=new Gt(this,null),(n=function(n,i){return t.v1g(n,i)}).$arity=1,n));var i=this.f9s_1.d53_1;i.v53_1.f54_1=1.1*this.f9s_1.u53(),i.x53_1=b().j58_1,i.y53_1=b().j58_1,i.z53_1=b().j58_1},l(Kt).j9p=function(){l(Ot).j9p.call(this);var t=this.i9s_1;null==t||t.in();var n=this.h9s_1;null==n||this.f9s_1.c53_1.o6k(n),this.h9s_1=null},l(nn).u68=function(t){return J(t,pt)},l(nn).x68=function(t){return J(t,pt)},l(nn).q68=mt,l(nn).r68=gt,l(nn).s68=bt,l(nn).t68=$t,l(nn).v68=yt,l(nn).w68=kt,l(nn).y68=xt,l(nn).z68=St,function(t){var n=t.earth||(t.earth={}),i=n.worldwind||(n.worldwind={});(i.tutorials||(i.tutorials={})).main=Xt}(t),Xt(),t})?e.apply(n,r):e)||(t.exports=s)},585:function(t,n,i){var e,r,s;r=[n,i(426),i(675),i(453),i(485),i(755),i(800),i(639),i(787),i(997),i(229),i(931),i(852)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,o,u,a,h,_,l,c,f){"use strict";var v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt,ct,ft,vt,dt,wt,pt,mt,gt,bt,$t,yt,kt,xt,St,Et,Ct,qt,Ot,zt,At,Tt,It,Dt,jt,Mt,Nt,Rt,Pt,Lt,Ft,Ut,Ht,Vt,Bt,Yt,Wt,Gt,Kt,Xt,Jt,Zt,Qt,tn,nn,en,rn,sn,on,un,an,hn,_n,ln,cn,fn,vn,dn,wn,pn,mn,gn,bn,$n,yn,kn,xn,Sn,En,Cn,qn,On,zn,An,Tn,In,Dn,jn,Mn,Nn,Rn,Pn,Ln,Fn,Un,Hn,Vn,Bn,Yn,Wn,Gn,Kn,Xn,Jn,Zn,Qn,ti,ni,ii,ei,ri,si,oi,ui,ai,hi,_i,li,ci,fi,vi,di,wi,pi,mi,gi,bi,$i,yi,ki,xi,Si,Ei,Ci,qi,Oi,zi,Ai,Ti,Ii,Di,ji,Mi,Ni,Ri,Pi,Li,Fi,Ui,Hi,Vi,Bi,Yi,Wi,Gi,Ki,Xi,Ji,Zi,Qi,te,ne,ie,ee,re,se,oe,ue,ae,he,_e,le,ce,fe,ve,de,we,pe,me,ge,be,$e,ye,ke,xe,Se,Ee,Ce,qe,Oe,ze,Ae,Te,Ie,De,je,Me,Ne,Re,Pe,Le,Fe,Ue,He,Ve,Be,Ye,We,Ge,Ke,Xe,Je,Ze,Qe,tr,nr,ir,er,rr,sr,or,ur,ar,hr,_r,lr,cr,fr,vr,dr,wr,pr,mr,gr,br,$r,yr,kr,xr,Sr,Er,Cr,qr,Or,zr,Ar,Tr=Math.imul,Ir=Math.sign,Dr=Math.log10,jr=Math.sinh,Mr=n.$_$.c,Nr=e.$_$.fg,Rr=n.$_$.d,Pr=e.$_$.gb,Lr=e.$_$.fb,Fr=e.$_$.hb,Ur=n.$_$.a,Hr=e.$_$.yf,Vr=r.$_$.b,Br=e.$_$.w9,Yr=e.$_$.f,Wr=e.$_$.ob,Gr=e.$_$.lb,Kr=e.$_$.v,Xr=e.$_$.a5,Jr=e.$_$.f7,Zr=s.$_$.o,Qr=s.$_$.p,ts=e.$_$.ha,ns=r.$_$.c,is=e.$_$.t1,es=e.$_$.vf,rs=e.$_$.d5,ss=e.$_$.qa,os=e.$_$.vg,us=e.$_$.zb,as=e.$_$.mb,hs=e.$_$.ba,_s=e.$_$.m,ls=e.$_$.t6,cs=e.$_$.u6,fs=e.$_$.x1,vs=e.$_$.x,ds=e.$_$.sf,ws=e.$_$.x9,ps=e.$_$.q5,ms=e.$_$.f8,gs=e.$_$.n6,bs=e.$_$.d,$s=(e.$_$.l4,e.$_$.uf),ys=e.$_$.zg,ks=e.$_$.bb,xs=e.$_$.ab,Ss=e.$_$.z9,Es=e.$_$.da,Cs=e.$_$.pf,qs=e.$_$.ic,Os=e.$_$.hc,zs=e.$_$.s6,As=e.$_$.n9,Ts=e.$_$.eb,Is=e.$_$.jh,Ds=e.$_$.q7,js=r.$_$.a,Ms=r.$_$.k,Ns=e.$_$.a6,Rs=e.$_$.c6,Ps=e.$_$.jb,Ls=e.$_$.p6,Fs=e.$_$.nb,Us=e.$_$.cb,Hs=e.$_$.t9,Vs=e.$_$.z2,Bs=e.$_$.zc,Ys=e.$_$.fa,Ws=e.$_$.ch,Gs=e.$_$.hh,Ks=e.$_$.k9,Xs=s.$_$.x,Js=e.$_$.w8,Zs=e.$_$.s4,Qs=e.$_$.h,to=e.$_$.mf,no=s.$_$.b1,io=s.$_$.e1,eo=e.$_$.ac,ro=s.$_$.l1,so=e.$_$.cc,oo=e.$_$.l8,uo=(e.$_$.m4,e.$_$.c2),ao=e.$_$.u8,ho=e.$_$.c,_o=e.$_$.dh,lo=e.$_$.e8,co=e.$_$.e,fo=e.$_$.kb,vo=e.$_$.bh,wo=e.$_$.kc,po=e.$_$.ea,mo=e.$_$.p,go=e.$_$.m5,bo=e.$_$.o7,$o=e.$_$.yb,yo=e.$_$.sb,ko=e.$_$.w5,xo=e.$_$.l,So=e.$_$.ge,Eo=e.$_$.u9,Co=e.$_$.r7,qo=e.$_$.me,Oo=e.$_$.cg,zo=e.$_$.k5,Ao=e.$_$.bd,To=e.$_$.n,Io=e.$_$.vb,Do=e.$_$.id,jo=e.$_$.f1,Mo=e.$_$.re,No=e.$_$.r2,Ro=e.$_$.q4,Po=e.$_$.zd,Lo=e.$_$.fe,Fo=o.$_$.g2,Uo=o.$_$.t,Ho=o.$_$.s,Vo=o.$_$.e,Bo=o.$_$.b2,Yo=o.$_$.c2,Wo=o.$_$.j2,Go=o.$_$.z1,Ko=o.$_$.r,Xo=e.$_$.ga,Jo=u.$_$.a,Zo=e.$_$.sg,Qo=e.$_$.a,tu=o.$_$.v2,nu=o.$_$.p2,iu=e.$_$.wb,eu=e.$_$.d6,ru=e.$_$.ub,su=a.$_$.a,ou=s.$_$.j,uu=s.$_$.c,au=h.$_$.d,hu=h.$_$.e,_u=h.$_$.c,lu=_.$_$.f,cu=h.$_$.f,fu=h.$_$.a,vu=l.$_$.u,du=c.$_$.a,wu=e.$_$.q8,pu=e.$_$.p8,mu=e.$_$.ae,gu=e.$_$.d1,bu=e.$_$.te,$u=e.$_$.bg,yu=c.$_$.d,ku=c.$_$.e,xu=o.$_$.w,Su=o.$_$.q,Eu=e.$_$.p5,Cu=e.$_$.x5,qu=c.$_$.f,Ou=o.$_$.p,zu=e.$_$.ca,Au=c.$_$.b,Tu=e.$_$.n7,Iu=e.$_$.u7,Du=o.$_$.e2,ju=e.$_$.r6,Mu=c.$_$.c,Nu=e.$_$.oa,Ru=e.$_$.n4,Pu=(e.$_$.o4,e.$_$.db),Lu=e.$_$.r8,Fu=e.$_$.tb,Uu=e.$_$.j8,Hu=e.$_$.p9,Vu=e.$_$.p2,Bu=e.$_$.y6,Yu=e.$_$.g8,Wu=r.$_$.m,Gu=e.$_$.pb,Ku=e.$_$.w2,Xu=e.$_$.de,Ju=e.$_$.nd,Zu=e.$_$.cd,Qu=e.$_$.r9,ta=e.$_$.ee,na=r.$_$.l,ia=r.$_$.j,ea=r.$_$.i,ra=e.$_$.bf,sa=e.$_$.ve,oa=e.$_$.ne,ua=r.$_$.h,aa=r.$_$.g,ha=r.$_$.f,_a=r.$_$.e,la=r.$_$.d,ca=e.$_$.i2,fa=e.$_$.eh,va=h.$_$.g,da=h.$_$.b,wa=f.$_$.a,pa=e.$_$.gh,ma=e.$_$.ya,ga=e.$_$.xa,ba=e.$_$.qb,$a=e.$_$.dc,ya=e.$_$.ag,ka=e.$_$.a7,xa=e.$_$.za,Sa=e.$_$.of,Ea=s.$_$.a,Ca=e.$_$.p4,qa=e.$_$.jd,Oa=e.$_$.pg,za=e.$_$.sa,Aa=e.$_$.af,Ta=n.$_$.b,Ia=e.$_$.fh;function Da(){v=this,this.c51_1=new Mr;var t=i(257),n=null!=t&&"string"==typeof t?t:Nr();this.d51_1=Rr("sun_texture.png",n);var e=i(926),r=null!=e&&"string"==typeof e?e:Nr();this.e51_1=Rr("dnb_land_ocean_ice_2012.png",r);var s=i(709),o=null!=s&&"string"==typeof s?s:Nr();this.f51_1=Rr("worldwind_worldtopobathy2004053.png",o)}function ja(){return null==v&&new Da,v}function Ma(){d=this,this.g51_1=new Mr;var t=i(735);this.h51_1=new Ur(null!=t&&"string"==typeof t?t:Nr())}function Na(t){this.i51_1=t,this.j51_1=new Hr(20,0),this.k51_1=3e3,this.l51_1=y_(),this.m51_1=null,this.n51_1=null,this.o51_1=null,this.p51_1=null,this.q51_1=Vr().b3k_1,this.r51_1=0,this.s51_1=Vr().b3k_1,this.t51_1=0,this.u51_1=0}function Ra(){}function Pa(t,n,i,e){i=i===Yr?null:i,e=e===Yr?null:e,this.e52_1=t,this.f52_1=n,this.g52_1=i,this.h52_1=e,this.i52_1=!1}function La(t){return t.toString()}function Fa(){this.l52_1=Kr()}function Ua(){}function Ha(){}function Va(){m=this,this.t52_1=10,this.u52_1=Zr(Yr,1),this.v52_1=Qr(this.u52_1)}function Ba(){return null==m&&new Va,m}function Ya(){}function Wa(t,n,i,e,r,s){Ba(),i=i===Yr?new tc:i,e=e===Yr?new dc:e,r=r===Yr?new Th:r,s=s===Yr?null:s,this.x52_1=n,this.y52_1=i,this.z52_1=e,this.a53_1=r,this.b53_1=s,this.c53_1=new yc,this.d53_1=new __,this.e53_1=new Na(this),this.f53_1=rl(),this.g53_1=!0,this.h53_1=1,this.i53_1=1,this.j53_1=16e4,this.k53_1=new wb,this.l53_1=new Xa(t),this.m53_1=0,this.n53_1=z_(),this.o53_1=z_(),this.p53_1=il(),this.q53_1=w_();var o=b_().t53(ns().o3l()),u=1.1*this.u53();this.d53_1.v53_1.g54(o.b54_1,o.c54_1,u)}function Ga(){}function Ka(){this.g5d_1=Ql(),this.h5d_1=Y_(),this.i5d_1=il(),this.j5d_1=V_(),this.k5d_1=V_(),this.l5d_1=null,this.m5d_1=null,this.n5d_1=null,this.o5d_1=null,this.p5d_1=null}function Xa(t){this.m55_1=t,this.n55_1=il(),this.o55_1=rl(),this.p55_1=z_(),this.q55_1=z_(),this.r55_1=z_(),this.s55_1=z_(),this.t55_1=null,this.u55_1=null,this.v55_1=null,this.w55_1=null,this.x55_1=null,this.y55_1=!1,this.z55_1=uE().r5e_1,this.a56_1=KS().s5e_1,this.b56_1=tx();for(var n=0,i=hs(Array(32),null);n<32;)i[n]=rE().t5e_1,n=n+1|0;this.c56_1=i,this.d56_1=nE().u5e_1,this.e56_1=nE().u5e_1,this.f56_1=null,this.g56_1=null,this.h56_1=new Int8Array(4),this.i56_1=new Int8Array(4),this.j56_1=new kb(Rk(),Te),this.k56_1=_s()}function Ja(){this.y5g_1=4}function Za(){this.z5g_1=0,this.a5h_1=0,this.b5h_1=0,this.c5h_1=0,this.d5h_1=eb(),this.e5h_1=1,this.f5h_1=0,this.g5h_1=null,this.h5h_1=E_(),this.i5h_1=new Qa}function Qa(){this.j5h_1=0,this.k5h_1=0}function th(){this.l5h_1=null,this.m5h_1=null,this.n5h_1=null,this.o5h_1=il(),this.p5h_1=0,this.q5h_1=!0,this.r5h_1=!0,this.s5h_1=!0,this.t5h_1=0,this.u5h_1=eb(),this.v5h_1=1,this.w5h_1=1,this.x5h_1=null,this.y5h_1=E_(),this.z5h_1=new Qa,this.a5i_1=0;for(var t=0,n=hs(Array(4),null);t<4;)n[t]=new Za,t=t+1|0;this.b5i_1=n}function nh(){if(k)return Xr;k=!0,b=new ih("BACKGROUND",0),$=new ih("SURFACE",1),y=new ih("SHAPE",2),new ih("SCREEN",3)}function ih(t,n){ds.call(this,t,n)}function eh(){return nh(),b}function rh(){return nh(),$}function sh(){}function oh(){this.n5i_1=new Float32Array(2);for(var t=0,n=hs(Array(5),null);t<5;)n[t]=eb(),t=t+1|0;this.o5i_1=n,this.p5i_1=1,this.q5i_1=Ql(),this.r5i_1=null,this.s5i_1=null}function uh(){}function ah(){this.t5j_1=new Float32Array(6),this.u5j_1=z_(),this.v5j_1=eb(),this.w5j_1=1,this.x5j_1=1,this.y5j_1=!0,this.z5j_1=null,this.a5k_1=null}function hh(){this.a5l_1=12}function _h(){this.b5l_1=null,this.c5l_1=eh(),this.d5l_1=0,this.e5l_1=0}function lh(t){this.g5l_1=t}function ch(t,n){var i=os(t).c5l_1.w9(os(n).c5l_1);return 0===i&&(i=ws(t.d5l_1,n.d5l_1)),0===i&&(i=ws(t.e5l_1,n.e5l_1)),i}function fh(){this.w5e_1=0,this.x5e_1=0;var t=this.w5e_1;this.y5e_1=hs(Array(t),null);var n=ch;this.z5e_1=new lh(n)}function vh(){}function dh(){this.m5l_1=z_(),this.n5l_1=eb(),this.o5l_1=1,this.p5l_1=!0,this.q5l_1=null,this.r5l_1=null,this.s5l_1=null,this.t5l_1=z_()}function wh(){}function ph(){this.b5m_1=new th,this.c5m_1=null,this.d5m_1=z_()}function mh(){}function gh(){this.k5m_1=z_(),this.l5m_1=0,this.m5m_1=new ub(0,0,0,0),this.n5m_1=new ub(0,0,0,0),this.o5m_1=null,this.p5m_1=null,this.q5m_1=z_(),this.r5m_1=z_(),this.s5m_1=z_(),this.t5m_1=[z_().u5m(0,0,1,Uh().l58_1).z5c(1,0,0,Uh().k58_1),z_().u5m(0,0,1,Uh().k58_1).z5c(1,0,0,Uh().k58_1),z_().u5m(1,0,0,Uh().k58_1),z_().u5m(0,0,1,Uh().m58_1).z5c(1,0,0,Uh().k58_1),z_()]}function bh(){this.q5n_1=0}function $h(){this.s5n_1=z_(),this.t5n_1=0,this.u5n_1=0,this.v5n_1=0,this.w5n_1=0,this.x5n_1=!1,this.y5n_1=0,this.z5n_1=null,this.a5o_1=null,this.b5o_1=null,this.c5o_1=null,this.d5o_1=null}function yh(){}function kh(){this.x5o_1=eb(),this.y5o_1=1,this.z5o_1=null,this.a5p_1=null,this.b5p_1=z_()}function xh(){}function Sh(){this.d5p_1=Ql(),this.e5p_1=Y_(),this.f5p_1=new th,this.g5p_1=null,this.h5p_1=z_(),this.i5p_1=z_(),this.j5p_1=E_(),this.k5p_1=eb(),this.l5p_1=1}function Eh(){}function Ch(t,n){var i=t.d5q_1;return!0===(null==i?null:i.z5l(n))}function qh(){this.x5p_1=Ql(),this.y5p_1=Y_(),this.z5p_1=Y_(),this.a5q_1=eb(),this.b5q_1=1,this.c5q_1=E_(),this.d5q_1=null,this.e5q_1=null,this.f5q_1=null}function Oh(){}function zh(){}function Ah(){this.h5r_1=eb(),this.i5r_1=1,this.j5r_1=null,this.k5r_1=null,this.l5r_1=z_(),this.m5r_1=z_()}function Th(){this.o5r_1=Kr(),this.p5r_1=eb(),this.q5r_1=il(),this.r5r_1=L_(),this.s5r_1=new a_,this.t5r_1=Y_().w5r(),this.u5r_1=il(),this.v5r_1=w_()}function Ih(){}function Dh(){this.x59_1=rl(),this.y59_1=z_(),this.z59_1=z_(),this.a5a_1=new fh,this.b5a_1=new fh,this.c5a_1=null,this.d5a_1=null,this.e5a_1=null,this.f5a_1=null,this.g5a_1=null,this.h5a_1=!1,this.i5a_1=null}function jh(){if(M)return Xr;M=!0,D=new Mh("ABSOLUTE",0),j=new Mh("CLAMP_TO_GROUND",1),new Mh("RELATIVE_TO_GROUND",2)}function Mh(t,n){ds.call(this,t,n)}function Nh(){return jh(),D}function Rh(){return jh(),j}function Ph(t){if(ys(t)){var n=kr.n54(kr.i54_1,"Angle","init","NaN is not supported!");throw is(Gr(n))}return t}function Lh(t){return Uh().l5t(t)}function Fh(){N=this,this.j58_1=this.d5d(0),this.k58_1=this.d5d(90),this.l58_1=this.d5d(-90),this.m58_1=this.d5d(180),this.n58_1=this.d5d(-180),this.o58_1=this.d5d(360),this.p58_1=this.d5d(-360);this.q58_1=this.d5d(.016666666666666666);this.r58_1=this.d5d(.0002777777777777778),this.s58_1=.017453292519943295,this.t58_1=57.29577951308232,this.u58_1=60,this.v58_1=.016666666666666666,this.w58_1=3600,this.x58_1=.0002777777777777778,this.y58_1=.017453292519943295,this.z58_1=57.29577951308232,this.a59_1=17.77777777777778,this.b59_1=.05625,this.c59_1=16.666666666666668,this.d59_1=.06,this.e59_1=17.5,this.f59_1=.06,this.g59_1=60,this.h59_1=.016666666666666666}function Uh(){return null==N&&new Fh,N}function Hh(t,n){return Uh().d5d(t+n)}function Vh(t,n){return Uh().d5d(t+n)}function Bh(t,n){return Uh().i59(Lh(t)+n)}function Yh(t,n){return Uh().d5d(t-n)}function Wh(t,n){return Uh().d5d(t-n)}function Gh(t,n){if(Ss(n,0)){var i=kr.n54(kr.i54_1,"Angle","div","divideByZero");throw is(Gr(i))}return Uh().d5d(t/xs(n))}function Kh(t){return Ph(-t)}function Xh(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Uh(),e=Uh().o5t(t);n=i.d5d(e)}return n}function Jh(t){var n;if(-90<=t&&t<=90)n=t;else{var i=Uh(),e=Uh().q5t(t);n=i.d5d(e)}return n}function Zh(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Uh(),e=Uh().r5t(t);n=i.d5d(e)}return n}function Qh(t){var n=Uh(),i=us(t,-90,90);return n.d5d(i)}function t_(t){var n=Uh(),i=us(t,-180,180);return n.d5d(i)}function n_(t,n){return ws(t,n)}function i_(t){return Es(t)}function e_(t){Uh(),this.x5t_1=t}function r_(t,n,i,e,r,s,o,u){var a=u.i58(n);i[0]>a&&(i[0]=a),i[1]h&&(r[0]=h),r[1]_&&(o[0]=_),o[1]<_&&(o[1]=_)}function s_(t,n,i,e,r){n.z5t(e);var s=i[0];i[0]=r[0],r[0]=s,s=i[1],i[1]=r[1],r[1]=s}function o_(t,n){var i=n.a5u_1,e=t.e5s_1.i58(i),r=Math.abs(e),s=t.f5s_1.i58(i),o=.5*(r+Math.abs(s)),u=n.i58(t.h5s_1),a=u<=-o,h=n.i58(t.i5s_1)<=-o;if(a&&h)return-1;if(a===h)return 0;var _=(o+u)/(i.g57_1*(t.h5s_1.g57_1-t.i5s_1.g57_1)+i.h57_1*(t.h5s_1.h57_1-t.i5s_1.h57_1)+i.k57_1*(t.h5s_1.k57_1-t.i5s_1.k57_1)),l=(t.i5s_1.g57_1-t.h5s_1.g57_1)*_+t.h5s_1.g57_1,c=(t.i5s_1.h57_1-t.h5s_1.h57_1)*_+t.h5s_1.h57_1,f=(t.i5s_1.k57_1-t.h5s_1.k57_1)*_+t.h5s_1.k57_1;return a?t.h5s_1.u5f(l,c,f):t.i5s_1.u5f(l,c,f),_}function u_(){this.c5u_1=3,this.d5u_1=3}function a_(){this.a5s_1=new el(0,0,0),this.b5s_1=new el(-.5,0,0),this.c5s_1=new el(.5,0,0),this.d5s_1=new el(1,0,0),this.e5s_1=new el(0,1,0),this.f5s_1=new el(0,0,1),this.g5s_1=Math.sqrt(3),this.h5s_1=il(),this.i5s_1=il(),this.j5s_1=new Float32Array(9),this.k5s_1=new Float32Array(27),this.l5s_1=-1}function h_(){this.p5u_1=il(),this.q5u_1=1,this.r5u_1=-1}function __(){this.v53_1=L_(),this.w53_1=Nh(),this.x53_1=Uh().j58_1,this.y53_1=Uh().j58_1,this.z53_1=Uh().j58_1,this.a54_1=Uh().d5d(45)}function l_(){R=this,this.w5u_1=new f_(6378137,298.257223563),this.x5u_1=new f_(6378245,298.3)}function c_(){return null==R&&new l_,R}function f_(t,n){c_(),this.y5u_1=t,this.z5u_1=n}function v_(){return t=Ts(Pr(d_)),d_.call(t),t;var t}function d_(){this.b5c_1=R_(1,0,0,1),this.c5c_1=R_(-1,0,0,1),this.d5c_1=R_(0,1,0,1),this.e5c_1=R_(0,-1,0,1),this.f5c_1=R_(0,0,-1,1),this.g5c_1=R_(0,0,1,1),this.h5c_1=new sl(0,0,1,1),this.i5c_1=[this.f5c_1,this.g5c_1,this.b5c_1,this.c5c_1,this.e5c_1,this.d5c_1],this.j5c_1=z_()}function w_(){return t=Ts(Pr(p_)),p_.call(t),t;var t}function p_(){this.y56_1=il(),this.z56_1=il()}function m_(){return t=Ts(Pr($_)),$_.call(t,Uh().j58_1,Uh().j58_1),t;var t}function g_(){P=this,this.r53_1=1e-15,this.s53_1=Ds([Is(-12,-45),Is(-11,-30),Is(-10,20),Is(-9,45),Is(-8,40),Is(-7,35),Is(-6,30),Is(-5,25),Is(-4,-15),Is(-3,0),Is(-2,45),Is(-1,30),Is(0,30),Is(1,20),Is(2,20),Is(3,25),Is(4,30),Is(5,35),Is(6,30),Is(7,25),Is(8,-30),Is(9,-30),Is(10,-30),Is(11,-45),Is(12,-45)])}function b_(){return null==P&&new g_,P}function $_(t,n){b_(),this.b54_1=t,this.c54_1=n}function y_(){return t=Ts(Pr(k_)),k_.call(t,L_(),Nh(),0,Uh().j58_1,Uh().j58_1,Uh().j58_1),t;var t}function k_(t,n,i,e,r,s){this.l57_1=t,this.m57_1=n,this.n57_1=i,this.o57_1=e,this.p57_1=r,this.q57_1=s}function x_(){L=this,this.a5w_1=new Float64Array([1,0,0,0,1,0,0,0,1])}function S_(){return null==L&&new x_,L}function E_(){return t=Ts(Pr(C_)),n=S_().a5w_1.slice(),C_.call(t,n),t;var t,n}function C_(t){S_(),this.d5i_1=t}function q_(){F=this,this.f5w_1=1e-8,this.g5w_1=1e-20,this.h5w_1=1e-10,this.i5w_1=32,this.j5w_1=new Float64Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function O_(){return null==F&&new q_,F}function z_(){return t=Ts(Pr(A_)),n=O_().j5w_1.slice(),A_.call(t,n),t;var t,n}function A_(t){O_(),this.a57_1=t}function T_(t){return function(t,n){return D_.call(n,t.r5w_1,t.s5w_1,t.t5w_1,t.u5w_1),n}(t,Ts(Pr(D_)))}function I_(){}function D_(t,n,i,e){this.r5w_1=t,this.s5w_1=n,this.t5w_1=i,this.u5w_1=e}function j_(t,n){ds.call(this,t,n)}function M_(){return function(){if(V)return Xr;V=!0,H=new j_("FRACTION",0),new j_("INSET_PIXELS",1),new j_("PIXELS",2)}(),H}function N_(){this.d5x_1=1e-10}function R_(t,n,i,e){return function(t,n,i,e,r){return P_.call(r),r.d5v(t,n,i,e),r}(t,n,i,e,Ts(Pr(P_)))}function P_(){this.a5u_1=new el(0,0,1),this.b5u_1=0}function L_(){return t=Ts(Pr(H_)),H_.call(t,Uh().j58_1,Uh().j58_1,0),t;var t}function F_(t){return function(t,n){return H_.call(n,t.b54_1,t.c54_1,t.f54_1),n}(t,Ts(Pr(H_)))}function U_(){}function H_(t,n,i){$_.call(this,t,n),this.f54_1=i}function V_(){return t=Ts(Pr(B_)),B_.call(t,0,0),t;var t}function B_(t,n){this.m5e_1=t,this.n5e_1=n}function Y_(){return t=Ts(Pr(K_)),K_.call(t,Uh().j58_1,Uh().j58_1,Uh().j58_1,Uh().j58_1),t;var t}function W_(t){return function(t,n){return K_.call(n,t.o5p_1,t.p5p_1,t.q5p_1,t.r5p_1),n}(t,Ts(Pr(K_)))}function G_(){}function K_(t,n,i,e){this.o5p_1=t,this.p5p_1=n,this.q5p_1=i,this.r5p_1=e}function X_(t,n,i,e,r,s){this.v5x_1=t,this.w5x_1=n,this.x5x_1=i,this.y5x_1=e,this.z5x_1=r,this.a5y_1=s}function J_(){return t=Ts(Pr(Q_)),Q_.call(t,Y_(),Ls()),t;var t}function Z_(){}function Q_(t,n){this.g5y_1=t,this.h5y_1=n}function tl(){return t=Ts(Pr(nl)),nl.call(t,0,0),t;var t}function nl(t,n){this.g57_1=t,this.h57_1=n}function il(){return t=Ts(Pr(el)),el.call(t,0,0,0),t;var t}function el(t,n,i){nl.call(this,t,n),this.k57_1=i}function rl(){return t=Ts(Pr(sl)),sl.call(t,0,0,0,0),t;var t}function sl(t,n,i,e){this.g55_1=t,this.h55_1=n,this.i55_1=i,this.j55_1=e}function ol(){}function ul(t,n,i,e){this.f5z_1=t,this.g5z_1=n,this.h5z_1=i,this.i5z_1=e}function al(){this.j5z_1=0}function hl(){this.x5y_1=c_().x5u_1,this.y5y_1=0,this.z5y_1=0,this.a5z_1=0,this.b5z_1=0}function _l(){K=this,this.k5z_1=new cl(24.3234,-121.3708,-75.8275,0,0,0,-1.74e-9,c_().x5u_1,c_().w5u_1),this.l5z_1=new cl(-24.3234,121.3708,75.8275,0,0,0,1.74e-9,c_().w5u_1,c_().x5u_1),this.m5z_1=new cl(23.92,-141.27,-80.9,0,0,0,0,c_().x5u_1,c_().w5u_1),this.n5z_1=new cl(-23.92,141.27,80.9,0,0,0,0,c_().w5u_1,c_().x5u_1)}function ll(){return null==K&&new _l,K}function cl(t,n,i,e,r,s,o,u,a){ll(),this.o5z_1=t,this.p5z_1=n,this.q5z_1=i,this.r5z_1=e,this.s5z_1=r,this.t5z_1=s,this.u5z_1=o,this.v5z_1=u,this.w5z_1=a}function fl(){}function vl(){if(Q)return Xr;Q=!0,J=new dl("N",0),Z=new dl("S",1)}function dl(t,n){ds.call(this,t,n)}function wl(){return vl(),J}function pl(){return vl(),Z}function ml(){}function gl(t,n,i){this.q60_1=t,this.r60_1=n,this.s60_1=i}function bl(){nt=this,this.t60_1=0,this.u60_1=1,this.v60_1=2,this.w60_1=4,this.x60_1=8,this.y60_1=64,this.z60_1=128,this.a61_1=512,this.b61_1=1024,this.c61_1=4096,this.d61_1=8192,this.e61_1=1.5707963267948966,this.f61_1=5,this.g61_1=-1.3962634015954636,this.h61_1=1.4660765716752369,this.i61_1=.017453292519943295,this.j61_1=57.29577951308232,this.k61_1=0,this.l61_1=4e6,this.m61_1=2e6,this.n61_1=1e5,this.o61_1="CC",this.p61_1="CD",this.q61_1="BR",this.r61_1="BN",this.s61_1=0,this.t61_1=1,this.u61_1=2,this.v61_1=3,this.w61_1=4,this.x61_1=5,this.y61_1=6,this.z61_1=7,this.a62_1=8,this.b62_1=9,this.c62_1=10,this.d62_1=11,this.e62_1=12,this.f62_1=13,this.g62_1=14,this.h62_1=15,this.i62_1=16,this.j62_1=17,this.k62_1=18,this.l62_1=19,this.m62_1=20,this.n62_1=21,this.o62_1=22,this.p62_1=23,this.q62_1=24,this.r62_1=25,this.s62_1=3,this.t62_1="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var t=new Int32Array([0,9,25,25,8e5,8e5]),n=new Int32Array([1,0,17,25,2e6,8e5]),i=new Int32Array([24,9,25,15,8e5,13e5]);this.u62_1=[t,n,i,new Int32Array([25,0,9,15,2e6,13e5])];var e=new Float64Array([2,11e5,-72,-80.5,0]),r=new Float64Array([3,2e6,-64,-72,2e6]),s=new Float64Array([4,28e5,-56,-64,2e6]),o=new Float64Array([5,37e5,-48,-56,2e6]),u=new Float64Array([6,46e5,-40,-48,4e6]),a=new Float64Array([7,55e5,-32,-40,4e6]),h=new Float64Array([9,64e5,-24,-32,6e6]),_=new Float64Array([10,73e5,-16,-24,6e6]),l=new Float64Array([11,82e5,-8,-16,8e6]),c=new Float64Array([12,91e5,0,-8,8e6]),f=new Float64Array([13,0,8,0,0]),v=new Float64Array([15,8e5,16,8,0]),d=new Float64Array([16,17e5,24,16,0]),w=new Float64Array([17,26e5,32,24,2e6]),p=new Float64Array([18,35e5,40,32,2e6]),m=new Float64Array([19,44e5,48,40,4e6]),g=new Float64Array([20,53e5,56,48,4e6]),b=new Float64Array([21,62e5,64,56,6e6]),$=new Float64Array([22,7e6,72,64,6e6]);this.v62_1=[e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,new Float64Array([23,79e5,84.5,72,6e6])]}function $l(){return null==nt&&new bl,nt}function yl(t,n,i,e,r,s){var o,u,a=e,h=r,_=new Int32Array(3),l=5-s|0,c=Math.pow(10,l);a=kl(0,a/c)*c,h=kl(0,h/c)*c,function(t,n){var i=n%6|0;0===i&&(i=6);var e,r=0===ws(t.o60_1,"CC")||0===ws(t.o60_1,"CD")||0===ws(t.o60_1,"BR")||0===ws(t.o60_1,"BN")?0:1;switch(i){case 1:case 4:t.f60_1=0,t.g60_1=7;break;case 2:case 5:t.f60_1=9,t.g60_1=17;break;case 3:case 6:t.f60_1=18,t.g60_1=25}e=1===r?0==(i%2|0)?5e5:0:0==(i%2|0)?15e5:1e6,t.h60_1=e}(t,n);var f=function(t,n){var i=0,e=57.29577951308232*n;if(e>=72&&e<84.5)t.i60_1=23;else if(e>-80.5&&e<72){var r=(n+1.3962634015954636)/.13962634015954636+1e-12;t.i60_1=ks($l().v62_1[ks(r)][0])}else i|=1;return i}(t,i);if(_[0]=t.i60_1,0===f){for(1e7===(u=h)&&(u-=1);u>=2e6;)u-=2e6;(u+=t.h60_1)>=2e6&&(u-=2e6),_[2]=ks(u/1e5),_[2]>7&&(_[2]=_[2]+1|0),_[2]>13&&(_[2]=_[2]+1|0),o=a,21===_[0]&&31===n&&5e5===o&&(o-=1),_[1]=t.f60_1+(ks(o/1e5)-1|0)|0,9===t.f60_1&&_[1]>13&&(_[1]=_[1]+1|0),xl(t,n,_,a,h,s)}return f}function kl(t,n){var i=Math.floor(n),e=n-i,r=Us(i);return(e>.5||.5===e&&r.fb(Ps(2)).equals(new Hr(1,0)))&&(r=r.gb()),r.c6()}function xl(t,n,i,e,r,s){var o=e,u=r;t.e60_1=0!==n?Ay("%02d",[n]):" ";var a=0;if(a<=2)do{var h=a;if(a=a+1|0,i[h]<0||i[h]>26)return Xr;t.e60_1=t.e60_1+Vs(Hs("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i[h]))}while(a<=2);var _=5-s|0,l=Math.pow(10,_);(o%=1e5)>=99999.5&&(o=99999);var c=ks(o/l),f=new Bs(c.toString());if(f.a()>s)f=new Bs(f.y7(0,s-1|0));else{var v=0,d=s-f.a()|0;if(v=99999.5&&(u=99999);var w=ks(u/l),p=new Bs(w.toString());if(p.a()>s)p=new Bs(p.y7(0,s-1|0));else{var m=0,g=s-p.a()|0;if(mu&&o<=20;)o=o+1|0,Fc(0,a,e)h&&a<=20))break t;a=a+1|0;var v=_.b54_1-e,d=Ir(v),w=c.b54_1-e;d!==Ir(w)?l=c:_=c,c=Lc(0,_,l)}r=c}return null!=r&&(r=new $_(e,r.c54_1)),r}function Lc(t,n,i){var e=n.s5v(i),r=n.t5v(i);return n.u5v(e,r/2,m_())}function Fc(t,n,i){var e=n.c54_1-i,r=Math.abs(e);return r<180?r:360-r}function Uc(){St=this,this.o6r_1=Uh().d5d(-70),this.p6r_1=Uh().d5d(70)}function Hc(){return null==St&&new Uc,St}function Vc(t){Hc(),gc.call(this,t),this.y6q_1=!1,this.z6q_1=new Zc,this.a6r_1=il(),this.b6r_1=il(),this.c6r_1=0,this.d6r_1=0,this.e6r_1=0,this.f6r_1=0,this.g6r_1=null,this.h6r_1=null,this.q6r()}function Bc(t,n){D$.call(this,n),this.x6t_1=t,this.y6t_1=_s(),this.z6t_1=!0,this.a6u_1=il()}function Yc(){this.h6u_1="DrawGraticule",this.i6u_1="GraticuleLineColor",this.j6u_1="GraticuleLineWidth",this.k6u_1="GraticuleLineStyle",this.l6u_1="DrawLabels",this.m6u_1="LabelColor",this.n6u_1="LabelFont"}function Wc(){this.o6u_1=mo()}function Gc(t,n){if(null==n.y1o("DrawGraticule")){n.e2("DrawGraticule",!0)}if(null==n.y1o("GraticuleLineColor")){var i=rb(255,255,255);n.e2("GraticuleLineColor",i)}if(null==n.y1o("GraticuleLineWidth")){n.e2("GraticuleLineWidth",.5)}if(null==n.y1o("GraticuleLineStyle")){var e=(function(){if(Ct)return Xr;Ct=!0,Et=new of("SOLID",0,0,0),new of("DASHED",1,1,-32),new of("DOTTED",2,2,-13108),new of("DASH_DOTTED",3,2,-52)}(),Et);n.e2("GraticuleLineStyle",e)}if(null==n.y1o("DrawLabels")){n.e2("DrawLabels",!0)}if(null==n.y1o("LabelColor")){var r=rb(255,255,255);n.e2("LabelColor",r)}if(null==n.y1o("LabelFont")){var s=ES("arial",lb(),12);n.e2("LabelFont",s)}}function Kc(t,n,i,e){if(null!=n){var r=n.y1o("LabelColor");if(r instanceof ub){var s=Jc(0,r,e),o=new Float32Array(3);s.t6u(o);var u=o[2]<.5?1:0;i.e6t_1.c6v(s),i.e6t_1.d6v(new ub(u,u,u,s.c52_1))}(r=n.y1o("LabelFont"))instanceof CS&&i.e6t_1.e6v(r)}}function Xc(t,n,i,e,r){null!=i&&e.f6v(function(t,n,i,e){var r,s=t.k6r_1.o2(n);if(null==s){var o=function(t,n,i){var e=$$();e.g6v_1=!1,e.h6v_1=!0;var r=n.y1o("GraticuleLineColor");r instanceof ub&&e.d6v(Jc(0,r,i));var s=n.y1o("GraticuleLineWidth");null!=s&&"number"==typeof s&&(e.m6v_1=s);var o=n.y1o("GraticuleLineStyle");return o instanceof of&&o.t6v_1>0&&(e.o6v_1=MS().v6v(o.t6v_1,o.u6v_1)),e}(0,i,e);t.k6r_1.e2(n,o),r=o}else r=s;return r}(t,n,i,r))}function Jc(t,n,i){return i>=1?n:new ub(n.z51_1,n.a52_1,n.b52_1,n.c52_1*i)}function Zc(){this.i6r_1=Kr(),this.j6r_1=Kr(),this.k6r_1=Kr(),this.l6r_1=null}function Qc(t,n,i){return function(t,n,i,e){return nf.call(e,t,n,i,Uh().j58_1),e}(t,n,i,Ts(Pr(nf)))}function tf(){this.w6v_1="GridElement_Line",this.x6v_1="GridElement_LineNorth",this.y6v_1="GridElement_LineSouth",this.z6v_1="GridElement_LineWest",this.a6w_1="GridElement_LineEast",this.b6w_1="GridElement_LineNorthing",this.c6w_1="GridElement_LineEasting",this.d6w_1="GridElement_GridZoneLabel",this.e6w_1="GridElement_LongitudeLabel",this.f6w_1="GridElement_LatitudeLabel"}function nf(t,n,i,e){this.g6w_1=t,this.h6w_1=n,this.i6w_1=i,this.j6w_1=e}function ef(){}function rf(t,n){var i=_s(),e=t.p6w_1.o6w(n.r5s().s5d()),r=function(t,n){var i=t.p6w_1.m6w(n.q5p_1),e=t.p6w_1.m6w(n.r5p_1);return new sl(i,t.p6w_1.n6w(n.o5p_1),e,t.p6w_1.n6w(n.p5p_1))}(t,e),s=r.h55_1,o=r.j55_1;if(s<=o)do{var u=s;s=s+1|0;var a=r.g55_1,h=r.i55_1;if(a<=h)do{var _=a;a=a+1|0;var l,c=t.s6w_1[u][_];if(null==c){var f=t.p6w_1.k6w(t.p6w_1.l6w(u,_));t.s6w_1[u][_]=f,l=f}else l=c;var v=l;v.c6u(n)?i.s(v):v.f6u()}while(_!==h)}while(u!==o);return i}function sf(t,n,i){this.p6w_1=t,this.q6w_1=n,this.r6w_1=i;for(var e=0,r=this.q6w_1,s=hs(Array(r),null);e=3||9===t.c70_1&&t.d70_1>=4}(t)&&function(t){var n=t.a70_1.q5p_1,i=t.a70_1.o5p_1,e=_s(),r=t.a70_1.s5p()/3,s=0;if(s<=3)do{var o=s;s=s+1|0,e.s(t.b6u().h6z(new H_(i,Vh(n,o*r),0)))}while(s<=3);var u=t.b6u().y6r(e,_$());t.y6t_1.s(new nf(t.r6e_1,u,"GridElement_LineNorth",i))}(t)}function vf(t,n,i,e,r,s){e=e===Yr?"":e,r=r===Yr?0:r,s=s===Yr?0:s,Bc.call(this,t,t.g6z(n)),this.a70_1=n,this.b70_1=i,this.c70_1=r,this.d70_1=s,this.e70_1=Ot.h71(this.a70_1.l5u(),this.a70_1.m5u(),this.b70_1,e),this.f70_1=null,this.g70_1=null,this.h70_1=!0}function df(t,n,i){if(n>=88)return af().m6y_1[45];if(n<-88)return af().m6y_1[0];var e=t.j71(i);return af().m6y_1[t.k71(n)]+"-"+Gr(e<9?"0"+(e+1|0):e+1|0)}function wf(){this.y70_1=88,this.z70_1=180,this.a71_1=4,this.b71_1=6,this.c71_1=.6666666666666667,this.d71_1=.33333333333333337,this.e71_1=.16666666666666669,this.f71_1=.08333333333333334,this.g71_1=.04166666666666667}function pf(t,n,i,e,r){var s=function(t,n){var i=n*t.u70_1/1e3,e=Math.abs(i);return qo("0"+ks(e),2)}(t,"Y"===r?i:e),o=t.b6u().x6s(n,s,t.u70_1);o.e6t_1.r71(U.v5w()),o.x71("label.name",r),o.x71("label.scale.type",ks(t.u70_1)),o.x71("label.x",e*t.u70_1),o.x71("label.y",i*t.u70_1),t.y6t_1.s(Qc(t.r6e_1,o,"metric.label"))}function mf(t,n,i){null!=n&&null!=i&&bf(t,kf(t,n),kf(t,i))}function gf(t,n,i){null!=n&&bf(t,i,kf(t,n))}function bf(t,n,i){var e=t.b6u().y6r(Co([n,i]),_$());t.y6t_1.s(new nf(t.r6e_1,e,function(t){var n;return 1e3===t.u70_1?(af(),n="GK.Metric.Grid.1000x1000"):(af(),n="GK.Metric.Grid.2000x2000"),n}(t),t.r6e_1.r5p_1))}function $f(t,n,i,e,r,s,o){return Ot.l71(n.h5z_1,n.i5z_1,i.h5z_1,i.i5z_1,e,r,s,o)}function yf(t,n,i){var e=G.d5z(n,i);return t.b6u().h6z(new H_(e.f5z_1,e.g5z_1,0))}function kf(t,n){return t.b6u().h6z(new H_(n.f5z_1,n.g5z_1,0))}function xf(t,n,i,e){this.n71_1=t,this.o71_1=n,this.p71_1=i,this.q71_1=e}function Sf(){this.y71_1=1e3,this.z71_1="metric.label"}function Ef(t,n,i,e){Bc.call(this,t,n),this.u70_1=e,this.v70_1=Ot.i71(i.m5u()),this.w70_1=new xf(G.w5y(i.o5p_1,i.q5p_1,this.v70_1),G.w5y(i.o5p_1,60!==this.v70_1?i.r5p_1:Wh(i.r5p_1,1e-12),this.v70_1),G.w5y(i.p5p_1,60!==this.v70_1?i.r5p_1:Wh(i.r5p_1,1e-12),this.v70_1),G.w5y(i.p5p_1,i.q5p_1,this.v70_1))}function Cf(t,n){if("X"===n)for(var i=t.d6z_1.v();i.w();){var e=i.y();t.b6z_1.i2(e)}if("Y"===n)for(var r=t.d6z_1.v();r.w();){var s=r.y();t.c6z_1.i2(s)}t.d6z_1.b1()}function qf(t,n,i,e,r){var s=i.a72("label.scale.type");if(null==s)return Xr;var o=s;if("Y"===n){var u=i.a72("label.y");if(null==u)return Xr;var a=u,h=G.d5z(e,a);if(function(t,n,i){return!(ks(i/1e6)===Ot.i71(n.g5z_1))}(0,h,a))return Xr;i.b72(t.a6z_1.j6z(new H_(h.f5z_1,h.g5z_1,0),i.f6t_1))}else if("X"===n){var _=i.a72("label.x");if(null==_)return Xr;var l=_,c=G.d5z(l,r);i.b72(t.a6z_1.j6z(new H_(c.f5z_1,c.g5z_1,0),i.f6t_1))}t.a6z_1.s6r(i,function(t,n){return 1e3===n?"label.1000":"label.2000"}(0,o))}function Of(t,n,i,e){return!!function(t,n,i){var e;if(0===i)e=!0;else{var r=n.a72("label.scale.type");e=i>(null==r?0:r)}return e}(0,i,e)||function(t,n,i,e){return n.a5b_1.n5c(n.y5r().t57(i.b54_1,i.c54_1,0,il()))>function(t,n){return 1e3===n?t.a6z_1.n6x_1:t.a6z_1.o6x_1}(t,e)}(t,n,i.f6t_1,e)}function zf(){this.c72_1="label.name",this.d72_1="X",this.e72_1="Y",this.f72_1="label.x",this.g72_1="label.y",this.h72_1="label.scale.type",this.i72_1="label.1000",this.j72_1="label.2000"}function Af(t){this.a6z_1=t,this.b6z_1=Kr(),this.c6z_1=Kr(),this.d6z_1=_s()}function Tf(t){Bc.call(this,t,Y_().w5r())}function If(){this.k72_1=-80,this.l72_1=84,this.m72_1="Graticule.UTM.100000m",this.n72_1="Graticule.UTM.10000m",this.o72_1="Graticule.UTM.1000m",this.p72_1="Graticule.UTM.100m",this.q72_1="Graticule.UTM.10m",this.r72_1="Graticule.UTM.1m",this.s72_1=1e5}function Df(t,n,i){Vc.call(this,t);var e=new Jf(this);e.u72_1=n,e.y72(i),this.q73_1=e,this.r73_1=bo(["Graticule.UTM.100000m","Graticule.UTM.10000m","Graticule.UTM.1000m","Graticule.UTM.100m","Graticule.UTM.10m","Graticule.UTM.1m"])}function jf(t,n){for(var i=function(t,n){var i=_s(),e=n.r5s().s5d(),r=function(t,n){var i=null;if(n.o5p_1<84&&n.p5p_1>-80){var e=yo(n.o5p_1,-80),r=Io(n.p5p_1,84),s=Y.k5x(e,n.q5p_1,r-e,n.s5p()),o=Mf(0,s.q5p_1),u=Mf(0,s.r5p_1),a=Nf(0,s.o5p_1),h=Nf(0,s.p5p_1);a<=17&&h>=17&&30===u&&(u=31),a<=19&&h>=19&&(31===o&&(o=30),31===u&&(u=32),33===o&&(o=32),33===u&&(u=34),35===o&&(o=34),35===u&&(u=36)),i=new sl(o,a,u,h)}return i}(0,e);if(null!=r){var s=r.h55_1,o=r.j55_1;if(s<=o)do{var u=s;s=s+1|0;var a=r.g55_1,h=r.i55_1;if(a<=h)do{var _=a;if(a=a+1|0,19!==u||31!==_&&33!==_&&35!==_){var l,c=t.n77_1[u][_];if(null==c){var f=new Hf(t,Rf(0,u,_));t.n77_1[u][_]=f,l=f}else l=c;var v=l;v.c6u(n)?i.s(v):v.f6u()}}while(_!==h)}while(u!==o)}return e.p5p_1>84&&(null==t.o77_1[2]&&(t.o77_1[2]=new Hf(t,Y.k5x(84,-180,6,180))),null==t.o77_1[3]&&(t.o77_1[3]=new Hf(t,Y.k5x(84,0,6,180))),i.s(os(t.o77_1[2])),i.s(os(t.o77_1[3]))),e.o5p_1<-80&&(null==t.o77_1[0]&&(t.o77_1[0]=new Hf(t,Y.k5x(-90,-180,10,180))),null==t.o77_1[1]&&(t.o77_1[1]=new Hf(t,Y.k5x(-90,0,10,180))),i.s(os(t.o77_1[0])),i.s(os(t.o77_1[1]))),i}(t,n).v();i.w();)i.y().t6r(n)}function Mf(t,n){var i=(n+180)/6,e=Math.floor(i);return $o(ks(e),59)}function Nf(t,n){var i=(n+80)/8,e=Math.floor(i);return $o(ks(e),19)}function Rf(t,n,i){var e=-80+Tr(n,8)|0,r=e+(72!==e?8:12)|0,s=-180+Tr(i,6)|0,o=s+6|0;return 17===n&&30===i?o=o-3|0:17===n&&31===i?s=s-3|0:19===n&&30===i?o=o+3|0:19===n&&31===i?(s=s+3|0,o=o-3|0):19===n&&32===i?(s=s-3|0,o=o+3|0):19===n&&33===i?(s=s+3|0,o=o-3|0):19===n&&34===i?(s=s-3|0,o=o+3|0):19===n&&35===i?(s=s+3|0,o=o-3|0):19===n&&36===i&&(s=s-3|0),Y.k5x(e,s,r-e|0,o-s|0)}function Pf(){this.r77_1=1e6,this.s77_1=5e5,this.t77_1="Graticule.MGRS.Overview",this.u77_1="Graticule.MGRS.GridZone",this.v77_1=5e6}function Lf(){Df.call(this,"MGRS Graticule",1e5,1e5);for(var t=0,n=hs(Array(20),null);t<20;)n[t]=hs(Array(60),null),t=t+1|0;this.n77_1=n,this.o77_1=hs(Array(4),null),this.p77_1=new Yf(this);var i=Co(["Graticule.MGRS.Overview","Graticule.MGRS.GridZone"]);i.z(Pr(Df).s73.call(this)),this.q77_1=i}function Ff(t,n){var i=Uh().m5t(1567855942887398e-21),e=null;n.i78(new H_(n.v74_1.b54_1,n.v74_1.c54_1,0))?e=tt.v5y(n.v74_1.b54_1,n.v74_1.c54_1):n.i78(n.q74_1)?e=tt.v5y(Qh(Vh(n.q74_1.b54_1,i)),t_(Vh(n.q74_1.c54_1,i))):n.i78(n.r74_1)?e=tt.v5y(Qh(Vh(n.r74_1.b54_1,i)),t_(Wh(n.r74_1.c54_1,i))):n.i78(n.s74_1)?e=tt.v5y(Qh(Wh(n.s74_1.b54_1,i)),t_(Vh(n.s74_1.c54_1,i))):n.i78(n.t74_1)&&(e=tt.v5y(Qh(Wh(n.t74_1.b54_1,i)),t_(Wh(n.t74_1.c54_1,i)))),null!=e&&(n.z75_1=e.toString().substring(3,5))}function Uf(){this.j78_1=1e5,this.k78_1=2e6,this.l78_1=1e6}function Hf(t,n){Bc.call(this,t,n);var i;i=n.p5p_1>84||n.o5p_1<-80,this.p76_1=i,this.t76_1=null;var e=tt.v5y(n.l5u(),n.m5u());if(this.p76_1)this.q76_1=e.toString().substring(2,3),this.r76_1=n.o5p_1>0?wl():pl(),this.s76_1=0;else{this.q76_1=e.toString().substring(0,3);var r=rt.v5y(n.l5u(),n.m5u());this.r76_1=r.z62_1,this.s76_1=r.y62_1}}function Vf(){zt=this;var t=new Int32Array([3,56,64]),n=new Int32Array([6,64,72]),i=new Int32Array([9,72,84]),e=new Int32Array([21,72,84]);this.m78_1=[t,n,i,e,new Int32Array([33,72,84])],this.n78_1="CDEFGHJKLMNPQRSTUVWX"}function Bf(){return null==zt&&new Vf,zt}function Yf(t){Bf(),Bc.call(this,t,Y_())}function Wf(){this.o78_1=1e6,this.p78_1=0,this.q78_1=1e7,this.r78_1=0,this.s78_1=wl(),this.t78_1=pl()}function Gf(t){var n=t.x72_1;if(null!=n)return n;Gs("extremes")}function Kf(t,n,i){var e=t.t72_1.n6r(n);return n.a5b_1.n5c(i)<5*e}function Xf(){this.u78_1=-.5,this.v78_1=-.5,this.w78_1=5}function Jf(t){this.t72_1=t,this.u72_1=1e7,this.v72_1=1e5,this.w72_1=0}function Zf(t,n,i,e,r,s,o){iv.call(this,t,n,i,e,r,s,o),this.y79_1=null}function Qf(t){return!!(t.i78(t.s74_1)&&t.i78(t.t74_1)&&t.i78(t.q74_1))&&t.i78(t.r74_1)}function tv(t){var n=bo([t.q74_1,t.r74_1,t.s74_1,t.t74_1]);if(!function(t,n){for(var i=null,e=n.v();e.w();){var r=e.y();if(null!=i){var s=i.c54_1,o=Ir(s),u=r.c54_1;if(o!==Ir(u)){var a=i.c54_1-r.c54_1,h=Math.abs(a);if(h>180&&h<360)return!0}}i=r}return!1}(0,n))return n;for(var i,e=0,r=n.v();r.w();){var s=r.y(),o=s.c54_1;if(180!==Math.abs(o)){var u=s.c54_1;e=Ir(u)}}if(0===e)return n;var a,h=t.q74_1.c54_1;if(180===Math.abs(h)){var _=t.q74_1.c54_1;i=!(Ir(_)===e)}else i=!1;i&&(t.q74_1=new H_(t.q74_1.b54_1,Kh(t.q74_1.c54_1),t.q74_1.f54_1));var l,c=t.r74_1.c54_1;if(180===Math.abs(c)){var f=t.r74_1.c54_1;a=!(Ir(f)===e)}else a=!1;a&&(t.r74_1=new H_(t.r74_1.b54_1,Kh(t.r74_1.c54_1),t.r74_1.f54_1));var v,d=t.s74_1.c54_1;if(180===Math.abs(d)){var w=t.s74_1.c54_1;l=!(Ir(w)===e)}else l=!1;l&&(t.s74_1=new H_(t.s74_1.b54_1,Kh(t.s74_1.c54_1),t.s74_1.f54_1));var p=t.t74_1.c54_1;if(180===Math.abs(p)){var m=t.t74_1.c54_1;v=!(Ir(m)===e)}else v=!1;return v&&(t.t74_1=new H_(t.t74_1.b54_1,Kh(t.t74_1.c54_1),t.t74_1.f54_1)),bo([t.q74_1,t.r74_1,t.s74_1,t.t74_1])}function nv(){this.b7a_1=100}function iv(t,n,i,e,r,s,o){Bc.call(this,t,Y_()),this.j74_1=n,this.k74_1=i,this.l74_1=e,this.m74_1=r,this.n74_1=s,this.o74_1=o,this.p74_1=t.v73(this.j74_1,this.k74_1,this.m74_1+this.o74_1/2,this.n74_1+this.o74_1/2),this.q74_1=t.v73(this.j74_1,this.k74_1,this.m74_1,this.n74_1),this.r74_1=t.v73(this.j74_1,this.k74_1,this.m74_1+this.o74_1,this.n74_1),this.s74_1=t.v73(this.j74_1,this.k74_1,this.m74_1,this.n74_1+this.o74_1),this.t74_1=t.v73(this.j74_1,this.k74_1,this.m74_1+this.o74_1,this.n74_1+this.o74_1);var u=function(t,n){for(var i=Uh().k58_1,e=Uh().m58_1,r=Uh().l58_1,s=Uh().n58_1,o=n.v();o.w();){var u=o.y(),a=u.b54_1;ar&&(r=a);var h=u.c54_1;hs&&(s=h)}return new K_(i,r,e,s)}(0,tv(this));Qf(this)||u.n5x(this.l74_1),this.r6e_1.h5q(u),this.u74_1=u,this.v74_1=this.u74_1.m5x(m_()),this.w74_1=!Qf(this),this.x74_1=!(this.i78(this.s74_1)||this.i78(this.t74_1)||this.i78(this.q74_1)||this.i78(this.r74_1))}function ev(t,n){var i=t.a76_1;return!0===(null==i?null:i.c6u(n))}function rv(t,n){var i=t.b76_1;return!0===(null==i?null:i.c6u(n))}function sv(t,n,i,e,r,s,o){iv.call(this,t,n,i,e,r,s,o),this.z75_1=null,this.a76_1=null,this.b76_1=null,this.c76_1=null}function ov(){gc.call(this,"Elevation Heatmap"),this.j7a_1=!1,this.k7a_1=.5,this.l7a_1=[new ub(0,0,1),new ub(0,1,1),new ub(0,1,0),new ub(1,1,0),new ub(1,0,0)],this.m7a_1=!0,this.n7a_1=3,this.o7a_1=new Float32Array(2)}function uv(){Rb.call(this),this.a5j_1=["uniform mat4 mvpMatrix;\nuniform float scale;\nuniform float offset;\n\nattribute vec4 vertexPoint;\nattribute float vertexHeight;\n\nvarying float height;\n\nvoid main() {\n height = vertexHeight * scale + offset;\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n}","#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nuniform vec3 color0;\nuniform vec3 color1;\nuniform vec3 color2;\nuniform vec3 color3;\nuniform vec3 color4;\nuniform float opacity;\n\nvarying float height;\n\nvoid main() {\n vec3 overlay;\n overlay = mix(color0, color1, clamp(height * 4.0, 0.0, 1.0));\n overlay = mix(overlay, color2, clamp(height * 4.0 - 1.0, 0.0, 1.0));\n overlay = mix(overlay, color3, clamp(height * 4.0 - 2.0, 0.0, 1.0));\n overlay = mix(overlay, color4, clamp(height * 4.0 - 3.0, 0.0, 1.0));\n gl_FragColor = vec4(overlay * opacity, opacity);\n}"],this.b5j_1=["vertexPoint","vertexTexCoord"],this.c5j_1=z_(),this.d5j_1=ZS().c6m_1,this.e5j_1=ZS().c6m_1,this.f5j_1=ZS().c6m_1,this.g5j_1=ZS().c6m_1,this.h5j_1=ZS().c6m_1,this.i5j_1=ZS().c6m_1,this.j5j_1=ZS().c6m_1,this.k5j_1=ZS().c6m_1,this.l5j_1=ZS().c6m_1,this.m5j_1=new Float32Array(16)}function av(){}function hv(t,n,i,e){US.call(this,t,n,i,e)}function _v(){}function lv(t,n,i,e){t=t===Yr?-1:t,n=n===Yr?1:n,i=i===Yr?Uh().n58_1:i,e=e===Yr?Uh().m58_1:e,K_.call(this,Tt.i7c(t),Tt.i7c(n),i,e),this.z7a_1=t,this.a7b_1=n}function cv(){}function fv(){}function vv(t,n){t=t===Yr?null:t,n=n===Yr?null:n,mS.call(this,t,n)}function dv(t,n){q$.call(this,t,n)}function wv(t,n,i){this.j7e_1=t,this.k7e_1=n,this.l7e_1=i,this.i7e_1="Web Mercator"}function pv(t,n,i,e,r){vv.call(this,e,r),this.x7e_1="XYZ",this.y7e_1=t,this.z7e_1=n,this.a7f_1=i}function mv(){Dt=this,this.b7f_1="XYZ",this.c7f_1=No(123),this.d7f_1=No(125),this.e7f_1="{i}",this.f7f_1="{x}",this.g7f_1="{y}",this.h7f_1="{z}",this.i7f_1="{lang}",this.j7f_1="{rand="}function gv(){jt=this;var t=new Fo("earth.worldwind.layer.starfield.StarFieldLayer.StarMetadata",this,6);t.s3c("name",!1),t.s3c("description",!1),t.s3c("datatype",!1),t.s3c("arraysize",!1),t.s3c("unit",!1),t.s3c("ucd",!1),this.m7f_1=t}function bv(){return null==jt&&new gv,jt}function $v(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 63!=(63&t)&&Wo(t,63,bv().m7f_1),a.n7f_1=n,a.o7f_1=i,a.p7f_1=e,a.q7f_1=r,a.r7f_1=s,a.s7f_1=o,a}(t,n,i,e,r,s,o,0,Ts(Pr(Cv)))}function yv(){Mt=this,this.t7f_1=[new Go(bv()),new Go(new Go(Ko()))]}function kv(){return null==Mt&&new yv,Mt}function xv(){Nt=this;var t=new Fo("earth.worldwind.layer.starfield.StarFieldLayer.StarData",this,2);t.s3c("metadata",!1),t.s3c("data",!1),this.u7f_1=t}function Sv(){return null==Nt&&new xv,Nt}function Ev(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Wo(t,3,Sv().u7f_1),r.v7f_1=n,r.w7f_1=i,r}(t,n,i,0,Ts(Pr(qv)))}function Cv(){}function qv(t,n){kv(),this.v7f_1=t,this.w7f_1=n}function Ov(t){t=t===Yr?(null==d&&new Ma,d).h51_1:t,gc.call(this,"StarField"),this.e7g_1=!1,this.f7g_1=t,this.g7g_1=MS().m6j(ja().d51_1),this.h7g_1=128,this.i7g_1=!0,this.j7g_1=null,this.k7g_1=this.u7g(),this.l7g_1=0,this.m7g_1=null,this.n7g_1=34028235e31,this.o7g_1=14e-46,this.p7g_1=0,this.q7g_1=!1,this.r7g_1=1e7,this.s7g_1=this.u7g(),this.t7g_1=new Float32Array(4)}function zv(){Rb.call(this),this.j5o_1=["//.x = declination\n//.y = right ascension\n//.z = point size\n//.w = magnitude\nattribute vec4 vertexPoint;\n\nuniform mat4 mvpMatrix;\n/* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\nuniform float numDays;\nuniform vec2 magnitudeRange;\n\nvarying float magnitudeWeight;\n\n/* normalizes an angle between 0.0 and 359.0 */\nfloat normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n}\n\n/* transforms declination and right ascension in cartesian coordinates */\nvec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n}\n\n/* normalizes a value between 0.0 and 1.0 */\nfloat normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n}\n\nvoid main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n}","precision mediump float;\n\nuniform sampler2D textureSampler;\nuniform int textureEnabled;\n\nvarying float magnitudeWeight;\n\nconst vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\nconst vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\nvoid main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n/* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n}"],this.k5o_1=["vertexPoint"],this.l5o_1=ZS().c6m_1,this.m5o_1=ZS().c6m_1,this.n5o_1=ZS().c6m_1,this.o5o_1=ZS().c6m_1,this.p5o_1=ZS().c6m_1,this.q5o_1=new Float32Array(16)}function Av(){this.f7h_1="WCS 1.0.0"}function Tv(t,n,i,e,r){pS.call(this,W.e5y(e,e.l5x()?2:1,1,256,256,r),new Iv(t,n,i)),this.u7h_1=t,this.v7h_1=n,this.w7h_1=i,this.x7h_1="WCS 1.0.0"}function Iv(t,n,i,e){e=e===Yr?"EPSG:4326":e,this.y7h_1=t,this.z7h_1=n,this.a7i_1=i,this.b7i_1=e,this.c7i_1="WCS 1.0.0"}function Dv(t){this.o7i_1=t,this.n7i_1="WMS 1.3.0"}function jv(){this.z7i_1="WMS"}function Mv(t,n,i,e,r){pS.call(this,function(t,n,i){return W.e5y(n,4,2,256,256,i)}(0,e,r),function(t,n,i,e){var r=new Nv(n,i);return r.k7i_1=e,new Dv(Xv(r))}(0,t,n,i)),this.o7j_1=t,this.p7j_1=n,this.q7j_1=i,this.r7j_1="WMS"}function Nv(t,n){this.f7i_1=t,this.g7i_1=n,this.h7i_1="1.3.0",this.i7i_1=null,this.j7i_1="EPSG:4326",this.k7i_1=null,this.l7i_1=!0,this.m7i_1=null}function Rv(t){return t.u7j_1}function Pv(t,n,i){var e,r,s=ou().ps_1;return uu(s,(e=new Hv(n,null),r=function(t,n){return e.a7n(t,n)},r.$arity=1,r),i)}function Lv(t,n,i,e,r){return new Vv(n,i,e,r)}function Fv(t,n){var i=n.h1(0).p7l(),e=null==i?null:i.u7l(),r=null==e?null:e.x7l_1,s=null==r?null:r.j7m_1;if(!(null==s||s>=n.n())){var o=kr.f5y("WmsLayerFactory","createFromWmsAsync","The number of layers specified exceeds the services limit");throw is(Gr(o))}var u=t.o7m(n),a=t.p7m(n);return new q$(Xv(u),function(t,n){return R$(t.r7o_1,t.s7o_1,t.t7o_1,t.u7o_1,t.w7o_1,t.x7o_1,t.v7o_1,n),n}(a,Ts(Pr(L$))))}function Uv(t){var n=t,i=t.i4q();return i.z4r(),n.r4p_1=i.o1d(),Xr}function Hv(t,n){this.y7m_1=t,Ks.call(this,n)}function Vv(t,n,i,e){var r;r=null==e?Jr(i,",",Yr,Yr,Yr,Yr,Rv):e,mS.call(this,r,Fv(Kv(),i)),this.l7n_1="WMS",this.m7n_1=t,this.n7n_1=n;for(var s=_s(),o=i.v();o.w();){var u=o.y().t7j_1;null==u||s.s(u)}this.o7n_1=Jr(s,",")}function Bv(t){var n=t.t7j_1;return null==n?"":n}function Yv(t,n,i,e,r,s){Ks.call(this,s),this.x7n_1=t,this.y7n_1=n,this.z7n_1=i,this.a7o_1=e,this.b7o_1=r}function Wv(t,n,i){Ks.call(this,i),this.a7l_1=t,this.b7l_1=n}function Gv(){Rt=this,this.k7m_1="WMS",this.l7m_1=20,this.m7m_1=bo(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.n7m_1=du(Yr,Uv)}function Kv(){return null==Rt&&new Gv,Rt}function Xv(t){return function(t,n){return Jv.call(n,t.f7i_1,t.h7i_1,t.g7i_1,t.i7i_1),n.t7i_1=t.j7i_1,n.u7i_1=t.k7i_1,n.v7i_1=t.l7i_1,n.w7i_1=t.m7i_1,n}(t,Ts(Pr(Jv)))}function Jv(t,n,i,e){this.p7i_1=t,this.q7i_1=n,this.r7i_1=i,this.s7i_1=e,this.t7i_1="EPSG:4326",this.u7i_1=null,this.v7i_1=!0,this.w7i_1=null,this.x7i_1="WMS 1.3.0"}function Zv(t,n,i){var e,r,s=ou().ps_1;return uu(s,(e=new ed(n,null),r=function(t,n){return e.g7t(t,n)},r.$arity=1,r),i)}function Qv(t,n,i,e,r){return new rd(n,i,e,r)}function td(t,n){var i=function(t,n){var i=n.v();t:for(;i.w();){var e,r=i.y();switch(r.q7r_1){case"urn:ogc:def:crs:OGC:1.3:CRS84":case"http://www.opengis.net/def/crs/OGC/1.3/CRS84":e=!0;break;case"urn:ogc:def:crs:EPSG::4326":e=!1;break;default:continue t}var s=e,o=_s(),u=0,a=0,h=0,_=0,l=0,c=0,f=0,v=0,d=0,w=null,p=r.t7r_1.v();n:for(;p.w();){var m=p.y();if(null==w||m.z7r_1===w){var g=m.z7r_1,b=gu("\\s+").q8(g,0);if(2===b.n()&&!(0!==_&&_!==m.a7s_1||0!==l&&l!==m.b7s_1)){if(0!==d&&Tr(2,d)!==m.c7s_1)break n;if(0!==v&&Tr(2,v)!==m.d7s_1)break n;if(o.d1()){try{s?(u=bu(b.h1(0)),a=bu(b.h1(1))):(u=bu(b.h1(1)),a=bu(b.h1(0)))}catch(t){if(t instanceof $u){kr.n54(kr.j54_1,"WmtsLayerFactory","determineTileSchemeCompatibleTileMatrixSet","Unable to parse TopLeftCorner values");continue n}throw t}h=m.y7r_1,_=m.a7s_1,l=m.a7s_1,c=m.c7s_1,f=m.d7s_1}o.s(m.x7r_1),v=m.d7s_1,d=m.c7s_1,w=m.z7r_1}}}if(!o.d1())return new nd(r.p7r_1,o,h,u,a,_,l,c,f)}return null}(0,n.k7q());if(null==i){var e=kr.f5y("WmtsLayerFactory","createWmtsLayer","Tile Schemes Not Compatible");throw fs(Gr(e))}var r=i;return new q$(function(t,n,i){for(var e=n.h7q_1.v();e.w();){var r=e.y();if(t.h7r_1.r(r.l7q_1))return new _d(mu(mu(r.n7q_1,"{style}",n.d7q_1.h1(0).r7q_1),"{TileMatrixSet}",i.u7q_1),i.v7q_1,i.c7r_1,r.l7q_1)}var s,o=function(t,n){var i=n.u7l().i7s_1;if(null==i)return null;var e=i.n7s();if(null==e)return null;var r=e.p7s_1;if(r.d1())return null;var s=r.h1(0).r7s();if(s.d1())return null;var o=s.h1(0).t7s_1;return o.d1()?null:o.h1(0).v7s_1.r("KVP")?s.h1(0).s7s_1:null}(0,n);if(null==o){var u=kr.f5y("WmtsLayerFactory","getWmtsTileFactory","No KVP Get Support");throw fs(Gr(u))}t:{for(var a=t.h7r_1.v();a.w();){var h=a.y();if(n.e7q_1.r(h)){s=h;break t}}s=null}var _=s;if(null==_){var l=kr.f5y("WmtsLayerFactory","getWmtsTileFactory","Image Formats Not Compatible");throw fs(Gr(l))}var c=_,f=n.d7q_1.h1(0).r7q_1;return new _d(function(t,n,i,e,r,s){var o=su().z1t(n).n4w().p4v("VERSION","1.0.0").p4v("SERVICE","WMTS").p4v("REQUEST","GetTile").p4v("LAYER",i).p4v("STYLE",r).p4v("FORMAT",e).p4v("TILEMATRIXSET",s).p4v("TILEMATRIX","{TileMatrix}").p4v("TILEROW","{TileRow}");return Gr(o.p4v("TILECOL","{TileCol}").o1d())}(0,o,n.z7p_1,c,f,i.u7q_1),i.v7q_1,i.c7r_1,c)}(t,n,r),function(t,n,i){var e=n.b7q_1,r=null==e?null:e.s5d();if(null==r){var s=kr.f5y("WmtsLayerFactory","createWmtsLevelSet","WGS84BoundingBox not defined for layer: "+n.z7p_1);throw fs(Gr(s))}var o=r,u=i.w7q_1/Uh().l5t(c_().w5u_1.y5u_1)*28e-5,a=i.z7q_1*u,h=i.a7r_1*u,_=i.x7q_1+a*i.b7r_1,l=i.y7q_1-h*i.c7r_1,c=_-i.x7q_1,f=i.y7q_1-l;return P$(o,Y.k5x(l,i.x7q_1,f,c),b_().p5v(f/i.c7r_1,c/i.b7r_1),i.v7q_1.n(),i.z7q_1,i.a7r_1)}(0,n,r))}function nd(t,n,i,e,r,s,o,u,a){this.u7q_1=t,this.v7q_1=n,this.w7q_1=i,this.x7q_1=e,this.y7q_1=r,this.z7q_1=s,this.a7r_1=o,this.b7r_1=u,this.c7r_1=a}function id(t){var n=t,i=t.i4q();return i.z4r(),n.r4p_1=i.o1d(),Xr}function ed(t,n){this.e7t_1=t,Ks.call(this,n)}function rd(t,n,i,e){mS.call(this,null==e?i.w7p_1:e,td(ad(),i)),this.r7t_1="WMTS",this.s7t_1=t,this.t7t_1=n,this.u7t_1=i.z7p_1,this.v7t_1=!0}function sd(t,n,i,e,r,s){Ks.call(this,s),this.e7u_1=t,this.f7u_1=n,this.g7u_1=i,this.h7u_1=e,this.i7u_1=r}function od(t,n,i){Ks.call(this,i),this.h7p_1=t,this.i7p_1=n}function ud(){Pt=this,this.d7r_1="WMTS",this.e7r_1=28e-5,this.f7r_1="{style}",this.g7r_1="{TileMatrixSet}",this.h7r_1=bo(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.i7r_1=du(Yr,id)}function ad(){return null==Pt&&new ud,Pt}function hd(){this.p7u_1="{TileMatrix}",this.q7u_1="{TileRow}",this.r7u_1="{TileCol}"}function _d(t,n,i,e){this.s7u_1=t,this.t7u_1=n,this.u7u_1=i,this.v7u_1=e,this.w7u_1="WMTS 1.0.0"}function ld(){}function cd(){Lt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsAttribution",this,3);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/wms","")),t.s3c("onlineResource",!0),t.s3c("logoURL",!0),t.u3c(new ku("Attribution","http://www.opengis.net/wms","")),this.y7u_1=t}function fd(){return null==Lt&&new cd,Lt}function vd(t,n,i,e,r){return function(t,n,i,e,r,s){return 0!=(0&t)&&Wo(t,0,fd().y7u_1),s.z7u_1=0==(1&t)?null:n,s.a7v_1=0==(2&t)?null:i,s.b7v_1=0==(4&t)?null:e,s}(t,n,i,e,0,Ts(Pr(dd)))}function dd(t,n,i){t=t===Yr?null:t,n=n===Yr?null:n,i=i===Yr?null:i,this.z7u_1=t,this.a7v_1=n,this.b7v_1=i}function wd(){Ft=this;var t=new Fo("earth.worldwind.ogc.wms.WmsAuthorityUrl",this,2);t.s3c("name",!1),t.s3c("onlineResource",!1),t.u3c(new ku("AuthorityURL","http://www.opengis.net/wms","")),this.c7v_1=t}function pd(){return null==Ft&&new wd,Ft}function md(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Wo(t,3,pd().c7v_1),r.d7v_1=n,r.e7v_1=i,r}(t,n,i,0,Ts(Pr(gd)))}function gd(){}function bd(){Ut=this;var t=new Fo("earth.worldwind.ogc.wms.WmsBoundingBox",this,7);t.s3c("CRS",!1),t.s3c("minx",!1),t.s3c("maxx",!1),t.s3c("miny",!1),t.s3c("maxy",!1),t.s3c("resx",!0),t.s3c("resy",!0),t.u3c(new ku("BoundingBox","http://www.opengis.net/wms","")),this.f7v_1=t}function $d(){return null==Ut&&new bd,Ut}function yd(t,n,i,e,r,s,o,u,a){return function(t,n,i,e,r,s,o,u,a,h){return 31!=(31&t)&&Wo(t,31,$d().f7v_1),h.g7v_1=n,h.h7v_1=i,h.i7v_1=e,h.j7v_1=r,h.k7v_1=s,h.l7v_1=0==(32&t)?null:o,h.m7v_1=0==(64&t)?null:u,h}(t,n,i,e,r,s,o,u,0,Ts(Pr(kd)))}function kd(){}function xd(){}function Sd(){Ht=this;var t=new Fo("earth.worldwind.ogc.wms.WmsCapabilities",this,4);t.s3c("version",!0),t.s3c("updateSequence",!0),t.s3c("service",!1),t.s3c("capability",!1),t.u3c(new ku("WMS_Capabilities","http://www.opengis.net/wms","")),this.n7v_1=t}function Ed(){return null==Ht&&new Sd,Ht}function Cd(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 12!=(12&t)&&Wo(t,12,Ed().n7v_1),o.v7l_1=0==(1&t)?"1.3.0":n,o.w7l_1=0==(2&t)?null:i,o.x7l_1=e,o.y7l_1=r,o.y7l_1.t7l_1=o,o}(t,n,i,e,r,0,Ts(Pr(qd)))}function qd(t,n,i,e){t=t===Yr?"1.3.0":t,n=n===Yr?null:n,this.v7l_1=t,this.w7l_1=n,this.x7l_1=i,this.y7l_1=e,this.y7l_1.t7l_1=this}function Od(){Vt=this,this.p7v_1=[null,new Go(Iw()),null]}function zd(){return null==Vt&&new Od,Vt}function Ad(){Bt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsCapability",this,3);t.s3c("request",!1),t.s3c("layers",!0),t.s3c("exception",!0),t.u3c(new ku("Capability","http://www.opengis.net/wms","")),this.q7v_1=t}function Td(){return null==Bt&&new Ad,Bt}function Id(t,n,i,e,r){return function(t,n,i,e,r,s){1!=(1&t)&&Wo(t,1,Td().q7v_1),s.q7l_1=n,s.r7l_1=0==(2&t)?Ls():i,s.s7l_1=0==(4&t)?new dw:e;for(var o=s.r7l_1.v();o.w();)o.y().q7k_1=s;return s}(t,n,i,e,0,Ts(Pr(Dd)))}function Dd(){}function jd(){Yt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsContactAddress",this,6);t.s3c("addressType",!1),t.t3c(new yu(!0)),t.t3c(new ku("AddressType","http://www.opengis.net/wms","")),t.s3c("address",!1),t.t3c(new yu(!0)),t.t3c(new ku("Address","http://www.opengis.net/wms","")),t.s3c("city",!1),t.t3c(new yu(!0)),t.t3c(new ku("City","http://www.opengis.net/wms","")),t.s3c("stateOrProvince",!1),t.t3c(new yu(!0)),t.t3c(new ku("StateOrProvince","http://www.opengis.net/wms","")),t.s3c("postCode",!1),t.t3c(new yu(!0)),t.t3c(new ku("PostCode","http://www.opengis.net/wms","")),t.s3c("country",!1),t.t3c(new yu(!0)),t.t3c(new ku("Country","http://www.opengis.net/wms","")),t.u3c(new ku("ContactAddress","http://www.opengis.net/wms","")),this.r7v_1=t}function Md(){return null==Yt&&new jd,Yt}function Nd(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 63!=(63&t)&&Wo(t,63,Md().r7v_1),a.s7v_1=n,a.t7v_1=i,a.u7v_1=e,a.v7v_1=r,a.w7v_1=s,a.x7v_1=o,a}(t,n,i,e,r,s,o,0,Ts(Pr(Rd)))}function Rd(){}function Pd(){}function Ld(){Wt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsContactInformation",this,6);t.s3c("position",!0),t.t3c(new yu(!0)),t.t3c(new ku("ContactPosition","http://www.opengis.net/wms","")),t.s3c("voiceTelephone",!0),t.t3c(new yu(!0)),t.t3c(new ku("ContactVoiceTelephone","http://www.opengis.net/wms","")),t.s3c("facsimileTelephone",!0),t.t3c(new yu(!0)),t.t3c(new ku("ContactFacsimileNumber","http://www.opengis.net/wms","")),t.s3c("electronicMailAddress",!0),t.t3c(new yu(!0)),t.t3c(new ku("ContactElectronicMailAddress","http://www.opengis.net/wms","")),t.s3c("contactAddress",!0),t.s3c("contactPersonPrimary",!0),t.u3c(new ku("ContactInformation","http://www.opengis.net/wms","")),this.y7v_1=t}function Fd(){return null==Wt&&new Ld,Wt}function Ud(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 0!=(0&t)&&Wo(t,0,Fd().y7v_1),a.z7v_1=0==(1&t)?null:n,a.a7w_1=0==(2&t)?null:i,a.b7w_1=0==(4&t)?null:e,a.c7w_1=0==(8&t)?null:r,a.d7w_1=0==(16&t)?null:s,a.e7w_1=0==(32&t)?null:o,a}(t,n,i,e,r,s,o,0,Ts(Pr(Hd)))}function Hd(t,n,i,e,r,s){t=t===Yr?null:t,n=n===Yr?null:n,i=i===Yr?null:i,e=e===Yr?null:e,r=r===Yr?null:r,s=s===Yr?null:s,this.z7v_1=t,this.a7w_1=n,this.b7w_1=i,this.c7w_1=e,this.d7w_1=r,this.e7w_1=s}function Vd(){Gt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsContactPersonPrimary",this,2);t.s3c("contactPerson",!1),t.t3c(new yu(!0)),t.t3c(new ku("ContactPerson","http://www.opengis.net/wms","")),t.s3c("contactOrganization",!1),t.t3c(new yu(!0)),t.t3c(new ku("ContactOrganization","http://www.opengis.net/wms","")),t.u3c(new ku("ContactPersonPrimary","http://www.opengis.net/wms","")),this.f7w_1=t}function Bd(){return null==Gt&&new Vd,Gt}function Yd(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Wo(t,3,Bd().f7w_1),r.g7w_1=n,r.h7w_1=i,r}(t,n,i,0,Ts(Pr(Wd)))}function Wd(){}function Gd(){Kt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsDcpType.WmsHttp",this,2);t.s3c("get",!1),t.t3c(new ku("Get","http://www.opengis.net/wms","")),t.s3c("post",!0),t.t3c(new ku("Post","http://www.opengis.net/wms","")),t.u3c(new ku("HTTP","http://www.opengis.net/wms","")),this.i7w_1=t}function Kd(){return null==Kt&&new Gd,Kt}function Xd(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Wo(t,1,Kd().i7w_1),r.j7w_1=n,r.k7w_1=0==(2&t)?null:i,r}(t,n,i,0,Ts(Pr(tw)))}function Jd(){Xt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsDcpType.WmsHttpProtocol",this,1);t.s3c("onlineResource",!1),this.l7w_1=t}function Zd(){return null==Xt&&new Jd,Xt}function Qd(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Wo(t,1,Zd().l7w_1),e.m7w_1=n,e}(t,n,0,Ts(Pr(nw)))}function tw(){}function nw(){}function iw(){Jt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsDcpType",this,1);t.s3c("http",!1),t.u3c(new ku("DCPType","http://www.opengis.net/wms","")),this.n7w_1=t}function ew(){return null==Jt&&new iw,Jt}function rw(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Wo(t,1,ew().n7w_1),e.o7w_1=n,e}(t,n,0,Ts(Pr(sw)))}function sw(){}function ow(){Zt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsDimension",this,8);t.s3c("name",!1),t.s3c("units",!1),t.s3c("unitSymbol",!0),t.s3c("default",!0),t.s3c("multipleValues",!0),t.s3c("nearestValue",!0),t.s3c("current",!0),t.s3c("value",!0),t.t3c(new qu(!0)),t.u3c(new ku("Dimension","http://www.opengis.net/wms","")),this.s7w_1=t}function uw(){return null==Zt&&new ow,Zt}function aw(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){return 3!=(3&t)&&Wo(t,3,uw().s7w_1),_.t7w_1=n,_.u7w_1=i,_.v7w_1=0==(4&t)?null:e,_.w7w_1=0==(8&t)?null:r,_.x7w_1=0==(16&t)?null:s,_.y7w_1=0==(32&t)?null:o,_.z7w_1=0==(64&t)?null:u,_.a7x_1=0==(128&t)?null:a,_}(t,n,i,e,r,s,o,u,a,0,Ts(Pr(hw)))}function hw(){}function _w(){Qt=this,this.b7x_1=[new Go(Uo())]}function lw(){return null==Qt&&new _w,Qt}function cw(){tn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsException",this,1);t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wms","")),t.u3c(new ku("Exception","http://www.opengis.net/wms","")),this.c7x_1=t}function fw(){return null==tn&&new cw,tn}function vw(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Wo(t,0,fw().c7x_1),e.d7x_1=0==(1&t)?Ls():n,e}(t,n,0,Ts(Pr(dw)))}function dw(t){lw(),t=t===Yr?Ls():t,this.d7x_1=t}function ww(){nn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsGeographicBoundingBox",this,4);t.s3c("north",!1),t.t3c(new yu(!0)),t.t3c(new ku("northBoundLatitude","http://www.opengis.net/wms","")),t.s3c("east",!1),t.t3c(new yu(!0)),t.t3c(new ku("eastBoundLongitude","http://www.opengis.net/wms","")),t.s3c("south",!1),t.t3c(new yu(!0)),t.t3c(new ku("southBoundLatitude","http://www.opengis.net/wms","")),t.s3c("west",!1),t.t3c(new yu(!0)),t.t3c(new ku("westBoundLongitude","http://www.opengis.net/wms","")),t.u3c(new ku("EX_GeographicBoundingBox","http://www.opengis.net/wms","")),this.e7x_1=t}function pw(){return null==nn&&new ww,nn}function mw(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 15!=(15&t)&&Wo(t,15,pw().e7x_1),o.f7x_1=n,o.g7x_1=i,o.h7x_1=e,o.i7x_1=r,o}(t,n,i,e,r,0,Ts(Pr(gw)))}function gw(){}function bw(){en=this;var t=new Fo("earth.worldwind.ogc.wms.WmsIdentifier",this,2);t.s3c("authority",!1),t.s3c("identifier",!1),t.t3c(new qu(!0)),t.u3c(new ku("Identifier","http://www.opengis.net/wms","")),this.j7x_1=t}function $w(){return null==en&&new bw,en}function yw(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Wo(t,3,$w().j7x_1),r.k7x_1=n,r.l7x_1=i,r}(t,n,i,0,Ts(Pr(kw)))}function kw(){}function xw(){rn=this,this.m7x_1=[new Go(Uo()),null]}function Sw(){return null==rn&&new xw,rn}function Ew(){sn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsInfoUrl",this,2);t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wms","")),t.s3c("onlineResource",!1),this.n7x_1=t}function Cw(){return null==sn&&new Ew,sn}function qw(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Wo(t,2,Cw().n7x_1),r.o7x_1=0==(1&t)?Ls():n,r.p7x_1=i,r}(t,n,i,0,Ts(Pr(Ow)))}function Ow(){}function zw(){on=this,this.q7x_1=[null,null,null,null,new Go(Uo()),new Go(pp()),new Go(Uo()),null,new Go($d()),new Go(uw()),null,new Go(pd()),new Go($w()),new Go(Bw()),new Go(Cw()),new Go(Cw()),null,null,null,null,null,null,null,null]}function Aw(){return null==on&&new zw,on}function Tw(){un=this;var t=new Fo("earth.worldwind.ogc.wms.WmsLayer",this,24);t.s3c("layers",!0),t.s3c("name",!0),t.t3c(new yu(!0)),t.t3c(new ku("Name","http://www.opengis.net/wms","")),t.s3c("title",!1),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/wms","")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/wms","")),t.s3c("keywordList",!0),t.t3c(new ku("KeywordList","http://www.opengis.net/wms","")),t.t3c(new Au("Keyword","http://www.opengis.net/wms","")),t.s3c("_styles",!0),t.s3c("_referenceSystems",!0),t.t3c(new ku("CRS","http://www.opengis.net/wms","")),t.s3c("_geographicBoundingBox",!0),t.s3c("_boundingBoxes",!0),t.s3c("_dimensions",!0),t.s3c("_attribution",!0),t.s3c("_authorityUrls",!0),t.s3c("identifiers",!0),t.s3c("metadataUrls",!0),t.s3c("dataUrls",!0),t.t3c(new ku("DataURL","http://www.opengis.net/wms","")),t.s3c("featureListUrls",!0),t.t3c(new ku("FeatureListURL","http://www.opengis.net/wms","")),t.s3c("_maxScaleDenominator",!0),t.t3c(new yu(!0)),t.t3c(new ku("MaxScaleDenominator","http://www.opengis.net/wms","")),t.s3c("_minScaleDenominator",!0),t.t3c(new yu(!0)),t.t3c(new ku("MinScaleDenominator","http://www.opengis.net/wms","")),t.s3c("isQueryable",!0),t.t3c(new ku("queryable","http://www.opengis.net/wms","")),t.s3c("_cascaded",!0),t.t3c(new ku("cascaded","http://www.opengis.net/wms","")),t.s3c("isOpaque",!0),t.t3c(new ku("opaque","http://www.opengis.net/wms","")),t.s3c("isNoSubsets",!0),t.t3c(new ku("noSubsets","http://www.opengis.net/wms","")),t.s3c("_fixedWidth",!0),t.t3c(new ku("fixedWidth","http://www.opengis.net/wms","")),t.s3c("_fixedHeight",!0),t.t3c(new ku("fixedHeight","http://www.opengis.net/wms","")),t.u3c(new ku("Layer","http://www.opengis.net/wms","")),this.r7x_1=t}function Iw(){return null==un&&new Tw,un}function Dw(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S){return function(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E){4!=(4&t)&&Wo(t,4,Iw().r7x_1),E.s7j_1=0==(1&t)?Ls():n,E.t7j_1=0==(2&t)?null:i,E.u7j_1=e,E.v7j_1=0==(8&t)?null:r,E.w7j_1=0==(16&t)?Ls():s,E.x7j_1=0==(32&t)?Ls():o,E.y7j_1=0==(64&t)?Ls():u,E.z7j_1=0==(128&t)?null:a,E.a7k_1=0==(256&t)?Ls():h,E.b7k_1=0==(512&t)?Ls():_,E.c7k_1=0==(1024&t)?null:l,E.d7k_1=0==(2048&t)?Ls():c,E.e7k_1=0==(4096&t)?Ls():f,E.f7k_1=0==(8192&t)?Ls():v,E.g7k_1=0==(16384&t)?Ls():d,E.h7k_1=0==(32768&t)?Ls():w,E.i7k_1=0==(65536&t)?null:p,E.j7k_1=0==(131072&t)?null:m,E.k7k_1=0!=(262144&t)&&g,E.l7k_1=0==(524288&t)?null:b,E.m7k_1=0!=(1048576&t)&&$,E.n7k_1=0!=(2097152&t)&&y,E.o7k_1=0==(4194304&t)?null:k,E.p7k_1=0==(8388608&t)?null:x,E.q7k_1=null,E.r7k_1=null;for(var C=E.s7j_1.v();C.w();)C.y().r7k_1=E;return E}(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,0,Ts(Pr(jw)))}function jw(){}function Mw(){an=this,this.s7x_1=[new Du(Uo()),null,null,null]}function Nw(){return null==an&&new Mw,an}function Rw(){hn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsLogoUrl",this,4);t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wms","")),t.s3c("onlineResource",!1),t.s3c("width",!0),t.s3c("height",!0),t.u3c(new ku("LogoURL","http://www.opengis.net/wms","")),this.t7x_1=t}function Pw(){return null==hn&&new Rw,hn}function Lw(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 2!=(2&t)&&Wo(t,2,Pw().t7x_1),o.u7x_1=0==(1&t)?ju():n,o.v7x_1=i,o.w7x_1=0==(4&t)?null:e,o.x7x_1=0==(8&t)?null:r,o}(t,n,i,e,r,0,Ts(Pr(Fw)))}function Fw(){}function Uw(){_n=this,this.y7x_1=[null,new Go(Uo()),null]}function Hw(){return null==_n&&new Uw,_n}function Vw(){ln=this;var t=new Fo("earth.worldwind.ogc.wms.WmsMetadataUrl",this,3);t.s3c("type",!1),t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wms","")),t.s3c("onlineResource",!1),t.u3c(new ku("MetadataURL","http://www.opengis.net/wms","")),this.z7x_1=t}function Bw(){return null==ln&&new Vw,ln}function Yw(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Wo(t,5,Bw().z7x_1),s.a7y_1=n,s.b7y_1=0==(2&t)?Ls():i,s.c7y_1=e,s}(t,n,i,e,0,Ts(Pr(Ww)))}function Ww(){}function Gw(){cn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsOnlineResource",this,2);t.s3c("type",!0),t.t3c(new ku("type","http://www.w3.org/1999/xlink","xlink")),t.s3c("url",!1),t.t3c(new ku("href","http://www.w3.org/1999/xlink","xlink")),t.u3c(new ku("OnlineResource","http://www.opengis.net/wms","")),this.d7y_1=t}function Kw(){return null==cn&&new Gw,cn}function Xw(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Wo(t,2,Kw().d7y_1),r.q7w_1=0==(1&t)?"simple":n,r.r7w_1=i,r}(t,n,i,0,Ts(Pr(Jw)))}function Jw(){}function Zw(){fn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsRequest",this,3);t.s3c("getCapabilities",!1),t.t3c(new ku("GetCapabilities","http://www.opengis.net/wms","")),t.s3c("getMap",!1),t.t3c(new ku("GetMap","http://www.opengis.net/wms","")),t.s3c("getFeatureInfo",!0),t.t3c(new ku("GetFeatureInfo","http://www.opengis.net/wms","")),t.u3c(new ku("Request","http://www.opengis.net/wms","")),this.e7y_1=t}function Qw(){return null==fn&&new Zw,fn}function tp(t,n,i,e,r){return function(t,n,i,e,r,s){return 3!=(3&t)&&Wo(t,3,Qw().e7y_1),s.i7o_1=n,s.j7o_1=i,s.k7o_1=0==(4&t)?null:e,s}(t,n,i,e,0,Ts(Pr(np)))}function np(){}function ip(){vn=this,this.f7y_1=[new Go(Uo()),null]}function ep(){return null==vn&&new ip,vn}function rp(){dn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsRequestOperation",this,2);t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wms","")),t.s3c("dcpType",!1),this.g7y_1=t}function sp(){return null==dn&&new rp,dn}function op(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Wo(t,2,sp().g7y_1),r.l7o_1=0==(1&t)?Ls():n,r.m7o_1=i,r}(t,n,i,0,Ts(Pr(up)))}function up(){}function ap(){wn=this,this.h7y_1=[null,null,null,null,null,new Go(Uo()),null,null,null,null,null]}function hp(){return null==wn&&new ap,wn}function _p(){pn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsService",this,11);t.s3c("name",!1),t.t3c(new yu(!0)),t.t3c(new ku("Name","http://www.opengis.net/wms","")),t.s3c("title",!1),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/wms","")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/wms","")),t.s3c("fees",!0),t.t3c(new yu(!0)),t.t3c(new ku("Fees","http://www.opengis.net/wms","")),t.s3c("accessConstraints",!0),t.t3c(new yu(!0)),t.t3c(new ku("AccessConstraints","http://www.opengis.net/wms","")),t.s3c("keywordList",!0),t.t3c(new ku("KeywordList","http://www.opengis.net/wms","")),t.t3c(new Au("Keyword","http://www.opengis.net/wms","")),t.s3c("onlineResource",!1),t.s3c("contactInformation",!0),t.s3c("maxWidth",!0),t.t3c(new yu(!0)),t.t3c(new ku("MaxWidth","http://www.opengis.net/wms","")),t.s3c("maxHeight",!0),t.t3c(new yu(!0)),t.t3c(new ku("MaxHeight","http://www.opengis.net/wms","")),t.s3c("layerLimit",!0),t.t3c(new yu(!0)),t.t3c(new ku("LayerLimit","http://www.opengis.net/wms","")),t.u3c(new ku("Service","http://www.opengis.net/wms","")),this.i7y_1=t}function lp(){return null==pn&&new _p,pn}function cp(t,n,i,e,r,s,o,u,a,h,_,l,c){return function(t,n,i,e,r,s,o,u,a,h,_,l,c,f){return 67!=(67&t)&&Wo(t,67,lp().i7y_1),f.z7l_1=n,f.a7m_1=i,f.b7m_1=0==(4&t)?null:e,f.c7m_1=0==(8&t)?null:r,f.d7m_1=0==(16&t)?null:s,f.e7m_1=0==(32&t)?Ls():o,f.f7m_1=u,f.g7m_1=0==(128&t)?null:a,f.h7m_1=0==(256&t)?null:h,f.i7m_1=0==(512&t)?null:_,f.j7m_1=0==(1024&t)?null:l,f}(t,n,i,e,r,s,o,u,a,h,_,l,0,Ts(Pr(fp)))}function fp(){}function vp(){mn=this,this.j7y_1=[null,null,null,new Go(Pw()),null,null]}function dp(){return null==mn&&new vp,mn}function wp(){gn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsStyle",this,6);t.s3c("name",!1),t.t3c(new yu(!0)),t.t3c(new ku("Name","http://www.opengis.net/wms","")),t.s3c("title",!1),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/wms","")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/wms","")),t.s3c("legendUrls",!0),t.t3c(new ku("LegendURL","http://www.opengis.net/wms","")),t.s3c("styleSheetUrl",!0),t.t3c(new ku("StyleSheetURL","http://www.opengis.net/wms","")),t.s3c("styleUrl",!0),t.t3c(new ku("StyleURL","http://www.opengis.net/wms","")),t.u3c(new ku("Style","http://www.opengis.net/wms","")),this.k7y_1=t}function pp(){return null==gn&&new wp,gn}function mp(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 3!=(3&t)&&Wo(t,3,pp().k7y_1),a.l7y_1=n,a.m7y_1=i,a.n7y_1=0==(4&t)?null:e,a.o7y_1=0==(8&t)?Ls():r,a.p7y_1=0==(16&t)?null:s,a.q7y_1=0==(32&t)?null:o,a}(t,n,i,e,r,s,o,0,Ts(Pr(gp)))}function gp(){}function bp(){bn=this,this.r7y_1=[new Go(Uo()),null,null,null,null,new Go(Uo())]}function $p(){return null==bn&&new bp,bn}function yp(){$n=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsAddress",this,6);t.s3c("deliveryPoints",!0),t.t3c(new ku("DeliveryPoint","http://www.opengis.net/ows/1.1","ows")),t.s3c("city",!0),t.t3c(new yu(!0)),t.t3c(new ku("City","http://www.opengis.net/ows/1.1","ows")),t.s3c("administrativeArea",!0),t.t3c(new yu(!0)),t.t3c(new ku("AdministrativeArea","http://www.opengis.net/ows/1.1","ows")),t.s3c("postalCode",!0),t.t3c(new yu(!0)),t.t3c(new ku("PostalCode","http://www.opengis.net/ows/1.1","ows")),t.s3c("country",!0),t.t3c(new yu(!0)),t.t3c(new ku("Country","http://www.opengis.net/ows/1.1","ows")),t.s3c("electronicMailAddresses",!0),t.t3c(new ku("ElectronicMailAddress","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("Address","http://www.opengis.net/ows/1.1","ows")),this.s7y_1=t}function kp(){return null==$n&&new yp,$n}function xp(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 0!=(0&t)&&Wo(t,0,kp().s7y_1),a.t7y_1=0==(1&t)?Ls():n,a.u7y_1=0==(2&t)?null:i,a.v7y_1=0==(4&t)?null:e,a.w7y_1=0==(8&t)?null:r,a.x7y_1=0==(16&t)?null:s,a.y7y_1=0==(32&t)?Ls():o,a}(t,n,i,e,r,s,o,0,Ts(Pr(Sp)))}function Sp(t,n,i,e,r,s){$p(),t=t===Yr?Ls():t,n=n===Yr?null:n,i=i===Yr?null:i,e=e===Yr?null:e,r=r===Yr?null:r,s=s===Yr?Ls():s,this.t7y_1=t,this.u7y_1=n,this.v7y_1=i,this.w7y_1=e,this.x7y_1=r,this.y7y_1=s}function Ep(){yn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsBoundingBox",this,3);t.s3c("crs",!0),t.s3c("lowerCorner",!1),t.t3c(new yu(!0)),t.t3c(new ku("LowerCorner","http://www.opengis.net/ows/1.1","ows")),t.s3c("upperCorner",!1),t.t3c(new yu(!0)),t.t3c(new ku("UpperCorner","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("BoundingBox","http://www.opengis.net/ows/1.1","ows")),this.z7y_1=t}function Cp(){return null==yn&&new Ep,yn}function qp(t,n,i,e,r){return function(t,n,i,e,r,s){return 6!=(6&t)&&Wo(t,6,Cp().z7y_1),s.j7r_1=0==(1&t)?null:n,s.k7r_1=i,s.l7r_1=e,s}(t,n,i,e,0,Ts(Pr(Op)))}function Op(){}function zp(){kn=this,this.a7z_1=[null,new Go(Uo())]}function Ap(){return null==kn&&new zp,kn}function Tp(){xn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsConstraint",this,2);t.s3c("name",!1),t.s3c("allowedValues",!0),t.t3c(new ku("AllowedValues","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Value","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Mu("AnyValue")),t.u3c(new ku("Constraint","http://www.opengis.net/ows/1.1","ows")),this.b7z_1=t}function Ip(){return null==xn&&new Tp,xn}function Dp(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Wo(t,1,Ip().b7z_1),r.u7s_1=n,r.v7s_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(jp)))}function jp(){}function Mp(){}function Np(){Sn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsContactInfo",this,5);t.s3c("phone",!0),t.s3c("address",!0),t.s3c("onlineResource",!0),t.s3c("hoursOfService",!0),t.t3c(new yu(!0)),t.t3c(new ku("HoursOfService","http://www.opengis.net/ows/1.1","ows")),t.s3c("contactInstructions",!0),t.t3c(new yu(!0)),t.t3c(new ku("ContactInstructions","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("ContactInfo","http://www.opengis.net/ows/1.1","ows")),this.c7z_1=t}function Rp(){return null==Sn&&new Np,Sn}function Pp(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){return 0!=(0&t)&&Wo(t,0,Rp().c7z_1),u.d7z_1=0==(1&t)?null:n,u.e7z_1=0==(2&t)?null:i,u.f7z_1=0==(4&t)?null:e,u.g7z_1=0==(8&t)?null:r,u.h7z_1=0==(16&t)?null:s,u}(t,n,i,e,r,s,0,Ts(Pr(Lp)))}function Lp(t,n,i,e,r){t=t===Yr?null:t,n=n===Yr?null:n,i=i===Yr?null:i,e=e===Yr?null:e,r=r===Yr?null:r,this.d7z_1=t,this.e7z_1=n,this.f7z_1=i,this.g7z_1=e,this.h7z_1=r}function Fp(){En=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsDcp",this,1);t.s3c("http",!1),t.u3c(new ku("DCP","http://www.opengis.net/ows/1.1","ows")),this.i7z_1=t}function Up(){return null==En&&new Fp,En}function Hp(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Wo(t,1,Up().i7z_1),e.q7s_1=n,e}(t,n,0,Ts(Pr(Vp)))}function Vp(){}function Bp(){}function Yp(){Cn=this,this.l7z_1=[new Go(nm()),new Go(nm())]}function Wp(){return null==Cn&&new Yp,Cn}function Gp(){qn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsHttp",this,2);t.s3c("getMethods",!0),t.t3c(new ku("Get","http://www.opengis.net/ows/1.1","ows")),t.s3c("postMethods",!0),t.t3c(new ku("Post","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("HTTP","http://www.opengis.net/ows/1.1","ows")),this.m7z_1=t}function Kp(){return null==qn&&new Gp,qn}function Xp(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Wo(t,0,Kp().m7z_1),r.j7z_1=0==(1&t)?Ls():n,r.k7z_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(Jp)))}function Jp(t,n){Wp(),t=t===Yr?Ls():t,n=n===Yr?Ls():n,this.j7z_1=t,this.k7z_1=n}function Zp(){On=this,this.n7z_1=[null,new Go(Ip())]}function Qp(){return null==On&&new Zp,On}function tm(){zn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsHttpMethod",this,2);t.s3c("url",!1),t.t3c(new ku("href","http://www.w3.org/1999/xlink","xlink")),t.s3c("constraints",!0),this.o7z_1=t}function nm(){return null==zn&&new tm,zn}function im(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Wo(t,1,nm().o7z_1),r.s7s_1=n,r.t7s_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(em)))}function em(){}function rm(){An=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsOnlineResource",this,1);t.s3c("url",!1),t.t3c(new ku("href","http://www.w3.org/1999/xlink","xlink")),t.u3c(new ku("OnlineResource","http://www.opengis.net/ows/1.1","ows")),this.p7z_1=t}function sm(){return null==An&&new rm,An}function om(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Wo(t,1,sm().p7z_1),e.q7z_1=n,e}(t,n,0,Ts(Pr(um)))}function um(){}function am(){Tn=this,this.r7z_1=[null,new Go(Up())]}function hm(){return null==Tn&&new am,Tn}function _m(){In=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsOperation",this,2);t.s3c("name",!1),t.s3c("dcps",!0),t.u3c(new ku("Operation","http://www.opengis.net/ows/1.1","ows")),this.s7z_1=t}function lm(){return null==In&&new _m,In}function cm(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Wo(t,1,lm().s7z_1),r.o7s_1=n,r.p7s_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(fm)))}function fm(){}function vm(){Dn=this,this.t7z_1=[new Go(lm())]}function dm(){return null==Dn&&new vm,Dn}function wm(){jn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsOperationsMetadata",this,1);t.s3c("operations",!0),t.u3c(new ku("OperationsMetadata","http://www.opengis.net/ows/1.1","ows")),this.u7z_1=t}function pm(){return null==jn&&new wm,jn}function mm(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Wo(t,0,pm().u7z_1),e.m7s_1=0==(1&t)?Ls():n,e}(t,n,0,Ts(Pr(gm)))}function gm(t){dm(),t=t===Yr?Ls():t,this.m7s_1=t}function bm(){Mn=this,this.v7z_1=[new Go(Uo()),new Go(Uo())]}function $m(){return null==Mn&&new bm,Mn}function ym(){Nn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsPhone",this,2);t.s3c("voice",!0),t.t3c(new yu(!0)),t.t3c(new ku("Voice","http://www.opengis.net/ows/1.1","ows")),t.s3c("fax",!0),t.t3c(new yu(!0)),t.t3c(new ku("Facsimile","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("Phone","http://www.opengis.net/ows/1.1","ows")),this.w7z_1=t}function km(){return null==Nn&&new ym,Nn}function xm(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Wo(t,0,km().w7z_1),r.x7z_1=0==(1&t)?Ls():n,r.y7z_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(Sm)))}function Sm(t,n){$m(),t=t===Yr?Ls():t,n=n===Yr?Ls():n,this.x7z_1=t,this.y7z_1=n}function Em(){}function Cm(){Rn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsServiceContact",this,4);t.s3c("individualName",!0),t.t3c(new yu(!0)),t.t3c(new ku("IndividualName","http://www.opengis.net/ows/1.1","ows")),t.s3c("positionName",!0),t.t3c(new yu(!0)),t.t3c(new ku("PositionName","http://www.opengis.net/ows/1.1","ows")),t.s3c("contactInfo",!0),t.s3c("role",!0),t.t3c(new yu(!0)),t.t3c(new ku("Role","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("ServiceContact","http://www.opengis.net/ows/1.1","ows")),this.z7z_1=t}function qm(){return null==Rn&&new Cm,Rn}function Om(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 0!=(0&t)&&Wo(t,0,qm().z7z_1),o.a80_1=0==(1&t)?null:n,o.b80_1=0==(2&t)?null:i,o.c80_1=0==(4&t)?null:e,o.d80_1=0==(8&t)?null:r,o}(t,n,i,e,r,0,Ts(Pr(zm)))}function zm(t,n,i,e){t=t===Yr?null:t,n=n===Yr?null:n,i=i===Yr?null:i,e=e===Yr?null:e,this.a80_1=t,this.b80_1=n,this.c80_1=i,this.d80_1=e}function Am(){Pn=this,this.e80_1=[null,null,new Go(Uo()),null,new Go(Uo()),null,new Go(Uo())]}function Tm(){return null==Pn&&new Am,Pn}function Im(){Ln=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsServiceIdentification",this,7);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("serviceType",!1),t.t3c(new yu(!0)),t.t3c(new ku("ServiceType","http://www.opengis.net/ows/1.1","ows")),t.s3c("serviceTypeVersions",!0),t.t3c(new ku("ServiceTypeVersion","http://www.opengis.net/ows/1.1","ows")),t.s3c("fees",!0),t.t3c(new yu(!0)),t.t3c(new ku("Fees","http://www.opengis.net/ows/1.1","ows")),t.s3c("accessConstraints",!0),t.t3c(new ku("AccessConstraints","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("ServiceIdentification","http://www.opengis.net/ows/1.1","ows")),this.f80_1=t}function Dm(){return null==Ln&&new Im,Ln}function jm(t,n,i,e,r,s,o,u,a){return function(t,n,i,e,r,s,o,u,a,h){return 8!=(8&t)&&Wo(t,8,Dm().f80_1),Bp.call(h),h.g80_1=0==(1&t)?null:n,h.h80_1=0==(2&t)?null:i,h.i80_1=0==(4&t)?Ls():e,h.j80_1=r,h.k80_1=0==(16&t)?Ls():s,h.l80_1=0==(32&t)?null:o,h.m80_1=0==(64&t)?Ls():u,h}(t,n,i,e,r,s,o,u,0,Ts(Pr(Mm)))}function Mm(){}function Nm(){Fn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsServiceProvider",this,3);t.s3c("providerName",!1),t.t3c(new yu(!0)),t.t3c(new ku("ProviderName","http://www.opengis.net/ows/1.1","ows")),t.s3c("onlineResource",!0),t.t3c(new ku("ProviderSite","http://www.opengis.net/ows/1.1","ows")),t.s3c("serviceContact",!1),t.u3c(new ku("ServiceProvider","http://www.opengis.net/ows/1.1","ows")),this.n80_1=t}function Rm(){return null==Fn&&new Nm,Fn}function Pm(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Wo(t,5,Rm().n80_1),s.o80_1=n,s.p80_1=0==(2&t)?null:i,s.q80_1=e,s}(t,n,i,e,0,Ts(Pr(Lm)))}function Lm(){}function Fm(){Un=this,this.r80_1=[null,null,null,null,null,null,new Go(qg()),new Go(sm())]}function Um(){return null==Un&&new Fm,Un}function Hm(){Hn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsCapabilities",this,8);t.s3c("version",!1),t.s3c("updateSequence",!0),t.s3c("serviceIdentification",!0),t.s3c("serviceProvider",!0),t.s3c("operationsMetadata",!0),t.s3c("contents",!1),t.s3c("themes",!0),t.t3c(new ku("Themes","http://www.opengis.net/wmts/1.0","")),t.t3c(new Au("Theme","http://www.opengis.net/wmts/1.0","")),t.s3c("serviceMetadataUrls",!0),t.t3c(new ku("ServiceMetadataURL","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("Capabilities","http://www.opengis.net/wmts/1.0","")),this.s80_1=t}function Vm(){return null==Hn&&new Hm,Hn}function Bm(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){33!=(33&t)&&Wo(t,33,Vm().s80_1),_.e7s_1=n,_.f7s_1=0==(2&t)?null:i,_.g7s_1=0==(4&t)?null:e,_.h7s_1=0==(8&t)?null:r,_.i7s_1=0==(16&t)?null:s,_.j7s_1=o,_.k7s_1=0==(64&t)?Ls():u,_.l7s_1=0==(128&t)?Ls():a;for(var l=_.t5s().v();l.w();)l.y().j7q_1=_;return _}(t,n,i,e,r,s,o,u,a,0,Ts(Pr(Ym)))}function Ym(t,n,i,e,r,s,o,u){Um(),n=n===Yr?null:n,i=i===Yr?null:i,e=e===Yr?null:e,r=r===Yr?null:r,o=o===Yr?Ls():o,u=u===Yr?Ls():u,this.e7s_1=t,this.f7s_1=n,this.g7s_1=i,this.h7s_1=e,this.i7s_1=r,this.j7s_1=s,this.k7s_1=o,this.l7s_1=u;for(var a=this.t5s().v();a.w();)a.y().j7q_1=this}function Wm(){Vn=this,this.w80_1=[new Go(ag()),new Go(Vg())]}function Gm(){return null==Vn&&new Wm,Vn}function Km(){Bn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsContents",this,2);t.s3c("layers",!0),t.s3c("tileMatrixSets",!0),t.u3c(new ku("Contents","http://www.opengis.net/wmts/1.0","")),this.x80_1=t}function Xm(){return null==Bn&&new Km,Bn}function Jm(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Wo(t,0,Xm().x80_1),r.t80_1=0==(1&t)?Ls():n,r.u80_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(Zm)))}function Zm(t,n){Gm(),t=t===Yr?Ls():t,n=n===Yr?Ls():n,this.t80_1=t,this.u80_1=n}function Qm(){Yn=this,this.y80_1=[null,null,new Go(Uo()),null,null,null,null,null,new Go(Uo())]}function tg(){return null==Yn&&new Qm,Yn}function ng(){Wn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsDimension",this,9);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("unitOfMeasure",!0),t.t3c(new yu(!0)),t.t3c(new ku("UOM","http://www.opengis.net/ows/1.1","ows")),t.s3c("unitSymbol",!0),t.t3c(new yu(!0)),t.t3c(new ku("UnitSymbol","http://www.opengis.net/wmts/1.0","")),t.s3c("valueDefault",!0),t.t3c(new yu(!0)),t.t3c(new ku("Default","http://www.opengis.net/wmts/1.0","")),t.s3c("current",!0),t.t3c(new yu(!0)),t.t3c(new ku("Current","http://www.opengis.net/wmts/1.0","")),t.s3c("values",!0),t.t3c(new ku("Value","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("Dimension","http://www.opengis.net/wmts/1.0","")),this.z80_1=t}function ig(){return null==Wn&&new ng,Wn}function eg(t,n,i,e,r,s,o,u,a,h,_){return function(t,n,i,e,r,s,o,u,a,h,_,l){return 8!=(8&t)&&Wo(t,8,ig().z80_1),Bp.call(l),l.a81_1=0==(1&t)?null:n,l.b81_1=0==(2&t)?null:i,l.c81_1=0==(4&t)?Ls():e,l.d81_1=r,l.e81_1=0==(16&t)?null:s,l.f81_1=0==(32&t)?null:o,l.g81_1=0==(64&t)?null:u,l.h81_1=0==(128&t)?null:a,l.i81_1=0==(256&t)?Ls():h,l}(t,n,i,e,r,s,o,u,a,h,0,Ts(Pr(rg)))}function rg(){}function sg(){Gn=this,this.j81_1=[null,null,new Go(Uo()),null,new Go(Cp()),null,new Go(sm()),new Go(yg()),new Go(Uo()),new Go(Uo()),new Go(Xg()),new Go(wg()),new Go(ig())]}function og(){return null==Gn&&new sg,Gn}function ug(){Kn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsLayer",this,13);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("boundingBoxes",!0),t.s3c("wgs84BoundingBox",!0),t.t3c(new ku("WGS84BoundingBox","http://www.opengis.net/ows/1.1","ows")),t.s3c("metadata",!0),t.t3c(new ku("Metadata","http://www.opengis.net/ows/1.1","ows")),t.s3c("styles",!0),t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wmts/1.0","")),t.s3c("infoFormats",!0),t.t3c(new ku("InfoFormat","http://www.opengis.net/wmts/1.0","")),t.s3c("tileMatrixSetLinks",!0),t.s3c("resourceUrls",!0),t.s3c("dimensions",!0),t.u3c(new ku("Layer","http://www.opengis.net/wmts/1.0","")),this.k81_1=t}function ag(){return null==Kn&&new ug,Kn}function hg(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v){return function(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v,d){return 8!=(8&t)&&Wo(t,8,ag().k81_1),Bp.call(d),d.w7p_1=0==(1&t)?null:n,d.x7p_1=0==(2&t)?null:i,d.y7p_1=0==(4&t)?Ls():e,d.z7p_1=r,d.a7q_1=0==(16&t)?Ls():s,d.b7q_1=0==(32&t)?null:o,d.c7q_1=0==(64&t)?Ls():u,d.d7q_1=0==(128&t)?Ls():a,d.e7q_1=0==(256&t)?Ls():h,d.f7q_1=0==(512&t)?Ls():_,d.g7q_1=0==(1024&t)?Ls():l,d.h7q_1=0==(2048&t)?Ls():c,d.i7q_1=0==(4096&t)?Ls():f,d}(t,n,i,e,r,s,o,u,a,h,_,l,c,f,0,Ts(Pr(_g)))}function _g(){}function lg(){Xn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsLegendURL",this,2);t.s3c("url",!1),t.t3c(new ku("href","http://www.w3.org/1999/xlink","xlink")),t.s3c("format",!1),t.u3c(new ku("LegendURL","http://www.opengis.net/wmts/1.0","")),this.n81_1=t}function cg(){return null==Xn&&new lg,Xn}function fg(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Wo(t,3,cg().n81_1),r.o81_1=n,r.p81_1=i,r}(t,n,i,0,Ts(Pr(vg)))}function vg(){}function dg(){Jn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsResourceUrl",this,3);t.s3c("format",!1),t.s3c("resourceType",!1),t.s3c("template",!1),t.u3c(new ku("ResourceURL","http://www.opengis.net/wmts/1.0","")),this.q81_1=t}function wg(){return null==Jn&&new dg,Jn}function pg(t,n,i,e,r){return function(t,n,i,e,r,s){return 7!=(7&t)&&Wo(t,7,wg().q81_1),s.l7q_1=n,s.m7q_1=i,s.n7q_1=e,s}(t,n,i,e,0,Ts(Pr(mg)))}function mg(){}function gg(){Zn=this,this.r81_1=[null,null,new Go(Uo()),null,null,new Go(cg())]}function bg(){return null==Zn&&new gg,Zn}function $g(){Qn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsStyle",this,6);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("isDefault",!0),t.s3c("legendUrls",!0),t.u3c(new ku("Style","http://www.opengis.net/wmts/1.0","")),this.s81_1=t}function yg(){return null==Qn&&new $g,Qn}function kg(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 8!=(8&t)&&Wo(t,8,yg().s81_1),Bp.call(a),a.o7q_1=0==(1&t)?null:n,a.p7q_1=0==(2&t)?null:i,a.q7q_1=0==(4&t)?Ls():e,a.r7q_1=r,a.s7q_1=0!=(16&t)&&s,a.t7q_1=0==(32&t)?Ls():o,a}(t,n,i,e,r,s,o,0,Ts(Pr(xg)))}function xg(){}function Sg(){ti=this,this.t81_1=[null,null,new Go(Uo()),null,null,new Go(Uo())]}function Eg(){return null==ti&&new Sg,ti}function Cg(){ni=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsTheme",this,6);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("themes",!0),t.s3c("layerRefs",!0),t.t3c(new ku("LayerRef","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("Theme","http://www.opengis.net/wmts/1.0","")),this.u81_1=t}function qg(){return null==ni&&new Cg,ni}function Og(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 8!=(8&t)&&Wo(t,8,qg().u81_1),Bp.call(a),a.v81_1=0==(1&t)?null:n,a.w81_1=0==(2&t)?null:i,a.x81_1=0==(4&t)?Ls():e,a.y81_1=r,a.z81_1=0==(16&t)?Ls():s,a.a82_1=0==(32&t)?Ls():o,a}(t,n,i,e,r,s,o,0,Ts(Pr(zg)))}function zg(){}function Ag(){ii=this,this.b82_1=[null,null,new Go(Uo()),null,null,null,null,null,null,null]}function Tg(){return null==ii&&new Ag,ii}function Ig(){ei=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsTileMatrix",this,10);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("scaleDenominator",!1),t.t3c(new yu(!0)),t.t3c(new ku("ScaleDenominator","http://www.opengis.net/wmts/1.0","")),t.s3c("topLeftCorner",!1),t.t3c(new yu(!0)),t.t3c(new ku("TopLeftCorner","http://www.opengis.net/wmts/1.0","")),t.s3c("tileWidth",!1),t.t3c(new yu(!0)),t.t3c(new ku("TileWidth","http://www.opengis.net/wmts/1.0","")),t.s3c("tileHeight",!1),t.t3c(new yu(!0)),t.t3c(new ku("TileHeight","http://www.opengis.net/wmts/1.0","")),t.s3c("matrixWidth",!1),t.t3c(new yu(!0)),t.t3c(new ku("MatrixWidth","http://www.opengis.net/wmts/1.0","")),t.s3c("matrixHeight",!1),t.t3c(new yu(!0)),t.t3c(new ku("MatrixHeight","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("TileMatrix","http://www.opengis.net/wmts/1.0","")),this.c82_1=t}function Dg(){return null==ei&&new Ig,ei}function jg(t,n,i,e,r,s,o,u,a,h,_,l){return function(t,n,i,e,r,s,o,u,a,h,_,l,c){return 1016!=(1016&t)&&Wo(t,1016,Dg().c82_1),Bp.call(c),c.u7r_1=0==(1&t)?null:n,c.v7r_1=0==(2&t)?null:i,c.w7r_1=0==(4&t)?Ls():e,c.x7r_1=r,c.y7r_1=s,c.z7r_1=o,c.a7s_1=u,c.b7s_1=a,c.c7s_1=h,c.d7s_1=_,c}(t,n,i,e,r,s,o,u,a,h,_,0,Ts(Pr(Mg)))}function Mg(){}function Ng(){ri=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsTileMatrixLimits",this,5);t.s3c("tileMatrixIdentifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("TileMatrix","http://www.opengis.net/wmts/1.0","")),t.s3c("minTileRow",!1),t.t3c(new yu(!0)),t.t3c(new ku("MinTileRow","http://www.opengis.net/wmts/1.0","")),t.s3c("maxTileRow",!1),t.t3c(new yu(!0)),t.t3c(new ku("MaxTileRow","http://www.opengis.net/wmts/1.0","")),t.s3c("minTileCol",!1),t.t3c(new yu(!0)),t.t3c(new ku("MinTileCol","http://www.opengis.net/wmts/1.0","")),t.s3c("maxTileCol",!1),t.t3c(new yu(!0)),t.t3c(new ku("MaxTileCol","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),this.d82_1=t}function Rg(){return null==ri&&new Ng,ri}function Pg(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){return 31!=(31&t)&&Wo(t,31,Rg().d82_1),u.e82_1=n,u.f82_1=i,u.g82_1=e,u.h82_1=r,u.i82_1=s,u}(t,n,i,e,r,s,0,Ts(Pr(Lg)))}function Lg(){}function Fg(){si=this,this.j82_1=[null,null,new Go(Uo()),null,null,null,null,new Go(Dg())]}function Ug(){return null==si&&new Fg,si}function Hg(){oi=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsTileMatrixSet",this,8);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("supportedCrs",!1),t.t3c(new yu(!0)),t.t3c(new ku("SupportedCRS","http://www.opengis.net/ows/1.1","ows")),t.s3c("wellKnownScaleSet",!0),t.t3c(new yu(!0)),t.t3c(new ku("WellKnownScaleSet","http://www.opengis.net/wmts/1.0","")),t.s3c("boundingBox",!0),t.s3c("tileMatrices",!0),t.u3c(new ku("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),this.k82_1=t}function Vg(){return null==oi&&new Hg,oi}function Bg(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){return 24!=(24&t)&&Wo(t,24,Vg().k82_1),Bp.call(_),_.m7r_1=0==(1&t)?null:n,_.n7r_1=0==(2&t)?null:i,_.o7r_1=0==(4&t)?Ls():e,_.p7r_1=r,_.q7r_1=s,_.r7r_1=0==(32&t)?null:o,_.s7r_1=0==(64&t)?null:u,_.t7r_1=0==(128&t)?Ls():a,_}(t,n,i,e,r,s,o,u,a,0,Ts(Pr(Yg)))}function Yg(){}function Wg(){ui=this,this.l82_1=[null,new Go(Rg())]}function Gg(){return null==ui&&new Wg,ui}function Kg(){ai=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsTileMatrixSetLink",this,2);t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),t.s3c("tileMatrixSetLimits",!0),t.t3c(new ku("TileMatrixSetLimits","http://www.opengis.net/wmts/1.0","")),t.t3c(new Au("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("TileMatrixSetLink","http://www.opengis.net/wmts/1.0","")),this.m82_1=t}function Xg(){return null==ai&&new Kg,ai}function Jg(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Wo(t,1,Xg().m82_1),r.l81_1=n,r.m81_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(Zg)))}function Zg(){}function Qg(t){t=t===Yr?null:t,this.s71_1=t,this.t71_1=!0,this.u71_1=!0,this.v71_1=null,this.w71_1=null}function tb(){return new a_}function nb(){return new Float32Array(2)}function ib(t,n){n=n===Yr?null:n,Qg.call(this,n),this.t82_1=W_(t),this.u82_1=vo(tb),this.v82_1=vo(nb),this.w82_1=new Hr(0,0),this.x82_1=0,this.y82_1=null,this.z82_1=null}function eb(){return t=Ts(Pr(ub)),ub.call(t,1,1,1,1),t;var t}function rb(t,n,i,e){return function(t,n,i,e,r){return e=e===Yr?255:e,ub.call(r,t/255,n/255,i/255,e/255),r}(t,n,i,e,Ts(Pr(ub)))}function sb(t){return function(t,n){return ub.call(n,t.z51_1,t.a52_1,t.b52_1,t.c52_1),n}(t,Ts(Pr(ub)))}function ob(){}function ub(t,n,i,e){e=e===Yr?1:e,this.z51_1=t,this.a52_1=n,this.b52_1=i,this.c52_1=e}function ab(){if(ci)return Xr;ci=!0,hi=new hb("NORMAL",0),_i=new hb("BOLD",1),li=new hb("ITALIC",2)}function hb(t,n){ds.call(this,t,n)}function _b(){return ab(),hi}function lb(){return ab(),_i}function cb(){this.q5f_1=uE().r5e_1,this.r5f_1=Kr()}function fb(){this.j83_1=16777215}function vb(t,n){t=t===Yr?null:t,n=n===Yr?null:n,this.k83_1=t,this.l83_1=n}function db(){return Ki.k85()}function wb(){this.r5a_1=1,this.s5a_1=1,this.t5a_1=0,this.u5a_1=0,this.v5a_1=0,this.w5a_1=0,this.x5a_1=null,this.y5a_1=null,this.z5a_1=new Hr(0,0),this.a5b_1=il(),this.b5b_1=rl(),this.c5b_1=z_(),this.d5b_1=z_(),this.e5b_1=z_(),this.f5b_1=v_(),this.g5b_1=null,this.h5b_1=null,this.i5b_1=null,this.j5b_1=null,this.k5b_1=null,this.l5b_1=null,this.m5b_1=null,this.n5b_1=!1,this.o5b_1=!1,this.p5b_1=0,this.q5b_1=0,this.r5b_1=Kr(),this.s5b_1=Kr(),this.t5b_1=new DS(this),this.u5b_1=new vb,this.v5b_1=il(),this.w5b_1=vo(db)}function pb(){}function mb(){}function gb(t,n,i,e,r){r=r!==Yr&&r,this.f5f_1=t,this.g5f_1=n,this.h5f_1=i,this.i5f_1=e,this.j5f_1=r,this.k5f_1=E_(),this.l5f_1=rE().t5e_1,this.m5f_1=null,this.n5f_1=!1,this.o5f_1=!1}function bb(t,n){this.e5m_1=t,this.f5m_1=n,this.g5m_1=Kr(),this.h5m_1=nE().u5e_1}function $b(t,n){return!(!t.a5g_1[t.b5g_1].e83()&&!function(t,n){var i=n.m55_1.p86();return!!i.e83()&&(n.m55_1.q5g(t.w5f_1,i),n.m55_1.r86(t.w5f_1,t.y5f_1,null,t.x5f_1),n.m55_1.q5g(t.w5f_1,nE().u5e_1),t.a5g_1[t.b5g_1]=i,i.e83())}(t,n)||(t.c5g_1=0,0))}function yb(){this.t86_1=65536,this.u86_1=64}function kb(t,n,i,e){i=i===Yr?65536:i,e=e===Yr?64:e,this.w5f_1=t,this.x5f_1=n,this.y5f_1=i,this.z5f_1=e;for(var r=0,s=this.z5f_1,o=hs(Array(s),null);r=0&&i>=0)){var r=kr.n54(kr.i54_1,"Ellipse","constructor","invalidRadius");throw is(Gr(r))}}function Wb(){}function Gb(){xi=this,this.u8a_1=-.1,this.v8a_1=new Xb}function Kb(){return null==xi&&new Gb,xi}function Xb(){this.w8a_1=il(),this.x8a_1=il(),this.y8a_1=tl(),this.z8a_1=z_(),this.a8b_1=rl(),this.b8b_1=0,this.c8b_1=eb(),this.d8b_1=0}function Jb(t,n,i){Kb(),n=n===Yr?null:n,i=i===Yr?x$():i,Qg.call(this),this.d6t_1=n,this.e6t_1=i,this.f6t_1=F_(t),this.g6t_1=Nh(),this.h6t_1=Uh().j58_1,this.i6t_1=e$(),this.j6t_1=!1,this.k6t_1=null,this.m6t_1=!1}function Zb(){}function Qb(t,n,i){i=i===Yr?$$():i,Qg.call(this),this.m8b_1=i,this.n8b_1=F_(t),this.o8b_1=n,this.p8b_1=Nh(),this.q8b_1=!1,this.r8b_1=null;var e=$$();if(e.p6v_1.f5i(new ub(1,0,0,1)),this.s8b_1=e,this.u8b_1=il(),this.v8b_1=0,this.w8b_1=eb(),this.x8b_1=new h_,!(n>=0)){var r=kr.n54(kr.i54_1,"OmnidirectionalSightline","constructor","invalidRange");throw is(Gr(r))}}function t$(){if(Ci)return Xr;Ci=!0,Si=new n$("RELATIVE_TO_GLOBE",0),Ei=new n$("RELATIVE_TO_SCREEN",1)}function n$(t,n){ds.call(this,t,n)}function i$(){return t$(),Si}function e$(){return t$(),Ei}function r$(){qi=this,this.a8c_1=4;var t=new zb;t.d87_1=Ib(),t.e87_1=Mb(),this.b8c_1=t}function s$(){return null==qi&&new r$,qi}function o$(t,n){s$(),n=n===Yr?$$():n,Hb.call(this,n),this.x8c_1=t,this.y8c_1=new Float32Array(0),this.z8c_1=0,this.a8d_1=_s(),this.b8d_1=_s(),this.c8d_1=_s(),this.f8d_1=il(),this.g8d_1=0,this.h8d_1=il(),this.i8d_1=il(),this.j8d_1=E_(),this.k8d_1=m_()}function u$(){if(Ai)return Xr;Ai=!0,Oi=new a$("GREAT_CIRCLE",0),zi=new a$("LINEAR",1),new a$("RHUMB_LINE",2)}function a$(t,n){ds.call(this,t,n)}function h$(){return u$(),Oi}function _$(){return u$(),zi}function l$(){Ti=this,this.p8d_1=4e5,this.q8d_1=-.03,this.r8d_1=il(),this.s8d_1=il(),this.t8d_1=il(),this.u8d_1=il(),this.v8d_1=tl(),this.w8d_1=z_(),this.x8d_1=z_(),this.y8d_1=rl(),this.z8d_1=rl()}function c$(){return null==Ti&&new l$,Ti}function f$(t,n,i){var e;c$(),n=n===Yr?v$():n,e=!1!==(null==(i=i===Yr?null:i)?null:0===Eo(i))?"Placemark":i,Qg.call(this,e),this.r8e_1=n,this.s8e_1=F_(t),this.t8e_1=Nh(),this.u8e_1=null,this.v8e_1=!1,this.w8e_1=null,this.x8e_1=null,this.y8e_1=!1,this.z8e_1=4e5,this.a8f_1=6e5,this.b8f_1=!1,this.c8f_1=!1,this.d8f_1=!1,this.e8f_1=Uh().j58_1,this.f8f_1=e$(),this.g8f_1=Uh().j58_1,this.h8f_1=e$(),this.j8f_1=0,this.k8f_1=eb(),this.l8f_1=0}function v$(){return t=Ts(Pr(w$)),w$.call(t,null,new ub(1,1,1,1),U.v5w(),1,0,!0,!1,!0,x$(),$$()),t;var t}function d$(){}function w$(t,n,i,e,r,s,o,u,a,h){this.b8e_1=t,this.c8e_1=e,this.d8e_1=r,this.e8e_1=s,this.f8e_1=o,this.g8e_1=u,this.h8e_1=n,this.i8e_1=i,this.j8e_1=a,this.k8e_1=h}function p$(){Di=this,this.w8f_1=6;var t=new zb;t.e87_1=Mb(),this.x8f_1=t;var n=new zb;n.e87_1=Mb(),n.d87_1=Ib(),this.y8f_1=n,this.z8f_1=0,this.a8g_1=1,this.b8g_1=2}function m$(){return null==Di&&new p$,Di}function g$(t){this.c8g_1=t,Dy.call(this)}function b$(t,n){m$(),t=t===Yr?Ls():t,n=n===Yr?$$():n,Hb.call(this,n),this.z8g_1=Co([t]),this.a8h_1=new Float32Array(0),this.b8h_1=0,this.c8h_1=_s(),this.d8h_1=_s(),this.e8h_1=_s(),this.f8h_1=_s(),this.g8h_1=m$().u7g(),this.h8h_1=m$().u7g(),this.i8h_1=il(),this.j8h_1=0,this.k8h_1=0,this.l8h_1=new g$(this),this.m8h_1=il(),this.n8h_1=il(),this.o8h_1=il(),this.p8h_1=E_(),this.q8h_1=z_(),this.r8h_1=m_(),this.s8h_1=new Float64Array(3),this.t8h_1=new Int32Array(3),this.u8h_1=Hu(3),this.v8h_1=!0,this.w8h_1=0}function $$(){return t=Ts(Pr(y$)),y$.call(t,!0,!0,!1,!0,!0,!1,new ub(1,1,1,1),new ub(1,0,0,1),1,null,null),t;var t}function y$(t,n,i,e,r,s,o,u,a,h,_){this.g6v_1=t,this.h6v_1=n,this.i6v_1=i,this.j6v_1=e,this.k6v_1=r,this.l6v_1=s,this.m6v_1=a,this.n6v_1=h,this.o6v_1=_,this.p6v_1=o,this.q6v_1=u}function k$(t,n){ib.call(this,t,"Surface Image"),this.i6k_1=n,this.j6k_1=null,this.k6k_1=Y_()}function x$(){return t=Ts(Pr(E$)),E$.call(t,xS(),new ub(1,1,1,1),U.x5w(),new ub(0,0,0,1),3,!0,!0,1),t;var t}function S$(t){return function(t,n){return E$.call(n,t.y6u_1,sb(t.z6u_1),T_(t.a6v_1),sb(t.b6v_1),t.u6u_1,t.v6u_1,t.w6u_1,t.x6u_1),n}(t,Ts(Pr(E$)))}function E$(t,n,i,e,r,s,o,u){this.u6u_1=r,this.v6u_1=s,this.w6u_1=o,this.x6u_1=u,this.y6u_1=t,this.z6u_1=n,this.a6v_1=i,this.b6v_1=e}function C$(){ji=this,this.h8j_1=3;Zs(),this.i8j_1=to(5,Qs());Zs(),this.j8j_1=to(15,Qs())}function q$(t,n){null==ji&&new C$,Qg.call(this,"Tiled Surface Image"),this.s7c_1=t,this.t7c_1=n,this.u7c_1=null,this.v7c_1=1,this.w7c_1=!0,this.x7c_1=!0,this.y7c_1=null,this.z7c_1=!1,this.a7d_1=new B$(new Hr(1200,0)),this.b7d_1=null,this.c7d_1=null,this.d7d_1=null,this.e7d_1=E_(),this.f7d_1=_s(),this.g7d_1=null}function O$(t){this.n8j_1=t,this.k8j_1=js.a3k(),this.l8j_1=0,this.m8j_1=!1}function z$(t,n){this.z6b_1=t,this.a6c_1=n;Zs(),this.b6c_1=to(60,Qs()),this.c6c_1=Kr()}function A$(t){this.k7c_1=t,this.l7c_1=null}function T$(){return new a_}function I$(){return new Float32Array(2)}function D$(t){this.r6e_1=t,this.s6e_1=vo(T$),this.t6e_1=vo(I$),this.u6e_1=new Hr(0,0),this.v6e_1=0,this.w6e_1=null,this.x6e_1=null,this.y6e_1=il()}function j$(){this.q8j_1=12}function M$(){this.r8j_1=0;var t=this.r8j_1;this.s8j_1=hs(Array(t),null)}function N$(t,n,i){this.z6e_1=t,this.a6f_1=n,this.b6f_1=i,this.c6f_1=Wr(this.z6e_1.x6g_1*this.z6e_1.u6g_1.s5p()/this.b6f_1.c54_1),this.d6f_1=Wr(this.z6e_1.y6g_1*this.z6e_1.u6g_1.t5p()/this.b6f_1.b54_1),this.e6f_1=this.z6e_1.x6g_1,this.f6f_1=this.z6e_1.y6g_1,this.g6f_1=Lh(this.b6f_1.c54_1)/this.z6e_1.x6g_1}function R$(t,n,i,e,r,s,o,u){if(o=o===Yr?0:o,L$.call(u),!(i.b54_1>0&&i.c54_1>0)){var a=kr.n54(kr.i54_1,"LevelSet","constructor","invalidTileDelta");throw is(Gr(a))}if(!(e>=0)){var h=kr.n54(kr.i54_1,"LevelSet","constructor","invalidNumLevels");throw is(Gr(h))}if(!(r>=1&&s>=1)){var _=kr.n54(kr.i54_1,"LevelSet","constructor","invalidWidthOrHeight");throw is(Gr(_))}u.u6g_1=t,u.v6g_1=n,u.w6g_1=i,u.x6g_1=r,u.y6g_1=s,u.z6g_1=o;for(var l=u,c=0,f=hs(Array(e),null);c=0)){var s=kr.n54(kr.i54_1,"LruMemoryCache","constructor","invalidCapacity");throw is(Gr(s))}var o=this.y5s_1,u=this.z5s_1;if(!(new Hr(0,0).z9(u)<=0&&u.z9(o)<0)){var a=kr.n54(kr.i54_1,"LruMemoryCache","constructor","The specified low-water value is greater than or equal to the capacity, or less than 1");throw is(Gr(a))}}function Y$(){return Ni||(Ni=!0,Mi=Ds([Is("errorReadingProgramSource","Error reading program sources"),Is("exceptionParsingText","Exception parsing text"),Is("invalidBitmap","The bitmap is recycled"),Is("invalidCapacity","The capacity is less than 1"),Is("invalidCount","The count is invalid"),Is("invalidClipDistance","The clip distance is invalid"),Is("invalidFieldOfView","The field of view is invalid"),Is("invalidHeight","The height is invalid"),Is("invalidIndex","The index is invalid"),Is("invalidNumIntervals","The number of intervals is invalid"),Is("invalidNumLevels","The number of levels is invalid"),Is("invalidRadius","The radius is invalid"),Is("invalidRange","The range is invalid"),Is("invalidResolution","The resolution is invalid"),Is("invalidStride","The stride is invalid"),Is("invalidTileDelta","The tile delta is invalid"),Is("invalidWidth","The width is invalid"),Is("invalidWidthOrHeight","The width or the height is invalid"),Is("missingArray","The array insufficient length"),Is("missingLayerNames","The layer names are empty"),Is("singularMatrix","The matrix cannot be inverted")])),Mi}function W$(){}function G$(t,n){this.z7g_1=t,this.a7h_1=n}function K$(){}function X$(){this.c6h_1=!0}function J$(t,n,i,e){D$.call(this,t),this.p6f_1=n,this.q6f_1=i,this.r6f_1=e,this.s6f_1=this.p6f_1.a6f_1+"."+this.q6f_1+"."+this.r6f_1,this.t6f_1=il()}function Z$(t,n,i,e){if(n=n===Yr?t.a():n,i=i===Yr?t.a()-1|0:i,e=e===Yr||e,i<0)return t.v7(0,No(49)),e&&t.c8(n),Is(t.toString(),!0);var r=t.b(i);return r===No(46)?Z$(t,n,i-1|0,e):r!==No(57)?(t.b8(i,Ku(r,1)),Is(t.toString(),!1)):(t.b8(i,No(48)),Z$(t,n,i-1|0,e))}function Q$(t,n){t.i8k_1=n,t.k8k_1="e"+t.i8k_1}function ty(t,n){var i=n;i>t.j8k_1.length&&(i=t.j8k_1.length);var e=new Bs(Xu(t.j8k_1,qs(0,i)));if(e.a()===t.j8k_1.length)return e.toString();var r=Hs(t.j8k_1,e.a());if(r===No(46)){if((e.a()+1|0)>=t.j8k_1.length)return e.toString();r=Hs(t.j8k_1,e.a()+1|0)}if(Zu("56789",r)){var s=Z$(e),o=s.oe();if(!s.pe())return o;Q$(t,t.i8k_1+1|0);var u=Ju(o,No(46)),a=new Bs(o);return-1===u?o:a.c8(u).v7(u-1|0,No(46)).toString()}return e.toString()}function ny(t){this.g8k_1=t,this.i8k_1=0;var n=this.g8k_1,i=Math.abs(n),e=Dr(i);Q$(this,ks(e)),this.i8k_1<0&&Q$(this,this.i8k_1-1|0);var r=this.i8k_1;this.h8k_1=i/Math.pow(10,r),this.g8k_1<0&&(this.h8k_1=-this.h8k_1),this.j8k_1=this.h8k_1.toString(),this.k8k_1="e"+this.i8k_1}function iy(){if(Hi)return Xr;Hi=!0,Li=new uy("FLAGS",0),Fi=new uy("LENGTH",1),Ui=new uy("FRACTION",2)}function ey(t){var n=t.m8k_1;return po("englishMonthNames",1,wo,(function(t){return ey(t)}),null),n.h2()}function ry(t){var n=t.n8k_1;return po("englishWeekDayNames",1,wo,(function(t){return ry(t)}),null),n.h2()}function sy(){return ta("January February March April May June July August September October November December",Qu([No(32)]))}function oy(){return ta("Monday Tuesday Wednesday Thursday Friday Saturday Sunday",Qu([No(32)]))}function uy(t,n){ds.call(this,t,n)}function ay(t){return t.q8k_1.equals(Sy())}function hy(t,n){t.o8k_1.f8l(n)}function _y(t){return t.o8k_1.g8l(t.p8k_1)}function ly(t,n){var i,e=t.o8k_1.se();if(py(t),e===No(72))i=Ay("%02d",[_y(t).j3l()]);else if(e===No(107))i=Ay("%d",[_y(t).j3l()]);else if(e===No(73)||e===No(108)){var r=_y(t).j3l();r>12&&(r=r-12|0),i=e===No(73)?Ay("%02d",[r]):r.toString()}else if(e===No(77))i=Ay("%02d",[_y(t).k3l()]);else if(e===No(83))i=Ay("%02d",[_y(t).l3l()]);else if(e===No(76))i=Ay("%03d",[_y(t).m3l()/1e6|0]);else if(e===No(78))i=Ay("%09d",[_y(t).m3l()]);else if(e===No(112))i=n?_y(t).j3l()>12?"PM":"AM":_y(t).j3l()>12?"pm":"am";else if(e===No(122)){var s=ns().o3l();i=mu(ia(s,na(_y(t),s)).toString(),":","")}else if(e===No(90)){var o=ns().o3l();i=ia(o,na(_y(t),o)).toString()}else if(e===No(115)){var u=ns().o3l();i=na(_y(t),u).z3k().toString()}else if(e===No(81)){var a=ns().o3l();i=na(_y(t),a).b3l().toString()}else if(e===No(66))i=xy().k8l(ea(_y(t).g3l()));else if(e===No(98)||e===No(104))i=xy().j8l(ea(_y(t).g3l()));else if(e===No(101))i=_y(t).i3k().toString();else if(e===No(100))i=Ay("%02s",[_y(t).i3k()]);else if(e===No(109))i=Ay("%02s",[ea(_y(t).g3l())]);else if(e===No(65))i=xy().i8l(_y(t).h3l());else if(e===No(97))i=xy().h8l(_y(t).h3l());else if(e===No(121))i=qo(_y(t).g3k().toString(),2);else if(e===No(89))i=Ay("%04d",[_y(t).g3k()]);else if(e===No(106))i=Ay("%03d",[_y(t).i3l()]);else if(e===No(82))i=Ay("%1!tH:%1!tM",[_y(t)]);else if(e===No(114))i=Ay(n?"%1!tI:%1!tM:%1!tS %1!Tp":"%1!tI:%1!tM:%1!tS %1!tp",[_y(t)]);else if(e===No(84))i=Ay("%tH:%1!tM:%1!tS",[_y(t)]);else if(e===No(68))i=Ay("%tm/%1!td/%1!ty",[_y(t)]);else if(e===No(70))i=Ay("%tY-%1!tm-%1!td",[_y(t)]);else if(e===No(99))i=Ay("%ta %1!tb %1!td %1!tT %1!tZ %1!tY",[_y(t)]);else if(e===No(79)){var h=ns().o3l(),_=ia(h,na(_y(t),h)).toString();i=Ay("%tFT%1!tT%s",[_y(t),_])}else e===No(35)?i=Ay("%tY%1!tm%1!td%1!tH%1!tM%1!tS",[na(_y(t),ns().r3k_1)]):hy(t,"unknown time field specificator: 't"+Vs(e)+"'");gy(t,i)}function cy(t){py(t);var n=Us(t.o8k_1.m8l(t.p8k_1));t.w8k_1&&t.u8k_1===No(48)&&n.z9(new Hr(0,0))>0?my(t,n.toString(),"+"):gy(t,t.w8k_1?"+"+n.toString():n.toString())}function fy(t,n){py(t);var i=Us(t.o8k_1.m8l(t.p8k_1));t.w8k_1&&hy(t,"'+' is incompatible with hex format");var e=ra(i,16);gy(t,n?e.toUpperCase():e.toLowerCase())}function vy(t){py(t);var n=Us(t.o8k_1.m8l(t.p8k_1));t.w8k_1&&hy(t,"'+' is incompatible with oct format"),gy(t,ra(n,8))}function dy(t){py(t),gy(t,Vs(t.o8k_1.n8l(t.p8k_1)))}function wy(t,n){n&&(t.x8k_1=!0);var i=t.v8k_1;if(Eo(i)>0){switch(t.q8k_1.v9_1){case 1:t.r8k_1=sa(t.v8k_1.toString());break;case 2:t.s8k_1=sa(t.v8k_1.toString());break;case 0:hy(t,"can't parse format specifier (error 7)")}t.v8k_1.a8()}}function py(t,n,i){return wy(t,n=n===Yr||n)}function my(t,n,i){var e=n.length+i.length|0;if(t.r8k_1<0||t.r8k_10))break t;o.p5(t.u8k_1)}o.o5(n);t:for(;;){var a=s;if(s=a-1|0,!(a>0))break t;o.p5(t.u8k_1)}t.o8k_1.o8l(o.toString())}}function gy(t,n,i,e){return my(t,n,i=i===Yr?"":i)}function by(t){py(t);var n=xs(t.o8k_1.m8l(t.p8k_1)),i=function(t,n,i){i=i===Yr?-1:i;var e=t,r=jo(),s=e;if(Math.abs(s)>=1){var o=0===i?Gu(e):Us(e);r.t7(o),e-=o.c6()}else r.o5(e<0?"-0":"0");var u=i<0?n<0?6:(n-r.a()|0)-1|0:i;0!==u&&r.p5(No(46));var a=10*e;t:for(;;){var h=u;if(u=h-1|0,!(h>0))break t;var _=ks(a);r.s7(Fs(_)),a=10*(a-_)}var l=ks(a);return Fs(l)<5?r.toString():Z$(r,Yr,Yr,!1).me_1}(n,t.r8k_1,t.s8k_1);t.w8k_1&&t.u8k_1===No(48)&&n>0?my(t,i,"+"):gy(t,t.w8k_1?"+"+i:i)}function $y(t,n){py(t);var i,e,r,s=xs(t.o8k_1.m8l(t.p8k_1)),o=(i=s,e=t.r8k_1,r=(r=t.s8k_1)===Yr?-1:r,new ny(i).l8k(e,r)),u=n?o.toUpperCase():o.toLowerCase();t.w8k_1&&t.u8k_1===No(48)&&s>0?my(t,u,"+"):gy(t,t.w8k_1?"+"+u:u)}function yy(t,n){py(t);var i=t.o8k_1.m8l(t.p8k_1),e=Gr(i),r=n?e.toUpperCase():e.toLowerCase();t.w8k_1&&t.u8k_1===No(48)&&xs(i)>0?my(t,r,"+"):gy(t,t.w8k_1?"+"+r:r)}function ky(){Vi=this,this.m8k_1=vo(sy),this.n8k_1=vo(oy)}function xy(){return null==Vi&&new ky,Vi}function Sy(){return iy(),Li}function Ey(){return iy(),Fi}function Cy(){return iy(),Ui}function qy(t,n){xy(),this.o8k_1=t,this.p8k_1=n,this.q8k_1=Sy(),this.r8k_1=-1,this.s8k_1=-1,this.t8k_1=(Oy(),Yi),this.u8k_1=No(32),this.v8k_1=jo(),this.w8k_1=!1,this.x8k_1=!1,this.y8k_1=!1}function Oy(){if(Gi)return Xr;Gi=!0,Bi=new zy("LEFT",0),Yi=new zy("RIGHT",1),Wi=new zy("CENTER",2)}function zy(t,n){ds.call(this,t,n)}function Ay(t,n){return new Ty(t,n).r8l().toString()}function Ty(t,n){this.z8k_1=t,this.a8l_1=n,this.b8l_1=0,this.c8l_1=-1,this.d8l_1=jo(),this.e8l_1=0}function Iy(){this.m83_1=0,this.n83_1=1,this.o83_1=100800,this.p83_1=100801,this.q83_1="1.3",this.r83_1="GLU_EXT_object_space_tess ",this.s83_1=100900,this.t83_1=100901,this.u83_1=100902,this.v83_1=100904,this.w83_1=100100,this.x83_1=100101,this.y83_1=100102,this.z83_1=100103,this.a84_1=100104,this.b84_1=100105,this.c84_1=100106,this.d84_1=100107,this.e84_1=100108,this.f84_1=100109,this.g84_1=100110,this.h84_1=100111,this.i84_1=100120,this.j84_1=100121,this.k84_1=100122,this.l84_1=100123,this.m84_1=100124,this.n84_1=100140,this.o84_1=100141,this.p84_1=100142,this.q84_1=100151,this.r84_1=100152,this.s84_1=100153,this.t84_1=100154,this.u84_1=100155,this.v84_1=100156,this.w84_1=100157,this.x84_1=100158,this.y84_1=100151,this.z84_1=100152,this.a85_1=100153,this.b85_1=100154,this.c85_1=100155,this.d85_1=100156,this.e85_1=100130,this.f85_1=100131,this.g85_1=100132,this.h85_1=100133,this.i85_1=100134,this.j85_1=1e150}function Dy(){}function jy(){Xi=this,this.t8l_1=["invalid enumerant","invalid value","out of memory","","invalid operation"]}function My(t){this.j8n_1=t,this.k8n_1=null,this.l8n_1=0,this.m8n_1=!1,this.n8n_1=!1,this.o8n_1=!1,this.p8n_1=!1}function Ny(){this.q8n_1=new Float64Array(3),this.r8n_1=null}function Ry(){}function Py(t,n,i){this.v8n_1=t,this.w8n_1=n,this.x8n_1=i}function Ly(t){t=t===Yr?null:t,this.z8n_1=t,this.a8o_1=this,this.b8o_1=this}function Fy(){this.j8o_1=null,this.k8o_1=null,this.l8o_1=null,this.m8o_1=null,this.n8o_1=null,this.o8o_1=!1,this.p8o_1=!1}function Uy(t){this.q8o_1=t,this.r8o_1=null,this.s8o_1=null,this.t8o_1=null,this.u8o_1=null,this.v8o_1=null,this.w8o_1=null,this.x8o_1=null,this.y8o_1=0}function Hy(){this.z8o_1=new Jy,this.a8p_1=new Fy,this.b8p_1=new Uy(!0),this.c8p_1=new Uy(!1)}function Vy(t){var n=t.z8l_1;null==n||te.d8p(n),t.x8l_1=0,t.y8l_1=null,t.z8l_1=null}function By(t,n){t.x8l_1!==n&&function(t,n){for(;t.x8l_1!==n;)t.x8l_10&&k<=x||S<0&&x<=k)do{var E=k;k=k+S|0;for(var C=_s(),q=r.v(),O=0;q.w();){var z=O;O=O+1|0;var A=q.y()/8|0,T=Tr(z,A);C.s(pr.h96(h,E+T|0,A,s,t.f96_1))}o?u.s(C.h1(0)):u.z(C)}while(E!==x);return gs(u)}(t,e,r,s,o,u,n):2===i?(kr.v5o(kr.j54_1,"Compression type not yet implemented: CCITT_1D"),a=[]):3===i?(kr.v5o(kr.j54_1,"Compression type not yet implemented: GROUP_3_FAX"),a=[]):4===i?(kr.v5o(kr.j54_1,"Compression type not yet implemented: GROUP_4_FAX"),a=[]):5===i?(kr.v5o(kr.j54_1,"Compression type not yet implemented: LZW"),a=[]):6===i?(kr.v5o(kr.j54_1,"Compression type not yet implemented: JPEG"),a=[]):(kr.v5o(kr.j54_1,"Unsupported compression type "+i),a=[]),a}function Px(t,n,i){if(t.e96_1.m95_1.n()>6&&t.e96_1.l95_1.d1())throw new ya;return 16===t.e96_1.n95_1.n()?new $_(Uh().d5d(i*t.e96_1.n95_1.h1(4)+i*t.e96_1.n95_1.h1(5)+t.e96_1.n95_1.h1(7)),Uh().d5d(n*t.e96_1.n95_1.h1(0)+i*t.e96_1.n95_1.h1(1)+t.e96_1.n95_1.h1(3))):t.e96_1.l95_1.n()<3||t.e96_1.m95_1.n()<6?new $_(Uh().d5d(i),Uh().d5d(n)):new $_(Uh().d5d(-1*(i-t.e96_1.m95_1.h1(1))*t.e96_1.l95_1.h1(1)+t.e96_1.m95_1.h1(4)),Uh().d5d((n-t.e96_1.m95_1.h1(0))*t.e96_1.l95_1.h1(0)+t.e96_1.m95_1.h1(3)))}function Lx(t,n){var i=ks(pr.g96(t.d96_1,n,2,t.f96_1)),e=_s(),r=n+2|0,s=0;if(s0)){var o=kr.n54(kr.i54_1,"Font","constructor","invalidSize");throw is(Gr(o))}}function qS(){}function OS(t,n,i,e){this.n9m_1=t,this.o9m_1=n,this.p9m_1=i,Ks.call(this,e)}function zS(t,n,i){this.f9n_1=t,this.g9n_1=n,Ks.call(this,i)}function AS(t,n,i){this.q9n_1=t,this.r9n_1=n,Ks.call(this,i)}function TS(t,n,i,e,r){return function(s){var o=t.l7c_1;return null==o||n._v?i.v9m(t,e,r):(n._v=!0,ro(i.w54_1,Yr,Yr,function(t,n,i){var e=new AS(t,n,i),r=function(t,n){return e.v1g(t,n)};return r.$arity=1,r}(o,r,null))),null!=o&&URL.revokeObjectURL(r.src),Xr}}function IS(t,n){var i;if(t=t===Yr?$r.r91():t,n===Yr){var e=.75*t.c6();i=Us(e)}else i=n;n=i,B$.call(this,t,n),this.u54_1=new Hr(0,0),this.v54_1=16,this.w54_1=no();Zs();var r=to(60,Qs());this.x54_1=new z$(3,r),this.y54_1=vs()}function DS(t){this.t85_1=t,this.u85_1=.15}function jS(){yr=this,this.l6j_1=Kr()}function MS(){return null==yr&&new jS,yr}function NS(){}function RS(t,n){this.e9o_1=t,this.f9o_1=n}function PS(t){MS(),A$.call(this,t)}function LS(t){return function(t,n){return FS.call(n,t,t.width,t.height),n}(t,Ts(Pr(FS)))}function FS(t,n,i){gb.call(this,n,i,nx(),ix()),this.q9o_1=t,this.r9o_1=!!gx(n)&&gx(i),this.k5f_1.c5w()}function US(t,n,i,e){J$.call(this,t,n,i,e),this.f7c_1=null,this.g7c_1=null}function HS(){this.i54_1=1,this.j54_1=2,this.k54_1=3,this.l54_1=4,this.m54_1=this.i54_1}function VS(){M$.call(this)}function BS(t){this.s9o_1=t,this.t9o_1=!1}function YS(){xr=this,this.x9o_1=new WS}function WS(t){null==xr&&new YS,t=t===Yr?null:t,this.v9o_1=t}function GS(){Sr=this,this.s5e_1=new XS}function KS(){return null==Sr&&new GS,Sr}function XS(t){KS(),t=t===Yr?null:t,this.j87_1=t}function JS(){Er=this,this.c6m_1=new QS}function ZS(){return null==Er&&new JS,Er}function QS(t){ZS(),t=t===Yr?null:t,this.w9o_1=t}function tE(){Cr=this,this.u5e_1=new iE}function nE(){return null==Cr&&new tE,Cr}function iE(t){nE(),t=t===Yr?null:t,this.k86_1=t}function eE(){qr=this,this.t5e_1=new sE}function rE(){return null==qr&&new eE,qr}function sE(t){rE(),t=t===Yr?null:t,this.d86_1=t}function oE(){Or=this,this.r5e_1=new aE}function uE(){return null==Or&&new oE,Or}function aE(t){uE(),t=t===Yr?null:t,this.d83_1=t}function hE(){return Ar||(Ar=!0,zr=ta(window.navigator.language,Qu([No(45)])).h1(0),ta(window.navigator.language,Qu([No(45)])).h1(1)),zr}return Fr(Da,"images",Lr),Fr(Ma,"files",Lr),Fr(Na,"GoToAnimator",Br),Fr(Ra,"Companion",Lr),Fr(Pa,"PickedObject",Br),Fr(Fa,"PickedObjectList",Br,Yr,Yr,Fa),Fr(Ya,"Event",ts),Fr(Ua,"RequestRedraw",Lr,Yr,[Ya]),Fr(Ha,"UnmarkResourceAbsent",Br,Yr,[Ya]),Fr(Va,"Companion",Lr,Yr,Yr,Yr,Yr,Yr,[1]),Fr(Wa,"WorldWind",Br),Fr(Ga,"Companion",Lr),Fr(Oh,"DrawableTerrain",ts),Fr(Ka,"BasicDrawableTerrain",Br,Yr,[Oh]),Fr(Xa,"DrawContext",Br),Fr(Ja,"Companion",Lr),Fr(Za,"DrawElements",Br,Yr,Yr,Za),Fr(Qa,"VertexAttrib",Br,Yr,Yr,Qa),Fr(th,"DrawShapeState",Br),Fr(ih,"DrawableGroup",Br,ds),Fr(sh,"Companion",Lr),Fr(oh,"DrawableHeatmap",Br),Fr(uh,"Companion",Lr),Fr(ah,"DrawableLines",Br),Fr(hh,"Companion",Lr),Fr(_h,"Entry",Br,Yr,Yr,_h),Fr(lh,"sam$kotlin_Comparator$0",Br),Fr(fh,"DrawableQueue",Br),Fr(vh,"Companion",Lr),Fr(dh,"DrawableScreenTexture",Br),Fr(wh,"Companion",Lr),Fr(ph,"DrawableShape",Br),Fr(mh,"Companion",Lr),Fr(gh,"DrawableSightline",Br),Fr(bh,"Companion",Lr),Fr($h,"DrawableStarField",Br),Fr(yh,"Companion",Lr),Fr(kh,"DrawableSurfaceColor",Br),Fr(xh,"Companion",Lr),Fr(Sh,"DrawableSurfaceShape",Br),Fr(Eh,"Companion",Lr),Fr(qh,"DrawableSurfaceTexture",Br),Fr(zh,"Companion",Lr),Fr(Ah,"DrawableTessellation",Br),Fr(Th,"BasicFrameController",Br,Yr,Yr,Th),Fr(Ih,"Companion",Lr),Fr(Dh,"Frame",Br,Yr,Yr,Dh),Fr(Mh,"AltitudeMode",Br,ds),Fr(Fh,"Companion",Lr),Fr(e_,"Angle",Br,Yr,[Cs]),Fr(u_,"Companion",Lr),Fr(a_,"BoundingBox",Br,Yr,Yr,a_),Fr(h_,"BoundingSphere",Br,Yr,Yr,h_),Fr(__,"Camera",Br,Yr,Yr,__),Fr(l_,"Companion",Lr),Fr(f_,"Ellipsoid",Br),Fr(d_,"Frustum",Br,Yr,Yr,v_),Fr(p_,"Line",Br,Yr,Yr,w_),Fr(g_,"Companion",Lr),Fr($_,"Location",Br,Yr,Yr,m_),Fr(k_,"LookAt",Br,Yr,Yr,y_),Fr(x_,"Companion",Lr),Fr(C_,"Matrix3",Br,Yr,Yr,E_),Fr(q_,"Companion",Lr),Fr(A_,"Matrix4",Br,Yr,Yr,z_),Fr(I_,"Companion",Lr),Fr(D_,"Offset",Br),Fr(j_,"OffsetMode",Br,ds),Fr(N_,"Companion",Lr),Fr(P_,"Plane",Br,Yr,Yr,(function(){return t=Ts(Pr(P_)),P_.call(t),t;var t})),Fr(U_,"Companion",Lr),Fr(H_,"Position",Br,$_,Yr,L_),Fr(B_,"Range",Br,Yr,Yr,V_),Fr(G_,"Companion",Lr),Fr(K_,"Sector",Br,Yr,Yr,Y_),Fr(X_,"TileMatrix",Br),Fr(Z_,"Companion",Lr),Fr(Q_,"TileMatrixSet",Br,Yr,Yr,J_),Fr(nl,"Vec2",Br,Yr,Yr,tl),Fr(el,"Vec3",Br,nl,Yr,il),Fr(sl,"Viewport",Br,Yr,Yr,rl),Fr(ol,"Companion",Lr),Fr(ul,"GKCoord",Br),Fr(al,"Companion",Lr),Fr(hl,"GKCoordConverter",Br,Yr,Yr,hl),Fr(_l,"Companion",Lr),Fr(cl,"HelmertParameters",Br),Fr(fl,"HelmertTransformation",Lr),Fr(dl,"Hemisphere",Br,ds),Fr(ml,"Companion",Lr),Fr(gl,"MGRSCoord",Br),Fr(bl,"Companion",Lr),Fr(Sl,"MGRSCoordConverter",Br,Yr,Yr,Sl),Fr(El,"Companion",Lr),Fr(Cl,"PolarCoordConverter",Br,Yr,Yr,Cl),Fr(ql,"Companion",Lr),Fr(Ol,"TMCoord",Br),Fr(zl,"Companion",Lr),Fr(Al,"TMCoordConverter",Br,Yr,Yr,Al),Fr(Tl,"Companion",Lr),Fr(Il,"UPSCoord",Br),Fr(Dl,"Companion",Lr),Fr(jl,"UPSCoordConverter",Br,Yr,Yr,jl),Fr(Ml,"Companion",Lr),Fr(Nl,"UTMCoord",Br),Fr(Rl,"Companion",Lr),Fr(Pl,"UTMCoordConverter",Br,Yr,Yr,Pl),Fr(Fl,"GestureState",Br,ds),Fr(Kl,"SelectDragCallback",ts),Fr(Jl,"Offset",Br,ds),Fr(Zl,"State",Br),Fr(tc,"Globe",Br,Yr,Yr,tc),Fr(nc,"ElevationModel",Br,Yr,Yr,nc),Fr(ic,"AbstractElevationCoverage",Br),Fr(ec,"Companion",Lr),Fr(rc,"TileBlock",Br,Yr,Yr,rc),Fr(sc,"AbstractTiledElevationCoverage$fetchTileArray$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(oc,"AbstractTiledElevationCoverage",Br,ic,Yr,Yr,Yr,Yr,[4]),Fr(pS,"TiledElevationCoverage",Br,oc,Yr,(function(){return t=Ts(Pr(pS)),n=J_(),pS.call(t,n,new vS),t;var t,n}),Yr,Yr,[4,1]),Fr(Mv,"WmsElevationCoverage",Br,pS,Yr,Yr,Yr,Yr,[4]),Fr(uc,"BasicElevationCoverage",Br,Mv,Yr,uc,Yr,Yr,[4]),Fr(ac,"GeographicProjection",ts),Fr(hc,"Companion",Lr),Fr(_c,"MercatorProjection",Br,Yr,[ac],_c),Fr(lc,"Wgs84Projection",Br,Yr,[ac],lc),Fr(cc,"BasicTerrain",Br),Fr(fc,"sam$kotlin_Comparator$0",Br),Fr(dc,"BasicTessellator",Br,Yr,Yr,dc),Fr(wc,"Companion",Lr),Fr(D$,"AbstractTile",Br),Fr(J$,"Tile",Br,D$),Fr(mc,"TerrainTile",Br,J$),Fr(gc,"AbstractLayer",Br),Fr(kc,"RenderableLayer",Br,gc,Yr,kc),Fr(bc,"AbstractTiledImageLayer",Br,kc),Fr($c,"BackgroundLayer",Br,kc,Yr,$c),Fr(yc,"LayerList",Br,Yr,Yr,yc),Fr(xc,"ShowTessellationLayer",Br,gc,Yr,xc),Fr(Ec,"FragMode",Br,ds),Fr(Rb,"AbstractShaderProgram",Br),Fr(qc,"AbstractAtmosphereProgram",Br,Rb),Fr(Oc,"Companion",Lr),Fr(Ac,"AtmosphereLayer",Br,gc,Yr,Ac),Fr(Tc,"Companion",Lr),Fr(Ic,"DrawableGroundAtmosphere",Br,Yr,Yr,Ic),Fr(Dc,"Companion",Lr),Fr(jc,"DrawableSkyAtmosphere",Br,Yr,Yr,jc),Fr(Mc,"GroundProgram",Br,qc,Yr,Mc),Fr(Nc,"SkyProgram",Br,qc,Yr,Nc),Fr(Uc,"Companion",Lr),Fr(Vc,"AbstractGraticuleLayer",Br,gc),Fr(Bc,"AbstractGraticuleTile",Br,D$),Fr(Yc,"Companion",Lr),Fr(Wc,"GraticuleRenderingParams",Br,Yr,[go],Wc),Fr(Zc,"GraticuleSupport",Br,Yr,Yr,Zc),Fr(tf,"Companion",Lr),Fr(nf,"GridElement",Br),Fr(ef,"Callback",ts),Fr(sf,"GridTilesSupport",Br),Fr(of,"LineStyle",Br,ds),Fr(uf,"Companion",Lr),Fr(hf,"GKGraticuleLayer",Br,Vc,[Vc,ef],hf),Fr(vf,"GKGraticuleTile",Br,Bc),Fr(wf,"GKLayerHelper",Lr),Fr(xf,"ZoneExtremes",Br),Fr(Sf,"Companion",Lr),Fr(Ef,"GKMetricGrid",Br,Bc),Fr(zf,"Companion",Lr),Fr(Af,"GKMetricLabels",Br),Fr(Tf,"GKOverview",Br,Bc),Fr(If,"Companion",Lr),Fr(Df,"AbstractUTMGraticuleLayer",Br,Vc),Fr(Pf,"Companion",Lr),Fr(Lf,"MGRSGraticuleLayer",Br,Df,Yr,Lf),Fr(Uf,"Companion",Lr),Fr(Hf,"MGRSGridZone",Br,Bc),Fr(Vf,"Companion",Lr),Fr(Yf,"MGRSOverview",Br,Bc),Fr(Wf,"UTMExtremes",Br,Yr,Yr,Wf),Fr(Xf,"Companion",Lr),Fr(Jf,"UTMMetricScaleSupport",Br),Fr(iv,"UTMSquareSector",Br,Bc),Fr(Zf,"UTMSquareGrid",Br,iv),Fr(nv,"Companion",Lr),Fr(sv,"UTMSquareZone",Br,iv),Fr(ov,"ElevationHeatmapLayer",Br,gc,Yr,ov),Fr(uv,"ElevationHeatmapProgram",Br,Rb,Yr,uv),Fr(av,"Companion",Lr),Fr(US,"ImageTile",Br,J$,Yr,Yr,Yr,Yr,[1]),Fr(hv,"AbstractMercatorImageTile",Br,US,Yr,Yr,Yr,Yr,[1]),Fr(_v,"Companion",Lr),Fr(lv,"MercatorSector",Br,K_,Yr,lv),Fr(cv,"MercatorTileFactory",ts),Fr(fv,"Companion",Lr),Fr(mS,"TiledImageLayer",Br,bc,Yr,mS),Fr(vv,"MercatorTiledImageLayer",Br,mS,Yr,vv),Fr(pb,"Renderable",ts),Fr(Qg,"AbstractRenderable",Br,Yr,[pb]),Fr(q$,"TiledSurfaceImage",Br,Qg),Fr(dv,"MercatorTiledSurfaceImage",Br,q$),Fr(wv,Yr,Br,Yr,[cv]),Fr(pv,Yr,Br,vv),Fr(mv,"WebMercatorLayerFactory",Lr),Fr(gv,"$serializer",Lr,Yr,[Yo]),Fr(yv,"Companion",Lr),Fr(xv,"$serializer",Lr,Yr,[Yo]),Fr(Cv,"StarMetadata",Br,Yr,Yr,Yr,Yr,{0:bv}),Fr(qv,"StarData",Br,Yr,Yr,Yr,Yr,{0:Sv}),Fr(Ov,"StarFieldLayer",Br,gc,Yr,Ov),Fr(zv,"StarFieldProgram",Br,Rb,Yr,zv),Fr(Av,"Companion",Lr),Fr(Tv,"Wcs100ElevationCoverage",Br,pS,Yr,Yr,Yr,Yr,[4]),Fr(Iv,"Wcs100ElevationSourceFactory",Br),Fr(Dv,Yr,Br),Fr(jv,"Companion",Lr),Fr(Nv,"WmsLayerConfig",Br),Fr(Hv,"WmsLayerFactory$decodeWmsCapabilities$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(Vv,Yr,Br,mS),Fr(Yv,"$createLayerCOROUTINE$0",Br,Ks),Fr(Wv,"$retrieveWmsCapabilitiesCOROUTINE$1",Br,Ks),Fr(Gv,"WmsLayerFactory",Lr,Yr,Yr,Yr,Yr,Yr,[4,1]),Fr(Jv,"WmsTileFactory",Br),Fr(nd,"TileMatrixSet",Br),Fr(ed,"WmtsLayerFactory$decodeWmtsCapabilities$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(rd,Yr,Br,mS),Fr(sd,"$createLayerCOROUTINE$2",Br,Ks),Fr(od,"$retrieveWmtsCapabilitiesCOROUTINE$3",Br,Ks),Fr(ud,"WmtsLayerFactory",Lr,Yr,Yr,Yr,Yr,Yr,[4,1]),Fr(hd,"Companion",Lr),Fr(_d,"WmtsTileFactory",Br),Fr(ld,"Companion",Lr),Fr(cd,"$serializer",Lr,Yr,[Yo]),Fr(dd,"WmsAttribution",Br,Yr,Yr,dd,Yr,{0:fd}),Fr(wd,"$serializer",Lr,Yr,[Yo]),Fr(gd,"WmsAuthorityUrl",Br,Yr,Yr,Yr,Yr,{0:pd}),Fr(bd,"$serializer",Lr,Yr,[Yo]),Fr(kd,"WmsBoundingBox",Br,Yr,Yr,Yr,Yr,{0:$d}),Fr(xd,"Companion",Lr),Fr(Sd,"$serializer",Lr,Yr,[Yo]),Fr(qd,"WmsCapabilities",Br,Yr,Yr,Yr,Yr,{0:Ed}),Fr(Od,"Companion",Lr),Fr(Ad,"$serializer",Lr,Yr,[Yo]),Fr(Dd,"WmsCapability",Br,Yr,Yr,Yr,Yr,{0:Td}),Fr(jd,"$serializer",Lr,Yr,[Yo]),Fr(Rd,"WmsContactAddress",Br,Yr,Yr,Yr,Yr,{0:Md}),Fr(Pd,"Companion",Lr),Fr(Ld,"$serializer",Lr,Yr,[Yo]),Fr(Hd,"WmsContactInformation",Br,Yr,Yr,Hd,Yr,{0:Fd}),Fr(Vd,"$serializer",Lr,Yr,[Yo]),Fr(Wd,"WmsContactPersonPrimary",Br,Yr,Yr,Yr,Yr,{0:Bd}),Fr(Gd,"$serializer",Lr,Yr,[Yo]),Fr(Jd,"$serializer",Lr,Yr,[Yo]),Fr(tw,"WmsHttp",Br,Yr,Yr,Yr,Yr,{0:Kd}),Fr(nw,"WmsHttpProtocol",Br,Yr,Yr,Yr,Yr,{0:Zd}),Fr(iw,"$serializer",Lr,Yr,[Yo]),Fr(sw,"WmsDcpType",Br,Yr,Yr,Yr,Yr,{0:ew}),Fr(ow,"$serializer",Lr,Yr,[Yo]),Fr(hw,"WmsDimension",Br,Yr,Yr,Yr,Yr,{0:uw}),Fr(_w,"Companion",Lr),Fr(cw,"$serializer",Lr,Yr,[Yo]),Fr(dw,"WmsException",Br,Yr,Yr,dw,Yr,{0:fw}),Fr(ww,"$serializer",Lr,Yr,[Yo]),Fr(gw,"WmsGeographicBoundingBox",Br,Yr,Yr,Yr,Yr,{0:pw}),Fr(bw,"$serializer",Lr,Yr,[Yo]),Fr(kw,"WmsIdentifier",Br,Yr,Yr,Yr,Yr,{0:$w}),Fr(xw,"Companion",Lr),Fr(Ew,"$serializer",Lr,Yr,[Yo]),Fr(Ow,"WmsInfoUrl",Br,Yr,Yr,Yr,Yr,{0:Cw}),Fr(zw,"Companion",Lr),Fr(Tw,"$serializer",Lr,Yr,[Yo]),Fr(jw,"WmsLayer",Br,Yr,Yr,Yr,Yr,{0:Iw}),Fr(Mw,"Companion",Lr),Fr(Rw,"$serializer",Lr,Yr,[Yo]),Fr(Fw,"WmsLogoUrl",Br,Yr,Yr,Yr,Yr,{0:Pw}),Fr(Uw,"Companion",Lr),Fr(Vw,"$serializer",Lr,Yr,[Yo]),Fr(Ww,"WmsMetadataUrl",Br,Yr,Yr,Yr,Yr,{0:Bw}),Fr(Gw,"$serializer",Lr,Yr,[Yo]),Fr(Jw,"WmsOnlineResource",Br,Yr,Yr,Yr,Yr,{0:Kw}),Fr(Zw,"$serializer",Lr,Yr,[Yo]),Fr(np,"WmsRequest",Br,Yr,Yr,Yr,Yr,{0:Qw}),Fr(ip,"Companion",Lr),Fr(rp,"$serializer",Lr,Yr,[Yo]),Fr(up,"WmsRequestOperation",Br,Yr,Yr,Yr,Yr,{0:sp}),Fr(ap,"Companion",Lr),Fr(_p,"$serializer",Lr,Yr,[Yo]),Fr(fp,"WmsService",Br,Yr,Yr,Yr,Yr,{0:lp}),Fr(vp,"Companion",Lr),Fr(wp,"$serializer",Lr,Yr,[Yo]),Fr(gp,"WmsStyle",Br,Yr,Yr,Yr,Yr,{0:pp}),Fr(bp,"Companion",Lr),Fr(yp,"$serializer",Lr,Yr,[Yo]),Fr(Sp,"OwsAddress",Br,Yr,Yr,Sp,Yr,{0:kp}),Fr(Ep,"$serializer",Lr,Yr,[Yo]),Fr(Op,"OwsBoundingBox",Br,Yr,Yr,Yr,Yr,{0:Cp}),Fr(zp,"Companion",Lr),Fr(Tp,"$serializer",Lr,Yr,[Yo]),Fr(jp,"OwsConstraint",Br,Yr,Yr,Yr,Yr,{0:Ip}),Fr(Mp,"Companion",Lr),Fr(Np,"$serializer",Lr,Yr,[Yo]),Fr(Lp,"OwsContactInfo",Br,Yr,Yr,Lp,Yr,{0:Rp}),Fr(Fp,"$serializer",Lr,Yr,[Yo]),Fr(Vp,"OwsDcp",Br,Yr,Yr,Yr,Yr,{0:Up}),Fr(Bp,"OwsDescription",Br),Fr(Yp,"Companion",Lr),Fr(Gp,"$serializer",Lr,Yr,[Yo]),Fr(Jp,"OwsHttp",Br,Yr,Yr,Jp,Yr,{0:Kp}),Fr(Zp,"Companion",Lr),Fr(tm,"$serializer",Lr,Yr,[Yo]),Fr(em,"OwsHttpMethod",Br,Yr,Yr,Yr,Yr,{0:nm}),Fr(rm,"$serializer",Lr,Yr,[Yo]),Fr(um,"OwsOnlineResource",Br,Yr,Yr,Yr,Yr,{0:sm}),Fr(am,"Companion",Lr),Fr(_m,"$serializer",Lr,Yr,[Yo]),Fr(fm,"OwsOperation",Br,Yr,Yr,Yr,Yr,{0:lm}),Fr(vm,"Companion",Lr),Fr(wm,"$serializer",Lr,Yr,[Yo]),Fr(gm,"OwsOperationsMetadata",Br,Yr,Yr,gm,Yr,{0:pm}),Fr(bm,"Companion",Lr),Fr(ym,"$serializer",Lr,Yr,[Yo]),Fr(Sm,"OwsPhone",Br,Yr,Yr,Sm,Yr,{0:km}),Fr(Em,"Companion",Lr),Fr(Cm,"$serializer",Lr,Yr,[Yo]),Fr(zm,"OwsServiceContact",Br,Yr,Yr,zm,Yr,{0:qm}),Fr(Am,"Companion",Lr),Fr(Im,"$serializer",Lr,Yr,[Yo]),Fr(Mm,"OwsServiceIdentification",Br,Bp,Yr,Yr,Yr,{0:Dm}),Fr(Nm,"$serializer",Lr,Yr,[Yo]),Fr(Lm,"OwsServiceProvider",Br,Yr,Yr,Yr,Yr,{0:Rm}),Fr(Fm,"Companion",Lr),Fr(Hm,"$serializer",Lr,Yr,[Yo]),Fr(Ym,"WmtsCapabilities",Br,Yr,Yr,Yr,Yr,{0:Vm}),Fr(Wm,"Companion",Lr),Fr(Km,"$serializer",Lr,Yr,[Yo]),Fr(Zm,"WmtsContents",Br,Yr,Yr,Zm,Yr,{0:Xm}),Fr(Qm,"Companion",Lr),Fr(ng,"$serializer",Lr,Yr,[Yo]),Fr(rg,"WmtsDimension",Br,Bp,Yr,Yr,Yr,{0:ig}),Fr(sg,"Companion",Lr),Fr(ug,"$serializer",Lr,Yr,[Yo]),Fr(_g,"WmtsLayer",Br,Bp,Yr,Yr,Yr,{0:ag}),Fr(lg,"$serializer",Lr,Yr,[Yo]),Fr(vg,"WmtsLegendURL",Br,Yr,Yr,Yr,Yr,{0:cg}),Fr(dg,"$serializer",Lr,Yr,[Yo]),Fr(mg,"WmtsResourceUrl",Br,Yr,Yr,Yr,Yr,{0:wg}),Fr(gg,"Companion",Lr),Fr($g,"$serializer",Lr,Yr,[Yo]),Fr(xg,"WmtsStyle",Br,Bp,Yr,Yr,Yr,{0:yg}),Fr(Sg,"Companion",Lr),Fr(Cg,"$serializer",Lr,Yr,[Yo]),Fr(zg,"WmtsTheme",Br,Bp,Yr,Yr,Yr,{0:qg}),Fr(Ag,"Companion",Lr),Fr(Ig,"$serializer",Lr,Yr,[Yo]),Fr(Mg,"WmtsTileMatrix",Br,Bp,Yr,Yr,Yr,{0:Dg}),Fr(Ng,"$serializer",Lr,Yr,[Yo]),Fr(Lg,"WmtsTileMatrixLimits",Br,Yr,Yr,Yr,Yr,{0:Rg}),Fr(Fg,"Companion",Lr),Fr(Hg,"$serializer",Lr,Yr,[Yo]),Fr(Yg,"WmtsTileMatrixSet",Br,Bp,Yr,Yr,Yr,{0:Vg}),Fr(Wg,"Companion",Lr),Fr(Kg,"$serializer",Lr,Yr,[Yo]),Fr(Zg,"WmtsTileMatrixSetLink",Br,Yr,Yr,Yr,Yr,{0:Xg}),Fr(ib,"AbstractSurfaceRenderable",Br,Qg),Fr(ob,"Companion",Lr),Fr(ub,"Color",Br,Yr,Yr,eb),Fr(hb,"FontWeight",Br,ds),Fr(cb,"Framebuffer",Br,Yr,Yr,cb),Fr(fb,"Companion",Lr),Fr(vb,"TextCacheKey",Br,Yr,Yr,vb),Fr(wb,"RenderContext",Br,Yr,Yr,wb),Fr(mb,"Companion",Lr),Fr(gb,"Texture",Br),Fr(bb,"AbstractBufferObject",Br),Fr(yb,"Companion",Lr),Fr(kb,"BufferPool",Br),Fr(xb,"FloatBufferObject",Br,bb),Fr(Sb,"IntBufferObject",Br,bb),Fr(Eb,"ShortBufferObject",Br,bb),Fr(qb,"ImageConfig",Br,ds),Fr(zb,"ImageOptions",Br,Yr,Yr,zb),Fr(Tb,"ResamplingMode",Br,ds),Fr(jb,"WrapMode",Br,ds),Fr(Nb,"Companion",Lr),Fr(Pb,"BasicShaderProgram",Br,Rb,Yr,Pb),Fr(Lb,"SightlineProgram",Br,Rb,Yr,Lb),Fr(Fb,"SurfaceTextureProgram",Br,Rb,Yr,Fb),Fr(Ub,"Companion",Lr),Fr(Wb,"Highlightable",ts),Fr(Hb,"AbstractShape",Br,Qg,[Qg,Wb]),Fr(Vb,"Companion",Lr),Fr(Yb,"Ellipse",Br,Hb),Fr(Gb,"Companion",Lr),Fr(Xb,"RenderData",Br,Yr,Yr,Xb),Fr(Zb,"Movable",ts),Fr(Jb,"Label",Br,Qg,[Qg,Wb,Zb]),Fr(Qb,"OmnidirectionalSightline",Br,Qg,[Qg,Wb,Zb]),Fr(n$,"OrientationMode",Br,ds),Fr(r$,"Companion",Lr),Fr(o$,"Path",Br,Hb),Fr(a$,"PathType",Br,ds),Fr(l$,"Companion",Lr),Fr(f$,"Placemark",Br,Qg,[Qg,Wb,Zb]),Fr(d$,"Companion",Lr),Fr(w$,"PlacemarkAttributes",Br,Yr,Yr,v$),Fr(p$,"Companion",Lr),Fr(Dy,"GLUtessellatorCallbackAdapter",Br,Yr,Yr,Dy),Fr(g$,Yr,Br,Dy),Fr(b$,"Polygon",Br,Hb,Yr,b$),Fr(y$,"ShapeAttributes",Br,Yr,Yr,$$),Fr(k$,"SurfaceImage",Br,ib),Fr(E$,"TextAttributes",Br,Yr,Yr,x$),Fr(C$,"Companion",Lr),Fr(O$,"AbsentResourceEntry",Br),Fr(z$,"AbsentResourceList",Br),Fr(A$,"AbstractSource",Br),Fr(j$,"Companion",Lr),Fr(W$,"Pool",ts),Fr(M$,"BasicPool",Br,Yr,[W$],M$),Fr(N$,"Level",Br),Fr(L$,"LevelSet",Br,Yr,Yr,(function(){return t=Ts(Pr(L$)),L$.call(t),t.u6g_1=Y_(),t.v6g_1=Y_(),t.w6g_1=m_(),t.x6g_1=0,t.y6g_1=0,t.z6g_1=0,t.a6h_1=[],t;var t})),Fr(F$,"LevelSetConfig",Br,Yr,Yr,F$),Fr(U$,"Entry",Br),Fr(H$,"sam$kotlin_Comparator$0",Br),Fr(B$,"LruMemoryCache",Br),Fr(G$,"CelestialLocation",Br),Fr(K$,"SunPosition",Lr),Fr(X$,"Companion",Lr),Fr(ny,"ExponentFormatter",Br),Fr(uy,"Stage",Br,ds),Fr(ky,"Companion",Lr),Fr(qy,"Specification",Br),Fr(zy,"Positioning",Br,ds),Fr(Ty,"StringFormat",Br),Fr(Iy,"GLU",Lr),Fr(jy,"Error",Lr),Fr(My,"ActiveRegion",Br),Fr(Ny,"CachedVertex",Br,Yr,Yr,Ny),Fr(Ry,"Companion",Lr),Fr(Py,"Dict",Br),Fr(Ly,"DictNode",Br,Yr,Yr,Ly),Fr(Fy,"GLUface",Br,Yr,Yr,Fy),Fr(Uy,"GLUhalfEdge",Br),Fr(Hy,"GLUmesh",Br,Yr,Yr,Hy),Fr(Gy,"Companion",Lr),Fr(Xy,"GLUtessellatorImpl",Br),Fr(Jy,"GLUvertex",Br,Yr,Yr,Jy),Fr(Zy,"Geom",Lr),Fr(Qy,"Mesh",Lr),Fr(nk,"Normal",Lr),Fr(ik,"PQnode",Br,Yr,Yr,ik),Fr(ek,"PQhandleElem",Br,Yr,Yr,ek),Fr(rk,"Companion",Lr),Fr(sk,"PriorityQ",Br),Fr(ok,"PriorityQHeap",Br,sk,Yr,ok),Fr(hk,"Stack",Br,Yr,Yr,hk),Fr(_k,"Companion",Lr),Fr(lk,"PriorityQSort",Br,sk,Yr,lk),Fr(mk,"FaceCount",Br,Yr,Yr,ck),Fr(gk,"RenderTriangle",Br,Yr,Yr,gk),Fr(bk,"RenderFan",Br,Yr,Yr,bk),Fr($k,"RenderStrip",Br,Yr,Yr,$k),Fr(yk,"Render",Lr),Fr(Ck,Yr,Br),Fr(qk,"Sweep",Lr),Fr(Ok,"TessMono",Lr),Fr(zk,"TessState",Lr),Fr(Ik,"Kgl",ts),Fr(Dx,"WorldWindowController",Br),Fr(yx,"BasicWorldWindowController",Br,Dx),Fr(kx,"KeyboardControls",Br),Fr(Sx,"WorldWindow$contextRestored$slambda$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(Cx,"EventListenerEntry",Br),Fr(qx,"Companion",Lr),Fr(Ox,"RedrawStage",Br,ds),Fr(zx,"sam$kotlinx_coroutines_flow_FlowCollector$0",Br,Yr,Yr,Yr,Yr,Yr,[1]),Fr(Tx,"WorldWindow$contextRestored$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(Ix,"WorldWindow",Br),Fr(jx,"GeoTiffConstants",Lr),Fr(Mx,"GeoTiffKeyEntry",Br),Fr(Nx,"GeoTiffMetadata",Br,Yr,Yr,Nx),Fr(Fx,"GeoTiffReader",Br),Fr(Ux,"GeoTiffUtil",Lr),Fr(Hx,"IFDTag",Lr),Fr(Vx,"Compression",Lr),Fr(Bx,"SampleFormat",Lr),Fr(Yx,"Type",Lr),Fr(Wx,"TiffIFDEntry",Br),Fr(Qx,"GestureRecognizer",Br),Fr(Gx,"ClickRecognizer",Br,Qx),Fr(Kx,"DragRecognizer",Br,Qx),Fr(Xx,"Companion",Lr),Fr(Zx,"Click",Br),Fr(tS,"PanRecognizer",Br,Qx),Fr(nS,"PinchRecognizer",Br,Qx),Fr(iS,"RotationRecognizer",Br,Qx),Fr(eS,"Companion",Lr),Fr(rS,Yr,Br,Kx),Fr(sS,Yr,Br,tS),Fr(oS,"SelectDragDetector",Br),Fr(uS,"TapRecognizer",Br,Qx),Fr(aS,"Companion",Lr),Fr(hS,"TiltRecognizer",Br,tS),Fr(_S,"TouchWrapper",Br),Fr(lS,"Companion",Lr),Fr(cS,"ElevationSource",Br,A$),Fr(vS,Yr,Br),Fr(dS,"TiledElevationCoverage$decodeTiffImage$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(wS,"$retrieveTileArrayCOROUTINE$4",Br,Ks),Fr(gS,"Companion",Lr),Fr(yS,"$processCOROUTINE$5",Br,Ks),Fr(kS,"MercatorImageTile",Br,hv,Yr,Yr,Yr,Yr,[1]),Fr(CS,"Font",Br,Yr,Yr,xS),Fr(qS,"Companion",Lr),Fr(OS,"RenderResourceCache$retrieveTexture$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(zS,"RenderResourceCache$retrieveTextFile$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(AS,"RenderResourceCache$retrieveRemoteImage$lambda$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(IS,"RenderResourceCache",Br,B$,Yr,IS),Fr(DS,"TextRenderer",Br),Fr(jS,"Companion",Lr),Fr(NS,"ImageFactory",ts),Fr(RS,"LineStippleImageFactory",Br,Yr,[NS]),Fr(PS,"ImageSource",Br,A$),Fr(FS,"ImageTexture",Br,gb),Fr(HS,"Logger",Lr),Fr(VS,"SynchronizedPool",Br,M$,Yr,VS),Fr(BS,"WebKgl",Br,Yr,[Ik]),Fr(YS,"Companion",Lr),Fr(WS,"KglShader",Br,Yr,Yr,WS),Fr(GS,"Companion",Lr),Fr(XS,"KglProgram",Br,Yr,Yr,XS),Fr(JS,"Companion",Lr),Fr(QS,"KglUniformLocation",Br,Yr,Yr,QS),Fr(tE,"Companion",Lr),Fr(iE,"KglBuffer",Br,Yr,Yr,iE),Fr(eE,"Companion",Lr),Fr(sE,"KglTexture",Br,Yr,Yr,sE),Fr(oE,"Companion",Lr),Fr(aE,"KglFramebuffer",Br,Yr,Yr,aE),Pr(Ra).v51=function(t,n,i){var e=n.w51();return new Pa(t,null==e?n:e,i)},Pr(Ra).x51=function(t,n){var i=F_(n);return new Pa(t,i,Yr,i)},Pr(Ra).y51=function(t,n){var i=t>>16&255,e=t>>8&255,r=255&t;return n.z51_1=i/255,n.a52_1=e/255,n.b52_1=r/255,n.c52_1=1,n},Pr(Ra).d52=function(t){var n=255*t.z51_1,i=Wr(n),e=255*t.a52_1,r=Wr(e),s=255*t.b52_1;return i<<16|r<<8|Wr(s)},Pr(Pa).j52=function(){return!(null==this.h52_1)},Pr(Pa).k52=function(){this.i52_1=!0},Pr(Pa).toString=function(){return"PickedObject(isOnTop="+this.i52_1+", identifier="+this.e52_1+", userObject="+Gr(this.f52_1)+", layer="+this.g52_1+", terrainPosition="+this.h52_1+")"},Pr(Fa).m52=function(){return this.l52_1.c2()},Pr(Fa).n52=function(){return this.l52_1.n()},Pr(Fa).o52=function(){var t;t:{for(var n=this.m52().v();n.w();){var i=n.y();if(i.i52_1){t=i;break t}}t=null}return t},Pr(Fa).p52=function(){var t;t:{for(var n=this.m52().v();n.w();){var i=n.y();if(i.j52()){t=i;break t}}t=null}return t},Pr(Fa).q52=function(t){var n=this.l52_1,i=t.e52_1;n.e2(i,t)},Pr(Fa).r52=function(t){return this.l52_1.o2(t)},Pr(Fa).s52=function(){return this.l52_1.b1()},Pr(Fa).toString=function(){var t=this.m52();return Jr(t,", ","PickedObjectList{","}",Yr,Yr,La)},Pr(Va).w52=function(){this.u52_1.k14(p)},Pr(Wa).h54=function(t){if(!(t>0)){var n=kr.n54(kr.i54_1,"WorldWind","setDensityFactor","invalidDensityFactor");throw is(Gr(n))}this.h53_1=t},Pr(Wa).r1h=function(){this.x52_1.b1(),this.y52_1.b55_1.f55(),this.f53_1.k55(),this.h54(1)},Pr(Wa).l55=function(){this.l53_1.m55_1.l56(oe),this.l53_1.m55_1.l56(Dk()),this.l53_1.m55_1.l56(jk()),this.l53_1.m55_1.m56(0),this.l53_1.m55_1.n56(he),this.l53_1.m55_1.o56(Mk(),Nk()),this.l53_1.m55_1.p56(ce),this.l53_1.q56(),this.m53_1=this.l53_1.m55_1.r56(fe)},Pr(Wa).s56=function(t,n){if(this.l53_1.m55_1.t56(0,0,t,n),this.g53_1&&0!==this.f53_1.j55_1)try{var i=this.d53_1;i.u56((e=i.a54_1,r=n/this.f53_1.j55_1,Uh().d5d(e*xs(r))))}catch(t){if(!(t instanceof es))throw t}var e,r;this.f53_1.v56(0,0,t,n)},Pr(Wa).w56=function(t,n){if(null!=n)this.x56(this.n53_1),this.y52_1.t57(n.b54_1,n.c54_1,n.f54_1,this.p53_1),t.l57_1.u57(n);else if(this.f53_1.n19()||!this.s57(this.f53_1.i55_1/2,this.f53_1.j55_1/2,t.l57_1)){this.x56(this.n53_1),this.n53_1.b57(this.q53_1.y56_1),this.n53_1.c57(this.q53_1.z56_1);var i=this.y52_1.d57(this.d53_1.v53_1,this.d53_1.w53_1);this.q53_1.f57(this.y52_1.e57(i.f54_1),this.p53_1),this.y52_1.r57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,t.l57_1)}return this.y52_1.v57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,this.o53_1),this.n53_1.w57(this.o53_1),t.n57_1=-this.n53_1.a57_1[11],t.o57_1=this.n53_1.x57(this.d53_1.z53_1),t.p57_1=this.n53_1.y57(),t.q57_1=this.d53_1.z53_1,t},Pr(Wa).z57=function(t,n,i){return n=n===Yr?null:n,i===Yr?this.w56(t,n):i.w56.call(this,t,n)},Pr(Wa).a58=function(t){this.b58(t),this.c58(t,this.n53_1),this.n53_1.b57(this.p53_1),this.y52_1.r57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,this.d53_1.v53_1),this.y52_1.v57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,this.o53_1),this.n53_1.w57(this.o53_1),this.d53_1.w53_1=Nh(),this.d53_1.x53_1=this.n53_1.x57(t.q57_1),this.d53_1.y53_1=this.n53_1.y57(),this.d53_1.z53_1=t.q57_1;var n=this.d53_1.v53_1,i=this.y52_1.e58()?10:this.y52_1.d58(n.b54_1,n.c54_1)*this.i53_1+10;if(i>n.f54_1){n.f54_1=i,this.y52_1.t57(n.b54_1,n.c54_1,n.f54_1,this.p53_1),this.y52_1.t57(t.l57_1.b54_1,t.l57_1.c54_1,t.l57_1.f54_1,this.q53_1.y56_1),this.y52_1.f58(t.l57_1.b54_1,t.l57_1.c54_1,this.q53_1.z56_1),this.p53_1.g58(this.q53_1.y56_1).h58();var e=this.q53_1.z56_1.i58(this.p53_1);if(e>=-1&&e<=1){var r=this.d53_1,s=Uh(),o=Math.acos(e);r.y53_1=s.i59(o)}}},Pr(Wa).s57=function(t,n,i){var e,r;if(this.l59(t,n,this.q53_1)){var s;t:{var o=this.a53_1.j59().c2();if(ss(o,rs)&&o.d1())s=!1;else{for(var u=o.v();u.w();)if(u.y().k59(this.q53_1,this.p53_1)){s=!0;break t}s=!1}}r=s}else r=!1;return r?(this.y52_1.r57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,i),e=!0):e=!1,e},Pr(Wa).m59=function(t,n){return this.n59(t.g57_1,t.h57_1,t.k57_1,n)},Pr(Wa).n59=function(t,n,i,e){return!this.f53_1.n19()&&(this.o59(this.o53_1,this.n53_1),this.o53_1.w57(this.n53_1),!!this.o53_1.p59(t,n,i,this.f53_1,this.p53_1)&&(e.g57_1=this.p53_1.g57_1,e.h57_1=this.f53_1.j55_1-this.p53_1.h57_1,!0))},Pr(Wa).q59=function(t,n,i,e){return this.y52_1.t57(t,n,i,this.p53_1),this.m59(this.p53_1,e)},Pr(Wa).r59=function(t,n,i){var e;return this.l59(t,n,this.q53_1)&&this.y52_1.k59(this.q53_1,this.p53_1)?(this.y52_1.r57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,i),e=!0):e=!1,e},Pr(Wa).l59=function(t,n,i){return!this.f53_1.n19()&&(this.o59(this.o53_1,this.n53_1),this.o53_1.w57(this.n53_1).s59(),!!this.o53_1.t59(t,this.f53_1.j55_1-n,this.f53_1,i.y56_1,i.z56_1)&&(i.z56_1.g58(i.y56_1).h58(),!0))},Pr(Wa).u59=function(t){var n=.5*Lh(this.d53_1.a54_1);return 2*t*Math.tan(n)/this.f53_1.j55_1},Pr(Wa).u53=function(){var t=.5*Lh(this.d53_1.a54_1),n=Math.sin(t),i=this.y52_1.v59();return i/n-i},Pr(Wa).w59=function(t){var n=t.h5a_1;if(!n){var i=this.b53_1;null==i||i.j5a(this.k53_1)}this.y52_1.e58()&&(this.d53_1.y53_1=Uh().j58_1,this.d53_1.z53_1=Uh().j58_1),this.k53_1.k5a_1=this.y52_1,this.k53_1.l5a_1=this.z52_1,this.k53_1.n5a_1=this.c53_1,this.k53_1.p5a_1=this.d53_1;var e=this.y52_1.d57(this.d53_1.v53_1,this.d53_1.w53_1);if(this.k53_1.t5a_1=this.y52_1.e57(e.f54_1),this.y52_1.t57(e.b54_1,e.c54_1,e.f54_1,this.k53_1.a5b_1),this.k53_1.q5a_1=this.x52_1,this.k53_1.s5a_1=this.i53_1,this.k53_1.r5a_1=this.h53_1,this.k53_1.u5a_1=this.j53_1,this.k53_1.y5a_1=this.y52_1.vm(),this.k53_1.z5a_1=this.y52_1.b55_1.x5b(),this.o59(t.y59_1,t.z59_1),t.x59_1.y5b(this.f53_1),this.k53_1.b5b_1.y5b(t.x59_1),this.k53_1.c5b_1.z5b(t.y59_1),this.k53_1.d5b_1.z5b(t.z59_1),this.k53_1.e5b_1.a5c(t.y59_1,t.z59_1),n?this.k53_1.f5b_1.l5c(t.y59_1,t.z59_1,t.x59_1,os(t.e5a_1)):this.k53_1.f5b_1.k5c(t.y59_1,t.z59_1,t.x59_1),this.y52_1.e58()){this.q53_1.y56_1.m5c(this.k53_1.a5b_1),this.k53_1.d5b_1.c57(this.q53_1.z56_1);var r,s=this.k53_1;this.y52_1.k59(this.q53_1,this.p53_1)?(this.k53_1.x5a_1=this.y52_1.r57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,L_()),r=this.p53_1.n5c(this.k53_1.a5b_1)):r=this.k53_1.t5a_1,s.v5a_1=r,this.k53_1.w5a_1=this.k53_1.u59(this.k53_1.v5a_1)}this.k53_1.g5b_1=t.a5a_1,this.k53_1.h5b_1=t.b5a_1,this.k53_1.i5b_1=t.c5a_1,this.k53_1.j5b_1=t.d5a_1,this.k53_1.k5b_1=t.e5a_1,this.k53_1.l5b_1=t.f5a_1,this.k53_1.m5b_1=t.g5a_1,this.k53_1.n5b_1=t.h5a_1,this.a53_1.o5c(this.k53_1);var o=!n&&this.k53_1.o5b_1;if(!n){var u=this.b53_1;null==u||u.p5c(this.k53_1)}return this.k53_1.r1h(),o},Pr(Wa).q5c=function(t){var n=t.h5a_1;if(!n){var i=this.b53_1;null==i||i.r5c(this.l53_1)}if(this.l53_1.n55_1.m5c(t.z59_1.b57(this.l53_1.n55_1)),this.l53_1.o55_1.y5b(t.x59_1),this.l53_1.p55_1.z5b(t.y59_1),this.l53_1.q55_1.z5b(t.z59_1),this.l53_1.r55_1.a5c(t.y59_1,t.z59_1),this.l53_1.s55_1.s5c(t.x59_1.i55_1,t.x59_1.j55_1),this.l53_1.t55_1=t.a5a_1,this.l53_1.u55_1=t.b5a_1,this.l53_1.v55_1=t.c5a_1,this.l53_1.w55_1=t.e5a_1,this.l53_1.x55_1=t.f5a_1,this.l53_1.y55_1=t.h5a_1,this.a53_1.t5c(this.l53_1),this.x52_1.u5c(),this.x52_1.v5c(this.l53_1),!n){var e=this.b53_1;null==e||e.w5c(this.l53_1)}this.l53_1.r1h()},Pr(Wa).o59=function(t,n){var i=this.y52_1.d57(this.d53_1.v53_1,this.d53_1.w53_1).f54_1,e=this.y52_1.e57(i)+this.y52_1.e57(this.j53_1);e<1e3&&(e=1e3);var r=(1<0){var u=.5*Lh(this.d53_1.a54_1),a=Math.tan(u),h=2*a*a+1,_=o/(2*Math.sqrt(h));s>_&&(s=_)}s<1&&(s=1),t.x5c(this.f53_1.i55_1,this.f53_1.j55_1,this.d53_1.a54_1,s,e),this.x56(n)},Pr(Wa).x56=function(t){return this.y5c(this.d53_1.v53_1,this.d53_1.w53_1,t),t.z5c(0,0,1,Kh(this.d53_1.x53_1)),t.z5c(1,0,0,this.d53_1.y53_1),t.z5c(0,0,1,this.d53_1.z53_1),t.a5d(),t},Pr(Wa).c58=function(t,n){return this.y5c(t.l57_1,t.m57_1,n),n.z5c(0,0,1,Kh(t.o57_1)),n.z5c(1,0,0,t.p57_1),n.z5c(0,0,1,t.q57_1),n.b5d(0,0,t.n57_1),n.a5d(),n},Pr(Wa).y5c=function(t,n,i){switch(n.v9_1){case 0:this.y52_1.c5d(t.b54_1,t.c54_1,t.f54_1,i);break;case 1:this.y52_1.c5d(t.b54_1,t.c54_1,this.y52_1.d58(t.b54_1,t.c54_1)*this.i53_1,i);break;case 2:this.y52_1.c5d(t.b54_1,t.c54_1,(t.f54_1+this.y52_1.d58(t.b54_1,t.c54_1))*this.i53_1,i)}return i},Pr(Wa).b58=function(t){t.l57_1.b54_1=Qh(t.l57_1.b54_1),t.l57_1.c54_1=Zh(t.l57_1.c54_1),t.n57_1=us(t.n57_1,10,2*this.u53()),t.o57_1=Xh(t.o57_1);var n=t,i=Uh(),e=us(t.p57_1,0,90);n.p57_1=i.d5d(e),t.q57_1=Xh(t.q57_1),this.y52_1.e58()&&(t.n57_1=us(t.n57_1,1,2*as()*this.y52_1.v59()),t.p57_1=Uh().j58_1,t.q57_1=Uh().j58_1)},Pr(Ga).e5d=function(t){var n=t.f5d(),i=null==n?new Ka:n;return i.p5d_1=t,i},Pr(Ka).q5d=function(t){this.g5d_1=t},Pr(Ka).r5d=function(){return this.g5d_1},Pr(Ka).s5d=function(){return this.h5d_1},Pr(Ka).t5d=function(){return this.i5d_1},Pr(Ka).u5d=function(){this.l5d_1=null,this.m5d_1=null,this.n5d_1=null,this.o5d_1=null;var t=this.p5d_1;null==t||t.v5d(this),this.p5d_1=null},Pr(Ka).w5d=function(t,n){var i=this.l5d_1,e=null==i?null:i.c5e(t),r=null!=e&&e;return r&&t.m55_1.d5e(n,3,ax(),!1,0,0),r},Pr(Ka).e5e=function(t,n){var i=this.m5d_1,e=null==i?null:i.c5e(t),r=null!=e&&e;return r&&t.m55_1.d5e(n,1,ax(),!1,0,0),r},Pr(Ka).f5e=function(t,n){var i=this.n5d_1,e=null==i?null:i.c5e(t),r=null!=e&&e;return r&&t.m55_1.d5e(n,2,ax(),!1,0,0),r},Pr(Ka).g5e=function(t){var n=this.o5d_1,i=null==n?null:n.c5e(t),e=null!=i&&i;return e&&t.m55_1.o5e(Hk(),this.j5d_1.a(),Fk(),Tr(this.j5d_1.m5e_1,2)),e},Pr(Ka).p5e=function(t){var n=this.o5d_1,i=null==n?null:n.c5e(t),e=null!=i&&i;return e&&t.m55_1.o5e(Lk(),this.k5d_1.a(),Fk(),Tr(this.k5d_1.m5e_1,2)),e},Pr(Ka).q5e=function(t){this.p5e(t)},Pr(Xa).v5e=function(){var t=this.u55_1,n=null==t?null:t.n52();return null==n?0:n},Pr(Xa).a5f=function(){return this.z55_1},Pr(Xa).b5f=function(){return this.a56_1},Pr(Xa).c5f=function(){return this.d5f(this.b56_1)},Pr(Xa).e5f=function(){var t,n=this.f56_1;if(null==n){var i=new cb,e=new gb(1024,1024,nx(),ix(),!0),r=new gb(1024,1024,je,Fk(),!0);r.p5f(Yk(),Wk()),r.p5f(Gk(),Wk()),i.s5f(this,e,ex()),i.s5f(this,r,rx()),this.f56_1=i,t=i}else t=n;return t},Pr(Xa).t5f=function(){var t,n=this.g56_1;if(null==n){var i=new xb(Rk(),new Float32Array([0,1,0,0,1,1,1,0]));this.g56_1=i,t=i}else t=n;return t},Pr(Xa).r1h=function(){this.n55_1.u5f(0,0,0),this.o55_1.k55(),this.p55_1.v5f(),this.q55_1.v5f(),this.r55_1.v5f(),this.s55_1.v5f(),this.t55_1=null,this.u55_1=null,this.v55_1=null,this.w55_1=null,this.x55_1=null,this.y55_1=!1,ls(this.h56_1,0),this.k56_1.b1(),this.j56_1.r1h()},Pr(Xa).q56=function(){this.z55_1=uE().r5e_1,this.a56_1=KS().s5e_1,this.b56_1=tx(),this.d56_1=nE().u5e_1,this.e56_1=nE().u5e_1,this.f56_1=null,this.g56_1=null,cs(this.c56_1,rE().t5e_1),this.j56_1.q56()},Pr(Xa).d5g=function(){var t=this.t55_1;return null==t?null:t.d5g()},Pr(Xa).e5g=function(){var t=this.t55_1;return null==t?null:t.e5g()},Pr(Xa).f5g=function(){var t=this.t55_1;null==t||t.f5g()},Pr(Xa).g5g=function(t){var n=this.u55_1,i=null==n?null:n.h5g(t),e=null==i||ss(i,Oh)?i:Nr();if(null==e)throw fs(Gr("Invalid index"));return e},Pr(Xa).i5g=function(t){this.z55_1.equals(t)||(this.z55_1=t,this.m55_1.j5g(sx(),t))},Pr(Xa).k5g=function(t){this.a56_1.equals(t)||(this.a56_1=t,this.m55_1.k5g(t))},Pr(Xa).l5g=function(t){this.b56_1!==t&&(this.b56_1=t,this.m55_1.m5g(t))},Pr(Xa).d5f=function(t){return this.c56_1[t-tx()|0]},Pr(Xa).n5g=function(t){var n=this.b56_1-tx()|0;this.c56_1[n].equals(t)||(this.c56_1[n]=t,this.m55_1.o5g(ox(),t))},Pr(Xa).p5g=function(t){return t===Rk()?this.d56_1:t===Pk()?this.e56_1:nE().u5e_1},Pr(Xa).q5g=function(t,n){t!==Rk()||this.d56_1.equals(n)?(t!==Pk()||this.e56_1.equals(n)||(this.e56_1=n),this.m55_1.q5g(t,n)):(this.d56_1=n,this.m55_1.q5g(t,n))},Pr(Xa).r5g=function(t){return this.j56_1.s5g(this,t)},Pr(Xa).t5g=function(t,n,i){return this.m55_1.u5g(t,n,1,1,nx(),ix(),this.i56_1),i.z51_1=(255&this.i56_1[0])/255,i.a52_1=(255&this.i56_1[1])/255,i.b52_1=(255&this.i56_1[2])/255,i.c52_1=(255&this.i56_1[3])/255,i},Pr(Xa).v5g=function(t,n,i,e){var r=Tr(i,e),s=this.w5g(Tr(r,4)),o=this.m55_1.r56(ux());this.m55_1.x5g(ux(),1),this.m55_1.u5g(t,n,i,e,nx(),ix(),s),this.m55_1.x5g(ux(),o);var u=vs(),a=eb(),h=0;if(h>1,s=Math.max(r,12),o=hs(Array(e+s|0),null),u=this.y5e_1,a=u.length;ps(u,o,0,0,a),this.y5e_1=o}var h,_=this.y5e_1[this.w5e_1];if(null==_){var l=new _h;this.y5e_1[this.w5e_1]=l,h=l}else h=_;var c=h,f=this.w5e_1;this.w5e_1=f+1|0,c.f5l(t,n,i,f)},Pr(fh).h5g=function(t){var n;if(tO.q5n_1&&kr.v5o(kr.j54_1,"StarFieldLayer - sunSize is to big, max size allowed is: "+O.q5n_1),!0!==(null==i?null:i.c5e(t))||!0!==(null==e?null:e.z5l(t))?Xr:(t.m55_1.d5e(0,4,ax(),!1,0,0),n.t5o(!0),void t.m55_1.z5k(hx(),0,1))},Pr(yh).w5o=function(t){var n=t.f5d(),i=null==n?new kh:n;return i.a5p_1=t,i},Pr(kh).u5d=function(){this.z5o_1=null;var t=this.a5p_1;null==t||t.v5d(this),this.a5p_1=null},Pr(kh).q5e=function(t){var n=this.z5o_1;if(null==n)return Xr;var i=n;if(!i.w5i(t))return Xr;i.u5k(!1),i.v5k(this.x5o_1),i.w5k(this.y5o_1);var e=0,r=t.v5e();if(e0&&this.m5p(t,a)}while(s180?n-360:n<-180?360+n:n},Pr(Fh).p5t=function(t){var n=t%360;return n>=0?n:360+n},Pr(Fh).q5t=function(t){var n=t%180,i=n>90?180-n:n<-90?-180-n:n;return 0==(ks(t/180)%2|0)?i:-i},Pr(Fh).r5t=function(t){var n=t%360;return n>180?n-360:n<-180?360+n:n},Pr(Fh).s5t=function(t){return us(t,-90,90)},Pr(Fh).t5t=function(t){return us(t,-180,180)},Pr(Fh).u5t=function(t,n){return this.d5d(.5*(t+n))},Pr(Fh).v5t=function(t,n){return t>=n?t:n},Pr(Fh).w5t=function(t,n){return t<=n?t:n},Pr(e_).y5t=function(t){return n_(this.x5t_1,t)},Pr(e_).d=function(t){return function(t,n){return n_(t.x5t_1,n instanceof e_?n.x5t_1:Nr())}(this,t)},Pr(e_).toString=function(){return this.x5t_1+"°"},Pr(e_).hashCode=function(){return i_(this.x5t_1)},Pr(e_).equals=function(t){return function(t,n){if(!(n instanceof e_))return!1;var i=n instanceof e_?n.x5t_1:Nr();return!!Ss(t,i)}(this.x5t_1,t)},Pr(a_).e5u=function(){return 0===this.a5s_1.g57_1&&0===this.a5s_1.h57_1&&0===this.a5s_1.k57_1&&this.g5s_1===Math.sqrt(3)},Pr(a_).f5u=function(){return this.a5s_1.u5f(0,0,0),this.b5s_1.u5f(-.5,0,0),this.c5s_1.u5f(.5,0,0),this.d5s_1.u5f(1,0,0),this.e5s_1.u5f(0,1,0),this.f5s_1.u5f(0,0,1),this.g5s_1=Math.sqrt(3),this},Pr(a_).g5u=function(t,n,i){var e=z_();e.h5u(t,n,i),e.i5u(this.d5s_1,this.e5s_1,this.f5s_1),this.d5s_1.h58(),this.e5s_1.h58(),this.f5s_1.h58();var r=1/0,s=-1/0,o=1/0,u=-1/0,a=1/0,h=-1/0,_=il(),l=Os(qs(0,n),i),c=l.ea_1,f=l.fa_1,v=l.ga_1;if(v>0&&c<=f||v<0&&f<=c)do{var d=c;c=c+v|0,_.u5f(t[d],t[d+1|0],t[d+2|0]);var w=_.i58(this.d5s_1);r>w&&(r=w),sp&&(o=p),um&&(a=m),h180){var p=e;n.t57(t.l5u(),Vh(t.m5u(),90),p,this.h5s_1),n.t57(t.l5u(),Wh(t.m5u(),90),p,this.i5s_1),r_(0,this.d5s_1,h,this.e5s_1,_,this.f5s_1,l,this.h5s_1),r_(0,this.d5s_1,h,this.e5s_1,_,this.f5s_1,l,this.i5s_1)}h[1]-h[0]<_[1]-_[0]&&s_(0,this.d5s_1,h,this.e5s_1,_),_[1]-_[0]i&&(n=i),n>(i=this.b5s_1.o5u(t))&&(n=i),n>(i=this.c5s_1.o5u(t))&&(n=i),this.h5s_1.g57_1=this.a5s_1.g57_1-.5*this.e5s_1.g57_1,this.h5s_1.h57_1=this.a5s_1.h57_1-.5*this.e5s_1.h57_1,this.h5s_1.k57_1=this.a5s_1.k57_1-.5*this.e5s_1.k57_1,n>(i=this.h5s_1.o5u(t))&&(n=i),this.h5s_1.g57_1=this.a5s_1.g57_1+.5*this.e5s_1.g57_1,this.h5s_1.h57_1=this.a5s_1.h57_1+.5*this.e5s_1.h57_1,this.h5s_1.k57_1=this.a5s_1.k57_1+.5*this.e5s_1.k57_1,n>(i=this.h5s_1.o5u(t))&&(n=i);var e=n;return Math.sqrt(e)},Pr(a_).n5s=function(t){this.h5s_1.m5c(this.b5s_1),this.i5s_1.m5c(this.c5s_1);var n,i=this.l5s_1>=0?t.i5c_1[this.l5s_1]:null,e=-1;if(!1!==(null==i?null:o_(this,i)>=0)){var r;t:{for(var s=t.i5c_1,o=0,u=s.length;o=0;if(h||(this.l5s_1=e),!h){r=!1;break t}}r=!0}n=r}else n=!1;return n},Pr(a_).toString=function(){return"BoundingBox(center="+this.a5s_1+", bottomCenter="+this.b5s_1+", topCenter="+this.c5s_1+", r="+this.d5s_1+", s="+this.e5s_1+", t="+this.f5s_1+", radius="+this.g5s_1+")"},Pr(h_).s5u=function(t){if(!(t>=0)){var n=kr.n54(kr.i54_1,"BoundingSphere","setRadius","invalidRadius");throw is(Gr(n))}this.q5u_1=t},Pr(h_).t5u=function(t,n){return this.p5u_1.m5c(t),this.s5u(n),this},Pr(h_).n5s=function(t){var n,i=-this.q5u_1,e=this.r5u_1>=0?t.i5c_1[this.r5u_1]:null,r=-1;if(!1!==(null==e?null:e.u5u(this.p5u_1)>i)){var s;t:{for(var o=t.i5c_1,u=0,a=o.length;ui;if(_||(this.r5u_1=r),!_){s=!1;break t}}s=!0}n=s}else n=!1;return n},Pr(h_).equals=function(t){return this===t||t instanceof h_&&!!this.p5u_1.equals(t.p5u_1)&&this.q5u_1===t.q5u_1},Pr(h_).hashCode=function(){var t=this.p5u_1.hashCode();return Tr(31,t)+Es(this.q5u_1)|0},Pr(h_).toString=function(){return"BoundingSphere(center="+this.p5u_1+", radius="+this.q5u_1+")"},Pr(__).u56=function(t){if(!(t>0&&t<180)){var n=kr.n54(kr.i54_1,"Camera","setFieldOfView","invalidFieldOfView");throw is(Gr(n))}this.a54_1=t},Pr(__).v5u=function(t,n,i,e,r,s,o){return this.v53_1.g54(t,n,i),this.w53_1=e,this.x53_1=r,this.y53_1=s,this.z53_1=o,this},Pr(__).toString=function(){return"Camera(position="+this.v53_1+", altitudeMode="+this.w53_1+", heading="+new e_(this.x53_1)+", tilt="+new e_(this.y53_1)+", roll="+new e_(this.z53_1)+", fieldOfView="+new e_(this.a54_1)+")"},Pr(f_).a5v=function(){var t=1/this.z5u_1;return this.y5u_1*(1-t)},Pr(f_).b5v=function(){var t=1/this.z5u_1;return 2*t-t*t},Pr(f_).toString=function(){return"Ellipsoid(semiMajorAxis="+this.y5u_1+", inverseFlattening="+this.z5u_1+")"},Pr(f_).hashCode=function(){var t=Es(this.y5u_1);return Tr(t,31)+Es(this.z5u_1)|0},Pr(f_).equals=function(t){if(this===t)return!0;if(!(t instanceof f_))return!1;var n=t instanceof f_?t:Nr();return!!Ss(this.y5u_1,n.y5u_1)&&!!Ss(this.z5u_1,n.z5u_1)},Pr(d_).c5v=function(){return this.b5c_1.d5v(1,0,0,1),this.c5c_1.d5v(-1,0,0,1),this.d5c_1.d5v(0,1,0,1),this.e5c_1.d5v(0,-1,0,1),this.f5c_1.d5v(0,0,-1,1),this.g5c_1.d5v(0,0,1,1),this.h5c_1.v56(0,0,1,1),this},Pr(d_).k5c=function(t,n,i){this.j5c_1.e5v(n);var e=t.a57_1,r=e[12]+e[0],s=e[13]+e[1],o=e[14]+e[2],u=e[15]+e[3];return this.b5c_1.d5v(r,s,o,u),this.b5c_1.f5v(this.j5c_1),r=e[12]-e[0],s=e[13]-e[1],o=e[14]-e[2],u=e[15]-e[3],this.c5c_1.d5v(r,s,o,u),this.c5c_1.f5v(this.j5c_1),r=e[12]+e[4],s=e[13]+e[5],o=e[14]+e[6],u=e[15]+e[7],this.d5c_1.d5v(r,s,o,u),this.d5c_1.f5v(this.j5c_1),r=e[12]-e[4],s=e[13]-e[5],o=e[14]-e[6],u=e[15]-e[7],this.e5c_1.d5v(r,s,o,u),this.e5c_1.f5v(this.j5c_1),r=e[12]+e[8],s=e[13]+e[9],o=e[14]+e[10],u=e[15]+e[11],this.f5c_1.d5v(r,s,o,u),this.f5c_1.f5v(this.j5c_1),r=e[12]-e[8],s=e[13]-e[9],o=e[14]-e[10],u=e[15]-e[11],this.g5c_1.d5v(r,s,o,u),this.g5c_1.f5v(this.j5c_1),this.h5c_1.y5b(i),this},Pr(d_).l5c=function(t,n,i,e){var r,s,o,u,a,h,_,l,c=e.g55_1,f=e.g55_1+e.i55_1|0,v=e.h55_1,d=e.h55_1+e.j55_1|0,w=this.j5c_1.a5c(t,n).s59(),p=il();r=p;var m=p,g=il();s=g,w.t59(c,v,i,m,g);var b=il();o=b;var $=b,y=il();u=y,w.t59(f,v,i,$,y);var k=il();a=k;var x=k,S=il();h=S,w.t59(c,d,i,x,S);var E=il();_=E;var C=E,q=il();l=q,w.t59(f,d,i,C,q);var O=new el(h.g57_1-r.g57_1,h.h57_1-r.h57_1,h.k57_1-r.k57_1),z=new el(a.g57_1-s.g57_1,a.h57_1-s.h57_1,a.k57_1-s.k57_1),A=O.g5v(z);this.b5c_1.d5v(A.g57_1,A.h57_1,A.k57_1,-A.i58(r)),O.u5f(_.g57_1-u.g57_1,_.h57_1-u.h57_1,_.k57_1-u.k57_1),z.u5f(l.g57_1-o.g57_1,l.h57_1-o.h57_1,l.k57_1-o.k57_1);var T=O.g5v(z);this.c5c_1.d5v(T.g57_1,T.h57_1,T.k57_1,-T.i58(o)),O.u5f(u.g57_1-r.g57_1,u.h57_1-r.h57_1,u.k57_1-r.k57_1),z.u5f(s.g57_1-o.g57_1,s.h57_1-o.h57_1,s.k57_1-o.k57_1);var I=O.g5v(z);this.d5c_1.d5v(I.g57_1,I.h57_1,I.k57_1,-I.i58(o)),O.u5f(h.g57_1-_.g57_1,h.h57_1-_.h57_1,h.k57_1-_.k57_1),z.u5f(l.g57_1-a.g57_1,l.h57_1-a.h57_1,l.k57_1-a.k57_1);var D=O.g5v(z);this.e5c_1.d5v(D.g57_1,D.h57_1,D.k57_1,-D.i58(a)),O.u5f(a.g57_1-o.g57_1,a.h57_1-o.h57_1,a.k57_1-o.k57_1),z.u5f(_.g57_1-r.g57_1,_.h57_1-r.h57_1,_.k57_1-r.k57_1);var j=O.g5v(z);this.f5c_1.d5v(j.g57_1,j.h57_1,j.k57_1,-j.i58(r)),O.u5f(l.g57_1-s.g57_1,l.h57_1-s.h57_1,l.k57_1-s.k57_1),z.u5f(h.g57_1-u.g57_1,h.h57_1-u.h57_1,h.k57_1-u.k57_1);var M=O.g5v(z);return this.g5c_1.d5v(M.g57_1,M.h57_1,M.k57_1,-M.i58(s)),this.h5c_1.y5b(e),this},Pr(d_).h5v=function(t){return this.g5c_1.i58(t)>0&&this.b5c_1.i58(t)>0&&this.c5c_1.i58(t)>0&&this.e5c_1.i58(t)>0&&this.d5c_1.i58(t)>0&&this.f5c_1.i58(t)>0},Pr(d_).i5v=function(t,n){if(this.h5v(t)||this.h5v(n))return!0;if(t.equals(n))return!1;var i=0,e=this.i5c_1.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=this.i5c_1[r];if(s.j5v(t,n)<0)return!1;if(null!=s.k5v(t,n))return!0}while(i<=e);return!1},Pr(d_).l5v=function(t){return this.h5c_1.m5v(t)},Pr(p_).n5v=function(t,n){return this.y56_1.m5c(t),this.z56_1.u5f(n.g57_1-t.g57_1,n.h57_1-t.h57_1,n.k57_1-t.k57_1),this},Pr(p_).f57=function(t,n){return n.g57_1=this.y56_1.g57_1+this.z56_1.g57_1*t,n.h57_1=this.y56_1.h57_1+this.z56_1.h57_1*t,n.k57_1=this.y56_1.k57_1+this.z56_1.k57_1*t,n},Pr(p_).o5v=function(t,n,i,e,r){if(!(t.length>=n)){var s=kr.n54(kr.i54_1,"Line","triStripIntersection","missingArray");throw is(Gr(s))}if(!(n>=3)){var o=kr.n54(kr.i54_1,"Line","triStripIntersection","invalidStride");throw is(Gr(o))}if(0===i.length){var u=kr.n54(kr.i54_1,"Line","triStripIntersection","missingArray");throw is(Gr(u))}if(!(e>=0)){var a=kr.n54(kr.i54_1,"Line","triStripIntersection","invalidCount");throw is(Gr(a))}var h=this.z56_1.g57_1,_=this.z56_1.h57_1,l=this.z56_1.k57_1,c=this.y56_1.g57_1,f=this.y56_1.h57_1,v=this.y56_1.k57_1,d=1/0,w=1e-5,p=i[0]*n|0,m=p;p=m+1|0;var g=t[m],b=p;p=b+1|0;var $=t[b],y=t[p],k=p=i[1]*n|0;p=k+1|0;var x=t[k],S=p;p=S+1|0;var E=t[S],C=t[p],q=2;if(q-1e-5&&V1.00001)){var X=W*N-G*M,J=G*j-Y*N,Z=Y*M-W*j,Q=B*(h*X+_*J+l*Z);if(!(Q<-1e-5||K+Q>1.00001)){var tt=B*(R*X+P*J+L*Z);tt>=0&&tte?Uh().m58_1:Uh().j58_1;var s=r-i,o=Math.cos(e)*Math.sin(s),u=r-i,a=Math.cos(n)*Math.sin(e)-Math.sin(n)*Math.cos(e)*Math.cos(u),h=Math.atan2(o,a);return ys(h)?Uh().j58_1:Uh().i59(h)},Pr($_).t5v=function(t){var n=Lh(this.b54_1),i=Lh(this.c54_1),e=Lh(t.b54_1),r=Lh(t.c54_1);if(n===e&&i===r)return 0;var s=(e-n)/2,o=Math.sin(s),u=(r-i)/2,a=Math.sin(u),h=o*o+Math.cos(n)*Math.cos(e)*a*a,_=Math.sqrt(h),l=2*Math.asin(_);return ys(l)?0:l},Pr($_).u5v=function(t,n,i){if(0===n)return i.b54_1=this.b54_1,i.c54_1=this.c54_1,i;var e=Lh(this.b54_1),r=Lh(this.c54_1),s=Lh(t),o=Math.cos(e),u=Math.sin(e),a=Math.cos(s),h=Math.sin(s),_=Math.sin(n),l=Math.cos(n),c=u*l+o*_*a,f=Math.asin(c),v=_*h,d=o*l-u*_*a,w=r+Math.atan2(v,d);return ys(f)||ys(w)?(i.b54_1=this.b54_1,i.c54_1=this.c54_1):(i.b54_1=Jh(Uh().i59(f)),i.c54_1=Zh(Uh().i59(w))),i},Pr($_).v5v=function(t){var n=Lh(this.b54_1),i=Lh(this.c54_1),e=Lh(t.b54_1),r=Lh(t.c54_1);if(n===e&&i===r)return Uh().j58_1;var s=r-i,o=e/2+as()/4,u=Math.tan(o),a=n/2+as()/4,h=u/Math.tan(a),_=Math.log(h),l=s;Math.abs(l)>as()&&(s=s>0?-(2*as()-s):2*as()+s);var c=s,f=Math.atan2(c,_);return ys(f)?Uh().j58_1:Uh().i59(f)},Pr($_).w5v=function(t){var n=Lh(this.b54_1),i=Lh(this.c54_1),e=Lh(t.b54_1),r=Lh(t.c54_1);if(n===e&&i===r)return 0;var s,o=e-n,u=r-i;if(Math.abs(o)<1e-15)s=Math.cos(n);else{var a=e/2+as()/4,h=Math.tan(a),_=n/2+as()/4,l=h/Math.tan(_);s=o/Math.log(l)}var c=s,f=u;Math.abs(f)>as()&&(u=u>0?-(2*as()-u):2*as()+u);var v=o*o+c*c*u*u,d=Math.sqrt(v);return ys(d)?0:d},Pr($_).x5v=function(t,n,i){if(0===n)return i.b54_1=this.b54_1,i.c54_1=this.c54_1,i;var e,r=Lh(this.b54_1),s=Lh(this.c54_1),o=Lh(t),u=r+n*Math.cos(o),a=u-r;if(Math.abs(a)<1e-15)e=Math.cos(r);else{var h=u/2+as()/4,_=Math.tan(h),l=r/2+as()/4,c=_/Math.tan(l);e=a/Math.log(c)}var f=e,v=n*Math.sin(o)/f,d=u;Math.abs(d)>as()/2&&(u=u>0?as()-u:-as()-u);var w=(s+v+as())%(2*as())-as();return ys(u)||ys(w)?(i.b54_1=this.b54_1,i.c54_1=this.c54_1):(i.b54_1=Jh(Uh().i59(u)),i.c54_1=Zh(Uh().i59(w))),i},Pr($_).equals=function(t){return this===t||t instanceof $_&&this.b54_1===t.b54_1&&this.c54_1===t.c54_1},Pr($_).hashCode=function(){var t=i_(this.b54_1);return Tr(31,t)+i_(this.c54_1)|0},Pr($_).toString=function(){return"Location(latitude="+new e_(this.b54_1)+", longitude="+new e_(this.c54_1)+")"},Pr(k_).y5v=function(t,n,i,e,r,s,o,u){return this.l57_1.g54(t,n,i),this.m57_1=e,this.n57_1=r,this.o57_1=s,this.p57_1=o,this.q57_1=u,this},Pr(k_).z5v=function(t){return this.y5v(t.l57_1.b54_1,t.l57_1.c54_1,t.l57_1.f54_1,t.m57_1,t.n57_1,t.o57_1,t.p57_1,t.q57_1)},Pr(k_).toString=function(){return"LookAt(position="+this.l57_1+", altitudeMode="+this.m57_1+", range="+this.n57_1+", heading="+new e_(this.o57_1)+", tilt="+new e_(this.p57_1)+", roll="+new e_(this.q57_1)+")"},Pr(C_).k5i=function(t){var n=t.d5i_1,i=this.d5i_1,e=n.length;return ps(n,i,0,0,e),this},Pr(C_).b5w=function(t,n){return this.d5i_1[0]=t,this.d5i_1[4]=n,this},Pr(C_).v5f=function(){var t=S_().a5w_1,n=this.d5i_1,i=t.length;return ps(t,n,0,0,i),this},Pr(C_).c5w=function(){return this.d5i_1[0]=1,this.d5i_1[1]=0,this.d5i_1[2]=0,this.d5i_1[3]=0,this.d5i_1[4]=-1,this.d5i_1[5]=1,this.d5i_1[6]=0,this.d5i_1[7]=0,this.d5i_1[8]=1,this},Pr(C_).e5r=function(t,n){var i=t.t5p(),e=t.s5p(),r=n.t5p(),s=n.s5p(),o=e/s,u=i/r,a=(t.q5p_1-n.q5p_1)/s,h=(t.o5p_1-n.o5p_1)/r;return this.d5i_1[0]=o,this.d5i_1[1]=0,this.d5i_1[2]=a,this.d5i_1[3]=0,this.d5i_1[4]=u,this.d5i_1[5]=h,this.d5i_1[6]=0,this.d5i_1[7]=0,this.d5i_1[8]=1,this},Pr(C_).d5r=function(t,n){var i=t.t5p(),e=t.s5p(),r=n.t5p(),s=n.s5p(),o=e/s,u=i/r,a=(t.q5p_1-n.q5p_1)/s,h=(t.o5p_1-n.o5p_1)/r,_=this.d5i_1;_[2]=_[2]+(this.d5i_1[0]*a+this.d5i_1[1]*h);var l=this.d5i_1;l[5]=l[5]+(this.d5i_1[3]*a+this.d5i_1[4]*h);var c=this.d5i_1;c[8]=c[8]+(this.d5i_1[6]*a+this.d5i_1[6]*h);var f=this.d5i_1;f[0]=f[0]*o;var v=this.d5i_1;v[1]=v[1]*u;var d=this.d5i_1;d[3]=d[3]*o;var w=this.d5i_1;w[4]=w[4]*u;var p=this.d5i_1;p[6]=p[6]*o;var m=this.d5i_1;return m[7]=m[7]*u,this},Pr(C_).d5w=function(t){var n=this.d5i_1,i=t.d5i_1,e=n[0],r=n[1],s=n[2];return n[0]=e*i[0]+r*i[3]+s*i[6],n[1]=e*i[1]+r*i[4]+s*i[7],n[2]=e*i[2]+r*i[5]+s*i[8],e=n[3],r=n[4],s=n[5],n[3]=e*i[0]+r*i[3]+s*i[6],n[4]=e*i[1]+r*i[4]+s*i[7],n[5]=e*i[2]+r*i[5]+s*i[8],e=n[6],r=n[7],s=n[8],n[6]=e*i[0]+r*i[3]+s*i[6],n[7]=e*i[1]+r*i[4]+s*i[7],n[8]=e*i[2]+r*i[5]+s*i[8],this},Pr(C_).e5w=function(t,n){var i=n;if(!((t.length-i|0)>=9)){var e=kr.n54(kr.i54_1,"Matrix4","transposeToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.d5i_1[0];var s=i;i=s+1|0,t[s]=this.d5i_1[3];var o=i;i=o+1|0,t[o]=this.d5i_1[6];var u=i;i=u+1|0,t[u]=this.d5i_1[1];var a=i;i=a+1|0,t[a]=this.d5i_1[4];var h=i;i=h+1|0,t[h]=this.d5i_1[7];var _=i;i=_+1|0,t[_]=this.d5i_1[2];var l=i;return i=l+1|0,t[l]=this.d5i_1[5],t[i]=this.d5i_1[8],t},Pr(C_).equals=function(t){return this===t||t instanceof C_&&Ns(this.d5i_1,t.d5i_1)},Pr(C_).hashCode=function(){return Rs(this.d5i_1)},Pr(C_).toString=function(){return"Matrix3(["+this.d5i_1[0]+", "+this.d5i_1[1]+", "+this.d5i_1[2]+"], ["+this.d5i_1[3]+", "+this.d5i_1[4]+", "+this.d5i_1[5]+"], ["+this.d5i_1[6]+", "+this.d5i_1[7]+", "+this.d5i_1[8]+"])"},Pr(q_).k5w=function(t,n){for(var i=0,e=hs(Array(4),null);i<4;)e[i]=new Float64Array(4),i=i+1|0;var r=e;r[0][0]=t[0],r[0][1]=t[1],r[0][2]=t[2],r[0][3]=t[3],r[1][0]=t[4],r[1][1]=t[5],r[1][2]=t[6],r[1][3]=t[7],r[2][0]=t[8],r[2][1]=t[9],r[2][2]=t[10],r[2][3]=t[11],r[3][0]=t[12],r[3][1]=t[13],r[3][2]=t[14],r[3][3]=t[15];var s=new Int32Array(4),o=this.l5w(r,s),u=0;if(u<=3)do{var a=u;u=u+1|0,o*=r[a][a]}while(u<=3);var h=o;if(Math.abs(h)<1e-8)return!1;for(var _=0,l=hs(Array(4),null);_<4;)l[_]=new Float64Array(4),_=_+1|0;var c=l,f=new Float64Array(4),v=0;if(v<=3)do{var d=v;v=v+1|0;var w=0;if(w<=3)do{var p=w;w=w+1|0,f[p]=0}while(w<=3);f[d]=1,this.m5w(r,s,f);var m=0;if(m<=3)do{var g=m;m=m+1|0,c[g][d]=f[g]}while(m<=3)}while(v<=3);return n[0]=c[0][0],n[1]=c[0][1],n[2]=c[0][2],n[3]=c[0][3],n[4]=c[1][0],n[5]=c[1][1],n[6]=c[1][2],n[7]=c[1][3],n[8]=c[2][0],n[9]=c[2][1],n[10]=c[2][2],n[11]=c[2][3],n[12]=c[3][0],n[13]=c[3][1],n[14]=c[3][2],n[15]=c[3][3],!0},Pr(q_).l5w=function(t,n){var i=new Float64Array(4),e=1,r=0;if(r<=3)do{var s=r;r=r+1|0;var o=0,u=0;if(u<=3)do{var a=u;u=u+1|0;var h=t[s][a],_=Math.abs(h);_>o&&(o=_)}while(u<=3);if(0===o)return 0;i[s]=1/o}while(r<=3);var l=0;if(l<=3)do{var c=l;l=l+1|0;var f=0;if(f=g&&(g=m,b=y)}while($<=3);if(c!==b){var O=0;if(O<=3)do{var z=O;O=O+1|0,m=t[b][z],t[b][z]=t[c][z],t[c][z]=m}while(O<=3);e=-e,i[b]=i[c]}if(n[c]=b,0===t[c][c]&&(t[c][c]=1e-20),3!==c){m=1/t[c][c];var A=c+1|0;if(A<=3)do{var T=A;A=A+1|0;var I=t[T];I[c]=I[c]*m}while(A<=3)}}while(l<=3);return e},Pr(q_).m5w=function(t,n,i){var e=-1,r=0;if(r<=3)do{var s=r;r=r+1|0;var o=n[s],u=i[o];if(i[o]=i[s],-1!==e){var a=e;if(a0)){var s=kr.n54(kr.i54_1,"Matrix4","setToPerspectiveProjection","invalidWidth");throw is(Gr(s))}if(!(n>0)){var o=kr.n54(kr.i54_1,"Matrix4","setToPerspectiveProjection","invalidHeight");throw is(Gr(o))}if(!(i>0&&i<180)){var u=kr.n54(kr.i54_1,"Matrix4","setToPerspectiveProjection","invalidFieldOfView");throw is(Gr(u))}if(e===r){var a=kr.n54(kr.i54_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance");throw is(Gr(a))}if(!(e>0&&r>0)){var h=kr.n54(kr.i54_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance");throw is(Gr(h))}var _=t/n,l=.5*Lh(i),c=2*e*Math.tan(l),f=c*_;return this.a57_1[0]=2*e/f,this.a57_1[1]=0,this.a57_1[2]=0,this.a57_1[3]=0,this.a57_1[4]=0,this.a57_1[5]=2*e/c,this.a57_1[6]=0,this.a57_1[7]=0,this.a57_1[8]=0,this.a57_1[9]=0,this.a57_1[10]=-(r+e)/(r-e),this.a57_1[11]=-2*e*r/(r-e),this.a57_1[12]=0,this.a57_1[13]=0,this.a57_1[14]=-1,this.a57_1[15]=0,this},Pr(A_).s5c=function(t,n){if(!(t>0)){var i=kr.n54(kr.i54_1,"Matrix4","setToScreenProjection","invalidWidth");throw is(Gr(i))}if(!(n>0)){var e=kr.n54(kr.i54_1,"Matrix4","setToScreenProjection","invalidHeight");throw is(Gr(e))}return this.a57_1[0]=2/t,this.a57_1[1]=0,this.a57_1[2]=0,this.a57_1[3]=-1,this.a57_1[4]=0,this.a57_1[5]=2/n,this.a57_1[6]=0,this.a57_1[7]=-1,this.a57_1[8]=0,this.a57_1[9]=0,this.a57_1[10]=2,this.a57_1[11]=-1,this.a57_1[12]=0,this.a57_1[13]=0,this.a57_1[14]=0,this.a57_1[15]=1,this},Pr(A_).h5u=function(t,n,i){if(!(t.length>=i)){var e=kr.n54(kr.i54_1,"Matrix4","setToCovarianceOfPoints","invalidArray");throw is(Gr(e))}if(!(n>=0)){var r=kr.n54(kr.i54_1,"Matrix4","setToCovarianceOfPoints","invalidCount");throw is(Gr(r))}if(!(i>=3)){var s=kr.n54(kr.i54_1,"Matrix4","setToCovarianceOfPoints","invalidStride");throw is(Gr(s))}var o=0,u=0,a=0,h=0,_=0,l=0,c=0,f=0,v=0,d=0,w=Os(qs(0,n),i),p=w.ea_1,m=w.fa_1,g=w.ga_1;if(g>0&&p<=m||g<0&&m<=p)do{var b=p;p=p+g|0,o+=t[b],u+=t[b+1|0],a+=t[b+2|0],d+=1}while(b!==m);o/=d,u/=d,a/=d;var $=Os(qs(0,n),i),y=$.ea_1,k=$.fa_1,x=$.ga_1;if(x>0&&y<=k||x<0&&k<=y)do{var S=y;y=y+x|0;var E=t[S]-o,C=t[S+1|0]-u,q=t[S+2|0]-a;h+=E*E,_+=C*C,l+=q*q,c+=E*C,f+=E*q,v+=C*q}while(S!==k);return this.a57_1[0]=h/d,this.a57_1[1]=c/d,this.a57_1[2]=f/d,this.a57_1[3]=0,this.a57_1[4]=c/d,this.a57_1[5]=_/d,this.a57_1[6]=v/d,this.a57_1[7]=0,this.a57_1[8]=f/d,this.a57_1[9]=v/d,this.a57_1[10]=l/d,this.a57_1[11]=0,this.a57_1[12]=0,this.a57_1[13]=0,this.a57_1[14]=0,this.a57_1[15]=0,this},Pr(A_).b5d=function(t,n,i){var e=this.a57_1;e[3]=e[3]+(this.a57_1[0]*t+this.a57_1[1]*n+this.a57_1[2]*i);var r=this.a57_1;r[7]=r[7]+(this.a57_1[4]*t+this.a57_1[5]*n+this.a57_1[6]*i);var s=this.a57_1;s[11]=s[11]+(this.a57_1[8]*t+this.a57_1[9]*n+this.a57_1[10]*i);var o=this.a57_1;return o[15]=o[15]+(this.a57_1[12]*t+this.a57_1[13]*n+this.a57_1[14]*i),this},Pr(A_).z5c=function(t,n,i,e){var r=Lh(e),s=Math.cos(r),o=Lh(e),u=Math.sin(o);return this.q5w(s+(1-s)*t*t,(1-s)*t*n-u*i,(1-s)*t*i+u*n,0,(1-s)*t*n+u*i,s+(1-s)*n*n,(1-s)*n*i-u*t,0,(1-s)*t*i-u*n,(1-s)*n*i+u*t,s+(1-s)*i*i,0,0,0,0,1),this},Pr(A_).u5p=function(t,n,i){var e=this.a57_1;e[0]=e[0]*t;var r=this.a57_1;r[4]=r[4]*t;var s=this.a57_1;s[8]=s[8]*t;var o=this.a57_1;o[12]=o[12]*t;var u=this.a57_1;u[1]=u[1]*n;var a=this.a57_1;a[5]=a[5]*n;var h=this.a57_1;h[9]=h[9]*n;var _=this.a57_1;_[13]=_[13]*n;var l=this.a57_1;l[2]=l[2]*i;var c=this.a57_1;c[6]=c[6]*i;var f=this.a57_1;f[10]=f[10]*i;var v=this.a57_1;return v[14]=v[14]*i,this},Pr(A_).w57=function(t){var n=this.a57_1,i=t.a57_1,e=n[0],r=n[1],s=n[2],o=n[3];return n[0]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[1]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[2]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[3]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[4],r=n[5],s=n[6],o=n[7],n[4]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[5]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[6]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[7]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[8],r=n[9],s=n[10],o=n[11],n[8]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[9]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[10]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[11]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[12],r=n[13],s=n[14],o=n[15],n[12]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[13]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[14]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[15]=e*i[3]+r*i[7]+s*i[11]+o*i[15],this},Pr(A_).q5w=function(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v,d){var w=this.a57_1[0],p=this.a57_1[1],m=this.a57_1[2],g=this.a57_1[3];return this.a57_1[0]=w*t+p*r+m*a+g*c,this.a57_1[1]=w*n+p*s+m*h+g*f,this.a57_1[2]=w*i+p*o+m*_+g*v,this.a57_1[3]=w*e+p*u+m*l+g*d,w=this.a57_1[4],p=this.a57_1[5],m=this.a57_1[6],g=this.a57_1[7],this.a57_1[4]=w*t+p*r+m*a+g*c,this.a57_1[5]=w*n+p*s+m*h+g*f,this.a57_1[6]=w*i+p*o+m*_+g*v,this.a57_1[7]=w*e+p*u+m*l+g*d,w=this.a57_1[8],p=this.a57_1[9],m=this.a57_1[10],g=this.a57_1[11],this.a57_1[8]=w*t+p*r+m*a+g*c,this.a57_1[9]=w*n+p*s+m*h+g*f,this.a57_1[10]=w*i+p*o+m*_+g*v,this.a57_1[11]=w*e+p*u+m*l+g*d,w=this.a57_1[12],p=this.a57_1[13],m=this.a57_1[14],g=this.a57_1[15],this.a57_1[12]=w*t+p*r+m*a+g*c,this.a57_1[13]=w*n+p*s+m*h+g*f,this.a57_1[14]=w*i+p*o+m*_+g*v,this.a57_1[15]=w*e+p*u+m*l+g*d,this},Pr(A_).e5v=function(t){return this.a57_1[0]=t.a57_1[0],this.a57_1[1]=t.a57_1[4],this.a57_1[2]=t.a57_1[8],this.a57_1[3]=t.a57_1[12],this.a57_1[4]=t.a57_1[1],this.a57_1[5]=t.a57_1[5],this.a57_1[6]=t.a57_1[9],this.a57_1[7]=t.a57_1[13],this.a57_1[8]=t.a57_1[2],this.a57_1[9]=t.a57_1[6],this.a57_1[10]=t.a57_1[10],this.a57_1[11]=t.a57_1[14],this.a57_1[12]=t.a57_1[3],this.a57_1[13]=t.a57_1[7],this.a57_1[14]=t.a57_1[11],this.a57_1[15]=t.a57_1[15],this},Pr(A_).e5w=function(t,n){var i=n;if(!((t.length-i|0)>=16)){var e=kr.n54(kr.i54_1,"Matrix4","transposeToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.a57_1[0];var s=i;i=s+1|0,t[s]=this.a57_1[4];var o=i;i=o+1|0,t[o]=this.a57_1[8];var u=i;i=u+1|0,t[u]=this.a57_1[12];var a=i;i=a+1|0,t[a]=this.a57_1[1];var h=i;i=h+1|0,t[h]=this.a57_1[5];var _=i;i=_+1|0,t[_]=this.a57_1[9];var l=i;i=l+1|0,t[l]=this.a57_1[13];var c=i;i=c+1|0,t[c]=this.a57_1[2];var f=i;i=f+1|0,t[f]=this.a57_1[6];var v=i;i=v+1|0,t[v]=this.a57_1[10];var d=i;i=d+1|0,t[d]=this.a57_1[14];var w=i;i=w+1|0,t[w]=this.a57_1[3];var p=i;i=p+1|0,t[p]=this.a57_1[7];var m=i;return i=m+1|0,t[m]=this.a57_1[11],t[i]=this.a57_1[15],t},Pr(A_).s59=function(){if(!O_().k5w(this.a57_1,this.a57_1)){var t=kr.n54(kr.i54_1,"Matrix4","invertMatrix","singularMatrix");throw is(Gr(t))}return this},Pr(A_).a5d=function(){var t=this.a57_1[1];this.a57_1[1]=this.a57_1[4],this.a57_1[4]=t,t=this.a57_1[2],this.a57_1[2]=this.a57_1[8],this.a57_1[8]=t,t=this.a57_1[6],this.a57_1[6]=this.a57_1[9],this.a57_1[9]=t;var n=this.a57_1[3],i=this.a57_1[7],e=this.a57_1[11];return this.a57_1[3]=-this.a57_1[0]*n-this.a57_1[1]*i-this.a57_1[2]*e,this.a57_1[7]=-this.a57_1[4]*n-this.a57_1[5]*i-this.a57_1[6]*e,this.a57_1[11]=-this.a57_1[8]*n-this.a57_1[9]*i-this.a57_1[10]*e,this.a57_1[12]=0,this.a57_1[13]=0,this.a57_1[14]=0,this.a57_1[15]=1,this},Pr(A_).i5m=function(t){var n=this.a57_1;return n[10]=n[10]*(1+t),this},Pr(A_).b57=function(t){return t.g57_1=-this.a57_1[0]*this.a57_1[3]-this.a57_1[4]*this.a57_1[7]-this.a57_1[8]*this.a57_1[11],t.h57_1=-this.a57_1[1]*this.a57_1[3]-this.a57_1[5]*this.a57_1[7]-this.a57_1[9]*this.a57_1[11],t.k57_1=-this.a57_1[2]*this.a57_1[3]-this.a57_1[6]*this.a57_1[7]-this.a57_1[10]*this.a57_1[11],t},Pr(A_).c57=function(t){return t.g57_1=-this.a57_1[8],t.h57_1=-this.a57_1[9],t.k57_1=-this.a57_1[10],t},Pr(A_).x57=function(t){var n=Lh(t),i=Math.cos(n),e=Lh(t),r=Math.sin(e),s=i*this.a57_1[0]-r*this.a57_1[4],o=r*this.a57_1[5]-i*this.a57_1[1],u=Uh(),a=Math.atan2(o,s);return u.i59(a)},Pr(A_).y57=function(){var t=this.a57_1[10],n=this.a57_1[2]*this.a57_1[2]+this.a57_1[6]*this.a57_1[6],i=Math.sqrt(n),e=Uh(),r=Math.atan2(i,t);return e.i59(r)},Pr(A_).i5u=function(t,n,i){if(this.a57_1[1]!==this.a57_1[4]||this.a57_1[2]!==this.a57_1[8]||this.a57_1[6]!==this.a57_1[9])return!1;for(var e=this.a57_1[0],r=this.a57_1[1],s=this.a57_1[2],o=this.a57_1[5],u=this.a57_1[6],a=this.a57_1[10],h=0,_=hs(Array(3),null);h<3;)_[h]=new Float64Array(3),h=h+1|0;var l=_;l[2][2]=1,l[1][1]=l[2][2],l[0][0]=l[1][1];var c=0;if(c<32)t:do{var f,v;c=c+1|0;var d=r;if(Math.abs(d)<1e-10){var w=s;v=Math.abs(w)<1e-10}else v=!1;if(v){var p=u;f=Math.abs(p)<1e-10}else f=!1;if(f)break t;if(0!==r){var m=.5*(o-e)/r,g=m*m,b=g+1,$=b!==g?(m<0?-1:1)*(Math.sqrt(b)-Math.abs(m)):.5/m,y=$*$+1,k=1/Math.sqrt(y),x=k*$;e-=$*r,o+=$*r,r=0;var S=k*s-x*u;u=x*s+k*u,s=S;var E=0;if(E<=2)do{var C=E;E=E+1|0,S=k*l[C][0]-x*l[C][1],l[C][1]=x*l[C][0]+k*l[C][1],l[C][0]=S}while(E<=2)}if(0!==s){var q=.5*(a-e)/s,O=q*q,z=O+1,A=z!==O?(q<0?-1:1)*(Math.sqrt(z)-Math.abs(q)):.5/q,T=A*A+1,I=1/Math.sqrt(T),D=I*A;e-=A*s,a+=A*s,s=0;var j=I*r-D*u;u=D*r+I*u,r=j;var M=0;if(M<=2)do{var N=M;M=M+1|0,j=I*l[N][0]-D*l[N][2],l[N][2]=D*l[N][0]+I*l[N][2],l[N][0]=j}while(M<=2)}if(0!==u){var R=.5*(a-o)/u,P=R*R,L=P+1,F=L!==P?(R<0?-1:1)*(Math.sqrt(L)-Math.abs(R)):.5/R,U=F*F+1,H=1/Math.sqrt(U),V=H*F;o-=F*u,a+=F*u,u=0;var B=H*r-V*s;s=V*r+H*s,r=B;var Y=0;if(Y<=2)do{var W=Y;Y=Y+1|0,B=H*l[W][1]-V*l[W][2],l[W][2]=V*l[W][1]+H*l[W][2],l[W][1]=B}while(Y<=2)}}while(c<32);var G=0,K=1,X=2;if(e1||(o=.5*(o/=a)+.5,u=.5*u+.5,s=(s=.5*(s/=a)+.5)*e.i55_1+e.g55_1,o=o*e.j55_1+e.h55_1,r.g57_1=s,r.h57_1=o,r.k57_1=u,0))},Pr(A_).t59=function(t,n,i,e,r){var s=(t-i.g55_1)/i.i55_1,o=(n-i.h55_1)/i.j55_1;s=2*s-1,o=2*o-1;var u=this.a57_1[0]*s+this.a57_1[1]*o+this.a57_1[3],a=this.a57_1[4]*s+this.a57_1[5]*o+this.a57_1[7],h=this.a57_1[8]*s+this.a57_1[9]*o+this.a57_1[11],_=this.a57_1[12]*s+this.a57_1[13]*o+this.a57_1[15],l=u-this.a57_1[2],c=a-this.a57_1[6],f=h-this.a57_1[10],v=_-this.a57_1[14],d=u+this.a57_1[2],w=a+this.a57_1[6],p=h+this.a57_1[10],m=_+this.a57_1[14];return 0!==v&&0!==m&&(e.g57_1=l/v,e.h57_1=c/v,e.k57_1=f/v,r.g57_1=d/m,r.h57_1=w/m,r.k57_1=p/m,!0)},Pr(A_).equals=function(t){return this===t||t instanceof A_&&Ns(this.a57_1,t.a57_1)},Pr(A_).hashCode=function(){return Rs(this.a57_1)},Pr(A_).toString=function(){return"Matrix4(["+this.a57_1[0]+", "+this.a57_1[1]+", "+this.a57_1[2]+", "+this.a57_1[3]+"], ["+this.a57_1[4]+", "+this.a57_1[5]+", "+this.a57_1[6]+", "+this.a57_1[7]+"], ["+this.a57_1[8]+", "+this.a57_1[9]+", "+this.a57_1[10]+", "+this.a57_1[11]+"], ["+this.a57_1[12]+", "+this.a57_1[13]+", "+this.a57_1[14]+", "+this.a57_1[15]+"])"},Pr(I_).v5w=function(){return new D_(M_(),.5,M_(),.5)},Pr(I_).w5w=function(){return new D_(M_(),0,M_(),0)},Pr(I_).x5w=function(){return new D_(M_(),.5,M_(),0)},Pr(I_).y5w=function(){return new D_(M_(),1,M_(),0)},Pr(D_).z5w=function(t,n,i,e){return this.r5w_1=t,this.s5w_1=n,this.t5w_1=i,this.u5w_1=e,this},Pr(D_).a5x=function(t){return this.z5w(t.r5w_1,t.s5w_1,t.t5w_1,t.u5w_1)},Pr(D_).b5x=function(t,n,i){var e,r;switch(this.r5w_1.v9_1){case 0:e=t*this.s5w_1;break;case 1:e=t-this.s5w_1;break;default:e=this.s5w_1}switch(this.t5w_1.v9_1){case 0:r=n*this.u5w_1;break;case 1:r=n-this.u5w_1;break;default:r=this.u5w_1}return i.c5x(e,r)},Pr(D_).toString=function(){return"Offset(xUnits="+this.r5w_1+", x="+this.s5w_1+", yUnits="+this.t5w_1+", y="+this.u5w_1+")"},Pr(D_).hashCode=function(){var t=this.r5w_1.hashCode();return t=Tr(t,31)+Es(this.s5w_1)|0,t=Tr(t,31)+this.t5w_1.hashCode()|0,Tr(t,31)+Es(this.u5w_1)|0},Pr(D_).equals=function(t){if(this===t)return!0;if(!(t instanceof D_))return!1;var n=t instanceof D_?t:Nr();return!!(this.r5w_1.equals(n.r5w_1)&&Ss(this.s5w_1,n.s5w_1)&&this.t5w_1.equals(n.t5w_1)&&Ss(this.u5w_1,n.u5w_1))},Pr(P_).u5u=function(t){return this.i58(t)},Pr(P_).d5v=function(t,n,i,e){return this.a5u_1.g57_1=t,this.a5u_1.h57_1=n,this.a5u_1.k57_1=i,this.b5u_1=e,this.e5x(),this},Pr(P_).f5v=function(t){var n=t.a57_1,i=n[0]*this.a5u_1.g57_1+n[1]*this.a5u_1.h57_1+n[2]*this.a5u_1.k57_1+n[3]*this.b5u_1,e=n[4]*this.a5u_1.g57_1+n[5]*this.a5u_1.h57_1+n[6]*this.a5u_1.k57_1+n[7]*this.b5u_1,r=n[8]*this.a5u_1.g57_1+n[9]*this.a5u_1.h57_1+n[10]*this.a5u_1.k57_1+n[11]*this.b5u_1,s=n[12]*this.a5u_1.g57_1+n[13]*this.a5u_1.h57_1+n[14]*this.a5u_1.k57_1+n[15]*this.b5u_1;return this.a5u_1.g57_1=i,this.a5u_1.h57_1=e,this.a5u_1.k57_1=r,this.b5u_1=s,this.e5x(),this},Pr(P_).i58=function(t){return this.a5u_1.i58(t)+this.b5u_1},Pr(P_).j5v=function(t,n){var i=this.u5u(t),e=this.u5u(n);return i<0&&e<0?-1:i>0&&e>0?1:0},Pr(P_).k5v=function(t,n){if(t.equals(n))return null;var i=w_().n5v(t,n),e=this.a5u_1.i58(i.z56_1);if(0===e)return 0===this.i58(i.y56_1)?[t,n]:null;var r=-this.i58(i.y56_1)/e;if(r<0||r>1)return null;var s=i.f57(r,il());return e>0?[s,n]:[t,s]},Pr(P_).e5x=function(){var t=this.a5u_1.f5x();if(0===t)return Xr;if(t>=.9999999999&&t<=1.0000000001)return Xr;var n=this.a5u_1;n.g57_1=n.g57_1/t;var i=this.a5u_1;i.h57_1=i.h57_1/t;var e=this.a5u_1;e.k57_1=e.k57_1/t,this.b5u_1=this.b5u_1/t},Pr(P_).equals=function(t){return this===t||t instanceof P_&&!!this.a5u_1.equals(t.a5u_1)&&this.b5u_1===t.b5u_1},Pr(P_).hashCode=function(){var t=this.a5u_1.hashCode();return Tr(31,t)+Es(this.b5u_1)|0},Pr(P_).toString=function(){return"Plane(normal="+this.a5u_1+", distance="+this.b5u_1+")"},Pr(U_).g5x=function(t,n,i){return new H_(Uh().d5d(t),Uh().d5d(n),i)},Pr(H_).g54=function(t,n,i){return this.q5v(t,n),this.f54_1=i,this},Pr(H_).h5x=function(t,n,i){return this.r5v(t,n),this.f54_1=i,this},Pr(H_).u57=function(t){return this.g54(t.b54_1,t.c54_1,t.f54_1)},Pr(H_).equals=function(t){return this===t||t instanceof H_&&!!Pr($_).equals.call(this,t)&&this.f54_1===t.f54_1},Pr(H_).hashCode=function(){var t=Pr($_).hashCode.call(this);return Tr(31,t)+Es(this.f54_1)|0},Pr(H_).toString=function(){return"Position(latitude="+new e_(this.b54_1)+", longitude="+new e_(this.c54_1)+", altitude="+this.f54_1+")"},Pr(B_).a=function(){return this.n5e_1>this.m5e_1?this.n5e_1-this.m5e_1|0:0},Pr(B_).i5x=function(t,n){return this.m5e_1=t,this.n5e_1=n,this},Pr(B_).j5x=function(t){return this.i5x(t.m5e_1,t.n5e_1)},Pr(B_).equals=function(t){return this===t||t instanceof B_&&this.m5e_1===t.m5e_1&&this.n5e_1===t.n5e_1},Pr(B_).hashCode=function(){var t=this.m5e_1;return Tr(31,t)+this.n5e_1|0},Pr(B_).toString=function(){return"Range(lower="+this.m5e_1+", upper="+this.n5e_1+")"},Pr(G_).k5x=function(t,n,i,e){var r=i>0?Uh().s5t(t+i):t,s=e>0?Uh().t5t(n+e):n;return new K_(Uh().d5d(t),Uh().d5d(r),Uh().d5d(n),Uh().d5d(s))},Pr(K_).n19=function(){return!!(Ss(this.o5p_1,Uh().j58_1)&&Ss(this.p5p_1,Uh().j58_1)&&Ss(this.q5p_1,Uh().j58_1))&&Ss(this.r5p_1,Uh().j58_1)},Pr(K_).l5x=function(){return!!(Ss(this.o5p_1,Uh().l58_1)&&Ss(this.p5p_1,Uh().k58_1)&&Ss(this.q5p_1,Uh().n58_1))&&Ss(this.r5p_1,Uh().m58_1)},Pr(K_).t5p=function(){return Yh(this.p5p_1,this.o5p_1)},Pr(K_).s5p=function(){return Yh(this.r5p_1,this.q5p_1)},Pr(K_).l5u=function(){return Uh().u5t(this.o5p_1,this.p5p_1)},Pr(K_).m5u=function(){return Uh().u5t(this.q5p_1,this.r5p_1)},Pr(K_).m5x=function(t){return t.b54_1=this.l5u(),t.c54_1=this.m5u(),t},Pr(K_).h5q=function(t){return this.o5p_1=t.o5p_1,this.p5p_1=t.p5p_1,this.q5p_1=t.q5p_1,this.r5p_1=t.r5p_1,this},Pr(K_).k55=function(){return this.o5p_1=Uh().j58_1,this.p5p_1=Uh().j58_1,this.q5p_1=Uh().j58_1,this.r5p_1=Uh().j58_1,this},Pr(K_).w5r=function(){return this.o5p_1=Uh().l58_1,this.p5p_1=Uh().k58_1,this.q5p_1=Uh().n58_1,this.r5p_1=Uh().m58_1,this},Pr(K_).c5r=function(t){return this.o5p_1t.o5p_1&&this.q5p_1t.q5p_1},Pr(K_).v5p=function(t){return this.o5p_1<=t.p5p_1&&this.p5p_1>=t.o5p_1&&this.q5p_1<=t.r5p_1&&this.r5p_1>=t.q5p_1},Pr(K_).n5x=function(t){return this.o5p_1t.o5p_1&&this.q5p_1t.q5p_1&&(this.o5p_1t.p5p_1&&(this.p5p_1=t.p5p_1),this.q5p_1t.r5p_1&&(this.r5p_1=t.r5p_1),!0)},Pr(K_).o5x=function(t,n){var i,e=this.o5p_1,r=this.p5p_1;if(e<=t&&t<=r){var s=this.q5p_1,o=this.r5p_1;i=s<=n&&n<=o}else i=!1;return i},Pr(K_).p5x=function(t){return this.o5x(t.b54_1,t.c54_1)},Pr(K_).q5x=function(t,n){return this.n19()?(this.o5p_1=t,this.p5p_1=t,this.q5p_1=n,this.r5p_1=n):(this.o5p_1=Uh().w5t(this.o5p_1,t),this.p5p_1=Uh().v5t(this.p5p_1,t),this.q5p_1=Uh().w5t(this.q5p_1,n),this.r5p_1=Uh().v5t(this.r5p_1,n)),this},Pr(K_).r5x=function(t){return this.q5x(t.b54_1,t.c54_1)},Pr(K_).s5x=function(t,n,i){if(!(t.length>=i)){var e=kr.n54(kr.i54_1,"Sector","union","missingArray");throw is(Gr(e))}if(!(n>=0)){var r=kr.n54(kr.i54_1,"Sector","union","invalidCount");throw is(Gr(r))}if(!(i>=2)){var s=kr.n54(kr.i54_1,"Sector","union","invalidStride");throw is(Gr(s))}var o=this.n19(),u=o?17976931348623157e292:this.o5p_1,a=o?-17976931348623157e292:this.p5p_1,h=o?17976931348623157e292:this.q5p_1,_=o?-17976931348623157e292:this.r5p_1,l=Os(qs(0,n),i),c=l.ea_1,f=l.fa_1,v=l.ga_1;if(v>0&&c<=f||v<0&&f<=c)do{var d=c;c=c+v|0;var w=t[d],p=t[d+1|0];ap&&(u=p),_w&&(h=w)}while(d!==f);return u<17976931348623157e292&&(this.o5p_1=Uh().d5d(u)),a>-17976931348623157e292&&(this.p5p_1=Uh().d5d(a)),h<17976931348623157e292&&(this.q5p_1=Uh().d5d(h)),_>-17976931348623157e292&&(this.r5p_1=Uh().d5d(_)),this},Pr(K_).t5x=function(t){return t.n19()||(this.n19()?(this.o5p_1=t.o5p_1,this.p5p_1=t.p5p_1,this.q5p_1=t.q5p_1,this.r5p_1=t.r5p_1):(this.o5p_1>t.o5p_1&&(this.o5p_1=t.o5p_1),this.p5p_1t.q5p_1&&(this.q5p_1=t.q5p_1),this.r5p_10)){var o=kr.f5y("TileMatrixSet","fromTilePyramid","invalidResolution");throw is(Gr(o))}var u=0,a=n,h=i,_=_s();do{var l=u;u=l+1|0;var c=new X_(t,l,a,h,e,r);_.s(c),a=Tr(a,2),h=Tr(h,2)}while(c.b5y()>s);return new Q_(t,_)},Pr(Q_).i5y=function(t){var n=-1,i=1/0,e=0,r=this.h5y_1.n()-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=Yh(this.h5y_1.h1(s).b5y(),t),u=o*o;i>u&&(i=u,n=s)}while(e<=r);return n},Pr(nl).j5y=function(){return this.g57_1*this.g57_1+this.h57_1*this.h57_1},Pr(nl).f5x=function(){var t=this.j5y();return Math.sqrt(t)},Pr(nl).c5x=function(t,n){return this.g57_1=t,this.h57_1=n,this},Pr(nl).k5y=function(t){var n=this.g57_1;return this.g57_1=t.g57_1,t.g57_1=n,n=this.h57_1,this.h57_1=t.h57_1,t.h57_1=n,this},Pr(nl).l5y=function(t){this.g57_1=this.g57_1+t.g57_1,this.h57_1=this.h57_1+t.h57_1},Pr(nl).m5y=function(t){this.g57_1=this.g57_1-t.g57_1,this.h57_1=this.h57_1-t.h57_1},Pr(nl).n5y=function(t){this.g57_1=this.g57_1*t,this.h57_1=this.h57_1*t},Pr(nl).o5y=function(t){return this.g57_1*t.g57_1+this.h57_1*t.h57_1},Pr(nl).equals=function(t){return this===t||t instanceof nl&&this.g57_1===t.g57_1&&this.h57_1===t.h57_1},Pr(nl).hashCode=function(){var t=Es(this.g57_1);return Tr(31,t)+Es(this.h57_1)|0},Pr(nl).toString=function(){return"Vec2(x="+this.g57_1+", y="+this.h57_1+")"},Pr(el).j5y=function(){return Pr(nl).j5y.call(this)+this.k57_1*this.k57_1},Pr(el).p5y=function(t,n){var i=n;if(!((t.length-i|0)>=3)){var e=kr.n54(kr.i54_1,"Vec3","toArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.g57_1;var s=i;return i=s+1|0,t[s]=this.h57_1,t[i]=this.k57_1,t},Pr(el).n5c=function(t){var n=this.o5u(t);return Math.sqrt(n)},Pr(el).o5u=function(t){var n=this.g57_1-t.g57_1,i=this.h57_1-t.h57_1,e=this.k57_1-t.k57_1;return n*n+i*i+e*e},Pr(el).u5f=function(t,n,i){return this.c5x(t,n),this.k57_1=i,this},Pr(el).m5c=function(t){return this.u5f(t.g57_1,t.h57_1,t.k57_1)},Pr(el).z5t=function(t){Pr(nl).k5y.call(this,t);var n=this.k57_1;return this.k57_1=t.k57_1,t.k57_1=n,this},Pr(el).q5y=function(t){return this.r5y(t),this},Pr(el).r5y=function(t){Pr(nl).l5y.call(this,t),this.k57_1=this.k57_1+t.k57_1},Pr(el).g58=function(t){return this.s5y(t),this},Pr(el).s5y=function(t){Pr(nl).m5y.call(this,t),this.k57_1=this.k57_1-t.k57_1},Pr(el).j5u=function(t){return this.n5y(t),this},Pr(el).n5y=function(t){Pr(nl).n5y.call(this,t),this.k57_1=this.k57_1*t},Pr(el).w57=function(t){var n=t.a57_1,i=n[0]*this.g57_1+n[1]*this.h57_1+n[2]*this.k57_1+n[3],e=n[4]*this.g57_1+n[5]*this.h57_1+n[6]*this.k57_1+n[7],r=n[8]*this.g57_1+n[9]*this.h57_1+n[10]*this.k57_1+n[11],s=n[12]*this.g57_1+n[13]*this.h57_1+n[14]*this.k57_1+n[15];return this.g57_1=i/s,this.h57_1=e/s,this.k57_1=r/s,this},Pr(el).h58=function(){var t=this.f5x();return 0!==t&&(this.g57_1=this.g57_1/t,this.h57_1=this.h57_1/t,this.k57_1=this.k57_1/t),this},Pr(el).i58=function(t){return Pr(nl).o5y.call(this,t)+this.k57_1*t.k57_1},Pr(el).g5v=function(t){var n=this.h57_1*t.k57_1-this.k57_1*t.h57_1,i=this.k57_1*t.g57_1-this.g57_1*t.k57_1,e=this.g57_1*t.h57_1-this.h57_1*t.g57_1;return this.g57_1=n,this.h57_1=i,this.k57_1=e,this},Pr(el).equals=function(t){return this===t||t instanceof el&&!!Pr(nl).equals.call(this,t)&&this.k57_1===t.k57_1},Pr(el).hashCode=function(){var t=Pr(nl).hashCode.call(this);return Tr(31,t)+Es(this.k57_1)|0},Pr(el).toString=function(){return"Vec3(x="+this.g57_1+", y="+this.h57_1+", z="+this.k57_1+")"},Pr(sl).n19=function(){return this.i55_1<=0||this.j55_1<=0},Pr(sl).k55=function(){return this.i55_1=0,this.j55_1=0,this},Pr(sl).v56=function(t,n,i,e){return this.g55_1=t,this.h55_1=n,this.i55_1=i,this.j55_1=e,this},Pr(sl).y5b=function(t){return this.v56(t.g55_1,t.h55_1,t.i55_1,t.j55_1)},Pr(sl).m5v=function(t){return this.i55_1>0&&this.j55_1>0&&t.i55_1>0&&t.j55_1>0&&this.g55_1<(t.g55_1+t.i55_1|0)&&t.g55_1<(this.g55_1+this.i55_1|0)&&this.h55_1<(t.h55_1+t.j55_1|0)&&t.h55_1<(this.h55_1+this.j55_1|0)},Pr(sl).t5y=function(t){return this.i55_1>0&&this.j55_1>0&&t.i55_1>0&&t.j55_1>0&&this.g55_1<(t.g55_1+t.i55_1|0)&&t.g55_1<(this.g55_1+this.i55_1|0)&&this.h55_1<(t.h55_1+t.j55_1|0)&&t.h55_1<(this.h55_1+this.j55_1|0)&&(this.g55_1(t.g55_1+t.i55_1|0)&&(this.i55_1=(t.g55_1+t.i55_1|0)-this.g55_1|0),(this.h55_1+this.j55_1|0)>(t.h55_1+t.j55_1|0)&&(this.j55_1=(t.h55_1+t.j55_1|0)-this.h55_1|0),!0)},Pr(sl).u5y=function(t,n){return xs(t)>=this.g55_1&&xs(t)<(this.g55_1+this.i55_1|0)&&xs(n)>=this.h55_1&&xs(n)<(this.h55_1+this.j55_1|0)},Pr(sl).equals=function(t){return this===t||t instanceof sl&&this.g55_1===t.g55_1&&this.h55_1===t.h55_1&&this.i55_1===t.i55_1&&this.j55_1===t.j55_1},Pr(sl).hashCode=function(){var t=this.g55_1;return t=Tr(31,t)+this.h55_1|0,t=Tr(31,t)+this.i55_1|0,Tr(31,t)+this.j55_1|0},Pr(sl).toString=function(){return"Viewport(x="+this.g55_1+", y="+this.h55_1+", width="+this.i55_1+", height="+this.j55_1+")"},Pr(ol).v5y=function(t,n){return this.w5y(t,n,0)},Pr(ol).w5y=function(t,n,i){var e=new hl;if(0!==e.c5z(Lh(t),Lh(n),i))throw is(Gr("Gauss-Kruger Conversion Error"));return new ul(t,n,e.z5y_1,e.y5y_1)},Pr(ol).d5z=function(t,n){var i=new hl;if(0!==i.e5z(n,t))throw is(Gr("Gauss-Kruger Conversion Error"));var e=Uh(),r=i.a5z_1,s=e.i59(r),o=Uh(),u=i.b5z_1;return new ul(s,o.i59(u),t,n)},Pr(ul).toString=function(){var t=Wr(this.h5z_1),n=Wr(this.i5z_1),i=1e5;return Ay("%02d-%05d, %02d-%05d",[t/i|0,Fs(t%i|0),n/i|0,Fs(n%i|0)])},Pr(hl).c5z=function(t,n,i){var e=n<0?n+2*as():n,r=0!==i?i:1+(ks(180*e/as())/6|0)|0,s=this.x5y_1.y5u_1,o=this.x5y_1.a5v(),u=(s*s-o*o)/(s*s),a=(s-o)/(s+o),h=a*a,_=a*a*a,l=1e6*r+5e5,c=e-(Tr(r,6)-3|0)*as()/180,f=t-0,v=t+0,d=Math.sin(t),w=d*d,p=Math.cos(t),m=p*p*p,g=p*p*p*p*p,b=Math.tan(t),$=b*b,y=$*$,k=1-u*w,x=1*s*Math.pow(k,-.5),S=1-u*w,E=1*s*(1-u)*Math.pow(S,-1.5),C=x/E-1,q=2*f,O=2*v,z=3*f,A=3*v,T=1*o*((1+a+1.25*h+1.25*_)*f-(3*a+3*h+2.625*_)*Math.sin(f)*Math.cos(v)+(1.875*h+1.875*_)*Math.sin(q)*Math.cos(O)-1.4583333333333333*_*Math.sin(z)*Math.cos(A))+0,I=x/2*d*p,D=x/24*d*m*(5-$+9*C),j=x/720*d*g*(61-58*$+y),M=x*p,N=x/6*m*(x/E-$),R=x/120*g*(5-18*$+y+14*C-58*$*C);return this.y5y_1=l+M*c+N*c*c*c+R*c*c*c*c*c,this.z5y_1=T+I*c*c+D*c*c*c*c+j*c*c*c*c*c*c,0},Pr(hl).e5z=function(t,n){var i=ks(t/1e6),e=(Tr(6,i<=30?i:i-60|0)-3|0)*as()/180,r=t-(1e6*i+5e5),s=n/6367558.497,o=Math.cos(s),u=o*o,a=((2382*u+293609)*u+50221747)*Math.sin(s)*Math.cos(s)*1e-10+s,h=Math.cos(a),_=h*h,l=Math.sin(a),c=l*l,f=(.003369263*_+.5)*l*h,v=((.0056154-151e-7*_)*_+.1616128)*_+.25,d=((.00389*_+.0431)*_-.00168)*_+.125,w=((.013*_+.008)*_-.031)*_+.078,p=(.16666666666666666-.00112309*_)*_-.3333333333333333,m=((.008783-112e-6*_)*_-.16666666666666666)*_+.2,g=(.16666666666666666-.0361*_)*_-.1429,b=((.064-.004*_)*_-.16666666666666666)*_+.1111111111111111,$=r/((((.605*c+107.155)*c+21346.142)*c+this.x5y_1.y5u_1)*h);return this.a5z_1=a+(((w*$*$-d)*$*$+v)*$*$-1)*$*$*f,this.b5z_1=e+((((b*$*$+g)*$*$+m)*$*$+p)*$*$+1)*$,0},Pr(cl).toString=function(){return"HelmertParameters(dX="+this.o5z_1+", dY="+this.p5z_1+", dZ="+this.q5z_1+", omegaX="+this.r5z_1+", omegaY="+this.s5z_1+", omegaZ="+this.t5z_1+", m="+this.u5z_1+", fromEllipsoid="+this.v5z_1+", toEllipsoid="+this.w5z_1+")"},Pr(cl).hashCode=function(){var t=Es(this.o5z_1);return t=Tr(t,31)+Es(this.p5z_1)|0,t=Tr(t,31)+Es(this.q5z_1)|0,t=Tr(t,31)+Es(this.r5z_1)|0,t=Tr(t,31)+Es(this.s5z_1)|0,t=Tr(t,31)+Es(this.t5z_1)|0,t=Tr(t,31)+Es(this.u5z_1)|0,t=Tr(t,31)+this.v5z_1.hashCode()|0,Tr(t,31)+this.w5z_1.hashCode()|0},Pr(cl).equals=function(t){if(this===t)return!0;if(!(t instanceof cl))return!1;var n=t instanceof cl?t:Nr();return!!(Ss(this.o5z_1,n.o5z_1)&&Ss(this.p5z_1,n.p5z_1)&&Ss(this.q5z_1,n.q5z_1)&&Ss(this.r5z_1,n.r5z_1)&&Ss(this.s5z_1,n.s5z_1)&&Ss(this.t5z_1,n.t5z_1)&&Ss(this.u5z_1,n.u5z_1)&&this.v5z_1.equals(n.v5z_1)&&this.w5z_1.equals(n.w5z_1))},Pr(fl).x5z=function(t,n,i){return this.y5z(t.b54_1,t.c54_1,t.f54_1,n,i)},Pr(fl).y5z=function(t,n,i,e,r){var s=new lc,o=new tc(e.v5z_1,s),u=new tc(e.w5z_1,s),a=o.t57(t,n,i,il()),h=this.z5z(a,e);return u.r57(h.g57_1,h.h57_1,h.k57_1,r)},Pr(fl).a60=function(t,n,i){return this.b60(t.g57_1,t.h57_1,t.k57_1,n,i)},Pr(fl).z5z=function(t,n,i,e){return i=i===Yr?il():i,e===Yr?this.a60(t,n,i):e.a60.call(this,t,n,i)},Pr(fl).b60=function(t,n,i,e,r){return r.u5f(t+-e.t5z_1*i+e.u5z_1*t+e.r5z_1*n+e.p5z_1,n+e.s5z_1*i+-e.r5z_1*t+e.u5z_1*n+e.q5z_1,i+e.u5z_1*i+e.t5z_1*t+-e.s5z_1*n+e.o5z_1)},Pr(ml).v5y=function(t,n){return this.w5y(t,n,5)},Pr(ml).w5y=function(t,n,i){var e=new Sl,r=e.p60(Lh(t),Lh(n),i);if($l(),0!==r)throw is(Gr("MGRS Conversion Error"));return new gl(t,n,e.e60_1)},Pr(gl).toString=function(){return this.s60_1},Pr(Sl).p60=function(t,n,i){this.e60_1="";var e=0;if((t<-1.5707963267948966||t>1.5707963267948966)&&(e=1),(n<-as()||n>2*as())&&(e=2),(i<0||i>5)&&(e=8),0===e){var r;if(t<-1.3962634015954636||t>1.4660765716752369){var s;try{var o=et,u=Uh().i59(t),a=Uh().i59(n),h=o.v5y(u,a);s=e|function(t,n,i,e,r){var s,o,u,a,h,_=i,l=e,c=new Int32Array(3),f=0;if(wl().equals(n)||pl().equals(n)||(f|=512),(_<0||_>4e6)&&(f|=64),(l<0||l>4e6)&&(f|=128),(r<0||r>5)&&(f|=8),0===f){var v=5-r|0,d=Math.pow(10,v);if(_=kl(0,_/d)*d,l=kl(0,l/d)*d,wl().equals(n)){c[0]=_>=2e6?25:24;var w=c[0]-22|0;h=$l().u62_1[w][1],s=$l().u62_1[w][4],o=$l().u62_1[w][5]}else c[0]=_>=2e6?1:0,h=$l().u62_1[c[0]][1],s=$l().u62_1[c[0]][4],o=$l().u62_1[c[0]][5];a=l,a-=o,c[2]=ks(a/1e5),c[2]>7&&(c[2]=c[2]+1|0),c[2]>13&&(c[2]=c[2]+1|0),u=_,u-=s,c[1]=h+ks(u/1e5)|0,_<2e6?(c[1]>11&&(c[1]=c[1]+3|0),c[1]>20&&(c[1]=c[1]+2|0)):(c[1]>2&&(c[1]=c[1]+2|0),c[1]>7&&(c[1]=c[1]+1|0),c[1]>11&&(c[1]=c[1]+3|0)),xl(t,0,c,_,l,r)}return f}(this,h.e63_1,h.f63_1,h.g63_1,i)}catch(t){if(!(t instanceof $s))throw t;s=8192}r=s}else{var _;try{var l=rt,c=Uh().i59(t),f=Uh().i59(n),v=l.v5y(c,f);_=e|yl(this,v.y62_1,t,v.a63_1,v.b63_1,i)}catch(t){if(!(t instanceof $s))throw t;_=4096}r=_}e=r}return e},Pr(Cl).p64=function(t,n,i,e,r,s){var o=e,u=1/n,a=0;if(t<=0&&(a|=64),(u<250||u>350)&&(a|=128),(i<-1.5707963267948966||i>1.5707963267948966)&&(a|=4),(o<-as()||o>6.283185307179586)&&(a|=8),0===a){this.v63_1=t,this.e64_1=2*this.v63_1,this.w63_1=n,o>as()&&(o-=6.283185307179586),i<0?(this.z63_1=1,this.f64_1=-i,this.g64_1=-o):(this.z63_1=0,this.f64_1=i,this.g64_1=o),this.h64_1=r,this.i64_1=s;var h=2*this.w63_1-this.w63_1*this.w63_1;this.x63_1=Math.sqrt(h),this.y63_1=this.x63_1/2;var _=this.f64_1,l=Math.abs(_)-1.5707963267948966;if(Math.abs(l)>1e-10){var c=this.f64_1,f=Math.sin(c),v=this.x63_1*f,d=(1-v)/(1+v),w=this.y63_1,p=Math.pow(d,w),m=this.f64_1,g=Math.cos(m),b=1-v*v;this.a64_1=g/Math.sqrt(b),this.d64_1=this.v63_1*this.a64_1;var $=.7853981633974483-this.f64_1/2;this.b64_1=Math.tan($)/p}else{var y=1+this.x63_1,k=1-this.x63_1,x=Math.pow(y,y)*Math.pow(k,k);this.c64_1=Math.sqrt(x)}}this.q64(0,this.g64_1),this.k64_1=2*this.m64_1;var S=this.k64_1;return this.k64_1=Math.abs(S)+.01,this.j64_1=this.k64_1,a},Pr(Cl).q64=function(t,n){var i=t,e=n,r=0;if((i<-1.5707963267948966||i>1.5707963267948966)&&(r|=1),i<0&&0===this.z63_1&&(r|=1),i>0&&1===this.z63_1&&(r|=1),(e<-as()||e>6.283185307179586)&&(r|=2),0===r){var s=i,o=Math.abs(s)-1.5707963267948966;if(Math.abs(o)<1e-10)this.l64_1=0,this.m64_1=0;else{0!==this.z63_1&&(e*=-1,i*=-1);var u=e-this.g64_1;u>as()&&(u-=6.283185307179586),u<-as()&&(u+=6.283185307179586);var a=i,h=Math.sin(a),_=this.x63_1*h,l=(1-_)/(1+_),c=this.y63_1,f=Math.pow(l,c),v=.7853981633974483-i/2,d=Math.tan(v)/f,w=this.f64_1,p=Math.abs(w)-1.5707963267948966,m=Math.abs(p)>1e-10?this.d64_1*d/this.b64_1:this.e64_1*d/this.c64_1;if(0!==this.z63_1){var g=u;this.l64_1=-(m*Math.sin(g)-this.h64_1);var b=u;this.m64_1=m*Math.cos(b)+this.i64_1}else{var $=u;this.l64_1=m*Math.sin($)+this.h64_1}var y=-m,k=u;this.m64_1=y*Math.cos(k)+this.i64_1}}return r},Pr(Cl).r64=function(t,n){var i=0,e=0,r=0,s=0,o=0,u=this.h64_1-this.j64_1,a=this.h64_1+this.j64_1,h=this.i64_1-this.k64_1;if((t>a||tthis.i64_1+this.k64_1||nMath.sqrt(l)&&(o|=256)}if(0===o){if(0===i&&0===e)this.n64_1=1.5707963267948966,this.o64_1=this.g64_1;else{0!==this.z63_1&&(i*=-1,e*=-1);var c=this.f64_1,f=Math.abs(c)-1.5707963267948966,v=Math.abs(f)>1e-10?r*this.b64_1/this.d64_1:r*this.c64_1/this.e64_1,d=1.5707963267948966-2*Math.atan(v);t:for(;;){var w=d-s;if(!(Math.abs(w)>1e-10))break t;s=d;var p=d,m=Math.sin(p),g=this.x63_1*m,b=(1-g)/(1+g),$=this.y63_1,y=v*Math.pow(b,$);d=1.5707963267948966-2*Math.atan(y)}this.n64_1=d;var k=this.g64_1,x=e,S=-i;this.o64_1=k+Math.atan2(x,S),this.o64_1>as()?this.o64_1=this.o64_1-6.283185307179586:this.o64_1<-as()&&(this.o64_1=this.o64_1+6.283185307179586),this.n64_1>1.5707963267948966?this.n64_1=1.5707963267948966:this.n64_1<-1.5707963267948966&&(this.n64_1=-1.5707963267948966),this.o64_1>as()?this.o64_1=as():this.o64_1<-as()&&(this.o64_1=-as())}0!==this.z63_1&&(this.n64_1=-1*this.n64_1,this.o64_1=-1*this.o64_1)}return o},Pr(ql).s64=function(t,n,i,e,r,s,o,u,a){var h=i,_=e,l=new Al;null!=h&&null!=_||(h=l.u64_1,_=l.v64_1);var c=l.o65(h,_,Lh(r),Lh(s),o,u,a);if(0===c&&(c=l.p65(Lh(t),Lh(n))),0!==c&&512!==c)throw is(Gr("TM Conversion Error"));return new Ol(t,n,l.k65_1,l.l65_1)},Pr(ql).q65=function(t,n,i,e,r,s,o){var u=new Al,a=u.u64_1,h=u.v64_1,_=u.o65(a,h,Lh(i),Lh(e),r,s,o);if(0===_&&(_=u.r65(t,n)),0!==_&&512!==_)throw is(Gr("TM Conversion Error"));var l=Uh(),c=u.m65_1,f=l.i59(c),v=Uh(),d=u.n65_1;return new Ol(f,v.i59(d),t,n)},Pr(Al).o65=function(t,n,i,e,r,s,o){var u=e,a=1/n,h=0;if(t<=0&&(h|=64),(a<250||a>350)&&(h|=128),(i<-1.570621793869697||i>1.570621793869697)&&(h|=16),(u<-as()||u>2*as())&&(h|=32),(o<.3||o>3)&&(h|=256),0===h){this.u64_1=t,this.v64_1=n,this.y64_1=0,this.z64_1=0,this.a65_1=0,this.b65_1=0,this.c65_1=1,this.w64_1=2*this.v64_1-this.v64_1*this.v64_1,this.x64_1=1/(1-this.w64_1)-1;var _=this.u64_1*(1-this.v64_1),l=(this.u64_1-_)/(this.u64_1+_),c=l*l,f=c*l,v=f*l,d=v*l;this.d65_1=this.u64_1*(1-l+5*(c-f)/4+81*(v-d)/64),this.e65_1=3*this.u64_1*(l-c+7*(f-v)/8+55*d/64)/2,this.f65_1=15*this.u64_1*(c-f+3*(v-d)/4)/16,this.g65_1=35*this.u64_1*(f-v+11*d/16)/48,this.h65_1=315*this.u64_1*(v-d)/512,this.p65(1.570621793869697,1.5707963267948966),this.i65_1=this.k65_1,this.j65_1=this.l65_1,this.p65(0,1.5707963267948966),this.i65_1=this.k65_1,this.y64_1=i,u>as()&&(u-=2*as()),this.z64_1=u,this.a65_1=s,this.b65_1=r,this.c65_1=o}return h},Pr(Al).p65=function(t,n){var i=n,e=0;if((t<-1.570621793869697||t>1.570621793869697)&&(e|=1),i>as()&&(i-=2*as()),ithis.z64_1+1.5707963267948966){var r=i<0?i+2*as():i,s=this.z64_1<0?this.z64_1+2*as():this.z64_1;(rs+1.5707963267948966)&&(e|=2)}if(0===e){var o=i-this.z64_1,u=o;Math.abs(u)>9*as()/180&&(e|=512),o>as()&&(o-=2*as()),o<-as()&&(o+=2*as());var a=o;Math.abs(a)<2e-10&&(o=0);var h=Math.sin(t),_=Math.cos(t),l=_*_,c=l*_,f=c*l,v=f*l,d=Math.tan(t),w=d*d,p=w*d*d,m=p*d*d,g=this.x64_1*l,b=g*g,$=b*g,y=$*g,k=this.u64_1,x=this.w64_1,S=Math.sin(t),E=1-x*Math.pow(S,2),C=k/Math.sqrt(E),q=2*t,O=4*t,z=6*t,A=8*t,T=this.d65_1*t-this.e65_1*Math.sin(q)+this.f65_1*Math.sin(O)-this.g65_1*Math.sin(z)+this.h65_1*Math.sin(A),I=this.d65_1*this.y64_1,D=this.e65_1,j=2*this.y64_1,M=I-D*Math.sin(j),N=this.f65_1,R=4*this.y64_1,P=M+N*Math.sin(R),L=this.g65_1,F=6*this.y64_1,U=P-L*Math.sin(F),H=this.h65_1,V=8*this.y64_1,B=(T-(U+H*Math.sin(V)))*this.c65_1,Y=C*h*_*this.c65_1/2,W=C*h*c*this.c65_1*(5-w+9*g+4*b)/24,G=C*h*f*this.c65_1*(61-58*w+p+270*g-330*w*g+445*b+324*$-680*w*b+88*y-600*w*$-192*w*y)/720,K=C*h*v*this.c65_1*(1385-3111*w+543*p-m)/40320,X=o,J=o,Z=o,Q=this.a65_1+B+Math.pow(X,2)*Y+Math.pow(J,4)*W+Math.pow(Z,6)*G,tt=o;this.l65_1=Q+Math.pow(tt,8)*K;var nt=C*_*this.c65_1,it=C*c*this.c65_1*(1-w+g)/6,et=C*f*this.c65_1*(5-18*w+p+14*g-58*w*g+13*b+4*$-64*w*b-24*w*$)/120,rt=C*v*this.c65_1*(61-479*w+179*p-m)/5040,st=o,ot=o,ut=this.b65_1+o*nt+Math.pow(st,3)*it+Math.pow(ot,5)*et,at=o;this.k65_1=ut+Math.pow(at,7)*rt}return e},Pr(Al).r65=function(t,n){var i=0;if((tthis.b65_1+this.i65_1)&&(i|=4),(nthis.a65_1+this.j65_1)&&(i|=8),0===i){var e=this.d65_1*this.y64_1,r=this.e65_1,s=2*this.y64_1,o=e-r*Math.sin(s),u=this.f65_1,a=4*this.y64_1,h=o+u*Math.sin(a),_=this.g65_1,l=6*this.y64_1,c=h-_*Math.sin(l),f=this.h65_1,v=8*this.y64_1,d=c+f*Math.sin(v)+(n-this.a65_1)/this.c65_1,w=this.u64_1*(1-this.w64_1),p=this.w64_1,m=Math.sin(0),g=1-p*Math.pow(m,2),b=Math.sqrt(g),$=w/Math.pow(b,3),y=d/$,k=0;if(k<=4)do{k=k+1|0;var x=2*y,S=4*y,E=6*y,C=8*y,q=this.d65_1*y-this.e65_1*Math.sin(x)+this.f65_1*Math.sin(S)-this.g65_1*Math.sin(E)+this.h65_1*Math.sin(C),O=this.u64_1*(1-this.w64_1),z=this.w64_1,A=y,T=Math.sin(A),I=1-z*Math.pow(T,2),D=Math.sqrt(I);y+=(d-q)/($=O/Math.pow(D,3))}while(k<=4);var j=this.u64_1*(1-this.w64_1),M=this.w64_1,N=y,R=Math.sin(N),P=1-M*Math.pow(R,2),L=Math.sqrt(P);$=j/Math.pow(L,3);var F=this.u64_1,U=this.w64_1,H=y,V=Math.sin(H),B=1-U*Math.pow(V,2),Y=F/Math.sqrt(B),W=y,G=Math.cos(W),K=y,X=Math.tan(K),J=X*X,Z=J*J,Q=this.x64_1*Math.pow(G,2),tt=Q*Q,nt=tt*Q,it=nt*Q,et=t-this.b65_1,rt=et;Math.abs(rt)<1e-4&&(et=0);var st=2*$*Y,ot=this.c65_1,ut=X/(st*Math.pow(ot,2)),at=X*(5+3*J+Q-4*Math.pow(Q,2)-9*J*Q),ht=24*$*Math.pow(Y,3),_t=this.c65_1,lt=at/(ht*Math.pow(_t,4)),ct=X*(61+90*J+46*Q+45*Z-252*J*Q-3*tt+100*nt-66*J*tt-90*Z*Q+88*it+225*Z*tt+84*J*nt-192*J*it),ft=720*$*Math.pow(Y,5),vt=this.c65_1,dt=ct/(ft*Math.pow(vt,6)),wt=X*(1385+3633*J+4095*Z+1575*Math.pow(X,6)),pt=40320*$*Math.pow(Y,7),mt=this.c65_1,gt=wt/(pt*Math.pow(mt,8)),bt=et,$t=et,yt=et,kt=y-Math.pow(bt,2)*ut+Math.pow($t,4)*lt-Math.pow(yt,6)*dt,xt=et;this.m65_1=kt+Math.pow(xt,8)*gt;var St=1/(Y*G*this.c65_1),Et=1+2*J+Q,Ct=6*Math.pow(Y,3)*G,qt=this.c65_1,Ot=Et/(Ct*Math.pow(qt,3)),zt=5+6*Q+28*J-3*tt+8*J*Q+24*Z-4*nt+4*J*tt+24*J*nt,At=120*Math.pow(Y,5)*G,Tt=this.c65_1,It=zt/(At*Math.pow(Tt,5)),Dt=61+662*J+1320*Z+720*Math.pow(X,6),jt=5040*Math.pow(Y,7)*G,Mt=this.c65_1,Nt=Dt/(jt*Math.pow(Mt,7)),Rt=et,Pt=et,Lt=et,Ft=et*St-Math.pow(Rt,3)*Ot+Math.pow(Pt,5)*It-Math.pow(Lt,7)*Nt;this.n65_1=this.z64_1+Ft;var Ut=this.m65_1;if(Math.abs(Ut)>90*as()/180&&(i|=8),this.n65_1>as()){this.n65_1=this.n65_1-2*as();var Ht=this.n65_1;Math.abs(Ht)>as()&&(i|=4)}var Vt=Math.abs(Ft),Bt=9*as()/180,Yt=this.m65_1;Vt>Bt*Math.cos(Yt)&&(i|=512),this.m65_1>1e10&&(i|=512)}return i},Pr(Tl).v5y=function(t,n){var i=new jl;if(0!==i.y66(Lh(t),Lh(n)))throw is(Gr("UPS Conversion Error"));return new Il(t,n,i.s66_1,i.t66_1,i.u66_1)},Pr(Tl).z66=function(t,n,i){var e=new jl;if(0!==e.a67(t,n,i))throw is(Gr("UTM Conversion Error"));var r=Uh(),s=e.v66_1,o=r.i59(s),u=Uh(),a=e.w66_1;return new Il(o,u.i59(a),t,n,i)},Pr(Il).toString=function(){return this.e63_1.toString()+" "+this.f63_1+"E "+this.g63_1+"N"},Pr(jl).y66=function(t,n){return t<-1.5707963267948966||t>1.5707963267948966||t<0&&t>-1.2566370614359172||t>=0&&t<1.2566370614359172?1:n<-as()||n>2*as()?2:(t<0?(this.l66_1=-1.4157155848011311,this.s66_1=pl()):(this.l66_1=1.4157155848011311,this.s66_1=wl()),this.x66_1.p64(this.o66_1,this.p66_1,this.l66_1,this.m66_1,0,0),this.x66_1.q64(t,n),this.t66_1=this.q66_1+this.x66_1.l64_1,this.u66_1=this.r66_1+(pl().equals(this.s66_1)?-this.x66_1.m64_1:this.x66_1.m64_1),0)},Pr(jl).a67=function(t,n,i){var e=0;return wl().equals(t)||pl().equals(t)||(e|=4),(n<0||n>4e6)&&(e|=8),(i<0||i>4e6)&&(e|=16),wl().equals(t)&&(this.l66_1=1.4157155848011311),pl().equals(t)&&(this.l66_1=-1.4157155848011311),0===e&&(this.x66_1.p64(this.o66_1,this.p66_1,this.l66_1,this.m66_1,this.q66_1,this.r66_1),this.x66_1.r64(n,i),this.v66_1=this.x66_1.n64_1,this.w66_1=this.x66_1.o64_1,this.v66_1<0&&this.v66_1>-1.2566370614359172&&(e|=1),this.v66_1>=0&&this.v66_1<1.2566370614359172&&(e|=1)),e},Pr(Ml).v5y=function(t,n){var i=new Pl;if(0!==i.y67(Lh(t),Lh(n)))throw is(Gr("UTM Conversion Error"));return new Nl(t,n,i.v67_1,i.s67_1,i.t67_1,i.u67_1)},Pr(Ml).z67=function(t,n,i,e){var r=new Pl;if(0!==r.a68(t,n,i,e))throw is(Gr("UTM Conversion Error"));var s=Uh(),o=r.w67_1,u=s.i59(o),a=Uh(),h=r.x67_1;return new Nl(u,a.i59(h),t,n,i,e)},Pr(Nl).toString=function(){return this.y62_1.toString()+" "+this.z62_1+" "+Wr(this.a63_1)+"E "+Wr(this.b63_1)+"N"},Pr(Pl).y67=function(t,n){var i=n,e=0,r=0;if((t<-1.43116998663535||t>1.5009831567151233)&&(e|=1),(i<-as()||i>2*as())&&(e|=2),0===e){i<0&&(i+=2*as()+1e-10);var s=ks(180*t/as()),o=ks(180*i/as()),u=ks(i60&&(u=1),56<=s&&s<=63&&o>-1&&o<3&&(u=31),56<=s&&s<=63&&o>2&&o<12&&(u=32),s>71&&o>-1&&o<9&&(u=31),s>71&&o>8&&o<21&&(u=33),s>71&&o>20&&o<33&&(u=35),s>71&&o>32&&o<42&&(u=37),0!==this.q67_1&&(1===u&&60===this.q67_1||60===u&&1===this.q67_1||(u-1|0)<=this.q67_1&&this.q67_1<=(u+1|0)?u=this.q67_1:e=64),0===e){this.r67_1=u>=31?(Tr(6,u)-183|0)*as()/180:(Tr(6,u)+177|0)*as()/180,this.v67_1=u,t<0?(r=1e7,this.s67_1=pl()):this.s67_1=wl();try{var a=it,h=Uh().i59(t),_=Uh(),l=i,c=_.i59(l),f=Uh().i59(0),v=Uh(),d=this.r67_1,w=v.i59(d),p=a.s64(h,c,this.o67_1,this.p67_1,f,w,5e5,r,.9996);this.t67_1=p.u65_1,this.u67_1=p.v65_1,(this.t67_1<1e5||this.t67_1>9e5)&&(e=4),(this.u67_1<0||this.u67_1>1e7)&&(e|=8)}catch(t){if(!(t instanceof $s))throw t;e=512}}}return e},Pr(Pl).a68=function(t,n,i,e){var r=0,s=0;if((t<1||t>60)&&(r|=16),n.equals(pl())||n.equals(wl())||(r|=32),(e<0||e>1e7)&&(r|=8),0===r){this.r67_1=t>=31?(Tr(6,t)-183|0)*as()/180:(Tr(6,t)+177|0)*as()/180,n.equals(pl())&&(s=1e7);try{var o=it,u=Uh().i59(0),a=Uh(),h=this.r67_1,_=a.i59(h),l=o.q65(i,e,u,_,5e5,s,.9996);this.w67_1=Lh(l.s65_1),this.x67_1=Lh(l.t65_1),(this.w67_1<-1.43116998663535||this.w67_1>1.5009831567151233)&&(r|=8)}catch(t){if(!(t instanceof $s))throw t;r=512}}return r},Pr(Zl).toString=function(){return"State(ellipsoid="+this.a69_1+", projectionName="+this.b69_1+")"},Pr(Zl).hashCode=function(){var t=this.a69_1.hashCode();return Tr(t,31)+Ys(this.b69_1)|0},Pr(Zl).equals=function(t){if(this===t)return!0;if(!(t instanceof Zl))return!1;var n=t instanceof Zl?t:Nr();return!!this.a69_1.equals(n.a69_1)&&this.b69_1===n.b69_1},Pr(tc).v59=function(){return this.z54_1.y5u_1},Pr(tc).c69=function(){return this.z54_1.a5v()},Pr(tc).b5v=function(){return this.z54_1.b5v()},Pr(tc).e58=function(){return this.a55_1.e58()},Pr(tc).z5r=function(){return this.a55_1.z5r()},Pr(tc).d69=function(){return this.a55_1.d69()},Pr(tc).vm=function(){return new Zl(this.z54_1,this.a55_1.e69())},Pr(tc).q5d=function(t){this.c55_1=t;var n;switch(t.v9_1){case 0:n=0;break;case 1:n=2*as()*this.v59();break;case 2:n=-2*as()*this.v59();break;default:Ws()}this.d55_1=n},Pr(tc).f69=function(t,n){var i=Lh(t),e=Math.sin(i),r=this.z54_1.b5v(),s=1-r*e*e,o=1+(r*r-2*r)*e*e;return this.z54_1.y5u_1/Math.sqrt(s)*Math.sqrt(o)},Pr(tc).t57=function(t,n,i,e){return this.a55_1.g69(this,t,n,i,this.d55_1,e)},Pr(tc).f58=function(t,n,i){return this.a55_1.h69(this,t,n,i)},Pr(tc).c5d=function(t,n,i,e){return this.a55_1.i69(this,t,n,i,e)},Pr(tc).j69=function(t,n,i,e,r,s,o,u,a){return this.a55_1.k69(this,t,n,i,e,r,s,this.d55_1,o,u,a)},Pr(tc).k5u=function(t,n,i,e,r,s,o,u,a,h){return u=u===Yr?0:u,a=a===Yr?0:a,h===Yr?this.j69(t,n,i,e,r,s,o,u,a):h.j69.call(this,t,n,i,e,r,s,o,u,a)},Pr(tc).l69=function(t,n,i,e,r,s){return this.a55_1.m69(this,t,n,i,e,r,this.d55_1,s)},Pr(tc).r57=function(t,n,i,e){var r=this.a55_1.n69(this,t,n,i,this.d55_1,e);return this.e58()&&(e.c54_1=Xh(e.c54_1)),r},Pr(tc).v57=function(t,n,i,e){return this.a55_1.o69(this,t,n,i,e)},Pr(tc).e57=function(t){var n;if(t>0){var i=t*(2*this.z54_1.y5u_1+t);n=Math.sqrt(i)}else n=0;return n},Pr(tc).k59=function(t,n){return this.a55_1.p69(this,t,n)},Pr(tc).q69=function(t,n,i){return this.b55_1.r69(t,n,i)},Pr(tc).d58=function(t,n,i,e){return i=i!==Yr&&i,e===Yr?this.q69(t,n,i):e.q69.call(this,new e_(t),new e_(n),i)},Pr(tc).s69=function(t,n){return new H_(t,n,this.q69(t,n,!0))},Pr(tc).d57=function(t,n){var i;switch(n.v9_1){case 1:i=this.s69(t.b54_1,t.c54_1);break;case 2:var e=this.s69(t.b54_1,t.c54_1);e.f54_1=e.f54_1+t.f54_1,i=e;break;default:i=F_(t)}return i},Pr(nc).x5b=function(){var t=new Hr(0,0),n=0,i=this.e55_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.e55_1.h1(e).x5b();t.z9(r)<0&&(t=r)}while(n<=i);return t},Pr(nc).f55=function(){for(var t=this.e55_1.v();t.w();)t.y().b1();return Xr},Pr(nc).t69=function(t){return!this.e55_1.r(t)&&this.e55_1.s(t)},Pr(nc).u69=function(t){return this.e55_1.t(t)},Pr(nc).v=function(){return this.e55_1.v()},Pr(nc).r69=function(t,n,i){var e=this.e55_1.n()-1|0;if(0<=e)do{var r=e;e=e+-1|0;var s=this.e55_1.h1(r).r69(t,n,i);if(null!=s)return s}while(0<=e);return 0},Pr(nc).v69=function(t,n,i,e){var r=0,s=this.e55_1.n()-1|0;if(r<=s)do{var o=r;r=r+1|0,this.e55_1.h1(o).v69(t,n,i,e)}while(r<=s)},Pr(nc).w69=function(t,n){var i=0,e=this.e55_1.n()-1|0;if(i<=e)do{var r=i;i=i+1|0,this.e55_1.h1(r).w69(t,n)}while(i<=e)},Pr(ic).d6a=function(t){this.z69_1=t,this.e6a()},Pr(ic).f6a=function(){return this.z69_1},Pr(ic).g6a=function(t){this.a6a_1=t},Pr(ic).x5b=function(){return this.a6a_1},Pr(ic).e6a=function(){this.g6a(js.a3k().b3l()),this.c6a_1.b1()},Pr(ic).r69=function(t,n,i){var e;if(this.f6a()){var r,s=Tr(31,Es(t))+Es(n)|0,o=this.c6a_1.o2(s);if(null==o){var u,a=this.h6a(t,n,i);null==a?u=null:(this.c6a_1.f5t(s,a,1),u=a),r=u}else r=o;e=r}else e=null;return e},Pr(ic).v69=function(t,n,i,e){this.f6a()&&this.i6a(t,n,i,e)},Pr(ic).w69=function(t,n){this.f6a()&&this.j6a(t,n)},Pr(rc).s6a=function(){var t=this.l6a_1;if(null!=t)return t;Gs("tileMatrix")},Pr(rc).b1=function(){this.m6a_1.b1(),this.n6a_1.b1(),this.o6a_1.b1(),this.p6a_1=-1,this.q6a_1=-1,this.r6a_1=null},Pr(rc).t6a=function(t,n,i){var e=this.s6a().c5y(t,n);this.o6a_1.e2(e,i)},Pr(rc).u6a=function(t,n){return this.p6a_1===t&&this.q6a_1===n||(this.p6a_1=t,this.q6a_1=n,this.r6a_1=this.o6a_1.o2(this.s6a().c5y(t,n))),this.r6a_1},Pr(rc).v6a=function(t,n,i,e){var r=this.u6a(t,n),s=null==r?null:r[i+Tr(e,this.s6a().z5x_1)|0];return null==s?0:s},Pr(sc).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=Xr,i.cc_1=null,i.mc()},Pr(sc).zc=function(t,n){return this.v1g(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(sc).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=this.e6b_1.y6b(this.f6b_1,this.g6b_1,this.h6b_1,this.i6b_1,this))===Js())return t;continue t;case 1:return Xr;case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},Pr(sc).w1g=function(t,n){var i=new sc(this.e6b_1,this.f6b_1,this.g6b_1,this.h6b_1,this.i6b_1,n);return i.j6b_1=t,i},Pr(oc).b1=function(){io(this.x6b_1.am()),this.t6b_1.b1(),this.u6b_1.b1(),this.w6b_1.b1(),this.e6a()},Pr(oc).h6a=function(t,n,i){if(!this.q6b_1.g5y_1.o5x(t,n))return null;var e=this.q6b_1.h5y_1.n()-1|0,r=e;if(0<=r)do{var s=r;r=r+-1|0,this.v6b_1=!!i&&(s===e||0===s);var o=this.q6b_1.h5y_1.h1(s),u=o.v5x_1.t5p()/o.y5x_1,a=o.v5x_1.s5p()/o.x5x_1,h=(o.v5x_1.p5p_1-t)/u,_=Math.floor(h),l=ks(_),c=(n-o.v5x_1.q5p_1)/a,f=Math.floor(c),v=ks(f),d=this.d6c(o,l,v);if(null!=d){var w=o.v5x_1.p5p_1-u*l,p=o.v5x_1.q5p_1+a*v,m=o.z5x_1-1|0,g=o.a5y_1-1|0,b=m*(n-p)/a,$=g*(w-t)/u,y=Math.floor(b),k=eo(ks(y),0,m),x=eo(k+1|0,0,m),S=Math.floor($),E=eo(ks(S),0,g),C=eo(E+1|0,0,g),q=b-k,O=$-E;return(1-q)*(1-O)*d[k+Tr(E,o.z5x_1)|0]+q*(1-O)*d[x+Tr(E,o.z5x_1)|0]+(1-q)*O*d[k+Tr(C,o.z5x_1)|0]+q*O*d[x+Tr(C,o.z5x_1)|0]}}while(0<=r);return null},Pr(oc).i6a=function(t,n,i,e){if(!this.q6b_1.g5y_1.c5r(t))return Xr;var r=Gh(t.t5p(),i),s=this.q6b_1.i5y(r),o=new rc,u=s;if(0<=u)do{var a=u;u=u+-1|0,this.v6b_1=a===s||0===a;var h=this.q6b_1.h5y_1.h1(a);if(this.f6c(t,n,i,h,o))return this.e6c(t,n,i,o,e),Xr}while(0<=u)},Pr(oc).j6a=function(t,n){if(!this.q6b_1.g5y_1.c5r(t))return Xr;var i=Gh(t.t5p(),32),e=this.q6b_1.i5y(i),r=new rc,s=e;if(0<=s)do{var o=s;s=s+-1|0,this.v6b_1=o===e||0===o;var u=this.q6b_1.h5y_1.h1(o);if(this.h6c(t,u,r))return this.g6c(t,r,n),Xr}while(0<=s)},Pr(oc).f6c=function(t,n,i,e,r){var s=e.z5x_1,o=e.a5y_1,u=Tr(e.x5x_1,s),a=Tr(e.y5x_1,o),h=e.v5x_1.o5p_1,_=e.v5x_1.p5p_1,l=e.v5x_1.q5p_1,c=e.v5x_1.r5p_1,f=e.v5x_1.t5p(),v=e.v5x_1.s5p(),d=1/(2*u),w=1-d,p=1/(2*a),m=1-p;r.l6a_1=e,r.b1();for(var g=t.q5p_1,b=t.s5p()/(n-1|0),$=0;$K&&(i[0]=K),i[1]=1&&e>=1)){var l=kr.n54(kr.i54_1,"MercatorProjection","geographicToCartesianGrid","Number of latitude or longitude locations is less than one");throw is(Gr(l))}if(!(null==r||r.length>=Tr(i,e))){var c=kr.n54(kr.i54_1,"MercatorProjection","geographicToCartesianGrid","missingArray");throw is(Gr(c))}var f=t.v59(),v=t.b5v(),d=Math.sqrt(v),w=Lh(n.o5p_1),p=Lh(n.p5p_1),m=Lh(n.q5p_1),g=Lh(n.r5p_1),b=(p-w)/(i>1?i-1|0:1),$=(g-m)/(e>1?e-1|0:1),y=Lh(this.d69().o5p_1),k=Lh(this.d69().p5p_1),x=Lh(this.d69().q5p_1),S=Lh(this.d69().r5p_1),E=0,C=null==o?null:o.g57_1,q=null==C?0:C,O=null==o?null:o.h57_1,z=null==O?0:O,A=null==o?null:o.k57_1,T=null==A?0:A,I=h,D=0===_?Tr(e,3):_,j=w,M=0;if(M1?i-3|0:1),w=(v-f)/(e>1?e-3|0:1),p=Lh(this.d69().o5p_1),m=Lh(this.d69().p5p_1),g=Lh(this.d69().q5p_1),b=Lh(this.d69().r5p_1),$=null==s?null:s.g57_1,y=null==$?0:$,k=null==s?null:s.h57_1,x=null==k?0:k,S=null==s?null:s.k57_1,E=null==S?0:S,C=0,q=l,O=f,z=0;if(z1e-6))break t;c=l;var v=as()/2,d=l,w=l,p=(1-a*Math.sin(d))/(1+a*Math.sin(w)),m=a/2,g=_*Math.pow(p,m);l=v-2*Math.atan(g)}var b=(n-r)/o;return s.h5x(l,b,e)},Pr(_c).o69=function(t,n,i,e,r){return r.n5w(1,0,0,n,0,1,0,i,0,0,1,e,0,0,0,1)},Pr(_c).p69=function(t,n,i){var e=n.z56_1.g57_1,r=n.z56_1.h57_1,s=n.z56_1.k57_1,o=n.y56_1.g57_1,u=n.y56_1.h57_1,a=n.y56_1.k57_1;if(0===s&&0!==a)return!1;var h=-a/s;return!(h<0||(i.g57_1=o+e*h,i.h57_1=u+r*h,i.k57_1=a+s*h,0))},Pr(lc).e69=function(){return this.k6d_1},Pr(lc).g69=function(t,n,i,e,r,s){var o=Lh(n),u=Math.cos(o),a=Lh(n),h=Math.sin(a),_=Lh(i),l=Math.cos(_),c=Lh(i),f=Math.sin(c),v=t.b5v(),d=1-v*h*h,w=t.v59()/Math.sqrt(d);return s.u5f((e+w)*u*f,(e+w*(1-v))*h,(e+w)*u*l)},Pr(lc).h69=function(t,n,i,e){var r=Lh(n),s=Math.cos(r),o=Lh(n),u=Math.sin(o),a=Lh(i),h=Math.cos(a),_=Lh(i),l=Math.sin(_),c=t.v59()*t.v59(),f=t.c69()*t.c69();return e.u5f(s*l/c,(1-t.b5v())*u/f,s*h/c).h58()},Pr(lc).i69=function(t,n,i,e,r){var s=Lh(n),o=Math.cos(s),u=Lh(n),a=Math.sin(u),h=Lh(i),_=Math.cos(h),l=Lh(i),c=Math.sin(l),f=t.b5v(),v=1-f*a*a,d=t.v59()/Math.sqrt(v),w=t.v59()*t.v59(),p=t.c69()*t.c69(),m=(d+e)*o*c,g=(d*(1-f)+e)*a,b=(d+e)*o*_,$=o*c/w,y=(1-t.b5v())*a/p,k=o*_/w,x=$*$+y*y+k*k,S=Math.sqrt(x);$/=S,y/=S,k/=S;var E=-a*c,C=o,q=-a*_,O=E*E+C*C+q*q,z=(C/=S=Math.sqrt(O))*k-(q/=S)*y,A=q*$-(E/=S)*k,T=E*y-C*$;return E=y*T-k*A,C=k*z-$*T,q=$*A-y*z,r.n5w(z,E,$,m,A,C,y,g,T,q,k,b,0,0,0,1)},Pr(lc).k69=function(t,n,i,e,r,s,o,u,a,h,_){if(!(i>=1&&e>=1)){var l=kr.n54(kr.i54_1,"Wgs84Projection","geographicToCartesianGrid","Number of latitude or longitude locations is less than one");throw is(Gr(l))}if(!(null==r||r.length>=Tr(i,e))){var c=kr.n54(kr.i54_1,"Wgs84Projection","geographicToCartesianGrid","missingArray");throw is(Gr(c))}var f=Lh(n.o5p_1),v=Lh(n.p5p_1),d=Lh(n.q5p_1),w=Lh(n.r5p_1),p=(v-f)/(i>1?i-1|0:1),m=(w-d)/(e>1?e-1|0:1),g=t.v59(),b=t.b5v(),$=new Float64Array(e),y=new Float64Array(e),k=0,x=null==o?null:o.g57_1,S=null==x?0:x,E=null==o?null:o.h57_1,C=null==E?0:E,q=null==o?null:o.k57_1,O=null==q?0:q,z=d,A=0;if(A=1&&e>=1)){var a=kr.n54(kr.i54_1,"Wgs84Projection","geographicToCartesianBorder","Number of latitude or longitude locations is less than one");throw is(Gr(a))}var h=Lh(n.o5p_1),_=Lh(n.p5p_1),l=Lh(n.q5p_1),c=Lh(n.r5p_1),f=(_-h)/(i>1?i-3|0:1),v=(c-l)/(e>1?e-3|0:1),d=h,w=l,p=t.v59(),m=t.b5v(),g=null==s?null:s.g57_1,b=null==g?0:g,$=null==s?null:s.h57_1,y=null==$?0:$,k=null==s?null:s.k57_1,x=null==k?0:k,S=0,E=0;if(E0||0!==d){var m;if(p>0){var g,b=Math.sqrt(p),$=f*v*d,y=Math.sqrt($),k=(b+y)*(b+y),x=Math.pow(k,.3333333333333333);if(p>10*c)g=w+.5*x+2*w*w/x;else{var S=(b-y)*(b-y);g=w+.5*x+.5*Math.pow(S,.3333333333333333)}m=g}else{var E=-p,C=Math.sqrt(E),q=-8*w*w*w,O=Math.sqrt(q),z=f*v*d,A=Math.sqrt(z),T=C+O,I=2*Math.atan2(A,T)/3,D=-4*w*Math.sin(I),j=as()/6+I;m=D*Math.cos(j)}var M=m*m+f*d,N=Math.sqrt(M),R=c*(m+N-d)/(2*N),P=R*R+m+N,L=(m+N)/(Math.sqrt(P)+R),F=L*h/(L+c),U=F*F+i*i,H=Math.sqrt(U);o=(L+c-1)*H/L;var V=H+F;u=2*Math.atan2(i,V)}else{var B=1-c,Y=Math.sqrt(B),W=c-v,G=Math.sqrt(W),K=Math.sqrt(c);o=-_*Y*G/K,u=G/(K*G+Y*Math.sqrt(v))}var X,J=Math.sqrt(2);if((J-1)*n0||(w=(-v+Math.sqrt(d))/(2*f))>0)&&(i.u5f(o+e*w,u+r*w,a+s*w),!0)},Pr(cc).s5d=function(){return this.o6d_1},Pr(cc).k59=function(t,n){var i=!1,e=this.m6d_1;if(null==e)return i;var r=e,s=0,o=this.n6d_1.n()-1|0;if(s<=o)t:do{var u=s;s=s+1|0;var a=this.n6d_1.h1(u);if(t.y56_1.g58(a.d6e_1),t.o5v(a.p6e(),3,r,r.length,this.p6d_1)&&(n.m5c(this.p6d_1).q5y(a.d6e_1),i=!0),t.y56_1.q5y(a.d6e_1),i)break t}while(s<=o);return i},Pr(cc).q6e=function(t,n,i){var e=0,r=this.n6d_1.n()-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=this.n6d_1.h1(s),u=o.r6e_1;if(u.o5x(t,n)){var a=o.p6f_1.e6f_1,h=o.p6f_1.f6f_1,_=(n-u.q5p_1)/u.s5p()*(a-1|0),l=(t-u.o5p_1)/u.t5p()*(h-1|0),c=_<(a-1|0)?bx(_):1,f=l<(h-1|0)?bx(l):1,v=_<(a-1|0)?ks(_+1):a-1|0,d=l<(h-1|0)?ks(l+1):h-1|0,w=a+2|0,p=Tr(v+Tr(d,w)|0,3),m=p+3|0,g=Tr(v+Tr(d+1|0,w)|0,3),b=g+3|0,$=(1-c)*(1-f),y=c*(1-f),k=(1-c)*f,x=c*f,S=o.p6e();return i.g57_1=S[p]*$+S[m]*y+S[g]*k+S[b]*x,i.h57_1=S[p+1|0]*$+S[m+1|0]*y+S[g+1|0]*k+S[b+1|0]*x,i.k57_1=S[p+2|0]*$+S[m+2|0]*y+S[g+2|0]*k+S[b+2|0]*x,i.g57_1=i.g57_1+o.d6e_1.g57_1,i.h57_1=i.h57_1+o.d6e_1.h57_1,i.k57_1=i.k57_1+o.d6e_1.k57_1,!0}}while(e<=r);return!1},Pr(cc).u6f=function(t,n){n[0]=34028235e31,n[1]=-34028235e31;var i=this.n6d_1.v();if(!i.w())throw uo();for(var e=i.y().p6f_1.a6f_1;i.w();){var r=i.y().p6f_1.a6f_1;ws(e,r)<0&&(e=r)}for(var s=e-t|0,o=this.n6d_1.v();o.w();){var u=o.y();if(u.p6f_1.a6f_1>=s){var a=n[0],h=u.v6f()[0];n[0]=Math.min(a,h);var _=n[1],l=u.v6f()[1];n[1]=Math.max(_,l)}}n[0]>n[1]&&zs(n,0)},Pr(fc).l9=function(t,n){return this.w6f_1(t,n)},Pr(fc).compare=function(t,n){return this.l9(t,n)},Pr(dc).p5s=function(t){return this.o6g(t),this.p6g(t)},Pr(dc).q6g=function(t,n,i,e){return new mc(t,n,i,e)},Pr(dc).p6g=function(t){this.c6g_1.b1(),this.d6g_1.k55(),this.r6g(t),this.b6g_1.d1()&&this.s6g();var n=0,i=this.b6g_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.b6g_1.h1(e);this.t6g(t,r instanceof mc?r:Nr())}while(n<=i);var s=this.c6g_1;if(s.n()>1){var o=new fc(vc);lo(s,o)}return this.j6g_1=null,this.k6g_1=null,new cc(this.c6g_1,this.d6g_1,this.g6g_1)},Pr(dc).s6g=function(){return Pi.d6h(this.y6f_1.b6h(),this,this.b6g_1)},Pr(dc).t6g=function(t,n){var i=t.y5r().d69();if(!1===(null==i?null:n.e6h(i)))return Xr;if(!n.e6h(this.y6f_1.u6g_1)||!n.f6h(t))return Xr;if(n.p6f_1.i6h()||!n.h6h(t,this.z6f_1))return this.g6h(t,n),Xr;var e=n.j6h(this,this.a6g_1,4),r=0,s=e.length-1|0;if(r<=s)do{var o=r;r=r+1|0;var u=e[o];this.t6g(t,u instanceof mc?u:Nr())}while(r<=s)},Pr(dc).g6h=function(t,n){n.k6h(t),this.c6g_1.s(n),this.d6g_1.t5x(n.r6e_1);var i,e=bs(Ka),r=t.s5b_1.o2(e),s=null==r||ss(r,W$)?r:Nr();if(null==s){var o=new VS;t.s5b_1.e2(e,o),i=o}else i=s;var u=i,a=g.e5d(u);this.l6h(t,n,a),t.m6h(a,n.m6e_1)},Pr(dc).o6g=function(t){Ss(t.y5a_1,this.n6g_1)||(this.n6h(),this.n6g_1=t.y5a_1)},Pr(dc).n6h=function(){this.b6g_1.b1(),this.c6g_1.b1(),this.d6g_1.k55(),this.a6g_1.b1(),this.e6g_1=null,this.f6g_1=null,this.g6g_1=null},Pr(dc).l6h=function(t,n,i){i.q5d(t.y5r().c55_1),i.s5d().h5q(n.r6e_1),i.t5d().m5c(n.d6e_1),i.j5d_1.j5x(this.h6g_1),i.k5d_1.j5x(this.i6g_1),i.l5d_1=n.o6h(t),i.m5d_1=n.p6h(t),i.n5d_1=this.j6g_1,i.o5d_1=this.k6g_1},Pr(dc).r6g=function(t){var n,i=this.y6f_1.y6g_1+2|0,e=this.y6f_1.x6g_1+2|0,r=this.e6g_1;if(null==r){var s=new Float32Array(Tr(Tr(i,e),2));this.e6g_1=s,this.q6h(i,e,s),n=s}else n=r;var o,u=n,a=this.f6g_1;if(null==a){var h=this.r6h(i,e);this.f6g_1=h,o=h}else o=a;var _,l=o,c=this.g6g_1;if(null==c){var f=this.s6h(i,e);this.g6g_1=f,_=f}else _=c;var v,d=_,w=this.l6g_1,p=t.x5s(),m=p.o2(w);if(null==m){var g=new xb(Rk(),u);p.f5t(w,g,g.f5m_1),v=g}else v=m;var b=v;this.j6g_1=b instanceof xb?b:Nr();var $,y=this.m6g_1,k=t.x5s(),x=k.o2(y);if(null==x){var S=new Eb(Pk(),co([l,d]));this.h6g_1.n5e_1=l.length,this.i6g_1.m5e_1=l.length,this.i6g_1.n5e_1=l.length+d.length|0,k.f5t(y,S,S.f5m_1),$=S}else $=x;var E=$;this.k6g_1=E instanceof Eb?E:Nr()},Pr(dc).q6h=function(t,n,i){var e=1/(n>1?n-3|0:1),r=1/(t>1?t-3|0:1),s=0,o=0,u=0,a=0;if(a1)return!0;var e=t.d6r_1-n.r6i().y53_1;if(Math.abs(e)>1)return!0;var r=t.e6r_1-n.r6i().a54_1;return Math.abs(r)>1||n.a5b_1.n5c(t.b6r_1)>t.n6r(n)/100||!Ss(n.y5a_1,t.g6r_1)}(this,t)?t.y5r().c55_1.equals(this.h6r_1)||this.t6r(t):(this.u6r(t),this.t6r(t)),this.h6r_1=t.y5r().c55_1,this.z6q_1.v6r(t,this.m6i())},Pr(Vc).u6r=function(t){this.z6q_1.m6r(),this.b6r_1.m5c(t.a5b_1),this.e6r_1=t.r6i().a54_1,this.c6r_1=t.r6i().x53_1,this.d6r_1=t.r6i().y53_1,this.f6r_1=t.s5a_1,this.g6r_1=t.y5a_1},Pr(Vc).x6r=function(t){var n,i=t.x5a_1;if(null==i)n=null;else{var e=Uh().m5t(t.w5a_1/t.y5r().v59()*t.b5b_1.i55_1/4);n=new $_(so(new e_(Jh(Wh(i.b54_1,e))),new e_(Hc().o6r_1),new e_(Hc().p6r_1)).x5t_1,Zh(Wh(i.c54_1,e)))}var r=n;return null==r?t.r6i().v53_1:r},Pr(Vc).y6r=function(t,n){var i=new o$(t);return i.u6s(n),i.v6s(Rh()),i.w6s(!0),i},Pr(Vc).x6s=function(t,n,i){var e=new Jb(t,n);return e.v6s(Rh()),e},Pr(Vc).n6t=function(t,n,i){return t.r5s().q6e(n,i,this.a6r_1)||t.y5r().t57(n,i,t.y5r().d58(n,i)*t.s5a_1,this.a6r_1),this.a6r_1},Pr(Vc).n6r=function(t){var n=this.n6t(t,t.r6i().v53_1.b54_1,t.r6i().v53_1.c54_1);return t.a5b_1.n5c(n)},Pr(Vc).o6t=function(t,n,i,e){var r=i.o5x(t.b54_1,t.c54_1),s=i.o5x(n.b54_1,n.c54_1);if(!r&&!s)return Xr;if(r&&s)e.s(t),e.s(n);else{var o=r?n:t,u=r?t:n,a=1;if(a<=2)t:do{a=a+1|0;var h=null;if(o.c54_1>i.r5p_1||180===i.r5p_1&&o.c54_1<0?h=Rc(0,u,o,i.r5p_1):o.c54_10?h=Rc(0,u,o,i.q5p_1):o.b54_1>i.p5p_1?h=Pc(0,u,o,i.p5p_1):o.b54_188)n=45;else{var i=(t+88)/4+1,e=Math.floor(i);n=$o(ks(e),45)}return n},Pr(hf).w6r=function(t){return t>=1e6?"Graticule.GK.1_000_000":t>=5e5?"Graticule.GK.500_000":t>=2e5?"Graticule.GK.200_000":t>=1e5?"Graticule.GK.100_000":t>=35e3?"Graticule.GK.50_000":t>=15e3?"Graticule.GK.25_000":"Graticule.GK.10_000"},Pr(hf).k6z=function(t){switch(t){case"Graticule.GK.1_000_000":return 1e6;case"Graticule.GK.500_000":return 5e5;case"Graticule.GK.200_000":return 2e5;case"Graticule.GK.100_000":return 1e5;case"Graticule.GK.50_000":return 35e3;case"Graticule.GK.25_000":return 15e3;default:return 8e3}},Pr(hf).k6w=function(t){return new vf(this,t,"Graticule.GK.1_000_000")},Pr(hf).l6z=function(t){return this.r6x_1.m6z(t)},Pr(hf).n6z=function(t){(function(t,n){return 0===n||n>0&&0===t.s6x_1||0!==t.s6x_1&&n=0?1+(ks(t)/6|0)|0:31+(ks(t+180)/6|0)|0},Pr(wf).l71=function(t,n,i,e,r,s,o,u){var a,h=e-n,_=t-i,l=h*t+_*n,c=u-s,f=r-o,v=c*r+f*s,d=h*f-c*_;if(0!==d){var w=(f*l-_*v)/d,p=(h*v-c*l)/d;a=G.d5z(w,p)}else a=null;return a},Pr(wf).h71=function(t,n,i,e){var r;if(af(),"Graticule.GK.1_000_000"===i)r=df(this,t,n);else if(af(),"Graticule.GK.500_000"===i)r=(0===Eo(e)?df(Ot,t,n):e)+function(t,n,i){var e=1-ks((n+88)%4/2)|0,r=ks((i+180)%6/3);switch(Tr(e,2)+r|0){case 0:return"-A";case 1:return"-Б";case 2:return"-В";default:return"-Г"}}(0,t,n);else if(af(),"Graticule.GK.200_000"===i)r=df(this,t,n)+function(t,n,i){var e=5-ks((n+88)%4/.6666666666666667)|0,r=ks((i+180)%6),s=Tr(e,6)+r|0;return"-"+af().n6y_1[s]}(0,t,n);else if(af(),"Graticule.GK.100_000"===i)r=df(this,t,n)+function(t,n,i){var e=11-ks((n+88)%4/.33333333333333337)|0,r=ks((i+180)%6/.5)+1|0;return"-"+(Tr(e,12)+r|0)}(0,t,n);else if(af(),"Graticule.GK.50_000"===i){var s;if(0===Eo(e)){var o=Ot;af(),s=o.m71(t,n,"Graticule.GK.100_000")}else s=e;r=s+function(t,n,i){var e=ks((n+88)/.33333333333333337),r=1-ks((n+88-.33333333333333337*e)/.16666666666666669)|0;e=ks((i+180)/.5);var s=ks((i+180-.5*e)/.25);switch(Tr(r,2)+s|0){case 0:return"-A";case 1:return"-Б";case 2:return"-В";default:return"-Г"}}(0,t,n)}else if(af(),"Graticule.GK.25_000"===i){var u;if(0===Eo(e)){var a=Ot;af(),u=a.m71(t,n,"Graticule.GK.50_000")}else u=e;r=u+function(t,n,i){var e=ks((n+88)/.16666666666666669),r=1-ks((n+88-.16666666666666669*e)/.08333333333333334)|0;e=ks((i+180)/.25);var s=ks((i+180-.25*e)/.125);switch(Tr(r,2)+s|0){case 0:return"-a";case 1:return"-б";case 2:return"-в";default:return"-г"}}(0,t,n)}else{var h;if(0===Eo(e)){var _=Ot;af(),h=_.m71(t,n,"Graticule.GK.25_000")}else h=e;r=h+function(t,n,i){var e=ks((n+88)/.08333333333333334),r=1-ks((n+88-.08333333333333334*e)/.04166666666666667)|0;e=ks((i+180)/.125);var s=ks((i+180-.125*e)/.0625)+1|0;return"-"+(Tr(r,2)+s|0)}(0,t,n)}return r},Pr(wf).m71=function(t,n,i,e,r){var s;return i===Yr?(af(),s="Graticule.GK.1_000_000"):s=i,i=s,e=e===Yr?"":e,r===Yr?this.h71(t,n,i,e):r.h71.call(this,new e_(t),new e_(n),i,e)},Pr(wf).k71=function(t){return ks((t+88+4)/4)},Pr(wf).j71=function(t){return $o(ks((t+180)/6),59)},Pr(Ef).b6u=function(){var t=Pr(Bc).b6u.call(this);return t instanceof hf?t:Nr()},Pr(Ef).x70=function(t){for(var n=this.y6t_1.v();n.w();){var i=n.y();i.i6w_1===t?this.b6u().s6r(i.h6w_1,t):"metric.label"===i.i6w_1&&i.h6w_1 instanceof Jb&&this.b6u().l6z(i.h6w_1)}return Xr},Pr(Ef).e6u=function(){Pr(Bc).e6u.call(this);var t=this.w70_1.n71_1.h5z_1,n=this.w70_1.o71_1.h5z_1,i=Math.min(t,n),e=this.w70_1.q71_1.h5z_1,r=this.w70_1.p71_1.h5z_1,s=Math.max(e,r),o=this.w70_1.n71_1.i5z_1,u=this.w70_1.q71_1.i5z_1,a=Math.max(o,u),h=this.w70_1.p71_1.i5z_1,_=this.w70_1.o71_1.i5z_1,l=Math.min(h,_),c=ks(i/this.u70_1),f=ks(s/this.u70_1),v=ks(a/this.u70_1),d=ks(l/this.u70_1);(function(t,n,i,e,r){var s=n;if(s<=i)do{var o=s;s=s+1|0;var u=o*t.u70_1,a=o*t.u70_1+t.u70_1,h=e;if(h<=r)do{var _=h;h=h+1|0;var l=_*t.u70_1,c=yf(t,u,l);if(o!==n){var f=_*t.u70_1+t.u70_1,v=yf(t,u,f),d=_;d===e?(gf(t,$f(0,t.w70_1.n71_1,t.w70_1.q71_1,u,l,u,f),v),pf(t,c,_,o,"X")):d===r?gf(t,$f(0,t.w70_1.o71_1,t.w70_1.p71_1,u,l,u,f),c):bf(t,c,v)}if(_!==e){var w=yf(t,a,l),p=o;p===n?(gf(t,$f(0,t.w70_1.n71_1,t.w70_1.o71_1,u,l,a,l),w),pf(t,c,_,o,"Y")):p===i?gf(t,$f(0,t.w70_1.q71_1,t.w70_1.p71_1,u,l,a,l),c):bf(t,c,w)}}while(_!==r)}while(o!==i)})(this,c,f,v,d),function(t,n,i,e,r){var s=n*t.u70_1;if(t.w70_1.n71_1.i5z_1=l){var c=i*t.u70_1,f=e*t.u70_1,v=$f(0,t.w70_1.o71_1,t.w70_1.p71_1,c,l,f,l);mf(t,$f(0,t.w70_1.n71_1,t.w70_1.o71_1,c,l,f,l),v)}else if(t.w70_1.o71_1.i5z_1=l){var d=i*t.u70_1,w=e*t.u70_1;mf(t,$f(0,t.w70_1.q71_1,t.w70_1.p71_1,d,l,w,l),$f(0,t.w70_1.o71_1,t.w70_1.p71_1,d,l,w,l))}}(this,v,c,f,d)},Pr(Af).e6z=function(t,n){if(0===n||this.b6z_1.d1()&&this.c6z_1.d1())return Xr;for(var i=function(t,n){var i=n.b5b_1.i55_1*n.w5a_1/4,e=n.b5b_1.j55_1*n.w5a_1/4,r=n.x5a_1,s=null==r?n.r6i().v53_1:r,o=t.a6z_1.f6z(new H_(s.b54_1,s.c54_1,0)),u=G.v5y(o.b54_1,o.c54_1);return new Oo(u.h5z_1-e,u.i5z_1-i)}(this,t),e=i.oe(),r=i.pe(),s=this.b6z_1.d2().v();s.w();){var o=s.y();Of(this,t,o.h2(),n)?this.d6z_1.s(o.g2()):qf(this,"X",o.h2(),e,r)}Cf(this,"X");for(var u=this.c6z_1.d2().v();u.w();){var a=u.y();Of(this,t,a.h2(),n)?this.d6z_1.s(a.g2()):qf(this,"Y",a.h2(),e,r)}Cf(this,"Y")},Pr(Af).m6z=function(t){var n=function(t,n){return n.a72("label.name")}(0,t);if(null==n)return Xr;var i=n,e=function(t,n,i){var e=n.a72("label.scale.type");if(null==e)return null;var r,s=e;switch(i){case"X":r=n.a72("label.x");break;case"Y":r=n.a72("label.y");break;default:r=null}if(null==r)return null;var o=r,u=n.f6t_1.c54_1>=0?"E":"W";return o+(n.f6t_1.b54_1>=0?"N":"S")+u+s}(0,t,i);if(null==e)return Xr;var r=e;if("X"===i){var s=this.b6z_1;(ss(s,zo)?s:Nr()).l2(r)||this.b6z_1.e2(r,t)}else if("Y"===i){var o=this.c6z_1;(ss(o,zo)?o:Nr()).l2(r)||this.c6z_1.e2(r,t)}},Pr(Tf).t6r=function(t){Pr(Bc).t6r.call(this,t);for(var n=this.b6u().x6r(t),i=this.y6t_1.v();i.w();){var e=i.y();if(e.c6u(t)){if(e.h6w_1 instanceof Jb){var r=e.h6w_1;if(n.b54_1<72||!Ao("*32*34*36*","*"+r.d6t_1+"*")){var s=r.f6t_1;"GridElement_LatitudeLabel"===e.i6w_1?r.b72(new H_(s.b54_1,n.c54_1,s.f54_1)):"GridElement_LongitudeLabel"===e.i6w_1&&r.b72(new H_(n.b54_1,s.c54_1,s.f54_1))}}var o=this.b6u();af(),o.s6r(e.h6w_1,"Graticule.GK.Overview")}}},Pr(Tf).e6u=function(){Pr(Bc).e6u.call(this);var t=_s(),n=1;if(n<=60)do{var i=n;n=n+1|0;var e=6*i-180;t.b1(),t.s(B.g5x(-88,e,0)),t.s(B.g5x(-60,e,0)),t.s(B.g5x(-30,e,0)),t.s(B.g5x(0,e,0)),t.s(B.g5x(30,e,0)),t.s(B.g5x(60,e,0)),t.s(B.g5x(88,e,0));var r=this.b6u().y6r(oo(t),h$()),s=Y.k5x(-88,e,176,30),o=s;this.y6t_1.s(Qc(o,r,"GridElement_Line"));var u=this.b6u().x6s(B.g5x(0,e-3,0),i.toString(),1e7);u.e6t_1.v6u_1=!1;var a=s=Y.k5x(-90,e-3,180,0);this.y6t_1.s(Qc(a,u,"GridElement_LongitudeLabel"))}while(n<=60);var h=0;if(h<=45)do{var _=h;h=h+1|0;var l=4*_-92;if(0!==_||46!==_){var c=0;if(c<=3)do{var f=c;c=c+1|0,t.b1();var v=90*f-180;t.s(B.g5x(l,v,0)),t.s(B.g5x(l,v+30,0)),t.s(B.g5x(l,v+60,0)),3===f?t.s(B.g5x(l,180,0)):t.s(B.g5x(l,v+90,0));var d=this.b6u().y6r(To(t),_$()),w=Y.k5x(l,v,3,90);this.y6t_1.s(Qc(w,d,"GridElement_Line"))}while(c<=3)}var p=this.b6u().x6s(B.g5x(l+2,0,0),af().m6y_1[_],1e7);p.e6t_1.v6u_1=!1;var m=Y.k5x(l+2,-180,3,360);this.y6t_1.s(Qc(m,p,"GridElement_LatitudeLabel"))}while(h<=45)},Pr(Df).s73=function(){return this.r73_1},Pr(Df).q6r=function(){var t=new Wc,n=t,i=rb(0,255,0);n.e2("GraticuleLineColor",i);var e=t,r=rb(0,255,0);e.e2("LabelColor",r);var s=t,o=ES("arial",lb(),14);s.e2("LabelFont",o),this.r6r("Graticule.UTM.100000m",t);var u=t=new Wc,a=rb(0,102,255);u.e2("GraticuleLineColor",a);var h=t,_=rb(0,102,255);h.e2("LabelColor",_),this.r6r("Graticule.UTM.10000m",t);var l=t=new Wc,c=rb(0,255,255);l.e2("GraticuleLineColor",c);var f=t,v=rb(0,255,255);f.e2("LabelColor",v),this.r6r("Graticule.UTM.1000m",t);var d=t=new Wc,w=rb(0,153,153);d.e2("GraticuleLineColor",w);var p=t,m=rb(0,153,153);p.e2("LabelColor",m),this.r6r("Graticule.UTM.100m",t);var g=t=new Wc,b=rb(102,255,204);g.e2("GraticuleLineColor",b);var $=t,y=rb(102,255,204);$.e2("LabelColor",y),this.r6r("Graticule.UTM.10m",t);var k=t=new Wc,x=rb(153,153,255);k.e2("GraticuleLineColor",x);var S=t,E=rb(153,153,255);S.e2("LabelColor",E),this.r6r("Graticule.UTM.1m",t)},Pr(Df).w6r=function(t){return t>=1e5?"Graticule.UTM.100000m":t>=1e4?"Graticule.UTM.10000m":t>=1e3?"Graticule.UTM.1000m":t>=100?"Graticule.UTM.100m":t>=10?"Graticule.UTM.10m":"Graticule.UTM.1m"},Pr(Df).u6r=function(t){Pr(Vc).u6r.call(this,t),this.q73_1.b1(),this.q73_1.t73(t)},Pr(Df).t6r=function(t){this.q73_1.t6r(t)},Pr(Df).u73=function(t,n,i,e){this.q73_1.u73(t,n,i,e)},Pr(Df).v73=function(t,n,i,e){return t>0?function(t,n,i,e,r){var s=rt.z67(n,i,e,r);return new H_(Qh(s.w62_1),t_(s.x62_1),1e4)}(0,t,n,i,e):function(t,n,i,e){var r=et.z66(n,i,e);return new H_(Qh(r.c63_1),t_(r.d63_1),1e4)}(0,n,i,e)},Pr(Df).w73=function(t,n,i,e,r,s,o){for(var u=_s(),a=e/1e5,h=1e5*Math.floor(a),_=s/1e5,l=1e5*Math.floor(_),c=(r-h)/1e5,f=Math.ceil(c),v=ks(f),d=(o-l)/1e5,w=Math.ceil(d),p=ks(w),m=0,g=hs(Array(p),null);m1e6)return Xr;var r,s=this.t76_1;if(null==s){var o=this.p76_1?function(t){var n,i,e,r;wl().equals(t.r76_1)?(e=13e5,r=27e5,n="Y"===t.q76_1?13e5:2e6,i="Y"===t.q76_1?2e6:27e5):(e=8e5,r=32e5,n="A"===t.q76_1?8e5:2e6,i="A"===t.q76_1?2e6:32e5);for(var s=t.b6u().w73(t.s76_1,t.r76_1,t.r6e_1,n,i,e,r),o=s.v();o.w();)Ff(0,o.y());return s}(this):function(t){var n=rt.v5y(t.r6e_1.o5p_1,t.r6e_1.m5u()),i=n.b63_1,e=(n=rt.v5y(t.r6e_1.p5p_1,t.r6e_1.m5u())).b63_1;e=0===e?1e7:e;var r=(n=rt.v5y(t.r6e_1.o5p_1,t.r6e_1.q5p_1)).a63_1;n=rt.v5y(t.r6e_1.p5p_1,t.r6e_1.q5p_1);var s=1e6-(r=Io(n.a63_1,r));"32V"===t.q76_1&&(e+=2e4),"31X"===t.q76_1&&(s+=1e5);for(var o=t.b6u().w73(t.s76_1,t.r76_1,t.r6e_1,r,s,i,e),u=o.v();u.w();)Ff(0,u.y());return o}(this);this.t76_1=o,r=o}else r=s;for(var u=r.v();u.w();){var a=u.y();a.c6u(t)?a.t6r(t):a.f6u()}},Pr(Hf).f6u=function(){Pr(Bc).f6u.call(this);var t=this.t76_1;if(null==t);else for(var n=t.v();n.w();)n.y().f6u();this.t76_1=null},Pr(Hf).e6u=function(){Pr(Bc).e6u.call(this);var t=Co([new H_(this.r6e_1.o5p_1,this.r6e_1.q5p_1,1e4),new H_(this.r6e_1.p5p_1,this.r6e_1.q5p_1,1e4)]),n=this.b6u().y6r(To(t),_$()),i=new K_(this.r6e_1.o5p_1,this.r6e_1.p5p_1,this.r6e_1.q5p_1,this.r6e_1.q5p_1),e=i,r=n;if(this.y6t_1.s(Qc(e,r,"GridElement_LineWest")),!this.p76_1){if(So(this.q76_1,"60")){t.b1(),t.s(new H_(this.r6e_1.o5p_1,this.r6e_1.r5p_1,1e4)),t.s(new H_(this.r6e_1.p5p_1,this.r6e_1.r5p_1,1e4)),n=this.b6u().y6r(To(t),_$());var s=i=new K_(this.r6e_1.o5p_1,this.r6e_1.p5p_1,this.r6e_1.r5p_1,this.r6e_1.r5p_1),o=n;this.y6t_1.s(Qc(s,o,"GridElement_LineEast"))}t.b1(),t.s(new H_(this.r6e_1.o5p_1,this.r6e_1.q5p_1,1e4)),t.s(new H_(this.r6e_1.o5p_1,this.r6e_1.r5p_1,1e4)),n=this.b6u().y6r(To(t),_$());var u=i=new K_(this.r6e_1.o5p_1,this.r6e_1.o5p_1,this.r6e_1.q5p_1,this.r6e_1.r5p_1),a=n;if(this.y6t_1.s(Qc(u,a,"GridElement_LineSouth")),Do(this.q76_1,"X")){t.b1(),t.s(new H_(this.r6e_1.p5p_1,this.r6e_1.q5p_1,1e4)),t.s(new H_(this.r6e_1.p5p_1,this.r6e_1.r5p_1,1e4)),n=this.b6u().y6r(To(t),_$());var h=i=new K_(this.r6e_1.p5p_1,this.r6e_1.p5p_1,this.r6e_1.q5p_1,this.r6e_1.r5p_1),_=n;this.y6t_1.s(Qc(h,_,"GridElement_LineNorth"))}}var l=this.b6u().x6s(new H_(this.r6e_1.l5u(),this.r6e_1.m5u(),0),this.q76_1,1e7);this.y6t_1.s(Qc(this.r6e_1,l,"GridElement_GridZoneLabel"))},Pr(Yf).t6r=function(t){Pr(Bc).t6r.call(this,t);for(var n=this.b6u().x6r(t),i=this.y6t_1.v();i.w();){var e=i.y();if(e.c6u(t)){if(e.h6w_1 instanceof Jb){var r=e.h6w_1;if(n.b54_1<72||!Ao("*32*34*36*","*"+r.d6t_1+"*")){var s=r.f6t_1;"GridElement_LatitudeLabel"===e.i6w_1?s=new H_(s.b54_1,n.c54_1,s.f54_1):"GridElement_LongitudeLabel"===e.i6w_1&&(s=new H_(n.b54_1,s.c54_1,s.f54_1)),r.b72(s)}}var o=this.b6u(),u=this.b6u();o.s6r(e.h6w_1,u.w6r(1e6))}}},Pr(Yf).e6u=function(){Pr(Bc).e6u.call(this);var t=_s(),n=1;if(n<=60)do{var i=n;n=n+1|0;var e,r,s=6*i-180;t.b1(),t.s(B.g5x(-80,s,1e4)),t.s(B.g5x(-60,s,1e4)),t.s(B.g5x(-30,s,1e4)),t.s(B.g5x(0,s,1e4)),t.s(B.g5x(30,s,1e4)),s<6||s>36?(t.s(B.g5x(60,s,1e4)),e=84):(6===s?r=56:(t.s(B.g5x(60,s,1e4)),r=72),e=r);var o=e;t.s(B.g5x(o,s,1e4));var u=this.b6u().y6r(oo(t),h$()),a=Y.k5x(-80,s,o+80,0),h=a;this.y6t_1.s(Qc(h,u,"GridElement_Line"));var _=this.b6u().x6s(B.g5x(0,s-3,0),i.toString(),1e7),l=a=Y.k5x(-90,s-3,180,0);this.y6t_1.s(Qc(l,_,"GridElement_LongitudeLabel"))}while(n<=60);var c=0;if(c<=4)do{var f=c;c=c+1|0,t.b1();var v=Bf().m78_1[f][0],d=Bf().m78_1[f][1],w=Bf().m78_1[f][2];t.s(B.g5x(d,v,1e4)),t.s(B.g5x(w,v,1e4));var p=this.b6u().y6r(To(t),h$()),m=Y.k5x(d,v,w-d,0);this.y6t_1.s(Qc(m,p,"GridElement_Line"))}while(c<=4);var g=-80,b=0;if(b<=20)do{var $=b;b=b+1|0;var y=0;if(y<=3)do{var k=y;y=y+1|0,t.b1();var x=90*k-180;t.s(B.g5x(g,x,1e4)),t.s(B.g5x(g,x+30,1e4)),t.s(B.g5x(g,x+60,1e4)),t.s(B.g5x(g,x+90,1e4));var S=this.b6u().y6r(To(t),_$()),E=Y.k5x(g,x,0,90);this.y6t_1.s(Qc(E,S,"GridElement_Line"))}while(y<=3);if($<20){var C=this.b6u().x6s(B.g5x(g+4,0,0),Vs(Hs("CDEFGHJKLMNPQRSTUVWX",$)),1e7),q=Y.k5x(g+4,-180,0,360);this.y6t_1.s(Qc(q,C,"GridElement_LatitudeLabel"))}g+=g<72?8:12}while(b<=20)},Pr(Jf).y72=function(t){this.v72_1=t,this.b1()},Pr(Jf).t73=function(t){try{var n=t.x5a_1;if(null==n);else{var i,e=n.b54_1;i=-80<=e&&e<=84?rt.v5y(n.b54_1,n.c54_1).y62_1:0,this.w72_1=i}}catch(t){if(!(t instanceof $s))throw t;this.w72_1=0}},Pr(Jf).b1=function(){for(var t=this.v72_1,n=Dr(t),i=ks(n),e=0,r=hs(Array(i),null);ethis.v72_1)return Xr;var r=Gf(this),s=Dr(e),o=r[ks(s)-1|0];"GridElement_LineEasting"!==i.i6w_1&&"GridElement_LineEast"!==i.i6w_1&&"GridElement_LineWest"!==i.i6w_1?("GridElement_LineNorthing"===i.i6w_1||"GridElement_LineSouth"===i.i6w_1||"GridElement_LineNorth"===i.i6w_1)&&(n.equals(o.s78_1)?o.q78_1=Io(i.j6w_1,o.q78_1):n.equals(pl())&&(o.q78_1=i.j6w_1,o.s78_1=n),n.equals(o.t78_1)?o.r78_1=yo(i.j6w_1,o.r78_1):n.equals(wl())&&(o.r78_1=i.j6w_1,o.t78_1=n)):(o.o78_1=Io(i.j6w_1,o.o78_1),o.p78_1=yo(i.j6w_1,o.p78_1))},Pr(Jf).t6r=function(t){var n=t.x5a_1;if(null==n)return Xr;var i,e,r,s=n,o=t.b5b_1.i55_1*t.w5a_1*-.5/2,u=t.b5b_1.j55_1*t.w5a_1*-.5/2;if(this.w72_1>0){var a=rt.v5y(s.b54_1,s.c54_1);i=a.a63_1+o,e=a.b63_1+u,r=a.z62_1,e<0&&(e+=1e7,r=pl())}else{var h=et.v5y(s.b54_1,s.c54_1);i=h.f63_1+o,e=h.g63_1+u,r=h.e63_1}var _,l=t.f5b_1,c=0,f=Gf(this).length-1|0;if(c<=f)do{var v=c;c=c+1|0;var d=Gf(this)[v],w=Math.pow(10,v),p=10*w,m=this.t72_1.w6r(w);if(d.o78_1<=d.p78_1)for(var g=d.o78_1;g<=d.p78_1;){if(v===(Gf(this).length-1|0)||g%p!=0){var b=(_=this.t72_1.v73(this.w72_1,r,g,e)).b54_1,$=_.c54_1,y=this.t72_1.n6t(t,b,$);if(l.h5v(y)&&Kf(this,t,y)){var k=ks(g%this.u72_1/w).toString(),x=this.t72_1.x6s(new H_(b,$,0),k,p);x.e6t_1.v6u_1=!1,this.t72_1.s6r(x,m)}}g+=w}if(!d.t78_1.equals(pl())||0!==d.r78_1)for(var S=d.s78_1,E=d.q78_1;E<=d.r78_1||!S.equals(d.t78_1);){if(v===(Gf(this).length-1|0)||E%p!=0){var C=(_=this.t72_1.v73(this.w72_1,S,i,E)).b54_1,q=_.c54_1,O=this.t72_1.n6t(t,C,q);if(l.h5v(O)&&Kf(this,t,O)){var z=ks(E%this.u72_1/w).toString(),A=this.t72_1.x6s(new H_(C,q,0),z,p);A.e6t_1.v6u_1=!1,this.t72_1.s6r(A,m)}!S.equals(d.t78_1)&&E>=1e7-w&&(S=d.t78_1,E=-w)}E+=w}}while(c<=f)},Pr(Jf).toString=function(){var t=jo(),n=0;if(n<=4)do{var i=n;n=n+1|0,t.o5("level "),t.s7(i),t.o5(" : ");var e=Gf(this)[i];e.o78_1Tr(100,4)},Pr(Zf).t6r=function(t){Pr(iv).t6r.call(this,t);for(var n=this.b6u().w6r(this.o74_1/10),i=this.y6t_1.v();i.w();){var e=i.y();e.c6u(t)&&(this.b6u().u73(this.j74_1,this.k74_1,e,this.o74_1),this.b6u().s6r(e.h6w_1,n))}if(this.z79(t)<=Tr(Tr(100,4),2))return Xr;var r,s=this.y79_1;if(null==s){var o=function(t){var n=_s(),i=t.o74_1/10,e=0;if(e<=9)do{var r=e;e=e+1|0;var s=t.m74_1+i*r,o=0;if(o<=9)do{var u=o;o=o+1|0;var a=t.n74_1+i*u,h=new Zf(t.b6u(),t.j74_1,t.k74_1,t.l74_1,s,a,i);h.x74_1||n.s(h)}while(o<=9)}while(e<=9);return n}(this);this.y79_1=o,r=o}else r=s;for(var u=r.v();u.w();){var a=u.y();a.c6u(t)?a.t6r(t):a.f6u()}},Pr(Zf).f6u=function(){Pr(iv).f6u.call(this);var t=this.y79_1;if(null==t);else for(var n=t.v();n.w();)n.y().f6u();this.y79_1=null},Pr(Zf).e6u=function(){Pr(iv).e6u.call(this);var t=this.o74_1/10,n=_s(),i=1;if(i<=9)do{var e=i;i=i+1|0;var r=this.m74_1+t*e;n.b1();var s=this.b6u().v73(this.j74_1,this.k74_1,r,this.n74_1),o=this.b6u().v73(this.j74_1,this.k74_1,r,this.n74_1+this.o74_1);if(this.w74_1?this.b6u().o6t(s,o,this.l74_1,n):(n.s(s),n.s(o)),n.n()>0){s=n.h1(0),o=n.h1(1);var u=this.b6u().y6r(To(n),h$()),a=this.a7a(s,o),h=Uh().d5d(r);this.y6t_1.s(new nf(a,u,"GridElement_LineEasting",h))}}while(i<=9);var _=1;if(_<=9)do{var l=_;_=_+1|0;var c=this.n74_1+t*l;n.b1();var f=this.b6u().v73(this.j74_1,this.k74_1,this.m74_1,c),v=this.b6u().v73(this.j74_1,this.k74_1,this.m74_1+this.o74_1,c);if(this.w74_1?this.b6u().o6t(f,v,this.l74_1,n):(n.s(f),n.s(v)),n.n()>0){f=n.h1(0),v=n.h1(1);var d=this.b6u().y6r(To(n),h$()),w=this.a7a(f,v),p=Uh().d5d(c);this.y6t_1.s(new nf(w,d,"GridElement_LineNorthing",p))}}while(_<=9)},Pr(iv).b6u=function(){var t=Pr(Bc).b6u.call(this);return t instanceof Df?t:Nr()},Pr(iv).a7a=function(t,n){var i=t.b54_1,e=t.c54_1,r=t.b54_1,s=t.c54_1;return n.b54_1r&&(r=n.b54_1),n.c54_1s&&(s=n.c54_1),new K_(i,r,e,s)},Pr(iv).i78=function(t){return this.l74_1.p5x(t)},Pr(iv).z79=function(t){var n=this.b6u().n6t(t,this.v74_1.b54_1,this.v74_1.c54_1),i=t.a5b_1.n5c(n);return this.o74_1/t.u59(i)/t.r5a_1},Pr(sv).c6u=function(t){return!!Pr(iv).c6u.call(this,t)&&this.z79(t)>100},Pr(sv).t6r=function(t){Pr(iv).t6r.call(this,t);var n=this.b6u().w6r(this.o74_1),i=this.y6t_1.v();t:for(;i.w();){var e=i.y();if(e.c6u(t)){if("GridElement_LineNorth"===e.i6w_1&&ev(this,t))continue t;if("GridElement_LineEast"===e.i6w_1&&rv(this,t))continue t;this.b6u().s6r(e.h6w_1,n)}}if(this.z79(t)<=Tr(100,2))return Xr;var r,s=this.c76_1;if(null==s){var o=new Zf(this.b6u(),this.j74_1,this.k74_1,this.l74_1,this.m74_1,this.n74_1,this.o74_1);this.c76_1=o,r=o}else r=s;var u=r;u.c6u(t)?u.t6r(t):u.f6u()},Pr(sv).f6u=function(){Pr(iv).f6u.call(this);var t=this.c76_1;null==t||t.f6u(),this.c76_1=null},Pr(sv).e6u=function(){Pr(iv).e6u.call(this);var t=_s();if(this.w74_1?this.b6u().o6t(this.q74_1,this.s74_1,this.l74_1,t):(t.s(this.q74_1),t.s(this.s74_1)),t.n()>0){var n=t.h1(0),i=t.h1(1),e=this.b6u().y6r(To(t),h$()),r=this.a7a(n,i),s=Uh(),o=this.m74_1,u=s.d5d(o);this.y6t_1.s(new nf(r,e,"GridElement_LineWest",u))}if(t.b1(),this.w74_1?this.b6u().o6t(this.r74_1,this.t74_1,this.l74_1,t):(t.s(this.r74_1),t.s(this.t74_1)),t.n()>0){var a=t.h1(0),h=t.h1(1),_=this.b6u().y6r(To(t),h$()),l=this.a7a(a,h),c=Uh(),f=this.m74_1+this.o74_1,v=c.d5d(f);this.y6t_1.s(new nf(l,_,"GridElement_LineEast",v))}if(t.b1(),this.w74_1?this.b6u().o6t(this.q74_1,this.r74_1,this.l74_1,t):(t.s(this.q74_1),t.s(this.r74_1)),t.n()>0){var d=t.h1(0),w=t.h1(1),p=this.b6u().y6r(To(t),h$()),m=this.a7a(d,w),g=Uh(),b=this.n74_1,$=g.d5d(b);this.y6t_1.s(new nf(m,p,"GridElement_LineSouth",$))}if(t.b1(),this.w74_1?this.b6u().o6t(this.s74_1,this.t74_1,this.l74_1,t):(t.s(this.s74_1),t.s(this.t74_1)),t.n()>0){var y=t.h1(0),k=t.h1(1),x=this.b6u().y6r(To(t),h$()),S=this.a7a(y,k),E=Uh(),C=this.n74_1+this.o74_1,q=E.d5d(C);this.y6t_1.s(new nf(S,x,"GridElement_LineNorth",q))}var O=this.z75_1;if(null==O);else{var z=this.u74_1.s5p(),A=Lh(this.v74_1.b54_1);if(z*Math.cos(A)>.2&&this.u74_1.t5p()>.2){var T=0!==this.j74_1?this.v74_1:this.i78(new H_(this.p74_1.b54_1,this.p74_1.c54_1,0))?this.p74_1:this.p74_1.b54_1<=this.l74_1.p5p_1&&this.p74_1.b54_1>=this.l74_1.o5p_1?this.v74_1:null;if(null!=T){var I=this.b6u().x6s(new H_(T.b54_1,T.c54_1,0),O,10*this.o74_1),D=this.u74_1;this.y6t_1.s(Qc(D,I,"GridElement_GridZoneLabel"))}}}},Pr(ov).l6i=function(){return this.j7a_1},Pr(ov).m6i=function(){return this.k7a_1},Pr(ov).p6i=function(t){this.m7a_1&&t.r5s().u6f(this.n7a_1,this.o7a_1);var n,i=bs(oh),e=t.s5b_1.o2(i),r=null==e||ss(e,W$)?e:Nr();if(null==r){var s=new VS;t.s5b_1.e2(i,s),n=s}else n=r;var o=n,u=x.m5i(o),a=this.o7a_1,h=u.n5i_1,_=a.length;ps(a,h,0,0,_);for(var l=0,c=u.o5i_1,f=0,v=c.length;f0)){var s=kr.n54(kr.i54_1,"WmsLayerFactory","createLayer","missingServiceAddress");throw is(Gr(s))}if(this.z7n_1.d1()){var o=kr.n54(kr.i54_1,"WmsLayerFactory","createLayer","missingLayerNames");throw is(Gr(o))}if(this.c7o_1=this.a7o_1,null==this.c7o_1){if(this.zb_1=1,t=this.x7n_1,n=this.y7n_1,i=void 0,(i=new Wv(t,n,this)).bc_1=Xr,i.cc_1=null,(e=i.mc())===Js())return e;continue t}this.d7o_1=this.c7o_1,this.zb_1=2;continue t;case 1:this.d7o_1=e,this.zb_1=2;continue t;case 2:if(this.e7o_1=this.d7o_1,this.zb_1=3,(e=Pv(this.x7n_1,this.e7o_1,this))===Js())return e;continue t;case 3:var u=e.f7o(this.z7n_1);if(u.d1()){var a=kr.f5y("WmsLayerFactory","createLayer","Provided layer names did not match available layers");throw is(Gr(a))}return Lv(this.x7n_1,this.y7n_1,this.e7o_1,u,this.b7o_1);case 4:throw this.cc_1}}catch(t){var h=t;if(4===this.ac_1)throw h;this.zb_1=this.ac_1,this.cc_1=h}},Pr(Wv).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6,this.c7l_1=Ak(),this.d7l_1=!1,this.zb_1=1;continue t;case 1:this.ac_1=5,this.ac_1=4,this.f7l_1=this.c7l_1,this.g7l_1=su().z1t(this.b7l_1).n4w().p4v("VERSION","1.3.0").p4v("SERVICE","WMS").p4v("REQUEST","GetCapabilities").o1d(),this.h7l_1=this.f7l_1,this.i7l_1=Gr(this.g7l_1),this.j7l_1=this.h7l_1,this.k7l_1=this.j7l_1;var n=new au;if(hu(n,this.i7l_1),_u(n,!0),this.l7l_1=n,this.l7l_1.n28_1=lu().t1z_1,this.m7l_1=this.k7l_1,this.n7l_1=this.l7l_1,this.zb_1=2,(t=new cu(this.n7l_1,this.m7l_1).x2y(this))===Js())return t;continue t;case 2:if(this.o7l_1=t,this.zb_1=3,(t=fu(this.o7l_1,Yr,this))===Js())return t;continue t;case 3:this.e7l_1=t,this.ac_1=6,this.zb_1=7;continue t;case 4:if(this.ac_1=5,this.cc_1 instanceof Error){var i=this.cc_1;try{this.d7l_1=!0,this.c7l_1.z1i()}catch(t){if(!(t instanceof Error))throw t;vu(i,t)}throw i}throw this.cc_1;case 5:this.ac_1=6;var e=this.cc_1;throw this.d7l_1||this.c7l_1.z1i(),e;case 6:throw this.cc_1;case 7:var r=this.e7l_1;return this.ac_1=6,this.d7l_1||this.c7l_1.z1i(),r}}catch(t){var s=t;if(6===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},Pr(Gv).g7o=function(t,n,i,e,r){var s=new Yv(this,t,n,i,e,r);return s.bc_1=Xr,s.cc_1=null,s.mc()},Pr(Gv).h7o=function(t,n,i,e,r,s){return i=i===Yr?null:i,e=e===Yr?null:e,s===Yr?this.g7o(t,n,i,e,r):s.g7o.call(this,t,n,i,e,r)},Pr(Gv).o7m=function(t){var n=t.h1(0).p7l(),i=null==n?null:n.u7l(),e=null==i?null:i.y7l_1,r=null==e?null:e.q7l_1,s=null==r?null:r.j7o_1,o=null==s?null:s.n7o();if(null==o){var u=kr.f5y("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Unable to resolve GetMap URL");throw fs(Gr(u))}for(var a=o,h=null,_=t.v();_.w();){var l=_.y().o7o();null==h?h=pu(l):h.a1(wu(l))}var c=new Nv(a,Jr(t,",",Yr,Yr,Yr,Yr,Bv)),f=i.v7l_1;if("1.3.0"!==f){var v=kr.f5y("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Version not compatible");throw fs(Gr(v))}if(c.h7i_1=f,!0===(null==h?null:h.r("EPSG:4326")))c.j7i_1="EPSG:4326";else{if(!0!==(null==h?null:h.r("CRS:84"))){var d=kr.f5y("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Coordinate systems not compatible");throw fs(Gr(d))}c.j7i_1="CRS:84"}var w,p=i.y7l_1.q7l_1.j7o_1.l7o_1,m=c;t:{for(var g=this.m7m_1.v();g.w();){var b=g.y();if(p.r(b)){w=b;break t}}w=null}var $,y=w;if(null==y){var k=kr.f5y("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Image Formats Not Compatible");throw fs(Gr(k))}$=y,m.k7i_1=$;var x,S=c;t:if(ss(t,rs)&&t.d1())x=!1;else{for(var E=t.v();E.w();)if(E.y().m7k_1){x=!0;break t}x=!1}return S.l7i_1=!x,c},Pr(Gv).p7m=function(t){for(var n=new F$,i=17976931348623157e292,e=Y_(),r=t.v();r.w();){var s=r.y(),o=s.p7o();null==o||(i=Io(i,o));var u=s.q7o();null==u||e.t5x(u)}if(e.n19()){var a=kr.f5y("WmsLayerFactory","getLevelSetConfigFromWmsCapabilities","Geographic Bounding Box Not Defined");throw fs(Gr(a))}n.r7o_1.h5q(e);var h,_=n;if(17976931348623157e292!==i){var l=28e-5*i/c_().w5u_1.y5u_1;h=n.y7o(l)}else h=20;return _.u7o_1=h,n},Pr(Jv).q6g=function(t,n,i,e){var r=new US(t,n,i,e),s=this.y7i(t,n.e6f_1,n.f6f_1),o=r,u=MS().m7e(s);return u.l7c_1=r,o.f7c_1=u,r},Pr(Jv).y7i=function(t,n,i){var e=su().z1t(this.p7i_1).n4w();if(!(n>=1&&i>=1)){var r=kr.n54(kr.i54_1,"WmsTileFactory","urlForTile","invalidWidthOrHeight");throw is(Gr(r))}e.p4v("VERSION",this.q7i_1),e.p4v("SERVICE","WMS"),e.p4v("REQUEST","GetMap"),e.p4v("LAYERS",this.r7i_1);var s=this.s7i_1;e.p4v("STYLES",null==s?"":s),e.p4v("WIDTH",n.toString()),e.p4v("HEIGHT",i.toString());var o=this.u7i_1;if(e.p4v("FORMAT",null==o?"image/png":o),e.p4v("TRANSPARENT",this.v7i_1?"TRUE":"FALSE"),"1.3.0"===this.q7i_1){e.p4v("CRS",this.t7i_1);var u="CRS:84"===this.t7i_1?t.q5p_1+","+t.o5p_1+","+t.r5p_1+","+t.p5p_1:t.o5p_1+","+t.q5p_1+","+t.p5p_1+","+t.r5p_1;e.p4v("BBOX",u)}else{e.p4v("SRS",this.t7i_1);var a=t.q5p_1+","+t.o5p_1+","+t.r5p_1+","+t.p5p_1;e.p4v("BBOX",a)}var h=this.w7i_1;return null==h||e.p4v("TIME",h),Gr(e.o1d())},Pr(ed).g7t=function(t,n){var i=this.w1g(t,n);return i.bc_1=Xr,i.cc_1=null,i.mc()},Pr(ed).zc=function(t,n){return this.g7t(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(ed).mc=function(){for(this.bc_1;;)try{var t=this.zb_1;if(0===t){this.ac_1=1;var n=ad().i7r_1,i=this.e7t_1,e=n.w37(),r=tu(e,Qo(bs(Ym),Zo([]),!1));return n.j3n(ss(r,nu)?r:Nr(),i)}if(1===t)throw this.cc_1}catch(t){throw t}},Pr(ed).w1g=function(t,n){var i=new ed(this.e7t_1,n);return i.f7t_1=t,i},Pr(sd).mc=function(){var t,n,i,e=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=4;var r=this.f7u_1;if(!(Eo(r)>0)){var s=kr.n54(kr.i54_1,"WmtsLayerFactory","createLayer","missingServiceAddress");throw is(Gr(s))}var o=this.g7u_1;if(!(Eo(o)>0)){var u=kr.n54(kr.i54_1,"WmtsLayerFactory","createLayer","missingLayerNames");throw is(Gr(u))}if(this.j7u_1=this.h7u_1,null==this.j7u_1){if(this.zb_1=1,t=this.e7u_1,n=this.f7u_1,i=void 0,(i=new od(t,n,this)).bc_1=Xr,i.cc_1=null,(e=i.mc())===Js())return e;continue t}this.k7u_1=this.j7u_1,this.zb_1=2;continue t;case 1:this.k7u_1=e,this.zb_1=2;continue t;case 2:if(this.l7u_1=this.k7u_1,this.zb_1=3,(e=Zv(this.e7u_1,this.l7u_1,this))===Js())return e;continue t;case 3:var a=e.m7u(this.g7u_1);n:do{if(null==a){var h=kr.f5y("WmtsLayerFactory","createLayer","Specified layer name was not found");throw is(Gr(h))}break n}while(0);return Qv(this.e7u_1,this.f7u_1,this.l7u_1,a,this.i7u_1);case 4:throw this.cc_1}}catch(t){var _=t;if(4===this.ac_1)throw _;this.zb_1=this.ac_1,this.cc_1=_}},Pr(od).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6,this.j7p_1=Ak(),this.k7p_1=!1,this.zb_1=1;continue t;case 1:this.ac_1=5,this.ac_1=4,this.m7p_1=this.j7p_1,this.n7p_1=su().z1t(this.i7p_1).n4w().p4v("VERSION","1.0.0").p4v("SERVICE","WMTS").p4v("REQUEST","GetCapabilities").o1d(),this.o7p_1=this.m7p_1,this.p7p_1=Gr(this.n7p_1),this.q7p_1=this.o7p_1,this.r7p_1=this.q7p_1;var n=new au;if(hu(n,this.p7p_1),_u(n,!0),this.s7p_1=n,this.s7p_1.n28_1=lu().t1z_1,this.t7p_1=this.r7p_1,this.u7p_1=this.s7p_1,this.zb_1=2,(t=new cu(this.u7p_1,this.t7p_1).x2y(this))===Js())return t;continue t;case 2:if(this.v7p_1=t,this.zb_1=3,(t=fu(this.v7p_1,Yr,this))===Js())return t;continue t;case 3:this.l7p_1=t,this.ac_1=6,this.zb_1=7;continue t;case 4:if(this.ac_1=5,this.cc_1 instanceof Error){var i=this.cc_1;try{this.k7p_1=!0,this.j7p_1.z1i()}catch(t){if(!(t instanceof Error))throw t;vu(i,t)}throw i}throw this.cc_1;case 5:this.ac_1=6;var e=this.cc_1;throw this.k7p_1||this.j7p_1.z1i(),e;case 6:throw this.cc_1;case 7:var r=this.l7p_1;return this.ac_1=6,this.k7p_1||this.j7p_1.z1i(),r}}catch(t){var s=t;if(6===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},Pr(ud).n7u=function(t,n,i,e,r){var s=new sd(this,t,n,i,e,r);return s.bc_1=Xr,s.cc_1=null,s.mc()},Pr(ud).o7u=function(t,n,i,e,r,s){return i=i===Yr?null:i,e=e===Yr?null:e,s===Yr?this.n7u(t,n,i,e,r):s.n7u.call(this,t,n,i,e,r)},Pr(_d).q6g=function(t,n,i,e){var r=new US(t,n,i,e),s=this.x7u(n.a6f_1,i,e);if(null==s);else{var o=r,u=MS().m7e(s);u.l7c_1=r,o.f7c_1=u}return r},Pr(_d).x7u=function(t,n,i){if(t>=this.t7u_1.n())return kr.n54(kr.j54_1,"WmtsTileFactory","urlForTile","invalid level for tileMatrixIdentifiers: "+t),null;var e=((this.u7u_1<this.v6f()[1]&&zs(this.v6f(),0)},Pr(ub).c5i=function(t,n,i,e){return this.z51_1=t,this.a52_1=n,this.b52_1=i,this.c52_1=e,this},Pr(ub).f5i=function(t){return this.c5i(t.z51_1,t.a52_1,t.b52_1,t.c52_1)},Pr(ub).t6u=function(t){var n,i,e=ru(ru(this.z51_1,this.a52_1),this.b52_1),r=e-iu(iu(this.z51_1,this.a52_1),this.b52_1);if(0===r)n=0,i=0;else{i=r/e;var s=(e-this.z51_1)/6/r+.5,o=(e-this.a52_1)/6/r+.5,u=(e-this.b52_1)/6/r+.5;(n=this.z51_1===e?u-o:this.a52_1===e?.3333333333333333+s-u:this.b52_1===e?.6666666666666666+o-s:0)<0?n+=1:n>1&&(n-=1)}t[0]=360*n,t[1]=i,t[2]=e},Pr(ub).a83=function(t,n){var i=n;if(!((t.length-i|0)>=4)){var e=kr.n54(kr.i54_1,"Color","premultiplyToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.z51_1*this.c52_1;var s=i;i=s+1|0,t[s]=this.a52_1*this.c52_1;var o=i;return i=o+1|0,t[o]=this.b52_1*this.c52_1,t[i]=this.c52_1,t},Pr(ub).equals=function(t){return this===t||t instanceof ub&&this.z51_1===t.z51_1&&this.a52_1===t.a52_1&&this.b52_1===t.b52_1&&this.c52_1===t.c52_1},Pr(ub).hashCode=function(){var t=Es(this.z51_1);return t=Tr(31,t)+Es(this.a52_1)|0,t=Tr(31,t)+Es(this.b52_1)|0,Tr(31,t)+Es(this.c52_1)|0},Pr(ub).toString=function(){return"Color(red="+this.z51_1+", green="+this.a52_1+", blue="+this.b52_1+", alpha="+this.c52_1+")"},Pr(ub).b83=function(){var t=255*this.z51_1,n=Wr(t),i=255*this.a52_1,e=Wr(i),r=255*this.b52_1;return"rgba("+n+", "+e+", "+Wr(r)+", "+this.c52_1+")"},Pr(cb).k5n=function(t){return this.q5f_1.e83()||this.c83(t),this.q5f_1.e83()&&t.i5g(this.q5f_1),this.q5f_1.e83()},Pr(cb).s5f=function(t,n,i){return this.q5f_1.e83()||this.c83(t),this.q5f_1.e83()&&(this.f83(t,n,i),this.r5f_1.e2(i,n)),this.q5f_1.e83()},Pr(cb).l5n=function(t){var n=this.r5f_1.o2(t);if(null==n)throw fs(Gr("Invalid attachment type"));return n},Pr(cb).c83=function(t){var n=t.a5f();try{this.q5f_1=t.m55_1.g83(),t.m55_1.j5g(sx(),this.q5f_1)}finally{t.m55_1.j5g(sx(),n)}},Pr(cb).f83=function(t,n,i){var e=t.a5f();try{t.i5g(this.q5f_1);var r=null==n?null:n.h83(t),s=null==r?rE().t5e_1:r;t.m55_1.i83(sx(),i,ox(),s,0)}finally{t.i5g(e)}},Pr(vb).toString=function(){return"TextCacheKey(text="+this.k83_1+", attributes="+this.l83_1+")"},Pr(vb).hashCode=function(){var t=null==this.k83_1?0:Ys(this.k83_1);return Tr(t,31)+(null==this.l83_1?0:this.l83_1.hashCode())|0},Pr(vb).equals=function(t){if(this===t)return!0;if(!(t instanceof vb))return!1;var n=t instanceof vb?t:Nr();return this.k83_1==n.k83_1&&!!Ss(this.l83_1,n.l83_1)},Pr(wb).y5r=function(){var t=this.k5a_1;if(null!=t)return t;Gs("globe")},Pr(wb).o5s=function(){var t=this.l5a_1;if(null!=t)return t;Gs("terrainTessellator")},Pr(wb).r5s=function(){var t=this.m5a_1;if(null!=t)return t;Gs("terrain")},Pr(wb).t5s=function(){var t=this.n5a_1;if(null!=t)return t;Gs("layers")},Pr(wb).l85=function(){var t=this.o5a_1;if(null!=t)return t;Gs("currentLayer")},Pr(wb).r6i=function(){var t=this.p5a_1;if(null!=t)return t;Gs("camera")},Pr(wb).x5s=function(){var t=this.q5a_1;if(null!=t)return t;Gs("renderResourceCache")},Pr(wb).m85=function(){var t=this.w5b_1;return po("tessellator",1,wo,(function(t){return t.m85()}),null),t.h2()},Pr(wb).r1h=function(){this.r5a_1=1,this.s5a_1=1,this.t5a_1=0,this.u5a_1=0,this.v5a_1=0,this.w5a_1=0,this.x5a_1=null,this.y5a_1=null,this.z5a_1=new Hr(0,0),this.a5b_1.u5f(0,0,0),this.b5b_1.k55(),this.c5b_1.v5f(),this.d5b_1.v5f(),this.e5b_1.v5f(),this.f5b_1.c5v(),this.g5b_1=null,this.h5b_1=null,this.i5b_1=null,this.j5b_1=null,this.k5b_1=null,this.l5b_1=null,this.m5b_1=null,this.n5b_1=!1,this.p5b_1=0,this.o5b_1=!1,this.q5b_1=0,this.r5b_1.b1()},Pr(wb).u59=function(t){if(0===this.q5b_1){var n=.5*Lh(this.r6i().a54_1),i=Math.tan(n);this.q5b_1=2*i/this.b5b_1.j55_1}return t*this.q5b_1},Pr(wb).n85=function(t,n,i){var e=t.g57_1,r=t.h57_1,s=t.k57_1,o=this.d5b_1.a57_1,u=o[0]*e+o[1]*r+o[2]*s+o[3],a=o[4]*e+o[5]*r+o[6]*s+o[7],h=o[8]*e+o[9]*r+o[10]*s+o[11],_=o[12]*e+o[13]*r+o[14]*s+o[15],l=this.c5b_1.a57_1,c=l[0]*u+l[1]*a+l[2]*h+l[3]*_,f=l[4]*u+l[5]*a+l[6]*h+l[7]*_,v=l[8]*u+l[9]*a+l[10]*h+l[11]*_,d=l[12]*u+l[13]*a+l[14]*h+l[15]*_;return 0!==d&&(c/=d,f/=d,!((v/=d)<-1||v>1||(v=l[8]*u+l[9]*a+l[10]*h*(1+n)+l[11]*_,f=.5*f+.5,v=.5*(v=us(v/=d,-1,1))+.5,c=(c=.5*c+.5)*this.b5b_1.i55_1+this.b5b_1.g55_1,f=f*this.b5b_1.j55_1+this.b5b_1.h55_1,i.g57_1=c,i.h57_1=f,i.k57_1=v,0)))},Pr(wb).o85=function(t,n,i){return this.p85(t.b54_1,t.c54_1,t.f54_1,n,i)},Pr(wb).p85=function(t,n,i,e,r){switch(e.v9_1){case 0:this.y5r().t57(t,n,i*this.s5a_1,r);break;case 1:if(!this.r5s().q6e(t,n,r)){var s=this.y5r(),o=s.d58(t,n);s.t57(t,n,o*this.s5a_1,r)}break;case 2:if(this.r5s().q6e(t,n,r))0!==i&&(this.y5r().f58(t,n,this.v5b_1),r.q5y(this.v5b_1.j5u(i)));else{var u=this.y5r(),a=i+u.d58(t,n);u.t57(t,n,a*this.s5a_1,r)}}return r},Pr(wb).q85=function(t,n,i){var e=this.x5s(),r=e.o2(t),s=null==r?i?e.r85(t,n):null:r;return null==s||s instanceof gb?s:Nr()},Pr(wb).j6o=function(t,n,i,e){return i=i===Yr||i,e===Yr?this.q85(t,n,i):e.q85.call(this,t,n,i)},Pr(wb).s85=function(t,n,i){var e=this.x5s();this.u5b_1.k83_1=t,this.u5b_1.l83_1=n;var r,s=e.o2(this.u5b_1),o=null==s||s instanceof gb?s:Nr();if(null==o){var u;if(i){var a,h=this.t5b_1.v85(t,n);null==h?a=null:(e.f5t(new vb(t,S$(n)),h,h.w85()),a=h),u=a}else u=null;r=u}else r=o;return r},Pr(wb).b7h=function(t){var n=this.g5b_1;null==n||n.i5l(t,eh(),0)},Pr(wb).g5t=function(t,n){var i=this.g5b_1;null==i||i.i5l(t,rh(),n)},Pr(wb).x85=function(t,n){var i=this.g5b_1;null==i||i.i5l(t,(nh(),y),-n)},Pr(wb).m6h=function(t,n){var i=this.h5b_1;null==i||i.i5l(t,rh(),n)},Pr(wb).j5l=function(){var t=this.g5b_1;null==t||t.j5l();var n=this.h5b_1;null==n||n.j5l()},Pr(wb).y85=function(){var t=this.g5b_1,n=null==t?null:t.n52();return null==n?0:n},Pr(wb).q52=function(t){var n=this.i5b_1;null==n||n.q52(t)},Pr(wb).w5s=function(){return this.p5b_1=this.p5b_1+1|0,this.p5b_1>16777215&&(this.p5b_1=1),this.p5b_1},Pr(mb).z85=function(t,n,i,e,r){if(!(t>=0&&n>=0)){var s=kr.n54(kr.i54_1,"Texture","estimateByteCount","invalidWidthOrHeight");throw is(Gr(s))}var o=mx(t),u=e===ix()?i===Be||i===Ye?o:i===We?Tr(o,2):i===Ge?Tr(o,3):(nx(),Tr(o,4)):e===Fk()||e===Ke||e===Xe||e===Je?Tr(o,2):(Vk(),Tr(o,4)),a=mx(n),h=Tr(u,a);return r&&(h=h+(h/3|0)|0),h},Pr(gb).w85=function(){return fi.z85(this.f5f_1,this.g5f_1,this.h5f_1,this.i5f_1,this.a86())},Pr(gb).a86=function(){return this.n5f_1},Pr(gb).b86=function(t){var n=this.m5f_1,i=null==n?null:n.o2(t);return null==i?0:i},Pr(gb).p5f=function(t,n){var i,e=this.m5f_1;if(null==e){var r=Kr();this.m5f_1=r,i=r}else i=e;i.e2(t,n)},Pr(gb).h83=function(t){return this.l5f_1.e83()||this.c86(t),this.l5f_1},Pr(gb).z5l=function(t){return this.l5f_1.e83()||this.c86(t),this.l5f_1.e83()&&t.n5g(this.l5f_1),this.l5f_1.e83()&&this.o5f_1!==t.y55_1&&(this.e86(t),this.o5f_1=t.y55_1),this.l5f_1.e83()},Pr(gb).c86=function(t){var n=t.c5f();try{this.l5f_1=t.m55_1.f86(),t.m55_1.o5g(ox(),this.l5f_1),this.g86(t),this.e86(t)}finally{t.m55_1.o5g(ox(),n)}},Pr(gb).g86=function(t){this.j5f_1&t.m55_1.i86()&&t.m55_1.h86(ox(),0,this.h5f_1,1,1,0,this.h5f_1,this.i5f_1,null),t.m55_1.h86(ox(),0,this.h5f_1,this.f5f_1,this.g5f_1,0,this.h5f_1,this.i5f_1,null)},Pr(gb).e86=function(t){var n;if(t.y55_1)t.m55_1.j86(ox(),Yk(),Wk());else{var i=this.b86(Yk());n=i,0!==i?t.m55_1.j86(ox(),Yk(),n):t.m55_1.j86(ox(),Yk(),this.a86()?Ze:lx())}if(t.y55_1)t.m55_1.j86(ox(),Gk(),Wk());else{var e=this.b86(Gk());n=e,0!==e?t.m55_1.j86(ox(),Gk(),n):t.m55_1.j86(ox(),Gk(),lx())}var r=this.b86(Kk());n=r,0!==r?t.m55_1.j86(ox(),Kk(),n):t.m55_1.j86(ox(),Kk(),cx());var s=this.b86(Jk());n=s,0!==s?t.m55_1.j86(ox(),Jk(),n):t.m55_1.j86(ox(),Jk(),cx())},Pr(bb).c5e=function(t){return this.h5m_1.e83()&&t.q5g(this.e5m_1,this.h5m_1),this.h5m_1.e83()},Pr(bb).l86=function(t){var n=t.p5g(this.e5m_1);try{this.h5m_1.e83()||this.m86(t),t.q5g(this.e5m_1,this.h5m_1),this.n86(t)}catch(n){if(!(n instanceof $s))throw n;var i=n;this.o86(t),kr.k5t(kr.i54_1,"BufferObject","loadBuffer","Exception attempting to load buffer data",i)}finally{t.q5g(this.e5m_1,n)}},Pr(bb).m86=function(t){this.h5m_1=t.m55_1.p86()},Pr(bb).o86=function(t){this.h5m_1.e83()&&(t.m55_1.q86(this.h5m_1),this.h5m_1=nE().u5e_1)},Pr(kb).r1h=function(){this.b5g_1=0,this.c5g_1=0},Pr(kb).q56=function(){this.r1h(),cs(this.a5g_1,nE().u5e_1)},Pr(kb).s5g=function(t,n){var i=n.length;return this.y5f_1t.y5f_1)return-1;n.m55_1.s86(t.w5f_1,t.c5g_1,r,i);var s=t.c5g_1;return t.c5g_1=t.c5g_1+r|0,s}(this,t,n)):-1},Pr(xb).c5e=function(t){return null==this.b5e_1||this.l86(t),this.b5e_1=null,Pr(bb).c5e.call(this,t)},Pr(xb).n86=function(t){var n=this.b5e_1;null==n||t.m55_1.r86(this.e5m_1,this.f5m_1,n,_x())},Pr(Sb).c5e=function(t){return null==this.z86_1||this.l86(t),this.z86_1=null,Pr(bb).c5e.call(this,t)},Pr(Sb).n86=function(t){var n=this.z86_1;null==n||t.m55_1.a87(this.e5m_1,this.f5m_1,n,_x())},Pr(Eb).c5e=function(t){return null==this.l5e_1||this.l86(t),this.l5e_1=null,Pr(bb).c5e.call(this,t)},Pr(Eb).n86=function(t){var n=this.l5e_1;null==n||t.m55_1.b87(this.e5m_1,this.f5m_1,n,_x())},Pr(Rb).e6m=function(){var t=this.t5i_1;if(null!=t)return t;Gs("gl")},Pr(Rb).e5t=function(){for(var t=0,n=this.t6m(),i=0,e=n.length;i0&&_<=l||c<0&&l<=_)do{var f=_;_=_+c|0;var v=n[f]-s,d=n[f+1|0]-o,w=n[f+2|0]-u,p=v*v+d*d+w*w;a>p&&(a=p)}while(f!==l);var m=a;return Math.sqrt(m)},Pr(Hb).k88=function(t,n,i){var e=i.v5f();return e.b5w(1/(t.f5f_1*n),1/(t.g5f_1*n)),e.d5w(t.k5f_1),e},Pr(Hb).o6g=function(t){Ss(t.y5a_1,this.o6s_1)||(this.r1h(),this.o6s_1=t.y5a_1)},Pr(Hb).r1h=function(){this.s6s_1.f5u(),this.r6s_1.k55()},Pr(Vb).v88=function(t){var n=_s(),i=fo(t),e=this.w88(t);n.s(0),n.s(1);var r=2;if(r(t/2|0))i=Pu(i-1),n.s(i);else{var o=i;i=Pu(o+1),n.s(o)}s===(t/2|0)&&n.s(fo(s)),n.s(fo(s))}while(rthis.v89_1,s=r?90:0,o=2*as()/this.z89_1,u=t.y5r().v59(),a=t.y5r().c69(),h=Math.max(u,a);r?(i=this.u89_1/h,e=this.v89_1/h):(i=this.v89_1/h,e=this.u89_1/h);var _=Tr(Bb().w88(this.z89_1),6),l=0,c=new Float64Array(n),f=0,v=this.z89_1;if(f0&&d<(this.z89_1/2|0)){var E=l;l=E+1|0,c[E]=p}}while(f=this.y89_1)return n;var i=t.o85(this.t89_1,this.f6s_1,Bb().u88_1),e=this.u89_1,r=this.v89_1,s=Math.max(e,r),o=i.n5c(t.a5b_1)-s;if(o<=0)return this.y89_1;var u=t.u59(o),a=this.t8a()/u/this.x89_1/n,h=Math.log(a)/Math.log(2),_=Math.ceil(h),l=Fu(ks(_),0);return $o(n<<=l,this.y89_1)},Pr(Yb).q8a=function(t){return 0==(t%2|0)?t:t-1|0},Pr(Yb).t8a=function(){var t=this.u89_1,n=this.v89_1,i=(3*t+n)*(t+3*n);return as()*(3*(t+n)-Math.sqrt(i))},Pr(Yb).r1h=function(){Pr(Hb).r1h.call(this),this.a8a_1=new Float32Array(0)},Pr(Jb).b72=function(t){this.f6t_1.u57(t)},Pr(Jb).v6s=function(t){this.g6t_1=t},Pr(Jb).e8b=function(){return this.g6t_1},Pr(Jb).c88=function(t){this.j6t_1=t},Pr(Jb).d88=function(){return this.j6t_1},Pr(Jb).e88=function(){var t=this.l6t_1;if(null!=t)return t;Gs("activeAttributes")},Pr(Jb).f8b=function(){return this.f6t_1},Pr(Jb).g8b=function(t,n){this.b72(n)},Pr(Jb).p6i=function(t){var n=this.d6t_1;if(!1!==(null==n?null:0===Eo(n)))return Xr;var i=t.y5r().d69();if(!1===(null==i?null:i.p5x(this.f6t_1)))return Xr;var e=t.y5r().e58()?Rh():this.e8b();t.o85(this.f6t_1,e,Kb().v8a_1.w8a_1),Kb().v8a_1.d8b_1=this.m6t_1?0:t.y5r().e58()?t.v5a_1:t.a5b_1.n5c(Kb().v8a_1.w8a_1);var r=0;if(Kb().v8a_1.d8b_10)}else n=!1;return n},Pr(f$).o8f=function(t){return!(!this.e88().f8e_1||!this.b8f_1&&t.n5b_1||this.e8b().equals(Rh())||t.y5r().e58())},Pr(d$).t8f=function(t){var n=v$();return n.b8e_1=t,n},Pr(d$).u8f=function(t){var n=v$();return n.b8e_1=t,n.f8e_1=!0,n},Pr(w$).l8e=function(t){this.h8e_1.f5i(t)},Pr(w$).v8f=function(t){this.i8e_1.a5x(t)},Pr(w$).equals=function(t){return this===t||t instanceof w$&&!!Ss(this.b8e_1,t.b8e_1)&&!!this.h8e_1.equals(t.h8e_1)&&!!this.i8e_1.equals(t.i8e_1)&&this.c8e_1===t.c8e_1&&this.d8e_1===t.d8e_1&&this.e8e_1===t.e8e_1&&this.f8e_1===t.f8e_1&&this.g8e_1===t.g8e_1&&!!this.j8e_1.equals(t.j8e_1)&&!!this.k8e_1.equals(t.k8e_1)},Pr(w$).hashCode=function(){var t=this.b8e_1,n=null==t?null:t.hashCode(),i=null==n?0:n;return i=Tr(31,i)+this.h8e_1.hashCode()|0,i=Tr(31,i)+this.i8e_1.hashCode()|0,i=Tr(31,i)+Es(this.c8e_1)|0,i=Tr(31,i)+Es(this.d8e_1)|0,i=Tr(31,i)+zu(this.e8e_1)|0,i=Tr(31,i)+zu(this.f8e_1)|0,i=Tr(31,i)+zu(this.g8e_1)|0,i=Tr(31,i)+this.j8e_1.hashCode()|0,Tr(31,i)+this.k8e_1.hashCode()|0},Pr(p$).u7g=function(){return new Object},Pr(g$).d8g=function(t,n,i,e,r){return this.c8g_1.x8h(r instanceof wb?r:Nr(),t,n,i,e)},Pr(g$).y8h=function(t,n){return this.c8g_1.z8h(n instanceof wb?n:Nr(),t)},Pr(g$).a8i=function(t,n){return this.c8g_1.b8i(n instanceof wb?n:Nr(),t)},Pr(g$).c8i=function(t,n){return this.c8g_1.d8i(n instanceof wb?n:Nr(),t)},Pr(b$).m8i=function(t){return this.r1h(),this.z8g_1.s(t)},Pr(b$).r1h=function(){Pr(Hb).r1h.call(this),this.a8h_1=new Float32Array(0),this.c8h_1.b1(),this.d8h_1.b1(),this.e8h_1.b1(),this.f8h_1.b1()},Pr(b$).h88=function(t){if(this.z8g_1.d1())return Xr;var n,i;if(this.m8a(t)&&(this.l8a(t),this.g8h_1=m$().u7g(),this.h8h_1=m$().u7g()),this.n6s_1){var e,r=bs(Sh),s=t.s5b_1.o2(r),o=null==s||ss(s,W$)?s:Nr();if(null==o){var u=new VS;t.s5b_1.e2(r,u),e=u}else e=o;var a=e;i=(n=A.c5p(a)).f5p_1,this.j8h_1=this.i88(t,this.r6s_1),n.d5p_1=t.y5r().c55_1,n.e5p_1.h5q(this.r6s_1)}else{var h,_=bs(ph),l=t.s5b_1.o2(_),c=null==l||ss(l,W$)?l:Nr();if(null==c){var f=new VS;t.s5b_1.e2(_,f),h=f}else h=c;var v=h;i=(n=C.a5m(v)).b5m_1,this.j8h_1=this.j88(t,this.a8h_1,this.b8h_1,6,this.i8h_1)}var d,w=i,p=bs(Pb),m=t.x5s(),g=m.o2(p);if(null==g){var b=new Pb;m.f5t(p,b,b.e5t()),d=b}else d=g;var $=d;w.l5h_1=$ instanceof Pb?$:Nr();var y,k=i,x=this.g8h_1,S=t.x5s(),E=S.o2(x);if(null==E){var q=new xb(Rk(),this.a8h_1,this.b8h_1);S.f5t(x,q,q.f5m_1),y=q}else y=E;var O=y;k.m5h_1=O instanceof xb?O:Nr();var z,T=i,I=this.h8h_1,D=t.x5s(),j=D.o2(I);if(null==j){var M=new Sb(Pk(),Uu(Iu(Iu(Iu(this.c8h_1,this.d8h_1),this.e8h_1),this.f8h_1)));D.f5t(I,M,M.f5m_1),z=M}else z=j;var N=z;T.n5h_1=N instanceof Sb?N:Nr(),this.n6s_1||this.e88().p6v_1.c52_1>=1?(this.o8a(t,i),this.n8a(t,i)):(this.n8a(t,i),this.o8a(t,i)),i.o5h_1.m5c(this.i8h_1),i.p5h_1=24,i.q5h_1=this.h6s_1,i.r5h_1=this.e88().j6v_1,i.s5h_1=this.e88().k6v_1,this.n6s_1?t.g5t(n,0):t.x85(n,this.j8h_1)},Pr(b$).o8a=function(t,n){if(!this.e88().g6v_1)return Xr;var i,e=this.e88().n6v_1;if(null==e)i=null;else{var r,s=t.j6o(e,m$().x8f_1);if(null==s)r=null;else{var o=t.u59(this.j8h_1);this.k88(s,o,this.p8h_1),n.i5i(s),r=n.j5i(this.p8h_1)}i=r}if(null==i&&n.i5i(null),n.e5i(t.n5b_1?this.q6s_1:this.e88().p6v_1),n.g5i(t.n5b_1?1:t.l85().m6i()),n.l5i(2,12),n.o5e(Bk(),this.c8h_1.n(),Vk(),0),this.h6s_1){n.i5i(null);var u=Bk(),a=this.d8h_1.n(),h=Vk(),_=this.c8h_1.n();n.o5e(u,a,h,Tr(_,4))}},Pr(b$).n8a=function(t,n){if(!this.e88().h6v_1)return Xr;var i,e=this.e88().o6v_1;if(null==e)i=null;else{var r,s=t.j6o(e,m$().y8f_1);if(null==s)r=null;else{var o=t.u59(this.j8h_1);this.k88(s,o,this.p8h_1),n.i5i(s),r=n.j5i(this.p8h_1)}i=r}null==i&&n.i5i(null),n.e5i(t.n5b_1?this.q6s_1:this.e88().q6v_1),n.g5i(t.n5b_1?1:t.l85().m6i()),n.h5i(this.e88().m6v_1),n.l5i(1,20);var u=Hk(),a=this.e8h_1.n(),h=Vk(),_=this.c8h_1.n()+this.d8h_1.n()|0;if(n.o5e(u,a,h,Tr(_,4)),this.e88().i6v_1&&this.h6s_1){n.e5i(t.n5b_1?this.q6s_1:this.e88().q6v_1),n.g5i(t.n5b_1?1:t.l85().m6i()),n.h5i(this.e88().m6v_1),n.i5i(null);var l=Hk(),c=this.f8h_1.n(),f=Vk(),v=(this.c8h_1.n()+this.d8h_1.n()|0)+this.e8h_1.n()|0;n.o5e(l,c,f,Tr(v,4))}},Pr(b$).m8a=function(t){return 0===this.a8h_1.length},Pr(b$).l8a=function(t){for(var n=this.l6s_1<=0||this.g6s_1.equals(_$()),i=0,e=this.z8g_1.v();e.w();){var r=e.y();i=i+(n?r.n():!r.d1()&&r.h1(0).equals(r.h1(r.n()-1|0))?r.n()+Tr(r.n()-1|0,this.l6s_1)|0:r.n()+Tr(r.n(),this.l6s_1)|0)|0}var s=i;this.b8h_1=0,this.a8h_1=this.h6s_1&&!this.n6s_1?new Float32Array(Tr(Tr(s,2),6)):this.n6s_1?new Float32Array(Tr(s+this.z8g_1.n()|0,6)):new Float32Array(Tr(s,6)),this.c8h_1.b1(),this.d8h_1.b1(),this.e8h_1.b1(),this.f8h_1.b1(),this.r8a(t);var o=t.m85();Ki.n8i(o,0,0,1),Ki.o8i(o,100111,this.l8h_1),Ki.o8i(o,100107,this.l8h_1),Ki.o8i(o,100110,this.l8h_1),Ki.o8i(o,100109,this.l8h_1),Ki.p8i(o,t);var u=0,a=this.z8g_1.n()-1|0;if(u<=a)do{var h=u;u=u+1|0;var _=this.z8g_1.h1(h);if(!_.d1()){Ki.q8i(o);var l=_.h1(0);this.r8i(t,l.b54_1,l.c54_1,l.f54_1,0);var c=1,f=_.n();if(c>1,12),i=new Float32Array(t+n|0),e=this.a8h_1,r=e.length;ps(e,i,0,0,r),this.a8h_1=i}},Pr(y$).x8i=function(t){this.p6v_1.f5i(t)},Pr(y$).d6v=function(t){this.q6v_1.f5i(t)},Pr(y$).y8i=function(t){return this.g6v_1=t.g6v_1,this.h6v_1=t.h6v_1,this.i6v_1=t.i6v_1,this.j6v_1=t.j6v_1,this.k6v_1=t.k6v_1,this.l6v_1=t.l6v_1,this.p6v_1.f5i(t.p6v_1),this.q6v_1.f5i(t.q6v_1),this.m6v_1=t.m6v_1,this.n6v_1=t.n6v_1,this.o6v_1=t.o6v_1,this},Pr(y$).equals=function(t){return this===t||t instanceof y$&&this.g6v_1===t.g6v_1&&this.h6v_1===t.h6v_1&&this.i6v_1===t.i6v_1&&this.j6v_1===t.j6v_1&&this.k6v_1===t.k6v_1&&this.l6v_1===t.l6v_1&&!!this.p6v_1.equals(t.p6v_1)&&!!this.q6v_1.equals(t.q6v_1)&&this.m6v_1===t.m6v_1&&!!Ss(this.n6v_1,t.n6v_1)&&!!Ss(this.o6v_1,t.o6v_1)},Pr(y$).hashCode=function(){var t=zu(this.g6v_1);t=Tr(31,t)+zu(this.h6v_1)|0,t=Tr(31,t)+zu(this.i6v_1)|0,t=Tr(31,t)+zu(this.j6v_1)|0,t=Tr(31,t)+zu(this.k6v_1)|0,t=Tr(31,t)+zu(this.l6v_1)|0,t=Tr(31,t)+this.p6v_1.hashCode()|0,t=Tr(31,t)+this.q6v_1.hashCode()|0,t=Tr(31,t)+Es(this.m6v_1)|0;var n=Tr(31,t),i=this.n6v_1,e=null==i?null:i.hashCode(),r=Tr(31,t=n+(null==e?0:e)|0),s=this.o6v_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},Pr(k$).p6i=function(t){if(this.k6k_1.h5q(this.t82_1),this.k6k_1.n19()||!this.k6k_1.n5x(t.r5s().s5d())||!this.d6i(t).n5s(t.f5b_1))return Xr;var n=t.j6o(this.i6k_1,this.j6k_1);if(null==n)return Xr;var i,e=n,r=t.n5b_1?1:t.l85().m6i(),s=this.z8i(t),o=bs(qh),u=t.s5b_1.o2(o),a=null==u||ss(u,W$)?u:Nr();if(null==a){var h=new VS;t.s5b_1.e2(o,h),i=h}else i=a;var _=i,l=T.w5p(_).g5q(s,this.t82_1,r,e,e.k5f_1,t.y5r().c55_1,this.k6k_1);if(t.g5t(l,0),t.n5b_1){var c=t.w5s();w.y51(c,l.a5q_1),t.q52(w.v51(c,this,t.l85()))}},Pr(k$).z8i=function(t){var n,i=bs(Fb),e=t.x5s(),r=e.o2(i);if(null==r){var s=new Fb;e.f5t(i,s,s.e5t()),n=s}else n=r;return n instanceof Fb?n:Nr()},Pr(E$).e6v=function(t){this.y6u_1.g8j(t)},Pr(E$).c6v=function(t){this.z6u_1.f5i(t)},Pr(E$).r71=function(t){this.a6v_1.a5x(t)},Pr(E$).d6v=function(t){this.b6v_1.f5i(t)},Pr(E$).equals=function(t){return this===t||t instanceof E$&&!!this.y6u_1.equals(t.y6u_1)&&!!this.z6u_1.equals(t.z6u_1)&&!!this.a6v_1.equals(t.a6v_1)&&!!this.b6v_1.equals(t.b6v_1)&&this.u6u_1===t.u6u_1&&this.v6u_1===t.v6u_1&&this.w6u_1===t.w6u_1&&this.x6u_1===t.x6u_1},Pr(E$).hashCode=function(){var t=this.y6u_1.hashCode();return t=Tr(31,t)+this.z6u_1.hashCode()|0,t=Tr(31,t)+this.a6v_1.hashCode()|0,t=Tr(31,t)+this.b6v_1.hashCode()|0,t=Tr(31,t)+Es(this.u6u_1)|0,t=Tr(31,t)+zu(this.v6u_1)|0,t=Tr(31,t)+zu(this.w6u_1)|0,Tr(31,t)+Es(this.x6u_1)|0},Pr(q$).h7d=function(t){this.u7c_1=t,this.n6h()},Pr(q$).p6i=function(t){if(t.r5s().s5d().n19())return Xr;this.o6g(t),this.c7e(t),this.d7e(t),this.b7d_1=null,this.c7d_1=null,this.d7d_1=null},Pr(q$).c7e=function(t){var n,i=bs(Fb),e=t.x5s(),r=e.o2(i);if(null==r){var s=new Fb;e.f5t(i,s,s.e5t()),n=s}else n=r;var o=n;this.b7d_1=o instanceof Fb?o:Nr()},Pr(q$).d7e=function(t){this.f7d_1.d1()&&this.s6g();var n=0,i=this.f7d_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.f7d_1.h1(e);this.e7e(t,r instanceof US?r:Nr())}while(n<=i)},Pr(q$).s6g=function(){return Pi.d6h(this.t7c_1.b6h(),this.s7c_1,this.f7d_1)},Pr(q$).e7e=function(t,n){var i=t.y5r().d69();if(!1===(null==i?null:n.e6h(i)))return Xr;if(!n.e6h(this.t7c_1.u6g_1)||!n.e6h(t.r5s().s5d())||!n.f6h(t))return Xr;var e=n.p6f_1.a6f_1>=this.t7c_1.z6g_1;if(n.p6f_1.i6h()||!n.h6h(t,this.v7c_1))return e&&this.f7e(t,n),Xr;var r=this.c7d_1,s=this.d7d_1,o=this.g7e(t,n,!!this.w7c_1&&e);null==o||this.x7c_1&&(this.c7d_1=n,this.d7d_1=o);var u=n.j6h(this.s7c_1,this.a7d_1,4),a=0,h=u.length-1|0;if(a<=h)do{var _=a;a=a+1|0;var l=u[_];this.e7e(t,l instanceof US?l:Nr())}while(a<=h);this.c7d_1=r,this.d7d_1=s},Pr(q$).f7e=function(t,n){var i=this.h7e(t,n),e=this.c7d_1,r=this.d7d_1,s=t.n5b_1?1:t.l85().m6i();if(null!=i){var o,u=bs(qh),a=t.s5b_1.o2(u),h=null==a||ss(a,W$)?a:Nr();if(null==h){var _=new VS;t.s5b_1.e2(u,_),o=_}else o=h;var l=o,c=T.w5p(l).i5q(this.b7d_1,n.r6e_1,s,i,i.k5f_1,t.y5r().c55_1);t.g5t(c,0)}else if(null!=e&&null!=r){this.e7d_1.k5i(r.k5f_1),this.e7d_1.d5r(n.r6e_1,e.r6e_1);var f,v=bs(qh),d=t.s5b_1.o2(v),w=null==d||ss(d,W$)?d:Nr();if(null==w){var p=new VS;t.s5b_1.e2(v,p),f=p}else f=w;var m=f,g=T.w5p(m).i5q(this.b7d_1,n.r6e_1,s,r,this.e7d_1,t.y5r().c55_1);t.g5t(g,0)}},Pr(q$).g7e=function(t,n,i){var e=n.f7c_1;if(null==e)return null;var r,s=e,o=n.g7c_1;if(null==o){var u,a=this.y7c_1;if(null==a)u=null;else{var h,_=a.q6g(n.r6e_1,n.p6f_1,n.q6f_1,n.r6f_1),l=(_ instanceof US?_:Nr()).f7c_1;null==l?h=null:(n.g7c_1=l,h=l),u=h}r=u}else r=o;var c=r,f=!!this.z7c_1||Ss(this.s7c_1,this.y7c_1),v=null==c||t.x5s().x54_1.i6c(c.hashCode());return t.q85(v?s:os(c),this.u7c_1,!(!i||f&&v))},Pr(q$).h7e=function(t,n,i,e){return i=i===Yr||i,e===Yr?this.g7e(t,n,i):e.g7e.call(this,t,n,i)},Pr(q$).o6g=function(t){Ss(t.y5a_1,this.g7d_1)||(this.n6h(),this.g7d_1=t.y5a_1)},Pr(q$).n6h=function(){this.f7d_1.b1(),this.a7d_1.b1()},Pr(O$).o8j=function(t){this.l8j_1=this.l8j_1+1|0,this.k8j_1=js.a3k(),this.m8j_1=t},Pr(z$).b1=function(){this.c6c_1.b1()},Pr(z$).i6c=function(t){var n=this.c6c_1.o2(t);if(null==n)return!1;var i=n;if(i.m8j_1)return!0;var e=js.a3k().c3l(i.k8j_1);return Vu(e,this.b6c_1)>0?(this.c6c_1.i2(t),!1):Vu(e,this.a6c_1)<0||i.l8j_1>this.z6b_1},Pr(z$).p8j=function(t,n){var i,e=this.c6c_1.o2(t);if(null==e){var r=new O$(this);this.c6c_1.e2(t,r),i=r}else i=e;i.o8j(n)},Pr(z$).m6c=function(t,n,i){var e;return n=n!==Yr&&n,i===Yr?(this.p8j(t,n),e=Xr):e=i.p8j.call(this,t,n),e},Pr(z$).k6c=function(t){this.c6c_1.i2(t)},Pr(A$).equals=function(t){return this===t||t instanceof A$&&!!Ss(this.k7c_1,t.k7c_1)},Pr(A$).hashCode=function(){return Xo(this.k7c_1)},Pr(A$).toString=function(){return Gr(this.k7c_1)},Pr(D$).b6i=function(){var t=this.s6e_1;return po("extent",1,wo,(function(t){return t.b6i()}),null),t.h2()},Pr(D$).v6f=function(){var t=this.t6e_1;return po("heightLimits",1,wo,(function(t){return t.v6f()}),null),t.h2()},Pr(D$).f6h=function(t){return this.d6i(t).n5s(t.f5b_1)},Pr(D$).e6h=function(t){return this.r6e_1.c5r(t)},Pr(D$).z6h=function(t){var n=t.r6i().v53_1,i=n.b54_1-this.r6e_1.l5u(),e=Math.abs(i),r=n.c54_1-this.r6e_1.m5u(),s=Math.abs(r),o=360-s;return e+Math.min(s,o)},Pr(D$).c6i=function(t){var n=t.r6i().v53_1,i=us(n.b54_1,this.r6e_1.o5p_1,this.r6e_1.p5p_1),e=n.c54_1-this.r6e_1.m5u(),r=e<-180?this.r6e_1.r5p_1:e>180?this.r6e_1.q5p_1:us(n.c54_1,this.r6e_1.q5p_1,this.r6e_1.r5p_1),s=this.v6f()[0]*t.s5a_1,o=t.y5r(),u=Uh().d5d(i),a=Uh().d5d(r);return o.t57(u,a,s,this.y6e_1)},Pr(D$).d6i=function(t){var n=t.y5r(),i=t.z5a_1;i.equals(this.u6e_1)||(n.e58()?zs(this.v6f(),0):this.w6h(n));var e=t.s5a_1,r=t.y5a_1,s=t.y5r().c55_1;if(!i.equals(this.u6e_1)||e!==this.v6e_1||!Ss(r,this.w6e_1)||!s.equals(this.x6e_1)){var o=this.v6f()[0]*e,u=this.v6f()[1]*e;this.b6i().m5s(this.r6e_1,n,o,u)}return this.u6e_1=i,this.v6e_1=e,this.w6e_1=r,this.x6e_1=s,this.b6i()},Pr(D$).w6h=function(t){this.v6f()[0]=34028235e31,this.v6f()[1]=-34028235e31,t.b55_1.w69(this.r6e_1,this.v6f()),this.v6f()[0]>this.v6f()[1]&&zs(this.v6f(),0)},Pr(M$).f5d=function(){if(this.r8j_1>0){this.r8j_1=this.r8j_1-1|0;var t=this.r8j_1,n=this.s8j_1[t];return this.s8j_1[t]=null,null==n||null!=n?n:Nr()}return null},Pr(M$).v5d=function(t){if(null!=t){var n=this.s8j_1.length;if(n===this.r8j_1){var i=n>>1,e=Math.max(i,12),r=hs(Array(n+e|0),null),s=this.s8j_1;ps(s,r,0,0,n),this.s8j_1=r}var o=this.s8j_1,u=this.r8j_1;this.r8j_1=u+1|0,o[u]=t}},Pr(N$).i6h=function(){return this.a6f_1===(this.z6e_1.t8j()-1|0)},Pr(N$).r7b=function(){return this.z6e_1.u8j(this.a6f_1+1|0)},Pr(L$).t8j=function(){return this.a6h_1.length},Pr(L$).b6h=function(){return Bu(this.a6h_1)},Pr(L$).u8j=function(t){return 0<=t&&t<=(this.a6h_1.length-1|0)?this.a6h_1[t]:null},Pr(F$).y7o=function(t){if(!(t>0)){var n=kr.n54(kr.i54_1,"LevelSetConfig","numLevelsForMinResolution","invalidResolution");throw is(Gr(n))}var i=Uh().m5t(t),e=this.t7o_1.b54_1/this.x7o_1/i,r=Math.log(e)/Math.log(2),s=Math.floor(r),o=ks(s);return o<0&&(o=0),o+1|0},Pr(H$).l9=function(t,n){return this.z8j_1(t,n)},Pr(H$).compare=function(t,n){return this.l9(t,n)},Pr(B$).a8k=function(){return this.b5t_1},Pr(B$).b8k=function(){return this.d5t_1=this.d5t_1.gb(),this.d5t_1},Pr(B$).o2=function(t){var n,i=this.c5t_1.o2(t);return null==i?n=null:(i.y8j_1=this.b8k(),n=i.w8j_1),n},Pr(B$).f5t=function(t,n,i){this.a5t_1.db(Ps(i)).z9(this.y5s_1)>0&&this.c8k(i);var e=new U$(t,n,i);e.y8j_1=this.b8k();var r=this.a5t_1,s=e.x8j_1;this.a5t_1=r.db(Ps(s));var o=this.c5t_1.e2(t,e);if(null!=o){var u=this.a5t_1,a=o.x8j_1;if(this.a5t_1=u.eb(Ps(a)),e.w8j_1!==o.w8j_1)return this.d8k(o.v8j_1,o.w8j_1,e.w8j_1,!1),o.w8j_1}return null},Pr(B$).b1=function(){this.c5t_1.b1(),this.a5t_1=new Hr(0,0)},Pr(B$).c8k=function(t){var n=this.e8k(),i=0,e=n.n()-1|0;if(i<=e)t:do{var r=i;i=i+1|0;var s=n.h1(r);if(!(this.a5t_1.z9(this.z5s_1)>0||this.y5s_1.eb(this.a5t_1).z9(Ps(t))<0))break t;this.c5t_1.i2(s.v8j_1);var o=this.a5t_1,u=s.x8j_1;this.a5t_1=o.eb(Ps(u)),this.d8k(s.v8j_1,s.w8j_1,null,!0)}while(i<=e)},Pr(B$).e8k=function(){return Yu(this.c5t_1.c2(),this.a8k())},Pr(B$).d8k=function(t,n,i,e){},Pr(K$).p6n=function(t){return this.f8k(this.y7g(t),t)},Pr(K$).y7g=function(t){var n=this.x7g(t)-2451545,i=Uh().p5t(280.46+.9856474*n),e=Uh().l5t(Uh().p5t(357.528+.9856003*n)),r=2*e,s=i+1.915*Math.sin(e)+.02*Math.sin(r),o=Uh().l5t(s),u=Uh().l5t(23.439-4e-7*n),a=Uh(),h=Math.sin(u)*Math.sin(o),_=Math.asin(h),l=a.i59(_),c=Uh(),f=Math.cos(u)*Math.tan(o),v=Math.atan(f),d=c.i59(v);return s>=90&&s<270&&(d=Hh(d,Uh().m58_1)),new G$(l,function(t){var n;if(0<=t&&t<=360)n=t;else{var i=Uh(),e=Uh().p5t(t);n=i.d5d(e)}return n}(d))},Pr(K$).f8k=function(t,n){var i=this.x7g(n)-2451545,e=Uh().p5t(280.46061837+360.98564736629*i),r=-Uh().p5t(e-t.a7h_1),s=Zh(Uh().d5d(r));return new $_(t.z7g_1,s)},Pr(K$).x7g=function(t){var n=Wu(t,ns().r3k_1),i=n.g3k(),e=n.h3k()+1|0,r=n.i3k(),s=(n.j3l()+n.k3l()/60+n.l3l()/3600)/24;e<=2&&(i=i-1|0,e=e+12|0);var o=i/100,u=Math.floor(o),a=u/4,h=2-u+Math.floor(a),_=365.25*(i+4716|0),l=30.6001*(e+1|0);return Math.floor(_)+Math.floor(l)+r+h-1524.5+s},Pr(X$).r7a=function(t,n,i){var e=(n-i)/t,r=Math.floor(e),s=ks(r);return n-i==180&&(s=s-1|0),s},Pr(X$).t7a=function(t,n,i){var e=(n-i)/t,r=Math.floor(e),s=ks(r);return n-i==360&&(s=s-1|0),s},Pr(X$).s7a=function(t,n,i){var e=(n-i)/t-1,r=Math.ceil(e),s=ks(r);return n-ii*n*t.r5a_1},Pr(J$).a6i=function(t){var n=this.p6f_1.r7b();if(null==n)return[];var i=n,e=this.r6e_1.o5p_1,r=this.r6e_1.q5p_1,s=this.r6e_1.l5u(),o=this.r6e_1.m5u(),u=this.r6e_1.p5p_1,a=this.r6e_1.r5p_1,h=Tr(2,this.q6f_1),_=Tr(2,this.r6f_1),l=new K_(e,s,r,o),c=t.q6g(l,i,h,_);h=Tr(2,this.q6f_1),_=Tr(2,this.r6f_1)+1|0,l=new K_(e,s,o,a);var f=t.q6g(l,i,h,_);h=Tr(2,this.q6f_1)+1|0,_=Tr(2,this.r6f_1),l=new K_(s,u,r,o);var v=t.q6g(l,i,h,_);return h=Tr(2,this.q6f_1)+1|0,_=Tr(2,this.r6f_1)+1|0,l=new K_(s,u,o,a),[c,f,v,t.q6g(l,i,h,_)]},Pr(J$).j6h=function(t,n,i){var e,r=n.o2(this.s6f_1);if(null==r){var s=this.a6i(t);n.f5t(this.s6f_1,s,i),e=s}else e=r;return e},Pr(ny).l8k=function(t,n){var i=this.h8k_1<0?2:1;if(0===t)return this.j8k_1+this.k8k_1;if(n<0&&t>0){var e=t-this.k8k_1.length|0;return e=0){this.b8l_1=this.b8l_1-1|0;var e=this.e8l_1;this.e8l_1=e+1|0,new qy(this,e).p8l()}else this.d8l_1.p5(n)}return this},Pr(Ty).se=function(){this.b8l_1>=this.z8k_1.length&&this.f8l("unexpected end of string inside format specification");var t=this.b8l_1;return this.b8l_1=t+1|0,Hs(this.z8k_1,t)},Pr(Ty).f8l=function(t){throw is("bad format: "+t+" at ofset "+(this.b8l_1-1|0)+' of "'+this.z8k_1+'"')},Pr(Ty).toString=function(){return this.d8l_1.toString()},Pr(Ty).m8l=function(t){return this.s8l(t)},Pr(Ty).l8l=function(t){return Gr(os(this.a8l_1[t]))},Pr(Ty).n8l=function(t){return this.s8l(t).la_1},Pr(Ty).o8l=function(t){this.d8l_1.o5(t),this.c8l_1=-1},Pr(Ty).g8l=function(t){var n=this.s8l(t);return n instanceof la?Wu(n,ns().o3l()):n instanceof _a?n:n instanceof ha?aa(n,0,0,0):Wu(function(t){if(!(t instanceof Date))throw is("Can't convert to LocalDateTime: "+Gr(t));return Vr().w3k(Us(t.getTime()))}(n),ns().o3l())},Pr(Ty).s8l=function(t){var n=os(this.a8l_1[t]);return null!=n?n:Nr()},Pr(Ty).q8l=function(){this.e8l_1=this.e8l_1-1|0},Pr(Iy).w8i=function(t){return(null==Xi&&new jy,Xi).w8i(t)},Pr(Iy).k85=function(){return Ky().k85()},Pr(Iy).n8i=function(t,n,i,e){(t instanceof Xy?t:Nr()).c8n(n,i,e)},Pr(Iy).o8i=function(t,n,i){(t instanceof Xy?t:Nr()).d8n(n,i)},Pr(Iy).u8i=function(t,n,i,e){(t instanceof Xy?t:Nr()).e8n(n,i,e)},Pr(Iy).p8i=function(t,n){(t instanceof Xy?t:Nr()).f8n(n)},Pr(Iy).q8i=function(t){(t instanceof Xy?t:Nr()).g8n()},Pr(Iy).s8i=function(t){(t instanceof Xy?t:Nr()).h8n()},Pr(Iy).t8i=function(t){(t instanceof Xy?t:Nr()).i8n()},Pr(Dy).e8i=function(t){},Pr(Dy).f8i=function(t){},Pr(Dy).g8i=function(t){},Pr(Dy).h8i=function(){},Pr(Dy).i8i=function(t){},Pr(Dy).j8i=function(t,n,i,e){},Pr(Dy).k8i=function(t,n){},Pr(Dy).a8i=function(t,n){},Pr(Dy).y8h=function(t,n){},Pr(Dy).l8i=function(t){},Pr(Dy).c8i=function(t,n){},Pr(Dy).d8g=function(t,n,i,e,r){},Pr(jy).w8i=function(t){return 0===t?"no error":t>=100900&&t<=100904?this.t8l_1[t-100900|0]:t>=100151&&t<=100158?this.t8l_1[t-100150|0]:null},Pr(Ry).s8n=function(t,n){return new Py(new Ly,t,n)},Pr(Ry).t8n=function(t){},Pr(Ry).u8n=function(t,n){return this.y8n(t,t.v8n_1,n)},Pr(Ry).y8n=function(t,n,i){var e=n;do{e=e.b8o_1}while(null!=e.z8n_1&&!t.x8n_1.c8o(t.w8n_1,e.z8n_1,i));var r=new Ly(i);r.b8o_1=e,r.a8o_1=e.a8o_1;var s=r;return e.a8o_1.b8o_1=s,e.a8o_1=s,s},Pr(Ry).d8o=function(t){return t.z8n_1},Pr(Ry).e8o=function(t){return t.a8o_1},Pr(Ry).f8o=function(t){return t.b8o_1},Pr(Ry).g8o=function(t){return t.v8n_1.a8o_1},Pr(Ry).h8o=function(t){t.a8o_1.b8o_1=t.b8o_1,t.b8o_1.a8o_1=t.a8o_1},Pr(Ry).i8o=function(t,n){var i=t.v8n_1;do{i=i.a8o_1}while(null!=i.z8n_1&&!t.x8n_1.c8o(t.w8n_1,n,i.z8n_1));return i},Pr(Gy).k85=function(){return new Xy},Pr(Xy).c8n=function(t,n,i){this.a8m_1[0]=t,this.a8m_1[1]=n,this.a8m_1[2]=i},Pr(Xy).d8n=function(t,n){100100===t?this.q8m_1=null==n?Ky().w8l_1:n:100106===t?this.w8m_1=null==n?Ky().w8l_1:n:100104===t?(this.r8m_1=null==n?Ky().w8l_1:n,this.j8m_1=!(null==n)):100110===t?(this.q8m_1=null==n?Ky().w8l_1:n,this.x8m_1=this.q8m_1,this.j8m_1=!(null==n)):100101===t?this.s8m_1=null==n?Ky().w8l_1:n:100107===t?this.y8m_1=null==n?Ky().w8l_1:n:100102===t?this.t8m_1=null==n?Ky().w8l_1:n:100108===t?this.z8m_1=null==n?Ky().w8l_1:n:100103===t?this.u8m_1=null==n?Ky().w8l_1:n:100109===t?this.a8n_1=null==n?Ky().w8l_1:n:100105===t?this.v8m_1=null==n?Ky().w8l_1:n:100111===t?this.b8n_1=null==n?Ky().w8l_1:n:this.e8p(100900)},Pr(Xy).e8n=function(t,n,i){var e=!1,r=new Float64Array(3);if(By(this,2),this.m8m_1){if(!Wy(this))return this.e8p(100902),Xr;this.y8l_1=null}for(var s=0;s<3;){var o=t[s+n|0];o<-1e150&&(o=-1e150,e=!0),o>1e150&&(o=1e150,e=!0),r[s]=o,s=s+1|0}if(e&&this.e8p(100155),null==this.z8l_1){if(this.n8m_1<100)return function(t,n,i){var e=t.o8m_1[t.n8m_1];e.r8n_1=i,e.q8n_1[0]=n[0],e.q8n_1[1]=n[1],e.q8n_1[2]=n[2],t.n8m_1=t.n8m_1+1|0}(this,r,i),Xr;if(!Wy(this))return this.e8p(100902),Xr}Yy(this,r,i)||this.e8p(100902)},Pr(Xy).f8n=function(t){By(this,0),this.x8l_1=1,this.n8m_1=0,this.m8m_1=!1,this.z8l_1=null,this.p8m_1=t},Pr(Xy).g8n=function(){By(this,1),this.x8l_1=2,this.y8l_1=null,this.n8m_1>0&&(this.m8m_1=!0)},Pr(Xy).h8n=function(){By(this,2),this.x8l_1=1},Pr(Xy).i8n=function(){try{if(By(this,1),this.x8l_1=0,null==this.z8l_1){if(!this.j8m_1&&kk().w8p(this))return this.p8m_1=null,Xr;if(!Wy(this))throw ca()}if((null==ne&&new nk,ne).b8q(this),!re.e8q(this))throw ca();var t=os(this.z8l_1);if(!this.f8m_1){if(!(this.k8m_1?se.g8q(t,1,!0):se.f8q(t)))throw ca();te.h8q(t),this.q8m_1===Ky().w8l_1&&this.t8m_1===Ky().w8l_1&&this.s8m_1===Ky().w8l_1&&this.r8m_1===Ky().w8l_1&&this.w8m_1===Ky().w8l_1&&this.z8m_1===Ky().w8l_1&&this.y8m_1===Ky().w8l_1&&this.x8m_1===Ky().w8l_1||(this.k8m_1?kk().j8q(this,t):kk().i8q(this,t))}te.d8p(t),this.p8m_1=null}catch(t){if(!(t instanceof $s))throw t;fa(t),this.e8p(100902)}},Pr(Xy).k8q=function(t){this.w8m_1!==Ky().w8l_1?this.w8m_1.k8i(t,os(this.p8m_1)):this.q8m_1.e8i(t)},Pr(Xy).l8q=function(t){this.y8m_1!==Ky().w8l_1?this.y8m_1.y8h(t,os(this.p8m_1)):this.s8m_1.g8i(t)},Pr(Xy).m8q=function(t){this.x8m_1!==Ky().w8l_1?this.x8m_1.a8i(t,os(this.p8m_1)):this.r8m_1.f8i(t)},Pr(Xy).n8q=function(){this.z8m_1!==Ky().w8l_1?this.z8m_1.l8i(os(this.p8m_1)):this.t8m_1.h8i()},Pr(Xy).o8q=function(t,n,i,e){this.b8n_1!==Ky().w8l_1?this.b8n_1.d8g(t,n,i,e,os(this.p8m_1)):this.v8m_1.j8i(t,n,i,e)},Pr(Xy).e8p=function(t){this.a8n_1!==Ky().w8l_1?this.a8n_1.c8i(t,os(this.p8m_1)):this.u8m_1.i8i(t)},Pr(Zy).p8q=function(t,n,i){var e=n.n8p_1-t.n8p_1,r=i.n8p_1-n.n8p_1;return e+r>0?e0?(n.o8p_1-i.o8p_1)*e+(n.o8p_1-t.o8p_1)*r:0},Pr(Zy).r8q=function(t,n,i){var e=n.o8p_1-t.o8p_1,r=i.o8p_1-n.o8p_1;return e+r>0?e0?(n.n8p_1-i.n8p_1)*e+(n.n8p_1-t.n8p_1)*r:0},Pr(Zy).t8q=function(t,n,i,e){var r=t<0?0:t,s=i<0?0:i;return r<=s?0===s?(n+e)/2:n+r/(r+s)*(e-n):e+s/(r+s)*(n-e)},Pr(Zy).u8q=function(t,n,i,e,r){var s=t,o=n,u=i,a=e;if(!this.v8q(s,o)){var h=s;s=o,o=h}if(!this.v8q(u,a)){var _=u;u=a,a=_}if(!this.v8q(s,u)){var l=s;s=u,u=l,l=o,o=a,a=l}if(this.v8q(u,o))if(this.v8q(o,a)){var c=this.p8q(s,u,o),f=this.p8q(u,o,a);c+f<0&&(c=-c,f=-f),r.n8p_1=this.t8q(c,u.n8p_1,f,o.n8p_1)}else{var v=this.q8q(s,u,o),d=-this.q8q(s,a,o);v+d<0&&(v=-v,d=-d),r.n8p_1=this.t8q(v,u.n8p_1,d,a.n8p_1)}else r.n8p_1=(u.n8p_1+o.n8p_1)/2;if(!this.w8q(s,o)){var w=s;s=o,o=w}if(!this.w8q(u,a)){var p=u;u=a,a=p}if(!this.w8q(s,u)){var m=u;u=s,s=m,m=a,a=o,o=m}if(this.w8q(u,o))if(this.w8q(o,a)){var g=this.r8q(s,u,o),b=this.r8q(u,o,a);g+b<0&&(g=-g,b=-b),r.o8p_1=this.t8q(g,u.o8p_1,b,o.o8p_1)}else{var $=this.s8q(s,u,o),y=-this.s8q(s,a,o);$+y<0&&($=-$,y=-y),r.o8p_1=this.t8q($,u.o8p_1,y,a.o8p_1)}else r.o8p_1=(u.o8p_1+o.o8p_1)/2},Pr(Zy).x8q=function(t,n){return t.n8p_1===n.n8p_1&&t.o8p_1===n.o8p_1},Pr(Zy).v8q=function(t,n){return t.n8p_1Math.abs(r)&&(n=1);var s=t[2],o=Math.abs(s),u=t[n];return o>Math.abs(u)&&(n=2),n},Pr(nk).n8r=function(t,n){var i=t.z8l_1,e=os(null==i?null:i.z8o_1),r=new Float64Array(3),s=new Float64Array(3),o=hs(Array(3),null),u=hs(Array(3),null),a=new Float64Array(3),h=new Float64Array(3),_=new Float64Array(3);r[2]=-2e150,r[1]=r[2],r[0]=r[1],s[2]=2e150,s[1]=s[2],s[0]=s[1];for(var l=os(e.i8p_1);l!==e;){for(var c=0;c<3;){var f=l.m8p_1[c];fr[c]&&(r[c]=f,u[c]=l),c=c+1|0}l=os(l.i8p_1)}var v=0;if(r[1]-s[1]>r[0]-s[0]&&(v=1),r[2]-s[2]>r[v]-s[v]&&(v=2),s[v]>=r[v])return n[0]=0,n[1]=0,n[2]=1,Xr;var d=0,w=os(o[v]),p=os(u[v]);for(a[0]=w.m8p_1[0]-p.m8p_1[0],a[1]=w.m8p_1[1]-p.m8p_1[1],a[2]=w.m8p_1[2]-p.m8p_1[2],l=os(e.i8p_1);l!==e;){h[0]=l.m8p_1[0]-p.m8p_1[0],h[1]=l.m8p_1[1]-p.m8p_1[1],h[2]=l.m8p_1[2]-p.m8p_1[2],_[0]=a[1]*h[2]-a[2]*h[1],_[1]=a[2]*h[0]-a[0]*h[2],_[2]=a[0]*h[1]-a[1]*h[0];var m=_[0]*_[0]+_[1]*_[1]+_[2]*_[2];m>d&&(d=m,n[0]=_[0],n[1]=_[1],n[2]=_[2]),l=os(l.i8p_1)}d<=0&&(n[2]=0,n[1]=n[2],n[0]=n[1],n[this.m8r(a)]=1)},Pr(nk).o8r=function(t){for(var n=t.z8l_1,i=os(null==n?null:n.a8p_1),e=t.z8l_1,r=os(null==e?null:e.z8o_1),s=0,o=os(i.j8o_1);o!==i;){var u=os(o.l8o_1);if(u.y8o_1<=0)o=os(o.j8o_1);else{do{s+=(os(u.v8o_1).n8p_1-os(os(u.s8o_1).v8o_1).n8p_1)*(os(u.v8o_1).o8p_1+os(os(u.s8o_1).v8o_1).o8p_1),u=os(u.u8o_1)}while(u!==o.l8o_1);o=os(o.j8o_1)}}if(s<0){for(var a=os(r.i8p_1);a!==r;)a.o8p_1=-a.o8p_1,a=os(a.i8p_1);t.c8m_1[0]=-t.c8m_1[0],t.c8m_1[1]=-t.c8m_1[1],t.c8m_1[2]=-t.c8m_1[2]}},Pr(nk).b8q=function(t){var n=t.z8l_1,i=os(null==n?null:n.z8o_1),e=new Float64Array(3),r=!1;e[0]=t.a8m_1[0],e[1]=t.a8m_1[1],e[2]=t.a8m_1[2],0===e[0]&&0===e[1]&&0===e[2]&&(this.n8r(t,e),r=!0);var s=t.b8m_1,o=t.c8m_1,u=this.m8r(e);s[u]=0,s[(u+1|0)%3|0]=this.y8p_1,s[(u+2|0)%3|0]=this.z8p_1,o[u]=0,o[(u+1|0)%3|0]=e[u]>0?-this.z8p_1:this.z8p_1,o[(u+2|0)%3|0]=e[u]>0?this.y8p_1:-this.y8p_1;for(var a=os(i.i8p_1);a!==i;)a.n8p_1=tk(0,a.m8p_1,s),a.o8p_1=tk(0,a.m8p_1,o),a=os(a.i8p_1);r&&this.o8r(t)},Pr(rk).t8r=function(t,n){var i=Qi,e=t instanceof Jy?t:Nr();return i.v8q(e,n instanceof Jy?n:Nr())},Pr(rk).u8r=function(){return new lk},Pr(ok).v8r=function(){this.c8s_1=[],this.b8s_1=[]},Pr(ok).h8s=function(t){var n=t,i=this.b8s_1,e=this.c8s_1,r=i[n].p8r_1;t:for(;;){var s=n<<1;sthis.d8s_1||ie.t8r(os(e[r].q8r_1),os(e[o].q8r_1))){i[n].p8r_1=r,e[r].r8r_1=n;break t}i[n].p8r_1=o,e[o].r8r_1=n,n=s}},Pr(ok).i8s=function(t){var n=t,i=this.b8s_1,e=this.c8s_1,r=i[n].p8r_1;t:for(;;){var s=n>>1,o=i[s].p8r_1;if(0===s||ie.t8r(os(e[o].q8r_1),os(e[r].q8r_1))){i[n].p8r_1=r,e[r].r8r_1=n;break t}i[n].p8r_1=o,e[o].r8r_1=n,n=s}},Pr(ok).w8r=function(){for(var t=this.d8s_1;t>=1;)this.h8s(t),t=t-1|0;return this.g8s_1=!0,!0},Pr(ok).x8r=function(t){var n;this.d8s_1=this.d8s_1+1|0;var i=this.d8s_1;if(Tr(i,2)>this.e8s_1){this.e8s_1=this.e8s_1<<1;for(var e=0,r=this.e8s_1+1|0,s=hs(Array(r),null);e0&&(t[1].p8r_1=t[this.d8s_1].p8r_1,n[t[1].p8r_1].r8r_1=1,n[i].q8r_1=null,n[i].r8r_1=this.f8s_1,this.f8s_1=i,this.d8s_1=this.d8s_1-1|0,this.d8s_1>0&&this.h8s(1)),e},Pr(ok).z8r=function(t){var n=this.b8s_1,i=this.c8s_1,e=i[t].r8r_1;n[e].p8r_1=n[this.d8s_1].p8r_1,i[n[e].p8r_1].r8r_1=e,this.d8s_1=this.d8s_1-1|0,e<=this.d8s_1&&(e<=1||ie.t8r(os(i[n[e>>1].p8r_1].q8r_1),os(i[n[e].p8r_1].q8r_1))?this.h8s(e):this.i8s(e)),i[t].q8r_1=null,i[t].r8r_1=this.f8s_1,this.f8s_1=t},Pr(ok).a8s=function(){return this.c8s_1[this.b8s_1[1].p8r_1].q8r_1},Pr(ok).j8s=function(){return 0===this.d8s_1},Pr(lk).v8r=function(){this.m8s_1.v8r(),this.o8s_1=null,this.n8s_1=null},Pr(lk).w8r=function(){var t=hs(Array(50),null),n=0,i=t.length-1|0;if(n<=i)do{var e=n;n=n+1|0,t[e]=new hk}while(n<=i);var r=0,s=2016473283;this.o8s_1=new Int32Array(this.p8s_1+1|0);for(var o=0,u=this.p8s_1-1|0,a=0,h=o;h<=u;)os(this.o8s_1)[h]=a,a=a+1|0,h=h+1|0;var _=t[r];null!=_&&(_.k8s_1=o);var l,c,f=t[r];for(null!=f&&(f.l8s_1=u),r=r+1|0;(r=r-1|0)>=0;){for(o=os(t[r]).k8s_1,u=os(t[r]).l8s_1;u>(o+10|0);){h=o+((s=Fs(Tr(s,1539415821)+1|0))%(1+(u-o|0)|0)|0)|0,a=os(this.o8s_1)[h],os(this.o8s_1)[h]=os(this.o8s_1)[o],os(this.o8s_1)[o]=a,h=o-1|0;var v=u+1|0;do{do{h=h+1|0}while(l=os(os(this.n8s_1)[os(this.o8s_1)[h]]),c=os(os(this.n8s_1)[a]),!ie.t8r(l,c));do{v=v-1|0}while(uk(0,os(os(this.n8s_1)[os(this.o8s_1)[v]]),os(os(this.n8s_1)[a])));ak(0,os(this.o8s_1),h,v)}while(ho&&uk(0,os(os(this.n8s_1)[os(this.o8s_1)[g-1|0]]),os(os(this.n8s_1)[a]));)os(this.o8s_1)[g]=os(this.o8s_1)[g-1|0],g=g-1|0;os(this.o8s_1)[g]=a,h=h+1|0}}return this.q8s_1=this.p8s_1,this.r8s_1=!0,this.m8s_1.w8r(),!0},Pr(lk).x8r=function(t){if(this.r8s_1)return this.m8s_1.x8r(t);var n=this.p8s_1;if(this.p8s_1=this.p8s_1+1|0,this.p8s_1>=this.q8s_1){this.q8s_1=this.q8s_1<<1;var i=this.q8s_1,e=hs(Array(i),null),r=this.n8s_1;if(null==r);else{var s=r.length;ps(r,e,0,0,s)}this.n8s_1=e}return os(this.n8s_1)[n]=t,0|-(n+1|0)},Pr(lk).y8r=function(){if(0===this.p8s_1)return this.m8s_1.y8r();var t=os(os(this.n8s_1)[os(this.o8s_1)[this.p8s_1-1|0]]);if(!this.m8s_1.j8s()){var n=os(this.m8s_1.a8s());if(ie.t8r(n,t))return this.m8s_1.y8r()}do{this.p8s_1=this.p8s_1-1|0}while(this.p8s_1>0&&null==os(this.n8s_1)[os(this.o8s_1)[this.p8s_1-1|0]]);return t},Pr(lk).a8s=function(){if(0===this.p8s_1)return this.m8s_1.a8s();var t=os(os(this.n8s_1)[os(this.o8s_1)[this.p8s_1-1|0]]);if(!this.m8s_1.j8s()){var n=os(this.m8s_1.a8s());if(ie.t8r(n,t))return n}return t},Pr(lk).z8r=function(t){var n=t;if(n>=0)return this.m8s_1.z8r(n),Xr;for(n=0|-(n+1|0),os(this.n8s_1)[n]=null;this.p8s_1>0&&null==os(this.n8s_1)[os(this.o8s_1)[this.p8s_1-1|0]];)this.p8s_1=this.p8s_1-1|0},Pr(gk).v8s=function(t,n,i){t.l8m_1=dk(kk(),os(n.w8o_1),t.l8m_1)},Pr(bk).v8s=function(t,n,i){var e=n,r=i;t.k8q(cr);var s=e.v8o_1;t.l8q(os(null==s?null:s.l8p_1));var o=e.s8o_1,u=null==o?null:o.v8o_1;for(t.l8q(os(null==u?null:u.l8p_1));!vk(kk(),os(e.w8o_1));){var a=e.w8o_1;null!=a&&(a.o8o_1=!0),r=r.hb();var h=(e=os(e.t8o_1)).s8o_1,_=null==h?null:h.v8o_1;t.l8q(os(null==_?null:_.l8p_1))}t.n8q()},Pr($k).v8s=function(t,n,i){var e=n,r=i;t.k8q(Lk());var s=e.v8o_1;t.l8q(os(null==s?null:s.l8p_1));var o=e.s8o_1,u=null==o?null:o.v8o_1;t.l8q(os(null==u?null:u.l8p_1));t:for(;!vk(kk(),os(e.w8o_1));){var a=e.w8o_1;null!=a&&(a.o8o_1=!0),r=r.hb();var h=e.u8o_1,_=(e=os(null==h?null:h.s8o_1)).v8o_1;if(t.l8q(os(null==_?null:_.l8p_1)),vk(kk(),os(e.w8o_1)))break t;var l=e.w8o_1;null!=l&&(l.o8o_1=!0),r=r.hb();var c=(e=os(e.t8o_1)).s8o_1,f=null==c?null:c.v8o_1;t.l8q(os(null==f?null:f.l8p_1))}t.n8q()},Pr(yk).i8q=function(t,n){t.l8m_1=null;for(var i=os(n.a8p_1.j8o_1);i!==n.a8p_1;)i.o8o_1=!1,i=os(i.j8o_1);for(i=os(n.a8p_1.j8o_1);i!==n.a8p_1;)i.p8o_1&&!i.o8o_1&&this.w8s(t,i),i=os(i.j8o_1);null!=t.l8m_1&&(this.x8s(t,t.l8m_1),t.l8m_1=null)},Pr(yk).w8s=function(t,n){var i=os(n.l8o_1),e=ck();if(e.s8s_1=new Hr(1,0),e.t8s_1=i,e.u8s_1=this.u8p_1,!t.j8m_1){var r=this.y8s(i);r.s8s_1.z9(e.s8s_1)>0&&(e=r),(r=this.y8s(os(i.u8o_1))).s8s_1.z9(e.s8s_1)>0&&(e=r);var s=i.t8o_1;(r=this.y8s(os(null==s?null:s.s8o_1))).s8s_1.z9(e.s8s_1)>0&&(e=r),(r=this.z8s(i)).s8s_1.z9(e.s8s_1)>0&&(e=r),(r=this.z8s(os(i.u8o_1))).s8s_1.z9(e.s8s_1)>0&&(e=r);var o=i.t8o_1;(r=this.z8s(os(null==o?null:o.s8o_1))).s8s_1.z9(e.s8s_1)>0&&(e=r)}var u=e.u8s_1;null==u||u.v8s(t,os(e.t8s_1),e.s8s_1)},Pr(yk).y8s=function(t){for(var n=fk(new Hr(0,0),null,this.s8p_1),i=null,e=t;!vk(0,os(e.w8o_1));)i=dk(0,os(e.w8o_1),i),n.s8s_1=n.s8s_1.gb(),e=os(e.t8o_1);e=t;t:for(;;){var r=e.s8o_1;if(vk(0,os(null==r?null:r.w8o_1)))break t;var s=e.s8o_1;i=dk(0,os(null==s?null:s.w8o_1),i),n.s8s_1=n.s8s_1.gb();var o=e.s8o_1;e=os(null==o?null:o.u8o_1)}return n.t8s_1=e,wk(0,i),n},Pr(yk).z8s=function(t){var n=fk(new Hr(0,0),null,this.t8p_1),i=new Hr(0,0),e=new Hr(0,0),r=null,s=t;t:for(;!vk(0,os(s.w8o_1));){r=dk(0,os(s.w8o_1),r),e=e.gb();var o=s.u8o_1;if(s=os(null==o?null:o.s8o_1),vk(0,os(s.w8o_1)))break t;r=dk(0,os(s.w8o_1),r),e=e.gb(),s=os(s.t8o_1)}var u=s;s=t;t:for(;;){var a=s.s8o_1;if(vk(0,os(null==a?null:a.w8o_1)))break t;var h=s.s8o_1;r=dk(0,os(null==h?null:h.w8o_1),r),i=i.gb();var _=s.s8o_1,l=(s=os(null==_?null:_.u8o_1)).s8o_1;if(vk(0,os(null==l?null:l.w8o_1)))break t;var c=s.s8o_1;r=dk(0,os(null==c?null:c.w8o_1),r),i=i.gb();var f=s.s8o_1,v=null==f?null:f.t8o_1;s=os(null==v?null:v.s8o_1)}var d=s;return n.s8s_1=e.db(i),pk(0,e)?n.t8s_1=u.s8o_1:pk(0,i)?n.t8s_1=d:(n.s8s_1=n.s8s_1.hb(),n.t8s_1=d.t8o_1),wk(0,r),n},Pr(yk).x8s=function(t,n){var i=n,e=-1;for(t.k8q(Bk());null!=i;){var r=os(i.l8o_1);do{if(t.j8m_1){var s=os(os(r.s8o_1).w8o_1).p8o_1?0:1;e!==s&&(e=s,t.m8q(!(0===e)))}var o=r.v8o_1;t.l8q(os(null==o?null:o.l8p_1)),r=os(r.u8o_1)}while(r!==i.l8o_1);i=i.n8o_1}t.n8q()},Pr(yk).j8q=function(t,n){for(var i=os(n.a8p_1.j8o_1);i!==n.a8p_1;){if(i.p8o_1){t.k8q(Uk());var e=os(i.l8o_1);do{var r=e.v8o_1;t.l8q(os(null==r?null:r.l8p_1)),e=os(e.u8o_1)}while(e!==i.l8o_1);t.n8q()}i=os(i.j8o_1)}},Pr(yk).a8t=function(t,n,i){var e=t.o8m_1,r=t.n8m_1,s=new Float64Array(3),o=0;i||(n[2]=0,n[1]=n[2],n[0]=n[1]);for(var u=1,a=e[u].q8n_1[0]-e[0].q8n_1[0],h=e[u].q8n_1[1]-e[0].q8n_1[1],_=e[u].q8n_1[2]-e[0].q8n_1[2];(u=u+1|0)0){if(o<0)return 2;d=1}else{if(o>0)return 2;d=-1}o=d}}else v>=0?(n[0]=n[0]+s[0],n[1]=n[1]+s[1],n[2]=n[2]+s[2]):(n[0]=n[0]-s[0],n[1]=n[1]-s[1],n[2]=n[2]-s[2])}return o},Pr(yk).w8p=function(t){t.o8m_1,t.n8m_1;var n=new Float64Array(3);if(t.n8m_1<3)return!0;n[0]=t.a8m_1[0],n[1]=t.a8m_1[1],n[2]=t.a8m_1[2],0===n[0]&&0===n[1]&&0===n[2]&&this.a8t(t,n,!1);var i=this.a8t(t,n,!0);return 2!==i&&(0===i||!1)},Pr(Ck).c8o=function(t,n,i){var e=re,r=n instanceof My?n:Nr();return e.c8t(this.b8t_1,r,i instanceof My?i:Nr())},Pr(qk).c8t=function(t,n,i){var e=os(t.i8m_1),r=n.j8n_1,s=i.j8n_1,o=r.s8o_1;if((null==o?null:o.v8o_1)===e){var u,a=s.s8o_1;if((null==a?null:a.v8o_1)===e){var h;if(Qi.v8q(os(r.v8o_1),os(s.v8o_1))){var _=Qi,l=s.s8o_1;h=_.q8q(os(null==l?null:l.v8o_1),os(r.v8o_1),os(s.v8o_1))<=0}else{var c=Qi,f=r.s8o_1;h=c.q8q(os(null==f?null:f.v8o_1),os(s.v8o_1),os(r.v8o_1))>=0}u=h}else{var v=Qi,d=s.s8o_1;u=v.q8q(os(null==d?null:d.v8o_1),e,os(s.v8o_1))<=0}return u}var w=s.s8o_1;if((null==w?null:w.v8o_1)===e){var p=Qi,m=r.s8o_1;return p.q8q(os(null==m?null:m.v8o_1),e,os(r.v8o_1))>=0}var g=Qi,b=r.s8o_1,$=g.p8q(os(null==b?null:b.v8o_1),e,os(r.v8o_1)),y=Qi,k=s.s8o_1;return $>=y.p8q(os(null==k?null:k.v8o_1),e,os(s.v8o_1))},Pr(qk).d8t=function(t){t.j8n_1.x8o_1=null,Ji.h8o(os(t.k8n_1))},Pr(qk).e8t=function(t,n){return!!te.i8r(t.j8n_1)&&(t.p8n_1=!1,t.j8n_1=n,n.x8o_1=t,!0)},Pr(qk).f8t=function(t){var n=t,i=n.j8n_1.v8o_1;do{n=os(Ek(0,n))}while(n.j8n_1.v8o_1===i);if(n.p8n_1){var e=te.k8r(os(Sk(0,n).j8n_1.s8o_1),os(n.j8n_1.u8o_1));if(!this.e8t(n,e))return null;n=os(Ek(0,n))}return n},Pr(qk).g8t=function(t){var n=t,i=n.j8n_1.s8o_1,e=null==i?null:i.v8o_1;do{var r=(n=os(Ek(0,n))).j8n_1.s8o_1}while((null==r?null:r.v8o_1)===e);return n},Pr(qk).h8t=function(t,n,i){var e=new My(i);return e.k8n_1=Ji.y8n(os(t.g8m_1),os(n.k8n_1),e),e.p8n_1=!1,e.n8n_1=!1,e.o8n_1=!1,i.x8o_1=e,e},Pr(qk).i8t=function(t,n){var i=t.e8m_1;if(100130===i)return!(0==(1&n));if(100131===i)return!(0===n);if(100132===i)return n>0;if(100133===i)return n<0;if(100134===i)return n>=2||n<=-2;throw ca()},Pr(qk).j8t=function(t,n){n.l8n_1=os(Ek(0,n)).l8n_1+n.j8n_1.y8o_1|0,n.m8n_1=this.i8t(t,n.l8n_1)},Pr(qk).k8t=function(t){var n=t.j8n_1,i=os(n.w8o_1);i.p8o_1=t.m8n_1,i.l8o_1=n,this.d8t(t)},Pr(qk).l8t=function(t,n){var i=t,e=t.j8n_1;t:for(;i!==n;){i.p8n_1=!1;var r=Sk(0,i),s=r.j8n_1;if(s.v8o_1!==e.v8o_1){if(!r.p8n_1){this.k8t(i);break t}var o=te,u=e.t8o_1;if(s=o.k8r(os(null==u?null:u.s8o_1),os(s.s8o_1)),!this.e8t(r,s))throw ca()}if(e.t8o_1!==s){var a=te,h=s.s8o_1;if(!a.h8p(os(null==h?null:h.u8o_1),s))throw ca();if(!te.h8p(e,s))throw ca()}this.k8t(i),e=r.j8n_1,i=r}return e},Pr(qk).m8t=function(t,n,i,e,r,s){var o=r,u=!0,a=i;do{this.h8t(t,n,os(a.s8o_1)),a=os(a.t8o_1)}while(a!==e);if(null==o){var h=Sk(0,n).j8n_1.s8o_1;o=null==h?null:h.t8o_1}for(var _,l=n,c=os(o);_=Sk(0,l),(a=os(_.j8n_1.s8o_1)).v8o_1===c.v8o_1;){if(a.t8o_1!==c){var f=te,v=a.s8o_1;if(!f.h8p(os(null==v?null:v.u8o_1),a))throw ca();var d=te,w=c.s8o_1;if(!d.h8p(os(null==w?null:w.u8o_1),a))throw ca()}if(_.l8n_1=l.l8n_1-a.y8o_1|0,_.m8n_1=this.i8t(t,_.l8n_1),l.o8n_1=!0,!u&&this.n8t(t,l)&&(xk(0,a,c),this.d8t(l),!te.i8r(c)))throw ca();u=!1,l=_,c=a}l.o8n_1=!0,s&&this.o8t(t,l)},Pr(qk).p8t=function(t,n,i,e,r){var s=new Float64Array(3);s[0]=n.m8p_1[0],s[1]=n.m8p_1[1],s[2]=n.m8p_1[2];var o=hs(Array(1),null);t.o8q(s,i,e,o),n.l8p_1=o[0],null==n.l8p_1&&(r?t.f8m_1||(t.e8p(100156),t.f8m_1=!0):n.l8p_1=i[0])},Pr(qk).q8t=function(t,n,i){var e=hs(Array(4),null),r=new Float32Array([.5,.5,0,0]),s=n.v8o_1;e[0]=null==s?null:s.l8p_1;var o=i.v8o_1;if(e[1]=null==o?null:o.l8p_1,this.p8t(t,os(n.v8o_1),e,r,!1),!te.h8p(n,i))throw ca()},Pr(qk).r8t=function(t,n,i,e){var r=Qi.a8r(n,t),s=Qi.a8r(i,t);e[0]=.5*s/(r+s),e[1]=.5*r/(r+s);var o=t.m8p_1;o[0]=o[0]+(e[0]*n.m8p_1[0]+e[1]*i.m8p_1[0]);var u=t.m8p_1;u[1]=u[1]+(e[0]*n.m8p_1[1]+e[1]*i.m8p_1[1]);var a=t.m8p_1;a[2]=a[2]+(e[0]*n.m8p_1[2]+e[1]*i.m8p_1[2])},Pr(qk).s8t=function(t,n,i,e,r,s){var o=hs(Array(4),null),u=new Float32Array(4),a=new Float32Array(2),h=new Float32Array(2);o[0]=i.l8p_1,o[1]=e.l8p_1,o[2]=r.l8p_1,o[3]=s.l8p_1,n.m8p_1[2]=0,n.m8p_1[1]=n.m8p_1[2],n.m8p_1[0]=n.m8p_1[1],this.r8t(n,i,e,a),this.r8t(n,r,s,h);var _=a.length;ps(a,u,0,0,_);var l=h.length;ps(h,u,2,0,l),this.p8t(t,n,o,u,!0)},Pr(qk).n8t=function(t,n){var i=Sk(0,n),e=n.j8n_1,r=i.j8n_1;if(Qi.v8q(os(e.v8o_1),os(r.v8o_1))){var s=Qi,o=r.s8o_1;if(s.q8q(os(null==o?null:o.v8o_1),os(e.v8o_1),os(r.v8o_1))>0)return!1;if(Qi.x8q(os(e.v8o_1),os(r.v8o_1))){if(e.v8o_1!==r.v8o_1){var u=t.h8m_1;if(null==u);else{var a=e.v8o_1;u.z8r(os(null==a?null:a.p8p_1))}var h=r.s8o_1;this.q8t(t,os(null==h?null:h.u8o_1),e)}}else{te.f8p(os(r.s8o_1));var _=te,l=r.s8o_1;if(!_.h8p(e,os(null==l?null:l.u8o_1)))throw ca();i.o8n_1=!0,n.o8n_1=i.o8n_1}}else{var c=Qi,f=e.s8o_1;if(c.q8q(os(null==f?null:f.v8o_1),os(r.v8o_1),os(e.v8o_1))<0)return!1;n.o8n_1=!0;var v=Ek(0,n);null!=v&&(v.o8n_1=n.o8n_1),te.f8p(os(e.s8o_1));var d=te,w=r.s8o_1;if(!d.h8p(os(null==w?null:w.u8o_1),e))throw ca()}return!0},Pr(qk).t8t=function(t){var n=Sk(0,t),i=t.j8n_1,e=n.j8n_1,r=Qi,s=i.s8o_1,o=os(null==s?null:s.v8o_1),u=e.s8o_1;if(r.v8q(o,os(null==u?null:u.v8o_1))){var a=Qi,h=i.s8o_1,_=os(null==h?null:h.v8o_1),l=e.s8o_1;if(a.q8q(_,os(null==l?null:l.v8o_1),os(i.v8o_1))<0)return!1;t.o8n_1=!0;var c=Ek(0,t);null!=c&&(c.o8n_1=t.o8n_1);var f=te.f8p(i);if(!te.h8p(os(e.s8o_1),f))throw ca();var v=f.w8o_1;null!=v&&(v.p8o_1=t.m8n_1)}else{var d=Qi,w=e.s8o_1,p=os(null==w?null:w.v8o_1),m=i.s8o_1;if(d.q8q(p,os(null==m?null:m.v8o_1),os(e.v8o_1))>0)return!1;n.o8n_1=!0,t.o8n_1=n.o8n_1;var g=te.f8p(e);if(!te.h8p(os(i.u8o_1),os(e.s8o_1)))throw ca();var b=g.s8o_1,$=null==b?null:b.w8o_1;null!=$&&($.p8o_1=t.m8n_1)}return!0},Pr(qk).u8t=function(t,n){var i=n,e=Sk(0,i),r=i.j8n_1,s=e.j8n_1,o=os(r.v8o_1),u=os(s.v8o_1),a=r.s8o_1,h=os(null==a?null:a.v8o_1),_=s.s8o_1,l=os(null==_?null:_.v8o_1),c=new Jy;if(o===u)return!1;if(Io(o.o8p_1,h.o8p_1)>yo(u.o8p_1,l.o8p_1))return!1;if(Qi.v8q(o,u)){if(Qi.q8q(l,o,u)>0)return!1}else if(Qi.q8q(h,u,o)<0)return!1;Qi.u8q(h,o,l,u,c),Qi.v8q(c,os(t.i8m_1))&&(c.n8p_1=os(t.i8m_1).n8p_1,c.o8p_1=os(t.i8m_1).o8p_1);var f=Qi.v8q(o,u)?o:u;if(Qi.v8q(f,c)&&(c.n8p_1=f.n8p_1,c.o8p_1=f.o8p_1),Qi.x8q(c,o)||Qi.x8q(c,u))return this.n8t(t,i),!1;if(!Qi.x8q(h,os(t.i8m_1))&&Qi.q8q(h,os(t.i8m_1),c)>=0||!Qi.x8q(l,os(t.i8m_1))&&Qi.q8q(l,os(t.i8m_1),c)<=0){if(l===t.i8m_1){if(te.f8p(os(r.s8o_1)),!te.h8p(os(s.s8o_1),r))throw ca();r=Sk(0,i=os(this.f8t(i))).j8n_1,this.l8t(Sk(0,i),e);var v=i,d=r.s8o_1;return this.m8t(t,v,os(null==d?null:d.u8o_1),r,r,!0),!0}if(h===t.i8m_1){te.f8p(os(s.s8o_1));var w=te,p=os(r.u8o_1),m=s.s8o_1;if(!w.h8p(p,os(null==m?null:m.u8o_1)))throw ca();e=i;var g=Sk(0,i=this.g8t(i)).j8n_1.s8o_1,b=null==g?null:g.t8o_1,$=e,y=s.s8o_1;$.j8n_1=os(null==y?null:y.u8o_1),s=this.l8t(e,null);var k=i,x=os(s.t8o_1),S=r.s8o_1;return this.m8t(t,k,x,null==S?null:S.t8o_1,b,!0),!0}if(Qi.q8q(h,os(t.i8m_1),c)>=0){i.o8n_1=!0;var E=Ek(0,i);null!=E&&(E.o8n_1=i.o8n_1),te.f8p(os(r.s8o_1));var C=r.v8o_1;null!=C&&(C.n8p_1=os(t.i8m_1).n8p_1);var q=r.v8o_1;null!=q&&(q.o8p_1=os(t.i8m_1).o8p_1)}if(Qi.q8q(l,os(t.i8m_1),c)<=0){e.o8n_1=!0,i.o8n_1=e.o8n_1,te.f8p(os(s.s8o_1));var O=s.v8o_1;null!=O&&(O.n8p_1=os(t.i8m_1).n8p_1);var z=s.v8o_1;null!=z&&(z.o8p_1=os(t.i8m_1).o8p_1)}return!1}te.f8p(os(r.s8o_1)),te.f8p(os(s.s8o_1));var A=te,T=s.s8o_1;if(!A.h8p(os(null==T?null:T.u8o_1),r))throw ca();var I=r.v8o_1;null!=I&&(I.n8p_1=c.n8p_1);var D=r.v8o_1;null!=D&&(D.o8p_1=c.o8p_1);var j=r.v8o_1;null!=j&&(j.p8p_1=os(t.h8m_1).x8r(r.v8o_1)),this.s8t(t,os(r.v8o_1),o,h,u,l),e.o8n_1=!0,i.o8n_1=e.o8n_1;var M=Ek(0,i);return null!=M&&(M.o8n_1=i.o8n_1),!1},Pr(qk).o8t=function(t,n){for(var i=n,e=Sk(0,i);;){for(;e.o8n_1;)i=e,e=Sk(0,e);if(!i.o8n_1){e=i;var r=Ek(0,i);if(null==r)return Xr;if(!(i=r).o8n_1)return Xr}i.o8n_1=!1;var s,o=i.j8n_1,u=e.j8n_1,a=o.s8o_1,h=null==a?null:a.v8o_1,_=u.s8o_1;if(h!==(null==_?null:_.v8o_1)&&this.t8t(i))if(e.p8n_1){if(this.d8t(e),!te.i8r(u))throw ca();u=(e=Sk(0,i)).j8n_1}else if(i.p8n_1){if(this.d8t(i),!te.i8r(o))throw ca();o=(i=os(Ek(0,e))).j8n_1}if(o.v8o_1!==u.v8o_1){var l,c=o.s8o_1,f=null==c?null:c.v8o_1,v=u.s8o_1;if(f===(null==v?null:v.v8o_1)||i.p8n_1||e.p8n_1)l=!1;else{var d,w=o.s8o_1;if((null==w?null:w.v8o_1)===t.i8m_1)d=!0;else{var p=u.s8o_1;d=(null==p?null:p.v8o_1)===t.i8m_1}l=d}if(l){if(this.u8t(t,i))return Xr}else this.n8t(t,i)}if(o.v8o_1===u.v8o_1){var m=o.s8o_1,g=null==m?null:m.v8o_1,b=u.s8o_1;s=g===(null==b?null:b.v8o_1)}else s=!1;if(s){if(xk(0,u,o),this.d8t(i),!te.i8r(o))throw ca();i=os(Ek(0,e))}}},Pr(qk).v8t=function(t,n,i){var e,r=n,s=i,o=os(s.t8o_1),u=Sk(0,r),a=r.j8n_1,h=u.j8n_1,_=!1,l=a.s8o_1,c=null==l?null:l.v8o_1,f=h.s8o_1;if(c!==(null==f?null:f.v8o_1)&&this.u8t(t,r),Qi.x8q(os(a.v8o_1),os(t.i8m_1))){var v=te,d=o.s8o_1;if(!v.h8p(os(null==d?null:d.u8o_1),a))throw ca();o=Sk(0,r=os(this.f8t(r))).j8n_1,this.l8t(Sk(0,r),u),_=!0}if(Qi.x8q(os(h.v8o_1),os(t.i8m_1))){var w=te,p=s,m=h.s8o_1;if(!w.h8p(p,os(null==m?null:m.u8o_1)))throw ca();s=this.l8t(u,null),_=!0}if(_)return this.m8t(t,r,os(s.t8o_1),o,o,!0),Xr;if(Qi.v8q(os(h.v8o_1),os(a.v8o_1))){var g=h.s8o_1;e=os(null==g?null:g.u8o_1)}else e=a;var b=e,$=te,y=s.t8o_1;b=$.k8r(os(null==y?null:y.s8o_1),b),this.m8t(t,r,b,b.t8o_1,b.t8o_1,!1);var k=b.s8o_1,x=null==k?null:k.x8o_1;null!=x&&(x.p8n_1=!0),this.o8t(t,r)},Pr(qk).w8t=function(t,n,i){var e=n,r=e.j8n_1;if(Qi.x8q(os(r.v8o_1),i))return this.q8t(t,r,os(i.k8p_1)),Xr;var s=Qi,o=r.s8o_1;if(!s.x8q(os(null==o?null:o.v8o_1),i)){if(te.f8p(os(r.s8o_1)),e.p8n_1){if(!te.i8r(os(r.t8o_1)))throw ca();e.p8n_1=!1}if(!te.h8p(os(i.k8p_1),r))throw ca();return this.x8t(t,i),Xr}var u=Sk(0,e=this.g8t(e)),a=os(u.j8n_1.s8o_1),h=a.t8o_1,_=h;if(u.p8n_1){if(this.d8t(u),!te.i8r(a))throw ca();var l=null==_?null:_.s8o_1;a=os(null==l?null:l.u8o_1)}if(!te.h8p(os(i.k8p_1),a))throw ca();Qi.y8q(os(_))||(_=null),this.m8t(t,e,os(a.t8o_1),h,_,!0)},Pr(qk).y8t=function(t,n){var i=n.k8p_1,e=new My(os(null==i?null:i.s8o_1)),r=Ji.d8o(Ji.i8o(os(t.g8m_1),e)),s=r instanceof My?r:Nr(),o=Sk(0,s),u=s.j8n_1,a=o.j8n_1,h=Qi,_=u.s8o_1;if(0===h.q8q(os(null==_?null:_.v8o_1),n,os(u.v8o_1)))return this.w8t(t,s,n),Xr;var l=Qi,c=a.s8o_1,f=os(null==c?null:c.v8o_1),v=u.s8o_1,d=l.v8q(f,os(null==v?null:v.v8o_1))?s:o;if(s.m8n_1||d.p8n_1){var w;if(d===s){var p=te,m=n.k8p_1;w=p.k8r(os(null==m?null:m.s8o_1),os(u.u8o_1))}else{var g=te,b=a.s8o_1,$=null==b?null:b.t8o_1,y=g.k8r(os(null==$?null:$.s8o_1),os(n.k8p_1));w=os(y.s8o_1)}var k=w;if(d.p8n_1){if(!this.e8t(d,k))throw ca()}else this.j8t(t,this.h8t(t,s,k));this.x8t(t,n)}else this.m8t(t,s,os(n.k8p_1),n.k8p_1,null,!0)},Pr(qk).x8t=function(t,n){t.i8m_1=n;for(var i=os(n.k8p_1);null==i.x8o_1;)if((i=os(i.t8o_1))===n.k8p_1)return this.y8t(t,n),Xr;var e=os(this.f8t(os(i.x8o_1))),r=Sk(0,e),s=r.j8n_1,o=this.l8t(r,null);o.t8o_1===s?this.v8t(t,e,o):this.m8t(t,e,os(o.t8o_1),s,s,!0)},Pr(qk).z8t=function(t,n){var i=te.g8p(os(t.z8l_1)),e=i.v8o_1;null!=e&&(e.n8p_1=4e150);var r=i.v8o_1;null!=r&&(r.o8p_1=n);var s=i.s8o_1,o=null==s?null:s.v8o_1;null!=o&&(o.n8p_1=-4e150);var u=i.s8o_1,a=null==u?null:u.v8o_1;null!=a&&(a.o8p_1=n);var h=t,_=i.s8o_1;h.i8m_1=null==_?null:_.v8o_1;var l=new My(i);l.l8n_1=0,l.m8n_1=!1,l.p8n_1=!1,l.n8n_1=!0,l.o8n_1=!1,l.k8n_1=Ji.u8n(os(t.g8m_1),l)},Pr(qk).a8u=function(t){var n=Ji;t.g8m_1=n.s8n(t,new Ck(t)),this.z8t(t,-4e150),this.z8t(t,4e150)},Pr(qk).b8u=function(t){t:for(;;){var n=Ji.d8o(Ji.g8o(os(t.g8m_1))),i=null==n||n instanceof My?n:Nr();if(null==i)break t;var e=i;this.d8t(e)}Ji.t8n(os(t.g8m_1))},Pr(qk).c8u=function(t){for(var n=t.z8l_1,i=os(null==n?null:n.b8p_1),e=os(i.r8o_1);e!==i;){var r,s=os(e.r8o_1),o=os(e.u8o_1),u=Qi,a=os(e.v8o_1),h=e.s8o_1;if(u.x8q(a,os(null==h?null:h.v8o_1))){var _=e.u8o_1;r=!((null==_?null:_.u8o_1)===e)}else r=!1;if(r){if(this.q8t(t,o,e),!te.i8r(e))throw ca();o=os((e=o).u8o_1)}if(o.u8o_1===e){if(o!==e&&(o!==s&&o!==s.s8o_1||(s=os(s.r8o_1)),!te.i8r(o)))throw ca();if(e!==s&&e!==s.s8o_1||(s=os(s.r8o_1)),!te.i8r(e))throw ca()}e=s}},Pr(qk).d8u=function(t){t.h8m_1=ie.u8r();for(var n=os(t.h8m_1),i=t.z8l_1,e=os(null==i?null:i.z8o_1),r=os(e.i8p_1);r!==e;)r.p8p_1=n.x8r(r),r=os(r.i8p_1);if(!n.w8r()){var s=t.h8m_1;return null==s||s.v8r(),t.h8m_1=null,!1}return!0},Pr(qk).e8u=function(t){var n=t.h8m_1;null==n||n.v8r()},Pr(qk).f8u=function(t){for(var n=os(t.a8p_1.j8o_1);n!==t.a8p_1;){var i=os(n.j8o_1),e=os(n.l8o_1),r=e.u8o_1;if((null==r?null:r.u8o_1)===e&&(xk(0,os(e.t8o_1),e),!te.i8r(e)))return!1;n=i}return!0},Pr(qk).e8q=function(t){if(t.f8m_1=!1,this.c8u(t),!this.d8u(t))return!1;this.a8u(t);t:for(;;){var n=t.h8m_1,i=null==n?null:n.y8r(),e=null==i||i instanceof Jy?i:Nr();if(null==e)break t;var r=e;n:for(;;){var s=t.h8m_1,o=null==s?null:s.a8s(),u=null==o||o instanceof Jy?o:Nr();if(null==u||!Qi.x8q(u,r))break n;var a=t.h8m_1,h=null==a?null:a.y8r();u=h instanceof Jy?h:Nr(),this.q8t(t,os(r.k8p_1),os(u.k8p_1))}this.x8t(t,r)}var _=t,l=Ji.d8o(Ji.g8o(os(t.g8m_1)));return _.i8m_1=(l instanceof My?l:Nr()).j8n_1.v8o_1,this.b8u(t),this.e8u(t),!!this.f8u(os(t.z8l_1))&&(te.h8q(os(t.z8l_1)),!0)},Pr(Ok).g8u=function(t){var n=os(t.l8o_1);t:for(;;){var i=Qi,e=n.s8o_1;if(!i.v8q(os(null==e?null:e.v8o_1),os(n.v8o_1)))break t;var r=n.t8o_1;n=os(null==r?null:r.s8o_1)}t:for(;;){var s=Qi,o=os(n.v8o_1),u=n.s8o_1;if(!s.v8q(o,os(null==u?null:u.v8o_1)))break t;n=os(n.u8o_1)}for(var a=n.t8o_1,h=os(null==a?null:a.s8o_1);n.u8o_1!==h;){var _=Qi,l=n.s8o_1;if(_.v8q(os(null==l?null:l.v8o_1),os(h.v8o_1))){t:for(;;){var c;if(h.u8o_1!==n){var f;if(Qi.y8q(os(h.u8o_1)))f=!0;else{var v=Qi,d=os(h.v8o_1),w=h.s8o_1,p=os(null==w?null:w.v8o_1),m=h.u8o_1,g=null==m?null:m.s8o_1;f=v.q8q(d,p,os(null==g?null:g.v8o_1))<=0}c=f}else c=!1;if(!c)break t;var b=te.k8r(os(h.u8o_1),h);h=os(b.s8o_1)}var $=h.t8o_1;h=os(null==$?null:$.s8o_1)}else{t:for(;;){var y;if(h.u8o_1!==n){var k,x=Qi,S=n.t8o_1;if(x.z8q(os(null==S?null:S.s8o_1)))k=!0;else{var E=Qi,C=n.s8o_1,q=os(null==C?null:C.v8o_1),O=os(n.v8o_1),z=n.t8o_1,A=null==z?null:z.s8o_1;k=E.q8q(q,O,os(null==A?null:A.v8o_1))>=0}y=k}else y=!1;if(!y)break t;var T=te,I=n,D=n.t8o_1,j=T.k8r(I,os(null==D?null:D.s8o_1));n=os(j.s8o_1)}n=os(n.u8o_1)}}t:for(;;){var M=h.u8o_1;if((null==M?null:M.u8o_1)===n)break t;var N=te.k8r(os(h.u8o_1),h);h=os(N.s8o_1)}},Pr(Ok).f8q=function(t){for(var n=os(t.a8p_1.j8o_1);n!==t.a8p_1;){var i=os(n.j8o_1);n.p8o_1&&this.g8u(n),n=i}return!0},Pr(Ok).g8q=function(t,n,i){for(var e=os(t.b8p_1.r8o_1);e!==t.b8p_1;){var r=os(e.r8o_1),s=e.s8o_1,o=null==s?null:s.w8o_1,u=null==o?null:o.p8o_1,a=e.w8o_1;if(u!=(null==a?null:a.p8o_1))e.y8o_1=os(e.w8o_1).p8o_1?n:0|-n;else if(i){if(!te.i8r(e))return!1}else e.y8o_1=0;e=r}return!0},Pr(yx).ml=function(t){if(Pr(Dx).ml.call(this,t),!t.defaultPrevented)if("wheel"===t.type)t.preventDefault(),this.k8x(t instanceof WheelEvent?t:Nr());else for(var n=Jx().j8x_1.v();n.w();){var i=n.y();Ss(i.z8u_1,this.h8x_1.o8u_1)&&i.ml(t)}},Pr(yx).handleEvent=function(t){return this.ml(t)},Pr(yx).l8x=function(t){Ss(t,this.w8v_1)||Ss(t,this.y8v_1)?this.q8x(t):Ss(t,this.x8v_1)?this.p8x(t):Ss(t,this.z8v_1)?this.o8x(t):Ss(t,this.a8w_1)?this.n8x(t):Ss(t,this.b8w_1)&&this.m8x(t)},Pr(yx).q8x=function(t){this.h8x_1.t8x().y52_1.e58()?this.s8x(t):this.r8x(t)},Pr(yx).r8x=function(t){var n=t.b8v_1,i=t.e8v_1,e=t.f8v_1;switch(n.v9_1){case 3:this.u8x(),this.f8w_1.c5x(0,0);break;case 4:var r=this.h8x_1.t8x().y52_1,s=r.v59(),o=r.c69(),u=Math.max(s,o),a=this.e8w_1.n57_1,h=Math.max(1,a),_=this.h8x_1.t8x().u59(h)*this.h8x_1.t8x().h53_1,l=(e-this.f8w_1.h57_1)*_/u,c=-(i-this.f8w_1.g57_1)*_/u,f=Lh(this.e8w_1.o57_1),v=Math.sin(f),d=Lh(this.e8w_1.o57_1),w=Math.cos(d),p=this.e8w_1.l57_1;p.b54_1=Bh(p.b54_1,l*w-c*v),p.c54_1=Bh(p.c54_1,l*v+c*w),this.f8w_1.c5x(i,e),this.v8x();break;case 6:case 5:this.w8x()}},Pr(yx).s8x=function(t){var n=t.b8v_1,i=t.e8v_1,e=t.f8v_1;switch(n.v9_1){case 3:this.u8x(),this.h8x_1.t8x().y52_1.t57(this.c8w_1.l57_1.b54_1,this.c8w_1.l57_1.c54_1,this.c8w_1.l57_1.f54_1,this.d8w_1);break;case 4:var r=this.h8x_1.t8x().u59(this.e8w_1.n57_1)*this.h8x_1.t8x().h53_1,s=e*r,o=-i*r,u=this.e8w_1.o57_1,a=Lh(u),h=Math.sin(a),_=Lh(u),l=Math.cos(_),c=this.d8w_1.g57_1+s*h+o*l,f=this.d8w_1.h57_1+s*l-o*h;this.h8x_1.t8x().y52_1.r57(c,f,this.d8w_1.k57_1,this.e8w_1.l57_1),this.v8x();break;case 6:case 5:this.w8x()}},Pr(yx).p8x=function(t){var n=t.b8v_1,i=t.e8v_1,e=t.f8v_1;switch(n.v9_1){case 3:this.u8x();break;case 4:var r=180*i/this.h8x_1.o8u_1.clientWidth,s=90*e/this.h8x_1.o8u_1.clientHeight;this.e8w_1.o57_1=Vh(this.c8w_1.o57_1,r),this.e8w_1.p57_1=Vh(this.c8w_1.p57_1,s),this.v8x();break;case 6:case 5:this.w8x()}},Pr(yx).o8x=function(t){var n=t.b8v_1,i=(t instanceof nS?t:Nr()).x8y();switch(n.v9_1){case 3:this.u8x();break;case 4:0!==i&&(this.e8w_1.n57_1=this.c8w_1.n57_1/i,this.v8x());break;case 6:case 5:this.w8x()}},Pr(yx).n8x=function(t){var n=t.b8v_1,i=(t instanceof iS?t:Nr()).y8z();switch(n.v9_1){case 3:this.u8x(),this.g8w_1=0;break;case 4:this.e8w_1.o57_1=Wh(this.e8w_1.o57_1,i-this.g8w_1),this.g8w_1=i,this.v8x();break;case 6:case 5:this.w8x()}},Pr(yx).m8x=function(t){var n=t.b8v_1,i=t.f8v_1;switch(n.v9_1){case 3:this.u8x();break;case 4:var e=-90*i/this.h8x_1.o8u_1.clientHeight;this.e8w_1.p57_1=Vh(this.c8w_1.p57_1,e),this.v8x();break;case 6:case 5:this.w8x()}},Pr(yx).k8x=function(t){var n=ks(t.timeStamp);(n-this.h8w_1|0)>500&&(this.h8x_1.t8x().z57(this.e8w_1),this.h8w_1=n);var i=t.deltaMode,e=1+(i===WheelEvent.DOM_DELTA_PIXEL?t.deltaY:i===WheelEvent.DOM_DELTA_LINE?20*t.deltaY:i===WheelEvent.DOM_DELTA_PAGE?200*t.deltaY:t.deltaY)/1e3,r=this.e8w_1;r.n57_1=r.n57_1*e,this.v8x()},Pr(yx).v8x=function(){this.h8x_1.t8x().a58(this.e8w_1),this.h8x_1.w52()},Pr(yx).u8x=function(){var t=this.i8w_1;this.i8w_1=t+1|0,0===t&&(this.h8x_1.t8x().z57(this.c8w_1),this.e8w_1.z5v(this.c8w_1))},Pr(yx).w8x=function(){this.i8w_1>0&&(this.i8w_1=this.i8w_1-1|0)},Pr(kx).l90=function(){this.e90_1.o57_1=Uh().j58_1,this.z8z_1.t8x().a58(this.e90_1),this.z8z_1.w52()},Pr(kx).m90=function(){this.e90_1.o57_1=Uh().j58_1,this.e90_1.p57_1=Uh().j58_1,this.z8z_1.t8x().a58(this.e90_1),this.z8z_1.w52()},Pr(kx).k90=function(t){if(this.f90_1){var n=this.e90_1.o57_1,i=this.c90_1*this.e90_1.n57_1;switch(t){case"panDown":n=Yh(n,Uh().m58_1);break;case"panLeft":n=Yh(n,Uh().k58_1);break;case"panRight":n=Hh(n,Uh().k58_1)}this.e90_1.l57_1.u5v(n,i,this.e90_1.l57_1),this.z8z_1.t8x().a58(this.e90_1),this.z8z_1.w52(),window.setTimeout((e=this,(r=function(t){return e.k90(t),Xr}).callableName="handlePan",r),50,t)}var e,r},Pr(kx).i90=function(t){if(this.f90_1){if("zoomIn"===t){var n=this.e90_1;n.n57_1=n.n57_1*(1-this.b90_1)}else if("zoomOut"===t){var i=this.e90_1;i.n57_1=i.n57_1*(1+this.b90_1)}this.z8z_1.t8x().a58(this.e90_1),this.z8z_1.w52(),window.setTimeout((e=this,(r=function(t){return e.i90(t),Xr}).callableName="handleZoom",r),50,t)}var e,r},Pr(kx).j90=function(t){var n,i;this.f90_1&&("tiltUp"===t?this.e90_1.p57_1=Wh(this.e90_1.p57_1,this.d90_1):"tiltDown"===t&&(this.e90_1.p57_1=Vh(this.e90_1.p57_1,this.d90_1)),this.z8z_1.t8x().a58(this.e90_1),this.z8z_1.w52(),window.setTimeout((n=this,(i=function(t){return n.j90(t),Xr}).callableName="handleTilt",i),50,t))},Pr(Sx).y90=function(t,n){var i=this.z90(t,n);return i.bc_1=Xr,i.cc_1=null,i.mc()},Pr(Sx).zc=function(t,n){return this.y90(null!=t&&ss(t,Ya)?t:Nr(),n)},Pr(Sx).mc=function(){for(this.bc_1;;)try{var t=this.zb_1;if(0===t){this.ac_1=1;var n=this.x90_1;return n instanceof Ua?this.w90_1.w52():n instanceof Ha&&this.w90_1.t8x().x52_1.x54_1.k6c(this.x90_1.a91_1),Xr}if(1===t)throw this.cc_1}catch(t){throw t}},Pr(Sx).z90=function(t,n){var i=new Sx(this.w90_1,n);return i.x90_1=t,i},Pr(qx).d91=function(t){var n={alpha:!0,depth:!0,stencil:!1,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,preferLowPowerToHighPerformance:!1,failIfMajorPerformanceCaveat:!1},i=t.getContext("webgl",n),e=null==i?t.getContext("experimental-webgl",n):i;if(!(e instanceof WebGLRenderingContext)){var r=kr.n54(kr.i54_1,"WorldWindow","createContext","webglNotSupported");throw is(Gr(r))}return e},Pr(zx).f14=function(t,n){return this.e91_1(t,n)},Pr(Tx).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=Xr,i.cc_1=null,i.mc()},Pr(Tx).zc=function(t,n){return this.v1g(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(Tx).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=2,this.zb_1=1;var n=Ba().v52_1,i=Ex(this.o91_1,null);if((t=n.i14(new zx(i),this))===Js())return t;continue t;case 1:pa();break;case 2:throw this.cc_1}}catch(t){var e=t;if(2===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},Pr(Tx).w1g=function(t,n){var i=new Tx(this.o91_1,n);return i.p91_1=t,i},Pr(Ix).s91=function(){return this.t8x().x52_1.w54_1},Pr(Ix).t8x=function(){return this.q8u_1},Pr(Ix).t91=function(){return this.u8u_1},Pr(Ix).n90=function(t,n){var i,e,r={_v:this.r8u_1.o2(t)};if(null==r._v){var s=new Cx((i=this,e=r,function(t){t.worldWindow=i;var n=e._v,r=null==n?null:n.c91_1;if(null==r);else for(var s=r.v();s.w();)s.y().handleEvent(t);return Xr}));this.r8u_1.e2(t,s),r._v=s}r._v.c91_1.r(n)||(r._v.c91_1.p1(0,n),1===r._v.c91_1.n()&&this.o8u_1.addEventListener(t,r._v.b91_1,!1))},Pr(Ix).w52=function(){this.y8u_1=!0},Pr(Ix).u91=function(t,n){var i=this.o8u_1.getBoundingClientRect();return new nl(xs(t)-(i.left+this.o8u_1.clientLeft),xs(n)-(i.top+this.o8u_1.clientTop))},Pr(Ix).v91=function(t){return this.w91(t.g57_1,t.h57_1)},Pr(Ix).x91=function(t,n,i,e,r){var s,o=new Fa,u=this.t8x().f53_1;if(u.n19())return o;if(0!==i&&0!==e){var a=Math.floor(t),h=ks(a),_=u.j55_1,l=n+e,c=Math.ceil(l),f=_-ks(c)|0,v=Math.ceil(i),d=ks(v),w=Math.ceil(e);s=new sl(h,f,d,ks(w))}else s=new sl(Wr(t)-1|0,(u.j55_1-Wr(n)|0)-1|0,3,3);var p=s;if(!p.t5y(u))return o;if(this.w8u_1.c5a_1=o,this.w8u_1.e5a_1=p,r){var m=p.g55_1+p.i55_1/2,g=p.h55_1+p.j55_1/2;if(u.u5y(m,g)){var b=w_();this.t8x().l59(m,u.j55_1-g,b)&&(this.w8u_1.f5a_1=new nl(m,g),this.w8u_1.g5a_1=b)}}return this.w8u_1.h5a_1=!0,this.y91(),o},Pr(Ix).w91=function(t,n,i,e,r,s){return i=i===Yr?0:i,e=e===Yr?0:e,r=r===Yr||r,s===Yr?this.x91(t,n,i,e,r):s.x91.call(this,t,n,i,e,r)},Pr(Ix).q56=function(){window.cancelAnimationFrame(this.x8u_1),io(this.s91().am()),this.t8x().r1h()},Pr(Ix).f91=function(){this.t8x().x52_1.b1(),this.t8x().l55(),this.t8x().h54(window.devicePixelRatio),this.p8u_1.getExtension("WEBGL_depth_texture"),this.p8u_1.getExtension("OES_element_index_uint");var t,n,i=this.s91();ro(i,Yr,Yr,(t=new Tx(this,null),(n=function(n,i){return t.v1g(n,i)}).$arity=1,n)),this.w52(),this.q91()},Pr(Ix).q91=function(){this.z91();var t,n=window;this.x8u_1=n.requestAnimationFrame((t=this,function(n){return t.q91(),Xr}))},Pr(Ix).z91=function(){if(this.a92(),!this.y8u_1)return Xr;this.y8u_1=!1,this.y91()},Pr(Ix).y91=function(){var t=this.w8u_1.h5a_1;try{t||this.b92((xx(),vr)),(this.t8x().w59(this.w8u_1)||t)&&this.w52(),this.t8x().q5c(this.w8u_1)}catch(t){if(!(t instanceof $s))throw t;var n=t;kr.n54(kr.i54_1,"WorldWindow","drawFrame","Exception occurred during redrawing.\n"+n)}finally{this.w8u_1.u5d(),t||this.b92((xx(),fr))}},Pr(Ix).a92=function(){var t=this.p8u_1.canvas.clientWidth*this.t8x().h53_1,n=Wr(t),i=this.p8u_1.canvas.clientHeight*this.t8x().h53_1,e=Wr(i);(this.p8u_1.canvas.width!==n||this.p8u_1.canvas.height!==e||this.t8x().f53_1.n19())&&(this.p8u_1.canvas.width=n,this.p8u_1.canvas.height=e,this.t8x().s56(this.p8u_1.drawingBufferWidth,this.p8u_1.drawingBufferHeight),this.w52())},Pr(Ix).b92=function(t){for(var n=this.v8u_1.v();n.w();){var i=n.y();try{i(this,t)}catch(t){if(!(t instanceof $s))throw t;var e=t;kr.v5o(kr.i54_1,"Exception calling redraw callback.\n"+e)}}return Xr},Pr(Dx).ml=function(t){var n=0,i=this.i8x_1.n()-1|0;if(n<=i)t:do{var e=n;if(n=n+1|0,this.i8x_1.h1(e).handleEvent(t),t.defaultPrevented)break t}while(n<=i)},Pr(Dx).handleEvent=function(t){return this.ml(t)},Pr(Mx).h94=function(t){var n,i=this.e94_1;if(0===i)n=this.g94_1;else{if(34737===i){var e=kr.n54(kr.i54_1,"GeoTiffKeyEntry","getGeoKeyValue","Invalid key type");throw fs(Gr(e))}n=34736===i?t.h1(this.g94_1):null}return n},Pr(Mx).i94=function(t){if(34737!==this.e94_1){var n=kr.n54(kr.i54_1,"GeoTiffKeyEntry","getAsciiGeoKeyValue","Invalid key type");throw is(Gr(n))}var i;if(null==t)i=null;else{var e=jo(),r=this.g94_1,s=this.f94_1-1|0;if(r>>8|0:t.getUint32(n,e)>>>8|0;else if(i<=4)s=r?t.getInt32(n,e):t.getUint32(n,e);else{if(!(i<=8)){var u=kr.n54(kr.i54_1,"GeoTiffUtil","getBytes","Too many bytes requested");throw fs(Gr(u))}s=t.getFloat64(n,e)}return s},Pr(Ux).g96=function(t,n,i,e,r,s){return r=r!==Yr&&r,s===Yr?this.r96(t,n,i,e,r):s.r96.call(this,t,n,i,e,r)},Pr(Ux).h96=function(t,n,i,e,r){var s;if(1===e)s=this.r96(t,n,i,r,!1);else if(2===e)s=this.r96(t,n,i,r,!0);else if(3===e){var o;switch(i){case 3:o=ks(t.getFloat32(n,r))>>>8|0;break;case 4:o=t.getFloat32(n,r);break;case 8:o=t.getFloat64(n,r);break;default:var u=kr.n54(kr.i54_1,"GeoTiffUtil","getSampleBytes","Do not attempt to parse the data not handled: "+i);throw fs(Gr(u))}s=o}else s=this.r96(t,n,i,r,!1);return s},Pr(Wx).l9a=function(t){if(!t&&2===this.j96_1){var n=kr.n54(kr.i54_1,"TiffIFDEntry","getIFDEntryValue","Invalid Key Type - ASCII not allowed.");throw is(Gr(n))}var i,e=1!==(i=this.j96_1)&&2!==i&&6!==i&&7!==i?3===i||8===i?2:4===i||9===i||11===i?4:5===i||10===i||12===i?8:-1:1;return Tr(e,this.k96_1)<=4?Tu(this.n96_1?this.l96_1:this.l96_1>>Tr(4-e|0,8)):function(t,n){var i=_s(),e=0,r=t.k96_1;if(e=8){var u=t.j96_1;if(5===u||10===u)i.s(pr.g96(t.m96_1,t.l96_1+o|0,4,t.n96_1)),i.s(pr.g96(t.m96_1,4+(t.l96_1+o|0)|0,4,t.n96_1));else{if(12!==u){var a=kr.n54(kr.i54_1,"TiffIFDEntry","getIFDEntryValue","Invalid Type of IFD");throw fs(Gr(a))}i.s(pr.g96(t.m96_1,t.l96_1+o|0,8,t.n96_1))}}else i.s(pr.g96(t.m96_1,t.l96_1+o|0,n,t.n96_1))}while(ethis.i9b_1*window.devicePixelRatio&&this.n9b(Hl())},Pr(Gx).s9b=function(t){return this.b8v_1.equals(Ul())?0!==this.g8v_1?Xr:void(this.l9b_1.n()===this.g9b_1?(this.c8v_1=this.l9b_1.h1(0).t9b_1,this.d8v_1=this.l9b_1.h1(0).u9b_1,this.n9b(Vl())):this.q9b(this.k9b_1)):Xr},Pr(Gx).v9b=function(t){if(!this.b8v_1.equals(Ul()))return Xr;this.n9b(Hl())},Pr(Gx).q9b=function(t){var n=this.m9b_1;null==n||window.clearTimeout(n);var i,e=window;this.m9b_1=e.setTimeout((i=this,function(){return i.m9b_1=null,i.b8v_1.equals(Ul())&&i.n9b(Hl()),Xr}),t)},Pr(Gx).o9b=function(){var t=this.m9b_1;null==t||window.clearTimeout(t),this.m9b_1=null},Pr(Kx).r9b=function(t){var n;this.b8v_1.equals(Ul())?this.a9d()&&(this.z9c()?(this.y9c(),n=Bl()):n=Hl(),this.n9b(n)):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Yl())},Pr(Kx).s9b=function(t){0===this.g8v_1&&(this.b8v_1.equals(Ul())?this.n9b(Hl()):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Gl()))},Pr(Kx).v9b=function(t){this.b8v_1.equals(Ul())&&this.n9b(Hl())},Pr(Kx).a9d=function(){var t=this.e8v_1,n=this.f8v_1,i=t*t+n*n;return Math.sqrt(i)>this.e8x_1*window.devicePixelRatio},Pr(Kx).z9c=function(){return 1<0)return Xr;var n=1<this.e9e_1*window.devicePixelRatio},Pr(tS).z9c=function(){var t=this.c9e_1,n=this.d9e_1,i=this.b9d();return t<=i&&i<=n},Pr(nS).x8y=function(){return this.u8y_1*this.v8y_1},Pr(nS).r1h=function(){Pr(Qx).r1h.call(this),this.u8y_1=1,this.v8y_1=1,this.r8y_1=0,this.w8y_1.b1()},Pr(nS).p9b=function(t){this.b8v_1.equals(Ul())&&this.n9b(Hl())},Pr(nS).v9b=function(t){this.w8y_1.n()<2&&(this.w8y_1.s(t),2===this.w8y_1.n()&&(this.r8y_1=this.f9e(),this.v8y_1=this.v8y_1*this.u8y_1,this.u8y_1=1))},Pr(nS).a9c=function(t){if(2===this.w8y_1.n())if(this.b8v_1.equals(Ul()))this.z9c()&&this.n9b(Bl());else if(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl())){var n=this.f9e()/this.r8y_1,i=Math.abs(n),e=this.t8y_1;this.u8y_1=this.u8y_1*(1-e)+i*e,this.n9b(Yl())}},Pr(nS).c9c=function(t){this.w8y_1.t(t),0===this.b9d()&&(this.b8v_1.equals(Ul())?this.n9b(Hl()):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Gl()))},Pr(nS).b9c=function(t){this.w8y_1.t(t),0===this.b9d()&&(this.b8v_1.equals(Ul())?this.n9b(Hl()):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Wl()))},Pr(nS).z9b=function(){this.r8y_1=this.f9e(),this.u8y_1=1},Pr(nS).z9c=function(){var t=this.f9e()-this.r8y_1;return Math.abs(t)>this.s8y_1*window.devicePixelRatio},Pr(nS).f9e=function(){var t=this.w8y_1.h1(0),n=this.w8y_1.h1(1),i=t.e9d_1-n.e9d_1|0,e=t.f9d_1-n.f9d_1|0,r=Tr(i,i)+Tr(e,e)|0;return Math.sqrt(r)},Pr(iS).y8z=function(){return this.v8z_1+this.w8z_1},Pr(iS).r1h=function(){Pr(Qx).r1h.call(this),this.v8z_1=0,this.w8z_1=0,this.s8z_1=0,this.x8z_1.b1()},Pr(iS).p9b=function(t){this.b8v_1.equals(Ul())&&this.n9b(Hl())},Pr(iS).v9b=function(t){this.x8z_1.n()<2&&(this.x8z_1.s(t),2===this.x8z_1.n()&&(this.s8z_1=this.g9e(),this.w8z_1=this.w8z_1+this.v8z_1,this.v8z_1=0))},Pr(iS).a9c=function(t){if(2===this.x8z_1.n())if(this.b8v_1.equals(Ul()))this.z9c()&&this.n9b(Bl());else if(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl())){var n=this.g9e(),i=Uh().o5t(n-this.s8z_1),e=this.u8z_1;this.v8z_1=this.v8z_1*(1-e)+i*e,this.n9b(Yl())}},Pr(iS).c9c=function(t){this.x8z_1.t(t),0===this.b9d()&&(this.b8v_1.equals(Ul())?this.n9b(Hl()):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Gl()))},Pr(iS).b9c=function(t){this.x8z_1.t(t),0===this.b9d()&&(this.b8v_1.equals(Ul())?this.n9b(Hl()):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Wl()))},Pr(iS).z9b=function(){this.s8z_1=this.g9e(),this.v8z_1=0},Pr(iS).z9c=function(){this.v8z_1=Uh().o5t(this.g9e()-this.s8z_1);var t=this.v8z_1;return Math.abs(t)>this.t8z_1},Pr(iS).g9e=function(){var t=this.x8z_1.h1(0),n=this.x8z_1.h1(1),i=t.e9d_1-n.e9d_1|0,e=t.f9d_1-n.f9d_1|0,r=Uh(),s=Math.atan2(e,i);return r.m5t(s)},Pr(rS).z9c=function(){return!!Pr(Kx).z9c.call(this)&&this.b9g_1.r9e_1},Pr(sS).z9c=function(){return!!Pr(tS).z9c.call(this)&&this.z9g_1.r9e_1},Pr(oS).e9f=function(){this.q9e_1=!1,this.r9e_1=!1},Pr(uS).r1h=function(){Pr(Qx).r1h.call(this),this.z9h_1.b1(),this.b9i()},Pr(uS).p9b=function(t){if(!this.b8v_1.equals(Ul()))return Xr;this.n9b(Hl())},Pr(uS).v9b=function(t){if(!this.b8v_1.equals(Ul()))return Xr;if(this.b9d()>this.v9h_1)this.n9b(Hl());else if(1===this.b9d())this.z9h_1.s(new _S(this.b9d(),this.c8v_1,this.d8v_1)),this.q9b(this.x9h_1);else{var n=this.z9h_1.h1(this.z9h_1.n()-1|0);n.d9d_1=this.b9d(),n.e9d_1=this.c8v_1,n.f9d_1=this.d8v_1}},Pr(uS).a9c=function(t){if(!this.b8v_1.equals(Ul()))return Xr;var n=this.e8v_1,i=this.f8v_1,e=n*n+i*i;Math.sqrt(e)>this.w9h_1*window.devicePixelRatio&&this.n9b(Hl())},Pr(uS).c9c=function(t){if(!this.b8v_1.equals(Ul()))return Xr;if(0!==this.b9d())return Xr;var n=this.z9h_1.n();this.z9h_1.h1(n-1|0).d9d_1!==this.v9h_1?this.n9b(Hl()):n===this.u9h_1?(this.c8v_1=this.z9h_1.h1(0).e9d_1,this.d8v_1=this.z9h_1.h1(0).f9d_1,this.n9b(Vl())):this.q9b(this.y9h_1)},Pr(uS).b9c=function(t){if(!this.b8v_1.equals(Ul()))return Xr;this.n9b(Hl())},Pr(uS).q9b=function(t){var n=this.a9i_1;null==n||window.clearTimeout(n);var i,e=window;this.a9i_1=e.setTimeout((i=this,function(){return i.a9i_1=null,i.b8v_1.equals(Ul())&&i.n9b(Hl()),Xr}),t)},Pr(uS).b9i=function(){var t,n=this.a9i_1;null==n?t=null:(window.clearTimeout(n),t=Xr);var i=t;return this.a9i_1=null,i},Pr(hS).a9d=function(){var t=0,n=this.b9d();if(tthis.e9e_1)return!0}while(tthis.d9j_1*window.devicePixelRatio)return!1;var s=t.f9j()-n.f9j()|0,o=t.g9j()-n.g9j()|0,u=Tr(s,s)+Tr(o,o)|0;if(Math.sqrt(u)>this.e9j_1*window.devicePixelRatio)return!1;return!(0==(12&this.h9j(t)&this.h9j(n)&12))},Pr(hS).h9j=function(t){var n=t.f9j(),i=t.g9j(),e=0;return Fs(n)>Fs(i)?(e|=n<0?1:0,e|=n>0?2:0):(e|=i<0?4:0,e|=i>0?8:0),e},Pr(_S).f9j=function(){return this.e9d_1-this.g9d_1|0},Pr(_S).g9j=function(){return this.f9d_1-this.h9d_1|0},Pr(lS).i9j=function(t){return new cS(t.href)},Pr(lS).m7e=function(t){var n;try{n=this.i9j(new URL(t))}catch(t){if(t instanceof $s){var i=t;throw kr.k5t(kr.i54_1,"ElevationSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Pr(lS).j9j=function(t){return t instanceof URL?this.i9j(t):"string"==typeof t?this.m7e(t):new cS(t)},Pr(cS).m9j=function(){return"string"==typeof this.k7c_1},Pr(cS).n9j=function(){var t=this.k7c_1;return"string"==typeof t?t:Nr()},Pr(cS).toString=function(){return"string"==typeof this.k7c_1?"URL: "+Gr(this.k7c_1):Pr(A$).toString.call(this)},Pr(vS).d7i=function(t,n,i){return gr.j9j(new Object)},Pr(dS).z9j=function(t,n){var i=this.w1g(t,n);return i.bc_1=Xr,i.cc_1=null,i.mc()},Pr(dS).zc=function(t,n){return this.z9j(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(dS).mc=function(){for(this.bc_1;;)try{var t=this.zb_1;if(0===t)return this.ac_1=1,new Fx(this.x9j_1).q96();if(1===t)throw this.cc_1}catch(t){throw t}},Pr(dS).w1g=function(t,n){var i=new dS(this.x9j_1,n);return i.y9j_1=t,i},Pr(wS).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=12,this.n9k_1=this.i9k_1.r6b_1.d7i(this.k9k_1,this.l9k_1,this.m9k_1),this.n9k_1.m9j()){if(this.o9k_1=this.n9k_1.n9j(),this.ac_1=9,this.zb_1=1,(t=Ea(fetch(this.o9k_1),this))===Js())return t;continue t}this.i9k_1.d6d(this.j9k_1,"Unsupported elevation source type"),this.zb_1=11;continue t;case 1:if(this.p9k_1=t,this.p9k_1.ok){if(this.zb_1=2,(t=Ea(this.p9k_1.arrayBuffer(),this))===Js())return t;continue t}this.i9k_1.d6d(this.j9k_1,"Elevations retrieval failed ("+this.p9k_1.statusText+"): "+this.o9k_1),this.zb_1=8;continue t;case 2:if(this.q9k_1=t,this.r9k_1=this.p9k_1.headers.get("Content-Type"),this.s9k_1=null,qa(this.r9k_1,"image/bil",!0)||qa(this.r9k_1,"application/bil",!0)||qa(this.r9k_1,"application/bil16",!0)){this.t9k_1=new Int16Array(this.q9k_1),this.zb_1=4;continue t}if(qa(this.r9k_1,"application/bil32",!0)){this.t9k_1=new Float32Array(this.q9k_1),this.zb_1=4;continue t}if(qa(this.r9k_1,"image/tiff",!0)){if(this.zb_1=3,(t=fS(this.i9k_1,this.q9k_1,this))===Js())return t;continue t}if(qa(this.r9k_1,"text/xml",!0)){this.s9k_1="Elevations retrieval failed ("+this.p9k_1.statusText+"): "+this.o9k_1+".\n",Ca.fromCharCode.apply(null,new Uint8Array(this.q9k_1)),this.t9k_1=null,this.zb_1=4;continue t}this.s9k_1="Elevations retrieval failed (Unexpected content type "+this.r9k_1+"): "+this.o9k_1,this.t9k_1=null,this.zb_1=4;continue t;case 3:this.t9k_1=t,this.zb_1=4;continue t;case 4:if(this.u9k_1=this.t9k_1,null==this.u9k_1){this.v9k_1=null,this.zb_1=7;continue t}if(this.w9k_1=this.u9k_1,this.x9k_1=this.w9k_1,this.y9k_1=this.n9k_1.l7c_1,null==this.y9k_1){this.z9k_1=null,this.zb_1=6;continue t}if(this.zb_1=5,(t=this.y9k_1.h7c(this.x9k_1,this))===Js())return t;continue t;case 5:this.z9k_1=t,this.zb_1=6;continue t;case 6:var n=this.z9k_1;this.v9k_1=null==n?this.x9k_1:n,this.zb_1=7;continue t;case 7:var i,e=this.v9k_1,r=this.i9k_1.b6d(e);if(null==r?i=null:(this.i9k_1.c6d(this.j9k_1,r,"Elevation retrieval succeeded: "+this.o9k_1),i=Xr),null==i){var s=this.s9k_1;this.i9k_1.d6d(this.j9k_1,null==s?"Elevations retrieval failed: "+this.o9k_1:s)}this.zb_1=8;continue t;case 8:this.ac_1=12,this.zb_1=10;continue t;case 9:if(this.ac_1=12,this.cc_1 instanceof Error){var o=this.cc_1;this.i9k_1.d6d(this.j9k_1,"Elevations retrieval failed ("+o.message+"): "+this.o9k_1),this.zb_1=10;continue t}throw this.cc_1;case 10:this.ac_1=12,this.zb_1=11;continue t;case 11:return Xr;case 12:throw this.cc_1}}catch(t){var u=t;if(12===this.ac_1)throw u;this.zb_1=this.ac_1,this.cc_1=u}},Pr(pS).y6b=function(t,n,i,e,r){var s=new wS(this,t,n,i,e,r);return s.bc_1=Xr,s.cc_1=null,s.mc()},Pr(pS).b6d=function(t){var n;if(t instanceof Int16Array){for(var i=0,e=t.length,r=new Int16Array(e);i=this.v54_1||this.y54_1.r(t)||this.x54_1.i6c(t.hashCode())||(t.b9o()?this.z9n(t,n,t.a9o().l3m_1):t.m9j()?this.z9n(t,n,t.n9j()):t.w9n()&&(this.y54_1.s(t),ro(this.w54_1,Yr,Yr,(h=new OS(t,this,n,null),(_=function(t,n){return h.v1g(t,n)}).$arity=1,_)))),null;var h,_},Pr(IS).c7h=function(t,n){var i,e;ro(this.w54_1,Yr,Yr,(i=new zS(n,t,null),(e=function(t,n){return i.v1g(t,n)}).$arity=1,e))},Pr(IS).z9n=function(t,n,i){var e,r,s=new Image;s.onload=TS(t,{_v:!1},this,n,s),s.onerror=(e=this,r=t,function(t,n,i,s,o){return e.w9m(r),Xr}),this.y54_1.s(t),s.crossOrigin="anonymous",s.src=i},Pr(IS).u9n=function(t,n){var i;if(n instanceof HTMLImageElement)i=Is(n.width,n.height);else{if(!(n instanceof HTMLCanvasElement))return null;i=Is(n.width,n.height)}var e=i,r=e.oe(),s=e.pe();if(0===r||0===s){var o=null!=t&&t.f87_1>0?r/t.f87_1|0:0,u=null!=t&&t.g87_1>0?s/t.g87_1|0:0,a=u>o?u:o;a>0&&(r=r/a|0,s=s/a|0)}else null!=t&&t.f87_1>0&&t.g87_1>0&&(r=t.f87_1,s=t.g87_1);var h=new FS(n,r,s);return Ss(null==t?null:t.d87_1,Ib())&&(h.p5f(Yk(),Wk()),h.p5f(Gk(),Wk())),Ss(null==t?null:t.e87_1,Mb())&&(h.p5f(Kk(),Xk()),h.p5f(Jk(),Xk())),h},Pr(IS).v9m=function(t,n,i){var e=this.u9n(n,i);null==e||this.f5t(t,e,e.w85()),this.y54_1.t(t),this.x54_1.k6c(t.hashCode()),Ba().w52(),kr.a9l(kr.l54_1)&&kr.v5o(kr.l54_1,"Image retrieval succeeded: "+t)},Pr(IS).w9m=function(t){this.y54_1.t(t),this.x54_1.m6c(t.hashCode()),kr.v5o(kr.j54_1,"Image retrieval failed: "+t)},Pr(DS).v85=function(t,n){return!0===(null==t?null:Eo(t)>0)?LS(this.c9o(t,n)):null},Pr(DS).c9o=function(t,n){var i=document.createElement("canvas"),e=i instanceof HTMLCanvasElement?i:Nr(),r=e.getContext("2d"),s=r instanceof CanvasRenderingContext2D?r:Nr(),o=this.d9o(s,t,n),u=Lo(t,["\n"]),a=n.v6u_1?n.u6u_1/2:0,h=o.g57_1*this.t85_1.r5a_1,_=Math.ceil(h);e.width=ks(_);var l=o.h57_1*this.t85_1.r5a_1,c=Math.ceil(l);e.height=ks(c),s.scale(this.t85_1.r5a_1,this.t85_1.r5a_1),s.font=n.y6u_1.toString(),s.textBaseline="bottom",s.textAlign=n.y6u_1.f8j_1,s.fillStyle=n.z6u_1.b83(),s.strokeStyle=n.b6v_1.b83(),s.lineWidth=n.u6u_1,s.lineCap="round",s.lineJoin="round";var f=n.y6u_1.f8j_1;Ss(f,"left")?s.translate(a,0):Ss(f,"right")?s.translate(o.g57_1-a,0):s.translate(o.g57_1/2,0);var v=0,d=u.n()-1|0;if(v<=d)do{var w=v;v=v+1|0;var p=u.h1(w);s.translate(0,n.y6u_1.a8j_1*(1+this.u85_1)+a),n.v6u_1&&s.strokeText(p,0,0),s.fillText(p,0,0)}while(v<=d);return e},Pr(DS).d9o=function(t,n,i){0===Eo(n)&&tl(),t.font=i.y6u_1.toString();var e=Lo(n,["\n"]),r=e.n()*(i.y6u_1.a8j_1*(1+this.u85_1)),s=0,o=0,u=e.n()-1|0;if(o<=u)do{var a=o;o=o+1|0,s=yo(s,t.measureText(e.h1(a)).width)}while(o<=u);return i.v6u_1&&(s+=i.u6u_1,r+=i.u6u_1),new nl(s,r)},Pr(jS).m6j=function(t){return new PS(t)},Pr(jS).i9j=function(t){return new PS(t.href)},Pr(jS).m7e=function(t){var n;try{n=this.i9j(new URL(t))}catch(t){if(t instanceof $s){var i=t;throw kr.k5t(kr.i54_1,"ImageSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Pr(jS).v6v=function(t,n){var i,e=Ps(t).nb(new Hr(-1,0)),r=Ps(n).nb(new Hr(65535,0)),s=e.kb(32).ob(r),o=this.l6j_1.o2(s);if(null==o){var u=new RS(t,n);MS().l6j_1.e2(s,u),i=u}else i=o;return new PS(i)},Pr(RS).u9m=function(){var t=document.createElement("canvas"),n=t instanceof HTMLCanvasElement?t:Nr();n.width=this.e9o_1<=0?16:Tr(this.e9o_1,16),n.height=1;var i=n.getContext("2d"),e=i instanceof CanvasRenderingContext2D?i:Nr();if(e.strokeStyle="white",e.beginPath(),this.e9o_1<=0)e.moveTo(0,.5),e.lineTo(n.width,.5);else{var r=0,s=0;if(s<=15)do{var o=s;s=s+1|0,0!=(this.f9o_1&1<>>0,e=arguments[1]>>0,r=e<0?Math.max(i+e,0):Math.min(e,i),s=arguments[2],o=void 0===s?i:s>>0,u=o<0?Math.max(i+o,0):Math.min(o,i);r0?1:-1}),void 0===Math.log10&&(Math.log10=function(t){return Math.log(t)*Math.LOG10E}),void 0===Math.sinh){var o=Math.sqrt(2220446049250313e-31),u=Math.sqrt(o);Math.sinh=function(t){if(Math.abs(t)o&&(n+=t*t*t/6),n}var i=Math.exp(t),e=1/i;return isFinite(i)?isFinite(e)?(i-e)/2:-Math.exp(-t-Math.LN2):Math.exp(t-Math.LN2)}}void 0===Math.clz32&&(Math.clz32=(r=Math.log,s=Math.LN2,function(t){var n=t>>>0;return 0===n?32:31-(r(n)/s|0)|0})),void 0===String.prototype.endsWith&&Object.defineProperty(String.prototype,"endsWith",{value:function(t,n){var i=this.toString();(void 0===n||n>i.length)&&(n=i.length),n-=t.length;var e=i.indexOf(t,n);return-1!==e&&e===n}}),void 0===String.prototype.startsWith&&Object.defineProperty(String.prototype,"startsWith",{value:function(t,n){return n=n||0,this.lastIndexOf(t,n)===n}}),void 0===Math.imul&&(Math.imul=function(t,n){return(4294901760&t)*(65535&n)+(65535&t)*(0|n)|0}),void 0===(e="function"==typeof(i=function(t){"use strict";var n,i,e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt,ct,ft,vt,dt,wt,pt,mt,gt,bt,$t,yt,kt,xt,St,Et,Ct,qt,Ot,zt=Math.clz32,At=ArrayBuffer.isView,Tt=Math.imul;function It(t){return t===a_()?this:t.ig(this,s_)}function Dt(t){return Gs(this.g2(),t)?Jo(this,r_)?this:ro():null}function jt(t,n){return n(t,this)}function Mt(t){return Gs(this.g2(),t)?a_():this}function Nt(){}function Rt(){}function Pt(){}function Lt(){}function Ft(){this.MIN_VALUE=-128,this.MAX_VALUE=127,this.SIZE_BYTES=1,this.SIZE_BITS=8}function Ut(){this.MIN_VALUE=-32768,this.MAX_VALUE=32767,this.SIZE_BYTES=2,this.SIZE_BITS=16}function Ht(){this.MIN_VALUE=-2147483648,this.MAX_VALUE=2147483647,this.SIZE_BYTES=4,this.SIZE_BITS=32}function Vt(){this.MIN_VALUE=14e-46,this.MAX_VALUE=34028235e31,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=4,this.SIZE_BITS=32}function Bt(){this.MIN_VALUE=5e-324,this.MAX_VALUE=17976931348623157e292,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=8,this.SIZE_BITS=64}function Yt(){}function Wt(){}function Gt(t){return!(t==t)}function Kt(t){return 32-zt(~(0|t|-t))|0}function Xt(t){return function(t){if(t.d1())return[];for(var n=t.n(),i=ys(Array(n),null),e=t.v(),r=0;e.w();){var s=r;r=s+1|0,i[s]=e.y()}return i}(t)}function Jt(t){return 0===(n=[t]).length?pn():gn(new lh(n,!0));var n}function Zt(t){return vr(n=[t],Yn(n.length));var n}function Qt(t){return $h(i=zn((n=[t]).length),n),i;var n,i}function tn(t){return t}function nn(t){return t<0&&function(){throw ka("Index overflow has happened.")}(),t}function en(t,i){!function(t,i){if(t.n()<=1)return n;var e=rn(t);yn(e,i);var r=0,s=e.length;if(r=0))throw Fu(Ws("capacity must be non-negative."));return ys(Array(t),null)}function fn(t,n){t[n]=null}function vn(t,n,i){t.fill(null,n,i)}function dn(t,n){return mu(t,n)}function wn(){h=this;var t=mn(0);t.t2_1=!0,this.u2_1=t}function pn(){return t=no(to($n)),$n.call(t,[]),t;var t}function mn(t){return function(t,n){if($n.call(n,[]),!(t>=0))throw Fu(Ws("Negative initial capacity: "+t));return n}(t,no(to($n)))}function gn(t){return function(t,n){var i=rn(t);return $n.call(n,i),n}(t,no(to($n)))}function bn(t,n){return tt.v2(n,t.n()),n}function $n(t){null==h&&new wn,hn.call(this),this.s2_1=t,this.t2_1=!1}function yn(t,n){if(function(){if(null!=_)return _;_=!1;var t=[],n=0;if(n<600)do{var i=n;n=n+1|0,t.push(i)}while(n<600);var e=Sn;t.sort(e);var r=1,s=t.length;if(r=a)return!1}while(r0))throw Fu(Ws("Non-positive load factor: "+n));return i}(t,n,no(to(mi)))}function Qn(t){return t.d4_1.length}function ti(t){return t.g4_1.length}function ni(t){t.k4_1=t.k4_1+1|0}function ii(t,n){!function(t,n){var i=Qn(t)-t.i4_1|0,e=t.i4_1-t.n()|0;return i=n&&e>=(Qn(t)/4|0)}(t,n)?function(t,n){if(n<0)throw ua("too many elements");if(n>Qn(t)){var i=tt.n4(Qn(t),n);t.d4_1=dn(t.d4_1,i);var e=t,r=t.e4_1;e.e4_1=null==r?null:dn(r,i),t.f4_1=du(t.f4_1,i);var s=Gn(0,i);s>ti(t)&&si(t,s)}}(t,t.i4_1+n|0):si(t,ti(t))}function ei(t){var n=t.e4_1;if(null!=n)return n;var i=cn(Qn(t));return t.e4_1=i,i}function ri(t,n){return null==n?0:Tt(Ks(n),-1640531527)>>>t.j4_1|0}function si(t,n){var i,e,r,s;ni(t),t.i4_1>t.l4_1&&function(t){for(var n=0,i=0,e=t.e4_1;n=0&&(t.d4_1[i]=t.d4_1[n],null!=e&&(e[i]=e[n]),i=i+1|0),n=n+1|0;vn(t.d4_1,i,t.i4_1),null==e||vn(e,i,t.i4_1),t.i4_1=i}(t),n!==ti(t)?(t.g4_1=new Int32Array(n),t.j4_1=Kn(0,n)):(i=t.g4_1,e=0,r=0,s=ti(t),r=r===K?0:r,s=s===K?i.length:s,tt.q(r,s,i.length),i.fill(e,r,s));for(var o=0;o0&&Gs(t.d4_1[r-1|0],n))return r-1|0;if((e=e-1|0)<0)return-1;var s=i;i=s-1|0,0===s&&(i=ti(t)-1|0)}}function ai(t,n){for(var i=t.i4_1;(i=i-1|0)>=0;)if(t.f4_1[i]>=0&&Gs(eo(t.e4_1)[i],n))return i;return-1}function hi(t,n){t.u();t:for(;;)for(var i=ri(t,n),e=Fr(Tt(t.h4_1,2),ti(t)/2|0),r=0;;){var s=t.g4_1[i];if(s<=0){if(t.i4_1>=Qn(t)){ii(t,1);continue t}var o=t.i4_1;t.i4_1=o+1|0;var u=o;return t.d4_1[u]=n,t.f4_1[u]=i,t.g4_1[i]=u+1|0,t.l4_1=t.l4_1+1|0,ni(t),r>t.h4_1&&(t.h4_1=r),u}if(Gs(t.d4_1[s-1|0],n))return 0|-s;if((r=r+1|0)>e){si(t,Tt(ti(t),2));continue t}var a=i;i=a-1|0,0===a&&(i=ti(t)-1|0)}}function _i(t,i){fn(t.d4_1,i),function(t,i){for(var e=i,r=i,s=0,o=Fr(Tt(t.h4_1,2),ti(t)/2|0);;){var u=e;if(e=u-1|0,0===u&&(e=ti(t)-1|0),(s=s+1|0)>t.h4_1)return t.g4_1[r]=0,n;var a=t.g4_1[e];if(0===a)return t.g4_1[r]=0,n;if(a<0?(t.g4_1[r]=-1,r=e,s=0):((ri(t,t.d4_1[a-1|0])-e|0)&(ti(t)-1|0))>=s&&(t.g4_1[r]=a,t.f4_1[a-1|0]=r,r=e,s=0),(o=o-1|0)<0)return t.g4_1[r]=-1,n}}(t,t.f4_1[i]),t.f4_1[i]=-1,t.l4_1=t.l4_1-1|0,ni(t)}function li(t,n){var i=hi(t,n.g2()),e=ei(t);if(i>=0)return e[i]=n.h2(),!0;var r=e[(0|-i)-1|0];return!Gs(n.h2(),r)&&(e[(0|-i)-1|0]=n.h2(),!0)}function ci(){this.o4_1=-1640531527,this.p4_1=8,this.q4_1=2,this.r4_1=-1}function fi(t){this.s4_1=t,this.t4_1=0,this.u4_1=-1,this.v4_1=this.s4_1.k4_1,this.w4()}function vi(t){fi.call(this,t)}function di(t){fi.call(this,t)}function wi(t){fi.call(this,t)}function pi(t,n){this.q5_1=t,this.r5_1=n}function mi(t,n,i,e,r,s){this.d4_1=t,this.e4_1=n,this.f4_1=i,this.g4_1=e,this.h4_1=r,this.i4_1=s,this.j4_1=Kn(0,ti(this)),this.k4_1=0,this.l4_1=0,this.m4_1=!1}function gi(){}function bi(){return Cn(t=no(to(yi))),yi.call(t),t;var t}function $i(t){return function(t,n){return On(t,n),yi.call(n),n}(t,no(to(yi)))}function yi(){}function ki(){return Un(t=no(to(Ci))),Ci.call(t),t;var t}function xi(t){return function(t,n){return Vn(t,n),Ci.call(n),n}(t,no(to(Ci)))}function Si(t,n){return function(t,n,i){Bn(t,n,i),Ci.call(i)}(t,1,n),n}function Ei(t){return Si(t,no(to(Ci)))}function Ci(){}function qi(t,n){return Xu(t,n),zi.call(n),n}function Oi(t,n,i){return Zu(t,n,i),zi.call(i),i}function zi(){Qs(this,zi)}function Ai(t){var n;if(Gt(t))throw Fu("Cannot round NaN value.");return ao(),t>new ho(-1,2147483647).c6()?(ao(),n=new ho(-1,2147483647)):(ao(),t>>4|0)),i}(t,t>>31,no(to(E_)));var t}function Ii(){}function Di(t){this.d6_1=t}function ji(){c=this,Di.call(this,Object),this.i6_1="Nothing"}function Mi(){return null==c&&new ji,c}function Ni(){}function Ri(t,n,i){Di.call(this,t),this.k6_1=n,this.l6_1=i}function Pi(t){Di.call(this,t);var n=t.$metadata$;this.n6_1=null==n?null:n.simpleName}function Li(){}function Fi(t,n,i){this.o6_1=t,this.p6_1=n,this.q6_1=i}function Ui(){return d||(d=!0,f=ys(Array(0),null)),f}function Hi(t){return!(null==t)}function Vi(t){return nu(t)}function Bi(t){return null!=t&&"boolean"==typeof t}function Yi(t){return null!=t&&"number"==typeof t}function Wi(t){return null!=t&&"number"==typeof t}function Gi(t){return null!=t&&"number"==typeof t}function Ki(t){return null!=t&&"number"==typeof t}function Xi(t){return null!=t&&"number"==typeof t}function Ji(t){return null!=t&&Qo(t)}function Zi(t){return null!=t&&"string"==typeof t}function Qi(t){return t instanceof Error}function te(t){return null!=t&&eu(t)}function ne(t){return null!=t&&ou(t)}function ie(t){return null!=t&&ru(t)}function ee(t){return null!=t&&su(t)}function re(t){return null!=t&&uu(t)}function se(t){return null!=t&&hu(t)}function oe(t){return null!=t&&au(t)}function ue(t){return null!=t&&_u(t)}function ae(){v=this;var t=Object;this.anyClass=new Ri(t,"Any",Hi);var n=Number;this.numberClass=new Ri(n,"Number",Vi),this.nothingClass=Mi();var i=Boolean;this.booleanClass=new Ri(i,"Boolean",Bi);var e=Number;this.byteClass=new Ri(e,"Byte",Yi);var r=Number;this.shortClass=new Ri(r,"Short",Wi);var s=Number;this.intClass=new Ri(s,"Int",Gi);var o=Number;this.floatClass=new Ri(o,"Float",Ki);var u=Number;this.doubleClass=new Ri(u,"Double",Xi);var a=Array;this.arrayClass=new Ri(a,"Array",Ji);var h=String;this.stringClass=new Ri(h,"String",Zi);var _=Error;this.throwableClass=new Ri(_,"Throwable",Qi);var l=Array;this.booleanArrayClass=new Ri(l,"BooleanArray",te);var c=Uint16Array;this.charArrayClass=new Ri(c,"CharArray",ne);var f=Int8Array;this.byteArrayClass=new Ri(f,"ByteArray",ie);var d=Int16Array;this.shortArrayClass=new Ri(d,"ShortArray",ee);var w=Int32Array;this.intArrayClass=new Ri(w,"IntArray",re);var p=Array;this.longArrayClass=new Ri(p,"LongArray",se);var m=Float32Array;this.floatArrayClass=new Ri(m,"FloatArray",oe);var g=Float64Array;this.doubleArrayClass=new Ri(g,"DoubleArray",ue)}function he(){return null==v&&new ae,v}function _e(t){return Array.isArray(t)?function(t){var n;switch(t.length){case 1:n=le(t[0]);break;case 0:n=Mi();break;default:n=new Ni}return n}(t):le(t)}function le(t){if(t===String)return he().stringClass;var n,i=t.$metadata$;if(null!=i){var e;if(null==i.$kClass$){var r=new Pi(t);i.$kClass$=r,e=r}else e=i.$kClass$;n=e}else n=new Pi(t);return n}function ce(t){this.o7_1=t}function fe(t){Du(t,this),Qs(this,fe)}function ve(t){return de(n=no(to(pe))),n;var n}function de(t){return pe.call(t,""),t}function we(){return de(no(to(pe)))}function pe(t){this.m5_1=void 0!==t?t:""}function me(t){var n=rs(t).toUpperCase();return n.length>1?t:js(n,0)}function ge(t){return function(t){var n=es(t);return 9<=n&&n<=13||28<=n&&n<=32||160===n||n>4096&&(5760===n||8192<=n&&n<=8202||8232===n||8233===n||8239===n||8287===n||12288===n)}(t)}function be(t){return function(t){var n=es(t);return 452<=n&&n<=460||497<=n&&n<=499?Vo(Tt(3,(n+1|0)/3|0)):4304<=n&&n<=4346||4349<=n&&n<=4351?t:me(t)}(t)}function $e(t){if(!(2<=t&&t<=36))throw Fu("radix "+t+" was not in valid range 2..36");return t}function ye(t){var n,i=B_(t);return null==i?G_(t):n=i,n}function ke(t){var n=+t;return(Gt(n)&&!Se(t)||0===n&&Re(t))&&G_(t),n}function xe(t,n){var i,e,r,s=ns(t,48)>=0&&ns(t,57)<=0?is(t,48):ns(t,65)>=0&&ns(t,90)<=0?is(t,65)+10|0:ns(t,97)>=0&&ns(t,122)<=0?is(t,97)+10|0:ns(t,128)<0?-1:ns(t,65313)>=0&&ns(t,65338)<=0?is(t,65313)+10|0:ns(t,65345)>=0&&ns(t,65370)<=0?is(t,65345)+10|0:(i=es(t),e=bu(yu().sb_1,i),(r=i-yu().sb_1[e]|0)<10?r:-1);return s>=n?-1:s}function Se(t){switch(t.toLowerCase()){case"nan":case"+nan":case"-nan":return!0;default:return!1}}function Ee(){w=this,this.d8_1=new RegExp("[\\\\^$*+?.()|[\\]{}]","g"),this.e8_1=new RegExp("[\\\\$]","g"),this.f8_1=new RegExp("\\$","g")}function Ce(){return null==w&&new Ee,w}function qe(t){return t.y()}function Oe(t,n){Ce(),this.i8_1=t,this.j8_1=Er(n),this.k8_1=new RegExp(t,xr(n,"","gu",K,K,K,Te)),this.l8_1=null,this.m8_1=null}function ze(t){this.x8_1=t}function Ae(t,n,i,e){t.lastIndex=i;var r=t.exec(n);return null==r?null:new De(Yo(r.index,t.lastIndex-1|0),r,e,n)}function Te(t){return t.a9_1}function Ie(t,n){this.b9_1=t,this.c9_1=n,Ma.call(this)}function De(t,n,i,e){this.g9_1=t,this.h9_1=n,this.i9_1=i,this.j9_1=e,this.d9_1=t,this.e9_1=new Ie(n,this),this.f9_1=null}function je(t){this.k9_1=t}function Me(t,n){return Ne(),function(t,n,i){if(i=i!==K&&i,Ne(),i){var e=t.length,r=n.length,s=Math.min(e,r);if(0===s)return e-r|0;var o=0;if(o=0&&i<=t.length&&n<=i))throw Fu(Ws("Failed requirement."));for(var r=n,s=we();r=0)s.p5(Vo(u));else if(u>>5==-2){var a=Ye(t,u,r,i,e);a<=0?(s.p5(65533),r=r+(0|-a)|0):(s.p5(Vo(a)),r=r+1|0)}else if(u>>4==-2){var h=We(t,u,r,i,e);h<=0?(s.p5(65533),r=r+(0|-h)|0):(s.p5(Vo(h)),r=r+2|0)}else if(u>>3==-2){var _=Ge(t,u,r,i,e);if(_<=0)s.p5(65533),r=r+(0|-_)|0;else{var l=(_-65536|0)>>10|55296,c=1023&_|56320;s.p5(Vo(l)),s.p5(Vo(c)),r=r+3|0}}else Ke(0,r,e),s.p5(65533)}return s.toString()}function Be(t,n,i,e,r){if(Xe(),!(55296<=n&&n<=56319)||i>=e)return Ke(0,i,r);var s=es(js(t,i));return 56320<=s&&s<=57343?65536+((1023&n)<<10)|0|1023&s:Ke(0,i,r)}function Ye(t,n,i,e,r){if(Xe(),0==(30&n)||i>=e)return Ke(0,i,r);var s=t[i];return 128!=(192&s)?Ke(0,i,r):n<<6^s^3968}function We(t,n,i,e,r){if(Xe(),i>=e)return Ke(0,i,r);var s=t[i];if(0==(15&n)){if(160!=(224&s))return Ke(0,i,r)}else if(13==(15&n)){if(128!=(224&s))return Ke(0,i,r)}else if(128!=(192&s))return Ke(0,i,r);if((i+1|0)===e)return Ke(1,i,r);var o=t[i+1|0];return 128!=(192&o)?Ke(1,i,r):n<<12^s<<6^o^-123008}function Ge(t,n,i,e,r){Xe(),i>=e&&Ke(0,i,r);var s=t[i];if(0==(15&n)){if((240&s)<=128)return Ke(0,i,r)}else if(4==(15&n)){if(128!=(240&s))return Ke(0,i,r)}else{if((15&n)>4)return Ke(0,i,r);if(128!=(192&s))return Ke(0,i,r)}if((i+1|0)===e)return Ke(1,i,r);var o=t[i+1|0];if(128!=(192&o))return Ke(1,i,r);if((i+2|0)===e)return Ke(2,i,r);var u=t[i+2|0];return 128!=(192&u)?Ke(2,i,r):n<<18^s<<12^o<<6^u^3678080}function Ke(t,n,i){if(Xe(),i)throw new fe("Malformed sequence starting at "+(n-1|0));return 0|-t}function Xe(){g||(g=!0,m=new Int8Array([-17,-65,-67]))}function Je(t){return(new tr).q9(t)}function Ze(t,i,e,r){if(!Qe(t,i,e,r))return n;for(var s=t.cause;null!=s;){if(!Qe(s,i,e,"Caused by: "))return n;s=s.cause}}function Qe(t,n,i,e){n.m9_1.o5(i).o5(e);var r=t.toString();if(function(t,n){var i;t:{for(var e=t.n9_1,r=0,s=e.length;r0&&32===js(n,K_(n)-(s-1|0)|0);)s=s-1|0;return Gr(n,s)+"... and "+(e-1|0)+" more common stack frames skipped"}(n,o,a),Ns(i)>0){var h;if(0===a)h=0;else{for(var _=0,l=0;l=f&&n.m9_1.o5(i),n.m9_1.o5(w).o5("\n")}}else n.m9_1.o5(o).o5("\n")}else n.m9_1.o5(r).o5("\n");var m=function(t){var n=t._suppressed,i=null==n?null:n;return null==i?rh():i}(t);if(!m.d1())for(var g=i+" ",b=m.v();b.w();)Ze(b.y(),n,g,"Suppressed: ");return!0}function tr(){this.m9_1=we(),this.n9_1=[],this.o9_1="",this.p9_1=0}function nr(){if(C)return n;C=!0,b=new ir("NANOSECONDS",0,1),$=new ir("MICROSECONDS",1,1e3),y=new ir("MILLISECONDS",2,1e6),k=new ir("SECONDS",3,1e9),x=new ir("MINUTES",4,6e10),S=new ir("HOURS",5,36e11),E=new ir("DAYS",6,864e11)}function ir(t,n,i){ms.call(this,t,n),this.t9_1=i}function er(t,n,i){var e=Us(n.t9_1,i.t9_1);return e>0?t*(n.t9_1/i.t9_1):e<0?t/(i.t9_1/n.t9_1):t}function rr(t,n,i){var e,r=Us(n.t9_1,i.t9_1);if(r>0){var s,o=Ho(n.t9_1/i.t9_1),u=t.y9(o);u.x9(o).equals(t)?s=u:t.z9(new ho(0,0))>0?(ao(),s=new ho(-1,2147483647)):(ao(),s=new ho(0,-2147483648)),e=s}else e=r<0?t.x9(Ho(i.t9_1/n.t9_1)):t;return e}function sr(t,n,i){var e=Us(n.t9_1,i.t9_1);return e>0?t.y9(Ho(n.t9_1/i.t9_1)):e<0?t.x9(Ho(i.t9_1/n.t9_1)):t}function or(){return nr(),b}function ur(){return nr(),y}function ar(){return nr(),k}function hr(){return nr(),x}function _r(){return nr(),S}function lr(){return nr(),E}function cr(t,n){return fr(t,n)>=0}function fr(t,n){if(null==n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,null==t[r])return r}while(i<=e)}else{var s=0,o=t.length-1|0;if(s<=o)do{var u=s;if(s=s+1|0,Gs(n,t[u]))return u}while(s<=o)}return-1}function vr(t,n){for(var i=0,e=t.length;i=0}function mr(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function gr(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function br(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function $r(t,n,i,e,r,s,o){return n=n===K?", ":n,i=i===K?"":i,e=e===K?"":e,r=r===K?-1:r,s=s===K?"...":s,o=o===K?null:o,function(t,n,i,e,r,s,o,u){i=i===K?", ":i,e=e===K?"":e,r=r===K?"":r,s=s===K?-1:s,o=o===K?"...":o,u=u===K?null:u,n.p7(e);var a=0,h=0,_=t.length;t:for(;h<_;){var l=t[h];if(h=h+1|0,(a=a+1|0)>1&&n.p7(i),!(s<0||a<=s))break t;L_(n,l,u)}return s>=0&&a>s&&n.p7(o),n.p7(r),n}(t,we(),n,i,e,r,s,o).toString()}function yr(t,n){return n>=0&&n<=dr(t)?t[n]:null}function kr(t){this.aa_1=t}function xr(t,n,i,e,r,s,o){return n=n===K?", ":n,i=i===K?"":i,e=e===K?"":e,r=r===K?-1:r,s=s===K?"...":s,o=o===K?null:o,Sr(t,we(),n,i,e,r,s,o).toString()}function Sr(t,n,i,e,r,s,o,u){i=i===K?", ":i,e=e===K?"":e,r=r===K?"":r,s=s===K?-1:s,o=o===K?"...":o,u=u===K?null:u,n.p7(e);var a=0,h=t.v();t:for(;h.w();){var _=h.y();if((a=a+1|0)>1&&n.p7(i),!(s<0||a<=s))break t;L_(n,_,u)}return s>=0&&a>s&&n.p7(o),n.p7(r),n}function Er(t){if(Jo(t,hs)){var n;switch(t.n()){case 0:n=Zh();break;case 1:n=Zt(Jo(t,as)?t.h1(0):t.v().y());break;default:n=Ir(t,Ei(t.n()))}return n}return function(t){switch(t.n()){case 0:return Zh();case 1:return Zt(t.v().y());default:return t}}(Ir(t,ki()))}function Cr(t,n){if(Jo(n,hs)){var i=mn(t.n()+n.n()|0);return i.z(t),i.z(n),i}var e=gn(t);return yh(e,n),e}function qr(t){return new Mr(t)}function Or(t){if(Jo(t,hs)){var n;switch(t.n()){case 0:n=rh();break;case 1:n=Jt(Jo(t,as)?t.h1(0):t.v().y());break;default:n=Ar(t)}return n}return uh(Dr(t))}function zr(t){if(Jo(t,as))return function(t){var n;switch(t.n()){case 0:throw fa("List is empty.");case 1:n=t.h1(0);break;default:throw Fu("List has more than one element.")}return n}(t);var n=t.v();if(!n.w())throw fa("Collection is empty.");var i=n.y();if(n.w())throw Fu("Collection has more than one element.");return i}function Ar(t){return gn(t)}function Tr(t){if(Jo(t,as))return jr(t);var n=t.v();if(!n.w())throw fa("Collection is empty.");return n.y()}function Ir(t,n){for(var i=t.v();i.w();){var e=i.y();n.s(e)}return n}function Dr(t){return Jo(t,hs)?Ar(t):Ir(t,pn())}function jr(t){if(t.d1())throw fa("List is empty.");return t.h1(0)}function Mr(t){this.ba_1=t}function Nr(t,n){return n<=r.MIN_VALUE?q_().ca_1:Yo(t,n-1|0)}function Rr(t,n){return wt.da(t,n,-1)}function Pr(t,n,i){if(n.z9(i)>0)throw Fu("Cannot coerce value to an empty range: maximum "+i.toString()+" is less than minimum "+n.toString()+".");return t.z9(n)<0?n:t.z9(i)>0?i:t}function Lr(t,n){return tn?n:t}function Ur(t,n,i){if(n>i)throw Fu("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t}function Hr(t,n){return new Th(t,n)}function Vr(t){var n=t.v();if(!n.w())return rh();var i=n.y();if(!n.w())return Jt(i);var e=pn();for(e.s(i);n.w();)e.s(n.y());return e}function Br(t){return new Yr(t)}function Yr(t){this.ka_1=t}function Wr(t){if(0===Ns(t))throw fa("Char sequence is empty.");return js(t,K_(t))}function Gr(t,n){if(!(n>=0))throw Fu(Ws("Requested character count "+n+" is less than zero."));return Kr(t,Lr(t.length-n|0,0))}function Kr(t,n){if(!(n>=0))throw Fu(Ws("Requested character count "+n+" is less than zero."));var i=Fr(n,t.length);return t.substring(0,i)}function Xr(t,n){if(!(n>=0))throw Fu(Ws("Requested character count "+n+" is less than zero."));var i=Fr(n,t.length);return t.substring(i)}function Jr(){var t,n=(ra(t=no(to(Zr))),Zr.call(t),t);return Qs(n,Jr),n}function Zr(){Qs(this,Zr)}function Qr(t){return t}function ts(t){return 65535&t}function ns(t,n){return t-n|0}function is(t,n){return t-n|0}function es(t){return t}function rs(t){return String.fromCharCode(t)}function ss(){O=this,this.ma_1=0,this.na_1=65535,this.oa_1=55296,this.pa_1=56319,this.qa_1=56320,this.ra_1=57343,this.sa_1=55296,this.ta_1=57343,this.ua_1=2,this.va_1=16}function os(){return null==O&&new ss,O}function us(t){os(),this.la_1=t}function as(){}function hs(){}function _s(){}function ls(){}function cs(){}function fs(){}function vs(){}function ds(){}function ws(){}function ps(){}function ms(t,n){this.u9_1=t,this.v9_1=n}function gs(t){var n=null==t?null:Ws(t);return null==n?"null":n}function bs(t,n){var i=null==t?null:Ws(t),e=null==i?"null":i,r=null==n?null:Ws(n);return e+(null==r?"null":r)}function $s(t){for(var n=1,i=[],e=0,r=t.length;e>5,f=new Int32Array(c+1|0),v=1<<(31&l),f[c]=f[c]|v,f);null!=_&&(i.push(_),o=Math.max(o,_.length)),o>n&&(n=o)}var l,c,f,v;return function(t,n){for(var i=0,e=new Int32Array(t);i65535),e)throw Fu("Invalid Char code: "+r);i=Vo(r)}else i=t.b(n);return i}function Ms(t){return"string"==typeof t}function Ns(t){return Ms(t)?t.length:t.a()}function Rs(t,n,i){return Ms(t)?t.substring(n,i):t.c(n,i)}function Ps(t,n){var i=t,e=n;if(i===e)return!0;if(null==i||null==e||!Ko(e)||i.length!=e.length)return!1;var r=0,s=i.length;if(rn)i=1;else if(t===n){var e;if(0!==t)e=0;else{var r=1/t;e=r===1/n?0:r<0?-1:1}i=e}else i=t!=t?n!=n?0:1:-1;return i}function Vs(t,n){return tn?1:0}function Bs(t){if(!("kotlinHashCodeValue$"in t)){var n=Ys(),i=new Object;i.value=n,i.enumerable=!1,Object.defineProperty(t,"kotlinHashCodeValue$",i)}return t.kotlinHashCodeValue$}function Ys(){return 4294967296*Math.random()|0}function Ws(t){return null==t?"null":Ko(t)?"[...]":"function"!=typeof t.toString?Xs(t):t.toString()}function Gs(t,n){return null==t?null==n:null!=n&&("object"==typeof t&&"function"==typeof t.equals?t.equals(n):t!=t?n!=n:"number"==typeof t&&"number"==typeof n?t===n&&(0!==t||1/t==1/n):t===n)}function Ks(t){if(null==t)return 0;var n,i=typeof t;switch(i){case"object":n="function"==typeof t.hashCode?t.hashCode():Bs(t);break;case"function":n=Bs(t);break;case"number":n=Is(t);break;case"boolean":n=Js(t);break;case"string":n=Zs(String(t));break;case"bigint":n=function(t){for(var n=BigInt(32),i=BigInt(4294967295),e=t<0?-t:t,r=0,s=t<0?-1:1;0!=e;){var o=Number(e&i);r=Tt(31,r)+o|0,e>>=n}return Tt(r,s)}(t);break;case"symbol":n=function(t){var n=(e=t,Symbol.keyFor(e)!=K?(M===K&&(M=new Map),M):(N===K&&(N=new WeakMap),N)),i=n.get(t);var e;if(i!==K)return i;var r=Ys();return n.set(t,r),r}(t);break;default:n=function(){throw new Error("Unexpected typeof `"+i+"`")}()}return n}function Xs(t){return Object.prototype.toString.call(t)}function Js(t){return t?1231:1237}function Zs(t){var n=0,i=0,e=t.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=t.charCodeAt(r);n=Tt(n,31)+s|0}while(r!==e);return n}function Qs(t,n){null!=Error.captureStackTrace?Error.captureStackTrace(t,n):t.stack=(new Error).stack}function to(t){return t.prototype}function no(t){return Object.create(t)}function io(t,n,i){Error.call(t),function(t,n,i){var e=cu(Object.getPrototypeOf(t));if(0==(1&e)){var r;if(null==n){var s;if(null!==n){var o=null==i?null:i.toString();s=null==o?K:o}else s=K;r=s}else r=n;t.message=r}0==(2&e)&&(t.cause=i),t.name=Object.getPrototypeOf(t).constructor.name}(t,n,i)}function eo(t){var n;return null==t?function(){throw Ca()}():n=t,n}function ro(){throw Aa()}function so(t,n){for(var i=t.length,e=n.length,r=0,s=n;rr)for(e.length=n;r>>16|0,e=65535&t.m_1,r=t.l_1>>>16|0,s=65535&t.l_1,o=n.m_1>>>16|0,u=65535&n.m_1,a=n.l_1>>>16|0,h=0,_=0,l=0,c=0;return h=(h=h+((_=(_=_+((l=(l=l+((c=c+(s+(65535&n.l_1)|0)|0)>>>16|0)|0)+(r+a|0)|0)>>>16|0)|0)+(e+u|0)|0)>>>16|0)|0)+(i+o|0)|0,new ho((l&=65535)<<16|(c&=65535),(h&=65535)<<16|(_&=65535))}function mo(t,n){return Do(),po(t,n.ib())}function go(t,n){if(Do(),Co(t))return _o();if(Co(n))return _o();if(ko(t,fo()))return qo(n)?fo():_o();if(ko(n,fo()))return qo(t)?fo():_o();if(Eo(t))return Eo(n)?go(Oo(t),Oo(n)):Oo(go(Oo(t),n));if(Eo(n))return Oo(go(t,Oo(n)));if(zo(t,vo())&&zo(n,vo()))return Ao(yo(t)*yo(n));var i=t.m_1>>>16|0,e=65535&t.m_1,r=t.l_1>>>16|0,s=65535&t.l_1,o=n.m_1>>>16|0,u=65535&n.m_1,a=n.l_1>>>16|0,h=65535&n.l_1,_=0,l=0,c=0,f=0;return c=c+((f=f+Tt(s,h)|0)>>>16|0)|0,f&=65535,l=(l=l+((c=c+Tt(r,h)|0)>>>16|0)|0)+((c=(c&=65535)+Tt(s,a)|0)>>>16|0)|0,c&=65535,_=(_=(_=_+((l=l+Tt(e,h)|0)>>>16|0)|0)+((l=(l&=65535)+Tt(r,a)|0)>>>16|0)|0)+((l=(l&=65535)+Tt(s,u)|0)>>>16|0)|0,l&=65535,_=_+(((Tt(i,h)+Tt(e,a)|0)+Tt(r,u)|0)+Tt(s,o)|0)|0,new ho(c<<16|f,(_&=65535)<<16|l)}function bo(t,n){Do();var i=63&n;return 0===i?t:i<32?new ho(t.l_1<>>(32-i|0)|0):new ho(0,t.l_1<<(i-32|0))}function $o(t,n){Do();var i=63&n;return 0===i?t:i<32?new ho(t.l_1>>>i|0|t.m_1<<(32-i|0),t.m_1>>i):new ho(t.m_1>>(i-32|0),t.m_1>=0?0:-1)}function yo(t){return Do(),4294967296*t.m_1+function(t){return Do(),t.l_1>=0?t.l_1:4294967296+t.l_1}(t)}function ko(t,n){return Do(),t.m_1===n.m_1&&t.l_1===n.l_1}function xo(t,n){if(Do(),n<2||36=0x8000000000000000)return Do(),U;if(t<0)return Oo(Ao(-t));var n=4294967296;return new ho(t%n|0,t/n|0)}function To(t,n){return Do(),wo(t,n)>0}function Io(t,n){return Do(),wo(t,n)>=0}function Do(){B||(B=!0,P=So(0),L=So(1),F=So(-1),U=new ho(-1,2147483647),H=new ho(0,-2147483648),V=So(16777216))}function jo(t,n,i,e,r){return Mo("class",t,n,i,e,r,null)}function Mo(t,n,i,e,r,s,o){return{kind:t,simpleName:n,associatedObjectKey:e,associatedObjects:r,suspendArity:s,$kClass$:K,defaultConstructor:i,iid:o}}function No(t,n,i,e,r,s,o,u,a){null!=e&&(t.prototype=Object.create(e.prototype),t.prototype.constructor=t);var h=i(n,s,o,u,null==a?[]:a);t.$metadata$=h,null!=r&&((null!=h.iid?t:t.prototype).$imask$=$s(r))}function Ro(t,n,i,e,r){return Mo("interface",t,n,i,e,r,(Y===K&&(Y=0),Y=Y+1|0))}function Po(t,n,i,e,r){return Mo("object",t,n,i,e,r,null)}function Lo(t){return t<<24>>24}function Fo(t){return t instanceof ho?t.ia():function(t){return t>2147483647?2147483647:t<-2147483648?-2147483648:0|t}(t)}function Uo(t){return t<<16>>16}function Ho(t){return t instanceof ho?t:Ao(t)}function Vo(t){return ts(Uo(Fo(t)))}function Bo(t){return So(t)}function Yo(t,n){return new O_(t,n)}function Wo(){return Go(),jo(K,K,K,K,K)}function Go(){if(!G){G=!0;var t=[Wo(),Wo()],n=[Wo(),Wo()];W=[t,n,[Wo(),Wo()]]}}function Ko(t){return!!Xo(t)||At(t)}function Xo(t){return Array.isArray(t)}function Jo(t,n){return Zo(t,n.$metadata$.iid)}function Zo(t,n){var i=t.$imask$;return null!=i&&function(t,n){var i=n>>5;if(i>t.length)return!1;var e=1<<(31&n);return!(0==(t[i]&e))}(i,n)}function Qo(t){return!!Xo(t)&&!t.$type$}function tu(t,n){if("function"==typeof t)return t.$arity===n;var i=null==t?null:t.constructor,e=null==i?null:i.$metadata$,r=null==e?null:e.suspendArity;if(null==r)return!1;var s=r,o=!1,u=0,a=s.length;t:for(;u=0))throw Fu(Ws("Invalid new array size: "+n+"."));return so(t,new Int32Array(n))}function wu(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));return so(t,new Int8Array(n))}function pu(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)}function mu(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));return oo(t,n,null)}function gu(t,n,i){for(var e=new Int32Array(i),r=0,s=0,o=0,u=0,a=t.length;u(s=t[r=(i+e|0)/2|0]))i=r+1|0;else{if(n===s)return r;e=r-1|0}return r-(n=t.jd_1.length?n-t.jd_1.length|0:n}function Qa(t,n){return n===dr(t.jd_1)?0:n+1|0}function th(t,n){return 0===n?dr(t.jd_1):n-1|0}function nh(){it=this,this.ld_1=[],this.md_1=10}function ih(){return null==it&&new nh,it}function eh(){ih(),this.id_1=0,this.kd_1=0}function rh(){return _h()}function sh(t){return t.n()-1|0}function oh(t){return Yo(0,t.n()-1|0)}function uh(t){switch(t.n()){case 0:return rh();case 1:return Jt(t.h1(0));default:return t}}function ah(t){return 0===t.length?pn():gn(new lh(t,!0))}function hh(){et=this,this.vd_1=new ho(-1478467534,-1720727600)}function _h(){return null==et&&new hh,et}function lh(t,n){this.zd_1=t,this.ae_1=n}function ch(){}function fh(t,n){this.de_1=t,this.ee_1=n}function vh(t,n){return Jo(t,hs)?t.n():n}function dh(t){this.fe_1=t}function wh(t){this.ge_1=t,this.he_1=0}function ph(){}function mh(){var t=(null==st&&new gh,st);return Jo(t,vs)?t:ro()}function gh(){st=this,this.je_1=new ho(-888910638,1920087921)}function bh(t,n){return function(t,n){for(var i=n.v();i.w();){var e=i.y(),r=e.oe(),s=e.pe();t.e2(r,s)}}(n,t),n}function $h(t,n){for(var i=0,e=n.length;i=0))throw Fu(Ws("count must be non-negative, but was "+this.vf_1+"."))}function Bh(t){t.wf_1=-2===t.xf_1?t.yf_1.zf_1():t.yf_1.ag_1(eo(t.wf_1)),t.xf_1=null==t.wf_1?0:1}function Yh(t){this.yf_1=t,this.wf_1=null,this.xf_1=-2}function Wh(t,n){this.zf_1=t,this.ag_1=n}function Gh(){}function Kh(t){this.bg_1=t}function Xh(t){return t.v()}function Jh(t){return t}function Zh(){return t_()}function Qh(){ut=this,this.cg_1=new ho(1993859828,793161749)}function t_(){return null==ut&&new Qh,ut}function n_(){}function i_(){}function e_(){}function r_(){}function s_(t,n){var i,e=t.hg(n.g2());if(e===a_())i=n;else{var r,s=e.hc(at);if(null==s)r=new c_(e,n);else{var o=e.hg(at);r=o===a_()?new c_(n,s):new c_(new c_(o,n),s)}i=r}return i}function o_(){}function u_(){ht=this,this.kg_1=new ho(0,0)}function a_(){return null==ht&&new u_,ht}function h_(t){for(var n=t,i=2;;){var e=n.lg_1,r=e instanceof c_?e:null;if(null==r)return i;n=r,i=i+1|0}}function __(t,n){return Gs(t.hc(n.g2()),n)}function l_(t,n){return 0===Ns(t)?Ws(n):t+", "+n}function c_(t,n){this.lg_1=t,this.mg_1=n}function f_(t,n){this.dg_1=n;var i;i=t instanceof f_?t.eg_1:t,this.eg_1=i}function v_(t){this.ng_1=t}function d_(){return function(){if(lt)return n;lt=!0,_t=new w_("COROUTINE_SUSPENDED",0),new w_("UNDECIDED",1),new w_("RESUMED",2)}(),_t}function w_(t,n){ms.call(this,t,n)}function p_(t){Pa.call(this),this.og_1=t}function m_(t,n,i){var e;if(i>0)e=t>=n?n:n-g_(n,t,i)|0;else{if(!(i<0))throw Fu("Step is zero.");e=t<=n?n:n+g_(t,n,0|-i)|0}return e}function g_(t,n,i){return b_(b_(t,i)-b_(n,i)|0,i)}function b_(t,n){var i=t%n|0;return i>=0?i:i+n|0}function $_(){ct=this,k_.call(this),this.rg_1=Ti()}function y_(){return null==ct&&new $_,ct}function k_(){y_()}function x_(t,n){if(!(n>t))throw Fu(Ws(function(t,n){return"Random range is empty: ["+Ws(t)+", "+Ws(n)+")."}(t,n)))}function S_(){ft=this,this.vg_1=new ho(0,0)}function E_(t,n,i,e,r,s){if(null==ft&&new S_,k_.call(this),this.wg_1=t,this.xg_1=n,this.yg_1=i,this.zg_1=e,this.ah_1=r,this.bh_1=s,0==(this.wg_1|this.xg_1|this.yg_1|this.zg_1|this.ah_1))throw Fu(Ws("Initial state must have at least one non-zero element."));var o=0;if(o<64)do{o=o+1|0,this.qe()}while(o<64)}function C_(){vt=this,this.ca_1=new O_(1,0)}function q_(){return null==vt&&new C_,vt}function O_(t,n){q_(),j_.call(this,t,n,1)}function z_(){dt=this,this.dh_1=new A_(1,0)}function A_(t,n){null==dt&&new z_,N_.call(this,t,n,1)}function T_(t,n,i){xh.call(this),this.nh_1=i,this.oh_1=n,this.ph_1=this.nh_1>0?t<=n:t>=n,this.qh_1=this.ph_1?t:this.oh_1}function I_(t,n,i){Sh.call(this),this.rh_1=i,this.sh_1=n,this.th_1=this.rh_1>0?ns(t,n)<=0:ns(t,n)>=0;var e;e=this.th_1?t:this.sh_1,this.uh_1=e}function D_(){}function j_(t,n,i){if(0===i)throw Fu("Step must be non-zero.");if(i===r.MIN_VALUE)throw Fu("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.ea_1=t,this.fa_1=m_(t,n,i),this.ga_1=i}function M_(){}function N_(t,n,i){if(0===i)throw Fu("Step must be non-zero.");if(i===r.MIN_VALUE)throw Fu("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.ih_1=t;var e=t,s=n;this.jh_1=Vo(m_(e,s,i)),this.kh_1=i}function R_(){}function P_(){}function L_(t,n,i){null!=i?t.p7(i(n)):null==n||iu(n)?t.p7(n):n instanceof us?t.p5(n.la_1):t.p7(gs(n))}function F_(t,n,i){if(t===n)return!0;if(!(i=i!==K&&i))return!1;var e=me(t),r=me(n);return e===r||js(rs(e).toLowerCase(),0)===js(rs(r).toLowerCase(),0)}function U_(t){return 0===Ns(t)?V_:(n=t,function(t){return n+t});var n}function H_(t){var n;t:{var i=0,e=Ns(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!ge(js(t,r))){n=r;break t}}while(i<=e);n=-1}var s=n;return-1===s?t.length:s}function V_(t){return t}function B_(t){return function(t,n){$e(n);var i,e,r,s=t.length;if(0===s)return null;var o=js(t,0);if(ns(o,48)<0){if(1===s)return null;if(i=1,45===o)e=!0,ao(),r=new ho(0,-2147483648);else{if(43!==o)return null;e=!1,ao(),r=new ho(-1,2147483647).ib()}}else i=0,e=!1,ao(),r=new ho(-1,2147483647).ib();ao();var u=new ho(-1,2147483647).ib().x9(Bo(36)),a=u,h=new ho(0,0),_=i;if(_=0}function Q_(t,n,i,e){var r;if(i=i===K?K_(t):i,(e=e!==K&&e)||"string"!=typeof t)r=function(t,n,i,e){if(i=i===K?K_(t):i,!(e=e!==K&&e)&&1===n.length&&"string"==typeof t){var r=rs(wr(n));return t.lastIndexOf(r,i)}var s=Fr(i,K_(t));if(0<=s)do{var o=s;s=s+-1|0;var u,a=js(t,o);t:{for(var h=0,_=n.length;h<_;){var l=n[h];if(h=h+1|0,F_(l,a,e)){u=!0;break t}}u=!1}if(u)return o}while(0<=s);return-1}(t,Cs([n]),i,e);else{var s=rs(n);r=t.lastIndexOf(s,i)}return r}function tl(t,n,i){return i=i!==K&&i,Ns(t)>0&&F_(js(t,0),n,i)}function nl(t,n,i,e){return i=i===K?0:i,(e=e!==K&&e)||"string"!=typeof t?ol(t,n,i,Ns(t),e):t.indexOf(n,i)}function il(t,n,i,e){if(i=i===K?0:i,!(e=e!==K&&e)&&1===n.length&&"string"==typeof t){var r=rs(wr(n));return t.indexOf(r,i)}var s=Lr(i,0),o=K_(t);if(s<=o)do{var u=s;s=s+1|0;var a,h=js(t,u);t:{for(var _=0,l=n.length;_0,u=mn(o?Fr(e,10):10);t:do{var a=Ws(Rs(t,r,s));if(u.s(a),r=s+n.length|0,o&&u.n()===(e-1|0))break t;s=nl(t,n,r,i)}while(-1!==s);var h=Ws(Rs(t,r,Ns(t)));return u.s(h),u}function rl(t,n){return Ws(Rs(t,n.v8(),n.w8()+1|0))}function sl(t,n,i,e,r){return i=i===K?0:i,e=e!==K&&e,al(r=r===K?0:r),new ll(t,i,r,(s=vu(n),o=e,function(t,n){var i=function(t,n,i,e,r){if(!e&&1===n.n()){var s=zr(n),o=r?cl(t,s,i):nl(t,s,i);return o<0?null:lc(o,s)}var u=r?Rr(Fr(i,K_(t)),0):Yo(Lr(i,0),Ns(t));if("string"==typeof t){var a=u.ea_1,h=u.fa_1,_=u.ga_1;if(_>0&&a<=h||_<0&&h<=a)do{var l,c=a;a=a+_|0;t:{for(var f=n.v();f.w();){var v=f.y();if(Le(v,0,t,c,v.length,e)){l=v;break t}}l=null}if(null!=l)return lc(c,l)}while(c!==h)}else{var d=u.ea_1,w=u.fa_1,p=u.ga_1;if(p>0&&d<=w||p<0&&w<=d)do{var m,g=d;d=d+p|0;t:{for(var b=n.v();b.w();){var $=b.y();if(ul($,0,t,g,$.length,e)){m=$;break t}}m=null}if(null!=m)return lc(g,m)}while(g!==w)}return null}(t,s,n,o,!1);return null==i?null:lc(i.me_1,i.ne_1.length)}));var s,o}function ol(t,n,i,e,r,s){var o=(s=s!==K&&s)?Rr(Fr(i,K_(t)),Lr(e,0)):Yo(Lr(i,0),Fr(e,Ns(t)));if("string"==typeof t&&"string"==typeof n){var u=o.ea_1,a=o.fa_1,h=o.ga_1;if(h>0&&u<=a||h<0&&a<=u)do{var _=u;if(u=u+h|0,Le(n,0,t,_,Ns(n),r))return _}while(_!==a)}else{var l=o.ea_1,c=o.fa_1,f=o.ga_1;if(f>0&&l<=c||f<0&&c<=l)do{var v=l;if(l=l+f|0,ul(n,0,t,v,Ns(n),r))return v}while(v!==c)}return-1}function ul(t,n,i,e,r,s){if(e<0||n<0||n>(Ns(t)-r|0)||e>(Ns(i)-r|0))return!1;var o=0;if(o=0))throw Fu(Ws("Limit must be non-negative, but was "+t))}function hl(t){if(t.xh_1<0)t.vh_1=0,t.yh_1=null;else{var n;if(t.ai_1.di_1>0?(t.zh_1=t.zh_1+1|0,n=t.zh_1>=t.ai_1.di_1):n=!1,n||t.xh_1>Ns(t.ai_1.bi_1))t.yh_1=Yo(t.wh_1,K_(t.ai_1.bi_1)),t.xh_1=-1;else{var i=t.ai_1.ei_1(t.ai_1.bi_1,t.xh_1);if(null==i)t.yh_1=Yo(t.wh_1,K_(t.ai_1.bi_1)),t.xh_1=-1;else{var e=i.oe(),r=i.pe();t.yh_1=Nr(t.wh_1,e),t.wh_1=e+r|0,t.xh_1=t.wh_1+(0===r?1:0)|0}}t.vh_1=1}}function _l(t){this.ai_1=t,this.vh_1=-1,this.wh_1=Ur(t.ci_1,0,Ns(t.bi_1)),this.xh_1=this.wh_1,this.yh_1=null,this.zh_1=0}function ll(t,n,i,e){this.bi_1=t,this.ci_1=n,this.di_1=i,this.ei_1=e}function cl(t,n,i,e){return i=i===K?K_(t):i,(e=e!==K&&e)||"string"!=typeof t?ol(t,n,i,0,e,!0):t.lastIndexOf(n,i)}function fl(t){return Vr(J_(t))}function vl(t,n,i){return i=i===K?32:i,Ws(function(t,n,i){if(i=i===K?32:i,n<0)throw Fu("Desired length "+n+" is less than zero.");if(n<=Ns(t))return Rs(t,0,Ns(t));var e=ve(),r=1,s=n-Ns(t)|0;if(r<=s)do{var o=r;r=r+1|0,e.p5(i)}while(o!==s);return e.p7(t),e}(iu(t)?t:ro(),n,i))}function dl(t,n,i){return(i=i!==K&&i)||"string"!=typeof t||"string"!=typeof n?ul(t,Ns(t)-Ns(n)|0,n,0,Ns(n),i):Ue(t,n)}function wl(t){if(ml(t)){var n=pl(t);if(!(new ho(387905,-1073741824).z9(n)<=0&&n.z9(new ho(-387905,1073741823))<=0))throw ga(pl(t).toString()+" ns is out of nanoseconds range")}else{var i=pl(t);if(!(new ho(1,-1073741824).z9(i)<=0&&i.z9(new ho(-1,1073741823))<=0))throw ga(pl(t).toString()+" ms is out of milliseconds range");var e=pl(t);if(new ho(1108857478,-1074).z9(e)<=0&&e.z9(new ho(-1108857478,1073))<=0)throw ga(pl(t).toString()+" ms is denormalized")}return t}function pl(t){return t.lb(1)}function ml(t){return 0==(1&t.ia())}function gl(t){return 1==(1&t.ia())}function bl(){pt=this,this.fi_1=wl(new ho(0,0)),this.gi_1=jl(new ho(-1,1073741823)),this.hi_1=jl(new ho(1,-1073741824))}function $l(){return null==pt&&new bl,pt}function yl(t){return n=pl(t).ib(),i=1&t.ia(),wl(n.kb(1).db(Bo(i)));var n,i}function kl(t,n){if(El(t)){if(function(t){return!El(t)}(n)||t.pb(n).z9(new ho(0,0))>=0)return t;throw Fu("Summing infinite durations of different signs yields an undefined result.")}if(El(n))return n;var i,e;if((1&t.ia())==(1&n.ia())){var r=pl(t).db(pl(n));i=ml(t)?(e=r,new ho(387905,-1073741824).z9(e)<=0&&e.z9(new ho(-387905,1073741823))<=0?Fl(e):jl(Pl(e))):Rl(r)}else i=gl(t)?xl(0,pl(t),pl(n)):xl(0,pl(n),pl(t));return i}function xl(t,n,i){var e,r=Pl(i),s=n.db(r);if(new ho(1108857478,-1074).z9(s)<=0&&s.z9(new ho(-1108857478,1073))<=0){var o=i.eb(Ll(r));e=Fl(Ll(s).db(o))}else e=jl(Pr(s,new ho(1,-1073741824),new ho(-1,1073741823)));return e}function Sl(t){return t.z9(new ho(0,0))<0}function El(t){return!!t.equals($l().gi_1)||t.equals($l().hi_1)}function Cl(t,n){var i=t.pb(n);if(i.z9(new ho(0,0))<0||0==(1&i.ia()))return t.z9(n);var e=(1&t.ia())-(1&n.ia())|0;return Sl(t)?0|-e:e}function ql(t){return El(t)?0:function(t){return Al(t,_r())}(t).fb(Bo(24)).ia()}function Ol(t){return El(t)?0:function(t){return Al(t,hr())}(t).fb(Bo(60)).ia()}function zl(t){return El(t)?0:function(t){return Al(t,ar())}(t).fb(Bo(60)).ia()}function Al(t,n){var i,e=t;return e.equals($l().gi_1)?(ao(),i=new ho(-1,2147483647)):e.equals($l().hi_1)?(ao(),i=new ho(0,-2147483648)):i=rr(pl(t),function(t){return ml(t)?or():ur()}(t),n),i}function Tl(t){var n,i=t;if(i.equals(new ho(0,0)))n="0s";else if(i.equals($l().gi_1))n="Infinity";else if(i.equals($l().hi_1))n="-Infinity";else{var e=Sl(t),r=we();e&&r.p5(45);var s=function(t){return Sl(t)?yl(t):t}(t),o=function(t){return Al(t,lr())}(s),u=ql(s),a=Ol(s),h=zl(s),_=function(t){var n;n=El(t)?0:gl(t)?Ll(pl(t).fb(Bo(1e3))).ia():pl(t).fb(Bo(1e9)).ia();return n}(s),l=!o.equals(new ho(0,0)),c=!(0===u),f=!(0===a),v=0!==h||!(0===_),d=0;if(l&&(r.t7(o).p5(100),d=d+1|0),c||l&&(f||v)){var w=d;d=w+1|0,w>0&&r.p5(32),r.s7(u).p5(104)}if(f||v&&(c||l)){var p=d;d=p+1|0,p>0&&r.p5(32),r.s7(a).p5(109)}if(v){var m=d;d=m+1|0,m>0&&r.p5(32),0!==h||l||c||f?Il(r,0,h,_,9,"s",!1):_>=1e6?Il(r,0,_/1e6|0,_%1e6|0,6,"ms",!1):_>=1e3?Il(r,0,_/1e3|0,_%1e3|0,3,"us",!1):r.s7(_).o5("ns")}e&&d>1&&r.v7(1,40).p5(41),n=r.toString()}return n}function Il(t,n,i,e,r,s,o){if(t.s7(i),0!==e){t.p5(46);var u,a=vl(e.toString(),r,48);t:{var h=Ns(a)-1|0;if(0<=h)do{var _=h;if(h=h+-1|0,48!==js(a,_)){u=_;break t}}while(0<=h);u=-1}var l=u+1|0;!o&&l<3?t.r7(a,0,l):t.r7(a,0,Tt((l+2|0)/3|0,3))}t.o5(s)}function Dl(t){$l(),this.ji_1=t}function jl(t){return wl(t.kb(1).db(Bo(1)))}function Ml(t,n){var i=sr(new ho(-387905,1073741823),or(),n);return i.ib().z9(t)<=0&&t.z9(i)<=0?Fl(sr(t,n,or())):jl(Pr(rr(t,n,ur()),new ho(1,-1073741824),new ho(-1,1073741823)))}function Nl(t,n){var i=er(t,n,or());if(Gt(i))throw Fu(Ws("Duration value cannot be NaN."));var e=Ai(i);return new ho(387905,-1073741824).z9(e)<=0&&e.z9(new ho(-387905,1073741823))<=0?Fl(e):Rl(Ai(er(t,n,ur())))}function Rl(t){return new ho(1108857478,-1074).z9(t)<=0&&t.z9(new ho(-1108857478,1073))<=0?Fl(Ll(t)):jl(Pr(t,new ho(1,-1073741824),new ho(-1,1073741823)))}function Pl(t){return t.x9(Bo(1e6))}function Ll(t){return t.y9(Bo(1e6))}function Fl(t){return wl(t.kb(1))}function Ul(t){var n,i,e=t.length,r=0;if(e>0&&Z_("+-",js(t,0))&&(r=r+1|0),(e-r|0)>16){var s;t:{var o=Yo(r,K_(t));if(Jo(o,hs)&&o.d1())s=!0;else{for(var u=o.v();u.w();){var a=js(t,u.y());if(!(48<=a&&a<=57)){s=!1;break t}}s=!0}}n=s}else n=!1;return n?(45===js(t,0)?(ao(),i=new ho(0,-2147483648)):(ao(),i=new ho(-1,2147483647)),i):Pe(t,"+")?ye(Xr(t,1)):ye(t)}function Hl(t,n){var i;if(n){var e;if(72===t)e=_r();else if(77===t)e=hr();else{if(83!==t)throw Fu("Invalid duration ISO time unit: "+rs(t));e=ar()}i=e}else{if(68!==t)throw Fu("Invalid or unsupported duration ISO non-time unit: "+rs(t));i=lr()}return i}function Vl(t){var n;switch(t){case"ns":n=or();break;case"us":nr(),n=$;break;case"ms":n=ur();break;case"s":n=ar();break;case"m":n=hr();break;case"h":n=_r();break;case"d":n=lr();break;default:throw Fu("Unknown duration unit short name: "+t)}return n}function Bl(){return Kl(),mt}function Yl(){}function Wl(t){this.mi_1=t}function Gl(t,n){Yl.call(this),this.ni_1=tu(t,2)?t:ro(),this.oi_1=n,this.pi_1=Jo(this,n_)?this:ro(),this.qi_1=Bl()}function Kl(){if(!gt){gt=!0;var t=d_();mt=t}}function Xl(){if(yt)return n;yt=!0,new Jl("SYNCHRONIZED",0),bt=new Jl("PUBLICATION",1),$t=new Jl("NONE",2)}function Jl(t,n){ms.call(this,t,n)}function Zl(t){this.ui_1=t,this.vi_1=kt}function Ql(){}function tc(t){return t}function nc(t){return t}function ic(t){return t instanceof sc}function ec(t){return t instanceof sc?t.xi_1:null}function rc(){}function sc(t){this.xi_1=t}function oc(t){this.yi_1=t}function uc(t){return new sc(t)}function ac(t){if(t instanceof sc)throw t.xi_1}function hc(t){wa(t=t===K?"An operation is not implemented.":t,this),Qs(this,hc)}function _c(t,n){this.me_1=t,this.ne_1=n}function lc(t,n){return new _c(t,n)}function cc(t,n,i){this.zi_1=t,this.aj_1=n,this.bj_1=i}function fc(t){return t}function vc(t){return t}function dc(){St=this,this.cj_1=0,this.dj_1=-1,this.ej_1=1,this.fj_1=8}function wc(){return null==St&&new dc,St}function pc(t,n){return Us(255&t,255&n)}function mc(t){wc(),this.gj_1=t}function gc(t){return t}function bc(t){return t}function $c(t){return t.length}function yc(t){this.ij_1=t,this.jj_1=0}function kc(t,n){return(null!=new mc(n)?new mc(n):ro())instanceof mc&&br(t,n)}function xc(t,n){var i;t:{var e=Jo(n,hs)?n:ro();if(Jo(e,hs)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof mc&&br(t,s.gj_1))){i=!1;break t}}i=!0}}return i}function Sc(t){this.lj_1=t}function Ec(t){return t}function Cc(t){return t}function qc(){Et=this,this.oj_1=0,this.pj_1=-1,this.qj_1=4,this.rj_1=32}function Oc(){return null==Et&&new qc,Et}function zc(t,n){return bf(t,n)}function Ac(t){Oc(),this.sj_1=t}function Tc(t){return t}function Ic(t){return t}function Dc(t){return t.length}function jc(t){this.uj_1=t,this.vj_1=0}function Mc(t,n){return(null!=new Ac(n)?new Ac(n):ro())instanceof Ac&&mr(t,n)}function Nc(t,n){var i;t:{var e=Jo(n,hs)?n:ro();if(Jo(e,hs)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof Ac&&mr(t,s.sj_1))){i=!1;break t}}i=!0}}return i}function Rc(t){this.xj_1=t}function Pc(){Ct=this;Oc();Oc(),this.ak_1=new Lc(-1,0)}function Lc(t,n){null==Ct&&new Pc,Uc.call(this,t,n,1)}function Fc(){}function Uc(t,n,i){if(0===i)throw Fu("Step must be non-zero.");if(i===r.MIN_VALUE)throw Fu("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.fk_1=t,this.gk_1=function(t,n,i){var e;if(i>0){var r;if(bf(t,n)>=0)r=n;else r=n-sf(n,t,i)|0;e=r}else{if(!(i<0))throw Fu("Step is zero.");var s;if(bf(t,n)<=0)s=n;else s=n+sf(t,n,0|-i)|0;e=s}return e}(t,n,i),this.hk_1=i}function Hc(t,n,i){this.jk_1=n;var e;e=i>0?bf(t,n)<=0:bf(t,n)>=0,this.kk_1=e,this.lk_1=i,this.mk_1=this.kk_1?t:this.jk_1}function Vc(t){return t}function Bc(t){return t}function Yc(){qt=this,this.nk_1=new ho(0,0),this.ok_1=new ho(-1,-1),this.pk_1=8,this.qk_1=64}function Wc(){return null==qt&&new Yc,qt}function Gc(t,n){return yf(t,n)}function Kc(t){return function(t,n){if(t.z9(new ho(0,0))>=0)return ja(t,n);var i=t.mb(1).x9(Bo(n)).kb(1),e=i.y9(Bo(n)),r=t.eb(e);return r.z9(Bo(n))>=0&&(r=r.eb(Bo(n)),i=i.db(Bo(1))),ja(i,n)+ja(r,n)}(t,10)}function Xc(t){Wc(),this.rk_1=t}function Jc(t){return t}function Zc(t){return t}function Qc(t){return t.length}function tf(t){this.tk_1=t,this.uk_1=0}function nf(t,n){return(null!=new Xc(n)?new Xc(n):ro())instanceof Xc&&pr(t,n)}function ef(t,n){var i;t:{var e=Jo(n,hs)?n:ro();if(Jo(e,hs)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof Xc&&pr(t,s.rk_1))){i=!1;break t}}i=!0}}return i}function rf(t){this.wk_1=t}function sf(t,n,i){var e,r=$f(t,i),s=$f(n,i);bf(r,s)>=0?e=r-s|0:e=(r-s|0)+i|0;return e}function of(t){return t}function uf(t){return t}function af(){Ot=this,this.zk_1=0,this.al_1=-1,this.bl_1=2,this.cl_1=16}function hf(){return null==Ot&&new af,Ot}function _f(t,n){return Us(65535&t,65535&n)}function lf(t){hf(),this.dl_1=t}function cf(t){return t}function ff(t){return t}function vf(t){return t.length}function df(t){this.fl_1=t,this.gl_1=0}function wf(t,n){return(null!=new lf(n)?new lf(n):ro())instanceof lf&&gr(t,n)}function pf(t,n){var i;t:{var e=Jo(n,hs)?n:ro();if(Jo(e,hs)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof lf&&gr(t,s.dl_1))){i=!1;break t}}i=!0}}return i}function mf(t){this.il_1=t}function gf(t,n){$e(n);var i=t.length;if(0===i)return null;Oc();var e,r=js(t,0);if(ns(r,48)<0){if(1===i||43!==r)return null;e=1}else e=0;var s,o,u,a=119304647,h=a,_=n,l=0,c=e;if(c0){if(h!==a)return null;if(bf(l,(s=_,o=void 0,u=void 0,o=Bo(-1).nb(new ho(-1,0)),u=Bo(s).nb(new ho(-1,0)),h=o.x9(u).ia()))>0)return null}var d=l=Tt(l,_);if(bf(l=l+v|0,d)<0)return null}while(c=0)return i.x9(e);var r=i.mb(1).x9(e).kb(1),s=yf(i.eb(r.y9(e)),e)>=0?1:0;return r.db(Bo(s))}return No(Nt,"CharSequence",Ro),No(Rt,"Comparable",Ro),No(Pt,"Number",jo),No(Lt,"Unit",Po),No(Ft,"ByteCompanionObject",Po),No(Ut,"ShortCompanionObject",Po),No(Ht,"IntCompanionObject",Po),No(Vt,"FloatCompanionObject",Po),No(Bt,"DoubleCompanionObject",Po),No(Yt,"StringCompanionObject",Po),No(Wt,"BooleanCompanionObject",Po),No(hs,"Collection",Ro),No(Ma,"AbstractCollection",jo,K,[hs]),No(ws,"MutableIterable",Ro),No(on,"AbstractMutableCollection",jo,Ma,[Ma,ws,hs]),No(un,"IteratorImpl",jo),No(an,"ListIteratorImpl",jo,un),No(as,"List",Ro,K,[hs]),No(ls,"MutableList",Ro,K,[as,ws,hs]),No(hn,"AbstractMutableList",jo,on,[on,ls]),No(vs,"Map",Ro),No(Wa,"AbstractMap",jo,K,[vs]),No(ds,"MutableMap",Ro,K,[vs]),No(_n,"AbstractMutableMap",jo,Wa,[Wa,ds]),No(cs,"Set",Ro,K,[hs]),No(_s,"MutableSet",Ro,K,[cs,ws,hs]),No(ln,"AbstractMutableSet",jo,on,[on,_s]),No(wn,"Companion",Po),No($n,"ArrayList",jo,hn,[hn,ls],pn),No(Tn,"HashMap",jo,_n,[_n,ds],qn),No(In,"HashMapKeys",jo,ln,[_s,ln]),No(Dn,"HashMapValues",jo,on,[ws,hs,on]),No(Mn,"HashMapEntrySetBase",jo,ln,[_s,ln]),No(jn,"HashMapEntrySet",jo,Mn),No(Nn,K,jo),No(Rn,"HashMapKeysDefault",jo,ln),No(Pn,K,jo),No(Ln,"HashMapValuesDefault",jo,on),No(Wn,"HashSet",jo,ln,[ln,_s],Hn),No(ci,"Companion",Po),No(fi,"Itr",jo),No(vi,"KeysItr",jo,fi),No(di,"ValuesItr",jo,fi),No(wi,"EntriesItr",jo,fi),No(fs,"Entry",Ro),No(pi,"EntryRef",jo,K,[fs]),No(gi,"InternalMap",Ro),No(mi,"InternalHashMap",jo,K,[gi],Xn),No(yi,"LinkedHashMap",jo,Tn,[Tn,ds],bi),No(Ci,"LinkedHashSet",jo,Wn,[Wn,_s],ki),No(Nu,"Exception",jo,Error,K,(function t(){var n=Iu(no(to(Nu)));return Qs(n,t),n})),No(_a,"RuntimeException",jo,Nu,K,sa),No(Qu,"IllegalStateException",jo,_a,K,(function t(){var n=Ku(no(to(Qu)));return Qs(n,t),n})),No(zi,"CancellationException",jo,Qu,K,(function t(){var n,i=(Ku(n=no(to(zi))),zi.call(n),n);return Qs(i,t),i})),No(Ii,"KClass",Ro),No(Di,"KClassImpl",jo,K,[Ii]),No(ji,"NothingKClassImpl",Po,Di),No(Ni,"ErrorKClass",jo,K,[Ii],Ni),No(Ri,"PrimitiveKClassImpl",jo,Di),No(Pi,"SimpleKClassImpl",jo,Di),No(Li,"KProperty1",Ro),No(Fi,"KTypeImpl",jo),No(ae,"PrimitiveClasses",Po),No(Eh,"Sequence",Ro),No(ce,"ConstrainedOnceSequence",jo,K,[Eh]),No(fe,"CharacterCodingException",jo,Nu,K,(function t(){var n,i=(n=no(to(fe)),fe.call(n,null),n);return Qs(i,t),i})),No(pe,"StringBuilder",jo,K,[Nt],we),No(Ee,"Companion",Po),No(Oe,"Regex",jo),No(ze,"MatchGroup",jo),No(Ie,K,jo,Ma,[hs,Ma]),No(De,K,jo),No(je,"sam$kotlin_Comparator$0",jo),No(tr,"ExceptionTraceBuilder",jo,K,K,tr),No(ms,"Enum",jo,K,[Rt]),No(ir,"DurationUnit",jo,ms),No(kr,K,jo,K,[Eh]),No(Mr,K,jo,K,[Eh]),No(Yr,K,jo),No(Zr,"KotlinNothingValueException",jo,_a,K,Jr),No(ss,"Companion",Po),No(us,"Char",jo,K,[Rt]),No(ps,"Companion",Po),No(qs,K,jo),No(uo,"Companion",Po),No(ho,"Long",jo,Pt,[Pt,Rt]),No($u,"Digit",Po),No(ku,"Letter",Po),No(Su,"OtherLowercase",Po),No(n_,"Continuation",Ro),No(qu,"CoroutineImpl",jo,K,[n_]),No(Ou,"CompletedContinuation",Po,K,[n_]),No(Tu,K,jo,qu),No(Bu,"IllegalArgumentException",jo,_a,K,Pu),No(Gu,"IndexOutOfBoundsException",jo,_a,K,Yu),No(ea,"UnsupportedOperationException",jo,_a,K,na),No(va,"NoSuchElementException",jo,_a,K,la),No(ma,"Error",jo,Error,K,(function t(){var n=da(no(to(ma)));return Qs(n,t),n})),No(ba,"AssertionError",jo,ma,K,(function t(){var n,i=(da(n=no(to(ba))),ba.call(n),n);return Qs(i,t),i})),No(ya,"NumberFormatException",jo,Bu,K,(function t(){var n,i=(Ru(n=no(to(ya))),ya.call(n),n);return Qs(i,t),i})),No(xa,"ArithmeticException",jo,_a,K,(function t(){var n,i=(ra(n=no(to(xa))),xa.call(n),n);return Qs(i,t),i})),No(Ea,"ConcurrentModificationException",jo,_a,K,Sa),No(qa,"NullPointerException",jo,_a,K,Ca),No(za,"NoWhenBranchMatchedException",jo,_a,K,Oa),No(Ta,"ClassCastException",jo,_a,K,Aa),No(Da,"UninitializedPropertyAccessException",jo,_a,K,(function t(){var n,i=(ra(n=no(to(Da))),Da.call(n),n);return Qs(i,t),i})),No(Na,"IteratorImpl",jo),No(Ra,"Companion",Po),No(Pa,"AbstractList",jo,Ma,[Ma,as]),No(La,K,jo),No(Fa,K,jo),No(Va,"Companion",Po),No(Ka,"AbstractSet",jo,Ma,[Ma,cs]),No(Ba,K,jo,Ka),No(Ya,K,jo,Ma),No(Ga,"Companion",Po),No(nh,"Companion",Po),No(eh,"ArrayDeque",jo,hn,K,Xa),No(hh,"EmptyList",Po,K,[as]),No(lh,"ArrayAsCollection",jo,K,[hs]),No(ch,"EmptyIterator",Po),No(fh,"IndexedValue",jo),No(dh,"IndexingIterable",jo),No(wh,"IndexingIterator",jo),No(ph,"MapWithDefault",Ro,K,[vs]),No(gh,"EmptyMap",Po,K,[vs]),No(xh,"IntIterator",jo),No(Sh,"CharIterator",jo),No(Ch,"SequenceScope",jo,K,K,K,K,K,[1]),No(Oh,"SequenceBuilderIterator",jo,Ch,[Ch,n_],Oh,K,K,[1]),No(zh,K,jo,K,[Eh]),No(Ah,K,jo),No(Th,"TransformingSequence",jo,K,[Eh]),No(Dh,K,jo),No(jh,"FilteringSequence",jo,K,[Eh]),No(Ph,K,jo),No(Lh,"FlatteningSequence",jo,K,[Eh]),No(Uh,"DropTakeSequence",Ro,K,[Eh]),No(Hh,K,jo),No(Vh,"TakeSequence",jo,K,[Eh,Uh]),No(Yh,K,jo),No(Wh,"GeneratorSequence",jo,K,[Eh]),No(Gh,"EmptySequence",Po,K,[Eh,Uh]),No(Kh,K,jo,K,[Eh]),No(Qh,"EmptySet",Po,K,[cs]),No(i_,"Key",Po),No(o_,"CoroutineContext",Ro),No(r_,"Element",Ro,K,[o_]),No(e_,"ContinuationInterceptor",Ro,K,[r_]),No(u_,"EmptyCoroutineContext",Po,K,[o_]),No(c_,"CombinedContext",jo,K,[o_]),No(f_,"AbstractCoroutineContextKey",jo),No(v_,"AbstractCoroutineContextElement",jo,K,[r_]),No(w_,"CoroutineSingletons",jo,ms),No(p_,"EnumEntriesList",jo,Pa,[as,Pa]),No(k_,"Random",jo),No($_,"Default",Po,k_),No(S_,"Companion",Po),No(E_,"XorWowRandom",jo,k_),No(C_,"Companion",Po),No(j_,"IntProgression",jo),No(R_,"ClosedRange",Ro),No(O_,"IntRange",jo,j_,[j_,R_]),No(z_,"Companion",Po),No(N_,"CharProgression",jo),No(A_,"CharRange",jo,N_,[N_,R_]),No(T_,"IntProgressionIterator",jo,xh),No(I_,"CharProgressionIterator",jo,Sh),No(D_,"Companion",Po),No(M_,"Companion",Po),No(P_,"KTypeParameter",Ro),No(_l,K,jo),No(ll,"DelimitedRangesSequence",jo,K,[Eh]),No(bl,"Companion",Po),No(Dl,"Duration",jo,K,[Rt]),No(Yl,"DeepRecursiveScope",jo,K,K,K,K,K,[1]),No(Wl,"DeepRecursiveFunction",jo),No(Gl,"DeepRecursiveScopeImpl",jo,Yl,[Yl,n_],K,K,K,[1]),No(Jl,"LazyThreadSafetyMode",jo,ms),No(Zl,"UnsafeLazyImpl",jo),No(Ql,"UNINITIALIZED_VALUE",Po),No(rc,"Companion",Po),No(sc,"Failure",jo),No(oc,"Result",jo),No(hc,"NotImplementedError",jo,ma,K,hc),No(_c,"Pair",jo),No(cc,"Triple",jo),No(dc,"Companion",Po),No(mc,"UByte",jo,K,[Rt]),No(yc,"Iterator",jo),No(Sc,"UByteArray",jo,K,[hs]),No(qc,"Companion",Po),No(Ac,"UInt",jo,K,[Rt]),No(jc,"Iterator",jo),No(Rc,"UIntArray",jo,K,[hs]),No(Pc,"Companion",Po),No(Uc,"UIntProgression",jo),No(Lc,"UIntRange",jo,Uc,[Uc,R_]),No(Fc,"Companion",Po),No(Hc,"UIntProgressionIterator",jo),No(Yc,"Companion",Po),No(Xc,"ULong",jo,K,[Rt]),No(tf,"Iterator",jo),No(rf,"ULongArray",jo,K,[hs]),No(af,"Companion",Po),No(lf,"UShort",jo,K,[Rt]),No(df,"Iterator",jo),No(mf,"UShortArray",jo,K,[hs]),to(Lt).toString=function(){return"kotlin.Unit"},to(Ft).e=function(){return this.MIN_VALUE},to(Ft).f=function(){return this.MAX_VALUE},to(Ft).g=function(){return this.SIZE_BYTES},to(Ft).h=function(){return this.SIZE_BITS},to(Ut).e=function(){return this.MIN_VALUE},to(Ut).f=function(){return this.MAX_VALUE},to(Ut).g=function(){return this.SIZE_BYTES},to(Ut).h=function(){return this.SIZE_BITS},to(Ht).e=function(){return this.MIN_VALUE},to(Ht).f=function(){return this.MAX_VALUE},to(Ht).g=function(){return this.SIZE_BYTES},to(Ht).h=function(){return this.SIZE_BITS},to(Vt).e=function(){return this.MIN_VALUE},to(Vt).f=function(){return this.MAX_VALUE},to(Vt).i=function(){return this.POSITIVE_INFINITY},to(Vt).j=function(){return this.NEGATIVE_INFINITY},to(Vt).k=function(){return this.NaN},to(Vt).g=function(){return this.SIZE_BYTES},to(Vt).h=function(){return this.SIZE_BITS},to(Bt).e=function(){return this.MIN_VALUE},to(Bt).f=function(){return this.MAX_VALUE},to(Bt).i=function(){return this.POSITIVE_INFINITY},to(Bt).j=function(){return this.NEGATIVE_INFINITY},to(Bt).k=function(){return this.NaN},to(Bt).g=function(){return this.SIZE_BYTES},to(Bt).h=function(){return this.SIZE_BITS},to(on).t=function(t){this.u();for(var n=this.v();n.w();)if(Gs(n.y(),t))return n.x(),!0;return!1},to(on).z=function(t){this.u();for(var n=!1,i=t.v();i.w();){var e=i.y();this.s(e)&&(n=!0)}return n},to(on).a1=function(t){return this.u(),n=Jo(this,ws)?this:ro(),i=t,function(t,n,i){for(var e=!1,r=t.v();r.w();)n(r.y())===i&&(r.x(),e=!0);return e}(n,(function(t){return!i.r(t)}),!0);var n,i},to(on).b1=function(){this.u();for(var t=this.v();t.w();)t.y(),t.x()},to(on).toJSON=function(){return this.toArray()},to(on).u=function(){},to(un).w=function(){return this.e1_1=0},to(hn).r1=function(t){var n;t:{for(var i=0,e=this.v();e.w();){if(Gs(e.y(),t)){n=i;break t}i=i+1|0}n=-1}return n},to(hn).s1=function(t){return new an(this,t)},to(hn).q1=function(t,n){var i=this.s1(t),e=n-t|0,r=0;if(r=this.s4_1.i4_1)throw la();var t=this.t4_1;this.t4_1=t+1|0,this.u4_1=t;var n=this.s4_1.d4_1[this.u4_1];return this.w4(),n},to(di).y=function(){if(this.x4(),this.t4_1>=this.s4_1.i4_1)throw la();var t=this.t4_1;this.t4_1=t+1|0,this.u4_1=t;var n=eo(this.s4_1.e4_1)[this.u4_1];return this.w4(),n},to(wi).y=function(){if(this.x4(),this.t4_1>=this.s4_1.i4_1)throw la();var t=this.t4_1;this.t4_1=t+1|0,this.u4_1=t;var n=new pi(this.s4_1,this.u4_1);return this.w4(),n},to(wi).k5=function(){if(this.t4_1>=this.s4_1.i4_1)throw la();var t=this.t4_1;this.t4_1=t+1|0,this.u4_1=t;var n=this.s4_1.d4_1[this.u4_1],i=null==n?null:Ks(n),e=null==i?0:i,r=eo(this.s4_1.e4_1)[this.u4_1],s=null==r?null:Ks(r),o=e^(null==s?0:s);return this.w4(),o},to(wi).l5=function(t){if(this.t4_1>=this.s4_1.i4_1)throw la();var n=this.t4_1;this.t4_1=n+1|0,this.u4_1=n;var i=this.s4_1.d4_1[this.u4_1];Gs(i,this.s4_1)?t.o5("(this Map)"):t.n5(i),t.p5(61);var e=eo(this.s4_1.e4_1)[this.u4_1];Gs(e,this.s4_1)?t.o5("(this Map)"):t.n5(e),this.w4()},to(pi).g2=function(){return this.q5_1.d4_1[this.r5_1]},to(pi).h2=function(){return eo(this.q5_1.e4_1)[this.r5_1]},to(pi).equals=function(t){return!(null==t||!Jo(t,fs)||!Gs(t.g2(),this.g2()))&&Gs(t.h2(),this.h2())},to(pi).hashCode=function(){var t=this.g2(),n=null==t?null:Ks(t),i=null==n?0:n,e=this.h2(),r=null==e?null:Ks(e);return i^(null==r?0:r)},to(pi).toString=function(){return this.g2()+"="+this.h2()},to(mi).n=function(){return this.l4_1},to(mi).m2=function(t){return ai(this,t)>=0},to(mi).o2=function(t){var n=ui(this,t);return n<0?null:eo(this.e4_1)[n]},to(mi).e3=function(t){return ui(this,t)>=0},to(mi).e2=function(t,n){var i=hi(this,t),e=ei(this);if(i<0){var r=e[(0|-i)-1|0];return e[(0|-i)-1|0]=n,r}return e[i]=n,null},to(mi).f2=function(t){this.u(),function(t,n){if(n.d1())return!1;ii(t,n.n());for(var i=n.v(),e=!1;i.w();)li(t,i.y())&&(e=!0)}(this,t.d2())},to(mi).i2=function(t){var n=function(t,n){t.u();var i=ui(t,n);return i<0?-1:(_i(t,i),i)}(this,t);if(n<0)return null;var i=eo(this.e4_1),e=i[n];return fn(i,n),e},to(mi).b1=function(){this.u();var t=0,n=this.i4_1-1|0;if(t<=n)do{var i=t;t=t+1|0;var e=this.f4_1[i];e>=0&&(this.g4_1[e]=0,this.f4_1[i]=-1)}while(i!==n);vn(this.d4_1,0,this.i4_1);var r=this.e4_1;null==r||vn(r,0,this.i4_1),this.l4_1=0,this.i4_1=0,ni(this)},to(mi).equals=function(t){return t===this||!(null==t||!Jo(t,vs))&&function(t,n){return t.l4_1===n.n()&&t.w3(n.d2())}(this,t)},to(mi).hashCode=function(){for(var t=0,n=this.q3();n.w();)t=t+n.k5()|0;return t},to(mi).toString=function(){var t=ve(Tt(this.l4_1,3));t.o5("{");for(var n=0,i=this.q3();i.w();)n>0&&t.o5(", "),i.l5(t),n=n+1|0;return t.o5("}"),t.toString()},to(mi).u=function(){if(this.m4_1)throw na()},to(mi).u3=function(t){var n=ui(this,t.g2());return!(n<0)&&Gs(eo(this.e4_1)[n],t.h2())},to(mi).s5=function(t){return this.u3(Jo(t,fs)?t:ro())},to(mi).v3=function(t){this.u();var n=ui(this,t.g2());return!(n<0||!Gs(eo(this.e4_1)[n],t.h2())||(_i(this,n),0))},to(mi).n3=function(t){this.u();var n=ai(this,t);return!(n<0||(_i(this,n),0))},to(mi).g3=function(){return new vi(this)},to(mi).l3=function(){return new di(this)},to(mi).q3=function(){return new wi(this)},to(yi).u=function(){return this.c3_1.u()},to(Ci).u=function(){return this.c4_1.u()},to(Di).e6=function(){return this.d6_1},to(Di).equals=function(t){return!(t instanceof ji)&&!(t instanceof Ni)&&t instanceof Di&&Gs(this.e6(),t.e6())},to(Di).hashCode=function(){var t=this.f6(),n=null==t?null:Zs(t);return null==n?0:n},to(Di).toString=function(){return"class "+this.f6()},to(ji).f6=function(){return this.i6_1},to(ji).g6=function(t){return!1},to(ji).e6=function(){throw ia("There's no native JS class for Nothing type")},to(ji).equals=function(t){return t===this},to(ji).hashCode=function(){return 0},to(Ni).f6=function(){throw Ju(Ws("Unknown simpleName for ErrorKClass"))},to(Ni).g6=function(t){throw Ju(Ws("Can's check isInstance on ErrorKClass"))},to(Ni).equals=function(t){return t===this},to(Ni).hashCode=function(){return 0},to(Ri).equals=function(t){return t instanceof Ri&&!!to(Di).equals.call(this,t)&&this.k6_1===t.k6_1},to(Ri).f6=function(){return this.k6_1},to(Ri).g6=function(t){return this.l6_1(t)},to(Pi).f6=function(){return this.n6_1},to(Pi).g6=function(t){return lu(t,this.e6())},to(Fi).r6=function(){return this.o6_1},to(Fi).s6=function(){return this.p6_1},to(Fi).t6=function(){return this.q6_1},to(Fi).equals=function(t){return!!(t instanceof Fi&&Gs(this.o6_1,t.o6_1)&&Gs(this.p6_1,t.p6_1))&&this.q6_1===t.q6_1},to(Fi).hashCode=function(){return Tt(Tt(Ks(this.o6_1),31)+Ks(this.p6_1)|0,31)+Js(this.q6_1)|0},to(Fi).toString=function(){var t=this.o6_1,n=Jo(t,Ii)?t:null,i=null==n?Ws(this.o6_1):null!=n.f6()?n.f6():"(non-denotable type)",e=this.p6_1.d1()?"":xr(this.p6_1,", ","<",">"),r=this.q6_1?"?":"";return bs(i,e)+r},to(ae).u6=function(){return this.anyClass},to(ae).v6=function(){return this.numberClass},to(ae).w6=function(){return this.nothingClass},to(ae).x6=function(){return this.booleanClass},to(ae).y6=function(){return this.byteClass},to(ae).z6=function(){return this.shortClass},to(ae).a7=function(){return this.intClass},to(ae).b7=function(){return this.floatClass},to(ae).c7=function(){return this.doubleClass},to(ae).d7=function(){return this.arrayClass},to(ae).e7=function(){return this.stringClass},to(ae).f7=function(){return this.throwableClass},to(ae).g7=function(){return this.booleanArrayClass},to(ae).h7=function(){return this.charArrayClass},to(ae).i7=function(){return this.byteArrayClass},to(ae).j7=function(){return this.shortArrayClass},to(ae).k7=function(){return this.intArrayClass},to(ae).l7=function(){return this.longArrayClass},to(ae).m7=function(){return this.floatArrayClass},to(ae).n7=function(){return this.doubleArrayClass},to(ae).functionClass=function(t){var n,i,e=Ui()[t];if(null==e){var r=new Ri(Function,"Function"+t,(i=t,function(t){return"function"==typeof t&&t.length===i}));Ui()[t]=r,n=r}else n=e;return n},to(ce).v=function(){var t=this.o7_1;if(null==t)throw Ju("This sequence can be consumed only once.");var n=t;return this.o7_1=null,n.v()},to(pe).a=function(){return this.m5_1.length},to(pe).b=function(t){var n=this.m5_1;if(!(t>=0&&t<=K_(n)))throw Wu("index: "+t+", length: "+this.a()+"}");return js(n,t)},to(pe).c=function(t,n){return this.m5_1.substring(t,n)},to(pe).p5=function(t){return this.m5_1=this.m5_1+rs(t),this},to(pe).p7=function(t){return this.m5_1=this.m5_1+gs(t),this},to(pe).q7=function(t,n,i){return this.r7(null==t?"null":t,n,i)},to(pe).n5=function(t){return this.m5_1=this.m5_1+gs(t),this},to(pe).s7=function(t){return this.o5(t.toString())},to(pe).t7=function(t){return this.o5(t.toString())},to(pe).u7=function(t){return this.o5(t.toString())},to(pe).o5=function(t){var n=this.m5_1;return this.m5_1=n+(null==t?"null":t),this},to(pe).v7=function(t,n){tt.o1(t,this.a());var i=this.m5_1.substring(0,t)+rs(n);return this.m5_1=i+this.m5_1.substring(t),this},to(pe).w7=function(t,n){tt.o1(t,this.a());var i=null==n?"null":n,e=this.m5_1.substring(0,t)+i;return this.m5_1=e+this.m5_1.substring(t),this},to(pe).x7=function(t){if(t<0)throw Fu("Negative new length: "+t+".");if(t<=this.a())this.m5_1=this.m5_1.substring(0,t);else{var n=this.a();if(nNs(t))throw Wu("Start index out of bounds: "+n+", input length: "+Ns(t));return Ae(this.k8_1,Ws(t),n,this.k8_1)},to(Oe).o8=function(t,n){if(n<0||n>Ns(t))throw Wu("Start index out of bounds: "+n+", input length: "+Ns(t));return i=this,e=t,r=n,new Wh((function(){return i.n8(e,r)}),qe);var i,e,r},to(Oe).p8=function(t,n,i){return n=n===K?0:n,i===K?this.o8(t,n):i.o8.call(this,t,n)},to(Oe).q8=function(t,n){al(n);for(var i=this.p8(t),e=0===n?i:function(t,n){if(!(n>=0))throw Fu(Ws("Requested element count "+n+" is less than zero."));return 0===n?Fh():Jo(t,Uh)?t.ja(n):new Vh(t,n)}(i,n-1|0),r=pn(),s=0,o=e.v();o.w();){var u=o.y();r.s(Ws(Rs(t,s,u.r8().v8()))),s=u.r8().w8()+1|0}return r.s(Ws(Rs(t,s,Ns(t)))),r},to(Oe).toString=function(){return this.k8_1.toString()},to(ze).toString=function(){return"MatchGroup(value="+this.x8_1+")"},to(ze).hashCode=function(){return Zs(this.x8_1)},to(ze).equals=function(t){if(this===t)return!0;if(!(t instanceof ze))return!1;var n=t instanceof ze?t:ro();return this.x8_1===n.x8_1},to(Ie).n=function(){return this.b9_1.length},to(Ie).v=function(){return Hr(qr(oh(this)),(t=this,function(n){return t.h1(n)})).v();var t},to(Ie).h1=function(t){var n=this.b9_1[t];return null==n?null:new ze(n)},to(De).r8=function(){return this.d9_1},to(De).y=function(){return Ae(this.i9_1,this.j9_1,this.g9_1.d1()?function(t,n){if(n>>i|0|t.m_1<<(32-i|0),t.m_1>>>i|0):new ho(32===i?t.m_1:t.m_1>>>(i-32|0)|0,0)}(this,t)},to(ho).nb=function(t){return new ho(this.l_1&t.l_1,this.m_1&t.m_1)},to(ho).ob=function(t){return new ho(this.l_1|t.l_1,this.m_1|t.m_1)},to(ho).pb=function(t){return new ho(this.l_1^t.l_1,this.m_1^t.m_1)},to(ho).jb=function(){return new ho(~this.l_1,~this.m_1)},to(ho).qb=function(){return Lo(this.l_1)},to(ho).rb=function(){return Uo(this.l_1)},to(ho).ia=function(){return this.l_1},to(ho).c6=function(){return yo(this)},to(ho).valueOf=function(){return this.c6()},to(ho).equals=function(t){return t instanceof ho&&ko(this,t)},to(ho).hashCode=function(){return t=this,Do(),t.l_1^t.m_1;var t},to(ho).toString=function(){return xo(this,10)},to(qu).gc=function(){return eo(this.ec_1)},to(qu).jc=function(){var t,n=this.fc_1;if(null==n){var i=this.gc().hc(at),e=null==i?null:i.kc(this),r=null==e?this:e;this.fc_1=r,t=r}else t=n;return t},to(qu).lc=function(t){var i,e=this;if(ic(t))i=null;else{i=null==t||null!=t?t:ro()}for(var r=i,s=ec(t);;){var o=e;null==s?o.bc_1=r:(o.zb_1=o.ac_1,o.cc_1=s);try{var u=o.mc();if(u===d_())return n;r=u,s=null}catch(t){r=null,s=t}Cu(o);var a=eo(o.yb_1);if(!(a instanceof qu)){if(null!=s){var h=uc(eo(s));a.nc(h)}else{var _=r;a.nc(_)}return n}e=a}},to(qu).nc=function(t){return this.lc(t)},to(Ou).gc=function(){throw Ju(Ws("This continuation is already complete"))},to(Ou).lc=function(t){throw Ju(Ws("This continuation is already complete"))},to(Ou).nc=function(t){return this.lc(t)},to(Ou).toString=function(){return"This continuation is already complete"},to(Tu).mc=function(){if(null!=this.cc_1)throw this.cc_1;var t=this.wc_1;return"function"==typeof t?t(this.xc_1,this.yc_1):this.wc_1.zc(this.xc_1,this.yc_1)},to(Ma).r=function(t){var n;t:if(Jo(this,hs)&&this.d1())n=!1;else{for(var i=this.v();i.w();)if(Gs(i.y(),t)){n=!0;break t}n=!1}return n},to(Ma).c1=function(t){var n;t:if(Jo(t,hs)&&t.d1())n=!0;else{for(var i=t.v();i.w();){var e=i.y();if(!this.r(e)){n=!1;break t}}n=!0}return n},to(Ma).d1=function(){return 0===this.n()},to(Ma).toString=function(){return xr(this,", ","[","]",K,K,(t=this,function(n){return n===t?"(this Collection)":gs(n)}));var t},to(Ma).toArray=function(){return Xt(this)},to(Na).w=function(){return this.ad_1=n)throw Wu("index: "+t+", size: "+n)},to(Ra).o1=function(t,n){if(t<0||t>n)throw Wu("index: "+t+", size: "+n)},to(Ra).q=function(t,n,i){if(t<0||n>i)throw Wu("fromIndex: "+t+", toIndex: "+n+", size: "+i);if(t>n)throw Fu("fromIndex: "+t+" > toIndex: "+n)},to(Ra).z7=function(t,n,i){if(t<0||n>i)throw Wu("startIndex: "+t+", endIndex: "+n+", size: "+i);if(t>n)throw Fu("startIndex: "+t+" > endIndex: "+n)},to(Ra).n4=function(t,n){var i=t+(t>>1)|0;return(i-n|0)<0&&(i=n),(i-2147483639|0)>0&&(i=n>2147483639?r.MAX_VALUE:2147483639),i},to(Ra).u1=function(t){for(var n=1,i=t.v();i.w();){var e=i.y(),r=Tt(31,n),s=null==e?null:Ks(e);n=r+(null==s?0:s)|0}return n},to(Ra).t1=function(t,n){if(t.n()!==n.n())return!1;for(var i=n.v(),e=t.v();e.w();)if(!Gs(e.y(),i.y()))return!1;return!0},to(Pa).v=function(){return new Na(this)},to(Pa).r1=function(t){var n;t:{for(var i=0,e=this.v();e.w();){if(Gs(e.y(),t)){n=i;break t}i=i+1|0}n=-1}return n},to(Pa).equals=function(t){return t===this||!(null==t||!Jo(t,as))&&tt.t1(this,t)},to(Pa).hashCode=function(){return tt.u1(this)},to(La).w=function(){return this.cd_1.w()},to(La).y=function(){return this.cd_1.y().g2()},to(Fa).w=function(){return this.dd_1.w()},to(Fa).y=function(){return this.dd_1.y().h2()},to(Ba).e3=function(t){return this.ed_1.l2(t)},to(Ba).r=function(t){return(null==t||null!=t)&&this.e3(null==t||null!=t?t:ro())},to(Ba).v=function(){return new La(this.ed_1.d2().v())},to(Ba).n=function(){return this.ed_1.n()},to(Ya).i3=function(t){return this.gd_1.m2(t)},to(Ya).r=function(t){return(null==t||null!=t)&&this.i3(null==t||null!=t?t:ro())},to(Ya).v=function(){return new Fa(this.gd_1.d2().v())},to(Ya).n=function(){return this.gd_1.n()},to(Wa).l2=function(t){return!(null==Ha(this,t))},to(Wa).m2=function(t){var n;t:{var i=this.d2();if(Jo(i,hs)&&i.d1())n=!1;else{for(var e=i.v();e.w();)if(Gs(e.y().h2(),t)){n=!0;break t}n=!1}}return n},to(Wa).n2=function(t){if(null==t||!Jo(t,fs))return!1;var n=t.g2(),i=t.h2(),e=(Jo(this,vs)?this:ro()).o2(n);return!(!Gs(i,e)||null==e&&!(Jo(this,vs)?this:ro()).l2(n))},to(Wa).equals=function(t){if(t===this)return!0;if(null==t||!Jo(t,vs))return!1;if(this.n()!==t.n())return!1;var n;t:{var i=t.d2();if(Jo(i,hs)&&i.d1())n=!0;else{for(var e=i.v();e.w();){var r=e.y();if(!this.n2(r)){n=!1;break t}}n=!0}}return n},to(Wa).o2=function(t){var n=Ha(this,t);return null==n?null:n.h2()},to(Wa).hashCode=function(){return Ks(this.d2())},to(Wa).d1=function(){return 0===this.n()},to(Wa).n=function(){return this.d2().n()},to(Wa).b2=function(){return null==this.j2_1&&(this.j2_1=new Ba(this)),eo(this.j2_1)},to(Wa).toString=function(){return xr(this.d2(),", ","{","}",K,K,(t=this,function(n){return t.fd(n)}));var t},to(Wa).fd=function(t){return Ua(this,t.g2())+"="+Ua(this,t.h2())},to(Wa).c2=function(){return null==this.k2_1&&(this.k2_1=new Ya(this)),eo(this.k2_1)},to(Ga).q2=function(t){for(var n=0,i=t.v();i.w();){var e=i.y(),r=n,s=null==e?null:Ks(e);n=r+(null==s?0:s)|0}return n},to(Ga).p2=function(t,n){return t.n()===n.n()&&t.c1(n)},to(Ka).equals=function(t){return t===this||!(null==t||!Jo(t,cs))&&nt.p2(this,t)},to(Ka).hashCode=function(){return nt.q2(this)},to(eh).n=function(){return this.kd_1},to(eh).d1=function(){return 0===this.kd_1},to(eh).nd=function(){if(this.d1())throw fa("ArrayDeque is empty.");var t=this.id_1,n=this.jd_1[t];return null==n||null!=n?n:ro()},to(eh).od=function(){var t;if(this.d1())t=null;else{var n=this.id_1,i=this.jd_1[n];t=null==i||null!=i?i:ro()}return t},to(eh).pd=function(t){Ja(this,this.kd_1+1|0),this.id_1=th(this,this.id_1),this.jd_1[this.id_1]=t,this.kd_1=this.kd_1+1|0},to(eh).qd=function(t){Ja(this,this.kd_1+1|0);var n=this.jd_1,i=this.kd_1;n[Za(this,this.id_1+i|0)]=t,this.kd_1=this.kd_1+1|0},to(eh).rd=function(){if(this.d1())throw fa("ArrayDeque is empty.");var t=this.id_1,n=this.jd_1[t],i=null==n||null!=n?n:ro();return this.jd_1[this.id_1]=null,this.id_1=Qa(this,this.id_1),this.kd_1=this.kd_1-1|0,i},to(eh).sd=function(){return this.d1()?null:this.rd()},to(eh).td=function(){if(this.d1())throw fa("ArrayDeque is empty.");var t=sh(this),n=Za(this,this.id_1+t|0),i=this.jd_1[n],e=null==i||null!=i?i:ro();return this.jd_1[n]=null,this.kd_1=this.kd_1-1|0,e},to(eh).s=function(t){return this.qd(t),!0},to(eh).p1=function(t,i){if(tt.o1(t,this.kd_1),t===this.kd_1)return this.qd(i),n;if(0===t)return this.pd(i),n;Ja(this,this.kd_1+1|0);var e=Za(this,this.id_1+t|0);if(t<(this.kd_1+1|0)>>1){var r=th(this,e),s=th(this,this.id_1);r>=this.id_1?(this.jd_1[s]=this.jd_1[this.id_1],sn(this.jd_1,this.jd_1,this.id_1,this.id_1+1|0,r+1|0)):(sn(this.jd_1,this.jd_1,this.id_1-1|0,this.id_1,this.jd_1.length),this.jd_1[this.jd_1.length-1|0]=this.jd_1[0],sn(this.jd_1,this.jd_1,0,1,r+1|0)),this.jd_1[r]=i,this.id_1=s}else{var o=this.kd_1,u=Za(this,this.id_1+o|0);e=i){var s=this.id_1,o=this.jd_1.length;if(s>1)n>=this.id_1?sn(this.jd_1,this.jd_1,this.id_1+1|0,this.id_1,n):(sn(this.jd_1,this.jd_1,1,0,n),this.jd_1[0]=this.jd_1[this.jd_1.length-1|0],sn(this.jd_1,this.jd_1,this.id_1+1|0,this.id_1,this.jd_1.length-1|0)),this.jd_1[this.id_1]=null,this.id_1=Qa(this,this.id_1);else{var r=sh(this),s=Za(this,this.id_1+r|0);n<=s?sn(this.jd_1,this.jd_1,n,n+1|0,s+1|0):(sn(this.jd_1,this.jd_1,n,n+1|0,this.jd_1.length),this.jd_1[this.jd_1.length-1|0]=this.jd_1[0],sn(this.jd_1,this.jd_1,0,1,s+1|0)),this.jd_1[s]=null}return this.kd_1=this.kd_1-1|0,e},to(eh).b1=function(){var t=this.kd_1,n=Za(this,this.id_1+t|0);this.id_1=this.kd_1?t:function(t,n){return ys(Array(n),null)}(0,this.kd_1),i=Qo(n)?n:ro(),e=this.kd_1,r=Za(this,this.id_1+e|0);this.id_10&&this.tf_1.w()},to(Vh).ja=function(t){return t>=this.vf_1?this:new Vh(this.uf_1,t)},to(Vh).v=function(){return new Hh(this)},to(Yh).y=function(){if(this.xf_1<0&&Bh(this),0===this.xf_1)throw la();var t=this.wf_1,n=null!=t?t:ro();return this.xf_1=-1,n},to(Yh).w=function(){return this.xf_1<0&&Bh(this),1===this.xf_1},to(Wh).v=function(){return new Yh(this)},to(Gh).v=function(){return rt},to(Gh).ja=function(t){return ot},to(Kh).v=function(){return this.bg_1},to(Qh).equals=function(t){return!(null==t||!Jo(t,cs))&&t.d1()},to(Qh).hashCode=function(){return 0},to(Qh).toString=function(){return"[]"},to(Qh).n=function(){return 0},to(Qh).d1=function(){return!0},to(Qh).wd=function(t){return!1},to(Qh).r=function(t){return!1},to(Qh).xd=function(t){return t.d1()},to(Qh).c1=function(t){return this.xd(t)},to(Qh).v=function(){return rt},to(u_).hc=function(t){return null},to(u_).ig=function(t,n){return t},to(u_).jg=function(t){return t},to(u_).hg=function(t){return this},to(u_).hashCode=function(){return 0},to(u_).toString=function(){return"EmptyCoroutineContext"},to(c_).hc=function(t){for(var n=this;;){var i=n.mg_1.hc(t);if(null!=i)return i;var e=n.lg_1;if(!(e instanceof c_))return e.hc(t);n=e}},to(c_).ig=function(t,n){return n(this.lg_1.ig(t,n),this.mg_1)},to(c_).hg=function(t){if(null!=this.mg_1.hc(t))return this.lg_1;var n=this.lg_1.hg(t);return n===this.lg_1?this:n===a_()?this.mg_1:new c_(n,this.mg_1)},to(c_).equals=function(t){return this===t||!!(t instanceof c_&&h_(t)===h_(this))&&function(t,n){for(var i=n;;){if(!__(t,i.mg_1))return!1;var e=i.lg_1;if(!(e instanceof c_))return __(t,Jo(e,r_)?e:ro());i=e}}(t,this)},to(c_).hashCode=function(){return Ks(this.lg_1)+Ks(this.mg_1)|0},to(c_).toString=function(){return"["+this.ig("",l_)+"]"},to(f_).fg=function(t){return this.dg_1(t)},to(f_).gg=function(t){return t===this||this.eg_1===t},to(v_).g2=function(){return this.ng_1},to(p_).n=function(){return this.og_1.length},to(p_).h1=function(t){return tt.v2(t,this.og_1.length),this.og_1[t]},to(p_).pg=function(t){return null!==t&&yr(this.og_1,t.v9_1)===t},to(p_).r=function(t){return t instanceof ms&&this.pg(t instanceof ms?t:ro())},to(p_).qg=function(t){if(null===t)return-1;var n=t.v9_1;return yr(this.og_1,n)===t?n:-1},to(p_).r1=function(t){return t instanceof ms?this.qg(t instanceof ms?t:ro()):-1},to($_).sg=function(t){return this.rg_1.sg(t)},to($_).qe=function(){return this.rg_1.qe()},to($_).tg=function(t){return this.rg_1.tg(t)},to($_).ug=function(t,n){return this.rg_1.ug(t,n)},to(k_).qe=function(){return this.sg(32)},to(k_).tg=function(t){return this.ug(0,t)},to(k_).ug=function(t,n){x_(t,n);var i=n-t|0;if(i>0||i===r.MIN_VALUE){var e;if((i&(0|-i))===i){var s=31-zt(i)|0;e=this.sg(s)}else{var o;do{var u=this.qe()>>>1|0;o=u%i|0}while(((u-o|0)+(i-1|0)|0)<0);e=o}return t+e|0}for(;;){var a=this.qe();if(t<=a&&a>>2|0,this.wg_1=this.xg_1,this.xg_1=this.yg_1,this.yg_1=this.zg_1;var n=this.ah_1;return this.zg_1=n,t=t^t<<1^n^n<<4,this.ah_1=t,this.bh_1=this.bh_1+362437|0,t+this.bh_1|0},to(E_).sg=function(t){return function(t,n){return(t>>>(32-n|0)|0)&(0|-n)>>31}(this.qe(),t)},to(O_).v8=function(){return this.ea_1},to(O_).w8=function(){return this.fa_1},to(O_).ch=function(t){return this.ea_1<=t&&t<=this.fa_1},to(O_).ha=function(t){return this.ch("number"==typeof t?t:ro())},to(O_).d1=function(){return this.ea_1>this.fa_1},to(O_).equals=function(t){return t instanceof O_&&(!(!this.d1()||!t.d1())||this.ea_1===t.ea_1&&this.fa_1===t.fa_1)},to(O_).hashCode=function(){return this.d1()?-1:Tt(31,this.ea_1)+this.fa_1|0},to(O_).toString=function(){return this.ea_1+".."+this.fa_1},to(A_).hh=function(){return this.ih_1},to(A_).v8=function(){return new us(this.hh())},to(A_).lh=function(){return this.jh_1},to(A_).w8=function(){return new us(this.lh())},to(A_).mh=function(t){return ns(this.ih_1,t)<=0&&ns(t,this.jh_1)<=0},to(A_).ha=function(t){return this.mh(t instanceof us?t.la_1:ro())},to(A_).d1=function(){return ns(this.ih_1,this.jh_1)>0},to(A_).equals=function(t){return t instanceof A_&&(!(!this.d1()||!t.d1())||this.ih_1===t.ih_1&&this.jh_1===t.jh_1)},to(A_).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.ih_1;t=Tt(31,n)+this.jh_1|0}return t},to(A_).toString=function(){return rs(this.ih_1)+".."+rs(this.jh_1)},to(T_).w=function(){return this.ph_1},to(T_).qe=function(){var t=this.qh_1;if(t===this.oh_1){if(!this.ph_1)throw la();this.ph_1=!1}else this.qh_1=this.qh_1+this.nh_1|0;return t},to(I_).w=function(){return this.th_1},to(I_).se=function(){var t=this.uh_1;if(t===this.sh_1){if(!this.th_1)throw la();this.th_1=!1}else this.uh_1=this.uh_1+this.rh_1|0;return Vo(t)},to(D_).da=function(t,n,i){return new j_(t,n,i)},to(j_).v=function(){return new T_(this.ea_1,this.fa_1,this.ga_1)},to(j_).d1=function(){return this.ga_1>0?this.ea_1>this.fa_1:this.ea_10?this.ea_1+".."+this.fa_1+" step "+this.ga_1:this.ea_1+" downTo "+this.fa_1+" step "+(0|-this.ga_1)},to(N_).v=function(){return new I_(this.ih_1,this.jh_1,this.kh_1)},to(N_).d1=function(){return this.kh_1>0?ns(this.ih_1,this.jh_1)>0:ns(this.ih_1,this.jh_1)<0},to(N_).equals=function(t){return t instanceof N_&&(!(!this.d1()||!t.d1())||this.ih_1===t.ih_1&&this.jh_1===t.jh_1&&this.kh_1===t.kh_1)},to(N_).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.ih_1,i=Tt(31,n),e=this.jh_1;t=Tt(31,i+e|0)+this.kh_1|0}return t},to(N_).toString=function(){return this.kh_1>0?rs(this.ih_1)+".."+rs(this.jh_1)+" step "+this.kh_1:rs(this.ih_1)+" downTo "+rs(this.jh_1)+" step "+(0|-this.kh_1)},to(_l).y=function(){if(-1===this.vh_1&&hl(this),0===this.vh_1)throw la();var t=this.yh_1,n=t instanceof O_?t:ro();return this.yh_1=null,this.vh_1=-1,n},to(_l).w=function(){return-1===this.vh_1&&hl(this),1===this.vh_1},to(ll).v=function(){return new _l(this)},to(bl).ii=function(t){var n;try{n=function(t,n){var i=t.length;if(0===i)throw Fu("The string is empty");var e=0,r=$l().fi_1,s="Infinity",o=js(t,e);43!==o&&45!==o||(e=e+1|0);var u=e>0,a=!!u&&tl(t,45);if(i<=e)throw Fu("No components");if(80===js(t,e)){if((e=e+1|0)===i)throw Pu();for(var h=!1,_=null;e=0&&p<=K_(t)))throw Fu("Missing unit for value "+w);e=e+1|0;var m=Hl(js(t,p),h);if(null!=_&&_.w9(m)<=0)throw Fu("Unexpected order of duration components");_=m;var g=X_(w,46);m.equals(ar())&&g>0?(r=kl(r,Ml(Ul(w.substring(0,g)),m)),r=kl(r,Nl(ke(w.substring(g)),m))):r=kl(r,Ml(Ul(w),m))}else{if(h||(e=e+1|0)===i)throw Pu();h=!0}}else{if(n)throw Pu();var b=i-e|0;if(Le(t,e,s,0,Math.max(b,8),!0))r=$l().gi_1;else{var $=null,y=!1,k=!u;if(u&&40===js(t,e)&&41===Wr(t)&&(k=!0,(e=e+1|0)==(i=i-1|0)))throw Fu("No components");for(;e0){if(r=kl(r,Ml(ye(z.substring(0,R)),N)),r=kl(r,Nl(ke(z.substring(R)),N)),e0},to(Lc).equals=function(t){return t instanceof Lc&&(!(!this.d1()||!t.d1())||this.fk_1===t.fk_1&&this.gk_1===t.gk_1)},to(Lc).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.fk_1;t=Tt(31,n)+this.gk_1|0}return t},to(Lc).toString=function(){return new Ac(this.fk_1)+".."+new Ac(this.gk_1)},to(Uc).v=function(){return new Hc(this.fk_1,this.gk_1,this.hk_1)},to(Uc).d1=function(){var t;this.hk_1>0?t=bf(this.fk_1,this.gk_1)>0:t=bf(this.fk_1,this.gk_1)<0;return t},to(Uc).equals=function(t){return t instanceof Uc&&(!(!this.d1()||!t.d1())||this.fk_1===t.fk_1&&this.gk_1===t.gk_1&&this.hk_1===t.hk_1)},to(Uc).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.fk_1,i=Tt(31,n),e=this.gk_1;t=Tt(31,i+e|0)+this.hk_1|0}return t},to(Uc).toString=function(){return this.hk_1>0?new Ac(this.fk_1)+".."+new Ac(this.gk_1)+" step "+this.hk_1:new Ac(this.fk_1)+" downTo "+new Ac(this.gk_1)+" step "+(0|-this.hk_1)},to(Hc).w=function(){return this.kk_1},to(Hc).wj=function(){var t=this.mk_1;if(t===this.jk_1){if(!this.kk_1)throw la();this.kk_1=!1}else{var n=this.mk_1,i=this.lk_1;this.mk_1=n+i|0}return t},to(Hc).y=function(){return new Ac(this.wj())},to(Xc).sk=function(t){return Gc(this.rk_1,t)},to(Xc).d=function(t){return function(t,n){return Gc(t.rk_1,n instanceof Xc?n.rk_1:ro())}(this,t)},to(Xc).toString=function(){return Kc(this.rk_1)},to(Xc).hashCode=function(){return this.rk_1.hashCode()},to(Xc).equals=function(t){return function(t,n){if(!(n instanceof Xc))return!1;var i=n instanceof Xc?n.rk_1:ro();return!!t.equals(i)}(this.rk_1,t)},to(tf).w=function(){return this.uk_1=0},t.$_$.y5=cr,t.$_$.z5=function(t,n){return Ps(t,n)},t.$_$.a6=function(t,n){return Ps(t,n)},t.$_$.b6=function(t){return Ls(t)},t.$_$.c6=function(t){return Ls(t)},t.$_$.d6=function(t){return Ls(t)},t.$_$.e6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));return so(t,new Int16Array(n))},t.$_$.f6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));var i=oo(t,n,new ho(0,0));return i.$type$="LongArray",i},t.$_$.g6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));var i=oo(t,n,!1);return i.$type$="BooleanArray",i},t.$_$.h6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));var i=so(t,Ss(n));return i.$type$="CharArray",i},t.$_$.i6=wu,t.$_$.j6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));return so(t,new Float64Array(n))},t.$_$.k6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));return so(t,new Float32Array(n))},t.$_$.l6=mu,t.$_$.m6=du,t.$_$.n6=rn,t.$_$.o6=function(t,n){if(!(n>=0))throw Fu(Ws("Requested element count "+n+" is less than zero."));return function(t,n){if(!(n>=0))throw Fu(Ws("Requested element count "+n+" is less than zero."));if(0===n)return rh();if(Jo(t,hs)){if(n>=t.n())return Or(t);if(1===n)return Jt(Tr(t))}var i=0,e=mn(n),r=t.v();t:for(;r.w();){var s=r.y();if(e.s(s),(i=i+1|0)===n)break t}return uh(e)}(t,Lr(t.n()-n|0,0))},t.$_$.p6=rh,t.$_$.q6=mh,t.$_$.r6=Zh,t.$_$.s6=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)},t.$_$.t6=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)},t.$_$.u6=pu,t.$_$.v6=function(t){return t.d1()?null:t.h1(0)},t.$_$.w6=jr,t.$_$.x6=Tr,t.$_$.y6=function(t){if(0===t.length)throw fa("Array is empty.");return t[0]},t.$_$.z6=function(t){for(var n=pn(),i=t.v();i.w();)yh(n,i.y());return n},t.$_$.a7=function(t){for(var n=0,i=0,e=t.length;i0?vu(t):rh()},t.$_$.p7=tn,t.$_$.q7=function(t){return t.length>0?(n=t,$h(i=$i(t.length),n),i):mh();var n,i},t.$_$.r7=ah,t.$_$.s7=function(t,n){var i=function(t){return Jo(t,hs)?t.n():null}(n),e=null==i?null:t.n()+i|0,r=Ei(null==e?Tt(t.n(),2):e);return r.z(t),yh(r,n),r},t.$_$.t7=function(t,n){if(Jo(t,hs))return Cr(t,n);var i=pn();return yh(i,t),yh(i,n),i},t.$_$.u7=Cr,t.$_$.v7=function(t,n){var i=mn(t.n()+1|0);return i.z(t),i.s(n),i},t.$_$.w7=function(t){return t.d1()?null:t.j1(0)},t.$_$.x7=function(t){if(t.d1())throw fa("List is empty.");return t.j1(sh(t))},t.$_$.y7=function(t){for(var n=0,i=t.length;n0?function(t){switch(t.length){case 0:return Zh();case 1:return Zt(t[0]);default:return vr(t,Ei(t.length))}}(t):Zh()},t.$_$.c8=function(t){return 1===t.n()?t.h1(0):null},t.$_$.d8=zr,t.$_$.e8=en,t.$_$.f8=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),function(t,n,i,e){n<(i-1|0)&&kn(t,n,i-1|0,e)}(t,i,e,n)},t.$_$.g8=function(t,n){if(Jo(t,hs)){if(t.n()<=1)return Or(t);var i=rn(t),e=Qo(i)?i:ro();return function(t,n){t.length>1&&yn(t,n)}(e,n),vu(e)}var r=Dr(t);return en(r,n),r},t.$_$.h8=function(t){for(var n=xs(t.n()),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.i8=function(t){return Ir(t,Yn(vh(t,12)))},t.$_$.j8=function(t){for(var n=new Int32Array(t.n()),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.k8=function(t){if(0===t.n())return rh();var n=t.d2().v();if(!n.w())return rh();var i=n.y();if(!n.w())return Jt(new _c(i.g2(),i.h2()));var e=mn(t.n()),r=new _c(i.g2(),i.h2());e.s(r);do{var s=n.y(),o=new _c(s.g2(),s.h2());e.s(o)}while(n.w());return e},t.$_$.l8=Or,t.$_$.m8=function(t){switch(t.length){case 0:return rh();case 1:return Jt(t[0]);default:return function(t){return gn(function(t){return new lh(t,!1)}(t))}(t)}},t.$_$.n8=function(t){if(Jo(t,hs)){var n;switch(t.n()){case 0:n=mh();break;case 1:n=Qt(Jo(t,as)?t.h1(0):t.v().y());break;default:n=bh(t,$i(t.n()))}return n}return function(t){return 0===t.n()?mh():t}(bh(t,bi()))},t.$_$.o8=Ar,t.$_$.p8=function(t){return Jo(t,hs)?xi(t):Ir(t,ki())},t.$_$.q8=Er,t.$_$.r8=function(t){for(var n=new Int16Array(t.n()),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.s8=function(t){return[].slice.call(t)},t.$_$.t8=function(t){return new dh((n=t,function(){return ks(n)}));var n},t.$_$.u8=function(t,n){return t===n?0:null==t?-1:null==n?1:Us(null!=t&&("string"===(e=typeof(i=t))||"boolean"===e||nu(i)||Jo(i,Rt))?t:ro(),n);var i,e},t.$_$.v8=zi,t.$_$.w8=d_,t.$_$.x8=Au,t.$_$.y8=zu,t.$_$.z8=v_,t.$_$.a9=f_,t.$_$.b9=function(t){if(t instanceof f_){var n;if(t.gg(this.g2())){var i=t.fg(this);n=null!=i&&Jo(i,r_)?i:null}else n=null;return n}return at===t?Jo(this,r_)?this:ro():null},t.$_$.c9=function(t){return t instanceof f_?t.gg(this.g2())&&null!=t.fg(this)?a_():this:at===t?a_():this},t.$_$.d9=e_,t.$_$.e9=n_,t.$_$.f9=jt,t.$_$.g9=Dt,t.$_$.h9=Mt,t.$_$.i9=r_,t.$_$.j9=It,t.$_$.k9=qu,t.$_$.l9=function(t,i,e){var r=zu(Au(t,i,e)),s=n;r.nc(s)},t.$_$.m9=function(t){return new p_(t)},t.$_$.n9=m_,t.$_$.o9=Xs,t.$_$.p9=xs,t.$_$.q9=Qs,t.$_$.r9=Cs,t.$_$.s9=Ss,t.$_$.t9=js,t.$_$.u9=Ns,t.$_$.v9=Rs,t.$_$.w9=jo,t.$_$.x9=Us,t.$_$.y9=function(t,n,i,e){return Object.defineProperty(t,n,{configurable:!0,get:i,set:e})},t.$_$.z9=Gs,t.$_$.aa=io,t.$_$.ba=ys,t.$_$.ca=Js,t.$_$.da=Is,t.$_$.ea=function(t,n,i,e,r){return Go(),e.get=e,e.set=r,e.callableName=t,s=e,o=function(t,n){return Go(),(Go(),W)[t][null==n?0:1]}(n,r),u=function(t,n){Go();var i=t.$imask$;return null==i?$s([n]):i}(e,i),Go(),s.$metadata$=o,s.constructor=s,s.$imask$=u,s;var s,o,u},t.$_$.fa=Zs,t.$_$.ga=Ks,t.$_$.ha=Ro,t.$_$.ia=Qo,t.$_$.ja=eu,t.$_$.ka=ru,t.$_$.la=ou,t.$_$.ma=iu,t.$_$.na=_u,t.$_$.oa=au,t.$_$.pa=uu,t.$_$.qa=Jo,t.$_$.ra=hu,t.$_$.sa=nu,t.$_$.ta=su,t.$_$.ua=tu,t.$_$.va=function(t){return(t instanceof Di?t:ro()).e6()},t.$_$.wa=Es,t.$_$.xa=Yo,t.$_$.ya=function(t){return Lo(Fo(t))},t.$_$.za=Vo,t.$_$.ab=function(t){return+t},t.$_$.bb=Fo,t.$_$.cb=Ho,t.$_$.db=function(t){return Uo(Fo(t))},t.$_$.eb=no,t.$_$.fb=Po,t.$_$.gb=to,t.$_$.hb=No,t.$_$.ib=Lo,t.$_$.jb=Bo,t.$_$.kb=Uo,t.$_$.lb=Ws,t.$_$.mb=function(){return q},t.$_$.nb=function(t){return t<0?0|-t:t},t.$_$.ob=function(t){if(Gt(t))throw Fu("Cannot round NaN value.");return t>r.MAX_VALUE?r.MAX_VALUE:tn?n:t},t.$_$.wb=function(t,n){return t>n?n:t},t.$_$.xb=function(t,n){return t.z9(n)>0?n:t},t.$_$.yb=Fr,t.$_$.zb=function(t,n,i){if(n>i)throw Fu("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t},t.$_$.ac=Ur,t.$_$.bc=Pr,t.$_$.cc=function(t,n,i){if(null!==n&&null!==i){if(Us(n,i)>0)throw Fu("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");if(Us(t,n)<0)return n;if(Us(t,i)>0)return i}else{if(null!==n&&Us(t,n)<0)return n;if(null!==i&&Us(t,i)>0)return i}return t},t.$_$.dc=function(t,n){return t.ha(n)},t.$_$.ec=function(t,n){var i=function(t){var n=Bo(r.MIN_VALUE);return t.z9(Bo(r.MAX_VALUE))<=0&&n.z9(t)<=0?t.ia():null}(n);return null!=i&&t.ha(i)},t.$_$.fc=Rr,t.$_$.gc=function(t){return wt.da(t.fa_1,t.ea_1,0|-t.ga_1)},t.$_$.hc=function(t,n){return function(t,n){if(!t)throw Fu("Step must be positive, was: "+Ws(n)+".")}(n>0,n),wt.da(t.ea_1,t.fa_1,t.ga_1>0?n:0|-n)},t.$_$.ic=Nr,t.$_$.jc=Ii,t.$_$.kc=Li,t.$_$.lc=P_,t.$_$.mc=Ch,t.$_$.nc=Eh,t.$_$.oc=function(t){return function(t){return t instanceof ce?t:new ce(t)}(new Kh(t))},t.$_$.pc=function(t,n){return new jh(t,!0,n)},t.$_$.qc=function(t){var n=t.v();return n.w()?n.y():null},t.$_$.rc=function(t,n){return new Lh(t,n,((i=function(t){return t.v()}).callableName="iterator",i));var i},t.$_$.sc=function(t,n){return new Lh(t,n,((i=function(t){return t.v()}).callableName="iterator",i));var i},t.$_$.tc=Hr,t.$_$.uc=function(t,n){return Mh(Nh([t,n]))},t.$_$.vc=function(t,n){return Mh(Nh([t,qr(n)]))},t.$_$.wc=Nh,t.$_$.xc=function(t){return new zh(t)},t.$_$.yc=Vr,t.$_$.zc=pe,t.$_$.ad=function(t){Ne();for(var n="",i=0,e=t.length;i=0:ol(t,n,0,Ns(t),i)>=0},t.$_$.cd=Z_,t.$_$.dd=function(t){return Ne(),Ve(t,0,t.length,!1)},t.$_$.ed=function(t,n,i,e){return n=n===K?0:n,i=i===K?t.length:i,e=e!==K&&e,Ne(),tt.z7(n,i,t.length),Ve(t,n,i,e)},t.$_$.fd=Gr,t.$_$.gd=function(t){return Ne(),function(t,n,i,e){if(Xe(),!(n>=0&&i<=t.length&&n<=i))throw Fu(Ws("Failed requirement."));for(var r=new Int8Array(Tt(i-n|0,3)),s=0,o=n;o>6|192);var l=s;s=l+1|0,r[l]=Lo(63&a|128)}else if(a<55296||a>=57344){var c=s;s=c+1|0,r[c]=Lo(a>>12|224);var f=s;s=f+1|0,r[f]=Lo(a>>6&63|128);var v=s;s=v+1|0,r[v]=Lo(63&a|128)}else{var d=Be(t,a,o,i,e);if(d<=0){var w=s;s=w+1|0,r[w]=He()[0];var p=s;s=p+1|0,r[p]=He()[1];var m=s;s=m+1|0,r[m]=He()[2]}else{var g=s;s=g+1|0,r[g]=Lo(d>>18|240);var b=s;s=b+1|0,r[b]=Lo(d>>12&63|128);var $=s;s=$+1|0,r[$]=Lo(d>>6&63|128);var y=s;s=y+1|0,r[y]=Lo(63&d|128),o=o+1|0}}}return r.length===s?r:wu(r,s)}(t,0,t.length,!1)},t.$_$.hd=function(t,n,i){return i=i!==K&&i,Ns(t)>0&&F_(js(t,K_(t)),n,i)},t.$_$.id=Ue,t.$_$.jd=function(t,n,i){if(null==t)return null==n;if(null==n)return!1;if(!(i=i!==K&&i))return t==n;if(t.length!==n.length)return!1;var e=0,r=t.length;if(er)return 0;var o=3&s;if(0===o){var u=2,a=e,h=0;if(h<=1)do{if(h=h+1|0,(a=a+(s>>u&127)|0)>n)return 3;if((a=a+(s>>(u=u+7|0)&127)|0)>n)return 0;u=u+7|0}while(h<=1);return 3}if(s<=7)return o;var _=n-e|0;return s>>Tt(2,s<=31?_%2|0:_)&3}(t)||function(t){var n=bu(Eu().wb_1,t);return n>=0&&t<(Eu().wb_1[n]+Eu().xb_1[n]|0)}(es(t))}(t)},t.$_$.sd=function(t){return os(),os(),t<=57343&&55296<=t},t.$_$.td=ge,t.$_$.ud=K_,t.$_$.vd=Q_,t.$_$.wd=cl,t.$_$.xd=Wr,t.$_$.yd=function(t,n){if(dl(t,n)){var i=t.length-Ns(n)|0;return t.substring(0,i)}return t},t.$_$.zd=function(t,n,i){if(t.length>=(Ns(n)+Ns(i)|0)&&function(t,n,i){return(i=i!==K&&i)||"string"!=typeof t||"string"!=typeof n?ul(t,0,n,0,Ns(n),i):Pe(t,n)}(t,n)&&dl(t,i)){var e=Ns(n),r=t.length-Ns(i)|0;return t.substring(e,r)}return t},t.$_$.ae=function(t,n,i,e){e=e!==K&&e;var r=new RegExp(Ce().g8(n),e?"gui":"gu"),s=Ce().h8(i);return t.replace(r,s)},t.$_$.be=function(t,n,i,e){e=e!==K&&e;var r=new RegExp(Ce().g8(rs(n)),e?"gui":"gu"),s=rs(i);return t.replace(r,s)},t.$_$.ce=function(t){var n;switch(Ns(t)){case 0:throw fa("Char sequence is empty.");case 1:n=js(t,0);break;default:throw Fu("Char sequence has more than one element.")}return n},t.$_$.de=function(t,n){return n.d1()?"":function(t,n){var i=n.v8(),e=n.w8()+1|0;return t.substring(i,e)}(t,n)},t.$_$.ee=function(t,n,i,e){if(i=i!==K&&i,e=e===K?0:e,1===n.length)return el(t,rs(n[0]),i,e);for(var r=Br(function(t,n,i,e,r){return i=i===K?0:i,e=e!==K&&e,al(r=r===K?0:r),new ll(t,i,r,(s=n,o=e,function(t,n){var i=il(t,s,n,o);return i<0?null:lc(i,1)}));var s,o}(t,n,K,i,e)),s=mn(vh(r,10)),o=r.v();o.w();){var u=rl(t,o.y());s.s(u)}return s},t.$_$.fe=function(t,n,i,e){if(i=i!==K&&i,e=e===K?0:e,1===n.length){var r=n[0];if(0!==Ns(r))return el(t,r,i,e)}for(var s=Br(sl(t,n,K,i,e)),o=mn(vh(s,10)),u=s.v();u.w();){var a=rl(t,u.y());o.s(a)}return o},t.$_$.ge=Pe,t.$_$.he=tl,t.$_$.ie=function(t,n,i){i=i===K?t:i;var e,r=Q_(t,n);if(-1===r)e=i;else{var s=r+1|0,o=t.length;e=t.substring(s,o)}return e},t.$_$.je=function(t,n,i){i=i===K?t:i;var e,r=X_(t,n);if(-1===r)e=i;else{var s=r+1|0,o=t.length;e=t.substring(s,o)}return e},t.$_$.ke=function(t,n,i){i=i===K?t:i;var e=Q_(t,n);return-1===e?i:t.substring(0,e)},t.$_$.le=function(t,n,i){i=i===K?t:i;var e=X_(t,n);return-1===e?i:t.substring(0,e)},t.$_$.me=function(t,n){if(!(n>=0))throw Fu(Ws("Requested character count "+n+" is less than zero."));var i=t.length,e=i-Fr(n,i)|0;return t.substring(e)},t.$_$.ne=Kr,t.$_$.oe=function(t){return function(t){var n=rs(t).toUpperCase();if(n.length>1){var i;if(329===t)i=n;else{var e=js(n,0),r=n.substring(1).toLowerCase();i=rs(e)+r}return i}return rs(be(t))}(t)},t.$_$.pe=function(t){return null!=t&&"true"===t.toLowerCase()},t.$_$.qe=function(t){var n,e=function(t){return function(t,n){var e=W_(t,n);if(null==e)return null;var r=e;return ri.MAX_VALUE?null:Lo(r)}(t,10)}(t);return null==e?G_(t):n=e,n},t.$_$.re=function(t){Ne();for(var n=0,i=t.length,e=Ss(i);ne.MAX_VALUE?null:Uo(r)}(t,10)}(t);return null==i?G_(t):n=i,n},t.$_$.ze=function(t,n){return ja(Bo(t).nb(new ho(-1,0)),n)},t.$_$.af=function(t,n){return t.toString($e(n))},t.$_$.bf=ja,t.$_$.cf=function(t){var n,i=function(t){return function(t,n){var i=gf(t,n);if(null==(null==i?null:new Ac(i)))return null;var e=i;wc();var r=255;return bf(e,r)>0?null:Lo(e)}(t,10)}(t);return null==(null==i?null:new mc(i))?G_(t):n=i,n},t.$_$.df=function(t){var n,i=function(t){return gf(t,10)}(t);return null==(null==i?null:new Ac(i))?G_(t):n=i,n},t.$_$.ef=function(t){var n,i=function(t){return function(t,n){$e(n);var i=t.length;if(0===i)return null;Wc();var e,r=new ho(-1,-1),s=js(t,0);if(ns(s,48)<0){if(1===i||43!==s)return null;e=1}else e=0;var o=new ho(477218588,119304647),u=o,a=Bo(n),h=new ho(0,0),_=e;if(_0){if(!Gs(u,o))return null;if(yf(h,u=kf(r,a))>0)return null}var f=h=h.y9(a),v=h,d=Bo(c).nb(new ho(-1,0));if(yf(h=v.db(d),f)<0)return null}while(_0?null:Uo(e)}(t,10)}(t);return null==(null==i?null:new lf(i))?G_(t):n=i,n},t.$_$.gf=function(t){return function(t,n){n=n===K?"":n;for(var i=fl(t),e=pn(),r=i.v();r.w();){var s=r.y();Re(s)||e.s(s)}for(var o=mn(vh(e,10)),u=e.v();u.w();){var a=H_(u.y());o.s(a)}for(var h=function(t){var n=t.v();if(!n.w())return null;for(var i=n.y();n.w();){var e=n.y();Us(i,e)>0&&(i=e)}return i}(o),_=null==h?0:h,l=(t.length,Tt(n.length,i.n()),U_(n)),c=sh(i),f=pn(),v=0,d=i.v();d.w();){var w=d.y(),p=v;v=p+1|0;var m,g=nn(p);if(0!==g&&g!==c||!Re(w)){var b,$=Xr(w,_);m=null==(b=null==$?null:l($))?w:b}else m=null;var y=m;null==y||f.s(y)}return Sr(f,ve(),"\n").toString()}(t,"")},t.$_$.hf=function(t,n){return function(t,n,i){if(n=n===K?"":n,Re(i=i===K?"|":i))throw Fu(Ws("marginPrefix must be non-blank string."));for(var e=fl(t),r=(t.length,Tt(n.length,e.n()),U_(n)),s=sh(e),o=pn(),u=0,a=e.v();a.w();){var h=a.y(),_=u;u=_+1|0;var l,c=nn(_);if(0!==c&&c!==s||!Re(h)){var f;t:{var v=0,d=Ns(h)-1|0;if(v<=d)do{var w=v;if(v=v+1|0,!ge(js(h,w))){f=w;break t}}while(v<=d);f=-1}var p,m,g=f;if(-1===g)p=null;else if(Fe(h,i,g)){var b=g+i.length|0;p=h.substring(b)}else p=null;l=null==(m=null==p?null:r(p))?h:m}else l=null;var $=l;null==$||o.s($)}return Sr(o,ve(),"\n").toString()}(t,"",n=n===K?"|":n)},t.$_$.if=function(t){var n;t:{var i=0,e=Ns(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!ge(js(t,r))){n=Rs(t,r,Ns(t));break t}}while(i<=e);n=""}return n},t.$_$.jf=function(t){var n=0,i=Ns(t)-1|0,e=!1;t:for(;n<=i;){var r=ge(js(t,e?i:n));if(e){if(!r)break t;i=i-1|0}else r?n=n+1|0:e=!0}return Rs(t,n,i+1|0)},t.$_$.kf=Dl,t.$_$.lf=Nl,t.$_$.mf=function(t,n){return n.w9(ar())<=0?Fl(sr(Bo(t),n,or())):Ml(Bo(t),n)},t.$_$.nf=xa,t.$_$.of=us,t.$_$.pf=Rt,t.$_$.qf=Wl,t.$_$.rf=Yl,t.$_$.sf=ms,t.$_$.tf=ma,t.$_$.uf=Nu,t.$_$.vf=Bu,t.$_$.wf=Qu,t.$_$.xf=Gu,t.$_$.yf=ho,t.$_$.zf=va,t.$_$.ag=hc,t.$_$.bg=ya,t.$_$.cg=_c,t.$_$.dg=oc,t.$_$.eg=_a,t.$_$.fg=ro,t.$_$.gg=cc,t.$_$.hg=Sc,t.$_$.ig=mc,t.$_$.jg=Rc,t.$_$.kg=Ac,t.$_$.lg=rf,t.$_$.mg=Xc,t.$_$.ng=mf,t.$_$.og=lf,t.$_$.pg=Lt,t.$_$.qg=ea,t.$_$.rg=function(t,n){if(t!==n){var i=t._suppressed;null==i?t._suppressed=ah([n]):i.s(n)}},t.$_$.sg=function(t){return t},t.$_$.tg=function(t){var n=t.l_1;return 0===n?32+Kt(t.m_1)|0:Kt(n)},t.$_$.ug=uc,t.$_$.vg=eo,t.$_$.wg=function(t,n){return Kl(),new Gl(t.mi_1,n).ri()},t.$_$.xg=function(t){return!function(t){return t===1/0||t===-1/0}(t)&&!Gt(t)},t.$_$.yg=function(t){return!function(t){return t===1/0||t===-1/0}(t)&&!function(t){return!(t==t)}(t)},t.$_$.zg=Gt,t.$_$.ah=function(t,n){return new Zl(n)},t.$_$.bh=function(t){return new Zl(t)},t.$_$.ch=function(){throw Oa()},t.$_$.dh=bs,t.$_$.eh=function(t){console.error(Je(t))},t.$_$.fh=Je,t.$_$.gh=function(){throw Jr()},t.$_$.hh=function(t){throw Ia("lateinit property "+t+" has not been initialized")},t.$_$.ih=gs,t.$_$.jh=lc,t.$_$.kh=bf,t})?i.apply(n,[n]):i)||(t.exports=e)},852:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i=n.$_$.gb,e=n.$_$.w9;function r(t){this.ll_1=t}return(0,n.$_$.hb)(r,"EventListenerHandler",e),i(r).ml=function(t){this.ll_1(t)},i(r).handleEvent=function(t){return this.ml(t)},i(r).toString=function(){return"EventListenerHandler("+this.ll_1+")"},t.$_$=t.$_$||{},t.$_$.a=function(t){return new r(t)},t})?e.apply(n,r):e)||(t.exports=s)},205:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e=n.$_$.ba,r=n.$_$.gb,s=n.$_$.y9,o=n.$_$.w9,u=n.$_$.hb,a=n.$_$.fb,h=n.$_$.ih,_=n.$_$.f;function l(t){for(var n=0,i=e(Array(t),null);n>ie()){case 0:var e=536870911&i,r=(2<=0){if(null===r)return io();if(n.jy(i,s,r))return ys(t),eo()}}else if(s===Gr()&&n.jy(i,s,Qr()))return ys(t),n.fy(i);return function(t,n,i,e,r){t:for(;;){var s=n.hy(i);if(null===s||s===Kr()){var o=t.ny_1.kotlinx$atomicfu$value.nb(new bn(-1,268435455));if(e.z9(o)<0){if(n.jy(i,s,Zr()))return ys(t),ro()}else{if(null===r)return io();if(n.jy(i,s,r))return ys(t),eo()}}else if(s===Gr()){if(n.jy(i,s,Qr()))return ys(t),n.fy(i)}else{if(s===ts())return ro();if(s===Zr())return ro();if(s===is())return ys(t),ro();if(s===Jr())continue t;if(n.jy(i,s,Xr())){var u,a=s instanceof Hs;return $s(s instanceof Hs?s.p10_1:s,t,n,i)?(n.iy(i,Qr()),ys(t),u=n.fy(i)):(n.iy(i,ts()),n.xy(i,!1),a&&ys(t),u=ro()),u}}}}(t,n,i,e,r)}function $s(t,n,i,e){var r;if(Xt(t,Ii))Xt(t,Ii)||Dt(),r=Bs(t,Tt);else if(Xt(t,Mu)){t instanceof Pu||Dt();var s=t.b11(n,Tt);s===Bu()&&i.gy(e),r=s===Vu()}else{if(!(t instanceof vs)){var o="Unexpected waiter: "+Bt(t);throw Yt(Bt(o))}r=Bs(t.x10_1,!0)}return r}function ys(t){if(cs(t))return Tt;var n=t.ty_1.kotlinx$atomicfu$value;t:for(;;){var i=t.py_1.atomicfu$getAndIncrement$long(),e=Wr(),r=i.x9(Yn(e));if(t.pz().z9(i)<=0)return n.gq_1.z9(r)<0&&null!=n.fz()&&Ls(t,r,n),Ss(t),Tt;if(!n.gq_1.equals(r)){var s=Ps(t,r,n,i);if(null==s)continue t;n=s}var o=Wr();if(ks(t,n,i.fb(Yn(o)).ia(),i))return Ss(t),Tt;Ss(t)}}function ks(t,n,i,e){var r,s=n.hy(i);return null!=s&&Xt(s,Fr)&&e.z9(t.oy_1.kotlinx$atomicfu$value)>=0&&n.jy(i,s,Jr())?($s(s,t,n,i)?(n.iy(i,Gr()),r=!0):(n.iy(i,ts()),n.xy(i,!1),r=!1),r):function(t,n,i,e){t:for(;;){var r=n.hy(i);if(null!=r&&Xt(r,Fr)){var s;if(e.z9(t.oy_1.kotlinx$atomicfu$value)<0){if(n.jy(i,r,new Hs(r)))return!0}else if(n.jy(i,r,Jr()))return $s(r,t,n,i)?(n.iy(i,Gr()),s=!0):(n.iy(i,ts()),n.xy(i,!1),s=!1),s}else{if(r===ts())return!1;if(null!==r){if(r===Gr())return!0;if(r===Zr()||r===Qr()||r===ns())return!0;if(r===is())return!0;if(r===Xr())continue t;var o="Unexpected cell state: "+Jt(r);throw Yt(Bt(o))}if(n.jy(i,r,Kr()))return!0}}}(t,n,i,e)}function xs(t,n){if(!t.qy_1.atomicfu$addAndGet$long(n).nb(new bn(0,1073741824)).equals(new bn(0,0)))for(;!t.qy_1.kotlinx$atomicfu$value.nb(new bn(0,1073741824)).equals(new bn(0,0)););}function Ss(t,n,i){return xs(t,n=n===Rt?new bn(1,0):n)}function Es(t){this.nz_1=t,this.lz_1=es(),this.mz_1=null}function Cs(t){var n=t.oz();return null==n?new wo(go()):n}function qs(t){t.e11()}function Os(t,n){var i=function(t){var n=t.ty_1.kotlinx$atomicfu$value,i=t.ry_1.kotlinx$atomicfu$value;i.gq_1.z9(n.gq_1)>0&&(n=i);var e=t.sy_1.kotlinx$atomicfu$value;return e.gq_1.z9(n.gq_1)>0&&(n=e),function(t){hu();for(var n=t;;){var i=ru(n);if(i===Qo())return n;var e=null==i||i instanceof uu?i:Dt();if(null===e){if(n.kz())return n}else n=e}}(n)}(t);if(t.g11()){var e=function(t,n){for(var i=n;;){var e=Wr()-1|0;if(0<=e)do{var r=e;e=e+-1|0;var s=i.gq_1,o=Wr(),u=s.y9(Yn(o)).db(Yn(r));if(u.z9(t.q10())<0)return new bn(-1,-1);t:for(;;){var a=i.hy(r);if(null!==a&&a!==Kr()){if(a===Gr())return u;break t}if(i.jy(r,a,is())){i.zy();break t}}}while(0<=e);var h=i.iz();if(null==h)return new bn(-1,-1);i=h}}(t,i);e.equals(new bn(-1,-1))||t.f11(e)}return function(t,n,i){var e=yu(),r=n;t:for(;null!=r;){var s=Wr()-1|0;if(0<=s)do{var o=s;s=s+-1|0;var u=r.gq_1,a=Wr();if(u.y9(Yn(a)).db(Yn(o)).z9(i)<0)break t;n:for(;;){var h=r.hy(o);if(null===h||h===Kr()){if(r.jy(o,h,is())){r.zy();break n}}else if(h instanceof Hs){if(r.jy(o,h,is())){e=ku(e,h.p10_1),r.xy(o,!0);break n}}else{if(null==h||!Xt(h,Fr))break n;if(r.jy(o,h,is())){e=ku(e,h),r.xy(o,!0);break n}}}}while(0<=s);r=r.iz()}var _=e,l=_;if(null!=l)if(l instanceof In){var c=_ instanceof In?_:Dt(),f=c.n()-1|0;if(0<=f)do{var v=f;f=f+-1|0,As(c.h1(v),t)}while(0<=f)}else{As(null==_||null!=_?_:Dt(),t)}}(t,i,n),i}function zs(t,n){!function(t,n){var i=t.my_1,e=null,r=yu(),s=n;t:for(;;){var o=Wr()-1|0;if(0<=o)do{var u=o;o=o+-1|0;var a=s.gq_1,h=Wr(),_=a.y9(Yn(h)).db(Yn(u));n:for(;;){var l=s.hy(u);if(l===Qr())break t;if(l===Gr()){if(_.z9(t.q10())<0)break t;if(s.jy(u,l,is())){null!=i&&(e=Eu(i,s.ey(u),e)),s.gy(u),s.zy();break n}}else if(l===Kr()||null===l){if(s.jy(u,l,is())){s.zy();break n}}else{if(!(null!=l&&Xt(l,Fr)||l instanceof Hs)){if(l===Jr()||l===Xr())break t;if(l===Jr())continue n;break n}if(_.z9(t.q10())<0)break t;var c=l instanceof Hs?l.p10_1:null!=l&&Xt(l,Fr)?l:Dt();if(s.jy(u,l,is())){null!=i&&(e=Eu(i,s.ey(u),e)),r=ku(r,c),s.gy(u),s.zy();break n}}}}while(0<=o);var f=s.iz();if(null==f)break t;s=f}var v=r,d=v;if(null!=d)if(d instanceof In){var w=v instanceof In?v:Dt(),p=w.n()-1|0;if(0<=p)do{var m=p;p=p+-1|0,Ts(w.h1(m),t)}while(0<=p)}else{Ts(null==v||null!=v?v:Dt(),t)}if(null!=e)throw e}(t,Os(t,n))}function As(t,n){return Is(t,n,!0)}function Ts(t,n){return Is(t,n,!1)}function Is(t,n,i){if(t instanceof vs){var e=t.x10_1,r=on(!1);e.nc(r)}else if(Xt(t,Ii)){var s=i?Cs(n):n.i11(),o=on(un(s));t.nc(o)}else if(t instanceof Vs){var u=t.u10_1,a=new fo(co().h11(n.oz())),h=on(a);u.nc(h)}else if(t instanceof Es)t.d11();else{if(!Xt(t,Mu))throw Yt(Bt("Unexpected waiter: "+t));t.v10(n,is())}}function Ds(t,n){return js(n,t,!1)}function js(t,n,i){var e;switch(n.lb(60).ia()){case 0:case 1:e=!1;break;case 2:Os(t,n.nb(new bn(-1,268435455))),e=!i||!t.j11();break;case 3:zs(t,n.nb(new bn(-1,268435455))),e=!0;break;default:var r="unexpected close status: "+n.lb(60).ia();throw Yt(Bt(r))}return e}function Ms(t,n,i,e){for(;;){var r=n.hy(i);if(null!==r&&r!==Kr())return r===Gr()||r!==ts()&&r!==is()&&r!==Qr()&&r!==Zr()&&(r===Jr()||r!==Xr()&&e.equals(t.q10()));if(n.jy(i,r,Zr()))return ys(t),!1}}function Ns(t,n,i){var e;t:for(var r=t.ry_1,s=Gs();;){var o,u=au(i,n,s);if(nu(u))o=!0;else{var a;n:{for(var h=iu(u);;){var _=r.kotlinx$atomicfu$value;if(_.gq_1.z9(h.gq_1)>=0){a=!0;break n}if(!h.bz()){a=!1;break n}if(r.atomicfu$compareAndSet(_,h)){_.cz()&&_.x(),a=!0;break n}h.cz()&&h.x()}a=Tt}o=a}if(o){e=u;break t}}var l,c=e;if(nu(c)){qs(t);var f=i.gq_1,v=Wr();f.y9(Yn(v)).z9(t.q10())<0&&i.jz(),l=null}else{var d,w=iu(c);if(w.gq_1.z9(n)>0){var p=w.gq_1,m=Wr();!function(t,n){for(var i=t.ny_1;;){var e=i.kotlinx$atomicfu$value,r=e.nb(new bn(-1,268435455));if(r.z9(n)>=0)return Tt;var s=Ws(r,e.lb(60).ia());if(t.ny_1.atomicfu$compareAndSet(e,s))return Tt}}(t,p.y9(Yn(m)));var g=w.gq_1,b=Wr();g.y9(Yn(b)).z9(t.q10())<0&&w.jz(),d=null}else d=w;l=d}return l}function Rs(t,n,i){var e;t:for(var r=t.sy_1,s=Gs();;){var o,u=au(i,n,s);if(nu(u))o=!0;else{var a;n:{for(var h=iu(u);;){var _=r.kotlinx$atomicfu$value;if(_.gq_1.z9(h.gq_1)>=0){a=!0;break n}if(!h.bz()){a=!1;break n}if(r.atomicfu$compareAndSet(_,h)){_.cz()&&_.x(),a=!0;break n}h.cz()&&h.x()}a=Tt}o=a}if(o){e=u;break t}}var l,c=e;if(nu(c)){qs(t);var f=i.gq_1,v=Wr();f.y9(Yn(v)).z9(t.pz())<0&&i.jz(),l=null}else{var d,w,p=iu(c);if(cs(t))d=!1;else{var m=ls(t),g=Wr(),b=m.x9(Yn(g));d=n.z9(b)<=0}if(d)t:for(var $=t.ty_1;;){var y=$.kotlinx$atomicfu$value;if(y.gq_1.z9(p.gq_1)>=0)break t;if(!p.bz())break t;if($.atomicfu$compareAndSet(y,p)){y.cz()&&y.x();break t}p.cz()&&p.x()}if(p.gq_1.z9(n)>0){var k=p.gq_1,x=Wr();!function(t,n){for(var i=t.oy_1;;){var e=i.kotlinx$atomicfu$value;if(e.z9(n)>=0)return Tt;if(t.oy_1.atomicfu$compareAndSet(e,n))return Tt}}(t,k.y9(Yn(x)));var S=p.gq_1,E=Wr();S.y9(Yn(E)).z9(t.pz())<0&&p.jz(),w=null}else w=p;l=w}return l}function Ps(t,n,i,e){var r;t:for(var s=t.ty_1,o=Gs();;){var u,a=au(i,n,o);if(nu(a))u=!0;else{var h;n:{for(var _=iu(a);;){var l=s.kotlinx$atomicfu$value;if(l.gq_1.z9(_.gq_1)>=0){h=!0;break n}if(!_.bz()){h=!1;break n}if(s.atomicfu$compareAndSet(l,_)){l.cz()&&l.x(),h=!0;break n}_.cz()&&_.x()}h=Tt}u=h}if(u){r=a;break t}}var c,f=r;if(nu(f))qs(t),Ls(t,n,i),Ss(t),c=null;else{var v,d=iu(f);if(d.gq_1.z9(n)>0){var w=e.db(Yn(1)),p=d.gq_1,m=Wr(),g=p.y9(Yn(m));if(t.py_1.atomicfu$compareAndSet(w,g)){var b=d.gq_1,$=Wr();xs(t,b.y9(Yn($)).eb(e))}else Ss(t);v=null}else v=d;c=v}return c}function Ls(t,n,i){var e=i;t:for(;e.gq_1.z9(n)<0;){var r=e.fz();if(null==r)break t;e=r}for(;;){t:for(;e.az();){var s=e.fz();if(null==s)break t;e=s}var o;t:{for(var u=t.ty_1,a=e;;){var h=u.kotlinx$atomicfu$value;if(h.gq_1.z9(a.gq_1)>=0){o=!0;break t}if(!a.bz()){o=!1;break t}if(u.atomicfu$compareAndSet(h,a)){h.cz()&&h.x(),o=!0;break t}a.cz()&&a.x()}o=Tt}if(o)return Tt}}function Fs(t){return function(n,i,e){return function(t,n,i){return function(e){return t!==is()&&xu(n.my_1,null==t||null!=t?t:Dt(),i.gc()),Tt}}(e,t,n)}}function Us(t,n){if(n=n===Rt?null:n,this.ly_1=t,this.my_1=n,!(this.ly_1>=0)){var i="Invalid channel capacity: "+this.ly_1+", should be >=0";throw Wn(Bt(i))}this.ny_1=Gn(new bn(0,0)),this.oy_1=Gn(new bn(0,0)),this.py_1=Gn(function(t){var n;return so(),uo(),0===t?n=new bn(0,0):(uo(),n=2147483647===t?new bn(-1,2147483647):Yn(t)),n}(this.ly_1)),this.qy_1=Gn(ls(this));var e=new os(new bn(0,0),null,this,3);this.ry_1=Zt(e),this.sy_1=Zt(e);var r;if(cs(this)){var s=Yr();r=s instanceof os?s:Dt()}else r=e;this.ty_1=Zt(r);var o;o=null==this.my_1?null:Fs(this),this.uy_1=o,this.vy_1=Zt(rs()),this.wy_1=Zt(null)}function Hs(t){this.p10_1=t}function Vs(){}function Bs(t,n,i){i=i===Rt?null:i,so();var e,r=t.gp(n,null,i);return null!=r?(t.hp(r),e=!0):e=!1,e}function Ys(t,n){return so(),new bn(0,n?1073741824:0).db(t)}function Ws(t,n){return so(),Yn(n).kb(60).db(t)}function Gs(){return so(),(t=function(t,n){return i=t,e=n,so(),new os(i,e,e.by(),0);var i,e}).callableName="createSegment",t;var t}function Ks(){return K}function Xs(){return so(),3}function Js(){return so(),0}function Zs(){return so(),1}function Qs(){return so(),2}function to(){return so(),4}function no(){return so(),5}function io(){return so(),so(),H}function eo(){return so(),so(),U}function ro(){return so(),so(),V}function so(){X||(X=!0,z=new os(new bn(-1,-1),null,null,0),A=Au("kotlinx.coroutines.bufferedChannel.segmentSize",32),T=Au("kotlinx.coroutines.bufferedChannel.expandBufferCompletionWaitIterations",1e4),I=new zu("BUFFERED"),D=new zu("SHOULD_BUFFER"),j=new zu("S_RESUMING_BY_RCV"),M=new zu("RESUMING_BY_EB"),N=new zu("POISONED"),R=new zu("DONE_RCV"),P=new zu("INTERRUPTED_SEND"),L=new zu("INTERRUPTED_RCV"),F=new zu("CHANNEL_CLOSED"),U=new zu("SUSPEND"),H=new zu("SUSPEND_NO_WAITER"),V=new zu("FAILED"),B=new zu("NO_RECEIVE_RESULT"),Y=new zu("CLOSE_HANDLER_CLOSED"),W=new zu("CLOSE_HANDLER_INVOKED"),G=new zu("NO_CLOSE_CAUSE"))}function oo(){J=this,this.t11_1=2147483647,this.u11_1=0,this.v11_1=-1,this.w11_1=-2,this.x11_1=-3,this.y11_1="kotlinx.coroutines.channels.defaultBuffer",this.z11_1=Au("kotlinx.coroutines.channels.defaultBuffer",64,1,2147483646)}function uo(){return null==J&&new oo,J}function ao(t){return!(t instanceof ho)}function ho(){}function _o(t){ho.call(this),this.a12_1=t}function lo(){Z=this,this.s10_1=new ho}function co(){return null==Z&&new lo,Z}function fo(t){co(),this.b12_1=t}function vo(t){ii(t,this),Sn(this,vo)}function wo(t){ri(t,this),Sn(this,wo)}function po(){}function mo(){}function go(){return Q}function bo(t,n,i){return t.p12_1===(Ur(),q)?function(t,n,i){var e=It(Us).l11.call(t,n);if(ao(e)||function(t){return t instanceof _o}(e))return e;if(i){var r=t.my_1,s=null==r?null:Eu(r,n);if(null!=s)throw s}return co().t10(Tt)}(t,n,i):function(t,n){var i,e=Gr(),r=t.ry_1.kotlinx$atomicfu$value;t:for(;;){var s=t.ny_1.atomicfu$getAndIncrement$long(),o=s.nb(Ks()),u=Ds(s,t),a=Wr(),h=o.x9(Yn(a)),_=Wr(),l=o.fb(Yn(_)).ia();if(!r.gq_1.equals(h)){var c=Ns(t,h,r);if(null==c){if(u)return co().h11(t.i11());continue t}r=c}var f=ds(t,r,l,n,o,e,u);if(f===Js())return r.jz(),co().t10(Tt);if(f===Zs())return co().t10(Tt);if(f===Qs()){if(u)return r.zy(),co().h11(t.i11());var v=null!=e&&Xt(e,Fr)?e:null;null==v||fs(v,0,r,l);var d=r.gq_1,w=Wr(),p=d.y9(Yn(w)).db(Yn(l));return t.f11(p),co().t10(Tt)}if(f===to())return o.z9(t.q10())<0&&r.jz(),co().h11(t.i11());if(f!==no()){if(f===Xs())throw Yt(Bt("unexpected"))}else r.jz()}return i}(t,n)}function $o(t,n,i){if(i=i===Rt?null:i,Us.call(this,t,i),this.o12_1=t,this.p12_1=n,this.p12_1===Vr()){var e="This implementation does not support suspension for senders, use "+si(Us).f6()+" instead";throw Wn(Bt(e))}if(!(this.o12_1>=1)){var r="Buffered channel capacity must be at least 1, but "+this.o12_1+" was specified";throw Wn(Bt(r))}}function yo(){return Ho(),tt}function ko(t){var n=t.z12_1,i=t.y12_1;return n.z9(i)<=0?n:i}function xo(t){var n=ko(t),i=t.a13_1;return n.db(Yn(i)).eb(t.y12_1).ia()}function So(t){return t.a13_1+t.b13_1|0}function Eo(t){var n=ko(t),i=t.a13_1;return n.db(Yn(i))}function Co(t,n){if(0===t.d13_1)return function(t,n){if(0===t.u12_1)return!0;Oo(t,n),t.a13_1=t.a13_1+1|0,t.a13_1>t.u12_1&&qo(t);var i=t,e=ko(t),r=t.a13_1;return i.z12_1=e.db(Yn(r)),!0}(t,n);if(t.a13_1>=t.v12_1&&t.z12_1.z9(t.y12_1)<=0)switch(t.w12_1.v9_1){case 0:return!1;case 2:return!0}if(Oo(t,n),t.a13_1=t.a13_1+1|0,t.a13_1>t.v12_1&&qo(t),xo(t)>t.u12_1){var i=t.y12_1.db(Yn(1));Ao(t,i,t.z12_1,Eo(t),function(t){var n=ko(t),i=t.a13_1,e=n.db(Yn(i)),r=t.b13_1;return e.db(Yn(r))}(t))}return!0}function qo(t){Uo(Bn(t.x12_1),ko(t),null),t.a13_1=t.a13_1-1|0;var n=ko(t).db(Yn(1));t.y12_1.z9(n)<0&&(t.y12_1=n),t.z12_1.z9(n)<0&&function(t,n){if(0!==t.d13_1){var i=t.c13_1;if(null==i);else for(var e=0,r=i.length;e=0&&s.g13_1.z9(n)<0&&(s.g13_1=n)}}t.z12_1=n}(t,n)}function Oo(t,n){var i=So(t),e=t.x12_1;Uo(null==e?zo(t,null,0,2):i>=e.length?zo(t,e,i,At(e.length,2)):e,ko(t).db(Yn(i)),n)}function zo(t,n,i,e){if(!(e>0))throw Yt(Bt("Buffer size overflow"));var r=ui(Array(e),null);t.x12_1=r;var s=r;if(null==n)return s;var o=ko(t),u=0;if(u0){var e=ko(t),r=So(t);i=Fo(n,e.db(Yn(r)).eb(Yn(1)))===yo()}else i=!1;if(!i)break t;t.b13_1=t.b13_1-1|0;var s=ko(t),o=So(t);Uo(n,s.db(Yn(o)),null)}}function Io(t,n){var i,e=Vo(),r=Do(t,n);if(r.z9(new bn(0,0))<0)i=yo();else{var s=n.g13_1,o=function(t,n){var i=Fo(Bn(t.x12_1),n);return i instanceof No?i.k13_1:i}(t,r);n.g13_1=r.db(Yn(1)),e=t.m13(s),i=o}for(var u=i,a=e,h=0,_=a.length;h<_;){var l=a[h];if(h=h+1|0,null==l);else{var c=on(Tt);l.nc(c)}}return u}function Do(t,n){var i=n.g13_1;return i.z9(Eo(t))<0?i:t.v12_1>0||i.z9(ko(t))>0||0===t.b13_1?new bn(-1,-1):i}function jo(t,n,i){var e=new Xi(Gt(i),pu());if(e.zq(),Do(t,n).z9(new bn(0,0))<0)n.h13_1=e,n.h13_1=e;else{var r=on(Tt);e.nc(r)}return e.ap()}function Mo(t,n){var i=n,e=n.length;if(0!==t.d13_1){var r=t.c13_1;if(null==r);else for(var s=0,o=r.length;s=i.length){var _=i,l=At(2,i.length),c=Math.max(2,l);i=ai(_,c)}var f=e;e=f+1|0,i[f]=h,u.h13_1=null}}}}}return i}function No(t,n,i,e){this.i13_1=t,this.j13_1=n,this.k13_1=i,this.l13_1=e}function Ro(t,n,i){Ft.call(this,i),this.v13_1=t,this.w13_1=n}function Po(t,n,i){Bo.call(this),this.u12_1=t,this.v12_1=n,this.w12_1=i,this.x12_1=null,this.y12_1=new bn(0,0),this.z12_1=new bn(0,0),this.a13_1=0,this.b13_1=0}function Lo(){Yo.call(this),this.g13_1=new bn(-1,-1),this.h13_1=null}function Fo(t,n){return Ho(),t[n.ia()&(t.length-1|0)]}function Uo(t,n,i){return Ho(),t[n.ia()&(t.length-1|0)]=i}function Ho(){nt||(nt=!0,tt=new zu("NO_VALUE"))}function Vo(){return et||(et=!0,it=ui(Array(0),null)),it}function Bo(){za.call(this),this.c13_1=null,this.d13_1=0,this.e13_1=0,this.f13_1=null}function Yo(){}function Wo(t,n){if(n.ig(0,(e=t,function(t,n){var i=n.g2(),r=e.g15_1.hc(i);if(i!==v)return n!==r?oi.MIN_VALUE:t+1|0;var s=null==r||Xt(r,Me)?r:Dt(),o=function(t,n){for(var i=t,e=n;;){if(null===i)return null;if(i===e)return i;if(!(i instanceof Ou))return i;i=i.um()}}(Xt(n,Me)?n:Dt(),s);if(o!==s)throw Yt(Bt("Flow invariant is violated:\n\t\tEmission from another coroutine is detected.\n\t\tChild of "+o+", expected child of "+s+".\n\t\tFlowCollector is not thread-safe and concurrent emissions are prohibited.\n\t\tTo mitigate this restriction please use 'channelFlow' builder instead of 'flow'"));return null==s?t:t+1|0}))!==t.h15_1){var i="Flow invariant is violated:\n\t\tFlow was collected in "+t.g15_1+",\n\t\tbut emission happened in "+n+".\n\t\tPlease refer to 'flow' documentation or use 'flowOn' instead";throw Yt(Bt(i))}var e}function Go(t,n){Ft.call(this,n),this.r15_1=t}function Ko(){}function Xo(t,n,i){Ft.call(this,i),this.d16_1=t,this.e16_1=n}function Jo(t,n){this.f16_1=n,this.g16_1=t}function Zo(){}function Qo(){return hu(),rt}function tu(t,n,i){uu.call(this,n),this.gq_1=t,this.hq_1=Wt(i<<16)}function nu(t){return t===Qo()}function iu(t){if(t===Qo())throw Yt(Bt("Does not contain segment"));return t instanceof tu?t:Dt()}function eu(t){this.k11_1=t}function ru(t){return t.dz_1.kotlinx$atomicfu$value}function su(t){for(var n=t.iz();null!==n&&n.az();)n=n.ez_1.kotlinx$atomicfu$value;return n}function ou(t){for(var n=Bn(t.fz());n.az();){var i=n.fz();if(null==i)return n;n=i}return n}function uu(t){this.dz_1=Zt(null),this.ez_1=Zt(t)}function au(t,n,i){hu();for(var e=t;e.gq_1.z9(n)<0||e.az();){var r=ru(e);if(r===Qo())return Qo();var s=null==r||r instanceof uu?r:Dt();if(null==s){var o=i(e.gq_1.db(Yn(1)),e);e.gz(o)&&(e.az()&&e.x(),e=o)}else e=s}return e}function hu(){st||(st=!0,rt=new zu("CLOSED"))}function _u(t,n){for(var i=(ga(),ga(),qt).v();i.w();){var e=i.y();try{e.ms(t,n)}catch(t){if(t instanceof lu)return Tt;if(!(t instanceof Error))throw t;ua(me(n,t))}}try{vn(n,new ma(t))}catch(t){if(!(t instanceof Error))throw t}ua(n)}function lu(){}function cu(){return wu(),ot}function fu(){return wu(),ut}function vu(t,n){mu.call(this,lt),this.op_1=t,this.pp_1=n,this.qp_1=cu(),this.rp_1=(this.gc(),0),this.sp_1=Zt(null)}function du(t,n,i){var e;if(i=i===Rt?null:i,wu(),t instanceof vu){var r,s=he(n,i);if(t.op_1.js(t.gc()))t.qp_1=s,t.cq_1=pu(),t.op_1.ks(t.gc(),t),r=Tt;else{var o=pu(),u=Te().ht();if(u.bt())t.qp_1=s,t.cq_1=o,u.at(t);else{u.dt(!0);try{var a,h=t.gc().hc(v);if(null==h||h.bm())a=!1;else{var _=h.zm();t.br(s,_);var l=on(un(_));t.nc(l),a=!0}for(a||(t.pp_1,t.rp_1,t.pp_1.nc(n));u.zs(););}catch(n){if(!(n instanceof Error))throw n;var c=n;t.nr(c,null)}finally{u.et(!0)}}r=Tt}e=r}else t.nc(n),e=Tt;return e}function wu(){at||(at=!0,ot=new zu("UNDEFINED"),ut=new zu("REUSABLE_CLAIMED"))}function pu(){return ht}function mu(t){va.call(this),this.cq_1=t}function gu(t){return 1===t||2===t}function bu(t,n,i){var e,r=t.ar(),s=t.lr(r);if(null!=s)e=on(un(s));else{var o=t.hr(r);e=on(o)}var u=e;if(i){var a=n instanceof vu?n:Dt();a.pp_1,a.rp_1,a.pp_1.nc(u)}else n.nc(u)}function $u(){return ft}function yu(t){return t===Rt?null:t}function ku(t,n){var i,e=t;if(null==e)i=yu(n);else if(e instanceof In){(t instanceof In?t:Dt()).s(n),i=yu(t)}else{var r=An(4),s=t;r.s(null==s||null!=s?s:Dt()),r.s(n),i=yu(r)}return i}function xu(t,n,i){var e=Eu(t,n,null);null==e||we(i,e)}function Su(t,n){xn(t,n,this),Sn(this,Su)}function Eu(t,n,i){i=i===Rt?null:i;try{t(n)}catch(t){if(!(t instanceof Error))throw t;var e=t;if(null==i||i.cause===e)return new Su("Exception in undelivered element handler for "+n,e);vn(i,e)}return i}function Cu(t,n,i){return e=t,r=n,s=i,function(t){return xu(e,r,s),Tt};var e,r,s}function qu(t){this.i16_1=t}function Ou(t,n){Ei.call(this,t,!0,!0),this.ep_1=n}function zu(t){this.j16_1=t}function Au(t,n,i,e){return i=i===Rt?1:i,e=e===Rt?oi.MAX_VALUE:e,function(t,n,i,e){var r;i=i===Rt?new bn(1,0):i,e===Rt?($n(),r=new bn(-1,2147483647)):r=e,e=r;var s=null;if(null==s)return n;var o=s,u=li(o);if(null==u)throw Yt(Bt("System property '"+t+"' has unrecognized value '"+o+"'"));var a=u;if(!(i.z9(a)<=0&&a.z9(e)<=0)){var h="System property '"+t+"' should be in range "+i.toString()+".."+e.toString()+", but is '"+a.toString()+"'";throw Yt(Bt(h))}return a}(t,Yn(n),Yn(i),Yn(e)).ia()}function Tu(t,n){var i;try{du(Gt(t),on(Tt)),i=Tt}catch(t){if(!(t instanceof Error))throw t;Du(n,t),i=Tt}return i}function Iu(t,n,i,e){var r;e=e===Rt?null:e;try{du(Gt(Lt(t,n,i)),on(Tt),e),r=Tt}catch(t){if(!(t instanceof Error))throw t;Du(i,t),r=Tt}return r}function Du(t,n){return function(t,n){var i=on(un(n));throw t.nc(i),n}(t,n)}function ju(t,n,i){var e,r;try{r="function"==typeof i?i(n,t):i.zc(n,t)}catch(t){if(!(t instanceof Error))throw t;r=new ue(t)}var s=r;if(s!==Ut()){var o=t.jm(s);if(o!==Ve()){if(o instanceof ue)throw o.gm_1,Oa(o.gm_1,t.ep_1);e=Or(o)}else e=Ut()}else e=Ut();return e}function Mu(){}function Nu(t,n){var i,e=t.z10_1;if(null==e)return null;t:{for(var r=e.v();r.w();){var s=r.y();if(s.k16_1===n){i=s;break t}}i=null}var o=i;if(null==o){var u="Clause with object "+Bt(n)+" is not found";throw Yt(Bt(u))}return o}function Ru(){}function Pu(){}function Lu(){if(yt)return Tt;yt=!0,mt=new Fu("SUCCESSFUL",0),gt=new Fu("REREGISTER",1),bt=new Fu("CANCELLED",2),$t=new Fu("ALREADY_SELECTED",3)}function Fu(t,n){pn.call(this,t,n)}function Uu(t){var n;switch(Yu(),t){case 0:n=Vu();break;case 1:n=Bu();break;case 2:Lu(),n=bt;break;case 3:Lu(),n=$t;break;default:throw Yt(Bt("Unexpected internal result: "+t))}return n}function Hu(t,n){Yu();var i=t.gp(Tt,null,n);if(null==i)return!1;var e=i;return t.hp(e),!0}function Vu(){return Lu(),mt}function Bu(){return Lu(),gt}function Yu(){kt||(kt=!0,vt=new zu("STATE_REG"),dt=new zu("STATE_COMPLETED"),wt=new zu("STATE_CANCELLED"),pt=new zu("NO_RESULT"),new zu("PARAM_CLAUSE_0"))}function Wu(){qa.call(this)}function Gu(t,n){"function"==typeof t?t(n):t.invoke(n)}function Ku(){}function Xu(t){return Bt(t)}function Ju(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&void 0!==navigator.userAgent&&void 0!==navigator.userAgent.match&&navigator.userAgent.match("\\bjsdom\\b")?ra():"undefined"!=typeof window&&null!=window&&void 0!==window.addEventListener?function(t){var n,i=t.coroutineDispatcher;if(null==i){var e=new xa(t);t.coroutineDispatcher=e,n=e}else n=i;return n}(window):"undefined"==typeof process||void 0===process.nextTick?(null==zt&&new ba,zt):ra()}function Zu(t,n){var i=t.am().jg(n);return i!==ha().ps_1&&null==i.hc(Ht)?i.jg(ha().ps_1):i}function Qu(t,n){Ou.call(this,t,n)}function ta(){return St}function na(t){var n=di(t).f6();return null==n?"Unknown":n}function ia(t){var n=t.__debug_counter;return"number"!=typeof n&&(n=xt=xt+1|0,t.__debug_counter=n),(null!=n&&"number"==typeof n?n:Dt()).toString()}function ea(){Et=this,$a.call(this)}function ra(){return null==Et&&new ea,Et}function sa(t){var n;ya.call(this),this.y16_1=t,this.z16_1=(n=this,function(){return n.f17(),Tt})}function oa(t){var n;ya.call(this),this.v17_1=t,this.w17_1="dispatchCoroutine",this.v17_1.addEventListener("message",(n=this,function(t){return t.source==n.v17_1&&t.data==n.w17_1&&(t.stopPropagation(),n.f17()),Tt}),!0)}function ua(t){console.error(t.toString())}function aa(){Ct=this,this.ps_1=Ju(),this.qs_1=(null==x&&new Pr,x),this.rs_1=new _a(this.ps_1,!1),this.ss_1=null}function ha(){return null==Ct&&new aa,Ct}function _a(t,n){jr.call(this),this.y17_1=t,this.z17_1=n,this.a18_1=this.z17_1?this:new _a(this.y17_1,!0)}function la(){ze.call(this)}function ca(t,n,i){wi(t,n,this),Sn(this,ca),this.f18_1=i}function fa(){}function va(){}function da(){}function wa(t,n){return t+1|0}function pa(t,n){this.f15_1=t,this.g15_1=n,this.h15_1=this.g15_1.ig(0,wa),this.i15_1=null}function ma(t){mi(Bt(t),this),Sn(this,ma)}function ga(){Ot||(Ot=!0,qt=gi())}function ba(){zt=this,$a.call(this)}function $a(){de.call(this),this.b17_1=new sa(this)}function ya(){this.c17_1=yn(),this.d17_1=16,this.e17_1=!1}function ka(t,n){this.j18_1=t,Ea.call(this,n)}function xa(t){de.call(this),this.l18_1=t,this.m18_1=new oa(this.l18_1)}function Sa(t){return yi(t,new bn(0,0),new bn(2147483647,0)).ia()}function Ea(t){Zi.call(this),this.n18_1=t}function Ca(){qa.call(this)}function qa(){this.rt_1=this,this.st_1=this,this.tt_1=!1}function Oa(t,n){return t}function za(){}function Aa(){this.it_1=null}return Nt(Me,"Job",Kt,Rt,[qn],Rt,Rt,Rt,[0]),Nt(Ne,"ParentJob",Kt,Rt,[Me],Rt,Rt,Rt,[0]),Nt($r,"JobSupport",Mt,Rt,[Me,Ne],Rt,Rt,Rt,[0]),Nt(ye,"CoroutineScope",Kt),Nt(Ei,"AbstractCoroutine",Mt,$r,[$r,Me,jt,ye],Rt,Rt,Rt,[0]),Nt(Ci,"StandaloneCoroutine",Mt,Ei,Rt,Rt,Rt,Rt,[0]),Nt(qi,"LazyStandaloneCoroutine",Mt,Ci,Rt,Rt,Rt,Rt,[0]),Nt(Oi,"$awaitCOROUTINE$0",Mt,Ft),Nt(zi,"DeferredCoroutine",Mt,Ei,[Ei,Me],Rt,Rt,Rt,[0]),Nt(Ai,"LazyDeferredCoroutine",Mt,zi,Rt,Rt,Rt,Rt,[0]),Nt(Ou,"ScopeCoroutine",Mt,Ei,Rt,Rt,Rt,Rt,[0]),Nt(Ti,"DispatchedCoroutine",Mt,Ou,Rt,Rt,Rt,Rt,[0]),Nt(Ii,"CancellableContinuation",Kt,Rt,[jt]),Nt(Ku,"CancelHandlerBase",Mt),Nt(Ji,"NotCompleted",Kt),Nt(Zi,"CancelHandler",Mt,Ku,[Ku,Ji]),Nt(ji,"DisposeOnCancel",Mt,Zi),Nt(fa,"Runnable",Kt),Nt(va,"SchedulerTask",Mt,Rt,[fa]),Nt(mu,"DispatchedTask",Mt,va),Nt(Fr,"Waiter",Kt),Nt(Xi,"CancellableContinuationImpl",Mt,mu,[mu,Ii,Fr]),Nt(Qi,"Active",Qt,Rt,[Ji]),Nt(te,"CompletedContinuation",Mt),Nt(ne,"InvokeOnCancel",Mt,Zi),Nt(re,"$awaitCOROUTINE$1",Mt,Ft),Nt(se,"CompletableDeferredImpl",Mt,$r,[$r,Me],Rt,Rt,Rt,[0]),Nt(oe,"CompletableJob",Kt,Rt,[Me],Rt,Rt,Rt,[0]),Nt(ue,"CompletedExceptionally",Mt),Nt(ae,"CancelledContinuation",Mt,ue),Nt(_e,"CompletedWithCancellation",Mt),Nt(fe,"Key",Qt,an),Nt(de,"CoroutineDispatcher",Mt,hn,[hn,cn]),Nt(pe,"Key",Qt),Nt(ge,"Key",Qt),Nt(be,"CoroutineName",Mt,hn),Nt(ke,"GlobalScope",Qt,Rt,[ye]),Nt(Se,"CoroutineStart",Mt,pn),Nt(Ce,"Delay",Kt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(ze,"EventLoop",Mt,de),Nt(Ae,"ThreadLocalEventLoop",Qt),Nt(Ie,"CompletionHandlerException",Mt,kn),Nt(De,"CoroutinesInternalError",Mt,En),Nt(je,"Key",Qt),Nt(Re,"ChildHandle",Kt),Nt(Pe,"NonDisposableHandle",Qt,Rt,[Re]),Nt(Xe,"Incomplete",Kt),Nt(Ke,"Empty",Mt,Rt,[Xe]),Nt(qa,"LinkedListNode",Mt,Rt,Rt,qa),Nt(Ca,"LinkedListHead",Mt,qa,Rt,Ca),Nt(Je,"NodeList",Mt,Ca,[Ca,Xe],Je),Nt(Wu,"CompletionHandlerBase",Mt,qa),Nt(Ze,"JobNode",Mt,Wu,[Wu,Xe]),Nt(za,"SynchronizedObject",Mt,Rt,Rt,za),Nt(pr,"Finishing",Mt,za,[za,Xe]),Nt(mr,"ChildCompletion",Mt,Ze),Nt(gr,"AwaitContinuation",Mt,Xi),Nt(br,"JobSupport$$slambda",Mt,Ft,Rt,Rt,Rt,Rt,[1]),Nt(kr,"JobCancellingNode",Mt,Ze),Nt(xr,"InactiveNodeList",Mt,Rt,[Xe]),Nt(Sr,"ChildHandleNode",Mt,kr,[kr,Re]),Nt(Er,"InvokeOnCancelling",Mt,kr),Nt(Cr,"InvokeOnCompletion",Mt,Ze),Nt(qr,"ResumeOnCompletion",Mt,Ze),Nt(zr,"ResumeAwaitOnCompletion",Mt,Ze),Nt(Ar,"IncompleteStateBox",Mt),Nt(Tr,"ChildContinuation",Mt,kr),Nt(Ir,"JobImpl",Mt,$r,[$r,oe],Rt,Rt,Rt,[0]),Nt(jr,"MainCoroutineDispatcher",Mt,de),Nt(Nr,"SupervisorJobImpl",Mt,Ir,Rt,Rt,Rt,Rt,[0]),Nt(Rr,"TimeoutCancellationException",Mt,Tn),Nt(Pr,"Unconfined",Qt,de),Nt(Lr,"Key",Qt),Nt(Hr,"BufferOverflow",Mt,pn),Nt(uu,"ConcurrentLinkedListNode",Mt),Nt(tu,"Segment",Mt,uu,[uu,Ji]),Nt(os,"ChannelSegment",Mt,tu),Nt(_s,"$hasNextCOROUTINE$5",Mt,Ft),Nt(vs,"SendBroadcast",Mt,Rt,[Fr]),Nt(Es,"BufferedChannelIterator",Mt,Rt,[Fr],Rt,Rt,Rt,[0,3]),Nt(po,"SendChannel",Kt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(mo,"ReceiveChannel",Kt,Rt,Rt,Rt,Rt,Rt,[0]),Nt(Us,"BufferedChannel",Mt,Rt,[po,mo],Rt,Rt,Rt,[1,4,0,3]),Nt(Hs,"WaiterEB",Mt),Nt(Vs,"ReceiveCatching",Mt,Rt,[Fr]),Nt(oo,"Factory",Qt),Nt(ho,"Failed",Mt,Rt,Rt,ho),Nt(_o,"Closed",Mt,ho),Nt(lo,"Companion",Qt),Nt(fo,"ChannelResult",Mt),Nt(vo,"ClosedSendChannelException",Mt,ni),Nt(wo,"ClosedReceiveChannelException",Mt,ei),Nt($o,"ConflatedBufferedChannel",Mt,Us,Rt,Rt,Rt,Rt,[1,0]),Nt(No,"Emitter",Mt),Nt(Ro,"$collectCOROUTINE$10",Mt,Ft),Nt(Bo,"AbstractSharedFlow",Mt,za),Nt(Po,"SharedFlowImpl",Mt,Bo,Rt,Rt,Rt,Rt,[1]),Nt(Yo,"AbstractSharedFlowSlot",Mt),Nt(Lo,"SharedFlowSlot",Mt,Yo,Rt,Lo),Nt(Go,"$onSubscriptionCOROUTINE$12",Mt,Ft),Nt(Ko,"SubscribedFlowCollector",Mt,Rt,Rt,Rt,Rt,Rt,[1,0]),Nt(Xo,"$collectCOROUTINE$13",Mt,Ft),Nt(Jo,"ReadonlySharedFlow",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(Zo,"OpDescriptor",Mt),Nt(eu,"SegmentOrClosed",Mt),Nt(lu,"ExceptionSuccessfullyProcessed",Qt,_i),Nt(vu,"DispatchedContinuation",Mt,mu,[mu,jt]),Nt(Su,"UndeliveredElementException",Mt,kn),Nt(qu,"ContextScope",Mt,Rt,[ye]),Nt(zu,"Symbol",Mt),Nt(Mu,"SelectInstance",Kt),Nt(Ru,"ClauseData",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(Pu,"SelectImplementation",Mt,Zi,[Zi,Mu,Fr],Rt,Rt,Rt,[0,2]),Nt(Fu,"TrySelectDetailedResult",Mt,pn),Nt(Qu,"UndispatchedCoroutine",Mt,Ou,Rt,Rt,Rt,Rt,[0]),Nt($a,"SetTimeoutBasedDispatcher",Mt,de,[de,Ce],Rt,Rt,Rt,[1]),Nt(ea,"NodeDispatcher",Qt,$a,Rt,Rt,Rt,Rt,[1]),Nt(ya,"MessageQueue",Mt,Rt,[$i]),Nt(sa,"ScheduledMessageQueue",Mt,ya),Nt(oa,"WindowMessageQueue",Mt,ya),Nt(aa,"Dispatchers",Qt),Nt(_a,"JsMainDispatcher",Mt,jr),Nt(la,"UnconfinedEventLoop",Mt,ze,Rt,la),Nt(ca,"JobCancellationException",Mt,Tn),Nt(da,"TaskContext",Qt),Nt(pa,"SafeCollector",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(ma,"DiagnosticCoroutineContextException",Mt,kn),Nt(ba,"SetTimeoutDispatcher",Qt,$a,Rt,Rt,Rt,Rt,[1]),Nt(Ea,"ClearTimeout",Mt,Zi),Nt(ka,"WindowClearTimeout",Mt,Ea),Nt(xa,"WindowDispatcher",Mt,de,[de,Ce],Rt,Rt,Rt,[1]),Nt(Aa,"CommonThreadLocal",Mt,Rt,Rt,Aa),It(Ei).gc=function(){return this.zl_1},It(Ei).am=function(){return this.zl_1},It(Ei).bm=function(){return It($r).bm.call(this)},It(Ei).cm=function(t){},It(Ei).dm=function(t,n){},It(Ei).em=function(){return na(this)+" was cancelled"},It(Ei).fm=function(t){t instanceof ue?this.dm(t.gm_1,t.im()):this.cm(null==t||null!=t?t:Dt())},It(Ei).nc=function(t){var n=this.jm(he(t));if(n===Ve())return Tt;this.km(n)},It(Ei).km=function(t){return this.lm(t)},It(Ei).mm=function(t){we(this.zl_1,t)},It(Ei).nm=function(){var t=(this.zl_1,null);return null==t?It($r).nm.call(this):'"'+t+'":'+It($r).nm.call(this)},It(Ei).om=function(t,n,i){t.rm(i,n,this)},It(Ci).tn=function(t){return we(this.zl_1,t),!0},It(qi).ym=function(){Tu(this.do_1,this)},It(Oi).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=this.mo_1.vn(this))===Ut())return t;continue t;case 1:return null==t||null!=t?t:Dt();case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},It(zi).qo=function(t){var n=new Oi(this,t);return n.bc_1=Tt,n.cc_1=null,n.mc()},It(Ai).ym=function(){Tu(this.uo_1,this)},It(Ti).lm=function(t){this.km(t)},It(Ti).km=function(t){if(function(t){for(var n=t.zo_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.zo_1.atomicfu$compareAndSet(0,2))return!0;break;case 1:return!1;default:throw Yt(Bt("Already resumed"))}}(this))return Tt;du(Gt(this.ep_1),le(t,this.ep_1))},It(Ti).ap=function(){if(function(t){for(var n=t.zo_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.zo_1.atomicfu$compareAndSet(0,1))return!0;break;case 2:return!1;default:throw Yt(Bt("Already suspended"))}}(this))return Ut();var t=Or(this.vm());if(t instanceof ue)throw t.gm_1;return null==t||null!=t?t:Dt()},It(ji).lp=function(t){return this.kp_1.mp()},It(ji).invoke=function(t){return this.lp(t)},It(ji).toString=function(){return"DisposeOnCancel["+this.kp_1+"]"},It(Xi).yq=function(){return this.vp_1},It(Xi).gc=function(){return this.wp_1},It(Xi).vm=function(){return this.yp_1.kotlinx$atomicfu$value},It(Xi).wm=function(){var t=this.vm();return!(null!=t&&Xt(t,Ji))},It(Xi).fp=function(){return this.vm()instanceof ae},It(Xi).zq=function(){var t=Fi(this);if(null==t)return Tt;var n=t;this.wm()&&(n.mp(),this.zp_1.kotlinx$atomicfu$value=d)},It(Xi).aq=function(){var t=this.yp_1.kotlinx$atomicfu$value;return t instanceof te&&null!=t.mq_1?(this.xq(),!1):(this.xp_1.kotlinx$atomicfu$value=536870911+(0<>ie()){case 0:var e=536870911&i,r=(1<>ie()<=0},It(ze).ct=function(){var t=this.ys_1,n=null==t?null:t.d1();return null==n||n},It(ze).dt=function(t){this.ws_1=this.ws_1.db(Oe(0,t)),t||(this.xs_1=!0)},It(ze).et=function(t){if(this.ws_1=this.ws_1.eb(Oe(0,t)),this.ws_1.z9(new bn(0,0))>0)return Tt;this.xs_1&&this.ft()},It(ze).ft=function(){},It(Ae).ht=function(){var t,n=this.gt_1.jt();if(null==n){var i=new la;Te().gt_1.kt(i),t=i}else t=n;return t},It(Pe).um=function(){return null},It(Pe).mp=function(){},It(Pe).ln=function(t){return!1},It(Pe).toString=function(){return"NonDisposableHandle"},It(Ke).bm=function(){return this.lt_1},It(Ke).mt=function(){return null},It(Ke).toString=function(){return"Empty{"+(this.lt_1?"Active":"New")+"}"},It(Je).bm=function(){return!0},It(Je).mt=function(){return this},It(Je).qt=function(t){var n=On();n.o5("List{"),n.o5(t),n.o5("}[");for(var i=!0,e=this.rt_1;!Vt(e,this);){if(e instanceof Ze){var r=e;i?i=!1:n.o5(", "),n.n5(r)}e=e.rt_1}return n.o5("]"),n.toString()},It(Je).toString=function(){return ta()?this.qt("Active"):It(Ca).toString.call(this)},It(Ze).eu=function(){var t=this.du_1;if(null!=t)return t;zn("job")},It(Ze).bm=function(){return!0},It(Ze).mt=function(){return null},It(Ze).mp=function(){return this.eu().fn(this)},It(Ze).toString=function(){return na(this)+"@"+ia(this)+"[job@"+ia(this.eu())+"]"},It(pr).mt=function(){return this.gu_1},It(pr).ru=function(t){this.hu_1.kotlinx$atomicfu$value=t},It(pr).nu=function(){return this.hu_1.kotlinx$atomicfu$value},It(pr).xu=function(t){this.iu_1.kotlinx$atomicfu$value=t},It(pr).qu=function(){return this.iu_1.kotlinx$atomicfu$value},It(pr).ou=function(){return tr(this)===We()},It(pr).ku=function(){return!(null==this.qu())},It(pr).bm=function(){return null==this.qu()},It(pr).lu=function(t){var n,i=tr(this);if(null==i)n=nr();else if(i instanceof Error){var e=nr();e.s(i),n=e}else{if(!(i instanceof In)){var r="State is "+Jt(i);throw Yt(Bt(r))}n=i instanceof In?i:Dt()}var s=n,o=this.qu();return null==o||s.p1(0,o),null==t||Vt(t,o)||s.s(t),Qe(this,We()),s},It(pr).pu=function(t){var n=this.qu();if(null==n)return this.xu(t),Tt;if(t===n)return Tt;var i=tr(this);if(null==i)Qe(this,t);else if(i instanceof Error){if(t===i)return Tt;var e=nr();e.s(i),e.s(t),Qe(this,e)}else{if(!(i instanceof In)){var r="State is "+Jt(i);throw Yt(Bt(r))}(i instanceof In?i:Dt()).s(t)}},It(pr).toString=function(){return"Finishing[cancelling="+this.ku()+", completing="+this.nu()+", rootCause="+this.qu()+", exceptions="+Jt(tr(this))+", list="+this.gu_1+"]"},It(mr).lp=function(t){!function(t,n,i,e){var r=dr(i);if(null!=r&&vr(t,n,r,e))return Tt;var s=ir(t,n,e);t.lm(s)}(this.cv_1,this.dv_1,this.ev_1,this.fv_1)},It(mr).invoke=function(t){return this.lp(t)},It(gr).fr=function(t){var n=this.mv_1.vm();if(n instanceof pr){var i=n.qu();if(null!=i)return i}return n instanceof ue?n.gm_1:t.zm()},It(gr).nm=function(){return"AwaitContinuation"},It(br).fw=function(t,n){var i=this.gw(t,n);return i.bc_1=Tt,i.cc_1=null,i.mc()},It(br).zc=function(t,n){return this.fw(t instanceof Dn?t:Dt(),n)},It(br).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=8,this.xv_1=this.vv_1.vm(),this.xv_1 instanceof Sr){if(this.zb_1=6,(t=this.wv_1.te(this.xv_1.wu_1,this))===Ut())return t;continue t}var n=this.xv_1;if(null!=n&&Xt(n,Xe)){if(this.yv_1=this.xv_1.mt(),null==this.yv_1){this.zv_1=null,this.zb_1=5;continue t}this.aw_1=this.yv_1,this.bw_1=this.aw_1,this.cw_1=this.bw_1,this.dw_1=this.cw_1.rt_1,this.zb_1=1;continue t}this.zb_1=7;continue t;case 1:if(Vt(this.dw_1,this.cw_1)){this.zb_1=4;continue t}if(this.dw_1 instanceof Sr){if(this.ew_1=this.dw_1,this.zb_1=2,(t=this.wv_1.te(this.ew_1.wu_1,this))===Ut())return t;continue t}this.zb_1=3;continue t;case 2:this.zb_1=3;continue t;case 3:this.dw_1=this.dw_1.rt_1,this.zb_1=1;continue t;case 4:this.zv_1=Tt,this.zb_1=5;continue t;case 5:case 6:this.zb_1=7;continue t;case 7:return Tt;case 8:throw this.cc_1}}catch(t){var i=t;if(8===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},It(br).gw=function(t,n){var i=new br(this.vv_1,n);return i.wv_1=t,i},It($r).g2=function(){return v},It($r).sm=function(t){this.vl_1.kotlinx$atomicfu$value=t},It($r).tm=function(){return this.vl_1.kotlinx$atomicfu$value},It($r).um=function(){var t=this.tm();return null==t?null:t.um()},It($r).wl=function(t){if(null==t)return this.sm(d),Tt;t.xm();var n=t.pn(this);this.sm(n),this.wm()&&(n.mp(),this.sm(d))},It($r).vm=function(){for(var t=this.ul_1;;){var n=t.kotlinx$atomicfu$value;if(!(n instanceof Zo))return n;n.hw(this)}},It($r).bm=function(){var t=this.vm();return!(null==t||!Xt(t,Xe))&&t.bm()},It($r).wm=function(){var t=this.vm();return!(null!=t&&Xt(t,Xe))},It($r).xm=function(){for(;;){var t=or(this,this.vm());if(0===t)return!1;if(1===t)return!0}},It($r).ym=function(){},It($r).zm=function(){var t,n=this.vm();if(n instanceof pr){var i=n.qu(),e=null==i?null:this.an(i,na(this)+" is cancelling");if(null==e)throw Yt(Bt("Job is still new or active: "+this));t=e}else{if(null!=n&&Xt(n,Xe))throw Yt(Bt("Job is still new or active: "+this));t=n instanceof ue?this.bn(n.gm_1):new ca(na(this)+" has completed normally",null,this)}return t},It($r).an=function(t,n){var i=t instanceof Tn?t:null;return null==i?new ca(null==n?this.em():n,t,this):i},It($r).bn=function(t,n,i){return n=n===Rt?null:n,i===Rt?this.an(t,n):i.an.call(this,t,n)},It($r).cn=function(t){return this.dn(!1,!0,t)},It($r).dn=function(t,n,i){for(var e=function(t,n,i){var e;if(i){var r=n instanceof kr?n:null;e=null==r?new Er(n):r}else{var s=n instanceof Ze?n:null,o=null==s?null:s;e=null==o?new Cr(n):o}var u=e;return u.du_1=t,u}(this,i,t);;)t:{var r=this.vm();if(r instanceof Ke)if(r.lt_1){if(this.ul_1.atomicfu$compareAndSet(r,e))return e}else ar(this,r);else{if(null==r||!Xt(r,Xe)){if(n){var s=r instanceof ue?r:null;Gu(i,null==s?null:s.gm_1)}return d}var o=r.mt();if(null==o)hr(this,r instanceof Ze?r:Dt());else{var u=null,a=d;if(t&&r instanceof pr&&(null==(u=r.qu())||i instanceof Sr&&!r.nu())){if(!ur(this,r,o,e))break t;if(null==u)return e;a=e}if(null!=u)return n&&Gu(i,u),a;if(ur(this,r,o,e))return e}}}},It($r).fs=function(t){return function(t){for(;;){var n=t.vm();if(null==n||!Xt(n,Xe))return!1;if(or(t,n)>=0)return!0}}(this)?function(t,n){var i=new Xi(Gt(n),pu());i.zq();var e=new qr(i);return Di(i,t.cn(e)),i.ap()}(this,t):(Le(t.gc()),Tt)},It($r).fn=function(t){for(;;){var n=this.vm();if(!(n instanceof Ze))return null!=n&&Xt(n,Xe)?(null!=n.mt()&&t.xt(),Tt):Tt;if(n!==t)return Tt;if(this.ul_1.atomicfu$compareAndSet(n,Ge()))return Tt}},It($r).gn=function(){return!1},It($r).hn=function(t){var n;n=null==t?new ca(this.em(),null,this):t,this.jn(n)},It($r).em=function(){return"Job was cancelled"},It($r).jn=function(t){this.mn(t)},It($r).kn=function(t){this.mn(t)},It($r).ln=function(t){return t instanceof Tn||!!this.mn(t)&&this.sn()},It($r).mn=function(t){var n,i=He();return!(!this.gn()||(i=function(t,n){for(;;){var i=t.vm();if(null==i||!Xt(i,Xe)||i instanceof pr&&i.nu())return He();var e=fr(t,i,new ue(_r(t,n)));if(e!==Be())return e}}(this,t))!==Ve())||(i===He()&&(i=function(t,n){for(var i=null;;)t:{var e=t.vm();if(e instanceof pr){if(e.ou())return Ye();var r=e.ku();if(null!=n||!r){var s,o=i;if(null==o){var u=_r(t,n);i=u,s=u}else s=o;var a=s;e.pu(a)}var h=e.qu(),_=r?null:h;return null==_||rr(t,e.gu_1,_),He()}if(null==e||!Xt(e,Xe))return Ye();var l,c=i;if(null==c){var f=_r(t,n);i=f,l=f}else l=c;var v=l;if(!e.bm()){var d=fr(t,e,new ue(v));if(d===He()){var w="Cannot happen in "+Jt(e);throw Yt(Bt(w))}if(d===Be())break t;return d}if(cr(t,e,v))return He()}}(this,t)),i===He()||i===Ve()?n=!0:i===Ye()?n=!1:(this.lm(i),n=!0),n)},It($r).nn=function(){var t,n=this.vm();if(n instanceof pr)t=n.qu();else if(n instanceof ue)t=n.gm_1;else{if(null!=n&&Xt(n,Xe)){var i="Cannot be cancelling child in this state: "+Jt(n);throw Yt(Bt(i))}t=null}var e=t,r=e instanceof Tn?e:null;return null==r?new ca("Parent job is "+wr(0,n),e,this):r},It($r).cs=function(t){for(;;){var n=fr(this,this.vm(),t);if(n===He())return!1;if(n===Ve())return!0;if(n!==Be())return this.lm(n),!0}},It($r).jm=function(t){for(;;){var n=fr(this,this.vm(),t);if(n===He())throw jn("Job "+this+" is already complete or completing, but is being completed with "+Jt(t),(e=void 0,null==(e=(i=t)instanceof ue?i:null)?null:e.gm_1));if(n!==Be())return n}var i,e},It($r).on=function(){return Mn((t=new br(this,null),(n=function(n,i){return t.fw(n,i)}).$arity=1,n));var t,n},It($r).pn=function(t){var n=new Sr(t),i=this.en(!0,Rt,n);return Xt(i,Re)?i:Dt()},It($r).mm=function(t){throw t},It($r).qn=function(t){},It($r).rn=function(){return!1},It($r).sn=function(){return!0},It($r).tn=function(t){return!1},It($r).fm=function(t){},It($r).lm=function(t){},It($r).toString=function(){return this.un()+"@"+ia(this)},It($r).un=function(){return this.nm()+"{"+wr(0,this.vm())+"}"},It($r).nm=function(){return na(this)},It($r).vn=function(t){t:for(;;){var n=this.vm();if(null==n||!Xt(n,Xe)){if(n instanceof ue)throw n.gm_1;return Or(n)}if(or(this,n)>=0)break t}return function(t,n){var i=new gr(Gt(n),t);i.zq();var e=new zr(i);return Di(i,t.cn(e)),i.ap()}(this,t)},It(xr).mt=function(){return this.mu_1},It(xr).bm=function(){return!1},It(xr).toString=function(){return ta()?this.mu_1.qt("New"):Fn(this)},It(Sr).um=function(){return this.eu()},It(Sr).lp=function(t){return this.wu_1.kn(this.eu())},It(Sr).invoke=function(t){return this.lp(t)},It(Sr).ln=function(t){return this.eu().ln(t)},It(Er).lp=function(t){this.nw_1.atomicfu$compareAndSet(0,1)&&this.mw_1(t)},It(Er).invoke=function(t){return this.lp(t)},It(Cr).lp=function(t){return this.sw_1(t)},It(Cr).invoke=function(t){return this.lp(t)},It(qr).lp=function(t){var n=this.xw_1,i=on(Tt);return n.nc(i),Tt},It(qr).invoke=function(t){return this.lp(t)},It(zr).lp=function(t){var n=this.eu().vm();if(n instanceof ue){var i=this.dx_1,e=n.gm_1,r=on(un(e));i.nc(r)}else{var s=this.dx_1,o=Or(n),u=null==o||null!=o?o:Dt(),a=on(u);s.nc(a)}},It(zr).invoke=function(t){return this.lp(t)},It(Tr).lp=function(t){this.ix_1.er(this.ix_1.fr(this.eu()))},It(Tr).invoke=function(t){return this.lp(t)},It(Ir).gn=function(){return!0},It(Ir).sn=function(){return this.lx_1},It(Ir).es=function(){return this.cs(Tt)},It(Ir).ds=function(t){return this.cs(new ue(t))},It(jr).toString=function(){var t=this.ox();return null==t?na(this)+"@"+ia(this):t},It(jr).ox=function(){var t,n=ha().ts();if(this===n)return"Dispatchers.Main";try{t=n.nx()}catch(n){if(!(n instanceof Un))throw n;t=null}return this===t?"Dispatchers.Main.immediate":null},It(Nr).ln=function(t){return!1},It(Pr).js=function(t){return!1},It(Pr).ks=function(t,n){var i=t.hc(S);if(null!=i)return i.ux_1=!0,Tt;throw Hn("Dispatchers.Unconfined.dispatch function can only be used by the yield function. If you wrap Unconfined dispatcher in your code, make sure you properly delegate isDispatchNeeded and dispatch calls.")},It(Pr).toString=function(){return"Dispatchers.Unconfined"},It(os).by=function(){return Bn(this.zx_1)},It(os).cy=function(){return Wr()},It(os).dy=function(t,n){ss(this,t,n)},It(os).ey=function(t){var n=this.ay_1.atomicfu$get(At(t,2)).kotlinx$atomicfu$value;return null==n||null!=n?n:Dt()},It(os).fy=function(t){var n=this.ey(t);return this.gy(t),n},It(os).gy=function(t){ss(this,t,null)},It(os).hy=function(t){return this.ay_1.atomicfu$get(At(t,2)+1|0).kotlinx$atomicfu$value},It(os).iy=function(t,n){this.ay_1.atomicfu$get(At(t,2)+1|0).kotlinx$atomicfu$value=n},It(os).jy=function(t,n,i){return this.ay_1.atomicfu$get(At(t,2)+1|0).atomicfu$compareAndSet(n,i)},It(os).ky=function(t,n){return this.ay_1.atomicfu$get(At(t,2)+1|0).atomicfu$getAndSet(n)},It(os).iq=function(t,n,i){var e=t>=Wr(),r=e?t-Wr()|0:t,s=this.ey(r);t:for(;;){var o=this.hy(r);if(!(null!=o&&Xt(o,Fr)||o instanceof Hs)){if(o===ts()||o===ns()){if(this.gy(r),e){var u=this.by().my_1;null==u||xu(u,s,i)}return Tt}if(o===Jr()||o===Xr())continue t;if(o===Qr()||o===Gr())return Tt;if(o===is())return Tt;var a="unexpected state: "+Jt(o);throw Yt(Bt(a))}var h=e?ts():ns();if(this.jy(r,o,h)){if(this.gy(r),this.xy(r,!e),e){var _=this.by().my_1;null==_||xu(_,s,i)}return Tt}}},It(os).xy=function(t,n){if(n){var i=this.by(),e=this.gq_1,r=Wr(),s=e.y9(Yn(r)).db(Yn(t));i.yy(s)}this.zy()},It(_s).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=8,this.zb_1=1;continue t;case 1:this.b10_1=this.zz_1.nz_1,this.c10_1=null,this.d10_1=this.b10_1.sy_1.kotlinx$atomicfu$value,this.zb_1=2;continue t;case 2:if(this.b10_1.qz()){this.a10_1=us(this.zz_1),this.zb_1=10;continue t}this.zb_1=3;continue t;case 3:this.e10_1=this.b10_1.oy_1.atomicfu$getAndIncrement$long();var n=this.e10_1,i=Wr();this.f10_1=n.x9(Yn(i));var e=this.e10_1,r=Wr();if(this.g10_1=e.fb(Yn(r)).ia(),this.d10_1.gq_1.equals(this.f10_1)){this.zb_1=5;continue t}if(this.h10_1=Rs(this.b10_1,this.f10_1,this.d10_1),null==this.h10_1){this.zb_1=2;continue t}this.i10_1=this.h10_1,this.zb_1=4;continue t;case 4:this.d10_1=this.i10_1,this.zb_1=5;continue t;case 5:if(this.j10_1=bs(this.b10_1,this.d10_1,this.g10_1,this.e10_1,this.c10_1),this.j10_1===eo()){var s=this.c10_1,o=null!=s&&Xt(s,Fr)?s:null;throw null==o||gs(o,this.b10_1,this.d10_1,this.g10_1),this.d10_1,this.g10_1,this.e10_1,Yt(Bt("unreachable"))}if(this.j10_1===ro()){this.e10_1.z9(this.b10_1.pz())<0&&this.d10_1.jz(),this.zb_1=2;continue t}if(this.j10_1===io()){if(this.l10_1=this.d10_1,this.m10_1=this.g10_1,this.n10_1=this.e10_1,this.zb_1=6,(t=as(this.zz_1,this.l10_1,this.m10_1,this.n10_1,this))===Ut())return t;continue t}this.d10_1.jz();var u=this.j10_1,a=null==u||null!=u?u:Dt();this.zz_1.lz_1=a,this.k10_1=!0,this.zb_1=7;continue t;case 6:return t;case 7:this.a10_1=this.k10_1,this.zb_1=10;continue t;case 8:throw this.cc_1;case 9:this.zb_1=10;continue t;case 10:return this.a10_1}}catch(t){var h=t;if(8===this.ac_1)throw h;this.zb_1=this.ac_1,this.cc_1=h}},It(Es).c11=function(t){var n=new _s(this,t);return n.bc_1=Tt,n.cc_1=null,n.mc()},It(Es).kr=function(t,n){var i=this.mz_1;null==i||i.kr(t,n)},It(Es).y=function(){var t=this.lz_1;if(t===es())throw Yt(Bt("`hasNext()` has not been invoked"));if(this.lz_1=es(),t===is())throw Cs(this.nz_1);return null==t||null!=t?t:Dt()},It(Es).r10=function(t){var n=Bn(this.mz_1);this.mz_1=null,this.lz_1=t;var i=this.nz_1.my_1;return Bs(n,!0,null==i?null:Cu(i,t,n.gc()))},It(Es).d11=function(){var t=Bn(this.mz_1);this.mz_1=null,this.lz_1=is();var n=this.nz_1.oz();if(null==n){var i=on(!1);t.nc(i)}else{var e=Oa(n),r=on(un(e));t.nc(r)}},It(Us).pz=function(){return this.ny_1.kotlinx$atomicfu$value.nb(new bn(-1,268435455))},It(Us).q10=function(){return this.oy_1.kotlinx$atomicfu$value},It(Us).l11=function(t){if(n=this,!Ds(i=this.ny_1.kotlinx$atomicfu$value,n)&&!ps(n,i.nb(new bn(-1,268435455))))return co().m11();var n,i,e;t:{var r=ts(),s=this.ry_1.kotlinx$atomicfu$value;n:for(;;){var o=this.ny_1.atomicfu$getAndIncrement$long(),u=o.nb(new bn(-1,268435455)),a=Ds(o,this),h=Wr(),_=u.x9(Yn(h)),l=Wr(),c=u.fb(Yn(l)).ia();if(!s.gq_1.equals(_)){var f=Ns(this,_,s);if(null==f){if(a){e=co().h11(this.i11());break t}continue n}s=f}var v=ds(this,s,c,t,u,r,a);if(v===Js()){s.jz(),e=co().t10(Tt);break t}if(v===Zs()){e=co().t10(Tt);break t}if(v===Qs()){if(a){s.zy(),e=co().h11(this.i11());break t}var d=null!=r&&Xt(r,Fr)?r:null;null==d||fs(d,0,s,c),s.zy(),e=co().m11();break t}if(v===to()){u.z9(this.q10())<0&&s.jz(),e=co().h11(this.i11());break t}if(v!==no()){if(v===Xs())throw Yt(Bt("unexpected"))}else s.jz()}}return e},It(Us).w10=function(){},It(Us).o10=function(){},It(Us).f11=function(t){var n=this.sy_1.kotlinx$atomicfu$value;t:for(;;){var i=this.oy_1.kotlinx$atomicfu$value,e=this.ly_1,r=i.db(Yn(e)),s=ls(this),o=r.z9(s)>=0?r:s;if(t.z9(o)<0)return Tt;var u=i.db(Yn(1));if(this.oy_1.atomicfu$compareAndSet(i,u)){var a=Wr(),h=i.x9(Yn(a)),_=Wr(),l=i.fb(Yn(_)).ia();if(!n.gq_1.equals(h)){var c=Rs(this,h,n);if(null==c)continue t;n=c}var f=bs(this,n,l,i,null);if(f===ro())i.z9(this.pz())<0&&n.jz();else{n.jz();var v,d=this.my_1;if(null!=(v=null==d?null:Eu(d,null==f||null!=f?f:Dt())))throw v}}}},It(Us).yy=function(t){if(cs(this))return Tt;for(;ls(this).z9(t)<=0;);var n=(so(),T),i=0;if(i0&&(a=_,h=l)}while(u.w());t=a}else t=a;var c=t,f=this.q10(),v=this.pz(),d=c;t:for(;;){var w=0,p=Wr();if(w=0&&$.z9(f)>=0)break t;var y,k=d.hy(m),x=d.ey(m);if(null!=k&&Xt(k,Ii))y=$.z9(f)<0&&$.z9(v)>=0?"receive":$.z9(v)<0&&$.z9(f)>=0?"send":"cont";else if(null!=k&&Xt(k,Mu))y=$.z9(f)<0&&$.z9(v)>=0?"onReceive":$.z9(v)<0&&$.z9(f)>=0?"onSend":"select";else if(k instanceof Vs)y="receiveCatching";else if(k instanceof vs)y="sendBroadcast";else if(k instanceof Hs)y="EB("+Jt(k)+")";else if(Vt(k,Xr())||Vt(k,Jr()))y="resuming_sender";else{if(null==k||Vt(k,Kr())||Vt(k,Qr())||Vt(k,Zr())||Vt(k,ns())||Vt(k,ts())||Vt(k,is()))continue n;y=Bt(k)}var S=y;null!=x?n.o5("("+S+","+x+"),"):n.o5(S+",")}while(w0)return Vo();var n=ko(this),i=this.a13_1,e=n.db(Yn(i));if(0===this.v12_1&&this.b13_1>0&&(e=e.gb()),0!==this.d13_1){var r=this.c13_1;if(null==r);else for(var s=0,o=r.length;s=0&&u.g13_1.z9(e)<0&&(e=u.g13_1)}}if(e.z9(this.z12_1)<=0)return Vo();var a,h=Eo(this);if(this.d13_1>0){var _=h.eb(e).ia(),l=this.b13_1,c=this.v12_1-_|0;a=Math.min(l,c)}else a=this.b13_1;var f=a,v=Vo(),d=h,w=this.b13_1,p=d.db(Yn(w));if(f>0){v=ui(Array(f),null);var m=0,g=Bn(this.x12_1),b=h;if(b.z9(p)<0)t:do{var $=b;b=b.db(new bn(1,0));var y=Fo(g,$);if(y!==yo()){y instanceof No||Dt();var k=m;if(m=k+1|0,v[k]=y.l13_1,Uo(g,$,yo()),Uo(g,h,y.k13_1),h=h.gb(),m>=f)break t}}while(b.z9(p)<0)}var x=h.eb(n).ia();0===this.d13_1&&(e=h);var S=this.y12_1,E=h,C=this.u12_1,q=Math.min(C,x),O=E.eb(Yn(q)),z=S.z9(O)>=0?S:O;return 0===this.v12_1&&z.z9(p)<0&&Vt(Fo(Bn(this.x12_1),z),yo())&&(h=h.gb(),z=z.gb()),Ao(this,z,e,h,p),To(this),0!==v.length&&(v=Mo(this,v)),v},It(Po).m14=function(){return new Lo},It(Po).n14=function(t){return ui(Array(t),null)},It(Lo).o14=function(t){return!(this.g13_1.z9(new bn(0,0))>=0||(this.g13_1=t.l14(),0))},It(Lo).p14=function(t){return this.o14(t instanceof Po?t:Dt())},It(Lo).q14=function(t){var n=this.g13_1;return this.g13_1=new bn(-1,-1),this.h13_1=null,t.m13(n)},It(Lo).r14=function(t){return this.q14(t instanceof Po?t:Dt())},It(Bo).b14=function(){var t,n,i=this.c13_1;if(null==i){var e=this.n14(2);this.c13_1=e,n=e}else{var r;if(this.d13_1>=i.length){var s=ai(i,At(2,i.length));this.c13_1=s,r=s}else r=i;n=r}var o,u=n,a=this.e13_1;t:for(;;){var h,_=u[a];if(null==_){var l=this.m14();u[a]=l,h=l}else h=_;if(o=h,(a=a+1|0)>=u.length&&(a=0),(o instanceof Yo?o:Dt()).p14(this))break t}this.e13_1=a,this.d13_1=this.d13_1+1|0;var c=o;return null==(t=this.f13_1)||t.e15(1),c},It(Bo).g14=function(t){var n;this.d13_1=this.d13_1-1|0,n=this.f13_1,0===this.d13_1&&(this.e13_1=0);for(var i=(t instanceof Yo?t:Dt()).r14(this),e=0,r=i.length;e"},It(Ru).n16=function(t,n){var i=this.m16_1;return null==i?null:i(t,this.l16_1,n)},It(Pu).b11=function(t,n){return Uu(function(t,n,i){t:for(;;){var e=t.y10_1.kotlinx$atomicfu$value;if(Xt(e,Ii)){var r=Nu(t,n);if(null==r)continue t;var s=r,o=s.n16(t,i);if(t.y10_1.atomicfu$compareAndSet(e,s)){var u=Xt(e,Ii)?e:Dt();return t.a11_1=i,Hu(u,o)?0:(t.a11_1=(Yu(),pt),2)}}else{if(Vt(e,(Yu(),dt))||e instanceof Ru)return 3;if(Vt(e,(Yu(),wt)))return 2;if(Vt(e,(Yu(),vt))){if(t.y10_1.atomicfu$compareAndSet(e,vi(n)))return 1}else{if(!Xt(e,fi)){var a="Unexpected state: "+Bt(e);throw Yt(Bt(a))}if(t.y10_1.atomicfu$compareAndSet(e,ci(e,n)))return 1}}}}(this,t,n))},It(Qu).km=function(t){return this.ep_1.nc(le(t,this.ep_1))},It(ea).u16=function(){process.nextTick(this.b17_1.z16_1)},It(sa).g17=function(){this.y16_1.u16()},It(sa).h17=function(){setTimeout(this.z16_1,0)},It(sa).i17=function(t){setTimeout(this.z16_1,t)},It(oa).g17=function(){var t;Promise.resolve(Tt).then((t=this,function(n){return t.f17(),Tt}))},It(oa).h17=function(){this.v17_1.postMessage(this.w17_1,"*")},It(aa).ts=function(){var t=this.ss_1;return null==t?this.rs_1:t},It(_a).nx=function(){return this.a18_1},It(_a).js=function(t){return!this.z17_1},It(_a).ks=function(t,n){return this.y17_1.ks(t,n)},It(_a).toString=function(){var t=this.ox();return null==t?this.y17_1.toString():t},It(la).ks=function(t,n){!function(){throw Hn("runBlocking event loop is not supported")}()},It(ca).toString=function(){return It(Tn).toString.call(this)+"; job="+this.f18_1},It(ca).equals=function(t){return t===this||!!(t instanceof ca&&t.message==this.message&&Vt(t.f18_1,this.f18_1))&&Vt(t.cause,this.cause)},It(ca).hashCode=function(){var t=At(At(dn(Bn(this.message)),31)+tn(this.f18_1)|0,31),n=this.cause,i=null==n?null:tn(n);return t+(null==i?0:i)|0},It(pa).f14=function(t,n){var i=n.gc();return Le(i),this.i15_1!==i&&(Wo(this,i),this.i15_1=i),this.f15_1.f14(t,n)},It(pa).u15=function(){},It(ba).u16=function(){this.b17_1.i17(0)},It($a).ks=function(t,n){this.b17_1.r17(n)},It($a).us=function(t,n){var i,e,r,s,o=new Ea((r=n,s=this,i=function(){return r.jp(s,Tt),Tt},e=Sa(t),setTimeout(i,e)));n.ip(o)},It(ya).n=function(){return this.c17_1.kd_1},It(ya).j17=function(t,n){this.c17_1.p1(t,n)},It(ya).p1=function(t,n){return this.j17(t,null!=n&&Xt(n,fa)?n:Dt())},It(ya).k17=function(t){return this.c17_1.s(t)},It(ya).s=function(t){return this.k17(null!=t&&Xt(t,fa)?t:Dt())},It(ya).l17=function(t){return this.c17_1.z(t)},It(ya).z=function(t){return this.l17(t)},It(ya).b1=function(){this.c17_1.b1()},It(ya).m17=function(t){return this.c17_1.r(t)},It(ya).r=function(t){return!(null==t||!Xt(t,fa))&&this.m17(null!=t&&Xt(t,fa)?t:Dt())},It(ya).n17=function(t){return this.c17_1.c1(t)},It(ya).c1=function(t){return this.n17(t)},It(ya).h1=function(t){return this.c17_1.h1(t)},It(ya).o17=function(t){return this.c17_1.r1(t)},It(ya).r1=function(t){return null!=t&&Xt(t,fa)?this.o17(null!=t&&Xt(t,fa)?t:Dt()):-1},It(ya).d1=function(){return this.c17_1.d1()},It(ya).v=function(){return this.c17_1.v()},It(ya).p17=function(t){return this.c17_1.t(t)},It(ya).t=function(t){return!(null==t||!Xt(t,fa))&&this.p17(null!=t&&Xt(t,fa)?t:Dt())},It(ya).j1=function(t){return this.c17_1.j1(t)},It(ya).q17=function(t,n){return this.c17_1.o(t,n)},It(ya).o=function(t,n){return this.q17(t,null!=n&&Xt(n,fa)?n:Dt())},It(ya).r17=function(t){this.k17(t),this.e17_1||(this.e17_1=!0,this.g17())},It(ya).f17=function(){try{var t=this.d17_1,n=0;if(n=0))throw Wn(Bt("replay cannot be negative, but was "+t));if(!(n>=0))throw Wn(Bt("extraBufferCapacity cannot be negative, but was "+n));if(!(t>0||n>0||i.equals(Vr())))throw Wn(Bt("replay or extraBufferCapacity must be positive with non-default onBufferOverflow strategy "+i));var e=t+n|0;return new Po(t,e<0?oi.MAX_VALUE:e,i)},t.$_$.p=function(t){return new Jo(t,null)},t.$_$.q=qa,t.$_$.r=Oa,t.$_$.s=Xi,t.$_$.t=function(t){return new se(t=t===Rt?null:t)},t.$_$.u=oe,t.$_$.v=be,t.$_$.w=function(t){return new qu(null!=t.hc(v)?t:t.jg(Ue()))},t.$_$.x=ye,t.$_$.y=Ue,t.$_$.z=Me,t.$_$.a1=pu,t.$_$.b1=function(){return new qu(Mr().jg(ha().ts()))},t.$_$.c1=Mr,t.$_$.d1=function(t,n,i,e){n=n===Rt?Pt():n,i=i===Rt?Ee():i;var r=Zu(t,n),s=i.wn()?new Ai(r,e):new zi(r,!0);return s.om(i,s,e),s},t.$_$.e1=function(t,n){n=n===Rt?null:n;var i=t.hc(v),e=null==i?null:i.on();if(null==e);else for(var r=e.v();r.w();)r.y().hn(n)},t.$_$.f1=$e,t.$_$.g1=function(t,n){n=n===Rt?null:n;var i=t.hc(v);null==i||i.hn(n)},t.$_$.h1=function(t,n,i){return $e(t,wn(n,i=i===Rt?null:i))},t.$_$.i1=function(t,n,i){return i=i===Rt?null:i,t.hn(wn(n,i))},t.$_$.j1=function(t){var n=t.am().hc(v),i=null==n?null:n.bm();return null==i||i},t.$_$.k1=function(t){var n=t.hc(v);if(null==n)throw Yt(Bt("Current context doesn't contain Job in it: "+t));return n},t.$_$.l1=function(t,n,i,e){n=n===Rt?Pt():n,i=i===Rt?Ee():i;var r=Zu(t,n),s=i.wn()?new qi(r,e):new Ci(r,!0);return s.om(i,s,e),s},t})?e.apply(n,r):e)||(t.exports=s)},755:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt=Math.imul,ct=n.$_$.gb,ft=n.$_$.ha,vt=n.$_$.hb,dt=n.$_$.f,wt=(n.$_$.p4,n.$_$.a5),pt=n.$_$.p6,mt=n.$_$.j,gt=n.$_$.ah,bt=n.$_$.w9,$t=n.$_$.kc,yt=n.$_$.ea,kt=n.$_$.r1,xt=n.$_$.eb,St=n.$_$.q9,Et=n.$_$.s1,Ct=n.$_$.u1,qt=n.$_$.vf,Ot=n.$_$.w5,zt=n.$_$.l,At=n.$_$.fg,Tt=n.$_$.jc,It=n.$_$.qa,Dt=n.$_$.gg,jt=n.$_$.d,Mt=n.$_$.cg,Nt=n.$_$.j5,Rt=n.$_$.g5,Pt=n.$_$.m5,Lt=n.$_$.k5,Ft=n.$_$.e5,Ut=n.$_$.h5,Ht=n.$_$.n5,Vt=n.$_$.o5,Bt=n.$_$.f5,Yt=n.$_$.c5,Wt=n.$_$.l5,Gt=n.$_$.i5,Kt=n.$_$.d5,Xt=n.$_$.n6,Jt=n.$_$.lb,Zt=n.$_$.t1,Qt=n.$_$.d3,tn=n.$_$.c3,nn=n.$_$.dg,en=n.$_$.vg,rn=n.$_$.z9,sn=n.$_$.fa,on=n.$_$.od,un=n.$_$.m8,an=n.$_$.m,hn=n.$_$.s,_n=n.$_$.i8,ln=n.$_$.h8,cn=n.$_$.t8,fn=n.$_$.jh,vn=n.$_$.n8,dn=n.$_$.bh,wn=n.$_$.z5,pn=n.$_$.ic,mn=n.$_$.f7,gn=n.$_$.fb,bn=n.$_$.c,$n=n.$_$.yf,yn=n.$_$.of,kn=n.$_$.s4,xn=n.$_$.kf,Sn=n.$_$.ue,En=n.$_$.ga,Cn=n.$_$.x1,qn=n.$_$.n,On=n.$_$.t,zn=n.$_$.x,An=n.$_$.y,Tn=n.$_$.p,In=n.$_$.q,Dn=n.$_$.v,jn=n.$_$.w,Mn=n.$_$.r5,Nn=n.$_$.ia,Rn=n.$_$.hc,Pn=n.$_$.b7,Ln=n.$_$.wa,Fn=n.$_$.u4,Un=n.$_$.i7,Hn=n.$_$.tg,Vn=n.$_$.r,Bn=n.$_$.lc,Yn=n.$_$.ba,Wn=n.$_$.p9,Gn=n.$_$.q6,Kn=n.$_$.b6,Xn=n.$_$.t4,Jn=n.$_$.la,Zn=n.$_$.s9,Qn=(n.$_$.l4,n.$_$.na),ti=(n.$_$.m4,n.$_$.oa),ni=n.$_$.ra,ii=n.$_$.y4,ei=n.$_$.lg,ri=n.$_$.v3,si=n.$_$.t3,oi=(n.$_$.n4,n.$_$.pa),ui=n.$_$.x4,ai=n.$_$.jg,hi=n.$_$.o3,_i=n.$_$.l3,li=(n.$_$.o4,n.$_$.ta),ci=n.$_$.z4,fi=n.$_$.ng,vi=n.$_$.c4,di=n.$_$.a4,wi=(n.$_$.k4,n.$_$.ka),pi=n.$_$.w4,mi=n.$_$.hg,gi=n.$_$.h3,bi=n.$_$.e3,$i=(n.$_$.j4,n.$_$.ja),yi=n.$_$.tb,ki=n.$_$.h6,xi=n.$_$.j6,Si=n.$_$.k6,Ei=n.$_$.f6,Ci=n.$_$.y3,qi=n.$_$.z3,Oi=n.$_$.w3,zi=n.$_$.x3,Ai=n.$_$.m6,Ti=n.$_$.r3,Ii=n.$_$.s3,Di=n.$_$.p3,ji=n.$_$.q3,Mi=n.$_$.e6,Ni=n.$_$.f4,Ri=n.$_$.g4,Pi=n.$_$.d4,Li=n.$_$.e4,Fi=n.$_$.i6,Ui=n.$_$.j3,Hi=n.$_$.k3,Vi=n.$_$.g3,Bi=n.$_$.i3,Yi=n.$_$.g6,Wi=n.$_$.gf,Gi=n.$_$.jd,Ki=n.$_$.u9,Xi=n.$_$.t9,Ji=n.$_$.z2,Zi=n.$_$.oe,Qi=n.$_$.rd,te=n.$_$.r4,ne=n.$_$.mg,ie=n.$_$.kg,ee=n.$_$.og,re=n.$_$.ig,se=n.$_$.pg,oe=n.$_$.q7,ue=n.$_$.l7,ae=n.$_$.j7,he=n.$_$.s5,_e=n.$_$.va,le=n.$_$.b,ce=n.$_$.d7,fe=n.$_$.b2,ve=n.$_$.c7,de=(n.$_$.v4,n.$_$.a3),we=n.$_$.ug;function pe(){return!1}function me(){return!1}function ge(){return pt()}function be(t){return t.h34(this)}function $e(){return!1}function ye(t){return-1}function ke(t,n,i,e,r){return e=e===dt?null:e,r===dt?this.t37(t,n,i,e):r.t37.call(this,t,n,i,e)}function xe(){return so()}function Se(){}function Ee(){}function Ce(t){return function(){return n=Cr("kotlinx.serialization.Polymorphic",us(),[],function(t){return function(n){return n.q34("type",Ke().g34()),n.q34("value",Cr("kotlinx.serialization.Polymorphic<"+t.r34_1.f6()+">",Nr(),[])),n.k34_1=t.s34_1,wt}}(t)),i=t.r34_1,new yr(n,i);var n,i}}function qe(t){fs.call(this),this.r34_1=t,this.s34_1=pt();var n=mt();this.t34_1=gt(n,Ce(this))}function Oe(t,n,i){var e,r=t.v34(n,i);return null==r?function(t,n){var i="in the polymorphic scope of '"+n.f6()+"'";throw Ae(null==t?"Class discriminator was missing and no default serializers were registered "+i+".":"Serializer for subclass '"+t+"' is not found "+i+".\nCheck if class with serial name '"+t+"' exists and serializer is registered in a corresponding SerializersModule.\nTo be registered automatically, class '"+t+"' has to be '@Serializable', and the base class '"+n.f6()+"' has to be sealed and '@Serializable'.")}(i,t.u34()):e=r,e}function ze(t,n){return Et(t,n),Ie.call(n),n}function Ae(t){var n=ze(t,xt(ct(Ie)));return St(n,Ae),n}function Te(t,n,i){return Ct(t,n,i),Ie.call(i),i}function Ie(){St(this,Ie)}function De(t){ze(t,this),St(this,De)}function je(t,n){var i=function(t,n,i){return Me.call(i,t,1===t.n()?"Field '"+t.h1(0)+"' is required for type with serial name '"+n+"', but it was missing":"Fields "+t+" are required for type with serial name '"+n+"', but they were missing",null),i}(t,n,xt(ct(Me)));return St(i,je),i}function Me(t,n,i){Te(n,i,this),St(this,Me),this.w34_1=t}function Ne(t){var n=function(t){var n,i=Cu(t,[]);if(null==i){var e;if(t===te().w6())e=ds();else{var r=_e(t).Companion;e=null==r?null:r.serializer()}var s=e;n=null!=s&&It(s,Se)?s:null}else n=i;return n}(t);return null==n?function(t){Zo();var n=Io().o2(t);return null==n||It(n,Se)?n:At()}(t):n}function Re(t,n,i){var e;if(i){for(var r=zt(Ot(n,10)),s=n.v();s.w();){var o=Le(t,s.y());r.s(o)}e=r}else{for(var u=zt(Ot(n,10)),a=n.v();a.w();){var h=Fe(t,a.y());if(null==h)return null;var _=h;u.s(_)}e=u}return e}function Pe(t,n,i){var e=function(t,n,i){var e;if(t.equals(jt(Kt))||t.equals(jt(Gt))||t.equals(jt(Wt))||t.equals(jt(Yt)))e=new Cs(n.h1(0));else if(t.equals(jt(Bt)))e=new qs(n.h1(0));else if(t.equals(jt(Vt))||t.equals(jt(Ht))||t.equals(jt(Ut)))e=new Os(n.h1(0));else if(t.equals(jt(Ft)))e=new zs(n.h1(0),n.h1(1));else if(t.equals(jt(Lt))||t.equals(jt(Pt))||t.equals(jt(Rt)))e=new As(n.h1(0),n.h1(1));else if(t.equals(jt(Nt)))l=n.h1(0),c=n.h1(1),e=new ru(l,c);else if(t.equals(jt(Mt)))e=function(t,n){return new su(t,n)}(n.h1(0),n.h1(1));else if(t.equals(jt(Dt)))a=n.h1(0),h=n.h1(1),_=n.h1(2),e=new ou(a,h,_);else{var r;if(t.equals(te().d7())){var s=i();o=null!=s&&It(s,Tt)?s:At(),u=n.h1(0),r=new Ts(o,u)}else r=null;e=r}var o,u;var a,h,_;var l,c;return e}(t,n,i);return null==e?function(t,n){return Cu(t,Xt(n).slice())}(t,n):e}function Le(t,n){var i,e=Ue(t,n,!0);return null==e?function(t){throw Ae(function(t){to();var n=t.f6();return i=null==n?"":n,to(),"Serializer for class '"+i+"' is not found.\nPlease ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.\n";var i}(t)+"To get enum serializer on Kotlin/JS, it should be annotated with @Serializable annotation.")}(Zs(n)):i=e,i}function Fe(t,n){return Ue(t,n,!1)}function Ue(t,n,o){for(var u=Zs(n),a=n.t6(),h=n.s6(),_=zt(Ot(h,10)),l=h.v();l.w();){var c=l.y().y34_1;if(null==c)throw Zt(Jt("Star projections in type arguments are not allowed, but had "+n));var f=c;_.s(f)}var v,d,w,p=_;if(p.d1())v=function(t,n){var r;if(We(),n)r=(We(),e).b35(t);else{var s=(We(),i).b35(t);r=null==s?null:It(s,Se)?s:At()}return r}(u,a);else{var m,g=function(t,n,i){var e;if(We(),i)e=(We(),s).c35(t,n);else{var o=(We(),r).c35(t,n);e=new nn(o)instanceof nn?o:At()}return e}(u,p,a);if(tn(g))m=null;else{var b=Qt(g);m=null==b||null!=b?b:At()}v=m}if(null!=v)return v;if(p.d1())d=t.a35(u);else{var $=Re(t,p,o);if(null==$)return null;var y=$,k=Pe(u,y,(w=p,function(){return w.h1(0).r6()}));d=null==k?t.z34(u,y):k}var x,S=d;return null==(x=null==S?null:It(S,Se)?S:At())?null:function(t,n){return n?Ge(t):It(t,Se)?t:At()}(x,a)}function He(t){return We(),Ne(t)}function Ve(t){We();var n=Ne(t),i=null==n?null:Ge(n);return null==i?null:It(i,Se)?i:At()}function Be(t,n){return We(),Pe(t,en(Re(gu(),n,!0)),(i=n,function(){return i.h1(0).r6()}));var i}function Ye(t,n){We();var i,e=Pe(t,en(Re(gu(),n,!0)),(i=n,function(){return i.h1(0).r6()})),r=null==e?null:Ge(e);return null==r?null:It(r,Se)?r:At()}function We(){o||(o=!0,i=Su(He),e=Su(Ve),r=Eu(Be),s=Eu(Ye))}function Ge(t){return t.g34().d35()?It(t,Se)?t:At():new Ws(t)}function Ke(t){return jo()}function Xe(t){return null==W&&new Mo,W}function Je(){return null==I&&new ao,I}function Ze(t){return Ro()}function Qe(){return null==D&&new ho,D}function tr(t){return Lo()}function nr(){return null==j&&new _o,j}function ir(t){return null==X&&new Fo,X}function er(){return null==M&&new lo,M}function rr(t){return null==st&&new au,st}function sr(){return null==N&&new co,N}function or(t){return Ho()}function ur(){return null==R&&new fo,R}function ar(t){return null==ot&&new hu,ot}function hr(){return null==P&&new vo,P}function _r(t){return null==Z&&new Vo,Z}function lr(){return null==L&&new wo,L}function cr(t){return null==ut&&new _u,ut}function fr(){return null==F&&new po,F}function vr(t){return null==Q&&new Bo,Q}function dr(){return null==U&&new mo,U}function wr(t){return null==at&&new lu,at}function pr(){return null==H&&new go,H}function mr(t){return Wo()}function gr(){return null==V&&new bo,V}function br(t){return null==nt&&new Go,nt}function $r(t){return null==E&&new ws,E}function yr(t,n){this.e35_1=t,this.f35_1=n,this.g35_1=this.e35_1.h35()+"<"+this.f35_1.f6()+">"}function kr(t){return t instanceof yr?t.f35_1:t instanceof Gs?kr(t.r35_1):null}function xr(){}function Sr(t){this.a36_1=t,this.z35_1=t.j35()}function Er(t){this.b36_1=t}function Cr(t,n,i,e){if(e=e===dt?Ir:e,on(t))throw Zt(Jt("Blank serial names are prohibited"));if(rn(n,Jr()))throw Zt(Jt("For StructureKind.CLASS please use 'buildClassSerialDescriptor' instead"));var r=new qr(t);return e(r),new Ar(t,n,r.l34_1.n(),un(i),r)}function qr(t){this.i34_1=t,this.j34_1=!1,this.k34_1=pt(),this.l34_1=an(),this.m34_1=hn(),this.n34_1=an(),this.o34_1=an(),this.p34_1=an()}function Or(t,n,i){if(i=i===dt?Dr:i,on(t))throw Zt(Jt("Blank serial names are prohibited"));var e=new qr(t);return i(e),new Ar(t,Jr(),e.l34_1.n(),un(n),e)}function zr(t){var n=t.o36_1;return yt("_hashCode",1,$t,(function(t){return zr(t)}),null),n.h2()}function Ar(t,n,i,e,r){this.d36_1=t,this.e36_1=n,this.f36_1=i,this.g36_1=r.k34_1,this.h36_1=_n(r.l34_1);var s=r.l34_1;this.i36_1=Xt(s),this.j36_1=Qs(r.n34_1);var o,u=r.o34_1;this.k36_1=Xt(u),this.l36_1=ln(r.p34_1);for(var a=cn(this.i36_1),h=zt(Ot(a,10)),_=a.v();_.w();){var l=_.y(),c=fn(l.ee_1,l.de_1);h.s(c)}this.m36_1=vn(h),this.n36_1=Qs(e),this.o36_1=dn((o=this,function(){return ro(o,o.n36_1)}))}function Tr(t,n){this.q36_1=t,this.r36_1=n}function Ir(t){return wt}function Dr(t){return wt}function jr(){u=this,Rr.call(this)}function Mr(){a=this,Rr.call(this)}function Nr(){return null==a&&new Mr,a}function Rr(){}function Pr(){h=this,Kr.call(this)}function Lr(){_=this,Kr.call(this)}function Fr(){l=this,Kr.call(this)}function Ur(){c=this,Kr.call(this)}function Hr(){f=this,Kr.call(this)}function Vr(){v=this,Kr.call(this)}function Br(){d=this,Kr.call(this)}function Yr(){w=this,Kr.call(this)}function Wr(){p=this,Kr.call(this)}function Gr(){return null==p&&new Wr,p}function Kr(){Rr.call(this)}function Xr(){m=this,rs.call(this)}function Jr(){return null==m&&new Xr,m}function Zr(){g=this,rs.call(this)}function Qr(){return null==g&&new Zr,g}function ts(){b=this,rs.call(this)}function ns(){return null==b&&new ts,b}function is(){$=this,rs.call(this)}function es(){return null==$&&new is,$}function rs(){Rr.call(this)}function ss(){y=this,as.call(this)}function os(){k=this,as.call(this)}function us(){return null==k&&new os,k}function as(){Rr.call(this)}function hs(){}function _s(){}function ls(){this.a38_1=-1,this.b38_1=-3}function cs(){}function fs(){}function vs(){S=this,this.d38_1=(null==q&&new Ys,q)}function ds(){return null==S&&new vs,S}function ws(){E=this,this.e38_1=new Xo("kotlin.time.Duration",Gr())}function ps(){}function ms(t){xs.call(this,t)}function gs(t){xs.call(this,t)}function bs(t){xs.call(this,t)}function $s(t,n){Ss.call(this,"kotlin.collections.HashMap",t,n)}function ys(t,n){Ss.call(this,"kotlin.collections.LinkedHashMap",t,n)}function ks(t){xs.call(this,t)}function xs(t){this.i38_1=t,this.j38_1=1}function Ss(t,n,i){this.o38_1=t,this.p38_1=n,this.q38_1=i,this.r38_1=2}function Es(t){xs.call(this,t),this.w38_1=t.h35()+"Array"}function Cs(t){Is.call(this,t),this.y38_1=new ms(t.g34())}function qs(t){Is.call(this,t),this.q39_1=new gs(t.g34())}function Os(t){Is.call(this,t),this.x39_1=new bs(t.g34())}function zs(t,n){Ds.call(this,t,n),this.e3a_1=new $s(t.g34(),n.g34())}function As(t,n){Ds.call(this,t,n),this.p3a_1=new ys(t.g34(),n.g34())}function Ts(t,n){js.call(this,n),this.u3a_1=t,this.v3a_1=new ks(n.g34())}function Is(t){js.call(this,t)}function Ds(t,n){Ms.call(this),this.j3a_1=t,this.k3a_1=n}function js(t){Ms.call(this),this.k39_1=t}function Ms(){}function Ns(t){js.call(this,t),this.c3b_1=new Es(t.g34())}function Rs(){}function Ps(){C=this,this.l3b_1=Ln(0)}function Ls(){return null==C&&new Ps,C}function Fs(t,n){Ls(),this.m3b_1=t,this.n3b_1=n;var i=this.m3b_1.j35();if(Fn(),i<=64){var e;Fn(),e=64===i?new $n(0,0):new $n(-1,-1).kb(i),this.o3b_1=e,this.p3b_1=Ls().l3b_1}else this.o3b_1=new $n(0,0),this.p3b_1=function(t,n){var i=(n-1|0)>>>6|0;Fn();var e=63&n,r=Ln(i);return 0!==e&&(r[Un(r)]=new $n(-1,-1).kb(n)),r}(0,i)}function Us(t,n){return new Hs(t,new Vs(n))}function Hs(t,n){eo.call(this,t,n,1),this.e3c_1=!0}function Vs(t){this.v3c_1=t}function Bs(t){throw Cn("Descriptor for type `kotlin.Nothing` does not have elements")}function Ys(){q=this,this.y3c_1=es(),this.z3c_1="kotlin.Nothing"}function Ws(t){this.a3d_1=t,this.b3d_1=new Gs(this.a3d_1.g34())}function Gs(t){this.r35_1=t,this.s35_1=this.r35_1.h35()+"?",this.t35_1=Js(this.r35_1)}function Ks(t,n){return function(){var i=es();return Cr(t,i,[],function(t){return function(n){return n.k34_1=t.d3d_1,wt}}(n))}}function Xs(t,n){this.c3d_1=n,this.d3d_1=pt();var i=mt();this.e3d_1=gt(i,Ks(t,this))}function Js(t){if(to(),It(t,ps))return t.p36();var n=Vn(t.j35()),i=0,e=t.j35();if(i0){var i=Xi(t,0),e=Qi(i)?Zi(i):Ji(i);n=Jt(e)+t.substring(1)}else n=t;return n}function Zo(){it||(it=!0,B=oe([fn(te().e7(),Ke()),fn(jt(yn),Xe(Xn())),fn(te().h7(),Je()),fn(te().c7(),Ze()),fn(te().n7(),Qe()),fn(te().b7(),tr()),fn(te().m7(),nr()),fn(jt($n),ir(Fn())),fn(te().l7(),er()),fn(jt(ne),rr(ii())),fn(jt(ei),sr()),fn(te().a7(),or()),fn(te().k7(),ur()),fn(jt(ie),ar(ui())),fn(jt(ai),hr()),fn(te().z6(),_r()),fn(te().j7(),lr()),fn(jt(ee),cr(ci())),fn(jt(fi),fr()),fn(te().y6(),vr()),fn(te().i7(),dr()),fn(jt(re),wr(pi())),fn(jt(mi),pr()),fn(te().x6(),mr()),fn(te().g7(),gr()),fn(jt(se),br()),fn(te().w6(),ds()),fn(jt(xn),$r(kn()))]))}function Qo(){nu.call(this)}function tu(t,n,i){t.d3i(n);var e=i();return t.o3h_1||t.e3i(),t.o3h_1=!1,e}function nu(){this.n3h_1=an(),this.o3h_1=!1}function iu(){return rt||(rt=!0,et=new Object),et}function eu(t,n){this.f3i_1=t,this.g3i_1=n}function ru(t,n){uu.call(this,t,n);var i,e,r=ns();this.j3i_1=Cr("kotlin.collections.Map.Entry",r,[],(i=t,e=n,function(t){return t.q34("key",i.g34()),t.q34("value",e.g34()),wt}))}function su(t,n){var i,e;uu.call(this,t,n),this.p3i_1=Or("kotlin.Pair",[],(i=t,e=n,function(t){return t.q34("first",i.g34()),t.q34("second",e.g34()),wt}))}function ou(t,n,i){var e;this.q3i_1=t,this.r3i_1=n,this.s3i_1=i,this.t3i_1=Or("kotlin.Triple",[],(e=this,function(t){return t.q34("first",e.q3i_1.g34()),t.q34("second",e.r3i_1.g34()),t.q34("third",e.s3i_1.g34()),wt}))}function uu(t,n){this.l3i_1=t,this.m3i_1=n}function au(){st=this,this.u3i_1=Us("kotlin.ULong",ir(Fn()))}function hu(){ot=this,this.w3i_1=Us("kotlin.UInt",or())}function _u(){ut=this,this.y3i_1=Us("kotlin.UShort",_r())}function lu(){at=this,this.a3j_1=Us("kotlin.UByte",vr())}function cu(){return mu(),ht}function fu(){}function vu(t,n,i,e,r){fu.call(this),this.u35_1=t,this.v35_1=n,this.w35_1=i,this.x35_1=e,this.y35_1=r}function du(t){pu.call(this),this.g3j_1=t}function wu(t){pu.call(this),this.e3j_1=t}function pu(){}function mu(){_t||(_t=!0,ht=new vu(Gn(),Gn(),Gn(),Gn(),Gn()))}function gu(){return cu()}function bu(){this.l3j_1=Tn(),this.m3j_1=Tn(),this.n3j_1=Tn(),this.o3j_1=Tn(),this.p3j_1=Tn()}function $u(t,n){var i=function(t,n,i){return yu.call(i,"Serializer for "+n+" already registered in the scope of "+t),i}(t,n,xt(ct(yu)));return St(i,$u),i}function yu(t){Et(t,this),St(this,yu)}function ku(){}function xu(t){this.x3j_1=t}function Su(t){return new zu(t)}function Eu(t){return new Au(t)}function Cu(t,n){var i;try{var e,r=le(t,jt(xu));if(null!=r&&It(r,Se))e=null!=r&&It(r,Se)?r:At();else if(null!=r&&It(r,oo)){var s=r.f3d(n.slice());e=It(s,Se)?s:At()}else e=function(t){var n=_e(t).$metadata$;return"interface"==(null==n?null:n.kind)}(t)?new qe(t):null;i=e}catch(t){i=null}return i}function qu(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw fe("Index "+n+" out of bounds "+ce(t));return t[n]}function Ou(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw fe("Index "+n+" out of bounds "+ve(t));return t[n]}function zu(t){this.y3j_1=t}function Au(t){this.z3j_1=t}return vt(Ee,"DeserializationStrategy",ft),vt(Se,"KSerializer",ft,dt,[Ee]),vt(fs,"AbstractPolymorphicSerializer",bt,dt,[Se]),vt(qe,"PolymorphicSerializer",bt,fs),vt(Ie,"SerializationException",bt,qt,dt,(function t(){var n,i=(n=xt(ct(Ie)),kt(n),Ie.call(n),n);return St(i,t),i})),vt(De,"UnknownFieldException",bt,Ie),vt(Me,"MissingFieldException",bt,Ie),vt(xr,"SerialDescriptor",ft),vt(yr,"ContextDescriptor",bt,dt,[xr]),vt(Sr,dt,bt),vt(Er,dt,bt),vt(qr,"ClassSerialDescriptorBuilder",bt),vt(ps,"CachedNames",ft),vt(Ar,"SerialDescriptorImpl",bt,dt,[xr,ps]),vt(Tr,"WrappedSerialDescriptor",bt,dt,[xr]),vt(Rr,"SerialKind",bt),vt(jr,"ENUM",gn,Rr),vt(Mr,"CONTEXTUAL",gn,Rr),vt(Kr,"PrimitiveKind",bt,Rr),vt(Pr,"BOOLEAN",gn,Kr),vt(Lr,"BYTE",gn,Kr),vt(Fr,"CHAR",gn,Kr),vt(Ur,"SHORT",gn,Kr),vt(Hr,"INT",gn,Kr),vt(Vr,"LONG",gn,Kr),vt(Br,"FLOAT",gn,Kr),vt(Yr,"DOUBLE",gn,Kr),vt(Wr,"STRING",gn,Kr),vt(rs,"StructureKind",bt,Rr),vt(Xr,"CLASS",gn,rs),vt(Zr,"LIST",gn,rs),vt(ts,"MAP",gn,rs),vt(is,"OBJECT",gn,rs),vt(as,"PolymorphicKind",bt,Rr),vt(ss,"SEALED",gn,as),vt(os,"OPEN",gn,as),vt(_s,"Decoder",ft),vt(cs,"CompositeDecoder",ft),vt(hs,"AbstractDecoder",bt,dt,[_s,cs]),vt(ls,"Companion",gn),vt(vs,"NothingSerializer",gn,dt,[Se]),vt(ws,"DurationSerializer",gn,dt,[Se]),vt(xs,"ListLikeDescriptor",bt,dt,[xr]),vt(ms,"ArrayListClassDesc",bt,xs),vt(gs,"HashSetClassDesc",bt,xs),vt(bs,"LinkedHashSetClassDesc",bt,xs),vt(Ss,"MapLikeDescriptor",bt,dt,[xr]),vt($s,"HashMapClassDesc",bt,Ss),vt(ys,"LinkedHashMapClassDesc",bt,Ss),vt(ks,"ArrayClassDesc",bt,xs),vt(Es,"PrimitiveArrayDescriptor",bt,xs),vt(Ms,"AbstractCollectionSerializer",bt,dt,[Se]),vt(js,"CollectionLikeSerializer",bt,Ms),vt(Is,"CollectionSerializer",bt,js),vt(Cs,"ArrayListSerializer",bt,Is),vt(qs,"HashSetSerializer",bt,Is),vt(Os,"LinkedHashSetSerializer",bt,Is),vt(Ds,"MapLikeSerializer",bt,Ms),vt(zs,"HashMapSerializer",bt,Ds),vt(As,"LinkedHashMapSerializer",bt,Ds),vt(Ts,"ReferenceArraySerializer",bt,js),vt(Ns,"PrimitiveArraySerializer",bt,js),vt(Rs,"PrimitiveArrayBuilder",bt),vt(Ps,"Companion",gn),vt(Fs,"ElementMarker",bt),vt(eo,"PluginGeneratedSerialDescriptor",bt,dt,[xr,ps]),vt(Hs,"InlineClassDescriptor",bt,eo),vt(uo,"GeneratedSerializer",ft,dt,[Se]),vt(Vs,dt,bt,dt,[uo]),vt(Ys,"NothingSerialDescriptor",gn,dt,[xr]),vt(Ws,"NullableSerializer",bt,dt,[Se]),vt(Gs,"SerialDescriptorForNullable",bt,dt,[xr,ps]),vt(Xs,"ObjectSerializer",bt,dt,[Se]),vt(oo,"SerializerFactory",ft),vt(ao,"CharArraySerializer",gn,Ns,[Se,Ns]),vt(ho,"DoubleArraySerializer",gn,Ns,[Se,Ns]),vt(_o,"FloatArraySerializer",gn,Ns,[Se,Ns]),vt(lo,"LongArraySerializer",gn,Ns,[Se,Ns]),vt(co,"ULongArraySerializer",gn,Ns,[Se,Ns]),vt(fo,"IntArraySerializer",gn,Ns,[Se,Ns]),vt(vo,"UIntArraySerializer",gn,Ns,[Se,Ns]),vt(wo,"ShortArraySerializer",gn,Ns,[Se,Ns]),vt(po,"UShortArraySerializer",gn,Ns,[Se,Ns]),vt(mo,"ByteArraySerializer",gn,Ns,[Se,Ns]),vt(go,"UByteArraySerializer",gn,Ns,[Se,Ns]),vt(bo,"BooleanArraySerializer",gn,Ns,[Se,Ns]),vt($o,"CharArrayBuilder",bt,Rs),vt(yo,"DoubleArrayBuilder",bt,Rs),vt(ko,"FloatArrayBuilder",bt,Rs),vt(xo,"LongArrayBuilder",bt,Rs),vt(So,"ULongArrayBuilder",bt,Rs),vt(Eo,"IntArrayBuilder",bt,Rs),vt(Co,"UIntArrayBuilder",bt,Rs),vt(qo,"ShortArrayBuilder",bt,Rs),vt(Oo,"UShortArrayBuilder",bt,Rs),vt(zo,"ByteArrayBuilder",bt,Rs),vt(Ao,"UByteArrayBuilder",bt,Rs),vt(To,"BooleanArrayBuilder",bt,Rs),vt(Do,"StringSerializer",gn,dt,[Se]),vt(Mo,"CharSerializer",gn,dt,[Se]),vt(No,"DoubleSerializer",gn,dt,[Se]),vt(Po,"FloatSerializer",gn,dt,[Se]),vt(Fo,"LongSerializer",gn,dt,[Se]),vt(Uo,"IntSerializer",gn,dt,[Se]),vt(Vo,"ShortSerializer",gn,dt,[Se]),vt(Bo,"ByteSerializer",gn,dt,[Se]),vt(Yo,"BooleanSerializer",gn,dt,[Se]),vt(Go,"UnitSerializer",gn,dt,[Se]),vt(Xo,"PrimitiveSerialDescriptor",bt,dt,[xr]),vt(nu,"TaggedDecoder",bt,dt,[_s,cs]),vt(Qo,"NamedValueDecoder",bt,nu),vt(eu,"MapEntry",bt,dt,[Nt]),vt(uu,"KeyValueSerializer",bt,dt,[Se]),vt(ru,"MapEntrySerializer",bt,uu),vt(su,"PairSerializer",bt,uu),vt(ou,"TripleSerializer",bt,dt,[Se]),vt(au,"ULongSerializer",gn,dt,[Se]),vt(hu,"UIntSerializer",gn,dt,[Se]),vt(_u,"UShortSerializer",gn,dt,[Se]),vt(lu,"UByteSerializer",gn,dt,[Se]),vt(fu,"SerializersModule",bt),vt(vu,"SerialModuleImpl",bt,fu),vt(pu,"ContextualProvider",bt),vt(du,"Argless",bt,pu),vt(wu,"WithTypeArguments",bt,pu),vt(ku,"SerializersModuleCollector",ft),vt(bu,"SerializersModuleBuilder",bt,dt,[ku]),vt(yu,"SerializerAlreadyRegisteredException",bt,qt),vt(xu,"SerializableWith",bt,dt,dt,dt,0),vt(zu,dt,bt),vt(Au,dt,bt),ct(qe).u34=function(){return this.r34_1},ct(qe).g34=function(){var t=this.t34_1;return yt("descriptor",1,$t,(function(t){return t.g34()}),null),t.h2()},ct(qe).toString=function(){return"kotlinx.serialization.PolymorphicSerializer(baseClass: "+this.r34_1+")"},ct(yr).i35=function(){return this.e35_1.i35()},ct(yr).j35=function(){return this.e35_1.j35()},ct(yr).k35=function(){return this.e35_1.k35()},ct(yr).d35=function(){return this.e35_1.d35()},ct(yr).l35=function(){return this.e35_1.l35()},ct(yr).m35=function(t){return this.e35_1.m35(t)},ct(yr).n35=function(t){return this.e35_1.n35(t)},ct(yr).o35=function(t){return this.e35_1.o35(t)},ct(yr).p35=function(t){return this.e35_1.p35(t)},ct(yr).q35=function(t){return this.e35_1.q35(t)},ct(yr).h35=function(){return this.g35_1},ct(yr).equals=function(t){var n=t instanceof yr?t:null;if(null==n)return!1;var i=n;return!!rn(this.e35_1,i.e35_1)&&i.f35_1.equals(this.f35_1)},ct(yr).hashCode=function(){var t=this.f35_1.hashCode();return lt(31,t)+sn(this.g35_1)|0},ct(yr).toString=function(){return"ContextDescriptor(kClass: "+this.f35_1+", original: "+this.e35_1+")"},ct(Sr).w=function(){return this.z35_1>0},ct(Sr).y=function(){var t=this.a36_1.j35(),n=this.z35_1;return this.z35_1=n-1|0,this.a36_1.n35(t-n|0)},ct(Er).v=function(){return new Sr(this.b36_1)},ct(qr).c36=function(t,n,i,e){if(!this.m34_1.s(t)){var r="Element with name '"+t+"' is already registered in "+this.i34_1;throw Zt(Jt(r))}this.l34_1.s(t),this.n34_1.s(n),this.o34_1.s(i),this.p34_1.s(e)},ct(qr).q34=function(t,n,i,e,r){var s;return i=i===dt?pt():i,e=e!==dt&&e,r===dt?(this.c36(t,n,i,e),s=wt):s=r.c36.call(this,t,n,i,e),s},ct(Ar).h35=function(){return this.d36_1},ct(Ar).l35=function(){return this.e36_1},ct(Ar).j35=function(){return this.f36_1},ct(Ar).i35=function(){return this.g36_1},ct(Ar).p36=function(){return this.h36_1},ct(Ar).p35=function(t){return qu(this.i36_1,t)},ct(Ar).o35=function(t){var n=this.m36_1.o2(t);return null==n?-3:n},ct(Ar).m35=function(t){return qu(this.k36_1,t)},ct(Ar).n35=function(t){return qu(this.j36_1,t)},ct(Ar).q35=function(t){return Ou(this.l36_1,t)},ct(Ar).equals=function(t){var n;t:if(this!==t)if(t instanceof Ar)if(this.h35()===t.h35())if(wn(this.n36_1,t.n36_1))if(this.j35()===t.j35()){var i=0,e=this.j35();if(i=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}return!1},ct(xs).m35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}return pt()},ct(xs).n35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}return this.i38_1},ct(xs).equals=function(t){return this===t||t instanceof xs&&!(!rn(this.i38_1,t.i38_1)||this.h35()!==t.h35())},ct(xs).hashCode=function(){return lt(En(this.i38_1),31)+sn(this.h35())|0},ct(xs).toString=function(){return this.h35()+"("+this.i38_1+")"},ct(Ss).h35=function(){return this.o38_1},ct(Ss).l35=function(){return ns()},ct(Ss).j35=function(){return this.r38_1},ct(Ss).p35=function(t){return t.toString()},ct(Ss).o35=function(t){var n=Sn(t);if(null==n)throw Zt(t+" is not a valid map index");return n},ct(Ss).q35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}return!1},ct(Ss).m35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}return pt()},ct(Ss).n35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}var i;switch(t%2|0){case 0:i=this.p38_1;break;case 1:i=this.q38_1;break;default:throw Cn(Jt("Unreached"))}return i},ct(Ss).equals=function(t){return this===t||t instanceof Ss&&this.h35()===t.h35()&&!!rn(this.p38_1,t.p38_1)&&!!rn(this.q38_1,t.q38_1)},ct(Ss).hashCode=function(){var t=sn(this.h35());return t=lt(31,t)+En(this.p38_1)|0,lt(31,t)+En(this.q38_1)|0},ct(Ss).toString=function(){return this.h35()+"("+this.p38_1+", "+this.q38_1+")"},ct(Es).h35=function(){return this.w38_1},ct(Cs).g34=function(){return this.y38_1},ct(Cs).z38=function(){return an()},ct(Cs).a39=function(t){return t.n()},ct(Cs).b39=function(t){return this.a39(t instanceof Yt?t:At())},ct(Cs).c39=function(t){return t},ct(Cs).d39=function(t){return this.c39(t instanceof Yt?t:At())},ct(Cs).e39=function(t){var n=t instanceof Yt?t:null;return null==n?qn(t):n},ct(Cs).f39=function(t){return this.e39(null!=t&&It(t,Gt)?t:At())},ct(Cs).g39=function(t,n){return t.w2(n)},ct(Cs).h39=function(t,n){return this.g39(t instanceof Yt?t:At(),n)},ct(Cs).i39=function(t,n,i){t.p1(n,i)},ct(Cs).j39=function(t,n,i){var e=t instanceof Yt?t:At();return this.i39(e,n,null==i||null!=i?i:At())},ct(qs).g34=function(){return this.q39_1},ct(qs).z38=function(){return hn()},ct(qs).r39=function(t){return t.n()},ct(qs).b39=function(t){return this.r39(t instanceof Bt?t:At())},ct(qs).s39=function(t){return t},ct(qs).d39=function(t){return this.s39(t instanceof Bt?t:At())},ct(qs).t39=function(t){var n=t instanceof Bt?t:null;return null==n?On(t):n},ct(qs).f39=function(t){return this.t39(null!=t&&It(t,Vt)?t:At())},ct(qs).u39=function(t,n){},ct(qs).h39=function(t,n){return this.u39(t instanceof Bt?t:At(),n)},ct(qs).v39=function(t,n,i){t.s(i)},ct(qs).j39=function(t,n,i){var e=t instanceof Bt?t:At();return this.v39(e,n,null==i||null!=i?i:At())},ct(Os).g34=function(){return this.x39_1},ct(Os).z38=function(){return zn()},ct(Os).y39=function(t){return t.n()},ct(Os).b39=function(t){return this.y39(t instanceof Ut?t:At())},ct(Os).z39=function(t){return t},ct(Os).d39=function(t){return this.z39(t instanceof Ut?t:At())},ct(Os).t39=function(t){var n=t instanceof Ut?t:null;return null==n?An(t):n},ct(Os).f39=function(t){return this.t39(null!=t&&It(t,Vt)?t:At())},ct(Os).a3a=function(t,n){},ct(Os).h39=function(t,n){return this.a3a(t instanceof Ut?t:At(),n)},ct(Os).b3a=function(t,n,i){t.s(i)},ct(Os).j39=function(t,n,i){var e=t instanceof Ut?t:At();return this.b3a(e,n,null==i||null!=i?i:At())},ct(zs).g34=function(){return this.e3a_1},ct(zs).z38=function(){return Tn()},ct(zs).f3a=function(t){return lt(t.n(),2)},ct(zs).b39=function(t){return this.f3a(t instanceof Ft?t:At())},ct(zs).g3a=function(t){return t},ct(zs).d39=function(t){return this.g3a(t instanceof Ft?t:At())},ct(zs).h3a=function(t){var n=t instanceof Ft?t:null;return null==n?In(t):n},ct(zs).f39=function(t){return this.h3a(null!=t&&It(t,Lt)?t:At())},ct(zs).i3a=function(t,n){},ct(zs).h39=function(t,n){return this.i3a(t instanceof Ft?t:At(),n)},ct(As).g34=function(){return this.p3a_1},ct(As).z38=function(){return Dn()},ct(As).q3a=function(t){return lt(t.n(),2)},ct(As).b39=function(t){return this.q3a(t instanceof Rt?t:At())},ct(As).r3a=function(t){return t},ct(As).d39=function(t){return this.r3a(t instanceof Rt?t:At())},ct(As).h3a=function(t){var n=t instanceof Rt?t:null;return null==n?jn(t):n},ct(As).f39=function(t){return this.h3a(null!=t&&It(t,Lt)?t:At())},ct(As).s3a=function(t,n){},ct(As).h39=function(t,n){return this.s3a(t instanceof Rt?t:At(),n)},ct(Ts).g34=function(){return this.v3a_1},ct(Ts).z38=function(){return an()},ct(Ts).w3a=function(t){return t.n()},ct(Ts).b39=function(t){return this.w3a(t instanceof Yt?t:At())},ct(Ts).x3a=function(t){return function(t,n){return Xt(t)}(t,this.u3a_1)},ct(Ts).d39=function(t){return this.x3a(t instanceof Yt?t:At())},ct(Ts).y3a=function(t){return qn(Mn(t))},ct(Ts).f39=function(t){return this.y3a(null!=t&&Nn(t)?t:At())},ct(Ts).z3a=function(t,n){return t.w2(n)},ct(Ts).h39=function(t,n){return this.z3a(t instanceof Yt?t:At(),n)},ct(Ts).a3b=function(t,n,i){t.p1(n,i)},ct(Ts).j39=function(t,n,i){var e=t instanceof Yt?t:At();return this.a3b(e,n,null==i||null!=i?i:At())},ct(Ds).l3a=function(t,n,i,e){if(!(e>=0))throw Zt(Jt("Size must be known in advance when using READ_ALL"));var r=Rn(pn(0,lt(e,2)),2),s=r.ea_1,o=r.fa_1,u=r.ga_1;if(u>0&&s<=o||u<0&&o<=s)do{var a=s;s=s+u|0,this.m3a(t,i+a|0,n,!1)}while(a!==o)},ct(Ds).l39=function(t,n,i,e){return this.l3a(t,null!=n&&It(n,Pt)?n:At(),i,e)},ct(Ds).m3a=function(t,n,i,e){var r,s=t.u37(this.g34(),n,this.j3a_1);if(e){var o=t.y37(this.g34());if(o!==(n+1|0))throw Zt(Jt("Value must follow key in a map, index for key: "+n+", returned index for value: "+o));r=o}else r=n+1|0;var u=r,a=!i.l2(s)||this.k3a_1.g34().l35()instanceof Kr?t.u37(this.g34(),u,this.k3a_1):t.t37(this.g34(),u,this.k3a_1,Pn(i,s));i.e2(s,a)},ct(Ds).m39=function(t,n,i,e){return this.m3a(t,n,null!=i&&It(i,Pt)?i:At(),e)},ct(js).l39=function(t,n,i,e){if(!(e>=0))throw Zt(Jt("Size must be known in advance when using READ_ALL"));var r=0;if(r>>6|0)-1|0;Fn();var e=63&n;t.p3b_1[i]=t.p3b_1[i].ob(new $n(1,0).kb(e))}(this,t)},ct(Fs).r3b=function(){for(var t=this.m3b_1.j35();!this.o3b_1.equals(new $n(-1,-1));){var n=Hn(this.o3b_1.jb());if(this.o3b_1=this.o3b_1.ob(new $n(1,0).kb(n)),this.n3b_1(this.m3b_1,n))return n}return Fn(),t>64?function(t){var n=0,i=t.p3b_1.length-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=e+1|0;Fn();for(var s=lt(r,64),o=t.p3b_1[e];!o.equals(new $n(-1,-1));){var u=Hn(o.jb());o=o.ob(new $n(1,0).kb(u));var a=s+u|0;if(t.n3b_1(t.m3b_1,a))return t.p3b_1[e]=o,a}t.p3b_1[e]=o}while(n<=i);return-1}(this):-1},ct(Hs).k35=function(){return this.e3c_1},ct(Hs).hashCode=function(){return lt(ct(eo).hashCode.call(this),31)},ct(Hs).equals=function(t){var n;t:if(this!==t)if(t instanceof Hs)if(this.h35()===t.h35())if(t.e3c_1&&wn(this.r3c(),t.r3c()))if(this.j35()===t.j35()){var i=0,e=this.j35();if(i>>1|0}while(s<32);throw je(e,i.h35())},t.$_$.k2=cu,t.$_$.l2=gu,t.$_$.m2=bu,t.$_$.n2=function(t,n){mu();var i=new bu;return i.q3j(t),i.q3j(n),i.o1d()},t.$_$.o2=Ee,t.$_$.p2=Se,t.$_$.q2=Me,t.$_$.r2=Ie,t.$_$.s2=Oe,t.$_$.t2=Ne,t.$_$.u2=function(t){return Le(gu(),t)},t.$_$.v2=Le,t})?e.apply(n,r):e)||(t.exports=s)},800:function(t,n,i){var e,r,s;r=[n,i(755),i(675)],void 0===(s="function"==typeof(e=function(t,n,i){"use strict";var e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,X=Math.imul,J=n.$_$.l2,Z=i.$_$.gb,Q=i.$_$.fb,tt=i.$_$.hb,nt=i.$_$.w9,it=i.$_$.f,et=n.$_$.w1,rt=n.$_$.u1,st=i.$_$.ha,ot=i.$_$.f1,ut=i.$_$.r2,at=i.$_$.a5,ht=i.$_$.fg,_t=i.$_$.z9,lt=i.$_$.ga,ct=i.$_$.f7,ft=i.$_$.k5,vt=i.$_$.j,dt=i.$_$.ah,wt=n.$_$.h2,pt=i.$_$.lb,mt=i.$_$.t1,gt=i.$_$.c,bt=i.$_$.ca,$t=i.$_$.fa,yt=i.$_$.i5,kt=i.$_$.f2,xt=i.$_$.n4,St=i.$_$.xa,Et=i.$_$.qb,Ct=i.$_$.qa,qt=i.$_$.ec,Ot=i.$_$.te,zt=i.$_$.p4,At=n.$_$.x,Tt=n.$_$.d2,It=n.$_$.g,Dt=n.$_$.n1,jt=n.$_$.p2,Mt=n.$_$.v,Nt=n.$_$.j1,Rt=n.$_$.u,Pt=n.$_$.h,Lt=n.$_$.j,Ft=n.$_$.e1,Ut=i.$_$.x1,Ht=i.$_$.bh,Vt=n.$_$.h1,Bt=n.$_$.g1,Yt=n.$_$.f1,Wt=i.$_$.kc,Gt=i.$_$.ea,Kt=n.$_$.a2,Xt=i.$_$.q9,Jt=n.$_$.r2,Zt=n.$_$.b,Qt=i.$_$.u9,tn=i.$_$.v9,nn=i.$_$.tb,en=i.$_$.yb,rn=(n.$_$.o,n.$_$.k),sn=i.$_$.v,on=i.$_$.m,un=i.$_$.c8,an=i.$_$.q6,hn=i.$_$.b7,_n=i.$_$.l6,ln=i.$_$.m6,cn=i.$_$.ba,fn=n.$_$.l,vn=i.$_$.qf,dn=i.$_$.wg,wn=i.$_$.k9,pn=i.$_$.rf,mn=i.$_$.pg,gn=i.$_$.w8,bn=n.$_$.y1,$n=i.$_$.d,yn=n.$_$.s2,kn=i.$_$.vg,xn=n.$_$.o2,Sn=n.$_$.r1,En=i.$_$.le,Cn=i.$_$.yd,qn=i.$_$.je,On=i.$_$.bd,zn=i.$_$.dh,An=n.$_$.q2,Tn=i.$_$.jb,In=i.$_$.vf,Dn=i.$_$.yg,jn=i.$_$.xg,Mn=i.$_$.t9,Nn=i.$_$.df,Rn=i.$_$.n3,Pn=i.$_$.ef,Ln=i.$_$.u3,Fn=i.$_$.cf,Un=i.$_$.f3,Hn=i.$_$.ff,Vn=i.$_$.b4,Bn=i.$_$.x4,Yn=n.$_$.z,Wn=i.$_$.y4,Gn=n.$_$.b1,Kn=i.$_$.w4,Xn=n.$_$.a1,Jn=i.$_$.z4,Zn=n.$_$.y,Qn=i.$_$.b8,ti=i.$_$.y2,ni=i.$_$.za,ii=i.$_$.jd,ei=i.$_$.z2,ri=n.$_$.f2,si=n.$_$.c1,oi=n.$_$.d1,ui=n.$_$.m,ai=i.$_$.k4,hi=i.$_$.ib,_i=i.$_$.o4,li=i.$_$.kb,ci=i.$_$.ce,fi=i.$_$.of,vi=n.$_$.i2,di=i.$_$.r6,wi=i.$_$.s7,pi=i.$_$.ve,mi=i.$_$.l8,gi=i.$_$.sf,bi=n.$_$.p1,$i=n.$_$.i,yi=i.$_$.ch,ki=i.$_$.m7,xi=i.$_$.x7,Si=i.$_$.wd,Ei=i.$_$.yf,Ci=i.$_$.u2,qi=i.$_$.u4,Oi=i.$_$.cb,zi=i.$_$.s9,Ai=i.$_$.nd,Ti=i.$_$.o;function Ii(){e=this,ji.call(this,new Ri,J())}function Di(){return null==e&&new Ii,e}function ji(t,n){Di(),this.g3n_1=t,this.h3n_1=n,this.i3n_1=new or}function Mi(){}function Ni(){}function Ri(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v){t=t!==it&&t,n=n!==it&&n,i=i!==it&&i,e=e!==it&&e,r=r!==it&&r,s=s===it||s,o=o===it?" ":o,u=u!==it&&u,a=a!==it&&a,h=h===it?"type":h,_=_!==it&&_,l=l===it||l,c=c===it?null:c,f=f!==it&&f,v=v!==it&&v,this.x3n_1=t,this.y3n_1=n,this.z3n_1=i,this.a3o_1=e,this.b3o_1=r,this.c3o_1=s,this.d3o_1=o,this.e3o_1=u,this.f3o_1=a,this.g3o_1=h,this.h3o_1=_,this.i3o_1=l,this.j3o_1=c,this.k3o_1=f,this.l3o_1=v}function Pi(){}function Li(){}function Fi(){}function Ui(){}function Hi(t){var n=t.g2(),i=t.h2(),e=ot();return pr(e,n),e.p5(ut(58)),e.n5(i),e.toString()}function Vi(t){Fi.call(this),this.o3o_1=t}function Bi(){return ye()}function Yi(){r=this,Ki.call(this),this.p3o_1="null";var t=vt();this.q3o_1=dt(t,Bi)}function Wi(){return null==r&&new Yi,r}function Gi(){}function Ki(){Fi.call(this)}function Xi(t,n,i){if(i=i===it?null:i,Ki.call(this),this.s3o_1=n,this.t3o_1=i,this.u3o_1=pt(t),null!=this.t3o_1&&!this.t3o_1.k35())throw mt(pt("Failed requirement."))}function Ji(){}function Zi(t){Fi.call(this),this.v3o_1=t}function Qi(t){return ee(),function(t){return mr(),!!ii(t,"true",!0)||!ii(t,"false",!0)&&null}(t.x2a())}function te(t){var n;ee();try{n=new ls(t.x2a()).z3o()}catch(t){if(t instanceof Ie)throw kt(t.message);throw t}var i=n,e=St(xt.MIN_VALUE,xt.MAX_VALUE);if(!qt(Ct(e,Et)?e:ht(),i))throw kt(t.x2a()+" is not an Int");return i.ia()}function ne(t){return ee(),t instanceof Yi?null:t.x2a()}function ie(t){ee();var n,i=t instanceof Ki?t:null;return null==i?function(t,n){throw ee(),mt("Element "+gt(t)+" is not a "+n)}(t,"JsonPrimitive"):n=i,n}function ee(){s||(s=!0,Tt("kotlinx.serialization.json.JsonUnquotedLiteral",At(zt)))}function re(t){return t.q34("JsonPrimitive",me(se)),t.q34("JsonNull",me(oe)),t.q34("JsonLiteral",me(ue)),t.q34("JsonObject",me(ae)),t.q34("JsonArray",me(he)),at}function se(){return be().a3p_1}function oe(){return ye().b3p_1}function ue(){return(null==f&&new ke,f).c3p_1}function ae(){return ve().d3p_1}function he(){return pe().e3p_1}function _e(){o=this;var t=It();this.f3p_1=Dt("kotlinx.serialization.json.JsonElement",t,[],re)}function le(){return null==o&&new _e,o}function ce(){u=this,this.g3p_1=Mt(At(zt),le()).g34(),this.h3p_1="kotlinx.serialization.json.JsonObject"}function fe(){a=this,this.d3p_1=(null==u&&new ce,u)}function ve(){return null==a&&new fe,a}function de(){h=this,this.i3p_1=Rt(le()).g34(),this.j3p_1="kotlinx.serialization.json.JsonArray"}function we(){_=this,this.e3p_1=(null==h&&new de,h)}function pe(){return null==_&&new we,_}function me(t){return new Ce(t)}function ge(){l=this,this.a3p_1=Dt("kotlinx.serialization.json.JsonPrimitive",Pt(),[])}function be(){return null==l&&new ge,l}function $e(){c=this,this.b3p_1=Dt("kotlinx.serialization.json.JsonNull",Lt(),[])}function ye(){return null==c&&new $e,c}function ke(){f=this,this.c3p_1=Ft("kotlinx.serialization.json.JsonLiteral",Pt())}function xe(t){var n=Ct(t,Pi)?t:null;if(null==n)throw Ut("This serializer can be used only with Json format.Expected Decoder to be JsonDecoder, got "+gt(t));return n}function Se(t){xe(t)}function Ee(t){var n=t.k3p_1;return Gt("original",1,Wt,(function(t){return Ee(t)}),null),n.h2()}function Ce(t){this.k3p_1=Ht(t)}function qe(t){var n,i;this.l3p_1=new Kt(t,(n=this,i=function(t,i){return r=t,s=i,(e=n).m3p_1=!r.q35(s)&&r.n35(s).d35(),e.m3p_1;var e,r,s},i.callableName="readIfAbsent",i)),this.m3p_1=!1}function Oe(t,n){n=n===it?"object":n,t.n3p("Trailing comma before the end of JSON "+n,t.s3n_1-1|0,"Trailing commas are non-complaint JSON and not allowed by default. Use 'allowTrailingCommas = true' in 'Json {}' builder to support them.")}function ze(t,n){t.o3p("Unexpected special floating-point value "+pt(n)+". By default, non-finite floating point values are prohibited because they do not conform JSON specification",it,_s())}function Ae(t){Re.call(this,t),Xt(this,Ae)}function Te(t){return new Ae("Value of type '"+t.h35()+"' can't be used in JSON as a key in the map. It should have either primitive or enum kind, but its kind is '"+t.l35()+"'.\n"+K)}function Ie(t){Re.call(this,t),Xt(this,Ie)}function De(t,n,i){return Me(t,n+"\nJSON input: "+Pe(i,t))}function je(t,n,i){return Me(-1,function(t,n,i){return"Unexpected special floating-point value "+pt(t)+" with key "+n+". By default, non-finite floating point values are prohibited because they do not conform JSON specification. "+_s()+"\nCurrent output: "+Pe(i)}(t,n,i))}function Me(t,n){return new Ie(t>=0?"Unexpected JSON token at offset "+t+": "+n:n)}function Ne(t,n){return Me(-1,"Encountered an unknown key '"+t+"'.\n"+Y+"\nCurrent input: "+Pe(n))}function Re(t){Zt(t,this),Xt(this,Re)}function Pe(t,n){if(n=n===it?-1:n,Qt(t)<200)return t;if(-1===n){var i=Qt(t)-60|0;if(i<=0)return t;var e=Qt(t);return"....."+pt(tn(t,i,e))}var r=n-30|0,s=n+30|0,o=r<=0?"":".....",u=s>=Qt(t)?"":".....",a=nn(r,0),h=en(s,Qt(t));return o+pt(tn(t,a,h))+u}function Le(){return We(),v}function Fe(t,n,i){if(We(),Ve(n,t))return Be(t,n,i.toLowerCase());if(null!=Ue(t,n))return Be(t,n,i);var e=t.o35(i);return-3!==e?e:n.g3n_1.i3o_1?Be(t,n,i):e}function Ue(t,n){return We(),_t(t.l35(),rn())?n.g3n_1.j3o_1:null}function He(t,n){We();var i,e,r=cs(t),s=Le();return r.q3p(n,s,(i=n,e=t,function(){return function(t,n){We();var i=sn(),e=Ve(n,t),r=Ue(t,n),s=0,o=t.j35();if(s>12),r=wr(i>>8),s=wr(i>>4),o=wr(i);t[i]="\\u"+ei(e)+ei(r)+ei(s)+ei(o)}while(n<=31);var u=ut(34);t[ti(u)]='\\"';var a=ut(92);t[ti(a)]="\\\\";var h=ut(9);t[ti(h)]="\\t";var _=ut(8);t[ti(_)]="\\b";var l=ut(10);t[ti(l)]="\\n";var c=ut(13);t[ti(c)]="\\r",t[12]="\\f",g=t;var f=new Int8Array(93),v=0;if(v<=31)do{var d=v;v=v+1|0,f[d]=1}while(v<=31);var w=ut(34);f[ti(w)]=34;var p=ut(92);f[ti(p)]=92;var m=ut(9);f[ti(m)]=116;var $=ut(8);f[ti($)]=98;var y=ut(10);f[ti(y)]=110;var k=ut(13);f[ti(k)]=114,f[12]=102}}function gr(t,n){throw De(-1,"Failed to parse literal as '"+n+"' value",pt(t.q3s()))}function br(t,n){ri.call(this),this.n3s_1=t,this.o3s_1=n,this.p3s_1=this.m3o().g3n_1}function $r(t,n,i,e){var r;t:{var s=t.m3o(),o=n.n35(i);if(!o.d35()&&t.r3s(e)instanceof Yi)r=!0;else{if(_t(o.l35(),Lt())){if(o.d35()&&t.r3s(e)instanceof Yi){r=!1;break t}var u=t.r3s(e),a=u instanceof Ki?u:null,h=null==a?null:ne(a);if(null==h){r=!1;break t}if(-3===Fe(o,s,h)){r=!0;break t}}r=!1}}return r}function yr(t,n,i){return t.n3t_1=!t.m3o().g3n_1.c3o_1&&!n.q35(i)&&n.n35(i).d35(),t.n3t_1}function kr(t,n,i,e){i=i===it?null:i,e=e===it?null:e,br.call(this,t,n),this.j3t_1=n,this.k3t_1=i,this.l3t_1=e,this.m3t_1=0,this.n3t_1=!1}function xr(t,n){br.call(this,t,n),this.t3t_1=n,this.u3t_1=this.t3t_1.n(),this.v3t_1=-1}function Sr(t,n){br.call(this,t,n),this.b3u_1=n,this.d3i(Cr())}function Er(t,n){kr.call(this,t,n),this.m3u_1=n,this.n3u_1=mi(this.m3u_1.b2()),this.o3u_1=X(this.n3u_1.n(),2),this.p3u_1=-1}function Cr(){return $}function qr(){if(E)return at;E=!0,y=new Or("OBJ",0,Kr(),Xr()),k=new Or("LIST",1,Jr(),Zr()),x=new Or("MAP",2,Kr(),Xr()),S=new Or("POLY_OBJ",3,Jr(),Zr())}function Or(t,n,i,e){gi.call(this,t,n),this.f3s_1=i,this.g3s_1=e}function zr(t,n){var i,e=n.l35();if(e instanceof si)qr(),i=S;else if(_t(e,fn()))i=Ir();else if(_t(e,ui())){var r,s=Ar(n.n35(0),t.w37()),o=s.l35();if(o instanceof oi||_t(o,Lt()))r=Dr();else{if(!t.g3n_1.a3o_1)throw Te(s);r=Ir()}i=r}else i=Tr();return i}function Ar(t,n){var i;if(_t(t.l35(),$i())){var e=bi(n,t),r=null==e?null:Ar(e,n);i=null==r?t:r}else i=t.k35()?Ar(t.n35(0),n):t;return i}function Tr(){return qr(),y}function Ir(){return qr(),k}function Dr(){return qr(),x}function jr(t,n,i){return t.q3u(n,i),function(t,n){var i=n;-1===(i=t.s3u(i))&&t.o3p("Expected escape sequence to continue, got EOF");var e=t.r3u(),r=i;i=r+1|0;var s=Mn(e,r);if(s===ut(117))return Rr(t,t.r3u(),i);var o=function(t){return t<117?hs().a3v_1[t]:ut(0)}(ti(s));return o===ut(0)&&t.o3p("Invalid escaped char '"+ei(s)+"'"),t.v3n_1.p5(o),i}(t,i+1|0)}function Mr(t,n,i){t.q3u(n,i);var e=t.v3n_1.toString();return t.v3n_1.x7(0),e}function Nr(t){var n=kn(t.u3n_1);return t.u3n_1=null,n}function Rr(t,n,i){return(i+4|0)>=Qt(n)?(t.s3n_1=i,t.t3u(),(t.s3n_1+4|0)>=Qt(n)&&t.o3p("Unexpected EOF during unicode escape"),Rr(t,n,t.s3n_1)):(t.v3n_1.p5(ni((((Pr(t,n,i)<<12)+(Pr(t,n,i+1|0)<<8)|0)+(Pr(t,n,i+2|0)<<4)|0)+Pr(t,n,i+3|0)|0)),i+4|0)}function Pr(t,n,i){var e,r=Mn(n,i);if(ut(48)<=r&&r<=ut(57)){var s=ti(r),o=ut(48);e=s-ti(o)|0}else if(ut(97)<=r&&r<=ut(102)){var u=ti(r),a=ut(97);e=10+(u-ti(a)|0)|0}else if(ut(65)<=r&&r<=ut(70)){var h=ti(r),_=ut(65);e=10+(h-ti(_)|0)|0}else t.o3p("Invalid toHexChar char '"+ei(r)+"' in unicode escape");return e}function Lr(t,n,i){(Qt(t.r3u())-i|0)=0&&(t.o5("."),t.o5(r.p35(s)))}else r!==w&&(t.o5("["),t.o5("'"),t.n5(r),t.o5("'"),t.o5("]"))}while(i0&&t===ut(34)){var n;t:{var i=this.s3n_1;try{this.s3n_1=this.s3n_1-1|0,n=this.k3q();break t}finally{this.s3n_1=i}}"null"===n&&this.n3p("Expected string literal but 'null' literal was found",this.s3n_1-1|0,"Use 'coerceInputValues = true' in 'Json {}' builder to coerce nulls to default values.")}this.v3u(Ur(t))},Z(Fr).x3u=function(t,n){var i=Qr(t),e=n?this.s3n_1-1|0:this.s3n_1,r=this.s3n_1===Qt(this.r3u())||e<0?"EOF":ei(Mn(this.r3u(),e));this.o3p("Expected "+i+", but had '"+r+"' instead",e)},Z(Fr).v3u=function(t,n,i){return n=n===it||n,i===it?this.x3u(t,n):i.x3u.call(this,t,n)},Z(Fr).h3q=function(){for(var t=this.r3u(),n=this.s3n_1;-1!==(n=this.s3u(n));){var i=Mn(t,n);if(i!==ut(32)&&i!==ut(10)&&i!==ut(13)&&i!==ut(9))return this.s3n_1=n,Ur(i);n=n+1|0}return this.s3n_1=n,10},Z(Fr).w3r=function(t){var n=this.y3u();n=this.s3u(n);var i=Qt(this.r3u())-n|0;if(i<4||-1===n)return!1;var e=0;if(e<=3)do{var r=e;if(e=e+1|0,Mn("null",r)!==Mn(this.r3u(),n+r|0))return!1}while(e<=3);return!(i>4&&0===Ur(Mn(this.r3u(),n+4|0))||(t&&(this.s3n_1=n+4|0),0))},Z(Fr).h3s=function(t,n){return t=t===it||t,n===it?this.w3r(t):n.w3r.call(this,t)},Z(Fr).y3u=function(){var t=this.s3n_1;t:for(;-1!==(t=this.s3u(t));){var n=Mn(this.r3u(),t);if(n!==ut(32)&&n!==ut(10)&&n!==ut(13)&&n!==ut(9))break t;t=t+1|0}return this.s3n_1=t,t},Z(Fr).x3r=function(t){var n,i=this.h3q();if(t){if(1!==i&&0!==i)return null;n=this.k3q()}else{if(1!==i)return null;n=this.j3q()}var e=n;return this.u3n_1=e,e},Z(Fr).z3u=function(){this.u3n_1=null},Z(Fr).y7=function(t,n){var i=this.r3u();return pt(tn(i,t,n))},Z(Fr).j3q=function(){return null!=this.u3n_1?Nr(this):this.a3s()},Z(Fr).consumeString2=function(t,n,i){for(var e=i,r=n,s=Mn(t,e),o=!1;s!==ut(34);)s===ut(92)?(o=!0,-1===(e=this.s3u(jr(this,r,e)))&&this.o3p("Unexpected EOF",e),r=e):(e=e+1|0)>=Qt(t)&&(o=!0,this.q3u(r,e),-1===(e=this.s3u(e))&&this.o3p("Unexpected EOF",e),r=e),s=Mn(t,e);var u=o?Mr(this,r,e):this.y7(r,e);return this.s3n_1=e+1|0,u},Z(Fr).b3s=function(){var t,n=this.k3q();return"null"===n&&!(Mn((t=this).r3u(),t.s3n_1-1|0)===ut(34))&&this.o3p("Unexpected 'null' value instead of string literal"),n},Z(Fr).k3q=function(){if(null!=this.u3n_1)return Nr(this);var t=this.y3u();(t>=Qt(this.r3u())||-1===t)&&this.o3p("EOF",t);var n=Ur(Mn(this.r3u(),t));if(1===n)return this.j3q();0!==n&&this.o3p("Expected beginning of the string, but got "+ei(Mn(this.r3u(),t)));for(var i=!1;0===Ur(Mn(this.r3u(),t));)if((t=t+1|0)>=Qt(this.r3u())){i=!0,this.q3u(this.s3n_1,t);var e=this.s3u(t);if(-1===e)return this.s3n_1=t,Mr(this,0,0);t=e}var r=i?Mr(this,this.s3n_1,t):this.y7(this.s3n_1,t);return this.s3n_1=t,r},Z(Fr).q3u=function(t,n){this.v3n_1.q7(this.r3u(),t,n)},Z(Fr).z3r=function(t){var n=on(),i=this.h3q();if(8!==i&&6!==i)return this.k3q(),at;for(;;)if(1!==(i=this.h3q())){var e=i;if(8===e||6===e)n.s(i);else if(9===e){if(8!==ki(n))throw De(this.s3n_1,"found ] instead of } at path: "+this.t3n_1,this.r3u());xi(n)}else if(7===e){if(6!==ki(n))throw De(this.s3n_1,"found } instead of ] at path: "+this.t3n_1,this.r3u());xi(n)}else 10===e&&this.o3p("Unexpected end of input due to malformed JSON during ignoring unknown keys");if(this.m3q(),0===n.n())return at}else t?this.k3q():this.a3s()},Z(Fr).toString=function(){return"JsonReader(source='"+this.r3u()+"', currentPosition="+this.s3n_1+")"},Z(Fr).y3r=function(t){var n=this.y7(0,this.s3n_1),i=Si(n,t);this.n3p("Encountered an unknown key '"+t+"'",i,"Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys.")},Z(Fr).n3p=function(t,n,i){var e=0===Qt(i)?"":"\n"+i;throw De(n,t+" at path: "+this.t3n_1.b3q()+e,this.r3u())},Z(Fr).o3p=function(t,n,i,e){return n=n===it?this.s3n_1:n,i=i===it?"":i,e===it?this.n3p(t,n,i):e.n3p.call(this,t,n,i)},Z(Fr).z3o=function(){var t,n=this.y3u();((n=this.s3u(n))>=Qt(this.r3u())||-1===n)&&this.o3p("EOF"),Mn(this.r3u(),n)===ut(34)?((n=n+1|0)===Qt(this.r3u())&&this.o3p("EOF"),t=!0):t=!1;var i=t,e=new Ei(0,0),r=new Ei(0,0),s=!1,o=!1,u=!1,a=n;t:for(;n!==Qt(this.r3u());){var h=Mn(this.r3u(),n);if(h!==ut(101)&&h!==ut(69)||u)if(h===ut(45)&&u)n===a&&this.o3p("Unexpected symbol '-' in numeric literal"),o=!1,n=n+1|0;else if(h===ut(43)&&u)n===a&&this.o3p("Unexpected symbol '+' in numeric literal"),o=!0,n=n+1|0;else if(h!==ut(45)){if(0!==Ur(h))break t;n=n+1|0;var _=Ci(h,ut(48));0<=_&&_<=9||this.o3p("Unexpected symbol '"+ei(h)+"' in numeric literal"),u?r=r.y9(Tn(10)).db(Tn(_)):(e=e.y9(Tn(10)).eb(Tn(_))).z9(new Ei(0,0))>0&&this.o3p("Numeric value overflow")}else n!==a&&this.o3p("Unexpected symbol '-' in numeric literal"),s=!0,n=n+1|0;else n===a&&this.o3p("Unexpected symbol "+ei(h)+" in numeric literal"),o=!0,u=!0,n=n+1|0}var l,c=!(n===a);if((a===n||s&&a===(n-1|0))&&this.o3p("Expected numeric literal"),i&&(c||this.o3p("EOF"),Mn(this.r3u(),n)!==ut(34)&&this.o3p("Expected closing quotation mark"),n=n+1|0),this.s3n_1=n,u){var f,v=e.c6()*function(t,n){var i;switch(n){case!1:var e=-t.c6();i=Math.pow(10,e);break;case!0:var r=t.c6();i=Math.pow(10,r);break;default:yi()}return i}(r,o);qi(),v>new Ei(-1,2147483647).c6()?f=!0:(qi(),f=v=Qt(t.r3u())||-1===i)&&t.o3p("EOF");var e=t.r3u(),r=i;i=r+1|0;var s,o=Mn(e,r),u=32|ti(o),a=ut(116);if(u===ti(a))Lr(t,"rue",i),s=!0;else{var h=ut(102);u===ti(h)?(Lr(t,"alse",i),s=!1):t.o3p("Expected valid boolean literal prefix, but had '"+t.k3q()+"'")}return s}(this,n);return i&&(this.s3n_1===Qt(this.r3u())&&this.o3p("EOF"),Mn(this.r3u(),this.s3n_1)!==ut(34)&&this.o3p("Expected closing quotation mark"),this.s3n_1=this.s3n_1+1|0),e},Z(ls).r3u=function(){return this.g3v_1},Z(ls).s3u=function(t){return t0&&c.o5(","),c.o5(get_name(v))}for(var d=o.v();d.w();){var w=d.y(),p=w.oe(),m=w.pe();if(charSequenceLength(c)>0&&c.o5(","),!(0<=m&&m<=1))throw IllegalStateException_init_$Create$(toString("Check failed."));var g=roundToInt(100*m)/100;c.o5(get_name(p)+";q="+g)}0===charSequenceLength(c)&&c.o5(get_name(this.y2n_1)),this.a2o_1=c.toString();var b,$=null==i?firstOrNull(l):i;if(null==$){var y=firstOrNull(o);b=null==y?null:y.me_1}else b=$;var k=b;this.z2n_1=null==k?Charsets_getInstance().l1k_1:k}function _init_properties_HttpPlainText_kt__iy89z1(){properties_initialized_HttpPlainText_kt_2nx4ox||(properties_initialized_HttpPlainText_kt_2nx4ox=!0,LOGGER_2=KtorSimpleLogger("io.ktor.client.plugins.HttpPlainText"))}function get_ALLOWED_FOR_REDIRECT(){return _init_properties_HttpRedirect_kt__ure7fo(),ALLOWED_FOR_REDIRECT}function get_LOGGER_3(){return _init_properties_HttpRedirect_kt__ure7fo(),LOGGER_3}function handleCall(t,n,i,e,r,s,o){var u=new $handleCallCOROUTINE$7(n,t,i,e,r,s,o);return u.bc_1=Unit_instance,u.cc_1=null,u.mc()}function HttpRedirect$Plugin$install$slambda(t,n,i){this.b2q_1=t,this.c2q_1=n,CoroutineImpl.call(this,i)}function HttpRedirect$Plugin$install$slambda_0(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.u2l(t,n,i)};return r.$arity=2,r}function $handleCallCOROUTINE$7(t,n,i,e,r,s,o){CoroutineImpl.call(this,o),this.i2p_1=t,this.j2p_1=n,this.k2p_1=i,this.l2p_1=e,this.m2p_1=r,this.n2p_1=s}function Config_1(){this.k2q_1=!0,this.l2q_1=!1}function Plugin_1(){Plugin_instance_1=this,this.i2q_1=new AttributeKey("HttpRedirect"),this.j2q_1=new EventDefinition}function Plugin_getInstance_1(){return null==Plugin_instance_1&&new Plugin_1,Plugin_instance_1}function HttpRedirect(t,n){Plugin_getInstance_1(),this.g2q_1=t,this.h2q_1=n}function isRedirect(t){_init_properties_HttpRedirect_kt__ure7fo();var n=t.n22_1;return n===Companion_getInstance_2().w20_1.n22_1||n===Companion_getInstance_2().x20_1.n22_1||n===Companion_getInstance_2().c21_1.n22_1||n===Companion_getInstance_2().d21_1.n22_1||n===Companion_getInstance_2().y20_1.n22_1}function _init_properties_HttpRedirect_kt__ure7fo(){properties_initialized_HttpRedirect_kt_klj746||(properties_initialized_HttpRedirect_kt_klj746=!0,ALLOWED_FOR_REDIRECT=setOf_0([Companion_getInstance_1().t1z_1,Companion_getInstance_1().y1z_1]),LOGGER_3=KtorSimpleLogger("io.ktor.client.plugins.HttpRedirect"))}function get_LOGGER_4(){return _init_properties_HttpRequestLifecycle_kt__jgkmfx(),LOGGER_4}function HttpRequestLifecycle$Plugin$install$slambda(t,n){this.w2q_1=t,CoroutineImpl.call(this,n)}function HttpRequestLifecycle$Plugin$install$slambda_0(t,n){var i=new HttpRequestLifecycle$Plugin$install$slambda(t,n),e=function(t,n,e){return i.g27(t,n,e)};return e.$arity=2,e}function Plugin_2(){Plugin_instance_2=this,this.b2r_1=new AttributeKey("RequestLifecycle")}function Plugin_getInstance_2(){return null==Plugin_instance_2&&new Plugin_2,Plugin_instance_2}function HttpRequestLifecycle(){Plugin_getInstance_2()}function attachToClientEngineJob(t,n){_init_properties_HttpRequestLifecycle_kt__jgkmfx();var i=n.cn(attachToClientEngineJob$lambda(t));t.cn(attachToClientEngineJob$lambda_0(i))}function attachToClientEngineJob$lambda(t){return function(n){return null!=n?(get_LOGGER_4().s1t("Cancelling request because engine Job failed with error: "+n),cancel_2(t,"Engine failed",n)):(get_LOGGER_4().s1t("Cancelling request because engine Job completed"),t.es()),Unit_instance}}function attachToClientEngineJob$lambda_0(t){return function(n){return t.mp(),Unit_instance}}function _init_properties_HttpRequestLifecycle_kt__jgkmfx(){properties_initialized_HttpRequestLifecycle_kt_3hmcrf||(properties_initialized_HttpRequestLifecycle_kt_3hmcrf=!0,LOGGER_4=KtorSimpleLogger("io.ktor.client.plugins.HttpRequestLifecycle"))}function HttpSend$Plugin$install$slambda(t,n,i){this.l2r_1=t,this.m2r_1=n,CoroutineImpl.call(this,i)}function HttpSend$Plugin$install$slambda_0(t,n,i){var e=new HttpSend$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.g27(t,n,i)};return r.$arity=2,r}function $executeCOROUTINE$8(t,n,i){CoroutineImpl.call(this,i),this.a2s_1=t,this.b2s_1=n}function Config_2(){this.g2s_1=20}function Plugin_3(){Plugin_instance_3=this,this.h2s_1=new AttributeKey("HttpSend")}function Plugin_getInstance_3(){return null==Plugin_instance_3&&new Plugin_3,Plugin_instance_3}function InterceptedSender(t,n){this.k2s_1=t,this.l2s_1=n}function DefaultSender(t,n){this.c2s_1=t,this.d2s_1=n,this.e2s_1=0,this.f2s_1=null}function HttpSend(t){Plugin_getInstance_3(),t=t===VOID?20:t,this.c2n_1=t,this.d2n_1=ArrayList_init_$Create$()}function Sender(){}function SendCountExceedException(t){IllegalStateException_init_$Init$_0(t,this),captureStack(this,SendCountExceedException)}function get_LOGGER_5(){return _init_properties_HttpTimeout_kt__pucqrr(),LOGGER_5}function HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,e){return t=t===VOID?null:t,n=n===VOID?null:n,i=i===VOID?null:i,HttpTimeoutCapabilityConfiguration.call(e),e.p2s(t),e.q2s(n),e.r2s(i),e}function HttpTimeoutCapabilityConfiguration_init_$Create$(t,n,i){return HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,objectCreate(protoOf(HttpTimeoutCapabilityConfiguration)))}function checkTimeoutValue(t,n){if(!(null==n||n.z9(new Long(0,0))>0))throw IllegalArgumentException_init_$Create$(toString("Only positive timeout values are allowed, for infinite timeout use HttpTimeout.INFINITE_TIMEOUT_MS"));return n}function Companion_2(){Companion_instance_3=this,this.s2s_1=new AttributeKey("TimeoutConfiguration")}function Companion_getInstance_9(){return null==Companion_instance_3&&new Companion_2,Companion_instance_3}function HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e){this.b2t_1=t,this.c2t_1=n,this.d2t_1=i,CoroutineImpl.call(this,e)}function HttpTimeout$Plugin$install$slambda$slambda_0(t,n,i,e){var r=new HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e),s=function(t,n){return r.v1g(t,n)};return s.$arity=1,s}function HttpTimeout$Plugin$install$slambda$lambda(t){return function(n){return t.in(),Unit_instance}}function HttpTimeout$Plugin$install$slambda(t,n,i){this.n2t_1=t,this.o2t_1=n,CoroutineImpl.call(this,i)}function HttpTimeout$Plugin$install$slambda_0(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.u2l(t,n,i)};return r.$arity=2,r}function HttpTimeoutCapabilityConfiguration(){Companion_getInstance_9(),this.m2s_1=new Long(0,0),this.n2s_1=new Long(0,0),this.o2s_1=new Long(0,0)}function hasNotNullTimeouts(t){return null!=t.w2t_1||null!=t.x2t_1||!(null==t.y2t_1)}function Plugin_4(){Plugin_instance_4=this,this.b2u_1=new AttributeKey("TimeoutPlugin"),this.c2u_1=new Long(-1,2147483647)}function Plugin_getInstance_4(){return null==Plugin_instance_4&&new Plugin_4,Plugin_instance_4}function HttpTimeout(t,n,i){Plugin_getInstance_4(),this.w2t_1=t,this.x2t_1=n,this.y2t_1=i}function HttpRequestTimeoutException_init_$Init$(t,n){var i=t.m28_1.i24(),e=t.t2t(Plugin_getInstance_4());return HttpRequestTimeoutException.call(n,i,null==e?null:e.a2u()),n}function HttpRequestTimeoutException_init_$Create$(t){var n=HttpRequestTimeoutException_init_$Init$(t,objectCreate(protoOf(HttpRequestTimeoutException)));return captureStack(n,HttpRequestTimeoutException_init_$Create$),n}function HttpRequestTimeoutException(t,n){IOException_init_$Init$("Request timeout has expired [url="+t+", request_timeout="+toString(null==n?"unknown":n)+" ms]",this),captureStack(this,HttpRequestTimeoutException)}function _init_properties_HttpTimeout_kt__pucqrr(){properties_initialized_HttpTimeout_kt_9oyjbd||(properties_initialized_HttpTimeout_kt_9oyjbd=!0,LOGGER_5=KtorSimpleLogger("io.ktor.client.plugins.HttpTimeout"))}function wrapWithContent(t,n){return new DelegatedCall(t.i27_1,n,t)}function DelegatedCall(t,n,i){HttpClientCall.call(this,t),this.k27_1=new DelegatedRequest(this,i.w2a()),this.l27_1=new DelegatedResponse(this,n,i.n27())}function DelegatedRequest(t,n){this.f2u_1=t,this.g2u_1=n}function DelegatedResponse(t,n,i){HttpResponse.call(this),this.h2u_1=t,this.i2u_1=n,this.j2u_1=i,this.k2u_1=this.j2u_1.am()}function WebSocketCapability(){}function WebSocketCapability_getInstance(){return WebSocketCapability_instance}function WebSocketException_init_$Init$(t,n){return WebSocketException.call(n,t,null),n}function WebSocketException_init_$Create$(t){var n=WebSocketException_init_$Init$(t,objectCreate(protoOf(WebSocketException)));return captureStack(n,WebSocketException_init_$Create$),n}function WebSocketException(t,n){IllegalStateException_init_$Init$_1(t,n,this),captureStack(this,WebSocketException)}function ClientUpgradeContent(){}function DefaultHttpRequest(t,n){this.l2u_1=t,this.m2u_1=n.n2d_1,this.n2u_1=n.m2d_1,this.o2u_1=n.p2d_1,this.p2u_1=n.o2d_1,this.q2u_1=n.r2d_1}function HttpRequest_0(){}function Companion_3(){}function Companion_getInstance_10(){return Companion_instance_4}function HttpRequestBuilder$setCapability$lambda(){return LinkedHashMap_init_$Create$()}function HttpRequestBuilder(){this.m28_1=new URLBuilder,this.n28_1=Companion_getInstance_1().t1z_1,this.o28_1=new HeadersBuilder,this.p28_1=EmptyContent_getInstance(),this.q28_1=SupervisorJob(),this.r28_1=AttributesJsFn(!0)}function HttpRequestData(t,n,i,e,r,s){this.m2d_1=t,this.n2d_1=n,this.o2d_1=i,this.p2d_1=e,this.q2d_1=r,this.r2d_1=s;var o=this.r2d_1.f1o(get_ENGINE_CAPABILITIES_KEY()),u=null==o?null:o.b2();this.s2d_1=null==u?emptySet():u}function HttpResponseData(t,n,i,e,r,s){this.u29_1=t,this.v29_1=n,this.w29_1=i,this.x29_1=e,this.y29_1=r,this.z29_1=s,this.a2a_1=GMTDate()}function url(t,n){takeFrom(t.m28_1,n)}function isUpgradeRequest(t){return t.p2d_1 instanceof ClientUpgradeContent}function Phases(){Phases_instance=this,this.k2f_1=new PipelinePhase("Before"),this.l2f_1=new PipelinePhase("State"),this.m2f_1=new PipelinePhase("Transform"),this.n2f_1=new PipelinePhase("Render"),this.o2f_1=new PipelinePhase("Send")}function Phases_getInstance(){return null==Phases_instance&&new Phases,Phases_instance}function HttpRequestPipeline(t){Phases_getInstance(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance().k2f_1,Phases_getInstance().l2f_1,Phases_getInstance().m2f_1,Phases_getInstance().n2f_1,Phases_getInstance().o2f_1]),this.a2v_1=t}function Phases_0(){Phases_instance_0=this,this.c29_1=new PipelinePhase("Before"),this.d29_1=new PipelinePhase("State"),this.e29_1=new PipelinePhase("Monitoring"),this.f29_1=new PipelinePhase("Engine"),this.g29_1=new PipelinePhase("Receive")}function Phases_getInstance_0(){return null==Phases_instance_0&&new Phases_0,Phases_instance_0}function HttpSendPipeline(t){Phases_getInstance_0(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_0().c29_1,Phases_getInstance_0().d29_1,Phases_getInstance_0().e29_1,Phases_getInstance_0().f29_1,Phases_getInstance_0().g29_1]),this.i2v_1=t}function get_BodyTypeAttributeKey(){return _init_properties_RequestBody_kt__bo3lwf(),BodyTypeAttributeKey}function _init_properties_RequestBody_kt__bo3lwf(){properties_initialized_RequestBody_kt_agyv1b||(properties_initialized_RequestBody_kt_agyv1b=!0,BodyTypeAttributeKey=new AttributeKey("BodyTypeAttributeKey"))}function DefaultHttpResponse(t,n){HttpResponse.call(this),this.j2v_1=t,this.k2v_1=n.z29_1,this.l2v_1=n.u29_1,this.m2v_1=n.x29_1,this.n2v_1=n.v29_1,this.o2v_1=n.a2a_1;var i=n.y29_1,e=isInterface(i,ByteReadChannel)?i:null;this.p2v_1=null==e?Companion_getInstance().z1g():e,this.q2v_1=n.w29_1}function HttpResponse(){}function get_request(t){return t.v2b().w2a()}function complete(t){var n=ensureNotNull(t.am().hc(Key_instance));(isInterface(n,CompletableJob)?n:THROW_CCE()).es()}function bodyAsText(t,n,i){var e=new $bodyAsTextCOROUTINE$13(t,n=n===VOID?Charsets_getInstance().l1k_1:n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()}function $bodyAsTextCOROUTINE$13(t,n,i){CoroutineImpl.call(this,i),this.z2v_1=t,this.a2w_1=n}function Phases_1(){Phases_instance_1=this,this.k29_1=new PipelinePhase("Receive"),this.l29_1=new PipelinePhase("Parse"),this.m29_1=new PipelinePhase("Transform"),this.n29_1=new PipelinePhase("State"),this.o29_1=new PipelinePhase("After")}function Phases_getInstance_1(){return null==Phases_instance_1&&new Phases_1,Phases_instance_1}function HttpResponsePipeline(t){Phases_getInstance_1(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_1().k29_1,Phases_getInstance_1().l29_1,Phases_getInstance_1().m29_1,Phases_getInstance_1().n29_1,Phases_getInstance_1().o29_1]),this.l2w_1=t}function Phases_2(){Phases_instance_2=this,this.p2f_1=new PipelinePhase("Before"),this.q2f_1=new PipelinePhase("State"),this.r2f_1=new PipelinePhase("After")}function Phases_getInstance_2(){return null==Phases_instance_2&&new Phases_2,Phases_instance_2}function HttpReceivePipeline(t){Phases_getInstance_2(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_2().p2f_1,Phases_getInstance_2().q2f_1,Phases_getInstance_2().r2f_1]),this.t2w_1=t}function HttpResponseContainer(t,n){this.u2a_1=t,this.v2a_1=n}function checkCapabilities(t){var n,i=t.u2w_1.r28_1.f1o(get_ENGINE_CAPABILITIES_KEY()),e=null==i?null:i.b2();if(null==e)n=null;else{for(var r=ArrayList_init_$Create$(),s=e.v();s.w();){var o=s.y();null!=o&&isInterface(o,HttpClientPlugin)&&r.s(o)}n=r}if(null==n);else for(var u=n.v();u.w();){var a=u.y();if(null==pluginOrNull(t.v2w_1,a))throw IllegalArgumentException_init_$Create$(toString("Consider installing "+a+" plugin because the request requires it to be installed"))}}function HttpStatement$execute$slambda(t){CoroutineImpl.call(this,t)}function HttpStatement$execute$slambda_0(t){var n=new HttpStatement$execute$slambda(t),i=function(t,i){return n.f2x(t,i)};return i.$arity=1,i}function $executeCOROUTINE$14(t,n,i){CoroutineImpl.call(this,i),this.o2x_1=t,this.p2x_1=n}function $executeUnsafeCOROUTINE$15(t,n){CoroutineImpl.call(this,n),this.f2y_1=t}function $cleanupCOROUTINE$16(t,n,i){CoroutineImpl.call(this,i),this.q2y_1=t,this.r2y_1=n}function HttpStatement(t,n){this.u2w_1=t,this.v2w_1=n,checkCapabilities(this)}function observable(t,n,i,e){return writer(GlobalScope_instance,n,!0,observable$slambda_0(i,t,e,null)).by()}function observable$slambda(t,n,i,e){this.g2z_1=t,this.h2z_1=n,this.i2z_1=i,CoroutineImpl.call(this,e)}function observable$slambda_0(t,n,i,e){var r=new observable$slambda(t,n,i,e),s=function(t,n){return r.t2c(t,n)};return s.$arity=1,s}function get_HttpRequestCreated(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestCreated}function get_HttpRequestIsReadyForSending(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestIsReadyForSending}function get_HttpResponseReceived(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceived}function get_HttpResponseReceiveFailed(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceiveFailed}function get_HttpResponseCancelled(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseCancelled}function HttpResponseReceiveFail(t,n){this.t2z_1=t,this.u2z_1=n}function _init_properties_ClientEvents_kt__xuvbz8(){properties_initialized_ClientEvents_kt_rdee4m||(properties_initialized_ClientEvents_kt_rdee4m=!0,HttpRequestCreated=new EventDefinition,HttpRequestIsReadyForSending=new EventDefinition,HttpResponseReceived=new EventDefinition,HttpResponseReceiveFailed=new EventDefinition,HttpResponseCancelled=new EventDefinition)}function EmptyContent(){EmptyContent_instance=this,NoContent.call(this),this.w2z_1=new Long(0,0)}function EmptyContent_getInstance(){return null==EmptyContent_instance&&new EmptyContent,EmptyContent_instance}function buildHeaders(t){t=t===VOID?buildHeaders$lambda:t;var n=new HeadersBuilder;return t(n),n.o1d()}function buildHeaders$lambda(t){return Unit_instance}function HttpClient_1(t){return t=t===VOID?HttpClient$lambda_3:t,HttpClient_0(JsClient(),t)}function HttpClient$lambda_3(t){return Unit_instance}function ioDispatcher(){return Dispatchers_getInstance().ps_1}function JsClient(){return Js_instance}function Js(){}function Js_getInstance(){return Js_instance}function createWebSocket($this,urlString_capturingHack,headers){for(var this_0=headers.b1q(),destination=ArrayList_init_$Create$(),tmp0_iterator=this_0.v();tmp0_iterator.w();){var element=tmp0_iterator.y();equals_0(element,"sec-websocket-protocol",!0)&&destination.s(element)}for(var protocolHeaderNames=destination,destination_0=ArrayList_init_$Create$(),tmp0_iterator_0=protocolHeaderNames.v();tmp0_iterator_0.w();){var element_0=tmp0_iterator_0.y(),tmp0_safe_receiver=headers.a1q(element_0);null==tmp0_safe_receiver||destination_0.s(tmp0_safe_receiver)}var this_1=flatten(destination_0),protocols=copyToArray(this_1),tmp;if(2===get_platform(PlatformUtils_getInstance()).v9_1)tmp=new WebSocket(urlString_capturingHack,protocols);else{var ws_capturingHack=eval("require")("ws"),headers_capturingHack=new JsClientEngine$createWebSocket$headers_capturingHack$1;headers.d1q(JsClientEngine$createWebSocket$lambda(headers_capturingHack)),tmp=new ws_capturingHack(urlString_capturingHack,protocols,{headers:headers_capturingHack})}return tmp}function executeWebSocketRequest(t,n,i,e){var r=new $executeWebSocketRequestCOROUTINE$18(t,n,i,e);return r.bc_1=Unit_instance,r.cc_1=null,r.mc()}function JsClientEngine$createWebSocket$headers_capturingHack$1(){}function JsClientEngine$createWebSocket$lambda(t){return function(n,i){return t[n]=joinToString(i,","),Unit_instance}}function $executeCOROUTINE$17(t,n,i){CoroutineImpl.call(this,i),this.u30_1=t,this.v30_1=n}function $executeWebSocketRequestCOROUTINE$18(t,n,i,e){CoroutineImpl.call(this,e),this.g30_1=t,this.h30_1=n,this.i30_1=i}function JsClientEngine(t){if(HttpClientEngineBase.call(this,"ktor-js"),this.e31_1=t,this.f31_1=setOf_0([Plugin_getInstance_4(),WebSocketCapability_instance]),null!=this.e31_1.i2f_1)throw IllegalStateException_init_$Create$(toString("Proxy unsupported in Js engine."))}function mapToKtor(t){return buildHeaders(mapToKtor$lambda(t))}function awaitConnection(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());if(i.zq(),!i.fp()){var e=awaitConnection$lambda(i,t);t.addEventListener("open",e),t.addEventListener("error",e),i.ip(awaitConnection$lambda_0(t,e))}return i.ap()}function asString(t){var n=StringBuilder_init_$Create$(),i=JSON;return n.o5(i.stringify(t,["message","target","type","isTrusted"])),n.toString()}function JsError(t){extendThrowable(this,"Error from javascript["+t+"]."),captureStack(this,JsError),this.g31_1=t}function mapToKtor$lambda$lambda(t){return function(n,i){return t.k1q(i,n),Unit_instance}}function mapToKtor$lambda(t){return function(n){return t.forEach(mapToKtor$lambda$lambda(n)),Unit_instance}}function awaitConnection$lambda(t,n){return function(i){var e=i.type;if("open"===e){var r=t,s=_Result___init__impl__xyqfz8(n);r.nc(s)}else if("error"===e){var o=t,u=WebSocketException_init_$Create$(asString(i)),a=_Result___init__impl__xyqfz8(createFailure(u));o.nc(a)}return Unit_instance}}function awaitConnection$lambda_0(t,n){return function(i){return t.removeEventListener("open",n),t.removeEventListener("error",n),null!=i&&t.close(),Unit_instance}}function toRaw(t,n,i,e){var r=new $toRawCOROUTINE$19(t,n,i,e);return r.bc_1=Unit_instance,r.cc_1=null,r.mc()}function buildObject(t){var n={},i=null==n||null!=n?n:THROW_CCE();return t(i),i}function toRaw$lambda(t){return function(n,i){return t[n]=i,Unit_instance}}function toRaw$slambda(t,n){this.d32_1=t,CoroutineImpl.call(this,n)}function toRaw$slambda_0(t,n){var i=new toRaw$slambda(t,n),e=function(t,n){return i.t2c(t,n)};return e.$arity=1,e}function toRaw$lambda_0(t,n,i,e){return function(r){var s;r.method=t.n2d_1.b20_1,r.headers=n,s=i.w28_1?"follow":"manual",r.redirect=s;var o=e;return null==o||(r.body=new Uint8Array(toTypedArray(o))),Unit_instance}}function $toRawCOROUTINE$19(t,n,i,e){CoroutineImpl.call(this,e),this.p31_1=t,this.q31_1=n,this.r31_1=i}function asByteArray(t){return new Int8Array(t.buffer,t.byteOffset,t.length)}function readBodyBrowser(t,n){var i=n.body;return null==i?Companion_getInstance().z1g():channelFromStream(t,i)}function channelFromStream(t,n){return writer(t,VOID,VOID,channelFromStream$slambda_0(n,null)).by()}function readChunk(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());return i.zq(),t.read().then(readChunk$lambda(i)).catch(readChunk$lambda_0(i)),i.ap()}function channelFromStream$slambda(t,n){this.n32_1=t,CoroutineImpl.call(this,n)}function channelFromStream$slambda_0(t,n){var i=new channelFromStream$slambda(t,n),e=function(t,n){return i.t2c(t,n)};return e.$arity=1,e}function readChunk$lambda(t){return function(n){var i=n.value,e=n.done||null==i?null:i,r=_Result___init__impl__xyqfz8(e);return t.nc(r),Unit_instance}}function readChunk$lambda_0(t){return function(n){var i=t,e=_Result___init__impl__xyqfz8(createFailure(n));return i.nc(e),Unit_instance}}function commonFetch(t,n,i){var e=new CancellableContinuationImpl(intercepted(i),get_MODE_CANCELLABLE());e.zq();var r=AbortController_0();n.signal=r.signal,e.ip(commonFetch$lambda(r));var s=2===get_platform(PlatformUtils_getInstance()).v9_1?fetch(t,n):jsRequireNodeFetch()(t,n),o=commonFetch$lambda_0(e);return s.then(o,commonFetch$lambda_1(e)),e.ap()}function readBody(t,n){return 3===get_platform(PlatformUtils_getInstance()).v9_1?readBodyNode(t,n):readBodyBrowser(t,n)}function AbortController_0(){var tmp;if(2===get_platform(PlatformUtils_getInstance()).v9_1)tmp=new AbortController;else{var controller=eval("require")("abort-controller");tmp=new controller}return tmp}function jsRequireNodeFetch(){var tmp;try{tmp=eval("require")("node-fetch")}catch(t){var tmp_0,cause=t;throw Error_init_$Create$("Error loading module 'node-fetch': "+cause)}return tmp}function commonFetch$lambda(t){return function(n){return t.abort(),Unit_instance}}function commonFetch$lambda_0(t){return function(n){var i=_Result___init__impl__xyqfz8(n);return t.nc(i),Unit_instance}}function commonFetch$lambda_1(t){return function(n){var i=Error_init_$Create$_0("Fail to fetch",n),e=_Result___init__impl__xyqfz8(createFailure(i));return t.nc(e),Unit_instance}}function readBodyNode(t,n){return writer(t,VOID,VOID,readBodyNode$slambda_0(n,null)).by()}function readBodyNode$slambda$lambda(t,n){return function(i){return _ChannelResult___get_isSuccess__impl__odq1z9(t.l11(asByteArray(new Uint8Array(i)))),n.pause()}}function readBodyNode$slambda$lambda_0(t,n){return function(i){var e=new JsError(i);return t.o11(e),n.by().o11(e)}}function readBodyNode$slambda$lambda_1(t){return function(){return t.q11()}}function readBodyNode$slambda(t,n){this.b33_1=t,CoroutineImpl.call(this,n)}function readBodyNode$slambda_0(t,n){var i=new readBodyNode$slambda(t,n),e=function(t,n){return i.t2c(t,n)};return e.$arity=1,e}function platformRequestDefaultTransform(t,n,i){return null}function platformResponseDefaultTransformers(t){}function isReservedStatusCode(t,n){var i=Companion_getInstance_5().o25(t);return null==i||equals(i,Codes_CLOSED_ABNORMALLY_getInstance())}function JsWebSocketSession$lambda(t){return function(n){var i,e=n,r=e.data;if(r instanceof ArrayBuffer){var s=new Int8Array(r);i=Binary_init_$Create$(!1,s)}else{if(null==r||"string"!=typeof r){var o=IllegalStateException_init_$Create$("Unknown frame type: "+e.type);throw t.j33_1.ds(o),o}i=Text_init_$Create$(r)}var u=i;return t.k33_1.l11(u),Unit_instance}}function JsWebSocketSession$lambda_0(t){return function(n){var i=WebSocketException_init_$Create$(""+n);return t.j33_1.ds(i),t.k33_1.o11(i),t.l33_1.s11(),Unit_instance}}function JsWebSocketSession$lambda_1(t){return function(n){var i=n.code,e=null!=i&&"number"==typeof i?i:THROW_CCE(),r=n.reason,s=new CloseReason(e,null!=r&&"string"==typeof r?r:THROW_CCE());return t.j33_1.bs(s),t.k33_1.l11(Close_init_$Create$(s)),t.k33_1.q11(),t.l33_1.s11(),Unit_instance}}function JsWebSocketSession$slambda(t,n){this.x33_1=t,CoroutineImpl.call(this,n)}function JsWebSocketSession$slambda_0(t,n){var i=new JsWebSocketSession$slambda(t,n),e=function(t,n){return i.v1g(t,n)};return e.$arity=1,e}function JsWebSocketSession$lambda_2(t){return function(n){return null==n?t.i33_1.close():t.i33_1.close(Codes_NORMAL_getInstance().l25_1,"Client failed"),Unit_instance}}function JsWebSocketSession(t,n){this.h33_1=t,this.i33_1=n,this.j33_1=CompletableDeferred(),Factory_getInstance(),this.k33_1=Channel(2147483647),Factory_getInstance(),this.l33_1=Channel(2147483647),this.m33_1=this.k33_1,this.n33_1=this.l33_1,this.o33_1=this.j33_1,this.i33_1.binaryType="arraybuffer",this.i33_1.addEventListener("message",JsWebSocketSession$lambda(this)),this.i33_1.addEventListener("error",JsWebSocketSession$lambda_0(this)),this.i33_1.addEventListener("close",JsWebSocketSession$lambda_1(this)),launch(this,VOID,VOID,JsWebSocketSession$slambda_0(this,null));var i=this.h33_1.hc(Key_instance);null==i||i.cn(JsWebSocketSession$lambda_2(this))}function unwrapCancellationException(t){for(var n=t;n instanceof CancellationException;){if(equals(n,n.cause))return t;n=n.cause}return null==n?t:n}return setMetadataFor(HttpClient$slambda,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpClient$slambda_1,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$0,"$executeCOROUTINE$0",classMeta,CoroutineImpl),setMetadataFor(HttpClient,"HttpClient",classMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,VOID,[1]),setMetadataFor(HttpClientConfig,"HttpClientConfig",classMeta,VOID,VOID,HttpClientConfig),setMetadataFor(Companion,"Companion",objectMeta),setMetadataFor($bodyNullableCOROUTINE$1,"$bodyNullableCOROUTINE$1",classMeta,CoroutineImpl),setMetadataFor(HttpClientCall,"HttpClientCall",classMeta,VOID,[CoroutineScope],VOID,VOID,VOID,[0,1]),setMetadataFor(DoubleReceiveException,"DoubleReceiveException",classMeta,IllegalStateException),setMetadataFor(NoTransformationFoundException,"NoTransformationFoundException",classMeta,UnsupportedOperationException),setMetadataFor(SavedHttpCall,"SavedHttpCall",classMeta,HttpClientCall,VOID,VOID,VOID,VOID,[0,1]),setMetadataFor(HttpRequest_0,"HttpRequest",interfaceMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpRequest,"SavedHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpResponse,"HttpResponse",classMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpResponse,"SavedHttpResponse",classMeta,HttpResponse),setMetadataFor($saveCOROUTINE$3,"$saveCOROUTINE$3",classMeta,CoroutineImpl),setMetadataFor(UnsupportedContentTypeException,"UnsupportedContentTypeException",classMeta,IllegalStateException),setMetadataFor(ObservableContent$content$slambda,"ObservableContent$content$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(ObservableContent,"ObservableContent",classMeta,ReadChannelContent),setMetadataFor(HttpClientEngine$install$slambda,"HttpClientEngine$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpClientEngine$executeWithinCallContext$slambda,"HttpClientEngine$executeWithinCallContext$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($executeWithinCallContextCOROUTINE$4,"$executeWithinCallContextCOROUTINE$4",classMeta,CoroutineImpl),setMetadataFor(HttpClientEngine,"HttpClientEngine",interfaceMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,VOID,[1]),setMetadataFor(ClientEngineClosedException,"ClientEngineClosedException",classMeta,IllegalStateException,VOID,ClientEngineClosedException),setMetadataFor(HttpClientEngineBase,"HttpClientEngineBase",classMeta,VOID,[HttpClientEngine],VOID,VOID,VOID,[1]),setMetadataFor(HttpClientEngineConfig,"HttpClientEngineConfig",classMeta,VOID,VOID,HttpClientEngineConfig),setMetadataFor(Companion_0,"Companion",objectMeta),setMetadataFor(KtorCallContextElement,"KtorCallContextElement",classMeta,VOID,[Element]),setMetadataFor(HttpClientPlugin,"HttpClientPlugin",interfaceMeta),setMetadataFor(Plugin,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(BodyProgress$handle$slambda,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress$handle$slambda_1,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress,"BodyProgress",classMeta),setMetadataFor(ResponseException,"ResponseException",classMeta,IllegalStateException),setMetadataFor(RedirectResponseException,"RedirectResponseException",classMeta,ResponseException),setMetadataFor(ClientRequestException,"ClientRequestException",classMeta,ResponseException),setMetadataFor(ServerResponseException,"ServerResponseException",classMeta,ResponseException),setMetadataFor(addDefaultResponseValidation$lambda$slambda,"addDefaultResponseValidation$lambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$1$content$1,VOID,classMeta,ByteArrayContent),setMetadataFor(defaultTransformers$1$content$2,VOID,classMeta,ReadChannelContent),setMetadataFor(defaultTransformers$slambda,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(defaultTransformers$slambda$slambda,"defaultTransformers$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$slambda_1,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_1,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_3,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Config,"Config",classMeta,VOID,VOID,Config),setMetadataFor(Companion_1,"Companion",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor($validateResponseCOROUTINE$5,"$validateResponseCOROUTINE$5",classMeta,CoroutineImpl),setMetadataFor($processExceptionCOROUTINE$6,"$processExceptionCOROUTINE$6",classMeta,CoroutineImpl),setMetadataFor(HttpCallValidator,"HttpCallValidator",classMeta,VOID,VOID,VOID,VOID,VOID,[1,2]),setMetadataFor(ExceptionHandlerWrapper,"ExceptionHandlerWrapper",classMeta),setMetadataFor(RequestExceptionHandlerWrapper,"RequestExceptionHandlerWrapper",classMeta),setMetadataFor(HttpRequest$1,VOID,classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpPlainText$Plugin$install$slambda,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpPlainText$Plugin$install$slambda_1,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Config_0,"Config",classMeta,VOID,VOID,Config_0),setMetadataFor(Plugin_0,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(sam$kotlin_Comparator$0,"sam$kotlin_Comparator$0",classMeta),setMetadataFor(HttpPlainText,"HttpPlainText",classMeta),setMetadataFor(HttpRedirect$Plugin$install$slambda,"HttpRedirect$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($handleCallCOROUTINE$7,"$handleCallCOROUTINE$7",classMeta,CoroutineImpl),setMetadataFor(Config_1,"Config",classMeta,VOID,VOID,Config_1),setMetadataFor(Plugin_1,"Plugin",objectMeta,VOID,[HttpClientPlugin],VOID,VOID,VOID,[4]),setMetadataFor(HttpRedirect,"HttpRedirect",classMeta),setMetadataFor(HttpRequestLifecycle$Plugin$install$slambda,"HttpRequestLifecycle$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Plugin_2,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpRequestLifecycle,"HttpRequestLifecycle",classMeta),setMetadataFor(HttpSend$Plugin$install$slambda,"HttpSend$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$8,"$executeCOROUTINE$8",classMeta,CoroutineImpl),setMetadataFor(Config_2,"Config",classMeta,VOID,VOID,Config_2),setMetadataFor(Plugin_3,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(Sender,"Sender",interfaceMeta,VOID,VOID,VOID,VOID,VOID,[1]),setMetadataFor(InterceptedSender,"InterceptedSender",classMeta,VOID,[Sender],VOID,VOID,VOID,[1]),setMetadataFor(DefaultSender,"DefaultSender",classMeta,VOID,[Sender],VOID,VOID,VOID,[1]),setMetadataFor(HttpSend,"HttpSend",classMeta),setMetadataFor(SendCountExceedException,"SendCountExceedException",classMeta,IllegalStateException),setMetadataFor(Companion_2,"Companion",objectMeta),setMetadataFor(HttpTimeout$Plugin$install$slambda$slambda,"HttpTimeout$Plugin$install$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(HttpTimeout$Plugin$install$slambda,"HttpTimeout$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpTimeoutCapabilityConfiguration,"HttpTimeoutCapabilityConfiguration",classMeta,VOID,VOID,HttpTimeoutCapabilityConfiguration_init_$Create$),setMetadataFor(Plugin_4,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpTimeout,"HttpTimeout",classMeta),setMetadataFor(HttpRequestTimeoutException,"HttpRequestTimeoutException",classMeta,IOException),setMetadataFor(DelegatedCall,"DelegatedCall",classMeta,HttpClientCall,VOID,VOID,VOID,VOID,[0,1]),setMetadataFor(DelegatedRequest,"DelegatedRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(DelegatedResponse,"DelegatedResponse",classMeta,HttpResponse),setMetadataFor(WebSocketCapability,"WebSocketCapability",objectMeta),setMetadataFor(WebSocketException,"WebSocketException",classMeta,IllegalStateException),setMetadataFor(ClientUpgradeContent,"ClientUpgradeContent",classMeta,NoContent,VOID,VOID,VOID,VOID,[1]),setMetadataFor(DefaultHttpRequest,"DefaultHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(Companion_3,"Companion",objectMeta),setMetadataFor(HttpRequestBuilder,"HttpRequestBuilder",classMeta,VOID,VOID,HttpRequestBuilder),setMetadataFor(HttpRequestData,"HttpRequestData",classMeta),setMetadataFor(HttpResponseData,"HttpResponseData",classMeta),setMetadataFor(Phases,"Phases",objectMeta),setMetadataFor(HttpRequestPipeline,"HttpRequestPipeline",classMeta,Pipeline,VOID,HttpRequestPipeline,VOID,VOID,[2]),setMetadataFor(Phases_0,"Phases",objectMeta),setMetadataFor(HttpSendPipeline,"HttpSendPipeline",classMeta,Pipeline,VOID,HttpSendPipeline,VOID,VOID,[2]),setMetadataFor(DefaultHttpResponse,"DefaultHttpResponse",classMeta,HttpResponse),setMetadataFor($bodyAsTextCOROUTINE$13,"$bodyAsTextCOROUTINE$13",classMeta,CoroutineImpl),setMetadataFor(Phases_1,"Phases",objectMeta),setMetadataFor(HttpResponsePipeline,"HttpResponsePipeline",classMeta,Pipeline,VOID,HttpResponsePipeline,VOID,VOID,[2]),setMetadataFor(Phases_2,"Phases",objectMeta),setMetadataFor(HttpReceivePipeline,"HttpReceivePipeline",classMeta,Pipeline,VOID,HttpReceivePipeline,VOID,VOID,[2]),setMetadataFor(HttpResponseContainer,"HttpResponseContainer",classMeta),setMetadataFor(HttpStatement$execute$slambda,"HttpStatement$execute$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($executeCOROUTINE$14,"$executeCOROUTINE$14",classMeta,CoroutineImpl),setMetadataFor($executeUnsafeCOROUTINE$15,"$executeUnsafeCOROUTINE$15",classMeta,CoroutineImpl),setMetadataFor($cleanupCOROUTINE$16,"$cleanupCOROUTINE$16",classMeta,CoroutineImpl),setMetadataFor(HttpStatement,"HttpStatement",classMeta,VOID,VOID,VOID,VOID,VOID,[1,0]),setMetadataFor(observable$slambda,"observable$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(HttpResponseReceiveFail,"HttpResponseReceiveFail",classMeta),setMetadataFor(EmptyContent,"EmptyContent",objectMeta,NoContent),setMetadataFor(Js,"Js",objectMeta),setMetadataFor(JsClientEngine$createWebSocket$headers_capturingHack$1,VOID,classMeta),setMetadataFor($executeCOROUTINE$17,"$executeCOROUTINE$17",classMeta,CoroutineImpl),setMetadataFor($executeWebSocketRequestCOROUTINE$18,"$executeWebSocketRequestCOROUTINE$18",classMeta,CoroutineImpl),setMetadataFor(JsClientEngine,"JsClientEngine",classMeta,HttpClientEngineBase,VOID,VOID,VOID,VOID,[1,2]),setMetadataFor(JsError,"JsError",classMeta,Error),setMetadataFor(toRaw$slambda,"toRaw$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($toRawCOROUTINE$19,"$toRawCOROUTINE$19",classMeta,CoroutineImpl),setMetadataFor(channelFromStream$slambda,"channelFromStream$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(readBodyNode$slambda,"readBodyNode$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession$slambda,"JsWebSocketSession$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession,"JsWebSocketSession",classMeta,VOID,[CoroutineScope],VOID,VOID,VOID,[0,1]),protoOf(HttpClient$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpClient$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpClient$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,!(this.e27_1 instanceof HttpClientCall)){var n="Error: HttpClientCall expected, but found "+toString(this.e27_1)+"("+getKClassFromExpression(this.e27_1)+").";throw IllegalStateException_init_$Create$(toString(n))}if(this.zb_1=1,(t=this.c27_1.p26_1.w1s(Unit_instance,this.e27_1.n27(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.f27_1=t,this.e27_1.o27(this.f27_1),this.zb_1=2,(t=this.d27_1.b1s(this.e27_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.cc_1}}catch(t){var i=t;if(3===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(HttpClient$slambda).h27=function(t,n,i){var e=new HttpClient$slambda(this.c27_1,i);return e.d27_1=t,e.e27_1=n,e},protoOf(HttpClient$slambda_1).a28=function(t,n,i){var e=this.b28(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpClient$slambda_1).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.a28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpClient$slambda_1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.ac_1=2,this.zb_1=1,(t=this.y27_1.c1s(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ac_1=3,this.zb_1=4;continue t;case 2:if(this.ac_1=3,this.cc_1 instanceof Error){var n=this.cc_1;throw this.x27_1.s26_1.e25(get_HttpResponseReceiveFailed(),new HttpResponseReceiveFail(this.y27_1.x1s_1.n27(),n)),n}throw this.cc_1;case 3:throw this.cc_1;case 4:return this.ac_1=3,Unit_instance}}catch(t){var i=t;if(3===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(HttpClient$slambda_1).b28=function(t,n,i){var e=new HttpClient$slambda_1(this.x27_1,i);return e.y27_1=t,e.z27_1=n,e},protoOf($executeCOROUTINE$0).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.k28_1.s26_1.e25(get_HttpRequestCreated(),this.l28_1),this.zb_1=1,(t=this.k28_1.m26_1.w1s(this.l28_1,this.l28_1.p28_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t instanceof HttpClientCall?t:THROW_CCE();case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpClient).am=function(){return this.l26_1},protoOf(HttpClient).p29=function(t,n){var i=new $executeCOROUTINE$0(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpClient).z1i=function(){if(!this.j26_1.atomicfu$compareAndSet(!1,!0))return Unit_instance;for(var t=this.q26_1.e1o(get_PLUGIN_INSTALLED_LIST()),n=t.k1o().v();n.w();){var i=n.y(),e=t.e1o(i instanceof AttributeKey?i:THROW_CCE());isInterface(e,Closeable)&&e.z1i()}this.k26_1.es(),this.i26_1&&this.g26_1.z1i()},protoOf(HttpClient).toString=function(){return"HttpClient["+this.g26_1+"]"},protoOf(HttpClientConfig).t29=function(t,n){var i=this.t28_1.o2(t.g2()),e=this.t28_1,r=t.g2(),s=HttpClientConfig$install$lambda_0(i,n);if(e.e2(r,s),this.s28_1.l2(t.g2()))return Unit_instance;var o=this.s28_1,u=t.g2(),a=HttpClientConfig$install$lambda_1(t);o.e2(u,a)},protoOf(HttpClientConfig).h29=function(t,n,i){var e;return n=n===VOID?HttpClientConfig$install$lambda:n,i===VOID?(this.t29(t,n),e=Unit_instance):e=i.t29.call(this,t,n),e},protoOf(HttpClientConfig).i29=function(t,n){this.u28_1.e2(t,n)},protoOf(HttpClientConfig).b29=function(t){for(var n=this.s28_1.c2().v();n.w();)n.y()(t);for(var i=this.u28_1.c2().v();i.w();)i.y()(t)},protoOf(HttpClientConfig).j29=function(t){this.w28_1=t.w28_1,this.x28_1=t.x28_1,this.y28_1=t.y28_1;var n=this.s28_1,i=t.s28_1;n.f2(i);var e=this.t28_1,r=t.t28_1;e.f2(r);var s=this.u28_1,o=t.u28_1;s.f2(o)},protoOf($bodyNullableCOROUTINE$1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=10,this.zb_1=1;continue t;case 1:this.zb_1=2;continue t;case 2:if(this.ac_1=9,this.ac_1=8,instanceOf(this.l2a_1.n27(),this.m2a_1.n1t_1)){this.n2a_1=this.l2a_1.n27(),this.ac_1=10,this.zb_1=7;continue t}this.zb_1=3;continue t;case 3:if(!this.l2a_1.s2a()&&!this.l2a_1.j27_1.atomicfu$compareAndSet(!1,!0))throw new DoubleReceiveException(this.l2a_1);if(this.o2a_1=this.l2a_1.b2a().f1o(Companion_getInstance_6().c2a_1),null==this.o2a_1){if(this.zb_1=4,(t=this.l2a_1.t2a(this))===get_COROUTINE_SUSPENDED())return t;continue t}this.p2a_1=this.o2a_1,this.zb_1=5;continue t;case 4:this.p2a_1=t,this.zb_1=5;continue t;case 5:if(this.q2a_1=this.p2a_1,this.r2a_1=new HttpResponseContainer(this.m2a_1,this.q2a_1),this.zb_1=6,(t=this.l2a_1.i27_1.n26_1.w1s(this.l2a_1,this.r2a_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var n=t.v2a_1,i=equals(n,NullBody_instance)?null:n;if(null!=i&&!instanceOf(i,this.m2a_1.n1t_1)){var e=getKClassFromExpression(i),r=this.m2a_1.n1t_1;throw new NoTransformationFoundException(this.l2a_1.n27(),e,r)}this.n2a_1=i,this.ac_1=10,this.zb_1=7;continue t;case 7:var s=this.n2a_1;return this.ac_1=10,complete(this.l2a_1.n27()),s;case 8:if(this.ac_1=9,this.cc_1 instanceof Error){var o=this.cc_1;throw cancel_0(this.l2a_1.n27(),"Receive failed",o),o}throw this.cc_1;case 9:this.ac_1=10;var u=this.cc_1;throw complete(this.l2a_1.n27()),u;case 10:throw this.cc_1;case 11:return this.ac_1=10,complete(this.l2a_1.n27()),Unit_instance}}catch(t){var a=t;if(10===this.ac_1)throw a;this.zb_1=this.ac_1,this.cc_1=a}},protoOf(HttpClientCall).am=function(){return this.n27().am()},protoOf(HttpClientCall).b2a=function(){return this.w2a().b2a()},protoOf(HttpClientCall).w2a=function(){var t=this.k27_1;if(null!=t)return t;throwUninitializedPropertyAccessException("request")},protoOf(HttpClientCall).n27=function(){var t=this.l27_1;if(null!=t)return t;throwUninitializedPropertyAccessException("response")},protoOf(HttpClientCall).s2a=function(){return this.m27_1},protoOf(HttpClientCall).t2a=function(t){return this.n27().x2a()},protoOf(HttpClientCall).y2a=function(t,n){var i=new $bodyNullableCOROUTINE$1(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpClientCall).toString=function(){return"HttpClientCall["+this.w2a().z2a()+", "+this.n27().a2b()+"]"},protoOf(HttpClientCall).o27=function(t){this.l27_1=t},protoOf(DoubleReceiveException).a6=function(){return this.b2b_1},protoOf(NoTransformationFoundException).a6=function(){return this.c2b_1},protoOf(SavedHttpCall).t2a=function(t){return ByteReadChannel_0(this.r2b_1)},protoOf(SavedHttpCall).s2a=function(){return this.s2b_1},protoOf(SavedHttpRequest).v2b=function(){return this.t2b_1},protoOf(SavedHttpRequest).b2a=function(){return this.u2b_1.b2a()},protoOf(SavedHttpRequest).am=function(){return this.u2b_1.am()},protoOf(SavedHttpRequest).s1z=function(){return this.u2b_1.s1z()},protoOf(SavedHttpRequest).w2b=function(){return this.u2b_1.w2b()},protoOf(SavedHttpRequest).z2a=function(){return this.u2b_1.z2a()},protoOf(SavedHttpResponse).v2b=function(){return this.x2b_1},protoOf(SavedHttpResponse).a2b=function(){return this.z2b_1},protoOf(SavedHttpResponse).g2c=function(){return this.a2c_1},protoOf(SavedHttpResponse).h2c=function(){return this.b2c_1},protoOf(SavedHttpResponse).i2c=function(){return this.c2c_1},protoOf(SavedHttpResponse).s1z=function(){return this.d2c_1},protoOf(SavedHttpResponse).am=function(){return this.e2c_1},protoOf(SavedHttpResponse).x2a=function(){return this.f2c_1},protoOf($saveCOROUTINE$3).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=this.l2b_1.n27().x2a().u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=readBytes(t);return new SavedHttpCall(this.l2b_1.i27_1,this.l2b_1.w2a(),this.l2b_1.n27(),n);case 2:throw this.cc_1}}catch(t){var i=t;if(2===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(ObservableContent$content$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(ObservableContent$content$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(ObservableContent$content$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=this.r2c_1.w2c_1.v24(this.s2c_1.by(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(ObservableContent$content$slambda).u2c=function(t,n){var i=new ObservableContent$content$slambda(this.r2c_1,n);return i.s2c_1=t,i},protoOf(ObservableContent).q24=function(){return this.w2c_1.q24()},protoOf(ObservableContent).r24=function(){return this.w2c_1.r24()},protoOf(ObservableContent).s1z=function(){return this.w2c_1.s1z()},protoOf(ObservableContent).t24=function(){return observable(this.z2c_1,this.x2c_1,this.r24(),this.y2c_1)},protoOf(HttpClientEngine$install$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpClientEngine$install$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpClientEngine$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=3;var n=new HttpRequestBuilder;n.l2e(this.e2e_1.x1s_1);var i=this.f2e_1;if(null==i){n.p28_1=NullBody_instance;var e,r=JsType_instance,s=PrimitiveClasses_getInstance().u6();try{e=createKType(PrimitiveClasses_getInstance().u6(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;e=null}n.m2e(typeInfoImpl(r,s,e))}else if(i instanceof OutgoingContent)n.p28_1=i,n.m2e(null);else{n.p28_1=i;var o,u=JsType_instance,a=PrimitiveClasses_getInstance().u6();try{o=createKType(PrimitiveClasses_getInstance().u6(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;o=null}n.m2e(typeInfoImpl(u,a,o))}this.g2e_1=n,this.c2e_1.s26_1.e25(get_HttpRequestIsReadyForSending(),this.g2e_1);var h=this.g2e_1.o1d();if(h.r2d_1.h1o(get_CLIENT_CONFIG(),this.c2e_1.t26_1),this.h2e_1=h,validateHeaders(this.h2e_1),checkExtensions(this.d2e_1,this.h2e_1),this.zb_1=1,(t=executeWithinCallContext(this.d2e_1,this.h2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.i2e_1=t,this.j2e_1=HttpClientCall_init_$Create$(this.c2e_1,this.h2e_1,this.i2e_1),this.k2e_1=this.j2e_1.n27(),this.c2e_1.s26_1.e25(get_HttpResponseReceived(),this.k2e_1),get_job(this.k2e_1.am()).cn(HttpClientEngine$install$slambda$lambda(this.c2e_1,this.k2e_1)),this.zb_1=2,(t=this.e2e_1.b1s(this.j2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.cc_1}}catch(t){var _=t;if(3===this.ac_1)throw _;this.zb_1=this.ac_1,this.cc_1=_}},protoOf(HttpClientEngine$install$slambda).h27=function(t,n,i){var e=new HttpClientEngine$install$slambda(this.c2e_1,this.d2e_1,i);return e.e2e_1=t,e.f2e_1=n,e},protoOf(HttpClientEngine$executeWithinCallContext$slambda).y2e=function(t,n){var i=this.w1g(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpClientEngine$executeWithinCallContext$slambda).zc=function(t,n){return this.y2e(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpClientEngine$executeWithinCallContext$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,_get_closed__iwkfs1(this.v2e_1))throw new ClientEngineClosedException;if(this.zb_1=1,(t=this.v2e_1.z2e(this.w2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t;case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpClientEngine$executeWithinCallContext$slambda).w1g=function(t,n){var i=new HttpClientEngine$executeWithinCallContext$slambda(this.v2e_1,this.w2e_1,n);return i.x2e_1=t,i},protoOf($executeWithinCallContextCOROUTINE$4).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.zb_1=1,(t=createCallContext(this.i2d_1,this.j2d_1.q2d_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.k2d_1=t,this.l2d_1=this.k2d_1.jg(new KtorCallContextElement(this.k2d_1)),this.zb_1=2,(t=async(this.i2d_1,this.l2d_1,VOID,HttpClientEngine$executeWithinCallContext$slambda_0(this.i2d_1,this.j2d_1,null)).qo(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.cc_1}}catch(t){var n=t;if(3===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(ClientEngineClosedException).b6=function(){return this.a2f_1},protoOf(HttpClientEngineBase).f2f=function(){return this.d2f_1},protoOf(HttpClientEngineBase).am=function(){var t=this.e2f_1;return coroutineContext$factory(),t.h2()},protoOf(HttpClientEngineBase).z1i=function(){if(!this.c2f_1.atomicfu$compareAndSet(!1,!0))return Unit_instance;var t=this.am().hc(Key_instance),n=null!=t&&isInterface(t,CompletableJob)?t:null;if(null==n)return Unit_instance;n.es()},protoOf(KtorCallContextElement).g2=function(){return Companion_instance_1},protoOf(Plugin).g2=function(){return this.s2f_1},protoOf(Plugin).t2f=function(t){return new BodyProgress},protoOf(Plugin).r29=function(t){return this.t2f(t)},protoOf(Plugin).u2f=function(t,n){handle(t,n)},protoOf(Plugin).s29=function(t,n){return this.u2f(t instanceof BodyProgress?t:THROW_CCE(),n)},protoOf(BodyProgress$handle$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(BodyProgress$handle$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=2;var n,i=this.d2g_1.x1s_1.r28_1.f1o(get_UploadProgressListenerAttributeKey());if(null==i)return Unit_instance;n=i,this.f2g_1=n;var e=this.e2g_1;if(this.g2g_1=new ObservableContent(e instanceof OutgoingContent?e:THROW_CCE(),this.d2g_1.x1s_1.q28_1,this.f2g_1),this.zb_1=1,(t=this.d2g_1.b1s(this.g2g_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.cc_1}}catch(t){var r=t;if(2===this.ac_1)throw r;this.zb_1=this.ac_1,this.cc_1=r}},protoOf(BodyProgress$handle$slambda).h27=function(t,n,i){var e=new BodyProgress$handle$slambda(i);return e.d2g_1=t,e.e2g_1=n,e},protoOf(BodyProgress$handle$slambda_1).t2g=function(t,n,i){var e=this.u2g(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(BodyProgress$handle$slambda_1).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.t2g(e,n instanceof HttpResponse?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda_1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=2;var n,i=this.q2g_1.v2b().w2a().b2a().f1o(get_DownloadProgressListenerAttributeKey());if(null==i)return Unit_instance;if(n=i,this.r2g_1=n,this.s2g_1=withObservableDownload(this.q2g_1,this.r2g_1),this.zb_1=1,(t=this.p2g_1.b1s(this.s2g_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.cc_1}}catch(t){var e=t;if(2===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},protoOf(BodyProgress$handle$slambda_1).u2g=function(t,n,i){var e=new BodyProgress$handle$slambda_1(i);return e.p2g_1=t,e.q2g_1=n,e},protoOf(RedirectResponseException).a6=function(){return this.x2g_1},protoOf(ClientRequestException).a6=function(){return this.z2g_1},protoOf(ServerResponseException).a6=function(){return this.b2h_1},protoOf(addDefaultResponseValidation$lambda$slambda).s2h=function(t,n){var i=this.t2h(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(addDefaultResponseValidation$lambda$slambda).zc=function(t,n){return this.s2h(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(addDefaultResponseValidation$lambda$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=5,this.l2h_1=this.k2h_1.v2b().b2a().e1o(get_ExpectSuccessAttributeKey()),!this.l2h_1)return get_LOGGER().s1t("Skipping default response validation for "+this.k2h_1.v2b().w2a().z2a()),Unit_instance;if(this.m2h_1=this.k2h_1.a2b().n22_1,this.n2h_1=this.k2h_1.v2b(),this.m2h_1<300||this.n2h_1.b2a().g1o(get_ValidateMark()))return Unit_instance;if(this.zb_1=1,(t=save(this.n2h_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.o2h_1=t,this.o2h_1.b2a().h1o(get_ValidateMark(),Unit_instance),this.p2h_1=this.o2h_1,this.q2h_1=this.p2h_1.n27(),this.ac_1=3,this.zb_1=2,(t=bodyAsText(this.q2h_1,VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.r2h_1=t,this.ac_1=5,this.zb_1=4;continue t;case 3:if(this.ac_1=5,this.cc_1 instanceof MalformedInputException){this.cc_1,this.r2h_1="",this.zb_1=4;continue t}throw this.cc_1;case 4:this.ac_1=5;var n=this.r2h_1,i=this.m2h_1,e=300<=i&&i<=399?new RedirectResponseException(this.q2h_1,n):400<=i&&i<=499?new ClientRequestException(this.q2h_1,n):500<=i&&i<=599?new ServerResponseException(this.q2h_1,n):new ResponseException(this.q2h_1,n);throw get_LOGGER().s1t("Default response validation for "+this.k2h_1.v2b().w2a().z2a()+" failed with "+e),e;case 5:throw this.cc_1}}catch(t){var r=t;if(5===this.ac_1)throw r;this.zb_1=this.ac_1,this.cc_1=r}},protoOf(addDefaultResponseValidation$lambda$slambda).t2h=function(t,n){var i=new addDefaultResponseValidation$lambda$slambda(n);return i.k2h_1=t,i},protoOf(defaultTransformers$1$content$1).q24=function(){return this.z2h_1},protoOf(defaultTransformers$1$content$1).r24=function(){return this.a2i_1},protoOf(defaultTransformers$1$content$1).x24=function(){return this.b2i_1},protoOf(defaultTransformers$1$content$2).r24=function(){return this.d2i_1},protoOf(defaultTransformers$1$content$2).q24=function(){return this.e2i_1},protoOf(defaultTransformers$1$content$2).t24=function(){return this.f2i_1},protoOf(defaultTransformers$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(defaultTransformers$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=3,null==this.o2i_1.x1s_1.o28_1.y1o(HttpHeaders_getInstance().q1v_1)&&this.o2i_1.x1s_1.o28_1.k1q(HttpHeaders_getInstance().q1v_1,"*/*"),this.q2i_1=contentType(this.o2i_1.x1s_1);var n,i=this.p2i_1;if("string"==typeof i){var e=this.q2i_1;n=new TextContent(this.p2i_1,null==e?Text_getInstance().z1u_1:e)}else n=isByteArray(i)?new defaultTransformers$1$content$1(this.q2i_1,this.p2i_1):isInterface(i,ByteReadChannel)?new defaultTransformers$1$content$2(this.o2i_1,this.q2i_1,this.p2i_1):i instanceof OutgoingContent?this.p2i_1:platformRequestDefaultTransform(this.q2i_1,this.o2i_1.x1s_1,this.p2i_1);this.r2i_1=n;var r=this.r2i_1;if(null!=(null==r?null:r.q24())){if(this.o2i_1.x1s_1.o28_1.m1q(HttpHeaders_getInstance().i1w_1),get_LOGGER_0().s1t("Transformed with default transformers request body for "+this.o2i_1.x1s_1.m28_1+" from "+getKClassFromExpression(this.p2i_1)),this.zb_1=1,(t=this.o2i_1.b1s(this.r2i_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.zb_1=2;continue t;case 1:this.zb_1=2;continue t;case 2:return Unit_instance;case 3:throw this.cc_1}}catch(t){var s=t;if(3===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},protoOf(defaultTransformers$slambda).h27=function(t,n,i){var e=new defaultTransformers$slambda(i);return e.o2i_1=t,e.p2i_1=n,e},protoOf(defaultTransformers$slambda$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(defaultTransformers$slambda$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(defaultTransformers$slambda$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=5,this.zb_1=1;continue t;case 1:this.ac_1=4,this.ac_1=3,this.zb_1=2;var n=this.c2j_1.by();if(Companion_getInstance_0(),(t=copyTo(this.a2j_1,n,new Long(-1,2147483647),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.d2j_1=Unit_instance,this.ac_1=5,this.zb_1=6;continue t;case 3:if(this.ac_1=4,this.cc_1 instanceof CancellationException){var i=this.cc_1;throw cancel(this.b2j_1,i),i}if(this.cc_1 instanceof Error){var e=this.cc_1;throw cancel_0(this.b2j_1,"Receive failed",e),e}throw this.cc_1;case 4:this.ac_1=5;var r=this.cc_1;throw complete(this.b2j_1),r;case 5:throw this.cc_1;case 6:return this.ac_1=5,complete(this.b2j_1),Unit_instance}}catch(t){var s=t;if(5===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},protoOf(defaultTransformers$slambda$slambda).u2c=function(t,n){var i=new defaultTransformers$slambda$slambda(this.a2j_1,this.b2j_1,n);return i.c2j_1=t,i},protoOf(defaultTransformers$slambda_1).a28=function(t,n,i){var e=this.b28(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(defaultTransformers$slambda_1).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.a28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda_1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=11,this.o2j_1=this.n2j_1.oe(),this.p2j_1=this.n2j_1.pe();var n=this.p2j_1;if(!isInterface(n,ByteReadChannel))return Unit_instance;if(this.q2j_1=this.m2j_1.x1s_1.n27(),this.r2j_1=this.o2j_1.n1t_1,this.r2j_1.equals(getKClass(Unit))){if(cancel_1(this.p2j_1),this.zb_1=9,(t=this.m2j_1.b1s(new HttpResponseContainer(this.o2j_1,Unit_instance),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.r2j_1.equals(PrimitiveClasses_getInstance().a7())){if(this.zb_1=7,(t=this.p2j_1.u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.r2j_1.equals(getKClass(ByteReadPacket))||this.r2j_1.equals(getKClass(Input))){if(this.zb_1=5,(t=this.p2j_1.u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.r2j_1.equals(PrimitiveClasses_getInstance().i7())){if(this.zb_1=3,(t=toByteArray(this.p2j_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.r2j_1.equals(getKClass(ByteReadChannel))){this.t2j_1=Job(this.q2j_1.am().hc(Key_instance));var i=this.q2j_1.am(),e=writer(this.m2j_1,i,VOID,defaultTransformers$slambda$slambda_0(this.p2j_1,this.q2j_1,null));if(e.cn(defaultTransformers$slambda$lambda(this.t2j_1)),this.u2j_1=e.by(),this.zb_1=2,(t=this.m2j_1.b1s(new HttpResponseContainer(this.o2j_1,this.u2j_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.r2j_1.equals(getKClass(HttpStatusCode))){if(cancel_1(this.p2j_1),this.zb_1=1,(t=this.m2j_1.b1s(new HttpResponseContainer(this.o2j_1,this.q2j_1.a2b()),this))===get_COROUTINE_SUSPENDED())return t;continue t}this.s2j_1=null,this.zb_1=10;continue t;case 1:case 2:case 4:case 6:case 8:case 9:this.s2j_1=t,this.zb_1=10;continue t;case 3:if(this.v2j_1=t,this.w2j_1=contentLength(this.q2j_1),this.x2j_1=!PlatformUtils_getInstance().t1p_1&&null==this.q2j_1.s1z().y1o(HttpHeaders_getInstance().d1w_1),this.y2j_1=!this.m2j_1.x1s_1.w2a().w2b().equals(Companion_getInstance_1().y1z_1),this.x2j_1&&this.y2j_1&&null!=this.w2j_1&&this.w2j_1.z9(new Long(0,0))>0&&this.v2j_1.length!==this.w2j_1.ia()){var r="Expected "+toString_0(this.w2j_1)+", actual "+this.v2j_1.length;throw IllegalStateException_init_$Create$(toString(r))}if(this.zb_1=4,(t=this.m2j_1.b1s(new HttpResponseContainer(this.o2j_1,this.v2j_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.z2j_1=t,this.a2k_1=new HttpResponseContainer(this.o2j_1,this.z2j_1),this.zb_1=6,(t=this.m2j_1.b1s(this.a2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:if(this.b2k_1=t,this.c2k_1=this.b2k_1.c1k(),this.d2k_1=toInt(this.c2k_1),this.e2k_1=new HttpResponseContainer(this.o2j_1,this.d2k_1),this.zb_1=8,(t=this.m2j_1.b1s(this.e2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 10:return null!=this.s2j_1&&get_LOGGER_0().s1t("Transformed with default transformers response body for "+this.m2j_1.x1s_1.w2a().z2a()+" to "+this.o2j_1.n1t_1),Unit_instance;case 11:throw this.cc_1}}catch(t){var s=t;if(11===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},protoOf(defaultTransformers$slambda_1).b28=function(t,n,i){var e=new defaultTransformers$slambda_1(i);return e.m2j_1=t,e.n2j_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpCallValidator$Companion$install$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=5,this.ac_1=3;var n=get_ExpectSuccessAttributeKey();if(this.r2k_1.x1s_1.r28_1.j1o(n,HttpCallValidator$Companion$install$slambda$lambda(this.q2k_1)),this.zb_1=1,(t=this.r2k_1.b1s(this.s2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ac_1=5,this.zb_1=2;continue t;case 2:return this.ac_1=5,Unit_instance;case 3:if(this.ac_1=5,this.cc_1 instanceof Error){if(this.t2k_1=this.cc_1,this.u2k_1=unwrapCancellationException(this.t2k_1),this.zb_1=4,(t=processException(this.q2k_1,this.u2k_1,HttpRequest(this.r2k_1.x1s_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.cc_1;case 4:throw this.u2k_1;case 5:throw this.cc_1}}catch(t){var i=t;if(5===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(HttpCallValidator$Companion$install$slambda).h27=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda(this.q2k_1,i);return e.r2k_1=t,e.s2k_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_1).a28=function(t,n,i){var e=this.b28(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpCallValidator$Companion$install$slambda_1).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.a28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=5,this.ac_1=3,this.zb_1=1,(t=this.e2l_1.b1s(this.f2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ac_1=5,this.zb_1=2;continue t;case 2:return this.ac_1=5,Unit_instance;case 3:if(this.ac_1=5,this.cc_1 instanceof Error){if(this.g2l_1=this.cc_1,this.h2l_1=unwrapCancellationException(this.g2l_1),this.zb_1=4,(t=processException(this.d2l_1,this.h2l_1,this.e2l_1.x1s_1.w2a(),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.cc_1;case 4:throw this.h2l_1;case 5:throw this.cc_1}}catch(t){var n=t;if(5===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_1).b28=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_1(this.d2l_1,i);return e.e2l_1=t,e.f2l_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_3).u2l=function(t,n,i){var e=this.v2l(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpCallValidator$Companion$install$slambda_3).ti=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.u2l(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_3).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.zb_1=1,(t=this.r2l_1.p29(this.s2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.t2l_1=t,this.zb_1=2,(t=validateResponse(this.q2l_1,this.t2l_1.n27(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return this.t2l_1;case 3:throw this.cc_1}}catch(t){var n=t;if(3===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_3).v2l=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_3(this.q2l_1,i);return e.r2l_1=t,e.s2l_1=n,e},protoOf(Config).x2h=function(t){this.u2h_1.s(t)},protoOf(Companion_1).g2=function(){return this.z2m_1},protoOf(Companion_1).a2n=function(t){var n=new Config;t(n);var i=n;return new HttpCallValidator(reversed(i.u2h_1),reversed(i.v2h_1),i.w2h_1)},protoOf(Companion_1).r29=function(t){return this.a2n(t)},protoOf(Companion_1).b2n=function(t,n){var i=Phases_getInstance().k2f_1;n.m26_1.b1t(i,HttpCallValidator$Companion$install$slambda_0(t,null));var e=new PipelinePhase("BeforeReceive");n.n26_1.a1t(Phases_getInstance_1().k29_1,e),n.n26_1.b1t(e,HttpCallValidator$Companion$install$slambda_2(t,null)),plugin(n,Plugin_getInstance_3()).e2n(HttpCallValidator$Companion$install$slambda_4(t,null))},protoOf(Companion_1).s29=function(t,n){return this.b2n(t instanceof HttpCallValidator?t:THROW_CCE(),n)},protoOf($validateResponseCOROUTINE$5).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=4,get_LOGGER_1().s1t("Validating response for request "+this.f2m_1.v2b().w2a().z2a()),this.g2m_1=this.e2m_1.f2k_1,this.h2m_1=this.g2m_1.v(),this.zb_1=1;continue t;case 1:if(!this.h2m_1.w()){this.zb_1=3;continue t}if(this.i2m_1=this.h2m_1.y(),this.zb_1=2,(t=this.i2m_1(this.f2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.zb_1=1;continue t;case 3:return Unit_instance;case 4:throw this.cc_1}}catch(t){var n=t;if(4===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf($processExceptionCOROUTINE$6).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6,get_LOGGER_1().s1t("Processing exception "+this.s2m_1+" for request "+this.t2m_1.z2a()),this.u2m_1=this.r2m_1.g2k_1,this.v2m_1=this.u2m_1.v(),this.zb_1=1;continue t;case 1:if(!this.v2m_1.w()){this.zb_1=5;continue t}if(this.w2m_1=this.v2m_1.y(),this.x2m_1=this.w2m_1,this.y2m_1=this.x2m_1,this.y2m_1 instanceof ExceptionHandlerWrapper){if(this.zb_1=3,(t=this.x2m_1.g2n_1(this.s2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.y2m_1 instanceof RequestExceptionHandlerWrapper){if(this.zb_1=2,(t=this.x2m_1.f2n_1(this.s2m_1,this.t2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.zb_1=4;continue t;case 2:case 3:this.zb_1=4;continue t;case 4:this.zb_1=1;continue t;case 5:return Unit_instance;case 6:throw this.cc_1}}catch(t){var n=t;if(6===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpRequest$1).v2b=function(){throw IllegalStateException_init_$Create$(toString("Call is not initialized"))},protoOf(HttpRequest$1).w2b=function(){return this.h2n_1},protoOf(HttpRequest$1).z2a=function(){return this.i2n_1},protoOf(HttpRequest$1).b2a=function(){return this.j2n_1},protoOf(HttpRequest$1).s1z=function(){return this.k2n_1},protoOf(HttpPlainText$Plugin$install$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpPlainText$Plugin$install$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.u2n_1.b2o(this.v2n_1.x1s_1),"string"!=typeof this.w2n_1)return Unit_instance;if(this.x2n_1=contentType(this.v2n_1.x1s_1),null!=this.x2n_1&&this.x2n_1.j1v_1!==Text_getInstance().z1u_1.j1v_1)return Unit_instance;if(this.zb_1=1,(t=this.v2n_1.b1s(wrapContent(this.u2n_1,this.v2n_1.x1s_1,this.w2n_1,this.x2n_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpPlainText$Plugin$install$slambda).h27=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda(this.u2n_1,i);return e.v2n_1=t,e.w2n_1=n,e},protoOf(HttpPlainText$Plugin$install$slambda_1).a28=function(t,n,i){var e=this.b28(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpPlainText$Plugin$install$slambda_1).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.a28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda_1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:var n;if(this.ac_1=3,this.n2o_1=this.m2o_1.oe(),this.o2o_1=this.m2o_1.pe(),this.n2o_1.n1t_1.equals(PrimitiveClasses_getInstance().e7())){var i=this.o2o_1;n=!isInterface(i,ByteReadChannel)}else n=!0;if(n)return Unit_instance;if(this.zb_1=1,(t=this.o2o_1.u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.p2o_1=t,this.q2o_1=this.k2o_1.r2o(this.l2o_1.x1s_1,this.p2o_1),this.zb_1=2,(t=this.l2o_1.b1s(new HttpResponseContainer(this.n2o_1,this.q2o_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.cc_1}}catch(t){var e=t;if(3===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},protoOf(HttpPlainText$Plugin$install$slambda_1).b28=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda_1(this.k2o_1,i);return e.l2o_1=t,e.m2o_1=n,e},protoOf(Plugin_0).g2=function(){return this.w2o_1},protoOf(Plugin_0).x2o=function(t){var n=new Config_0;t(n);var i=n;return new HttpPlainText(i.s2o_1,i.t2o_1,i.u2o_1,i.v2o_1)},protoOf(Plugin_0).r29=function(t){return this.x2o(t)},protoOf(Plugin_0).y2o=function(t,n){var i=Phases_getInstance().n2f_1;n.m26_1.b1t(i,HttpPlainText$Plugin$install$slambda_0(t,null));var e=Phases_getInstance_1().m29_1;n.n26_1.b1t(e,HttpPlainText$Plugin$install$slambda_2(t,null))},protoOf(Plugin_0).s29=function(t,n){return this.y2o(t instanceof HttpPlainText?t:THROW_CCE(),n)},protoOf(sam$kotlin_Comparator$0).l9=function(t,n){return this.z2o_1(t,n)},protoOf(sam$kotlin_Comparator$0).compare=function(t,n){return this.l9(t,n)},protoOf(HttpPlainText).r2o=function(t,n){var i=charset_0(t.n27()),e=null==i?this.y2n_1:i;return get_LOGGER_2().s1t("Reading response body for "+t.w2a().z2a()+" as String with charset "+e),readText(n,e)},protoOf(HttpPlainText).b2o=function(t){if(null!=t.o28_1.y1o(HttpHeaders_getInstance().r1v_1))return Unit_instance;get_LOGGER_2().s1t("Adding Accept-Charset="+this.a2o_1+" to "+t.m28_1),t.o28_1.i1q(HttpHeaders_getInstance().r1v_1,this.a2o_1)},protoOf(HttpRedirect$Plugin$install$slambda).u2l=function(t,n,i){var e=this.v2l(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpRedirect$Plugin$install$slambda).ti=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.u2l(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpRedirect$Plugin$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.zb_1=1,(t=this.d2q_1.p29(this.e2q_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.f2q_1=t,this.b2q_1.g2q_1&&!get_ALLOWED_FOR_REDIRECT().r(this.f2q_1.w2a().w2b()))return this.f2q_1;if(this.zb_1=2,(t=handleCall(this.d2q_1,Plugin_getInstance_1(),this.e2q_1,this.f2q_1,this.b2q_1.h2q_1,this.c2q_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.cc_1}}catch(t){var n=t;if(3===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpRedirect$Plugin$install$slambda).v2l=function(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(this.b2q_1,this.c2q_1,i);return e.d2q_1=t,e.e2q_1=n,e},protoOf($handleCallCOROUTINE$7).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,!isRedirect(this.l2p_1.n27().a2b()))return this.l2p_1;this.o2p_1=this.l2p_1,this.p2p_1=this.k2p_1,this.q2p_1=this.l2p_1.w2a().z2a().f23_1,this.r2p_1=get_authority(this.l2p_1.w2a().z2a()),this.zb_1=1;continue t;case 1:this.n2p_1.s26_1.e25(this.i2p_1.j2q_1,this.o2p_1.n27()),this.s2p_1=this.o2p_1.n27().s1z().y1o(HttpHeaders_getInstance().e1x_1),get_LOGGER_3().s1t("Received redirect response to "+this.s2p_1+" for request "+this.k2p_1.m28_1);var n=new HttpRequestBuilder;n.l2e(this.p2p_1),n.m28_1.c23_1.b1();var i=this.s2p_1;if(null==i||takeFrom(n.m28_1,i),!this.m2p_1&&isSecure(this.q2p_1)&&!isSecure(n.m28_1.t22_1))return get_LOGGER_3().s1t("Can not redirect "+this.k2p_1.m28_1+" because of security downgrade"),this.o2p_1;if(this.r2p_1!==get_authority_0(n.m28_1)&&(n.o28_1.m1q(HttpHeaders_getInstance().z1v_1),get_LOGGER_3().s1t("Removing Authorization header from redirect for "+this.k2p_1.m28_1)),this.p2p_1=n,this.zb_1=2,(t=this.j2p_1.p29(this.p2p_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.o2p_1=t,!isRedirect(this.o2p_1.n27().a2b()))return this.o2p_1;this.zb_1=1;continue t;case 3:throw this.cc_1;case 4:return Unit_instance}}catch(t){var e=t;if(3===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},protoOf(Plugin_1).g2=function(){return this.i2q_1},protoOf(Plugin_1).m2q=function(t){var n=new Config_1;t(n);var i=n;return new HttpRedirect(i.k2q_1,i.l2q_1)},protoOf(Plugin_1).r29=function(t){return this.m2q(t)},protoOf(Plugin_1).n2q=function(t,n){plugin(n,Plugin_getInstance_3()).e2n(HttpRedirect$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_1).s29=function(t,n){return this.n2q(t instanceof HttpRedirect?t:THROW_CCE(),n)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpRequestLifecycle$Plugin$install$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6,this.z2q_1=SupervisorJob(this.x2q_1.x1s_1.q28_1),attachToClientEngineJob(this.z2q_1,ensureNotNull(this.w2q_1.l26_1.hc(Key_instance))),this.zb_1=1;continue t;case 1:if(this.ac_1=4,this.ac_1=3,this.x2q_1.x1s_1.q28_1=this.z2q_1,this.zb_1=2,(t=this.x2q_1.c1s(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.a2r_1=Unit_instance,this.ac_1=6,this.zb_1=5;continue t;case 3:if(this.ac_1=4,this.cc_1 instanceof Error){var n=this.cc_1;throw this.z2q_1.ds(n),n}throw this.cc_1;case 4:this.ac_1=6;var i=this.cc_1;throw this.z2q_1.es(),i;case 5:return this.ac_1=6,this.z2q_1.es(),Unit_instance;case 6:throw this.cc_1}}catch(t){var e=t;if(6===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},protoOf(HttpRequestLifecycle$Plugin$install$slambda).h27=function(t,n,i){var e=new HttpRequestLifecycle$Plugin$install$slambda(this.w2q_1,i);return e.x2q_1=t,e.y2q_1=n,e},protoOf(Plugin_2).g2=function(){return this.b2r_1},protoOf(Plugin_2).t2f=function(t){return new HttpRequestLifecycle},protoOf(Plugin_2).r29=function(t){return this.t2f(t)},protoOf(Plugin_2).c2r=function(t,n){var i=Phases_getInstance().k2f_1;n.m26_1.b1t(i,HttpRequestLifecycle$Plugin$install$slambda_0(n,null))},protoOf(Plugin_2).s29=function(t,n){return this.c2r(t instanceof HttpRequestLifecycle?t:THROW_CCE(),n)},protoOf(HttpSend$Plugin$install$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpSend$Plugin$install$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpSend$Plugin$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,!(this.o2r_1 instanceof OutgoingContent)){var n=trimMargin("\n|Fail to prepare request body for sending. \n|The body type is: "+getKClassFromExpression(this.o2r_1)+", with Content-Type: "+contentType(this.n2r_1.x1s_1)+".\n|\n|If you expect serialized body, please check that you have installed the corresponding plugin(like `ContentNegotiation`) and set `Content-Type` header.");throw IllegalStateException_init_$Create$(toString(n))}var i=this.n2r_1.x1s_1,e=this.o2r_1;if(null==e){i.p28_1=NullBody_instance;var r,s=JsType_instance,o=getKClass(OutgoingContent);try{r=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;r=null}i.m2e(typeInfoImpl(s,o,r))}else if(e instanceof OutgoingContent)i.p28_1=e,i.m2e(null);else{i.p28_1=e;var u,a=JsType_instance,h=getKClass(OutgoingContent);try{u=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;u=null}i.m2e(typeInfoImpl(a,h,u))}this.p2r_1=new DefaultSender(this.l2r_1.c2n_1,this.m2r_1),this.q2r_1=this.p2r_1;for(var _=downTo(get_lastIndex(this.l2r_1.d2n_1),0).v();_.w();){var l=_.y(),c=this.l2r_1.d2n_1.h1(l);this.q2r_1=new InterceptedSender(c,this.q2r_1)}if(this.zb_1=1,(t=this.q2r_1.p29(this.n2r_1.x1s_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.r2r_1=t,this.zb_1=2,(t=this.n2r_1.b1s(this.r2r_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.cc_1}}catch(t){var f=t;if(3===this.ac_1)throw f;this.zb_1=this.ac_1,this.cc_1=f}},protoOf(HttpSend$Plugin$install$slambda).h27=function(t,n,i){var e=new HttpSend$Plugin$install$slambda(this.l2r_1,this.m2r_1,i);return e.n2r_1=t,e.o2r_1=n,e},protoOf($executeCOROUTINE$8).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=2;var n=this.a2s_1.f2s_1;if(null==n||cancel(n),this.a2s_1.e2s_1>=this.a2s_1.c2s_1)throw new SendCountExceedException("Max send count "+this.a2s_1.c2s_1+" exceeded. Consider increasing the property maxSendCount if more is required.");var i=this.a2s_1;if(i.e2s_1=i.e2s_1+1|0,this.zb_1=1,(t=this.a2s_1.d2s_1.o26_1.w1s(this.b2s_1,this.b2s_1.p28_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var e=t instanceof HttpClientCall?t:null;if(null==e){var r="Failed to execute send pipeline. Expected [HttpClientCall], but received "+toString(t);throw IllegalStateException_init_$Create$(toString(r))}var s=e;return this.a2s_1.f2s_1=s,s;case 2:throw this.cc_1}}catch(t){var o=t;if(2===this.ac_1)throw o;this.zb_1=this.ac_1,this.cc_1=o}},protoOf(Plugin_3).g2=function(){return this.h2s_1},protoOf(Plugin_3).i2s=function(t){var n=new Config_2;return t(n),new HttpSend(n.g2s_1)},protoOf(Plugin_3).r29=function(t){return this.i2s(t)},protoOf(Plugin_3).j2s=function(t,n){var i=Phases_getInstance().o2f_1;n.m26_1.b1t(i,HttpSend$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_3).s29=function(t,n){return this.j2s(t instanceof HttpSend?t:THROW_CCE(),n)},protoOf(InterceptedSender).p29=function(t,n){return this.k2s_1(this.l2s_1,t,n)},protoOf(DefaultSender).p29=function(t,n){var i=new $executeCOROUTINE$8(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpSend).e2n=function(t){this.d2n_1.s(t)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpTimeout$Plugin$install$slambda$slambda).zc=function(t,n){return this.v1g(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=delay(this.b2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=HttpRequestTimeoutException_init_$Create$(this.c2t_1);return get_LOGGER_5().s1t("Request timeout: "+this.c2t_1.m28_1),cancel_2(this.d2t_1,ensureNotNull(n.message),n),Unit_instance;case 2:throw this.cc_1}}catch(t){var i=t;if(2===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(HttpTimeout$Plugin$install$slambda$slambda).w1g=function(t,n){var i=new HttpTimeout$Plugin$install$slambda$slambda(this.b2t_1,this.c2t_1,this.d2t_1,n);return i.e2t_1=t,i},protoOf(HttpTimeout$Plugin$install$slambda).u2l=function(t,n,i){var e=this.v2l(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpTimeout$Plugin$install$slambda).ti=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.u2l(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpTimeout$Plugin$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=4,this.r2t_1=isWebsocket(this.q2t_1.m28_1.t22_1),this.r2t_1||this.q2t_1.p28_1 instanceof ClientUpgradeContent){if(this.zb_1=3,(t=this.p2t_1.p29(this.q2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.zb_1=1;continue t;case 1:this.s2t_1=this.q2t_1.t2t(Plugin_getInstance_4()),null==this.s2t_1&&hasNotNullTimeouts(this.n2t_1)&&(this.s2t_1=HttpTimeoutCapabilityConfiguration_init_$Create$(),this.q2t_1.u2t(Plugin_getInstance_4(),this.s2t_1));var n=this.s2t_1;if(null==n);else n:do{var i=n.v2t();n.q2s(null==i?this.n2t_1.x2t_1:i);var e=n.z2t();n.r2s(null==e?this.n2t_1.y2t_1:e);var r=n.a2u();n.p2s(null==r?this.n2t_1.w2t_1:r);var s=n.a2u(),o=null==s?this.n2t_1.w2t_1:s;if(null==o||equals(o,new Long(-1,2147483647)))break n;var u=this.q2t_1.q28_1,a=launch(this.o2t_1,VOID,VOID,HttpTimeout$Plugin$install$slambda$slambda_0(o,this.q2t_1,u,null));this.q2t_1.q28_1.cn(HttpTimeout$Plugin$install$slambda$lambda(a))}while(0);if(this.zb_1=2,(t=this.p2t_1.p29(this.q2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:case 3:return t;case 4:throw this.cc_1}}catch(t){var h=t;if(4===this.ac_1)throw h;this.zb_1=this.ac_1,this.cc_1=h}},protoOf(HttpTimeout$Plugin$install$slambda).v2l=function(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(this.n2t_1,this.o2t_1,i);return e.p2t_1=t,e.q2t_1=n,e},protoOf(HttpTimeoutCapabilityConfiguration).p2s=function(t){this.m2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).a2u=function(){return this.m2s_1},protoOf(HttpTimeoutCapabilityConfiguration).q2s=function(t){this.n2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).v2t=function(){return this.n2s_1},protoOf(HttpTimeoutCapabilityConfiguration).r2s=function(t){this.o2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).z2t=function(){return this.o2s_1},protoOf(HttpTimeoutCapabilityConfiguration).o1d=function(){return new HttpTimeout(this.a2u(),this.v2t(),this.z2t())},protoOf(HttpTimeoutCapabilityConfiguration).equals=function(t){return!!(this===t||null!=t&&getKClassFromExpression(this).equals(getKClassFromExpression(t))&&(t instanceof HttpTimeoutCapabilityConfiguration||THROW_CCE(),equals(this.m2s_1,t.m2s_1)&&equals(this.n2s_1,t.n2s_1)&&equals(this.o2s_1,t.o2s_1)))},protoOf(HttpTimeoutCapabilityConfiguration).hashCode=function(){var t=this.m2s_1,n=null==t?null:t.hashCode(),i=null==n?0:n,e=imul(31,i),r=this.n2s_1,s=null==r?null:r.hashCode(),o=imul(31,i=e+(null==s?0:s)|0),u=this.o2s_1,a=null==u?null:u.hashCode();return o+(null==a?0:a)|0},protoOf(Plugin_4).g2=function(){return this.b2u_1},protoOf(Plugin_4).d2u=function(t){var n=HttpTimeoutCapabilityConfiguration_init_$Create$();return t(n),n.o1d()},protoOf(Plugin_4).r29=function(t){return this.d2u(t)},protoOf(Plugin_4).e2u=function(t,n){plugin(n,Plugin_getInstance_3()).e2n(HttpTimeout$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_4).s29=function(t,n){return this.e2u(t instanceof HttpTimeout?t:THROW_CCE(),n)},protoOf(DelegatedRequest).v2b=function(){return this.f2u_1},protoOf(DelegatedRequest).b2a=function(){return this.g2u_1.b2a()},protoOf(DelegatedRequest).am=function(){return this.g2u_1.am()},protoOf(DelegatedRequest).s1z=function(){return this.g2u_1.s1z()},protoOf(DelegatedRequest).w2b=function(){return this.g2u_1.w2b()},protoOf(DelegatedRequest).z2a=function(){return this.g2u_1.z2a()},protoOf(DelegatedResponse).v2b=function(){return this.h2u_1},protoOf(DelegatedResponse).x2a=function(){return this.i2u_1},protoOf(DelegatedResponse).am=function(){return this.k2u_1},protoOf(DelegatedResponse).a2b=function(){return this.j2u_1.a2b()},protoOf(DelegatedResponse).g2c=function(){return this.j2u_1.g2c()},protoOf(DelegatedResponse).h2c=function(){return this.j2u_1.h2c()},protoOf(DelegatedResponse).i2c=function(){return this.j2u_1.i2c()},protoOf(DelegatedResponse).s1z=function(){return this.j2u_1.s1z()},protoOf(WebSocketCapability).toString=function(){return"WebSocketCapability"},protoOf(DefaultHttpRequest).v2b=function(){return this.l2u_1},protoOf(DefaultHttpRequest).am=function(){return this.v2b().am()},protoOf(DefaultHttpRequest).w2b=function(){return this.m2u_1},protoOf(DefaultHttpRequest).z2a=function(){return this.n2u_1},protoOf(DefaultHttpRequest).s1z=function(){return this.p2u_1},protoOf(DefaultHttpRequest).b2a=function(){return this.q2u_1},protoOf(HttpRequestBuilder).s1z=function(){return this.o28_1},protoOf(HttpRequestBuilder).m2e=function(t){null!=t?this.r28_1.h1o(get_BodyTypeAttributeKey(),t):this.r28_1.i1o(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).r2u=function(){return this.r28_1.f1o(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).o1d=function(){var t=this.m28_1.o1d(),n=this.n28_1,i=this.o28_1.o1d(),e=this.p28_1,r=e instanceof OutgoingContent?e:null;if(null==r){var s="No request transformation found: "+toString(this.p28_1);throw IllegalStateException_init_$Create$(toString(s))}return new HttpRequestData(t,n,i,r,this.q28_1,this.r28_1)},protoOf(HttpRequestBuilder).l2e=function(t){return this.q28_1=t.q28_1,this.s2u(t)},protoOf(HttpRequestBuilder).s2u=function(t){return this.n28_1=t.n28_1,this.p28_1=t.p28_1,this.m2e(t.r2u()),takeFrom_0(this.m28_1,t.m28_1),this.m28_1.a23_1=this.m28_1.a23_1,appendAll(this.o28_1,t.o28_1),putAll(this.r28_1,t.r28_1),this},protoOf(HttpRequestBuilder).u2t=function(t,n){var i=get_ENGINE_CAPABILITIES_KEY();this.r28_1.j1o(i,HttpRequestBuilder$setCapability$lambda).e2(t,n)},protoOf(HttpRequestBuilder).t2t=function(t){var n=this.r28_1.f1o(get_ENGINE_CAPABILITIES_KEY()),i=null==n?null:n.o2(t);return null==i||null!=i?i:THROW_CCE()},protoOf(HttpRequestData).toString=function(){return"HttpRequestData(url="+this.m2d_1+", method="+this.n2d_1+")"},protoOf(HttpResponseData).toString=function(){return"HttpResponseData=(statusCode="+this.u29_1+")"},protoOf(HttpRequestPipeline).v1s=function(){return this.a2v_1},protoOf(HttpSendPipeline).v1s=function(){return this.i2v_1},protoOf(DefaultHttpResponse).v2b=function(){return this.j2v_1},protoOf(DefaultHttpResponse).am=function(){return this.k2v_1},protoOf(DefaultHttpResponse).a2b=function(){return this.l2v_1},protoOf(DefaultHttpResponse).g2c=function(){return this.m2v_1},protoOf(DefaultHttpResponse).h2c=function(){return this.n2v_1},protoOf(DefaultHttpResponse).i2c=function(){return this.o2v_1},protoOf(DefaultHttpResponse).x2a=function(){return this.p2v_1},protoOf(DefaultHttpResponse).s1z=function(){return this.q2v_1},protoOf(HttpResponse).toString=function(){return"HttpResponse["+get_request(this).z2a()+", "+this.a2b()+"]"},protoOf($bodyAsTextCOROUTINE$13).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=2;var n=charset_0(this.z2v_1);this.b2w_1=null==n?this.a2w_1:n,this.c2w_1=this.b2w_1.o1k(),this.d2w_1=this.z2v_1,this.zb_1=1;var i,e=this.d2w_1.v2b(),r=JsType_instance,s=getKClass(ByteReadPacket);try{i=createKType(getKClass(ByteReadPacket),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;i=null}if((t=e.y2a(typeInfoImpl(r,s,i),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var o=t instanceof ByteReadPacket?t:THROW_CCE();return decode(this.c2w_1,o);case 2:throw this.cc_1}}catch(t){var u=t;if(2===this.ac_1)throw u;this.zb_1=this.ac_1,this.cc_1=u}},protoOf(HttpResponsePipeline).v1s=function(){return this.l2w_1},protoOf(HttpReceivePipeline).v1s=function(){return this.t2w_1},protoOf(HttpResponseContainer).oe=function(){return this.u2a_1},protoOf(HttpResponseContainer).pe=function(){return this.v2a_1},protoOf(HttpResponseContainer).toString=function(){return"HttpResponseContainer(expectedType="+this.u2a_1+", response="+toString(this.v2a_1)+")"},protoOf(HttpResponseContainer).hashCode=function(){var t=this.u2a_1.hashCode();return imul(t,31)+hashCode(this.v2a_1)|0},protoOf(HttpResponseContainer).equals=function(t){if(this===t)return!0;if(!(t instanceof HttpResponseContainer))return!1;var n=t instanceof HttpResponseContainer?t:THROW_CCE();return!!this.u2a_1.equals(n.u2a_1)&&!!equals(this.v2a_1,n.v2a_1)},protoOf(HttpStatement$execute$slambda).f2x=function(t,n){var i=this.t2h(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpStatement$execute$slambda).zc=function(t,n){return this.f2x(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(HttpStatement$execute$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=save(this.e2x_1.v2b(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t.n27();case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpStatement$execute$slambda).t2h=function(t,n){var i=new HttpStatement$execute$slambda(n);return i.e2x_1=t,i},protoOf($executeCOROUTINE$14).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=13,this.zb_1=1;continue t;case 1:if(this.ac_1=12,this.zb_1=2,(t=this.o2x_1.v2x(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.r2x_1=t,this.zb_1=3;continue t;case 3:this.zb_1=4;continue t;case 4:if(this.ac_1=10,this.zb_1=5,(t=this.p2x_1(this.r2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:this.s2x_1=t,this.zb_1=6;continue t;case 6:if(this.t2x_1=this.s2x_1,this.ac_1=12,this.zb_1=7,(t=this.o2x_1.w2x(this.r2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:return this.t2x_1;case 8:if(this.ac_1=12,this.zb_1=9,(t=this.o2x_1.w2x(this.r2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 9:this.q2x_1=Unit_instance,this.ac_1=13,this.zb_1=15;continue t;case 10:if(this.ac_1=12,this.u2x_1=this.cc_1,this.zb_1=11,(t=this.o2x_1.w2x(this.r2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 11:throw this.u2x_1;case 12:if(this.ac_1=13,this.cc_1 instanceof CancellationException)throw unwrapCancellationException(this.cc_1);throw this.cc_1;case 13:throw this.cc_1;case 14:this.ac_1=13,this.zb_1=15;continue t;case 15:return this.q2x_1}}catch(t){var n=t;if(13===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf($executeUnsafeCOROUTINE$15).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=4,this.zb_1=1;continue t;case 1:if(this.ac_1=3,this.h2y_1=(new HttpRequestBuilder).l2e(this.f2y_1.u2w_1),this.zb_1=2,(t=this.f2y_1.v2w_1.p29(this.h2y_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t.n27();case 3:if(this.ac_1=4,this.cc_1 instanceof CancellationException)throw unwrapCancellationException(this.cc_1);throw this.cc_1;case 4:throw this.cc_1;case 5:this.ac_1=4,this.zb_1=6;continue t;case 6:return this.g2y_1}}catch(t){var n=t;if(4===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf($cleanupCOROUTINE$16).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=4;var n=ensureNotNull(this.r2y_1.am().hc(Key_instance));this.s2y_1=isInterface(n,CompletableJob)?n:THROW_CCE(),this.t2y_1=this.s2y_1,this.u2y_1=this.t2y_1,this.u2y_1.es(),this.ac_1=1,cancel_1(this.r2y_1.x2a()),this.ac_1=4,this.zb_1=2;continue t;case 1:if(this.ac_1=4,this.cc_1 instanceof Error){this.v2y_1=this.cc_1,this.zb_1=2;continue t}throw this.cc_1;case 2:if(this.ac_1=4,this.zb_1=3,(t=this.u2y_1.fs(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:return Unit_instance;case 4:throw this.cc_1}}catch(t){var i=t;if(4===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(HttpStatement).w2y=function(t,n){var i=new $executeCOROUTINE$14(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpStatement).x2y=function(t){return this.w2y(HttpStatement$execute$slambda_0(null),t)},protoOf(HttpStatement).v2x=function(t){var n=new $executeUnsafeCOROUTINE$15(this,t);return n.bc_1=Unit_instance,n.cc_1=null,n.mc()},protoOf(HttpStatement).w2x=function(t,n){var i=new $cleanupCOROUTINE$16(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpStatement).toString=function(){return"HttpStatement["+this.u2w_1.m28_1+"]"},protoOf(observable$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(observable$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(observable$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=15,this.zb_1=1;continue t;case 1:this.l2z_1=get_ByteArrayPool(),this.m2z_1=this.l2z_1.x1i(),this.zb_1=2;continue t;case 2:this.zb_1=3;continue t;case 3:this.ac_1=14,this.o2z_1=this.m2z_1;var n=this.g2z_1;this.p2z_1=null==n?new Long(-1,-1):n,this.q2z_1=new Long(0,0),this.zb_1=4;continue t;case 4:if(this.h2z_1.o1a()){this.zb_1=8;continue t}if(this.zb_1=5,(t=readAvailable(this.h2z_1,this.o2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.r2z_1=t,this.zb_1=6,(t=this.j2z_1.by().s1f(this.o2z_1,0,this.r2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var i=this.q2z_1,e=this.r2z_1;if(this.q2z_1=i.db(toLong(e)),this.zb_1=7,(t=this.i2z_1(this.q2z_1,this.p2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:this.zb_1=4;continue t;case 8:if(this.s2z_1=this.h2z_1.y19(),this.j2z_1.by().o11(this.s2z_1),null==this.s2z_1&&this.q2z_1.equals(new Long(0,0))){if(this.zb_1=9,(t=this.i2z_1(this.q2z_1,this.p2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.zb_1=10;continue t;case 9:this.zb_1=10;continue t;case 10:this.n2z_1=Unit_instance,this.ac_1=15,this.zb_1=11;continue t;case 11:this.ac_1=15,this.l2z_1.y1i(this.m2z_1),this.k2z_1=Unit_instance,this.zb_1=13;continue t;case 12:this.ac_1=15,this.l2z_1.y1i(this.m2z_1),this.zb_1=13;continue t;case 13:return Unit_instance;case 14:this.ac_1=15;var r=this.cc_1;throw this.l2z_1.y1i(this.m2z_1),r;case 15:throw this.cc_1}}catch(t){var s=t;if(15===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},protoOf(observable$slambda).u2c=function(t,n){var i=new observable$slambda(this.g2z_1,this.h2z_1,this.i2z_1,n);return i.j2z_1=t,i},protoOf(EmptyContent).r24=function(){return this.w2z_1},protoOf(EmptyContent).toString=function(){return"EmptyContent"},protoOf(Js).x2z=function(t){var n=new HttpClientEngineConfig;return t(n),new JsClientEngine(n)},protoOf(Js).q29=function(t){return this.x2z(t)},protoOf($executeCOROUTINE$17).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=6,this.zb_1=1,(t=callContext(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.w30_1=t,this.x30_1=this.v30_1.r2d_1.e1o(get_CLIENT_CONFIG()),isUpgradeRequest(this.v30_1)){if(this.zb_1=5,(t=executeWebSocketRequest(this.u30_1,this.v30_1,this.w30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.zb_1=2;continue t;case 2:if(this.y30_1=GMTDate(),this.zb_1=3,(t=toRaw(this.v30_1,this.x30_1,this.w30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:if(this.z30_1=t,this.zb_1=4,(t=commonFetch(this.v30_1.m2d_1.toString(),this.z30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:var n=t,i=new HttpStatusCode(n.status,n.statusText),e=mapToKtor(n.headers),r=Companion_getInstance_3().d20_1,s=readBody(CoroutineScope_0(this.w30_1),n);return new HttpResponseData(i,this.y30_1,e,r,s,this.w30_1);case 5:return t;case 6:throw this.cc_1}}catch(t){var o=t;if(6===this.ac_1)throw o;this.zb_1=this.ac_1,this.cc_1=o}},protoOf($executeWebSocketRequestCOROUTINE$18).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=4,this.j30_1=GMTDate(),this.k30_1=this.h30_1.m2d_1.toString(),this.l30_1=createWebSocket(this.g30_1,this.k30_1,this.h30_1.o2d_1),this.ac_1=2,this.zb_1=1,(t=awaitConnection(this.l30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ac_1=4,this.zb_1=3;continue t;case 2:if(this.ac_1=4,this.cc_1 instanceof Error){var n=this.cc_1;throw cancel_3(this.i30_1,CancellationException_init_$Create$_0("Failed to connect to "+this.k30_1,n)),n}throw this.cc_1;case 3:this.ac_1=4;var i=new JsWebSocketSession(this.i30_1,this.l30_1);return new HttpResponseData(Companion_getInstance_2().l20_1,this.j30_1,Companion_getInstance_4().n1v_1,Companion_getInstance_3().d20_1,i,this.i30_1);case 4:throw this.cc_1}}catch(t){var e=t;if(4===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},protoOf(JsClientEngine).a29=function(){return this.e31_1},protoOf(JsClientEngine).t2d=function(){return this.f31_1},protoOf(JsClientEngine).z2e=function(t,n){var i=new $executeCOROUTINE$17(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(toRaw$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(toRaw$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(toRaw$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=this.d32_1.v24(this.e32_1.by(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(toRaw$slambda).u2c=function(t,n){var i=new toRaw$slambda(this.d32_1,n);return i.e32_1=t,i},protoOf($toRawCOROUTINE$19).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=4,this.s31_1={},mergeHeaders(this.p31_1.o2d_1,this.p31_1.p2d_1,toRaw$lambda(this.s31_1)),this.t31_1=this.p31_1.p2d_1,this.t31_1 instanceof ByteArrayContent){this.u31_1=this.t31_1.x24(),this.zb_1=3;continue t}if(this.t31_1 instanceof ReadChannelContent){if(this.zb_1=2,(t=this.t31_1.t24().u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.t31_1 instanceof WriteChannelContent){if(this.zb_1=1,(t=writer(GlobalScope_instance,this.r31_1,VOID,toRaw$slambda_0(this.t31_1,null)).by().u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.u31_1=null,this.zb_1=3;continue t;case 1:var n=t;this.u31_1=readBytes(n),this.zb_1=3;continue t;case 2:var i=t;this.u31_1=readBytes(i),this.zb_1=3;continue t;case 3:var e=this.u31_1;return buildObject(toRaw$lambda_0(this.p31_1,this.s31_1,this.q31_1,e));case 4:throw this.cc_1}}catch(t){var r=t;if(4===this.ac_1)throw r;this.zb_1=this.ac_1,this.cc_1=r}},protoOf(channelFromStream$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(channelFromStream$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(channelFromStream$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6,this.p32_1=this.n32_1.getReader(),this.zb_1=1;continue t;case 1:if(this.ac_1=5,this.zb_1=2,(t=readChunk(this.p32_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.q32_1=t,null==this.q32_1){this.ac_1=6,this.zb_1=8;continue t}this.r32_1=this.q32_1,this.zb_1=3;continue t;case 3:if(this.s32_1=this.r32_1,this.zb_1=4,(t=writeFully(this.o32_1.by(),asByteArray(this.s32_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:this.o32_1.by().q1f(),this.ac_1=6,this.zb_1=7;continue t;case 5:if(this.ac_1=6,this.cc_1 instanceof Error){var n=this.cc_1;throw this.p32_1.cancel(n),n}throw this.cc_1;case 6:throw this.cc_1;case 7:this.ac_1=6,this.zb_1=1;continue t;case 8:return Unit_instance}}catch(t){var i=t;if(6===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(channelFromStream$slambda).u2c=function(t,n){var i=new channelFromStream$slambda(this.n32_1,n);return i.o32_1=t,i},protoOf(readBodyNode$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(readBodyNode$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(readBodyNode$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6;var n,i=this.b33_1.body;if(null==i)throw IllegalStateException_init_$Create$(toString("Fail to get body"));n=i,this.d33_1=n,this.e33_1=Channel(1),this.d33_1.on("data",readBodyNode$slambda$lambda(this.e33_1,this.d33_1)),this.d33_1.on("error",readBodyNode$slambda$lambda_0(this.e33_1,this.c33_1)),this.d33_1.on("end",readBodyNode$slambda$lambda_1(this.e33_1)),this.ac_1=5,this.f33_1=this.e33_1.v(),this.zb_1=1;continue t;case 1:if(this.zb_1=2,(t=this.f33_1.c11(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(!t){this.zb_1=4;continue t}if(this.g33_1=this.f33_1.y(),this.zb_1=3,(t=writeFully(this.c33_1.by(),this.g33_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:this.c33_1.by().q1f(),this.d33_1.resume(),this.zb_1=1;continue t;case 4:this.ac_1=6,this.zb_1=7;continue t;case 5:if(this.ac_1=6,this.cc_1 instanceof Error){var e=this.cc_1;throw this.d33_1.destroy(e),e}throw this.cc_1;case 6:throw this.cc_1;case 7:return this.ac_1=6,Unit_instance}}catch(t){var r=t;if(6===this.ac_1)throw r;this.zb_1=this.ac_1,this.cc_1=r}},protoOf(readBodyNode$slambda).u2c=function(t,n){var i=new readBodyNode$slambda(this.b33_1,n);return i.c33_1=t,i},protoOf(JsWebSocketSession$slambda).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(JsWebSocketSession$slambda).zc=function(t,n){return this.v1g(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(JsWebSocketSession$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=10,this.z33_1=this.x33_1.l33_1,this.zb_1=1;continue t;case 1:this.b34_1=this.z33_1,this.c34_1=null,this.zb_1=2;continue t;case 2:this.zb_1=3;continue t;case 3:this.ac_1=9,this.ac_1=8,this.e34_1=this.b34_1,this.f34_1=this.e34_1.v(),this.zb_1=4;continue t;case 4:if(this.zb_1=5,(t=this.f34_1.c11(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(!t){this.zb_1=6;continue t}var n=this.f34_1.y();switch(n.a26_1.v9_1){case 0:var i=n.b26_1;this.x33_1.i33_1.send(String_0(i));break;case 1:var e=n.b26_1,r=e instanceof Int8Array?e:THROW_CCE(),s=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength|0);this.x33_1.i33_1.send(s);break;case 2:var o;n:do{var u=new BytePacketBuilder;try{writeFully_0(u,n.b26_1),o=u.o1d();break n}catch(t){if(t instanceof Error){var a=t;throw u.ls(),a}throw t}}while(0);var h=o,_=readShort(h),l=h.c1k();this.x33_1.j33_1.bs(new CloseReason(_,l)),isReservedStatusCode(_,this.x33_1)?this.x33_1.i33_1.close():this.x33_1.i33_1.close(_,l)}this.zb_1=4;continue t;case 6:this.d34_1=Unit_instance,this.ac_1=10,this.zb_1=7;continue t;case 7:this.ac_1=10,cancelConsumed(this.b34_1,this.c34_1),this.a34_1=Unit_instance,this.zb_1=12;continue t;case 8:if(this.ac_1=9,this.cc_1 instanceof Error){var c=this.cc_1;throw this.c34_1=c,c}throw this.cc_1;case 9:this.ac_1=10;var f=this.cc_1;throw cancelConsumed(this.b34_1,this.c34_1),f;case 10:throw this.cc_1;case 11:this.ac_1=10,cancelConsumed(this.b34_1,this.c34_1),this.zb_1=12;continue t;case 12:return Unit_instance}}catch(t){var v=t;if(10===this.ac_1)throw v;this.zb_1=this.ac_1,this.cc_1=v}},protoOf(JsWebSocketSession$slambda).w1g=function(t,n){var i=new JsWebSocketSession$slambda(this.x33_1,n);return i.y33_1=t,i},protoOf(JsWebSocketSession).am=function(){return this.h33_1},defineProp(protoOf(DoubleReceiveException),"message",(function(){return this.a6()})),defineProp(protoOf(NoTransformationFoundException),"message",(function(){return this.a6()})),defineProp(protoOf(ClientEngineClosedException),"cause",(function(){return this.b6()})),protoOf(HttpClientEngineBase).t2d=get_supportedCapabilities,protoOf(HttpClientEngineBase).b29=install,protoOf(KtorCallContextElement).hc=get,protoOf(KtorCallContextElement).ig=fold,protoOf(KtorCallContextElement).hg=minusKey,protoOf(KtorCallContextElement).jg=plus,defineProp(protoOf(RedirectResponseException),"message",(function(){return this.a6()})),defineProp(protoOf(ClientRequestException),"message",(function(){return this.a6()})),defineProp(protoOf(ServerResponseException),"message",(function(){return this.a6()})),protoOf(HttpRequest$1).am=get_coroutineContext,Companion_instance_1=new Companion_0,WebSocketCapability_instance=new WebSocketCapability,Companion_instance_4=new Companion_3,Js_instance=new Js,_.$_$=_.$_$||{},_.$_$.a=bodyAsText,_.$_$.b=Plugin_getInstance_4,_.$_$.c=set_expectSuccess,_.$_$.d=HttpRequestBuilder,_.$_$.e=url,_.$_$.f=HttpStatement,_.$_$.g=HttpClient_1,_},__WEBPACK_AMD_DEFINE_ARRAY__=[exports,__webpack_require__(675),__webpack_require__(485),__webpack_require__(754),__webpack_require__(205),__webpack_require__(498),__webpack_require__(229),__webpack_require__(997),__webpack_require__(878)],void 0===(__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof(__WEBPACK_AMD_DEFINE_FACTORY__=factory)?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__)||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},498:function(t,n,i){var e,r,s;r=[n,i(485),i(675),i(754)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r=n.$_$.q,s=i.$_$.w9,o=i.$_$.hb,u=e.$_$.d,a=i.$_$.z9,h=i.$_$.fg,_=i.$_$.rg,l=i.$_$.a5,c=i.$_$.gb,f=i.$_$.f;function v(){}function d(){this.d25_1=new u}function w(){}return o(v,"HandlerRegistration",s,r),o(d,"Events",s,f,f,d),o(w,"EventDefinition",s,f,f,w),c(d).e25=function(t,n){var i=null,e=this.d25_1.q1q(t);if(null==e);else for(var r=e.rt_1;!a(r,e);){if(r instanceof v){var s=r;try{var o=s.i25_1;("function"==typeof o?o:h())(n)}catch(t){if(!(t instanceof Error))throw t;var u,c=t;null==i?u=null:(_(i,c),u=l),null==u&&(i=c)}}r=r.rt_1}if(null!=i)throw i},t.$_$=t.$_$||{},t.$_$.a=w,t.$_$.b=d,t})?e.apply(n,r):e)||(t.exports=s)},997:function(t,n,i){var e,r,s;r=[n,i(675),i(229),i(754)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z=Math.imul,A=n.$_$.f,T=n.$_$.f1,I=i.$_$.f,D=i.$_$.k,j=n.$_$.a5,M=i.$_$.n,N=i.$_$.o,R=i.$_$.m,P=n.$_$.s9,L=n.$_$.r2,F=n.$_$.ad,U=n.$_$.t9,H=n.$_$.lb,V=n.$_$.of,B=n.$_$.sd,Y=n.$_$.w2,W=n.$_$.v2,G=n.$_$.e1,K=n.$_$.u9,X=n.$_$.v9,J=n.$_$.z2,Z=n.$_$.ib,Q=i.$_$.t,tt=n.$_$.uf,nt=n.$_$.n1,it=n.$_$.q9,et=n.$_$.gb,rt=n.$_$.w9,st=n.$_$.hb,ot=n.$_$.u2,ut=n.$_$.za,at=n.$_$.x2,ht=n.$_$.t7,_t=n.$_$.u7,lt=n.$_$.w5,ct=n.$_$.l,ft=n.$_$.y2,vt=n.$_$.q8,dt=n.$_$.b8,wt=n.$_$.s7,pt=n.$_$.o7,mt=n.$_$.p6,gt=n.$_$.eb,bt=n.$_$.jd,$t=n.$_$.d5,yt=n.$_$.qa,kt=n.$_$.od,xt=n.$_$.m7,St=n.$_$.nd,Et=n.$_$.fg,Ct=n.$_$.ma,qt=n.$_$.jf,Ot=n.$_$.cd,zt=n.$_$.fb,At=n.$_$.v7,Tt=n.$_$.z9,It=n.$_$.fa,Dt=n.$_$.ga,jt=i.$_$.e,Mt=n.$_$.vf,Nt=i.$_$.l,Rt=n.$_$.j7,Pt=n.$_$.xd,Lt=n.$_$.kd,Ft=n.$_$.ud,Ut=e.$_$.q,Ht=n.$_$.r6,Vt=e.$_$.p,Bt=e.$_$.o,Yt=e.$_$.s,Wt=e.$_$.r,Gt=n.$_$.q6,Kt=n.$_$.se,Xt=n.$_$.i,Jt=n.$_$.ah,Zt=n.$_$.jh,Qt=n.$_$.m,tn=n.$_$.r5,nn=n.$_$.t2,en=n.$_$.s1,rn=n.$_$.xe,sn=n.$_$.p7,on=n.$_$.tb,un=n.$_$.u,an=n.$_$.pf,hn=n.$_$.ha,_n=n.$_$.td,ln=n.$_$.he,cn=n.$_$.r9,fn=n.$_$.ee,vn=n.$_$.o8,dn=n.$_$.w6,wn=n.$_$.f7,pn=n.$_$.t1,mn=e.$_$.x,gn=n.$_$.ld,bn=n.$_$.o6,$n=n.$_$.wf,yn=n.$_$.y1,kn=n.$_$.md,xn=n.$_$.ve,Sn=n.$_$.n7,En=e.$_$.y,Cn=e.$_$.u,qn=e.$_$.t,On=n.$_$.ge,zn=n.$_$.p5,An=n.$_$.h7,Tn=n.$_$.ih,In=n.$_$.bh,Dn=n.$_$.c,jn=n.$_$.kc,Mn=n.$_$.ea,Nn=n.$_$.gd,Rn=i.$_$.j,Pn=n.$_$.jb,Ln=n.$_$.ne,Fn=e.$_$.c,Un=e.$_$.v;function Hn(){return ui(),r}function Vn(){return ui(),s}function Bn(){return ui(),o}function Yn(){return ui(),a}function Wn(t,n){n=n!==A&&n,ui();var i,e,r=T();return Zn(D(I().l1k_1.p1k(),t),(i=r,e=n,function(t){return Hn().r(t)||(ui(),h).r(t)?i.p5(ut(t)):e&&32===t?i.p5(L(43)):i.o5(Qn(t)),j})),r.toString()}function Gn(t,n,i,e){return n=n===A?0:n,i=i===A?t.length:i,e=e===A?I().l1k_1:e,ui(),ti(t,n,i,!1,e)}function Kn(t,n,i,e){n=n!==A&&n,i=i!==A&&i,e=e===A?I().l1k_1:e,ui();var r,s,o,a=T();return Zn(D(e.p1k(),t),(r=i,s=a,o=n,function(t){return 32===t?r?s.p5(L(43)):s.o5("%20"):Hn().r(t)||!o&&(ui(),u).r(t)?s.p5(ut(t)):s.o5(Qn(t)),j})),a.toString()}function Xn(t,n,i,e,r){return n=n===A?0:n,i=i===A?t.length:i,e=e!==A&&e,r=r===A?I().l1k_1:r,ui(),ti(t,n,i,e,r)}function Jn(t){return ui(),function(t,n){ui();for(var i=T(),e=I().l1k_1,r=0;rs.w1b_1;)n(s.p1h());i=!1;var o=N(t,r);if(null==o)break t;r=o,i=!0}}finally{i&&R(t,r)}}}function Qn(t){ui();var n=255&t,i=P(3);return i[0]=L(37),i[1]=ni(n>>4),i[2]=ni(15&n),F(i)}function ti(t,n,i,e,r){ui();var s=n;if(s255?o/3|0:o);e>n&&u.q7(t,n,e);for(var a=e,h=null;a=i){var c=a,f=K(t);throw new ei("Incomplete trailing HEX escape: "+H(X(t,c,f))+", in "+t+" at "+a)}var v=ri(U(t,a+1|0)),d=ri(U(t,a+2|0));if(-1===v||-1===d)throw new ei("Wrong HEX escape: %"+J(U(t,a+1|0))+J(U(t,a+2|0))+", in "+t+", at "+a);var w=l;l=w+1|0,h[w]=Z(z(v,16)+d|0),a=a+3|0}u.o5(Q(h,0,l,s))}else u.p5(_),a=a+1|0}return u.toString()}function ei(t){nt(t,this),it(this,ei)}function ri(t){return ui(),L(48)<=t&&t<=L(57)?ot(t,L(48)):L(65)<=t&&t<=L(70)?ot(t,L(65))+10|0:L(97)<=t&&t<=L(102)?ot(t,L(97))+10|0:-1}function si(t){return ui(),Wn(t,!0)}function oi(t){return function(n){return t.o5(Qn(n)),j}}function ui(){if(!_){_=!0;for(var t=_t(ht(at(L(97),L(122)),at(L(65),L(90))),at(L(48),L(57))),n=ct(lt(t,10)),i=t.v();i.w();){var e=i.y().la_1,l=ft(e),c=Z(l);n.s(c)}r=vt(n),s=vt(_t(ht(at(L(97),L(122)),at(L(65),L(90))),at(L(48),L(57)))),o=vt(_t(ht(at(L(97),L(102)),at(L(65),L(70))),at(L(48),L(57))));for(var f=dt([new V(L(58)),new V(L(47)),new V(L(63)),new V(L(35)),new V(L(91)),new V(L(93)),new V(L(64)),new V(L(33)),new V(L(36)),new V(L(38)),new V(L(39)),new V(L(40)),new V(L(41)),new V(L(42)),new V(L(44)),new V(L(59)),new V(L(61)),new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126)),new V(L(43))]),v=ct(lt(f,10)),d=f.v();d.w();){var w=d.y().la_1,p=ft(w),m=Z(p);v.s(m)}u=v,a=dt([new V(L(58)),new V(L(64)),new V(L(33)),new V(L(36)),new V(L(38)),new V(L(39)),new V(L(40)),new V(L(41)),new V(L(42)),new V(L(43)),new V(L(44)),new V(L(59)),new V(L(61)),new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126))]),wt(Vn(),dt([new V(L(33)),new V(L(35)),new V(L(36)),new V(L(38)),new V(L(43)),new V(L(45)),new V(L(46)),new V(L(94)),new V(L(95)),new V(L(96)),new V(L(124)),new V(L(126))]));for(var g=pt([new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126))]),b=ct(lt(g,10)),$=g.v();$.w();){var y=$.y().la_1,k=ft(y),x=Z(k);b.s(x)}h=b}}function ai(t,n,i){return function(t,n,i,e){return i=i===A?mt():i,fi.call(e,t,n,t+"/"+n,i),e}(t,n,i,gt(et(fi)))}function hi(){l=this,this.y1t_1=ai("*","*")}function _i(){return null==l&&new hi,l}function li(){c=this,this.d1u_1=ai("application","*"),this.e1u_1=ai("application","atom+xml"),this.f1u_1=ai("application","cbor"),this.g1u_1=ai("application","json"),this.h1u_1=ai("application","hal+json"),this.i1u_1=ai("application","javascript"),this.j1u_1=ai("application","octet-stream"),this.k1u_1=ai("application","rss+xml"),this.l1u_1=ai("application","xml"),this.m1u_1=ai("application","xml-dtd"),this.n1u_1=ai("application","zip"),this.o1u_1=ai("application","gzip"),this.p1u_1=ai("application","x-www-form-urlencoded"),this.q1u_1=ai("application","pdf"),this.r1u_1=ai("application","vnd.openxmlformats-officedocument.spreadsheetml.sheet"),this.s1u_1=ai("application","vnd.openxmlformats-officedocument.wordprocessingml.document"),this.t1u_1=ai("application","vnd.openxmlformats-officedocument.presentationml.presentation"),this.u1u_1=ai("application","protobuf"),this.v1u_1=ai("application","wasm"),this.w1u_1=ai("application","problem+json"),this.x1u_1=ai("application","problem+xml")}function ci(){f=this,this.y1u_1=ai("text","*"),this.z1u_1=ai("text","plain"),this.a1v_1=ai("text","css"),this.b1v_1=ai("text","csv"),this.c1v_1=ai("text","html"),this.d1v_1=ai("text","javascript"),this.e1v_1=ai("text","vcard"),this.f1v_1=ai("text","xml"),this.g1v_1=ai("text","event-stream")}function fi(t,n,i,e){_i(),e=e===A?mt():e,pi.call(this,i,e),this.j1v_1=t,this.k1v_1=n}function vi(t){nt("Bad Content-Type format: "+t,this),it(this,vi)}function di(t){var n,i=t.m1v("charset");if(null==i)n=null;else{var e;try{e=jt.n1n(i)}catch(t){if(!(t instanceof Mt))throw t;e=null}n=e}return n}function wi(){}function pi(t,n){n=n===A?mt():n,this.t1t_1=t,this.u1t_1=n}function mi(t){if(bi(),0===K(t))return!0;if(function(t){if(bi(),t.length<2)return!1;if(Lt(t)!==L(34)||Pt(t)!==L(34))return!1;var n=1;t:do{var i=St(t,L(34),n);if(i===Ft(t))break t;for(var e=0,r=i-1|0;U(t,r)===L(92);)e=e+1|0,r=r-1|0;if(0==(e%2|0))return!1;n=i+1|0}while(nFt(t))r=te().q22_1;else{te();var s=ie();(function(t,n,i,e,r){var s=0,o=i,u=-1,a=i,h=Ft(n);if(a<=h)do{var _=a;if(a=a+1|0,s===e)return j;var l=U(n,_);l===L(38)?(ue(t,n,o,u,_,r),o=_+1|0,u=-1,s=s+1|0):l===L(61)&&-1===u&&(u=_)}while(_!==h);if(s===e)return j;ue(t,n,o,u,n.length,r)})(s,t,n,i,e),r=s.o1d()}return r}function ue(t,n,i,e,r,s){if(-1===e){var o=ae(i,r,n),u=he(o,r,n);if(u>o){var a=s?Xn(n,o,u):n.substring(o,u);t.h1q(a,mt())}return j}var h=ae(i,e,n),_=he(h,e,n);if(_>h){var l=s?Xn(n,h,_):n.substring(h,_),c=ae(e+1|0,r,n),f=he(c,r,n),v=s?Xn(n,c,f,!0):n.substring(c,f);t.k1q(l,v)}}function ae(t,n,i){for(var e=t;et&&_n(U(i,e-1|0));)e=e-1|0;return e}function _e(t){var n=t.u22_1;if(K(n)>0||"file"===t.t22_1.d23_1)return j;t.u22_1=ce().v23_1.g23_1,t.t22_1.equals(Ce().w23_1)&&(t.t22_1=ce().v23_1.f23_1),0===t.v22_1&&(t.v22_1=ce().v23_1.h23_1)}function le(){x=this,this.v23_1=function(t){return $e(new fe,t)}(function(t){var n;if(2===Un(Fn()).v9_1){var i=function(){var t=null;"undefined"!=typeof window?t=window.location:"undefined"!=typeof self&&(t=self.location);var n="";return t&&(n=t.origin),n&&"null"!=n?n:"http://localhost"}();n=null!=i&&"string"==typeof i?i:Et()}else n="http://localhost";return n}()).o1d()}function ce(){return null==x&&new le,x}function fe(t,n,i,e,r,s,o,u,a){ce(),t=t===A?Ce().w23_1:t,n=n===A?"":n,i=i===A?0:i,e=e===A?null:e,r=r===A?null:r,s=s===A?mt():s,o=o===A?te().q22_1:o,u=u===A?"":u,a=a!==A&&a,this.t22_1=t,this.u22_1=n,this.v22_1=i,this.w22_1=a,this.x22_1=null==e?null:Wn(e),this.y22_1=null==r?null:Wn(r),this.z22_1=Kn(u);for(var h=ct(lt(s,10)),_=s.v();_.w();){var l=Jn(_.y());h.s(l)}this.a23_1=h,this.b23_1=function(t){var n=ie();return function(t,n){for(var i=n.b1q().v();i.w();){for(var e=i.y(),r=n.a1q(e),s=null==r?mt():r,o=Wn(e),u=ct(lt(s,10)),a=s.v();a.w();){var h=si(a.y());u.s(h)}t.h1q(o,u)}}(n,t),n}(o),this.c23_1=new Ie(this.b23_1)}function ve(t){var n=T();return n.o5(pe(t)),n.o5(t.u22_1),0!==t.v22_1&&t.v22_1!==t.t22_1.e23_1&&(n.o5(":"),n.o5(t.v22_1.toString())),n.toString()}function de(){return S}function we(t,n){n.p7(t.t22_1.d23_1);var i=t.t22_1.d23_1;if("file"===i)return function(t,n,i){t.p7("://"),t.p7(n),ln(i,L(47))||t.p5(L(47)),t.p7(i)}(n,t.u22_1,ge(t)),n;if("mailto"===i)return function(t,n,i){t.p7(":"),t.p7(n),t.p7(i)}(n,pe(t),t.u22_1),n;n.p7("://"),n.p7(ve(t)),function(t,n,i,e){!kt(n)&&!On(n,"/")&&t.p5(L(47)),t.p7(n),i.d1()&&!e||t.p7("?");for(var r=i.c1q(),s=Qt(),o=r.v();o.w();){var u,a=o.y(),h=a.g2(),_=a.h2();if(_.d1())u=Sn(Zt(h,null));else{for(var l=ct(lt(_,10)),c=_.v();c.w();){var f=c.y(),v=Zt(h,f);l.s(v)}u=l}zn(s,u)}An(s,t,"&",A,A,A,A,ze)}(n,ge(t),t.b23_1,t.w22_1);var e=t.z22_1;return K(e)>0&&(n.p5(L(35)),n.p7(t.z22_1)),n}function pe(t){var n=T();return Oe(n,t.x22_1,t.y22_1),n.toString()}function me(t,n){t.a23_1=kt(n)?mt():"/"===n?be():vn(fn(n,cn([L(47)])))}function ge(t){return function(t){if(t.d1())return"";if(1===t.n()){var n=dn(t);return 0===K(n)?"/":dn(t)}return wn(t,"/")}(t.a23_1)}function be(){return Se(),E}function $e(t,n){if(Se(),kt(n))return t;var i;try{i=function(t,n){var i;Se();t:{var e=0,r=K(n)-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=U(n,s);if(!_n(o)){i=s;break t}}while(e<=r);i=-1}var u,a=i;t:{var h=K(n)-1|0;if(0<=h)do{var _=h;h=h+-1|0;var l=U(n,_);if(!_n(l)){u=_;break t}}while(0<=h);u=-1}var c=u+1|0,f=function(t,n,i){Se();var e=n,r=-1,s=U(t,e);for(L(97)<=s&&s<=L(122)||L(65)<=s&&s<=L(90)||(r=e);e0){var v=a,d=a+f|0,w=n.substring(v,d);t.t22_1=Ce().j24(w),a=a+(f+1|0)|0}var p=function(t,n,i,e){Se();for(var r=0;(n+r|0)=2)t:for(;;){var m,g=gn(n,mn("@/\\?#"),a),b=null==(m=g>0?g:null)?c:m;if(!(b=c)return t.a23_1=U(n,c-1|0)===L(47)?be():mt(),t;var S,E=t;S=0===p?bn(t.a23_1,1):mt(),E.a23_1=S;var C,q=gn(n,mn("?#"),a),O=null==(C=q>0?q:null)?c:C;if(O>a){var z,T=a,I=n.substring(T,O);if(1===t.a23_1.n()){var D=dn(t.a23_1);z=0===K(D)}else z=!1;var M=z?mt():t.a23_1,N="/"===I?be():fn(I,cn([L(47)])),R=_t(1===p?be():mt(),N);t.a23_1=_t(M,R),a=O}return a0?s:null)?e:r,u=i+1|0;return oe(n.substring(u,o),A,A,!1).d1q((a=t,function(t,n){return a.b23_1.h1q(t,n),j})),o;var a}(t,n,a,c)),function(t,n,i,e){if(Se(),i0?s:null)?e:r;if(t.u22_1=n.substring(i,o),(o+1|0)?@[\\]{}',e))throw new Fi(t,r)}},et(Pi).n1z=function(t){for(var n=0,i=0;i=0?i:e}return n}(n),s=(e.z9(r)<=0?e:r).ia(),o=ht(s);return function(t,n,i,e){var r=Se(ee(ve(t)),!0),s=0,o=!0,u=Ai(n,1);if(null!=u){var a=u,h=1;try{t:do{var _,l,c=a,f=c.x1b_1-c.w1b_1|0;if(f>=h)try{var v,d=a,w=e-s|0,p=d.x1b_1-d.w1b_1|0;if(w0&&d.f1h(p),E=0}else E=s0)}finally{o&&zi(n,a)}}if(s=N)try{var U=M,H=U.v1b_1,V=U.w1b_1,B=U.x1b_1,Y=pe(new Int8Array(H.a1h_1.buffer,H.a1h_1.byteOffset+V|0,B-V|0),r,e-s|0);i.p7(Y.y1n_1),s=s+Y.y1n_1.length|0;var W=Y.z1n_1;U.b1h(W),N=I=W>0?1:I===de()?0:I+1|0}finally{var G=M;R=G.x1b_1-G.w1b_1|0}else R=F;if(D=!1,0===R)P=Ti(n,M);else{var K;if(R0)}finally{D&&zi(n,M)}}}}(t,n,o,i),o.toString()}function $n(t,n,i,e,r){var s=e;if(s>=r)return 0;var o=0,u=Ii(n,1,null);try{var a;t:for(;;){var h=u,_=h.z1b_1-h.x1b_1|0,l=ce(t,i,s,r,h);if(!(l>=0))throw D(A("Check failed."));if(s=s+l|0,o=o+(_-(h.z1b_1-h.x1b_1|0)|0)|0,(a=s>=r?0:0===l?8:1)<=0)break t;u=Ii(n,a,u)}}finally{n.x1g()}return o+function(t,n){var i=1,e=0,r=Ii(n,1,null);try{t:for(;;){var s=r,o=s.z1b_1-s.x1b_1|0;if(i=0,e=e+(o-(s.z1b_1-s.x1b_1|0)|0)|0,!(i>0))break t;r=Ii(n,1,r)}}finally{n.x1g()}return e}(0,n)|0}function yn(){this.y1g_1=8}function kn(t){this.v1b_1=t,this.w1b_1=0,this.x1b_1=0,this.y1b_1=0,this.z1b_1=this.v1b_1.a1h_1.byteLength,this.a1c_1=this.v1b_1.a1h_1.byteLength}function xn(t,n){throw new ye("Unable to discard "+t+" bytes: only "+n+" available for reading")}function Sn(t,n){throw new ye("Unable to discard "+t+" bytes: only "+n+" available for writing")}function En(t,n,i){var e=function(t,n,i,e){return Cn.call(e,"Not enough free space to write "+t+" of "+n+" bytes, available "+i+" bytes."),e}(t,n,i,vt(N(Cn)));return K(e,En),e}function Cn(t){wt(t=t===F?"Not enough free space":t,this),K(this,Cn)}function qn(t,n,i){var e=n.x1b_1-n.w1b_1|0,r=Math.min(e,i);(t.z1b_1-t.x1b_1|0)<=r&&function(t,n){if(((t.z1b_1-t.x1b_1|0)+(t.a1c_1-t.z1b_1|0)|0)0&&t.n1h()}(t,r);var s=t.v1b_1,o=t.x1b_1;t.z1b_1;var u=n.v1b_1,a=n.w1b_1;n.x1b_1,u.s1h(s,a,r,o);var h=r;n.b1h(h);var _=h;return t.c1h(_),_}function On(){return h||(h=!0,u=new zn),u}function zn(t,n,i){t=t===F?4096:t,n=n===F?1e3:n,i=i===F?p:i,Ae.call(this,n),this.w1h_1=t,this.x1h_1=i}function An(t,n,i,e){i=i===F?0:i,e=e===F?n.length-i|0:e;var r=t.v1b_1,s=t.x1b_1,o=t.z1b_1-s|0;if(o=0))throw T(A("length shouldn't be negative: "+i));if(!(i<=(n.x1b_1-n.w1b_1|0))){var e="length shouldn't be greater than the source read remaining: "+i+" > "+(n.x1b_1-n.w1b_1|0);throw T(A(e))}if(!(i<=(t.z1b_1-t.x1b_1|0))){var r="length shouldn't be greater than the destination write remaining space: "+i+" > "+(t.z1b_1-t.x1b_1|0);throw T(A(r))}var s=t.v1b_1,o=t.x1b_1,u=t.z1b_1-o|0;if(u=0))throw T(A("Failed requirement."));if(!(i<=(n.z1b_1-n.x1b_1|0)))throw T(A("Failed requirement."));var e=t.v1b_1,r=t.w1b_1;if((t.x1b_1-r|0)r)!function(t,n,i,e){var r=t.e1d_1.x1i(),s=t.e1d_1.x1i();r.h1h(8),s.h1h(8),r.j1k(s),s.j1k(n.a1j()),qn(r,n,i-e|0),qn(s,n,e),Hn(t,r),t.w1j(jn(s))}(t,n,i,r);else{var s=t.e1d_1.x1i();s.h1h(8),s.j1k(n.a1j()),qn(s,n,i),Hn(t,s)}n.b1j(t.e1d_1)}function Wn(t){if(t.k1d_1)return null;var n=t.t1j();return null==n?(t.k1d_1=!0,null):(function(t,n){var i=Mn(t.f1d_1);if(i===di().l1f_1){if(Hn(t,n),!t.j1d_1.equals(new L(0,0)))throw D("It should be no tail remaining bytes if current tail is EmptyBuffer");var e=n.fz(),r=null==e?null:jn(e);t.w1j(null==r?new L(0,0):r)}else i.j1k(n),t.w1j(t.j1d_1.db(jn(n)))}(t,n),n)}function Gn(t,n,i){for(var e=t,r=n,s=i;;){var o=e,u=o.i1d_1-o.h1d_1|0;if(u>=r)return s;var a=s.fz(),h=null==a?Wn(e):a;if(null==h)return null;var _=h;if(0!==u){var l=qn(s,_,r-u|0);e.i1d_1=s.x1b_1;var c=e,f=c.j1d_1.eb(I(l));c.w1j(f),_.x1b_1>_.w1b_1?_.g1h(l):(s.j1k(null),s.j1k(_.a1j()),_.b1j(e.e1d_1));var v=s;if((v.x1b_1-v.w1b_1|0)>=r)return s;r>8&&Kn(0,r)}else s!==di().l1f_1&&e.i1k(s),s=_}}function Kn(t,n){throw D("minSize of "+n+" is too big (should be less than 8)")}function Xn(t,n){0==(n.x1b_1-n.w1b_1|0)&&t.i1k(n)}function Jn(){}function Zn(t,n,i){t=t===F?di().l1f_1:t,n=n===F?jn(t):n,i=i===F?di().o1f():i,this.e1d_1=i,this.f1d_1=t,this.g1d_1=t.v1b_1,this.h1d_1=t.w1b_1,this.i1d_1=t.x1b_1;var e=this.i1d_1-this.h1d_1|0;this.j1d_1=n.eb(I(e)),this.k1d_1=!1}function Qn(t,n,i,e){i=i===F?0:i;var r=e=e===F?n.length-i|0:e,s=i,o=!0,u=Ai(t,1);if(null!=u){var a=u;try{t:for(;;){var h=a,_=r,l=h.x1b_1-h.w1b_1|0,c=Math.min(_,l);if(In(h,n,s,c),s=s+c|0,!((r=r-c|0)>0))break t;o=!1;var f=Ti(t,a);if(null==f)break t;a=f,o=!0}}finally{o&&zi(t,a)}}r>0&&ai(r)}function ti(t,n,i){var e=i=i===F?n.z1b_1-n.x1b_1|0:i,r=0,s=!0,o=Ai(t,1);if(null!=o){var u=o;try{t:for(;;){var a=u,h=e,_=a.x1b_1-a.w1b_1|0,l=Math.min(h,_);if(Dn(a,n,l),r=r+l|0,!((e=e-l|0)>0))break t;s=!1;var c=Ti(t,u);if(null==c)break t;u=c,s=!0}}finally{s&&zi(t,u)}}e>0&&ai(e)}function ni(t){var n=t.o19_1.x1i();return n.h1h(8),t.h1j(n),n}function ii(t,n,i,e){var r=t.q19_1;if(null==r)t.p19_1=n,t.v19_1=0;else{r.j1k(n);var s=t.s19_1;r.d1h(s),t.v19_1=t.v19_1+(s-t.u19_1|0)|0}t.q19_1=i,t.v19_1=t.v19_1+e|0,t.r19_1=i.v1b_1,t.s19_1=i.x1b_1,t.u19_1=i.w1b_1,t.t19_1=i.z1b_1}function ei(t,n,i,e){n.d1h(t.s19_1);var r=n.x1b_1-n.w1b_1|0,s=i.x1b_1-i.w1b_1|0,o=$e(),u=s0))break t;s=Ii(t,1,s)}}finally{t.x1g()}}function oi(t,n,i,e){var r=i=i===F?0:i,s=e=e===F?n.length-i|0:e,o=Ii(t,1,null);try{t:for(;;){var u=o,a=s,h=u.z1b_1-u.x1b_1|0,_=Math.min(a,h);if(An(u,n,r,_),r=r+_|0,!((s=s-_|0)>0))break t;o=Ii(t,1,o)}}finally{t.x1g()}}function ui(t,n){var i,e;if(n===F){var r=t.l1d();if(r.z9(I(at.MAX_VALUE))>0)throw T("Unable to convert to a ByteArray: packet is too big");i=r.ia()}else i=n;if(0!==(n=i)){var s=new Int8Array(n);Qn(t,s,0,n),e=s}else e=Oi();return e}function ai(t){throw new ye("Premature end of stream: expected "+t+" bytes")}function hi(t,n,i){return function(t,n,i){if(0===i)return"";if((n.i1d_1-n.h1d_1|0)>=i){var e,r=Se(ve(t).n1k_1,!0),s=n.g1j(),o=n.g1d_1.a1h_1;t:try{var u=0===s.w1b_1&&i===o.byteLength?o:new DataView(o.buffer,o.byteOffset+s.w1b_1|0,i);e=r.a1o(u);break t}catch(t){if(t instanceof Error){var a=t.message;throw new oe("Failed to decode bytes: "+(null==a?"no cause provided":a))}throw t}var h=e;return n.b1h(i),h}return function(t,n,i){var e=Se(ee(ve(t)),!0),r=i,s=ht(i);t:try{var o=!0,u=Ai(n,6);if(null!=u){var a=u,h=6;try{n:do{var _,l,c=a,f=c.x1b_1-c.w1b_1|0;if(f>=h)try{var v,d=a,w=d.x1b_1-d.w1b_1|0,p=r,m=Math.min(w,p);if(0===d.w1b_1&&d.v1b_1.a1h_1.byteLength===m){var g;i:{var b=d.v1b_1.a1h_1;try{g=e.w1n(b,Ee(!0));break i}catch(t){if(t instanceof Error){var $=t.message;throw new oe("Failed to decode bytes: "+(null==$?"no cause provided":$))}throw t}}v=g}else{var y;i:{var k=new Int8Array(d.v1b_1.a1h_1.buffer,d.v1b_1.a1h_1.byteOffset+d.w1b_1|0,m);try{y=e.w1n(k,Ee(!0));break i}catch(t){if(t instanceof Error){var x=t.message;throw new oe("Failed to decode bytes: "+(null==x?"no cause provided":x))}throw t}}v=y}var S=v;s.o5(S),d.b1h(m),h=(r=r-m|0)>0?6:0}finally{var E=a;_=E.x1b_1-E.w1b_1|0}else _=f;if(o=!1,0===_)l=Ti(n,a);else{var C;if(_0)}finally{o&&zi(n,a)}}if(r>0){var z=!0,A=Ai(n,1);if(null!=A){var T=A;try{n:for(;;){var I,D=T,j=D.x1b_1-D.w1b_1|0,M=r,N=Math.min(j,M);if(0===D.w1b_1&&D.v1b_1.a1h_1.byteLength===N)I=e.a1o(D.v1b_1.a1h_1);else{var R;i:{var P=new Int8Array(D.v1b_1.a1h_1.buffer,D.v1b_1.a1h_1.byteOffset+D.w1b_1|0,N);try{R=e.w1n(P,Ee(!0));break i}catch(t){if(t instanceof Error){var L=t.message;throw new oe("Failed to decode bytes: "+(null==L?"no cause provided":L))}throw t}}I=R}var F=I;s.o5(F),D.b1h(N),r=r-N|0,z=!1;var U=Ti(n,T);if(null==U)break n;T=U,z=!0}}finally{z&&zi(n,T)}}}s.o5(e.x1n());break t}catch(t){if(t instanceof Error){var H=t.message;throw new oe("Failed to decode bytes: "+(null==H?"no cause provided":H))}throw t}if(r>0)throw new ye("Not enough bytes available: had only "+(i-r|0)+" instead of "+i);return s.toString()}(t,n,i)}((i=i===F?se().l1k_1:i).o1k(),t,n)}function _i(t,n,i,e,r){if(i=i===F?0:i,e=e===F?_t(n):e,(r=r===F?se().l1k_1:r)===se().l1k_1)return function(t,n,i,e){var r=i,s=Ii(t,1,null);try{var o;t:for(;;){var u=s,a=Ci(u.v1b_1,n,r,e,u.x1b_1,u.z1b_1),h=mi(a),_=gi(a);r=r+(65535&yt(h))|0;var l=65535&yt(_);if(u.c1h(l),(o=0==(65535&yt(h))&&r>>16|0);return St(n)}(t)}function gi(t){return function(t){var n=xt(65535&t);return St(n)}(t)}function bi(t){wt(t,this),K(this,bi)}function $i(t){throw new bi("Expected "+t+" more character bytes")}function yi(t){return 0==(t>>>16|0)}function ki(t){return t<=1114111}function xi(t){throw T("Malformed code-point "+t+" found")}function Si(t){return 55232+(t>>>10|0)|0}function Ei(t){return 56320+(1023&t)|0}function Ci(t,n,i,e,r,s){Et();var o=St(-1),u=i+(65535&yt(o))|0,a=Math.min(e,u);Et();var h=St(-1),_=65535&yt(h),l=gt(s,_),c=r,f=i;t:for(;;){if(c>=l||f>=a)return pi(St(xt(f-i|0)),St(xt(c-r|0)));var v=f;f=v+1|0;var d=Ct(n,v),w=65535&bt(d);if(0!=(65408&w))break t;var p=c;c=p+1|0;var m=$t(w);t.a1h_1.setInt8(p,m)}return function(t,n,i,e,r,s,o,u){var a=i,h=s,_=o-3|0;for(;!((_-h|0)<=0||a>=e);){var l=a;a=l+1|0;var c,f=Ct(n,l);if(Ot(f)){var v;if(a!==e&&qt(Ct(n,a))){var d=a;a=d+1|0,v=qi(f,Ct(n,d))}else v=63;c=v}else c=bt(f);var w,p=c,m=h;if(0<=p&&p<=127){var g=$t(p);t.a1h_1.setInt8(m,g),w=1}else if(128<=p&&p<=2047){var b=$t(192|p>>6&31);t.a1h_1.setInt8(m,b);var $=m+1|0,y=$t(128|63&p);t.a1h_1.setInt8($,y),w=2}else if(2048<=p&&p<=65535){var k=$t(224|p>>12&15);t.a1h_1.setInt8(m,k);var x=m+1|0,S=$t(128|p>>6&63);t.a1h_1.setInt8(x,S);var E=m+2|0,C=$t(128|63&p);t.a1h_1.setInt8(E,C),w=3}else if(65536<=p&&p<=1114111){var q=$t(240|p>>18&7);t.a1h_1.setInt8(m,q);var O=m+1|0,z=$t(128|p>>12&63);t.a1h_1.setInt8(O,z);var A=m+2|0,T=$t(128|p>>6&63);t.a1h_1.setInt8(A,T);var I=m+3|0,D=$t(128|63&p);t.a1h_1.setInt8(I,D),w=4}else xi(p);h=h+w|0}return h===_?function(t,n,i,e,r,s,o,u){var a=i,h=s;t:for(;;){var _=o-h|0;if(_<=0||a>=e)break t;var l=a;a=l+1|0;var c,f=Ct(n,l);if(Ot(f)){var v;if(a!==e&&qt(Ct(n,a))){var d=a;a=d+1|0,v=qi(f,Ct(n,d))}else v=63;c=v}else c=bt(f);var w,p=c;if(1<=p&&p<=127?w=1:128<=p&&p<=2047?w=2:2048<=p&&p<=65535?w=3:65536<=p&&p<=1114111?w=4:xi(p),w>_){a=a-1|0;break t}var m,g=h;if(0<=p&&p<=127){var b=$t(p);t.a1h_1.setInt8(g,b),m=1}else if(128<=p&&p<=2047){var $=$t(192|p>>6&31);t.a1h_1.setInt8(g,$);var y=g+1|0,k=$t(128|63&p);t.a1h_1.setInt8(y,k),m=2}else if(2048<=p&&p<=65535){var x=$t(224|p>>12&15);t.a1h_1.setInt8(g,x);var S=g+1|0,E=$t(128|p>>6&63);t.a1h_1.setInt8(S,E);var C=g+2|0,q=$t(128|63&p);t.a1h_1.setInt8(C,q),m=3}else if(65536<=p&&p<=1114111){var O=$t(240|p>>18&7);t.a1h_1.setInt8(g,O);var z=g+1|0,A=$t(128|p>>12&63);t.a1h_1.setInt8(z,A);var T=g+2|0,I=$t(128|p>>6&63);t.a1h_1.setInt8(T,I);var D=g+3|0,j=$t(128|63&p);t.a1h_1.setInt8(D,j),m=4}else xi(p);h=h+m|0}return pi(St(xt(a-r|0)),St(xt(h-u|0)))}(t,n,a,e,r,h,o,u):pi(St(xt(a-r|0)),St(xt(h-u|0)))}(t,n,f=f-1|0,a,i,c,l,r)}function qi(t,n){return(bt(t)-55232|0)<<10|bt(n)-56320|0}function Oi(){return Di(),c}function zi(t,n){if(Di(),n===t)return z;n.x1b_1>n.w1b_1?(n.a1c_1-n.z1b_1|0)<8?t.g1k(n):t.h1d_1=n.w1b_1:t.f1k(n)}function Ai(t,n){return Di(),t.d1k(n)}function Ti(t,n){return Di(),n===t?t.b1e()?t:null:t.e1k(n)}function Ii(t,n,i){return Di(),null!=i&&t.x1g(),t.j1j(n)}function Di(){f||(f=!0,c=new Int8Array(0))}function ji(t,n,i){j.call(this,i),this.o1l_1=t,this.p1l_1=n}function Mi(t,n,i){j.call(this,i),this.c1l_1=t,this.d1l_1=n}function Ni(){this.d19_1=U(null)}function Ri(t,n,i,e){j.call(this,e),this.y1l_1=t,this.z1l_1=n,this.a1m_1=i}function Pi(t,n,i,e){j.call(this,e),this.n1m_1=t,this.o1m_1=n,this.p1m_1=i}function Li(){Ae.call(this,128)}function Fi(){}function Ui(){}function Hi(t){return function(n){return t.l1n_1=null,null!=n&&t.dr(function(t){for(var n=t;n instanceof W;){if(ut(n,n.cause))return t;var i=n.cause;if(null==i)return n;n=i}return n}(n)),z}}function Vi(t,n){cn.call(this,t,n),this.l1n_1=null}function Bi(){var t=new Vi(di().l1f_1,!1);return t.o11(null),t}function Yi(){w=this,this.w1m_1=Tt(Bi)}function Wi(){return null==w&&new Yi,w}function Gi(){}function Ki(){}function Xi(t,n,i,e){return i=i===F?0:i,e=e===F?n.byteLength-i|0:e,new Qi(new DataView(n,i,e))}function Ji(){m=this,this.k1k_1=new Qi(new DataView(new ArrayBuffer(0)))}function Zi(){return null==m&&new Ji,m}function Qi(t){Zi(),this.a1h_1=t}function te(t,n,i,e,r){!function(t,n,i,e,r){var s=new Int8Array(t,i,e);new Int8Array(n.a1h_1.buffer,n.a1h_1.byteOffset+r|0,e).set(s,0)}(t.buffer,n,i+t.byteOffset|0,e,r)}function ne(){}function ie(t){this.n1k_1=t}function ee(t){return t.n1k_1}function re(){b=this,this.l1k_1=new he("UTF-8"),this.m1k_1=new he("ISO-8859-1")}function se(){return null==b&&new re,b}function oe(t){Lt(this,t),K(this,oe)}function ue(t){this.o1n_1=t}function ae(t){this.p1n_1=t}function he(t){ie.call(this,t),this.r1n_1=t}function _e(t){ae.call(this,t),this.t1n_1=t}function le(t){ue.call(this,t),this.v1n_1=t}function ce(t,n,i,e,r){if(!(i<=e))throw T(A("Failed requirement."));if(fe(t).equals(se().m1k_1))return function(t,n,i,e){if(n>=i)return 0;var r=e.v1b_1,s=e.x1b_1,o=e.z1b_1,u=r.m1n(s,o-s|0).a1h_1,a=new Int8Array(u.buffer,u.byteOffset,u.byteLength),h=0,_=n;if(_255&&me(f);var v=h;h=v+1|0,a[v]=$t(f)}while(_0;){var a=e-o|0,h=u/6|0,_=Math.min(a,h),l=mt(_,1),c=Ot(Ct(n,(o+l|0)-1|0)),f=c&&1===l?o+2|0:c?(o+l|0)-1|0:o+l|0,v=A(Ft(n,o,f)),d=s.encode(v);if(d.length>u)break t;ge(r,d),o=f,u=u-d.length|0}return o-i|0}function fe(t){return t.p1n_1}function ve(t){return t.o1n_1}function de(){return $}function we(t,n){this.y1n_1=t,this.z1n_1=n}function pe(t,n,i){if(0===i)return new we("",0);try{var e=gt(i,t.byteLength),r=n.a1o(t.subarray(0,e));if(r.length<=i)return new we(r,e)}catch(t){}return function(t,n,i){for(var e=gt(i>=268435455?at.MAX_VALUE:q(i,8),t.byteLength);e>8;){try{var r=n.a1o(t.subarray(0,e));if(r.length<=i)return new we(r,e)}catch(t){}e=e/2|0}for(e=8;e>0;){try{var s=n.a1o(t.subarray(0,e));if(s.length<=i)return new we(s,e)}catch(t){}e=e-1|0}t:try{n.a1o(t);break t}catch(t){if(t instanceof Error){var o=t.message;throw new oe("Failed to decode bytes: "+(null==o?"no cause provided":o))}throw t}throw new oe("Unable to decode buffer")}(t,n,i)}function me(t){throw new oe("The character with unicode point "+t+" couldn't be mapped to ISO-8859-1 character")}function ge(t,n,i,e){i=i===F?0:i,e=e===F?n.byteLength-i|0:e;var r=t.v1b_1,s=t.x1b_1;if((t.z1b_1-s|0)=0))throw T(A("Failed requirement."));if(this.zb_1=1,(t=this.h1f_1.j1f(this.i1f_1,this))===M())return t;continue t;case 1:this.h1f_1.a1e();var n=this.h1f_1.y19();if(null!=n)throw n;return!this.h1f_1.o1a()&&this.h1f_1.m1a()>=this.i1f_1;case 2:throw this.cc_1}}catch(t){var i=t;if(2===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},N(cn).p1f=function(){return this.o18_1},N(cn).z19=function(){return!(null==this.u18_1.kotlinx$atomicfu$value)},N(cn).m1a=function(){return this.s18_1.kotlinx$atomicfu$value},N(cn).n1a=function(){var t=4088-this.t18_1.kotlinx$atomicfu$value|0;return Math.max(0,t)},N(cn).o1a=function(){return!(t=this,n=t.u18_1.kotlinx$atomicfu$value,null==(null==n?null:n.c19_1)&&(!this.z19()||0!==this.t18_1.kotlinx$atomicfu$value));var t,n},N(cn).y19=function(){var t=this.u18_1.kotlinx$atomicfu$value;return null==t?null:t.c19_1},N(cn).u1b=function(t,n){var i=new nn(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).j1f=function(t,n){var i=new en(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).q1f=function(){Xt(this)},N(cn).a1e=function(){this.a19_1,function(t,n){Di();var i=n.n(),e=n.w19();if(null==e)return 0;var r=e;i<=$e()&&null==r.fz()&&t.z1j(r)?n.k1j():t.y1j(r)}(this.w18_1,this.b19_1)},N(cn).r1f=function(t,n){var i=new rn(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).s1f=function(t,n,i,e){var r=new sn(this,t,n,i,e);return r.bc_1=z,r.cc_1=null,r.mc()},N(cn).n1d=function(t){(function(t,n){if(!(n>=0))throw T(A("Can't read negative amount of bytes: "+n));if(t.t18_1.atomicfu$getAndAdd(0|-n),t.q18_1.atomicfu$addAndGet$long(I(n)),t.s18_1.atomicfu$getAndAdd(0|-n),!(t.t18_1.kotlinx$atomicfu$value>=0)){var i="Readable bytes count is negative: "+t.m1a()+", "+n+" in "+t;throw D(A(i))}if(!(t.m1a()>=0)){var e="Readable bytes count is negative: "+t.m1a()+", "+n+" in "+t;throw D(A(e))}})(this,t),this.z18_1.e19()},N(cn).t1f=function(t,n){var i=new on(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).v1f=function(t,n){return this.w1f(t instanceof kn?t:B(),n)},N(cn).w1f=function(t,n){var i=new an(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).x1f=function(t,n,i,e){var r=new hn(this,t,n,i,e);return r.bc_1=z,r.cc_1=null,r.mc()},N(cn).y1f=function(t){var n=new _n(this,t);return n.bc_1=z,n.cc_1=null,n.mc()},N(cn).p1d=function(t,n){var i=new ln(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).dr=function(t){return null==this.y19()&&!this.z19()&&this.o11(null==t?Y("Channel cancelled"):t)},N(cn).o11=function(t){var n=null==t?vn():new dn(t);return!!this.u18_1.atomicfu$compareAndSet(null,n)&&(null!=t?(this.w18_1.ls(),this.v18_1.ls(),this.b19_1.ls()):(this.q1f(),this.v18_1.ls()),this.z18_1.z1f(t),!0)},N(cn).a1g=function(t,n){var i,e=this.w18_1.l1d();return e.z9(n)<=0?(t.v18_1.b1g(this.w18_1),t.b1c(e.ia()),this.n1d(e.ia()),i=e):i=new L(0,0),i},N(cn).b1c=function(t){(function(t,n){if(!(n>=0))throw T(A("Can't write negative amount of bytes: "+n));if(t.t18_1.atomicfu$getAndAdd(n),t.r18_1.atomicfu$addAndGet$long(I(n)),!(t.t18_1.kotlinx$atomicfu$value>=0)){var i="Readable bytes count is negative: "+t.t18_1.kotlinx$atomicfu$value+", "+n+" in "+t;throw D(A(i))}})(this,t),this.z19()&&(this.v18_1.ls(),function(t){if(t.z19()){var n=t.y19();throw null==n?new fn("Channel "+t+" is already closed"):n}}(this)),(this.p1f()||0===this.n1a())&&this.q1f()},N(pn).by=function(){return this.e1g_1},N(pn).on=function(){return this.d1g_1.on()},N(pn).bm=function(){return this.d1g_1.bm()},N(pn).g2=function(){return this.d1g_1.g2()},N(pn).um=function(){return this.d1g_1.um()},N(pn).pn=function(t){return this.d1g_1.pn(t)},N(pn).hn=function(t){this.d1g_1.hn(t)},N(pn).ig=function(t,n){return this.d1g_1.ig(t,n)},N(pn).hc=function(t){return this.d1g_1.hc(t)},N(pn).zm=function(){return this.d1g_1.zm()},N(pn).dn=function(t,n,i){return this.d1g_1.dn(t,n,i)},N(pn).cn=function(t){return this.d1g_1.cn(t)},N(pn).hg=function(t){return this.d1g_1.hg(t)},N(pn).jg=function(t){return this.d1g_1.jg(t)},N(pn).xm=function(){return this.d1g_1.xm()},N(pn).toString=function(){return"ChannelJob["+this.d1g_1+"]"},N(mn).by=function(){return this.f1g_1},N(mn).am=function(){return this.g1g_1.am()},N(gn).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(gn).zc=function(t,n){return this.v1g(null!=t&&rt(t,J)?t:B(),n)},N(gn).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=3,this.p1g_1&&this.q1g_1.c1g(O(this.t1g_1.am().hc(st)));var n=new mn(this.t1g_1,this.q1g_1);if(this.u1g_1=rt(n,J)?n:B(),this.ac_1=2,this.zb_1=1,(t=this.r1g_1(this.u1g_1,this))===M())return t;continue t;case 1:this.ac_1=3,this.zb_1=4;continue t;case 2:if(this.ac_1=3,this.cc_1 instanceof Error){var i=this.cc_1;if(!ut(this.s1g_1,ot().qs_1)&&null!=this.s1g_1)throw i;this.q1g_1.dr(i),this.zb_1=4;continue t}throw this.cc_1;case 3:throw this.cc_1;case 4:return this.ac_1=3,z}}catch(t){var e=t;if(3===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},N(gn).w1g=function(t,n){var i=new gn(this.p1g_1,this.q1g_1,this.r1g_1,this.s1g_1,n);return i.t1g_1=t,i},N(yn).z1g=function(){return di().l1f_1},N(kn).b1h=function(t){if(0===t)return z;var n=this.w1b_1+t|0;(t<0||n>this.x1b_1)&&xn(t,this.x1b_1-this.w1b_1|0),this.w1b_1=n},N(kn).c1h=function(t){var n=this.x1b_1+t|0;(t<0||n>this.z1b_1)&&Sn(t,this.z1b_1-this.x1b_1|0),this.x1b_1=n},N(kn).d1h=function(t){var n=this.z1b_1;if(t=n){if(t===n)return this.x1b_1=t,!1;Sn(t-this.x1b_1|0,this.z1b_1-this.x1b_1|0)}return this.x1b_1=t,!0},N(kn).e1h=function(t){(t<0||t>this.x1b_1)&&xn(t-this.w1b_1|0,this.x1b_1-this.w1b_1|0),this.w1b_1!==t&&(this.w1b_1=t)},N(kn).f1h=function(t){var n=this.w1b_1-t|0;n=0))throw T(A("startGap shouldn't be negative: "+t));return this.w1b_1>=t?(this.y1b_1=t,z):this.w1b_1===this.x1b_1?(t>this.z1b_1&&function(t,n){if(n>t.a1c_1)throw T("Start gap "+n+" is bigger than the capacity "+t.a1c_1);var i=t.a1c_1-t.z1b_1|0;throw D("Unable to reserve "+n+" start gap: there are already "+i+" bytes reserved in the end")}(this,t),this.x1b_1=t,this.w1b_1=t,this.y1b_1=t,z):void function(t,n){var i="Unable to reserve "+n+" start gap: ",e=t.x1b_1-t.w1b_1|0;throw D(i+"there are already "+e+" content bytes starting at offset "+t.w1b_1)}(this,t)},N(kn).h1h=function(t){if(!(t>=0))throw T(A("endGap shouldn't be negative: "+t));var n=this.a1c_1-t|0;return n>=this.x1b_1?(this.z1b_1=n,z):(n<0&&function(t,n){throw T("End gap "+n+" is too big: capacity is "+t.a1c_1)}(this,t),n=0))throw T(A("newReadPosition shouldn't be negative: "+t));if(!(t<=this.w1b_1)){var n="newReadPosition shouldn't be ahead of the read position: "+t+" > "+this.w1b_1;throw T(A(n))}this.w1b_1=t,this.y1b_1>t&&(this.y1b_1=t)},N(kn).o1h=function(t){t.z1b_1=this.z1b_1,t.y1b_1=this.y1b_1,t.w1b_1=this.w1b_1,t.x1b_1=this.x1b_1},N(kn).p1h=function(){var t=this.w1b_1;if(t===this.x1b_1)throw new ye("No readable bytes available.");return this.w1b_1=t+1|0,this.v1b_1.a1h_1.getInt8(t)},N(kn).q1h=function(t){var n=this.x1b_1;if(n===this.z1b_1)throw new Cn("No free space in the buffer to write a byte");this.v1b_1.a1h_1.setInt8(n,t),this.x1b_1=n+1|0},N(kn).r1h=function(){this.l1h(),this.j1h()},N(kn).toString=function(){return"Buffer[0x"+ft(ct(this),16)+"]("+(this.x1b_1-this.w1b_1|0)+" used, "+(this.z1b_1-this.x1b_1|0)+" free, "+(this.y1b_1+(this.a1c_1-this.z1b_1|0)|0)+" reserved of "+this.a1c_1+")"},N(zn).y1h=function(){return new wi(this.x1h_1.z1h(this.w1h_1),null,this)},N(zn).a1i=function(t){this.x1h_1.b1i(t.v1b_1),N(Ae).f1i.call(this,t),t.q1i()},N(zn).f1i=function(t){return this.a1i(t instanceof wi?t:B())},N(zn).r1i=function(t){N(Ae).s1i.call(this,t);var n=t.v1b_1;if(!I(n.a1h_1.byteLength).equals(I(this.w1h_1))){var i=t.v1b_1,e=I(i.a1h_1.byteLength),r="Buffer size mismatch. Expected: "+this.w1h_1+", actual: "+e.toString();throw D(A(r))}if(t===di().l1f_1)throw D(A("ChunkBuffer.Empty couldn't be recycled"));if(t===o.z1g())throw D(A("Empty instance couldn't be recycled"));if(0!==t.t1i())throw D(A("Unable to clear buffer: it is still in use."));if(null!=t.fz())throw D(A("Recycled instance shouldn't be a part of a chain."));if(null!=t.p1i_1)throw D(A("Recycled instance shouldn't be a view or another buffer."))},N(zn).s1i=function(t){return this.r1i(t instanceof wi?t:B())},N(zn).u1i=function(t){var n=N(Ae).v1i.call(this,t);return n.w1i(),n.r1h(),n},N(zn).v1i=function(t){return this.u1i(t instanceof wi?t:B())},N(Rn).n=function(){return this.c1j()},N(Rn).n19=function(){return 0===this.c1j()},N(Rn).d1j=function(){},N(Rn).e1j=function(t,n,i){},N(Rn).p5=function(t){var n=N(ri).p5.call(this,t);return n instanceof Rn?n:B()},N(Rn).p7=function(t){var n=N(ri).p7.call(this,t);return n instanceof Rn?n:B()},N(Rn).q7=function(t,n,i){var e=N(ri).q7.call(this,t,n,i);return e instanceof Rn?e:B()},N(Rn).o1d=function(){var t=this.n(),n=this.w19();return null==n?Fn().f1j_1:new Un(n,I(t),this.o19_1)},N(Rn).toString=function(){return"BytePacketBuilder[0x"+ct(this)+"]"},N(Un).t1j=function(){return null},N(Un).u1j=function(t,n,i){return 0},N(Un).v1j=function(){},N(Un).toString=function(){return"ByteReadPacket["+ct(this)+"]"},N(Zn).y1e=function(){return!(0!=(this.i1d_1-this.h1d_1|0)||!this.j1d_1.equals(new L(0,0))||!this.k1d_1&&null!=Wn(this))},N(Zn).g1j=function(){var t=this.f1d_1;return t.e1h(this.h1d_1),t},N(Zn).w1j=function(t){if(!(t.z9(new L(0,0))>=0)){var n="tailRemaining shouldn't be negative: "+t.toString();throw T(A(n))}this.j1d_1=t},N(Zn).l1d=function(){var t=this.i1d_1-this.h1d_1|0;return I(t).db(this.j1d_1)},N(Zn).b1e=function(){return this.h1d_1!==this.i1d_1||!this.j1d_1.equals(new L(0,0))},N(Zn).ls=function(){var t=this.g1j(),n=di().l1f_1;t!==n&&(Hn(this,n),this.w1j(new L(0,0)),Nn(t,this.e1d_1))},N(Zn).z1i=function(){this.ls(),this.k1d_1||(this.k1d_1=!0),this.v1j()},N(Zn).w19=function(){var t=this.g1j(),n=di().l1f_1;return t===n?null:(Hn(this,n),this.w1j(new L(0,0)),t)},N(Zn).x1j=function(){var t=this.g1j(),n=t.fz(),i=di().l1f_1;if(t===i)return null;if(null==n)Hn(this,i),this.w1j(new L(0,0));else{Hn(this,n);var e=this.j1d_1,r=n.x1b_1-n.w1b_1|0,s=e.eb(I(r));this.w1j(s)}return t.j1k(null),t},N(Zn).y1j=function(t){if(t===di().l1f_1)return z;var n=jn(t);if(this.f1d_1===di().l1f_1){Hn(this,t);var i=this.i1d_1-this.h1d_1|0,e=n.eb(I(i));this.w1j(e)}else Mn(this.f1d_1).j1k(t),this.w1j(this.j1d_1.db(n))},N(Zn).z1j=function(t){var n=Mn(this.g1j()),i=t.x1b_1-t.w1b_1|0;if(0===i||(n.z1b_1-n.x1b_1|0)=0))throw T(A("Negative discard is not allowed: "+t));return function(t,n,i){for(var e=n,r=i;;){if(0===e)return r;var s=t.h1k(1);if(null==s)return r;var o=s,u=o.x1b_1-o.w1b_1|0,a=e,h=Math.min(u,a);o.b1h(h),t.h1d_1=t.h1d_1+h|0,Xn(t,o),e=e-h|0,r=r+h|0}}(this,t,0)},N(Zn).b1h=function(t){if(this.a1k(t)!==t)throw new ye("Unable to discard "+t+" bytes due to end of packet")},N(Zn).b1k=function(t,n){if(0===t&&(0===n||this.y1e()))return"";var i=this.l1d();if(i.z9(new L(0,0))>0&&I(n).z9(i)>=0)return hi(this,i.ia());var e=gt(mt(t,16),n),r=ht(e);return Vn(this,r,t,n),r.toString()},N(Zn).c1k=function(t,n,i){return t=t===F?0:t,n=n===F?at.MAX_VALUE:n,i===F?this.b1k(t,n):i.b1k.call(this,t,n)},N(Zn).d1k=function(t){return Gn(this,t,this.g1j())},N(Zn).e1k=function(t){return this.f1k(t)},N(Zn).f1k=function(t){return function(t,n,i){for(var e=t,r=n,s=i;;){if(r===s)return Wn(e);var o=r.a1j();if(r.b1j(e.e1d_1),null!=o){if(o.x1b_1>o.w1b_1){Hn(e,o);var u=e,a=u.j1d_1,h=o.x1b_1-o.w1b_1|0,_=a.eb(I(h));return u.w1j(_),o}r=o}else Hn(e,s),e.w1j(new L(0,0)),r=s}}(this,t,di().l1f_1)},N(Zn).g1k=function(t){var n=t.fz();if(null==n)return Yn(this,t);var i,e,r=n,s=t.x1b_1-t.w1b_1|0,o=8-(t.a1c_1-t.z1b_1|0)|0,u=Math.min(s,o);if(r.y1b_1u){t.n1h(),this.i1d_1=t.x1b_1;var a=this.j1d_1.db(I(u));this.w1j(a)}else{Hn(this,r);var h=this.j1d_1,_=(r.x1b_1-r.w1b_1|0)-u|0,l=h.eb(I(_));this.w1j(l),t.a1j(),t.b1j(this.e1d_1)}},N(Zn).t1j=function(){var t=this.e1d_1.x1i();try{t.h1h(8);var n=t.x1b_1,i=t.z1b_1-t.x1b_1|0,e=this.u1j(t.v1b_1,n,i);return 0!==e||(this.k1d_1=!0,t.x1b_1>t.w1b_1)?(t.c1h(e),t):(t.b1j(this.e1d_1),null)}catch(n){if(n instanceof Error){var r=n;throw t.b1j(this.e1d_1),r}throw n}},N(Zn).l1j=function(){this.k1d_1||(this.k1d_1=!0)},N(Zn).h1k=function(t){var n=this.g1j();return(this.i1d_1-this.h1d_1|0)>=t?n:Gn(this,t,n)},N(Zn).i1k=function(t){var n=t.a1j(),i=null==n?di().l1f_1:n;Hn(this,i);var e=this.j1d_1,r=i.x1b_1-i.w1b_1|0,s=e.eb(I(r));return this.w1j(s),t.b1j(this.e1d_1),i},N(ri).c1j=function(){return this.v19_1+(this.s19_1-this.u19_1|0)|0},N(ri).g1j=function(){var t=this.p19_1;return null==t?di().l1f_1:t},N(ri).q1f=function(){!function(t){var n=t.w19();if(null==n)return z;var i=n;try{var e=i;t:for(;;){var r=e,s=r.w1b_1,o=r.x1b_1-r.w1b_1|0;t.e1j(r.v1b_1,s,o);var u=e.fz();if(null==u)break t;e=u}}finally{Nn(i,t.o19_1)}}(this)},N(ri).w19=function(){var t=this.p19_1;if(null==t)return null;var n=t,i=this.q19_1;return null==i||i.d1h(this.s19_1),this.p19_1=null,this.q19_1=null,this.s19_1=0,this.t19_1=0,this.u19_1=0,this.v19_1=0,this.r19_1=Zi().k1k_1,n},N(ri).h1j=function(t){if(null!=t.fz())throw D(A("It should be a single buffer chunk."));ii(this,t,t,0)},N(ri).i1j=function(t){var n=Mn(t),i=jn(t),e=n.x1b_1-n.w1b_1|0,r=i.eb(I(e));r.z9(I(at.MAX_VALUE))>=0&&function(t,n){throw T("Long value "+t.toString()+" of "+n+" doesn't fit into 32-bit integer")}(r,"total size increase"),ii(this,t,n,r.ia())},N(ri).q1h=function(t){var n=this.s19_1;return n=3){var i,e=this.r19_1,r=bt(t);if(0<=r&&r<=127){var s=$t(r);e.a1h_1.setInt8(n,s),i=1}else if(128<=r&&r<=2047){var o=$t(192|r>>6&31);e.a1h_1.setInt8(n,o);var u=n+1|0,a=$t(128|63&r);e.a1h_1.setInt8(u,a),i=2}else if(2048<=r&&r<=65535){var h=$t(224|r>>12&15);e.a1h_1.setInt8(n,h);var _=n+1|0,l=$t(128|r>>6&63);e.a1h_1.setInt8(_,l);var c=n+2|0,f=$t(128|63&r);e.a1h_1.setInt8(c,f),i=3}else if(65536<=r&&r<=1114111){var v=$t(240|r>>18&7);e.a1h_1.setInt8(n,v);var d=n+1|0,w=$t(128|r>>12&63);e.a1h_1.setInt8(d,w);var p=n+2|0,m=$t(128|r>>6&63);e.a1h_1.setInt8(p,m);var g=n+3|0,b=$t(128|63&r);e.a1h_1.setInt8(g,b),i=4}else xi(r);var $=i;return this.s19_1=n+$|0,this}return function(t,n){t:{var i=t.j1j(3);try{var e,r=i.v1b_1,s=i.x1b_1,o=bt(n);if(0<=o&&o<=127){var u=$t(o);r.a1h_1.setInt8(s,u),e=1}else if(128<=o&&o<=2047){var a=$t(192|o>>6&31);r.a1h_1.setInt8(s,a);var h=s+1|0,_=$t(128|63&o);r.a1h_1.setInt8(h,_),e=2}else if(2048<=o&&o<=65535){var l=$t(224|o>>12&15);r.a1h_1.setInt8(s,l);var c=s+1|0,f=$t(128|o>>6&63);r.a1h_1.setInt8(c,f);var v=s+2|0,d=$t(128|63&o);r.a1h_1.setInt8(v,d),e=3}else if(65536<=o&&o<=1114111){var w=$t(240|o>>18&7);r.a1h_1.setInt8(s,w);var p=s+1|0,m=$t(128|o>>12&63);r.a1h_1.setInt8(p,m);var g=s+2|0,b=$t(128|o>>6&63);r.a1h_1.setInt8(g,b);var $=s+3|0,y=$t(128|63&o);r.a1h_1.setInt8($,y),e=4}else xi(o);var k=e;if(i.c1h(k),!(k>=0))throw D(A("The returned value shouldn't be negative"));break t}finally{t.x1g()}}}(this,t),this},N(ri).p7=function(t){return null==t?this.q7("null",0,4):this.q7(t,0,_t(t)),this},N(ri).q7=function(t,n,i){return null==t?this.q7("null",n,i):(_i(this,t,n,i,se().l1k_1),this)},N(ri).b1g=function(t){var n=t.w19();if(null==n)return t.ls(),z;var i=this.q19_1;if(null==i)return this.i1j(n),z;ei(this,i,n,t.e1d_1)},N(ri).x19=function(t){var n=this.q19_1;if(null==n)return this.i1j(t),z;ei(this,n,t,this.o19_1)},N(ri).m1d=function(t,n){var i=n;t:for(;i.z9(new L(0,0))>0;){var e=t.i1d_1-t.h1d_1|0,r=I(e);if(!(r.z9(i)<=0)){var s,o=t.h1k(1);null==o?ai(1):s=o;var u=s,a=u.w1b_1;try{si(this,u,i.ia())}finally{var h=u.w1b_1;if(h=t){var n=this.q19_1;if(null!=n)return n.d1h(this.s19_1),n}return ni(this)},N(ri).x1g=function(){var t=this.q19_1;null==t||(this.s19_1=t.x1b_1)},N(ri).k1j=function(){var t=this.g1j();if(t!==di().l1f_1){if(null!=t.fz())throw D(A("Check failed."));t.j1h(),t.h1h(8),this.s19_1=t.x1b_1,this.u19_1=this.s19_1,this.t19_1=t.z1b_1}},N(li).x1i=function(){return di().l1f_1},N(li).q1k=function(t){if(t!==di().l1f_1)throw T(A("Only ChunkBuffer.Empty instance could be recycled."))},N(li).y1i=function(t){return this.q1k(t instanceof wi?t:B())},N(li).mp=function(){},N(ci).x1i=function(){return new wi(p.z1h(a),null,this)},N(ci).q1k=function(t){p.b1i(t.v1b_1)},N(ci).y1i=function(t){return this.q1k(t instanceof wi?t:B())},N(fi).x1i=function(){throw kt("This pool doesn't support borrow")},N(fi).q1k=function(t){},N(fi).y1i=function(t){return this.q1k(t instanceof wi?t:B())},N(vi).o1f=function(){return On()},N(wi).j1k=function(t){null==t?this.a1j():function(t,n){if(!t.n1i_1.atomicfu$compareAndSet(null,n))throw D("This chunk has already a next chunk.")}(this,t)},N(wi).fz=function(){return this.n1i_1.kotlinx$atomicfu$value},N(wi).t1i=function(){return this.o1i_1.kotlinx$atomicfu$value},N(wi).a1j=function(){return this.n1i_1.atomicfu$getAndSet(null)},N(wi).r1k=function(){var t=this.p1i_1,n=null==t?this:t;n.s1k();var i=new wi(this.v1b_1,n,this.m1i_1);return this.o1h(i),i},N(wi).b1j=function(t){if(this.t1k()){var n=this.p1i_1;if(null!=n)this.q1i(),n.b1j(t);else{var i=this.m1i_1;(null==i?t:i).y1i(this)}}},N(wi).q1i=function(){if(!this.o1i_1.atomicfu$compareAndSet(0,-1))throw D("Unable to unlink: buffer is in use.");this.a1j(),this.p1i_1=null},N(wi).s1k=function(){t:for(var t=this.o1i_1;;){var n=t.kotlinx$atomicfu$value;if(n<=0)throw D("Unable to acquire chunk: it is already released.");var i=n+1|0;if(t.atomicfu$compareAndSet(n,i))break t}},N(wi).w1i=function(){t:for(var t=this.o1i_1;;){var n=t.kotlinx$atomicfu$value;if(n<0)throw D("This instance is already disposed and couldn't be borrowed.");if(n>0)throw D("This instance is already in use but somehow appeared in the pool.");if(t.atomicfu$compareAndSet(n,1))break t}},N(wi).t1k=function(){var t;t:for(var n=this.o1i_1;;){var i=n.kotlinx$atomicfu$value;if(i<=0)throw D("Unable to release: it is already released.");var e=i-1|0;if(n.atomicfu$compareAndSet(i,e)){t=e;break t}}return 0===t},N(wi).r1h=function(){if(null!=this.p1i_1)throw T(A("Unable to reset buffer with origin"));N(kn).r1h.call(this),this.n1i_1.kotlinx$atomicfu$value=null},N(ji).mc=function(){var t,n,i,e=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.zb_1=1,t=this.o1l_1,n=this.p1l_1,i=void 0,(i=new Mi(t,n,this)).bc_1=z,i.cc_1=null,(e=i.mc())===M())return e;continue t;case 1:if(e)return z;this.zb_1=2;continue t;case 2:return this.o1l_1.e19(),z;case 3:throw this.cc_1}}catch(t){var r=t;if(3===this.ac_1)throw r;this.zb_1=this.ac_1,this.cc_1=r}},N(Mi).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.e1l_1=!1,this.f1l_1=zt(),this.c1l_1.d19_1.atomicfu$compareAndSet(null,this.f1l_1)&&this.d1l_1()){if(this.e1l_1=!0,this.zb_1=1,(t=this.f1l_1.fs(this))===M())return t;continue t}this.zb_1=2;continue t;case 1:this.zb_1=2;continue t;case 2:return this.e1l_1;case 3:throw this.cc_1}}catch(t){var n=t;if(3===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},N(Ni).z1a=function(t,n){var i=new ji(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(Ni).e19=function(){var t=this.d19_1.atomicfu$getAndSet(null);null==t||t.es()},N(Ni).z1f=function(t){var n=this.d19_1.atomicfu$getAndSet(null);if(null==n)return z;var i=n;null!=t?i.ds(t):i.es()},N(Ri).mc=function(){var t,n,i,e,r=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=10,this.y1l_1===this.z1l_1)throw T(A("Failed requirement."));if(null!=this.y1l_1.y19())return this.z1l_1.o11(this.y1l_1.y19()),new L(0,0);this.b1m_1=this.a1m_1,this.zb_1=1;continue t;case 1:if(!(this.b1m_1.z9(new L(0,0))>0)){this.zb_1=9;continue t}if(this.zb_1=2,(r=this.y1l_1.y1f(this))===M())return r;continue t;case 2:if(this.c1m_1=r,this.c1m_1){this.zb_1=3;continue t}this.zb_1=9;continue t;case 3:if(this.d1m_1=this.y1l_1.a1g(this.z1l_1,this.b1m_1),this.d1m_1.equals(new L(0,0))){if(this.zb_1=6,t=this.y1l_1,n=this.z1l_1,i=this.b1m_1,e=void 0,(e=new Pi(t,n,i,this)).bc_1=z,e.cc_1=null,(r=e.mc())===M())return r;continue t}if(0===this.z1l_1.n1a()){if(this.zb_1=4,(r=this.z1l_1.u1b(1,this))===M())return r;continue t}this.zb_1=5;continue t;case 4:this.zb_1=5;continue t;case 5:this.e1m_1=this.d1m_1,this.zb_1=8;continue t;case 6:var s=r;if(s.equals(new L(0,0))){this.zb_1=9;continue t}this.zb_1=7;continue t;case 7:this.e1m_1=s,this.zb_1=8;continue t;case 8:var o=this.e1m_1;this.b1m_1=this.b1m_1.eb(o),o.z9(new L(0,0))>0&&this.z1l_1.q1f(),this.zb_1=1;continue t;case 9:return this.a1m_1.eb(this.b1m_1);case 10:throw this.cc_1}}catch(t){var u=t;if(10===this.ac_1)throw u;this.zb_1=this.ac_1,this.cc_1=u}},N(Pi).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=9,this.q1m_1=di().o1f().x1i(),this.zb_1=1;continue t;case 1:this.zb_1=2;continue t;case 2:if(this.ac_1=8,this.q1m_1.k1h(At(this.p1m_1,I(this.q1m_1.a1c_1)).ia()),this.zb_1=3,(t=this.n1m_1.v1f(this.q1m_1,this))===M())return t;continue t;case 3:if(this.s1m_1=t,-1===this.s1m_1){this.q1m_1.b1j(di().o1f()),this.r1m_1=new L(0,0),this.ac_1=9,this.zb_1=6;continue t}this.zb_1=4;continue t;case 4:if(this.zb_1=5,(t=this.o1m_1.r1f(this.q1m_1,this))===M())return t;continue t;case 5:this.r1m_1=I(this.s1m_1),this.ac_1=9,this.zb_1=6;continue t;case 6:var n=this.r1m_1;return this.ac_1=9,this.q1m_1.b1j(di().o1f()),n;case 7:return this.ac_1=9,this.q1m_1.b1j(di().o1f()),z;case 8:this.ac_1=9;var i=this.cc_1;throw this.q1m_1.b1j(di().o1f()),i;case 9:throw this.cc_1}}catch(t){var e=t;if(9===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},N(Li).y1h=function(){return new Int8Array(4096)},N(Ui).y1i=function(t){},N(Ui).mp=function(){},N(Vi).c1g=function(t){var n=this.l1n_1;null==n||n.in(),this.l1n_1=t,t.en(!0,F,Hi(this))},N(Vi).toString=function(){return"ByteChannel["+this.l1n_1+", "+ct(this)+"]"},N(Yi).z1g=function(){var t=this.w1m_1;return jt("Empty",1,Dt,(function(t){return t.z1g()}),null),t.h2()},N(Ki).z1h=function(t){return new Qi(new DataView(new ArrayBuffer(t)))},N(Ki).b1i=function(t){},N(Qi).m1n=function(t,n){if(!(t>=0))throw T(A("offset shouldn't be negative: "+t));if(!(n>=0))throw T(A("length shouldn't be negative: "+n));var i=I(t+n|0),e=I(this.a1h_1.byteLength);if(i.z9(e)>0){var r=I(this.a1h_1.byteLength);throw Mt("offset + length > size: "+t+" + "+n+" > "+r.toString())}return new Qi(new DataView(this.a1h_1.buffer,this.a1h_1.byteOffset+t|0,n))},N(Qi).s1h=function(t,n,i,e){var r=new Int8Array(this.a1h_1.buffer,this.a1h_1.byteOffset+n|0,i);new Int8Array(t.a1h_1.buffer,t.a1h_1.byteOffset+e|0,i).set(r)},N(ne).n1n=function(t){switch(t){case"UTF-8":case"utf-8":case"UTF8":case"utf8":return se().l1k_1}var n;switch(t){case"ISO-8859-1":case"iso-8859-1":n=!0;break;default:var i=Rt(t,Nt(95),Nt(45));n="iso-8859-1"===i||"iso-8859-1"===i.toLowerCase()}if(n||"latin1"===t||"Latin1"===t)return se().m1k_1;throw T("Charset "+t+" is not supported")},N(ie).equals=function(t){return this===t||null!=t&&this.constructor==t.constructor&&(t instanceof ie||B(),this.n1k_1===t.n1k_1)},N(ie).hashCode=function(){return Pt(this.n1k_1)},N(ie).toString=function(){return this.n1k_1},N(he).p1k=function(){return new _e(this)},N(he).o1k=function(){return new le(this)},N(he).toString=function(){return"CharsetImpl(name="+this.r1n_1+")"},N(he).hashCode=function(){return Pt(this.r1n_1)},N(he).equals=function(t){if(this===t)return!0;if(!(t instanceof he))return!1;var n=t instanceof he?t:B();return this.r1n_1===n.r1n_1},N(_e).toString=function(){return"CharsetEncoderImpl(charset="+this.t1n_1+")"},N(_e).hashCode=function(){return this.t1n_1.hashCode()},N(_e).equals=function(t){if(this===t)return!0;if(!(t instanceof _e))return!1;var n=t instanceof _e?t:B();return!!this.t1n_1.equals(n.t1n_1)},N(le).toString=function(){return"CharsetDecoderImpl(charset="+this.v1n_1+")"},N(le).hashCode=function(){return this.v1n_1.hashCode()},N(le).equals=function(t){if(this===t)return!0;if(!(t instanceof le))return!1;var n=t instanceof le?t:B();return!!this.v1n_1.equals(n.v1n_1)},N(we).toString=function(){return"DecodeBufferResult(charactersDecoded="+this.y1n_1+", bytesConsumed="+this.z1n_1+")"},N(we).hashCode=function(){var t=Pt(this.y1n_1);return q(t,31)+this.z1n_1|0},N(we).equals=function(t){if(this===t)return!0;if(!(t instanceof we))return!1;var n=t instanceof we?t:B();return this.y1n_1===n.y1n_1&&this.z1n_1===n.z1n_1},N(Ce).x1n=function(){return this.b1o_1.decode()},N(Ce).a1o=function(t){return this.b1o_1.decode(t)},N(Ce).w1n=function(t,n){return this.b1o_1.decode(t,n)},N(qe).x1n=function(){return""},N(qe).a1o=function(t){var n;t:{var i=new Rn;try{var e=t instanceof Int8Array?t:B(),r=0,s=e.length;if(r255&&i.q1h($t(u>>8)),i.q1h($t(255&u))}while(r=(e=e===F?_t(n):e))return Oi();var s=di().o1f().x1i();try{var o;if((r=r+ce(t,n,r,e,s)|0)===e){var u=s.x1b_1-s.w1b_1|0,a=new Int8Array(u),h=a.length-0|0;return In(s instanceof kn?s:B(),a,0,h),a}t:{var _=new Rn;try{_.h1j(s.r1k()),$n(t,_,n,r,e),o=_.o1d();break t}catch(t){if(t instanceof Error){var l=t;throw _.ls(),l}throw t}}return ui(o)}finally{s.b1j(di().o1f())}}(t,n,i=i===F?0:i,e=e===F?_t(n):e)},t.$_$.k=function(t,n,i,e){var r;i=i===F?0:i,e=e===F?_t(n):e;t:{var s=new Rn;try{$n(t,s,n,i,e),r=s.o1d();break t}catch(t){if(t instanceof Error){var o=t;throw s.ls(),o}throw t}}return r},t.$_$.l=ee,t.$_$.m=zi,t.$_$.n=Ai,t.$_$.o=Ti,t.$_$.p=Rn,t.$_$.q=Un,t.$_$.r=be,t.$_$.s=Zn,t.$_$.t=function(t,n,i,e){n=n===F?0:n,i=i===F?t.length:i,e=e===F?se().l1k_1:e,(n<0||i<0||(n+i|0)>t.length)&&function(t,n,i){if(!(t>=0))throw Mt("offset ("+t+") shouldn't be negative");if(!(n>=0))throw Mt("length ("+n+") shouldn't be negative");if(!((t+n|0)<=i.length))throw Mt("offset ("+t+") + length ("+n+") > bytes.size ("+i.length+")");throw Ut()}(n,i,t);var r=t,s=r.byteOffset+n|0,o=r.buffer.slice(s,s+i|0),u=new wi(Xi(Zi(),o),null,di().m1f_1);u.i1h();var a=Pn(u,di().n1f_1);return bn(e.o1k(),a,at.MAX_VALUE)},t.$_$.u=function(t,n){},t.$_$.v=ui,t.$_$.w=function(t){var n;if((t.i1d_1-t.h1d_1|0)>2){var i=t.h1d_1;t.h1d_1=i+2|0,n=t.g1d_1.a1h_1.getInt16(i,!1)}else n=function(t){var n,i=Ai(t,2);null==i?ai(2):n=i;var e=n,r=function(t){var n,i=t.v1b_1,e=t.w1b_1;if((t.x1b_1-e|0)<2)throw new ye("Not enough bytes to read a short integer of size 2.");return n=i.a1h_1.getInt16(e,!1),t.b1h(2),n}(e);return zi(t,e),r}(t);return n},t.$_$.x=function(t,n,i){return n=n===F?se().l1k_1:n,i=i===F?at.MAX_VALUE:i,bn(n.o1k(),t,i)},t.$_$.y=oi,t.$_$.z=function(t,n){var i,e=t.s19_1;(t.t19_1-e|0)>2?(t.s19_1=e+2|0,t.r19_1.a1h_1.setInt16(e,n,!1),i=!0):i=!1,i||function(t,n){(function(t,n){var i=t.v1b_1,e=t.x1b_1,r=t.z1b_1-e|0;if(r<2)throw En("short integer",2,r);i.a1h_1.setInt16(e,n,!1),t.c1h(2)})(t.j1j(2),n),t.x1g()}(t,n)},t.$_$.a1=_i,t.$_$.b1=xe,t.$_$.c1=function(){return d||(d=!0,v=new Li),v},t.$_$.d1=function(t){return function(t,n,i){if(0===t.length)return Wi().z1g();var e=di().o1f().x1i(),r=e,s=n,o=s+i|0;t:for(;;){r.h1h(8);var u=o-s|0,a=r,h=a.z1b_1-a.x1b_1|0,_=Math.min(u,h);if(An(r instanceof kn?r:B(),t,s,_),(s=s+_|0)===o)break t;var l=r;r=di().o1f().x1i(),l.j1k(r)}var c=new Vi(e,!1);return f=c,f.o11(null),c;var f}(t,0,t.length)},t.$_$.e1=Gi,t.$_$.f1=wn,t.$_$.g1=function(t){return t.dr(null)},t.$_$.h1=function(t,n,i,e){return function(t,n,i,e,r){var s=t.am().hc(it()),o=et(t,n,F,(u=e,a=i,h=r,_=s,l=null,c=new gn(u,a,h,_,l),f=function(t,n){return c.v1g(t,n)},f.$arity=1,f));var u,a,h,_,l,c,f;return o.cn(function(t){return function(n){return t.o11(n),z}}(i)),new pn(o,i)}(t,n=n===F?X():n,function(t){return t=t!==F&&t,new Vi(di().l1f_1,t)}(i=i!==F&&i),!0,e)},t})?e.apply(n,r):e)||(t.exports=s)},754:function(t,n,i){var e,r,s;r=[n,i(675),i(229),i(485),i(205)],void 0===(s="function"==typeof(e=function(t,n,i,e,r){"use strict";var s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V,B,Y=Math.imul,W=n.$_$.u9,G=n.$_$.x1,K=n.$_$.gb,X=n.$_$.c,J=n.$_$.fg,Z=n.$_$.a5,Q=n.$_$.fa,tt=n.$_$.w9,nt=n.$_$.hb,it=n.$_$.ha,et=n.$_$.k9,rt=n.$_$.f,st=n.$_$.w8,ot=i.$_$.v,ut=n.$_$.v,at=n.$_$.z9,ht=n.$_$.ga,_t=n.$_$.m5,lt=n.$_$.vg,ct=n.$_$.j5,ft=n.$_$.qa,vt=n.$_$.s9,dt=n.$_$.t9,wt=n.$_$.z2,pt=e.$_$.c1,mt=n.$_$.z8,gt=e.$_$.i,bt=n.$_$.i9,$t=n.$_$.w5,yt=n.$_$.l,kt=n.$_$.o5,xt=n.$_$.lb,St=n.$_$.n5,Et=n.$_$.sf,Ct=n.$_$.fb,qt=n.$_$.v6,Ot=n.$_$.m,zt=n.$_$.u,At=n.$_$.q6,Tt=n.$_$.ca,It=n.$_$.e1,Dt=n.$_$.ud,jt=n.$_$.r2,Mt=n.$_$.w2,Nt=n.$_$.jd,Rt=r.$_$.d,Pt=n.$_$.yf,Lt=n.$_$.pf,Ft=n.$_$.ua,Ut=n.$_$.l5,Ht=n.$_$.eb,Vt=n.$_$.c5,Bt=n.$_$.p6,Yt=n.$_$.j7,Wt=n.$_$.m7,Gt=n.$_$.r7,Kt=e.$_$.x,Xt=n.$_$.aa,Jt=n.$_$.q9,Zt=e.$_$.r,Qt=(n.$_$.v4,n.$_$.a3),tn=n.$_$.ug,nn=n.$_$.b3,en=n.$_$.c3,rn=n.$_$.n4,sn=n.$_$.e9,on=n.$_$.ba,un=n.$_$.y8,an=n.$_$.l8,hn=n.$_$.zg,_n=n.$_$.cb,ln=n.$_$.wf,cn=n.$_$.w1,fn=n.$_$.d3,vn=n.$_$.ch;function dn(t){this.d1o_1=t;var n=this.d1o_1;if(0===W(n))throw G("Name can't be blank")}function wn(){}function pn(t,n){et.call(this,n),this.t1o_1=t}function mn(t){return t.u1o_1}function gn(t){return Fn(t)}function bn(t){return new kn(t.g2().u1o_1,t.h2())}function $n(t){return new kn(Fn(t.g2()),t.h2())}function yn(){this.w1o_1=ut()}function kn(t,n){this.c1p_1=t,this.d1p_1=n}function xn(){return new yn}function Sn(){mt.call(this,gt)}function En(t){this.g1p_1=t,this.f1p_1=t.h1p_1.v()}function Cn(t,n,i){this.h1p_1=t,this.i1p_1=n,this.j1p_1=i,this.k1p_1=this.h1p_1.n()}function qn(){if(h)return Z;h=!0,s=new On("Jvm",0),o=new On("Native",1),u=new On("Browser",2),a=new On("Node",3)}function On(t,n){Et.call(this,t,n)}function zn(){_=this,this.t1p_1=Ei().equals(Tn()),this.u1p_1=Ei().equals(In()),this.v1p_1=Ei().equals((qn(),s)),this.w1p_1=Ei().equals((qn(),o)),this.x1p_1=!1,this.y1p_1=!0}function An(){return null==_&&new zn,_}function Tn(){return qn(),u}function In(){return qn(),a}function Dn(){}function jn(t,n){var i,e=t.f1q_1.o2(n);if(null==e){var r=Ot();t.g1q(n),t.f1q_1.e2(n,r),i=r}else i=e;return i}function Mn(t,n){t=t!==rt&&t,n=n===rt?8:n,this.e1q_1=t,this.f1q_1=this.e1q_1?xn():zt(n)}function Nn(t,n){return t.o1q_1.o2(n)}function Rn(t,n){t=t!==rt&&t,n=n===rt?At():n,this.n1q_1=t;for(var i=this.n1q_1?xn():ut(),e=n.d2().v();e.w();){var r=e.y(),s=r.g2(),o=r.h2(),u=o.n(),a=yt(u),h=0;if(h=this.t1r_1.n()){this.r1r_1.a1s(),this.zb_1=5;continue t}this.zb_1=3;continue t;case 3:this.u1r_1=this.t1r_1.h1(this.s1r_1),this.r1r_1.z1r_1=this.s1r_1+1|0,this.zb_1=4;var n=this.u1r_1;if((t=(Ft(n,2)?n:J())(this.r1r_1,this.r1r_1.y1r_1,this))===st())return t;continue t;case 4:this.zb_1=1;continue t;case 5:return this.r1r_1.y1r_1;case 6:throw this.cc_1}}catch(t){var i=t;if(6===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},K(Zn).am=function(){return this.x1r_1},K(Zn).a1s=function(){this.z1r_1=-1},K(Zn).b1s=function(t,n){return this.y1r_1=t,this.c1s(n)},K(Zn).c1s=function(t){var n=this.z1r_1;return n<0?this.y1r_1:n>=this.w1r_1.n()?(this.a1s(),this.y1r_1):function(t,n){var i=new Jn(t,n);return i.bc_1=Z,i.cc_1=null,i.mc()}(this,t)},K(Zn).d1s=function(t,n){return this.z1r_1=0,this.y1r_1=t,this.c1s(n)},K(ii).n19=function(){return this.h1s_1.d1()},K(ii).n=function(){return this.h1s_1.n()},K(ii).k1s=function(t){var n;this.i1s_1&&((n=this).h1s_1=n.j1s(),n.i1s_1=!1),this.h1s_1.s(t)},K(ii).l1s=function(t){var n=this.h1s_1;t instanceof Vt&&t.w2(t.n()+n.n()|0);var i=0,e=n.n();if(i=0)throw G("Already started");return this.c1s(n)},K(ki).toString=function(){return"TypeInfo(type="+this.n1t_1+", reifiedType="+this.o1t_1+", kotlinType="+this.p1t_1+")"},K(ki).hashCode=function(){var t=this.n1t_1.hashCode();return t=Y(t,31)+ht(this.o1t_1)|0,Y(t,31)+(null==this.p1t_1?0:ht(this.p1t_1))|0},K(ki).equals=function(t){if(this===t)return!0;if(!(t instanceof ki))return!1;var n=t instanceof ki?t:J();return!!this.n1t_1.equals(n.n1t_1)&&!!at(this.o1t_1,n.o1t_1)&&!!at(this.p1t_1,n.p1t_1)},K(Si).f1o=function(t){var n=this.q1t_1.o2(t);return null==n||null!=n?n:J()},K(Si).g1o=function(t){return this.q1t_1.l2(t)},K(Si).h1o=function(t,n){this.q1t_1.e2(t,n)},K(Si).i1o=function(t){this.q1t_1.i2(t)},K(Si).j1o=function(t,n){var i=this.q1t_1.o2(t);if(null!=i)return null!=i?i:J();var e=n();return this.q1t_1.e2(t,e),e},K(Si).k1o=function(){return an(this.q1t_1.b2())},K(Oi).s1t=function(t){if(this.r1t_1.w9(Ti())>0)return Z;console.debug("TRACE: "+t)},K(Si).e1o=function(t){var n=this.f1o(t);if(null==n)throw G("No instance for key "+t);return n},g=new Bn,I=new Gn,V=!1,B=new Ri,t.$_$=t.$_$||{},t.$_$.a=function(t,n){var i=new pn(t,n);return i.bc_1=Z,i.cc_1=null,i.mc()},t.$_$.b=B,t.$_$.c=An,t.$_$.d=Un,t.$_$.e=Ci,t.$_$.f=function(t){return new Oi},t.$_$.g=ci,t.$_$.h=fi,t.$_$.i=li,t.$_$.j=function(t,n){return n.g6(t)},t.$_$.k=function(t,n,i){return new ki(n,t,i)},t.$_$.l=dn,t.$_$.m=xi,t.$_$.n=function(t){var n=pt(t=t===rt?null:t),i=new Sn;return n.jg(i)},t.$_$.o=function(t){for(var n=this.c1q().v();n.w();){var i=n.y();t(i.g2(),i.h2())}return Z},t.$_$.p=function(t){var n=this.a1q(t);return null==n?null:qt(n)},t.$_$.q=Mn,t.$_$.r=Rn,t.$_$.s=Dn,t.$_$.t=function(t,n){for(var i=n.c1q().v();i.w();){var e=i.y(),r=e.g2(),s=e.h2();t.h1q(r,s)}return t},t.$_$.u=function(t){var n=wt(t).toLowerCase();return dt(n,0)===t},t.$_$.v=Ei,t.$_$.w=function(t,n){for(var i=n.k1o().v();i.w();){var e=i.y();t.h1o(e instanceof dn?e:J(),n.e1o(e))}},t.$_$.x=function(t){for(var n=0,i=t.length,e=vt(i);n=e)throw new Ot(n,"Unexpected end of string "+(null==r?"":" in ["+r+"]"),i);return R(n,i)}function Et(t,n){var i,e=t.u4v_1,r=e.ih_1;if(n<=e.jh_1&&r<=n){var s=P(n),o=l(48);i=s-P(o)|0}else{var u=t.r4v_1,a=u.ih_1;if(n<=u.jh_1&&a<=n){var h=10+P(n)|0,_=l(97);i=h-P(_)|0}else{var c=t.t4v_1,f=c.ih_1;if(n<=c.jh_1&&f<=n){var v=10+P(n)|0,d=l(65);i=v-P(d)|0}else i=-1}}return i}function Ct(){s=this,this.q4v_1=L(l(97),l(122)),this.r4v_1=L(l(97),l(102)),this.s4v_1=L(l(65),l(90)),this.t4v_1=L(l(65),l(70)),this.u4v_1=L(l(48),l(57)),this.v4v_1=F([new I(l(95)),new I(l(45)),new I(l(33)),new I(l(46)),new I(l(126)),new I(l(39)),new I(l(40)),new I(l(41)),new I(l(42))]),this.w4v_1=c([l(48),l(49),l(50),l(51),l(52),l(53),l(54),l(55),l(56),l(57),l(65),l(66),l(67),l(68),l(69),l(70)]),this.x4v_1=l(65533)}function qt(){return null==s&&new Ct,s}function Ot(t,n,i){if(i=i===S?-1:i,Z(n,this),Q(this,Ot),this.x4w_1=t,this.y4w_1=n,this.z4w_1=i,!(this.z4w_1>=-1))throw b(g("Failed requirement."))}function zt(){return o}function At(t){var n=t.d4w_1;return J("internalDecoded",1,X,(function(t){return At(t)}),null),n.h2()}function Tt(t){var n=t.e4w_1;return J("internalEncoded",1,X,(function(t){return Tt(t)}),null),n.h2()}function It(){this.a4x_1=1,this.b4x_1=2}function Dt(t,n){if(this.b4w_1=!(t===ct().u4u_1),this.c4w_1=!(n===ct().u4u_1),this.d4w_1=j((i=this,e=n,r=t,function(){return i.b4w_1||e===ct().u4u_1?qt().v4w(r):e})),this.e4w_1=j(function(t,n,i){return function(){return t===ct().u4u_1?n.c4x(i):t}}(t,this,n)),t===ct().u4u_1&&n===ct().u4u_1)throw b("Neither encoded nor decoded");var i,e,r}function jt(t){if(Rt.call(this,t,t),null!=t&&0!==C(t))throw b(g("Expected empty value, got: "+t));this.i4x_1=!0}function Mt(){u=this,this.h4v_1=new jt(null),this.i4v_1=new jt("")}function Nt(){return null==u&&new Mt,u}function Rt(t,n){Nt(),Dt.call(this,t,n)}function Pt(){a=this,this.g4w_1=new Ft(null,null),this.h4w_1=new Ft("","")}function Lt(){return null==a&&new Pt,a}function Ft(t,n){var i;Lt(),Dt.call(this,t,n),this.t4x_1=j((i=t,function(){var t=i;if(null==t)return vt().v4u_1;var n,e=t,r=new pt,s=0;t:for(;;){var o=D(e,l(47),s);if(n=o,!(o>-1))break t;if(sP(h)}if(r)return zt()}while(0<=i);return zt()}function Vt(){var t;this.u4x_1=j((t=this,function(){var n=t.g24();return n.d1()?null:it(n)})),this.v4x_1=j(function(t){return function(){var n=t.l4w();if(null==n)return Nt().a4w(null);var i,e=n,r=et(e,l(64)),s=Nt();return i=r===zt()?null:e.substring(0,r),s.a4w(i)}}(this)),this.w4x_1=j(function(t){return function(){return Ut(t).d4x()}}(this)),this.x4x_1=j(function(t){return function(){return Ut(t).f4w()}}(this)),this.y4x_1=j(function(t){return function(){var n=t.l4w();if(null==n)return null;var i,e=n,r=et(e,l(64)),s=Ht(0,e);if(s===zt()){var o=r+1|0;i=e.substring(o)}else{var u=r+1|0;i=e.substring(u,s)}var a=i;return qt().w4w(a)}}(this)),this.z4x_1=j(function(t){return function(){var n=t.l4w();if(null==n)return-1;var i=n,e=Ht(0,i);if(e===zt())return-1;var r,s=qt(),o=e+1|0,u=i.substring(o),a=s.w4w(u);try{r=rt(a)}catch(t){if(!(t instanceof st))throw t;r=-1}return r}}(this))}function Bt(t){var n=t.n4y_1;return J("ssp",1,X,(function(t){return Bt(t)}),null),n.h2()}function Yt(t,n){var i=n.h4y_1.f4w();null!=i&&t.o5("//").o5(i);var e=n.i4y_1.f4w();null!=e&&t.o5(e),n.j4y_1.n19()||t.p5(l(63)).o5(n.j4y_1.f4w())}function Wt(t){var n=t.z4y_1;return J("uriString",1,X,(function(t){return Wt(t)}),null),n.h2()}function Gt(t){return function(){return Nt().a4w((n=t,Yt(i=U(),n),i.toString()));var n,i}}function Kt(t,n,i,e,r){var s;Vt.call(this),this.g4y_1=t,this.h4y_1=Nt().n4x(n),this.i4y_1=null==i?Lt().g4w_1:i,this.j4y_1=Nt().n4x(e),this.k4y_1=Nt().n4x(r),this.l4y_1=!0,this.m4y_1=null==this.g4y_1,this.n4y_1=j(Gt(this)),this.o4y_1=j((s=this,function(){return Bt(s).f4w()})),this.p4y_1=j(function(t){return function(){return Bt(t).d4x()}}(this)),this.q4y_1=j(function(t){return function(){return t.h4y_1.d4x()}}(this)),this.r4y_1=j(function(t){return function(){return t.h4y_1.f4w()}}(this)),this.s4y_1=j(function(t){return function(){return t.i4y_1.f4w()}}(this)),this.t4y_1=j(function(t){return function(){return t.i4y_1.d4x()}}(this)),this.u4y_1=j(function(t){return function(){return t.j4y_1.d4x()}}(this)),this.v4y_1=j(function(t){return function(){return t.j4y_1.f4w()}}(this)),this.w4y_1=j(function(t){return function(){return t.k4y_1.d4x()}}(this)),this.x4y_1=j(function(t){return function(){return t.k4y_1.f4w()}}(this)),this.y4y_1=j(function(t){return function(){return t.i4y_1.g24()}}(this)),this.z4y_1=j(function(t){return function(){var n=U();return null!=t.g4y_1&&n.o5(t.g4y_1).p5(l(58)),Yt(n,t),t.k4y_1.n19()||n.p5(l(35)).o5(t.a4z()),n.toString()}}(this))}function Xt(t){var n=t.w4z_1;return J("cachedString",1,X,(function(t){return Xt(t)}),null),n.h2()}function Jt(t,n,i){var e;this.b4z_1=t,this.c4z_1=n,this.d4z_1=null==i?Nt().h4v_1:i,this.e4z_1=!1,this.f4z_1=null==this.b4z_1,this.g4z_1=j((e=this,function(){return e.c4z_1.f4w()})),this.h4z_1=j(function(t){return function(){return t.c4z_1.d4x()}}(this)),this.i4z_1=null,this.j4z_1=null,this.k4z_1=null,this.l4z_1=null,this.m4z_1=null,this.n4z_1=null,this.o4z_1=j(function(t){return function(){return t.d4z_1.d4x()}}(this)),this.p4z_1=j(function(t){return function(){return t.d4z_1.f4w()}}(this)),this.q4z_1=ht(),this.r4z_1=null,this.s4z_1=null,this.t4z_1=null,this.u4z_1=null,this.v4z_1=-1,this.w4z_1=j(function(t){return function(){var n=U();return n.o5(t.b4z_1).p5(l(58)),n.o5(t.x4z()),t.d4z_1.n19()||n.p5(l(35)).o5(t.a4z()),n.toString()}}(this))}function Zt(t){var n=t.f50_1;return J("cachedSsi",1,X,(function(t){return Zt(t)}),null),n.h2()}function Qt(t){var n=t.g50_1;return J("cachedFsi",1,X,(function(t){return Qt(t)}),null),n.h2()}function tn(t){var n=t.k50_1;return J("ssp",1,X,(function(t){return tn(t)}),null),n.h2()}function nn(t){var n=t.l50_1;return J("authorityPart",1,X,(function(t){return nn(t)}),null),n.h2()}function en(t){var n=t.o50_1;return J("pathPart",1,X,(function(t){return en(t)}),null),n.h2()}function rn(t){var n=t.s50_1;return J("queryPart",1,X,(function(t){return rn(t)}),null),n.h2()}function sn(t){var n=t.v50_1;return J("fragmentPart",1,X,(function(t){return sn(t)}),null),n.h2()}function on(){}function un(t){var n;Vt.call(this),this.e50_1=t,this.f50_1=j((n=this,function(){return D(n.e50_1,l(58))})),this.g50_1=j(function(t){return function(){return D(t.e50_1,l(35),Zt(t))}}(this)),this.h50_1=j(function(t){return function(){var n=Zt(t);return n===zt()||t.e50_1.length!==(n+1|0)&&R(t.e50_1,n+1|0)===l(47)}}(this)),this.i50_1=j(function(t){return function(){return Zt(t)===zt()}}(this)),this.j50_1=j(function(t){return function(){var n=Zt(t);return n===zt()?null:t.e50_1.substring(0,n)}}(this)),this.k50_1=j(function(t){return function(){var n,i=Zt(t),e=Qt(t),r=Nt();if(e===zt()){var s=i+1|0;n=t.e50_1.substring(s)}else{var o=i+1|0;n=t.e50_1.substring(o,e)}return r.a4w(n)}}(this)),this.l50_1=j(function(t){return function(){var n=h.y50(t.e50_1,Zt(t));return Nt().a4w(n)}}(this)),this.m50_1=j(function(t){return function(){return nn(t).d4x()}}(this)),this.n50_1=j(function(t){return function(){return nn(t).f4w()}}(this)),this.o50_1=j(function(t){return function(){var n=Zt(t),i=n>-1&&((n+1|0)===t.e50_1.length||R(t.e50_1,n+1|0)!==l(47))?null:h.z50(t.e50_1,n);return Lt().a4w(i)}}(this)),this.p50_1=j(function(t){return function(){return en(t).d4x()}}(this)),this.q50_1=j(function(t){return function(){return en(t).f4w()}}(this)),this.r50_1=j(function(t){return function(){return en(t).g24()}}(this)),this.s50_1=j(function(t){return function(){var n,i=D(t.e50_1,l(63),Zt(t));if(i===zt())n=null;else{var e,r=Qt(t);if(r===zt()){var s=i+1|0;e=t.e50_1.substring(s)}else if(r=this.x4u_1)throw m("Index "+t+" should be less than "+this.x4u_1);if(null==this.w4u_1)throw b(g("Required value was null."));return this.w4u_1[t]},v(pt).a4v=function(t){if(null!=this.y4u_1){if((this.z4u_1+1|0)===wt(this).length){for(var n=0,i=_(wt(this).length,2),e=k(Array(i),null);nr&&i.q7(t,r,o);for(var u=(r=o)+1|0;u>4]),i.p5(this.w4v_1[15&c[d]])}while(v-1&&(t.o5(" at index "),t.n5(this.z4w_1)),t.o5(": "),t.o5(this.x4w_1),t.toString()},v(Dt).d4x=function(){return At(this)},v(Dt).f4w=function(){return Tt(this)},v(jt).n19=function(){return this.i4x_1},v(Mt).n4x=function(t){return null==t?this.h4v_1:t},v(Mt).a4w=function(t){return this.o4x(t,ct().u4u_1)},v(Mt).o4x=function(t,n){return null==t?this.h4v_1:0===C(t)?this.i4v_1:null==n?this.h4v_1:0===C(n)?this.i4v_1:new Rt(t,n)},v(Rt).n19=function(){return!1},v(Rt).c4x=function(t){return qt().s4w(t)},v(Pt).a4w=function(t){return this.o4x(t,ct().u4u_1)},v(Pt).o4x=function(t,n){return null==t?this.g4w_1:0===C(t)?this.h4w_1:new Ft(t,n)},v(Pt).i4w=function(t){var n=t.b4w_1?t.f4w():t.d4x();return null==n||0===C(n)||nt(n,"/")?t:new Ft(t.b4w_1?"/"+t.f4w():ct().u4u_1,t.c4w_1?"/"+t.d4x():ct().u4u_1)},v(Ft).c4x=function(t){return qt().z4v(t,"/")},v(Ft).g24=function(){var t=this.t4x_1;return J("pathSegments",1,X,(function(t){return t.g24()}),null),t.h2()},v(Vt).d=function(t){return this.m4w(null!=t&&ut(t,bt)?t:ot())},v(Kt).l4w=function(){var t=this.r4y_1;return J("encodedAuthority",1,X,(function(t){return t.l4w()}),null),t.h2()},v(Kt).a4z=function(){var t=this.x4y_1;return J("encodedFragment",1,X,(function(t){return t.a4z()}),null),t.h2()},v(Kt).g24=function(){var t=this.y4y_1;return J("pathSegments",1,X,(function(t){return t.g24()}),null),t.h2()},v(Kt).equals=function(t){return!(null==t||!ut(t,bt))&&this.toString()===g(t)},v(Kt).hashCode=function(){return at(this.toString())},v(Kt).toString=function(){return Wt(this)},v(Kt).n4w=function(){return(new mt).j4v(this.g4y_1).l4v(this.h4y_1).m4v(this.i4y_1).n4v(this.j4y_1).o4v(this.k4y_1)},v(Kt).d=function(t){return this.m4w(null!=t&&ut(t,bt)?t:ot())},v(Jt).x4z=function(){var t=this.g4z_1;return J("encodedSchemeSpecificPart",1,X,(function(t){return t.x4z()}),null),t.h2()},v(Jt).a4z=function(){var t=this.p4z_1;return J("encodedFragment",1,X,(function(t){return t.a4z()}),null),t.h2()},v(Jt).equals=function(t){return!(null==t||!ut(t,bt))&&this.toString()===g(t)},v(Jt).hashCode=function(){return at(this.toString())},v(Jt).toString=function(){return Xt(this)},v(Jt).n4w=function(){return(new mt).j4v(this.b4z_1).k4v(this.c4z_1).o4v(this.d4z_1)},v(Jt).d=function(t){return this.m4w(null!=t&&ut(t,bt)?t:ot())},v(on).y50=function(t,n){var i,e=t.length;if(e>(n+2|0)&&R(t,n+1|0)===l(47)&&R(t,n+2|0)===l(47)){var r=n+3|0;t:for(;r(n+2|0)&&R(t,n+1|0)===l(47)&&R(t,n+2|0)===l(47)){i=n+3|0;t:for(;i=0&&!i.d1()&&t.o3x_1!==t.q3x_1){t.u3x("\n");try{t.h3x_1=pt();var e=t.q3x_1,r=0;if(r":"/>":">";t.s43_1.p7(i)}function Ze(t,n){Ct.call(this,t,n)}function Qe(t,n,i,e){var r,s,o,u=i;if(i===mn(9)||i===mn(10)||i===mn(13))o=!0;else{var a=mn(32),h=mn(55295),_=new gn(a,h),l=_.fk_1;o=bn(i,_.gk_1)<=0&&0<=bn(i,l)}if(o)s=!0;else{var c=mn(57344),f=mn(65533),v=new gn(c,f),d=v.fk_1;s=bn(i,v.gk_1)<=0&&0<=bn(i,d)}if(s){var w=kn(i),p=$n(xn(w));r=yn(p)}else r=yn($n(0));var m=r;if(u===mn(0))throw ht("XML documents may not contain null strings directly or indirectly");if(m===ot(38))t.p7("&");else if(m!==ot(60)||e.equals(hr()))if(m===ot(62)&&e.equals(cr()))t.p7(">");else if(m===ot(34)&&e.equals(_r()))t.p7(""");else if(m===ot(39)&&e.equals(lr()))t.p7("'");else{var g,b=mn(1),$=mn(8),y=new gn(b,$),k=y.fk_1;if(bn(u,y.gk_1)<=0&&0<=bn(u,k)||u===mn(11)||u===mn(12))g=!0;else{var x=mn(14),S=mn(31),E=new gn(x,S),C=E.fk_1;g=bn(u,E.gk_1)<=0&&0<=bn(u,C)}if(g){var q=n.v43_1.v9_1;0===q?ar(n,u):1===q&&ur(t,u)}else{var O,z=mn(127),A=mn(132),T=new gn(z,A),I=T.fk_1;if(bn(u,T.gk_1)<=0&&0<=bn(u,I))O=!0;else{var D=mn(134),j=mn(159),M=new gn(D,j),N=M.fk_1;O=bn(u,M.gk_1)<=0&&0<=bn(u,N)}if(O){var R=n.v43_1.v9_1;0===R?t.p5(m):1===R&&ur(t,u)}else{var P=mn(55296),L=mn(57343),F=new gn(P,L),U=F.fk_1;if(bn(u,F.gk_1)<=0&&0<=bn(u,U)||u===mn(65534)||u===mn(65535))ar(n,u);else{var H=mn(65535);if(Sn(kn(u),kn(H))>0){var V=mn(65536),B=mn(kn(u)-kn(V)|0),Y=mn(kn(B)>>>10|0),W=mn(55296),G=mn(kn(Y)+kn(W)|0),K=mn(1023),X=mn(kn(B)&kn(K)),J=mn(56320),Z=mn(kn(X)+kn(J)|0),Q=kn(G),tt=$n(xn(Q));t.p5(yn(tt));var nt=kn(Z),it=$n(xn(nt));t.p5(yn(it))}else t.p5(m)}}}}else t.p7("<")}function tr(t,n,i){for(var e=pr(n).v();e.w();){var r=e.y().sj_1;Qe(t.s43_1,t,r,i)}}function nr(t){0===t.z43_1.v9_1&&(t.u43_1.equals(Re())||t.m3y(null,null,null),t.z43_1=vr())}function ir(t,n){var i=t.h3x_1;if(t.b44_1>=0&&!i.d1()&&t.b44_1!==t.p3w()){t.u3x("\n");try{t.h3x_1=pt();for(var e=function(t,n){if(!t.v().w())return pt();var i=rt(),e=null,r=0;if(r0&&null!=i&&t.a44_1.c44(i)!=n&&t.h3y(i,n)}function rr(t,n,i,e){t.s43_1.p5(ot(32)),Q(n)>0&&t.s43_1.p7(n).p5(ot(58)),t.s43_1.p7(i).p5(ot(61));var r=-1===xt(e,ot(34))?new Cn(new En(ot(34)),_r()):new Cn(new En(ot(39)),lr()),s=r.oe().la_1,o=r.pe();t.s43_1.p5(s),tr(t,e,o),t.s43_1.p5(s)}function sr(){this.d44_1=-1,this.e44_1=2147483647}function or(t,n){Ct.call(this,t,n)}function ur(t,n){t.p7("&#x").p7(qn(n,16)).p5(ot(59))}function ar(t,n){throw ht("In xml "+t.v43_1.h44_1+" the character 0x"+qn(n,16)+" is not valid")}function hr(){return Ye(),x}function _r(){return Ye(),S}function lr(){return Ye(),E}function cr(){return Ye(),C}function fr(){return We(),O}function vr(){return We(),z}function dr(){return We(),T}function wr(t,n,i,e){n=n===et||n,i=i===et?Re():i,e=e===et?yr():e,Dr.call(this),this.s43_1=t,this.t43_1=n,this.u43_1=i,this.v43_1=e,this.w43_1=!0,this.x43_1=!1,this.y43_1=Bt(Array(12),null),this.z43_1=fr(),this.a44_1=new Ar,this.b44_1=-1}function pr(t){return new gr(t)}function mr(t){this.p44_1=t,this.o44_1=0}function gr(t){this.q44_1=t}function br(){if(N)return G;N=!0,j=new $r("XML10",0,"1.0"),M=new $r("XML11",1,"1.1")}function $r(t,n,i){Ct.call(this,t,n),this.h44_1=i}function yr(){return br(),M}function kr(t,n){var i=0===n?0:xr(t,n-1|0)/2|0,e=xr(t,n)/2|0;return Z(i,e)}function xr(t,n){return Y(t.d42_1[n],2)}function Sr(t,n){return Y(n,2)}function Er(t,n){return Y(n,2)+1|0}function Cr(t,n){return ft(t.c42_1[Sr(0,n)])}function qr(t,n){return ft(t.c42_1[Er(0,n)])}function Or(t){this.r44_1=t}function zr(t){this.t44_1=t,this.s44_1=0}function Ar(){this.b42_1=1,this.c42_1=Bt(Array(10),null),this.d42_1=new Int32Array(20),this.e42_1=0,this.f42_1=new Or(this)}function Tr(t,n){if(Q(t)>0){var i=t.toString();if(!Mr(i))throw Ce("Indents can only be whitespace or comments: "+i);n.s(new de(null,Pi(),i)),t.a8()}}function Ir(){this.v44_1="\x3c!----\x3e"}function Dr(t){t=t===et?pt():t,this.h3x_1=Wt(t)}function jr(){return Rr(),P}function Mr(t){var n;Rr();t:{for(var i=0;i=jr().length)&&jr()[t]}function Rr(){if(!L){L=!0;var t=Rn(33),n=ot(9);t[An(n)]=!0;var i=ot(10);t[An(i)]=!0;var e=ot(13);t[An(e)]=!0;var r=ot(32);t[An(r)]=!0,P=t}}function Pr(t,n){var i=t.item(n);return null==i||null!=i?i:X()}function Lr(){this.x44_1=1,this.y44_1=2,this.z44_1=3,this.a45_1=4,this.b45_1=5,this.c45_1=6,this.d45_1=7,this.e45_1=8,this.f45_1=9,this.g45_1=10,this.h45_1=11,this.i45_1=12}function Fr(t){this.j45_1=t,this.k45_1=0}function Ur(){}function Hr(){U=this,this.n45_1=Fn("xmlBoolean",Ln())}function Vr(t,n){var i;if(1!==t.nodeType)i=null;else{var e=(null!=t?t:X()).attributes,r=rt(),s=e.length,o=0;if(o=d;){switch(null==w?-1:w.v9_1){case 1:var p=new di(l,!0);Ve(p,t,v),De(t,p),Be(p,v,t),p.z1i();break;case 9:case 4:l.appendChild(ft(l.ownerDocument).createTextNode(t.s3w()));break;case 5:l.appendChild(ft(l.ownerDocument).createCDATASection(t.s3w()));break;case 3:l.appendChild(ft(l.ownerDocument).createComment(t.s3w()));break;case 8:throw Ce("Entity references are not expected here");case 10:throw Bn("Attributes are not expected in the event stream")}w=t.w()?t.y():null}""===v.o2("")&&v.i2("");var m=Rt(v.d2()),g=tn(m,Jr),b=Lt(nn(g,(c=l,function(t){var n=t.g2(),i=t.h2();return c.setAttributeNS("http://www.w3.org/2000/xmlns/",""===n?"xmlns":"xmlns:"+n,i),new xe(n,i)}))),$=(new XMLSerializer).serializeToString(l instanceof Node?l:X()),y=xt($,ot(62),19)+1|0,k=($.length-19|0)-3|0;return os(b,$.substring(y,k))}catch(t){if(t instanceof ze)throw Oe("Failure to parse children into string at "+f,t);if(t instanceof fn)throw Oe("Failure to parse children into string at "+f,t);throw t}}function Jr(t){var n=t.g2(),i=t.h2();return""!==n||!(""===i)}function Zr(){}function Qr(t){return Yn(t),ts.call(t),t}function ts(){ln(this,ts)}function ns(t,n){t||console.error("Assertion failed: "+n())}function is(t){t||console.error("Assertion failed")}function es(){}function rs(t){return function(t,n){return ss(pt(),t,n),n}(t,wt(K(hs)))}function ss(t,n,i){return hs.call(i),i.p45_1=ee().q40(t),i.q45_1=n,i}function os(t,n){return ss(t,n,wt(K(hs)))}function us(){V=this,this.r45_1=new es}function as(t){return'"'+t.n3w()+" -> "+t.l3w()+'"'}function hs(){null==V&&new us}function _s(t){return t.prototype}function ls(t,n,i,e){return function(t,n,i){for(var e=0,r=Y(t.length,2),s=Bt(Array(r),null);e");var a=e.toString()+n+"",h=(new DOMParser).parseFromString(a,"text/xml");return new ui(null!=h?h:X())}(0,t,n));this.z45_1=cs(null,[],[]),this.yq().u3w()===Ai()&&vs(this)}function ps(t){var n=document.implementation,i=t.e40(),e=n.createDocument(null==i?"":i,Pe(t));return null!=e?e:X()}return it(ii,"DomReader$$o$iterator$slambda",nt,W,et,et,et,et,[1]),it(Yi,"IterableNamespaceContext",Nt),it(oi,et,nt,et,[Yi]),it(Ae,"XmlReader",Nt),it(ui,"DomReader",nt,et,[Ae]),it(fi,"Companion",bt),it(vi,et,nt),it(He,"XmlWriter",Nt),it(Dr,"PlatformXmlWriterBase",nt,et,[He]),it(di,"DomWriter",nt,Dr,[Dr,He],(function(t){return function(t,n){return t=t===et?Re():t,di.call(n,null,et,t),n}(t,wt(K(di)))})),it(Oi,"EventType",nt,Ct),it(wi,"START_DOCUMENT",nt,Oi),it(pi,"START_ELEMENT",nt,Oi),it(mi,"END_ELEMENT",nt,Oi),it(gi,"COMMENT",nt,Oi),it(bi,"TEXT",nt,Oi),it($i,"CDSECT",nt,Oi),it(yi,"DOCDECL",nt,Oi),it(ki,"END_DOCUMENT",nt,Oi),it(xi,"ENTITY_REF",nt,Oi),it(Si,"IGNORABLE_WHITESPACE",nt,Oi),it(Ei,"ATTRIBUTE",nt,Oi),it(Ci,"PROCESSING_INSTRUCTION",nt,Oi),it(Hi,"Companion",bt,et,[It]),it(Bi,"Namespace",Nt),it(Gi,"QNameSerializer",bt,et,[It]),it(Xi,"SimpleIterator",nt),it(Ji,"SimpleNamespace",nt,et,[Bi]),it(ie,"Companion",bt,et,[It]),it(oe,"SimpleNamespaceContext",nt,et,[Yi],(function(){return t=wt(K(oe)),oe.call(t,[]),t;var t}),et,{0:ee}),it(ue,"XMLConstants",bt),it(le,"XmlBufferedReaderBase",nt,et,[Ae]),it(ae,"XmlBufferedReader",nt,le),it(ce,"XmlDelegatingReader",nt,et,[Ae]),it(ve,"Companion",bt),it(Se,"XmlEvent",nt),it(de,"TextEvent",nt,Se),it(we,"ProcessingInstructionEvent",nt,de),it(pe,"EntityRefEvent",nt,de),it(me,"EndDocumentEvent",nt,Se),it($e,"NamedEvent",nt,Se),it(ge,"EndElementEvent",nt,$e),it(be,"StartDocumentEvent",nt,Se),it(ye,"StartElementEvent",nt,$e),it(ke,"Attribute",nt,Se),it(xe,"NamespaceImpl",nt,et,[Bi]),it(ts,"IOException",nt,Kn,et,(function t(){var n=Qr(wt(K(ts)));return ln(n,t),n})),it(ze,"XmlException",nt,ts,et,(function t(){var n,i=(Qr(n=wt(K(ze))),ze.call(n),n);return ln(i,t),i})),it(je,"Companion",bt),it(Ne,"XmlDeclMode",nt,Ct),it(Ze,"EscapeMode",nt,Ct),it(sr,"Companion",bt),it(or,"WriteState",nt,Ct),it(wr,"KtXmlWriter",nt,Dr,[Dr,He]),it(mr,et,nt),it(gr,et,nt),it($r,"XmlVersion",nt,Ct),it(Or,et,nt,et,[Yi]),it(zr,et,nt),it(Ar,"NamespaceHolder",nt,et,et,Ar),it(Ir,"Companion",bt),it(Lr,"NodeConsts",bt),it(Fr,"NodeListIterator",nt),it(Ur,"ICompactFragment",Nt),it(Hr,"XmlBooleanSerializer",bt,et,[It]),it(Kr,"QName",nt),it(Zr,"XmlStreaming",bt),it(es,"Factory",nt,et,et,es),it(us,"Companion",bt),it(hs,"CompactFragment",nt,et,[Ur]),it(fs,"FragmentNamespaceContext",nt,oe),it(ds,"Companion",bt),it(ws,"XMLFragmentStreamReader",nt,ce),K(ii).x3v=function(t,n){var i=this.y3v(t,n);return i.bc_1=G,i.cc_1=null,i.mc()},K(ii).zc=function(t,n){return this.x3v(t instanceof J?t:X(),n)},K(ii).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=8,this.r3v_1=this.p3v_1.z3v_1,this.zb_1=1;continue t;case 1:if(null==this.r3v_1){this.zb_1=7;continue t}this.s3v_1=this.r3v_1.attributes,this.t3v_1=this.s3v_1.length,this.u3v_1=Z(0,this.t3v_1).v(),this.zb_1=2;continue t;case 2:if(!this.u3v_1.w()){this.zb_1=6;continue t}this.v3v_1=this.u3v_1.y();var n=this.s3v_1.item(this.v3v_1);if(this.w3v_1=null!=n&&null!=n?n:X(),"xmlns"===this.w3v_1.prefix){this.zb_1=4;var i=this.w3v_1.localName,e=null==i?this.w3v_1.name:i,r=this.w3v_1;if((t=this.q3v_1.te(new xe(e,r.value),this))===tt())return t;continue t}var s=this.w3v_1.prefix;if((null==s||0===Q(s))&&"xmlns"===this.w3v_1.localName){this.zb_1=3;var o=this.w3v_1;if((t=this.q3v_1.te(new xe("",o.value),this))===tt())return t;continue t}this.zb_1=5;continue t;case 3:case 4:this.zb_1=5;continue t;case 5:this.zb_1=2;continue t;case 6:this.r3v_1=this.r3v_1.parentElement,this.zb_1=1;continue t;case 7:return G;case 8:throw this.cc_1}}catch(t){var u=t;if(8===this.ac_1)throw u;this.zb_1=this.ac_1,this.cc_1=u}},K(ii).y3v=function(t,n){var i=new ii(this.p3v_1,n);return i.q3v_1=t,i},K(oi).h3w=function(t){var n=this.z3v_1;return null==n?null:Vr(n,t)},K(oi).i3w=function(t){var n=this.z3v_1;return null==n?null:Br(n,t)},K(oi).j3w=function(){return this},K(oi).v=function(){return ut((t=this,n=null,i=new ii(t,n),e=function(t,n){return i.x3v(t,n)},e.$arity=1,e)).v();var t,n,i,e},K(ui).l3w=function(){var t,n=this.g3w();if(null==n)t=null;else{var i=n.namespaceURI;t=null==i?"":i}var e=t;if(null==e)throw Ce("Only elements have a namespace uri");return e},K(ui).m3w=function(){var t,n=this.g3w();if(null==n)t=null;else{var i=n.localName;t=null==i?n.tagName:i}var e=t;if(null==e)throw Ce("Only elements have a local name");return e},K(ui).n3w=function(){var t,n=this.g3w();if(null==n)t=null;else{var i=n.prefix;t=null==i?"":i}var e=t;if(null==e)throw Ce("Only elements have a prefix");return e},K(ui).o3w=function(){return this.c3w_1},K(ui).p3w=function(){return this.e3w_1},K(ui).q3w=function(){var t=ei(this);if(7!==t.nodeType)throw ht(at("Failed requirement."));return(null!=t?t:X()).target},K(ui).r3w=function(){var t=ei(this);if(7!==t.nodeType)throw ht(at("Failed requirement."));return(null!=t?t:X()).data},K(ui).s3w=function(){var t,n=this.b3w_1,i=null==n?null:n.nodeType;if(5===(null==i?null:i)||8===(null==i?null:i)||3===(null==i?null:i)||4===(null==i?null:i)){var e=this.b3w_1;t=(null!=e&&null!=e?e:X()).data}else{if(7!==(null==i?null:i))throw Ce("Node is not a text node");var r=this.b3w_1,s=null!=r&&null!=r?r:X();t=s.nodeName+" "+s.data}return t},K(ui).t3w=function(){var t=this.b3w_1,n=null==t||null!=t?t:X(),i=null==n?null:n.attributes,e=null==i?null:i.length;return null==e?0:e},K(ui).u3w=function(){var t=this.b3w_1;return null==t?Ni():ai(t,this.d3w_1)},K(ui).v3w=function(){return si(this.b3w_1,_t()).toString()},K(ui).g3w=function(){var t,n=this.b3w_1,i=null==n?null:n.nodeType;if(1===(null==i?null:i)){var e=this.b3w_1;t=null!=e&&null!=e?e:X()}else t=null;return t},K(ui).w3w=function(){return new oi(this)},K(ui).x3w=function(){for(var t=function(t){var n,i=t.f3w_1;if(null==i){var e=ri(t).attributes,r=rt(),s=e.length,o=0;if(o0&&function(t){for(var n=t,i=n.firstChild;null!=i;){var e=i.nextSibling;Yr(i)&&n.removeChild(i),i=e}}(this.g3y())}var h,_=function(t,n){return t.createElementNS(n.e40(),Pe(n))}(this.g3y(),Fe(t,n,i));ft(this.m3x_1).appendChild(_),this.m3x_1=_},K(di).c3y=function(t){_i(this);var n,i,e=this.m3x_1;if(null==e)li(this,(n=this,i=t,function(t){return n.c3y(i),G}));else{var r=this.g3y().createComment(t);e.appendChild(r)}},K(di).j3y=function(t){this.o3x_1=-1;var n,i,e=this.m3x_1;if(null==e){if(!kt(t))throw Ce("Not in an element -- text");li(this,(n=this,i=t,function(t){return n.u3x(i),G}))}else{var r=this.g3y().createTextNode(t);e.appendChild(r)}},K(di).k3y=function(t){this.o3x_1=-1;var n=this.g3y().createCDATASection(t),i=this.m3x_1;if(null==(null==i?null:i.appendChild(n)))throw Ce("Not in an element -- cdsect")},K(di).d3y=function(t){hi(this,2147483647);var n,i,e=this.m3x_1,r=null==e?null:e.nodeType;if(1!==(null==r?null:r))throw Ce("Document already started");if(null==this.l3x_1)li(this,(n=this,i=t,function(t){return n.d3y(i),G}));else{var s,o=xt(t,ot(32));if(o<0)s=St(t,"");else{var u=t.substring(0,o),a=o+1|0,h=t.substring(a);s=St(u,h)}var _=s,l=_.oe(),c=_.pe(),f=this.g3y().createProcessingInstruction(l,c);this.g3y().appendChild(f)}},K(di).e3y=function(t,n){var i,e,r,s=this.m3x_1;if(null==s)li(this,(i=this,e=t,r=n,function(t){return i.e3y(e,r),G}));else{var o=this.g3y().createProcessingInstruction(t,n);s.appendChild(o)}this.o3x_1=-1},K(di).u3x=function(t){var n,i,e=this.m3x_1;if(null==e)li(this,(n=this,i=t,function(t){return n.u3x(i),G}));else if(9!==e.nodeType){var r=this.g3y().createTextNode(t);e.appendChild(r)}this.o3x_1=-1},K(di).l3y=function(t,n,i,e){var r,s=ci(this,"attribute");null!=t&&0!==Q(t)||null!=i&&0!==Q(i)?null==i||0===Q(i)?s.setAttributeNS(t,n,e):(r=null==t?"":t,s.setAttributeNS(r,i+":"+n,e)):s.setAttribute(n,e)},K(di).f3y=function(t){hi(this,2147483647);var n,i,e=this.l3x_1;if(null==e)li(this,(n=this,i=t,function(t){return n.f3y(i),G}));else{var r=Et(t,[" "],et,3),s=r.h1(0),o=r.n()>1?r.h1(1):"",u=r.n()>2?r.h1(2):"",a=e.implementation.createDocumentType(s,o,u);e.appendChild(a)}},K(di).m3y=function(t,n,i){hi(this,2147483647),this.r3x_1=t,this.s3x_1=n,this.t3x_1=i},K(di).n3y=function(){this.m3x_1=null},K(di).o3y=function(t,n,i){this.q3x_1=this.q3x_1-1|0,hi(this,2147483647),this.m3x_1=ci(this,"No current element or no parent element").parentNode},K(di).p3y=function(t){var n=this.m3x_1;return null==n?null:Vr(n,t)},K(di).z1i=function(){var t;ns(0===this.q3x_1,(t=this,function(){return"Closing a dom writer but not all elements were closed (depth:"+t.q3x_1+")"})),this.m3x_1=null},K(wi).s3y=function(t){return new be(t.v3w(),t.g2c(),t.y3w(),t.z3w())},K(wi).t3y=function(t,n){t.m3y(n.g2c(),n.y3w(),n.z3w())},K(pi).s3y=function(t){return new ye(t.v3w(),t.l3w(),t.m3w(),t.n3w(),function(t){for(var n=0,i=t.t3w(),e=Bt(Array(i),null);n")},K(wr).f3y=function(t){if(ir(this,2147483647),nr(this),!this.z43_1.equals(vr()))throw Ce("Writing a DTD is only allowed once, in the prolog");this.z43_1=(We(),A);var n=this.s43_1.p7("")},K(wr).d3y=function(t){Je(this,!1),ir(this,2147483647),nr(this),this.s43_1.p7("")},K(wr).e3y=function(t,n){Je(this,!1),ir(this,2147483647),nr(this),this.s43_1.p7("0&&this.s43_1.p5(ot(32)).p7(n),this.s43_1.p7("?>")},K(wr).i3y=function(t,n,i){if(Je(this,!1),e=this,r=r===et?e.p3w():r,ir(e,r),nr(this),this.z43_1.equals((We(),I)))throw Ce("Attempting to write tag after the document finished");var e,r,s;if(this.z43_1=dr(),""===t)s="";else{var o=this.i44(t);s=null!=o?o:null==i?this.a44_1.j44():i}var u=s;(function(t,n,i,e,r){var s=Y(n,3);if(t.y43_1.length<(s+3|0)){var o=t.y43_1.length+12|0,u=Bt(Array(o),null),a=t.y43_1;pn(a,u,0,0,s),t.y43_1=u}var h=s;s=h+1|0,t.y43_1[h]=i;var _=s;s=_+1|0,t.y43_1[_]=e,t.y43_1[s]=r})(this,this.p3w(),null==t?"":t,u,n),this.s43_1.p5(ot(60)),Q(u)>0&&(this.s43_1.p7(u),this.s43_1.p5(ot(58))),this.s43_1.p7(n),this.x43_1=!0,this.a44_1.q41(),er(this,t,u)},K(wr).o3y=function(t,n,i){if(this.a44_1.p41(),ir(this,2147483647),(null==t?"":t)!==Ge(this,this.p3w())||Xe(this,this.p3w())!==n)throw ht(" does not match start");if(this.x43_1)Je(this,!0);else{this.s43_1.p7("0&&(this.s43_1.p7(e),this.s43_1.p5(ot(58))),this.s43_1.p7(n),this.s43_1.p5(ot(62))}},K(wr).c3y=function(t){Je(this,!1),ir(this,2147483647),nr(this);var n=!1;this.s43_1.p7("\x3c!--");for(var i=pr(t).v();i.w();){var e=i.y().sj_1,r=ot(45),s=An(r);e===mn(s)?n?(n=!1,this.s43_1.p7("-")):(n=!0,this.s43_1.p5(ot(45))):Qe(this.s43_1,this,e,hr())}this.s43_1.p7("--\x3e")},K(wr).j3y=function(t){Je(this,!1),tr(this,t,cr()),this.b44_1=-1},K(wr).k3y=function(t){Je(this,!1);var n=0;this.s43_1.p7(""),this.b44_1=-1},K(wr).u3x=function(t){Je(this,!1),nr(this);for(var n=0,i=t.length;n0&&null!=t)&&Q(t)>0&&(this.k44(i,t),er(this,t,i)),!this.x43_1)throw st("illegal position for attribute");rr(this,null==(r=null!=i&&0!==Q(i)&&this.p3y(i)!=t?this.i44(t):i)?"":r,n,e)},K(wr).h3y=function(t,n){var i=this.a44_1.l44(t);if(null!=i){if(this.t43_1)return G;throw st(i!==n?"Attempting to set prefix to different values in the same tag":"Namespace attribute duplicated")}if(this.a44_1.m44(t,n),!this.x43_1)throw st("illegal position for attribute");Q(t)>0?rr(this,"xmlns",t,n):rr(this,"","xmlns",n)},K(wr).n3y=function(){if(is(0===this.p3w()),!this.z43_1.equals(dr()))throw Ce("Attempting to end document when in invalid state: "+this.z43_1);for(;this.p3w()>0;)this.o3y(Ge(this,this.p3w()-1|0),Ke(this,this.p3w()-1|0),Xe(this,this.p3w()-1|0));this.q1f()},K(wr).k44=function(t,n){n!==this.p3y(t)&&this.a44_1.m44(t,n)},K(wr).p3y=function(t){return this.a44_1.c44(t)},K(wr).i44=function(t){return null==t?null:this.a44_1.n44(t)},K(wr).z1i=function(){this.a44_1.b1()},K(mr).w=function(){return this.o44_1=this.d42_1.length&&(this.d42_1=jn(this.d42_1,Y(this.d42_1.length,2))),this.d42_1[this.e42_1]=0===this.e42_1?0:this.d42_1[this.e42_1-1|0]},K(Ar).p41=function(){var t=kr(this,this.e42_1),n=t.ea_1,i=t.fa_1;if(n<=i)do{var e=n;n=n+1|0,this.c42_1[Sr(0,e)]=null,this.c42_1[Er(0,e)]=null}while(e!==i);this.d42_1[this.e42_1]=0,this.e42_1=this.e42_1-1|0},K(Ar).u44=function(){return this.d42_1[this.e42_1]},K(Ar).b1=function(){this.c42_1=Bt(Array(10),null),this.d42_1=new Int32Array(20),this.e42_1=0},K(Ar).n42=function(t){this.m44(t.n3w(),t.l3w())},K(Ar).m44=function(t,n){var i=this.e42_1>=1?this.d42_1[this.e42_1-1|0]:0,e=this.d42_1[this.e42_1];if(i=this.c42_1.length&&((s=this).c42_1=Dn(s.c42_1,Y(s.c42_1.length,2))),function(t,n,i){var e=t.c42_1,r=Sr(0,n),s=null==i?null:at(i);e[r]=null==s?"":s}(this,o,t),function(t,n,i){var e=t.c42_1,r=Er(0,n),s=null==i?null:at(i);e[r]=null==s?"":s}(this,o,n);var u=this.d42_1,a=this.e42_1;u[a]=u[a]+1|0},K(Ar).c44=function(t){var n,i=at(t);if("xml"===i)return"http://www.w3.org/XML/1998/namespace";if("xmlns"===i)return"http://www.w3.org/2000/xmlns/";t:{for(var e=Mn(this.u44()-1|0,0).v();e.w();){var r=e.y();if(Cr(this,r)===i){n=r;break t}}n=null}var s=null==n?null:qr(this,n);return null==s?0===Q(i)?"":null:s},K(Ar).n44=function(t){var n,i=at(t);if("http://www.w3.org/XML/1998/namespace"===i)n="xml";else if("http://www.w3.org/2000/xmlns/"===i)n="xmlns";else if(""===i){var e;t:{var r=Z(0,this.u44());if(gt(r,Yt)&&r.d1())e=!0;else{for(var s=r.v();s.w();){var o=Cr(this,s.y());if(0===Q(o)){e=!1;break t}}e=!0}}n=e?"":null}else{var u;t:{for(var a=Mn(this.u44()-1|0,0).v();a.w();){var h,_=a.y();if(qr(this,_)===i){var l;n:{var c=Z(_+1|0,this.u44());if(gt(c,Yt)&&c.d1())l=!0;else{for(var f=c.v();f.w();){var v=f.y();if(Cr(this,_)===Cr(this,v)){l=!1;break n}}l=!0}}h=l}else h=!1;if(h){u=_;break t}}u=null}n=null==u?null:Cr(this,u)}return n},K(Ar).v=function(){return new zr(this)},K(Ar).j44=function(){var t;do{t="n"+this.b42_1}while(null!=this.c44(t));return t},K(Ar).l44=function(t){var n=kr(this,this.e42_1),i=n.ea_1,e=n.fa_1,r=i,s=Nn(i,e,2);if(r<=s)do{var o=r;if(r=r+2|0,this.c42_1[Sr(0,o)]===t)return this.c42_1[Er(0,o)]}while(o!==s);return null},K(Ir).w44=function(t){for(var n=rt(),i=_t(),e=0,r=0,s=t.length;r");break;default:i.p5(o)}else switch(e){case 1:case 2:case 3:i.q7("\x3c!----\x3e",0,e),e=0,i.p5(o);break;case 0:case 4:i.p5(o);break;case 5:e=4,i.p5(ot(45)).p5(o);break;case 6:throw Ce("-- is not allowed to occur inside xml comment text")}}if(e>0)throw Ce("Indent can not contain unclosed comment");return Tr(i,n),n},K(Dr).q43=function(t){this.h3x_1=R.w44(t)},K(Fr).w=function(){return this.k45_1=0){if(vn(t,0)!==ot(123))throw ht("Not a valid qname literal");e=at(dn(t,1,r));var s=r+1|0,o=Q(t);i=at(dn(t,s,o))}else e=n.l3w(),i=at(t);return Gr(e,i)},t.$_$.o1=function(t,n,i){if(i.u3w().equals(Ti()))throw ht("Cannot really validly write an end element here");De(i,t),i.u3w().equals(Ai())&&Be(t,n,i)},t.$_$.p1=function(t){for(var n=t.length,i=wn(n),e=ot(32),r=0,s=t.length;r0&&i.c8(i.a()-1|0),i.toString()},t.$_$.q1=function(){return H},t})?e.apply(n,r):e)||(t.exports=s)},931:function(t,n,i){var e,r,s;r=[n,i(675),i(681),i(755)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M=Math.imul,N=n.$_$.m,R=i.$_$.i,P=n.$_$.a5,L=i.$_$.k1,F=n.$_$.qa,U=n.$_$.r4,H=n.$_$.sg,V=n.$_$.a,B=e.$_$.u2,Y=n.$_$.fg,W=e.$_$.p2,G=i.$_$.q,K=e.$_$.u,X=e.$_$.m1,J=n.$_$.gb,Z=n.$_$.fb,Q=n.$_$.hb,tt=n.$_$.f,nt=(e.$_$.o,e.$_$.c),it=n.$_$.d8,et=e.$_$.i,rt=e.$_$.n1,st=n.$_$.p4,ot=e.$_$.x,ut=e.$_$.v,at=e.$_$.g,ht=i.$_$.x,_t=i.$_$.z,lt=i.$_$.o1,ct=(i.$_$.o,n.$_$.x1),ft=n.$_$.u9,vt=i.$_$.l,dt=n.$_$.eb,wt=e.$_$.w1,pt=n.$_$.w9,mt=e.$_$.a,gt=e.$_$.u1,bt=e.$_$.o2,$t=n.$_$.sf,yt=n.$_$.ga,kt=n.$_$.z9,xt=e.$_$.l2,St=n.$_$.ha,Et=e.$_$.n2,Ct=i.$_$.q1,qt=i.$_$.l1,Ot=i.$_$.n,zt=i.$_$.i1,At=i.$_$.a1,Tt=i.$_$.m,It=n.$_$.d5,Dt=e.$_$.m2,jt=i.$_$.y,Mt=n.$_$.d,Nt=i.$_$.r,Rt=e.$_$.m,Pt=e.$_$.l,Lt=i.$_$.p1,Ft=n.$_$.fe,Ut=n.$_$.pe,Ht=i.$_$.p,Vt=n.$_$.qe,Bt=n.$_$.cf,Yt=n.$_$.f3,Wt=n.$_$.ye,Gt=n.$_$.ff,Kt=n.$_$.b4,Xt=n.$_$.ve,Jt=n.$_$.df,Zt=n.$_$.n3,Qt=n.$_$.xe,tn=n.$_$.ef,nn=n.$_$.u3,en=n.$_$.te,rn=n.$_$.ce,sn=e.$_$.v1,on=i.$_$.c,un=i.$_$.d,an=i.$_$.f,hn=i.$_$.j1,_n=i.$_$.e1,ln=i.$_$.f1,cn=n.$_$.ch,fn=n.$_$.i1,vn=n.$_$.lb,dn=n.$_$.o2,wn=e.$_$.d1,pn=e.$_$.k1,mn=e.$_$.l1,gn=e.$_$.t1,bn=n.$_$.p9,$n=n.$_$.k,yn=n.$_$.v,kn=i.$_$.k,xn=i.$_$.j,Sn=e.$_$.x1,En=n.$_$.l,Cn=n.$_$.u7,qn=n.$_$.c8,On=n.$_$.c7,zn=n.$_$.v5,An=(i.$_$.s,n.$_$.n4),Tn=n.$_$.p6,In=e.$_$.h,Dn=i.$_$.g1,jn=i.$_$.c1,Mn=e.$_$.s1,Nn=n.$_$.bh,Rn=n.$_$.ic,Pn=i.$_$.h1,Ln=i.$_$.t,Fn=i.$_$.u,Un=n.$_$.jh,Hn=n.$_$.f7,Vn=i.$_$.b,Bn=i.$_$.e,Yn=i.$_$.g,Wn=n.$_$.vg,Gn=i.$_$.b1,Kn=n.$_$.kc,Xn=n.$_$.ea,Jn=n.$_$.r2,Zn=n.$_$.ie,Qn=i.$_$.n1,ti=n.$_$.he,ni=n.$_$.vd,ii=n.$_$.y5,ei=i.$_$.h,ri=i.$_$.a,si=n.$_$.q9,oi=e.$_$.r2,ui=e.$_$.d,ai=n.$_$.fa,hi=n.$_$.ca,_i=e.$_$.f,li=e.$_$.n,ci=e.$_$.j,fi=e.$_$.k,vi=e.$_$.c1,di=e.$_$.w,wi=n.$_$.w5,pi=n.$_$.p7,mi=n.$_$.tb,gi=n.$_$.u,bi=n.$_$.s,$i=n.$_$.ba,yi=n.$_$.l8,ki=n.$_$.t5,xi=n.$_$.vc,Si=n.$_$.pc,Ei=n.$_$.nc,Ci=n.$_$.sc,qi=n.$_$.yc,Oi=n.$_$.r9,zi=n.$_$.ee,Ai=n.$_$.nd,Ti=i.$_$.d1,Ii=n.$_$.of,Di=n.$_$.yf,ji=n.$_$.n7,Mi=n.$_$.ma,Ni=n.$_$.jf,Ri=n.$_$.b2,Pi=n.$_$.c,Li=n.$_$.f1,Fi=n.$_$.x,Ui=e.$_$.q1,Hi=e.$_$.o1,Vi=i.$_$.m1,Bi=n.$_$.w4,Yi=e.$_$.a1,Wi=n.$_$.z4,Gi=e.$_$.y,Ki=n.$_$.x4,Xi=e.$_$.z,Ji=n.$_$.y4,Zi=e.$_$.b1,Qi=n.$_$.t1,te=n.$_$.y7,ne=n.$_$.m8,ie=n.$_$.e7,ee=n.$_$.ke,re=n.$_$.fd,se=n.$_$.hd,oe=i.$_$.v,ue=n.$_$.cg,ae=n.$_$.o8,he=n.$_$.x9,_e=e.$_$.k2,le=e.$_$.t2,ce=i.$_$.w,fe=n.$_$.be;function ve(t,n,i,e){return t=t===tt?this.f4r():t,n=n===tt?this.c4s():n,i=i===tt?this.x4s():i,e===tt?this.e4t(t,n,i):e.e4t.call(this,t,n,i)}function de(t){t.q34("namespaces",pe().a46_1.g34());var n=B(V(U().e7(),H([]),!1)),i=(F(n,W)?n:Y()).g34();return t.q34("content",i),P}function we(){r=this,this.a46_1=K(G()),this.b46_1=X("compactFragment",[],de)}function pe(){return null==r&&new we,r}function me(t){var n=B(V(U().e7(),H([]),!1)),i=(F(n,W)?n:Y()).g34();t.q34("text",i);var e=et();return t.q34("element",rt("element",e,[],ge)),P}function ge(t){return P}function be(t){var n=B(V(U().e7(),H([]),!1)),i=(F(n,W)?n:Y()).g34();return t.q34("type",i),t.q34("value",ye().e46_1),P}function $e(){s=this,this.d46_1=ut(ot(st),ot(st));var t=et();this.e46_1=rt("org.w3c.dom.Node",t,[],me);var n=at();this.f46_1=rt("node",n,[],be)}function ye(){return null==s&&new $e,s}function ke(t){var n=B(V(U().e7(),H([]),!1)),i=(F(n,W)?n:Y()).g34();t.q34("namespace",i,tt,!0);var e=B(V(U().e7(),H([]),!1)),r=(F(e,W)?e:Y()).g34();return t.q34("localname",r),t.q34("attributes",Se().i46_1.g34()),t.q34("content",K(ye()).g34()),P}function xe(){o=this,this.i46_1=ut(ot(st),ot(st)),this.j46_1=X("element",[],ke)}function Se(){return null==o&&new xe,o}function Ee(t){return function(t,n){var i=ht(vt("dummy")),e=i.documentElement;return null==e||i.removeChild(e),Ce.call(n,t,i),n}(t,dt(J(Ce)))}function Ce(t,n){this.g46_1=t,this.h46_1=n}function qe(t,n){this.k46_1=t,this.l46_1=n}function Oe(t,n){this.m46_1=t,this.n46_1=n}function ze(t,n){return new Oe(t,n)}function Ae(){je.call(this,"Element",0),u=this}function Te(){je.call(this,"Attribute",1),a=this}function Ie(){je.call(this,"Text",2),h=this}function De(){if(_)return P;_=!0,u=new Ae,a=new Te,h=new Ie}function je(t,n){$t.call(this,t,n)}function Me(){return De(),u}function Ne(){return De(),a}function Re(){Fe.call(this,"Attribute",1),c=this}function Pe(){Fe.call(this,"Text",2),f=this}function Le(){if(d)return P;d=!0,l=new Fe("Element",0),c=new Re,f=new Pe,v=new Fe("Mixed",3),new Fe("Inline",4)}function Fe(t,n){$t.call(this,t,n)}function Ue(){return Le(),l}function He(){return Le(),c}function Ve(){return Le(),f}function Be(){return Le(),v}function Ye(t,n){this.g47_1=t,this.h47_1=n}function We(t){return P}function Ge(t,n,i){t=t===tt?xt():t,n=n===tt?Ze:n;var e=new Hr;return n(e),function(t,n,i){return n=n===tt?xt():n,Qe.call(i,(e=t,function(t,n){var i,e,r,s,o,u,a,h,_=(t=t===tt?new Hr:t).n4p_1,l=t.o4p_1,c=t.p4p_1,f=t.r4p_1;if(null==f){var v=t.y4p(),d=null!=v&&v,w=t.t4p_1,p=t.q4p_1;e=!1,r=d,s=w,o=null==p?Br().j4p_1:p,i=function(t,n,i,e,r,s,o,u){return n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().j4p_1:e,r=r===tt?null:r,s=s!==tt&&s,o=o!==tt&&o,ls.call(u,t,n,i,e,r,s,o,!1),u}(e,r,s,o,u,a,h,dt(J(ls)))}else i=f;return Yr.call(n,_,l,c,i,t.v4p_1,t.w4p_1),n.k4d_1=t.u4p_1,n.l4d_1=t.x4p_1,n}(e,dt(J(Yr)))),n),i;var e}(e,t,i),i}function Ke(t,n){return Ge(t,n,dt(J(Qe)))}function Xe(){p=this,this.w47_1=[Os(),ye(),Se(),pe()],this.x47_1=Ke(tt,We)}function Je(){}function Ze(t){return P}function Qe(t,n){null==p&&new Xe,n=n===tt?xt():n,this.j47_1=t,this.k47_1=Et(n,(sr(),w))}function tr(t,n,i){var e;if(sr(),t.e49_1===fs()){var r;if(t.d49_1===fs()){var s=null==i?null:Tt(i.l3w(),n);r=null==s?vt(n):s}else{var o=null==i?null:Tt(i.l3w(),t.d49_1);r=null==o?vt(t.d49_1):o}e=r}else e=t.d49_1===fs()?t.f49_1===fs()?Tt(n,t.e49_1):new At(n,t.e49_1,t.f49_1):t.f49_1===fs()?Tt(t.e49_1,t.d49_1):new At(t.e49_1,t.d49_1,t.f49_1);return e}function nr(t){return sr(),t.h49_1===fs()?vt(t.g49_1):t.i49_1===fs()?Tt(t.h49_1,t.g49_1):new At(t.h49_1,t.g49_1,t.i49_1)}function ir(t){sr();var n=0,i=t.j35();if(n":e)+" ("+n+")",r);return Tn()}function Lr(t,n,i,e,r){return Tn()}function Fr(t,n,i,e,r){if(!(t.l3w()!==i.h48().e40()||!!n.equals(Ne())&&"http://www.w3.org/2001/XMLSchema-instance"===(null==e?null:e.e40())))throw new Wr(t.v3w(),"("+i.j49().h35()+") "+i.h48()+"/"+vn(null==e?"":e)+" ("+n+")",r);return Tn()}function Ur(t,n,i,e){var r=t.v3w(),s=null==i?null:i.toString();throw new Wr(r,null==s?"":s,e)}function Hr(t,n,i,e,r,s){t=t===tt||t,n=n===tt?ei():n,i=i===tt?"":i,e=e===tt?null:e,r=r===tt?Br().j4p_1:r,s=s===tt?null:s,this.n4p_1=t,this.o4p_1=n,this.p4p_1=i,this.q4p_1=r,this.r4p_1=s,this.s4p_1=e,this.t4p_1=ns(),this.u4p_1=!0,this.v4p_1=null,this.w4p_1=ri(),this.x4p_1=!1}function Vr(){b=this,this.i4p_1=["http://www.w3.org/2001/XMLSchema-instance","http://www.w3.org/XML/1998/namespace"];var t=Pr;this.j4p_1=new Mr(t);var n=Lr;this.k4p_1=new Nr(n);var i=Fr;this.l4p_1=new Rr(i),this.m4p_1=Ur}function Br(){return null==b&&new Vr,b}function Yr(t,n,i,e,r,s){Br(),t=t===tt||t,n=n===tt?ei():n,i=i===tt?"":i,r=r===tt?null:r,s=s===tt?ri():s,this.e4d_1=t,this.f4d_1=n,this.g4d_1=i,this.h4d_1=e,this.i4d_1=r,this.j4d_1=s,this.k4d_1=!0,this.l4d_1=!1}function Wr(t,n,i){var e=function(t){return!0===t.v().w()?Hn(t,tt,"\n candidates: ",tt,tt,tt,Xr):""}(i=i===tt?Tn():i),r=null==t?null:" at position "+t;Gr.call(this,"Could not find a field for name "+n+e+(null==r?"":r)),si(this,Wr)}function Gr(t,n){ui(t,n=n===tt?null:n,this),si(this,Gr)}function Kr(t,n,i){i=i===tt?null:i,Gr.call(this,"Invalid XML value at position: "+t+": "+n,i),si(this,Kr)}function Xr(t){return t instanceof Ar?t.k4b_1+" ("+t.m4b_1.y46()+")":vn(t)}function Jr(t){return function(t,n){return Zr.call(n,t,null,!1),n}(t,dt(J(Zr)))}function Zr(t,n,i){if(this.j4q_1=t,this.k4q_1=n,this.l4q_1=i,this.l4q_1&&null==this.k4q_1)throw ct(vn("Default namespace requires there to be an annotated name"))}function Qr(t,n){this.m4q_1=t,this.n4q_1=n}function ts(t,n){$t.call(this,t,n)}function ns(){return function(){if(y)return P;y=!0,new ts("ALWAYS",0),$=new ts("ANNOTATED",1),new ts("NEVER",2)}(),$}function is(){}function es(){return t=dt(J(os)),os.call(t,!1),t;var t}function rs(t){return function(t,n){return os.call(n,t.z4p_1,t.a4q_1,t.b4q_1,t.c4q_1,t.d4q_1,t.e4q_1,t.w4g(),t.c4g()),n}(t,dt(J(os)))}function ss(t){return function(t,n){return ls.call(n,t.q4r_1,t.r4r_1,t.s4r_1,t.t4r_1,t.u4r_1,t.v4r_1,t.w4r_1,t.x4r_1,t.y4r_1),n}(t,dt(J(ls)))}function os(t,n,i,e,r,s,o,u,a){t=t!==tt&&t,n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().j4p_1:e,r=r===tt?null:r,s=s!==tt&&s,o=o!==tt&&o,u=u!==tt&&u,a=a!==tt&&a,this.q4r_1=t,this.r4r_1=n,this.s4r_1=i,this.t4r_1=e,this.u4r_1=r,this.v4r_1=s,this.w4r_1=o,this.x4r_1=u,this.y4r_1=a}function us(t,n,i){var e;if("*"===t)e=-2;else{var r=n.o2(t);if(null==r)throw new Gr("Could not find the attribute in "+i.h35()+" with the name: "+t+"\n Candidates were: "+Hn(n.b2()));e=r}return e}function as(){return"Type name info should match"}function hs(t){return t instanceof Ss}function _s(t){return function(t){for(var n=zi(t.q4s_1,Oi([Jn(59)])),i=En(wi(n,10)),e=n.v();e.w();){var r,s=e.y(),o=Ai(s,Jn(61));if(-1===o)r=new Ti("",s);else{var u=s.substring(0,o),a=o+1|0,h=s.substring(a);r=new Ti(u,h)}var _=r;i.s(_)}return i}(t)}function ls(t,n,i,e,r,s,o,u,a){n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().j4p_1:e,r=r===tt?null:r,s=s!==tt&&s,o=o!==tt&&o,a=a!==tt&&a,this.z4p_1=t,this.a4q_1=n,this.b4q_1=i,this.c4q_1=e,this.d4q_1=r,this.e4q_1=s,this.f4q_1=o,this.g4q_1=u,this.h4q_1=a}function cs(t,n,i){t=t===tt?"ZXCVBNBVCXZ":t,n=n===tt?"ZXCVBNBVCXZ":n,i=i===tt?"ZXCVBNBVCXZ":i,this.d49_1=t,this.e49_1=n,this.f49_1=i}function fs(){return k}function vs(){}function ds(t){t=t===tt||t,this.o4s_1=t}function ws(){}function ps(t){t=t===tt||t,this.u4k_1=t}function ms(t,n,i){n=n===tt?"ZXCVBNBVCXZ":n,i=i===tt?"ZXCVBNBVCXZ":i,this.g49_1=t,this.h49_1=n,this.i49_1=i}function gs(){}function bs(t){this.p4s_1=t}function $s(){}function ys(){}function ks(){}function xs(){}function Ss(){}function Es(t){this.r4s_1=t}function Cs(t){return t.k34_1=ji(new cs("QName","http://www.w3.org/2001/XMLSchema","xsd")),P}function qs(){x=this;var t=In();this.a4p_1=rt("javax.xml.namespace.QName",t,[],Cs)}function Os(){return null==x&&new qs,x}function zs(){return ko(),S}function As(t){var n=t.g48_1;return Xn("element",1,Kn,(function(t){return As(t)}),null),n.h2()}function Ts(t,n,i,e,r){var s,o,u;Ds.call(this,t.h4d_1,new Ps(i,e,!0,null)),this.g48_1=Nn((s=t,o=n,u=this,function(){return E.s4s(s,o,u.l47_1,tt,!1)}))}function Is(){}function Ds(t,n,i){var e,r,s;i=i===tt?n:i,this.l47_1=i,this.m47_1=n.x4s(),this.n47_1=n.f4r(),this.o47_1=n.d4s(),this.p47_1=t.n4r(n),this.q47_1=Nn((e=t,r=n,s=this,function(){return e.t4q(r,s.l47_1,s.y46(),s.n47_1)}))}function js(t){var n=t.v48_1;return Xn("children",1,Kn,(function(t){return js(t)}),null),n.h2()}function Ms(t,n,i,e){var r;uo.call(this,t.h4d_1,i,e),this.r48_1=t.h4d_1.b4r(i,e,!1);t:{for(var s=e.a4s().v();s.w();){var o=s.y();if(o instanceof vs){r=o;break t}}r=null}var u=r,a=t.h4d_1.w4q(i,e);this.s48_1=t.h4d_1.v4q(i,e)?ho():null==a?lo():new co(a);var h,_=yn(),l=this.s48_1;kt(l,ho())?h=null:kt(l,lo())?h=E.s4s(t,n,new vo(this,1),tt,!1).h48():l instanceof co?h=this.h48():cn();var c=h;if(null!=u)for(var f=e.g34(),v=null==f?null:f.j49(),d=null==v?null:v.h35(),w=null==d?"":d,p=e.g34(),m=null==p?null:p.h48(),g=new Qr(w,null==m?Tt("",""):m),b=Hi(this.j49()),$=null==b?U().u6():b,y=u.y4s_1,k=0,x=y.length;k0&&(Q=Z,et=at),Z=Z+1|0}while(Z=0){var l=_.h1(n);if(!kt(l.e4s(),Pt())||!kt(l.n35(0).j49(),pe().b46_1)){var c;t:{for(var f=ie(_).v();f.w();){var v=f.y();if(v!==n&&_.h1(v).y46().equals(Ue())){c=v;break t}}c=null}var d=c;if(null!=d)throw new Gr("Types with an @XmlValue member may not contain other child elements ("+s.j49().n35(d))}}return _})),this.r4g_1=Nn(ro(this))}function oo(){}function uo(t,n,i){Ds.call(this,t,n,i);var e;t:{for(var r=n.a4s().v();r.w();){var s=r.y();if(s instanceof gs){e=s;break t}}e=null}var o,u=e;if(null==u){var a;t:{for(var h=i.a4s().v();h.w();){var _=h.y();if(_ instanceof gs){a=_;break t}}a=null}o=a}else o=u;var l,c=o;if(null==c){var f;t:{for(var v=n.b4s().i35().v();v.w();){var d=v.y();if(d instanceof gs){f=d;break t}}f=null}l=f}else l=c;var w=l;this.h4b_1=!0===(null==w?null:w.g4u_1);var p,m=$o(i.a4s());this.i4b_1=null==m?(p=n.b4s(),ko(),$o(p.i35())):m,this.j4b_1=q}function ao(){O=this,fo.call(this)}function ho(){return null==O&&new ao,O}function _o(){z=this,fo.call(this)}function lo(){return null==z&&new _o,z}function co(t){fo.call(this),this.z4o_1=t}function fo(){}function vo(t,n,i,e,r){i=i===tt?null:i,e=e===tt?null:e,r=r===tt?null:r,this.h4u_1=t,this.i4u_1=n,this.j4u_1=r;var s;s=null==i?-1===this.i4u_1?Jr(this.h4u_1.j49().h35()):function(t,n,i){ko();var e,r=t.p35(n);t:{for(var s=t.m35(n).v();s.w();){var o=s.y();if(o instanceof cs){e=o;break t}}e=null}var u=e;return new Zr(r,null==u?null:tr(u,r,i),(null==u?null:u.e49_1)===fs())}(this.h4u_1.j49(),this.i4u_1,Vi(this.h4u_1.h48())):i,this.k4u_1=s;var o;o=null==e?-1===this.i4u_1?null:function(t){ko();for(var n=null,i=t.v();i.w();){var e=i.y(),r=e instanceof ps?e:null;if(!0===(null==r?null:r.u4k_1))return Be();if(e instanceof ws||e instanceof $s)return He();if(e instanceof ds)return e.o4s_1?Ue():He();if(e instanceof vs||e instanceof ms)return Ue();e instanceof gs&&(n=e)}return!0===(null==n?null:n.g4u_1)?Ue():null}(this.h4u_1.j49().m35(this.i4u_1)):e,this.l4u_1=o}function wo(t,n,i,e){ko();var r,s,o,u,a=ee(t.m4q_1,Jn(46),""),h=t.n4q_1,_=Ai(n,Jn(61));if(_<0){var l;if(s=n,r=ni(n,Jn(46)),o=h.g40(),r<0)l=n;else{var c=r+1|0;l=n.substring(c)}u=l}else{var f=n.substring(0,_);s=vn(Ni(Mi(f)?f:Y())),r=ni(n,Jn(46),_-1|0);var v=Ai(n,Jn(58),_+1|0);if(v<0){o=h.g40();var d=_+1|0,w=n.substring(d);u=vn(Ni(Mi(w)?w:Y()))}else{var p=_+1|0,m=n.substring(p,v);o=vn(Ni(Mi(m)?m:Y()));var b=v+1|0,$=n.substring(b);u=vn(Ni(Mi($)?$:Y()))}}var y=0!==r||0===ft(a)?s:a+"."+s.substring(1),k=e.c38(i,y),x=null==k?null:k.g34();if(null==x)throw Ot("Missing descriptor for "+y+" in the serial context");var S,E=x;if(_<0){var C=g,q=h.e40();S=C.d4p(E,new Ti(o,q))}else{var O=h.e40();S=new At(O,u,o)}return new Ye(S,E)}function po(t,n){var i;if(ko(),t.d35()&&se(t.h35(),Jn(63)))i=re(t.h35(),1);else{var e=Hi(t),r=null==e?null:Uo(e);i=null==r?t.h35():r}var s,o=i;t:{for(var u=t.i35().v();u.w();){var a=u.y();if(a instanceof cs){s=a;break t}}s=null}var h,_=s;if(null==_){var l,c=Hi(t),f=null==c?null:oe(c);if(null==f)l=null;else{var v;t:{for(var d=f.v();d.w();){var w=d.y();if(w instanceof cs){v=w;break t}}v=null}l=v}h=l}else h=_;var p=h;return new Zr(o,null==p?null:tr(p,o,n),(null==p?null:p.e49_1)===fs())}function mo(t,n,i){i=i===tt?n:i,Ds.call(this,t.h4d_1,n,i);var e;e=!(i instanceof Ps&&i.b4t_1)&&t.h4d_1.u4q(n,i),this.t49_1=e}function go(t,n){ko();var i=0;if(in&&(n=e)}return n}function jo(t,n,i){for(var e=t.j4s_1,r=N(),s=e.v();s.w();){var o=s.y();n[o.h4s_1]||r.s(o)}for(var u=r,a=u.v();a.w();){var h=a.y();i.s(h),n[h.h4s_1]=!0}for(var _=u.v();_.w();)jo(_.y(),n,i)}function Mo(t,n){if(null==t[n.h4s_1]){t[n.h4s_1]=n;for(var i=n.j4s_1.v();i.w();)Mo(t,i.y())}}function No(t){return function(n){return!t[n.h4s_1]}}function Ro(t){return function(n){return!t[n.h4s_1]}}function Po(t){return t.i4s_1.d1()}function Lo(t){var n=t.u47_1;return Xn("children",1,Kn,(function(t){return Lo(t)}),null),n.h2()}function Fo(t,n){var i,e;this.s47_1=t,this.t47_1=po(this.s47_1,n),this.u47_1=Nn((i=this,e=n,function(){for(var t=0,n=i.s47_1.j35(),r=$i(Array(n),null);t=0;){var u=o;0===u?r=n.u37(t.b46_1,o,t.a46_1):1===u&&(s=n.r37(t.b46_1,o)),o=n.y37(t.b46_1)}i=R(r,s)}return i}(pe(),i);return i.i37(n),e},J($e).g34=function(){return this.f46_1},J($e).h34=function(t){return function(t,n){for(var i={_v:null},e=t.f46_1,r=n.h37(e),s=null,o=r.y37(ye().f46_1);-1!==o;){var u=o;if(0===u)s=r.r37(ye().f46_1,0);else if(1===u)switch(s){case null:throw nt("Missing type");case"element":i._v=r.u37(ye().f46_1,1,Se());break;case"attr":var a=r.u37(ye().f46_1,1,ye().d46_1);if(1!==a.n())throw nt("Only a single attribute pair expected");var h=n.h46_1.createAttribute(it(a.b2()));h.value=it(a.c2()),i._v=h;break;case"text":i._v=n.h46_1.createTextNode(r.r37(ye().f46_1,1));break;case"comment":i._v=n.h46_1.createComment(r.r37(ye().f46_1,1));break;default:throw nt("unsupported type: "+s)}o=r.y37(ye().f46_1)}r.i37(e);var _=i._v;if(null==_)throw nt("Missing value");return _}(this,t instanceof Ce?t:Ee(t))},J(xe).g34=function(){return this.j46_1},J(xe).h34=function(t){return F(t,Je)?function(t,n){var i=ht(n.c46().f3x()).createDocumentFragment(),e=new _t(i);lt(e,null,n.c46());var r=i.firstChild;for(;null!=r&&1!==r.nodeType;)r=r.nextSibling;var s=null==r||null!=r?r:Y();if(null==s)throw nt("Expected element, but did not find it");return s}(0,t):function(t,n){for(var i=t.j46_1,e=n.h37(i),r=K(ye()),s=e.y37(Se().j46_1),o=null,u=null,a=null,h=null;-1!==s;){var _=s;if(0===_)o=e.r37(Se().j46_1,0);else if(1===_)u=e.r37(Se().j46_1,1);else if(2===_)a=Se().i46_1.h34(n);else{if(3!==_)throw-3===_?nt("Found unexpected child at index: "+s):ct("Received an unexpected decoder value: "+s);h=r.h34(n)}s=e.y37(Se().j46_1)}if(null==u)throw nt("Missing localName");if(null==a)throw nt("Missing attributes");if(null==h)throw nt("Missing content");for(var l=n.h46_1,c=null==o||0===ft(o)?l.createElement(u):l.createElementNS(o,u),f=a.d2().v();f.w();){var v=f.y(),d=v.g2(),w=v.h2();c.setAttribute(d,w)}for(var p=h.v();p.w();){var m=p.y();c.appendChild(l.adoptNode(m))}var g=c;return e.i37(i),g}(this,t instanceof Ce?t:Ee(t))},J(Ce).v36=function(){return this.g46_1.v36()},J(Ce).w36=function(){return this.g46_1.w36()},J(Ce).c37=function(){return this.g46_1.c37()},J(Ce).b37=function(){return this.g46_1.b37()},J(Ce).a37=function(){return this.g46_1.a37()},J(Ce).e37=function(t){return this.g46_1.e37(t)},J(Ce).y36=function(){return this.g46_1.y36()},J(Ce).z36=function(){return this.g46_1.z36()},J(Ce).t36=function(){return this.g46_1.t36()},J(Ce).u36=function(){return this.g46_1.u36()},J(Ce).g37=function(t){return this.g46_1.g37(t)},J(Ce).x36=function(){return this.g46_1.x36()},J(Ce).d37=function(){return this.g46_1.d37()},J(Ce).h37=function(t){return new qe(this.g46_1.h37(t),this.h46_1)},J(qe).w37=function(){return this.k46_1.w37()},J(qe).j37=function(t,n){return this.k46_1.j37(t,n)},J(qe).k37=function(t,n){return this.k46_1.k37(t,n)},J(qe).q37=function(t,n){return this.k46_1.q37(t,n)},J(qe).z37=function(t){return this.k46_1.z37(t)},J(qe).p37=function(t,n){return this.k46_1.p37(t,n)},J(qe).y37=function(t){return this.k46_1.y37(t)},J(qe).o37=function(t,n){return this.k46_1.o37(t,n)},J(qe).s37=function(t,n){return this.k46_1.s37(t,n)},J(qe).m37=function(t,n){return this.k46_1.m37(t,n)},J(qe).n37=function(t,n){return this.k46_1.n37(t,n)},J(qe).x37=function(){return this.k46_1.x37()},J(qe).l37=function(t,n){return this.k46_1.l37(t,n)},J(qe).r37=function(t,n){return this.k46_1.r37(t,n)},J(qe).i37=function(t){this.k46_1.i37(t)},J(qe).t37=function(t,n,i,e){return this.k46_1.t37(t,n,ze(i,this.l46_1),e)},J(qe).v37=function(t,n,i,e){return this.k46_1.v37(t,n,ze(i,this.l46_1),e)},J(Oe).g34=function(){return this.m46_1.g34()},J(Oe).h34=function(t){return this.m46_1.h34(new Ce(t,this.n46_1))},J(Ae).q46=function(t){return t.equals(Ue())},J(Te).q46=function(t){return t.equals(He())},J(Ie).q46=function(t){return t.equals(Ve())},J(je).t46=function(t){return this.q46(t.y46())},J(Re).b47=function(){return!0},J(Pe).b47=function(){return!0},J(Fe).b47=function(){return!1},J(Ye).i47=function(){return this.h47_1.h35()},J(Ye).toString=function(){return"PolyBaseInfo(tagName="+this.g47_1+", descriptor="+this.h47_1+")"},J(Ye).hashCode=function(){var t=this.g47_1.hashCode();return M(t,31)+yt(this.h47_1)|0},J(Ye).equals=function(t){if(this===t)return!0;if(!(t instanceof Ye))return!1;var n=t instanceof Ye?t:Y();return!!this.g47_1.equals(n.g47_1)&&!!kt(this.h47_1,n.h47_1)},J(Xe).w37=function(){return this.x47_1.k47_1},J(Xe).j3n=function(t,n){return this.x47_1.j3n(t,n)},J(Qe).w37=function(){return this.k47_1},J(Qe).j3n=function(t,n){return this.y47(t,Ct().o45(n))},J(Qe).z47=function(t,n,i){qt(n);var e,r=new zr(this.k47_1,this.j47_1,n),s=function(t,n,i,e){if(null!=i)return new Zr(e.f40(),i,!1);var r=e.f40(),s=new Ts(t.j47_1,t.k47_1,n,Jr(r),!1).r47().v47(),o=null==s?e:s;return new Zr(o.f40(),o,!1)}(this,t.g34(),i,n.f3x()),o=new Ts(this.j47_1,this.k47_1,t.g34(),s,!1),u=o.n35(0);if(u instanceof Ms){var a,h=n.f3x();t:{for(var _=null,l=!1,c=u.t48_1.c2().v();c.w();){var f=c.y();if(zt(h,f.h48())){if(l){a=null;break t}_=f,l=!0}}a=l?_:null}e=null==a?null:new Ar(h,0,a)}else{var v=o.n35(0).h48();if(!zt(v,n.f3x()))throw Ot('Local name "'+n.f3x()+'" for root tag does not match expected name "'+v+'"');e=null}return new vr(r,u,e).g37(t)},J(Qe).y47=function(t,n,i,e){return i=i===tt?null:i,e===tt?this.z47(t,n,i):e.z47.call(this,t,n,i)},J(or).l49=function(t){this.k49_1=t},J(or).m49=function(){return this.k49_1},J(fr).a29=function(){return this.w4c_1.y4c_1},J(fr).w37=function(){return this.w4c_1.x4c_1},J(fr).c46=function(){return this.w4c_1.b4d_1},J(fr).u36=function(){return null},J(fr).v36=function(){return this.a29().h4d_1.m4d()?Ht().h34(this):Ut(this.d4d())},J(fr).w36=function(){var t;if(this.n4d_1.p4d()){var n=Bt(this.d4d());t=Yt(n)}else t=Vt(this.d4d());return t},J(fr).x36=function(){var t;if(this.n4d_1.p4d()){var n=Gt(this.d4d());t=Kt(n)}else t=Wt(this.d4d());return t},J(fr).y36=function(){var t;if(this.n4d_1.p4d()){var n=Jt(this.d4d());t=Zt(n)}else t=Xt(this.d4d());return t},J(fr).z36=function(){var t;if(this.n4d_1.p4d()){var n=tn(this.d4d());t=nn(n)}else t=Qt(this.d4d());return t},J(fr).a37=function(){var t=this.d4d();return en(t)},J(fr).b37=function(){return en(this.d4d())},J(fr).c37=function(){return rn(this.d4d())},J(fr).d4d=function(t,n){return t=t===tt||t,n===tt?this.q4d(t):n.q4d.call(this,t)},J(fr).d37=function(){return this.q4d(!1)},J(vr).r4d=function(){return null},J(vr).t36=function(){return!this.c49_1.s4d()&&!this.c46().u3w().equals(on())},J(vr).u36=function(){if(this.c49_1.s4d()){this.c46().v41();var t=this.c46(),n=un(),i=this.h35().e40(),e=this.h35().f40();return t.g3x(n,i,e),null}return J(fr).u36.call(this)},J(vr).e37=function(t){return this.b49_1=!0,this},J(vr).q4d=function(t){var n,i=this.n4d_1,e=i instanceof uo?i:null,r=null==e?null:e.i4b_1,s=this.n4d_1.y46();if(this.a49_1>=0)n=this.c46().d3x(this.a49_1);else{var o;switch(s.v9_1){case 0:var u=this.c46(),a=an(),h=this.h35().e40(),_=this.h35().f40();u.g3x(a,h,_),o=hn(this.c46());break;case 1:throw nt("Attribute parsing without a concrete index is unsupported");case 4:throw nt("Inline classes can not be decoded directly");case 3:o=_n(this.c46());break;case 2:o=this.n4d_1.t4d()?_n(this.c46()):ln(this.c46());break;default:cn()}n=o}var l=n;return t&&0===ft(l)&&null!=r?r:l},J(vr).h37=function(t){throw fn("This should not happen as decodeSerializableValue should be called first")},J(vr).g37=function(t){var n=this.n4d_1.u4d(t),i=this.b49_1&&this.n4d_1 instanceof Zs?this.n4d_1.n35(0):this.n4d_1,e=new wr(this.c49_1,i,this.z48_1,this.a49_1,this.r4d()),r=n.h34(e),s=e.e4e_1,o=null==s?null:s.m49();if(null!=o){if(null==r)throw ct(vn("Required value was null."));if(null!=this.c49_1.c4d_1.e2(o,r))throw Ot("Duplicate use of id "+o)}return r},J(dr).h37=function(t){throw dn("Strings cannot be decoded to structures")},J(dr).t36=function(){return!0},J(dr).e37=function(t){return new dr(this.l4e_1,this.n4d_1.n35(0),this.k4e_1)},J(dr).q4d=function(t){var n,i=this.n4d_1,e=i instanceof uo?i:null,r=null==e?null:e.i4b_1;if(t&&null!=r){var s=this.k4e_1;n=0===ft(s)}else n=!1;return n?r:this.k4e_1},J(dr).g37=function(t){return this.n4d_1.u4d(t).h34(this)},J(wr).r4d=function(){return this.c4e_1},J(wr).m4e=function(t){this.f4e_1.s(t)},J(wr).q4d=function(t){var n=J(vr).q4d.call(this,t);if(this.a49_1>=0&&this.n4d_1.n4e()){var i=this.e4e_1;null==i||i.l49(n)}return n},J(wr).t36=function(){return this.d4e_1=!0,J(vr).t36.call(this)},J(wr).g37=function(t){return this.d4e_1?t.h34(this):J(vr).g37.call(this,t)},J(wr).e37=function(t){return this.e4e_1=new or,J(vr).e37.call(this,t)},J(wr).h37=function(t){if(t.d35()){var n=new mr(this.g4e_1,this.n4d_1,this.r4d());return this.e4e_1=n,n}var i;if(this.n4d_1.l35()instanceof wn)throw fn("A primitive is not a composite");if(this.n4d_1 instanceof Ms){var e=new Or(this.g4e_1,this.n4d_1,this.z48_1);this.e4e_1=e,i=e}else if(this.n4d_1 instanceof Hs){var r;if(this.n4d_1.y46().equals(He())){var s=new yr(this.g4e_1,this.n4d_1,this.a49_1);this.e4e_1=s,r=s}else if(this.n4d_1.y46().equals(Ve()))r=new kr(this.g4e_1,this.n4d_1);else if(this.n4d_1.u49()){var o=new xr(this.g4e_1,this.n4d_1,this.z48_1,this.r4d());this.e4e_1=o,r=o}else{var u=new Sr(this.g4e_1,this.n4d_1,this.r4d());this.e4e_1=u,r=u}i=r}else if(this.n4d_1 instanceof Gs){var a;if(this.n4d_1.u49()){var h=new Cr(this.g4e_1,this.n4d_1,this.z48_1,this.r4d());this.e4e_1=h,a=h}else{var _=new qr(this.g4e_1,this.n4d_1,this.z48_1,this.r4d());this.e4e_1=_,a=_}i=a}else{var l=new mr(this.g4e_1,this.n4d_1,this.r4d());this.e4e_1=l,i=l}for(var c=i,f=this.f4e_1.v();f.w();){var v=f.y();c.m4e(v)}return c},J(pr).t36=function(){return!1},J(pr).t37=function(t,n,i,e){var r=this.n4d_1,s=r instanceof uo?r:null,o=null==s?null:s.w4e(this.v4e_1,i),u=null==o?e:o;return null==u||null!=u?u:Y()},J(pr).v37=function(t,n,i,e){return null},J(pr).h37=function(t){return this},J(pr).i37=function(t){},J(pr).y37=function(t){var n=t.l35();if(n instanceof mn||n instanceof pn)return-1;throw fn("Null objects have no members")},J(pr).j37=function(t,n){throw fn("Null objects have no members")},J(pr).k37=function(t,n){throw fn("Null objects have no members")},J(pr).l37=function(t,n){throw fn("Null objects have no members")},J(pr).m37=function(t,n){throw fn("Null objects have no members")},J(pr).z37=function(t){return 0},J(pr).n37=function(t,n){throw fn("Null objects have no members")},J(pr).o37=function(t,n){throw fn("Null objects have no members")},J(pr).p37=function(t,n){throw fn("Null objects have no members")},J(pr).q37=function(t,n){throw fn("Null objects have no members")},J(pr).r37=function(t,n){throw fn("Null objects have no members")},J(pr).s37=function(t,n){throw fn("Null objects have no members")},J(mr).i37=function(t){if(!this.x4a_1&&-1!==this.y37(t))throw new Gr("Unexpected content in end structure");this.c46().y41(un(),this.p4f_1)},J(gr).l49=function(t){this.k4a_1=t},J(gr).m49=function(){return this.k4a_1},J(gr).c46=function(){return this.y4a_1.b4d_1},J(gr).r4f=function(t,n,i){var e=this.z4a_1.n35(n),r=e.u4d(i);return this.s4a_1>=0?null:r.g34().l35()instanceof wn?new vr(this.y4a_1,e,this.u4a_1,this.t4a_1):new wr(this.y4a_1,e,this.u4a_1,this.t4a_1,null)},J(gr).t37=function(t,n,i,e){if(this.y4a_1,!this.w4a_1.d1()){var r=this.w4a_1.rd();if(r.z4f_1!==n)throw ct("Recovery state is inconsistent");var s=r.a4g_1,o=null==s||null!=s?s:Y();return null==o||null!=o?o:Y()}var u,a=this.z4a_1.n35(n),h=a.u4d(i);if(kt(F(h,bt)?h:Y(),pe())&&ir(this.z4a_1)===n){if(this.s4a_1>=0){var _=kn("");return null!=_?_:Y()}var l=L(this.c46());this.c46().k41();var c=l instanceof jt?l:null,f=null==c?xn(l):c;return null!=f?f:Y()}if(this.t4a_1>=0&&a instanceof Bs)u=new br(this.y4a_1,a,this.t4a_1);else{var v=this.r4f(t,n,h);u=null==v?new pr(this.y4a_1,a):v}var d=u,w=h instanceof Sn?h.o39(d,e):h.h34(d),p=d instanceof wr?d:null,m=null==p?null:p.e4e_1,g=null==m?null:m.m49();if(null!=g){if(null==w)throw ct(vn("Required value was null."));if(null!=this.y4a_1.c4d_1.e2(g,w))throw Ot("Duplicate use of id "+g)}return this.r4a_1[n]=!0,w},J(gr).v37=function(t,n,i,e){if(this.y4a_1,!this.w4a_1.d1()){var r=this.w4a_1.rd();if(r.z4f_1!==n)throw ct("Recovery state is inconsistent");var s=r.a4g_1,o=null==s||null!=s?s:Y();return null!=o?o:Y()}if(this.y4a_1.s4d()){if(!this.c46().v41().equals(un()))throw nt("Elements with nil tags may not have content");return null}var u=this.r4f(t,n,i);if(null==u)return null;var a=u,h=this.z4a_1.n35(n).u4d(i),_=h instanceof Sn?h.o39(a,e):h.h34(a),l=a instanceof wr?a:null,c=null==l?null:l.e4e_1,f=null==c?null:c.m49();if(null!=f){if(null==_)throw ct(vn("Required value was null."));if(null!=this.y4a_1.c4d_1.e2(f,_))throw Ot("Duplicate use of id "+f)}return this.r4a_1[n]=!0,_},J(gr).s37=function(t,n){if(this.y4a_1,!this.w4a_1.d1()){var i=this.w4a_1.rd();if(i.z4f_1!==n)throw ct("Recovery state is inconsistent");var e=i.a4g_1;return new Es(null==e||null!=e?e:Y())}var r=this.z4a_1.n35(n);return t.l35()instanceof wn?new vr(this.y4a_1,r,this.u4a_1,this.t4a_1):new wr(this.y4a_1,r,this.u4a_1,this.t4a_1,this.j4a_1)},J(gr).s4f=function(t,n){var i=n.equals(Ne());this.u4a_1=null;var e=this.n4a_1,r=this.m4a_1,s=this.x4f(t),o=r.o2(s),u=null==o?null:hr(o,n,this);if(null!=u)return this.u4f(u,n);var a=e.o2(s),h=null==a?null:_r(a,n);if(null!=h){var _=this.u4f(h.l4b_1,n);return this.u4a_1=h,_}var l,c=this.h35().e40();if(i&&!this.a29().h4d_1.c4g()){var f=t.e40();if(0===ft(f)){var v=er(s,c),d=r.o2(v),w=null==d?null:hr(d,n,this);if(null!=w)return this.t4f(w);var p=e.o2(v),m=null==p?null:_r(p,n);if(null!=m)return this.u4a_1=m,this.t4f(m.l4b_1)}var g=t.g40();if(0===ft(g)){var b=this.c46().h3w("");if(null!=b){var $=er(s,b),y=r.o2($),k=null==y?null:hr(y,n,this);if(null!=k)return this.t4f(k);var x=e.o2($),S=null==x?null:_r(x,n);if(null!=S)return this.t4f(S.l4b_1)}}}if(!this.a29().h4d_1.c4g()&&ft(c)>0&&c===t.e40()){var E=r.o2(vt(t.f40())),C=null==E?null:hr(E,n,this);if(null!=C)return this.u4f(C,n)}if(n.equals(Ne())){var q=this.p4a_1,O=this.t4a_1;l=0<=O&&O=0?A:null))return z}else{var T=ir(this.z4a_1),I=T>=0?T:null;if(null==I);else{for(var D=this.z4a_1.n35(I);D instanceof Hs&&D.u49()||D instanceof Zs;)D=D.n35(0);if(kt(D.j49(),pe().b46_1))return this.t4f(I)}}for(var j=this.a29().h4d_1,M=this.c46(),N=En(r.n()),R=r.d2().v();R.w();){var P=R.y(),L=P.g2(),F=P.h2(),U=new Ar(L,F,this.z4a_1.n35(F));N.s(U)}var H=j.d4g(M,n,this.z4a_1,t,Cn(N,e.c2())),V=qn(H);return!0===(null==V?null:V.b4g_1)?V.z4f_1:(this.w4a_1.z(H),-3)},J(gr).t4f=function(t){if(t>=0&&this.r4a_1[t]){var n=this.z4a_1.n35(t);(!(n instanceof mo)||!n.u49())&&this.a29().h4d_1.e4g(this.z4a_1,t)}return t},J(gr).u4f=function(t,n){if(this.t4f(t),this.a29().h4d_1.w4g()&&n.equals(Me())&&this.z4a_1 instanceof so){var i=this.z4a_1.s4g();if(null!=i&&!i.d1()){for(var e=bn(this.r4a_1.length),r=bn(this.r4a_1.length),s=i.v();s.w();){var o=s.y(),u=o.oe(),a=o.pe();-2===u&&(r[a]=!0),-2===a&&(e[u]=!0)}for(var h=i.v();h.w();){var _=h.y(),l=_.oe(),c=_.pe();if(l===t)if(-2===c){var f;t:{for(var v=0,d=On(this.r4a_1).v();d.w();){var w=d.y();if(zn(v),this.r4a_1[w]&&this.z4a_1.n35(w).v4g().equals(Ue())&&!e[w]){f=v;break t}v=v+1|0}f=-1}var p=f;if(p>=0)throw new Gr("Found element "+this.z4a_1.n35(p).h48()+" before "+this.z4a_1.n35(t).h48()+" in conflict with ordering constraints")}else if(this.r4a_1[c])throw new Gr("Found element "+this.z4a_1.n35(c).h48()+" before "+this.z4a_1.n35(t).h48()+" in conflict with ordering constraints");if(!r[t]){var m;t:{for(var g=0,b=On(this.r4a_1).v();b.w();){var $=b.y();if(zn(g),this.r4a_1[$]&&r[$]){m=g;break t}g=g+1|0}m=-1}var y=m;if(y>0)throw new Gr("Found element "+this.z4a_1.n35(t).h48()+" after "+this.z4a_1.n35(y)+" in conflict with ordering constraints")}}}}return t},J(gr).y37=function(t){if(!this.x4a_1&&this.c46().p3w()=0){if(this.c46().y41(un(),this.z4a_1.h48()),this.s4a_1>=this.r4a_1.length)return-1;var n=this.s4a_1;return ar(this),n}this.t4a_1=this.t4a_1+1|0;t:for(;;){var i,e=this.p4a_1,r=this.t4a_1;if(0<=r&&r"),Tn());this.w4a_1.z(S),x=this.y37(t)}else this.r4a_1[y]=!0,x=y;return x}break;case 10:this.y4a_1;var E,C=this.s4f(this.c46().f3x(),Ne());return-3===C?E=this.y37(t):(this.r4a_1[C]=!0,E=C),E;case 1:var q=this.s4f(this.c46().f3x(),Me());if(-3!==q)return this.r4a_1[q]=!0,q;if(!this.w4a_1.d1())return this.w4a_1.nd().z4f_1;Dn(this.c46());break;case 7:throw new Gr("End document in unexpected location")}return-1},J(gr).i37=function(t){if(!this.x4a_1&&-1!==this.y37(t))throw new Gr("Unexpected content in end structure");null==this.j4a_1?this.c46().y41(un(),this.h35()):this.c46().y41(un(),null)},J(gr).v4f=function(t){return ar(this),this.s4a_1=0){var o=this.w4f(this.t4a_1);return this.z4a_1.n35(n).n4e()&&this.l49(o),o}if(this.s4a_1>=0){var u,a=s instanceof uo?s:null,h=null==a?null:a.i4b_1;if(null!=h)u=h;else{if(n!==ir(this.z4a_1))throw new Gr("Missing child "+t.p35(n)+":"+n);u=""}return u}switch(s.y46().v9_1){case 4:throw new Gr("Inline elements can not be directly decoded");case 0:r=hn(this.c46());break;case 3:case 2:var _=_n(this.c46()),l=this.c46().t41();if(!(l instanceof jn))throw new Gr("Missing end tag after text only content (found: "+l+")");var c=this.h35().f40();if(l.w42_1!==c)throw new Gr("Expected end tag local name "+this.h35().f40()+", found "+l.w42_1);r=_;break;case 1:throw ct(vn("Attributes should already be read now"));default:cn()}return r},J(gr).m37=function(t,n){return Xt(this.r37(t,n))},J(gr).j37=function(t,n){var i=this.r37(t,n);return this.a29().h4d_1.m4d()?Ht().h34(new dr(this.y4a_1,this.z4a_1.n35(n),i)):Ut(i)},J(gr).k37=function(t,n){return Vt(this.r37(t,n))},J(gr).l37=function(t,n){return Wt(this.r37(t,n))},J(gr).n37=function(t,n){return Qt(this.r37(t,n))},J(gr).o37=function(t,n){var i=this.r37(t,n);return en(i)},J(gr).p37=function(t,n){return en(this.r37(t,n))},J(gr).q37=function(t,n){return rn(this.r37(t,n))},J(gr).m4e=function(t){this.l4a_1.s(t)},J(br).x37=function(){return!0},J(br).z37=function(t){return 1},J(br).y37=function(t){var n;switch(this.r4h_1){case 0:case 1:var i=this.r4h_1;this.r4h_1=i+1|0,n=i;break;default:n=-1}return n},J(br).t37=function(t,n,i,e){this.q4h_1<0&&(this.q4h_1=n);var r=(n-this.q4h_1|0)%2|0,s=this.z4a_1.n35(r).u4d(i);if(0===r&&kt(s,Os())){var o=this.c46().z41(this.p4h_1);return null!=o?o:Y()}return s.h34(new dr(this.s4h_1,this.z4a_1.e4i(),Lt(this.c46().d3x(this.p4h_1))))},J(br).r37=function(t,n){var i;if(0==(n%2|0)){var e,r=this.c46().z41(this.p4h_1),s=r.g40();if(0===ft(s))e=!0;else{var o=r.e40();e=0===ft(o)}if(!e)throw new Gr("A QName in a namespace cannot be converted to a string");i=r.f40()}else i=this.c46().d3x(this.p4h_1);return i},J(br).i37=function(t){},J(br).h37=function(t){return this},J(br).v36=function(){throw dn("Expect map structure")},J(br).w36=function(){throw dn("Expect map structure")},J(br).c37=function(){throw dn("Expect map structure")},J(br).b37=function(){throw dn("Expect map structure")},J(br).a37=function(){throw dn("Expect map structure")},J(br).e37=function(t){return this},J(br).y36=function(){throw dn("Expect map structure")},J(br).z36=function(){throw dn("Expect map structure")},J(br).t36=function(){throw dn("Expect map structure")},J(br).u36=function(){throw dn("Expect map structure")},J(br).x36=function(){throw dn("Expect map structure")},J(br).d37=function(){throw dn("Expect map structure")},J($r).x37=function(){return!0},J($r).z37=function(t){return lr(this).n()},J($r).t37=function(t,n,i,e){var r=this.z4a_1.n35(n),s=lr(this),o=this.f4c_1;return this.f4c_1=o+1|0,new dr(this.h4c_1,r,s.h1(o)).g37(i)},J($r).r37=function(t,n){var i=lr(this),e=this.f4c_1;return this.f4c_1=e+1|0,i.h1(e)},J($r).i37=function(t){},J(yr).i4c=function(){return this.c46().d3x(this.a4j_1)},J(kr).i4c=function(){return this.c46().s3w()},J(xr).y37=function(t){var n;return this.s4k_1?n=-1:(this.s4k_1=!0,n=0),n},J(xr).t37=function(t,n,i,e){var r=this.z4a_1.n35(0),s=r.u4d(i);if(kt(F(s,bt)?s:Y(),pe())&&ir(cr(this))===this.r4k_1){var o=Pn(this.c46()),u=o instanceof jt?o:null,a=null==u?xn(o):u;return null!=a?a:Y()}var h=new wr(this.t4k_1,r,this.q4k_1,An.MIN_VALUE,this.j4a_1),_=i.h34(h),l=h instanceof wr?h:null,c=null==l?null:l.e4e_1,f=null==c?null:c.m49();if(null!=f){if(null==_)throw ct(vn("Required value was null."));if(null!=this.t4k_1.c4d_1.e2(f,_))throw Ot("Duplicate use of id "+f)}return _},J(xr).i37=function(t){},J(xr).z37=function(t){return 1},J(Sr).y37=function(t){var n;if(this.x4a_1=!0,2===this.c46().v41().v9_1)n=-1;else{var i=this.n4l_1;this.n4l_1=i+1|0,n=i}return n},J(Sr).t37=function(t,n,i,e){var r=this.z4a_1.n35(0),s=new wr(this.o4l_1,r,this.u4a_1,this.t4a_1,null),o=i instanceof Sn?i.o39(s,e):i.h34(s),u=s instanceof wr?s:null,a=null==u?null:u.e4e_1,h=null==a?null:a.m49();if(null!=h){if(null==o)throw ct(vn("Required value was null."));if(null!=this.o4l_1.c4d_1.e2(h,o))throw Ot("Duplicate use of id "+h)}return o},J(Er).t37=function(t,n,i,e){this.i4m_1=n;var r=this.z4a_1.n35(0);if(0==(n%2|0)){if(r.v4g().equals(He())){var s=this.c46().x41(r.h48());if(null==s)throw new Gr("Missing key attribute ("+r.h48()+") on "+this.c46().f3x()+"@"+this.c46().v3w());var o=s;return i.h34(new dr(this.j4m_1,r,o))}if(Ln(!this.z4a_1.g4a()),!zt(this.c46().f3x(),r.h48())){var u=this.c46().f3x()+" != "+this.z4a_1.t4c();throw ct(vn(u))}return J(gr).t37.call(this,t,n%2|0,i,e)}var a=this.z4a_1.n35(1),h=new wr(this.j4m_1,a,this.h4m_1,An.MIN_VALUE,this.j4a_1);this.z4a_1.g4a()&&h.m4e(r.h48());var _=i.h34(h),l=h instanceof wr?h:null,c=null==l?null:l.e4e_1,f=null==c?null:c.m49();if(null!=f){if(null==_)throw ct(vn("Required value was null."));if(null!=this.j4m_1.c4d_1.e2(f,_))throw Ot("Duplicate use of id "+f)}return _},J(Cr).y37=function(t){var n,i;if(this.z4a_1.g4a())return this.i4m_1>=0&&1==(this.i4m_1%2|0)?n=-1:(this.i4m_1=this.i4m_1+1|0,n=this.i4m_1),n;if(this.i4m_1<0){if(!this.c46().u3w().equals(an()))throw ct(vn("Check failed."));if(!zt(this.z4a_1.t4c(),this.c46().f3x()))throw new Gr("Map entry not found. Found "+this.c46().f3x()+"@"+this.c46().v3w()+" instead")}if(0==(this.i4m_1%2|0)){var e=zt(this.z4a_1.t4c(),this.c46().f3x());Fn(e,(i=this,function(){return i.z4a_1.t4c()+" != "+i.c46().f3x()}))}var r=J(Er).y37.call(this,t);return r<0?r:(this.i4m_1=(this.i4m_1-(this.i4m_1%2|0)|0)+(r%2|0)|0,this.i4m_1)},J(Cr).i37=function(t){if(!this.z4a_1.g4a()&&!this.c46().u3w().equals(un()))throw ct(vn("Check failed."));if(!zt(this.c46().f3x(),this.z4a_1.t4c()))throw ct(vn("Check failed."))},J(Cr).z37=function(t){return 2},J(qr).t4f=function(t){return t},J(qr).y37=function(t){if(this.z4a_1.g4a()){var n=this.i4m_1%2|0;if(1==(n+(2&((2^n)&(0|n|-n))>>31)|0)&&J(Er).y37.call(this,t)<0)return-1}else{var i,e=this.i4m_1%2|0;if(1==(e+(2&((2^e)&(0|e|-e))>>31)|0)){var r=this.c46().t41();i=kt(null==r?null:r.u3w(),an())}else i=!1;if(i&&this.c46().v41(),J(Er).y37.call(this,t)<0)return-1}return this.i4m_1=this.i4m_1+1|0,this.i4m_1},J(qr).t37=function(t,n,i,e){var r=J(Er).t37.call(this,t,n,i,e);if(1==(n%2|0)&&!this.z4a_1.g4a()){if(!this.c46().v41().equals(un()))throw ct(vn("Check failed."));Ln(zt(this.z4a_1.t4c(),this.c46().f3x()))}return r},J(qr).i37=function(t){Ln(zt(this.z4a_1.h48(),this.c46().f3x())),J(Er).i37.call(this,t)},J(qr).z37=function(t){return-1},J(Or).y37=function(t){var n,i,e,r=this.z4a_1.s48_1;if(kt(r,ho())){var s;switch(this.v4o_1){case 0:case 1:var o=this.v4o_1;this.v4o_1=o+1|0,s=o;break;default:s=-1}return s}if(null!=this.w4o_1)return 1===this.v4o_1?1:-1;if(0===this.v4o_1){var u=0,a=this.p4a_1;if(u("),this.n35(0).t4s(t,n+4|0,i),t.p7(")")},J(Ts).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Ds).equals.call(this,t)&&(t instanceof Ts||Y(),As(this).equals(As(t)))},J(Ts).hashCode=function(){var t=J(Ds).hashCode.call(this);return M(31,t)+As(this).hashCode()|0},J(Is).v4s=function(t,n,i,e,r){var s,o,u,a=t.h4d_1.d4r(i,e);null==a?(s=i.b4s(),o=i,u=e):(s=a.g34(),o=i.w4s(tt,tt,a),u=e.w4s(tt,tt,a));var h=t.h4d_1.h4r(i,e),_=s.l35();if(kt(_,ci())||_ instanceof wn)return new Vs(t.h4d_1,o,u,r,h);if(kt(_,Pt()))return new Hs(t,n,o,u);if(kt(_,Rt())){var l=i.c4s();return 1===(null==l?-1:l.v9_1)?new Bs(t,n,o,u):new Gs(t,n,o,u)}return _ instanceof vi?new Ms(t,n,o,u):t.k4d_1&&s.k35()?new Zs(t,n,o,u,r):new so(t,n,o,u,h)},J(Is).s4s=function(t,n,i,e,r,s){return e=e===tt?i:e,s===tt?this.v4s(t,n,i,e,r):s.v4s.call(this,t,n,i,e,r)},J(Ds).v4g=function(){return 4===this.y46().v9_1?this.n35(0).v4g():this.y46()},J(Ds).r47=function(){return this.o47_1},J(Ds).p4d=function(){return!1},J(Ds).h48=function(){var t=this.q47_1;return Xn("tagName",1,Kn,(function(t){return t.h48()}),null),t.h2()},J(Ds).u4d=function(t){var n=this.m47_1,i=null==n?t:n;return F(i,bt)?i:Y()},J(Ds).j49=function(){return this.r47().s47_1},J(Ds).j35=function(){return this.r47().s47_1.j35()},J(Ds).e4s=function(){return this.r47().s47_1.l35()},J(Ds).n35=function(t){throw Ri("There are no children")},J(Ds).u4s=function(t,n,i){return this instanceof Hs||this instanceof Vs?this.t4s(t,n,i):i.r(this.j49().h35())?t.p7(this.h48().toString()).p7("<...> = ").p7(this.y46().u9_1):(i.s(this.j49().h35()),this.t4s(t,n,i)),t},J(Ds).toString=function(){var t=Li(),n=Fi();return this.u4s(t,0,n).toString()},J(Ds).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof Ds||Y(),!!kt(this.m47_1,t.m47_1)&&!!this.n47_1.equals(t.n47_1)&&this.r47().equals(t.r47()))},J(Ds).hashCode=function(){var t=this.n47_1.hashCode();t=M(31,t)+this.r47().hashCode()|0;var n=M(31,t),i=this.m47_1,e=null==i?null:yt(i);return n+(null==e?0:e)|0},J(Ms).n4e=function(){return!1},J(Ms).t4d=function(){return!1},J(Ms).y46=function(){return this.r48_1},J(Ms).y4f=function(){return kt(this.s48_1,ho())},J(Ms).n35=function(t){return js(this).h1(t)},J(Ms).c4p=function(t){var n=this.t48_1.o2(t);if(null==n)throw new Gr("Missing polymorphic information for "+t);return n},J(Ms).t4s=function(t,n,i){if(t.p7(this.h48().toString()),this.y4f()){t.p7(" <~(");for(var e=this.t48_1.c2().v();e.w();){var r=e.y().u4s(t,n+4|0,i),s=Jn(44);r.p5(s).p5(Jn(10))}}else{t.p7(" ("),t.p7(" [");for(var o=this.t48_1.c2().v();o.w();){var u=o.y().u4s(t,n+4|0,i),a=Jn(44);u.p5(a).p5(Jn(10))}t.p5(Jn(93))}},J(Ms).equals=function(t){return!!(this===t||null!=t&&Pi(this).equals(Pi(t))&&J(uo).equals.call(this,t)&&(t instanceof Ms||Y(),this.r48_1.equals(t.r48_1)&&kt(this.s48_1,t.s48_1)&&kt(this.t48_1,t.t48_1)&&this.u48_1==t.u48_1))},J(Ms).hashCode=function(){var t=J(uo).hashCode.call(this);t=M(31,t)+this.r48_1.hashCode()|0,t=M(31,t)+yt(this.s48_1)|0,t=M(31,t)+yt(this.t48_1)|0;var n=M(31,t),i=this.u48_1,e=null==i?null:ai(i);return n+(null==e?0:e)|0},J(Ps).f4r=function(){return this.a4t_1},J(Ps).x4s=function(){return this.c4t_1},J(Ps).e4t=function(t,n,i){return new Ps(this.z4s_1,t,this.b4t_1,n,i)},J(Ps).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof Ps||Y(),!!(kt(this.z4s_1,t.z4s_1)&&this.a4t_1.equals(t.a4t_1)&&this.b4t_1===t.b4t_1&&kt(this.c4t_1,t.c4t_1)&&kt(this.d4t_1,t.d4t_1)))},J(Ps).hashCode=function(){var t=yt(this.z4s_1);t=M(31,t)+this.a4t_1.hashCode()|0,t=M(31,t)+hi(this.b4t_1)|0;var n=M(31,t),i=this.c4t_1,e=null==i?null:yt(i),r=M(31,t=n+(null==e?0:e)|0),s=this.d4t_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},J(Ps).g34=function(){return null},J(Ps).d4s=function(){var t=this.c4t_1,n=null==t?null:t.g34();return new Fo(null==n?this.z4s_1:n,this.l4r())},J(Ps).a4s=function(){return Tn()},J(Ps).b4s=function(){var t=this.c4t_1,n=null==t?null:t.g34();return null==n?this.z4s_1:n},J(Ps).c4s=function(){return this.d4t_1},J(Ps).l4r=function(){var t=this.a4t_1.k4q_1,n=null==t?null:Vi(t);return null==n?zs():n},J(Hs).y46=function(){return this.q4c_1},J(Hs).n4e=function(){return!1},J(Hs).n35=function(t){return Us(this)},J(Hs).t4s=function(t,n,i){t.p7(this.h48().toString()),this.u49()?(t.p7(": EludedList<"),Us(this).u4s(t,n,i),t.p5(Jn(62))):(t.p7(": ExplicitList<"),Us(this).u4s(t,n,i),t.p5(Jn(62)))},J(Hs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(mo).equals.call(this,t)&&(t instanceof Hs||Y(),this.u49()===t.u49()&&!!this.q4c_1.equals(t.q4c_1)&&Us(this).equals(Us(t)))},J(Hs).hashCode=function(){var t=J(mo).hashCode.call(this);return t=M(31,t)+hi(this.u49())|0,t=M(31,t)+this.q4c_1.hashCode()|0,M(31,t)+Us(this).hashCode()|0},J(Vs).t4d=function(){return this.p4t_1},J(Vs).n4e=function(){return this.q4t_1},J(Vs).y46=function(){return this.r4t_1},J(Vs).j35=function(){return 0},J(Vs).t4s=function(t,n,i){t.p7(this.h48().toString()).p5(Jn(58)).p7(this.l35().toString()).p7(" = ").p7(this.r4t_1.toString())},J(Vs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(uo).equals.call(this,t)&&(t instanceof Vs||Y(),this.r4t_1.equals(t.r4t_1))},J(Vs).hashCode=function(){var t=J(uo).hashCode.call(this);return M(31,t)+this.r4t_1.hashCode()|0},J(Bs).n4e=function(){return!1},J(Bs).t4d=function(){return!0},J(Bs).y46=function(){return He()},J(Bs).s4t=function(){var t=this.c4i_1;return Xn("keyDescriptor",1,Kn,(function(t){return t.s4t()}),null),t.h2()},J(Bs).e4i=function(){var t=this.d4i_1;return Xn("valueDescriptor",1,Kn,(function(t){return t.e4i()}),null),t.h2()},J(Bs).j35=function(){return 2},J(Bs).n35=function(t){return 0==(t%2|0)?this.s4t():this.e4i()},J(Bs).t4s=function(t,n,i){t.p7(this.h48().toString()).p7(" (").p5(Jn(10)),go(t,n),this.s4t().u4s(t,n+4|0,i).p7(",").p5(Jn(10)),go(t,n),this.e4i().u4s(t,n+4|0,i).p5(Jn(41))},J(Gs).y46=function(){return Ue()},J(Gs).n4e=function(){return!1},J(Gs).g4a=function(){var t=this.c4a_1;return Xn("isValueCollapsed",1,Kn,(function(t){return t.g4a()}),null),t.h2()},J(Gs).t4c=function(){var t=this.d4a_1;return Xn("entryName",1,Kn,(function(t){return t.t4c()}),null),t.h2()},J(Gs).n35=function(t){return 0==(t%2|0)?Ys(this):Ws(this)},J(Gs).t4s=function(t,n,i){t.p7(this.h48().toString()).p7(this.u49()?": TransparentMap<":": ExplicitMap<"),this.n35(0).t4s(t,n+4|0,i),t.p7(", "),this.n35(1).t4s(t,n+4|0,i),t.p5(Jn(62))},J(Zs).n4e=function(){return this.c4u_1},J(Zs).t4d=function(){return Ks(this).t4d()},J(Zs).y46=function(){return Ks(this).y46()},J(Zs).h48=function(){return Ks(this).h48()},J(Zs).n35=function(t){if(0!==t)throw Qi("Inline classes only have one child");return Ks(this)},J(Zs).p4d=function(){var t=this.e4u_1;return Xn("isUnsigned",1,Kn,(function(t){return t.p4d()}),null),t.h2()},J(Zs).t4s=function(t,n,i){t.p7(this.h48().toString()),t.p7(": Inline ("),Ks(this).u4s(t,n+4|0,i),t.p5(Jn(41))},J(Zs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(uo).equals.call(this,t)&&(t instanceof Zs||Y(),this.p4d()===t.p4d())},J(Zs).hashCode=function(){var t=J(uo).hashCode.call(this);return M(31,t)+hi(this.p4d())|0},J(so).t4d=function(){return this.o4g_1},J(so).n4e=function(){return!1},J(so).y46=function(){return Ue()},J(so).n35=function(t){return Qs(this).h1(t)},J(so).s4g=function(){var t=io(this);return null==t?null:t.me_1},J(so).t4s=function(t,n,i){t.p7(this.h48().toString()).p7(" (").p5(Jn(10));for(var e=!0,r=Qs(this).v();r.w();){var s=r.y();if(e)e=!1;else{var o=Jn(44);t.p5(o).p5(Jn(10))}go(t,n),s.u4s(t,n+4|0,i)}go(t.p5(Jn(10)),n-4|0).p5(Jn(41))},J(so).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(uo).equals.call(this,t)&&(t instanceof so||Y(),!!kt(this.p4g_1,t.p4g_1))},J(so).hashCode=function(){var t=J(uo).hashCode.call(this),n=M(31,t),i=this.p4g_1,e=null==i?null:yt(i);return n+(null==e?0:e)|0},J(uo).w4e=function(t,n){return function(t,n,i,e){var r,s=t.j4b_1;if(!kt(s,q))return null==s||null!=s?s:Y();if(null==t.i4b_1)r=null;else{var o=new vr(new zr(n,i,kn(t.i4b_1).s45()),t);r=e.h34(o)}var u=r;return t.j4b_1=u,null==u||null!=u?u:Y()}(this,t.x4c_1,t.y4c_1,n)},J(uo).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Ds).equals.call(this,t)&&(t instanceof uo||Y(),this.h4b_1===t.h4b_1&&this.i4b_1==t.i4b_1&&kt(this.j4b_1,t.j4b_1))},J(uo).hashCode=function(){var t=J(Ds).hashCode.call(this);t=M(31,t)+hi(this.h4b_1)|0;var n=M(31,t),i=this.i4b_1,e=null==i?null:ai(i),r=M(31,t=n+(null==e?0:e)|0),s=this.j4b_1,o=null==s?null:yt(s);return r+(null==o?0:o)|0},J(vo).g34=function(){return this.h4u_1},J(vo).x4s=function(){return this.j4u_1},J(vo).e4t=function(t,n,i){return new vo(this.h4u_1,this.i4u_1,t,n,i)},J(vo).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof vo||Y(),!!this.h4u_1.equals(t.h4u_1)&&this.i4u_1===t.i4u_1&&!!kt(this.j4u_1,t.j4u_1)&&!!this.k4u_1.equals(t.k4u_1)&&kt(this.l4u_1,t.l4u_1))},J(vo).hashCode=function(){var t=this.h4u_1.hashCode();t=M(31,t)+this.i4u_1|0;var n=M(31,t),i=this.j4u_1,e=null==i?null:yt(i);t=M(31,t=n+(null==e?0:e)|0)+this.k4u_1.hashCode()|0;var r=M(31,t),s=this.l4u_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},J(vo).l4r=function(){return Vi(this.h4u_1.h48())},J(vo).d4s=function(){return null!=this.j4u_1?new Fo(this.j4u_1.g34(),Vi(this.h4u_1.h48())):-1===this.i4u_1||kt(this.b4s().l35(),et())?this.h4u_1.r47():new Fo(this.b4s(),this.h4u_1.l47_1.l4r())},J(vo).f4r=function(){return this.k4u_1},J(vo).a4s=function(){return-1===this.i4u_1?Tn():this.h4u_1.j49().m35(this.i4u_1)},J(vo).b4s=function(){return null!=this.j4u_1?this.j4u_1.g34():kt(this.h4u_1.e4s(),et())||-1===this.i4u_1?this.h4u_1.j49():this.h4u_1.j49().n35(this.i4u_1)},J(vo).c4s=function(){return this.l4u_1},J(mo).u49=function(){return this.t49_1},J(mo).f4t=function(){return!1},J(mo).t4d=function(){return!1},J(mo).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Ds).equals.call(this,t)&&(t instanceof mo||Y(),this.u49()===t.u49()&&this.f4t()===t.f4t()&&this.t4d()===t.t4d())},J(mo).hashCode=function(){var t=J(Ds).hashCode.call(this);return t=M(31,t)+hi(this.u49())|0,t=M(31,t)+hi(this.f4t())|0,M(31,t)+hi(this.t4d())|0},J(bo).d4s=function(){return this.n4u_1},J(bo).f4r=function(){return this.o4u_1},J(bo).l4r=function(){return this.p4u_1},J(bo).c4s=function(){return this.q4u_1},J(bo).x4s=function(){return this.r4u_1},J(bo).g34=function(){return this.s4u_1},J(bo).a4s=function(){return Tn()},J(bo).b4s=function(){return this.n4u_1.s47_1},J(bo).e4t=function(t,n,i){return new bo(this.m4u_1,this.n4u_1,t,this.p4u_1,n,i)},J(So).oe=function(){return this.t4g_1},J(So).pe=function(){return this.u4g_1},J(So).toString=function(){return"XmlOrderConstraint(before="+this.t4g_1+", after="+this.u4g_1+")"},J(So).hashCode=function(){var t=this.t4g_1;return M(t,31)+this.u4g_1|0},J(So).equals=function(t){if(this===t)return!0;if(!(t instanceof So))return!1;var n=t instanceof So?t:Y();return this.t4g_1===n.t4g_1&&this.u4g_1===n.u4g_1},J(To).l4s=function(t){for(var n=0,i=t.length;n{"use strict";t.exports=i.p+"a1015df118c0009bbaae.json"},918:(t,n,i)=>{"use strict";t.exports=i.p+"4e1313da42287d18ad5a.png"},513:(t,n,i)=>{"use strict";t.exports=i.p+"5de21dc9a6671d378dbe.png"},79:(t,n,i)=>{"use strict";t.exports=i.p+"b52705ec61511efb27b9.png"},926:(t,n,i)=>{"use strict";t.exports=i.p+"21c6d0bc8e5465644f8b.png"},105:(t,n,i)=>{"use strict";t.exports=i.p+"33c2ca54c6adbcd6a2e3.png"},36:(t,n,i)=>{"use strict";t.exports=i.p+"dd554b8af1ab5e3bc726.png"},257:(t,n,i)=>{"use strict";t.exports=i.p+"791bfb510d74390a8d5a.png"},520:(t,n,i)=>{"use strict";t.exports=i.p+"fbab3596911513c77182.png"},709:(t,n,i)=>{"use strict";t.exports=i.p+"4f486d36fd4835ea883d.png"}},__webpack_module_cache__={};function __webpack_require__(t){var n=__webpack_module_cache__[t];if(void 0!==n)return n.exports;var i=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(i.exports,i,i.exports,__webpack_require__),i.exports}__webpack_require__.d=(t,n)=>{for(var i in n)__webpack_require__.o(n,i)&&!__webpack_require__.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),__webpack_require__.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),__webpack_require__.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;__webpack_require__.g.importScripts&&(t=__webpack_require__.g.location+"");var n=__webpack_require__.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var i=n.getElementsByTagName("script");if(i.length)for(var e=i.length-1;e>-1&&!t;)t=i[e--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=t})();var __webpack_exports__=__webpack_require__(960);return __webpack_exports__})())); +!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports["worldwind-tutorials"]=n():t["worldwind-tutorials"]=n()}(this,(()=>(()=>{var __webpack_modules__={135:(t,n,i)=>{"use strict";function e(t,n,i){function e(t){Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=t,n&&n.apply(this,arguments),this.toString=function(){return this.name+": "+this.message}}return void 0===i&&(i=Error),e.prototype=Object.create(i.prototype),e.prototype.name=t,e.prototype.constructor=e,e}i.r(n),i.d(n,{ArithmeticException:()=>u,ChronoField:()=>O,ChronoLocalDate:()=>Y,ChronoLocalDateTime:()=>_n,ChronoUnit:()=>E,ChronoZonedDateTime:()=>rn,Clock:()=>dn,DateTimeException:()=>r,DateTimeFormatter:()=>Wt,DateTimeFormatterBuilder:()=>Ut,DateTimeParseException:()=>s,DayOfWeek:()=>M,DecimalStyle:()=>mt,Duration:()=>x,IllegalArgumentException:()=>a,IllegalStateException:()=>h,Instant:()=>vn,IsoChronology:()=>nn,IsoFields:()=>rt,LocalDate:()=>hn,LocalDateTime:()=>ln,LocalTime:()=>cn,Month:()=>N,MonthDay:()=>Gt,NullPointerException:()=>_,OffsetDateTime:()=>on,OffsetTime:()=>en,Period:()=>P,ResolverStyle:()=>U,SignStyle:()=>gt,Temporal:()=>V,TemporalAccessor:()=>A,TemporalAdjuster:()=>H,TemporalAdjusters:()=>Jt,TemporalAmount:()=>y,TemporalField:()=>C,TemporalQueries:()=>z,TemporalQuery:()=>T,TemporalUnit:()=>k,TextStyle:()=>bt,UnsupportedTemporalTypeException:()=>o,ValueRange:()=>q,Year:()=>Xt,YearConstants:()=>S,YearMonth:()=>Kt,ZoneId:()=>G,ZoneOffset:()=>Q,ZoneOffsetTransition:()=>gn,ZoneRegion:()=>Mt,ZoneRules:()=>K,ZoneRulesProvider:()=>jt,ZonedDateTime:()=>sn,_:()=>An,convert:()=>En,nativeJs:()=>qn,use:()=>In});var r=e("DateTimeException",(function(t,n){void 0===n&&(n=null);var i=t||this.name;null!==n&&n instanceof Error&&(i+="\n-------\nCaused by: "+n.stack+"\n-------\n"),this.message=i})),s=e("DateTimeParseException",(function(t,n,i,e){void 0===n&&(n=""),void 0===i&&(i=0),void 0===e&&(e=null);var r=t||this.name;r+=": "+n+", at index: "+i,null!==e&&e instanceof Error&&(r+="\n-------\nCaused by: "+e.stack+"\n-------\n"),this.message=r,this.parsedString=function(){return n},this.errorIndex=function(){return i}})),o=e("UnsupportedTemporalTypeException",null,r),u=e("ArithmeticException"),a=e("IllegalArgumentException"),h=e("IllegalStateException"),_=e("NullPointerException");function l(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}function c(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function f(t,n,i){if(!t)throw i?new i(n):new Error(n)}function v(t,n){if(null==t)throw new _(n+" must not be null");return t}function d(t,n,i){if(!(t instanceof n))throw new a(i+" must be an instance of "+(n.name?n.name:n)+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""));return t}function w(t){throw new TypeError('abstract method "'+t+'" is not implemented')}var p=Object.freeze({__proto__:null,assert:f,requireNonNull:v,requireInstance:d,abstractMethodFail:w}),m=9007199254740991,g=-9007199254740991,b=function(){function t(){}return t.intDiv=function(n,i){var e=n/i;return e=t.roundDown(e),t.safeZero(e)},t.intMod=function(n,i){var e=n-t.intDiv(n,i)*i;return e=t.roundDown(e),t.safeZero(e)},t.roundDown=function(t){return t<0?Math.ceil(t):Math.floor(t)},t.floorDiv=function(n,i){var e=Math.floor(n/i);return t.safeZero(e)},t.floorMod=function(n,i){var e=n-t.floorDiv(n,i)*i;return t.safeZero(e)},t.safeAdd=function(n,i){if(t.verifyInt(n),t.verifyInt(i),0===n)return t.safeZero(i);if(0===i)return t.safeZero(n);var e=t.safeToInt(n+i);if(e===n||e===i)throw new u("Invalid addition beyond MAX_SAFE_INTEGER!");return e},t.safeSubtract=function(n,i){return t.verifyInt(n),t.verifyInt(i),0===n&&0===i?0:0===n?t.safeZero(-1*i):0===i?t.safeZero(n):t.safeToInt(n-i)},t.safeMultiply=function(n,i){if(t.verifyInt(n),t.verifyInt(i),1===n)return t.safeZero(i);if(1===i)return t.safeZero(n);if(0===n||0===i)return 0;var e=t.safeToInt(n*i);if(e/i!==n||n===g&&-1===i||i===g&&-1===n)throw new u("Multiplication overflows: "+n+" * "+i);return e},t.parseInt=function(t){function n(n){return t.apply(this,arguments)}return n.toString=function(){return t.toString()},n}((function(n){var i=parseInt(n);return t.safeToInt(i)})),t.safeToInt=function(n){return t.verifyInt(n),t.safeZero(n)},t.verifyInt=function(t){if(null==t)throw new u("Invalid value: '"+t+"', using null or undefined as argument");if(isNaN(t))throw new u("Invalid int value, using NaN as argument");if(t%1!=0)throw new u("Invalid value: '"+t+"' is a float");if(t>m||tn?1:0},t.smi=function(t){return t>>>1&1073741824|3221225471&t},t.hash=function(n){if(n!=n||n===1/0)return 0;for(var i=n;n>4294967295;)i^=n/=4294967295;return t.smi(i)},t.hashCode=function(){for(var n=17,i=arguments.length,e=new Array(i),r=0;r0&&e<0)e+=cn.NANOS_PER_SECOND;else if(i<0&&e>0)e-=cn.NANOS_PER_SECOND;else if(0===i&&0!==e){var s=n.with(O.NANO_OF_SECOND,r);i=t.until(s,E.SECONDS)}}catch(t){}return this.ofSeconds(i,e)},n.parse=function(t){v(t,"text");var i=new RegExp("([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?","i").exec(t);if(null!==i&&"T"===i[3]==0){var e="-"===i[1],r=i[2],o=i[4],u=i[5],a=i[6],h=i[7];if(null!=r||null!=o||null!=u||null!=a){var _=n._parseNumber(t,r,cn.SECONDS_PER_DAY,"days"),l=n._parseNumber(t,o,cn.SECONDS_PER_HOUR,"hours"),c=n._parseNumber(t,u,cn.SECONDS_PER_MINUTE,"minutes"),f=n._parseNumber(t,a,1,"seconds"),d=null!=a&&"-"===a.charAt(0),w=n._parseFraction(t,h,d?-1:1);try{return n._create(e,_,l,c,f,w)}catch(n){throw new s("Text cannot be parsed to a Duration: overflow",t,0,n)}}}throw new s("Text cannot be parsed to a Duration",t,0)},n._parseNumber=function(t,n,i,e){if(null==n)return 0;try{return"+"===n[0]&&(n=n.substring(1)),b.safeMultiply(parseFloat(n),i)}catch(n){throw new s("Text cannot be parsed to a Duration: "+e,t,0,n)}},n._parseFraction=function(t,n,i){return null==n||0===n.length?0:(n=(n+"000000000").substring(0,9),parseFloat(n)*i)},n._create=function(){return arguments.length<=2?n._createSecondsNanos(arguments[0],arguments[1]):n._createNegateDaysHoursMinutesSecondsNanos(arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5])},n._createNegateDaysHoursMinutesSecondsNanos=function(t,i,e,r,s,o){var u=b.safeAdd(i,b.safeAdd(e,b.safeAdd(r,s)));return t?n.ofSeconds(u,o).negated():n.ofSeconds(u,o)},n._createSecondsNanos=function(t,i){return void 0===t&&(t=0),void 0===i&&(i=0),0===t&&0===i?n.ZERO:new n(t,i)};var i=n.prototype;return i.get=function(t){if(t===E.SECONDS)return this._seconds;if(t===E.NANOS)return this._nanos;throw new o("Unsupported unit: "+t)},i.units=function(){return[E.SECONDS,E.NANOS]},i.isZero=function(){return 0===this._seconds&&0===this._nanos},i.isNegative=function(){return this._seconds<0},i.seconds=function(){return this._seconds},i.nano=function(){return this._nanos},i.withSeconds=function(t){return n._create(t,this._nanos)},i.withNanos=function(t){return O.NANO_OF_SECOND.checkValidIntValue(t),n._create(this._seconds,t)},i.plusDuration=function(t){return v(t,"duration"),this.plus(t.seconds(),t.nano())},i.plus=function(t,n){return 1===arguments.length?this.plusDuration(t):2===arguments.length&&n instanceof k?this.plusAmountUnit(t,n):this.plusSecondsNanos(t,n)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n===E.DAYS)return this.plusSecondsNanos(b.safeMultiply(t,cn.SECONDS_PER_DAY),0);if(n.isDurationEstimated())throw new o("Unit must not have an estimated duration");if(0===t)return this;if(n instanceof E){switch(n){case E.NANOS:return this.plusNanos(t);case E.MICROS:return this.plusSecondsNanos(1e3*b.intDiv(t,1e9),1e3*b.intMod(t,1e9));case E.MILLIS:return this.plusMillis(t);case E.SECONDS:return this.plusSeconds(t)}return this.plusSecondsNanos(b.safeMultiply(n.duration().seconds(),t),0)}var i=n.duration().multipliedBy(t);return this.plusSecondsNanos(i.seconds(),i.nano())},i.plusDays=function(t){return this.plusSecondsNanos(b.safeMultiply(t,cn.SECONDS_PER_DAY),0)},i.plusHours=function(t){return this.plusSecondsNanos(b.safeMultiply(t,cn.SECONDS_PER_HOUR),0)},i.plusMinutes=function(t){return this.plusSecondsNanos(b.safeMultiply(t,cn.SECONDS_PER_MINUTE),0)},i.plusSeconds=function(t){return this.plusSecondsNanos(t,0)},i.plusMillis=function(t){return this.plusSecondsNanos(b.intDiv(t,1e3),1e6*b.intMod(t,1e3))},i.plusNanos=function(t){return this.plusSecondsNanos(0,t)},i.plusSecondsNanos=function(t,i){if(v(t,"secondsToAdd"),v(i,"nanosToAdd"),0===t&&0===i)return this;var e=b.safeAdd(this._seconds,t);e=b.safeAdd(e,b.intDiv(i,cn.NANOS_PER_SECOND)),i=b.intMod(i,cn.NANOS_PER_SECOND);var r=b.safeAdd(this._nanos,i);return n.ofSeconds(e,r)},i.minus=function(t,n){return 1===arguments.length?this.minusDuration(t):this.minusAmountUnit(t,n)},i.minusDuration=function(t){v(t,"duration");var n=t.seconds(),i=t.nano();return n===g?this.plus(m,-i):this.plus(-n,-i)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),t===g?this.plusAmountUnit(m,n):this.plusAmountUnit(-t,n)},i.minusDays=function(t){return t===g?this.plusDays(m):this.plusDays(-t)},i.minusHours=function(t){return t===g?this.plusHours(m):this.plusHours(-t)},i.minusMinutes=function(t){return t===g?this.plusMinutes(m):this.plusMinutes(-t)},i.minusSeconds=function(t){return t===g?this.plusSeconds(m):this.plusSeconds(-t)},i.minusMillis=function(t){return t===g?this.plusMillis(m):this.plusMillis(-t)},i.minusNanos=function(t){return t===g?this.plusNanos(m):this.plusNanos(-t)},i.multipliedBy=function(t){if(0===t)return n.ZERO;if(1===t)return this;var i=b.safeMultiply(this._seconds,t),e=b.safeMultiply(this._nanos,t);return i+=b.intDiv(e,cn.NANOS_PER_SECOND),e=b.intMod(e,cn.NANOS_PER_SECOND),n.ofSeconds(i,e)},i.dividedBy=function(t){if(0===t)throw new u("Cannot divide by zero");if(1===t)return this;var i=b.intDiv(this._seconds,t),e=b.roundDown((this._seconds/t-i)*cn.NANOS_PER_SECOND),r=b.intDiv(this._nanos,t);return r=e+r,n.ofSeconds(i,r)},i.negated=function(){return this.multipliedBy(-1)},i.abs=function(){return this.isNegative()?this.negated():this},i.addTo=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.plus(this._seconds,E.SECONDS)),0!==this._nanos&&(t=t.plus(this._nanos,E.NANOS)),t},i.subtractFrom=function(t){return v(t,"temporal"),0!==this._seconds&&(t=t.minus(this._seconds,E.SECONDS)),0!==this._nanos&&(t=t.minus(this._nanos,E.NANOS)),t},i.toDays=function(){return b.intDiv(this._seconds,cn.SECONDS_PER_DAY)},i.toHours=function(){return b.intDiv(this._seconds,cn.SECONDS_PER_HOUR)},i.toMinutes=function(){return b.intDiv(this._seconds,cn.SECONDS_PER_MINUTE)},i.toMillis=function(){var t=Math.round(b.safeMultiply(this._seconds,1e3));return b.safeAdd(t,b.intDiv(this._nanos,1e6))},i.toNanos=function(){var t=b.safeMultiply(this._seconds,cn.NANOS_PER_SECOND);return b.safeAdd(t,this._nanos)},i.compareTo=function(t){v(t,"otherDuration"),d(t,n,"otherDuration");var i=b.compareNumbers(this._seconds,t.seconds());return 0!==i?i:this._nanos-t.nano()},i.equals=function(t){return this===t||t instanceof n&&this.seconds()===t.seconds()&&this.nano()===t.nano()},i.toString=function(){if(this===n.ZERO)return"PT0S";var t,i=b.intDiv(this._seconds,cn.SECONDS_PER_HOUR),e=b.intDiv(b.intMod(this._seconds,cn.SECONDS_PER_HOUR),cn.SECONDS_PER_MINUTE),r=b.intMod(this._seconds,cn.SECONDS_PER_MINUTE),s="PT";if(0!==i&&(s+=i+"H"),0!==e&&(s+=e+"M"),0===r&&0===this._nanos&&s.length>2)return s;if(r<0&&this._nanos>0?s+=-1===r?"-0":r+1:s+=r,this._nanos>0)for(s+=".",s+=t=(t=r<0?""+(2*cn.NANOS_PER_SECOND-this._nanos):""+(cn.NANOS_PER_SECOND+this._nanos)).slice(1,t.length);"0"===s.charAt(s.length-1);)s=s.slice(0,s.length-1);return s+"S"},i.toJSON=function(){return this.toString()},n}(y),S=function(){},E=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return this.isDateBased()||this===n.FOREVER},i.isDateBased=function(){return this.compareTo(n.DAYS)>=0&&this!==n.FOREVER},i.isTimeBased=function(){return this.compareTo(n.DAYS)<0},i.isSupportedBy=function(t){if(this===n.FOREVER)return!1;try{return t.plus(1,this),!0}catch(n){try{return t.plus(-1,this),!0}catch(t){return!1}}},i.addTo=function(t,n){return t.plus(n,this)},i.between=function(t,n){return t.until(n,this)},i.toString=function(){return this._name},i.compareTo=function(t){return this.duration().compareTo(t.duration())},n}(k),C=function(){function t(){}var n=t.prototype;return n.isDateBased=function(){w("isDateBased")},n.isTimeBased=function(){w("isTimeBased")},n.baseUnit=function(){w("baseUnit")},n.rangeUnit=function(){w("rangeUnit")},n.range=function(){w("range")},n.rangeRefinedBy=function(t){w("rangeRefinedBy")},n.getFrom=function(t){w("getFrom")},n.adjustInto=function(t,n){w("adjustInto")},n.isSupportedBy=function(t){w("isSupportedBy")},n.displayName=function(){w("displayName")},n.equals=function(t){w("equals")},n.name=function(){w("name")},t}(),q=function(){function t(t,n,i,e){f(!(t>n),"Smallest minimum value '"+t+"' must be less than largest minimum value '"+n+"'",a),f(!(i>e),"Smallest maximum value '"+i+"' must be less than largest maximum value '"+e+"'",a),f(!(n>e),"Minimum value '"+n+"' must be less than maximum value '"+e+"'",a),this._minSmallest=t,this._minLargest=n,this._maxLargest=e,this._maxSmallest=i}var n=t.prototype;return n.isFixed=function(){return this._minSmallest===this._minLargest&&this._maxSmallest===this._maxLargest},n.minimum=function(){return this._minSmallest},n.largestMinimum=function(){return this._minLargest},n.maximum=function(){return this._maxLargest},n.smallestMaximum=function(){return this._maxSmallest},n.isValidValue=function(t){return this.minimum()<=t&&t<=this.maximum()},n.checkValidValue=function(t,n){return this.isValidValue(t)?t:f(!1,null!=n?"Invalid value for "+n+" (valid values "+this.toString()+"): "+t:"Invalid value (valid values "+this.toString()+"): "+t,r)},n.checkValidIntValue=function(t,n){if(!1===this.isValidIntValue(t))throw new r("Invalid int value for "+n+": "+t);return t},n.isValidIntValue=function(t){return this.isIntValue()&&this.isValidValue(t)},n.isIntValue=function(){return this.minimum()>=b.MIN_SAFE_INTEGER&&this.maximum()<=b.MAX_SAFE_INTEGER},n.equals=function(n){return n===this||n instanceof t&&this._minSmallest===n._minSmallest&&this._minLargest===n._minLargest&&this._maxSmallest===n._maxSmallest&&this._maxLargest===n._maxLargest},n.hashCode=function(){return b.hashCode(this._minSmallest,this._minLargest,this._maxSmallest,this._maxLargest)},n.toString=function(){var t=this.minimum()+(this.minimum()!==this.largestMinimum()?"/"+this.largestMinimum():"");return(t+=" - ")+(this.smallestMaximum()+(this.smallestMaximum()!==this.maximum()?"/"+this.maximum():""))},t.of=function(){return 2===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[1]):3===arguments.length?new t(arguments[0],arguments[0],arguments[1],arguments[2]):4===arguments.length?new t(arguments[0],arguments[1],arguments[2],arguments[3]):f(!1,"Invalid number of arguments "+arguments.length,a)},t}(),O=function(t){function n(n,i,e,r){var s;return(s=t.call(this)||this)._name=n,s._baseUnit=i,s._rangeUnit=e,s._range=r,s}l(n,t),n.byName=function(t){for(var i in n)if(n[i]&&n[i]instanceof n&&n[i].name()===t)return n[i]};var i=n.prototype;return i.name=function(){return this._name},i.baseUnit=function(){return this._baseUnit},i.rangeUnit=function(){return this._rangeUnit},i.range=function(){return this._range},i.displayName=function(){return this.toString()},i.checkValidValue=function(t){return this.range().checkValidValue(t,this)},i.checkValidIntValue=function(t){return this.range().checkValidIntValue(t,this)},i.isDateBased=function(){return this===n.DAY_OF_WEEK||this===n.ALIGNED_DAY_OF_WEEK_IN_MONTH||this===n.ALIGNED_DAY_OF_WEEK_IN_YEAR||this===n.DAY_OF_MONTH||this===n.DAY_OF_YEAR||this===n.EPOCH_DAY||this===n.ALIGNED_WEEK_OF_MONTH||this===n.ALIGNED_WEEK_OF_YEAR||this===n.MONTH_OF_YEAR||this===n.YEAR_OF_ERA||this===n.YEAR||this===n.ERA},i.isTimeBased=function(){return this===n.NANO_OF_SECOND||this===n.NANO_OF_DAY||this===n.MICRO_OF_SECOND||this===n.MICRO_OF_DAY||this===n.MILLI_OF_SECOND||this===n.MILLI_OF_DAY||this===n.SECOND_OF_MINUTE||this===n.SECOND_OF_DAY||this===n.MINUTE_OF_HOUR||this===n.MINUTE_OF_DAY||this===n.HOUR_OF_AMPM||this===n.CLOCK_HOUR_OF_AMPM||this===n.HOUR_OF_DAY||this===n.CLOCK_HOUR_OF_DAY||this===n.AMPM_OF_DAY},i.rangeRefinedBy=function(t){return t.range(this)},i.getFrom=function(t){return t.getLong(this)},i.toString=function(){return this.name()},i.equals=function(t){return this===t},i.adjustInto=function(t,n){return t.with(this,n)},i.isSupportedBy=function(t){return t.isSupported(this)},n}(C),z=function(){function t(){}return t.zoneId=function(){return t.ZONE_ID},t.chronology=function(){return t.CHRONO},t.precision=function(){return t.PRECISION},t.zone=function(){return t.ZONE},t.offset=function(){return t.OFFSET},t.localDate=function(){return t.LOCAL_DATE},t.localTime=function(){return t.LOCAL_TIME},t}(),A=function(){function t(){}var n=t.prototype;return n.query=function(t){return t===z.zoneId()||t===z.chronology()||t===z.precision()?null:t.queryFrom(this)},n.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},n.range=function(t){if(t instanceof O){if(this.isSupported(t))return t.range();throw new o("Unsupported field: "+t)}return t.rangeRefinedBy(this)},t}(),T=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n.prototype.queryFrom=function(t){w("queryFrom")},n}($);function I(t,n){var i=function(t){function n(){return t.apply(this,arguments)||this}return l(n,t),n}(T);return i.prototype.queryFrom=n,new i(t)}var D,j,M=function(t){function n(n,i){var e;return(e=t.call(this)||this)._ordinal=n,e._name=i,e}l(n,t);var i=n.prototype;return i.ordinal=function(){return this._ordinal},i.name=function(){return this._name},n.values=function(){return D.slice()},n.valueOf=function(t){for(var i=0;i7)throw new r("Invalid value for DayOfWeek: "+t);return D[t-1]},n.from=function(t){if(f(null!=t,"temporal",_),t instanceof n)return t;try{return n.of(t.get(O.DAY_OF_WEEK))}catch(n){throw n instanceof r?new r("Unable to obtain DayOfWeek from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""),n):n}},i.value=function(){return this._ordinal+1},i.displayName=function(t,n){throw new a("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return t instanceof O?t===O.DAY_OF_WEEK:null!=t&&t.isSupportedBy(this)},i.range=function(t){if(t===O.DAY_OF_WEEK)return t.range();if(t instanceof O)throw new o("Unsupported field: "+t);return t.rangeRefinedBy(this)},i.get=function(t){return t===O.DAY_OF_WEEK?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===O.DAY_OF_WEEK)return this.value();if(t instanceof O)throw new o("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var n=b.floorMod(t,7);return D[b.floorMod(this._ordinal+(n+7),7)]},i.minus=function(t){return this.plus(-1*b.floorMod(t,7))},i.query=function(t){return t===z.precision()?E.DAYS:t===z.localDate()||t===z.localTime()||t===z.chronology()||t===z.zone()||t===z.zoneId()||t===z.offset()?null:(f(null!=t,"query",_),t.queryFrom(this))},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.DAY_OF_WEEK,this.value())},i.equals=function(t){return this===t},i.toString=function(){return this._name},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._ordinal-t._ordinal},i.toJSON=function(){return this.toString()},n}(A),N=function(t){function n(n,i){var e;return(e=t.call(this)||this)._value=b.safeToInt(n),e._name=i,e}l(n,t);var i=n.prototype;return i.value=function(){return this._value},i.ordinal=function(){return this._value-1},i.name=function(){return this._name},i.displayName=function(t,n){throw new a("Pattern using (localized) text not implemented yet!")},i.isSupported=function(t){return null!==t&&(t instanceof O?t===O.MONTH_OF_YEAR:null!=t&&t.isSupportedBy(this))},i.get=function(t){return t===O.MONTH_OF_YEAR?this.value():this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(t===O.MONTH_OF_YEAR)return this.value();if(t instanceof O)throw new o("Unsupported field: "+t);return t.getFrom(this)},i.plus=function(t){var i=b.intMod(t,12)+12,e=b.intMod(this.value()+i,12);return e=0===e?12:e,n.of(e)},i.minus=function(t){return this.plus(-1*b.intMod(t,12))},i.length=function(t){switch(this){case n.FEBRUARY:return t?29:28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.minLength=function(){switch(this){case n.FEBRUARY:return 28;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.maxLength=function(){switch(this){case n.FEBRUARY:return 29;case n.APRIL:case n.JUNE:case n.SEPTEMBER:case n.NOVEMBER:return 30;default:return 31}},i.firstDayOfYear=function(t){var i=t?1:0;switch(this){case n.JANUARY:return 1;case n.FEBRUARY:return 32;case n.MARCH:return 60+i;case n.APRIL:return 91+i;case n.MAY:return 121+i;case n.JUNE:return 152+i;case n.JULY:return 182+i;case n.AUGUST:return 213+i;case n.SEPTEMBER:return 244+i;case n.OCTOBER:return 274+i;case n.NOVEMBER:return 305+i;case n.DECEMBER:default:return 335+i}},i.firstMonthOfQuarter=function(){switch(this){case n.JANUARY:case n.FEBRUARY:case n.MARCH:return n.JANUARY;case n.APRIL:case n.MAY:case n.JUNE:return n.APRIL;case n.JULY:case n.AUGUST:case n.SEPTEMBER:return n.JULY;case n.OCTOBER:case n.NOVEMBER:case n.DECEMBER:default:return n.OCTOBER}},i.query=function(n){return f(null!=n,"query() parameter must not be null",r),n===z.chronology()?nn.INSTANCE:n===z.precision()?E.MONTHS:t.prototype.query.call(this,n)},i.toString=function(){switch(this){case n.JANUARY:return"JANUARY";case n.FEBRUARY:return"FEBRUARY";case n.MARCH:return"MARCH";case n.APRIL:return"APRIL";case n.MAY:return"MAY";case n.JUNE:return"JUNE";case n.JULY:return"JULY";case n.AUGUST:return"AUGUST";case n.SEPTEMBER:return"SEPTEMBER";case n.OCTOBER:return"OCTOBER";case n.NOVEMBER:return"NOVEMBER";case n.DECEMBER:return"DECEMBER";default:return"unknown Month, value: "+this.value()}},i.toJSON=function(){return this.toString()},i.adjustInto=function(t){return t.with(O.MONTH_OF_YEAR,this.value())},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._value-t._value},i.equals=function(t){return this===t},n.valueOf=function(t){for(var i=0;i12)&&f(!1,"Invalid value for MonthOfYear: "+t,r),j[t-1]},n.from=function(t){if(t instanceof n)return t;try{return n.of(t.get(O.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain Month from TemporalAccessor: "+t+" of type "+(t&&null!=t.constructor?t.constructor.name:""),n)}},n}(A),R=/([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/,P=function(t){function n(i,e,r){var s;s=t.call(this)||this;var o=b.safeToInt(i),u=b.safeToInt(e),a=b.safeToInt(r);return 0===o&&0===u&&0===a?(n.ZERO||(s._years=o,s._months=u,s._days=a,n.ZERO=c(s)),n.ZERO||c(s)):(s._years=o,s._months=u,s._days=a,s)}l(n,t),n.ofYears=function(t){return n.create(t,0,0)},n.ofMonths=function(t){return n.create(0,t,0)},n.ofWeeks=function(t){return n.create(0,0,b.safeMultiply(t,7))},n.ofDays=function(t){return n.create(0,0,t)},n.of=function(t,i,e){return n.create(t,i,e)},n.from=function(t){if(t instanceof n)return t;v(t,"amount");for(var i=0,e=0,s=0,o=t.units(),u=0;un.MAX_SECONDS)throw new r("Zone offset not in valid range: -18:00 to +18:00")},n._validate=function(t,n,i){if(t<-18||t>18)throw new r("Zone offset hours not in valid range: value "+t+" is not in the range -18 to 18");if(t>0){if(n<0||i<0)throw new r("Zone offset minutes and seconds must be positive because hours is positive")}else if(t<0){if(n>0||i>0)throw new r("Zone offset minutes and seconds must be negative because hours is negative")}else if(n>0&&i<0||n<0&&i>0)throw new r("Zone offset minutes and seconds must have the same sign");if(Math.abs(n)>59)throw new r("Zone offset minutes not in valid range: abs(value) "+Math.abs(n)+" is not in the range 0 to 59");if(Math.abs(i)>59)throw new r("Zone offset seconds not in valid range: abs(value) "+Math.abs(i)+" is not in the range 0 to 59");if(18===Math.abs(t)&&(Math.abs(n)>0||Math.abs(i)>0))throw new r("Zone offset not in valid range: -18:00 to +18:00")},n.of=function(t){v(t,"offsetId");var i,e,s,o=Z[t];if(null!=o)return o;switch(t.length){case 2:t=t[0]+"0"+t[1];case 3:i=n._parseNumber(t,1,!1),e=0,s=0;break;case 5:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=0;break;case 6:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=0;break;case 7:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,3,!1),s=n._parseNumber(t,5,!1);break;case 9:i=n._parseNumber(t,1,!1),e=n._parseNumber(t,4,!0),s=n._parseNumber(t,7,!0);break;default:throw new r("Invalid ID for ZoneOffset, invalid format: "+t)}var u=t[0];if("+"!==u&&"-"!==u)throw new r("Invalid ID for ZoneOffset, plus/minus not found when expected: "+t);return"-"===u?n.ofHoursMinutesSeconds(-i,-e,-s):n.ofHoursMinutesSeconds(i,e,s)},n._parseNumber=function(t,n,i){if(i&&":"!==t[n-1])throw new r("Invalid ID for ZoneOffset, colon not found when expected: "+t);var e=t[n],s=t[n+1];if(e<"0"||e>"9"||s<"0"||s>"9")throw new r("Invalid ID for ZoneOffset, non numeric characters found: "+t);return 10*(e.charCodeAt(0)-48)+(s.charCodeAt(0)-48)},n.ofHours=function(t){return n.ofHoursMinutesSeconds(t,0,0)},n.ofHoursMinutes=function(t,i){return n.ofHoursMinutesSeconds(t,i,0)},n.ofHoursMinutesSeconds=function(t,i,e){n._validate(t,i,e);var r=t*cn.SECONDS_PER_HOUR+i*cn.SECONDS_PER_MINUTE+e;return n.ofTotalSeconds(r)},n.ofTotalMinutes=function(t){var i=t*cn.SECONDS_PER_MINUTE;return n.ofTotalSeconds(i)},n.ofTotalSeconds=function(t){if(t%(15*cn.SECONDS_PER_MINUTE)==0){var i=t,e=J[i];return null==e&&(e=new n(t),J[i]=e,Z[e.id()]=e),e}return new n(t)},i.rules=function(){return this._rules},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t===O.OFFSET_SECONDS)return this._totalSeconds;if(t instanceof O)throw new r("Unsupported field: "+t);return t.getFrom(this)},i.query=function(t){return v(t,"query"),t===z.offset()||t===z.zone()?this:t===z.localDate()||t===z.localTime()||t===z.precision()||t===z.chronology()||t===z.zoneId()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(O.OFFSET_SECONDS,this._totalSeconds)},i.compareTo=function(t){return v(t,"other"),t._totalSeconds-this._totalSeconds},i.equals=function(t){return this===t||t instanceof n&&this._totalSeconds===t._totalSeconds},i.hashCode=function(){return this._totalSeconds},i.toString=function(){return this._id},n}(G),tt=function(t){function n(){var n;return(n=t.call(this)||this).fieldValues=new F,n.chrono=null,n.zone=null,n.date=null,n.time=null,n.leapSecond=!1,n.excessDays=null,n}l(n,t),n.create=function(t,i){var e=new n;return e._addFieldValue(t,i),e};var i=n.prototype;return i.getFieldValue0=function(t){return this.fieldValues.get(t)},i._addFieldValue=function(t,n){v(t,"field");var i=this.getFieldValue0(t);if(null!=i&&i!==n)throw new r("Conflict found: "+t+" "+i+" differs from "+t+" "+n+": "+this);return this._putFieldValue0(t,n)},i._putFieldValue0=function(t,n){return this.fieldValues.put(t,n),this},i.resolve=function(t,n){return null!=n&&this.fieldValues.retainAll(n),this._mergeDate(t),this._mergeTime(t),this._resolveTimeInferZeroes(t),null!=this.excessDays&&!1===this.excessDays.isZero()&&null!=this.date&&null!=this.time&&(this.date=this.date.plus(this.excessDays),this.excessDays=P.ZERO),this._resolveInstant(),this},i._mergeDate=function(t){this._checkDate(nn.INSTANCE.resolveDate(this.fieldValues,t))},i._checkDate=function(t){if(null!=t)for(var n in this._addObject(t),this.fieldValues.keySet()){var i=O.byName(n);if(i&&void 0!==this.fieldValues.get(i)&&i.isDateBased()){var e=void 0;try{e=t.getLong(i)}catch(t){if(t instanceof r)continue;throw t}var s=this.fieldValues.get(i);if(e!==s)throw new r("Conflict found: Field "+i+" "+e+" differs from "+i+" "+s+" derived from "+t)}}},i._mergeTime=function(t){if(this.fieldValues.containsKey(O.CLOCK_HOUR_OF_DAY)){var n=this.fieldValues.remove(O.CLOCK_HOUR_OF_DAY);t!==U.LENIENT&&(t===U.SMART&&0===n||O.CLOCK_HOUR_OF_DAY.checkValidValue(n)),this._addFieldValue(O.HOUR_OF_DAY,24===n?0:n)}if(this.fieldValues.containsKey(O.CLOCK_HOUR_OF_AMPM)){var i=this.fieldValues.remove(O.CLOCK_HOUR_OF_AMPM);t!==U.LENIENT&&(t===U.SMART&&0===i||O.CLOCK_HOUR_OF_AMPM.checkValidValue(i)),this._addFieldValue(O.HOUR_OF_AMPM,12===i?0:i)}if(t!==U.LENIENT&&(this.fieldValues.containsKey(O.AMPM_OF_DAY)&&O.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(O.AMPM_OF_DAY)),this.fieldValues.containsKey(O.HOUR_OF_AMPM)&&O.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(O.HOUR_OF_AMPM))),this.fieldValues.containsKey(O.AMPM_OF_DAY)&&this.fieldValues.containsKey(O.HOUR_OF_AMPM)){var e=this.fieldValues.remove(O.AMPM_OF_DAY),r=this.fieldValues.remove(O.HOUR_OF_AMPM);this._addFieldValue(O.HOUR_OF_DAY,12*e+r)}if(this.fieldValues.containsKey(O.NANO_OF_DAY)){var s=this.fieldValues.remove(O.NANO_OF_DAY);t!==U.LENIENT&&O.NANO_OF_DAY.checkValidValue(s),this._addFieldValue(O.SECOND_OF_DAY,b.intDiv(s,1e9)),this._addFieldValue(O.NANO_OF_SECOND,b.intMod(s,1e9))}if(this.fieldValues.containsKey(O.MICRO_OF_DAY)){var o=this.fieldValues.remove(O.MICRO_OF_DAY);t!==U.LENIENT&&O.MICRO_OF_DAY.checkValidValue(o),this._addFieldValue(O.SECOND_OF_DAY,b.intDiv(o,1e6)),this._addFieldValue(O.MICRO_OF_SECOND,b.intMod(o,1e6))}if(this.fieldValues.containsKey(O.MILLI_OF_DAY)){var u=this.fieldValues.remove(O.MILLI_OF_DAY);t!==U.LENIENT&&O.MILLI_OF_DAY.checkValidValue(u),this._addFieldValue(O.SECOND_OF_DAY,b.intDiv(u,1e3)),this._addFieldValue(O.MILLI_OF_SECOND,b.intMod(u,1e3))}if(this.fieldValues.containsKey(O.SECOND_OF_DAY)){var a=this.fieldValues.remove(O.SECOND_OF_DAY);t!==U.LENIENT&&O.SECOND_OF_DAY.checkValidValue(a),this._addFieldValue(O.HOUR_OF_DAY,b.intDiv(a,3600)),this._addFieldValue(O.MINUTE_OF_HOUR,b.intMod(b.intDiv(a,60),60)),this._addFieldValue(O.SECOND_OF_MINUTE,b.intMod(a,60))}if(this.fieldValues.containsKey(O.MINUTE_OF_DAY)){var h=this.fieldValues.remove(O.MINUTE_OF_DAY);t!==U.LENIENT&&O.MINUTE_OF_DAY.checkValidValue(h),this._addFieldValue(O.HOUR_OF_DAY,b.intDiv(h,60)),this._addFieldValue(O.MINUTE_OF_HOUR,b.intMod(h,60))}if(t!==U.LENIENT&&(this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&O.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(O.MILLI_OF_SECOND)),this.fieldValues.containsKey(O.MICRO_OF_SECOND)&&O.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(O.MICRO_OF_SECOND))),this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&this.fieldValues.containsKey(O.MICRO_OF_SECOND)){var _=this.fieldValues.remove(O.MILLI_OF_SECOND),l=this.fieldValues.get(O.MICRO_OF_SECOND);this._putFieldValue0(O.MICRO_OF_SECOND,1e3*_+b.intMod(l,1e3))}if(this.fieldValues.containsKey(O.MICRO_OF_SECOND)&&this.fieldValues.containsKey(O.NANO_OF_SECOND)){var c=this.fieldValues.get(O.NANO_OF_SECOND);this._putFieldValue0(O.MICRO_OF_SECOND,b.intDiv(c,1e3)),this.fieldValues.remove(O.MICRO_OF_SECOND)}if(this.fieldValues.containsKey(O.MILLI_OF_SECOND)&&this.fieldValues.containsKey(O.NANO_OF_SECOND)){var f=this.fieldValues.get(O.NANO_OF_SECOND);this._putFieldValue0(O.MILLI_OF_SECOND,b.intDiv(f,1e6)),this.fieldValues.remove(O.MILLI_OF_SECOND)}if(this.fieldValues.containsKey(O.MICRO_OF_SECOND)){var v=this.fieldValues.remove(O.MICRO_OF_SECOND);this._putFieldValue0(O.NANO_OF_SECOND,1e3*v)}else if(this.fieldValues.containsKey(O.MILLI_OF_SECOND)){var d=this.fieldValues.remove(O.MILLI_OF_SECOND);this._putFieldValue0(O.NANO_OF_SECOND,1e6*d)}},i._resolveTimeInferZeroes=function(t){var n=this.fieldValues.get(O.HOUR_OF_DAY),i=this.fieldValues.get(O.MINUTE_OF_HOUR),e=this.fieldValues.get(O.SECOND_OF_MINUTE),r=this.fieldValues.get(O.NANO_OF_SECOND);if(null!=n&&(null!=i||null==e&&null==r)&&(null==i||null!=e||null==r)){if(t!==U.LENIENT){if(null!=n){t!==U.SMART||24!==n||null!=i&&0!==i||null!=e&&0!==e||null!=r&&0!==r||(n=0,this.excessDays=P.ofDays(1));var s=O.HOUR_OF_DAY.checkValidIntValue(n);if(null!=i){var o=O.MINUTE_OF_HOUR.checkValidIntValue(i);if(null!=e){var u=O.SECOND_OF_MINUTE.checkValidIntValue(e);if(null!=r){var a=O.NANO_OF_SECOND.checkValidIntValue(r);this._addObject(cn.of(s,o,u,a))}else this._addObject(cn.of(s,o,u))}else null==r&&this._addObject(cn.of(s,o))}else null==e&&null==r&&this._addObject(cn.of(s,0))}}else if(null!=n){var h=n;if(null!=i)if(null!=e){null==r&&(r=0);var _=b.safeMultiply(h,36e11);_=b.safeAdd(_,b.safeMultiply(i,6e10)),_=b.safeAdd(_,b.safeMultiply(e,1e9)),_=b.safeAdd(_,r);var l=b.floorDiv(_,864e11),c=b.floorMod(_,864e11);this._addObject(cn.ofNanoOfDay(c)),this.excessDays=P.ofDays(l)}else{var f=b.safeMultiply(h,3600);f=b.safeAdd(f,b.safeMultiply(i,60));var v=b.floorDiv(f,86400),d=b.floorMod(f,86400);this._addObject(cn.ofSecondOfDay(d)),this.excessDays=P.ofDays(v)}else{var w=b.safeToInt(b.floorDiv(h,24));h=b.floorMod(h,24),this._addObject(cn.of(h,0)),this.excessDays=P.ofDays(w)}}this.fieldValues.remove(O.HOUR_OF_DAY),this.fieldValues.remove(O.MINUTE_OF_HOUR),this.fieldValues.remove(O.SECOND_OF_MINUTE),this.fieldValues.remove(O.NANO_OF_SECOND)}},i._addObject=function(t){t instanceof Y?this.date=t:t instanceof cn&&(this.time=t)},i._resolveInstant=function(){if(null!=this.date&&null!=this.time){var t=this.fieldValues.get(O.OFFSET_SECONDS);if(null!=t){var n=Q.ofTotalSeconds(t),i=this.date.atTime(this.time).atZone(n).getLong(O.INSTANT_SECONDS);this.fieldValues.put(O.INSTANT_SECONDS,i)}else if(null!=this.zone){var e=this.date.atTime(this.time).atZone(this.zone).getLong(O.INSTANT_SECONDS);this.fieldValues.put(O.INSTANT_SECONDS,e)}}},i.build=function(t){return t.queryFrom(this)},i.isSupported=function(t){return null!=t&&(this.fieldValues.containsKey(t)&&void 0!==this.fieldValues.get(t)||null!=this.date&&this.date.isSupported(t)||null!=this.time&&this.time.isSupported(t))},i.getLong=function(t){v(t,"field");var n=this.getFieldValue0(t);if(null==n){if(null!=this.date&&this.date.isSupported(t))return this.date.getLong(t);if(null!=this.time&&this.time.isSupported(t))return this.time.getLong(t);throw new r("Field not found: "+t)}return n},i.query=function(t){return t===z.zoneId()?this.zone:t===z.chronology()?this.chrono:t===z.localDate()?null!=this.date?hn.from(this.date):null:t===z.localTime()?this.time:t===z.zone()||t===z.offset()?t.queryFrom(this):t===z.precision()?null:t.queryFrom(this)},n}(A),nt=function(){function t(){if(1===arguments.length){if(arguments[0]instanceof t)return void this._constructorSelf.apply(this,arguments);this._constructorFormatter.apply(this,arguments)}else this._constructorParam.apply(this,arguments);this._caseSensitive=!0,this._strict=!0,this._parsed=[new it(this)]}var n=t.prototype;return n._constructorParam=function(t,n,i){this._locale=t,this._symbols=n,this._overrideChronology=i},n._constructorFormatter=function(t){this._locale=t.locale(),this._symbols=t.decimalStyle(),this._overrideChronology=t.chronology()},n._constructorSelf=function(t){this._locale=t._locale,this._symbols=t._symbols,this._overrideChronology=t._overrideChronology,this._overrideZone=t._overrideZone,this._caseSensitive=t._caseSensitive,this._strict=t._strict,this._parsed=[new it(this)]},n.copy=function(){return new t(this)},n.symbols=function(){return this._symbols},n.isStrict=function(){return this._strict},n.setStrict=function(t){this._strict=t},n.locale=function(){return this._locale},n.setLocale=function(t){this._locale=t},n.startOptional=function(){this._parsed.push(this.currentParsed().copy())},n.endOptional=function(t){t?this._parsed.splice(this._parsed.length-2,1):this._parsed.splice(this._parsed.length-1,1)},n.isCaseSensitive=function(){return this._caseSensitive},n.setCaseSensitive=function(t){this._caseSensitive=t},n.subSequenceEquals=function(t,n,i,e,r){if(n+r>t.length||e+r>i.length)return!1;this.isCaseSensitive()||(t=t.toLowerCase(),i=i.toLowerCase());for(var s=0;s0)return null;throw t}},n.temporal=function(){return this._temporal},n.locale=function(){return this._locale},n.setDateTime=function(t){this._temporal=t},n.setLocale=function(t){this._locale=t},t}(),rt={},st=[0,90,181,273,0,91,182,274],ot=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i._isIso=function(){return!0},n._getWeekRangeByLocalDate=function(t){var i=n._getWeekBasedYear(t);return q.of(1,n._getWeekRangeByYear(i))},n._getWeekRangeByYear=function(t){var n=hn.of(t,1,1);return n.dayOfWeek()===M.THURSDAY||n.dayOfWeek()===M.WEDNESDAY&&n.isLeapYear()?53:52},n._getWeek=function(t){var i=t.dayOfWeek().ordinal(),e=t.dayOfYear()-1,r=e+(3-i),s=r-7*b.intDiv(r,7)-3;if(s<-3&&(s+=7),e=363){var e=t.dayOfWeek().ordinal();(i=i-363-(t.isLeapYear()?1:0))-e>=0&&n++}return n},i.displayName=function(){return this.toString()},i.resolve=function(){return null},i.name=function(){return this.toString()},n}(C),ut=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"DayOfQuarter"},i.baseUnit=function(){return E.DAYS},i.rangeUnit=function(){return pt},i.range=function(){return q.of(1,90,92)},i.isSupportedBy=function(t){return t.isSupported(O.DAY_OF_YEAR)&&t.isSupported(O.MONTH_OF_YEAR)&&t.isSupported(O.YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: DayOfQuarter");var n=t.getLong(ft);if(1===n){var i=t.getLong(O.YEAR);return nn.isLeapYear(i)?q.of(1,91):q.of(1,90)}return 2===n?q.of(1,91):3===n||4===n?q.of(1,92):this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: DayOfQuarter");var n=t.get(O.DAY_OF_YEAR),i=t.get(O.MONTH_OF_YEAR),e=t.getLong(O.YEAR);return n-st[b.intDiv(i-1,3)+(nn.isLeapYear(e)?4:0)]},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(O.DAY_OF_YEAR,t.getLong(O.DAY_OF_YEAR)+(n-i))},i.resolve=function(t,n,i){var e=t.get(O.YEAR),r=t.get(ft);if(null==e||null==r)return null;var s,o=O.YEAR.checkValidIntValue(e),u=t.get(ct);if(i===U.LENIENT){var a=r;s=(s=(s=hn.of(o,1,1)).plusMonths(b.safeMultiply(b.safeSubtract(a,1),3))).plusDays(b.safeSubtract(u,1))}else{var h=ft.range().checkValidIntValue(r,ft);if(i===U.STRICT){var _=92;1===h?_=nn.isLeapYear(o)?91:90:2===h&&(_=91),q.of(1,_).checkValidValue(u,this)}else this.range().checkValidValue(u,this);s=hn.of(o,3*(h-1)+1,1).plusDays(u-1)}return t.remove(this),t.remove(O.YEAR),t.remove(ft),s},n}(ot),at=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"QuarterOfYear"},i.baseUnit=function(){return pt},i.rangeUnit=function(){return E.YEARS},i.range=function(){return q.of(1,4)},i.isSupportedBy=function(t){return t.isSupported(O.MONTH_OF_YEAR)&&this._isIso(t)},i.rangeRefinedBy=function(t){return this.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: QuarterOfYear");var n=t.getLong(O.MONTH_OF_YEAR);return b.intDiv(n+2,3)},i.adjustInto=function(t,n){var i=this.getFrom(t);return this.range().checkValidValue(n,this),t.with(O.MONTH_OF_YEAR,t.getLong(O.MONTH_OF_YEAR)+3*(n-i))},n}(ot),ht=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekOfWeekBasedYear"},i.baseUnit=function(){return E.WEEKS},i.rangeUnit=function(){return wt},i.range=function(){return q.of(1,52,53)},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekOfWeekBasedYear");return ot._getWeekRangeByLocalDate(hn.from(t))},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekOfWeekBasedYear");return ot._getWeek(hn.from(t))},i.adjustInto=function(t,n){return this.range().checkValidValue(n,this),t.plus(b.safeSubtract(n,this.getFrom(t)),E.WEEKS)},i.resolve=function(t,n,i){var e=t.get(dt),r=t.get(O.DAY_OF_WEEK);if(null==e||null==r)return null;var s,o=dt.range().checkValidIntValue(e,dt),u=t.get(vt);if(i===U.LENIENT){var a=r,h=0;a>7?(h=b.intDiv(a-1,7),a=b.intMod(a-1,7)+1):a<1&&(h=b.intDiv(a,7)-1,a=b.intMod(a,7)+7),s=hn.of(o,1,4).plusWeeks(u-1).plusWeeks(h).with(O.DAY_OF_WEEK,a)}else{var _=O.DAY_OF_WEEK.checkValidIntValue(r);if(i===U.STRICT){var l=hn.of(o,1,4);ot._getWeekRangeByLocalDate(l).checkValidValue(u,this)}else this.range().checkValidValue(u,this);s=hn.of(o,1,4).plusWeeks(u-1).with(O.DAY_OF_WEEK,_)}return t.remove(this),t.remove(dt),t.remove(O.DAY_OF_WEEK),s},i.displayName=function(){return"Week"},n}(ot),_t=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.toString=function(){return"WeekBasedYear"},i.baseUnit=function(){return wt},i.rangeUnit=function(){return E.FOREVER},i.range=function(){return O.YEAR.range()},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)&&this._isIso(t)},i.rangeRefinedBy=function(t){return O.YEAR.range()},i.getFrom=function(t){if(!1===t.isSupported(this))throw new o("Unsupported field: WeekBasedYear");return ot._getWeekBasedYear(hn.from(t))},i.adjustInto=function(t,n){if(!1===this.isSupportedBy(t))throw new o("Unsupported field: WeekBasedYear");var i=this.range().checkValidIntValue(n,dt),e=hn.from(t),r=e.get(O.DAY_OF_WEEK),s=ot._getWeek(e);53===s&&52===ot._getWeekRangeByYear(i)&&(s=52);var u=hn.of(i,1,4),a=r-u.get(O.DAY_OF_WEEK)+7*(s-1);return u=u.plusDays(a),t.with(u)},n}(ot),lt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._name=n,e._duration=i,e}l(n,t);var i=n.prototype;return i.duration=function(){return this._duration},i.isDurationEstimated=function(){return!0},i.isDateBased=function(){return!0},i.isTimeBased=function(){return!1},i.isSupportedBy=function(t){return t.isSupported(O.EPOCH_DAY)},i.addTo=function(t,n){switch(this){case wt:var i=b.safeAdd(t.get(dt),n);return t.with(dt,i);case pt:return t.plus(b.intDiv(n,256),E.YEARS).plus(3*b.intMod(n,256),E.MONTHS);default:throw new h("Unreachable")}},i.between=function(t,n){switch(this){case wt:return b.safeSubtract(n.getLong(dt),t.getLong(dt));case pt:return b.intDiv(t.until(n,E.MONTHS),3);default:throw new h("Unreachable")}},i.toString=function(){return name},n}(k),ct=null,ft=null,vt=null,dt=null,wt=null,pt=null,mt=function(){function t(t,n,i,e){this._zeroDigit=t,this._zeroDigitCharCode=t.charCodeAt(0),this._positiveSign=n,this._negativeSign=i,this._decimalSeparator=e}var n=t.prototype;return n.positiveSign=function(){return this._positiveSign},n.withPositiveSign=function(n){return n===this._positiveSign?this:new t(this._zeroDigit,n,this._negativeSign,this._decimalSeparator)},n.negativeSign=function(){return this._negativeSign},n.withNegativeSign=function(n){return n===this._negativeSign?this:new t(this._zeroDigit,this._positiveSign,n,this._decimalSeparator)},n.zeroDigit=function(){return this._zeroDigit},n.withZeroDigit=function(n){return n===this._zeroDigit?this:new t(n,this._positiveSign,this._negativeSign,this._decimalSeparator)},n.decimalSeparator=function(){return this._decimalSeparator},n.withDecimalSeparator=function(n){return n===this._decimalSeparator?this:new t(this._zeroDigit,this._positiveSign,this._negativeSign,n)},n.convertToDigit=function(t){var n=t.charCodeAt(0)-this._zeroDigitCharCode;return n>=0&&n<=9?n:-1},n.convertNumberToI18N=function(t){if("0"===this._zeroDigit)return t;for(var n=this._zeroDigitCharCode-"0".charCodeAt(0),i="",e=0;e1)throw new a('invalid literal, too long: "'+t+'"');this._literal=t}var n=t.prototype;return n.print=function(t,n){return n.append(this._literal),!0},n.parse=function(t,n,i){if(i===n.length)return~i;var e=n.charAt(i);return!1===t.charEquals(this._literal,e)?~i:i+this._literal.length},n.toString=function(){return"'"===this._literal?"''":"'"+this._literal+"'"},t}(),yt=function(){function t(t,n){this._printerParsers=t,this._optional=n}var n=t.prototype;return n.withOptional=function(n){return n===this._optional?this:new t(this._printerParsers,n)},n.print=function(t,n){var i=n.length();this._optional&&t.startOptional();try{for(var e=0;e9)throw new a("Minimum width must be from 0 to 9 inclusive but was "+n);if(i<1||i>9)throw new a("Maximum width must be from 1 to 9 inclusive but was "+i);if(i0){this.decimalPoint&&n.append(e.decimalSeparator());for(var r=0;r0)for(;s.length>this.minWidth&&"0"===s[s.length-1];)s=s.substr(0,s.length-1);var u=s;u=e.convertNumberToI18N(u),this.decimalPoint&&n.append(e.decimalSeparator()),n.append(u)}return!0},n.parse=function(t,n,i){var e=t.isStrict()?this.minWidth:0,r=t.isStrict()?this.maxWidth:9,s=n.length;if(i===s)return e>0?~i:i;if(this.decimalPoint){if(n[i]!==t.symbols().decimalSeparator())return e>0?~i:i;i++}var o=i+e;if(o>s)return~i;for(var u=Math.min(i+r,s),a=0,h=i;h0&&this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE},n.print=function(t,n){var i=t.getValue(this._field);if(null==i)return!1;var e=this._getValue(t,i),s=t.symbols(),o=""+Math.abs(e);if(o.length>this._maxWidth)throw new r("Field "+this._field+" cannot be printed as the value "+e+" exceeds the maximum print width of "+this._maxWidth);if(o=s.convertNumberToI18N(o),e>=0)switch(this._signStyle){case gt.EXCEEDS_PAD:this._minWidth<15&&e>=xt[this._minWidth]&&n.append(s.positiveSign());break;case gt.ALWAYS:n.append(s.positiveSign())}else switch(this._signStyle){case gt.NORMAL:case gt.EXCEEDS_PAD:case gt.ALWAYS:n.append(s.negativeSign());break;case gt.NOT_NEGATIVE:throw new r("Field "+this._field+" cannot be printed as the value "+e+" cannot be negative according to the SignStyle")}for(var u=0;u=0&&ie)return~i;for(var _=(t.isStrict()||this._isFixedWidth()?this._maxWidth:9)+Math.max(this._subsequentWidth,0),l=0,c=i,v=0;v<2;v++){for(var d=Math.min(c+_,e);c15)throw new u("number text exceeds length");l=10*l+p}if(!(this._subsequentWidth>0&&0===v))break;var m=c-i;_=Math.max(a,m-this._subsequentWidth),c=i,l=0}if(s){if(0===l&&t.isStrict())return~(i-1);0!==l&&(l=-l)}else if(this._signStyle===gt.EXCEEDS_PAD&&t.isStrict()){var g=c-i;if(o){if(g<=this._minWidth)return~(i-1)}else if(g>this._minWidth)return~i}return this._setValue(t,l,i,c)},n._getValue=function(t,n){return n},n._setValue=function(t,n,i,e){return t.setParsedField(this._field,n,i,e)},n.toString=function(){return 1===this._minWidth&&15===this._maxWidth&&this._signStyle===gt.NORMAL?"Value("+this._field+")":this._minWidth===this._maxWidth&&this._signStyle===gt.NOT_NEGATIVE?"Value("+this._field+","+this._minWidth+")":"Value("+this._field+","+this._minWidth+","+this._maxWidth+","+this._signStyle+")"},t}(),Et=function(t){function n(n,i,e,s,o){var u;if(u=t.call(this,n,i,e,gt.NOT_NEGATIVE)||this,i<1||i>10)throw new a("The width must be from 1 to 10 inclusive but was "+i);if(e<1||e>10)throw new a("The maxWidth must be from 1 to 10 inclusive but was "+e);if(eb.MAX_SAFE_INTEGER)throw new r("Unable to add printer-parser as the range exceeds the capacity of an int")}return u._baseValue=s,u._baseDate=o,u}l(n,t);var i=n.prototype;return i._getValue=function(t,n){var i=Math.abs(n),e=this._baseValue;return null!==this._baseDate&&(t.temporal(),e=nn.INSTANCE.date(this._baseDate).get(this._field)),n>=e&&n=0){var s=xt[this._minWidth],o=r-r%s;(n=r>0?o+n:o-n)=3||this.type>=1&&s>0)&&(n.append(this.type%2==0?":":"").appendChar(b.intDiv(s,10)+"0").appendChar(s%10+"0"),a+=s,(this.type>=7||this.type>=5&&o>0)&&(n.append(this.type%2==0?":":"").appendChar(b.intDiv(o,10)+"0").appendChar(o%10+"0"),a+=o)),0===a&&(n.setLength(u),n.append(this.noOffsetText))}return!0},n.parse=function(t,n,i){var e=n.length,r=this.noOffsetText.length;if(0===r){if(i===e)return t.setParsedField(O.OFFSET_SECONDS,0,i,i)}else{if(i===e)return~i;if(t.subSequenceEquals(n,i,this.noOffsetText,0,r))return t.setParsedField(O.OFFSET_SECONDS,0,i,i+r)}var s=n[i];if("+"===s||"-"===s){var o="-"===s?-1:1,u=[0,0,0,0];if(u[0]=i+1,!1===(this._parseNumber(u,1,n,!0)||this._parseNumber(u,2,n,this.type>=3)||this._parseNumber(u,3,n,!1))){var a=b.safeZero(o*(3600*u[1]+60*u[2]+u[3]));return t.setParsedField(O.OFFSET_SECONDS,a,i,u[0])}}return 0===r?t.setParsedField(O.OFFSET_SECONDS,0,i,i+r):~i},n._parseNumber=function(t,n,i,e){if((this.type+3)/21){if(r+1>i.length||":"!==i[r])return e;r++}if(r+2>i.length)return e;var s=i[r++],o=i[r++];if(s<"0"||s>"9"||o<"0"||o>"9")return e;var u=10*(s.charCodeAt(0)-48)+(o.charCodeAt(0)-48);return u<0||u>59?e:(t[n]=u,t[0]=r,!1)},n.toString=function(){var t=this.noOffsetText.replace("'","''");return"Offset("+Ct[this.type]+",'"+t+"')"},t}();qt.INSTANCE_ID=new qt("Z","+HH:MM:ss"),qt.PATTERNS=Ct;var Ot=function(){function t(t,n,i){this._printerParser=t,this._padWidth=n,this._padChar=i}var n=t.prototype;return n.print=function(t,n){var i=n.length();if(!1===this._printerParser.print(t,n))return!1;var e=n.length()-i;if(e>this._padWidth)throw new r("Cannot print as output of "+e+" characters exceeds pad width of "+this._padWidth);for(var s=0;sn.length)),f(i>=0),i===n.length)return~i;var s=i+this._padWidth;if(s>n.length){if(e)return~i;s=n.length}for(var o=i;on.length||i<0)),!1===t.subSequenceEquals(n,i,this._literal,0,this._literal.length)?~i:i+this._literal.length},n.toString=function(){return"'"+this._literal.replace("'","''")+"'"},t}(),jt=function(){function t(){}return t.getRules=function(t){throw new r("unsupported ZoneId:"+t)},t.getAvailableZoneIds=function(){return[]},t}(),Mt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._id=n,e._rules=i,e}l(n,t),n.ofId=function(t){return new n(t,jt.getRules(t))};var i=n.prototype;return i.id=function(){return this._id},i.rules=function(){return this._rules},n}(G),Nt=function(){function t(t,n){this.query=t,this.description=n}var n=t.prototype;return n.print=function(t,n){var i=t.getValueQuery(this.query);return null!=i&&(n.append(i.id()),!0)},n.parse=function(t,n,i){var e=n.length;if(i>e)return~i;if(i===e)return~i;var r=n.charAt(i);if("+"===r||"-"===r){var s=t.copy(),o=qt.INSTANCE_ID.parse(s,n,i);if(o<0)return o;var u=s.getParsed(O.OFFSET_SECONDS),a=Q.ofTotalSeconds(u);return t.setParsedZone(a),o}if(e>=i+2){var h=n.charAt(i+1);if(t.charEquals(r,"U")&&t.charEquals(h,"T"))return e>=i+3&&t.charEquals(n.charAt(i+2),"C")?this._parsePrefixedOffset(t,n,i,i+3):this._parsePrefixedOffset(t,n,i,i+2);if(t.charEquals(r,"G")&&e>=i+3&&t.charEquals(h,"M")&&t.charEquals(n.charAt(i+2),"T"))return this._parsePrefixedOffset(t,n,i,i+3)}if("SYSTEM"===n.substr(i,6))return t.setParsedZone(G.systemDefault()),i+6;if(t.charEquals(r,"Z"))return t.setParsedZone(Q.UTC),i+1;var _=jt.getAvailableZoneIds();Lt.size!==_.length&&(Lt=Rt.createTreeMap(_));for(var l=e-i,c=Lt.treeMap,f=null,v=0;null!=c;){var d=n.substr(i,Math.min(c.length,l));null!=(c=c.get(d))&&c.isLeaf&&(f=d,v=c.length)}return null!=f?(t.setParsedZone(Mt.ofId(f)),i+v):~i},n._parsePrefixedOffset=function(t,n,i,e){var r=n.substring(i,e).toUpperCase(),s=t.copy();if(ethis.length){var e=n.substr(0,this.length),r=this._treeMap[e];null==r&&(r=new t(i,!1),this._treeMap[e]=r),r.add(n)}},n.get=function(t){return this._treeMap[t]},t}(),Lt=new Rt([]),Ft=15,Ut=function(){function t(){this._active=this,this._parent=null,this._printerParsers=[],this._optional=!1,this._padNextWidth=0,this._padNextChar=null,this._valueParserIndex=-1}t._of=function(n,i){v(n,"parent"),v(i,"optional");var e=new t;return e._parent=n,e._optional=i,e};var n=t.prototype;return n.parseCaseSensitive=function(){return this._appendInternalPrinterParser(zt.SENSITIVE),this},n.parseCaseInsensitive=function(){return this._appendInternalPrinterParser(zt.INSENSITIVE),this},n.parseStrict=function(){return this._appendInternalPrinterParser(zt.STRICT),this},n.parseLenient=function(){return this._appendInternalPrinterParser(zt.LENIENT),this},n.appendValue=function(){return 1===arguments.length?this._appendValue1.apply(this,arguments):2===arguments.length?this._appendValue2.apply(this,arguments):this._appendValue4.apply(this,arguments)},n._appendValue1=function(t){return v(t),this._appendValuePrinterParser(new St(t,1,Ft,gt.NORMAL)),this},n._appendValue2=function(t,n){if(v(t),n<1||n>Ft)throw new a("The width must be from 1 to 15 inclusive but was "+n);var i=new St(t,n,n,gt.NOT_NEGATIVE);return this._appendValuePrinterParser(i),this},n._appendValue4=function(t,n,i,e){if(v(t),v(e),n===i&&e===gt.NOT_NEGATIVE)return this._appendValue2(t,i);if(n<1||n>Ft)throw new a("The minimum width must be from 1 to 15 inclusive but was "+n);if(i<1||i>Ft)throw new a("The minimum width must be from 1 to 15 inclusive but was "+i);if(i=0&&this._active._printerParsers[this._active._valueParserIndex]instanceof St){var n=this._active._valueParserIndex,i=this._active._printerParsers[n];t.minWidth()===t.maxWidth()&&t.signStyle()===gt.NOT_NEGATIVE?(i=i.withSubsequentWidth(t.maxWidth()),this._appendInternal(t.withFixedWidth()),this._active._valueParserIndex=n):(i=i.withFixedWidth(),this._active._valueParserIndex=this._appendInternal(t)),this._active._printerParsers[n]=i}else this._active._valueParserIndex=this._appendInternal(t);return this},n.appendFraction=function(t,n,i,e){return this._appendInternal(new kt(t,n,i,e)),this},n.appendInstant=function(t){if(void 0===t&&(t=-2),t<-2||t>9)throw new a("Invalid fractional digits: "+t);return this._appendInternal(new Bt(t)),this},n.appendOffsetId=function(){return this._appendInternal(qt.INSTANCE_ID),this},n.appendOffset=function(t,n){return this._appendInternalPrinterParser(new qt(n,t)),this},n.appendZoneId=function(){return this._appendInternal(new Nt(z.zoneId(),"ZoneId()")),this},n.appendPattern=function(t){return v(t,"pattern"),this._parsePattern(t),this},n.appendZoneText=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendText=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendLocalizedOffset=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n.appendWeekField=function(){throw new a("Pattern using (localized) text not implemented, use js-joda-locale plugin!")},n._parsePattern=function(t){for(var n={G:O.ERA,y:O.YEAR_OF_ERA,u:O.YEAR,Q:rt.QUARTER_OF_YEAR,q:rt.QUARTER_OF_YEAR,M:O.MONTH_OF_YEAR,L:O.MONTH_OF_YEAR,D:O.DAY_OF_YEAR,d:O.DAY_OF_MONTH,F:O.ALIGNED_DAY_OF_WEEK_IN_MONTH,E:O.DAY_OF_WEEK,c:O.DAY_OF_WEEK,e:O.DAY_OF_WEEK,a:O.AMPM_OF_DAY,H:O.HOUR_OF_DAY,k:O.CLOCK_HOUR_OF_DAY,K:O.HOUR_OF_AMPM,h:O.CLOCK_HOUR_OF_AMPM,m:O.MINUTE_OF_HOUR,s:O.SECOND_OF_MINUTE,S:O.NANO_OF_SECOND,A:O.MILLI_OF_DAY,n:O.NANO_OF_SECOND,N:O.NANO_OF_DAY},i=0;i="A"&&e<="Z"||e>="a"&&e<="z"){for(var r=i++;i="A"&&e<="Z"||e>="a"&&e<="z")){for(o=s,r=i++;i4)throw new a("Too many pattern letters: "+e);4===s?this.appendZoneText(bt.FULL):this.appendZoneText(bt.SHORT)}else if("V"===e){if(2!==s)throw new a("Pattern letter count must be 2: "+e);this.appendZoneId()}else if("Z"===e)if(s<4)this.appendOffset("+HHMM","+0000");else if(4===s)this.appendLocalizedOffset(bt.FULL);else{if(5!==s)throw new a("Too many pattern letters: "+e);this.appendOffset("+HH:MM:ss","Z")}else if("O"===e)if(1===s)this.appendLocalizedOffset(bt.SHORT);else{if(4!==s)throw new a("Pattern letter count must be 1 or 4: "+e);this.appendLocalizedOffset(bt.FULL)}else if("X"===e){if(s>5)throw new a("Too many pattern letters: "+e);this.appendOffset(qt.PATTERNS[s+(1===s?0:1)],"Z")}else if("x"===e){if(s>5)throw new a("Too many pattern letters: "+e);var h=1===s?"+00":s%2==0?"+0000":"+00:00";this.appendOffset(qt.PATTERNS[s+(1===s?0:1)],h)}else if("W"===e){if(s>1)throw new a("Too many pattern letters: "+e);this.appendWeekField("W",s)}else if("w"===e){if(s>2)throw new a("Too many pattern letters: "+e);this.appendWeekField("w",s)}else{if("Y"!==e)throw new a("Unknown pattern letter: "+e);this.appendWeekField("Y",s)}i--}else if("'"===e){for(var _=i++;i=t.length)throw new a("Pattern ends with an incomplete string literal: "+t);var l=t.substring(_+1,i);0===l.length?this.appendLiteral("'"):this.appendLiteral(l.replace("''","'"))}else if("["===e)this.optionalStart();else if("]"===e){if(null===this._active._parent)throw new a("Pattern invalid as it contains ] without previous [");this.optionalEnd()}else{if("{"===e||"}"===e||"#"===e)throw new a("Pattern includes reserved character: '"+e+"'");this.appendLiteral(e)}}},n._parseField=function(t,n,i){switch(t){case"u":case"y":2===n?this.appendValueReduced(i,2,2,Et.BASE_DATE):n<4?this.appendValue(i,n,Ft,gt.NORMAL):this.appendValue(i,n,Ft,gt.EXCEEDS_PAD);break;case"M":case"Q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,bt.SHORT);break;case 4:this.appendText(i,bt.FULL);break;case 5:this.appendText(i,bt.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"L":case"q":switch(n){case 1:this.appendValue(i);break;case 2:this.appendValue(i,2);break;case 3:this.appendText(i,bt.SHORT_STANDALONE);break;case 4:this.appendText(i,bt.FULL_STANDALONE);break;case 5:this.appendText(i,bt.NARROW_STANDALONE);break;default:throw new a("Too many pattern letters: "+t)}break;case"e":switch(n){case 1:case 2:this.appendWeekField("e",n);break;case 3:this.appendText(i,bt.SHORT);break;case 4:this.appendText(i,bt.FULL);break;case 5:this.appendText(i,bt.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"c":switch(n){case 1:this.appendWeekField("c",n);break;case 2:throw new a("Invalid number of pattern letters: "+t);case 3:this.appendText(i,bt.SHORT_STANDALONE);break;case 4:this.appendText(i,bt.FULL_STANDALONE);break;case 5:this.appendText(i,bt.NARROW_STANDALONE);break;default:throw new a("Too many pattern letters: "+t)}break;case"a":if(1!==n)throw new a("Too many pattern letters: "+t);this.appendText(i,bt.SHORT);break;case"E":case"G":switch(n){case 1:case 2:case 3:this.appendText(i,bt.SHORT);break;case 4:this.appendText(i,bt.FULL);break;case 5:this.appendText(i,bt.NARROW);break;default:throw new a("Too many pattern letters: "+t)}break;case"S":this.appendFraction(O.NANO_OF_SECOND,n,n,!1);break;case"F":if(1!==n)throw new a("Too many pattern letters: "+t);this.appendValue(i);break;case"d":case"h":case"H":case"k":case"K":case"m":case"s":if(1===n)this.appendValue(i);else{if(2!==n)throw new a("Too many pattern letters: "+t);this.appendValue(i,n)}break;case"D":if(1===n)this.appendValue(i);else{if(!(n<=3))throw new a("Too many pattern letters: "+t);this.appendValue(i,n)}break;default:1===n?this.appendValue(i):this.appendValue(i,n)}},n.padNext=function(){return 1===arguments.length?this._padNext1.apply(this,arguments):this._padNext2.apply(this,arguments)},n._padNext1=function(t){return this._padNext2(t," ")},n._padNext2=function(t,n){if(t<1)throw new a("The pad width must be at least one but was "+t);return this._active._padNextWidth=t,this._active._padNextChar=n,this._active._valueParserIndex=-1,this},n.optionalStart=function(){return this._active._valueParserIndex=-1,this._active=t._of(this._active,!0),this},n.optionalEnd=function(){if(null==this._active._parent)throw new h("Cannot call optionalEnd() as there was no previous call to optionalStart()");if(this._active._printerParsers.length>0){var t=new yt(this._active._printerParsers,this._active._optional);this._active=this._active._parent,this._appendInternal(t)}else this._active=this._active._parent;return this},n._appendInternal=function(t){return f(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new Ot(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.appendLiteral=function(t){return f(null!=t),t.length>0&&(1===t.length?this._appendInternalPrinterParser(new $t(t.charAt(0))):this._appendInternalPrinterParser(new Dt(t))),this},n._appendInternalPrinterParser=function(t){return f(null!=t),this._active._padNextWidth>0&&(null!=t&&(t=new Ot(t,this._active._padNextWidth,this._active._padNextChar)),this._active._padNextWidth=0,this._active._padNextChar=0),this._active._printerParsers.push(t),this._active._valueParserIndex=-1,this._active._printerParsers.length-1},n.append=function(t){return v(t,"formatter"),this._appendInternal(t._toPrinterParser(!1)),this},n.toFormatter=function(t){for(void 0===t&&(t=U.SMART);null!=this._active._parent;)this.optionalEnd();var n=new yt(this._printerParsers,!1);return new Wt(n,null,mt.STANDARD,t,null,null,null)},t}(),Ht=31556952e4,Vt=62167219200,Bt=function(){function t(t){this.fractionalDigits=t}var n=t.prototype;return n.print=function(t,n){var i=t.getValue(O.INSTANT_SECONDS),e=0;if(t.temporal().isSupported(O.NANO_OF_SECOND)&&(e=t.temporal().getLong(O.NANO_OF_SECOND)),null==i)return!1;var r=i,s=O.NANO_OF_SECOND.checkValidIntValue(e);if(r>=-62167219200){var o=r-Ht+Vt,u=b.floorDiv(o,Ht)+1,a=b.floorMod(o,Ht),h=ln.ofEpochSecond(a-Vt,0,Q.UTC);u>0&&n.append("+").append(u),n.append(h),0===h.second()&&n.append(":00")}else{var _=r+Vt,l=b.intDiv(_,Ht),c=b.intMod(_,Ht),f=ln.ofEpochSecond(c-Vt,0,Q.UTC),v=n.length();n.append(f),0===f.second()&&n.append(":00"),l<0&&(-1e4===f.year()?n.replace(v,v+2,""+(l-1)):0===c?n.insert(v,l):n.insert(v+1,Math.abs(l)))}if(-2===this.fractionalDigits)0!==s&&(n.append("."),0===b.intMod(s,1e6)?n.append((""+(b.intDiv(s,1e6)+1e3)).substring(1)):0===b.intMod(s,1e3)?n.append((""+(b.intDiv(s,1e3)+1e6)).substring(1)):n.append((""+(s+1e9)).substring(1)));else if(this.fractionalDigits>0||-1===this.fractionalDigits&&s>0){n.append(".");for(var d=1e8,w=0;-1===this.fractionalDigits&&s>0||w64?t.substring(0,64)+"...":t,new s("Text '"+i+"' could not be parsed: "+n.message,t,0,n)},n._parseToBuilder=function(t,n){var i=null!=n?n:new L(0),e=this._parseUnresolved0(t,i);if(null==e||i.getErrorIndex()>=0||null==n&&i.getIndex()64?t.substr(0,64).toString()+"...":t,i.getErrorIndex()>=0?new s("Text '"+r+"' could not be parsed at index "+i.getErrorIndex(),t,i.getErrorIndex()):new s("Text '"+r+"' could not be parsed, unparsed text found at index "+i.getIndex(),t,i.getIndex())}return e.toBuilder()},n.parseUnresolved=function(t,n){return this._parseUnresolved0(t,n)},n._parseUnresolved0=function(t,n){f(null!=t,"text",_),f(null!=n,"position",_);var i=new nt(this),e=n.getIndex();return(e=this._printerParser.parse(i,t,e))<0?(n.setErrorIndex(~e),null):(n.setIndex(e),i.toParsed())},n._toPrinterParser=function(t){return this._printerParser.withOptional(t)},n.toString=function(){var t=this._printerParser.toString();return 0===t.indexOf("[")?t:t.substring(1,t.length-1)},t}(),Gt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._month=b.safeToInt(n),e._day=b.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return this.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),this.nowClock(dn.system(t))},n.nowClock=function(t){v(t,"clock");var i=hn.now(t);return n.of(i.month(),i.dayOfMonth())},n.of=function(t,i){return 2===arguments.length&&t instanceof N?n.ofMonthNumber(t,i):n.ofNumberNumber(t,i)},n.ofMonthNumber=function(t,i){if(v(t,"month"),O.DAY_OF_MONTH.checkValidValue(i),i>t.maxLength())throw new r("Illegal value for DayOfMonth field, value "+i+" is not valid for month "+t.toString());return new n(t.value(),i)},n.ofNumberNumber=function(t,i){return v(t,"month"),v(i,"dayOfMonth"),n.of(N.of(t),i)},n.from=function(t){if(v(t,"temporal"),d(t,A,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.MONTH_OF_YEAR),t.get(O.DAY_OF_MONTH))}catch(n){throw new r("Unable to obtain MonthDay from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,At)},n.parseStringFormatter=function(t,i){return v(t,"text"),v(i,"formatter"),d(i,Wt,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.isSupported=function(t){return t instanceof O?t===O.MONTH_OF_YEAR||t===O.DAY_OF_MONTH:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===O.MONTH_OF_YEAR?n.range():n===O.DAY_OF_MONTH?q.of(1,this.month().minLength(),this.month().maxLength()):t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.DAY_OF_MONTH:return this._day;case O.MONTH_OF_YEAR:return this._month}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isValidYear=function(t){return 0==(29===this._day&&2===this._month&&!1===Xt.isLeap(t))},i.withMonth=function(t){return this.with(N.of(t))},i.with=function(t){if(v(t,"month"),t.value()===this._month)return this;var i=Math.min(this._day,t.maxLength());return new n(t.value(),i)},i.withDayOfMonth=function(t){return t===this._day?this:n.of(this._month,t)},i.query=function(n){return v(n,"query"),d(n,T,"query"),n===z.chronology()?nn.INSTANCE:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),(t=t.with(O.MONTH_OF_YEAR,this._month)).with(O.DAY_OF_MONTH,Math.min(t.range(O.DAY_OF_MONTH).maximum(),this._day))},i.atYear=function(t){return hn.of(t,this._month,this.isValidYear(t)?this._day:28)},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=this._month-t.monthValue();return 0===i&&(i=this._day-t.dayOfMonth()),i},i.isAfter=function(t){return v(t,"other"),d(t,n,"other"),this.compareTo(t)>0},i.isBefore=function(t){return v(t,"other"),d(t,n,"other"),this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.monthValue()===i.monthValue()&&this.dayOfMonth()===i.dayOfMonth()}return!1},i.toString=function(){return"--"+(this._month<10?"0":"")+this._month+(this._day<10?"-0":"-")+this._day},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),d(t,Wt,"formatter"),t.format(this)},n}(A),Kt=function(t){function n(n,i){var e;return(e=t.call(this)||this)._year=b.safeToInt(n),e._month=b.safeToInt(i),e}l(n,t),n.now=function(t){return 0===arguments.length?n.now0():1===arguments.length&&t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return n.nowClock(dn.system(t))},n.nowClock=function(t){var i=hn.now(t);return n.of(i.year(),i.month())},n.of=function(t,i){return 2===arguments.length&&i instanceof N?n.ofNumberMonth(t,i):n.ofNumberNumber(t,i)},n.ofNumberMonth=function(t,i){return v(i,"month"),d(i,N,"month"),n.ofNumberNumber(t,i.value())},n.ofNumberNumber=function(t,i){return v(t,"year"),v(i,"month"),O.YEAR.checkValidValue(t),O.MONTH_OF_YEAR.checkValidValue(i),new n(t,i)},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.YEAR),t.get(O.MONTH_OF_YEAR))}catch(n){throw new r("Unable to obtain YearMonth from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return 1===arguments.length?n.parseString(t):n.parseStringFormatter(t,i)},n.parseString=function(t){return n.parseStringFormatter(t,Tt)},n.parseStringFormatter=function(t,i){return v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.isSupported=function(t){return 1===arguments.length&&t instanceof C?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof O?t===O.YEAR||t===O.MONTH_OF_YEAR||t===O.PROLEPTIC_MONTH||t===O.YEAR_OF_ERA||t===O.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof E?t===E.MONTHS||t===E.YEARS||t===E.DECADES||t===E.CENTURIES||t===E.MILLENNIA||t===E.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return n===O.YEAR_OF_ERA?this.year()<=0?q.of(1,Xt.MAX_VALUE+1):q.of(1,Xt.MAX_VALUE):t.prototype.range.call(this,n)},i.get=function(t){return v(t,"field"),d(t,C,"field"),this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t){case O.MONTH_OF_YEAR:return this._month;case O.PROLEPTIC_MONTH:return this._getProlepticMonth();case O.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case O.YEAR:return this._year;case O.ERA:return this._year<1?0:1}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i._getProlepticMonth=function(){return b.safeAdd(b.safeMultiply(this._year,12),this._month-1)},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.isValidDay=function(t){return t>=1&&t<=this.lengthOfMonth()},i.lengthOfMonth=function(){return this.month().length(this.isLeapYear())},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.with=function(t,n){return 1===arguments.length?this.withAdjuster(t):this.withFieldValue(t,n)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,n){if(v(t,"field"),d(t,C,"field"),t instanceof O){var i=t;switch(i.checkValidValue(n),i){case O.MONTH_OF_YEAR:return this.withMonth(n);case O.PROLEPTIC_MONTH:return this.plusMonths(n-this.getLong(O.PROLEPTIC_MONTH));case O.YEAR_OF_ERA:return this.withYear(this._year<1?1-n:n);case O.YEAR:return this.withYear(n);case O.ERA:return this.getLong(O.ERA)===n?this:this.withYear(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,n)},i.withYear=function(t){return O.YEAR.checkValidValue(t),new n(t,this._month)},i.withMonth=function(t){return O.MONTH_OF_YEAR.checkValidValue(t),new n(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),d(t,y,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),d(n,k,"unit"),n instanceof E){switch(n){case E.MONTHS:return this.plusMonths(t);case E.YEARS:return this.plusYears(t);case E.DECADES:return this.plusYears(b.safeMultiply(t,10));case E.CENTURIES:return this.plusYears(b.safeMultiply(t,100));case E.MILLENNIA:return this.plusYears(b.safeMultiply(t,1e3));case E.ERAS:return this.with(O.ERA,b.safeAdd(this.getLong(O.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var n=O.YEAR.checkValidIntValue(this._year+t);return this.withYear(n)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t;return new n(O.YEAR.checkValidIntValue(b.floorDiv(i,12)),b.floorMod(i,12)+1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return t===b.MIN_SAFE_INTEGER?this.plusAmountUnit(b.MAX_SAFE_INTEGER,n).plusAmountUnit(1,n):this.plusAmountUnit(-t,n)},i.minusYears=function(t){return t===b.MIN_SAFE_INTEGER?this.plusYears(b.MIN_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.minusMonths=function(t){return t===b.MIN_SAFE_INTEGER?this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1):this.plusMonths(-t)},i.query=function(n){return v(n,"query"),d(n,T,"query"),n===z.chronology()?nn.INSTANCE:n===z.precision()?E.MONTHS:n===z.localDate()||n===z.localTime()||n===z.zone()||n===z.zoneId()||n===z.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return v(t,"temporal"),d(t,V,"temporal"),t.with(O.PROLEPTIC_MONTH,this._getProlepticMonth())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit"),d(t,V,"endExclusive"),d(i,k,"unit");var e=n.from(t);if(i instanceof E){var r=e._getProlepticMonth()-this._getProlepticMonth();switch(i){case E.MONTHS:return r;case E.YEARS:return r/12;case E.DECADES:return r/120;case E.CENTURIES:return r/1200;case E.MILLENNIA:return r/12e3;case E.ERAS:return e.getLong(O.ERA)-this.getLong(O.ERA)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.atDay=function(t){return hn.of(this._year,this._month,t)},i.atEndOfMonth=function(){return hn.of(this._year,this._month,this.lengthOfMonth())},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=this._year-t.year();return 0===i&&(i=this._month-t.monthValue()),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){if(this===t)return!0;if(t instanceof n){var i=t;return this.year()===i.year()&&this.monthValue()===i.monthValue()}return!1},i.toString=function(){return Tt.format(this)},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V),Xt=function(t){function n(n){var i;return(i=t.call(this)||this)._year=b.safeToInt(n),i}l(n,t);var i=n.prototype;return i.value=function(){return this._year},n.now=function(t){return void 0===t&&(t=void 0),void 0===t?n.now0():t instanceof G?n.nowZoneId(t):n.nowClock(t)},n.now0=function(){return n.nowClock(dn.systemDefaultZone())},n.nowZoneId=function(t){return v(t,"zone"),d(t,G,"zone"),n.nowClock(dn.system(t))},n.nowClock=function(t){v(t,"clock"),d(t,dn,"clock");var i=hn.now(t);return n.of(i.year())},n.of=function(t){return v(t,"isoYear"),O.YEAR.checkValidValue(t),new n(t)},n.from=function(t){if(v(t,"temporal"),d(t,A,"temporal"),t instanceof n)return t;try{return n.of(t.get(O.YEAR))}catch(n){throw new r("Unable to obtain Year from TemporalAccessor: "+t+", type "+(t&&null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return arguments.length<=1?n.parseText(t):n.parseTextFormatter(t,i)},n.parseText=function(t){return v(t,"text"),n.parse(t,It)},n.parseTextFormatter=function(t,i){return void 0===i&&(i=It),v(t,"text"),v(i,"formatter"),d(i,Wt,"formatter"),i.parse(t,n.FROM)},n.isLeap=function(t){return 0===b.intMod(t,4)&&(0!==b.intMod(t,100)||0===b.intMod(t,400))},i.isSupported=function(t){return 1===arguments.length&&t instanceof C?this.isSupportedField(t):this.isSupportedUnit(t)},i.isSupportedField=function(t){return t instanceof O?t===O.YEAR||t===O.YEAR_OF_ERA||t===O.ERA:null!=t&&t.isSupportedBy(this)},i.isSupportedUnit=function(t){return t instanceof E?t===E.YEARS||t===E.DECADES||t===E.CENTURIES||t===E.MILLENNIA||t===E.ERAS:null!=t&&t.isSupportedBy(this)},i.range=function(n){if(this.isSupported(n))return n.range();if(n instanceof O)throw new o("Unsupported field: "+n);return t.prototype.range.call(this,n)},i.get=function(t){return this.range(t).checkValidIntValue(this.getLong(t),t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.YEAR_OF_ERA:return this._year<1?1-this._year:this._year;case O.YEAR:return this._year;case O.ERA:return this._year<1?0:1}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isLeap=function(){return n.isLeap(this._year)},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.YEAR_OF_ERA:return n.of(this._year<1?1-i:i);case O.YEAR:return n.of(i);case O.ERA:return this.getLong(O.ERA)===i?this:n.of(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.plusAmount=function(t){return v(t,"amount"),d(t,y,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),d(n,k,"unit"),n instanceof E){switch(n){case E.YEARS:return this.plusYears(t);case E.DECADES:return this.plusYears(b.safeMultiply(t,10));case E.CENTURIES:return this.plusYears(b.safeMultiply(t,100));case E.MILLENNIA:return this.plusYears(b.safeMultiply(t,1e3));case E.ERAS:return this.with(O.ERA,b.safeAdd(this.getLong(O.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){return 0===t?this:n.of(O.YEAR.checkValidIntValue(b.safeAdd(this._year,t)))},i.minusAmount=function(t){return v(t,"amount"),d(t,y,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),d(n,k,"unit"),t===b.MIN_SAFE_INTEGER?this.plus(b.MAX_SAFE_INTEGER,n).plus(1,n):this.plus(-t,n)},i.minusYears=function(t){return t===b.MIN_SAFE_INTEGER?this.plusYears(b.MAX_SAFE_INTEGER).plusYears(1):this.plusYears(-t)},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.YEAR,this._year)},i.isValidMonthDay=function(t){return null!=t&&t.isValidYear(this._year)},i.length=function(){return this.isLeap()?366:365},i.atDay=function(t){return hn.ofYearDay(this._year,t)},i.atMonth=function(t){return 1===arguments.length&&t instanceof N?this.atMonthMonth(t):this.atMonthNumber(t)},i.atMonthMonth=function(t){return v(t,"month"),d(t,N,"month"),Kt.of(this._year,t)},i.atMonthNumber=function(t){return v(t,"month"),Kt.of(this._year,t)},i.atMonthDay=function(t){return v(t,"monthDay"),d(t,Gt,"monthDay"),t.atYear(this._year)},i.query=function(n){return v(n,"query()"),d(n,T,"query()"),n===z.chronology()?nn.INSTANCE:n===z.precision()?E.YEARS:n===z.localDate()||n===z.localTime()||n===z.zone()||n===z.zoneId()||n===z.offset()?null:t.prototype.query.call(this,n)},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._year-t._year},i.isAfter=function(t){return v(t,"other"),d(t,n,"other"),this._year>t._year},i.isBefore=function(t){return v(t,"other"),d(t,n,"other"),this._year=0){var n=t.with(O.DAY_OF_MONTH,1),i=n.get(O.DAY_OF_WEEK),e=b.intMod(this._dowValue-i+7,7);return e+=7*(this._ordinal-1),n.plus(e,E.DAYS)}var r=t.with(O.DAY_OF_MONTH,t.range(O.DAY_OF_MONTH).maximum()),s=r.get(O.DAY_OF_WEEK),o=this._dowValue-s;return o=0===o?0:o>0?o-7:o,o-=7*(-this._ordinal-1),r.plus(o,E.DAYS)},n}(H),tn=function(t){function n(n,i){var e;return e=t.call(this)||this,v(i,"dayOfWeek"),e._relative=n,e._dowValue=i.value(),e}return l(n,t),n.prototype.adjustInto=function(t){var n=t.get(O.DAY_OF_WEEK);if(this._relative<2&&n===this._dowValue)return t;if(0==(1&this._relative)){var i=n-this._dowValue;return t.plus(i>=0?7-i:-i,E.DAYS)}var e=this._dowValue-n;return t.minus(e>=0?7-e:-e,E.DAYS)},n}(H),nn=function(t){function n(){return t.apply(this,arguments)||this}l(n,t),n.isLeapYear=function(t){return 0==(3&t)&&(t%100!=0||t%400==0)};var i=n.prototype;return i._updateResolveMap=function(t,n,i){v(t,"fieldValues"),v(n,"field");var e=t.get(n);if(null!=e&&e!==i)throw new r("Invalid state, field: "+n+" "+e+" conflicts with "+n+" "+i);t.put(n,i)},i.resolveDate=function(t,n){if(t.containsKey(O.EPOCH_DAY))return hn.ofEpochDay(t.remove(O.EPOCH_DAY));var i=t.remove(O.PROLEPTIC_MONTH);null!=i&&(n!==U.LENIENT&&O.PROLEPTIC_MONTH.checkValidValue(i),this._updateResolveMap(t,O.MONTH_OF_YEAR,b.floorMod(i,12)+1),this._updateResolveMap(t,O.YEAR,b.floorDiv(i,12)));var e=t.remove(O.YEAR_OF_ERA);if(null!=e){n!==U.LENIENT&&O.YEAR_OF_ERA.checkValidValue(e);var s=t.remove(O.ERA);if(null==s){var o=t.get(O.YEAR);n===U.STRICT?null!=o?this._updateResolveMap(t,O.YEAR,o>0?e:b.safeSubtract(1,e)):t.put(O.YEAR_OF_ERA,e):this._updateResolveMap(t,O.YEAR,null==o||o>0?e:b.safeSubtract(1,e))}else if(1===s)this._updateResolveMap(t,O.YEAR,e);else{if(0!==s)throw new r("Invalid value for era: "+s);this._updateResolveMap(t,O.YEAR,b.safeSubtract(1,e))}}else t.containsKey(O.ERA)&&O.ERA.checkValidValue(t.get(O.ERA));if(t.containsKey(O.YEAR)){if(t.containsKey(O.MONTH_OF_YEAR)&&t.containsKey(O.DAY_OF_MONTH)){var u=O.YEAR.checkValidIntValue(t.remove(O.YEAR)),a=t.remove(O.MONTH_OF_YEAR),h=t.remove(O.DAY_OF_MONTH);if(n===U.LENIENT){var _=a-1,l=h-1;return hn.of(u,1,1).plusMonths(_).plusDays(l)}return n===U.SMART?(O.DAY_OF_MONTH.checkValidValue(h),4===a||6===a||9===a||11===a?h=Math.min(h,30):2===a&&(h=Math.min(h,N.FEBRUARY.length(Xt.isLeap(u)))),hn.of(u,a,h)):hn.of(u,a,h)}if(t.containsKey(O.DAY_OF_YEAR)){var c=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var f=b.safeSubtract(t.remove(O.DAY_OF_YEAR),1);return hn.ofYearDay(c,1).plusDays(f)}var v=O.DAY_OF_YEAR.checkValidIntValue(t.remove(O.DAY_OF_YEAR));return hn.ofYearDay(c,v)}if(t.containsKey(O.ALIGNED_WEEK_OF_YEAR)){if(t.containsKey(O.ALIGNED_DAY_OF_WEEK_IN_YEAR)){var d=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var w=b.safeSubtract(t.remove(O.ALIGNED_WEEK_OF_YEAR),1),p=b.safeSubtract(t.remove(O.ALIGNED_DAY_OF_WEEK_IN_YEAR),1);return hn.of(d,1,1).plusWeeks(w).plusDays(p)}var m=O.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(O.ALIGNED_WEEK_OF_YEAR)),g=O.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(t.remove(O.ALIGNED_DAY_OF_WEEK_IN_YEAR)),$=hn.of(d,1,1).plusDays(7*(m-1)+(g-1));if(n===U.STRICT&&$.get(O.YEAR)!==d)throw new r("Strict mode rejected date parsed to a different year");return $}if(t.containsKey(O.DAY_OF_WEEK)){var y=O.YEAR.checkValidIntValue(t.remove(O.YEAR));if(n===U.LENIENT){var k=b.safeSubtract(t.remove(O.ALIGNED_WEEK_OF_YEAR),1),x=b.safeSubtract(t.remove(O.DAY_OF_WEEK),1);return hn.of(y,1,1).plusWeeks(k).plusDays(x)}var S=O.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(t.remove(O.ALIGNED_WEEK_OF_YEAR)),E=O.DAY_OF_WEEK.checkValidIntValue(t.remove(O.DAY_OF_WEEK)),C=hn.of(y,1,1).plusWeeks(S-1).with(Jt.nextOrSame(M.of(E)));if(n===U.STRICT&&C.get(O.YEAR)!==y)throw new r("Strict mode rejected date parsed to a different month");return C}}}return null},i.date=function(t){return hn.from(t)},n}($),en=function(t){function n(n,i){var e;return e=t.call(this)||this,v(n,"time"),d(n,cn,"time"),v(i,"offset"),d(i,Q,"offset"),e._time=n,e._offset=i,e}l(n,t),n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof on)return t.toOffsetTime();try{return new n(cn.from(t),Q.from(t))}catch(n){throw new r("Unable to obtain OffsetTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.now=function(t){return 0===arguments.length?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){v(t,"clock");var i=t.instant();return n.ofInstant(i,t.zone().rules().offset(i))},n.of=function(){return arguments.length<=2?n.ofTimeAndOffset.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s){return new n(cn.of(t,i,e,r),s)},n.ofTimeAndOffset=function(t,i){return new n(t,i)},n.ofInstant=function(t,i){v(t,"instant"),d(t,vn,"instant"),v(i,"zone"),d(i,G,"zone");var e=i.rules().offset(t),r=t.epochSecond()%cn.SECONDS_PER_DAY;return(r=(r+e.totalSeconds())%cn.SECONDS_PER_DAY)<0&&(r+=cn.SECONDS_PER_DAY),new n(cn.ofSecondOfDay(r,t.nano()),e)},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_OFFSET_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i.adjustInto=function(t){return t.with(O.NANO_OF_DAY,this._time.toNanoOfDay()).with(O.OFFSET_SECONDS,this.offset().totalSeconds())},i.atDate=function(t){return on.of(t,this._time,this._offset)},i.format=function(t){return v(t,"formatter"),t.format(this,n.FROM)},i.get=function(n){return t.prototype.get.call(this,n)},i.getLong=function(t){return t instanceof O?t===O.OFFSET_SECONDS?this._offset.totalSeconds():this._time.getLong(t):t.getFrom(this)},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.offset=function(){return this._offset},i.isAfter=function(t){return v(t,"other"),this._toEpochNano()>t._toEpochNano()},i.isBefore=function(t){return v(t,"other"),this._toEpochNano()i?1:0),e},i.isAfter=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return n>i||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ni||n===i&&this.toLocalTime().nano()>t.toLocalTime().nano()},i.isBefore=function(t){v(t,"other");var n=this.toEpochSecond(),i=t.toEpochSecond();return ns.firstDayOfYear(e)+s.length(e)-1&&(s=s.plus(1));var o=i-s.firstDayOfYear(e)+1;return new n(t,s.value(),o)},n.ofEpochDay=function(t){var i,e,r,s,o;void 0===t&&(t=0),o=t+an,i=0,(o-=60)<0&&(i=400*(e=b.intDiv(o+1,un)-1),o+=-e*un),(r=o-(365*(s=b.intDiv(400*o+591,un))+b.intDiv(s,4)-b.intDiv(s,100)+b.intDiv(s,400)))<0&&(r=o-(365*--s+b.intDiv(s,4)-b.intDiv(s,100)+b.intDiv(s,400))),s+=i;var u=r,a=b.intDiv(5*u+2,153),h=(a+2)%12+1,_=u-b.intDiv(306*a+5,10)+1;return new n(s+=b.intDiv(a,10),h,_)},n.from=function(t){v(t,"temporal");var n=t.query(z.localDate());if(null==n)throw new r("Unable to obtain LocalDate from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_DATE),f(null!=i,"formatter",_),i.parse(t,n.FROM)},n._resolvePreviousValid=function(t,i,e){switch(i){case 2:e=Math.min(e,nn.isLeapYear(t)?29:28);break;case 4:case 6:case 9:case 11:e=Math.min(e,30)}return n.of(t,i,e)},n._validate=function(t,n,i){var e;if(O.YEAR.checkValidValue(t),O.MONTH_OF_YEAR.checkValidValue(n),O.DAY_OF_MONTH.checkValidValue(i),i>28){switch(e=31,n){case 2:e=nn.isLeapYear(t)?29:28;break;case 4:case 6:case 9:case 11:e=30}i>e&&f(!1,29===i?"Invalid date 'February 29' as '"+t+"' is not a leap year":"Invalid date '"+t+"' '"+n+"' '"+i+"'",r)}};var i=n.prototype;return i.isSupported=function(n){return t.prototype.isSupported.call(this,n)},i.range=function(t){if(t instanceof O){if(t.isDateBased()){switch(t){case O.DAY_OF_MONTH:return q.of(1,this.lengthOfMonth());case O.DAY_OF_YEAR:return q.of(1,this.lengthOfYear());case O.ALIGNED_WEEK_OF_MONTH:return q.of(1,this.month()===N.FEBRUARY&&!1===this.isLeapYear()?4:5);case O.YEAR_OF_ERA:return this._year<=0?q.of(1,Xt.MAX_VALUE+1):q.of(1,Xt.MAX_VALUE)}return t.range()}throw new o("Unsupported field: "+t)}return t.rangeRefinedBy(this)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return f(null!=t,"",_),t instanceof O?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case O.DAY_OF_WEEK:return this.dayOfWeek().value();case O.ALIGNED_DAY_OF_WEEK_IN_MONTH:return b.intMod(this._day-1,7)+1;case O.ALIGNED_DAY_OF_WEEK_IN_YEAR:return b.intMod(this.dayOfYear()-1,7)+1;case O.DAY_OF_MONTH:return this._day;case O.DAY_OF_YEAR:return this.dayOfYear();case O.EPOCH_DAY:return this.toEpochDay();case O.ALIGNED_WEEK_OF_MONTH:return b.intDiv(this._day-1,7)+1;case O.ALIGNED_WEEK_OF_YEAR:return b.intDiv(this.dayOfYear()-1,7)+1;case O.MONTH_OF_YEAR:return this._month;case O.PROLEPTIC_MONTH:return this._prolepticMonth();case O.YEAR_OF_ERA:return this._year>=1?this._year:1-this._year;case O.YEAR:return this._year;case O.ERA:return this._year>=1?1:0}throw new o("Unsupported field: "+t)},i._prolepticMonth=function(){return 12*this._year+(this._month-1)},i.chronology=function(){return nn.INSTANCE},i.year=function(){return this._year},i.monthValue=function(){return this._month},i.month=function(){return N.of(this._month)},i.dayOfMonth=function(){return this._day},i.dayOfYear=function(){return this.month().firstDayOfYear(this.isLeapYear())+this._day-1},i.dayOfWeek=function(){var t=b.floorMod(this.toEpochDay()+3,7);return M.of(t+1)},i.isLeapYear=function(){return nn.isLeapYear(this._year)},i.lengthOfMonth=function(){switch(this._month){case 2:return this.isLeapYear()?29:28;case 4:case 6:case 9:case 11:return 30;default:return 31}},i.lengthOfYear=function(){return this.isLeapYear()?366:365},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,i){if(f(null!=t,"field",_),t instanceof O){var e=t;switch(e.checkValidValue(i),e){case O.DAY_OF_WEEK:return this.plusDays(i-this.dayOfWeek().value());case O.ALIGNED_DAY_OF_WEEK_IN_MONTH:return this.plusDays(i-this.getLong(O.ALIGNED_DAY_OF_WEEK_IN_MONTH));case O.ALIGNED_DAY_OF_WEEK_IN_YEAR:return this.plusDays(i-this.getLong(O.ALIGNED_DAY_OF_WEEK_IN_YEAR));case O.DAY_OF_MONTH:return this.withDayOfMonth(i);case O.DAY_OF_YEAR:return this.withDayOfYear(i);case O.EPOCH_DAY:return n.ofEpochDay(i);case O.ALIGNED_WEEK_OF_MONTH:return this.plusWeeks(i-this.getLong(O.ALIGNED_WEEK_OF_MONTH));case O.ALIGNED_WEEK_OF_YEAR:return this.plusWeeks(i-this.getLong(O.ALIGNED_WEEK_OF_YEAR));case O.MONTH_OF_YEAR:return this.withMonth(i);case O.PROLEPTIC_MONTH:return this.plusMonths(i-this.getLong(O.PROLEPTIC_MONTH));case O.YEAR_OF_ERA:return this.withYear(this._year>=1?i:1-i);case O.YEAR:return this.withYear(i);case O.ERA:return this.getLong(O.ERA)===i?this:this.withYear(1-this._year)}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withYear=function(t){return this._year===t?this:(O.YEAR.checkValidValue(t),n._resolvePreviousValid(t,this._month,this._day))},i.withMonth=function(t){var i=t instanceof N?t.value():t;return this._month===i?this:(O.MONTH_OF_YEAR.checkValidValue(i),n._resolvePreviousValid(this._year,i,this._day))},i.withDayOfMonth=function(t){return this._day===t?this:n.of(this._year,this._month,t)},i.withDayOfYear=function(t){return this.dayOfYear()===t?this:n.ofYearDay(this._year,t)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),n instanceof E){switch(n){case E.DAYS:return this.plusDays(t);case E.WEEKS:return this.plusWeeks(t);case E.MONTHS:return this.plusMonths(t);case E.YEARS:return this.plusYears(t);case E.DECADES:return this.plusYears(b.safeMultiply(t,10));case E.CENTURIES:return this.plusYears(b.safeMultiply(t,100));case E.MILLENNIA:return this.plusYears(b.safeMultiply(t,1e3));case E.ERAS:return this.with(O.ERA,b.safeAdd(this.getLong(O.ERA),t))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusYears=function(t){if(0===t)return this;var i=O.YEAR.checkValidIntValue(this._year+t);return n._resolvePreviousValid(i,this._month,this._day)},i.plusMonths=function(t){if(0===t)return this;var i=12*this._year+(this._month-1)+t,e=O.YEAR.checkValidIntValue(b.floorDiv(i,12)),r=b.floorMod(i,12)+1;return n._resolvePreviousValid(e,r,this._day)},i.plusWeeks=function(t){return this.plusDays(b.safeMultiply(t,7))},i.plusDays=function(t){if(0===t)return this;var i=b.safeAdd(this.toEpochDay(),t);return n.ofEpochDay(i)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(t,"amountToSubtract"),v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.query=function(n){return v(n,"query"),n===z.localDate()?this:t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,n){return arguments.length<2?this.until1(t):this.until2(t,n)},i.until2=function(t,i){var e=n.from(t);if(i instanceof E){switch(i){case E.DAYS:return this.daysUntil(e);case E.WEEKS:return b.intDiv(this.daysUntil(e),7);case E.MONTHS:return this._monthsUntil(e);case E.YEARS:return b.intDiv(this._monthsUntil(e),12);case E.DECADES:return b.intDiv(this._monthsUntil(e),120);case E.CENTURIES:return b.intDiv(this._monthsUntil(e),1200);case E.MILLENNIA:return b.intDiv(this._monthsUntil(e),12e3);case E.ERAS:return e.getLong(O.ERA)-this.getLong(O.ERA)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.daysUntil=function(t){return t.toEpochDay()-this.toEpochDay()},i._monthsUntil=function(t){var n=32*this._prolepticMonth()+this.dayOfMonth(),i=32*t._prolepticMonth()+t.dayOfMonth();return b.intDiv(i-n,32)},i.until1=function(t){var i=n.from(t),e=i._prolepticMonth()-this._prolepticMonth(),r=i._day-this._day;if(e>0&&r<0){e--;var s=this.plusMonths(e);r=i.toEpochDay()-s.toEpochDay()}else e<0&&r>0&&(e++,r-=i.lengthOfMonth());var o=b.intDiv(e,12),u=b.intMod(e,12);return P.of(o,u,r)},i.atTime=function(){return 1===arguments.length?this.atTime1.apply(this,arguments):this.atTime4.apply(this,arguments)},i.atTime1=function(t){if(v(t,"time"),t instanceof cn)return ln.of(this,t);if(t instanceof en)return this._atTimeOffsetTime(t);throw new a("time must be an instance of LocalTime or OffsetTime"+(t&&t.constructor&&t.constructor.name?", but is "+t.constructor.name:""))},i.atTime4=function(t,n,i,e){return void 0===i&&(i=0),void 0===e&&(e=0),this.atTime1(cn.of(t,n,i,e))},i._atTimeOffsetTime=function(t){return on.of(ln.of(this,t.toLocalTime()),t.offset())},i.atStartOfDay=function(t){return null!=t?this.atStartOfDayWithZone(t):ln.of(this,cn.MIDNIGHT)},i.atStartOfDayWithZone=function(t){v(t,"zone");var n=this.atTime(cn.MIDNIGHT);if(t instanceof Q==0){var i=t.rules().transition(n);null!=i&&i.isGap()&&(n=i.dateTimeAfter())}return sn.of(n,t)},i.toEpochDay=function(){var t=this._year,n=this._month,i=0;return i+=365*t,t>=0?i+=b.intDiv(t+3,4)-b.intDiv(t+99,100)+b.intDiv(t+399,400):i-=b.intDiv(t,-4)-b.intDiv(t,-100)+b.intDiv(t,-400),i+=b.intDiv(367*n-362,12),i+=this.dayOfMonth()-1,n>2&&(i--,nn.isLeapYear(t)||i--),i-an},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._year-t._year;return 0===n&&0==(n=this._month-t._month)&&(n=this._day-t._day),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&0===this._compareTo0(t)},i.hashCode=function(){var t=this._year,n=this._month,i=this._day;return b.hash(4294965248&t^(t<<11)+(n<<6)+i)},i.toString=function(){var t=this._year,n=this._month,i=this._day;return(Math.abs(t)<1e3?t<0?"-"+(""+(t-1e4)).slice(-4):(""+(t+1e4)).slice(-4):t>9999?"+"+t:""+t)+(n<10?"-0"+n:"-"+n)+(i<10?"-0"+i:"-"+i)},i.toJSON=function(){return this.toString()},i.format=function(n){return v(n,"formatter"),d(n,Wt,"formatter"),t.prototype.format.call(this,n)},n}(Y),_n=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.chronology=function(){return this.toLocalDate().chronology()},i.query=function(n){return n===z.chronology()?this.chronology():n===z.precision()?E.NANOS:n===z.localDate()?hn.ofEpochDay(this.toLocalDate().toEpochDay()):n===z.localTime()?this.toLocalTime():n===z.zone()||n===z.zoneId()||n===z.offset()?null:t.prototype.query.call(this,n)},i.adjustInto=function(t){return t.with(O.EPOCH_DAY,this.toLocalDate().toEpochDay()).with(O.NANO_OF_DAY,this.toLocalTime().toNanoOfDay())},i.toInstant=function(t){return d(t,Q,"zoneId"),vn.ofEpochSecond(this.toEpochSecond(t),this.toLocalTime().nano())},i.toEpochSecond=function(t){v(t,"offset");var n=86400*this.toLocalDate().toEpochDay()+this.toLocalTime().toSecondOfDay();return n-=t.totalSeconds(),b.safeToInt(n)},n}(B),ln=function(t){function n(n,i){var e;return e=t.call(this)||this,d(n,hn,"date"),d(i,cn,"time"),e._date=n,e._time=i,e}l(n,t),n.now=function(t){return null==t?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){return v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n._ofEpochMillis=function(t,i){var e=b.floorDiv(t,1e3)+i.totalSeconds(),r=b.floorDiv(e,cn.SECONDS_PER_DAY),s=b.floorMod(e,cn.SECONDS_PER_DAY),o=1e6*b.floorMod(t,1e3);return new n(hn.ofEpochDay(r),cn.ofSecondOfDay(s,o))},n.of=function(){return arguments.length<=2?n.ofDateAndTime.apply(this,arguments):n.ofNumbers.apply(this,arguments)},n.ofNumbers=function(t,i,e,r,s,o,u){return void 0===r&&(r=0),void 0===s&&(s=0),void 0===o&&(o=0),void 0===u&&(u=0),new n(hn.of(t,i,e),cn.of(r,s,o,u))},n.ofDateAndTime=function(t,i){return v(t,"date"),v(i,"time"),new n(t,i)},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault()),v(t,"instant"),d(t,vn,"instant"),v(i,"zone");var e=i.rules().offset(t);return n.ofEpochSecond(t.epochSecond(),t.nano(),e)},n.ofEpochSecond=function(t,i,e){void 0===t&&(t=0),void 0===i&&(i=0),2===arguments.length&&i instanceof Q&&(e=i,i=0),v(e,"offset");var r=t+e.totalSeconds(),s=b.floorDiv(r,cn.SECONDS_PER_DAY),o=b.floorMod(r,cn.SECONDS_PER_DAY);return new n(hn.ofEpochDay(s),cn.ofSecondOfDay(o,i))},n.from=function(t){if(v(t,"temporal"),t instanceof n)return t;if(t instanceof sn)return t.toLocalDateTime();try{return new n(hn.from(t),cn.from(t))}catch(n){throw new r("Unable to obtain LocalDateTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""))}},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_DATE_TIME),v(i,"formatter"),i.parse(t,n.FROM)};var i=n.prototype;return i._withDateTime=function(t,i){return this._date.equals(t)&&this._time.equals(i)?this:new n(t,i)},i.isSupported=function(t){return t instanceof O||t instanceof E?t.isDateBased()||t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(t){return t instanceof O?t.isTimeBased()?this._time.range(t):this._date.range(t):t.rangeRefinedBy(this)},i.get=function(n){return n instanceof O?n.isTimeBased()?this._time.get(n):this._date.get(n):t.prototype.get.call(this,n)},i.getLong=function(t){return v(t,"field"),t instanceof O?t.isTimeBased()?this._time.getLong(t):this._date.getLong(t):t.getFrom(this)},i.year=function(){return this._date.year()},i.monthValue=function(){return this._date.monthValue()},i.month=function(){return this._date.month()},i.dayOfMonth=function(){return this._date.dayOfMonth()},i.dayOfYear=function(){return this._date.dayOfYear()},i.dayOfWeek=function(){return this._date.dayOfWeek()},i.hour=function(){return this._time.hour()},i.minute=function(){return this._time.minute()},i.second=function(){return this._time.second()},i.nano=function(){return this._time.nano()},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof hn?this._withDateTime(t,this._time):t instanceof cn?this._withDateTime(this._date,t):t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,n){return v(t,"field"),t instanceof O?t.isTimeBased()?this._withDateTime(this._date,this._time.with(t,n)):this._withDateTime(this._date.with(t,n),this._time):t.adjustInto(this,n)},i.withYear=function(t){return this._withDateTime(this._date.withYear(t),this._time)},i.withMonth=function(t){return this._withDateTime(this._date.withMonth(t),this._time)},i.withDayOfMonth=function(t){return this._withDateTime(this._date.withDayOfMonth(t),this._time)},i.withDayOfYear=function(t){return this._withDateTime(this._date.withDayOfYear(t),this._time)},i.withHour=function(t){var n=this._time.withHour(t);return this._withDateTime(this._date,n)},i.withMinute=function(t){var n=this._time.withMinute(t);return this._withDateTime(this._date,n)},i.withSecond=function(t){var n=this._time.withSecond(t);return this._withDateTime(this._date,n)},i.withNano=function(t){var n=this._time.withNano(t);return this._withDateTime(this._date,n)},i.truncatedTo=function(t){return this._withDateTime(this._date,this._time.truncatedTo(t))},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(n,"unit"),n instanceof E){switch(n){case E.NANOS:return this.plusNanos(t);case E.MICROS:return this.plusDays(b.intDiv(t,cn.MICROS_PER_DAY)).plusNanos(1e3*b.intMod(t,cn.MICROS_PER_DAY));case E.MILLIS:return this.plusDays(b.intDiv(t,cn.MILLIS_PER_DAY)).plusNanos(1e6*b.intMod(t,cn.MILLIS_PER_DAY));case E.SECONDS:return this.plusSeconds(t);case E.MINUTES:return this.plusMinutes(t);case E.HOURS:return this.plusHours(t);case E.HALF_DAYS:return this.plusDays(b.intDiv(t,256)).plusHours(12*b.intMod(t,256))}return this._withDateTime(this._date.plus(t,n),this._time)}return n.addTo(this,t)},i.plusYears=function(t){var n=this._date.plusYears(t);return this._withDateTime(n,this._time)},i.plusMonths=function(t){var n=this._date.plusMonths(t);return this._withDateTime(n,this._time)},i.plusWeeks=function(t){var n=this._date.plusWeeks(t);return this._withDateTime(n,this._time)},i.plusDays=function(t){var n=this._date.plusDays(t);return this._withDateTime(n,this._time)},i.plusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,1)},i.plusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,1)},i.plusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,1)},i.plusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,1)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusYears=function(t){return this.plusYears(-1*t)},i.minusMonths=function(t){return this.plusMonths(-1*t)},i.minusWeeks=function(t){return this.plusWeeks(-1*t)},i.minusDays=function(t){return this.plusDays(-1*t)},i.minusHours=function(t){return this._plusWithOverflow(this._date,t,0,0,0,-1)},i.minusMinutes=function(t){return this._plusWithOverflow(this._date,0,t,0,0,-1)},i.minusSeconds=function(t){return this._plusWithOverflow(this._date,0,0,t,0,-1)},i.minusNanos=function(t){return this._plusWithOverflow(this._date,0,0,0,t,-1)},i._plusWithOverflow=function(t,n,i,e,r,s){if(0===n&&0===i&&0===e&&0===r)return this._withDateTime(t,this._time);var o=b.intDiv(r,cn.NANOS_PER_DAY)+b.intDiv(e,cn.SECONDS_PER_DAY)+b.intDiv(i,cn.MINUTES_PER_DAY)+b.intDiv(n,cn.HOURS_PER_DAY);o*=s;var u=b.intMod(r,cn.NANOS_PER_DAY)+b.intMod(e,cn.SECONDS_PER_DAY)*cn.NANOS_PER_SECOND+b.intMod(i,cn.MINUTES_PER_DAY)*cn.NANOS_PER_MINUTE+b.intMod(n,cn.HOURS_PER_DAY)*cn.NANOS_PER_HOUR,a=this._time.toNanoOfDay();u=u*s+a,o+=b.floorDiv(u,cn.NANOS_PER_DAY);var h=b.floorMod(u,cn.NANOS_PER_DAY),_=h===a?this._time:cn.ofNanoOfDay(h);return this._withDateTime(t.plusDays(o),_)},i.query=function(n){return v(n,"query"),n===z.localDate()?this.toLocalDate():t.prototype.query.call(this,n)},i.adjustInto=function(n){return t.prototype.adjustInto.call(this,n)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof E){if(i.isTimeBased()){var r=this._date.daysUntil(e._date),s=e._time.toNanoOfDay()-this._time.toNanoOfDay();r>0&&s<0?(r--,s+=cn.NANOS_PER_DAY):r<0&&s>0&&(r++,s-=cn.NANOS_PER_DAY);var u=r;switch(i){case E.NANOS:return u=b.safeMultiply(u,cn.NANOS_PER_DAY),b.safeAdd(u,s);case E.MICROS:return u=b.safeMultiply(u,cn.MICROS_PER_DAY),b.safeAdd(u,b.intDiv(s,1e3));case E.MILLIS:return u=b.safeMultiply(u,cn.MILLIS_PER_DAY),b.safeAdd(u,b.intDiv(s,1e6));case E.SECONDS:return u=b.safeMultiply(u,cn.SECONDS_PER_DAY),b.safeAdd(u,b.intDiv(s,cn.NANOS_PER_SECOND));case E.MINUTES:return u=b.safeMultiply(u,cn.MINUTES_PER_DAY),b.safeAdd(u,b.intDiv(s,cn.NANOS_PER_MINUTE));case E.HOURS:return u=b.safeMultiply(u,cn.HOURS_PER_DAY),b.safeAdd(u,b.intDiv(s,cn.NANOS_PER_HOUR));case E.HALF_DAYS:return u=b.safeMultiply(u,2),b.safeAdd(u,b.intDiv(s,12*cn.NANOS_PER_HOUR))}throw new o("Unsupported unit: "+i)}var a=e._date,h=e._time;return a.isAfter(this._date)&&h.isBefore(this._time)?a=a.minusDays(1):a.isBefore(this._date)&&h.isAfter(this._time)&&(a=a.plusDays(1)),this._date.until(a,i)}return i.between(this,e)},i.atOffset=function(t){return on.of(this,t)},i.atZone=function(t){return sn.of(this,t)},i.toLocalDate=function(){return this._date},i.toLocalTime=function(){return this._time},i.compareTo=function(t){return v(t,"other"),d(t,n,"other"),this._compareTo0(t)},i._compareTo0=function(t){var n=this._date.compareTo(t.toLocalDate());return 0===n&&(n=this._time.compareTo(t.toLocalTime())),n},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.isEqual=function(t){return 0===this.compareTo(t)},i.equals=function(t){return this===t||t instanceof n&&this._date.equals(t._date)&&this._time.equals(t._time)},i.hashCode=function(){return this._date.hashCode()^this._time.hashCode()},i.toString=function(){return this._date.toString()+"T"+this._time.toString()},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(_n),cn=function(t){function n(i,e,r,s){var o;void 0===i&&(i=0),void 0===e&&(e=0),void 0===r&&(r=0),void 0===s&&(s=0),o=t.call(this)||this;var u=b.safeToInt(i),a=b.safeToInt(e),h=b.safeToInt(r),_=b.safeToInt(s);return n._validate(u,a,h,_),0===a&&0===h&&0===_?(n.HOURS[u]||(o._hour=u,o._minute=a,o._second=h,o._nano=_,n.HOURS[u]=c(o)),n.HOURS[u]||c(o)):(o._hour=u,o._minute=a,o._second=h,o._nano=_,o)}l(n,t),n.now=function(t){return null==t?n._now(dn.systemDefaultZone()):t instanceof dn?n._now(t):n._now(dn.system(t))},n._now=function(t){return void 0===t&&(t=dn.systemDefaultZone()),v(t,"clock"),n.ofInstant(t.instant(),t.zone())},n.ofInstant=function(t,i){void 0===i&&(i=G.systemDefault());var e=i.rules().offset(t),r=b.intMod(t.epochSecond(),n.SECONDS_PER_DAY);return(r=b.intMod(r+e.totalSeconds(),n.SECONDS_PER_DAY))<0&&(r+=n.SECONDS_PER_DAY),n.ofSecondOfDay(r,t.nano())},n.of=function(t,i,e,r){return new n(t,i,e,r)},n.ofSecondOfDay=function(t,i){void 0===t&&(t=0),void 0===i&&(i=0),O.SECOND_OF_DAY.checkValidValue(t),O.NANO_OF_SECOND.checkValidValue(i);var e=b.intDiv(t,n.SECONDS_PER_HOUR);t-=e*n.SECONDS_PER_HOUR;var r=b.intDiv(t,n.SECONDS_PER_MINUTE);return new n(e,r,t-=r*n.SECONDS_PER_MINUTE,i)},n.ofNanoOfDay=function(t){void 0===t&&(t=0),O.NANO_OF_DAY.checkValidValue(t);var i=b.intDiv(t,n.NANOS_PER_HOUR);t-=i*n.NANOS_PER_HOUR;var e=b.intDiv(t,n.NANOS_PER_MINUTE);t-=e*n.NANOS_PER_MINUTE;var r=b.intDiv(t,n.NANOS_PER_SECOND);return new n(i,e,r,t-=r*n.NANOS_PER_SECOND)},n.from=function(t){v(t,"temporal");var n=t.query(z.localTime());if(null==n)throw new r("Unable to obtain LocalTime TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},n.parse=function(t,i){return void 0===i&&(i=Wt.ISO_LOCAL_TIME),v(i,"formatter"),i.parse(t,n.FROM)},n._validate=function(t,n,i,e){O.HOUR_OF_DAY.checkValidValue(t),O.MINUTE_OF_HOUR.checkValidValue(n),O.SECOND_OF_MINUTE.checkValidValue(i),O.NANO_OF_SECOND.checkValidValue(e)};var i=n.prototype;return i.isSupported=function(t){return t instanceof O||t instanceof E?t.isTimeBased():null!=t&&t.isSupportedBy(this)},i.range=function(n){return v(n),t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){return v(t,"field"),t instanceof O?this._get0(t):t.getFrom(this)},i._get0=function(t){switch(t){case O.NANO_OF_SECOND:return this._nano;case O.NANO_OF_DAY:return this.toNanoOfDay();case O.MICRO_OF_SECOND:return b.intDiv(this._nano,1e3);case O.MICRO_OF_DAY:return b.intDiv(this.toNanoOfDay(),1e3);case O.MILLI_OF_SECOND:return b.intDiv(this._nano,1e6);case O.MILLI_OF_DAY:return b.intDiv(this.toNanoOfDay(),1e6);case O.SECOND_OF_MINUTE:return this._second;case O.SECOND_OF_DAY:return this.toSecondOfDay();case O.MINUTE_OF_HOUR:return this._minute;case O.MINUTE_OF_DAY:return 60*this._hour+this._minute;case O.HOUR_OF_AMPM:return b.intMod(this._hour,12);case O.CLOCK_HOUR_OF_AMPM:var n=b.intMod(this._hour,12);return n%12==0?12:n;case O.HOUR_OF_DAY:return this._hour;case O.CLOCK_HOUR_OF_DAY:return 0===this._hour?24:this._hour;case O.AMPM_OF_DAY:return b.intDiv(this._hour,12)}throw new o("Unsupported field: "+t)},i.hour=function(){return this._hour},i.minute=function(){return this._minute},i.second=function(){return this._second},i.nano=function(){return this._nano},i.withAdjuster=function(t){return v(t,"adjuster"),t instanceof n?t:(f("function"==typeof t.adjustInto,"adjuster",a),t.adjustInto(this))},i.withFieldValue=function(t,i){if(v(t,"field"),d(t,C,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.NANO_OF_SECOND:return this.withNano(i);case O.NANO_OF_DAY:return n.ofNanoOfDay(i);case O.MICRO_OF_SECOND:return this.withNano(1e3*i);case O.MICRO_OF_DAY:return n.ofNanoOfDay(1e3*i);case O.MILLI_OF_SECOND:return this.withNano(1e6*i);case O.MILLI_OF_DAY:return n.ofNanoOfDay(1e6*i);case O.SECOND_OF_MINUTE:return this.withSecond(i);case O.SECOND_OF_DAY:return this.plusSeconds(i-this.toSecondOfDay());case O.MINUTE_OF_HOUR:return this.withMinute(i);case O.MINUTE_OF_DAY:return this.plusMinutes(i-(60*this._hour+this._minute));case O.HOUR_OF_AMPM:return this.plusHours(i-b.intMod(this._hour,12));case O.CLOCK_HOUR_OF_AMPM:return this.plusHours((12===i?0:i)-b.intMod(this._hour,12));case O.HOUR_OF_DAY:return this.withHour(i);case O.CLOCK_HOUR_OF_DAY:return this.withHour(24===i?0:i);case O.AMPM_OF_DAY:return this.plusHours(12*(i-b.intDiv(this._hour,12)))}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.withHour=function(t){return void 0===t&&(t=0),this._hour===t?this:new n(t,this._minute,this._second,this._nano)},i.withMinute=function(t){return void 0===t&&(t=0),this._minute===t?this:new n(this._hour,t,this._second,this._nano)},i.withSecond=function(t){return void 0===t&&(t=0),this._second===t?this:new n(this._hour,this._minute,t,this._nano)},i.withNano=function(t){return void 0===t&&(t=0),this._nano===t?this:new n(this._hour,this._minute,this._second,t)},i.truncatedTo=function(t){if(v(t,"unit"),t===E.NANOS)return this;var i=t.duration();if(i.seconds()>n.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var e=i.toNanos();if(0!==b.intMod(n.NANOS_PER_DAY,e))throw new r("Unit must divide into a standard day without remainder");var s=this.toNanoOfDay();return n.ofNanoOfDay(b.intDiv(s,e)*e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,i){if(v(i,"unit"),i instanceof E){switch(i){case E.NANOS:return this.plusNanos(t);case E.MICROS:return this.plusNanos(1e3*b.intMod(t,n.MICROS_PER_DAY));case E.MILLIS:return this.plusNanos(1e6*b.intMod(t,n.MILLIS_PER_DAY));case E.SECONDS:return this.plusSeconds(t);case E.MINUTES:return this.plusMinutes(t);case E.HOURS:return this.plusHours(t);case E.HALF_DAYS:return this.plusHours(12*b.intMod(t,2))}throw new o("Unsupported unit: "+i)}return i.addTo(this,t)},i.plusHours=function(t){return 0===t?this:new n(b.intMod(b.intMod(t,n.HOURS_PER_DAY)+this._hour+n.HOURS_PER_DAY,n.HOURS_PER_DAY),this._minute,this._second,this._nano)},i.plusMinutes=function(t){if(0===t)return this;var i=this._hour*n.MINUTES_PER_HOUR+this._minute,e=b.intMod(b.intMod(t,n.MINUTES_PER_DAY)+i+n.MINUTES_PER_DAY,n.MINUTES_PER_DAY);return i===e?this:new n(b.intDiv(e,n.MINUTES_PER_HOUR),b.intMod(e,n.MINUTES_PER_HOUR),this._second,this._nano)},i.plusSeconds=function(t){if(0===t)return this;var i=this._hour*n.SECONDS_PER_HOUR+this._minute*n.SECONDS_PER_MINUTE+this._second,e=b.intMod(b.intMod(t,n.SECONDS_PER_DAY)+i+n.SECONDS_PER_DAY,n.SECONDS_PER_DAY);return i===e?this:new n(b.intDiv(e,n.SECONDS_PER_HOUR),b.intMod(b.intDiv(e,n.SECONDS_PER_MINUTE),n.MINUTES_PER_HOUR),b.intMod(e,n.SECONDS_PER_MINUTE),this._nano)},i.plusNanos=function(t){if(0===t)return this;var i=this.toNanoOfDay(),e=b.intMod(b.intMod(t,n.NANOS_PER_DAY)+i+n.NANOS_PER_DAY,n.NANOS_PER_DAY);return i===e?this:new n(b.intDiv(e,n.NANOS_PER_HOUR),b.intMod(b.intDiv(e,n.NANOS_PER_MINUTE),n.MINUTES_PER_HOUR),b.intMod(b.intDiv(e,n.NANOS_PER_SECOND),n.SECONDS_PER_MINUTE),b.intMod(e,n.NANOS_PER_SECOND))},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return v(n,"unit"),this.plusAmountUnit(-1*t,n)},i.minusHours=function(t){return this.plusHours(-1*b.intMod(t,n.HOURS_PER_DAY))},i.minusMinutes=function(t){return this.plusMinutes(-1*b.intMod(t,n.MINUTES_PER_DAY))},i.minusSeconds=function(t){return this.plusSeconds(-1*b.intMod(t,n.SECONDS_PER_DAY))},i.minusNanos=function(t){return this.plusNanos(-1*b.intMod(t,n.NANOS_PER_DAY))},i.query=function(t){return v(t,"query"),t===z.precision()?E.NANOS:t===z.localTime()?this:t===z.chronology()||t===z.zoneId()||t===z.zone()||t===z.offset()||t===z.localDate()?null:t.queryFrom(this)},i.adjustInto=function(t){return t.with(n.NANO_OF_DAY,this.toNanoOfDay())},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof E){var r=e.toNanoOfDay()-this.toNanoOfDay();switch(i){case E.NANOS:return r;case E.MICROS:return b.intDiv(r,1e3);case E.MILLIS:return b.intDiv(r,1e6);case E.SECONDS:return b.intDiv(r,n.NANOS_PER_SECOND);case E.MINUTES:return b.intDiv(r,n.NANOS_PER_MINUTE);case E.HOURS:return b.intDiv(r,n.NANOS_PER_HOUR);case E.HALF_DAYS:return b.intDiv(r,12*n.NANOS_PER_HOUR)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i.atDate=function(t){return ln.of(t,this)},i.toSecondOfDay=function(){var t=this._hour*n.SECONDS_PER_HOUR;return(t+=this._minute*n.SECONDS_PER_MINUTE)+this._second},i.toNanoOfDay=function(){var t=this._hour*n.NANOS_PER_HOUR;return t+=this._minute*n.NANOS_PER_MINUTE,(t+=this._second*n.NANOS_PER_SECOND)+this._nano},i.compareTo=function(t){v(t,"other"),d(t,n,"other");var i=b.compareNumbers(this._hour,t._hour);return 0===i&&0===(i=b.compareNumbers(this._minute,t._minute))&&0===(i=b.compareNumbers(this._second,t._second))&&(i=b.compareNumbers(this._nano,t._nano)),i},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this._hour===t._hour&&this._minute===t._minute&&this._second===t._second&&this._nano===t._nano},i.hashCode=function(){var t=this.toNanoOfDay();return b.hash(t)},i.toString=function(){var t="",n=this._hour,i=this._minute,e=this._second,r=this._nano;return t+=n<10?"0":"",t+=n,t+=i<10?":0":":",t+=i,(e>0||r>0)&&(t+=e<10?":0":":",t+=e,r>0&&(t+=".",0===b.intMod(r,1e6)?t+=(""+(b.intDiv(r,1e6)+1e3)).substring(1):0===b.intMod(r,1e3)?t+=(""+(b.intDiv(r,1e3)+1e6)).substring(1):t+=(""+(r+1e9)).substring(1))),t},i.toJSON=function(){return this.toString()},i.format=function(t){return v(t,"formatter"),t.format(this)},n}(V);cn.HOURS_PER_DAY=24,cn.MINUTES_PER_HOUR=60,cn.MINUTES_PER_DAY=cn.MINUTES_PER_HOUR*cn.HOURS_PER_DAY,cn.SECONDS_PER_MINUTE=60,cn.SECONDS_PER_HOUR=cn.SECONDS_PER_MINUTE*cn.MINUTES_PER_HOUR,cn.SECONDS_PER_DAY=cn.SECONDS_PER_HOUR*cn.HOURS_PER_DAY,cn.MILLIS_PER_DAY=1e3*cn.SECONDS_PER_DAY,cn.MICROS_PER_DAY=1e6*cn.SECONDS_PER_DAY,cn.NANOS_PER_SECOND=1e9,cn.NANOS_PER_MINUTE=cn.NANOS_PER_SECOND*cn.SECONDS_PER_MINUTE,cn.NANOS_PER_HOUR=cn.NANOS_PER_MINUTE*cn.MINUTES_PER_HOUR,cn.NANOS_PER_DAY=cn.NANOS_PER_HOUR*cn.HOURS_PER_DAY;var fn=1e6,vn=function(t){function n(i,e){var r;return r=t.call(this)||this,n._validate(i,e),r._seconds=b.safeToInt(i),r._nanos=b.safeToInt(e),r}l(n,t),n.now=function(t){return void 0===t&&(t=dn.systemUTC()),t.instant()},n.ofEpochSecond=function(t,i){void 0===i&&(i=0);var e=t+b.floorDiv(i,cn.NANOS_PER_SECOND),r=b.floorMod(i,cn.NANOS_PER_SECOND);return n._create(e,r)},n.ofEpochMilli=function(t){var i=b.floorDiv(t,1e3),e=b.floorMod(t,1e3);return n._create(i,1e6*e)},n.from=function(t){try{var i=t.getLong(O.INSTANT_SECONDS),e=t.get(O.NANO_OF_SECOND);return n.ofEpochSecond(i,e)}catch(n){throw new r("Unable to obtain Instant from TemporalAccessor: "+t+", type "+typeof t,n)}},n.parse=function(t){return Wt.ISO_INSTANT.parse(t,n.FROM)},n._create=function(t,i){return 0===t&&0===i?n.EPOCH:new n(t,i)},n._validate=function(t,i){if(tn.MAX_SECONDS)throw new r("Instant exceeds minimum or maximum instant");if(i<0||i>cn.NANOS_PER_SECOND)throw new r("Instant exceeds minimum or maximum instant")};var i=n.prototype;return i.isSupported=function(t){return t instanceof O?t===O.INSTANT_SECONDS||t===O.NANO_OF_SECOND||t===O.MICRO_OF_SECOND||t===O.MILLI_OF_SECOND:t instanceof E?t.isTimeBased()||t===E.DAYS:null!=t&&t.isSupportedBy(this)},i.range=function(n){return t.prototype.range.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(t instanceof O){switch(t){case O.NANO_OF_SECOND:return this._nanos;case O.MICRO_OF_SECOND:return b.intDiv(this._nanos,1e3);case O.MILLI_OF_SECOND:return b.intDiv(this._nanos,fn);case O.INSTANT_SECONDS:return this._seconds}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.epochSecond=function(){return this._seconds},i.nano=function(){return this._nanos},i.withAdjuster=function(t){return v(t,"adjuster"),t.adjustInto(this)},i.withFieldValue=function(t,i){if(v(t,"field"),t instanceof O){switch(t.checkValidValue(i),t){case O.MILLI_OF_SECOND:var e=i*fn;return e!==this._nanos?n._create(this._seconds,e):this;case O.MICRO_OF_SECOND:var r=1e3*i;return r!==this._nanos?n._create(this._seconds,r):this;case O.NANO_OF_SECOND:return i!==this._nanos?n._create(this._seconds,i):this;case O.INSTANT_SECONDS:return i!==this._seconds?n._create(i,this._nanos):this}throw new o("Unsupported field: "+t)}return t.adjustInto(this,i)},i.truncatedTo=function(t){if(v(t,"unit"),t===E.NANOS)return this;var n=t.duration();if(n.seconds()>cn.SECONDS_PER_DAY)throw new r("Unit is too large to be used for truncation");var i=n.toNanos();if(0!==b.intMod(cn.NANOS_PER_DAY,i))throw new r("Unit must divide into a standard day without remainder");var e=b.intMod(this._seconds,cn.SECONDS_PER_DAY)*cn.NANOS_PER_SECOND+this._nanos,s=b.intDiv(e,i)*i;return this.plusNanos(s-e)},i.plusAmount=function(t){return v(t,"amount"),t.addTo(this)},i.plusAmountUnit=function(t,n){if(v(t,"amountToAdd"),v(n,"unit"),d(n,k),n instanceof E){switch(n){case E.NANOS:return this.plusNanos(t);case E.MICROS:return this._plus(b.intDiv(t,1e6),1e3*b.intMod(t,1e6));case E.MILLIS:return this.plusMillis(t);case E.SECONDS:return this.plusSeconds(t);case E.MINUTES:return this.plusSeconds(b.safeMultiply(t,cn.SECONDS_PER_MINUTE));case E.HOURS:return this.plusSeconds(b.safeMultiply(t,cn.SECONDS_PER_HOUR));case E.HALF_DAYS:return this.plusSeconds(b.safeMultiply(t,cn.SECONDS_PER_DAY/2));case E.DAYS:return this.plusSeconds(b.safeMultiply(t,cn.SECONDS_PER_DAY))}throw new o("Unsupported unit: "+n)}return n.addTo(this,t)},i.plusSeconds=function(t){return this._plus(t,0)},i.plusMillis=function(t){return this._plus(b.intDiv(t,1e3),b.intMod(t,1e3)*fn)},i.plusNanos=function(t){return this._plus(0,t)},i._plus=function(t,i){if(0===t&&0===i)return this;var e=this._seconds+t;e+=b.intDiv(i,cn.NANOS_PER_SECOND);var r=this._nanos+i%cn.NANOS_PER_SECOND;return n.ofEpochSecond(e,r)},i.minusAmount=function(t){return v(t,"amount"),t.subtractFrom(this)},i.minusAmountUnit=function(t,n){return this.plusAmountUnit(-1*t,n)},i.minusSeconds=function(t){return this.plusSeconds(-1*t)},i.minusMillis=function(t){return this.plusMillis(-1*t)},i.minusNanos=function(t){return this.plusNanos(-1*t)},i.query=function(t){return v(t,"query"),t===z.precision()?E.NANOS:t===z.localDate()||t===z.localTime()||t===z.chronology()||t===z.zoneId()||t===z.zone()||t===z.offset()?null:t.queryFrom(this)},i.adjustInto=function(t){return v(t,"temporal"),t.with(O.INSTANT_SECONDS,this._seconds).with(O.NANO_OF_SECOND,this._nanos)},i.until=function(t,i){v(t,"endExclusive"),v(i,"unit");var e=n.from(t);if(i instanceof E){switch(i){case E.NANOS:return this._nanosUntil(e);case E.MICROS:return b.intDiv(this._nanosUntil(e),1e3);case E.MILLIS:return b.safeSubtract(e.toEpochMilli(),this.toEpochMilli());case E.SECONDS:return this._secondsUntil(e);case E.MINUTES:return b.intDiv(this._secondsUntil(e),cn.SECONDS_PER_MINUTE);case E.HOURS:return b.intDiv(this._secondsUntil(e),cn.SECONDS_PER_HOUR);case E.HALF_DAYS:return b.intDiv(this._secondsUntil(e),12*cn.SECONDS_PER_HOUR);case E.DAYS:return b.intDiv(this._secondsUntil(e),cn.SECONDS_PER_DAY)}throw new o("Unsupported unit: "+i)}return i.between(this,e)},i._nanosUntil=function(t){var n=b.safeSubtract(t.epochSecond(),this.epochSecond()),i=b.safeMultiply(n,cn.NANOS_PER_SECOND);return b.safeAdd(i,t.nano()-this.nano())},i._secondsUntil=function(t){var n=b.safeSubtract(t.epochSecond(),this.epochSecond()),i=t.nano()-this.nano();return n>0&&i<0?n--:n<0&&i>0&&n++,n},i.atOffset=function(t){return on.ofInstant(this,t)},i.atZone=function(t){return sn.ofInstant(this,t)},i.toEpochMilli=function(){return b.safeMultiply(this._seconds,1e3)+b.intDiv(this._nanos,fn)},i.compareTo=function(t){v(t,"otherInstant"),d(t,n,"otherInstant");var i=b.compareNumbers(this._seconds,t._seconds);return 0!==i?i:this._nanos-t._nanos},i.isAfter=function(t){return this.compareTo(t)>0},i.isBefore=function(t){return this.compareTo(t)<0},i.equals=function(t){return this===t||t instanceof n&&this.epochSecond()===t.epochSecond()&&this.nano()===t.nano()},i.hashCode=function(){return b.hashCode(this._seconds,this._nanos)},i.toString=function(){return Wt.ISO_INSTANT.format(this)},i.toJSON=function(){return this.toString()},n}(V),dn=function(){function t(){}t.systemUTC=function(){return new wn(Q.UTC)},t.systemDefaultZone=function(){return new wn(G.systemDefault())},t.system=function(t){return new wn(t)},t.fixed=function(t,n){return new pn(t,n)},t.offset=function(t,n){return new mn(t,n)};var n=t.prototype;return n.millis=function(){w("Clock.millis")},n.instant=function(){w("Clock.instant")},n.zone=function(){w("Clock.zone")},n.withZone=function(){w("Clock.withZone")},t}(),wn=function(t){function n(n){var i;return v(n,"zone"),(i=t.call(this)||this)._zone=n,i}l(n,t);var i=n.prototype;return i.zone=function(){return this._zone},i.millis=function(){return(new Date).getTime()},i.instant=function(){return vn.ofEpochMilli(this.millis())},i.equals=function(t){return t instanceof n&&this._zone.equals(t._zone)},i.withZone=function(t){return t.equals(this._zone)?this:new n(t)},i.toString=function(){return"SystemClock["+this._zone.toString()+"]"},n}(dn),pn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._instant=n,e._zoneId=i,e}l(n,t);var i=n.prototype;return i.instant=function(){return this._instant},i.millis=function(){return this._instant.toEpochMilli()},i.zone=function(){return this._zoneId},i.toString=function(){return"FixedClock[]"},i.equals=function(t){return t instanceof n&&this._instant.equals(t._instant)&&this._zoneId.equals(t._zoneId)},i.withZone=function(t){return t.equals(this._zoneId)?this:new n(this._instant,t)},n}(dn),mn=function(t){function n(n,i){var e;return(e=t.call(this)||this)._baseClock=n,e._offset=i,e}l(n,t);var i=n.prototype;return i.zone=function(){return this._baseClock.zone()},i.withZone=function(t){return t.equals(this._baseClock.zone())?this:new n(this._baseClock.withZone(t),this._offset)},i.millis=function(){return this._baseClock.millis()+this._offset.toMillis()},i.instant=function(){return this._baseClock.instant().plus(this._offset)},i.equals=function(t){return t instanceof n&&this._baseClock.equals(t._baseClock)&&this._offset.equals(t._offset)},i.toString=function(){return"OffsetClock["+this._baseClock+","+this._offset+"]"},n}(dn),gn=function(){function t(t,n,i){if(v(t,"transition"),v(n,"offsetBefore"),v(i,"offsetAfter"),n.equals(i))throw new a("Offsets must not be equal");if(0!==t.nano())throw new a("Nano-of-second must be zero");this._transition=t instanceof ln?t:ln.ofEpochSecond(t,0,n),this._offsetBefore=n,this._offsetAfter=i}t.of=function(n,i,e){return new t(n,i,e)};var n=t.prototype;return n.instant=function(){return this._transition.toInstant(this._offsetBefore)},n.toEpochSecond=function(){return this._transition.toEpochSecond(this._offsetBefore)},n.dateTimeBefore=function(){return this._transition},n.dateTimeAfter=function(){return this._transition.plusSeconds(this.durationSeconds())},n.offsetBefore=function(){return this._offsetBefore},n.offsetAfter=function(){return this._offsetAfter},n.duration=function(){return x.ofSeconds(this.durationSeconds())},n.durationSeconds=function(){return this._offsetAfter.totalSeconds()-this._offsetBefore.totalSeconds()},n.isGap=function(){return this._offsetAfter.totalSeconds()>this._offsetBefore.totalSeconds()},n.isOverlap=function(){return this._offsetAfter.totalSeconds()>>16},n.toString=function(){return"Transition["+(this.isGap()?"Gap":"Overlap")+" at "+this._transition.toString()+this._offsetBefore.toString()+" to "+this._offsetAfter+"]"},t}(),bn=function(t){function n(){return t.apply(this,arguments)||this}l(n,t);var i=n.prototype;return i.isFixedOffset=function(){return!1},i.offsetOfInstant=function(t){var n=new Date(t.toEpochMilli()).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfEpochMilli=function(t){var n=new Date(t).getTimezoneOffset();return Q.ofTotalMinutes(-1*n)},i.offsetOfLocalDateTime=function(t){var n=1e3*t.toEpochSecond(Q.UTC),i=new Date(n).getTimezoneOffset(),e=new Date(n+6e4*i).getTimezoneOffset();return Q.ofTotalMinutes(-1*e)},i.validOffsets=function(t){return[this.offsetOfLocalDateTime(t)]},i.transition=function(){return null},i.standardOffset=function(t){return this.offsetOfInstant(t)},i.daylightSavings=function(){this._throwNotSupported()},i.isDaylightSavings=function(){this._throwNotSupported()},i.isValidOffset=function(t,n){return this.offsetOfLocalDateTime(t).equals(n)},i.nextTransition=function(){this._throwNotSupported()},i.previousTransition=function(){this._throwNotSupported()},i.transitions=function(){this._throwNotSupported()},i.transitionRules=function(){this._throwNotSupported()},i._throwNotSupported=function(){throw new r("not supported operation")},i.equals=function(t){return this===t||t instanceof n},i.toString=function(){return"SYSTEM"},n}(K),$n=function(t){function n(){var n;return(n=t.call(this)||this)._rules=new bn,n}l(n,t);var i=n.prototype;return i.rules=function(){return this._rules},i.equals=function(t){return this===t},i.id=function(){return"SYSTEM"},n}(G),yn=function(){function t(){}return t.systemDefault=function(){return kn},t.getAvailableZoneIds=function(){return jt.getAvailableZoneIds()},t.of=function(t){if(v(t,"zoneId"),"Z"===t)return Q.UTC;if(1===t.length)throw new r("Invalid zone: "+t);if(W.startsWith(t,"+")||W.startsWith(t,"-"))return Q.of(t);if("UTC"===t||"GMT"===t||"GMT0"===t||"UT"===t)return new Mt(t,Q.UTC.rules());if(W.startsWith(t,"UTC+")||W.startsWith(t,"GMT+")||W.startsWith(t,"UTC-")||W.startsWith(t,"GMT-")){var n=Q.of(t.substring(3));return 0===n.totalSeconds()?new Mt(t.substring(0,3),n.rules()):new Mt(t.substring(0,3)+n.id(),n.rules())}if(W.startsWith(t,"UT+")||W.startsWith(t,"UT-")){var i=Q.of(t.substring(2));return 0===i.totalSeconds()?new Mt("UT",i.rules()):new Mt("UT"+i.id(),i.rules())}return"SYSTEM"===t?G.systemDefault():Mt.ofId(t)},t.ofOffset=function(t,n){if(v(t,"prefix"),v(n,"offset"),0===t.length)return n;if("GMT"===t||"UTC"===t||"UT"===t)return 0===n.totalSeconds()?new Mt(t,n.rules()):new Mt(t+n.id(),n.rules());throw new a("Invalid prefix, must be GMT, UTC or UT: "+t)},t.from=function(t){v(t,"temporal");var n=t.query(z.zone());if(null==n)throw new r("Unable to obtain ZoneId from TemporalAccessor: "+t+", type "+(null!=t.constructor?t.constructor.name:""));return n},t}(),kn=null,xn=!1;xn||(xn=!0,S.MIN_VALUE=-999999,S.MAX_VALUE=999999,x.ZERO=new x(0,0),E.NANOS=new E("Nanos",x.ofNanos(1)),E.MICROS=new E("Micros",x.ofNanos(1e3)),E.MILLIS=new E("Millis",x.ofNanos(1e6)),E.SECONDS=new E("Seconds",x.ofSeconds(1)),E.MINUTES=new E("Minutes",x.ofSeconds(60)),E.HOURS=new E("Hours",x.ofSeconds(3600)),E.HALF_DAYS=new E("HalfDays",x.ofSeconds(43200)),E.DAYS=new E("Days",x.ofSeconds(86400)),E.WEEKS=new E("Weeks",x.ofSeconds(604800)),E.MONTHS=new E("Months",x.ofSeconds(2629746)),E.YEARS=new E("Years",x.ofSeconds(31556952)),E.DECADES=new E("Decades",x.ofSeconds(315569520)),E.CENTURIES=new E("Centuries",x.ofSeconds(3155695200)),E.MILLENNIA=new E("Millennia",x.ofSeconds(31556952e3)),E.ERAS=new E("Eras",x.ofSeconds(31556952*(S.MAX_VALUE+1))),E.FOREVER=new E("Forever",x.ofSeconds(b.MAX_SAFE_INTEGER,999999999)),O.NANO_OF_SECOND=new O("NanoOfSecond",E.NANOS,E.SECONDS,q.of(0,999999999)),O.NANO_OF_DAY=new O("NanoOfDay",E.NANOS,E.DAYS,q.of(0,86399999999999)),O.MICRO_OF_SECOND=new O("MicroOfSecond",E.MICROS,E.SECONDS,q.of(0,999999)),O.MICRO_OF_DAY=new O("MicroOfDay",E.MICROS,E.DAYS,q.of(0,86399999999)),O.MILLI_OF_SECOND=new O("MilliOfSecond",E.MILLIS,E.SECONDS,q.of(0,999)),O.MILLI_OF_DAY=new O("MilliOfDay",E.MILLIS,E.DAYS,q.of(0,86399999)),O.SECOND_OF_MINUTE=new O("SecondOfMinute",E.SECONDS,E.MINUTES,q.of(0,59)),O.SECOND_OF_DAY=new O("SecondOfDay",E.SECONDS,E.DAYS,q.of(0,86399)),O.MINUTE_OF_HOUR=new O("MinuteOfHour",E.MINUTES,E.HOURS,q.of(0,59)),O.MINUTE_OF_DAY=new O("MinuteOfDay",E.MINUTES,E.DAYS,q.of(0,1439)),O.HOUR_OF_AMPM=new O("HourOfAmPm",E.HOURS,E.HALF_DAYS,q.of(0,11)),O.CLOCK_HOUR_OF_AMPM=new O("ClockHourOfAmPm",E.HOURS,E.HALF_DAYS,q.of(1,12)),O.HOUR_OF_DAY=new O("HourOfDay",E.HOURS,E.DAYS,q.of(0,23)),O.CLOCK_HOUR_OF_DAY=new O("ClockHourOfDay",E.HOURS,E.DAYS,q.of(1,24)),O.AMPM_OF_DAY=new O("AmPmOfDay",E.HALF_DAYS,E.DAYS,q.of(0,1)),O.DAY_OF_WEEK=new O("DayOfWeek",E.DAYS,E.WEEKS,q.of(1,7)),O.ALIGNED_DAY_OF_WEEK_IN_MONTH=new O("AlignedDayOfWeekInMonth",E.DAYS,E.WEEKS,q.of(1,7)),O.ALIGNED_DAY_OF_WEEK_IN_YEAR=new O("AlignedDayOfWeekInYear",E.DAYS,E.WEEKS,q.of(1,7)),O.DAY_OF_MONTH=new O("DayOfMonth",E.DAYS,E.MONTHS,q.of(1,28,31),"day"),O.DAY_OF_YEAR=new O("DayOfYear",E.DAYS,E.YEARS,q.of(1,365,366)),O.EPOCH_DAY=new O("EpochDay",E.DAYS,E.FOREVER,q.of(Math.floor(365.25*S.MIN_VALUE),Math.floor(365.25*S.MAX_VALUE))),O.ALIGNED_WEEK_OF_MONTH=new O("AlignedWeekOfMonth",E.WEEKS,E.MONTHS,q.of(1,4,5)),O.ALIGNED_WEEK_OF_YEAR=new O("AlignedWeekOfYear",E.WEEKS,E.YEARS,q.of(1,53)),O.MONTH_OF_YEAR=new O("MonthOfYear",E.MONTHS,E.YEARS,q.of(1,12),"month"),O.PROLEPTIC_MONTH=new O("ProlepticMonth",E.MONTHS,E.FOREVER,q.of(12*S.MIN_VALUE,12*S.MAX_VALUE+11)),O.YEAR_OF_ERA=new O("YearOfEra",E.YEARS,E.FOREVER,q.of(1,S.MAX_VALUE,S.MAX_VALUE+1)),O.YEAR=new O("Year",E.YEARS,E.FOREVER,q.of(S.MIN_VALUE,S.MAX_VALUE),"year"),O.ERA=new O("Era",E.ERAS,E.FOREVER,q.of(0,1)),O.INSTANT_SECONDS=new O("InstantSeconds",E.SECONDS,E.FOREVER,q.of(g,m)),O.OFFSET_SECONDS=new O("OffsetSeconds",E.SECONDS,E.FOREVER,q.of(-64800,64800)),function(){cn.HOURS=[];for(var t=0;t<24;t++)cn.of(t,0,0,0);cn.MIN=cn.HOURS[0],cn.MAX=new cn(23,59,59,999999999),cn.MIDNIGHT=cn.HOURS[0],cn.NOON=cn.HOURS[12],cn.FROM=I("LocalTime.FROM",(function(t){return cn.from(t)}))}(),ct=new ut,ft=new at,vt=new ht,dt=new _t,wt=new lt("WeekBasedYears",x.ofSeconds(31556952)),pt=new lt("QuarterYears",x.ofSeconds(7889238)),rt.DAY_OF_QUARTER=ct,rt.QUARTER_OF_YEAR=ft,rt.WEEK_OF_WEEK_BASED_YEAR=vt,rt.WEEK_BASED_YEAR=dt,rt.WEEK_BASED_YEARS=wt,rt.QUARTER_YEARS=pt,hn.prototype.isoWeekOfWeekyear=function(){return this.get(rt.WEEK_OF_WEEK_BASED_YEAR)},hn.prototype.isoWeekyear=function(){return this.get(rt.WEEK_BASED_YEAR)},z.ZONE_ID=I("ZONE_ID",(function(t){return t.query(z.ZONE_ID)})),z.CHRONO=I("CHRONO",(function(t){return t.query(z.CHRONO)})),z.PRECISION=I("PRECISION",(function(t){return t.query(z.PRECISION)})),z.OFFSET=I("OFFSET",(function(t){return t.isSupported(O.OFFSET_SECONDS)?Q.ofTotalSeconds(t.get(O.OFFSET_SECONDS)):null})),z.ZONE=I("ZONE",(function(t){var n=t.query(z.ZONE_ID);return null!=n?n:t.query(z.OFFSET)})),z.LOCAL_DATE=I("LOCAL_DATE",(function(t){return t.isSupported(O.EPOCH_DAY)?hn.ofEpochDay(t.getLong(O.EPOCH_DAY)):null})),z.LOCAL_TIME=I("LOCAL_TIME",(function(t){return t.isSupported(O.NANO_OF_DAY)?cn.ofNanoOfDay(t.getLong(O.NANO_OF_DAY)):null})),M.MONDAY=new M(0,"MONDAY"),M.TUESDAY=new M(1,"TUESDAY"),M.WEDNESDAY=new M(2,"WEDNESDAY"),M.THURSDAY=new M(3,"THURSDAY"),M.FRIDAY=new M(4,"FRIDAY"),M.SATURDAY=new M(5,"SATURDAY"),M.SUNDAY=new M(6,"SUNDAY"),M.FROM=I("DayOfWeek.FROM",(function(t){return M.from(t)})),D=[M.MONDAY,M.TUESDAY,M.WEDNESDAY,M.THURSDAY,M.FRIDAY,M.SATURDAY,M.SUNDAY],vn.MIN_SECONDS=-31619119219200,vn.MAX_SECONDS=31494816403199,vn.EPOCH=new vn(0,0),vn.MIN=vn.ofEpochSecond(vn.MIN_SECONDS,0),vn.MAX=vn.ofEpochSecond(vn.MAX_SECONDS,999999999),vn.FROM=I("Instant.FROM",(function(t){return vn.from(t)})),hn.MIN=hn.of(S.MIN_VALUE,1,1),hn.MAX=hn.of(S.MAX_VALUE,12,31),hn.EPOCH_0=hn.ofEpochDay(0),hn.FROM=I("LocalDate.FROM",(function(t){return hn.from(t)})),ln.MIN=ln.of(hn.MIN,cn.MIN),ln.MAX=ln.of(hn.MAX,cn.MAX),ln.FROM=I("LocalDateTime.FROM",(function(t){return ln.from(t)})),Xt.MIN_VALUE=S.MIN_VALUE,Xt.MAX_VALUE=S.MAX_VALUE,It=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).toFormatter(),Xt.FROM=I("Year.FROM",(function(t){return Xt.from(t)})),N.JANUARY=new N(1,"JANUARY"),N.FEBRUARY=new N(2,"FEBRUARY"),N.MARCH=new N(3,"MARCH"),N.APRIL=new N(4,"APRIL"),N.MAY=new N(5,"MAY"),N.JUNE=new N(6,"JUNE"),N.JULY=new N(7,"JULY"),N.AUGUST=new N(8,"AUGUST"),N.SEPTEMBER=new N(9,"SEPTEMBER"),N.OCTOBER=new N(10,"OCTOBER"),N.NOVEMBER=new N(11,"NOVEMBER"),N.DECEMBER=new N(12,"DECEMBER"),j=[N.JANUARY,N.FEBRUARY,N.MARCH,N.APRIL,N.MAY,N.JUNE,N.JULY,N.AUGUST,N.SEPTEMBER,N.OCTOBER,N.NOVEMBER,N.DECEMBER],Tt=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.MONTH_OF_YEAR,2).toFormatter(),Kt.FROM=I("YearMonth.FROM",(function(t){return Kt.from(t)})),At=(new Ut).appendLiteral("--").appendValue(O.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(O.DAY_OF_MONTH,2).toFormatter(),Gt.FROM=I("MonthDay.FROM",(function(t){return Gt.from(t)})),P.ofDays(0),Q.MAX_SECONDS=18*cn.SECONDS_PER_HOUR,Q.UTC=Q.ofTotalSeconds(0),Q.MIN=Q.ofTotalSeconds(-Q.MAX_SECONDS),Q.MAX=Q.ofTotalSeconds(Q.MAX_SECONDS),sn.FROM=I("ZonedDateTime.FROM",(function(t){return sn.from(t)})),kn=new $n,G.systemDefault=yn.systemDefault,G.getAvailableZoneIds=yn.getAvailableZoneIds,G.of=yn.of,G.ofOffset=yn.ofOffset,G.from=yn.from,Q.from=yn.from,G.SYSTEM=kn,G.UTC=Q.ofTotalSeconds(0),nn.INSTANCE=new nn("IsoChronology"),Wt.ISO_LOCAL_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.MONTH_OF_YEAR,2).appendLiteral("-").appendValue(O.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_LOCAL_TIME=(new Ut).appendValue(O.HOUR_OF_DAY,2).appendLiteral(":").appendValue(O.MINUTE_OF_HOUR,2).optionalStart().appendLiteral(":").appendValue(O.SECOND_OF_MINUTE,2).optionalStart().appendFraction(O.NANO_OF_SECOND,0,9,!0).toFormatter(U.STRICT),Wt.ISO_LOCAL_DATE_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE).appendLiteral("T").append(Wt.ISO_LOCAL_TIME).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_INSTANT=(new Ut).parseCaseInsensitive().appendInstant().toFormatter(U.STRICT),Wt.ISO_OFFSET_DATE_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_ZONED_DATE_TIME=(new Ut).append(Wt.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral("[").parseCaseSensitive().appendZoneId().appendLiteral("]").toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.BASIC_ISO_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendValue(O.MONTH_OF_YEAR,2).appendValue(O.DAY_OF_MONTH,2).toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_OFFSET_DATE=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_DATE).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_OFFSET_TIME=(new Ut).parseCaseInsensitive().append(Wt.ISO_LOCAL_TIME).appendOffsetId().toFormatter(U.STRICT).withChronology(nn.INSTANCE),Wt.ISO_ORDINAL_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-").appendValue(O.DAY_OF_YEAR).toFormatter(U.STRICT),Wt.ISO_WEEK_DATE=(new Ut).appendValue(O.YEAR,4,10,gt.EXCEEDS_PAD).appendLiteral("-W").appendValue(O.ALIGNED_WEEK_OF_YEAR).appendLiteral("-").appendValue(O.DAY_OF_WEEK).toFormatter(U.STRICT),Wt.PARSED_EXCESS_DAYS=I("PARSED_EXCESS_DAYS",(function(t){return t instanceof tt?t.excessDays:P.ZERO})),Wt.PARSED_LEAP_SECOND=I("PARSED_LEAP_SECOND",(function(t){return t instanceof tt&&t.leapSecond})),Et.BASE_DATE=hn.of(2e3,1,1),Ut.CompositePrinterParser=yt,Ut.PadPrinterParserDecorator=Ot,Ut.SettingsParser=zt,Ut.CharLiteralPrinterParser=Dt,Ut.StringLiteralPrinterParser=Dt,Ut.CharLiteralPrinterParser=$t,Ut.NumberPrinterParser=St,Ut.ReducedPrinterParser=Et,Ut.FractionPrinterParser=kt,Ut.OffsetIdPrinterParser=qt,Ut.ZoneIdPrinterParser=Nt,on.MIN=ln.MIN.atOffset(Q.MAX),on.MAX=ln.MAX.atOffset(Q.MIN),on.FROM=I("OffsetDateTime.FROM",(function(t){return on.from(t)})),en.MIN=en.ofNumbers(0,0,0,0,Q.MAX),en.MAX=en.ofNumbers(23,59,59,999999999,Q.MIN),en.FROM=I("OffsetTime.FROM",(function(t){return en.from(t)})));var Sn=function(){function t(t,n){var i;if(t instanceof hn)n=null==n?G.systemDefault():n,i=t.atStartOfDay(n);else if(t instanceof ln)n=null==n?G.systemDefault():n,i=t.atZone(n);else{if(!(t instanceof sn))throw new a("unsupported instance for convert operation:"+t);i=null==n?t:t.withZoneSameInstant(n)}this.instant=i.toInstant()}var n=t.prototype;return n.toDate=function(){return new Date(this.instant.toEpochMilli())},n.toEpochMilli=function(){return this.instant.toEpochMilli()},t}();function En(t,n){return new Sn(t,n)}var Cn=function(t){function n(n,i){var e;return void 0===i&&(i=G.systemDefault()),(e=t.call(this)||this)._zone=i,n instanceof Date?(e._epochMilli=n.getTime(),c(e)):"function"==typeof n.toDate&&n.toDate()instanceof Date?(e._epochMilli=n.toDate().getTime(),c(e)):(f(!1,"date must be either a javascript date or a moment"),e)}l(n,t);var i=n.prototype;return i.query=function(n){return v(n,"query"),n===z.localDate()?hn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===z.localTime()?cn.ofInstant(vn.ofEpochMilli(this._epochMilli),this._zone):n===z.zone()?this._zone:t.prototype.query.call(this,n)},i.get=function(t){return this.getLong(t)},i.getLong=function(t){if(v(t,"field"),t instanceof O){switch(t){case O.NANO_OF_SECOND:return 1e6*b.floorMod(this._epochMilli,1e3);case O.INSTANT_SECONDS:return b.floorDiv(this._epochMilli,1e3)}throw new o("Unsupported field: "+t)}return t.getFrom(this)},i.isSupported=function(t){return t===O.INSTANT_SECONDS||t===O.NANO_OF_SECOND},n}(A);function qn(t,n){return new Cn(t,n)}var On,zn,An={assert:p,DateTimeBuilder:tt,DateTimeParseContext:nt,DateTimePrintContext:et,MathUtil:b,StringUtil:W,StringBuilder:Yt},Tn={_:An,convert:En,nativeJs:qn,ArithmeticException:u,DateTimeException:r,DateTimeParseException:s,IllegalArgumentException:a,IllegalStateException:h,UnsupportedTemporalTypeException:o,NullPointerException:_,Clock:dn,DayOfWeek:M,Duration:x,Instant:vn,LocalDate:hn,LocalTime:cn,LocalDateTime:ln,OffsetTime:en,OffsetDateTime:on,Month:N,MonthDay:Gt,Period:P,Year:Xt,YearConstants:S,YearMonth:Kt,ZonedDateTime:sn,ZoneOffset:Q,ZoneId:G,ZoneRegion:Mt,ZoneOffsetTransition:gn,ZoneRules:K,ZoneRulesProvider:jt,ChronoLocalDate:Y,ChronoLocalDateTime:_n,ChronoZonedDateTime:rn,IsoChronology:nn,ChronoField:O,ChronoUnit:E,IsoFields:rt,Temporal:V,TemporalAccessor:A,TemporalAdjuster:H,TemporalAdjusters:Jt,TemporalAmount:y,TemporalField:C,TemporalQueries:z,TemporalQuery:T,TemporalUnit:k,ValueRange:q,DateTimeFormatter:Wt,DateTimeFormatterBuilder:Ut,DecimalStyle:mt,ResolverStyle:U,SignStyle:gt,TextStyle:bt},In=(On=Tn,zn=[],function(t){return~zn.indexOf(t)||(t(On),zn.push(t)),On});Tn.use=In},453:function(t,n,i){var e,r,s;r=[n,i(135),i(675),i(755)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V=n.Instant,B=n.Clock,Y=n.OffsetDateTime,W=n.Duration,G=n.LocalDate,K=n.LocalDateTime,X=n.ZoneOffset,J=n.ZoneId,Z=i.$_$.gb,Q=i.$_$.fb,tt=i.$_$.hb,nt=i.$_$.lb,it=i.$_$.t1,et=i.$_$.r1,rt=i.$_$.eb,st=i.$_$.q9,ot=i.$_$.p1,ut=i.$_$.vf,at=i.$_$.w9,ht=i.$_$.f,_t=i.$_$.h2,lt=i.$_$.g2,ct=i.$_$.eg,ft=i.$_$.yf,vt=e.$_$.h,dt=e.$_$.e1,wt=e.$_$.p2,pt=e.$_$.c,mt=i.$_$.m9,gt=i.$_$.a5,bt=i.$_$.sf,$t=i.$_$.r2,yt=i.$_$.nd,kt=i.$_$.u9,xt=i.$_$.t9,St=i.$_$.jb,Et=i.$_$.nf,Ct=i.$_$.cb,qt=i.$_$.bb,Ot=i.$_$.s4,zt=i.$_$.h,At=i.$_$.lf,Tt=i.$_$.g,It=i.$_$.q2,Dt=i.$_$.fg,jt=i.$_$.pf,Mt=i.$_$.q1,Nt=i.$_$.g1;function Rt(){}function Pt(t){if(!(1<=t&&t<=7))throw it(nt("Failed requirement."));return(null==x&&(x=mt([sn(),on(),un(),an(),hn(),_n(),ln()])),x).h1(t-1|0)}function Lt(t){var n=function(t,n){return ot(t,n),Ft.call(n),n}(t,rt(Z(Ft)));return st(n,Lt),n}function Ft(){st(this,Ft)}function Ut(t){var n=function(t,n){return ot(t,n),Ht.call(n),n}(t,rt(Z(Ht)));return st(n,Ut),n}function Ht(){st(this,Ht)}function Vt(t){var n=function(t,n){return lt(t,n),Bt.call(n),n}(t,rt(Z(Bt)));return st(n,Vt),n}function Bt(){st(this,Bt)}function Yt(t){if(!(1<=t&&t<=12))throw it(nt("Failed requirement."));return(null==F&&(F=mt([Sn(),En(),Cn(),qn(),On(),zn(),An(),Tn(),In(),Dn(),jn(),Mn()])),F).h1(t-1|0)}function Wt(){return u}function Gt(){return a}function Kt(){return h}function Xt(){_=this,this.j3k_1=dt("Instant",vt())}function Jt(){l=this,this.k3k_1=dt("LocalDate",vt())}function Zt(){c=this,this.n3k_1=dt("LocalDateTime",vt())}function Qt(){f=this,this.q3k_1=dt("TimeZone",vt())}function tn(){v=this,this.t3k_1=dt("FixedOffsetTimeZone",vt())}function nn(){d=this,this.u3k_1=dt("UtcOffset",vt())}function en(){if(k)return gt;k=!0,w=new rn("MONDAY",0),p=new rn("TUESDAY",1),m=new rn("WEDNESDAY",2),g=new rn("THURSDAY",3),b=new rn("FRIDAY",4),$=new rn("SATURDAY",5),y=new rn("SUNDAY",6)}function rn(t,n){bt.call(this,t,n)}function sn(){return en(),w}function on(){return en(),p}function un(){return en(),m}function an(){return en(),g}function hn(){return en(),b}function _n(){return en(),$}function ln(){return en(),y}function cn(){S=this;var t=V.ofEpochSecond(s.c6(),999999999);this.b3k_1=new vn(t);var n=V.ofEpochSecond(o.c6(),0);this.c3k_1=new vn(n),this.d3k_1=new vn(V.MIN),this.e3k_1=new vn(V.MAX)}function fn(){return null==S&&new cn,S}function vn(t){fn(),this.y3k_1=t}function dn(t){return Gn(t,"DateTimeException")}function wn(t){return Gn(t,"DateTimeParseException")}function pn(){E=this,this.l3k_1=new gn(G.MIN),this.m3k_1=new gn(G.MAX)}function mn(){return null==E&&new pn,E}function gn(t){mn(),this.f3k_1=t}function bn(){C=this,this.o3k_1=new yn(K.MIN),this.p3k_1=new yn(K.MAX)}function $n(){return null==C&&new bn,C}function yn(t){$n(),this.f3l_1=t}function kn(){if(L)return gt;L=!0,q=new xn("JANUARY",0),O=new xn("FEBRUARY",1),z=new xn("MARCH",2),A=new xn("APRIL",3),T=new xn("MAY",4),I=new xn("JUNE",5),D=new xn("JULY",6),j=new xn("AUGUST",7),M=new xn("SEPTEMBER",8),N=new xn("OCTOBER",9),R=new xn("NOVEMBER",10),P=new xn("DECEMBER",11)}function xn(t,n){bt.call(this,t,n)}function Sn(){return kn(),q}function En(){return kn(),O}function Cn(){return kn(),z}function qn(){return kn(),A}function On(){return kn(),T}function zn(){return kn(),I}function An(){return kn(),D}function Tn(){return kn(),j}function In(){return kn(),M}function Dn(){return kn(),N}function jn(){return kn(),R}function Mn(){return kn(),P}function Nn(t,n){var i;if(n instanceof X)i=Fn(new Wn(n));else if(n.rules().isFixedOffset()){var e=n.normalized();i=new Hn(new Wn(e instanceof X?e:Dt()),n)}else i=new Ln(n);return i}function Rn(){U=this,this.r3k_1=Fn(new Wn(X.UTC))}function Pn(){return null==U&&new Rn,U}function Ln(t){Pn(),this.p3l_1=t}function Fn(t){return function(t,n){return Hn.call(n,t,t.q3l_1),n}(t,rt(Z(Hn)))}function Un(){}function Hn(t,n){Ln.call(this,n),this.s3l_1=t}function Vn(t,n){var i;try{i=new Wn(t.p3l_1.rules().offsetOfInstant(n.y3k_1))}catch(t){if(t instanceof Error){var e=t;if(function(t){return Gn(t,"ArithmeticException")}(e))throw Vt(e);throw e}throw t}return i}function Bn(){H=this,this.v3k_1=new Wn(X.UTC)}function Yn(){return null==H&&new Bn,H}function Wn(t){Yn(),this.q3l_1=t}function Gn(t,n){return t.name==n}return tt(Rt,"System",Q),tt(Ft,"DateTimeFormatException",at,ut,ht,(function t(){var n,i=(n=rt(Z(Ft)),et(n),Ft.call(n),n);return st(i,t),i})),tt(Ht,"IllegalTimeZoneException",at,ut,ht,(function t(){var n,i=(n=rt(Z(Ht)),et(n),Ht.call(n),n);return st(i,t),i})),tt(Bt,"DateTimeArithmeticException",at,ct,ht,(function t(){var n,i=(n=rt(Z(Bt)),_t(n),Bt.call(n),n);return st(i,t),i})),tt(Xt,"InstantIso8601Serializer",Q,ht,[wt]),tt(Jt,"LocalDateIso8601Serializer",Q,ht,[wt]),tt(Zt,"LocalDateTimeIso8601Serializer",Q,ht,[wt]),tt(Qt,"TimeZoneSerializer",Q,ht,[wt]),tt(tn,"FixedOffsetTimeZoneSerializer",Q,ht,[wt]),tt(nn,"UtcOffsetSerializer",Q,ht,[wt]),tt(rn,"DayOfWeek",at,bt),tt(cn,"Companion",Q),tt(vn,"Instant",at,ht,[jt],ht,ht,{0:function(){return null==_&&new Xt,_}}),tt(pn,"Companion",Q),tt(gn,"LocalDate",at,ht,[jt],ht,ht,{0:function(){return null==l&&new Jt,l}}),tt(bn,"Companion",Q),tt(yn,"LocalDateTime",at,ht,[jt],ht,ht,{0:function(){return null==c&&new Zt,c}}),tt(xn,"Month",at,bt),tt(Rn,"Companion",Q),tt(Ln,"TimeZone",at,ht,ht,ht,ht,{0:function(){return null==f&&new Qt,f}}),tt(Un,"Companion",Q),tt(Hn,"FixedOffsetTimeZone",at,Ln,ht,ht,ht,{0:function(){return null==v&&new tn,v}}),tt(Bn,"Companion",Q),tt(Wn,"UtcOffset",at,ht,ht,ht,ht,{0:function(){return null==d&&new nn,d}}),Z(Rt).a3k=function(){return fn().a3k()},Z(Xt).g34=function(){return this.j3k_1},Z(Xt).h34=function(t){return fn().z1t(t.d37())},Z(Jt).g34=function(){return this.k3k_1},Z(Jt).h34=function(t){return mn().z1t(t.d37())},Z(Zt).g34=function(){return this.n3k_1},Z(Zt).h34=function(t){return $n().z1t(t.d37())},Z(Qt).g34=function(){return this.q3k_1},Z(Qt).h34=function(t){return Pn().s3k(t.d37())},Z(tn).g34=function(){return this.t3k_1},Z(tn).h34=function(t){var n=Pn().s3k(t.d37());if(n instanceof Hn)return n;throw pt("Timezone identifier '"+n+"' does not correspond to a fixed-offset timezone")},Z(nn).g34=function(){return this.u3k_1},Z(nn).h34=function(t){return Yn().z1t(t.d37())},Z(cn).a3k=function(){return new vn(B.systemUTC().instant())},Z(cn).w3k=function(t){var n;try{var i=Gt(),e=t.x9(St(i)),r=Gt(),s=t.fb(St(r)),o=Wt(),u=s.y9(St(o));n=this.x3k(e,u)}catch(i){if(!(i instanceof Error))throw i;var a=i;if(!dn(a))throw a;n=t.z9(new ft(0,0))>0?this.e3k_1:this.d3k_1}return n},Z(cn).z1t=function(t){var n;try{n=new vn(Y.parse(function(t,n){var i,e=yt(n,$t(84),ht,!0);if(-1===e)return n;t:{var r=kt(n)-1|0;if(0<=r)do{var s=r;r=r+-1|0;var o=xt(n,s);if(o===$t(43)||o===$t(45)){i=s;break t}}while(0<=r);i=-1}var u=i;return u=0)throw Nt("Addition overflows a long: "+t.toString()+" + "+n.toString());return i}(t,r),o=St(Kt()),u=n.fb(o),a=u.db(o.nb(u.pb(o).nb(u.ob(u.ib())).lb(63))).ia();i=new vn(V.ofEpochSecond(s.c6(),a))}catch(n){if(!(n instanceof Error))throw n;var h=n;if(!(dn(h)||h instanceof Et))throw h;i=t.z9(new ft(0,0))>0?this.e3k_1:this.d3k_1}return i},Z(vn).z3k=function(){return Ct(this.y3k_1.epochSecond())},Z(vn).a3l=function(){return qt(this.y3k_1.nano())},Z(vn).b3l=function(){var t=this.z3k(),n=Gt(),i=t.y9(St(n)),e=this.a3l()/Wt()|0;return i.db(St(e))},Z(vn).c3l=function(t){var n=W.between(t.y3k_1,this.y3k_1);Ot();var i=n.seconds(),e=At(i,zt());Ot();var r=n.nano(),s=At(r,Tt());return It(e,s)},Z(vn).d3l=function(t){return this.y3k_1.compareTo(t.y3k_1)},Z(vn).d=function(t){return this.d3l(t instanceof vn?t:Dt())},Z(vn).equals=function(t){return this===t||t instanceof vn&&(this.y3k_1===t.y3k_1||this.y3k_1.equals(t.y3k_1))},Z(vn).hashCode=function(){return this.y3k_1.hashCode()},Z(vn).toString=function(){return this.y3k_1.toString()},Z(pn).z1t=function(t){var n;try{n=new gn(G.parse(t))}catch(t){if(t instanceof Error){var i=t;if(wn(i))throw Lt(i);throw i}throw t}return n},Z(gn).g3k=function(){return this.f3k_1.year()},Z(gn).h3k=function(){return this.f3k_1.monthValue()},Z(gn).i3k=function(){return this.f3k_1.dayOfMonth()},Z(gn).equals=function(t){return this===t||t instanceof gn&&(this.f3k_1===t.f3k_1||this.f3k_1.equals(t.f3k_1))},Z(gn).hashCode=function(){return this.f3k_1.hashCode()},Z(gn).toString=function(){return this.f3k_1.toString()},Z(gn).e3l=function(t){return this.f3k_1.compareTo(t.f3k_1)},Z(gn).d=function(t){return this.e3l(t instanceof gn?t:Dt())},Z(bn).z1t=function(t){var n;try{n=new yn(K.parse(t))}catch(t){if(t instanceof Error){var i=t;if(wn(i))throw Lt(i);throw i}throw t}return n},Z(yn).g3k=function(){return this.f3l_1.year()},Z(yn).h3k=function(){return this.f3l_1.monthValue()},Z(yn).g3l=function(){return Yt(this.f3l_1.month().value())},Z(yn).i3k=function(){return this.f3l_1.dayOfMonth()},Z(yn).h3l=function(){return Pt(this.f3l_1.dayOfWeek().value())},Z(yn).i3l=function(){return this.f3l_1.dayOfYear()},Z(yn).j3l=function(){return this.f3l_1.hour()},Z(yn).k3l=function(){return this.f3l_1.minute()},Z(yn).l3l=function(){return this.f3l_1.second()},Z(yn).m3l=function(){return qt(this.f3l_1.nano())},Z(yn).equals=function(t){return this===t||t instanceof yn&&(this.f3l_1===t.f3l_1||this.f3l_1.equals(t.f3l_1))},Z(yn).hashCode=function(){return this.f3l_1.hashCode()},Z(yn).toString=function(){return this.f3l_1.toString()},Z(yn).n3l=function(t){return this.f3l_1.compareTo(t.f3l_1)},Z(yn).d=function(t){return this.n3l(t instanceof yn?t:Dt())},Z(Rn).o3l=function(){return Nn(0,J.systemDefault())},Z(Rn).s3k=function(t){var n;try{n=Nn(0,J.of(t))}catch(t){if(t instanceof Error){var i=t;if(dn(i))throw Ut(i);throw i}throw t}return n},Z(Ln).equals=function(t){return this===t||t instanceof Ln&&(this.p3l_1===t.p3l_1||this.p3l_1.equals(t.p3l_1))},Z(Ln).hashCode=function(){return this.p3l_1.hashCode()},Z(Ln).toString=function(){return this.p3l_1.toString()},Z(Bn).z1t=function(t){var n;try{n=new Wn(X.of(t))}catch(t){if(t instanceof Error){var i=t;if(dn(i))throw Lt(i);throw i}throw t}return n},Z(Wn).t3l=function(){return this.q3l_1.totalSeconds()},Z(Wn).hashCode=function(){return this.q3l_1.hashCode()},Z(Wn).equals=function(t){return t instanceof Wn&&(this.q3l_1===t.q3l_1||this.q3l_1.equals(t.q3l_1))},Z(Wn).toString=function(){return this.q3l_1.toString()},r=new Rt,s=new ft(-931914497,-750),o=new ft(1151527680,720),u=1e6,a=1e3,h=1e9,new Un,t.$_$=t.$_$||{},t.$_$.a=r,t.$_$.b=fn,t.$_$.c=Pn,t.$_$.d=vn,t.$_$.e=yn,t.$_$.f=gn,t.$_$.g=function(t,n,i,e,r){return e=e===ht?0:e,r=r===ht?0:r,function(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){var a;s=s===ht?0:s,o=o===ht?0:o;try{a=K.of(t,n,i,e,r,s,o)}catch(t){if(t instanceof Error){var h=t;if(dn(h))throw Mt(h);throw h}throw t}return yn.call(u,a),u}(t,n,i,e,r,s,o,rt(Z(yn)))}(t.g3k(),t.h3k(),t.i3k(),n,i,e,r)},t.$_$.h=function(t){return t.v9_1+1|0},t.$_$.i=function(t){return t.v9_1+1|0},t.$_$.j=Vn,t.$_$.k=function(t,n){return Vn(n,t)},t.$_$.l=function(t,n){return new vn(t.f3l_1.atZone(n.p3l_1).toInstant())},t.$_$.m=function(t,n){var i;try{i=new yn(K.ofInstant(t.y3k_1,n.p3l_1))}catch(t){if(t instanceof Error){var e=t;if(dn(e))throw Vt(e);throw e}throw t}return i},t})?e.apply(n,r):e)||(t.exports=s)},960:function(t,n,i){var e,r,s;r=[n,i(426),i(675),i(453),i(585),i(485)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,o){"use strict";var u,a=n.$_$.c,h=e.$_$.fg,_=n.$_$.d,l=e.$_$.gb,c=e.$_$.fb,f=e.$_$.hb,v=e.$_$.w9,d=r.$_$.a,w=s.$_$.s,p=s.$_$.o,m=e.$_$.a5,g=s.$_$.p1,b=s.$_$.n1,$=s.$_$.h1,y=s.$_$.r,k=s.$_$.a,x=s.$_$.u,S=s.$_$.y,E=s.$_$.i1,C=s.$_$.x,q=s.$_$.p,O=s.$_$.z,z=s.$_$.o1,A=s.$_$.j1,T=s.$_$.l1,I=s.$_$.k1,D=s.$_$.q,j=e.$_$.o7,M=s.$_$.c1,N=s.$_$.v1,R=s.$_$.d1,P=s.$_$.w1,L=s.$_$.u1,F=s.$_$.e1,U=s.$_$.m1,H=s.$_$.v,V=s.$_$.b1,B=s.$_$.b,Y=s.$_$.q1,W=s.$_$.f1,G=s.$_$.w,K=e.$_$.k9,X=o.$_$.x,J=e.$_$.qa,Z=s.$_$.s1,Q=e.$_$.n7,tt=e.$_$.f,nt=e.$_$.w8,it=s.$_$.y1,et=o.$_$.j1,rt=s.$_$.x1,st=o.$_$.l1,ot=s.$_$.t1,ut=s.$_$.g1,at=e.$_$.jh,ht=e.$_$.q7,_t=s.$_$.n,lt=s.$_$.m,ct=s.$_$.t,ft=s.$_$.r1,vt=s.$_$.l,dt=e.$_$.x6,wt=e.$_$.vg,pt=s.$_$.a1,mt=s.$_$.d,gt=s.$_$.c,bt=s.$_$.j,$t=s.$_$.i,yt=s.$_$.h,kt=s.$_$.e,xt=s.$_$.f,St=s.$_$.g,Et=s.$_$.k;function Ct(){u=this,this.y9o_1=new a;var t=i(918),n=null!=t&&"string"==typeof t?t:h();this.z9o_1=_("aircraft_fighter.png",n);var e=i(520),r=null!=e&&"string"==typeof e?e:h();this.a9p_1=_("worldwind_logo.png",r);var s=i(513),o=null!=s&&"string"==typeof s?s:h();this.b9p_1=_("aircraft_fixwing.png",o);var l=i(105),c=null!=l&&"string"==typeof l?l:h();this.c9p_1=_("ehipcc.png",c);var f=i(36),v=null!=f&&"string"==typeof f?f:h();this.d9p_1=_("pattern_sample_houndstooth.png",v);var d=i(79),w=null!=d&&"string"==typeof d?d:h();this.e9p_1=_("airport_terminal.png",w)}function qt(){return null==u&&new Ct,u}function Ot(){this.f9p_1=null}function zt(t){Ot.call(this),this.l9p_1=t,this.m9p_1=null,this.n9p_1=null}function At(t){Ot.call(this),this.p9p_1=t}function Tt(t){Ot.call(this),this.r9p_1=t,this.s9p_1=new y}function It(t){Ot.call(this),this.u9p_1=t;var n=new x("Ellipses"),i=new S(g.g5x(45,-120,0),5e5,3e5);i.v6s(E()),i.w6s(!0),n.k6j(i);var e=new S(g.g5x(45,-100,0),5e5,3e5),r=e.b2a();r.x8i(new C(1,1,1,.5)),r.m6v_1=3,e.v6s(E()),e.w6s(!0),n.k6j(e);var s=new S(g.g5x(35,-120,0),5e5,3e5);s.v6s(E()),s.w6s(!0);var o=b().d5d(45);s.k8a(o),n.k6j(s);var u=new S(g.g5x(35,-100,0),4e5,4e5);u.v6s(E()),u.w6s(!0),n.k6j(u),n.k6j(new S(g.g5x(25,-120,2e5),5e5,3e5));var a=new S(g.g5x(25,-100,2e5),5e5,3e5),h=a.b2a();h.x8i(new C(1,1,1,.5)),h.i6v_1=!0,a.a88(!0),n.k6j(a),this.v9p_1=n}function Dt(t){Ot.call(this),this.x9p_1=t,this.y9p_1=new q}function jt(t){Ot.call(this),this.a9q_1=t;var n=new x("Labels"),i=new O(g.g5x(38.8977,-77.0365,0),"The White House");i.v6s(E()),n.k6j(i);var e=new O(g.g5x(38.881389,-77.036944,0),"Thomas Jefferson Memorial");e.v6s(E());var r=e.e6t_1;r.c6v(new C(0,0,0,1)),r.d6v(new C(1,1,1,1)),r.u6u_1=5,n.k6j(e);var s=new O(g.g5x(38.8893,-77.050111,0),"Lincoln Memorial");s.v6s(E()),s.e6t_1.r71(z.y5w()),n.k6j(s);var o=new O(g.g5x(38.889803,-77.009114,0),"United States Capitol");o.v6s(E()),o.e6t_1.r71(z.w5w()),n.k6j(o);var u=new O(g.g5x(38.907192,-77.036871,0),"Washington");u.v6s(E()),u.e6t_1.e6v(T("arial",A(),28)),n.k6j(u);var a=new O(g.g5x(38.89,-77.023611,0),"National Mall");a.v6s(E()),a.i6t_1=I(),n.k6j(a),this.b9q_1=n}function Mt(t){Ot.call(this),this.d9q_1=t}function Nt(t){Ot.call(this),this.f9q_1=t,this.g9q_1=new D}function Rt(t){Ot.call(this),this.i9q_1=t;var n=new x("Paths");n.k6j(new M(j([g.g5x(50,-180,1e5),g.g5x(30,-100,1e6),g.g5x(50,-40,1e5)])));var i=new M(j([g.g5x(40,-180,0),g.g5x(20,-100,0),g.g5x(40,-40,0)]));i.v6s(E()),i.w6s(!0),n.k6j(i);var e=new M(j([g.g5x(30,-180,1e5),g.g5x(10,-100,1e6),g.g5x(30,-40,1e5)]));e.a88(!0),n.k6j(e);var r=new M(j([g.g5x(20,-180,1e5),g.g5x(0,-100,1e6),g.g5x(20,-40,1e5)])),s=r.b2a();s.i6v_1=!0,s.x8i(new C(1,1,1,.5)),s.m6v_1=3,r.a88(!0),n.k6j(r),this.j9q_1=n}function Pt(t){Ot.call(this),this.l9q_1=t;var n=new x("Placemarks"),i=N().a8e(g.g5x(34.281,-119.293,0),new C(0,1,1,1),20);i.v6s(E()),n.k6j(i);var e=new R(g.g5x(34.26,-119.2,5e3)),r=e,s=P.u8f(L().m6j(qt().b9p_1));s.c8e_1=1.5,r.r8e_1=s,n.k6j(e);var o=new R(g.g5x(34.2,-119.208,0));o.v6s(E());var u=o,a=P.t8f(L().m6j(qt().e9p_1));a.v8f(z.x5w()),a.c8e_1=2,u.r8e_1=a,o.n82("Oxnard Airport"),n.k6j(o);var h=new R(g.g5x(34.3,-119.25,0));h.v6s(E());var _=h,l=P.t8f(L().m6j(qt().c9p_1));l.v8f(z.x5w()),_.r8e_1=l,n.k6j(h),this.m9q_1=n}function Lt(t){Ot.call(this),this.o9q_1=t;var n=new x("Polygons");n.k6j(new F(j([g.g5x(40,-135,5e5),g.g5x(45,-140,7e5),g.g5x(50,-130,9e5),g.g5x(45,-120,7e5),g.g5x(40,-125,5e5)])));var i=new F(j([g.g5x(40,-105,0),g.g5x(45,-110,0),g.g5x(50,-100,0),g.g5x(45,-90,0),g.g5x(40,-95,0)]));i.v6s(E()),i.w6s(!0),n.k6j(i);var e=new F(j([g.g5x(20,-135,5e5),g.g5x(25,-140,7e5),g.g5x(30,-130,9e5),g.g5x(25,-120,7e5),g.g5x(20,-125,5e5)]));e.a88(!0),n.k6j(e);var r=new F(j([g.g5x(20,-105,5e5),g.g5x(25,-110,7e5),g.g5x(30,-100,9e5),g.g5x(25,-90,7e5),g.g5x(20,-95,5e5)])),s=r.b2a();s.i6v_1=!0,s.x8i(new C(1,1,1,.5)),s.m6v_1=3,r.a88(!0),n.k6j(r);var o=new F;o.m8i(j([g.g5x(0,-135,5e5),g.g5x(5,-140,7e5),g.g5x(10,-130,9e5),g.g5x(5,-120,7e5),g.g5x(0,-125,5e5)])),o.m8i(j([g.g5x(2.5,-130,6e5),g.g5x(5,-135,7e5),g.g5x(7.5,-130,8e5),g.g5x(5,-125,7e5)])),n.k6j(o);var u=new F,a=u.b2a();a.i6v_1=!0,a.x8i(new C(1,1,1,.5)),a.m6v_1=3,u.m8i(j([g.g5x(0,-105,5e5),g.g5x(5,-110,7e5),g.g5x(10,-100,9e5),g.g5x(5,-90,7e5),g.g5x(0,-95,5e5)])),u.m8i(j([g.g5x(2.5,-100,6e5),g.g5x(5,-105,7e5),g.g5x(7.5,-100,8e5),g.g5x(5,-95,7e5)])),u.a88(!0),n.k6j(u),this.p9q_1=n}function Ft(t){Ot.call(this),this.r9q_1=t;var n=new x("Dash and fill"),i=U();i.m6v_1=4;var e=i,r=new M(j([g.g5x(60,-100,1e5),g.g5x(30,-120,1e5),g.g5x(0,-100,1e5)]));r.b2a().y8i(e).o6v_1=L().v6v(2,-3856),n.k6j(r);var s=new M(j([g.g5x(60,-90,5e4),g.g5x(30,-110,5e4),g.g5x(0,-90,5e4)]));s.b2a().y8i(e).o6v_1=L().v6v(4,-3856),n.k6j(s);var o=new M(j([g.g5x(60,-80,0),g.g5x(30,-100,0),g.g5x(0,-80,0)]));o.b2a().y8i(e).o6v_1=L().v6v(8,-8202),o.v6s(E()),o.w6s(!0),n.k6j(o);var u=new S(g.g5x(40,-70,1e5),15e5,8e5);u.b2a().y8i(e).n6v_1=L().m6j(qt().d9p_1),n.k6j(u);var a=new F(j([g.g5x(25,-85,0),g.g5x(10,-80,0),g.g5x(10,-60,0),g.g5x(25,-55,0)])),h=a.b2a().y8i(e);h.n6v_1=L().m6j(qt().d9p_1),h.o6v_1=L().v6v(8,-8202),a.v6s(E()),a.w6s(!0),n.k6j(a),this.s9q_1=n}function Ut(t){Ot.call(this),this.u9q_1=t,this.v9q_1=new H}function Ht(t){Ot.call(this),this.x9q_1=t;var n=new x("Sightline"),i=g.g5x(46.23,-122.19,2500),e=new V(i,1e4);e.b2a().x8i(new C(0,1,0,.5)),e.s8b_1.x8i(new C(.1,.1,.1,.8)),n.k6j(e);var r=new R(i),s=r.r8e_1;s.b8e_1=L().m6j(qt().b9p_1),s.v8f(z.x5w()),s.c8e_1=2,s.f8e_1=!0,n.k6j(r),this.y9q_1=n}function Vt(t){Ot.call(this),this.a9r_1=t;var n=new x("Surface image");n.k6j(new W(Y.k5x(37.46,15.5,.5,.6),L().m6j(qt().a9p_1))),n.k6j(new W(Y.k5x(37.46543388598137,14.60128369746704,.45360804083528,.75704283995502),L().m7e("https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg"))),this.b9r_1=n}function Bt(t){Ot.call(this),this.d9r_1=t,this.e9r_1=new G("https://elevation.nationalmap.gov/arcgis/services/3DEPElevation/ImageServer/WCSServer","DEP3Elevation","geotiff",Y.k5x(25,-125,25,60),b().n5t(.3333333333333333))}function Yt(t,n){this.n9r_1=t,K.call(this,n)}function Wt(t,n){Ot.call(this),this.q9r_1=t,this.r9r_1=n,this.s9r_1=null,this.t9r_1=null}function Gt(t,n){this.c9s_1=t,K.call(this,n)}function Kt(t,n){Ot.call(this),this.f9s_1=t,this.g9s_1=n,this.h9s_1=null,this.i9s_1=null}function Xt(){window.onload=Jt}function Jt(t){var n,i,e,r,s=document.getElementById("WorldWindow"),o=new ut(s instanceof HTMLCanvasElement?s:h()),u=document.getElementById("Tutorials"),a=u instanceof HTMLSelectElement?u:h(),_=document.getElementById("Projections"),l=_ instanceof HTMLSelectElement?_:h(),c=document.getElementById("Actions"),f=c instanceof HTMLDivElement?c:h(),v=ht([at("Basic globe",new zt(o.t8x())),at("Set camera view",new At(o.t8x())),at('Set "look at" view',new Mt(o.t8x())),at("Placemarks",new Pt(o.t8x())),at("Paths",new Rt(o.t8x())),at("Polygons",new Lt(o.t8x())),at("Ellipses",new It(o.t8x())),at("Dash and fill",new Ft(o.t8x())),at("Labels",new jt(o.t8x())),at("Sight line",new Ht(o.t8x())),at("Surface image",new Vt(o.t8x())),at("Show tessellation",new Ut(o.t8x())),at("MGRS Graticule",new Nt(o.t8x())),at("Gauss-Kruger Graticule",new Dt(o.t8x())),at("WMS Layer",new Wt(o.t8x(),o.s91())),at("WMTS Layer",new Kt(o.t8x(),o.s91())),at("WCS Elevation",new Bt(o.t8x())),at("Elevation Heatmap",new Tt(o.t8x()))]),d=ht([at("WGS84 Projection",new _t),at("Mercator Projection",new lt)]),g={_v:null},b=o.t8x().c53_1;b.n6k(new ct),b.n6k(ft().l7f("https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&hl={lang}","image/jpeg",tt,"Google Satellite")),b.n6k(new w),b.n6k(new p),o.t8x().y52_1.b55_1.t69(new vt),o.t91().j9e_1=new nn;for(var $=v.b2().v();$.w();){var y=$.y(),k=document.createElement("option"),x=k instanceof HTMLOptionElement?k:h();x.value=y,x.innerHTML=y,a.append(x)}for(var S=d.b2().v();S.w();){var E=S.y(),C=document.createElement("option"),q=C instanceof HTMLOptionElement?C:h();q.value=E,q.innerHTML=E,l.append(q)}return a.onchange=(n=g,i=v,e=f,r=o,function(t){var s=t.target;return Qt(n,i,e,r,(s instanceof HTMLSelectElement?s:h()).value),m}),l.onchange=function(t,n){return function(i){var e=i.target;return tn(t,n,(e instanceof HTMLSelectElement?e:h()).value),m}}(o,d),Qt(g,v,f,o,dt(v.b2())),tn(o,d,dt(d.b2())),m}function Zt(t,n,i,e){var r,s,o,u=document.createElement("button"),a=u instanceof HTMLButtonElement?u:h();a.innerHTML=e,t.append(a),a.onclick=(r=e,s=n,o=i,function(t){return function(t,n,i){var e=t._v;if(null==e);else{var r=n.o2(e);null!=r&&r.h9p(i)}}(s,o,r),m})}function Qt(t,n,i,e,r){var s=t._v;if(null==s);else{var o=n.o2(s);null!=o&&o.j9p()}t._v=r;var u=n.o2(r);if(null==u);else{u.i9p(),i.innerHTML="";var a=u.g9p();if(null==a);else for(var h=a.v();h.w();)Zt(i,t,n,h.y());var _=u.g9p();i.hidden=!(!1===(null==_?null:_.d1()))}e.w52()}function tn(t,n,i){t.t8x().y52_1.a55_1=wt(n.o2(i)),t.w52()}function nn(){}return f(Ct,"images",c),f(Ot,"AbstractTutorial",v),f(zt,"BasicTutorial",v,Ot),f(At,"CameraViewTutorial",v,Ot),f(Tt,"ElevationHeatmapTutorial",v,Ot),f(It,"EllipsesTutorial",v,Ot),f(Dt,"GKGraticuleTutorial",v,Ot),f(jt,"LabelsTutorial",v,Ot),f(Mt,"LookAtViewTutorial",v,Ot),f(Nt,"MGRSGraticuleTutorial",v,Ot),f(Rt,"PathsTutorial",v,Ot),f(Pt,"PlacemarksTutorial",v,Ot),f(Lt,"PolygonsTutorial",v,Ot),f(Ft,"ShapesDashAndFillTutorial",v,Ot),f(Ut,"ShowTessellationTutorial",v,Ot),f(Ht,"SightlineTutorial",v,Ot),f(Vt,"SurfaceImageTutorial",v,Ot),f(Bt,"WcsElevationTutorial",v,Ot),f(Yt,"WmsLayerTutorial$start$slambda",v,K,tt,tt,tt,tt,[1]),f(Wt,"WmsLayerTutorial",v,Ot),f(Gt,"WmtsLayerTutorial$start$slambda",v,K,tt,tt,tt,tt,[1]),f(Kt,"WmtsLayerTutorial",v,Ot),f(nn,tt,v,tt,[Et]),l(Ot).g9p=function(){return this.f9p_1},l(Ot).h9p=function(t){},l(Ot).i9p=function(){},l(Ot).j9p=function(){},l(zt).i9p=function(){l(Ot).i9p.call(this);var t=this.l9p_1.c53_1,n=d.a3k(),i=t.l6k(t.m6k("StarField")),e=i instanceof w?i:h();e.j7g_1=n,this.m9p_1=e;var r=t.l6k(t.m6k("Atmosphere")),s=r instanceof p?r:h();s.j6n_1=n,this.n9p_1=s},l(zt).j9p=function(){l(Ot).j9p.call(this);var t=this.m9p_1;null!=t&&(t.j7g_1=null);var n=this.n9p_1;null!=n&&(n.j6n_1=null)},l(At).i9p=function(){var t,n,i,e,r,s,o,u,a;l(Ot).i9p.call(this),t=this,n=g.g5x(34.2,-119.2,3e3),i=g.g5x(34.1192744,-119.119585,4),e=n.s5v(i),r=n.t5v(i)*t.p9p_1.y52_1.f69(n.b54_1,n.c54_1),s=b(),o=r/n.f54_1,u=Math.atan(o),a=s.i59(u),t.p9p_1.d53_1.v5u(n.b54_1,n.c54_1,n.f54_1,$(),e,a,b().j58_1)},l(Tt).i9p=function(){l(Ot).i9p.call(this),this.r9p_1.c53_1.n6k(this.s9p_1);var t=g.g5x(50.4501,30.5234,0),n=$(),i=b().j58_1,e=b().d5d(0);this.r9p_1.a58(new k(t,n,1e4,i,e,b().j58_1))},l(Tt).j9p=function(){l(Ot).j9p.call(this),this.r9p_1.c53_1.o6k(this.s9p_1)},l(It).i9p=function(){l(Ot).i9p.call(this),this.u9p_1.c53_1.n6k(this.v9p_1);var t=this.u9p_1.d53_1,n=b().d5d(30),i=b().d5d(-110);t.v5u(n,i,1.1*this.u9p_1.u53(),$(),b().j58_1,b().j58_1,b().j58_1)},l(It).j9p=function(){l(Ot).j9p.call(this),this.u9p_1.c53_1.o6k(this.v9p_1)},l(Dt).i9p=function(){l(Ot).i9p.call(this),this.x9p_1.c53_1.n6k(this.y9p_1)},l(Dt).j9p=function(){l(Ot).j9p.call(this),this.x9p_1.c53_1.o6k(this.y9p_1)},l(jt).i9p=function(){l(Ot).i9p.call(this),this.a9q_1.c53_1.n6k(this.b9q_1);var t=this.a9q_1.d53_1,n=b().d5d(38.89),i=b().d5d(-77.023611);t.v5u(n,i,1e4,$(),b().j58_1,b().j58_1,b().j58_1)},l(jt).j9p=function(){l(Ot).j9p.call(this),this.a9q_1.c53_1.o6k(this.b9q_1)},l(Mt).i9p=function(){var t,n,i,e,r,s,o,u,a,h,_,c;l(Ot).i9p.call(this),t=this,n=g.g5x(34.0158333,-118.4513056,2500),i=g.g5x(33.9424368,-118.4081222,38.7),e=n.s5v(i),r=n.t5v(i)*t.d9q_1.y52_1.f69(n.b54_1,n.c54_1),s=n.f54_1-i.f54_1,o=s*s+r*r,u=Math.sqrt(o),a=b(),h=r/n.f54_1,_=Math.atan(h),c=a.i59(_),t.d9q_1.a58(new k(i,$(),u,e,c,b().j58_1))},l(Nt).i9p=function(){l(Ot).i9p.call(this),this.f9q_1.c53_1.n6k(this.g9q_1)},l(Nt).j9p=function(){l(Ot).j9p.call(this),this.f9q_1.c53_1.o6k(this.g9q_1)},l(Rt).i9p=function(){l(Ot).i9p.call(this),this.i9q_1.c53_1.n6k(this.j9q_1);var t=this.i9q_1.d53_1,n=b().d5d(30),i=b().d5d(-100);t.v5u(n,i,1.1*this.i9q_1.u53(),$(),b().j58_1,b().j58_1,b().j58_1)},l(Rt).j9p=function(){l(Ot).j9p.call(this),this.i9q_1.c53_1.o6k(this.j9q_1)},l(Pt).i9p=function(){l(Ot).i9p.call(this),this.l9q_1.c53_1.n6k(this.m9q_1);var t=g.g5x(34.2,-119.208,0),n=$(),i=b().j58_1,e=b().d5d(80);this.l9q_1.a58(new k(t,n,1e4,i,e,b().j58_1))},l(Pt).j9p=function(){l(Ot).j9p.call(this),this.l9q_1.c53_1.o6k(this.m9q_1)},l(Lt).i9p=function(){l(Ot).i9p.call(this),this.o9q_1.c53_1.n6k(this.p9q_1);var t=this.o9q_1.d53_1,n=b().d5d(30),i=b().d5d(-115);t.v5u(n,i,1.1*this.o9q_1.u53(),$(),b().j58_1,b().j58_1,b().j58_1)},l(Lt).j9p=function(){l(Ot).j9p.call(this),this.o9q_1.c53_1.o6k(this.p9q_1)},l(Ft).i9p=function(){l(Ot).i9p.call(this),this.r9q_1.c53_1.n6k(this.s9q_1);var t=this.r9q_1.d53_1,n=b().d5d(30),i=b().d5d(-85);t.v5u(n,i,1.1*this.r9q_1.u53(),$(),b().j58_1,b().j58_1,b().j58_1)},l(Ft).j9p=function(){l(Ot).j9p.call(this),this.r9q_1.c53_1.o6k(this.s9q_1)},l(Ut).i9p=function(){l(Ot).i9p.call(this),this.u9q_1.c53_1.n6k(this.v9q_1)},l(Ut).j9p=function(){l(Ot).j9p.call(this),this.u9q_1.c53_1.o6k(this.v9q_1)},l(Ht).i9p=function(){l(Ot).i9p.call(this),this.x9q_1.c53_1.n6k(this.y9q_1);var t=b().d5d(46.23),n=b().d5d(-122.19),i=new B(t,n,500),e=$(),r=b().d5d(45),s=b().d5d(70),o=b().d5d(0);this.x9q_1.a58(new k(i,e,15e3,r,s,o))},l(Ht).j9p=function(){l(Ot).j9p.call(this),this.x9q_1.c53_1.o6k(this.y9q_1)},l(Vt).i9p=function(){l(Ot).i9p.call(this),this.a9r_1.c53_1.n6k(this.b9r_1);var t=this.a9r_1.d53_1,n=b().d5d(37.46543388598137),i=b().d5d(14.97980511744455);t.v5u(n,i,4e5,$(),b().j58_1,b().j58_1,b().j58_1)},l(Vt).j9p=function(){l(Ot).j9p.call(this),this.a9r_1.c53_1.o6k(this.b9r_1)},l(Bt).i9p=function(){l(Ot).i9p.call(this);for(var t=this.d9r_1.y52_1.b55_1,n=t.v();n.w();)n.y().d6a(!1);t.t69(this.e9r_1),function(t){var n=g.g5x(46.852886,-121.760374,4392),i=g.g5x(46.912,-121.527,2e3),e=i.s5v(n),r=n.t5v(i)*t.d9r_1.y52_1.f69(n.b54_1,n.c54_1),s=b(),o=r/i.f54_1,u=Math.atan(o),a=s.i59(u);t.d9r_1.d53_1.v5u(i.b54_1,i.c54_1,i.f54_1,$(),e,a,b().j58_1)}(this)},l(Bt).j9p=function(){l(Ot).j9p.call(this);var t=this.d9r_1.y52_1.b55_1;t.u69(this.e9r_1);for(var n=t.v();n.w();)n.y().d6a(!0)},l(Yt).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=m,i.cc_1=null,i.mc()},l(Yt).zc=function(t,n){return this.v1g(null!=t&&J(t,X)?t:h(),n)},l(Yt).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.ac_1=2,this.zb_1=1,(t=Z().h7o("https://neo.gsfc.nasa.gov/wms/wms",Q("MOD_LSTD_CLIM_M"),tt,tt,this))===nt())return t;continue t;case 1:var n=t;et(this.o9r_1)&&(this.n9r_1.s9r_1=n,this.n9r_1.q9r_1.c53_1.n6k(n),it().w52()),rt.v5o(rt.k54_1,"WMS layer creation succeeded"),this.ac_1=3,this.zb_1=4;continue t;case 2:if(this.ac_1=3,this.cc_1 instanceof Error){var i=this.cc_1;rt.u9o(rt.i54_1,"WMS layer creation failed",i),this.zb_1=4;continue t}throw this.cc_1;case 3:throw this.cc_1;case 4:return this.ac_1=3,m}}catch(t){var e=t;if(3===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},l(Yt).w1g=function(t,n){var i=new Yt(this.n9r_1,n);return i.o9r_1=t,i},l(Wt).i9p=function(){var t,n;l(Ot).i9p.call(this),this.t9r_1=st(this.r9r_1,tt,tt,(t=new Yt(this,null),(n=function(n,i){return t.v1g(n,i)}).$arity=1,n));var i=this.q9r_1.d53_1;i.v53_1.f54_1=1.1*this.q9r_1.u53(),i.x53_1=b().j58_1,i.y53_1=b().j58_1,i.z53_1=b().j58_1},l(Wt).j9p=function(){l(Ot).j9p.call(this);var t=this.t9r_1;null==t||t.in();var n=this.s9r_1;null==n||this.q9r_1.c53_1.o6k(n),this.s9r_1=null},l(Gt).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=m,i.cc_1=null,i.mc()},l(Gt).zc=function(t,n){return this.v1g(null!=t&&J(t,X)?t:h(),n)},l(Gt).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.ac_1=2,this.zb_1=1,(t=ot().o7u("https://tiles.geoservice.dlr.de/service/wmts","hillshade",tt,tt,this))===nt())return t;continue t;case 1:var n=t;et(this.d9s_1)&&(this.c9s_1.h9s_1=n,this.c9s_1.f9s_1.c53_1.n6k(n),it().w52()),rt.v5o(rt.k54_1,"WMTS layer creation succeeded"),this.ac_1=3,this.zb_1=4;continue t;case 2:if(this.ac_1=3,this.cc_1 instanceof Error){var i=this.cc_1;rt.u9o(rt.i54_1,"WMTS layer creation failed",i),this.zb_1=4;continue t}throw this.cc_1;case 3:throw this.cc_1;case 4:return this.ac_1=3,m}}catch(t){var e=t;if(3===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},l(Gt).w1g=function(t,n){var i=new Gt(this.c9s_1,n);return i.d9s_1=t,i},l(Kt).i9p=function(){var t,n;l(Ot).i9p.call(this),this.i9s_1=st(this.g9s_1,tt,tt,(t=new Gt(this,null),(n=function(n,i){return t.v1g(n,i)}).$arity=1,n));var i=this.f9s_1.d53_1;i.v53_1.f54_1=1.1*this.f9s_1.u53(),i.x53_1=b().j58_1,i.y53_1=b().j58_1,i.z53_1=b().j58_1},l(Kt).j9p=function(){l(Ot).j9p.call(this);var t=this.i9s_1;null==t||t.in();var n=this.h9s_1;null==n||this.f9s_1.c53_1.o6k(n),this.h9s_1=null},l(nn).u68=function(t){return J(t,pt)},l(nn).x68=function(t){return J(t,pt)},l(nn).q68=mt,l(nn).r68=gt,l(nn).s68=bt,l(nn).t68=$t,l(nn).v68=yt,l(nn).w68=kt,l(nn).y68=xt,l(nn).z68=St,function(t){var n=t.earth||(t.earth={}),i=n.worldwind||(n.worldwind={});(i.tutorials||(i.tutorials={})).main=Xt}(t),Xt(),t})?e.apply(n,r):e)||(t.exports=s)},585:function(t,n,i){var e,r,s;r=[n,i(426),i(675),i(453),i(485),i(755),i(800),i(639),i(787),i(997),i(229),i(931),i(852)],void 0===(s="function"==typeof(e=function(t,n,e,r,s,o,u,a,h,_,l,c,f){"use strict";var v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt,ct,ft,vt,dt,wt,pt,mt,gt,bt,$t,yt,kt,xt,St,Et,Ct,qt,Ot,zt,At,Tt,It,Dt,jt,Mt,Nt,Rt,Pt,Lt,Ft,Ut,Ht,Vt,Bt,Yt,Wt,Gt,Kt,Xt,Jt,Zt,Qt,tn,nn,en,rn,sn,on,un,an,hn,_n,ln,cn,fn,vn,dn,wn,pn,mn,gn,bn,$n,yn,kn,xn,Sn,En,Cn,qn,On,zn,An,Tn,In,Dn,jn,Mn,Nn,Rn,Pn,Ln,Fn,Un,Hn,Vn,Bn,Yn,Wn,Gn,Kn,Xn,Jn,Zn,Qn,ti,ni,ii,ei,ri,si,oi,ui,ai,hi,_i,li,ci,fi,vi,di,wi,pi,mi,gi,bi,$i,yi,ki,xi,Si,Ei,Ci,qi,Oi,zi,Ai,Ti,Ii,Di,ji,Mi,Ni,Ri,Pi,Li,Fi,Ui,Hi,Vi,Bi,Yi,Wi,Gi,Ki,Xi,Ji,Zi,Qi,te,ne,ie,ee,re,se,oe,ue,ae,he,_e,le,ce,fe,ve,de,we,pe,me,ge,be,$e,ye,ke,xe,Se,Ee,Ce,qe,Oe,ze,Ae,Te,Ie,De,je,Me,Ne,Re,Pe,Le,Fe,Ue,He,Ve,Be,Ye,We,Ge,Ke,Xe,Je,Ze,Qe,tr,nr,ir,er,rr,sr,or,ur,ar,hr,_r,lr,cr,fr,vr,dr,wr,pr,mr,gr,br,$r,yr,kr,xr,Sr,Er,Cr,qr,Or,zr,Ar,Tr=Math.imul,Ir=Math.sign,Dr=Math.log10,jr=Math.sinh,Mr=n.$_$.c,Nr=e.$_$.fg,Rr=n.$_$.d,Pr=e.$_$.gb,Lr=e.$_$.fb,Fr=e.$_$.hb,Ur=n.$_$.a,Hr=e.$_$.yf,Vr=r.$_$.b,Br=e.$_$.w9,Yr=e.$_$.f,Wr=e.$_$.ob,Gr=e.$_$.lb,Kr=e.$_$.v,Xr=e.$_$.a5,Jr=e.$_$.f7,Zr=s.$_$.o,Qr=s.$_$.p,ts=e.$_$.ha,ns=r.$_$.c,is=e.$_$.t1,es=e.$_$.vf,rs=e.$_$.d5,ss=e.$_$.qa,os=e.$_$.vg,us=e.$_$.zb,as=e.$_$.mb,hs=e.$_$.ba,_s=e.$_$.m,ls=e.$_$.t6,cs=e.$_$.u6,fs=e.$_$.x1,vs=e.$_$.x,ds=e.$_$.sf,ws=e.$_$.x9,ps=e.$_$.q5,ms=e.$_$.f8,gs=e.$_$.n6,bs=e.$_$.d,$s=(e.$_$.l4,e.$_$.uf),ys=e.$_$.zg,ks=e.$_$.bb,xs=e.$_$.ab,Ss=e.$_$.z9,Es=e.$_$.da,Cs=e.$_$.pf,qs=e.$_$.ic,Os=e.$_$.hc,zs=e.$_$.s6,As=e.$_$.n9,Ts=e.$_$.eb,Is=e.$_$.jh,Ds=e.$_$.q7,js=r.$_$.a,Ms=r.$_$.k,Ns=e.$_$.a6,Rs=e.$_$.c6,Ps=e.$_$.jb,Ls=e.$_$.p6,Fs=e.$_$.nb,Us=e.$_$.cb,Hs=e.$_$.t9,Vs=e.$_$.z2,Bs=e.$_$.zc,Ys=e.$_$.fa,Ws=e.$_$.ch,Gs=e.$_$.hh,Ks=e.$_$.k9,Xs=s.$_$.x,Js=e.$_$.w8,Zs=e.$_$.s4,Qs=e.$_$.h,to=e.$_$.mf,no=s.$_$.b1,io=s.$_$.e1,eo=e.$_$.ac,ro=s.$_$.l1,so=e.$_$.cc,oo=e.$_$.l8,uo=(e.$_$.m4,e.$_$.c2),ao=e.$_$.u8,ho=e.$_$.c,_o=e.$_$.dh,lo=e.$_$.e8,co=e.$_$.e,fo=e.$_$.kb,vo=e.$_$.bh,wo=e.$_$.kc,po=e.$_$.ea,mo=e.$_$.p,go=e.$_$.m5,bo=e.$_$.o7,$o=e.$_$.yb,yo=e.$_$.sb,ko=e.$_$.w5,xo=e.$_$.l,So=e.$_$.ge,Eo=e.$_$.u9,Co=e.$_$.r7,qo=e.$_$.me,Oo=e.$_$.cg,zo=e.$_$.k5,Ao=e.$_$.bd,To=e.$_$.n,Io=e.$_$.vb,Do=e.$_$.id,jo=e.$_$.f1,Mo=e.$_$.re,No=e.$_$.r2,Ro=e.$_$.q4,Po=e.$_$.zd,Lo=e.$_$.fe,Fo=o.$_$.g2,Uo=o.$_$.t,Ho=o.$_$.s,Vo=o.$_$.e,Bo=o.$_$.b2,Yo=o.$_$.c2,Wo=o.$_$.j2,Go=o.$_$.z1,Ko=o.$_$.r,Xo=e.$_$.ga,Jo=u.$_$.a,Zo=e.$_$.sg,Qo=e.$_$.a,tu=o.$_$.v2,nu=o.$_$.p2,iu=e.$_$.wb,eu=e.$_$.d6,ru=e.$_$.ub,su=a.$_$.a,ou=s.$_$.j,uu=s.$_$.c,au=h.$_$.d,hu=h.$_$.e,_u=h.$_$.c,lu=_.$_$.f,cu=h.$_$.f,fu=h.$_$.a,vu=l.$_$.u,du=c.$_$.a,wu=e.$_$.q8,pu=e.$_$.p8,mu=e.$_$.ae,gu=e.$_$.d1,bu=e.$_$.te,$u=e.$_$.bg,yu=c.$_$.d,ku=c.$_$.e,xu=o.$_$.w,Su=o.$_$.q,Eu=e.$_$.p5,Cu=e.$_$.x5,qu=c.$_$.f,Ou=o.$_$.p,zu=e.$_$.ca,Au=c.$_$.b,Tu=e.$_$.n7,Iu=e.$_$.u7,Du=o.$_$.e2,ju=e.$_$.r6,Mu=c.$_$.c,Nu=e.$_$.oa,Ru=e.$_$.n4,Pu=(e.$_$.o4,e.$_$.db),Lu=e.$_$.r8,Fu=e.$_$.tb,Uu=e.$_$.j8,Hu=e.$_$.p9,Vu=e.$_$.p2,Bu=e.$_$.y6,Yu=e.$_$.g8,Wu=r.$_$.m,Gu=e.$_$.pb,Ku=e.$_$.w2,Xu=e.$_$.de,Ju=e.$_$.nd,Zu=e.$_$.cd,Qu=e.$_$.r9,ta=e.$_$.ee,na=r.$_$.l,ia=r.$_$.j,ea=r.$_$.i,ra=e.$_$.bf,sa=e.$_$.ve,oa=e.$_$.ne,ua=r.$_$.h,aa=r.$_$.g,ha=r.$_$.f,_a=r.$_$.e,la=r.$_$.d,ca=e.$_$.i2,fa=e.$_$.eh,va=h.$_$.g,da=h.$_$.b,wa=f.$_$.a,pa=e.$_$.gh,ma=e.$_$.ya,ga=e.$_$.xa,ba=e.$_$.qb,$a=e.$_$.dc,ya=e.$_$.ag,ka=e.$_$.a7,xa=e.$_$.za,Sa=e.$_$.of,Ea=s.$_$.a,Ca=e.$_$.p4,qa=e.$_$.jd,Oa=e.$_$.pg,za=e.$_$.sa,Aa=e.$_$.af,Ta=n.$_$.b,Ia=e.$_$.fh;function Da(){v=this,this.c51_1=new Mr;var t=i(257),n=null!=t&&"string"==typeof t?t:Nr();this.d51_1=Rr("sun_texture.png",n);var e=i(926),r=null!=e&&"string"==typeof e?e:Nr();this.e51_1=Rr("dnb_land_ocean_ice_2012.png",r);var s=i(709),o=null!=s&&"string"==typeof s?s:Nr();this.f51_1=Rr("worldwind_worldtopobathy2004053.png",o)}function ja(){return null==v&&new Da,v}function Ma(){d=this,this.g51_1=new Mr;var t=i(735);this.h51_1=new Ur(null!=t&&"string"==typeof t?t:Nr())}function Na(t){this.i51_1=t,this.j51_1=new Hr(20,0),this.k51_1=3e3,this.l51_1=y_(),this.m51_1=null,this.n51_1=null,this.o51_1=null,this.p51_1=null,this.q51_1=Vr().b3k_1,this.r51_1=0,this.s51_1=Vr().b3k_1,this.t51_1=0,this.u51_1=0}function Ra(){}function Pa(t,n,i,e){i=i===Yr?null:i,e=e===Yr?null:e,this.e52_1=t,this.f52_1=n,this.g52_1=i,this.h52_1=e,this.i52_1=!1}function La(t){return t.toString()}function Fa(){this.l52_1=Kr()}function Ua(){}function Ha(){}function Va(){m=this,this.t52_1=10,this.u52_1=Zr(Yr,1),this.v52_1=Qr(this.u52_1)}function Ba(){return null==m&&new Va,m}function Ya(){}function Wa(t,n,i,e,r,s){Ba(),i=i===Yr?new tc:i,e=e===Yr?new dc:e,r=r===Yr?new Th:r,s=s===Yr?null:s,this.x52_1=n,this.y52_1=i,this.z52_1=e,this.a53_1=r,this.b53_1=s,this.c53_1=new yc,this.d53_1=new __,this.e53_1=new Na(this),this.f53_1=rl(),this.g53_1=!0,this.h53_1=1,this.i53_1=1,this.j53_1=16e4,this.k53_1=new wb,this.l53_1=new Xa(t),this.m53_1=0,this.n53_1=z_(),this.o53_1=z_(),this.p53_1=il(),this.q53_1=w_();var o=b_().t53(ns().o3l()),u=1.1*this.u53();this.d53_1.v53_1.g54(o.b54_1,o.c54_1,u)}function Ga(){}function Ka(){this.g5d_1=Ql(),this.h5d_1=Y_(),this.i5d_1=il(),this.j5d_1=V_(),this.k5d_1=V_(),this.l5d_1=null,this.m5d_1=null,this.n5d_1=null,this.o5d_1=null,this.p5d_1=null}function Xa(t){this.m55_1=t,this.n55_1=il(),this.o55_1=rl(),this.p55_1=z_(),this.q55_1=z_(),this.r55_1=z_(),this.s55_1=z_(),this.t55_1=null,this.u55_1=null,this.v55_1=null,this.w55_1=null,this.x55_1=null,this.y55_1=!1,this.z55_1=uE().r5e_1,this.a56_1=KS().s5e_1,this.b56_1=tx();for(var n=0,i=hs(Array(32),null);n<32;)i[n]=rE().t5e_1,n=n+1|0;this.c56_1=i,this.d56_1=nE().u5e_1,this.e56_1=nE().u5e_1,this.f56_1=null,this.g56_1=null,this.h56_1=new Int8Array(4),this.i56_1=new Int8Array(4),this.j56_1=new kb(Rk(),Te),this.k56_1=_s()}function Ja(){this.y5g_1=4}function Za(){this.z5g_1=0,this.a5h_1=0,this.b5h_1=0,this.c5h_1=0,this.d5h_1=eb(),this.e5h_1=1,this.f5h_1=0,this.g5h_1=null,this.h5h_1=E_(),this.i5h_1=new Qa}function Qa(){this.j5h_1=0,this.k5h_1=0}function th(){this.l5h_1=null,this.m5h_1=null,this.n5h_1=null,this.o5h_1=il(),this.p5h_1=0,this.q5h_1=!0,this.r5h_1=!0,this.s5h_1=!0,this.t5h_1=0,this.u5h_1=eb(),this.v5h_1=1,this.w5h_1=1,this.x5h_1=null,this.y5h_1=E_(),this.z5h_1=new Qa,this.a5i_1=0;for(var t=0,n=hs(Array(4),null);t<4;)n[t]=new Za,t=t+1|0;this.b5i_1=n}function nh(){if(k)return Xr;k=!0,b=new ih("BACKGROUND",0),$=new ih("SURFACE",1),y=new ih("SHAPE",2),new ih("SCREEN",3)}function ih(t,n){ds.call(this,t,n)}function eh(){return nh(),b}function rh(){return nh(),$}function sh(){}function oh(){this.n5i_1=new Float32Array(2);for(var t=0,n=hs(Array(5),null);t<5;)n[t]=eb(),t=t+1|0;this.o5i_1=n,this.p5i_1=1,this.q5i_1=Ql(),this.r5i_1=null,this.s5i_1=null}function uh(){}function ah(){this.t5j_1=new Float32Array(6),this.u5j_1=z_(),this.v5j_1=eb(),this.w5j_1=1,this.x5j_1=1,this.y5j_1=!0,this.z5j_1=null,this.a5k_1=null}function hh(){this.a5l_1=12}function _h(){this.b5l_1=null,this.c5l_1=eh(),this.d5l_1=0,this.e5l_1=0}function lh(t){this.g5l_1=t}function ch(t,n){var i=os(t).c5l_1.w9(os(n).c5l_1);return 0===i&&(i=ws(t.d5l_1,n.d5l_1)),0===i&&(i=ws(t.e5l_1,n.e5l_1)),i}function fh(){this.w5e_1=0,this.x5e_1=0;var t=this.w5e_1;this.y5e_1=hs(Array(t),null);var n=ch;this.z5e_1=new lh(n)}function vh(){}function dh(){this.m5l_1=z_(),this.n5l_1=eb(),this.o5l_1=1,this.p5l_1=!0,this.q5l_1=null,this.r5l_1=null,this.s5l_1=null,this.t5l_1=z_()}function wh(){}function ph(){this.b5m_1=new th,this.c5m_1=null,this.d5m_1=z_()}function mh(){}function gh(){this.k5m_1=z_(),this.l5m_1=0,this.m5m_1=new ub(0,0,0,0),this.n5m_1=new ub(0,0,0,0),this.o5m_1=null,this.p5m_1=null,this.q5m_1=z_(),this.r5m_1=z_(),this.s5m_1=z_(),this.t5m_1=[z_().u5m(0,0,1,Uh().l58_1).z5c(1,0,0,Uh().k58_1),z_().u5m(0,0,1,Uh().k58_1).z5c(1,0,0,Uh().k58_1),z_().u5m(1,0,0,Uh().k58_1),z_().u5m(0,0,1,Uh().m58_1).z5c(1,0,0,Uh().k58_1),z_()]}function bh(){this.q5n_1=0}function $h(){this.s5n_1=z_(),this.t5n_1=0,this.u5n_1=0,this.v5n_1=0,this.w5n_1=0,this.x5n_1=!1,this.y5n_1=0,this.z5n_1=null,this.a5o_1=null,this.b5o_1=null,this.c5o_1=null,this.d5o_1=null}function yh(){}function kh(){this.x5o_1=eb(),this.y5o_1=1,this.z5o_1=null,this.a5p_1=null,this.b5p_1=z_()}function xh(){}function Sh(){this.d5p_1=Ql(),this.e5p_1=Y_(),this.f5p_1=new th,this.g5p_1=null,this.h5p_1=z_(),this.i5p_1=z_(),this.j5p_1=E_(),this.k5p_1=eb(),this.l5p_1=1}function Eh(){}function Ch(t,n){var i=t.d5q_1;return!0===(null==i?null:i.z5l(n))}function qh(){this.x5p_1=Ql(),this.y5p_1=Y_(),this.z5p_1=Y_(),this.a5q_1=eb(),this.b5q_1=1,this.c5q_1=E_(),this.d5q_1=null,this.e5q_1=null,this.f5q_1=null}function Oh(){}function zh(){}function Ah(){this.h5r_1=eb(),this.i5r_1=1,this.j5r_1=null,this.k5r_1=null,this.l5r_1=z_(),this.m5r_1=z_()}function Th(){this.o5r_1=Kr(),this.p5r_1=eb(),this.q5r_1=il(),this.r5r_1=L_(),this.s5r_1=new a_,this.t5r_1=Y_().w5r(),this.u5r_1=il(),this.v5r_1=w_()}function Ih(){}function Dh(){this.x59_1=rl(),this.y59_1=z_(),this.z59_1=z_(),this.a5a_1=new fh,this.b5a_1=new fh,this.c5a_1=null,this.d5a_1=null,this.e5a_1=null,this.f5a_1=null,this.g5a_1=null,this.h5a_1=!1,this.i5a_1=null}function jh(){if(M)return Xr;M=!0,D=new Mh("ABSOLUTE",0),j=new Mh("CLAMP_TO_GROUND",1),new Mh("RELATIVE_TO_GROUND",2)}function Mh(t,n){ds.call(this,t,n)}function Nh(){return jh(),D}function Rh(){return jh(),j}function Ph(t){if(ys(t)){var n=kr.n54(kr.i54_1,"Angle","init","NaN is not supported!");throw is(Gr(n))}return t}function Lh(t){return Uh().l5t(t)}function Fh(){N=this,this.j58_1=this.d5d(0),this.k58_1=this.d5d(90),this.l58_1=this.d5d(-90),this.m58_1=this.d5d(180),this.n58_1=this.d5d(-180),this.o58_1=this.d5d(360),this.p58_1=this.d5d(-360);this.q58_1=this.d5d(.016666666666666666);this.r58_1=this.d5d(.0002777777777777778),this.s58_1=.017453292519943295,this.t58_1=57.29577951308232,this.u58_1=60,this.v58_1=.016666666666666666,this.w58_1=3600,this.x58_1=.0002777777777777778,this.y58_1=.017453292519943295,this.z58_1=57.29577951308232,this.a59_1=17.77777777777778,this.b59_1=.05625,this.c59_1=16.666666666666668,this.d59_1=.06,this.e59_1=17.5,this.f59_1=.06,this.g59_1=60,this.h59_1=.016666666666666666}function Uh(){return null==N&&new Fh,N}function Hh(t,n){return Uh().d5d(t+n)}function Vh(t,n){return Uh().d5d(t+n)}function Bh(t,n){return Uh().i59(Lh(t)+n)}function Yh(t,n){return Uh().d5d(t-n)}function Wh(t,n){return Uh().d5d(t-n)}function Gh(t,n){if(Ss(n,0)){var i=kr.n54(kr.i54_1,"Angle","div","divideByZero");throw is(Gr(i))}return Uh().d5d(t/xs(n))}function Kh(t){return Ph(-t)}function Xh(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Uh(),e=Uh().o5t(t);n=i.d5d(e)}return n}function Jh(t){var n;if(-90<=t&&t<=90)n=t;else{var i=Uh(),e=Uh().q5t(t);n=i.d5d(e)}return n}function Zh(t){var n;if(-180<=t&&t<=180)n=t;else{var i=Uh(),e=Uh().r5t(t);n=i.d5d(e)}return n}function Qh(t){var n=Uh(),i=us(t,-90,90);return n.d5d(i)}function t_(t){var n=Uh(),i=us(t,-180,180);return n.d5d(i)}function n_(t,n){return ws(t,n)}function i_(t){return Es(t)}function e_(t){Uh(),this.x5t_1=t}function r_(t,n,i,e,r,s,o,u){var a=u.i58(n);i[0]>a&&(i[0]=a),i[1]h&&(r[0]=h),r[1]_&&(o[0]=_),o[1]<_&&(o[1]=_)}function s_(t,n,i,e,r){n.z5t(e);var s=i[0];i[0]=r[0],r[0]=s,s=i[1],i[1]=r[1],r[1]=s}function o_(t,n){var i=n.a5u_1,e=t.e5s_1.i58(i),r=Math.abs(e),s=t.f5s_1.i58(i),o=.5*(r+Math.abs(s)),u=n.i58(t.h5s_1),a=u<=-o,h=n.i58(t.i5s_1)<=-o;if(a&&h)return-1;if(a===h)return 0;var _=(o+u)/(i.g57_1*(t.h5s_1.g57_1-t.i5s_1.g57_1)+i.h57_1*(t.h5s_1.h57_1-t.i5s_1.h57_1)+i.k57_1*(t.h5s_1.k57_1-t.i5s_1.k57_1)),l=(t.i5s_1.g57_1-t.h5s_1.g57_1)*_+t.h5s_1.g57_1,c=(t.i5s_1.h57_1-t.h5s_1.h57_1)*_+t.h5s_1.h57_1,f=(t.i5s_1.k57_1-t.h5s_1.k57_1)*_+t.h5s_1.k57_1;return a?t.h5s_1.u5f(l,c,f):t.i5s_1.u5f(l,c,f),_}function u_(){this.c5u_1=3,this.d5u_1=3}function a_(){this.a5s_1=new el(0,0,0),this.b5s_1=new el(-.5,0,0),this.c5s_1=new el(.5,0,0),this.d5s_1=new el(1,0,0),this.e5s_1=new el(0,1,0),this.f5s_1=new el(0,0,1),this.g5s_1=Math.sqrt(3),this.h5s_1=il(),this.i5s_1=il(),this.j5s_1=new Float32Array(9),this.k5s_1=new Float32Array(27),this.l5s_1=-1}function h_(){this.p5u_1=il(),this.q5u_1=1,this.r5u_1=-1}function __(){this.v53_1=L_(),this.w53_1=Nh(),this.x53_1=Uh().j58_1,this.y53_1=Uh().j58_1,this.z53_1=Uh().j58_1,this.a54_1=Uh().d5d(45)}function l_(){R=this,this.w5u_1=new f_(6378137,298.257223563),this.x5u_1=new f_(6378245,298.3)}function c_(){return null==R&&new l_,R}function f_(t,n){c_(),this.y5u_1=t,this.z5u_1=n}function v_(){return t=Ts(Pr(d_)),d_.call(t),t;var t}function d_(){this.b5c_1=R_(1,0,0,1),this.c5c_1=R_(-1,0,0,1),this.d5c_1=R_(0,1,0,1),this.e5c_1=R_(0,-1,0,1),this.f5c_1=R_(0,0,-1,1),this.g5c_1=R_(0,0,1,1),this.h5c_1=new sl(0,0,1,1),this.i5c_1=[this.f5c_1,this.g5c_1,this.b5c_1,this.c5c_1,this.e5c_1,this.d5c_1],this.j5c_1=z_()}function w_(){return t=Ts(Pr(p_)),p_.call(t),t;var t}function p_(){this.y56_1=il(),this.z56_1=il()}function m_(){return t=Ts(Pr($_)),$_.call(t,Uh().j58_1,Uh().j58_1),t;var t}function g_(){P=this,this.r53_1=1e-15,this.s53_1=Ds([Is(-12,-45),Is(-11,-30),Is(-10,20),Is(-9,45),Is(-8,40),Is(-7,35),Is(-6,30),Is(-5,25),Is(-4,-15),Is(-3,0),Is(-2,45),Is(-1,30),Is(0,30),Is(1,20),Is(2,20),Is(3,25),Is(4,30),Is(5,35),Is(6,30),Is(7,25),Is(8,-30),Is(9,-30),Is(10,-30),Is(11,-45),Is(12,-45)])}function b_(){return null==P&&new g_,P}function $_(t,n){b_(),this.b54_1=t,this.c54_1=n}function y_(){return t=Ts(Pr(k_)),k_.call(t,L_(),Nh(),0,Uh().j58_1,Uh().j58_1,Uh().j58_1),t;var t}function k_(t,n,i,e,r,s){this.l57_1=t,this.m57_1=n,this.n57_1=i,this.o57_1=e,this.p57_1=r,this.q57_1=s}function x_(){L=this,this.a5w_1=new Float64Array([1,0,0,0,1,0,0,0,1])}function S_(){return null==L&&new x_,L}function E_(){return t=Ts(Pr(C_)),n=S_().a5w_1.slice(),C_.call(t,n),t;var t,n}function C_(t){S_(),this.d5i_1=t}function q_(){F=this,this.f5w_1=1e-8,this.g5w_1=1e-20,this.h5w_1=1e-10,this.i5w_1=32,this.j5w_1=new Float64Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1])}function O_(){return null==F&&new q_,F}function z_(){return t=Ts(Pr(A_)),n=O_().j5w_1.slice(),A_.call(t,n),t;var t,n}function A_(t){O_(),this.a57_1=t}function T_(t){return function(t,n){return D_.call(n,t.r5w_1,t.s5w_1,t.t5w_1,t.u5w_1),n}(t,Ts(Pr(D_)))}function I_(){}function D_(t,n,i,e){this.r5w_1=t,this.s5w_1=n,this.t5w_1=i,this.u5w_1=e}function j_(t,n){ds.call(this,t,n)}function M_(){return function(){if(V)return Xr;V=!0,H=new j_("FRACTION",0),new j_("INSET_PIXELS",1),new j_("PIXELS",2)}(),H}function N_(){this.d5x_1=1e-10}function R_(t,n,i,e){return function(t,n,i,e,r){return P_.call(r),r.d5v(t,n,i,e),r}(t,n,i,e,Ts(Pr(P_)))}function P_(){this.a5u_1=new el(0,0,1),this.b5u_1=0}function L_(){return t=Ts(Pr(H_)),H_.call(t,Uh().j58_1,Uh().j58_1,0),t;var t}function F_(t){return function(t,n){return H_.call(n,t.b54_1,t.c54_1,t.f54_1),n}(t,Ts(Pr(H_)))}function U_(){}function H_(t,n,i){$_.call(this,t,n),this.f54_1=i}function V_(){return t=Ts(Pr(B_)),B_.call(t,0,0),t;var t}function B_(t,n){this.m5e_1=t,this.n5e_1=n}function Y_(){return t=Ts(Pr(K_)),K_.call(t,Uh().j58_1,Uh().j58_1,Uh().j58_1,Uh().j58_1),t;var t}function W_(t){return function(t,n){return K_.call(n,t.o5p_1,t.p5p_1,t.q5p_1,t.r5p_1),n}(t,Ts(Pr(K_)))}function G_(){}function K_(t,n,i,e){this.o5p_1=t,this.p5p_1=n,this.q5p_1=i,this.r5p_1=e}function X_(t,n,i,e,r,s){this.v5x_1=t,this.w5x_1=n,this.x5x_1=i,this.y5x_1=e,this.z5x_1=r,this.a5y_1=s}function J_(){return t=Ts(Pr(Q_)),Q_.call(t,Y_(),Ls()),t;var t}function Z_(){}function Q_(t,n){this.g5y_1=t,this.h5y_1=n}function tl(){return t=Ts(Pr(nl)),nl.call(t,0,0),t;var t}function nl(t,n){this.g57_1=t,this.h57_1=n}function il(){return t=Ts(Pr(el)),el.call(t,0,0,0),t;var t}function el(t,n,i){nl.call(this,t,n),this.k57_1=i}function rl(){return t=Ts(Pr(sl)),sl.call(t,0,0,0,0),t;var t}function sl(t,n,i,e){this.g55_1=t,this.h55_1=n,this.i55_1=i,this.j55_1=e}function ol(){}function ul(t,n,i,e){this.f5z_1=t,this.g5z_1=n,this.h5z_1=i,this.i5z_1=e}function al(){this.j5z_1=0}function hl(){this.x5y_1=c_().x5u_1,this.y5y_1=0,this.z5y_1=0,this.a5z_1=0,this.b5z_1=0}function _l(){K=this,this.k5z_1=new cl(24.3234,-121.3708,-75.8275,0,0,0,-1.74e-9,c_().x5u_1,c_().w5u_1),this.l5z_1=new cl(-24.3234,121.3708,75.8275,0,0,0,1.74e-9,c_().w5u_1,c_().x5u_1),this.m5z_1=new cl(23.92,-141.27,-80.9,0,0,0,0,c_().x5u_1,c_().w5u_1),this.n5z_1=new cl(-23.92,141.27,80.9,0,0,0,0,c_().w5u_1,c_().x5u_1)}function ll(){return null==K&&new _l,K}function cl(t,n,i,e,r,s,o,u,a){ll(),this.o5z_1=t,this.p5z_1=n,this.q5z_1=i,this.r5z_1=e,this.s5z_1=r,this.t5z_1=s,this.u5z_1=o,this.v5z_1=u,this.w5z_1=a}function fl(){}function vl(){if(Q)return Xr;Q=!0,J=new dl("N",0),Z=new dl("S",1)}function dl(t,n){ds.call(this,t,n)}function wl(){return vl(),J}function pl(){return vl(),Z}function ml(){}function gl(t,n,i){this.q60_1=t,this.r60_1=n,this.s60_1=i}function bl(){nt=this,this.t60_1=0,this.u60_1=1,this.v60_1=2,this.w60_1=4,this.x60_1=8,this.y60_1=64,this.z60_1=128,this.a61_1=512,this.b61_1=1024,this.c61_1=4096,this.d61_1=8192,this.e61_1=1.5707963267948966,this.f61_1=5,this.g61_1=-1.3962634015954636,this.h61_1=1.4660765716752369,this.i61_1=.017453292519943295,this.j61_1=57.29577951308232,this.k61_1=0,this.l61_1=4e6,this.m61_1=2e6,this.n61_1=1e5,this.o61_1="CC",this.p61_1="CD",this.q61_1="BR",this.r61_1="BN",this.s61_1=0,this.t61_1=1,this.u61_1=2,this.v61_1=3,this.w61_1=4,this.x61_1=5,this.y61_1=6,this.z61_1=7,this.a62_1=8,this.b62_1=9,this.c62_1=10,this.d62_1=11,this.e62_1=12,this.f62_1=13,this.g62_1=14,this.h62_1=15,this.i62_1=16,this.j62_1=17,this.k62_1=18,this.l62_1=19,this.m62_1=20,this.n62_1=21,this.o62_1=22,this.p62_1=23,this.q62_1=24,this.r62_1=25,this.s62_1=3,this.t62_1="ABCDEFGHIJKLMNOPQRSTUVWXYZ";var t=new Int32Array([0,9,25,25,8e5,8e5]),n=new Int32Array([1,0,17,25,2e6,8e5]),i=new Int32Array([24,9,25,15,8e5,13e5]);this.u62_1=[t,n,i,new Int32Array([25,0,9,15,2e6,13e5])];var e=new Float64Array([2,11e5,-72,-80.5,0]),r=new Float64Array([3,2e6,-64,-72,2e6]),s=new Float64Array([4,28e5,-56,-64,2e6]),o=new Float64Array([5,37e5,-48,-56,2e6]),u=new Float64Array([6,46e5,-40,-48,4e6]),a=new Float64Array([7,55e5,-32,-40,4e6]),h=new Float64Array([9,64e5,-24,-32,6e6]),_=new Float64Array([10,73e5,-16,-24,6e6]),l=new Float64Array([11,82e5,-8,-16,8e6]),c=new Float64Array([12,91e5,0,-8,8e6]),f=new Float64Array([13,0,8,0,0]),v=new Float64Array([15,8e5,16,8,0]),d=new Float64Array([16,17e5,24,16,0]),w=new Float64Array([17,26e5,32,24,2e6]),p=new Float64Array([18,35e5,40,32,2e6]),m=new Float64Array([19,44e5,48,40,4e6]),g=new Float64Array([20,53e5,56,48,4e6]),b=new Float64Array([21,62e5,64,56,6e6]),$=new Float64Array([22,7e6,72,64,6e6]);this.v62_1=[e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,new Float64Array([23,79e5,84.5,72,6e6])]}function $l(){return null==nt&&new bl,nt}function yl(t,n,i,e,r,s){var o,u,a=e,h=r,_=new Int32Array(3),l=5-s|0,c=Math.pow(10,l);a=kl(0,a/c)*c,h=kl(0,h/c)*c,function(t,n){var i=n%6|0;0===i&&(i=6);var e,r=0===ws(t.o60_1,"CC")||0===ws(t.o60_1,"CD")||0===ws(t.o60_1,"BR")||0===ws(t.o60_1,"BN")?0:1;switch(i){case 1:case 4:t.f60_1=0,t.g60_1=7;break;case 2:case 5:t.f60_1=9,t.g60_1=17;break;case 3:case 6:t.f60_1=18,t.g60_1=25}e=1===r?0==(i%2|0)?5e5:0:0==(i%2|0)?15e5:1e6,t.h60_1=e}(t,n);var f=function(t,n){var i=0,e=57.29577951308232*n;if(e>=72&&e<84.5)t.i60_1=23;else if(e>-80.5&&e<72){var r=(n+1.3962634015954636)/.13962634015954636+1e-12;t.i60_1=ks($l().v62_1[ks(r)][0])}else i|=1;return i}(t,i);if(_[0]=t.i60_1,0===f){for(1e7===(u=h)&&(u-=1);u>=2e6;)u-=2e6;(u+=t.h60_1)>=2e6&&(u-=2e6),_[2]=ks(u/1e5),_[2]>7&&(_[2]=_[2]+1|0),_[2]>13&&(_[2]=_[2]+1|0),o=a,21===_[0]&&31===n&&5e5===o&&(o-=1),_[1]=t.f60_1+(ks(o/1e5)-1|0)|0,9===t.f60_1&&_[1]>13&&(_[1]=_[1]+1|0),xl(t,n,_,a,h,s)}return f}function kl(t,n){var i=Math.floor(n),e=n-i,r=Us(i);return(e>.5||.5===e&&r.fb(Ps(2)).equals(new Hr(1,0)))&&(r=r.gb()),r.c6()}function xl(t,n,i,e,r,s){var o=e,u=r;t.e60_1=0!==n?Ay("%02d",[n]):" ";var a=0;if(a<=2)do{var h=a;if(a=a+1|0,i[h]<0||i[h]>26)return Xr;t.e60_1=t.e60_1+Vs(Hs("ABCDEFGHIJKLMNOPQRSTUVWXYZ",i[h]))}while(a<=2);var _=5-s|0,l=Math.pow(10,_);(o%=1e5)>=99999.5&&(o=99999);var c=ks(o/l),f=new Bs(c.toString());if(f.a()>s)f=new Bs(f.y7(0,s-1|0));else{var v=0,d=s-f.a()|0;if(v=99999.5&&(u=99999);var w=ks(u/l),p=new Bs(w.toString());if(p.a()>s)p=new Bs(p.y7(0,s-1|0));else{var m=0,g=s-p.a()|0;if(mu&&o<=20;)o=o+1|0,Fc(0,a,e)h&&a<=20))break t;a=a+1|0;var v=_.b54_1-e,d=Ir(v),w=c.b54_1-e;d!==Ir(w)?l=c:_=c,c=Lc(0,_,l)}r=c}return null!=r&&(r=new $_(e,r.c54_1)),r}function Lc(t,n,i){var e=n.s5v(i),r=n.t5v(i);return n.u5v(e,r/2,m_())}function Fc(t,n,i){var e=n.c54_1-i,r=Math.abs(e);return r<180?r:360-r}function Uc(){St=this,this.o6r_1=Uh().d5d(-70),this.p6r_1=Uh().d5d(70)}function Hc(){return null==St&&new Uc,St}function Vc(t){Hc(),gc.call(this,t),this.y6q_1=!1,this.z6q_1=new Zc,this.a6r_1=il(),this.b6r_1=il(),this.c6r_1=0,this.d6r_1=0,this.e6r_1=0,this.f6r_1=0,this.g6r_1=null,this.h6r_1=null,this.q6r()}function Bc(t,n){D$.call(this,n),this.x6t_1=t,this.y6t_1=_s(),this.z6t_1=!0,this.a6u_1=il()}function Yc(){this.h6u_1="DrawGraticule",this.i6u_1="GraticuleLineColor",this.j6u_1="GraticuleLineWidth",this.k6u_1="GraticuleLineStyle",this.l6u_1="DrawLabels",this.m6u_1="LabelColor",this.n6u_1="LabelFont"}function Wc(){this.o6u_1=mo()}function Gc(t,n){if(null==n.y1o("DrawGraticule")){n.e2("DrawGraticule",!0)}if(null==n.y1o("GraticuleLineColor")){var i=rb(255,255,255);n.e2("GraticuleLineColor",i)}if(null==n.y1o("GraticuleLineWidth")){n.e2("GraticuleLineWidth",.5)}if(null==n.y1o("GraticuleLineStyle")){var e=(function(){if(Ct)return Xr;Ct=!0,Et=new of("SOLID",0,0,0),new of("DASHED",1,1,-32),new of("DOTTED",2,2,-13108),new of("DASH_DOTTED",3,2,-52)}(),Et);n.e2("GraticuleLineStyle",e)}if(null==n.y1o("DrawLabels")){n.e2("DrawLabels",!0)}if(null==n.y1o("LabelColor")){var r=rb(255,255,255);n.e2("LabelColor",r)}if(null==n.y1o("LabelFont")){var s=ES("arial",lb(),12);n.e2("LabelFont",s)}}function Kc(t,n,i,e){if(null!=n){var r=n.y1o("LabelColor");if(r instanceof ub){var s=Jc(0,r,e),o=new Float32Array(3);s.t6u(o);var u=o[2]<.5?1:0;i.e6t_1.c6v(s),i.e6t_1.d6v(new ub(u,u,u,s.c52_1))}(r=n.y1o("LabelFont"))instanceof CS&&i.e6t_1.e6v(r)}}function Xc(t,n,i,e,r){null!=i&&e.f6v(function(t,n,i,e){var r,s=t.k6r_1.o2(n);if(null==s){var o=function(t,n,i){var e=$$();e.g6v_1=!1,e.h6v_1=!0;var r=n.y1o("GraticuleLineColor");r instanceof ub&&e.d6v(Jc(0,r,i));var s=n.y1o("GraticuleLineWidth");null!=s&&"number"==typeof s&&(e.m6v_1=s);var o=n.y1o("GraticuleLineStyle");return o instanceof of&&o.t6v_1>0&&(e.o6v_1=MS().v6v(o.t6v_1,o.u6v_1)),e}(0,i,e);t.k6r_1.e2(n,o),r=o}else r=s;return r}(t,n,i,r))}function Jc(t,n,i){return i>=1?n:new ub(n.z51_1,n.a52_1,n.b52_1,n.c52_1*i)}function Zc(){this.i6r_1=Kr(),this.j6r_1=Kr(),this.k6r_1=Kr(),this.l6r_1=null}function Qc(t,n,i){return function(t,n,i,e){return nf.call(e,t,n,i,Uh().j58_1),e}(t,n,i,Ts(Pr(nf)))}function tf(){this.w6v_1="GridElement_Line",this.x6v_1="GridElement_LineNorth",this.y6v_1="GridElement_LineSouth",this.z6v_1="GridElement_LineWest",this.a6w_1="GridElement_LineEast",this.b6w_1="GridElement_LineNorthing",this.c6w_1="GridElement_LineEasting",this.d6w_1="GridElement_GridZoneLabel",this.e6w_1="GridElement_LongitudeLabel",this.f6w_1="GridElement_LatitudeLabel"}function nf(t,n,i,e){this.g6w_1=t,this.h6w_1=n,this.i6w_1=i,this.j6w_1=e}function ef(){}function rf(t,n){var i=_s(),e=t.p6w_1.o6w(n.r5s().s5d()),r=function(t,n){var i=t.p6w_1.m6w(n.q5p_1),e=t.p6w_1.m6w(n.r5p_1);return new sl(i,t.p6w_1.n6w(n.o5p_1),e,t.p6w_1.n6w(n.p5p_1))}(t,e),s=r.h55_1,o=r.j55_1;if(s<=o)do{var u=s;s=s+1|0;var a=r.g55_1,h=r.i55_1;if(a<=h)do{var _=a;a=a+1|0;var l,c=t.s6w_1[u][_];if(null==c){var f=t.p6w_1.k6w(t.p6w_1.l6w(u,_));t.s6w_1[u][_]=f,l=f}else l=c;var v=l;v.c6u(n)?i.s(v):v.f6u()}while(_!==h)}while(u!==o);return i}function sf(t,n,i){this.p6w_1=t,this.q6w_1=n,this.r6w_1=i;for(var e=0,r=this.q6w_1,s=hs(Array(r),null);e=3||9===t.c70_1&&t.d70_1>=4}(t)&&function(t){var n=t.a70_1.q5p_1,i=t.a70_1.o5p_1,e=_s(),r=t.a70_1.s5p()/3,s=0;if(s<=3)do{var o=s;s=s+1|0,e.s(t.b6u().h6z(new H_(i,Vh(n,o*r),0)))}while(s<=3);var u=t.b6u().y6r(e,_$());t.y6t_1.s(new nf(t.r6e_1,u,"GridElement_LineNorth",i))}(t)}function vf(t,n,i,e,r,s){e=e===Yr?"":e,r=r===Yr?0:r,s=s===Yr?0:s,Bc.call(this,t,t.g6z(n)),this.a70_1=n,this.b70_1=i,this.c70_1=r,this.d70_1=s,this.e70_1=Ot.h71(this.a70_1.l5u(),this.a70_1.m5u(),this.b70_1,e),this.f70_1=null,this.g70_1=null,this.h70_1=!0}function df(t,n,i){if(n>=88)return af().m6y_1[45];if(n<-88)return af().m6y_1[0];var e=t.j71(i);return af().m6y_1[t.k71(n)]+"-"+Gr(e<9?"0"+(e+1|0):e+1|0)}function wf(){this.y70_1=88,this.z70_1=180,this.a71_1=4,this.b71_1=6,this.c71_1=.6666666666666667,this.d71_1=.33333333333333337,this.e71_1=.16666666666666669,this.f71_1=.08333333333333334,this.g71_1=.04166666666666667}function pf(t,n,i,e,r){var s=function(t,n){var i=n*t.u70_1/1e3,e=Math.abs(i);return qo("0"+ks(e),2)}(t,"Y"===r?i:e),o=t.b6u().x6s(n,s,t.u70_1);o.e6t_1.r71(U.v5w()),o.x71("label.name",r),o.x71("label.scale.type",ks(t.u70_1)),o.x71("label.x",e*t.u70_1),o.x71("label.y",i*t.u70_1),t.y6t_1.s(Qc(t.r6e_1,o,"metric.label"))}function mf(t,n,i){null!=n&&null!=i&&bf(t,kf(t,n),kf(t,i))}function gf(t,n,i){null!=n&&bf(t,i,kf(t,n))}function bf(t,n,i){var e=t.b6u().y6r(Co([n,i]),_$());t.y6t_1.s(new nf(t.r6e_1,e,function(t){var n;return 1e3===t.u70_1?(af(),n="GK.Metric.Grid.1000x1000"):(af(),n="GK.Metric.Grid.2000x2000"),n}(t),t.r6e_1.r5p_1))}function $f(t,n,i,e,r,s,o){return Ot.l71(n.h5z_1,n.i5z_1,i.h5z_1,i.i5z_1,e,r,s,o)}function yf(t,n,i){var e=G.d5z(n,i);return t.b6u().h6z(new H_(e.f5z_1,e.g5z_1,0))}function kf(t,n){return t.b6u().h6z(new H_(n.f5z_1,n.g5z_1,0))}function xf(t,n,i,e){this.n71_1=t,this.o71_1=n,this.p71_1=i,this.q71_1=e}function Sf(){this.y71_1=1e3,this.z71_1="metric.label"}function Ef(t,n,i,e){Bc.call(this,t,n),this.u70_1=e,this.v70_1=Ot.i71(i.m5u()),this.w70_1=new xf(G.w5y(i.o5p_1,i.q5p_1,this.v70_1),G.w5y(i.o5p_1,60!==this.v70_1?i.r5p_1:Wh(i.r5p_1,1e-12),this.v70_1),G.w5y(i.p5p_1,60!==this.v70_1?i.r5p_1:Wh(i.r5p_1,1e-12),this.v70_1),G.w5y(i.p5p_1,i.q5p_1,this.v70_1))}function Cf(t,n){if("X"===n)for(var i=t.d6z_1.v();i.w();){var e=i.y();t.b6z_1.i2(e)}if("Y"===n)for(var r=t.d6z_1.v();r.w();){var s=r.y();t.c6z_1.i2(s)}t.d6z_1.b1()}function qf(t,n,i,e,r){var s=i.a72("label.scale.type");if(null==s)return Xr;var o=s;if("Y"===n){var u=i.a72("label.y");if(null==u)return Xr;var a=u,h=G.d5z(e,a);if(function(t,n,i){return!(ks(i/1e6)===Ot.i71(n.g5z_1))}(0,h,a))return Xr;i.b72(t.a6z_1.j6z(new H_(h.f5z_1,h.g5z_1,0),i.f6t_1))}else if("X"===n){var _=i.a72("label.x");if(null==_)return Xr;var l=_,c=G.d5z(l,r);i.b72(t.a6z_1.j6z(new H_(c.f5z_1,c.g5z_1,0),i.f6t_1))}t.a6z_1.s6r(i,function(t,n){return 1e3===n?"label.1000":"label.2000"}(0,o))}function Of(t,n,i,e){return!!function(t,n,i){var e;if(0===i)e=!0;else{var r=n.a72("label.scale.type");e=i>(null==r?0:r)}return e}(0,i,e)||function(t,n,i,e){return n.a5b_1.n5c(n.y5r().t57(i.b54_1,i.c54_1,0,il()))>function(t,n){return 1e3===n?t.a6z_1.n6x_1:t.a6z_1.o6x_1}(t,e)}(t,n,i.f6t_1,e)}function zf(){this.c72_1="label.name",this.d72_1="X",this.e72_1="Y",this.f72_1="label.x",this.g72_1="label.y",this.h72_1="label.scale.type",this.i72_1="label.1000",this.j72_1="label.2000"}function Af(t){this.a6z_1=t,this.b6z_1=Kr(),this.c6z_1=Kr(),this.d6z_1=_s()}function Tf(t){Bc.call(this,t,Y_().w5r())}function If(){this.k72_1=-80,this.l72_1=84,this.m72_1="Graticule.UTM.100000m",this.n72_1="Graticule.UTM.10000m",this.o72_1="Graticule.UTM.1000m",this.p72_1="Graticule.UTM.100m",this.q72_1="Graticule.UTM.10m",this.r72_1="Graticule.UTM.1m",this.s72_1=1e5}function Df(t,n,i){Vc.call(this,t);var e=new Jf(this);e.u72_1=n,e.y72(i),this.q73_1=e,this.r73_1=bo(["Graticule.UTM.100000m","Graticule.UTM.10000m","Graticule.UTM.1000m","Graticule.UTM.100m","Graticule.UTM.10m","Graticule.UTM.1m"])}function jf(t,n){for(var i=function(t,n){var i=_s(),e=n.r5s().s5d(),r=function(t,n){var i=null;if(n.o5p_1<84&&n.p5p_1>-80){var e=yo(n.o5p_1,-80),r=Io(n.p5p_1,84),s=Y.k5x(e,n.q5p_1,r-e,n.s5p()),o=Mf(0,s.q5p_1),u=Mf(0,s.r5p_1),a=Nf(0,s.o5p_1),h=Nf(0,s.p5p_1);a<=17&&h>=17&&30===u&&(u=31),a<=19&&h>=19&&(31===o&&(o=30),31===u&&(u=32),33===o&&(o=32),33===u&&(u=34),35===o&&(o=34),35===u&&(u=36)),i=new sl(o,a,u,h)}return i}(0,e);if(null!=r){var s=r.h55_1,o=r.j55_1;if(s<=o)do{var u=s;s=s+1|0;var a=r.g55_1,h=r.i55_1;if(a<=h)do{var _=a;if(a=a+1|0,19!==u||31!==_&&33!==_&&35!==_){var l,c=t.n77_1[u][_];if(null==c){var f=new Hf(t,Rf(0,u,_));t.n77_1[u][_]=f,l=f}else l=c;var v=l;v.c6u(n)?i.s(v):v.f6u()}}while(_!==h)}while(u!==o)}return e.p5p_1>84&&(null==t.o77_1[2]&&(t.o77_1[2]=new Hf(t,Y.k5x(84,-180,6,180))),null==t.o77_1[3]&&(t.o77_1[3]=new Hf(t,Y.k5x(84,0,6,180))),i.s(os(t.o77_1[2])),i.s(os(t.o77_1[3]))),e.o5p_1<-80&&(null==t.o77_1[0]&&(t.o77_1[0]=new Hf(t,Y.k5x(-90,-180,10,180))),null==t.o77_1[1]&&(t.o77_1[1]=new Hf(t,Y.k5x(-90,0,10,180))),i.s(os(t.o77_1[0])),i.s(os(t.o77_1[1]))),i}(t,n).v();i.w();)i.y().t6r(n)}function Mf(t,n){var i=(n+180)/6,e=Math.floor(i);return $o(ks(e),59)}function Nf(t,n){var i=(n+80)/8,e=Math.floor(i);return $o(ks(e),19)}function Rf(t,n,i){var e=-80+Tr(n,8)|0,r=e+(72!==e?8:12)|0,s=-180+Tr(i,6)|0,o=s+6|0;return 17===n&&30===i?o=o-3|0:17===n&&31===i?s=s-3|0:19===n&&30===i?o=o+3|0:19===n&&31===i?(s=s+3|0,o=o-3|0):19===n&&32===i?(s=s-3|0,o=o+3|0):19===n&&33===i?(s=s+3|0,o=o-3|0):19===n&&34===i?(s=s-3|0,o=o+3|0):19===n&&35===i?(s=s+3|0,o=o-3|0):19===n&&36===i&&(s=s-3|0),Y.k5x(e,s,r-e|0,o-s|0)}function Pf(){this.r77_1=1e6,this.s77_1=5e5,this.t77_1="Graticule.MGRS.Overview",this.u77_1="Graticule.MGRS.GridZone",this.v77_1=5e6}function Lf(){Df.call(this,"MGRS Graticule",1e5,1e5);for(var t=0,n=hs(Array(20),null);t<20;)n[t]=hs(Array(60),null),t=t+1|0;this.n77_1=n,this.o77_1=hs(Array(4),null),this.p77_1=new Yf(this);var i=Co(["Graticule.MGRS.Overview","Graticule.MGRS.GridZone"]);i.z(Pr(Df).s73.call(this)),this.q77_1=i}function Ff(t,n){var i=Uh().m5t(1567855942887398e-21),e=null;n.i78(new H_(n.v74_1.b54_1,n.v74_1.c54_1,0))?e=tt.v5y(n.v74_1.b54_1,n.v74_1.c54_1):n.i78(n.q74_1)?e=tt.v5y(Qh(Vh(n.q74_1.b54_1,i)),t_(Vh(n.q74_1.c54_1,i))):n.i78(n.r74_1)?e=tt.v5y(Qh(Vh(n.r74_1.b54_1,i)),t_(Wh(n.r74_1.c54_1,i))):n.i78(n.s74_1)?e=tt.v5y(Qh(Wh(n.s74_1.b54_1,i)),t_(Vh(n.s74_1.c54_1,i))):n.i78(n.t74_1)&&(e=tt.v5y(Qh(Wh(n.t74_1.b54_1,i)),t_(Wh(n.t74_1.c54_1,i)))),null!=e&&(n.z75_1=e.toString().substring(3,5))}function Uf(){this.j78_1=1e5,this.k78_1=2e6,this.l78_1=1e6}function Hf(t,n){Bc.call(this,t,n);var i;i=n.p5p_1>84||n.o5p_1<-80,this.p76_1=i,this.t76_1=null;var e=tt.v5y(n.l5u(),n.m5u());if(this.p76_1)this.q76_1=e.toString().substring(2,3),this.r76_1=n.o5p_1>0?wl():pl(),this.s76_1=0;else{this.q76_1=e.toString().substring(0,3);var r=rt.v5y(n.l5u(),n.m5u());this.r76_1=r.z62_1,this.s76_1=r.y62_1}}function Vf(){zt=this;var t=new Int32Array([3,56,64]),n=new Int32Array([6,64,72]),i=new Int32Array([9,72,84]),e=new Int32Array([21,72,84]);this.m78_1=[t,n,i,e,new Int32Array([33,72,84])],this.n78_1="CDEFGHJKLMNPQRSTUVWX"}function Bf(){return null==zt&&new Vf,zt}function Yf(t){Bf(),Bc.call(this,t,Y_())}function Wf(){this.o78_1=1e6,this.p78_1=0,this.q78_1=1e7,this.r78_1=0,this.s78_1=wl(),this.t78_1=pl()}function Gf(t){var n=t.x72_1;if(null!=n)return n;Gs("extremes")}function Kf(t,n,i){var e=t.t72_1.n6r(n);return n.a5b_1.n5c(i)<5*e}function Xf(){this.u78_1=-.5,this.v78_1=-.5,this.w78_1=5}function Jf(t){this.t72_1=t,this.u72_1=1e7,this.v72_1=1e5,this.w72_1=0}function Zf(t,n,i,e,r,s,o){iv.call(this,t,n,i,e,r,s,o),this.y79_1=null}function Qf(t){return!!(t.i78(t.s74_1)&&t.i78(t.t74_1)&&t.i78(t.q74_1))&&t.i78(t.r74_1)}function tv(t){var n=bo([t.q74_1,t.r74_1,t.s74_1,t.t74_1]);if(!function(t,n){for(var i=null,e=n.v();e.w();){var r=e.y();if(null!=i){var s=i.c54_1,o=Ir(s),u=r.c54_1;if(o!==Ir(u)){var a=i.c54_1-r.c54_1,h=Math.abs(a);if(h>180&&h<360)return!0}}i=r}return!1}(0,n))return n;for(var i,e=0,r=n.v();r.w();){var s=r.y(),o=s.c54_1;if(180!==Math.abs(o)){var u=s.c54_1;e=Ir(u)}}if(0===e)return n;var a,h=t.q74_1.c54_1;if(180===Math.abs(h)){var _=t.q74_1.c54_1;i=!(Ir(_)===e)}else i=!1;i&&(t.q74_1=new H_(t.q74_1.b54_1,Kh(t.q74_1.c54_1),t.q74_1.f54_1));var l,c=t.r74_1.c54_1;if(180===Math.abs(c)){var f=t.r74_1.c54_1;a=!(Ir(f)===e)}else a=!1;a&&(t.r74_1=new H_(t.r74_1.b54_1,Kh(t.r74_1.c54_1),t.r74_1.f54_1));var v,d=t.s74_1.c54_1;if(180===Math.abs(d)){var w=t.s74_1.c54_1;l=!(Ir(w)===e)}else l=!1;l&&(t.s74_1=new H_(t.s74_1.b54_1,Kh(t.s74_1.c54_1),t.s74_1.f54_1));var p=t.t74_1.c54_1;if(180===Math.abs(p)){var m=t.t74_1.c54_1;v=!(Ir(m)===e)}else v=!1;return v&&(t.t74_1=new H_(t.t74_1.b54_1,Kh(t.t74_1.c54_1),t.t74_1.f54_1)),bo([t.q74_1,t.r74_1,t.s74_1,t.t74_1])}function nv(){this.b7a_1=100}function iv(t,n,i,e,r,s,o){Bc.call(this,t,Y_()),this.j74_1=n,this.k74_1=i,this.l74_1=e,this.m74_1=r,this.n74_1=s,this.o74_1=o,this.p74_1=t.v73(this.j74_1,this.k74_1,this.m74_1+this.o74_1/2,this.n74_1+this.o74_1/2),this.q74_1=t.v73(this.j74_1,this.k74_1,this.m74_1,this.n74_1),this.r74_1=t.v73(this.j74_1,this.k74_1,this.m74_1+this.o74_1,this.n74_1),this.s74_1=t.v73(this.j74_1,this.k74_1,this.m74_1,this.n74_1+this.o74_1),this.t74_1=t.v73(this.j74_1,this.k74_1,this.m74_1+this.o74_1,this.n74_1+this.o74_1);var u=function(t,n){for(var i=Uh().k58_1,e=Uh().m58_1,r=Uh().l58_1,s=Uh().n58_1,o=n.v();o.w();){var u=o.y(),a=u.b54_1;ar&&(r=a);var h=u.c54_1;hs&&(s=h)}return new K_(i,r,e,s)}(0,tv(this));Qf(this)||u.n5x(this.l74_1),this.r6e_1.h5q(u),this.u74_1=u,this.v74_1=this.u74_1.m5x(m_()),this.w74_1=!Qf(this),this.x74_1=!(this.i78(this.s74_1)||this.i78(this.t74_1)||this.i78(this.q74_1)||this.i78(this.r74_1))}function ev(t,n){var i=t.a76_1;return!0===(null==i?null:i.c6u(n))}function rv(t,n){var i=t.b76_1;return!0===(null==i?null:i.c6u(n))}function sv(t,n,i,e,r,s,o){iv.call(this,t,n,i,e,r,s,o),this.z75_1=null,this.a76_1=null,this.b76_1=null,this.c76_1=null}function ov(){gc.call(this,"Elevation Heatmap"),this.j7a_1=!1,this.k7a_1=.5,this.l7a_1=[new ub(0,0,1),new ub(0,1,1),new ub(0,1,0),new ub(1,1,0),new ub(1,0,0)],this.m7a_1=!0,this.n7a_1=3,this.o7a_1=new Float32Array(2)}function uv(){Rb.call(this),this.a5j_1=["uniform mat4 mvpMatrix;\nuniform float scale;\nuniform float offset;\n\nattribute vec4 vertexPoint;\nattribute float vertexHeight;\n\nvarying float height;\n\nvoid main() {\n height = vertexHeight * scale + offset;\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n}","#ifdef GL_FRAGMENT_PRECISION_HIGH\nprecision highp float;\n#else\nprecision mediump float;\n#endif\n\nuniform vec3 color0;\nuniform vec3 color1;\nuniform vec3 color2;\nuniform vec3 color3;\nuniform vec3 color4;\nuniform float opacity;\n\nvarying float height;\n\nvoid main() {\n vec3 overlay;\n overlay = mix(color0, color1, clamp(height * 4.0, 0.0, 1.0));\n overlay = mix(overlay, color2, clamp(height * 4.0 - 1.0, 0.0, 1.0));\n overlay = mix(overlay, color3, clamp(height * 4.0 - 2.0, 0.0, 1.0));\n overlay = mix(overlay, color4, clamp(height * 4.0 - 3.0, 0.0, 1.0));\n gl_FragColor = vec4(overlay * opacity, opacity);\n}"],this.b5j_1=["vertexPoint","vertexTexCoord"],this.c5j_1=z_(),this.d5j_1=ZS().c6m_1,this.e5j_1=ZS().c6m_1,this.f5j_1=ZS().c6m_1,this.g5j_1=ZS().c6m_1,this.h5j_1=ZS().c6m_1,this.i5j_1=ZS().c6m_1,this.j5j_1=ZS().c6m_1,this.k5j_1=ZS().c6m_1,this.l5j_1=ZS().c6m_1,this.m5j_1=new Float32Array(16)}function av(){}function hv(t,n,i,e){US.call(this,t,n,i,e)}function _v(){}function lv(t,n,i,e){t=t===Yr?-1:t,n=n===Yr?1:n,i=i===Yr?Uh().n58_1:i,e=e===Yr?Uh().m58_1:e,K_.call(this,Tt.i7c(t),Tt.i7c(n),i,e),this.z7a_1=t,this.a7b_1=n}function cv(){}function fv(){}function vv(t,n){t=t===Yr?null:t,n=n===Yr?null:n,mS.call(this,t,n)}function dv(t,n){q$.call(this,t,n)}function wv(t,n,i){this.j7e_1=t,this.k7e_1=n,this.l7e_1=i,this.i7e_1="Web Mercator"}function pv(t,n,i,e,r){vv.call(this,e,r),this.x7e_1="XYZ",this.y7e_1=t,this.z7e_1=n,this.a7f_1=i}function mv(){Dt=this,this.b7f_1="XYZ",this.c7f_1=No(123),this.d7f_1=No(125),this.e7f_1="{i}",this.f7f_1="{x}",this.g7f_1="{y}",this.h7f_1="{z}",this.i7f_1="{lang}",this.j7f_1="{rand="}function gv(){jt=this;var t=new Fo("earth.worldwind.layer.starfield.StarFieldLayer.StarMetadata",this,6);t.s3c("name",!1),t.s3c("description",!1),t.s3c("datatype",!1),t.s3c("arraysize",!1),t.s3c("unit",!1),t.s3c("ucd",!1),this.m7f_1=t}function bv(){return null==jt&&new gv,jt}function $v(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 63!=(63&t)&&Wo(t,63,bv().m7f_1),a.n7f_1=n,a.o7f_1=i,a.p7f_1=e,a.q7f_1=r,a.r7f_1=s,a.s7f_1=o,a}(t,n,i,e,r,s,o,0,Ts(Pr(Cv)))}function yv(){Mt=this,this.t7f_1=[new Go(bv()),new Go(new Go(Ko()))]}function kv(){return null==Mt&&new yv,Mt}function xv(){Nt=this;var t=new Fo("earth.worldwind.layer.starfield.StarFieldLayer.StarData",this,2);t.s3c("metadata",!1),t.s3c("data",!1),this.u7f_1=t}function Sv(){return null==Nt&&new xv,Nt}function Ev(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Wo(t,3,Sv().u7f_1),r.v7f_1=n,r.w7f_1=i,r}(t,n,i,0,Ts(Pr(qv)))}function Cv(){}function qv(t,n){kv(),this.v7f_1=t,this.w7f_1=n}function Ov(t){t=t===Yr?(null==d&&new Ma,d).h51_1:t,gc.call(this,"StarField"),this.e7g_1=!1,this.f7g_1=t,this.g7g_1=MS().m6j(ja().d51_1),this.h7g_1=128,this.i7g_1=!0,this.j7g_1=null,this.k7g_1=this.u7g(),this.l7g_1=0,this.m7g_1=null,this.n7g_1=34028235e31,this.o7g_1=14e-46,this.p7g_1=0,this.q7g_1=!1,this.r7g_1=1e7,this.s7g_1=this.u7g(),this.t7g_1=new Float32Array(4)}function zv(){Rb.call(this),this.j5o_1=["//.x = declination\n//.y = right ascension\n//.z = point size\n//.w = magnitude\nattribute vec4 vertexPoint;\n\nuniform mat4 mvpMatrix;\n/* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\nuniform float numDays;\nuniform vec2 magnitudeRange;\n\nvarying float magnitudeWeight;\n\n/* normalizes an angle between 0.0 and 359.0 */\nfloat normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n}\n\n/* transforms declination and right ascension in cartesian coordinates */\nvec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n}\n\n/* normalizes a value between 0.0 and 1.0 */\nfloat normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n}\n\nvoid main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n}","precision mediump float;\n\nuniform sampler2D textureSampler;\nuniform int textureEnabled;\n\nvarying float magnitudeWeight;\n\nconst vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\nconst vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\nvoid main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n/* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n}"],this.k5o_1=["vertexPoint"],this.l5o_1=ZS().c6m_1,this.m5o_1=ZS().c6m_1,this.n5o_1=ZS().c6m_1,this.o5o_1=ZS().c6m_1,this.p5o_1=ZS().c6m_1,this.q5o_1=new Float32Array(16)}function Av(){this.f7h_1="WCS 1.0.0"}function Tv(t,n,i,e,r){pS.call(this,W.e5y(e,e.l5x()?2:1,1,256,256,r),new Iv(t,n,i)),this.u7h_1=t,this.v7h_1=n,this.w7h_1=i,this.x7h_1="WCS 1.0.0"}function Iv(t,n,i,e){e=e===Yr?"EPSG:4326":e,this.y7h_1=t,this.z7h_1=n,this.a7i_1=i,this.b7i_1=e,this.c7i_1="WCS 1.0.0"}function Dv(t){this.o7i_1=t,this.n7i_1="WMS 1.3.0"}function jv(){this.z7i_1="WMS"}function Mv(t,n,i,e,r){pS.call(this,function(t,n,i){return W.e5y(n,4,2,256,256,i)}(0,e,r),function(t,n,i,e){var r=new Nv(n,i);return r.k7i_1=e,new Dv(Xv(r))}(0,t,n,i)),this.o7j_1=t,this.p7j_1=n,this.q7j_1=i,this.r7j_1="WMS"}function Nv(t,n){this.f7i_1=t,this.g7i_1=n,this.h7i_1="1.3.0",this.i7i_1=null,this.j7i_1="EPSG:4326",this.k7i_1=null,this.l7i_1=!0,this.m7i_1=null}function Rv(t){return t.u7j_1}function Pv(t,n,i){var e,r,s=ou().ps_1;return uu(s,(e=new Hv(n,null),r=function(t,n){return e.a7n(t,n)},r.$arity=1,r),i)}function Lv(t,n,i,e,r){return new Vv(n,i,e,r)}function Fv(t,n){var i=n.h1(0).p7l(),e=null==i?null:i.u7l(),r=null==e?null:e.x7l_1,s=null==r?null:r.j7m_1;if(!(null==s||s>=n.n())){var o=kr.f5y("WmsLayerFactory","createFromWmsAsync","The number of layers specified exceeds the services limit");throw is(Gr(o))}var u=t.o7m(n),a=t.p7m(n);return new q$(Xv(u),function(t,n){return R$(t.r7o_1,t.s7o_1,t.t7o_1,t.u7o_1,t.w7o_1,t.x7o_1,t.v7o_1,n),n}(a,Ts(Pr(L$))))}function Uv(t){var n=t,i=t.i4q();return i.z4r(),n.r4p_1=i.o1d(),Xr}function Hv(t,n){this.y7m_1=t,Ks.call(this,n)}function Vv(t,n,i,e){var r;r=null==e?Jr(i,",",Yr,Yr,Yr,Yr,Rv):e,mS.call(this,r,Fv(Kv(),i)),this.l7n_1="WMS",this.m7n_1=t,this.n7n_1=n;for(var s=_s(),o=i.v();o.w();){var u=o.y().t7j_1;null==u||s.s(u)}this.o7n_1=Jr(s,",")}function Bv(t){var n=t.t7j_1;return null==n?"":n}function Yv(t,n,i,e,r,s){Ks.call(this,s),this.x7n_1=t,this.y7n_1=n,this.z7n_1=i,this.a7o_1=e,this.b7o_1=r}function Wv(t,n,i){Ks.call(this,i),this.a7l_1=t,this.b7l_1=n}function Gv(){Rt=this,this.k7m_1="WMS",this.l7m_1=20,this.m7m_1=bo(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.n7m_1=du(Yr,Uv)}function Kv(){return null==Rt&&new Gv,Rt}function Xv(t){return function(t,n){return Jv.call(n,t.f7i_1,t.h7i_1,t.g7i_1,t.i7i_1),n.t7i_1=t.j7i_1,n.u7i_1=t.k7i_1,n.v7i_1=t.l7i_1,n.w7i_1=t.m7i_1,n}(t,Ts(Pr(Jv)))}function Jv(t,n,i,e){this.p7i_1=t,this.q7i_1=n,this.r7i_1=i,this.s7i_1=e,this.t7i_1="EPSG:4326",this.u7i_1=null,this.v7i_1=!0,this.w7i_1=null,this.x7i_1="WMS 1.3.0"}function Zv(t,n,i){var e,r,s=ou().ps_1;return uu(s,(e=new ed(n,null),r=function(t,n){return e.g7t(t,n)},r.$arity=1,r),i)}function Qv(t,n,i,e,r){return new rd(n,i,e,r)}function td(t,n){var i=function(t,n){var i=n.v();t:for(;i.w();){var e,r=i.y();switch(r.q7r_1){case"urn:ogc:def:crs:OGC:1.3:CRS84":case"http://www.opengis.net/def/crs/OGC/1.3/CRS84":e=!0;break;case"urn:ogc:def:crs:EPSG::4326":e=!1;break;default:continue t}var s=e,o=_s(),u=0,a=0,h=0,_=0,l=0,c=0,f=0,v=0,d=0,w=null,p=r.t7r_1.v();n:for(;p.w();){var m=p.y();if(null==w||m.z7r_1===w){var g=m.z7r_1,b=gu("\\s+").q8(g,0);if(2===b.n()&&!(0!==_&&_!==m.a7s_1||0!==l&&l!==m.b7s_1)){if(0!==d&&Tr(2,d)!==m.c7s_1)break n;if(0!==v&&Tr(2,v)!==m.d7s_1)break n;if(o.d1()){try{s?(u=bu(b.h1(0)),a=bu(b.h1(1))):(u=bu(b.h1(1)),a=bu(b.h1(0)))}catch(t){if(t instanceof $u){kr.n54(kr.j54_1,"WmtsLayerFactory","determineTileSchemeCompatibleTileMatrixSet","Unable to parse TopLeftCorner values");continue n}throw t}h=m.y7r_1,_=m.a7s_1,l=m.a7s_1,c=m.c7s_1,f=m.d7s_1}o.s(m.x7r_1),v=m.d7s_1,d=m.c7s_1,w=m.z7r_1}}}if(!o.d1())return new nd(r.p7r_1,o,h,u,a,_,l,c,f)}return null}(0,n.k7q());if(null==i){var e=kr.f5y("WmtsLayerFactory","createWmtsLayer","Tile Schemes Not Compatible");throw fs(Gr(e))}var r=i;return new q$(function(t,n,i){for(var e=n.h7q_1.v();e.w();){var r=e.y();if(t.h7r_1.r(r.l7q_1))return new _d(mu(mu(r.n7q_1,"{style}",n.d7q_1.h1(0).r7q_1),"{TileMatrixSet}",i.u7q_1),i.v7q_1,i.c7r_1,r.l7q_1)}var s,o=function(t,n){var i=n.u7l().i7s_1;if(null==i)return null;var e=i.n7s();if(null==e)return null;var r=e.p7s_1;if(r.d1())return null;var s=r.h1(0).r7s();if(s.d1())return null;var o=s.h1(0).t7s_1;return o.d1()?null:o.h1(0).v7s_1.r("KVP")?s.h1(0).s7s_1:null}(0,n);if(null==o){var u=kr.f5y("WmtsLayerFactory","getWmtsTileFactory","No KVP Get Support");throw fs(Gr(u))}t:{for(var a=t.h7r_1.v();a.w();){var h=a.y();if(n.e7q_1.r(h)){s=h;break t}}s=null}var _=s;if(null==_){var l=kr.f5y("WmtsLayerFactory","getWmtsTileFactory","Image Formats Not Compatible");throw fs(Gr(l))}var c=_,f=n.d7q_1.h1(0).r7q_1;return new _d(function(t,n,i,e,r,s){var o=su().z1t(n).n4w().p4v("VERSION","1.0.0").p4v("SERVICE","WMTS").p4v("REQUEST","GetTile").p4v("LAYER",i).p4v("STYLE",r).p4v("FORMAT",e).p4v("TILEMATRIXSET",s).p4v("TILEMATRIX","{TileMatrix}").p4v("TILEROW","{TileRow}");return Gr(o.p4v("TILECOL","{TileCol}").o1d())}(0,o,n.z7p_1,c,f,i.u7q_1),i.v7q_1,i.c7r_1,c)}(t,n,r),function(t,n,i){var e=n.b7q_1,r=null==e?null:e.s5d();if(null==r){var s=kr.f5y("WmtsLayerFactory","createWmtsLevelSet","WGS84BoundingBox not defined for layer: "+n.z7p_1);throw fs(Gr(s))}var o=r,u=i.w7q_1/Uh().l5t(c_().w5u_1.y5u_1)*28e-5,a=i.z7q_1*u,h=i.a7r_1*u,_=i.x7q_1+a*i.b7r_1,l=i.y7q_1-h*i.c7r_1,c=_-i.x7q_1,f=i.y7q_1-l;return P$(o,Y.k5x(l,i.x7q_1,f,c),b_().p5v(f/i.c7r_1,c/i.b7r_1),i.v7q_1.n(),i.z7q_1,i.a7r_1)}(0,n,r))}function nd(t,n,i,e,r,s,o,u,a){this.u7q_1=t,this.v7q_1=n,this.w7q_1=i,this.x7q_1=e,this.y7q_1=r,this.z7q_1=s,this.a7r_1=o,this.b7r_1=u,this.c7r_1=a}function id(t){var n=t,i=t.i4q();return i.z4r(),n.r4p_1=i.o1d(),Xr}function ed(t,n){this.e7t_1=t,Ks.call(this,n)}function rd(t,n,i,e){mS.call(this,null==e?i.w7p_1:e,td(ad(),i)),this.r7t_1="WMTS",this.s7t_1=t,this.t7t_1=n,this.u7t_1=i.z7p_1,this.v7t_1=!0}function sd(t,n,i,e,r,s){Ks.call(this,s),this.e7u_1=t,this.f7u_1=n,this.g7u_1=i,this.h7u_1=e,this.i7u_1=r}function od(t,n,i){Ks.call(this,i),this.h7p_1=t,this.i7p_1=n}function ud(){Pt=this,this.d7r_1="WMTS",this.e7r_1=28e-5,this.f7r_1="{style}",this.g7r_1="{TileMatrixSet}",this.h7r_1=bo(["image/png","image/jpg","image/jpeg","image/gif","image/bmp"]),this.i7r_1=du(Yr,id)}function ad(){return null==Pt&&new ud,Pt}function hd(){this.p7u_1="{TileMatrix}",this.q7u_1="{TileRow}",this.r7u_1="{TileCol}"}function _d(t,n,i,e){this.s7u_1=t,this.t7u_1=n,this.u7u_1=i,this.v7u_1=e,this.w7u_1="WMTS 1.0.0"}function ld(){}function cd(){Lt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsAttribution",this,3);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/wms","")),t.s3c("onlineResource",!0),t.s3c("logoURL",!0),t.u3c(new ku("Attribution","http://www.opengis.net/wms","")),this.y7u_1=t}function fd(){return null==Lt&&new cd,Lt}function vd(t,n,i,e,r){return function(t,n,i,e,r,s){return 0!=(0&t)&&Wo(t,0,fd().y7u_1),s.z7u_1=0==(1&t)?null:n,s.a7v_1=0==(2&t)?null:i,s.b7v_1=0==(4&t)?null:e,s}(t,n,i,e,0,Ts(Pr(dd)))}function dd(t,n,i){t=t===Yr?null:t,n=n===Yr?null:n,i=i===Yr?null:i,this.z7u_1=t,this.a7v_1=n,this.b7v_1=i}function wd(){Ft=this;var t=new Fo("earth.worldwind.ogc.wms.WmsAuthorityUrl",this,2);t.s3c("name",!1),t.s3c("onlineResource",!1),t.u3c(new ku("AuthorityURL","http://www.opengis.net/wms","")),this.c7v_1=t}function pd(){return null==Ft&&new wd,Ft}function md(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Wo(t,3,pd().c7v_1),r.d7v_1=n,r.e7v_1=i,r}(t,n,i,0,Ts(Pr(gd)))}function gd(){}function bd(){Ut=this;var t=new Fo("earth.worldwind.ogc.wms.WmsBoundingBox",this,7);t.s3c("CRS",!1),t.s3c("minx",!1),t.s3c("maxx",!1),t.s3c("miny",!1),t.s3c("maxy",!1),t.s3c("resx",!0),t.s3c("resy",!0),t.u3c(new ku("BoundingBox","http://www.opengis.net/wms","")),this.f7v_1=t}function $d(){return null==Ut&&new bd,Ut}function yd(t,n,i,e,r,s,o,u,a){return function(t,n,i,e,r,s,o,u,a,h){return 31!=(31&t)&&Wo(t,31,$d().f7v_1),h.g7v_1=n,h.h7v_1=i,h.i7v_1=e,h.j7v_1=r,h.k7v_1=s,h.l7v_1=0==(32&t)?null:o,h.m7v_1=0==(64&t)?null:u,h}(t,n,i,e,r,s,o,u,0,Ts(Pr(kd)))}function kd(){}function xd(){}function Sd(){Ht=this;var t=new Fo("earth.worldwind.ogc.wms.WmsCapabilities",this,4);t.s3c("version",!0),t.s3c("updateSequence",!0),t.s3c("service",!1),t.s3c("capability",!1),t.u3c(new ku("WMS_Capabilities","http://www.opengis.net/wms","")),this.n7v_1=t}function Ed(){return null==Ht&&new Sd,Ht}function Cd(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 12!=(12&t)&&Wo(t,12,Ed().n7v_1),o.v7l_1=0==(1&t)?"1.3.0":n,o.w7l_1=0==(2&t)?null:i,o.x7l_1=e,o.y7l_1=r,o.y7l_1.t7l_1=o,o}(t,n,i,e,r,0,Ts(Pr(qd)))}function qd(t,n,i,e){t=t===Yr?"1.3.0":t,n=n===Yr?null:n,this.v7l_1=t,this.w7l_1=n,this.x7l_1=i,this.y7l_1=e,this.y7l_1.t7l_1=this}function Od(){Vt=this,this.p7v_1=[null,new Go(Iw()),null]}function zd(){return null==Vt&&new Od,Vt}function Ad(){Bt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsCapability",this,3);t.s3c("request",!1),t.s3c("layers",!0),t.s3c("exception",!0),t.u3c(new ku("Capability","http://www.opengis.net/wms","")),this.q7v_1=t}function Td(){return null==Bt&&new Ad,Bt}function Id(t,n,i,e,r){return function(t,n,i,e,r,s){1!=(1&t)&&Wo(t,1,Td().q7v_1),s.q7l_1=n,s.r7l_1=0==(2&t)?Ls():i,s.s7l_1=0==(4&t)?new dw:e;for(var o=s.r7l_1.v();o.w();)o.y().q7k_1=s;return s}(t,n,i,e,0,Ts(Pr(Dd)))}function Dd(){}function jd(){Yt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsContactAddress",this,6);t.s3c("addressType",!1),t.t3c(new yu(!0)),t.t3c(new ku("AddressType","http://www.opengis.net/wms","")),t.s3c("address",!1),t.t3c(new yu(!0)),t.t3c(new ku("Address","http://www.opengis.net/wms","")),t.s3c("city",!1),t.t3c(new yu(!0)),t.t3c(new ku("City","http://www.opengis.net/wms","")),t.s3c("stateOrProvince",!1),t.t3c(new yu(!0)),t.t3c(new ku("StateOrProvince","http://www.opengis.net/wms","")),t.s3c("postCode",!1),t.t3c(new yu(!0)),t.t3c(new ku("PostCode","http://www.opengis.net/wms","")),t.s3c("country",!1),t.t3c(new yu(!0)),t.t3c(new ku("Country","http://www.opengis.net/wms","")),t.u3c(new ku("ContactAddress","http://www.opengis.net/wms","")),this.r7v_1=t}function Md(){return null==Yt&&new jd,Yt}function Nd(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 63!=(63&t)&&Wo(t,63,Md().r7v_1),a.s7v_1=n,a.t7v_1=i,a.u7v_1=e,a.v7v_1=r,a.w7v_1=s,a.x7v_1=o,a}(t,n,i,e,r,s,o,0,Ts(Pr(Rd)))}function Rd(){}function Pd(){}function Ld(){Wt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsContactInformation",this,6);t.s3c("position",!0),t.t3c(new yu(!0)),t.t3c(new ku("ContactPosition","http://www.opengis.net/wms","")),t.s3c("voiceTelephone",!0),t.t3c(new yu(!0)),t.t3c(new ku("ContactVoiceTelephone","http://www.opengis.net/wms","")),t.s3c("facsimileTelephone",!0),t.t3c(new yu(!0)),t.t3c(new ku("ContactFacsimileNumber","http://www.opengis.net/wms","")),t.s3c("electronicMailAddress",!0),t.t3c(new yu(!0)),t.t3c(new ku("ContactElectronicMailAddress","http://www.opengis.net/wms","")),t.s3c("contactAddress",!0),t.s3c("contactPersonPrimary",!0),t.u3c(new ku("ContactInformation","http://www.opengis.net/wms","")),this.y7v_1=t}function Fd(){return null==Wt&&new Ld,Wt}function Ud(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 0!=(0&t)&&Wo(t,0,Fd().y7v_1),a.z7v_1=0==(1&t)?null:n,a.a7w_1=0==(2&t)?null:i,a.b7w_1=0==(4&t)?null:e,a.c7w_1=0==(8&t)?null:r,a.d7w_1=0==(16&t)?null:s,a.e7w_1=0==(32&t)?null:o,a}(t,n,i,e,r,s,o,0,Ts(Pr(Hd)))}function Hd(t,n,i,e,r,s){t=t===Yr?null:t,n=n===Yr?null:n,i=i===Yr?null:i,e=e===Yr?null:e,r=r===Yr?null:r,s=s===Yr?null:s,this.z7v_1=t,this.a7w_1=n,this.b7w_1=i,this.c7w_1=e,this.d7w_1=r,this.e7w_1=s}function Vd(){Gt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsContactPersonPrimary",this,2);t.s3c("contactPerson",!1),t.t3c(new yu(!0)),t.t3c(new ku("ContactPerson","http://www.opengis.net/wms","")),t.s3c("contactOrganization",!1),t.t3c(new yu(!0)),t.t3c(new ku("ContactOrganization","http://www.opengis.net/wms","")),t.u3c(new ku("ContactPersonPrimary","http://www.opengis.net/wms","")),this.f7w_1=t}function Bd(){return null==Gt&&new Vd,Gt}function Yd(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Wo(t,3,Bd().f7w_1),r.g7w_1=n,r.h7w_1=i,r}(t,n,i,0,Ts(Pr(Wd)))}function Wd(){}function Gd(){Kt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsDcpType.WmsHttp",this,2);t.s3c("get",!1),t.t3c(new ku("Get","http://www.opengis.net/wms","")),t.s3c("post",!0),t.t3c(new ku("Post","http://www.opengis.net/wms","")),t.u3c(new ku("HTTP","http://www.opengis.net/wms","")),this.i7w_1=t}function Kd(){return null==Kt&&new Gd,Kt}function Xd(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Wo(t,1,Kd().i7w_1),r.j7w_1=n,r.k7w_1=0==(2&t)?null:i,r}(t,n,i,0,Ts(Pr(tw)))}function Jd(){Xt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsDcpType.WmsHttpProtocol",this,1);t.s3c("onlineResource",!1),this.l7w_1=t}function Zd(){return null==Xt&&new Jd,Xt}function Qd(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Wo(t,1,Zd().l7w_1),e.m7w_1=n,e}(t,n,0,Ts(Pr(nw)))}function tw(){}function nw(){}function iw(){Jt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsDcpType",this,1);t.s3c("http",!1),t.u3c(new ku("DCPType","http://www.opengis.net/wms","")),this.n7w_1=t}function ew(){return null==Jt&&new iw,Jt}function rw(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Wo(t,1,ew().n7w_1),e.o7w_1=n,e}(t,n,0,Ts(Pr(sw)))}function sw(){}function ow(){Zt=this;var t=new Fo("earth.worldwind.ogc.wms.WmsDimension",this,8);t.s3c("name",!1),t.s3c("units",!1),t.s3c("unitSymbol",!0),t.s3c("default",!0),t.s3c("multipleValues",!0),t.s3c("nearestValue",!0),t.s3c("current",!0),t.s3c("value",!0),t.t3c(new qu(!0)),t.u3c(new ku("Dimension","http://www.opengis.net/wms","")),this.s7w_1=t}function uw(){return null==Zt&&new ow,Zt}function aw(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){return 3!=(3&t)&&Wo(t,3,uw().s7w_1),_.t7w_1=n,_.u7w_1=i,_.v7w_1=0==(4&t)?null:e,_.w7w_1=0==(8&t)?null:r,_.x7w_1=0==(16&t)?null:s,_.y7w_1=0==(32&t)?null:o,_.z7w_1=0==(64&t)?null:u,_.a7x_1=0==(128&t)?null:a,_}(t,n,i,e,r,s,o,u,a,0,Ts(Pr(hw)))}function hw(){}function _w(){Qt=this,this.b7x_1=[new Go(Uo())]}function lw(){return null==Qt&&new _w,Qt}function cw(){tn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsException",this,1);t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wms","")),t.u3c(new ku("Exception","http://www.opengis.net/wms","")),this.c7x_1=t}function fw(){return null==tn&&new cw,tn}function vw(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Wo(t,0,fw().c7x_1),e.d7x_1=0==(1&t)?Ls():n,e}(t,n,0,Ts(Pr(dw)))}function dw(t){lw(),t=t===Yr?Ls():t,this.d7x_1=t}function ww(){nn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsGeographicBoundingBox",this,4);t.s3c("north",!1),t.t3c(new yu(!0)),t.t3c(new ku("northBoundLatitude","http://www.opengis.net/wms","")),t.s3c("east",!1),t.t3c(new yu(!0)),t.t3c(new ku("eastBoundLongitude","http://www.opengis.net/wms","")),t.s3c("south",!1),t.t3c(new yu(!0)),t.t3c(new ku("southBoundLatitude","http://www.opengis.net/wms","")),t.s3c("west",!1),t.t3c(new yu(!0)),t.t3c(new ku("westBoundLongitude","http://www.opengis.net/wms","")),t.u3c(new ku("EX_GeographicBoundingBox","http://www.opengis.net/wms","")),this.e7x_1=t}function pw(){return null==nn&&new ww,nn}function mw(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 15!=(15&t)&&Wo(t,15,pw().e7x_1),o.f7x_1=n,o.g7x_1=i,o.h7x_1=e,o.i7x_1=r,o}(t,n,i,e,r,0,Ts(Pr(gw)))}function gw(){}function bw(){en=this;var t=new Fo("earth.worldwind.ogc.wms.WmsIdentifier",this,2);t.s3c("authority",!1),t.s3c("identifier",!1),t.t3c(new qu(!0)),t.u3c(new ku("Identifier","http://www.opengis.net/wms","")),this.j7x_1=t}function $w(){return null==en&&new bw,en}function yw(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Wo(t,3,$w().j7x_1),r.k7x_1=n,r.l7x_1=i,r}(t,n,i,0,Ts(Pr(kw)))}function kw(){}function xw(){rn=this,this.m7x_1=[new Go(Uo()),null]}function Sw(){return null==rn&&new xw,rn}function Ew(){sn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsInfoUrl",this,2);t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wms","")),t.s3c("onlineResource",!1),this.n7x_1=t}function Cw(){return null==sn&&new Ew,sn}function qw(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Wo(t,2,Cw().n7x_1),r.o7x_1=0==(1&t)?Ls():n,r.p7x_1=i,r}(t,n,i,0,Ts(Pr(Ow)))}function Ow(){}function zw(){on=this,this.q7x_1=[null,null,null,null,new Go(Uo()),new Go(pp()),new Go(Uo()),null,new Go($d()),new Go(uw()),null,new Go(pd()),new Go($w()),new Go(Bw()),new Go(Cw()),new Go(Cw()),null,null,null,null,null,null,null,null]}function Aw(){return null==on&&new zw,on}function Tw(){un=this;var t=new Fo("earth.worldwind.ogc.wms.WmsLayer",this,24);t.s3c("layers",!0),t.s3c("name",!0),t.t3c(new yu(!0)),t.t3c(new ku("Name","http://www.opengis.net/wms","")),t.s3c("title",!1),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/wms","")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/wms","")),t.s3c("keywordList",!0),t.t3c(new ku("KeywordList","http://www.opengis.net/wms","")),t.t3c(new Au("Keyword","http://www.opengis.net/wms","")),t.s3c("_styles",!0),t.s3c("_referenceSystems",!0),t.t3c(new ku("CRS","http://www.opengis.net/wms","")),t.s3c("_geographicBoundingBox",!0),t.s3c("_boundingBoxes",!0),t.s3c("_dimensions",!0),t.s3c("_attribution",!0),t.s3c("_authorityUrls",!0),t.s3c("identifiers",!0),t.s3c("metadataUrls",!0),t.s3c("dataUrls",!0),t.t3c(new ku("DataURL","http://www.opengis.net/wms","")),t.s3c("featureListUrls",!0),t.t3c(new ku("FeatureListURL","http://www.opengis.net/wms","")),t.s3c("_maxScaleDenominator",!0),t.t3c(new yu(!0)),t.t3c(new ku("MaxScaleDenominator","http://www.opengis.net/wms","")),t.s3c("_minScaleDenominator",!0),t.t3c(new yu(!0)),t.t3c(new ku("MinScaleDenominator","http://www.opengis.net/wms","")),t.s3c("isQueryable",!0),t.t3c(new ku("queryable","http://www.opengis.net/wms","")),t.s3c("_cascaded",!0),t.t3c(new ku("cascaded","http://www.opengis.net/wms","")),t.s3c("isOpaque",!0),t.t3c(new ku("opaque","http://www.opengis.net/wms","")),t.s3c("isNoSubsets",!0),t.t3c(new ku("noSubsets","http://www.opengis.net/wms","")),t.s3c("_fixedWidth",!0),t.t3c(new ku("fixedWidth","http://www.opengis.net/wms","")),t.s3c("_fixedHeight",!0),t.t3c(new ku("fixedHeight","http://www.opengis.net/wms","")),t.u3c(new ku("Layer","http://www.opengis.net/wms","")),this.r7x_1=t}function Iw(){return null==un&&new Tw,un}function Dw(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S){return function(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E){4!=(4&t)&&Wo(t,4,Iw().r7x_1),E.s7j_1=0==(1&t)?Ls():n,E.t7j_1=0==(2&t)?null:i,E.u7j_1=e,E.v7j_1=0==(8&t)?null:r,E.w7j_1=0==(16&t)?Ls():s,E.x7j_1=0==(32&t)?Ls():o,E.y7j_1=0==(64&t)?Ls():u,E.z7j_1=0==(128&t)?null:a,E.a7k_1=0==(256&t)?Ls():h,E.b7k_1=0==(512&t)?Ls():_,E.c7k_1=0==(1024&t)?null:l,E.d7k_1=0==(2048&t)?Ls():c,E.e7k_1=0==(4096&t)?Ls():f,E.f7k_1=0==(8192&t)?Ls():v,E.g7k_1=0==(16384&t)?Ls():d,E.h7k_1=0==(32768&t)?Ls():w,E.i7k_1=0==(65536&t)?null:p,E.j7k_1=0==(131072&t)?null:m,E.k7k_1=0!=(262144&t)&&g,E.l7k_1=0==(524288&t)?null:b,E.m7k_1=0!=(1048576&t)&&$,E.n7k_1=0!=(2097152&t)&&y,E.o7k_1=0==(4194304&t)?null:k,E.p7k_1=0==(8388608&t)?null:x,E.q7k_1=null,E.r7k_1=null;for(var C=E.s7j_1.v();C.w();)C.y().r7k_1=E;return E}(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,0,Ts(Pr(jw)))}function jw(){}function Mw(){an=this,this.s7x_1=[new Du(Uo()),null,null,null]}function Nw(){return null==an&&new Mw,an}function Rw(){hn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsLogoUrl",this,4);t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wms","")),t.s3c("onlineResource",!1),t.s3c("width",!0),t.s3c("height",!0),t.u3c(new ku("LogoURL","http://www.opengis.net/wms","")),this.t7x_1=t}function Pw(){return null==hn&&new Rw,hn}function Lw(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 2!=(2&t)&&Wo(t,2,Pw().t7x_1),o.u7x_1=0==(1&t)?ju():n,o.v7x_1=i,o.w7x_1=0==(4&t)?null:e,o.x7x_1=0==(8&t)?null:r,o}(t,n,i,e,r,0,Ts(Pr(Fw)))}function Fw(){}function Uw(){_n=this,this.y7x_1=[null,new Go(Uo()),null]}function Hw(){return null==_n&&new Uw,_n}function Vw(){ln=this;var t=new Fo("earth.worldwind.ogc.wms.WmsMetadataUrl",this,3);t.s3c("type",!1),t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wms","")),t.s3c("onlineResource",!1),t.u3c(new ku("MetadataURL","http://www.opengis.net/wms","")),this.z7x_1=t}function Bw(){return null==ln&&new Vw,ln}function Yw(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Wo(t,5,Bw().z7x_1),s.a7y_1=n,s.b7y_1=0==(2&t)?Ls():i,s.c7y_1=e,s}(t,n,i,e,0,Ts(Pr(Ww)))}function Ww(){}function Gw(){cn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsOnlineResource",this,2);t.s3c("type",!0),t.t3c(new ku("type","http://www.w3.org/1999/xlink","xlink")),t.s3c("url",!1),t.t3c(new ku("href","http://www.w3.org/1999/xlink","xlink")),t.u3c(new ku("OnlineResource","http://www.opengis.net/wms","")),this.d7y_1=t}function Kw(){return null==cn&&new Gw,cn}function Xw(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Wo(t,2,Kw().d7y_1),r.q7w_1=0==(1&t)?"simple":n,r.r7w_1=i,r}(t,n,i,0,Ts(Pr(Jw)))}function Jw(){}function Zw(){fn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsRequest",this,3);t.s3c("getCapabilities",!1),t.t3c(new ku("GetCapabilities","http://www.opengis.net/wms","")),t.s3c("getMap",!1),t.t3c(new ku("GetMap","http://www.opengis.net/wms","")),t.s3c("getFeatureInfo",!0),t.t3c(new ku("GetFeatureInfo","http://www.opengis.net/wms","")),t.u3c(new ku("Request","http://www.opengis.net/wms","")),this.e7y_1=t}function Qw(){return null==fn&&new Zw,fn}function tp(t,n,i,e,r){return function(t,n,i,e,r,s){return 3!=(3&t)&&Wo(t,3,Qw().e7y_1),s.i7o_1=n,s.j7o_1=i,s.k7o_1=0==(4&t)?null:e,s}(t,n,i,e,0,Ts(Pr(np)))}function np(){}function ip(){vn=this,this.f7y_1=[new Go(Uo()),null]}function ep(){return null==vn&&new ip,vn}function rp(){dn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsRequestOperation",this,2);t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wms","")),t.s3c("dcpType",!1),this.g7y_1=t}function sp(){return null==dn&&new rp,dn}function op(t,n,i,e){return function(t,n,i,e,r){return 2!=(2&t)&&Wo(t,2,sp().g7y_1),r.l7o_1=0==(1&t)?Ls():n,r.m7o_1=i,r}(t,n,i,0,Ts(Pr(up)))}function up(){}function ap(){wn=this,this.h7y_1=[null,null,null,null,null,new Go(Uo()),null,null,null,null,null]}function hp(){return null==wn&&new ap,wn}function _p(){pn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsService",this,11);t.s3c("name",!1),t.t3c(new yu(!0)),t.t3c(new ku("Name","http://www.opengis.net/wms","")),t.s3c("title",!1),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/wms","")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/wms","")),t.s3c("fees",!0),t.t3c(new yu(!0)),t.t3c(new ku("Fees","http://www.opengis.net/wms","")),t.s3c("accessConstraints",!0),t.t3c(new yu(!0)),t.t3c(new ku("AccessConstraints","http://www.opengis.net/wms","")),t.s3c("keywordList",!0),t.t3c(new ku("KeywordList","http://www.opengis.net/wms","")),t.t3c(new Au("Keyword","http://www.opengis.net/wms","")),t.s3c("onlineResource",!1),t.s3c("contactInformation",!0),t.s3c("maxWidth",!0),t.t3c(new yu(!0)),t.t3c(new ku("MaxWidth","http://www.opengis.net/wms","")),t.s3c("maxHeight",!0),t.t3c(new yu(!0)),t.t3c(new ku("MaxHeight","http://www.opengis.net/wms","")),t.s3c("layerLimit",!0),t.t3c(new yu(!0)),t.t3c(new ku("LayerLimit","http://www.opengis.net/wms","")),t.u3c(new ku("Service","http://www.opengis.net/wms","")),this.i7y_1=t}function lp(){return null==pn&&new _p,pn}function cp(t,n,i,e,r,s,o,u,a,h,_,l,c){return function(t,n,i,e,r,s,o,u,a,h,_,l,c,f){return 67!=(67&t)&&Wo(t,67,lp().i7y_1),f.z7l_1=n,f.a7m_1=i,f.b7m_1=0==(4&t)?null:e,f.c7m_1=0==(8&t)?null:r,f.d7m_1=0==(16&t)?null:s,f.e7m_1=0==(32&t)?Ls():o,f.f7m_1=u,f.g7m_1=0==(128&t)?null:a,f.h7m_1=0==(256&t)?null:h,f.i7m_1=0==(512&t)?null:_,f.j7m_1=0==(1024&t)?null:l,f}(t,n,i,e,r,s,o,u,a,h,_,l,0,Ts(Pr(fp)))}function fp(){}function vp(){mn=this,this.j7y_1=[null,null,null,new Go(Pw()),null,null]}function dp(){return null==mn&&new vp,mn}function wp(){gn=this;var t=new Fo("earth.worldwind.ogc.wms.WmsStyle",this,6);t.s3c("name",!1),t.t3c(new yu(!0)),t.t3c(new ku("Name","http://www.opengis.net/wms","")),t.s3c("title",!1),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/wms","")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/wms","")),t.s3c("legendUrls",!0),t.t3c(new ku("LegendURL","http://www.opengis.net/wms","")),t.s3c("styleSheetUrl",!0),t.t3c(new ku("StyleSheetURL","http://www.opengis.net/wms","")),t.s3c("styleUrl",!0),t.t3c(new ku("StyleURL","http://www.opengis.net/wms","")),t.u3c(new ku("Style","http://www.opengis.net/wms","")),this.k7y_1=t}function pp(){return null==gn&&new wp,gn}function mp(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 3!=(3&t)&&Wo(t,3,pp().k7y_1),a.l7y_1=n,a.m7y_1=i,a.n7y_1=0==(4&t)?null:e,a.o7y_1=0==(8&t)?Ls():r,a.p7y_1=0==(16&t)?null:s,a.q7y_1=0==(32&t)?null:o,a}(t,n,i,e,r,s,o,0,Ts(Pr(gp)))}function gp(){}function bp(){bn=this,this.r7y_1=[new Go(Uo()),null,null,null,null,new Go(Uo())]}function $p(){return null==bn&&new bp,bn}function yp(){$n=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsAddress",this,6);t.s3c("deliveryPoints",!0),t.t3c(new ku("DeliveryPoint","http://www.opengis.net/ows/1.1","ows")),t.s3c("city",!0),t.t3c(new yu(!0)),t.t3c(new ku("City","http://www.opengis.net/ows/1.1","ows")),t.s3c("administrativeArea",!0),t.t3c(new yu(!0)),t.t3c(new ku("AdministrativeArea","http://www.opengis.net/ows/1.1","ows")),t.s3c("postalCode",!0),t.t3c(new yu(!0)),t.t3c(new ku("PostalCode","http://www.opengis.net/ows/1.1","ows")),t.s3c("country",!0),t.t3c(new yu(!0)),t.t3c(new ku("Country","http://www.opengis.net/ows/1.1","ows")),t.s3c("electronicMailAddresses",!0),t.t3c(new ku("ElectronicMailAddress","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("Address","http://www.opengis.net/ows/1.1","ows")),this.s7y_1=t}function kp(){return null==$n&&new yp,$n}function xp(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 0!=(0&t)&&Wo(t,0,kp().s7y_1),a.t7y_1=0==(1&t)?Ls():n,a.u7y_1=0==(2&t)?null:i,a.v7y_1=0==(4&t)?null:e,a.w7y_1=0==(8&t)?null:r,a.x7y_1=0==(16&t)?null:s,a.y7y_1=0==(32&t)?Ls():o,a}(t,n,i,e,r,s,o,0,Ts(Pr(Sp)))}function Sp(t,n,i,e,r,s){$p(),t=t===Yr?Ls():t,n=n===Yr?null:n,i=i===Yr?null:i,e=e===Yr?null:e,r=r===Yr?null:r,s=s===Yr?Ls():s,this.t7y_1=t,this.u7y_1=n,this.v7y_1=i,this.w7y_1=e,this.x7y_1=r,this.y7y_1=s}function Ep(){yn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsBoundingBox",this,3);t.s3c("crs",!0),t.s3c("lowerCorner",!1),t.t3c(new yu(!0)),t.t3c(new ku("LowerCorner","http://www.opengis.net/ows/1.1","ows")),t.s3c("upperCorner",!1),t.t3c(new yu(!0)),t.t3c(new ku("UpperCorner","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("BoundingBox","http://www.opengis.net/ows/1.1","ows")),this.z7y_1=t}function Cp(){return null==yn&&new Ep,yn}function qp(t,n,i,e,r){return function(t,n,i,e,r,s){return 6!=(6&t)&&Wo(t,6,Cp().z7y_1),s.j7r_1=0==(1&t)?null:n,s.k7r_1=i,s.l7r_1=e,s}(t,n,i,e,0,Ts(Pr(Op)))}function Op(){}function zp(){kn=this,this.a7z_1=[null,new Go(Uo())]}function Ap(){return null==kn&&new zp,kn}function Tp(){xn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsConstraint",this,2);t.s3c("name",!1),t.s3c("allowedValues",!0),t.t3c(new ku("AllowedValues","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Value","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Mu("AnyValue")),t.u3c(new ku("Constraint","http://www.opengis.net/ows/1.1","ows")),this.b7z_1=t}function Ip(){return null==xn&&new Tp,xn}function Dp(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Wo(t,1,Ip().b7z_1),r.u7s_1=n,r.v7s_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(jp)))}function jp(){}function Mp(){}function Np(){Sn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsContactInfo",this,5);t.s3c("phone",!0),t.s3c("address",!0),t.s3c("onlineResource",!0),t.s3c("hoursOfService",!0),t.t3c(new yu(!0)),t.t3c(new ku("HoursOfService","http://www.opengis.net/ows/1.1","ows")),t.s3c("contactInstructions",!0),t.t3c(new yu(!0)),t.t3c(new ku("ContactInstructions","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("ContactInfo","http://www.opengis.net/ows/1.1","ows")),this.c7z_1=t}function Rp(){return null==Sn&&new Np,Sn}function Pp(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){return 0!=(0&t)&&Wo(t,0,Rp().c7z_1),u.d7z_1=0==(1&t)?null:n,u.e7z_1=0==(2&t)?null:i,u.f7z_1=0==(4&t)?null:e,u.g7z_1=0==(8&t)?null:r,u.h7z_1=0==(16&t)?null:s,u}(t,n,i,e,r,s,0,Ts(Pr(Lp)))}function Lp(t,n,i,e,r){t=t===Yr?null:t,n=n===Yr?null:n,i=i===Yr?null:i,e=e===Yr?null:e,r=r===Yr?null:r,this.d7z_1=t,this.e7z_1=n,this.f7z_1=i,this.g7z_1=e,this.h7z_1=r}function Fp(){En=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsDcp",this,1);t.s3c("http",!1),t.u3c(new ku("DCP","http://www.opengis.net/ows/1.1","ows")),this.i7z_1=t}function Up(){return null==En&&new Fp,En}function Hp(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Wo(t,1,Up().i7z_1),e.q7s_1=n,e}(t,n,0,Ts(Pr(Vp)))}function Vp(){}function Bp(){}function Yp(){Cn=this,this.l7z_1=[new Go(nm()),new Go(nm())]}function Wp(){return null==Cn&&new Yp,Cn}function Gp(){qn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsHttp",this,2);t.s3c("getMethods",!0),t.t3c(new ku("Get","http://www.opengis.net/ows/1.1","ows")),t.s3c("postMethods",!0),t.t3c(new ku("Post","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("HTTP","http://www.opengis.net/ows/1.1","ows")),this.m7z_1=t}function Kp(){return null==qn&&new Gp,qn}function Xp(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Wo(t,0,Kp().m7z_1),r.j7z_1=0==(1&t)?Ls():n,r.k7z_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(Jp)))}function Jp(t,n){Wp(),t=t===Yr?Ls():t,n=n===Yr?Ls():n,this.j7z_1=t,this.k7z_1=n}function Zp(){On=this,this.n7z_1=[null,new Go(Ip())]}function Qp(){return null==On&&new Zp,On}function tm(){zn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsHttpMethod",this,2);t.s3c("url",!1),t.t3c(new ku("href","http://www.w3.org/1999/xlink","xlink")),t.s3c("constraints",!0),this.o7z_1=t}function nm(){return null==zn&&new tm,zn}function im(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Wo(t,1,nm().o7z_1),r.s7s_1=n,r.t7s_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(em)))}function em(){}function rm(){An=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsOnlineResource",this,1);t.s3c("url",!1),t.t3c(new ku("href","http://www.w3.org/1999/xlink","xlink")),t.u3c(new ku("OnlineResource","http://www.opengis.net/ows/1.1","ows")),this.p7z_1=t}function sm(){return null==An&&new rm,An}function om(t,n,i){return function(t,n,i,e){return 1!=(1&t)&&Wo(t,1,sm().p7z_1),e.q7z_1=n,e}(t,n,0,Ts(Pr(um)))}function um(){}function am(){Tn=this,this.r7z_1=[null,new Go(Up())]}function hm(){return null==Tn&&new am,Tn}function _m(){In=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsOperation",this,2);t.s3c("name",!1),t.s3c("dcps",!0),t.u3c(new ku("Operation","http://www.opengis.net/ows/1.1","ows")),this.s7z_1=t}function lm(){return null==In&&new _m,In}function cm(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Wo(t,1,lm().s7z_1),r.o7s_1=n,r.p7s_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(fm)))}function fm(){}function vm(){Dn=this,this.t7z_1=[new Go(lm())]}function dm(){return null==Dn&&new vm,Dn}function wm(){jn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsOperationsMetadata",this,1);t.s3c("operations",!0),t.u3c(new ku("OperationsMetadata","http://www.opengis.net/ows/1.1","ows")),this.u7z_1=t}function pm(){return null==jn&&new wm,jn}function mm(t,n,i){return function(t,n,i,e){return 0!=(0&t)&&Wo(t,0,pm().u7z_1),e.m7s_1=0==(1&t)?Ls():n,e}(t,n,0,Ts(Pr(gm)))}function gm(t){dm(),t=t===Yr?Ls():t,this.m7s_1=t}function bm(){Mn=this,this.v7z_1=[new Go(Uo()),new Go(Uo())]}function $m(){return null==Mn&&new bm,Mn}function ym(){Nn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsPhone",this,2);t.s3c("voice",!0),t.t3c(new yu(!0)),t.t3c(new ku("Voice","http://www.opengis.net/ows/1.1","ows")),t.s3c("fax",!0),t.t3c(new yu(!0)),t.t3c(new ku("Facsimile","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("Phone","http://www.opengis.net/ows/1.1","ows")),this.w7z_1=t}function km(){return null==Nn&&new ym,Nn}function xm(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Wo(t,0,km().w7z_1),r.x7z_1=0==(1&t)?Ls():n,r.y7z_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(Sm)))}function Sm(t,n){$m(),t=t===Yr?Ls():t,n=n===Yr?Ls():n,this.x7z_1=t,this.y7z_1=n}function Em(){}function Cm(){Rn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsServiceContact",this,4);t.s3c("individualName",!0),t.t3c(new yu(!0)),t.t3c(new ku("IndividualName","http://www.opengis.net/ows/1.1","ows")),t.s3c("positionName",!0),t.t3c(new yu(!0)),t.t3c(new ku("PositionName","http://www.opengis.net/ows/1.1","ows")),t.s3c("contactInfo",!0),t.s3c("role",!0),t.t3c(new yu(!0)),t.t3c(new ku("Role","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("ServiceContact","http://www.opengis.net/ows/1.1","ows")),this.z7z_1=t}function qm(){return null==Rn&&new Cm,Rn}function Om(t,n,i,e,r,s){return function(t,n,i,e,r,s,o){return 0!=(0&t)&&Wo(t,0,qm().z7z_1),o.a80_1=0==(1&t)?null:n,o.b80_1=0==(2&t)?null:i,o.c80_1=0==(4&t)?null:e,o.d80_1=0==(8&t)?null:r,o}(t,n,i,e,r,0,Ts(Pr(zm)))}function zm(t,n,i,e){t=t===Yr?null:t,n=n===Yr?null:n,i=i===Yr?null:i,e=e===Yr?null:e,this.a80_1=t,this.b80_1=n,this.c80_1=i,this.d80_1=e}function Am(){Pn=this,this.e80_1=[null,null,new Go(Uo()),null,new Go(Uo()),null,new Go(Uo())]}function Tm(){return null==Pn&&new Am,Pn}function Im(){Ln=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsServiceIdentification",this,7);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("serviceType",!1),t.t3c(new yu(!0)),t.t3c(new ku("ServiceType","http://www.opengis.net/ows/1.1","ows")),t.s3c("serviceTypeVersions",!0),t.t3c(new ku("ServiceTypeVersion","http://www.opengis.net/ows/1.1","ows")),t.s3c("fees",!0),t.t3c(new yu(!0)),t.t3c(new ku("Fees","http://www.opengis.net/ows/1.1","ows")),t.s3c("accessConstraints",!0),t.t3c(new ku("AccessConstraints","http://www.opengis.net/ows/1.1","ows")),t.u3c(new ku("ServiceIdentification","http://www.opengis.net/ows/1.1","ows")),this.f80_1=t}function Dm(){return null==Ln&&new Im,Ln}function jm(t,n,i,e,r,s,o,u,a){return function(t,n,i,e,r,s,o,u,a,h){return 8!=(8&t)&&Wo(t,8,Dm().f80_1),Bp.call(h),h.g80_1=0==(1&t)?null:n,h.h80_1=0==(2&t)?null:i,h.i80_1=0==(4&t)?Ls():e,h.j80_1=r,h.k80_1=0==(16&t)?Ls():s,h.l80_1=0==(32&t)?null:o,h.m80_1=0==(64&t)?Ls():u,h}(t,n,i,e,r,s,o,u,0,Ts(Pr(Mm)))}function Mm(){}function Nm(){Fn=this;var t=new Fo("earth.worldwind.ogc.wmts.OwsServiceProvider",this,3);t.s3c("providerName",!1),t.t3c(new yu(!0)),t.t3c(new ku("ProviderName","http://www.opengis.net/ows/1.1","ows")),t.s3c("onlineResource",!0),t.t3c(new ku("ProviderSite","http://www.opengis.net/ows/1.1","ows")),t.s3c("serviceContact",!1),t.u3c(new ku("ServiceProvider","http://www.opengis.net/ows/1.1","ows")),this.n80_1=t}function Rm(){return null==Fn&&new Nm,Fn}function Pm(t,n,i,e,r){return function(t,n,i,e,r,s){return 5!=(5&t)&&Wo(t,5,Rm().n80_1),s.o80_1=n,s.p80_1=0==(2&t)?null:i,s.q80_1=e,s}(t,n,i,e,0,Ts(Pr(Lm)))}function Lm(){}function Fm(){Un=this,this.r80_1=[null,null,null,null,null,null,new Go(qg()),new Go(sm())]}function Um(){return null==Un&&new Fm,Un}function Hm(){Hn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsCapabilities",this,8);t.s3c("version",!1),t.s3c("updateSequence",!0),t.s3c("serviceIdentification",!0),t.s3c("serviceProvider",!0),t.s3c("operationsMetadata",!0),t.s3c("contents",!1),t.s3c("themes",!0),t.t3c(new ku("Themes","http://www.opengis.net/wmts/1.0","")),t.t3c(new Au("Theme","http://www.opengis.net/wmts/1.0","")),t.s3c("serviceMetadataUrls",!0),t.t3c(new ku("ServiceMetadataURL","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("Capabilities","http://www.opengis.net/wmts/1.0","")),this.s80_1=t}function Vm(){return null==Hn&&new Hm,Hn}function Bm(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){33!=(33&t)&&Wo(t,33,Vm().s80_1),_.e7s_1=n,_.f7s_1=0==(2&t)?null:i,_.g7s_1=0==(4&t)?null:e,_.h7s_1=0==(8&t)?null:r,_.i7s_1=0==(16&t)?null:s,_.j7s_1=o,_.k7s_1=0==(64&t)?Ls():u,_.l7s_1=0==(128&t)?Ls():a;for(var l=_.t5s().v();l.w();)l.y().j7q_1=_;return _}(t,n,i,e,r,s,o,u,a,0,Ts(Pr(Ym)))}function Ym(t,n,i,e,r,s,o,u){Um(),n=n===Yr?null:n,i=i===Yr?null:i,e=e===Yr?null:e,r=r===Yr?null:r,o=o===Yr?Ls():o,u=u===Yr?Ls():u,this.e7s_1=t,this.f7s_1=n,this.g7s_1=i,this.h7s_1=e,this.i7s_1=r,this.j7s_1=s,this.k7s_1=o,this.l7s_1=u;for(var a=this.t5s().v();a.w();)a.y().j7q_1=this}function Wm(){Vn=this,this.w80_1=[new Go(ag()),new Go(Vg())]}function Gm(){return null==Vn&&new Wm,Vn}function Km(){Bn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsContents",this,2);t.s3c("layers",!0),t.s3c("tileMatrixSets",!0),t.u3c(new ku("Contents","http://www.opengis.net/wmts/1.0","")),this.x80_1=t}function Xm(){return null==Bn&&new Km,Bn}function Jm(t,n,i,e){return function(t,n,i,e,r){return 0!=(0&t)&&Wo(t,0,Xm().x80_1),r.t80_1=0==(1&t)?Ls():n,r.u80_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(Zm)))}function Zm(t,n){Gm(),t=t===Yr?Ls():t,n=n===Yr?Ls():n,this.t80_1=t,this.u80_1=n}function Qm(){Yn=this,this.y80_1=[null,null,new Go(Uo()),null,null,null,null,null,new Go(Uo())]}function tg(){return null==Yn&&new Qm,Yn}function ng(){Wn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsDimension",this,9);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("unitOfMeasure",!0),t.t3c(new yu(!0)),t.t3c(new ku("UOM","http://www.opengis.net/ows/1.1","ows")),t.s3c("unitSymbol",!0),t.t3c(new yu(!0)),t.t3c(new ku("UnitSymbol","http://www.opengis.net/wmts/1.0","")),t.s3c("valueDefault",!0),t.t3c(new yu(!0)),t.t3c(new ku("Default","http://www.opengis.net/wmts/1.0","")),t.s3c("current",!0),t.t3c(new yu(!0)),t.t3c(new ku("Current","http://www.opengis.net/wmts/1.0","")),t.s3c("values",!0),t.t3c(new ku("Value","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("Dimension","http://www.opengis.net/wmts/1.0","")),this.z80_1=t}function ig(){return null==Wn&&new ng,Wn}function eg(t,n,i,e,r,s,o,u,a,h,_){return function(t,n,i,e,r,s,o,u,a,h,_,l){return 8!=(8&t)&&Wo(t,8,ig().z80_1),Bp.call(l),l.a81_1=0==(1&t)?null:n,l.b81_1=0==(2&t)?null:i,l.c81_1=0==(4&t)?Ls():e,l.d81_1=r,l.e81_1=0==(16&t)?null:s,l.f81_1=0==(32&t)?null:o,l.g81_1=0==(64&t)?null:u,l.h81_1=0==(128&t)?null:a,l.i81_1=0==(256&t)?Ls():h,l}(t,n,i,e,r,s,o,u,a,h,0,Ts(Pr(rg)))}function rg(){}function sg(){Gn=this,this.j81_1=[null,null,new Go(Uo()),null,new Go(Cp()),null,new Go(sm()),new Go(yg()),new Go(Uo()),new Go(Uo()),new Go(Xg()),new Go(wg()),new Go(ig())]}function og(){return null==Gn&&new sg,Gn}function ug(){Kn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsLayer",this,13);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("boundingBoxes",!0),t.s3c("wgs84BoundingBox",!0),t.t3c(new ku("WGS84BoundingBox","http://www.opengis.net/ows/1.1","ows")),t.s3c("metadata",!0),t.t3c(new ku("Metadata","http://www.opengis.net/ows/1.1","ows")),t.s3c("styles",!0),t.s3c("formats",!0),t.t3c(new ku("Format","http://www.opengis.net/wmts/1.0","")),t.s3c("infoFormats",!0),t.t3c(new ku("InfoFormat","http://www.opengis.net/wmts/1.0","")),t.s3c("tileMatrixSetLinks",!0),t.s3c("resourceUrls",!0),t.s3c("dimensions",!0),t.u3c(new ku("Layer","http://www.opengis.net/wmts/1.0","")),this.k81_1=t}function ag(){return null==Kn&&new ug,Kn}function hg(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v){return function(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v,d){return 8!=(8&t)&&Wo(t,8,ag().k81_1),Bp.call(d),d.w7p_1=0==(1&t)?null:n,d.x7p_1=0==(2&t)?null:i,d.y7p_1=0==(4&t)?Ls():e,d.z7p_1=r,d.a7q_1=0==(16&t)?Ls():s,d.b7q_1=0==(32&t)?null:o,d.c7q_1=0==(64&t)?Ls():u,d.d7q_1=0==(128&t)?Ls():a,d.e7q_1=0==(256&t)?Ls():h,d.f7q_1=0==(512&t)?Ls():_,d.g7q_1=0==(1024&t)?Ls():l,d.h7q_1=0==(2048&t)?Ls():c,d.i7q_1=0==(4096&t)?Ls():f,d}(t,n,i,e,r,s,o,u,a,h,_,l,c,f,0,Ts(Pr(_g)))}function _g(){}function lg(){Xn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsLegendURL",this,2);t.s3c("url",!1),t.t3c(new ku("href","http://www.w3.org/1999/xlink","xlink")),t.s3c("format",!1),t.u3c(new ku("LegendURL","http://www.opengis.net/wmts/1.0","")),this.n81_1=t}function cg(){return null==Xn&&new lg,Xn}function fg(t,n,i,e){return function(t,n,i,e,r){return 3!=(3&t)&&Wo(t,3,cg().n81_1),r.o81_1=n,r.p81_1=i,r}(t,n,i,0,Ts(Pr(vg)))}function vg(){}function dg(){Jn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsResourceUrl",this,3);t.s3c("format",!1),t.s3c("resourceType",!1),t.s3c("template",!1),t.u3c(new ku("ResourceURL","http://www.opengis.net/wmts/1.0","")),this.q81_1=t}function wg(){return null==Jn&&new dg,Jn}function pg(t,n,i,e,r){return function(t,n,i,e,r,s){return 7!=(7&t)&&Wo(t,7,wg().q81_1),s.l7q_1=n,s.m7q_1=i,s.n7q_1=e,s}(t,n,i,e,0,Ts(Pr(mg)))}function mg(){}function gg(){Zn=this,this.r81_1=[null,null,new Go(Uo()),null,null,new Go(cg())]}function bg(){return null==Zn&&new gg,Zn}function $g(){Qn=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsStyle",this,6);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("isDefault",!0),t.s3c("legendUrls",!0),t.u3c(new ku("Style","http://www.opengis.net/wmts/1.0","")),this.s81_1=t}function yg(){return null==Qn&&new $g,Qn}function kg(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 8!=(8&t)&&Wo(t,8,yg().s81_1),Bp.call(a),a.o7q_1=0==(1&t)?null:n,a.p7q_1=0==(2&t)?null:i,a.q7q_1=0==(4&t)?Ls():e,a.r7q_1=r,a.s7q_1=0!=(16&t)&&s,a.t7q_1=0==(32&t)?Ls():o,a}(t,n,i,e,r,s,o,0,Ts(Pr(xg)))}function xg(){}function Sg(){ti=this,this.t81_1=[null,null,new Go(Uo()),null,null,new Go(Uo())]}function Eg(){return null==ti&&new Sg,ti}function Cg(){ni=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsTheme",this,6);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("themes",!0),t.s3c("layerRefs",!0),t.t3c(new ku("LayerRef","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("Theme","http://www.opengis.net/wmts/1.0","")),this.u81_1=t}function qg(){return null==ni&&new Cg,ni}function Og(t,n,i,e,r,s,o,u){return function(t,n,i,e,r,s,o,u,a){return 8!=(8&t)&&Wo(t,8,qg().u81_1),Bp.call(a),a.v81_1=0==(1&t)?null:n,a.w81_1=0==(2&t)?null:i,a.x81_1=0==(4&t)?Ls():e,a.y81_1=r,a.z81_1=0==(16&t)?Ls():s,a.a82_1=0==(32&t)?Ls():o,a}(t,n,i,e,r,s,o,0,Ts(Pr(zg)))}function zg(){}function Ag(){ii=this,this.b82_1=[null,null,new Go(Uo()),null,null,null,null,null,null,null]}function Tg(){return null==ii&&new Ag,ii}function Ig(){ei=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsTileMatrix",this,10);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("scaleDenominator",!1),t.t3c(new yu(!0)),t.t3c(new ku("ScaleDenominator","http://www.opengis.net/wmts/1.0","")),t.s3c("topLeftCorner",!1),t.t3c(new yu(!0)),t.t3c(new ku("TopLeftCorner","http://www.opengis.net/wmts/1.0","")),t.s3c("tileWidth",!1),t.t3c(new yu(!0)),t.t3c(new ku("TileWidth","http://www.opengis.net/wmts/1.0","")),t.s3c("tileHeight",!1),t.t3c(new yu(!0)),t.t3c(new ku("TileHeight","http://www.opengis.net/wmts/1.0","")),t.s3c("matrixWidth",!1),t.t3c(new yu(!0)),t.t3c(new ku("MatrixWidth","http://www.opengis.net/wmts/1.0","")),t.s3c("matrixHeight",!1),t.t3c(new yu(!0)),t.t3c(new ku("MatrixHeight","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("TileMatrix","http://www.opengis.net/wmts/1.0","")),this.c82_1=t}function Dg(){return null==ei&&new Ig,ei}function jg(t,n,i,e,r,s,o,u,a,h,_,l){return function(t,n,i,e,r,s,o,u,a,h,_,l,c){return 1016!=(1016&t)&&Wo(t,1016,Dg().c82_1),Bp.call(c),c.u7r_1=0==(1&t)?null:n,c.v7r_1=0==(2&t)?null:i,c.w7r_1=0==(4&t)?Ls():e,c.x7r_1=r,c.y7r_1=s,c.z7r_1=o,c.a7s_1=u,c.b7s_1=a,c.c7s_1=h,c.d7s_1=_,c}(t,n,i,e,r,s,o,u,a,h,_,0,Ts(Pr(Mg)))}function Mg(){}function Ng(){ri=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsTileMatrixLimits",this,5);t.s3c("tileMatrixIdentifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("TileMatrix","http://www.opengis.net/wmts/1.0","")),t.s3c("minTileRow",!1),t.t3c(new yu(!0)),t.t3c(new ku("MinTileRow","http://www.opengis.net/wmts/1.0","")),t.s3c("maxTileRow",!1),t.t3c(new yu(!0)),t.t3c(new ku("MaxTileRow","http://www.opengis.net/wmts/1.0","")),t.s3c("minTileCol",!1),t.t3c(new yu(!0)),t.t3c(new ku("MinTileCol","http://www.opengis.net/wmts/1.0","")),t.s3c("maxTileCol",!1),t.t3c(new yu(!0)),t.t3c(new ku("MaxTileCol","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),this.d82_1=t}function Rg(){return null==ri&&new Ng,ri}function Pg(t,n,i,e,r,s,o){return function(t,n,i,e,r,s,o,u){return 31!=(31&t)&&Wo(t,31,Rg().d82_1),u.e82_1=n,u.f82_1=i,u.g82_1=e,u.h82_1=r,u.i82_1=s,u}(t,n,i,e,r,s,0,Ts(Pr(Lg)))}function Lg(){}function Fg(){si=this,this.j82_1=[null,null,new Go(Uo()),null,null,null,null,new Go(Dg())]}function Ug(){return null==si&&new Fg,si}function Hg(){oi=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsTileMatrixSet",this,8);t.s3c("title",!0),t.t3c(new yu(!0)),t.t3c(new ku("Title","http://www.opengis.net/ows/1.1","ows")),t.s3c("abstract",!0),t.t3c(new yu(!0)),t.t3c(new ku("Abstract","http://www.opengis.net/ows/1.1","ows")),t.s3c("keywords",!0),t.t3c(new ku("Keywords","http://www.opengis.net/ows/1.1","ows")),t.t3c(new Au("Keyword","http://www.opengis.net/ows/1.1","ows")),t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("Identifier","http://www.opengis.net/ows/1.1","ows")),t.s3c("supportedCrs",!1),t.t3c(new yu(!0)),t.t3c(new ku("SupportedCRS","http://www.opengis.net/ows/1.1","ows")),t.s3c("wellKnownScaleSet",!0),t.t3c(new yu(!0)),t.t3c(new ku("WellKnownScaleSet","http://www.opengis.net/wmts/1.0","")),t.s3c("boundingBox",!0),t.s3c("tileMatrices",!0),t.u3c(new ku("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),this.k82_1=t}function Vg(){return null==oi&&new Hg,oi}function Bg(t,n,i,e,r,s,o,u,a,h){return function(t,n,i,e,r,s,o,u,a,h,_){return 24!=(24&t)&&Wo(t,24,Vg().k82_1),Bp.call(_),_.m7r_1=0==(1&t)?null:n,_.n7r_1=0==(2&t)?null:i,_.o7r_1=0==(4&t)?Ls():e,_.p7r_1=r,_.q7r_1=s,_.r7r_1=0==(32&t)?null:o,_.s7r_1=0==(64&t)?null:u,_.t7r_1=0==(128&t)?Ls():a,_}(t,n,i,e,r,s,o,u,a,0,Ts(Pr(Yg)))}function Yg(){}function Wg(){ui=this,this.l82_1=[null,new Go(Rg())]}function Gg(){return null==ui&&new Wg,ui}function Kg(){ai=this;var t=new Fo("earth.worldwind.ogc.wmts.WmtsTileMatrixSetLink",this,2);t.s3c("identifier",!1),t.t3c(new yu(!0)),t.t3c(new ku("TileMatrixSet","http://www.opengis.net/wmts/1.0","")),t.s3c("tileMatrixSetLimits",!0),t.t3c(new ku("TileMatrixSetLimits","http://www.opengis.net/wmts/1.0","")),t.t3c(new Au("TileMatrixLimits","http://www.opengis.net/wmts/1.0","")),t.u3c(new ku("TileMatrixSetLink","http://www.opengis.net/wmts/1.0","")),this.m82_1=t}function Xg(){return null==ai&&new Kg,ai}function Jg(t,n,i,e){return function(t,n,i,e,r){return 1!=(1&t)&&Wo(t,1,Xg().m82_1),r.l81_1=n,r.m81_1=0==(2&t)?Ls():i,r}(t,n,i,0,Ts(Pr(Zg)))}function Zg(){}function Qg(t){t=t===Yr?null:t,this.s71_1=t,this.t71_1=!0,this.u71_1=!0,this.v71_1=null,this.w71_1=null}function tb(){return new a_}function nb(){return new Float32Array(2)}function ib(t,n){n=n===Yr?null:n,Qg.call(this,n),this.t82_1=W_(t),this.u82_1=vo(tb),this.v82_1=vo(nb),this.w82_1=new Hr(0,0),this.x82_1=0,this.y82_1=null,this.z82_1=null}function eb(){return t=Ts(Pr(ub)),ub.call(t,1,1,1,1),t;var t}function rb(t,n,i,e){return function(t,n,i,e,r){return e=e===Yr?255:e,ub.call(r,t/255,n/255,i/255,e/255),r}(t,n,i,e,Ts(Pr(ub)))}function sb(t){return function(t,n){return ub.call(n,t.z51_1,t.a52_1,t.b52_1,t.c52_1),n}(t,Ts(Pr(ub)))}function ob(){}function ub(t,n,i,e){e=e===Yr?1:e,this.z51_1=t,this.a52_1=n,this.b52_1=i,this.c52_1=e}function ab(){if(ci)return Xr;ci=!0,hi=new hb("NORMAL",0),_i=new hb("BOLD",1),li=new hb("ITALIC",2)}function hb(t,n){ds.call(this,t,n)}function _b(){return ab(),hi}function lb(){return ab(),_i}function cb(){this.q5f_1=uE().r5e_1,this.r5f_1=Kr()}function fb(){this.j83_1=16777215}function vb(t,n){t=t===Yr?null:t,n=n===Yr?null:n,this.k83_1=t,this.l83_1=n}function db(){return Ki.k85()}function wb(){this.r5a_1=1,this.s5a_1=1,this.t5a_1=0,this.u5a_1=0,this.v5a_1=0,this.w5a_1=0,this.x5a_1=null,this.y5a_1=null,this.z5a_1=new Hr(0,0),this.a5b_1=il(),this.b5b_1=rl(),this.c5b_1=z_(),this.d5b_1=z_(),this.e5b_1=z_(),this.f5b_1=v_(),this.g5b_1=null,this.h5b_1=null,this.i5b_1=null,this.j5b_1=null,this.k5b_1=null,this.l5b_1=null,this.m5b_1=null,this.n5b_1=!1,this.o5b_1=!1,this.p5b_1=0,this.q5b_1=0,this.r5b_1=Kr(),this.s5b_1=Kr(),this.t5b_1=new DS(this),this.u5b_1=new vb,this.v5b_1=il(),this.w5b_1=vo(db)}function pb(){}function mb(){}function gb(t,n,i,e,r){r=r!==Yr&&r,this.f5f_1=t,this.g5f_1=n,this.h5f_1=i,this.i5f_1=e,this.j5f_1=r,this.k5f_1=E_(),this.l5f_1=rE().t5e_1,this.m5f_1=null,this.n5f_1=!1,this.o5f_1=!1}function bb(t,n){this.e5m_1=t,this.f5m_1=n,this.g5m_1=Kr(),this.h5m_1=nE().u5e_1}function $b(t,n){return!(!t.a5g_1[t.b5g_1].e83()&&!function(t,n){var i=n.m55_1.p86();return!!i.e83()&&(n.m55_1.q5g(t.w5f_1,i),n.m55_1.r86(t.w5f_1,t.y5f_1,null,t.x5f_1),n.m55_1.q5g(t.w5f_1,nE().u5e_1),t.a5g_1[t.b5g_1]=i,i.e83())}(t,n)||(t.c5g_1=0,0))}function yb(){this.t86_1=65536,this.u86_1=64}function kb(t,n,i,e){i=i===Yr?65536:i,e=e===Yr?64:e,this.w5f_1=t,this.x5f_1=n,this.y5f_1=i,this.z5f_1=e;for(var r=0,s=this.z5f_1,o=hs(Array(s),null);r=0&&i>=0)){var r=kr.n54(kr.i54_1,"Ellipse","constructor","invalidRadius");throw is(Gr(r))}}function Wb(){}function Gb(){xi=this,this.u8a_1=-.1,this.v8a_1=new Xb}function Kb(){return null==xi&&new Gb,xi}function Xb(){this.w8a_1=il(),this.x8a_1=il(),this.y8a_1=tl(),this.z8a_1=z_(),this.a8b_1=rl(),this.b8b_1=0,this.c8b_1=eb(),this.d8b_1=0}function Jb(t,n,i){Kb(),n=n===Yr?null:n,i=i===Yr?x$():i,Qg.call(this),this.d6t_1=n,this.e6t_1=i,this.f6t_1=F_(t),this.g6t_1=Nh(),this.h6t_1=Uh().j58_1,this.i6t_1=e$(),this.j6t_1=!1,this.k6t_1=null,this.m6t_1=!1}function Zb(){}function Qb(t,n,i){i=i===Yr?$$():i,Qg.call(this),this.m8b_1=i,this.n8b_1=F_(t),this.o8b_1=n,this.p8b_1=Nh(),this.q8b_1=!1,this.r8b_1=null;var e=$$();if(e.p6v_1.f5i(new ub(1,0,0,1)),this.s8b_1=e,this.u8b_1=il(),this.v8b_1=0,this.w8b_1=eb(),this.x8b_1=new h_,!(n>=0)){var r=kr.n54(kr.i54_1,"OmnidirectionalSightline","constructor","invalidRange");throw is(Gr(r))}}function t$(){if(Ci)return Xr;Ci=!0,Si=new n$("RELATIVE_TO_GLOBE",0),Ei=new n$("RELATIVE_TO_SCREEN",1)}function n$(t,n){ds.call(this,t,n)}function i$(){return t$(),Si}function e$(){return t$(),Ei}function r$(){qi=this,this.a8c_1=4;var t=new zb;t.d87_1=Ib(),t.e87_1=Mb(),this.b8c_1=t}function s$(){return null==qi&&new r$,qi}function o$(t,n){s$(),n=n===Yr?$$():n,Hb.call(this,n),this.x8c_1=t,this.y8c_1=new Float32Array(0),this.z8c_1=0,this.a8d_1=_s(),this.b8d_1=_s(),this.c8d_1=_s(),this.f8d_1=il(),this.g8d_1=0,this.h8d_1=il(),this.i8d_1=il(),this.j8d_1=E_(),this.k8d_1=m_()}function u$(){if(Ai)return Xr;Ai=!0,Oi=new a$("GREAT_CIRCLE",0),zi=new a$("LINEAR",1),new a$("RHUMB_LINE",2)}function a$(t,n){ds.call(this,t,n)}function h$(){return u$(),Oi}function _$(){return u$(),zi}function l$(){Ti=this,this.p8d_1=4e5,this.q8d_1=-.03,this.r8d_1=il(),this.s8d_1=il(),this.t8d_1=il(),this.u8d_1=il(),this.v8d_1=tl(),this.w8d_1=z_(),this.x8d_1=z_(),this.y8d_1=rl(),this.z8d_1=rl()}function c$(){return null==Ti&&new l$,Ti}function f$(t,n,i){var e;c$(),n=n===Yr?v$():n,e=!1!==(null==(i=i===Yr?null:i)?null:0===Eo(i))?"Placemark":i,Qg.call(this,e),this.r8e_1=n,this.s8e_1=F_(t),this.t8e_1=Nh(),this.u8e_1=null,this.v8e_1=!1,this.w8e_1=null,this.x8e_1=null,this.y8e_1=!1,this.z8e_1=4e5,this.a8f_1=6e5,this.b8f_1=!1,this.c8f_1=!1,this.d8f_1=!1,this.e8f_1=Uh().j58_1,this.f8f_1=e$(),this.g8f_1=Uh().j58_1,this.h8f_1=e$(),this.j8f_1=0,this.k8f_1=eb(),this.l8f_1=0}function v$(){return t=Ts(Pr(w$)),w$.call(t,null,new ub(1,1,1,1),U.v5w(),1,0,!0,!1,!0,x$(),$$()),t;var t}function d$(){}function w$(t,n,i,e,r,s,o,u,a,h){this.b8e_1=t,this.c8e_1=e,this.d8e_1=r,this.e8e_1=s,this.f8e_1=o,this.g8e_1=u,this.h8e_1=n,this.i8e_1=i,this.j8e_1=a,this.k8e_1=h}function p$(){Di=this,this.w8f_1=6;var t=new zb;t.e87_1=Mb(),this.x8f_1=t;var n=new zb;n.e87_1=Mb(),n.d87_1=Ib(),this.y8f_1=n,this.z8f_1=0,this.a8g_1=1,this.b8g_1=2}function m$(){return null==Di&&new p$,Di}function g$(t){this.c8g_1=t,Dy.call(this)}function b$(t,n){m$(),t=t===Yr?Ls():t,n=n===Yr?$$():n,Hb.call(this,n),this.z8g_1=Co([t]),this.a8h_1=new Float32Array(0),this.b8h_1=0,this.c8h_1=_s(),this.d8h_1=_s(),this.e8h_1=_s(),this.f8h_1=_s(),this.g8h_1=m$().u7g(),this.h8h_1=m$().u7g(),this.i8h_1=il(),this.j8h_1=0,this.k8h_1=0,this.l8h_1=new g$(this),this.m8h_1=il(),this.n8h_1=il(),this.o8h_1=il(),this.p8h_1=E_(),this.q8h_1=z_(),this.r8h_1=m_(),this.s8h_1=new Float64Array(3),this.t8h_1=new Int32Array(3),this.u8h_1=Hu(3),this.v8h_1=!0,this.w8h_1=0}function $$(){return t=Ts(Pr(y$)),y$.call(t,!0,!0,!1,!0,!0,!1,new ub(1,1,1,1),new ub(1,0,0,1),1,null,null),t;var t}function y$(t,n,i,e,r,s,o,u,a,h,_){this.g6v_1=t,this.h6v_1=n,this.i6v_1=i,this.j6v_1=e,this.k6v_1=r,this.l6v_1=s,this.m6v_1=a,this.n6v_1=h,this.o6v_1=_,this.p6v_1=o,this.q6v_1=u}function k$(t,n){ib.call(this,t,"Surface Image"),this.i6k_1=n,this.j6k_1=null,this.k6k_1=Y_()}function x$(){return t=Ts(Pr(E$)),E$.call(t,xS(),new ub(1,1,1,1),U.x5w(),new ub(0,0,0,1),3,!0,!0,1),t;var t}function S$(t){return function(t,n){return E$.call(n,t.y6u_1,sb(t.z6u_1),T_(t.a6v_1),sb(t.b6v_1),t.u6u_1,t.v6u_1,t.w6u_1,t.x6u_1),n}(t,Ts(Pr(E$)))}function E$(t,n,i,e,r,s,o,u){this.u6u_1=r,this.v6u_1=s,this.w6u_1=o,this.x6u_1=u,this.y6u_1=t,this.z6u_1=n,this.a6v_1=i,this.b6v_1=e}function C$(){ji=this,this.h8j_1=3;Zs(),this.i8j_1=to(5,Qs());Zs(),this.j8j_1=to(15,Qs())}function q$(t,n){null==ji&&new C$,Qg.call(this,"Tiled Surface Image"),this.s7c_1=t,this.t7c_1=n,this.u7c_1=null,this.v7c_1=1,this.w7c_1=!0,this.x7c_1=!0,this.y7c_1=null,this.z7c_1=!1,this.a7d_1=new B$(new Hr(1200,0)),this.b7d_1=null,this.c7d_1=null,this.d7d_1=null,this.e7d_1=E_(),this.f7d_1=_s(),this.g7d_1=null}function O$(t){this.n8j_1=t,this.k8j_1=js.a3k(),this.l8j_1=0,this.m8j_1=!1}function z$(t,n){this.z6b_1=t,this.a6c_1=n;Zs(),this.b6c_1=to(60,Qs()),this.c6c_1=Kr()}function A$(t){this.k7c_1=t,this.l7c_1=null}function T$(){return new a_}function I$(){return new Float32Array(2)}function D$(t){this.r6e_1=t,this.s6e_1=vo(T$),this.t6e_1=vo(I$),this.u6e_1=new Hr(0,0),this.v6e_1=0,this.w6e_1=null,this.x6e_1=null,this.y6e_1=il()}function j$(){this.q8j_1=12}function M$(){this.r8j_1=0;var t=this.r8j_1;this.s8j_1=hs(Array(t),null)}function N$(t,n,i){this.z6e_1=t,this.a6f_1=n,this.b6f_1=i,this.c6f_1=Wr(this.z6e_1.x6g_1*this.z6e_1.u6g_1.s5p()/this.b6f_1.c54_1),this.d6f_1=Wr(this.z6e_1.y6g_1*this.z6e_1.u6g_1.t5p()/this.b6f_1.b54_1),this.e6f_1=this.z6e_1.x6g_1,this.f6f_1=this.z6e_1.y6g_1,this.g6f_1=Lh(this.b6f_1.c54_1)/this.z6e_1.x6g_1}function R$(t,n,i,e,r,s,o,u){if(o=o===Yr?0:o,L$.call(u),!(i.b54_1>0&&i.c54_1>0)){var a=kr.n54(kr.i54_1,"LevelSet","constructor","invalidTileDelta");throw is(Gr(a))}if(!(e>=0)){var h=kr.n54(kr.i54_1,"LevelSet","constructor","invalidNumLevels");throw is(Gr(h))}if(!(r>=1&&s>=1)){var _=kr.n54(kr.i54_1,"LevelSet","constructor","invalidWidthOrHeight");throw is(Gr(_))}u.u6g_1=t,u.v6g_1=n,u.w6g_1=i,u.x6g_1=r,u.y6g_1=s,u.z6g_1=o;for(var l=u,c=0,f=hs(Array(e),null);c=0)){var s=kr.n54(kr.i54_1,"LruMemoryCache","constructor","invalidCapacity");throw is(Gr(s))}var o=this.y5s_1,u=this.z5s_1;if(!(new Hr(0,0).z9(u)<=0&&u.z9(o)<0)){var a=kr.n54(kr.i54_1,"LruMemoryCache","constructor","The specified low-water value is greater than or equal to the capacity, or less than 1");throw is(Gr(a))}}function Y$(){return Ni||(Ni=!0,Mi=Ds([Is("errorReadingProgramSource","Error reading program sources"),Is("exceptionParsingText","Exception parsing text"),Is("invalidBitmap","The bitmap is recycled"),Is("invalidCapacity","The capacity is less than 1"),Is("invalidCount","The count is invalid"),Is("invalidClipDistance","The clip distance is invalid"),Is("invalidFieldOfView","The field of view is invalid"),Is("invalidHeight","The height is invalid"),Is("invalidIndex","The index is invalid"),Is("invalidNumIntervals","The number of intervals is invalid"),Is("invalidNumLevels","The number of levels is invalid"),Is("invalidRadius","The radius is invalid"),Is("invalidRange","The range is invalid"),Is("invalidResolution","The resolution is invalid"),Is("invalidStride","The stride is invalid"),Is("invalidTileDelta","The tile delta is invalid"),Is("invalidWidth","The width is invalid"),Is("invalidWidthOrHeight","The width or the height is invalid"),Is("missingArray","The array insufficient length"),Is("missingLayerNames","The layer names are empty"),Is("singularMatrix","The matrix cannot be inverted")])),Mi}function W$(){}function G$(t,n){this.z7g_1=t,this.a7h_1=n}function K$(){}function X$(){this.c6h_1=!0}function J$(t,n,i,e){D$.call(this,t),this.p6f_1=n,this.q6f_1=i,this.r6f_1=e,this.s6f_1=this.p6f_1.a6f_1+"."+this.q6f_1+"."+this.r6f_1,this.t6f_1=il()}function Z$(t,n,i,e){if(n=n===Yr?t.a():n,i=i===Yr?t.a()-1|0:i,e=e===Yr||e,i<0)return t.v7(0,No(49)),e&&t.c8(n),Is(t.toString(),!0);var r=t.b(i);return r===No(46)?Z$(t,n,i-1|0,e):r!==No(57)?(t.b8(i,Ku(r,1)),Is(t.toString(),!1)):(t.b8(i,No(48)),Z$(t,n,i-1|0,e))}function Q$(t,n){t.i8k_1=n,t.k8k_1="e"+t.i8k_1}function ty(t,n){var i=n;i>t.j8k_1.length&&(i=t.j8k_1.length);var e=new Bs(Xu(t.j8k_1,qs(0,i)));if(e.a()===t.j8k_1.length)return e.toString();var r=Hs(t.j8k_1,e.a());if(r===No(46)){if((e.a()+1|0)>=t.j8k_1.length)return e.toString();r=Hs(t.j8k_1,e.a()+1|0)}if(Zu("56789",r)){var s=Z$(e),o=s.oe();if(!s.pe())return o;Q$(t,t.i8k_1+1|0);var u=Ju(o,No(46)),a=new Bs(o);return-1===u?o:a.c8(u).v7(u-1|0,No(46)).toString()}return e.toString()}function ny(t){this.g8k_1=t,this.i8k_1=0;var n=this.g8k_1,i=Math.abs(n),e=Dr(i);Q$(this,ks(e)),this.i8k_1<0&&Q$(this,this.i8k_1-1|0);var r=this.i8k_1;this.h8k_1=i/Math.pow(10,r),this.g8k_1<0&&(this.h8k_1=-this.h8k_1),this.j8k_1=this.h8k_1.toString(),this.k8k_1="e"+this.i8k_1}function iy(){if(Hi)return Xr;Hi=!0,Li=new uy("FLAGS",0),Fi=new uy("LENGTH",1),Ui=new uy("FRACTION",2)}function ey(t){var n=t.m8k_1;return po("englishMonthNames",1,wo,(function(t){return ey(t)}),null),n.h2()}function ry(t){var n=t.n8k_1;return po("englishWeekDayNames",1,wo,(function(t){return ry(t)}),null),n.h2()}function sy(){return ta("January February March April May June July August September October November December",Qu([No(32)]))}function oy(){return ta("Monday Tuesday Wednesday Thursday Friday Saturday Sunday",Qu([No(32)]))}function uy(t,n){ds.call(this,t,n)}function ay(t){return t.q8k_1.equals(Sy())}function hy(t,n){t.o8k_1.f8l(n)}function _y(t){return t.o8k_1.g8l(t.p8k_1)}function ly(t,n){var i,e=t.o8k_1.se();if(py(t),e===No(72))i=Ay("%02d",[_y(t).j3l()]);else if(e===No(107))i=Ay("%d",[_y(t).j3l()]);else if(e===No(73)||e===No(108)){var r=_y(t).j3l();r>12&&(r=r-12|0),i=e===No(73)?Ay("%02d",[r]):r.toString()}else if(e===No(77))i=Ay("%02d",[_y(t).k3l()]);else if(e===No(83))i=Ay("%02d",[_y(t).l3l()]);else if(e===No(76))i=Ay("%03d",[_y(t).m3l()/1e6|0]);else if(e===No(78))i=Ay("%09d",[_y(t).m3l()]);else if(e===No(112))i=n?_y(t).j3l()>12?"PM":"AM":_y(t).j3l()>12?"pm":"am";else if(e===No(122)){var s=ns().o3l();i=mu(ia(s,na(_y(t),s)).toString(),":","")}else if(e===No(90)){var o=ns().o3l();i=ia(o,na(_y(t),o)).toString()}else if(e===No(115)){var u=ns().o3l();i=na(_y(t),u).z3k().toString()}else if(e===No(81)){var a=ns().o3l();i=na(_y(t),a).b3l().toString()}else if(e===No(66))i=xy().k8l(ea(_y(t).g3l()));else if(e===No(98)||e===No(104))i=xy().j8l(ea(_y(t).g3l()));else if(e===No(101))i=_y(t).i3k().toString();else if(e===No(100))i=Ay("%02s",[_y(t).i3k()]);else if(e===No(109))i=Ay("%02s",[ea(_y(t).g3l())]);else if(e===No(65))i=xy().i8l(_y(t).h3l());else if(e===No(97))i=xy().h8l(_y(t).h3l());else if(e===No(121))i=qo(_y(t).g3k().toString(),2);else if(e===No(89))i=Ay("%04d",[_y(t).g3k()]);else if(e===No(106))i=Ay("%03d",[_y(t).i3l()]);else if(e===No(82))i=Ay("%1!tH:%1!tM",[_y(t)]);else if(e===No(114))i=Ay(n?"%1!tI:%1!tM:%1!tS %1!Tp":"%1!tI:%1!tM:%1!tS %1!tp",[_y(t)]);else if(e===No(84))i=Ay("%tH:%1!tM:%1!tS",[_y(t)]);else if(e===No(68))i=Ay("%tm/%1!td/%1!ty",[_y(t)]);else if(e===No(70))i=Ay("%tY-%1!tm-%1!td",[_y(t)]);else if(e===No(99))i=Ay("%ta %1!tb %1!td %1!tT %1!tZ %1!tY",[_y(t)]);else if(e===No(79)){var h=ns().o3l(),_=ia(h,na(_y(t),h)).toString();i=Ay("%tFT%1!tT%s",[_y(t),_])}else e===No(35)?i=Ay("%tY%1!tm%1!td%1!tH%1!tM%1!tS",[na(_y(t),ns().r3k_1)]):hy(t,"unknown time field specificator: 't"+Vs(e)+"'");gy(t,i)}function cy(t){py(t);var n=Us(t.o8k_1.m8l(t.p8k_1));t.w8k_1&&t.u8k_1===No(48)&&n.z9(new Hr(0,0))>0?my(t,n.toString(),"+"):gy(t,t.w8k_1?"+"+n.toString():n.toString())}function fy(t,n){py(t);var i=Us(t.o8k_1.m8l(t.p8k_1));t.w8k_1&&hy(t,"'+' is incompatible with hex format");var e=ra(i,16);gy(t,n?e.toUpperCase():e.toLowerCase())}function vy(t){py(t);var n=Us(t.o8k_1.m8l(t.p8k_1));t.w8k_1&&hy(t,"'+' is incompatible with oct format"),gy(t,ra(n,8))}function dy(t){py(t),gy(t,Vs(t.o8k_1.n8l(t.p8k_1)))}function wy(t,n){n&&(t.x8k_1=!0);var i=t.v8k_1;if(Eo(i)>0){switch(t.q8k_1.v9_1){case 1:t.r8k_1=sa(t.v8k_1.toString());break;case 2:t.s8k_1=sa(t.v8k_1.toString());break;case 0:hy(t,"can't parse format specifier (error 7)")}t.v8k_1.a8()}}function py(t,n,i){return wy(t,n=n===Yr||n)}function my(t,n,i){var e=n.length+i.length|0;if(t.r8k_1<0||t.r8k_10))break t;o.p5(t.u8k_1)}o.o5(n);t:for(;;){var a=s;if(s=a-1|0,!(a>0))break t;o.p5(t.u8k_1)}t.o8k_1.o8l(o.toString())}}function gy(t,n,i,e){return my(t,n,i=i===Yr?"":i)}function by(t){py(t);var n=xs(t.o8k_1.m8l(t.p8k_1)),i=function(t,n,i){i=i===Yr?-1:i;var e=t,r=jo(),s=e;if(Math.abs(s)>=1){var o=0===i?Gu(e):Us(e);r.t7(o),e-=o.c6()}else r.o5(e<0?"-0":"0");var u=i<0?n<0?6:(n-r.a()|0)-1|0:i;0!==u&&r.p5(No(46));var a=10*e;t:for(;;){var h=u;if(u=h-1|0,!(h>0))break t;var _=ks(a);r.s7(Fs(_)),a=10*(a-_)}var l=ks(a);return Fs(l)<5?r.toString():Z$(r,Yr,Yr,!1).me_1}(n,t.r8k_1,t.s8k_1);t.w8k_1&&t.u8k_1===No(48)&&n>0?my(t,i,"+"):gy(t,t.w8k_1?"+"+i:i)}function $y(t,n){py(t);var i,e,r,s=xs(t.o8k_1.m8l(t.p8k_1)),o=(i=s,e=t.r8k_1,r=(r=t.s8k_1)===Yr?-1:r,new ny(i).l8k(e,r)),u=n?o.toUpperCase():o.toLowerCase();t.w8k_1&&t.u8k_1===No(48)&&s>0?my(t,u,"+"):gy(t,t.w8k_1?"+"+u:u)}function yy(t,n){py(t);var i=t.o8k_1.m8l(t.p8k_1),e=Gr(i),r=n?e.toUpperCase():e.toLowerCase();t.w8k_1&&t.u8k_1===No(48)&&xs(i)>0?my(t,r,"+"):gy(t,t.w8k_1?"+"+r:r)}function ky(){Vi=this,this.m8k_1=vo(sy),this.n8k_1=vo(oy)}function xy(){return null==Vi&&new ky,Vi}function Sy(){return iy(),Li}function Ey(){return iy(),Fi}function Cy(){return iy(),Ui}function qy(t,n){xy(),this.o8k_1=t,this.p8k_1=n,this.q8k_1=Sy(),this.r8k_1=-1,this.s8k_1=-1,this.t8k_1=(Oy(),Yi),this.u8k_1=No(32),this.v8k_1=jo(),this.w8k_1=!1,this.x8k_1=!1,this.y8k_1=!1}function Oy(){if(Gi)return Xr;Gi=!0,Bi=new zy("LEFT",0),Yi=new zy("RIGHT",1),Wi=new zy("CENTER",2)}function zy(t,n){ds.call(this,t,n)}function Ay(t,n){return new Ty(t,n).r8l().toString()}function Ty(t,n){this.z8k_1=t,this.a8l_1=n,this.b8l_1=0,this.c8l_1=-1,this.d8l_1=jo(),this.e8l_1=0}function Iy(){this.m83_1=0,this.n83_1=1,this.o83_1=100800,this.p83_1=100801,this.q83_1="1.3",this.r83_1="GLU_EXT_object_space_tess ",this.s83_1=100900,this.t83_1=100901,this.u83_1=100902,this.v83_1=100904,this.w83_1=100100,this.x83_1=100101,this.y83_1=100102,this.z83_1=100103,this.a84_1=100104,this.b84_1=100105,this.c84_1=100106,this.d84_1=100107,this.e84_1=100108,this.f84_1=100109,this.g84_1=100110,this.h84_1=100111,this.i84_1=100120,this.j84_1=100121,this.k84_1=100122,this.l84_1=100123,this.m84_1=100124,this.n84_1=100140,this.o84_1=100141,this.p84_1=100142,this.q84_1=100151,this.r84_1=100152,this.s84_1=100153,this.t84_1=100154,this.u84_1=100155,this.v84_1=100156,this.w84_1=100157,this.x84_1=100158,this.y84_1=100151,this.z84_1=100152,this.a85_1=100153,this.b85_1=100154,this.c85_1=100155,this.d85_1=100156,this.e85_1=100130,this.f85_1=100131,this.g85_1=100132,this.h85_1=100133,this.i85_1=100134,this.j85_1=1e150}function Dy(){}function jy(){Xi=this,this.t8l_1=["invalid enumerant","invalid value","out of memory","","invalid operation"]}function My(t){this.j8n_1=t,this.k8n_1=null,this.l8n_1=0,this.m8n_1=!1,this.n8n_1=!1,this.o8n_1=!1,this.p8n_1=!1}function Ny(){this.q8n_1=new Float64Array(3),this.r8n_1=null}function Ry(){}function Py(t,n,i){this.v8n_1=t,this.w8n_1=n,this.x8n_1=i}function Ly(t){t=t===Yr?null:t,this.z8n_1=t,this.a8o_1=this,this.b8o_1=this}function Fy(){this.j8o_1=null,this.k8o_1=null,this.l8o_1=null,this.m8o_1=null,this.n8o_1=null,this.o8o_1=!1,this.p8o_1=!1}function Uy(t){this.q8o_1=t,this.r8o_1=null,this.s8o_1=null,this.t8o_1=null,this.u8o_1=null,this.v8o_1=null,this.w8o_1=null,this.x8o_1=null,this.y8o_1=0}function Hy(){this.z8o_1=new Jy,this.a8p_1=new Fy,this.b8p_1=new Uy(!0),this.c8p_1=new Uy(!1)}function Vy(t){var n=t.z8l_1;null==n||te.d8p(n),t.x8l_1=0,t.y8l_1=null,t.z8l_1=null}function By(t,n){t.x8l_1!==n&&function(t,n){for(;t.x8l_1!==n;)t.x8l_10&&k<=x||S<0&&x<=k)do{var E=k;k=k+S|0;for(var C=_s(),q=r.v(),O=0;q.w();){var z=O;O=O+1|0;var A=q.y()/8|0,T=Tr(z,A);C.s(pr.h96(h,E+T|0,A,s,t.f96_1))}o?u.s(C.h1(0)):u.z(C)}while(E!==x);return gs(u)}(t,e,r,s,o,u,n):2===i?(kr.v5o(kr.j54_1,"Compression type not yet implemented: CCITT_1D"),a=[]):3===i?(kr.v5o(kr.j54_1,"Compression type not yet implemented: GROUP_3_FAX"),a=[]):4===i?(kr.v5o(kr.j54_1,"Compression type not yet implemented: GROUP_4_FAX"),a=[]):5===i?(kr.v5o(kr.j54_1,"Compression type not yet implemented: LZW"),a=[]):6===i?(kr.v5o(kr.j54_1,"Compression type not yet implemented: JPEG"),a=[]):(kr.v5o(kr.j54_1,"Unsupported compression type "+i),a=[]),a}function Px(t,n,i){if(t.e96_1.m95_1.n()>6&&t.e96_1.l95_1.d1())throw new ya;return 16===t.e96_1.n95_1.n()?new $_(Uh().d5d(i*t.e96_1.n95_1.h1(4)+i*t.e96_1.n95_1.h1(5)+t.e96_1.n95_1.h1(7)),Uh().d5d(n*t.e96_1.n95_1.h1(0)+i*t.e96_1.n95_1.h1(1)+t.e96_1.n95_1.h1(3))):t.e96_1.l95_1.n()<3||t.e96_1.m95_1.n()<6?new $_(Uh().d5d(i),Uh().d5d(n)):new $_(Uh().d5d(-1*(i-t.e96_1.m95_1.h1(1))*t.e96_1.l95_1.h1(1)+t.e96_1.m95_1.h1(4)),Uh().d5d((n-t.e96_1.m95_1.h1(0))*t.e96_1.l95_1.h1(0)+t.e96_1.m95_1.h1(3)))}function Lx(t,n){var i=ks(pr.g96(t.d96_1,n,2,t.f96_1)),e=_s(),r=n+2|0,s=0;if(s0)){var o=kr.n54(kr.i54_1,"Font","constructor","invalidSize");throw is(Gr(o))}}function qS(){}function OS(t,n,i,e){this.n9m_1=t,this.o9m_1=n,this.p9m_1=i,Ks.call(this,e)}function zS(t,n,i){this.f9n_1=t,this.g9n_1=n,Ks.call(this,i)}function AS(t,n,i){this.q9n_1=t,this.r9n_1=n,Ks.call(this,i)}function TS(t,n,i,e,r){return function(s){var o=t.l7c_1;return null==o||n._v?i.v9m(t,e,r):(n._v=!0,ro(i.w54_1,Yr,Yr,function(t,n,i){var e=new AS(t,n,i),r=function(t,n){return e.v1g(t,n)};return r.$arity=1,r}(o,r,null))),null!=o&&URL.revokeObjectURL(r.src),Xr}}function IS(t,n){var i;if(t=t===Yr?$r.r91():t,n===Yr){var e=.75*t.c6();i=Us(e)}else i=n;n=i,B$.call(this,t,n),this.u54_1=new Hr(0,0),this.v54_1=16,this.w54_1=no();Zs();var r=to(60,Qs());this.x54_1=new z$(3,r),this.y54_1=vs()}function DS(t){this.t85_1=t,this.u85_1=.15}function jS(){yr=this,this.l6j_1=Kr()}function MS(){return null==yr&&new jS,yr}function NS(){}function RS(t,n){this.e9o_1=t,this.f9o_1=n}function PS(t){MS(),A$.call(this,t)}function LS(t){return function(t,n){return FS.call(n,t,t.width,t.height),n}(t,Ts(Pr(FS)))}function FS(t,n,i){gb.call(this,n,i,nx(),ix()),this.q9o_1=t,this.r9o_1=!!gx(n)&&gx(i),this.k5f_1.c5w()}function US(t,n,i,e){J$.call(this,t,n,i,e),this.f7c_1=null,this.g7c_1=null}function HS(){this.i54_1=1,this.j54_1=2,this.k54_1=3,this.l54_1=4,this.m54_1=this.i54_1}function VS(){M$.call(this)}function BS(t){this.s9o_1=t,this.t9o_1=!1}function YS(){xr=this,this.x9o_1=new WS}function WS(t){null==xr&&new YS,t=t===Yr?null:t,this.v9o_1=t}function GS(){Sr=this,this.s5e_1=new XS}function KS(){return null==Sr&&new GS,Sr}function XS(t){KS(),t=t===Yr?null:t,this.j87_1=t}function JS(){Er=this,this.c6m_1=new QS}function ZS(){return null==Er&&new JS,Er}function QS(t){ZS(),t=t===Yr?null:t,this.w9o_1=t}function tE(){Cr=this,this.u5e_1=new iE}function nE(){return null==Cr&&new tE,Cr}function iE(t){nE(),t=t===Yr?null:t,this.k86_1=t}function eE(){qr=this,this.t5e_1=new sE}function rE(){return null==qr&&new eE,qr}function sE(t){rE(),t=t===Yr?null:t,this.d86_1=t}function oE(){Or=this,this.r5e_1=new aE}function uE(){return null==Or&&new oE,Or}function aE(t){uE(),t=t===Yr?null:t,this.d83_1=t}function hE(){return Ar||(Ar=!0,zr=ta(window.navigator.language,Qu([No(45)])).h1(0),ta(window.navigator.language,Qu([No(45)])).h1(1)),zr}return Fr(Da,"images",Lr),Fr(Ma,"files",Lr),Fr(Na,"GoToAnimator",Br),Fr(Ra,"Companion",Lr),Fr(Pa,"PickedObject",Br),Fr(Fa,"PickedObjectList",Br,Yr,Yr,Fa),Fr(Ya,"Event",ts),Fr(Ua,"RequestRedraw",Lr,Yr,[Ya]),Fr(Ha,"UnmarkResourceAbsent",Br,Yr,[Ya]),Fr(Va,"Companion",Lr,Yr,Yr,Yr,Yr,Yr,[1]),Fr(Wa,"WorldWind",Br),Fr(Ga,"Companion",Lr),Fr(Oh,"DrawableTerrain",ts),Fr(Ka,"BasicDrawableTerrain",Br,Yr,[Oh]),Fr(Xa,"DrawContext",Br),Fr(Ja,"Companion",Lr),Fr(Za,"DrawElements",Br,Yr,Yr,Za),Fr(Qa,"VertexAttrib",Br,Yr,Yr,Qa),Fr(th,"DrawShapeState",Br),Fr(ih,"DrawableGroup",Br,ds),Fr(sh,"Companion",Lr),Fr(oh,"DrawableHeatmap",Br),Fr(uh,"Companion",Lr),Fr(ah,"DrawableLines",Br),Fr(hh,"Companion",Lr),Fr(_h,"Entry",Br,Yr,Yr,_h),Fr(lh,"sam$kotlin_Comparator$0",Br),Fr(fh,"DrawableQueue",Br),Fr(vh,"Companion",Lr),Fr(dh,"DrawableScreenTexture",Br),Fr(wh,"Companion",Lr),Fr(ph,"DrawableShape",Br),Fr(mh,"Companion",Lr),Fr(gh,"DrawableSightline",Br),Fr(bh,"Companion",Lr),Fr($h,"DrawableStarField",Br),Fr(yh,"Companion",Lr),Fr(kh,"DrawableSurfaceColor",Br),Fr(xh,"Companion",Lr),Fr(Sh,"DrawableSurfaceShape",Br),Fr(Eh,"Companion",Lr),Fr(qh,"DrawableSurfaceTexture",Br),Fr(zh,"Companion",Lr),Fr(Ah,"DrawableTessellation",Br),Fr(Th,"BasicFrameController",Br,Yr,Yr,Th),Fr(Ih,"Companion",Lr),Fr(Dh,"Frame",Br,Yr,Yr,Dh),Fr(Mh,"AltitudeMode",Br,ds),Fr(Fh,"Companion",Lr),Fr(e_,"Angle",Br,Yr,[Cs]),Fr(u_,"Companion",Lr),Fr(a_,"BoundingBox",Br,Yr,Yr,a_),Fr(h_,"BoundingSphere",Br,Yr,Yr,h_),Fr(__,"Camera",Br,Yr,Yr,__),Fr(l_,"Companion",Lr),Fr(f_,"Ellipsoid",Br),Fr(d_,"Frustum",Br,Yr,Yr,v_),Fr(p_,"Line",Br,Yr,Yr,w_),Fr(g_,"Companion",Lr),Fr($_,"Location",Br,Yr,Yr,m_),Fr(k_,"LookAt",Br,Yr,Yr,y_),Fr(x_,"Companion",Lr),Fr(C_,"Matrix3",Br,Yr,Yr,E_),Fr(q_,"Companion",Lr),Fr(A_,"Matrix4",Br,Yr,Yr,z_),Fr(I_,"Companion",Lr),Fr(D_,"Offset",Br),Fr(j_,"OffsetMode",Br,ds),Fr(N_,"Companion",Lr),Fr(P_,"Plane",Br,Yr,Yr,(function(){return t=Ts(Pr(P_)),P_.call(t),t;var t})),Fr(U_,"Companion",Lr),Fr(H_,"Position",Br,$_,Yr,L_),Fr(B_,"Range",Br,Yr,Yr,V_),Fr(G_,"Companion",Lr),Fr(K_,"Sector",Br,Yr,Yr,Y_),Fr(X_,"TileMatrix",Br),Fr(Z_,"Companion",Lr),Fr(Q_,"TileMatrixSet",Br,Yr,Yr,J_),Fr(nl,"Vec2",Br,Yr,Yr,tl),Fr(el,"Vec3",Br,nl,Yr,il),Fr(sl,"Viewport",Br,Yr,Yr,rl),Fr(ol,"Companion",Lr),Fr(ul,"GKCoord",Br),Fr(al,"Companion",Lr),Fr(hl,"GKCoordConverter",Br,Yr,Yr,hl),Fr(_l,"Companion",Lr),Fr(cl,"HelmertParameters",Br),Fr(fl,"HelmertTransformation",Lr),Fr(dl,"Hemisphere",Br,ds),Fr(ml,"Companion",Lr),Fr(gl,"MGRSCoord",Br),Fr(bl,"Companion",Lr),Fr(Sl,"MGRSCoordConverter",Br,Yr,Yr,Sl),Fr(El,"Companion",Lr),Fr(Cl,"PolarCoordConverter",Br,Yr,Yr,Cl),Fr(ql,"Companion",Lr),Fr(Ol,"TMCoord",Br),Fr(zl,"Companion",Lr),Fr(Al,"TMCoordConverter",Br,Yr,Yr,Al),Fr(Tl,"Companion",Lr),Fr(Il,"UPSCoord",Br),Fr(Dl,"Companion",Lr),Fr(jl,"UPSCoordConverter",Br,Yr,Yr,jl),Fr(Ml,"Companion",Lr),Fr(Nl,"UTMCoord",Br),Fr(Rl,"Companion",Lr),Fr(Pl,"UTMCoordConverter",Br,Yr,Yr,Pl),Fr(Fl,"GestureState",Br,ds),Fr(Kl,"SelectDragCallback",ts),Fr(Jl,"Offset",Br,ds),Fr(Zl,"State",Br),Fr(tc,"Globe",Br,Yr,Yr,tc),Fr(nc,"ElevationModel",Br,Yr,Yr,nc),Fr(ic,"AbstractElevationCoverage",Br),Fr(ec,"Companion",Lr),Fr(rc,"TileBlock",Br,Yr,Yr,rc),Fr(sc,"AbstractTiledElevationCoverage$fetchTileArray$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(oc,"AbstractTiledElevationCoverage",Br,ic,Yr,Yr,Yr,Yr,[4]),Fr(pS,"TiledElevationCoverage",Br,oc,Yr,(function(){return t=Ts(Pr(pS)),n=J_(),pS.call(t,n,new vS),t;var t,n}),Yr,Yr,[4,1]),Fr(Mv,"WmsElevationCoverage",Br,pS,Yr,Yr,Yr,Yr,[4]),Fr(uc,"BasicElevationCoverage",Br,Mv,Yr,uc,Yr,Yr,[4]),Fr(ac,"GeographicProjection",ts),Fr(hc,"Companion",Lr),Fr(_c,"MercatorProjection",Br,Yr,[ac],_c),Fr(lc,"Wgs84Projection",Br,Yr,[ac],lc),Fr(cc,"BasicTerrain",Br),Fr(fc,"sam$kotlin_Comparator$0",Br),Fr(dc,"BasicTessellator",Br,Yr,Yr,dc),Fr(wc,"Companion",Lr),Fr(D$,"AbstractTile",Br),Fr(J$,"Tile",Br,D$),Fr(mc,"TerrainTile",Br,J$),Fr(gc,"AbstractLayer",Br),Fr(kc,"RenderableLayer",Br,gc,Yr,kc),Fr(bc,"AbstractTiledImageLayer",Br,kc),Fr($c,"BackgroundLayer",Br,kc,Yr,$c),Fr(yc,"LayerList",Br,Yr,Yr,yc),Fr(xc,"ShowTessellationLayer",Br,gc,Yr,xc),Fr(Ec,"FragMode",Br,ds),Fr(Rb,"AbstractShaderProgram",Br),Fr(qc,"AbstractAtmosphereProgram",Br,Rb),Fr(Oc,"Companion",Lr),Fr(Ac,"AtmosphereLayer",Br,gc,Yr,Ac),Fr(Tc,"Companion",Lr),Fr(Ic,"DrawableGroundAtmosphere",Br,Yr,Yr,Ic),Fr(Dc,"Companion",Lr),Fr(jc,"DrawableSkyAtmosphere",Br,Yr,Yr,jc),Fr(Mc,"GroundProgram",Br,qc,Yr,Mc),Fr(Nc,"SkyProgram",Br,qc,Yr,Nc),Fr(Uc,"Companion",Lr),Fr(Vc,"AbstractGraticuleLayer",Br,gc),Fr(Bc,"AbstractGraticuleTile",Br,D$),Fr(Yc,"Companion",Lr),Fr(Wc,"GraticuleRenderingParams",Br,Yr,[go],Wc),Fr(Zc,"GraticuleSupport",Br,Yr,Yr,Zc),Fr(tf,"Companion",Lr),Fr(nf,"GridElement",Br),Fr(ef,"Callback",ts),Fr(sf,"GridTilesSupport",Br),Fr(of,"LineStyle",Br,ds),Fr(uf,"Companion",Lr),Fr(hf,"GKGraticuleLayer",Br,Vc,[Vc,ef],hf),Fr(vf,"GKGraticuleTile",Br,Bc),Fr(wf,"GKLayerHelper",Lr),Fr(xf,"ZoneExtremes",Br),Fr(Sf,"Companion",Lr),Fr(Ef,"GKMetricGrid",Br,Bc),Fr(zf,"Companion",Lr),Fr(Af,"GKMetricLabels",Br),Fr(Tf,"GKOverview",Br,Bc),Fr(If,"Companion",Lr),Fr(Df,"AbstractUTMGraticuleLayer",Br,Vc),Fr(Pf,"Companion",Lr),Fr(Lf,"MGRSGraticuleLayer",Br,Df,Yr,Lf),Fr(Uf,"Companion",Lr),Fr(Hf,"MGRSGridZone",Br,Bc),Fr(Vf,"Companion",Lr),Fr(Yf,"MGRSOverview",Br,Bc),Fr(Wf,"UTMExtremes",Br,Yr,Yr,Wf),Fr(Xf,"Companion",Lr),Fr(Jf,"UTMMetricScaleSupport",Br),Fr(iv,"UTMSquareSector",Br,Bc),Fr(Zf,"UTMSquareGrid",Br,iv),Fr(nv,"Companion",Lr),Fr(sv,"UTMSquareZone",Br,iv),Fr(ov,"ElevationHeatmapLayer",Br,gc,Yr,ov),Fr(uv,"ElevationHeatmapProgram",Br,Rb,Yr,uv),Fr(av,"Companion",Lr),Fr(US,"ImageTile",Br,J$,Yr,Yr,Yr,Yr,[1]),Fr(hv,"AbstractMercatorImageTile",Br,US,Yr,Yr,Yr,Yr,[1]),Fr(_v,"Companion",Lr),Fr(lv,"MercatorSector",Br,K_,Yr,lv),Fr(cv,"MercatorTileFactory",ts),Fr(fv,"Companion",Lr),Fr(mS,"TiledImageLayer",Br,bc,Yr,mS),Fr(vv,"MercatorTiledImageLayer",Br,mS,Yr,vv),Fr(pb,"Renderable",ts),Fr(Qg,"AbstractRenderable",Br,Yr,[pb]),Fr(q$,"TiledSurfaceImage",Br,Qg),Fr(dv,"MercatorTiledSurfaceImage",Br,q$),Fr(wv,Yr,Br,Yr,[cv]),Fr(pv,Yr,Br,vv),Fr(mv,"WebMercatorLayerFactory",Lr),Fr(gv,"$serializer",Lr,Yr,[Yo]),Fr(yv,"Companion",Lr),Fr(xv,"$serializer",Lr,Yr,[Yo]),Fr(Cv,"StarMetadata",Br,Yr,Yr,Yr,Yr,{0:bv}),Fr(qv,"StarData",Br,Yr,Yr,Yr,Yr,{0:Sv}),Fr(Ov,"StarFieldLayer",Br,gc,Yr,Ov),Fr(zv,"StarFieldProgram",Br,Rb,Yr,zv),Fr(Av,"Companion",Lr),Fr(Tv,"Wcs100ElevationCoverage",Br,pS,Yr,Yr,Yr,Yr,[4]),Fr(Iv,"Wcs100ElevationSourceFactory",Br),Fr(Dv,Yr,Br),Fr(jv,"Companion",Lr),Fr(Nv,"WmsLayerConfig",Br),Fr(Hv,"WmsLayerFactory$decodeWmsCapabilities$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(Vv,Yr,Br,mS),Fr(Yv,"$createLayerCOROUTINE$0",Br,Ks),Fr(Wv,"$retrieveWmsCapabilitiesCOROUTINE$1",Br,Ks),Fr(Gv,"WmsLayerFactory",Lr,Yr,Yr,Yr,Yr,Yr,[4,1]),Fr(Jv,"WmsTileFactory",Br),Fr(nd,"TileMatrixSet",Br),Fr(ed,"WmtsLayerFactory$decodeWmtsCapabilities$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(rd,Yr,Br,mS),Fr(sd,"$createLayerCOROUTINE$2",Br,Ks),Fr(od,"$retrieveWmtsCapabilitiesCOROUTINE$3",Br,Ks),Fr(ud,"WmtsLayerFactory",Lr,Yr,Yr,Yr,Yr,Yr,[4,1]),Fr(hd,"Companion",Lr),Fr(_d,"WmtsTileFactory",Br),Fr(ld,"Companion",Lr),Fr(cd,"$serializer",Lr,Yr,[Yo]),Fr(dd,"WmsAttribution",Br,Yr,Yr,dd,Yr,{0:fd}),Fr(wd,"$serializer",Lr,Yr,[Yo]),Fr(gd,"WmsAuthorityUrl",Br,Yr,Yr,Yr,Yr,{0:pd}),Fr(bd,"$serializer",Lr,Yr,[Yo]),Fr(kd,"WmsBoundingBox",Br,Yr,Yr,Yr,Yr,{0:$d}),Fr(xd,"Companion",Lr),Fr(Sd,"$serializer",Lr,Yr,[Yo]),Fr(qd,"WmsCapabilities",Br,Yr,Yr,Yr,Yr,{0:Ed}),Fr(Od,"Companion",Lr),Fr(Ad,"$serializer",Lr,Yr,[Yo]),Fr(Dd,"WmsCapability",Br,Yr,Yr,Yr,Yr,{0:Td}),Fr(jd,"$serializer",Lr,Yr,[Yo]),Fr(Rd,"WmsContactAddress",Br,Yr,Yr,Yr,Yr,{0:Md}),Fr(Pd,"Companion",Lr),Fr(Ld,"$serializer",Lr,Yr,[Yo]),Fr(Hd,"WmsContactInformation",Br,Yr,Yr,Hd,Yr,{0:Fd}),Fr(Vd,"$serializer",Lr,Yr,[Yo]),Fr(Wd,"WmsContactPersonPrimary",Br,Yr,Yr,Yr,Yr,{0:Bd}),Fr(Gd,"$serializer",Lr,Yr,[Yo]),Fr(Jd,"$serializer",Lr,Yr,[Yo]),Fr(tw,"WmsHttp",Br,Yr,Yr,Yr,Yr,{0:Kd}),Fr(nw,"WmsHttpProtocol",Br,Yr,Yr,Yr,Yr,{0:Zd}),Fr(iw,"$serializer",Lr,Yr,[Yo]),Fr(sw,"WmsDcpType",Br,Yr,Yr,Yr,Yr,{0:ew}),Fr(ow,"$serializer",Lr,Yr,[Yo]),Fr(hw,"WmsDimension",Br,Yr,Yr,Yr,Yr,{0:uw}),Fr(_w,"Companion",Lr),Fr(cw,"$serializer",Lr,Yr,[Yo]),Fr(dw,"WmsException",Br,Yr,Yr,dw,Yr,{0:fw}),Fr(ww,"$serializer",Lr,Yr,[Yo]),Fr(gw,"WmsGeographicBoundingBox",Br,Yr,Yr,Yr,Yr,{0:pw}),Fr(bw,"$serializer",Lr,Yr,[Yo]),Fr(kw,"WmsIdentifier",Br,Yr,Yr,Yr,Yr,{0:$w}),Fr(xw,"Companion",Lr),Fr(Ew,"$serializer",Lr,Yr,[Yo]),Fr(Ow,"WmsInfoUrl",Br,Yr,Yr,Yr,Yr,{0:Cw}),Fr(zw,"Companion",Lr),Fr(Tw,"$serializer",Lr,Yr,[Yo]),Fr(jw,"WmsLayer",Br,Yr,Yr,Yr,Yr,{0:Iw}),Fr(Mw,"Companion",Lr),Fr(Rw,"$serializer",Lr,Yr,[Yo]),Fr(Fw,"WmsLogoUrl",Br,Yr,Yr,Yr,Yr,{0:Pw}),Fr(Uw,"Companion",Lr),Fr(Vw,"$serializer",Lr,Yr,[Yo]),Fr(Ww,"WmsMetadataUrl",Br,Yr,Yr,Yr,Yr,{0:Bw}),Fr(Gw,"$serializer",Lr,Yr,[Yo]),Fr(Jw,"WmsOnlineResource",Br,Yr,Yr,Yr,Yr,{0:Kw}),Fr(Zw,"$serializer",Lr,Yr,[Yo]),Fr(np,"WmsRequest",Br,Yr,Yr,Yr,Yr,{0:Qw}),Fr(ip,"Companion",Lr),Fr(rp,"$serializer",Lr,Yr,[Yo]),Fr(up,"WmsRequestOperation",Br,Yr,Yr,Yr,Yr,{0:sp}),Fr(ap,"Companion",Lr),Fr(_p,"$serializer",Lr,Yr,[Yo]),Fr(fp,"WmsService",Br,Yr,Yr,Yr,Yr,{0:lp}),Fr(vp,"Companion",Lr),Fr(wp,"$serializer",Lr,Yr,[Yo]),Fr(gp,"WmsStyle",Br,Yr,Yr,Yr,Yr,{0:pp}),Fr(bp,"Companion",Lr),Fr(yp,"$serializer",Lr,Yr,[Yo]),Fr(Sp,"OwsAddress",Br,Yr,Yr,Sp,Yr,{0:kp}),Fr(Ep,"$serializer",Lr,Yr,[Yo]),Fr(Op,"OwsBoundingBox",Br,Yr,Yr,Yr,Yr,{0:Cp}),Fr(zp,"Companion",Lr),Fr(Tp,"$serializer",Lr,Yr,[Yo]),Fr(jp,"OwsConstraint",Br,Yr,Yr,Yr,Yr,{0:Ip}),Fr(Mp,"Companion",Lr),Fr(Np,"$serializer",Lr,Yr,[Yo]),Fr(Lp,"OwsContactInfo",Br,Yr,Yr,Lp,Yr,{0:Rp}),Fr(Fp,"$serializer",Lr,Yr,[Yo]),Fr(Vp,"OwsDcp",Br,Yr,Yr,Yr,Yr,{0:Up}),Fr(Bp,"OwsDescription",Br),Fr(Yp,"Companion",Lr),Fr(Gp,"$serializer",Lr,Yr,[Yo]),Fr(Jp,"OwsHttp",Br,Yr,Yr,Jp,Yr,{0:Kp}),Fr(Zp,"Companion",Lr),Fr(tm,"$serializer",Lr,Yr,[Yo]),Fr(em,"OwsHttpMethod",Br,Yr,Yr,Yr,Yr,{0:nm}),Fr(rm,"$serializer",Lr,Yr,[Yo]),Fr(um,"OwsOnlineResource",Br,Yr,Yr,Yr,Yr,{0:sm}),Fr(am,"Companion",Lr),Fr(_m,"$serializer",Lr,Yr,[Yo]),Fr(fm,"OwsOperation",Br,Yr,Yr,Yr,Yr,{0:lm}),Fr(vm,"Companion",Lr),Fr(wm,"$serializer",Lr,Yr,[Yo]),Fr(gm,"OwsOperationsMetadata",Br,Yr,Yr,gm,Yr,{0:pm}),Fr(bm,"Companion",Lr),Fr(ym,"$serializer",Lr,Yr,[Yo]),Fr(Sm,"OwsPhone",Br,Yr,Yr,Sm,Yr,{0:km}),Fr(Em,"Companion",Lr),Fr(Cm,"$serializer",Lr,Yr,[Yo]),Fr(zm,"OwsServiceContact",Br,Yr,Yr,zm,Yr,{0:qm}),Fr(Am,"Companion",Lr),Fr(Im,"$serializer",Lr,Yr,[Yo]),Fr(Mm,"OwsServiceIdentification",Br,Bp,Yr,Yr,Yr,{0:Dm}),Fr(Nm,"$serializer",Lr,Yr,[Yo]),Fr(Lm,"OwsServiceProvider",Br,Yr,Yr,Yr,Yr,{0:Rm}),Fr(Fm,"Companion",Lr),Fr(Hm,"$serializer",Lr,Yr,[Yo]),Fr(Ym,"WmtsCapabilities",Br,Yr,Yr,Yr,Yr,{0:Vm}),Fr(Wm,"Companion",Lr),Fr(Km,"$serializer",Lr,Yr,[Yo]),Fr(Zm,"WmtsContents",Br,Yr,Yr,Zm,Yr,{0:Xm}),Fr(Qm,"Companion",Lr),Fr(ng,"$serializer",Lr,Yr,[Yo]),Fr(rg,"WmtsDimension",Br,Bp,Yr,Yr,Yr,{0:ig}),Fr(sg,"Companion",Lr),Fr(ug,"$serializer",Lr,Yr,[Yo]),Fr(_g,"WmtsLayer",Br,Bp,Yr,Yr,Yr,{0:ag}),Fr(lg,"$serializer",Lr,Yr,[Yo]),Fr(vg,"WmtsLegendURL",Br,Yr,Yr,Yr,Yr,{0:cg}),Fr(dg,"$serializer",Lr,Yr,[Yo]),Fr(mg,"WmtsResourceUrl",Br,Yr,Yr,Yr,Yr,{0:wg}),Fr(gg,"Companion",Lr),Fr($g,"$serializer",Lr,Yr,[Yo]),Fr(xg,"WmtsStyle",Br,Bp,Yr,Yr,Yr,{0:yg}),Fr(Sg,"Companion",Lr),Fr(Cg,"$serializer",Lr,Yr,[Yo]),Fr(zg,"WmtsTheme",Br,Bp,Yr,Yr,Yr,{0:qg}),Fr(Ag,"Companion",Lr),Fr(Ig,"$serializer",Lr,Yr,[Yo]),Fr(Mg,"WmtsTileMatrix",Br,Bp,Yr,Yr,Yr,{0:Dg}),Fr(Ng,"$serializer",Lr,Yr,[Yo]),Fr(Lg,"WmtsTileMatrixLimits",Br,Yr,Yr,Yr,Yr,{0:Rg}),Fr(Fg,"Companion",Lr),Fr(Hg,"$serializer",Lr,Yr,[Yo]),Fr(Yg,"WmtsTileMatrixSet",Br,Bp,Yr,Yr,Yr,{0:Vg}),Fr(Wg,"Companion",Lr),Fr(Kg,"$serializer",Lr,Yr,[Yo]),Fr(Zg,"WmtsTileMatrixSetLink",Br,Yr,Yr,Yr,Yr,{0:Xg}),Fr(ib,"AbstractSurfaceRenderable",Br,Qg),Fr(ob,"Companion",Lr),Fr(ub,"Color",Br,Yr,Yr,eb),Fr(hb,"FontWeight",Br,ds),Fr(cb,"Framebuffer",Br,Yr,Yr,cb),Fr(fb,"Companion",Lr),Fr(vb,"TextCacheKey",Br,Yr,Yr,vb),Fr(wb,"RenderContext",Br,Yr,Yr,wb),Fr(mb,"Companion",Lr),Fr(gb,"Texture",Br),Fr(bb,"AbstractBufferObject",Br),Fr(yb,"Companion",Lr),Fr(kb,"BufferPool",Br),Fr(xb,"FloatBufferObject",Br,bb),Fr(Sb,"IntBufferObject",Br,bb),Fr(Eb,"ShortBufferObject",Br,bb),Fr(qb,"ImageConfig",Br,ds),Fr(zb,"ImageOptions",Br,Yr,Yr,zb),Fr(Tb,"ResamplingMode",Br,ds),Fr(jb,"WrapMode",Br,ds),Fr(Nb,"Companion",Lr),Fr(Pb,"BasicShaderProgram",Br,Rb,Yr,Pb),Fr(Lb,"SightlineProgram",Br,Rb,Yr,Lb),Fr(Fb,"SurfaceTextureProgram",Br,Rb,Yr,Fb),Fr(Ub,"Companion",Lr),Fr(Wb,"Highlightable",ts),Fr(Hb,"AbstractShape",Br,Qg,[Qg,Wb]),Fr(Vb,"Companion",Lr),Fr(Yb,"Ellipse",Br,Hb),Fr(Gb,"Companion",Lr),Fr(Xb,"RenderData",Br,Yr,Yr,Xb),Fr(Zb,"Movable",ts),Fr(Jb,"Label",Br,Qg,[Qg,Wb,Zb]),Fr(Qb,"OmnidirectionalSightline",Br,Qg,[Qg,Wb,Zb]),Fr(n$,"OrientationMode",Br,ds),Fr(r$,"Companion",Lr),Fr(o$,"Path",Br,Hb),Fr(a$,"PathType",Br,ds),Fr(l$,"Companion",Lr),Fr(f$,"Placemark",Br,Qg,[Qg,Wb,Zb]),Fr(d$,"Companion",Lr),Fr(w$,"PlacemarkAttributes",Br,Yr,Yr,v$),Fr(p$,"Companion",Lr),Fr(Dy,"GLUtessellatorCallbackAdapter",Br,Yr,Yr,Dy),Fr(g$,Yr,Br,Dy),Fr(b$,"Polygon",Br,Hb,Yr,b$),Fr(y$,"ShapeAttributes",Br,Yr,Yr,$$),Fr(k$,"SurfaceImage",Br,ib),Fr(E$,"TextAttributes",Br,Yr,Yr,x$),Fr(C$,"Companion",Lr),Fr(O$,"AbsentResourceEntry",Br),Fr(z$,"AbsentResourceList",Br),Fr(A$,"AbstractSource",Br),Fr(j$,"Companion",Lr),Fr(W$,"Pool",ts),Fr(M$,"BasicPool",Br,Yr,[W$],M$),Fr(N$,"Level",Br),Fr(L$,"LevelSet",Br,Yr,Yr,(function(){return t=Ts(Pr(L$)),L$.call(t),t.u6g_1=Y_(),t.v6g_1=Y_(),t.w6g_1=m_(),t.x6g_1=0,t.y6g_1=0,t.z6g_1=0,t.a6h_1=[],t;var t})),Fr(F$,"LevelSetConfig",Br,Yr,Yr,F$),Fr(U$,"Entry",Br),Fr(H$,"sam$kotlin_Comparator$0",Br),Fr(B$,"LruMemoryCache",Br),Fr(G$,"CelestialLocation",Br),Fr(K$,"SunPosition",Lr),Fr(X$,"Companion",Lr),Fr(ny,"ExponentFormatter",Br),Fr(uy,"Stage",Br,ds),Fr(ky,"Companion",Lr),Fr(qy,"Specification",Br),Fr(zy,"Positioning",Br,ds),Fr(Ty,"StringFormat",Br),Fr(Iy,"GLU",Lr),Fr(jy,"Error",Lr),Fr(My,"ActiveRegion",Br),Fr(Ny,"CachedVertex",Br,Yr,Yr,Ny),Fr(Ry,"Companion",Lr),Fr(Py,"Dict",Br),Fr(Ly,"DictNode",Br,Yr,Yr,Ly),Fr(Fy,"GLUface",Br,Yr,Yr,Fy),Fr(Uy,"GLUhalfEdge",Br),Fr(Hy,"GLUmesh",Br,Yr,Yr,Hy),Fr(Gy,"Companion",Lr),Fr(Xy,"GLUtessellatorImpl",Br),Fr(Jy,"GLUvertex",Br,Yr,Yr,Jy),Fr(Zy,"Geom",Lr),Fr(Qy,"Mesh",Lr),Fr(nk,"Normal",Lr),Fr(ik,"PQnode",Br,Yr,Yr,ik),Fr(ek,"PQhandleElem",Br,Yr,Yr,ek),Fr(rk,"Companion",Lr),Fr(sk,"PriorityQ",Br),Fr(ok,"PriorityQHeap",Br,sk,Yr,ok),Fr(hk,"Stack",Br,Yr,Yr,hk),Fr(_k,"Companion",Lr),Fr(lk,"PriorityQSort",Br,sk,Yr,lk),Fr(mk,"FaceCount",Br,Yr,Yr,ck),Fr(gk,"RenderTriangle",Br,Yr,Yr,gk),Fr(bk,"RenderFan",Br,Yr,Yr,bk),Fr($k,"RenderStrip",Br,Yr,Yr,$k),Fr(yk,"Render",Lr),Fr(Ck,Yr,Br),Fr(qk,"Sweep",Lr),Fr(Ok,"TessMono",Lr),Fr(zk,"TessState",Lr),Fr(Ik,"Kgl",ts),Fr(Dx,"WorldWindowController",Br),Fr(yx,"BasicWorldWindowController",Br,Dx),Fr(kx,"KeyboardControls",Br),Fr(Sx,"WorldWindow$contextRestored$slambda$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(Cx,"EventListenerEntry",Br),Fr(qx,"Companion",Lr),Fr(Ox,"RedrawStage",Br,ds),Fr(zx,"sam$kotlinx_coroutines_flow_FlowCollector$0",Br,Yr,Yr,Yr,Yr,Yr,[1]),Fr(Tx,"WorldWindow$contextRestored$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(Ix,"WorldWindow",Br),Fr(jx,"GeoTiffConstants",Lr),Fr(Mx,"GeoTiffKeyEntry",Br),Fr(Nx,"GeoTiffMetadata",Br,Yr,Yr,Nx),Fr(Fx,"GeoTiffReader",Br),Fr(Ux,"GeoTiffUtil",Lr),Fr(Hx,"IFDTag",Lr),Fr(Vx,"Compression",Lr),Fr(Bx,"SampleFormat",Lr),Fr(Yx,"Type",Lr),Fr(Wx,"TiffIFDEntry",Br),Fr(Qx,"GestureRecognizer",Br),Fr(Gx,"ClickRecognizer",Br,Qx),Fr(Kx,"DragRecognizer",Br,Qx),Fr(Xx,"Companion",Lr),Fr(Zx,"Click",Br),Fr(tS,"PanRecognizer",Br,Qx),Fr(nS,"PinchRecognizer",Br,Qx),Fr(iS,"RotationRecognizer",Br,Qx),Fr(eS,"Companion",Lr),Fr(rS,Yr,Br,Kx),Fr(sS,Yr,Br,tS),Fr(oS,"SelectDragDetector",Br),Fr(uS,"TapRecognizer",Br,Qx),Fr(aS,"Companion",Lr),Fr(hS,"TiltRecognizer",Br,tS),Fr(_S,"TouchWrapper",Br),Fr(lS,"Companion",Lr),Fr(cS,"ElevationSource",Br,A$),Fr(vS,Yr,Br),Fr(dS,"TiledElevationCoverage$decodeTiffImage$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(wS,"$retrieveTileArrayCOROUTINE$4",Br,Ks),Fr(gS,"Companion",Lr),Fr(yS,"$processCOROUTINE$5",Br,Ks),Fr(kS,"MercatorImageTile",Br,hv,Yr,Yr,Yr,Yr,[1]),Fr(CS,"Font",Br,Yr,Yr,xS),Fr(qS,"Companion",Lr),Fr(OS,"RenderResourceCache$retrieveTexture$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(zS,"RenderResourceCache$retrieveTextFile$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(AS,"RenderResourceCache$retrieveRemoteImage$lambda$slambda",Br,Ks,Yr,Yr,Yr,Yr,[1]),Fr(IS,"RenderResourceCache",Br,B$,Yr,IS),Fr(DS,"TextRenderer",Br),Fr(jS,"Companion",Lr),Fr(NS,"ImageFactory",ts),Fr(RS,"LineStippleImageFactory",Br,Yr,[NS]),Fr(PS,"ImageSource",Br,A$),Fr(FS,"ImageTexture",Br,gb),Fr(HS,"Logger",Lr),Fr(VS,"SynchronizedPool",Br,M$,Yr,VS),Fr(BS,"WebKgl",Br,Yr,[Ik]),Fr(YS,"Companion",Lr),Fr(WS,"KglShader",Br,Yr,Yr,WS),Fr(GS,"Companion",Lr),Fr(XS,"KglProgram",Br,Yr,Yr,XS),Fr(JS,"Companion",Lr),Fr(QS,"KglUniformLocation",Br,Yr,Yr,QS),Fr(tE,"Companion",Lr),Fr(iE,"KglBuffer",Br,Yr,Yr,iE),Fr(eE,"Companion",Lr),Fr(sE,"KglTexture",Br,Yr,Yr,sE),Fr(oE,"Companion",Lr),Fr(aE,"KglFramebuffer",Br,Yr,Yr,aE),Pr(Ra).v51=function(t,n,i){var e=n.w51();return new Pa(t,null==e?n:e,i)},Pr(Ra).x51=function(t,n){var i=F_(n);return new Pa(t,i,Yr,i)},Pr(Ra).y51=function(t,n){var i=t>>16&255,e=t>>8&255,r=255&t;return n.z51_1=i/255,n.a52_1=e/255,n.b52_1=r/255,n.c52_1=1,n},Pr(Ra).d52=function(t){var n=255*t.z51_1,i=Wr(n),e=255*t.a52_1,r=Wr(e),s=255*t.b52_1;return i<<16|r<<8|Wr(s)},Pr(Pa).j52=function(){return!(null==this.h52_1)},Pr(Pa).k52=function(){this.i52_1=!0},Pr(Pa).toString=function(){return"PickedObject(isOnTop="+this.i52_1+", identifier="+this.e52_1+", userObject="+Gr(this.f52_1)+", layer="+this.g52_1+", terrainPosition="+this.h52_1+")"},Pr(Fa).m52=function(){return this.l52_1.c2()},Pr(Fa).n52=function(){return this.l52_1.n()},Pr(Fa).o52=function(){var t;t:{for(var n=this.m52().v();n.w();){var i=n.y();if(i.i52_1){t=i;break t}}t=null}return t},Pr(Fa).p52=function(){var t;t:{for(var n=this.m52().v();n.w();){var i=n.y();if(i.j52()){t=i;break t}}t=null}return t},Pr(Fa).q52=function(t){var n=this.l52_1,i=t.e52_1;n.e2(i,t)},Pr(Fa).r52=function(t){return this.l52_1.o2(t)},Pr(Fa).s52=function(){return this.l52_1.b1()},Pr(Fa).toString=function(){var t=this.m52();return Jr(t,", ","PickedObjectList{","}",Yr,Yr,La)},Pr(Va).w52=function(){this.u52_1.k14(p)},Pr(Wa).h54=function(t){if(!(t>0)){var n=kr.n54(kr.i54_1,"WorldWind","setDensityFactor","invalidDensityFactor");throw is(Gr(n))}this.h53_1=t},Pr(Wa).r1h=function(){this.x52_1.b1(),this.y52_1.b55_1.f55(),this.f53_1.k55(),this.h54(1)},Pr(Wa).l55=function(){this.l53_1.m55_1.l56(oe),this.l53_1.m55_1.l56(Dk()),this.l53_1.m55_1.l56(jk()),this.l53_1.m55_1.m56(0),this.l53_1.m55_1.n56(he),this.l53_1.m55_1.o56(Mk(),Nk()),this.l53_1.m55_1.p56(ce),this.l53_1.q56(),this.m53_1=this.l53_1.m55_1.r56(fe)},Pr(Wa).s56=function(t,n){if(this.l53_1.m55_1.t56(0,0,t,n),this.g53_1&&0!==this.f53_1.j55_1)try{var i=this.d53_1;i.u56((e=i.a54_1,r=n/this.f53_1.j55_1,Uh().d5d(e*xs(r))))}catch(t){if(!(t instanceof es))throw t}var e,r;this.f53_1.v56(0,0,t,n)},Pr(Wa).w56=function(t,n){if(null!=n)this.x56(this.n53_1),this.y52_1.t57(n.b54_1,n.c54_1,n.f54_1,this.p53_1),t.l57_1.u57(n);else if(this.f53_1.n19()||!this.s57(this.f53_1.i55_1/2,this.f53_1.j55_1/2,t.l57_1)){this.x56(this.n53_1),this.n53_1.b57(this.q53_1.y56_1),this.n53_1.c57(this.q53_1.z56_1);var i=this.y52_1.d57(this.d53_1.v53_1,this.d53_1.w53_1);this.q53_1.f57(this.y52_1.e57(i.f54_1),this.p53_1),this.y52_1.r57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,t.l57_1)}return this.y52_1.v57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,this.o53_1),this.n53_1.w57(this.o53_1),t.n57_1=-this.n53_1.a57_1[11],t.o57_1=this.n53_1.x57(this.d53_1.z53_1),t.p57_1=this.n53_1.y57(),t.q57_1=this.d53_1.z53_1,t},Pr(Wa).z57=function(t,n,i){return n=n===Yr?null:n,i===Yr?this.w56(t,n):i.w56.call(this,t,n)},Pr(Wa).a58=function(t){this.b58(t),this.c58(t,this.n53_1),this.n53_1.b57(this.p53_1),this.y52_1.r57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,this.d53_1.v53_1),this.y52_1.v57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,this.o53_1),this.n53_1.w57(this.o53_1),this.d53_1.w53_1=Nh(),this.d53_1.x53_1=this.n53_1.x57(t.q57_1),this.d53_1.y53_1=this.n53_1.y57(),this.d53_1.z53_1=t.q57_1;var n=this.d53_1.v53_1,i=this.y52_1.e58()?10:this.y52_1.d58(n.b54_1,n.c54_1)*this.i53_1+10;if(i>n.f54_1){n.f54_1=i,this.y52_1.t57(n.b54_1,n.c54_1,n.f54_1,this.p53_1),this.y52_1.t57(t.l57_1.b54_1,t.l57_1.c54_1,t.l57_1.f54_1,this.q53_1.y56_1),this.y52_1.f58(t.l57_1.b54_1,t.l57_1.c54_1,this.q53_1.z56_1),this.p53_1.g58(this.q53_1.y56_1).h58();var e=this.q53_1.z56_1.i58(this.p53_1);if(e>=-1&&e<=1){var r=this.d53_1,s=Uh(),o=Math.acos(e);r.y53_1=s.i59(o)}}},Pr(Wa).s57=function(t,n,i){var e,r;if(this.l59(t,n,this.q53_1)){var s;t:{var o=this.a53_1.j59().c2();if(ss(o,rs)&&o.d1())s=!1;else{for(var u=o.v();u.w();)if(u.y().k59(this.q53_1,this.p53_1)){s=!0;break t}s=!1}}r=s}else r=!1;return r?(this.y52_1.r57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,i),e=!0):e=!1,e},Pr(Wa).m59=function(t,n){return this.n59(t.g57_1,t.h57_1,t.k57_1,n)},Pr(Wa).n59=function(t,n,i,e){return!this.f53_1.n19()&&(this.o59(this.o53_1,this.n53_1),this.o53_1.w57(this.n53_1),!!this.o53_1.p59(t,n,i,this.f53_1,this.p53_1)&&(e.g57_1=this.p53_1.g57_1,e.h57_1=this.f53_1.j55_1-this.p53_1.h57_1,!0))},Pr(Wa).q59=function(t,n,i,e){return this.y52_1.t57(t,n,i,this.p53_1),this.m59(this.p53_1,e)},Pr(Wa).r59=function(t,n,i){var e;return this.l59(t,n,this.q53_1)&&this.y52_1.k59(this.q53_1,this.p53_1)?(this.y52_1.r57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,i),e=!0):e=!1,e},Pr(Wa).l59=function(t,n,i){return!this.f53_1.n19()&&(this.o59(this.o53_1,this.n53_1),this.o53_1.w57(this.n53_1).s59(),!!this.o53_1.t59(t,this.f53_1.j55_1-n,this.f53_1,i.y56_1,i.z56_1)&&(i.z56_1.g58(i.y56_1).h58(),!0))},Pr(Wa).u59=function(t){var n=.5*Lh(this.d53_1.a54_1);return 2*t*Math.tan(n)/this.f53_1.j55_1},Pr(Wa).u53=function(){var t=.5*Lh(this.d53_1.a54_1),n=Math.sin(t),i=this.y52_1.v59();return i/n-i},Pr(Wa).w59=function(t){var n=t.h5a_1;if(!n){var i=this.b53_1;null==i||i.j5a(this.k53_1)}this.y52_1.e58()&&(this.d53_1.y53_1=Uh().j58_1,this.d53_1.z53_1=Uh().j58_1),this.k53_1.k5a_1=this.y52_1,this.k53_1.l5a_1=this.z52_1,this.k53_1.n5a_1=this.c53_1,this.k53_1.p5a_1=this.d53_1;var e=this.y52_1.d57(this.d53_1.v53_1,this.d53_1.w53_1);if(this.k53_1.t5a_1=this.y52_1.e57(e.f54_1),this.y52_1.t57(e.b54_1,e.c54_1,e.f54_1,this.k53_1.a5b_1),this.k53_1.q5a_1=this.x52_1,this.k53_1.s5a_1=this.i53_1,this.k53_1.r5a_1=this.h53_1,this.k53_1.u5a_1=this.j53_1,this.k53_1.y5a_1=this.y52_1.vm(),this.k53_1.z5a_1=this.y52_1.b55_1.x5b(),this.o59(t.y59_1,t.z59_1),t.x59_1.y5b(this.f53_1),this.k53_1.b5b_1.y5b(t.x59_1),this.k53_1.c5b_1.z5b(t.y59_1),this.k53_1.d5b_1.z5b(t.z59_1),this.k53_1.e5b_1.a5c(t.y59_1,t.z59_1),n?this.k53_1.f5b_1.l5c(t.y59_1,t.z59_1,t.x59_1,os(t.e5a_1)):this.k53_1.f5b_1.k5c(t.y59_1,t.z59_1,t.x59_1),this.y52_1.e58()){this.q53_1.y56_1.m5c(this.k53_1.a5b_1),this.k53_1.d5b_1.c57(this.q53_1.z56_1);var r,s=this.k53_1;this.y52_1.k59(this.q53_1,this.p53_1)?(this.k53_1.x5a_1=this.y52_1.r57(this.p53_1.g57_1,this.p53_1.h57_1,this.p53_1.k57_1,L_()),r=this.p53_1.n5c(this.k53_1.a5b_1)):r=this.k53_1.t5a_1,s.v5a_1=r,this.k53_1.w5a_1=this.k53_1.u59(this.k53_1.v5a_1)}this.k53_1.g5b_1=t.a5a_1,this.k53_1.h5b_1=t.b5a_1,this.k53_1.i5b_1=t.c5a_1,this.k53_1.j5b_1=t.d5a_1,this.k53_1.k5b_1=t.e5a_1,this.k53_1.l5b_1=t.f5a_1,this.k53_1.m5b_1=t.g5a_1,this.k53_1.n5b_1=t.h5a_1,this.a53_1.o5c(this.k53_1);var o=!n&&this.k53_1.o5b_1;if(!n){var u=this.b53_1;null==u||u.p5c(this.k53_1)}return this.k53_1.r1h(),o},Pr(Wa).q5c=function(t){var n=t.h5a_1;if(!n){var i=this.b53_1;null==i||i.r5c(this.l53_1)}if(this.l53_1.n55_1.m5c(t.z59_1.b57(this.l53_1.n55_1)),this.l53_1.o55_1.y5b(t.x59_1),this.l53_1.p55_1.z5b(t.y59_1),this.l53_1.q55_1.z5b(t.z59_1),this.l53_1.r55_1.a5c(t.y59_1,t.z59_1),this.l53_1.s55_1.s5c(t.x59_1.i55_1,t.x59_1.j55_1),this.l53_1.t55_1=t.a5a_1,this.l53_1.u55_1=t.b5a_1,this.l53_1.v55_1=t.c5a_1,this.l53_1.w55_1=t.e5a_1,this.l53_1.x55_1=t.f5a_1,this.l53_1.y55_1=t.h5a_1,this.a53_1.t5c(this.l53_1),this.x52_1.u5c(),this.x52_1.v5c(this.l53_1),!n){var e=this.b53_1;null==e||e.w5c(this.l53_1)}this.l53_1.r1h()},Pr(Wa).o59=function(t,n){var i=this.y52_1.d57(this.d53_1.v53_1,this.d53_1.w53_1).f54_1,e=this.y52_1.e57(i)+this.y52_1.e57(this.j53_1);e<1e3&&(e=1e3);var r=(1<0){var u=.5*Lh(this.d53_1.a54_1),a=Math.tan(u),h=2*a*a+1,_=o/(2*Math.sqrt(h));s>_&&(s=_)}s<1&&(s=1),t.x5c(this.f53_1.i55_1,this.f53_1.j55_1,this.d53_1.a54_1,s,e),this.x56(n)},Pr(Wa).x56=function(t){return this.y5c(this.d53_1.v53_1,this.d53_1.w53_1,t),t.z5c(0,0,1,Kh(this.d53_1.x53_1)),t.z5c(1,0,0,this.d53_1.y53_1),t.z5c(0,0,1,this.d53_1.z53_1),t.a5d(),t},Pr(Wa).c58=function(t,n){return this.y5c(t.l57_1,t.m57_1,n),n.z5c(0,0,1,Kh(t.o57_1)),n.z5c(1,0,0,t.p57_1),n.z5c(0,0,1,t.q57_1),n.b5d(0,0,t.n57_1),n.a5d(),n},Pr(Wa).y5c=function(t,n,i){switch(n.v9_1){case 0:this.y52_1.c5d(t.b54_1,t.c54_1,t.f54_1,i);break;case 1:this.y52_1.c5d(t.b54_1,t.c54_1,this.y52_1.d58(t.b54_1,t.c54_1)*this.i53_1,i);break;case 2:this.y52_1.c5d(t.b54_1,t.c54_1,(t.f54_1+this.y52_1.d58(t.b54_1,t.c54_1))*this.i53_1,i)}return i},Pr(Wa).b58=function(t){t.l57_1.b54_1=Qh(t.l57_1.b54_1),t.l57_1.c54_1=Zh(t.l57_1.c54_1),t.n57_1=us(t.n57_1,10,2*this.u53()),t.o57_1=Xh(t.o57_1);var n=t,i=Uh(),e=us(t.p57_1,0,90);n.p57_1=i.d5d(e),t.q57_1=Xh(t.q57_1),this.y52_1.e58()&&(t.n57_1=us(t.n57_1,1,2*as()*this.y52_1.v59()),t.p57_1=Uh().j58_1,t.q57_1=Uh().j58_1)},Pr(Ga).e5d=function(t){var n=t.f5d(),i=null==n?new Ka:n;return i.p5d_1=t,i},Pr(Ka).q5d=function(t){this.g5d_1=t},Pr(Ka).r5d=function(){return this.g5d_1},Pr(Ka).s5d=function(){return this.h5d_1},Pr(Ka).t5d=function(){return this.i5d_1},Pr(Ka).u5d=function(){this.l5d_1=null,this.m5d_1=null,this.n5d_1=null,this.o5d_1=null;var t=this.p5d_1;null==t||t.v5d(this),this.p5d_1=null},Pr(Ka).w5d=function(t,n){var i=this.l5d_1,e=null==i?null:i.c5e(t),r=null!=e&&e;return r&&t.m55_1.d5e(n,3,ax(),!1,0,0),r},Pr(Ka).e5e=function(t,n){var i=this.m5d_1,e=null==i?null:i.c5e(t),r=null!=e&&e;return r&&t.m55_1.d5e(n,1,ax(),!1,0,0),r},Pr(Ka).f5e=function(t,n){var i=this.n5d_1,e=null==i?null:i.c5e(t),r=null!=e&&e;return r&&t.m55_1.d5e(n,2,ax(),!1,0,0),r},Pr(Ka).g5e=function(t){var n=this.o5d_1,i=null==n?null:n.c5e(t),e=null!=i&&i;return e&&t.m55_1.o5e(Hk(),this.j5d_1.a(),Fk(),Tr(this.j5d_1.m5e_1,2)),e},Pr(Ka).p5e=function(t){var n=this.o5d_1,i=null==n?null:n.c5e(t),e=null!=i&&i;return e&&t.m55_1.o5e(Lk(),this.k5d_1.a(),Fk(),Tr(this.k5d_1.m5e_1,2)),e},Pr(Ka).q5e=function(t){this.p5e(t)},Pr(Xa).v5e=function(){var t=this.u55_1,n=null==t?null:t.n52();return null==n?0:n},Pr(Xa).a5f=function(){return this.z55_1},Pr(Xa).b5f=function(){return this.a56_1},Pr(Xa).c5f=function(){return this.d5f(this.b56_1)},Pr(Xa).e5f=function(){var t,n=this.f56_1;if(null==n){var i=new cb,e=new gb(1024,1024,nx(),ix(),!0),r=new gb(1024,1024,je,Fk(),!0);r.p5f(Yk(),Wk()),r.p5f(Gk(),Wk()),i.s5f(this,e,ex()),i.s5f(this,r,rx()),this.f56_1=i,t=i}else t=n;return t},Pr(Xa).t5f=function(){var t,n=this.g56_1;if(null==n){var i=new xb(Rk(),new Float32Array([0,1,0,0,1,1,1,0]));this.g56_1=i,t=i}else t=n;return t},Pr(Xa).r1h=function(){this.n55_1.u5f(0,0,0),this.o55_1.k55(),this.p55_1.v5f(),this.q55_1.v5f(),this.r55_1.v5f(),this.s55_1.v5f(),this.t55_1=null,this.u55_1=null,this.v55_1=null,this.w55_1=null,this.x55_1=null,this.y55_1=!1,ls(this.h56_1,0),this.k56_1.b1(),this.j56_1.r1h()},Pr(Xa).q56=function(){this.z55_1=uE().r5e_1,this.a56_1=KS().s5e_1,this.b56_1=tx(),this.d56_1=nE().u5e_1,this.e56_1=nE().u5e_1,this.f56_1=null,this.g56_1=null,cs(this.c56_1,rE().t5e_1),this.j56_1.q56()},Pr(Xa).d5g=function(){var t=this.t55_1;return null==t?null:t.d5g()},Pr(Xa).e5g=function(){var t=this.t55_1;return null==t?null:t.e5g()},Pr(Xa).f5g=function(){var t=this.t55_1;null==t||t.f5g()},Pr(Xa).g5g=function(t){var n=this.u55_1,i=null==n?null:n.h5g(t),e=null==i||ss(i,Oh)?i:Nr();if(null==e)throw fs(Gr("Invalid index"));return e},Pr(Xa).i5g=function(t){this.z55_1.equals(t)||(this.z55_1=t,this.m55_1.j5g(sx(),t))},Pr(Xa).k5g=function(t){this.a56_1.equals(t)||(this.a56_1=t,this.m55_1.k5g(t))},Pr(Xa).l5g=function(t){this.b56_1!==t&&(this.b56_1=t,this.m55_1.m5g(t))},Pr(Xa).d5f=function(t){return this.c56_1[t-tx()|0]},Pr(Xa).n5g=function(t){var n=this.b56_1-tx()|0;this.c56_1[n].equals(t)||(this.c56_1[n]=t,this.m55_1.o5g(ox(),t))},Pr(Xa).p5g=function(t){return t===Rk()?this.d56_1:t===Pk()?this.e56_1:nE().u5e_1},Pr(Xa).q5g=function(t,n){t!==Rk()||this.d56_1.equals(n)?(t!==Pk()||this.e56_1.equals(n)||(this.e56_1=n),this.m55_1.q5g(t,n)):(this.d56_1=n,this.m55_1.q5g(t,n))},Pr(Xa).r5g=function(t){return this.j56_1.s5g(this,t)},Pr(Xa).t5g=function(t,n,i){return this.m55_1.u5g(t,n,1,1,nx(),ix(),this.i56_1),i.z51_1=(255&this.i56_1[0])/255,i.a52_1=(255&this.i56_1[1])/255,i.b52_1=(255&this.i56_1[2])/255,i.c52_1=(255&this.i56_1[3])/255,i},Pr(Xa).v5g=function(t,n,i,e){var r=Tr(i,e),s=this.w5g(Tr(r,4)),o=this.m55_1.r56(ux());this.m55_1.x5g(ux(),1),this.m55_1.u5g(t,n,i,e,nx(),ix(),s),this.m55_1.x5g(ux(),o);var u=vs(),a=eb(),h=0;if(h>1,s=Math.max(r,12),o=hs(Array(e+s|0),null),u=this.y5e_1,a=u.length;ps(u,o,0,0,a),this.y5e_1=o}var h,_=this.y5e_1[this.w5e_1];if(null==_){var l=new _h;this.y5e_1[this.w5e_1]=l,h=l}else h=_;var c=h,f=this.w5e_1;this.w5e_1=f+1|0,c.f5l(t,n,i,f)},Pr(fh).h5g=function(t){var n;if(tO.q5n_1&&kr.v5o(kr.j54_1,"StarFieldLayer - sunSize is to big, max size allowed is: "+O.q5n_1),!0!==(null==i?null:i.c5e(t))||!0!==(null==e?null:e.z5l(t))?Xr:(t.m55_1.d5e(0,4,ax(),!1,0,0),n.t5o(!0),void t.m55_1.z5k(hx(),0,1))},Pr(yh).w5o=function(t){var n=t.f5d(),i=null==n?new kh:n;return i.a5p_1=t,i},Pr(kh).u5d=function(){this.z5o_1=null;var t=this.a5p_1;null==t||t.v5d(this),this.a5p_1=null},Pr(kh).q5e=function(t){var n=this.z5o_1;if(null==n)return Xr;var i=n;if(!i.w5i(t))return Xr;i.u5k(!1),i.v5k(this.x5o_1),i.w5k(this.y5o_1);var e=0,r=t.v5e();if(e0&&this.m5p(t,a)}while(s180?n-360:n<-180?360+n:n},Pr(Fh).p5t=function(t){var n=t%360;return n>=0?n:360+n},Pr(Fh).q5t=function(t){var n=t%180,i=n>90?180-n:n<-90?-180-n:n;return 0==(ks(t/180)%2|0)?i:-i},Pr(Fh).r5t=function(t){var n=t%360;return n>180?n-360:n<-180?360+n:n},Pr(Fh).s5t=function(t){return us(t,-90,90)},Pr(Fh).t5t=function(t){return us(t,-180,180)},Pr(Fh).u5t=function(t,n){return this.d5d(.5*(t+n))},Pr(Fh).v5t=function(t,n){return t>=n?t:n},Pr(Fh).w5t=function(t,n){return t<=n?t:n},Pr(e_).y5t=function(t){return n_(this.x5t_1,t)},Pr(e_).d=function(t){return function(t,n){return n_(t.x5t_1,n instanceof e_?n.x5t_1:Nr())}(this,t)},Pr(e_).toString=function(){return this.x5t_1+"°"},Pr(e_).hashCode=function(){return i_(this.x5t_1)},Pr(e_).equals=function(t){return function(t,n){if(!(n instanceof e_))return!1;var i=n instanceof e_?n.x5t_1:Nr();return!!Ss(t,i)}(this.x5t_1,t)},Pr(a_).e5u=function(){return 0===this.a5s_1.g57_1&&0===this.a5s_1.h57_1&&0===this.a5s_1.k57_1&&this.g5s_1===Math.sqrt(3)},Pr(a_).f5u=function(){return this.a5s_1.u5f(0,0,0),this.b5s_1.u5f(-.5,0,0),this.c5s_1.u5f(.5,0,0),this.d5s_1.u5f(1,0,0),this.e5s_1.u5f(0,1,0),this.f5s_1.u5f(0,0,1),this.g5s_1=Math.sqrt(3),this},Pr(a_).g5u=function(t,n,i){var e=z_();e.h5u(t,n,i),e.i5u(this.d5s_1,this.e5s_1,this.f5s_1),this.d5s_1.h58(),this.e5s_1.h58(),this.f5s_1.h58();var r=1/0,s=-1/0,o=1/0,u=-1/0,a=1/0,h=-1/0,_=il(),l=Os(qs(0,n),i),c=l.ea_1,f=l.fa_1,v=l.ga_1;if(v>0&&c<=f||v<0&&f<=c)do{var d=c;c=c+v|0,_.u5f(t[d],t[d+1|0],t[d+2|0]);var w=_.i58(this.d5s_1);r>w&&(r=w),sp&&(o=p),um&&(a=m),h180){var p=e;n.t57(t.l5u(),Vh(t.m5u(),90),p,this.h5s_1),n.t57(t.l5u(),Wh(t.m5u(),90),p,this.i5s_1),r_(0,this.d5s_1,h,this.e5s_1,_,this.f5s_1,l,this.h5s_1),r_(0,this.d5s_1,h,this.e5s_1,_,this.f5s_1,l,this.i5s_1)}h[1]-h[0]<_[1]-_[0]&&s_(0,this.d5s_1,h,this.e5s_1,_),_[1]-_[0]i&&(n=i),n>(i=this.b5s_1.o5u(t))&&(n=i),n>(i=this.c5s_1.o5u(t))&&(n=i),this.h5s_1.g57_1=this.a5s_1.g57_1-.5*this.e5s_1.g57_1,this.h5s_1.h57_1=this.a5s_1.h57_1-.5*this.e5s_1.h57_1,this.h5s_1.k57_1=this.a5s_1.k57_1-.5*this.e5s_1.k57_1,n>(i=this.h5s_1.o5u(t))&&(n=i),this.h5s_1.g57_1=this.a5s_1.g57_1+.5*this.e5s_1.g57_1,this.h5s_1.h57_1=this.a5s_1.h57_1+.5*this.e5s_1.h57_1,this.h5s_1.k57_1=this.a5s_1.k57_1+.5*this.e5s_1.k57_1,n>(i=this.h5s_1.o5u(t))&&(n=i);var e=n;return Math.sqrt(e)},Pr(a_).n5s=function(t){this.h5s_1.m5c(this.b5s_1),this.i5s_1.m5c(this.c5s_1);var n,i=this.l5s_1>=0?t.i5c_1[this.l5s_1]:null,e=-1;if(!1!==(null==i?null:o_(this,i)>=0)){var r;t:{for(var s=t.i5c_1,o=0,u=s.length;o=0;if(h||(this.l5s_1=e),!h){r=!1;break t}}r=!0}n=r}else n=!1;return n},Pr(a_).toString=function(){return"BoundingBox(center="+this.a5s_1+", bottomCenter="+this.b5s_1+", topCenter="+this.c5s_1+", r="+this.d5s_1+", s="+this.e5s_1+", t="+this.f5s_1+", radius="+this.g5s_1+")"},Pr(h_).s5u=function(t){if(!(t>=0)){var n=kr.n54(kr.i54_1,"BoundingSphere","setRadius","invalidRadius");throw is(Gr(n))}this.q5u_1=t},Pr(h_).t5u=function(t,n){return this.p5u_1.m5c(t),this.s5u(n),this},Pr(h_).n5s=function(t){var n,i=-this.q5u_1,e=this.r5u_1>=0?t.i5c_1[this.r5u_1]:null,r=-1;if(!1!==(null==e?null:e.u5u(this.p5u_1)>i)){var s;t:{for(var o=t.i5c_1,u=0,a=o.length;ui;if(_||(this.r5u_1=r),!_){s=!1;break t}}s=!0}n=s}else n=!1;return n},Pr(h_).equals=function(t){return this===t||t instanceof h_&&!!this.p5u_1.equals(t.p5u_1)&&this.q5u_1===t.q5u_1},Pr(h_).hashCode=function(){var t=this.p5u_1.hashCode();return Tr(31,t)+Es(this.q5u_1)|0},Pr(h_).toString=function(){return"BoundingSphere(center="+this.p5u_1+", radius="+this.q5u_1+")"},Pr(__).u56=function(t){if(!(t>0&&t<180)){var n=kr.n54(kr.i54_1,"Camera","setFieldOfView","invalidFieldOfView");throw is(Gr(n))}this.a54_1=t},Pr(__).v5u=function(t,n,i,e,r,s,o){return this.v53_1.g54(t,n,i),this.w53_1=e,this.x53_1=r,this.y53_1=s,this.z53_1=o,this},Pr(__).toString=function(){return"Camera(position="+this.v53_1+", altitudeMode="+this.w53_1+", heading="+new e_(this.x53_1)+", tilt="+new e_(this.y53_1)+", roll="+new e_(this.z53_1)+", fieldOfView="+new e_(this.a54_1)+")"},Pr(f_).a5v=function(){var t=1/this.z5u_1;return this.y5u_1*(1-t)},Pr(f_).b5v=function(){var t=1/this.z5u_1;return 2*t-t*t},Pr(f_).toString=function(){return"Ellipsoid(semiMajorAxis="+this.y5u_1+", inverseFlattening="+this.z5u_1+")"},Pr(f_).hashCode=function(){var t=Es(this.y5u_1);return Tr(t,31)+Es(this.z5u_1)|0},Pr(f_).equals=function(t){if(this===t)return!0;if(!(t instanceof f_))return!1;var n=t instanceof f_?t:Nr();return!!Ss(this.y5u_1,n.y5u_1)&&!!Ss(this.z5u_1,n.z5u_1)},Pr(d_).c5v=function(){return this.b5c_1.d5v(1,0,0,1),this.c5c_1.d5v(-1,0,0,1),this.d5c_1.d5v(0,1,0,1),this.e5c_1.d5v(0,-1,0,1),this.f5c_1.d5v(0,0,-1,1),this.g5c_1.d5v(0,0,1,1),this.h5c_1.v56(0,0,1,1),this},Pr(d_).k5c=function(t,n,i){this.j5c_1.e5v(n);var e=t.a57_1,r=e[12]+e[0],s=e[13]+e[1],o=e[14]+e[2],u=e[15]+e[3];return this.b5c_1.d5v(r,s,o,u),this.b5c_1.f5v(this.j5c_1),r=e[12]-e[0],s=e[13]-e[1],o=e[14]-e[2],u=e[15]-e[3],this.c5c_1.d5v(r,s,o,u),this.c5c_1.f5v(this.j5c_1),r=e[12]+e[4],s=e[13]+e[5],o=e[14]+e[6],u=e[15]+e[7],this.d5c_1.d5v(r,s,o,u),this.d5c_1.f5v(this.j5c_1),r=e[12]-e[4],s=e[13]-e[5],o=e[14]-e[6],u=e[15]-e[7],this.e5c_1.d5v(r,s,o,u),this.e5c_1.f5v(this.j5c_1),r=e[12]+e[8],s=e[13]+e[9],o=e[14]+e[10],u=e[15]+e[11],this.f5c_1.d5v(r,s,o,u),this.f5c_1.f5v(this.j5c_1),r=e[12]-e[8],s=e[13]-e[9],o=e[14]-e[10],u=e[15]-e[11],this.g5c_1.d5v(r,s,o,u),this.g5c_1.f5v(this.j5c_1),this.h5c_1.y5b(i),this},Pr(d_).l5c=function(t,n,i,e){var r,s,o,u,a,h,_,l,c=e.g55_1,f=e.g55_1+e.i55_1|0,v=e.h55_1,d=e.h55_1+e.j55_1|0,w=this.j5c_1.a5c(t,n).s59(),p=il();r=p;var m=p,g=il();s=g,w.t59(c,v,i,m,g);var b=il();o=b;var $=b,y=il();u=y,w.t59(f,v,i,$,y);var k=il();a=k;var x=k,S=il();h=S,w.t59(c,d,i,x,S);var E=il();_=E;var C=E,q=il();l=q,w.t59(f,d,i,C,q);var O=new el(h.g57_1-r.g57_1,h.h57_1-r.h57_1,h.k57_1-r.k57_1),z=new el(a.g57_1-s.g57_1,a.h57_1-s.h57_1,a.k57_1-s.k57_1),A=O.g5v(z);this.b5c_1.d5v(A.g57_1,A.h57_1,A.k57_1,-A.i58(r)),O.u5f(_.g57_1-u.g57_1,_.h57_1-u.h57_1,_.k57_1-u.k57_1),z.u5f(l.g57_1-o.g57_1,l.h57_1-o.h57_1,l.k57_1-o.k57_1);var T=O.g5v(z);this.c5c_1.d5v(T.g57_1,T.h57_1,T.k57_1,-T.i58(o)),O.u5f(u.g57_1-r.g57_1,u.h57_1-r.h57_1,u.k57_1-r.k57_1),z.u5f(s.g57_1-o.g57_1,s.h57_1-o.h57_1,s.k57_1-o.k57_1);var I=O.g5v(z);this.d5c_1.d5v(I.g57_1,I.h57_1,I.k57_1,-I.i58(o)),O.u5f(h.g57_1-_.g57_1,h.h57_1-_.h57_1,h.k57_1-_.k57_1),z.u5f(l.g57_1-a.g57_1,l.h57_1-a.h57_1,l.k57_1-a.k57_1);var D=O.g5v(z);this.e5c_1.d5v(D.g57_1,D.h57_1,D.k57_1,-D.i58(a)),O.u5f(a.g57_1-o.g57_1,a.h57_1-o.h57_1,a.k57_1-o.k57_1),z.u5f(_.g57_1-r.g57_1,_.h57_1-r.h57_1,_.k57_1-r.k57_1);var j=O.g5v(z);this.f5c_1.d5v(j.g57_1,j.h57_1,j.k57_1,-j.i58(r)),O.u5f(l.g57_1-s.g57_1,l.h57_1-s.h57_1,l.k57_1-s.k57_1),z.u5f(h.g57_1-u.g57_1,h.h57_1-u.h57_1,h.k57_1-u.k57_1);var M=O.g5v(z);return this.g5c_1.d5v(M.g57_1,M.h57_1,M.k57_1,-M.i58(s)),this.h5c_1.y5b(e),this},Pr(d_).h5v=function(t){return this.g5c_1.i58(t)>0&&this.b5c_1.i58(t)>0&&this.c5c_1.i58(t)>0&&this.e5c_1.i58(t)>0&&this.d5c_1.i58(t)>0&&this.f5c_1.i58(t)>0},Pr(d_).i5v=function(t,n){if(this.h5v(t)||this.h5v(n))return!0;if(t.equals(n))return!1;var i=0,e=this.i5c_1.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=this.i5c_1[r];if(s.j5v(t,n)<0)return!1;if(null!=s.k5v(t,n))return!0}while(i<=e);return!1},Pr(d_).l5v=function(t){return this.h5c_1.m5v(t)},Pr(p_).n5v=function(t,n){return this.y56_1.m5c(t),this.z56_1.u5f(n.g57_1-t.g57_1,n.h57_1-t.h57_1,n.k57_1-t.k57_1),this},Pr(p_).f57=function(t,n){return n.g57_1=this.y56_1.g57_1+this.z56_1.g57_1*t,n.h57_1=this.y56_1.h57_1+this.z56_1.h57_1*t,n.k57_1=this.y56_1.k57_1+this.z56_1.k57_1*t,n},Pr(p_).o5v=function(t,n,i,e,r){if(!(t.length>=n)){var s=kr.n54(kr.i54_1,"Line","triStripIntersection","missingArray");throw is(Gr(s))}if(!(n>=3)){var o=kr.n54(kr.i54_1,"Line","triStripIntersection","invalidStride");throw is(Gr(o))}if(0===i.length){var u=kr.n54(kr.i54_1,"Line","triStripIntersection","missingArray");throw is(Gr(u))}if(!(e>=0)){var a=kr.n54(kr.i54_1,"Line","triStripIntersection","invalidCount");throw is(Gr(a))}var h=this.z56_1.g57_1,_=this.z56_1.h57_1,l=this.z56_1.k57_1,c=this.y56_1.g57_1,f=this.y56_1.h57_1,v=this.y56_1.k57_1,d=1/0,w=1e-5,p=i[0]*n|0,m=p;p=m+1|0;var g=t[m],b=p;p=b+1|0;var $=t[b],y=t[p],k=p=i[1]*n|0;p=k+1|0;var x=t[k],S=p;p=S+1|0;var E=t[S],C=t[p],q=2;if(q-1e-5&&V1.00001)){var X=W*N-G*M,J=G*j-Y*N,Z=Y*M-W*j,Q=B*(h*X+_*J+l*Z);if(!(Q<-1e-5||K+Q>1.00001)){var tt=B*(R*X+P*J+L*Z);tt>=0&&tte?Uh().m58_1:Uh().j58_1;var s=r-i,o=Math.cos(e)*Math.sin(s),u=r-i,a=Math.cos(n)*Math.sin(e)-Math.sin(n)*Math.cos(e)*Math.cos(u),h=Math.atan2(o,a);return ys(h)?Uh().j58_1:Uh().i59(h)},Pr($_).t5v=function(t){var n=Lh(this.b54_1),i=Lh(this.c54_1),e=Lh(t.b54_1),r=Lh(t.c54_1);if(n===e&&i===r)return 0;var s=(e-n)/2,o=Math.sin(s),u=(r-i)/2,a=Math.sin(u),h=o*o+Math.cos(n)*Math.cos(e)*a*a,_=Math.sqrt(h),l=2*Math.asin(_);return ys(l)?0:l},Pr($_).u5v=function(t,n,i){if(0===n)return i.b54_1=this.b54_1,i.c54_1=this.c54_1,i;var e=Lh(this.b54_1),r=Lh(this.c54_1),s=Lh(t),o=Math.cos(e),u=Math.sin(e),a=Math.cos(s),h=Math.sin(s),_=Math.sin(n),l=Math.cos(n),c=u*l+o*_*a,f=Math.asin(c),v=_*h,d=o*l-u*_*a,w=r+Math.atan2(v,d);return ys(f)||ys(w)?(i.b54_1=this.b54_1,i.c54_1=this.c54_1):(i.b54_1=Jh(Uh().i59(f)),i.c54_1=Zh(Uh().i59(w))),i},Pr($_).v5v=function(t){var n=Lh(this.b54_1),i=Lh(this.c54_1),e=Lh(t.b54_1),r=Lh(t.c54_1);if(n===e&&i===r)return Uh().j58_1;var s=r-i,o=e/2+as()/4,u=Math.tan(o),a=n/2+as()/4,h=u/Math.tan(a),_=Math.log(h),l=s;Math.abs(l)>as()&&(s=s>0?-(2*as()-s):2*as()+s);var c=s,f=Math.atan2(c,_);return ys(f)?Uh().j58_1:Uh().i59(f)},Pr($_).w5v=function(t){var n=Lh(this.b54_1),i=Lh(this.c54_1),e=Lh(t.b54_1),r=Lh(t.c54_1);if(n===e&&i===r)return 0;var s,o=e-n,u=r-i;if(Math.abs(o)<1e-15)s=Math.cos(n);else{var a=e/2+as()/4,h=Math.tan(a),_=n/2+as()/4,l=h/Math.tan(_);s=o/Math.log(l)}var c=s,f=u;Math.abs(f)>as()&&(u=u>0?-(2*as()-u):2*as()+u);var v=o*o+c*c*u*u,d=Math.sqrt(v);return ys(d)?0:d},Pr($_).x5v=function(t,n,i){if(0===n)return i.b54_1=this.b54_1,i.c54_1=this.c54_1,i;var e,r=Lh(this.b54_1),s=Lh(this.c54_1),o=Lh(t),u=r+n*Math.cos(o),a=u-r;if(Math.abs(a)<1e-15)e=Math.cos(r);else{var h=u/2+as()/4,_=Math.tan(h),l=r/2+as()/4,c=_/Math.tan(l);e=a/Math.log(c)}var f=e,v=n*Math.sin(o)/f,d=u;Math.abs(d)>as()/2&&(u=u>0?as()-u:-as()-u);var w=(s+v+as())%(2*as())-as();return ys(u)||ys(w)?(i.b54_1=this.b54_1,i.c54_1=this.c54_1):(i.b54_1=Jh(Uh().i59(u)),i.c54_1=Zh(Uh().i59(w))),i},Pr($_).equals=function(t){return this===t||t instanceof $_&&this.b54_1===t.b54_1&&this.c54_1===t.c54_1},Pr($_).hashCode=function(){var t=i_(this.b54_1);return Tr(31,t)+i_(this.c54_1)|0},Pr($_).toString=function(){return"Location(latitude="+new e_(this.b54_1)+", longitude="+new e_(this.c54_1)+")"},Pr(k_).y5v=function(t,n,i,e,r,s,o,u){return this.l57_1.g54(t,n,i),this.m57_1=e,this.n57_1=r,this.o57_1=s,this.p57_1=o,this.q57_1=u,this},Pr(k_).z5v=function(t){return this.y5v(t.l57_1.b54_1,t.l57_1.c54_1,t.l57_1.f54_1,t.m57_1,t.n57_1,t.o57_1,t.p57_1,t.q57_1)},Pr(k_).toString=function(){return"LookAt(position="+this.l57_1+", altitudeMode="+this.m57_1+", range="+this.n57_1+", heading="+new e_(this.o57_1)+", tilt="+new e_(this.p57_1)+", roll="+new e_(this.q57_1)+")"},Pr(C_).k5i=function(t){var n=t.d5i_1,i=this.d5i_1,e=n.length;return ps(n,i,0,0,e),this},Pr(C_).b5w=function(t,n){return this.d5i_1[0]=t,this.d5i_1[4]=n,this},Pr(C_).v5f=function(){var t=S_().a5w_1,n=this.d5i_1,i=t.length;return ps(t,n,0,0,i),this},Pr(C_).c5w=function(){return this.d5i_1[0]=1,this.d5i_1[1]=0,this.d5i_1[2]=0,this.d5i_1[3]=0,this.d5i_1[4]=-1,this.d5i_1[5]=1,this.d5i_1[6]=0,this.d5i_1[7]=0,this.d5i_1[8]=1,this},Pr(C_).e5r=function(t,n){var i=t.t5p(),e=t.s5p(),r=n.t5p(),s=n.s5p(),o=e/s,u=i/r,a=(t.q5p_1-n.q5p_1)/s,h=(t.o5p_1-n.o5p_1)/r;return this.d5i_1[0]=o,this.d5i_1[1]=0,this.d5i_1[2]=a,this.d5i_1[3]=0,this.d5i_1[4]=u,this.d5i_1[5]=h,this.d5i_1[6]=0,this.d5i_1[7]=0,this.d5i_1[8]=1,this},Pr(C_).d5r=function(t,n){var i=t.t5p(),e=t.s5p(),r=n.t5p(),s=n.s5p(),o=e/s,u=i/r,a=(t.q5p_1-n.q5p_1)/s,h=(t.o5p_1-n.o5p_1)/r,_=this.d5i_1;_[2]=_[2]+(this.d5i_1[0]*a+this.d5i_1[1]*h);var l=this.d5i_1;l[5]=l[5]+(this.d5i_1[3]*a+this.d5i_1[4]*h);var c=this.d5i_1;c[8]=c[8]+(this.d5i_1[6]*a+this.d5i_1[6]*h);var f=this.d5i_1;f[0]=f[0]*o;var v=this.d5i_1;v[1]=v[1]*u;var d=this.d5i_1;d[3]=d[3]*o;var w=this.d5i_1;w[4]=w[4]*u;var p=this.d5i_1;p[6]=p[6]*o;var m=this.d5i_1;return m[7]=m[7]*u,this},Pr(C_).d5w=function(t){var n=this.d5i_1,i=t.d5i_1,e=n[0],r=n[1],s=n[2];return n[0]=e*i[0]+r*i[3]+s*i[6],n[1]=e*i[1]+r*i[4]+s*i[7],n[2]=e*i[2]+r*i[5]+s*i[8],e=n[3],r=n[4],s=n[5],n[3]=e*i[0]+r*i[3]+s*i[6],n[4]=e*i[1]+r*i[4]+s*i[7],n[5]=e*i[2]+r*i[5]+s*i[8],e=n[6],r=n[7],s=n[8],n[6]=e*i[0]+r*i[3]+s*i[6],n[7]=e*i[1]+r*i[4]+s*i[7],n[8]=e*i[2]+r*i[5]+s*i[8],this},Pr(C_).e5w=function(t,n){var i=n;if(!((t.length-i|0)>=9)){var e=kr.n54(kr.i54_1,"Matrix4","transposeToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.d5i_1[0];var s=i;i=s+1|0,t[s]=this.d5i_1[3];var o=i;i=o+1|0,t[o]=this.d5i_1[6];var u=i;i=u+1|0,t[u]=this.d5i_1[1];var a=i;i=a+1|0,t[a]=this.d5i_1[4];var h=i;i=h+1|0,t[h]=this.d5i_1[7];var _=i;i=_+1|0,t[_]=this.d5i_1[2];var l=i;return i=l+1|0,t[l]=this.d5i_1[5],t[i]=this.d5i_1[8],t},Pr(C_).equals=function(t){return this===t||t instanceof C_&&Ns(this.d5i_1,t.d5i_1)},Pr(C_).hashCode=function(){return Rs(this.d5i_1)},Pr(C_).toString=function(){return"Matrix3(["+this.d5i_1[0]+", "+this.d5i_1[1]+", "+this.d5i_1[2]+"], ["+this.d5i_1[3]+", "+this.d5i_1[4]+", "+this.d5i_1[5]+"], ["+this.d5i_1[6]+", "+this.d5i_1[7]+", "+this.d5i_1[8]+"])"},Pr(q_).k5w=function(t,n){for(var i=0,e=hs(Array(4),null);i<4;)e[i]=new Float64Array(4),i=i+1|0;var r=e;r[0][0]=t[0],r[0][1]=t[1],r[0][2]=t[2],r[0][3]=t[3],r[1][0]=t[4],r[1][1]=t[5],r[1][2]=t[6],r[1][3]=t[7],r[2][0]=t[8],r[2][1]=t[9],r[2][2]=t[10],r[2][3]=t[11],r[3][0]=t[12],r[3][1]=t[13],r[3][2]=t[14],r[3][3]=t[15];var s=new Int32Array(4),o=this.l5w(r,s),u=0;if(u<=3)do{var a=u;u=u+1|0,o*=r[a][a]}while(u<=3);var h=o;if(Math.abs(h)<1e-8)return!1;for(var _=0,l=hs(Array(4),null);_<4;)l[_]=new Float64Array(4),_=_+1|0;var c=l,f=new Float64Array(4),v=0;if(v<=3)do{var d=v;v=v+1|0;var w=0;if(w<=3)do{var p=w;w=w+1|0,f[p]=0}while(w<=3);f[d]=1,this.m5w(r,s,f);var m=0;if(m<=3)do{var g=m;m=m+1|0,c[g][d]=f[g]}while(m<=3)}while(v<=3);return n[0]=c[0][0],n[1]=c[0][1],n[2]=c[0][2],n[3]=c[0][3],n[4]=c[1][0],n[5]=c[1][1],n[6]=c[1][2],n[7]=c[1][3],n[8]=c[2][0],n[9]=c[2][1],n[10]=c[2][2],n[11]=c[2][3],n[12]=c[3][0],n[13]=c[3][1],n[14]=c[3][2],n[15]=c[3][3],!0},Pr(q_).l5w=function(t,n){var i=new Float64Array(4),e=1,r=0;if(r<=3)do{var s=r;r=r+1|0;var o=0,u=0;if(u<=3)do{var a=u;u=u+1|0;var h=t[s][a],_=Math.abs(h);_>o&&(o=_)}while(u<=3);if(0===o)return 0;i[s]=1/o}while(r<=3);var l=0;if(l<=3)do{var c=l;l=l+1|0;var f=0;if(f=g&&(g=m,b=y)}while($<=3);if(c!==b){var O=0;if(O<=3)do{var z=O;O=O+1|0,m=t[b][z],t[b][z]=t[c][z],t[c][z]=m}while(O<=3);e=-e,i[b]=i[c]}if(n[c]=b,0===t[c][c]&&(t[c][c]=1e-20),3!==c){m=1/t[c][c];var A=c+1|0;if(A<=3)do{var T=A;A=A+1|0;var I=t[T];I[c]=I[c]*m}while(A<=3)}}while(l<=3);return e},Pr(q_).m5w=function(t,n,i){var e=-1,r=0;if(r<=3)do{var s=r;r=r+1|0;var o=n[s],u=i[o];if(i[o]=i[s],-1!==e){var a=e;if(a0)){var s=kr.n54(kr.i54_1,"Matrix4","setToPerspectiveProjection","invalidWidth");throw is(Gr(s))}if(!(n>0)){var o=kr.n54(kr.i54_1,"Matrix4","setToPerspectiveProjection","invalidHeight");throw is(Gr(o))}if(!(i>0&&i<180)){var u=kr.n54(kr.i54_1,"Matrix4","setToPerspectiveProjection","invalidFieldOfView");throw is(Gr(u))}if(e===r){var a=kr.n54(kr.i54_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance");throw is(Gr(a))}if(!(e>0&&r>0)){var h=kr.n54(kr.i54_1,"Matrix4","setToPerspectiveProjection","invalidClipDistance");throw is(Gr(h))}var _=t/n,l=.5*Lh(i),c=2*e*Math.tan(l),f=c*_;return this.a57_1[0]=2*e/f,this.a57_1[1]=0,this.a57_1[2]=0,this.a57_1[3]=0,this.a57_1[4]=0,this.a57_1[5]=2*e/c,this.a57_1[6]=0,this.a57_1[7]=0,this.a57_1[8]=0,this.a57_1[9]=0,this.a57_1[10]=-(r+e)/(r-e),this.a57_1[11]=-2*e*r/(r-e),this.a57_1[12]=0,this.a57_1[13]=0,this.a57_1[14]=-1,this.a57_1[15]=0,this},Pr(A_).s5c=function(t,n){if(!(t>0)){var i=kr.n54(kr.i54_1,"Matrix4","setToScreenProjection","invalidWidth");throw is(Gr(i))}if(!(n>0)){var e=kr.n54(kr.i54_1,"Matrix4","setToScreenProjection","invalidHeight");throw is(Gr(e))}return this.a57_1[0]=2/t,this.a57_1[1]=0,this.a57_1[2]=0,this.a57_1[3]=-1,this.a57_1[4]=0,this.a57_1[5]=2/n,this.a57_1[6]=0,this.a57_1[7]=-1,this.a57_1[8]=0,this.a57_1[9]=0,this.a57_1[10]=2,this.a57_1[11]=-1,this.a57_1[12]=0,this.a57_1[13]=0,this.a57_1[14]=0,this.a57_1[15]=1,this},Pr(A_).h5u=function(t,n,i){if(!(t.length>=i)){var e=kr.n54(kr.i54_1,"Matrix4","setToCovarianceOfPoints","invalidArray");throw is(Gr(e))}if(!(n>=0)){var r=kr.n54(kr.i54_1,"Matrix4","setToCovarianceOfPoints","invalidCount");throw is(Gr(r))}if(!(i>=3)){var s=kr.n54(kr.i54_1,"Matrix4","setToCovarianceOfPoints","invalidStride");throw is(Gr(s))}var o=0,u=0,a=0,h=0,_=0,l=0,c=0,f=0,v=0,d=0,w=Os(qs(0,n),i),p=w.ea_1,m=w.fa_1,g=w.ga_1;if(g>0&&p<=m||g<0&&m<=p)do{var b=p;p=p+g|0,o+=t[b],u+=t[b+1|0],a+=t[b+2|0],d+=1}while(b!==m);o/=d,u/=d,a/=d;var $=Os(qs(0,n),i),y=$.ea_1,k=$.fa_1,x=$.ga_1;if(x>0&&y<=k||x<0&&k<=y)do{var S=y;y=y+x|0;var E=t[S]-o,C=t[S+1|0]-u,q=t[S+2|0]-a;h+=E*E,_+=C*C,l+=q*q,c+=E*C,f+=E*q,v+=C*q}while(S!==k);return this.a57_1[0]=h/d,this.a57_1[1]=c/d,this.a57_1[2]=f/d,this.a57_1[3]=0,this.a57_1[4]=c/d,this.a57_1[5]=_/d,this.a57_1[6]=v/d,this.a57_1[7]=0,this.a57_1[8]=f/d,this.a57_1[9]=v/d,this.a57_1[10]=l/d,this.a57_1[11]=0,this.a57_1[12]=0,this.a57_1[13]=0,this.a57_1[14]=0,this.a57_1[15]=0,this},Pr(A_).b5d=function(t,n,i){var e=this.a57_1;e[3]=e[3]+(this.a57_1[0]*t+this.a57_1[1]*n+this.a57_1[2]*i);var r=this.a57_1;r[7]=r[7]+(this.a57_1[4]*t+this.a57_1[5]*n+this.a57_1[6]*i);var s=this.a57_1;s[11]=s[11]+(this.a57_1[8]*t+this.a57_1[9]*n+this.a57_1[10]*i);var o=this.a57_1;return o[15]=o[15]+(this.a57_1[12]*t+this.a57_1[13]*n+this.a57_1[14]*i),this},Pr(A_).z5c=function(t,n,i,e){var r=Lh(e),s=Math.cos(r),o=Lh(e),u=Math.sin(o);return this.q5w(s+(1-s)*t*t,(1-s)*t*n-u*i,(1-s)*t*i+u*n,0,(1-s)*t*n+u*i,s+(1-s)*n*n,(1-s)*n*i-u*t,0,(1-s)*t*i-u*n,(1-s)*n*i+u*t,s+(1-s)*i*i,0,0,0,0,1),this},Pr(A_).u5p=function(t,n,i){var e=this.a57_1;e[0]=e[0]*t;var r=this.a57_1;r[4]=r[4]*t;var s=this.a57_1;s[8]=s[8]*t;var o=this.a57_1;o[12]=o[12]*t;var u=this.a57_1;u[1]=u[1]*n;var a=this.a57_1;a[5]=a[5]*n;var h=this.a57_1;h[9]=h[9]*n;var _=this.a57_1;_[13]=_[13]*n;var l=this.a57_1;l[2]=l[2]*i;var c=this.a57_1;c[6]=c[6]*i;var f=this.a57_1;f[10]=f[10]*i;var v=this.a57_1;return v[14]=v[14]*i,this},Pr(A_).w57=function(t){var n=this.a57_1,i=t.a57_1,e=n[0],r=n[1],s=n[2],o=n[3];return n[0]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[1]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[2]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[3]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[4],r=n[5],s=n[6],o=n[7],n[4]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[5]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[6]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[7]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[8],r=n[9],s=n[10],o=n[11],n[8]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[9]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[10]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[11]=e*i[3]+r*i[7]+s*i[11]+o*i[15],e=n[12],r=n[13],s=n[14],o=n[15],n[12]=e*i[0]+r*i[4]+s*i[8]+o*i[12],n[13]=e*i[1]+r*i[5]+s*i[9]+o*i[13],n[14]=e*i[2]+r*i[6]+s*i[10]+o*i[14],n[15]=e*i[3]+r*i[7]+s*i[11]+o*i[15],this},Pr(A_).q5w=function(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v,d){var w=this.a57_1[0],p=this.a57_1[1],m=this.a57_1[2],g=this.a57_1[3];return this.a57_1[0]=w*t+p*r+m*a+g*c,this.a57_1[1]=w*n+p*s+m*h+g*f,this.a57_1[2]=w*i+p*o+m*_+g*v,this.a57_1[3]=w*e+p*u+m*l+g*d,w=this.a57_1[4],p=this.a57_1[5],m=this.a57_1[6],g=this.a57_1[7],this.a57_1[4]=w*t+p*r+m*a+g*c,this.a57_1[5]=w*n+p*s+m*h+g*f,this.a57_1[6]=w*i+p*o+m*_+g*v,this.a57_1[7]=w*e+p*u+m*l+g*d,w=this.a57_1[8],p=this.a57_1[9],m=this.a57_1[10],g=this.a57_1[11],this.a57_1[8]=w*t+p*r+m*a+g*c,this.a57_1[9]=w*n+p*s+m*h+g*f,this.a57_1[10]=w*i+p*o+m*_+g*v,this.a57_1[11]=w*e+p*u+m*l+g*d,w=this.a57_1[12],p=this.a57_1[13],m=this.a57_1[14],g=this.a57_1[15],this.a57_1[12]=w*t+p*r+m*a+g*c,this.a57_1[13]=w*n+p*s+m*h+g*f,this.a57_1[14]=w*i+p*o+m*_+g*v,this.a57_1[15]=w*e+p*u+m*l+g*d,this},Pr(A_).e5v=function(t){return this.a57_1[0]=t.a57_1[0],this.a57_1[1]=t.a57_1[4],this.a57_1[2]=t.a57_1[8],this.a57_1[3]=t.a57_1[12],this.a57_1[4]=t.a57_1[1],this.a57_1[5]=t.a57_1[5],this.a57_1[6]=t.a57_1[9],this.a57_1[7]=t.a57_1[13],this.a57_1[8]=t.a57_1[2],this.a57_1[9]=t.a57_1[6],this.a57_1[10]=t.a57_1[10],this.a57_1[11]=t.a57_1[14],this.a57_1[12]=t.a57_1[3],this.a57_1[13]=t.a57_1[7],this.a57_1[14]=t.a57_1[11],this.a57_1[15]=t.a57_1[15],this},Pr(A_).e5w=function(t,n){var i=n;if(!((t.length-i|0)>=16)){var e=kr.n54(kr.i54_1,"Matrix4","transposeToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.a57_1[0];var s=i;i=s+1|0,t[s]=this.a57_1[4];var o=i;i=o+1|0,t[o]=this.a57_1[8];var u=i;i=u+1|0,t[u]=this.a57_1[12];var a=i;i=a+1|0,t[a]=this.a57_1[1];var h=i;i=h+1|0,t[h]=this.a57_1[5];var _=i;i=_+1|0,t[_]=this.a57_1[9];var l=i;i=l+1|0,t[l]=this.a57_1[13];var c=i;i=c+1|0,t[c]=this.a57_1[2];var f=i;i=f+1|0,t[f]=this.a57_1[6];var v=i;i=v+1|0,t[v]=this.a57_1[10];var d=i;i=d+1|0,t[d]=this.a57_1[14];var w=i;i=w+1|0,t[w]=this.a57_1[3];var p=i;i=p+1|0,t[p]=this.a57_1[7];var m=i;return i=m+1|0,t[m]=this.a57_1[11],t[i]=this.a57_1[15],t},Pr(A_).s59=function(){if(!O_().k5w(this.a57_1,this.a57_1)){var t=kr.n54(kr.i54_1,"Matrix4","invertMatrix","singularMatrix");throw is(Gr(t))}return this},Pr(A_).a5d=function(){var t=this.a57_1[1];this.a57_1[1]=this.a57_1[4],this.a57_1[4]=t,t=this.a57_1[2],this.a57_1[2]=this.a57_1[8],this.a57_1[8]=t,t=this.a57_1[6],this.a57_1[6]=this.a57_1[9],this.a57_1[9]=t;var n=this.a57_1[3],i=this.a57_1[7],e=this.a57_1[11];return this.a57_1[3]=-this.a57_1[0]*n-this.a57_1[1]*i-this.a57_1[2]*e,this.a57_1[7]=-this.a57_1[4]*n-this.a57_1[5]*i-this.a57_1[6]*e,this.a57_1[11]=-this.a57_1[8]*n-this.a57_1[9]*i-this.a57_1[10]*e,this.a57_1[12]=0,this.a57_1[13]=0,this.a57_1[14]=0,this.a57_1[15]=1,this},Pr(A_).i5m=function(t){var n=this.a57_1;return n[10]=n[10]*(1+t),this},Pr(A_).b57=function(t){return t.g57_1=-this.a57_1[0]*this.a57_1[3]-this.a57_1[4]*this.a57_1[7]-this.a57_1[8]*this.a57_1[11],t.h57_1=-this.a57_1[1]*this.a57_1[3]-this.a57_1[5]*this.a57_1[7]-this.a57_1[9]*this.a57_1[11],t.k57_1=-this.a57_1[2]*this.a57_1[3]-this.a57_1[6]*this.a57_1[7]-this.a57_1[10]*this.a57_1[11],t},Pr(A_).c57=function(t){return t.g57_1=-this.a57_1[8],t.h57_1=-this.a57_1[9],t.k57_1=-this.a57_1[10],t},Pr(A_).x57=function(t){var n=Lh(t),i=Math.cos(n),e=Lh(t),r=Math.sin(e),s=i*this.a57_1[0]-r*this.a57_1[4],o=r*this.a57_1[5]-i*this.a57_1[1],u=Uh(),a=Math.atan2(o,s);return u.i59(a)},Pr(A_).y57=function(){var t=this.a57_1[10],n=this.a57_1[2]*this.a57_1[2]+this.a57_1[6]*this.a57_1[6],i=Math.sqrt(n),e=Uh(),r=Math.atan2(i,t);return e.i59(r)},Pr(A_).i5u=function(t,n,i){if(this.a57_1[1]!==this.a57_1[4]||this.a57_1[2]!==this.a57_1[8]||this.a57_1[6]!==this.a57_1[9])return!1;for(var e=this.a57_1[0],r=this.a57_1[1],s=this.a57_1[2],o=this.a57_1[5],u=this.a57_1[6],a=this.a57_1[10],h=0,_=hs(Array(3),null);h<3;)_[h]=new Float64Array(3),h=h+1|0;var l=_;l[2][2]=1,l[1][1]=l[2][2],l[0][0]=l[1][1];var c=0;if(c<32)t:do{var f,v;c=c+1|0;var d=r;if(Math.abs(d)<1e-10){var w=s;v=Math.abs(w)<1e-10}else v=!1;if(v){var p=u;f=Math.abs(p)<1e-10}else f=!1;if(f)break t;if(0!==r){var m=.5*(o-e)/r,g=m*m,b=g+1,$=b!==g?(m<0?-1:1)*(Math.sqrt(b)-Math.abs(m)):.5/m,y=$*$+1,k=1/Math.sqrt(y),x=k*$;e-=$*r,o+=$*r,r=0;var S=k*s-x*u;u=x*s+k*u,s=S;var E=0;if(E<=2)do{var C=E;E=E+1|0,S=k*l[C][0]-x*l[C][1],l[C][1]=x*l[C][0]+k*l[C][1],l[C][0]=S}while(E<=2)}if(0!==s){var q=.5*(a-e)/s,O=q*q,z=O+1,A=z!==O?(q<0?-1:1)*(Math.sqrt(z)-Math.abs(q)):.5/q,T=A*A+1,I=1/Math.sqrt(T),D=I*A;e-=A*s,a+=A*s,s=0;var j=I*r-D*u;u=D*r+I*u,r=j;var M=0;if(M<=2)do{var N=M;M=M+1|0,j=I*l[N][0]-D*l[N][2],l[N][2]=D*l[N][0]+I*l[N][2],l[N][0]=j}while(M<=2)}if(0!==u){var R=.5*(a-o)/u,P=R*R,L=P+1,F=L!==P?(R<0?-1:1)*(Math.sqrt(L)-Math.abs(R)):.5/R,U=F*F+1,H=1/Math.sqrt(U),V=H*F;o-=F*u,a+=F*u,u=0;var B=H*r-V*s;s=V*r+H*s,r=B;var Y=0;if(Y<=2)do{var W=Y;Y=Y+1|0,B=H*l[W][1]-V*l[W][2],l[W][2]=V*l[W][1]+H*l[W][2],l[W][1]=B}while(Y<=2)}}while(c<32);var G=0,K=1,X=2;if(e1||(o=.5*(o/=a)+.5,u=.5*u+.5,s=(s=.5*(s/=a)+.5)*e.i55_1+e.g55_1,o=o*e.j55_1+e.h55_1,r.g57_1=s,r.h57_1=o,r.k57_1=u,0))},Pr(A_).t59=function(t,n,i,e,r){var s=(t-i.g55_1)/i.i55_1,o=(n-i.h55_1)/i.j55_1;s=2*s-1,o=2*o-1;var u=this.a57_1[0]*s+this.a57_1[1]*o+this.a57_1[3],a=this.a57_1[4]*s+this.a57_1[5]*o+this.a57_1[7],h=this.a57_1[8]*s+this.a57_1[9]*o+this.a57_1[11],_=this.a57_1[12]*s+this.a57_1[13]*o+this.a57_1[15],l=u-this.a57_1[2],c=a-this.a57_1[6],f=h-this.a57_1[10],v=_-this.a57_1[14],d=u+this.a57_1[2],w=a+this.a57_1[6],p=h+this.a57_1[10],m=_+this.a57_1[14];return 0!==v&&0!==m&&(e.g57_1=l/v,e.h57_1=c/v,e.k57_1=f/v,r.g57_1=d/m,r.h57_1=w/m,r.k57_1=p/m,!0)},Pr(A_).equals=function(t){return this===t||t instanceof A_&&Ns(this.a57_1,t.a57_1)},Pr(A_).hashCode=function(){return Rs(this.a57_1)},Pr(A_).toString=function(){return"Matrix4(["+this.a57_1[0]+", "+this.a57_1[1]+", "+this.a57_1[2]+", "+this.a57_1[3]+"], ["+this.a57_1[4]+", "+this.a57_1[5]+", "+this.a57_1[6]+", "+this.a57_1[7]+"], ["+this.a57_1[8]+", "+this.a57_1[9]+", "+this.a57_1[10]+", "+this.a57_1[11]+"], ["+this.a57_1[12]+", "+this.a57_1[13]+", "+this.a57_1[14]+", "+this.a57_1[15]+"])"},Pr(I_).v5w=function(){return new D_(M_(),.5,M_(),.5)},Pr(I_).w5w=function(){return new D_(M_(),0,M_(),0)},Pr(I_).x5w=function(){return new D_(M_(),.5,M_(),0)},Pr(I_).y5w=function(){return new D_(M_(),1,M_(),0)},Pr(D_).z5w=function(t,n,i,e){return this.r5w_1=t,this.s5w_1=n,this.t5w_1=i,this.u5w_1=e,this},Pr(D_).a5x=function(t){return this.z5w(t.r5w_1,t.s5w_1,t.t5w_1,t.u5w_1)},Pr(D_).b5x=function(t,n,i){var e,r;switch(this.r5w_1.v9_1){case 0:e=t*this.s5w_1;break;case 1:e=t-this.s5w_1;break;default:e=this.s5w_1}switch(this.t5w_1.v9_1){case 0:r=n*this.u5w_1;break;case 1:r=n-this.u5w_1;break;default:r=this.u5w_1}return i.c5x(e,r)},Pr(D_).toString=function(){return"Offset(xUnits="+this.r5w_1+", x="+this.s5w_1+", yUnits="+this.t5w_1+", y="+this.u5w_1+")"},Pr(D_).hashCode=function(){var t=this.r5w_1.hashCode();return t=Tr(t,31)+Es(this.s5w_1)|0,t=Tr(t,31)+this.t5w_1.hashCode()|0,Tr(t,31)+Es(this.u5w_1)|0},Pr(D_).equals=function(t){if(this===t)return!0;if(!(t instanceof D_))return!1;var n=t instanceof D_?t:Nr();return!!(this.r5w_1.equals(n.r5w_1)&&Ss(this.s5w_1,n.s5w_1)&&this.t5w_1.equals(n.t5w_1)&&Ss(this.u5w_1,n.u5w_1))},Pr(P_).u5u=function(t){return this.i58(t)},Pr(P_).d5v=function(t,n,i,e){return this.a5u_1.g57_1=t,this.a5u_1.h57_1=n,this.a5u_1.k57_1=i,this.b5u_1=e,this.e5x(),this},Pr(P_).f5v=function(t){var n=t.a57_1,i=n[0]*this.a5u_1.g57_1+n[1]*this.a5u_1.h57_1+n[2]*this.a5u_1.k57_1+n[3]*this.b5u_1,e=n[4]*this.a5u_1.g57_1+n[5]*this.a5u_1.h57_1+n[6]*this.a5u_1.k57_1+n[7]*this.b5u_1,r=n[8]*this.a5u_1.g57_1+n[9]*this.a5u_1.h57_1+n[10]*this.a5u_1.k57_1+n[11]*this.b5u_1,s=n[12]*this.a5u_1.g57_1+n[13]*this.a5u_1.h57_1+n[14]*this.a5u_1.k57_1+n[15]*this.b5u_1;return this.a5u_1.g57_1=i,this.a5u_1.h57_1=e,this.a5u_1.k57_1=r,this.b5u_1=s,this.e5x(),this},Pr(P_).i58=function(t){return this.a5u_1.i58(t)+this.b5u_1},Pr(P_).j5v=function(t,n){var i=this.u5u(t),e=this.u5u(n);return i<0&&e<0?-1:i>0&&e>0?1:0},Pr(P_).k5v=function(t,n){if(t.equals(n))return null;var i=w_().n5v(t,n),e=this.a5u_1.i58(i.z56_1);if(0===e)return 0===this.i58(i.y56_1)?[t,n]:null;var r=-this.i58(i.y56_1)/e;if(r<0||r>1)return null;var s=i.f57(r,il());return e>0?[s,n]:[t,s]},Pr(P_).e5x=function(){var t=this.a5u_1.f5x();if(0===t)return Xr;if(t>=.9999999999&&t<=1.0000000001)return Xr;var n=this.a5u_1;n.g57_1=n.g57_1/t;var i=this.a5u_1;i.h57_1=i.h57_1/t;var e=this.a5u_1;e.k57_1=e.k57_1/t,this.b5u_1=this.b5u_1/t},Pr(P_).equals=function(t){return this===t||t instanceof P_&&!!this.a5u_1.equals(t.a5u_1)&&this.b5u_1===t.b5u_1},Pr(P_).hashCode=function(){var t=this.a5u_1.hashCode();return Tr(31,t)+Es(this.b5u_1)|0},Pr(P_).toString=function(){return"Plane(normal="+this.a5u_1+", distance="+this.b5u_1+")"},Pr(U_).g5x=function(t,n,i){return new H_(Uh().d5d(t),Uh().d5d(n),i)},Pr(H_).g54=function(t,n,i){return this.q5v(t,n),this.f54_1=i,this},Pr(H_).h5x=function(t,n,i){return this.r5v(t,n),this.f54_1=i,this},Pr(H_).u57=function(t){return this.g54(t.b54_1,t.c54_1,t.f54_1)},Pr(H_).equals=function(t){return this===t||t instanceof H_&&!!Pr($_).equals.call(this,t)&&this.f54_1===t.f54_1},Pr(H_).hashCode=function(){var t=Pr($_).hashCode.call(this);return Tr(31,t)+Es(this.f54_1)|0},Pr(H_).toString=function(){return"Position(latitude="+new e_(this.b54_1)+", longitude="+new e_(this.c54_1)+", altitude="+this.f54_1+")"},Pr(B_).a=function(){return this.n5e_1>this.m5e_1?this.n5e_1-this.m5e_1|0:0},Pr(B_).i5x=function(t,n){return this.m5e_1=t,this.n5e_1=n,this},Pr(B_).j5x=function(t){return this.i5x(t.m5e_1,t.n5e_1)},Pr(B_).equals=function(t){return this===t||t instanceof B_&&this.m5e_1===t.m5e_1&&this.n5e_1===t.n5e_1},Pr(B_).hashCode=function(){var t=this.m5e_1;return Tr(31,t)+this.n5e_1|0},Pr(B_).toString=function(){return"Range(lower="+this.m5e_1+", upper="+this.n5e_1+")"},Pr(G_).k5x=function(t,n,i,e){var r=i>0?Uh().s5t(t+i):t,s=e>0?Uh().t5t(n+e):n;return new K_(Uh().d5d(t),Uh().d5d(r),Uh().d5d(n),Uh().d5d(s))},Pr(K_).n19=function(){return!!(Ss(this.o5p_1,Uh().j58_1)&&Ss(this.p5p_1,Uh().j58_1)&&Ss(this.q5p_1,Uh().j58_1))&&Ss(this.r5p_1,Uh().j58_1)},Pr(K_).l5x=function(){return!!(Ss(this.o5p_1,Uh().l58_1)&&Ss(this.p5p_1,Uh().k58_1)&&Ss(this.q5p_1,Uh().n58_1))&&Ss(this.r5p_1,Uh().m58_1)},Pr(K_).t5p=function(){return Yh(this.p5p_1,this.o5p_1)},Pr(K_).s5p=function(){return Yh(this.r5p_1,this.q5p_1)},Pr(K_).l5u=function(){return Uh().u5t(this.o5p_1,this.p5p_1)},Pr(K_).m5u=function(){return Uh().u5t(this.q5p_1,this.r5p_1)},Pr(K_).m5x=function(t){return t.b54_1=this.l5u(),t.c54_1=this.m5u(),t},Pr(K_).h5q=function(t){return this.o5p_1=t.o5p_1,this.p5p_1=t.p5p_1,this.q5p_1=t.q5p_1,this.r5p_1=t.r5p_1,this},Pr(K_).k55=function(){return this.o5p_1=Uh().j58_1,this.p5p_1=Uh().j58_1,this.q5p_1=Uh().j58_1,this.r5p_1=Uh().j58_1,this},Pr(K_).w5r=function(){return this.o5p_1=Uh().l58_1,this.p5p_1=Uh().k58_1,this.q5p_1=Uh().n58_1,this.r5p_1=Uh().m58_1,this},Pr(K_).c5r=function(t){return this.o5p_1t.o5p_1&&this.q5p_1t.q5p_1},Pr(K_).v5p=function(t){return this.o5p_1<=t.p5p_1&&this.p5p_1>=t.o5p_1&&this.q5p_1<=t.r5p_1&&this.r5p_1>=t.q5p_1},Pr(K_).n5x=function(t){return this.o5p_1t.o5p_1&&this.q5p_1t.q5p_1&&(this.o5p_1t.p5p_1&&(this.p5p_1=t.p5p_1),this.q5p_1t.r5p_1&&(this.r5p_1=t.r5p_1),!0)},Pr(K_).o5x=function(t,n){var i,e=this.o5p_1,r=this.p5p_1;if(e<=t&&t<=r){var s=this.q5p_1,o=this.r5p_1;i=s<=n&&n<=o}else i=!1;return i},Pr(K_).p5x=function(t){return this.o5x(t.b54_1,t.c54_1)},Pr(K_).q5x=function(t,n){return this.n19()?(this.o5p_1=t,this.p5p_1=t,this.q5p_1=n,this.r5p_1=n):(this.o5p_1=Uh().w5t(this.o5p_1,t),this.p5p_1=Uh().v5t(this.p5p_1,t),this.q5p_1=Uh().w5t(this.q5p_1,n),this.r5p_1=Uh().v5t(this.r5p_1,n)),this},Pr(K_).r5x=function(t){return this.q5x(t.b54_1,t.c54_1)},Pr(K_).s5x=function(t,n,i){if(!(t.length>=i)){var e=kr.n54(kr.i54_1,"Sector","union","missingArray");throw is(Gr(e))}if(!(n>=0)){var r=kr.n54(kr.i54_1,"Sector","union","invalidCount");throw is(Gr(r))}if(!(i>=2)){var s=kr.n54(kr.i54_1,"Sector","union","invalidStride");throw is(Gr(s))}var o=this.n19(),u=o?17976931348623157e292:this.o5p_1,a=o?-17976931348623157e292:this.p5p_1,h=o?17976931348623157e292:this.q5p_1,_=o?-17976931348623157e292:this.r5p_1,l=Os(qs(0,n),i),c=l.ea_1,f=l.fa_1,v=l.ga_1;if(v>0&&c<=f||v<0&&f<=c)do{var d=c;c=c+v|0;var w=t[d],p=t[d+1|0];ap&&(u=p),_w&&(h=w)}while(d!==f);return u<17976931348623157e292&&(this.o5p_1=Uh().d5d(u)),a>-17976931348623157e292&&(this.p5p_1=Uh().d5d(a)),h<17976931348623157e292&&(this.q5p_1=Uh().d5d(h)),_>-17976931348623157e292&&(this.r5p_1=Uh().d5d(_)),this},Pr(K_).t5x=function(t){return t.n19()||(this.n19()?(this.o5p_1=t.o5p_1,this.p5p_1=t.p5p_1,this.q5p_1=t.q5p_1,this.r5p_1=t.r5p_1):(this.o5p_1>t.o5p_1&&(this.o5p_1=t.o5p_1),this.p5p_1t.q5p_1&&(this.q5p_1=t.q5p_1),this.r5p_10)){var o=kr.f5y("TileMatrixSet","fromTilePyramid","invalidResolution");throw is(Gr(o))}var u=0,a=n,h=i,_=_s();do{var l=u;u=l+1|0;var c=new X_(t,l,a,h,e,r);_.s(c),a=Tr(a,2),h=Tr(h,2)}while(c.b5y()>s);return new Q_(t,_)},Pr(Q_).i5y=function(t){var n=-1,i=1/0,e=0,r=this.h5y_1.n()-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=Yh(this.h5y_1.h1(s).b5y(),t),u=o*o;i>u&&(i=u,n=s)}while(e<=r);return n},Pr(nl).j5y=function(){return this.g57_1*this.g57_1+this.h57_1*this.h57_1},Pr(nl).f5x=function(){var t=this.j5y();return Math.sqrt(t)},Pr(nl).c5x=function(t,n){return this.g57_1=t,this.h57_1=n,this},Pr(nl).k5y=function(t){var n=this.g57_1;return this.g57_1=t.g57_1,t.g57_1=n,n=this.h57_1,this.h57_1=t.h57_1,t.h57_1=n,this},Pr(nl).l5y=function(t){this.g57_1=this.g57_1+t.g57_1,this.h57_1=this.h57_1+t.h57_1},Pr(nl).m5y=function(t){this.g57_1=this.g57_1-t.g57_1,this.h57_1=this.h57_1-t.h57_1},Pr(nl).n5y=function(t){this.g57_1=this.g57_1*t,this.h57_1=this.h57_1*t},Pr(nl).o5y=function(t){return this.g57_1*t.g57_1+this.h57_1*t.h57_1},Pr(nl).equals=function(t){return this===t||t instanceof nl&&this.g57_1===t.g57_1&&this.h57_1===t.h57_1},Pr(nl).hashCode=function(){var t=Es(this.g57_1);return Tr(31,t)+Es(this.h57_1)|0},Pr(nl).toString=function(){return"Vec2(x="+this.g57_1+", y="+this.h57_1+")"},Pr(el).j5y=function(){return Pr(nl).j5y.call(this)+this.k57_1*this.k57_1},Pr(el).p5y=function(t,n){var i=n;if(!((t.length-i|0)>=3)){var e=kr.n54(kr.i54_1,"Vec3","toArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.g57_1;var s=i;return i=s+1|0,t[s]=this.h57_1,t[i]=this.k57_1,t},Pr(el).n5c=function(t){var n=this.o5u(t);return Math.sqrt(n)},Pr(el).o5u=function(t){var n=this.g57_1-t.g57_1,i=this.h57_1-t.h57_1,e=this.k57_1-t.k57_1;return n*n+i*i+e*e},Pr(el).u5f=function(t,n,i){return this.c5x(t,n),this.k57_1=i,this},Pr(el).m5c=function(t){return this.u5f(t.g57_1,t.h57_1,t.k57_1)},Pr(el).z5t=function(t){Pr(nl).k5y.call(this,t);var n=this.k57_1;return this.k57_1=t.k57_1,t.k57_1=n,this},Pr(el).q5y=function(t){return this.r5y(t),this},Pr(el).r5y=function(t){Pr(nl).l5y.call(this,t),this.k57_1=this.k57_1+t.k57_1},Pr(el).g58=function(t){return this.s5y(t),this},Pr(el).s5y=function(t){Pr(nl).m5y.call(this,t),this.k57_1=this.k57_1-t.k57_1},Pr(el).j5u=function(t){return this.n5y(t),this},Pr(el).n5y=function(t){Pr(nl).n5y.call(this,t),this.k57_1=this.k57_1*t},Pr(el).w57=function(t){var n=t.a57_1,i=n[0]*this.g57_1+n[1]*this.h57_1+n[2]*this.k57_1+n[3],e=n[4]*this.g57_1+n[5]*this.h57_1+n[6]*this.k57_1+n[7],r=n[8]*this.g57_1+n[9]*this.h57_1+n[10]*this.k57_1+n[11],s=n[12]*this.g57_1+n[13]*this.h57_1+n[14]*this.k57_1+n[15];return this.g57_1=i/s,this.h57_1=e/s,this.k57_1=r/s,this},Pr(el).h58=function(){var t=this.f5x();return 0!==t&&(this.g57_1=this.g57_1/t,this.h57_1=this.h57_1/t,this.k57_1=this.k57_1/t),this},Pr(el).i58=function(t){return Pr(nl).o5y.call(this,t)+this.k57_1*t.k57_1},Pr(el).g5v=function(t){var n=this.h57_1*t.k57_1-this.k57_1*t.h57_1,i=this.k57_1*t.g57_1-this.g57_1*t.k57_1,e=this.g57_1*t.h57_1-this.h57_1*t.g57_1;return this.g57_1=n,this.h57_1=i,this.k57_1=e,this},Pr(el).equals=function(t){return this===t||t instanceof el&&!!Pr(nl).equals.call(this,t)&&this.k57_1===t.k57_1},Pr(el).hashCode=function(){var t=Pr(nl).hashCode.call(this);return Tr(31,t)+Es(this.k57_1)|0},Pr(el).toString=function(){return"Vec3(x="+this.g57_1+", y="+this.h57_1+", z="+this.k57_1+")"},Pr(sl).n19=function(){return this.i55_1<=0||this.j55_1<=0},Pr(sl).k55=function(){return this.i55_1=0,this.j55_1=0,this},Pr(sl).v56=function(t,n,i,e){return this.g55_1=t,this.h55_1=n,this.i55_1=i,this.j55_1=e,this},Pr(sl).y5b=function(t){return this.v56(t.g55_1,t.h55_1,t.i55_1,t.j55_1)},Pr(sl).m5v=function(t){return this.i55_1>0&&this.j55_1>0&&t.i55_1>0&&t.j55_1>0&&this.g55_1<(t.g55_1+t.i55_1|0)&&t.g55_1<(this.g55_1+this.i55_1|0)&&this.h55_1<(t.h55_1+t.j55_1|0)&&t.h55_1<(this.h55_1+this.j55_1|0)},Pr(sl).t5y=function(t){return this.i55_1>0&&this.j55_1>0&&t.i55_1>0&&t.j55_1>0&&this.g55_1<(t.g55_1+t.i55_1|0)&&t.g55_1<(this.g55_1+this.i55_1|0)&&this.h55_1<(t.h55_1+t.j55_1|0)&&t.h55_1<(this.h55_1+this.j55_1|0)&&(this.g55_1(t.g55_1+t.i55_1|0)&&(this.i55_1=(t.g55_1+t.i55_1|0)-this.g55_1|0),(this.h55_1+this.j55_1|0)>(t.h55_1+t.j55_1|0)&&(this.j55_1=(t.h55_1+t.j55_1|0)-this.h55_1|0),!0)},Pr(sl).u5y=function(t,n){return xs(t)>=this.g55_1&&xs(t)<(this.g55_1+this.i55_1|0)&&xs(n)>=this.h55_1&&xs(n)<(this.h55_1+this.j55_1|0)},Pr(sl).equals=function(t){return this===t||t instanceof sl&&this.g55_1===t.g55_1&&this.h55_1===t.h55_1&&this.i55_1===t.i55_1&&this.j55_1===t.j55_1},Pr(sl).hashCode=function(){var t=this.g55_1;return t=Tr(31,t)+this.h55_1|0,t=Tr(31,t)+this.i55_1|0,Tr(31,t)+this.j55_1|0},Pr(sl).toString=function(){return"Viewport(x="+this.g55_1+", y="+this.h55_1+", width="+this.i55_1+", height="+this.j55_1+")"},Pr(ol).v5y=function(t,n){return this.w5y(t,n,0)},Pr(ol).w5y=function(t,n,i){var e=new hl;if(0!==e.c5z(Lh(t),Lh(n),i))throw is(Gr("Gauss-Kruger Conversion Error"));return new ul(t,n,e.z5y_1,e.y5y_1)},Pr(ol).d5z=function(t,n){var i=new hl;if(0!==i.e5z(n,t))throw is(Gr("Gauss-Kruger Conversion Error"));var e=Uh(),r=i.a5z_1,s=e.i59(r),o=Uh(),u=i.b5z_1;return new ul(s,o.i59(u),t,n)},Pr(ul).toString=function(){var t=Wr(this.h5z_1),n=Wr(this.i5z_1),i=1e5;return Ay("%02d-%05d, %02d-%05d",[t/i|0,Fs(t%i|0),n/i|0,Fs(n%i|0)])},Pr(hl).c5z=function(t,n,i){var e=n<0?n+2*as():n,r=0!==i?i:1+(ks(180*e/as())/6|0)|0,s=this.x5y_1.y5u_1,o=this.x5y_1.a5v(),u=(s*s-o*o)/(s*s),a=(s-o)/(s+o),h=a*a,_=a*a*a,l=1e6*r+5e5,c=e-(Tr(r,6)-3|0)*as()/180,f=t-0,v=t+0,d=Math.sin(t),w=d*d,p=Math.cos(t),m=p*p*p,g=p*p*p*p*p,b=Math.tan(t),$=b*b,y=$*$,k=1-u*w,x=1*s*Math.pow(k,-.5),S=1-u*w,E=1*s*(1-u)*Math.pow(S,-1.5),C=x/E-1,q=2*f,O=2*v,z=3*f,A=3*v,T=1*o*((1+a+1.25*h+1.25*_)*f-(3*a+3*h+2.625*_)*Math.sin(f)*Math.cos(v)+(1.875*h+1.875*_)*Math.sin(q)*Math.cos(O)-1.4583333333333333*_*Math.sin(z)*Math.cos(A))+0,I=x/2*d*p,D=x/24*d*m*(5-$+9*C),j=x/720*d*g*(61-58*$+y),M=x*p,N=x/6*m*(x/E-$),R=x/120*g*(5-18*$+y+14*C-58*$*C);return this.y5y_1=l+M*c+N*c*c*c+R*c*c*c*c*c,this.z5y_1=T+I*c*c+D*c*c*c*c+j*c*c*c*c*c*c,0},Pr(hl).e5z=function(t,n){var i=ks(t/1e6),e=(Tr(6,i<=30?i:i-60|0)-3|0)*as()/180,r=t-(1e6*i+5e5),s=n/6367558.497,o=Math.cos(s),u=o*o,a=((2382*u+293609)*u+50221747)*Math.sin(s)*Math.cos(s)*1e-10+s,h=Math.cos(a),_=h*h,l=Math.sin(a),c=l*l,f=(.003369263*_+.5)*l*h,v=((.0056154-151e-7*_)*_+.1616128)*_+.25,d=((.00389*_+.0431)*_-.00168)*_+.125,w=((.013*_+.008)*_-.031)*_+.078,p=(.16666666666666666-.00112309*_)*_-.3333333333333333,m=((.008783-112e-6*_)*_-.16666666666666666)*_+.2,g=(.16666666666666666-.0361*_)*_-.1429,b=((.064-.004*_)*_-.16666666666666666)*_+.1111111111111111,$=r/((((.605*c+107.155)*c+21346.142)*c+this.x5y_1.y5u_1)*h);return this.a5z_1=a+(((w*$*$-d)*$*$+v)*$*$-1)*$*$*f,this.b5z_1=e+((((b*$*$+g)*$*$+m)*$*$+p)*$*$+1)*$,0},Pr(cl).toString=function(){return"HelmertParameters(dX="+this.o5z_1+", dY="+this.p5z_1+", dZ="+this.q5z_1+", omegaX="+this.r5z_1+", omegaY="+this.s5z_1+", omegaZ="+this.t5z_1+", m="+this.u5z_1+", fromEllipsoid="+this.v5z_1+", toEllipsoid="+this.w5z_1+")"},Pr(cl).hashCode=function(){var t=Es(this.o5z_1);return t=Tr(t,31)+Es(this.p5z_1)|0,t=Tr(t,31)+Es(this.q5z_1)|0,t=Tr(t,31)+Es(this.r5z_1)|0,t=Tr(t,31)+Es(this.s5z_1)|0,t=Tr(t,31)+Es(this.t5z_1)|0,t=Tr(t,31)+Es(this.u5z_1)|0,t=Tr(t,31)+this.v5z_1.hashCode()|0,Tr(t,31)+this.w5z_1.hashCode()|0},Pr(cl).equals=function(t){if(this===t)return!0;if(!(t instanceof cl))return!1;var n=t instanceof cl?t:Nr();return!!(Ss(this.o5z_1,n.o5z_1)&&Ss(this.p5z_1,n.p5z_1)&&Ss(this.q5z_1,n.q5z_1)&&Ss(this.r5z_1,n.r5z_1)&&Ss(this.s5z_1,n.s5z_1)&&Ss(this.t5z_1,n.t5z_1)&&Ss(this.u5z_1,n.u5z_1)&&this.v5z_1.equals(n.v5z_1)&&this.w5z_1.equals(n.w5z_1))},Pr(fl).x5z=function(t,n,i){return this.y5z(t.b54_1,t.c54_1,t.f54_1,n,i)},Pr(fl).y5z=function(t,n,i,e,r){var s=new lc,o=new tc(e.v5z_1,s),u=new tc(e.w5z_1,s),a=o.t57(t,n,i,il()),h=this.z5z(a,e);return u.r57(h.g57_1,h.h57_1,h.k57_1,r)},Pr(fl).a60=function(t,n,i){return this.b60(t.g57_1,t.h57_1,t.k57_1,n,i)},Pr(fl).z5z=function(t,n,i,e){return i=i===Yr?il():i,e===Yr?this.a60(t,n,i):e.a60.call(this,t,n,i)},Pr(fl).b60=function(t,n,i,e,r){return r.u5f(t+-e.t5z_1*i+e.u5z_1*t+e.r5z_1*n+e.p5z_1,n+e.s5z_1*i+-e.r5z_1*t+e.u5z_1*n+e.q5z_1,i+e.u5z_1*i+e.t5z_1*t+-e.s5z_1*n+e.o5z_1)},Pr(ml).v5y=function(t,n){return this.w5y(t,n,5)},Pr(ml).w5y=function(t,n,i){var e=new Sl,r=e.p60(Lh(t),Lh(n),i);if($l(),0!==r)throw is(Gr("MGRS Conversion Error"));return new gl(t,n,e.e60_1)},Pr(gl).toString=function(){return this.s60_1},Pr(Sl).p60=function(t,n,i){this.e60_1="";var e=0;if((t<-1.5707963267948966||t>1.5707963267948966)&&(e=1),(n<-as()||n>2*as())&&(e=2),(i<0||i>5)&&(e=8),0===e){var r;if(t<-1.3962634015954636||t>1.4660765716752369){var s;try{var o=et,u=Uh().i59(t),a=Uh().i59(n),h=o.v5y(u,a);s=e|function(t,n,i,e,r){var s,o,u,a,h,_=i,l=e,c=new Int32Array(3),f=0;if(wl().equals(n)||pl().equals(n)||(f|=512),(_<0||_>4e6)&&(f|=64),(l<0||l>4e6)&&(f|=128),(r<0||r>5)&&(f|=8),0===f){var v=5-r|0,d=Math.pow(10,v);if(_=kl(0,_/d)*d,l=kl(0,l/d)*d,wl().equals(n)){c[0]=_>=2e6?25:24;var w=c[0]-22|0;h=$l().u62_1[w][1],s=$l().u62_1[w][4],o=$l().u62_1[w][5]}else c[0]=_>=2e6?1:0,h=$l().u62_1[c[0]][1],s=$l().u62_1[c[0]][4],o=$l().u62_1[c[0]][5];a=l,a-=o,c[2]=ks(a/1e5),c[2]>7&&(c[2]=c[2]+1|0),c[2]>13&&(c[2]=c[2]+1|0),u=_,u-=s,c[1]=h+ks(u/1e5)|0,_<2e6?(c[1]>11&&(c[1]=c[1]+3|0),c[1]>20&&(c[1]=c[1]+2|0)):(c[1]>2&&(c[1]=c[1]+2|0),c[1]>7&&(c[1]=c[1]+1|0),c[1]>11&&(c[1]=c[1]+3|0)),xl(t,0,c,_,l,r)}return f}(this,h.e63_1,h.f63_1,h.g63_1,i)}catch(t){if(!(t instanceof $s))throw t;s=8192}r=s}else{var _;try{var l=rt,c=Uh().i59(t),f=Uh().i59(n),v=l.v5y(c,f);_=e|yl(this,v.y62_1,t,v.a63_1,v.b63_1,i)}catch(t){if(!(t instanceof $s))throw t;_=4096}r=_}e=r}return e},Pr(Cl).p64=function(t,n,i,e,r,s){var o=e,u=1/n,a=0;if(t<=0&&(a|=64),(u<250||u>350)&&(a|=128),(i<-1.5707963267948966||i>1.5707963267948966)&&(a|=4),(o<-as()||o>6.283185307179586)&&(a|=8),0===a){this.v63_1=t,this.e64_1=2*this.v63_1,this.w63_1=n,o>as()&&(o-=6.283185307179586),i<0?(this.z63_1=1,this.f64_1=-i,this.g64_1=-o):(this.z63_1=0,this.f64_1=i,this.g64_1=o),this.h64_1=r,this.i64_1=s;var h=2*this.w63_1-this.w63_1*this.w63_1;this.x63_1=Math.sqrt(h),this.y63_1=this.x63_1/2;var _=this.f64_1,l=Math.abs(_)-1.5707963267948966;if(Math.abs(l)>1e-10){var c=this.f64_1,f=Math.sin(c),v=this.x63_1*f,d=(1-v)/(1+v),w=this.y63_1,p=Math.pow(d,w),m=this.f64_1,g=Math.cos(m),b=1-v*v;this.a64_1=g/Math.sqrt(b),this.d64_1=this.v63_1*this.a64_1;var $=.7853981633974483-this.f64_1/2;this.b64_1=Math.tan($)/p}else{var y=1+this.x63_1,k=1-this.x63_1,x=Math.pow(y,y)*Math.pow(k,k);this.c64_1=Math.sqrt(x)}}this.q64(0,this.g64_1),this.k64_1=2*this.m64_1;var S=this.k64_1;return this.k64_1=Math.abs(S)+.01,this.j64_1=this.k64_1,a},Pr(Cl).q64=function(t,n){var i=t,e=n,r=0;if((i<-1.5707963267948966||i>1.5707963267948966)&&(r|=1),i<0&&0===this.z63_1&&(r|=1),i>0&&1===this.z63_1&&(r|=1),(e<-as()||e>6.283185307179586)&&(r|=2),0===r){var s=i,o=Math.abs(s)-1.5707963267948966;if(Math.abs(o)<1e-10)this.l64_1=0,this.m64_1=0;else{0!==this.z63_1&&(e*=-1,i*=-1);var u=e-this.g64_1;u>as()&&(u-=6.283185307179586),u<-as()&&(u+=6.283185307179586);var a=i,h=Math.sin(a),_=this.x63_1*h,l=(1-_)/(1+_),c=this.y63_1,f=Math.pow(l,c),v=.7853981633974483-i/2,d=Math.tan(v)/f,w=this.f64_1,p=Math.abs(w)-1.5707963267948966,m=Math.abs(p)>1e-10?this.d64_1*d/this.b64_1:this.e64_1*d/this.c64_1;if(0!==this.z63_1){var g=u;this.l64_1=-(m*Math.sin(g)-this.h64_1);var b=u;this.m64_1=m*Math.cos(b)+this.i64_1}else{var $=u;this.l64_1=m*Math.sin($)+this.h64_1}var y=-m,k=u;this.m64_1=y*Math.cos(k)+this.i64_1}}return r},Pr(Cl).r64=function(t,n){var i=0,e=0,r=0,s=0,o=0,u=this.h64_1-this.j64_1,a=this.h64_1+this.j64_1,h=this.i64_1-this.k64_1;if((t>a||tthis.i64_1+this.k64_1||nMath.sqrt(l)&&(o|=256)}if(0===o){if(0===i&&0===e)this.n64_1=1.5707963267948966,this.o64_1=this.g64_1;else{0!==this.z63_1&&(i*=-1,e*=-1);var c=this.f64_1,f=Math.abs(c)-1.5707963267948966,v=Math.abs(f)>1e-10?r*this.b64_1/this.d64_1:r*this.c64_1/this.e64_1,d=1.5707963267948966-2*Math.atan(v);t:for(;;){var w=d-s;if(!(Math.abs(w)>1e-10))break t;s=d;var p=d,m=Math.sin(p),g=this.x63_1*m,b=(1-g)/(1+g),$=this.y63_1,y=v*Math.pow(b,$);d=1.5707963267948966-2*Math.atan(y)}this.n64_1=d;var k=this.g64_1,x=e,S=-i;this.o64_1=k+Math.atan2(x,S),this.o64_1>as()?this.o64_1=this.o64_1-6.283185307179586:this.o64_1<-as()&&(this.o64_1=this.o64_1+6.283185307179586),this.n64_1>1.5707963267948966?this.n64_1=1.5707963267948966:this.n64_1<-1.5707963267948966&&(this.n64_1=-1.5707963267948966),this.o64_1>as()?this.o64_1=as():this.o64_1<-as()&&(this.o64_1=-as())}0!==this.z63_1&&(this.n64_1=-1*this.n64_1,this.o64_1=-1*this.o64_1)}return o},Pr(ql).s64=function(t,n,i,e,r,s,o,u,a){var h=i,_=e,l=new Al;null!=h&&null!=_||(h=l.u64_1,_=l.v64_1);var c=l.o65(h,_,Lh(r),Lh(s),o,u,a);if(0===c&&(c=l.p65(Lh(t),Lh(n))),0!==c&&512!==c)throw is(Gr("TM Conversion Error"));return new Ol(t,n,l.k65_1,l.l65_1)},Pr(ql).q65=function(t,n,i,e,r,s,o){var u=new Al,a=u.u64_1,h=u.v64_1,_=u.o65(a,h,Lh(i),Lh(e),r,s,o);if(0===_&&(_=u.r65(t,n)),0!==_&&512!==_)throw is(Gr("TM Conversion Error"));var l=Uh(),c=u.m65_1,f=l.i59(c),v=Uh(),d=u.n65_1;return new Ol(f,v.i59(d),t,n)},Pr(Al).o65=function(t,n,i,e,r,s,o){var u=e,a=1/n,h=0;if(t<=0&&(h|=64),(a<250||a>350)&&(h|=128),(i<-1.570621793869697||i>1.570621793869697)&&(h|=16),(u<-as()||u>2*as())&&(h|=32),(o<.3||o>3)&&(h|=256),0===h){this.u64_1=t,this.v64_1=n,this.y64_1=0,this.z64_1=0,this.a65_1=0,this.b65_1=0,this.c65_1=1,this.w64_1=2*this.v64_1-this.v64_1*this.v64_1,this.x64_1=1/(1-this.w64_1)-1;var _=this.u64_1*(1-this.v64_1),l=(this.u64_1-_)/(this.u64_1+_),c=l*l,f=c*l,v=f*l,d=v*l;this.d65_1=this.u64_1*(1-l+5*(c-f)/4+81*(v-d)/64),this.e65_1=3*this.u64_1*(l-c+7*(f-v)/8+55*d/64)/2,this.f65_1=15*this.u64_1*(c-f+3*(v-d)/4)/16,this.g65_1=35*this.u64_1*(f-v+11*d/16)/48,this.h65_1=315*this.u64_1*(v-d)/512,this.p65(1.570621793869697,1.5707963267948966),this.i65_1=this.k65_1,this.j65_1=this.l65_1,this.p65(0,1.5707963267948966),this.i65_1=this.k65_1,this.y64_1=i,u>as()&&(u-=2*as()),this.z64_1=u,this.a65_1=s,this.b65_1=r,this.c65_1=o}return h},Pr(Al).p65=function(t,n){var i=n,e=0;if((t<-1.570621793869697||t>1.570621793869697)&&(e|=1),i>as()&&(i-=2*as()),ithis.z64_1+1.5707963267948966){var r=i<0?i+2*as():i,s=this.z64_1<0?this.z64_1+2*as():this.z64_1;(rs+1.5707963267948966)&&(e|=2)}if(0===e){var o=i-this.z64_1,u=o;Math.abs(u)>9*as()/180&&(e|=512),o>as()&&(o-=2*as()),o<-as()&&(o+=2*as());var a=o;Math.abs(a)<2e-10&&(o=0);var h=Math.sin(t),_=Math.cos(t),l=_*_,c=l*_,f=c*l,v=f*l,d=Math.tan(t),w=d*d,p=w*d*d,m=p*d*d,g=this.x64_1*l,b=g*g,$=b*g,y=$*g,k=this.u64_1,x=this.w64_1,S=Math.sin(t),E=1-x*Math.pow(S,2),C=k/Math.sqrt(E),q=2*t,O=4*t,z=6*t,A=8*t,T=this.d65_1*t-this.e65_1*Math.sin(q)+this.f65_1*Math.sin(O)-this.g65_1*Math.sin(z)+this.h65_1*Math.sin(A),I=this.d65_1*this.y64_1,D=this.e65_1,j=2*this.y64_1,M=I-D*Math.sin(j),N=this.f65_1,R=4*this.y64_1,P=M+N*Math.sin(R),L=this.g65_1,F=6*this.y64_1,U=P-L*Math.sin(F),H=this.h65_1,V=8*this.y64_1,B=(T-(U+H*Math.sin(V)))*this.c65_1,Y=C*h*_*this.c65_1/2,W=C*h*c*this.c65_1*(5-w+9*g+4*b)/24,G=C*h*f*this.c65_1*(61-58*w+p+270*g-330*w*g+445*b+324*$-680*w*b+88*y-600*w*$-192*w*y)/720,K=C*h*v*this.c65_1*(1385-3111*w+543*p-m)/40320,X=o,J=o,Z=o,Q=this.a65_1+B+Math.pow(X,2)*Y+Math.pow(J,4)*W+Math.pow(Z,6)*G,tt=o;this.l65_1=Q+Math.pow(tt,8)*K;var nt=C*_*this.c65_1,it=C*c*this.c65_1*(1-w+g)/6,et=C*f*this.c65_1*(5-18*w+p+14*g-58*w*g+13*b+4*$-64*w*b-24*w*$)/120,rt=C*v*this.c65_1*(61-479*w+179*p-m)/5040,st=o,ot=o,ut=this.b65_1+o*nt+Math.pow(st,3)*it+Math.pow(ot,5)*et,at=o;this.k65_1=ut+Math.pow(at,7)*rt}return e},Pr(Al).r65=function(t,n){var i=0;if((tthis.b65_1+this.i65_1)&&(i|=4),(nthis.a65_1+this.j65_1)&&(i|=8),0===i){var e=this.d65_1*this.y64_1,r=this.e65_1,s=2*this.y64_1,o=e-r*Math.sin(s),u=this.f65_1,a=4*this.y64_1,h=o+u*Math.sin(a),_=this.g65_1,l=6*this.y64_1,c=h-_*Math.sin(l),f=this.h65_1,v=8*this.y64_1,d=c+f*Math.sin(v)+(n-this.a65_1)/this.c65_1,w=this.u64_1*(1-this.w64_1),p=this.w64_1,m=Math.sin(0),g=1-p*Math.pow(m,2),b=Math.sqrt(g),$=w/Math.pow(b,3),y=d/$,k=0;if(k<=4)do{k=k+1|0;var x=2*y,S=4*y,E=6*y,C=8*y,q=this.d65_1*y-this.e65_1*Math.sin(x)+this.f65_1*Math.sin(S)-this.g65_1*Math.sin(E)+this.h65_1*Math.sin(C),O=this.u64_1*(1-this.w64_1),z=this.w64_1,A=y,T=Math.sin(A),I=1-z*Math.pow(T,2),D=Math.sqrt(I);y+=(d-q)/($=O/Math.pow(D,3))}while(k<=4);var j=this.u64_1*(1-this.w64_1),M=this.w64_1,N=y,R=Math.sin(N),P=1-M*Math.pow(R,2),L=Math.sqrt(P);$=j/Math.pow(L,3);var F=this.u64_1,U=this.w64_1,H=y,V=Math.sin(H),B=1-U*Math.pow(V,2),Y=F/Math.sqrt(B),W=y,G=Math.cos(W),K=y,X=Math.tan(K),J=X*X,Z=J*J,Q=this.x64_1*Math.pow(G,2),tt=Q*Q,nt=tt*Q,it=nt*Q,et=t-this.b65_1,rt=et;Math.abs(rt)<1e-4&&(et=0);var st=2*$*Y,ot=this.c65_1,ut=X/(st*Math.pow(ot,2)),at=X*(5+3*J+Q-4*Math.pow(Q,2)-9*J*Q),ht=24*$*Math.pow(Y,3),_t=this.c65_1,lt=at/(ht*Math.pow(_t,4)),ct=X*(61+90*J+46*Q+45*Z-252*J*Q-3*tt+100*nt-66*J*tt-90*Z*Q+88*it+225*Z*tt+84*J*nt-192*J*it),ft=720*$*Math.pow(Y,5),vt=this.c65_1,dt=ct/(ft*Math.pow(vt,6)),wt=X*(1385+3633*J+4095*Z+1575*Math.pow(X,6)),pt=40320*$*Math.pow(Y,7),mt=this.c65_1,gt=wt/(pt*Math.pow(mt,8)),bt=et,$t=et,yt=et,kt=y-Math.pow(bt,2)*ut+Math.pow($t,4)*lt-Math.pow(yt,6)*dt,xt=et;this.m65_1=kt+Math.pow(xt,8)*gt;var St=1/(Y*G*this.c65_1),Et=1+2*J+Q,Ct=6*Math.pow(Y,3)*G,qt=this.c65_1,Ot=Et/(Ct*Math.pow(qt,3)),zt=5+6*Q+28*J-3*tt+8*J*Q+24*Z-4*nt+4*J*tt+24*J*nt,At=120*Math.pow(Y,5)*G,Tt=this.c65_1,It=zt/(At*Math.pow(Tt,5)),Dt=61+662*J+1320*Z+720*Math.pow(X,6),jt=5040*Math.pow(Y,7)*G,Mt=this.c65_1,Nt=Dt/(jt*Math.pow(Mt,7)),Rt=et,Pt=et,Lt=et,Ft=et*St-Math.pow(Rt,3)*Ot+Math.pow(Pt,5)*It-Math.pow(Lt,7)*Nt;this.n65_1=this.z64_1+Ft;var Ut=this.m65_1;if(Math.abs(Ut)>90*as()/180&&(i|=8),this.n65_1>as()){this.n65_1=this.n65_1-2*as();var Ht=this.n65_1;Math.abs(Ht)>as()&&(i|=4)}var Vt=Math.abs(Ft),Bt=9*as()/180,Yt=this.m65_1;Vt>Bt*Math.cos(Yt)&&(i|=512),this.m65_1>1e10&&(i|=512)}return i},Pr(Tl).v5y=function(t,n){var i=new jl;if(0!==i.y66(Lh(t),Lh(n)))throw is(Gr("UPS Conversion Error"));return new Il(t,n,i.s66_1,i.t66_1,i.u66_1)},Pr(Tl).z66=function(t,n,i){var e=new jl;if(0!==e.a67(t,n,i))throw is(Gr("UTM Conversion Error"));var r=Uh(),s=e.v66_1,o=r.i59(s),u=Uh(),a=e.w66_1;return new Il(o,u.i59(a),t,n,i)},Pr(Il).toString=function(){return this.e63_1.toString()+" "+this.f63_1+"E "+this.g63_1+"N"},Pr(jl).y66=function(t,n){return t<-1.5707963267948966||t>1.5707963267948966||t<0&&t>-1.2566370614359172||t>=0&&t<1.2566370614359172?1:n<-as()||n>2*as()?2:(t<0?(this.l66_1=-1.4157155848011311,this.s66_1=pl()):(this.l66_1=1.4157155848011311,this.s66_1=wl()),this.x66_1.p64(this.o66_1,this.p66_1,this.l66_1,this.m66_1,0,0),this.x66_1.q64(t,n),this.t66_1=this.q66_1+this.x66_1.l64_1,this.u66_1=this.r66_1+(pl().equals(this.s66_1)?-this.x66_1.m64_1:this.x66_1.m64_1),0)},Pr(jl).a67=function(t,n,i){var e=0;return wl().equals(t)||pl().equals(t)||(e|=4),(n<0||n>4e6)&&(e|=8),(i<0||i>4e6)&&(e|=16),wl().equals(t)&&(this.l66_1=1.4157155848011311),pl().equals(t)&&(this.l66_1=-1.4157155848011311),0===e&&(this.x66_1.p64(this.o66_1,this.p66_1,this.l66_1,this.m66_1,this.q66_1,this.r66_1),this.x66_1.r64(n,i),this.v66_1=this.x66_1.n64_1,this.w66_1=this.x66_1.o64_1,this.v66_1<0&&this.v66_1>-1.2566370614359172&&(e|=1),this.v66_1>=0&&this.v66_1<1.2566370614359172&&(e|=1)),e},Pr(Ml).v5y=function(t,n){var i=new Pl;if(0!==i.y67(Lh(t),Lh(n)))throw is(Gr("UTM Conversion Error"));return new Nl(t,n,i.v67_1,i.s67_1,i.t67_1,i.u67_1)},Pr(Ml).z67=function(t,n,i,e){var r=new Pl;if(0!==r.a68(t,n,i,e))throw is(Gr("UTM Conversion Error"));var s=Uh(),o=r.w67_1,u=s.i59(o),a=Uh(),h=r.x67_1;return new Nl(u,a.i59(h),t,n,i,e)},Pr(Nl).toString=function(){return this.y62_1.toString()+" "+this.z62_1+" "+Wr(this.a63_1)+"E "+Wr(this.b63_1)+"N"},Pr(Pl).y67=function(t,n){var i=n,e=0,r=0;if((t<-1.43116998663535||t>1.5009831567151233)&&(e|=1),(i<-as()||i>2*as())&&(e|=2),0===e){i<0&&(i+=2*as()+1e-10);var s=ks(180*t/as()),o=ks(180*i/as()),u=ks(i60&&(u=1),56<=s&&s<=63&&o>-1&&o<3&&(u=31),56<=s&&s<=63&&o>2&&o<12&&(u=32),s>71&&o>-1&&o<9&&(u=31),s>71&&o>8&&o<21&&(u=33),s>71&&o>20&&o<33&&(u=35),s>71&&o>32&&o<42&&(u=37),0!==this.q67_1&&(1===u&&60===this.q67_1||60===u&&1===this.q67_1||(u-1|0)<=this.q67_1&&this.q67_1<=(u+1|0)?u=this.q67_1:e=64),0===e){this.r67_1=u>=31?(Tr(6,u)-183|0)*as()/180:(Tr(6,u)+177|0)*as()/180,this.v67_1=u,t<0?(r=1e7,this.s67_1=pl()):this.s67_1=wl();try{var a=it,h=Uh().i59(t),_=Uh(),l=i,c=_.i59(l),f=Uh().i59(0),v=Uh(),d=this.r67_1,w=v.i59(d),p=a.s64(h,c,this.o67_1,this.p67_1,f,w,5e5,r,.9996);this.t67_1=p.u65_1,this.u67_1=p.v65_1,(this.t67_1<1e5||this.t67_1>9e5)&&(e=4),(this.u67_1<0||this.u67_1>1e7)&&(e|=8)}catch(t){if(!(t instanceof $s))throw t;e=512}}}return e},Pr(Pl).a68=function(t,n,i,e){var r=0,s=0;if((t<1||t>60)&&(r|=16),n.equals(pl())||n.equals(wl())||(r|=32),(e<0||e>1e7)&&(r|=8),0===r){this.r67_1=t>=31?(Tr(6,t)-183|0)*as()/180:(Tr(6,t)+177|0)*as()/180,n.equals(pl())&&(s=1e7);try{var o=it,u=Uh().i59(0),a=Uh(),h=this.r67_1,_=a.i59(h),l=o.q65(i,e,u,_,5e5,s,.9996);this.w67_1=Lh(l.s65_1),this.x67_1=Lh(l.t65_1),(this.w67_1<-1.43116998663535||this.w67_1>1.5009831567151233)&&(r|=8)}catch(t){if(!(t instanceof $s))throw t;r=512}}return r},Pr(Zl).toString=function(){return"State(ellipsoid="+this.a69_1+", projectionName="+this.b69_1+")"},Pr(Zl).hashCode=function(){var t=this.a69_1.hashCode();return Tr(t,31)+Ys(this.b69_1)|0},Pr(Zl).equals=function(t){if(this===t)return!0;if(!(t instanceof Zl))return!1;var n=t instanceof Zl?t:Nr();return!!this.a69_1.equals(n.a69_1)&&this.b69_1===n.b69_1},Pr(tc).v59=function(){return this.z54_1.y5u_1},Pr(tc).c69=function(){return this.z54_1.a5v()},Pr(tc).b5v=function(){return this.z54_1.b5v()},Pr(tc).e58=function(){return this.a55_1.e58()},Pr(tc).z5r=function(){return this.a55_1.z5r()},Pr(tc).d69=function(){return this.a55_1.d69()},Pr(tc).vm=function(){return new Zl(this.z54_1,this.a55_1.e69())},Pr(tc).q5d=function(t){this.c55_1=t;var n;switch(t.v9_1){case 0:n=0;break;case 1:n=2*as()*this.v59();break;case 2:n=-2*as()*this.v59();break;default:Ws()}this.d55_1=n},Pr(tc).f69=function(t,n){var i=Lh(t),e=Math.sin(i),r=this.z54_1.b5v(),s=1-r*e*e,o=1+(r*r-2*r)*e*e;return this.z54_1.y5u_1/Math.sqrt(s)*Math.sqrt(o)},Pr(tc).t57=function(t,n,i,e){return this.a55_1.g69(this,t,n,i,this.d55_1,e)},Pr(tc).f58=function(t,n,i){return this.a55_1.h69(this,t,n,i)},Pr(tc).c5d=function(t,n,i,e){return this.a55_1.i69(this,t,n,i,e)},Pr(tc).j69=function(t,n,i,e,r,s,o,u,a){return this.a55_1.k69(this,t,n,i,e,r,s,this.d55_1,o,u,a)},Pr(tc).k5u=function(t,n,i,e,r,s,o,u,a,h){return u=u===Yr?0:u,a=a===Yr?0:a,h===Yr?this.j69(t,n,i,e,r,s,o,u,a):h.j69.call(this,t,n,i,e,r,s,o,u,a)},Pr(tc).l69=function(t,n,i,e,r,s){return this.a55_1.m69(this,t,n,i,e,r,this.d55_1,s)},Pr(tc).r57=function(t,n,i,e){var r=this.a55_1.n69(this,t,n,i,this.d55_1,e);return this.e58()&&(e.c54_1=Xh(e.c54_1)),r},Pr(tc).v57=function(t,n,i,e){return this.a55_1.o69(this,t,n,i,e)},Pr(tc).e57=function(t){var n;if(t>0){var i=t*(2*this.z54_1.y5u_1+t);n=Math.sqrt(i)}else n=0;return n},Pr(tc).k59=function(t,n){return this.a55_1.p69(this,t,n)},Pr(tc).q69=function(t,n,i){return this.b55_1.r69(t,n,i)},Pr(tc).d58=function(t,n,i,e){return i=i!==Yr&&i,e===Yr?this.q69(t,n,i):e.q69.call(this,new e_(t),new e_(n),i)},Pr(tc).s69=function(t,n){return new H_(t,n,this.q69(t,n,!0))},Pr(tc).d57=function(t,n){var i;switch(n.v9_1){case 1:i=this.s69(t.b54_1,t.c54_1);break;case 2:var e=this.s69(t.b54_1,t.c54_1);e.f54_1=e.f54_1+t.f54_1,i=e;break;default:i=F_(t)}return i},Pr(nc).x5b=function(){var t=new Hr(0,0),n=0,i=this.e55_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.e55_1.h1(e).x5b();t.z9(r)<0&&(t=r)}while(n<=i);return t},Pr(nc).f55=function(){for(var t=this.e55_1.v();t.w();)t.y().b1();return Xr},Pr(nc).t69=function(t){return!this.e55_1.r(t)&&this.e55_1.s(t)},Pr(nc).u69=function(t){return this.e55_1.t(t)},Pr(nc).v=function(){return this.e55_1.v()},Pr(nc).r69=function(t,n,i){var e=this.e55_1.n()-1|0;if(0<=e)do{var r=e;e=e+-1|0;var s=this.e55_1.h1(r).r69(t,n,i);if(null!=s)return s}while(0<=e);return 0},Pr(nc).v69=function(t,n,i,e){var r=0,s=this.e55_1.n()-1|0;if(r<=s)do{var o=r;r=r+1|0,this.e55_1.h1(o).v69(t,n,i,e)}while(r<=s)},Pr(nc).w69=function(t,n){var i=0,e=this.e55_1.n()-1|0;if(i<=e)do{var r=i;i=i+1|0,this.e55_1.h1(r).w69(t,n)}while(i<=e)},Pr(ic).d6a=function(t){this.z69_1=t,this.e6a()},Pr(ic).f6a=function(){return this.z69_1},Pr(ic).g6a=function(t){this.a6a_1=t},Pr(ic).x5b=function(){return this.a6a_1},Pr(ic).e6a=function(){this.g6a(js.a3k().b3l()),this.c6a_1.b1()},Pr(ic).r69=function(t,n,i){var e;if(this.f6a()){var r,s=Tr(31,Es(t))+Es(n)|0,o=this.c6a_1.o2(s);if(null==o){var u,a=this.h6a(t,n,i);null==a?u=null:(this.c6a_1.f5t(s,a,1),u=a),r=u}else r=o;e=r}else e=null;return e},Pr(ic).v69=function(t,n,i,e){this.f6a()&&this.i6a(t,n,i,e)},Pr(ic).w69=function(t,n){this.f6a()&&this.j6a(t,n)},Pr(rc).s6a=function(){var t=this.l6a_1;if(null!=t)return t;Gs("tileMatrix")},Pr(rc).b1=function(){this.m6a_1.b1(),this.n6a_1.b1(),this.o6a_1.b1(),this.p6a_1=-1,this.q6a_1=-1,this.r6a_1=null},Pr(rc).t6a=function(t,n,i){var e=this.s6a().c5y(t,n);this.o6a_1.e2(e,i)},Pr(rc).u6a=function(t,n){return this.p6a_1===t&&this.q6a_1===n||(this.p6a_1=t,this.q6a_1=n,this.r6a_1=this.o6a_1.o2(this.s6a().c5y(t,n))),this.r6a_1},Pr(rc).v6a=function(t,n,i,e){var r=this.u6a(t,n),s=null==r?null:r[i+Tr(e,this.s6a().z5x_1)|0];return null==s?0:s},Pr(sc).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=Xr,i.cc_1=null,i.mc()},Pr(sc).zc=function(t,n){return this.v1g(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(sc).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=this.e6b_1.y6b(this.f6b_1,this.g6b_1,this.h6b_1,this.i6b_1,this))===Js())return t;continue t;case 1:return Xr;case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},Pr(sc).w1g=function(t,n){var i=new sc(this.e6b_1,this.f6b_1,this.g6b_1,this.h6b_1,this.i6b_1,n);return i.j6b_1=t,i},Pr(oc).b1=function(){io(this.x6b_1.am()),this.t6b_1.b1(),this.u6b_1.b1(),this.w6b_1.b1(),this.e6a()},Pr(oc).h6a=function(t,n,i){if(!this.q6b_1.g5y_1.o5x(t,n))return null;var e=this.q6b_1.h5y_1.n()-1|0,r=e;if(0<=r)do{var s=r;r=r+-1|0,this.v6b_1=!!i&&(s===e||0===s);var o=this.q6b_1.h5y_1.h1(s),u=o.v5x_1.t5p()/o.y5x_1,a=o.v5x_1.s5p()/o.x5x_1,h=(o.v5x_1.p5p_1-t)/u,_=Math.floor(h),l=ks(_),c=(n-o.v5x_1.q5p_1)/a,f=Math.floor(c),v=ks(f),d=this.d6c(o,l,v);if(null!=d){var w=o.v5x_1.p5p_1-u*l,p=o.v5x_1.q5p_1+a*v,m=o.z5x_1-1|0,g=o.a5y_1-1|0,b=m*(n-p)/a,$=g*(w-t)/u,y=Math.floor(b),k=eo(ks(y),0,m),x=eo(k+1|0,0,m),S=Math.floor($),E=eo(ks(S),0,g),C=eo(E+1|0,0,g),q=b-k,O=$-E;return(1-q)*(1-O)*d[k+Tr(E,o.z5x_1)|0]+q*(1-O)*d[x+Tr(E,o.z5x_1)|0]+(1-q)*O*d[k+Tr(C,o.z5x_1)|0]+q*O*d[x+Tr(C,o.z5x_1)|0]}}while(0<=r);return null},Pr(oc).i6a=function(t,n,i,e){if(!this.q6b_1.g5y_1.c5r(t))return Xr;var r=Gh(t.t5p(),i),s=this.q6b_1.i5y(r),o=new rc,u=s;if(0<=u)do{var a=u;u=u+-1|0,this.v6b_1=a===s||0===a;var h=this.q6b_1.h5y_1.h1(a);if(this.f6c(t,n,i,h,o))return this.e6c(t,n,i,o,e),Xr}while(0<=u)},Pr(oc).j6a=function(t,n){if(!this.q6b_1.g5y_1.c5r(t))return Xr;var i=Gh(t.t5p(),32),e=this.q6b_1.i5y(i),r=new rc,s=e;if(0<=s)do{var o=s;s=s+-1|0,this.v6b_1=o===e||0===o;var u=this.q6b_1.h5y_1.h1(o);if(this.h6c(t,u,r))return this.g6c(t,r,n),Xr}while(0<=s)},Pr(oc).f6c=function(t,n,i,e,r){var s=e.z5x_1,o=e.a5y_1,u=Tr(e.x5x_1,s),a=Tr(e.y5x_1,o),h=e.v5x_1.o5p_1,_=e.v5x_1.p5p_1,l=e.v5x_1.q5p_1,c=e.v5x_1.r5p_1,f=e.v5x_1.t5p(),v=e.v5x_1.s5p(),d=1/(2*u),w=1-d,p=1/(2*a),m=1-p;r.l6a_1=e,r.b1();for(var g=t.q5p_1,b=t.s5p()/(n-1|0),$=0;$K&&(i[0]=K),i[1]=1&&e>=1)){var l=kr.n54(kr.i54_1,"MercatorProjection","geographicToCartesianGrid","Number of latitude or longitude locations is less than one");throw is(Gr(l))}if(!(null==r||r.length>=Tr(i,e))){var c=kr.n54(kr.i54_1,"MercatorProjection","geographicToCartesianGrid","missingArray");throw is(Gr(c))}var f=t.v59(),v=t.b5v(),d=Math.sqrt(v),w=Lh(n.o5p_1),p=Lh(n.p5p_1),m=Lh(n.q5p_1),g=Lh(n.r5p_1),b=(p-w)/(i>1?i-1|0:1),$=(g-m)/(e>1?e-1|0:1),y=Lh(this.d69().o5p_1),k=Lh(this.d69().p5p_1),x=Lh(this.d69().q5p_1),S=Lh(this.d69().r5p_1),E=0,C=null==o?null:o.g57_1,q=null==C?0:C,O=null==o?null:o.h57_1,z=null==O?0:O,A=null==o?null:o.k57_1,T=null==A?0:A,I=h,D=0===_?Tr(e,3):_,j=w,M=0;if(M1?i-3|0:1),w=(v-f)/(e>1?e-3|0:1),p=Lh(this.d69().o5p_1),m=Lh(this.d69().p5p_1),g=Lh(this.d69().q5p_1),b=Lh(this.d69().r5p_1),$=null==s?null:s.g57_1,y=null==$?0:$,k=null==s?null:s.h57_1,x=null==k?0:k,S=null==s?null:s.k57_1,E=null==S?0:S,C=0,q=l,O=f,z=0;if(z1e-6))break t;c=l;var v=as()/2,d=l,w=l,p=(1-a*Math.sin(d))/(1+a*Math.sin(w)),m=a/2,g=_*Math.pow(p,m);l=v-2*Math.atan(g)}var b=(n-r)/o;return s.h5x(l,b,e)},Pr(_c).o69=function(t,n,i,e,r){return r.n5w(1,0,0,n,0,1,0,i,0,0,1,e,0,0,0,1)},Pr(_c).p69=function(t,n,i){var e=n.z56_1.g57_1,r=n.z56_1.h57_1,s=n.z56_1.k57_1,o=n.y56_1.g57_1,u=n.y56_1.h57_1,a=n.y56_1.k57_1;if(0===s&&0!==a)return!1;var h=-a/s;return!(h<0||(i.g57_1=o+e*h,i.h57_1=u+r*h,i.k57_1=a+s*h,0))},Pr(lc).e69=function(){return this.k6d_1},Pr(lc).g69=function(t,n,i,e,r,s){var o=Lh(n),u=Math.cos(o),a=Lh(n),h=Math.sin(a),_=Lh(i),l=Math.cos(_),c=Lh(i),f=Math.sin(c),v=t.b5v(),d=1-v*h*h,w=t.v59()/Math.sqrt(d);return s.u5f((e+w)*u*f,(e+w*(1-v))*h,(e+w)*u*l)},Pr(lc).h69=function(t,n,i,e){var r=Lh(n),s=Math.cos(r),o=Lh(n),u=Math.sin(o),a=Lh(i),h=Math.cos(a),_=Lh(i),l=Math.sin(_),c=t.v59()*t.v59(),f=t.c69()*t.c69();return e.u5f(s*l/c,(1-t.b5v())*u/f,s*h/c).h58()},Pr(lc).i69=function(t,n,i,e,r){var s=Lh(n),o=Math.cos(s),u=Lh(n),a=Math.sin(u),h=Lh(i),_=Math.cos(h),l=Lh(i),c=Math.sin(l),f=t.b5v(),v=1-f*a*a,d=t.v59()/Math.sqrt(v),w=t.v59()*t.v59(),p=t.c69()*t.c69(),m=(d+e)*o*c,g=(d*(1-f)+e)*a,b=(d+e)*o*_,$=o*c/w,y=(1-t.b5v())*a/p,k=o*_/w,x=$*$+y*y+k*k,S=Math.sqrt(x);$/=S,y/=S,k/=S;var E=-a*c,C=o,q=-a*_,O=E*E+C*C+q*q,z=(C/=S=Math.sqrt(O))*k-(q/=S)*y,A=q*$-(E/=S)*k,T=E*y-C*$;return E=y*T-k*A,C=k*z-$*T,q=$*A-y*z,r.n5w(z,E,$,m,A,C,y,g,T,q,k,b,0,0,0,1)},Pr(lc).k69=function(t,n,i,e,r,s,o,u,a,h,_){if(!(i>=1&&e>=1)){var l=kr.n54(kr.i54_1,"Wgs84Projection","geographicToCartesianGrid","Number of latitude or longitude locations is less than one");throw is(Gr(l))}if(!(null==r||r.length>=Tr(i,e))){var c=kr.n54(kr.i54_1,"Wgs84Projection","geographicToCartesianGrid","missingArray");throw is(Gr(c))}var f=Lh(n.o5p_1),v=Lh(n.p5p_1),d=Lh(n.q5p_1),w=Lh(n.r5p_1),p=(v-f)/(i>1?i-1|0:1),m=(w-d)/(e>1?e-1|0:1),g=t.v59(),b=t.b5v(),$=new Float64Array(e),y=new Float64Array(e),k=0,x=null==o?null:o.g57_1,S=null==x?0:x,E=null==o?null:o.h57_1,C=null==E?0:E,q=null==o?null:o.k57_1,O=null==q?0:q,z=d,A=0;if(A=1&&e>=1)){var a=kr.n54(kr.i54_1,"Wgs84Projection","geographicToCartesianBorder","Number of latitude or longitude locations is less than one");throw is(Gr(a))}var h=Lh(n.o5p_1),_=Lh(n.p5p_1),l=Lh(n.q5p_1),c=Lh(n.r5p_1),f=(_-h)/(i>1?i-3|0:1),v=(c-l)/(e>1?e-3|0:1),d=h,w=l,p=t.v59(),m=t.b5v(),g=null==s?null:s.g57_1,b=null==g?0:g,$=null==s?null:s.h57_1,y=null==$?0:$,k=null==s?null:s.k57_1,x=null==k?0:k,S=0,E=0;if(E0||0!==d){var m;if(p>0){var g,b=Math.sqrt(p),$=f*v*d,y=Math.sqrt($),k=(b+y)*(b+y),x=Math.pow(k,.3333333333333333);if(p>10*c)g=w+.5*x+2*w*w/x;else{var S=(b-y)*(b-y);g=w+.5*x+.5*Math.pow(S,.3333333333333333)}m=g}else{var E=-p,C=Math.sqrt(E),q=-8*w*w*w,O=Math.sqrt(q),z=f*v*d,A=Math.sqrt(z),T=C+O,I=2*Math.atan2(A,T)/3,D=-4*w*Math.sin(I),j=as()/6+I;m=D*Math.cos(j)}var M=m*m+f*d,N=Math.sqrt(M),R=c*(m+N-d)/(2*N),P=R*R+m+N,L=(m+N)/(Math.sqrt(P)+R),F=L*h/(L+c),U=F*F+i*i,H=Math.sqrt(U);o=(L+c-1)*H/L;var V=H+F;u=2*Math.atan2(i,V)}else{var B=1-c,Y=Math.sqrt(B),W=c-v,G=Math.sqrt(W),K=Math.sqrt(c);o=-_*Y*G/K,u=G/(K*G+Y*Math.sqrt(v))}var X,J=Math.sqrt(2);if((J-1)*n0||(w=(-v+Math.sqrt(d))/(2*f))>0)&&(i.u5f(o+e*w,u+r*w,a+s*w),!0)},Pr(cc).s5d=function(){return this.o6d_1},Pr(cc).k59=function(t,n){var i=!1,e=this.m6d_1;if(null==e)return i;var r=e,s=0,o=this.n6d_1.n()-1|0;if(s<=o)t:do{var u=s;s=s+1|0;var a=this.n6d_1.h1(u);if(t.y56_1.g58(a.d6e_1),t.o5v(a.p6e(),3,r,r.length,this.p6d_1)&&(n.m5c(this.p6d_1).q5y(a.d6e_1),i=!0),t.y56_1.q5y(a.d6e_1),i)break t}while(s<=o);return i},Pr(cc).q6e=function(t,n,i){var e=0,r=this.n6d_1.n()-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=this.n6d_1.h1(s),u=o.r6e_1;if(u.o5x(t,n)){var a=o.p6f_1.e6f_1,h=o.p6f_1.f6f_1,_=(n-u.q5p_1)/u.s5p()*(a-1|0),l=(t-u.o5p_1)/u.t5p()*(h-1|0),c=_<(a-1|0)?bx(_):1,f=l<(h-1|0)?bx(l):1,v=_<(a-1|0)?ks(_+1):a-1|0,d=l<(h-1|0)?ks(l+1):h-1|0,w=a+2|0,p=Tr(v+Tr(d,w)|0,3),m=p+3|0,g=Tr(v+Tr(d+1|0,w)|0,3),b=g+3|0,$=(1-c)*(1-f),y=c*(1-f),k=(1-c)*f,x=c*f,S=o.p6e();return i.g57_1=S[p]*$+S[m]*y+S[g]*k+S[b]*x,i.h57_1=S[p+1|0]*$+S[m+1|0]*y+S[g+1|0]*k+S[b+1|0]*x,i.k57_1=S[p+2|0]*$+S[m+2|0]*y+S[g+2|0]*k+S[b+2|0]*x,i.g57_1=i.g57_1+o.d6e_1.g57_1,i.h57_1=i.h57_1+o.d6e_1.h57_1,i.k57_1=i.k57_1+o.d6e_1.k57_1,!0}}while(e<=r);return!1},Pr(cc).u6f=function(t,n){n[0]=34028235e31,n[1]=-34028235e31;var i=this.n6d_1.v();if(!i.w())throw uo();for(var e=i.y().p6f_1.a6f_1;i.w();){var r=i.y().p6f_1.a6f_1;ws(e,r)<0&&(e=r)}for(var s=e-t|0,o=this.n6d_1.v();o.w();){var u=o.y();if(u.p6f_1.a6f_1>=s){var a=n[0],h=u.v6f()[0];n[0]=Math.min(a,h);var _=n[1],l=u.v6f()[1];n[1]=Math.max(_,l)}}n[0]>n[1]&&zs(n,0)},Pr(fc).l9=function(t,n){return this.w6f_1(t,n)},Pr(fc).compare=function(t,n){return this.l9(t,n)},Pr(dc).p5s=function(t){return this.o6g(t),this.p6g(t)},Pr(dc).q6g=function(t,n,i,e){return new mc(t,n,i,e)},Pr(dc).p6g=function(t){this.c6g_1.b1(),this.d6g_1.k55(),this.r6g(t),this.b6g_1.d1()&&this.s6g();var n=0,i=this.b6g_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.b6g_1.h1(e);this.t6g(t,r instanceof mc?r:Nr())}while(n<=i);var s=this.c6g_1;if(s.n()>1){var o=new fc(vc);lo(s,o)}return this.j6g_1=null,this.k6g_1=null,new cc(this.c6g_1,this.d6g_1,this.g6g_1)},Pr(dc).s6g=function(){return Pi.d6h(this.y6f_1.b6h(),this,this.b6g_1)},Pr(dc).t6g=function(t,n){var i=t.y5r().d69();if(!1===(null==i?null:n.e6h(i)))return Xr;if(!n.e6h(this.y6f_1.u6g_1)||!n.f6h(t))return Xr;if(n.p6f_1.i6h()||!n.h6h(t,this.z6f_1))return this.g6h(t,n),Xr;var e=n.j6h(this,this.a6g_1,4),r=0,s=e.length-1|0;if(r<=s)do{var o=r;r=r+1|0;var u=e[o];this.t6g(t,u instanceof mc?u:Nr())}while(r<=s)},Pr(dc).g6h=function(t,n){n.k6h(t),this.c6g_1.s(n),this.d6g_1.t5x(n.r6e_1);var i,e=bs(Ka),r=t.s5b_1.o2(e),s=null==r||ss(r,W$)?r:Nr();if(null==s){var o=new VS;t.s5b_1.e2(e,o),i=o}else i=s;var u=i,a=g.e5d(u);this.l6h(t,n,a),t.m6h(a,n.m6e_1)},Pr(dc).o6g=function(t){Ss(t.y5a_1,this.n6g_1)||(this.n6h(),this.n6g_1=t.y5a_1)},Pr(dc).n6h=function(){this.b6g_1.b1(),this.c6g_1.b1(),this.d6g_1.k55(),this.a6g_1.b1(),this.e6g_1=null,this.f6g_1=null,this.g6g_1=null},Pr(dc).l6h=function(t,n,i){i.q5d(t.y5r().c55_1),i.s5d().h5q(n.r6e_1),i.t5d().m5c(n.d6e_1),i.j5d_1.j5x(this.h6g_1),i.k5d_1.j5x(this.i6g_1),i.l5d_1=n.o6h(t),i.m5d_1=n.p6h(t),i.n5d_1=this.j6g_1,i.o5d_1=this.k6g_1},Pr(dc).r6g=function(t){var n,i=this.y6f_1.y6g_1+2|0,e=this.y6f_1.x6g_1+2|0,r=this.e6g_1;if(null==r){var s=new Float32Array(Tr(Tr(i,e),2));this.e6g_1=s,this.q6h(i,e,s),n=s}else n=r;var o,u=n,a=this.f6g_1;if(null==a){var h=this.r6h(i,e);this.f6g_1=h,o=h}else o=a;var _,l=o,c=this.g6g_1;if(null==c){var f=this.s6h(i,e);this.g6g_1=f,_=f}else _=c;var v,d=_,w=this.l6g_1,p=t.x5s(),m=p.o2(w);if(null==m){var g=new xb(Rk(),u);p.f5t(w,g,g.f5m_1),v=g}else v=m;var b=v;this.j6g_1=b instanceof xb?b:Nr();var $,y=this.m6g_1,k=t.x5s(),x=k.o2(y);if(null==x){var S=new Eb(Pk(),co([l,d]));this.h6g_1.n5e_1=l.length,this.i6g_1.m5e_1=l.length,this.i6g_1.n5e_1=l.length+d.length|0,k.f5t(y,S,S.f5m_1),$=S}else $=x;var E=$;this.k6g_1=E instanceof Eb?E:Nr()},Pr(dc).q6h=function(t,n,i){var e=1/(n>1?n-3|0:1),r=1/(t>1?t-3|0:1),s=0,o=0,u=0,a=0;if(a1)return!0;var e=t.d6r_1-n.r6i().y53_1;if(Math.abs(e)>1)return!0;var r=t.e6r_1-n.r6i().a54_1;return Math.abs(r)>1||n.a5b_1.n5c(t.b6r_1)>t.n6r(n)/100||!Ss(n.y5a_1,t.g6r_1)}(this,t)?t.y5r().c55_1.equals(this.h6r_1)||this.t6r(t):(this.u6r(t),this.t6r(t)),this.h6r_1=t.y5r().c55_1,this.z6q_1.v6r(t,this.m6i())},Pr(Vc).u6r=function(t){this.z6q_1.m6r(),this.b6r_1.m5c(t.a5b_1),this.e6r_1=t.r6i().a54_1,this.c6r_1=t.r6i().x53_1,this.d6r_1=t.r6i().y53_1,this.f6r_1=t.s5a_1,this.g6r_1=t.y5a_1},Pr(Vc).x6r=function(t){var n,i=t.x5a_1;if(null==i)n=null;else{var e=Uh().m5t(t.w5a_1/t.y5r().v59()*t.b5b_1.i55_1/4);n=new $_(so(new e_(Jh(Wh(i.b54_1,e))),new e_(Hc().o6r_1),new e_(Hc().p6r_1)).x5t_1,Zh(Wh(i.c54_1,e)))}var r=n;return null==r?t.r6i().v53_1:r},Pr(Vc).y6r=function(t,n){var i=new o$(t);return i.u6s(n),i.v6s(Rh()),i.w6s(!0),i},Pr(Vc).x6s=function(t,n,i){var e=new Jb(t,n);return e.v6s(Rh()),e},Pr(Vc).n6t=function(t,n,i){return t.r5s().q6e(n,i,this.a6r_1)||t.y5r().t57(n,i,t.y5r().d58(n,i)*t.s5a_1,this.a6r_1),this.a6r_1},Pr(Vc).n6r=function(t){var n=this.n6t(t,t.r6i().v53_1.b54_1,t.r6i().v53_1.c54_1);return t.a5b_1.n5c(n)},Pr(Vc).o6t=function(t,n,i,e){var r=i.o5x(t.b54_1,t.c54_1),s=i.o5x(n.b54_1,n.c54_1);if(!r&&!s)return Xr;if(r&&s)e.s(t),e.s(n);else{var o=r?n:t,u=r?t:n,a=1;if(a<=2)t:do{a=a+1|0;var h=null;if(o.c54_1>i.r5p_1||180===i.r5p_1&&o.c54_1<0?h=Rc(0,u,o,i.r5p_1):o.c54_10?h=Rc(0,u,o,i.q5p_1):o.b54_1>i.p5p_1?h=Pc(0,u,o,i.p5p_1):o.b54_188)n=45;else{var i=(t+88)/4+1,e=Math.floor(i);n=$o(ks(e),45)}return n},Pr(hf).w6r=function(t){return t>=1e6?"Graticule.GK.1_000_000":t>=5e5?"Graticule.GK.500_000":t>=2e5?"Graticule.GK.200_000":t>=1e5?"Graticule.GK.100_000":t>=35e3?"Graticule.GK.50_000":t>=15e3?"Graticule.GK.25_000":"Graticule.GK.10_000"},Pr(hf).k6z=function(t){switch(t){case"Graticule.GK.1_000_000":return 1e6;case"Graticule.GK.500_000":return 5e5;case"Graticule.GK.200_000":return 2e5;case"Graticule.GK.100_000":return 1e5;case"Graticule.GK.50_000":return 35e3;case"Graticule.GK.25_000":return 15e3;default:return 8e3}},Pr(hf).k6w=function(t){return new vf(this,t,"Graticule.GK.1_000_000")},Pr(hf).l6z=function(t){return this.r6x_1.m6z(t)},Pr(hf).n6z=function(t){(function(t,n){return 0===n||n>0&&0===t.s6x_1||0!==t.s6x_1&&n=0?1+(ks(t)/6|0)|0:31+(ks(t+180)/6|0)|0},Pr(wf).l71=function(t,n,i,e,r,s,o,u){var a,h=e-n,_=t-i,l=h*t+_*n,c=u-s,f=r-o,v=c*r+f*s,d=h*f-c*_;if(0!==d){var w=(f*l-_*v)/d,p=(h*v-c*l)/d;a=G.d5z(w,p)}else a=null;return a},Pr(wf).h71=function(t,n,i,e){var r;if(af(),"Graticule.GK.1_000_000"===i)r=df(this,t,n);else if(af(),"Graticule.GK.500_000"===i)r=(0===Eo(e)?df(Ot,t,n):e)+function(t,n,i){var e=1-ks((n+88)%4/2)|0,r=ks((i+180)%6/3);switch(Tr(e,2)+r|0){case 0:return"-A";case 1:return"-Б";case 2:return"-В";default:return"-Г"}}(0,t,n);else if(af(),"Graticule.GK.200_000"===i)r=df(this,t,n)+function(t,n,i){var e=5-ks((n+88)%4/.6666666666666667)|0,r=ks((i+180)%6),s=Tr(e,6)+r|0;return"-"+af().n6y_1[s]}(0,t,n);else if(af(),"Graticule.GK.100_000"===i)r=df(this,t,n)+function(t,n,i){var e=11-ks((n+88)%4/.33333333333333337)|0,r=ks((i+180)%6/.5)+1|0;return"-"+(Tr(e,12)+r|0)}(0,t,n);else if(af(),"Graticule.GK.50_000"===i){var s;if(0===Eo(e)){var o=Ot;af(),s=o.m71(t,n,"Graticule.GK.100_000")}else s=e;r=s+function(t,n,i){var e=ks((n+88)/.33333333333333337),r=1-ks((n+88-.33333333333333337*e)/.16666666666666669)|0;e=ks((i+180)/.5);var s=ks((i+180-.5*e)/.25);switch(Tr(r,2)+s|0){case 0:return"-A";case 1:return"-Б";case 2:return"-В";default:return"-Г"}}(0,t,n)}else if(af(),"Graticule.GK.25_000"===i){var u;if(0===Eo(e)){var a=Ot;af(),u=a.m71(t,n,"Graticule.GK.50_000")}else u=e;r=u+function(t,n,i){var e=ks((n+88)/.16666666666666669),r=1-ks((n+88-.16666666666666669*e)/.08333333333333334)|0;e=ks((i+180)/.25);var s=ks((i+180-.25*e)/.125);switch(Tr(r,2)+s|0){case 0:return"-a";case 1:return"-б";case 2:return"-в";default:return"-г"}}(0,t,n)}else{var h;if(0===Eo(e)){var _=Ot;af(),h=_.m71(t,n,"Graticule.GK.25_000")}else h=e;r=h+function(t,n,i){var e=ks((n+88)/.08333333333333334),r=1-ks((n+88-.08333333333333334*e)/.04166666666666667)|0;e=ks((i+180)/.125);var s=ks((i+180-.125*e)/.0625)+1|0;return"-"+(Tr(r,2)+s|0)}(0,t,n)}return r},Pr(wf).m71=function(t,n,i,e,r){var s;return i===Yr?(af(),s="Graticule.GK.1_000_000"):s=i,i=s,e=e===Yr?"":e,r===Yr?this.h71(t,n,i,e):r.h71.call(this,new e_(t),new e_(n),i,e)},Pr(wf).k71=function(t){return ks((t+88+4)/4)},Pr(wf).j71=function(t){return $o(ks((t+180)/6),59)},Pr(Ef).b6u=function(){var t=Pr(Bc).b6u.call(this);return t instanceof hf?t:Nr()},Pr(Ef).x70=function(t){for(var n=this.y6t_1.v();n.w();){var i=n.y();i.i6w_1===t?this.b6u().s6r(i.h6w_1,t):"metric.label"===i.i6w_1&&i.h6w_1 instanceof Jb&&this.b6u().l6z(i.h6w_1)}return Xr},Pr(Ef).e6u=function(){Pr(Bc).e6u.call(this);var t=this.w70_1.n71_1.h5z_1,n=this.w70_1.o71_1.h5z_1,i=Math.min(t,n),e=this.w70_1.q71_1.h5z_1,r=this.w70_1.p71_1.h5z_1,s=Math.max(e,r),o=this.w70_1.n71_1.i5z_1,u=this.w70_1.q71_1.i5z_1,a=Math.max(o,u),h=this.w70_1.p71_1.i5z_1,_=this.w70_1.o71_1.i5z_1,l=Math.min(h,_),c=ks(i/this.u70_1),f=ks(s/this.u70_1),v=ks(a/this.u70_1),d=ks(l/this.u70_1);(function(t,n,i,e,r){var s=n;if(s<=i)do{var o=s;s=s+1|0;var u=o*t.u70_1,a=o*t.u70_1+t.u70_1,h=e;if(h<=r)do{var _=h;h=h+1|0;var l=_*t.u70_1,c=yf(t,u,l);if(o!==n){var f=_*t.u70_1+t.u70_1,v=yf(t,u,f),d=_;d===e?(gf(t,$f(0,t.w70_1.n71_1,t.w70_1.q71_1,u,l,u,f),v),pf(t,c,_,o,"X")):d===r?gf(t,$f(0,t.w70_1.o71_1,t.w70_1.p71_1,u,l,u,f),c):bf(t,c,v)}if(_!==e){var w=yf(t,a,l),p=o;p===n?(gf(t,$f(0,t.w70_1.n71_1,t.w70_1.o71_1,u,l,a,l),w),pf(t,c,_,o,"Y")):p===i?gf(t,$f(0,t.w70_1.q71_1,t.w70_1.p71_1,u,l,a,l),c):bf(t,c,w)}}while(_!==r)}while(o!==i)})(this,c,f,v,d),function(t,n,i,e,r){var s=n*t.u70_1;if(t.w70_1.n71_1.i5z_1=l){var c=i*t.u70_1,f=e*t.u70_1,v=$f(0,t.w70_1.o71_1,t.w70_1.p71_1,c,l,f,l);mf(t,$f(0,t.w70_1.n71_1,t.w70_1.o71_1,c,l,f,l),v)}else if(t.w70_1.o71_1.i5z_1=l){var d=i*t.u70_1,w=e*t.u70_1;mf(t,$f(0,t.w70_1.q71_1,t.w70_1.p71_1,d,l,w,l),$f(0,t.w70_1.o71_1,t.w70_1.p71_1,d,l,w,l))}}(this,v,c,f,d)},Pr(Af).e6z=function(t,n){if(0===n||this.b6z_1.d1()&&this.c6z_1.d1())return Xr;for(var i=function(t,n){var i=n.b5b_1.i55_1*n.w5a_1/4,e=n.b5b_1.j55_1*n.w5a_1/4,r=n.x5a_1,s=null==r?n.r6i().v53_1:r,o=t.a6z_1.f6z(new H_(s.b54_1,s.c54_1,0)),u=G.v5y(o.b54_1,o.c54_1);return new Oo(u.h5z_1-e,u.i5z_1-i)}(this,t),e=i.oe(),r=i.pe(),s=this.b6z_1.d2().v();s.w();){var o=s.y();Of(this,t,o.h2(),n)?this.d6z_1.s(o.g2()):qf(this,"X",o.h2(),e,r)}Cf(this,"X");for(var u=this.c6z_1.d2().v();u.w();){var a=u.y();Of(this,t,a.h2(),n)?this.d6z_1.s(a.g2()):qf(this,"Y",a.h2(),e,r)}Cf(this,"Y")},Pr(Af).m6z=function(t){var n=function(t,n){return n.a72("label.name")}(0,t);if(null==n)return Xr;var i=n,e=function(t,n,i){var e=n.a72("label.scale.type");if(null==e)return null;var r,s=e;switch(i){case"X":r=n.a72("label.x");break;case"Y":r=n.a72("label.y");break;default:r=null}if(null==r)return null;var o=r,u=n.f6t_1.c54_1>=0?"E":"W";return o+(n.f6t_1.b54_1>=0?"N":"S")+u+s}(0,t,i);if(null==e)return Xr;var r=e;if("X"===i){var s=this.b6z_1;(ss(s,zo)?s:Nr()).l2(r)||this.b6z_1.e2(r,t)}else if("Y"===i){var o=this.c6z_1;(ss(o,zo)?o:Nr()).l2(r)||this.c6z_1.e2(r,t)}},Pr(Tf).t6r=function(t){Pr(Bc).t6r.call(this,t);for(var n=this.b6u().x6r(t),i=this.y6t_1.v();i.w();){var e=i.y();if(e.c6u(t)){if(e.h6w_1 instanceof Jb){var r=e.h6w_1;if(n.b54_1<72||!Ao("*32*34*36*","*"+r.d6t_1+"*")){var s=r.f6t_1;"GridElement_LatitudeLabel"===e.i6w_1?r.b72(new H_(s.b54_1,n.c54_1,s.f54_1)):"GridElement_LongitudeLabel"===e.i6w_1&&r.b72(new H_(n.b54_1,s.c54_1,s.f54_1))}}var o=this.b6u();af(),o.s6r(e.h6w_1,"Graticule.GK.Overview")}}},Pr(Tf).e6u=function(){Pr(Bc).e6u.call(this);var t=_s(),n=1;if(n<=60)do{var i=n;n=n+1|0;var e=6*i-180;t.b1(),t.s(B.g5x(-88,e,0)),t.s(B.g5x(-60,e,0)),t.s(B.g5x(-30,e,0)),t.s(B.g5x(0,e,0)),t.s(B.g5x(30,e,0)),t.s(B.g5x(60,e,0)),t.s(B.g5x(88,e,0));var r=this.b6u().y6r(oo(t),h$()),s=Y.k5x(-88,e,176,30),o=s;this.y6t_1.s(Qc(o,r,"GridElement_Line"));var u=this.b6u().x6s(B.g5x(0,e-3,0),i.toString(),1e7);u.e6t_1.v6u_1=!1;var a=s=Y.k5x(-90,e-3,180,0);this.y6t_1.s(Qc(a,u,"GridElement_LongitudeLabel"))}while(n<=60);var h=0;if(h<=45)do{var _=h;h=h+1|0;var l=4*_-92;if(0!==_||46!==_){var c=0;if(c<=3)do{var f=c;c=c+1|0,t.b1();var v=90*f-180;t.s(B.g5x(l,v,0)),t.s(B.g5x(l,v+30,0)),t.s(B.g5x(l,v+60,0)),3===f?t.s(B.g5x(l,180,0)):t.s(B.g5x(l,v+90,0));var d=this.b6u().y6r(To(t),_$()),w=Y.k5x(l,v,3,90);this.y6t_1.s(Qc(w,d,"GridElement_Line"))}while(c<=3)}var p=this.b6u().x6s(B.g5x(l+2,0,0),af().m6y_1[_],1e7);p.e6t_1.v6u_1=!1;var m=Y.k5x(l+2,-180,3,360);this.y6t_1.s(Qc(m,p,"GridElement_LatitudeLabel"))}while(h<=45)},Pr(Df).s73=function(){return this.r73_1},Pr(Df).q6r=function(){var t=new Wc,n=t,i=rb(0,255,0);n.e2("GraticuleLineColor",i);var e=t,r=rb(0,255,0);e.e2("LabelColor",r);var s=t,o=ES("arial",lb(),14);s.e2("LabelFont",o),this.r6r("Graticule.UTM.100000m",t);var u=t=new Wc,a=rb(0,102,255);u.e2("GraticuleLineColor",a);var h=t,_=rb(0,102,255);h.e2("LabelColor",_),this.r6r("Graticule.UTM.10000m",t);var l=t=new Wc,c=rb(0,255,255);l.e2("GraticuleLineColor",c);var f=t,v=rb(0,255,255);f.e2("LabelColor",v),this.r6r("Graticule.UTM.1000m",t);var d=t=new Wc,w=rb(0,153,153);d.e2("GraticuleLineColor",w);var p=t,m=rb(0,153,153);p.e2("LabelColor",m),this.r6r("Graticule.UTM.100m",t);var g=t=new Wc,b=rb(102,255,204);g.e2("GraticuleLineColor",b);var $=t,y=rb(102,255,204);$.e2("LabelColor",y),this.r6r("Graticule.UTM.10m",t);var k=t=new Wc,x=rb(153,153,255);k.e2("GraticuleLineColor",x);var S=t,E=rb(153,153,255);S.e2("LabelColor",E),this.r6r("Graticule.UTM.1m",t)},Pr(Df).w6r=function(t){return t>=1e5?"Graticule.UTM.100000m":t>=1e4?"Graticule.UTM.10000m":t>=1e3?"Graticule.UTM.1000m":t>=100?"Graticule.UTM.100m":t>=10?"Graticule.UTM.10m":"Graticule.UTM.1m"},Pr(Df).u6r=function(t){Pr(Vc).u6r.call(this,t),this.q73_1.b1(),this.q73_1.t73(t)},Pr(Df).t6r=function(t){this.q73_1.t6r(t)},Pr(Df).u73=function(t,n,i,e){this.q73_1.u73(t,n,i,e)},Pr(Df).v73=function(t,n,i,e){return t>0?function(t,n,i,e,r){var s=rt.z67(n,i,e,r);return new H_(Qh(s.w62_1),t_(s.x62_1),1e4)}(0,t,n,i,e):function(t,n,i,e){var r=et.z66(n,i,e);return new H_(Qh(r.c63_1),t_(r.d63_1),1e4)}(0,n,i,e)},Pr(Df).w73=function(t,n,i,e,r,s,o){for(var u=_s(),a=e/1e5,h=1e5*Math.floor(a),_=s/1e5,l=1e5*Math.floor(_),c=(r-h)/1e5,f=Math.ceil(c),v=ks(f),d=(o-l)/1e5,w=Math.ceil(d),p=ks(w),m=0,g=hs(Array(p),null);m1e6)return Xr;var r,s=this.t76_1;if(null==s){var o=this.p76_1?function(t){var n,i,e,r;wl().equals(t.r76_1)?(e=13e5,r=27e5,n="Y"===t.q76_1?13e5:2e6,i="Y"===t.q76_1?2e6:27e5):(e=8e5,r=32e5,n="A"===t.q76_1?8e5:2e6,i="A"===t.q76_1?2e6:32e5);for(var s=t.b6u().w73(t.s76_1,t.r76_1,t.r6e_1,n,i,e,r),o=s.v();o.w();)Ff(0,o.y());return s}(this):function(t){var n=rt.v5y(t.r6e_1.o5p_1,t.r6e_1.m5u()),i=n.b63_1,e=(n=rt.v5y(t.r6e_1.p5p_1,t.r6e_1.m5u())).b63_1;e=0===e?1e7:e;var r=(n=rt.v5y(t.r6e_1.o5p_1,t.r6e_1.q5p_1)).a63_1;n=rt.v5y(t.r6e_1.p5p_1,t.r6e_1.q5p_1);var s=1e6-(r=Io(n.a63_1,r));"32V"===t.q76_1&&(e+=2e4),"31X"===t.q76_1&&(s+=1e5);for(var o=t.b6u().w73(t.s76_1,t.r76_1,t.r6e_1,r,s,i,e),u=o.v();u.w();)Ff(0,u.y());return o}(this);this.t76_1=o,r=o}else r=s;for(var u=r.v();u.w();){var a=u.y();a.c6u(t)?a.t6r(t):a.f6u()}},Pr(Hf).f6u=function(){Pr(Bc).f6u.call(this);var t=this.t76_1;if(null==t);else for(var n=t.v();n.w();)n.y().f6u();this.t76_1=null},Pr(Hf).e6u=function(){Pr(Bc).e6u.call(this);var t=Co([new H_(this.r6e_1.o5p_1,this.r6e_1.q5p_1,1e4),new H_(this.r6e_1.p5p_1,this.r6e_1.q5p_1,1e4)]),n=this.b6u().y6r(To(t),_$()),i=new K_(this.r6e_1.o5p_1,this.r6e_1.p5p_1,this.r6e_1.q5p_1,this.r6e_1.q5p_1),e=i,r=n;if(this.y6t_1.s(Qc(e,r,"GridElement_LineWest")),!this.p76_1){if(So(this.q76_1,"60")){t.b1(),t.s(new H_(this.r6e_1.o5p_1,this.r6e_1.r5p_1,1e4)),t.s(new H_(this.r6e_1.p5p_1,this.r6e_1.r5p_1,1e4)),n=this.b6u().y6r(To(t),_$());var s=i=new K_(this.r6e_1.o5p_1,this.r6e_1.p5p_1,this.r6e_1.r5p_1,this.r6e_1.r5p_1),o=n;this.y6t_1.s(Qc(s,o,"GridElement_LineEast"))}t.b1(),t.s(new H_(this.r6e_1.o5p_1,this.r6e_1.q5p_1,1e4)),t.s(new H_(this.r6e_1.o5p_1,this.r6e_1.r5p_1,1e4)),n=this.b6u().y6r(To(t),_$());var u=i=new K_(this.r6e_1.o5p_1,this.r6e_1.o5p_1,this.r6e_1.q5p_1,this.r6e_1.r5p_1),a=n;if(this.y6t_1.s(Qc(u,a,"GridElement_LineSouth")),Do(this.q76_1,"X")){t.b1(),t.s(new H_(this.r6e_1.p5p_1,this.r6e_1.q5p_1,1e4)),t.s(new H_(this.r6e_1.p5p_1,this.r6e_1.r5p_1,1e4)),n=this.b6u().y6r(To(t),_$());var h=i=new K_(this.r6e_1.p5p_1,this.r6e_1.p5p_1,this.r6e_1.q5p_1,this.r6e_1.r5p_1),_=n;this.y6t_1.s(Qc(h,_,"GridElement_LineNorth"))}}var l=this.b6u().x6s(new H_(this.r6e_1.l5u(),this.r6e_1.m5u(),0),this.q76_1,1e7);this.y6t_1.s(Qc(this.r6e_1,l,"GridElement_GridZoneLabel"))},Pr(Yf).t6r=function(t){Pr(Bc).t6r.call(this,t);for(var n=this.b6u().x6r(t),i=this.y6t_1.v();i.w();){var e=i.y();if(e.c6u(t)){if(e.h6w_1 instanceof Jb){var r=e.h6w_1;if(n.b54_1<72||!Ao("*32*34*36*","*"+r.d6t_1+"*")){var s=r.f6t_1;"GridElement_LatitudeLabel"===e.i6w_1?s=new H_(s.b54_1,n.c54_1,s.f54_1):"GridElement_LongitudeLabel"===e.i6w_1&&(s=new H_(n.b54_1,s.c54_1,s.f54_1)),r.b72(s)}}var o=this.b6u(),u=this.b6u();o.s6r(e.h6w_1,u.w6r(1e6))}}},Pr(Yf).e6u=function(){Pr(Bc).e6u.call(this);var t=_s(),n=1;if(n<=60)do{var i=n;n=n+1|0;var e,r,s=6*i-180;t.b1(),t.s(B.g5x(-80,s,1e4)),t.s(B.g5x(-60,s,1e4)),t.s(B.g5x(-30,s,1e4)),t.s(B.g5x(0,s,1e4)),t.s(B.g5x(30,s,1e4)),s<6||s>36?(t.s(B.g5x(60,s,1e4)),e=84):(6===s?r=56:(t.s(B.g5x(60,s,1e4)),r=72),e=r);var o=e;t.s(B.g5x(o,s,1e4));var u=this.b6u().y6r(oo(t),h$()),a=Y.k5x(-80,s,o+80,0),h=a;this.y6t_1.s(Qc(h,u,"GridElement_Line"));var _=this.b6u().x6s(B.g5x(0,s-3,0),i.toString(),1e7),l=a=Y.k5x(-90,s-3,180,0);this.y6t_1.s(Qc(l,_,"GridElement_LongitudeLabel"))}while(n<=60);var c=0;if(c<=4)do{var f=c;c=c+1|0,t.b1();var v=Bf().m78_1[f][0],d=Bf().m78_1[f][1],w=Bf().m78_1[f][2];t.s(B.g5x(d,v,1e4)),t.s(B.g5x(w,v,1e4));var p=this.b6u().y6r(To(t),h$()),m=Y.k5x(d,v,w-d,0);this.y6t_1.s(Qc(m,p,"GridElement_Line"))}while(c<=4);var g=-80,b=0;if(b<=20)do{var $=b;b=b+1|0;var y=0;if(y<=3)do{var k=y;y=y+1|0,t.b1();var x=90*k-180;t.s(B.g5x(g,x,1e4)),t.s(B.g5x(g,x+30,1e4)),t.s(B.g5x(g,x+60,1e4)),t.s(B.g5x(g,x+90,1e4));var S=this.b6u().y6r(To(t),_$()),E=Y.k5x(g,x,0,90);this.y6t_1.s(Qc(E,S,"GridElement_Line"))}while(y<=3);if($<20){var C=this.b6u().x6s(B.g5x(g+4,0,0),Vs(Hs("CDEFGHJKLMNPQRSTUVWX",$)),1e7),q=Y.k5x(g+4,-180,0,360);this.y6t_1.s(Qc(q,C,"GridElement_LatitudeLabel"))}g+=g<72?8:12}while(b<=20)},Pr(Jf).y72=function(t){this.v72_1=t,this.b1()},Pr(Jf).t73=function(t){try{var n=t.x5a_1;if(null==n);else{var i,e=n.b54_1;i=-80<=e&&e<=84?rt.v5y(n.b54_1,n.c54_1).y62_1:0,this.w72_1=i}}catch(t){if(!(t instanceof $s))throw t;this.w72_1=0}},Pr(Jf).b1=function(){for(var t=this.v72_1,n=Dr(t),i=ks(n),e=0,r=hs(Array(i),null);ethis.v72_1)return Xr;var r=Gf(this),s=Dr(e),o=r[ks(s)-1|0];"GridElement_LineEasting"!==i.i6w_1&&"GridElement_LineEast"!==i.i6w_1&&"GridElement_LineWest"!==i.i6w_1?("GridElement_LineNorthing"===i.i6w_1||"GridElement_LineSouth"===i.i6w_1||"GridElement_LineNorth"===i.i6w_1)&&(n.equals(o.s78_1)?o.q78_1=Io(i.j6w_1,o.q78_1):n.equals(pl())&&(o.q78_1=i.j6w_1,o.s78_1=n),n.equals(o.t78_1)?o.r78_1=yo(i.j6w_1,o.r78_1):n.equals(wl())&&(o.r78_1=i.j6w_1,o.t78_1=n)):(o.o78_1=Io(i.j6w_1,o.o78_1),o.p78_1=yo(i.j6w_1,o.p78_1))},Pr(Jf).t6r=function(t){var n=t.x5a_1;if(null==n)return Xr;var i,e,r,s=n,o=t.b5b_1.i55_1*t.w5a_1*-.5/2,u=t.b5b_1.j55_1*t.w5a_1*-.5/2;if(this.w72_1>0){var a=rt.v5y(s.b54_1,s.c54_1);i=a.a63_1+o,e=a.b63_1+u,r=a.z62_1,e<0&&(e+=1e7,r=pl())}else{var h=et.v5y(s.b54_1,s.c54_1);i=h.f63_1+o,e=h.g63_1+u,r=h.e63_1}var _,l=t.f5b_1,c=0,f=Gf(this).length-1|0;if(c<=f)do{var v=c;c=c+1|0;var d=Gf(this)[v],w=Math.pow(10,v),p=10*w,m=this.t72_1.w6r(w);if(d.o78_1<=d.p78_1)for(var g=d.o78_1;g<=d.p78_1;){if(v===(Gf(this).length-1|0)||g%p!=0){var b=(_=this.t72_1.v73(this.w72_1,r,g,e)).b54_1,$=_.c54_1,y=this.t72_1.n6t(t,b,$);if(l.h5v(y)&&Kf(this,t,y)){var k=ks(g%this.u72_1/w).toString(),x=this.t72_1.x6s(new H_(b,$,0),k,p);x.e6t_1.v6u_1=!1,this.t72_1.s6r(x,m)}}g+=w}if(!d.t78_1.equals(pl())||0!==d.r78_1)for(var S=d.s78_1,E=d.q78_1;E<=d.r78_1||!S.equals(d.t78_1);){if(v===(Gf(this).length-1|0)||E%p!=0){var C=(_=this.t72_1.v73(this.w72_1,S,i,E)).b54_1,q=_.c54_1,O=this.t72_1.n6t(t,C,q);if(l.h5v(O)&&Kf(this,t,O)){var z=ks(E%this.u72_1/w).toString(),A=this.t72_1.x6s(new H_(C,q,0),z,p);A.e6t_1.v6u_1=!1,this.t72_1.s6r(A,m)}!S.equals(d.t78_1)&&E>=1e7-w&&(S=d.t78_1,E=-w)}E+=w}}while(c<=f)},Pr(Jf).toString=function(){var t=jo(),n=0;if(n<=4)do{var i=n;n=n+1|0,t.o5("level "),t.s7(i),t.o5(" : ");var e=Gf(this)[i];e.o78_1Tr(100,4)},Pr(Zf).t6r=function(t){Pr(iv).t6r.call(this,t);for(var n=this.b6u().w6r(this.o74_1/10),i=this.y6t_1.v();i.w();){var e=i.y();e.c6u(t)&&(this.b6u().u73(this.j74_1,this.k74_1,e,this.o74_1),this.b6u().s6r(e.h6w_1,n))}if(this.z79(t)<=Tr(Tr(100,4),2))return Xr;var r,s=this.y79_1;if(null==s){var o=function(t){var n=_s(),i=t.o74_1/10,e=0;if(e<=9)do{var r=e;e=e+1|0;var s=t.m74_1+i*r,o=0;if(o<=9)do{var u=o;o=o+1|0;var a=t.n74_1+i*u,h=new Zf(t.b6u(),t.j74_1,t.k74_1,t.l74_1,s,a,i);h.x74_1||n.s(h)}while(o<=9)}while(e<=9);return n}(this);this.y79_1=o,r=o}else r=s;for(var u=r.v();u.w();){var a=u.y();a.c6u(t)?a.t6r(t):a.f6u()}},Pr(Zf).f6u=function(){Pr(iv).f6u.call(this);var t=this.y79_1;if(null==t);else for(var n=t.v();n.w();)n.y().f6u();this.y79_1=null},Pr(Zf).e6u=function(){Pr(iv).e6u.call(this);var t=this.o74_1/10,n=_s(),i=1;if(i<=9)do{var e=i;i=i+1|0;var r=this.m74_1+t*e;n.b1();var s=this.b6u().v73(this.j74_1,this.k74_1,r,this.n74_1),o=this.b6u().v73(this.j74_1,this.k74_1,r,this.n74_1+this.o74_1);if(this.w74_1?this.b6u().o6t(s,o,this.l74_1,n):(n.s(s),n.s(o)),n.n()>0){s=n.h1(0),o=n.h1(1);var u=this.b6u().y6r(To(n),h$()),a=this.a7a(s,o),h=Uh().d5d(r);this.y6t_1.s(new nf(a,u,"GridElement_LineEasting",h))}}while(i<=9);var _=1;if(_<=9)do{var l=_;_=_+1|0;var c=this.n74_1+t*l;n.b1();var f=this.b6u().v73(this.j74_1,this.k74_1,this.m74_1,c),v=this.b6u().v73(this.j74_1,this.k74_1,this.m74_1+this.o74_1,c);if(this.w74_1?this.b6u().o6t(f,v,this.l74_1,n):(n.s(f),n.s(v)),n.n()>0){f=n.h1(0),v=n.h1(1);var d=this.b6u().y6r(To(n),h$()),w=this.a7a(f,v),p=Uh().d5d(c);this.y6t_1.s(new nf(w,d,"GridElement_LineNorthing",p))}}while(_<=9)},Pr(iv).b6u=function(){var t=Pr(Bc).b6u.call(this);return t instanceof Df?t:Nr()},Pr(iv).a7a=function(t,n){var i=t.b54_1,e=t.c54_1,r=t.b54_1,s=t.c54_1;return n.b54_1r&&(r=n.b54_1),n.c54_1s&&(s=n.c54_1),new K_(i,r,e,s)},Pr(iv).i78=function(t){return this.l74_1.p5x(t)},Pr(iv).z79=function(t){var n=this.b6u().n6t(t,this.v74_1.b54_1,this.v74_1.c54_1),i=t.a5b_1.n5c(n);return this.o74_1/t.u59(i)/t.r5a_1},Pr(sv).c6u=function(t){return!!Pr(iv).c6u.call(this,t)&&this.z79(t)>100},Pr(sv).t6r=function(t){Pr(iv).t6r.call(this,t);var n=this.b6u().w6r(this.o74_1),i=this.y6t_1.v();t:for(;i.w();){var e=i.y();if(e.c6u(t)){if("GridElement_LineNorth"===e.i6w_1&&ev(this,t))continue t;if("GridElement_LineEast"===e.i6w_1&&rv(this,t))continue t;this.b6u().s6r(e.h6w_1,n)}}if(this.z79(t)<=Tr(100,2))return Xr;var r,s=this.c76_1;if(null==s){var o=new Zf(this.b6u(),this.j74_1,this.k74_1,this.l74_1,this.m74_1,this.n74_1,this.o74_1);this.c76_1=o,r=o}else r=s;var u=r;u.c6u(t)?u.t6r(t):u.f6u()},Pr(sv).f6u=function(){Pr(iv).f6u.call(this);var t=this.c76_1;null==t||t.f6u(),this.c76_1=null},Pr(sv).e6u=function(){Pr(iv).e6u.call(this);var t=_s();if(this.w74_1?this.b6u().o6t(this.q74_1,this.s74_1,this.l74_1,t):(t.s(this.q74_1),t.s(this.s74_1)),t.n()>0){var n=t.h1(0),i=t.h1(1),e=this.b6u().y6r(To(t),h$()),r=this.a7a(n,i),s=Uh(),o=this.m74_1,u=s.d5d(o);this.y6t_1.s(new nf(r,e,"GridElement_LineWest",u))}if(t.b1(),this.w74_1?this.b6u().o6t(this.r74_1,this.t74_1,this.l74_1,t):(t.s(this.r74_1),t.s(this.t74_1)),t.n()>0){var a=t.h1(0),h=t.h1(1),_=this.b6u().y6r(To(t),h$()),l=this.a7a(a,h),c=Uh(),f=this.m74_1+this.o74_1,v=c.d5d(f);this.y6t_1.s(new nf(l,_,"GridElement_LineEast",v))}if(t.b1(),this.w74_1?this.b6u().o6t(this.q74_1,this.r74_1,this.l74_1,t):(t.s(this.q74_1),t.s(this.r74_1)),t.n()>0){var d=t.h1(0),w=t.h1(1),p=this.b6u().y6r(To(t),h$()),m=this.a7a(d,w),g=Uh(),b=this.n74_1,$=g.d5d(b);this.y6t_1.s(new nf(m,p,"GridElement_LineSouth",$))}if(t.b1(),this.w74_1?this.b6u().o6t(this.s74_1,this.t74_1,this.l74_1,t):(t.s(this.s74_1),t.s(this.t74_1)),t.n()>0){var y=t.h1(0),k=t.h1(1),x=this.b6u().y6r(To(t),h$()),S=this.a7a(y,k),E=Uh(),C=this.n74_1+this.o74_1,q=E.d5d(C);this.y6t_1.s(new nf(S,x,"GridElement_LineNorth",q))}var O=this.z75_1;if(null==O);else{var z=this.u74_1.s5p(),A=Lh(this.v74_1.b54_1);if(z*Math.cos(A)>.2&&this.u74_1.t5p()>.2){var T=0!==this.j74_1?this.v74_1:this.i78(new H_(this.p74_1.b54_1,this.p74_1.c54_1,0))?this.p74_1:this.p74_1.b54_1<=this.l74_1.p5p_1&&this.p74_1.b54_1>=this.l74_1.o5p_1?this.v74_1:null;if(null!=T){var I=this.b6u().x6s(new H_(T.b54_1,T.c54_1,0),O,10*this.o74_1),D=this.u74_1;this.y6t_1.s(Qc(D,I,"GridElement_GridZoneLabel"))}}}},Pr(ov).l6i=function(){return this.j7a_1},Pr(ov).m6i=function(){return this.k7a_1},Pr(ov).p6i=function(t){this.m7a_1&&t.r5s().u6f(this.n7a_1,this.o7a_1);var n,i=bs(oh),e=t.s5b_1.o2(i),r=null==e||ss(e,W$)?e:Nr();if(null==r){var s=new VS;t.s5b_1.e2(i,s),n=s}else n=r;var o=n,u=x.m5i(o),a=this.o7a_1,h=u.n5i_1,_=a.length;ps(a,h,0,0,_);for(var l=0,c=u.o5i_1,f=0,v=c.length;f0)){var s=kr.n54(kr.i54_1,"WmsLayerFactory","createLayer","missingServiceAddress");throw is(Gr(s))}if(this.z7n_1.d1()){var o=kr.n54(kr.i54_1,"WmsLayerFactory","createLayer","missingLayerNames");throw is(Gr(o))}if(this.c7o_1=this.a7o_1,null==this.c7o_1){if(this.zb_1=1,t=this.x7n_1,n=this.y7n_1,i=void 0,(i=new Wv(t,n,this)).bc_1=Xr,i.cc_1=null,(e=i.mc())===Js())return e;continue t}this.d7o_1=this.c7o_1,this.zb_1=2;continue t;case 1:this.d7o_1=e,this.zb_1=2;continue t;case 2:if(this.e7o_1=this.d7o_1,this.zb_1=3,(e=Pv(this.x7n_1,this.e7o_1,this))===Js())return e;continue t;case 3:var u=e.f7o(this.z7n_1);if(u.d1()){var a=kr.f5y("WmsLayerFactory","createLayer","Provided layer names did not match available layers");throw is(Gr(a))}return Lv(this.x7n_1,this.y7n_1,this.e7o_1,u,this.b7o_1);case 4:throw this.cc_1}}catch(t){var h=t;if(4===this.ac_1)throw h;this.zb_1=this.ac_1,this.cc_1=h}},Pr(Wv).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6,this.c7l_1=Ak(),this.d7l_1=!1,this.zb_1=1;continue t;case 1:this.ac_1=5,this.ac_1=4,this.f7l_1=this.c7l_1,this.g7l_1=su().z1t(this.b7l_1).n4w().p4v("VERSION","1.3.0").p4v("SERVICE","WMS").p4v("REQUEST","GetCapabilities").o1d(),this.h7l_1=this.f7l_1,this.i7l_1=Gr(this.g7l_1),this.j7l_1=this.h7l_1,this.k7l_1=this.j7l_1;var n=new au;if(hu(n,this.i7l_1),_u(n,!0),this.l7l_1=n,this.l7l_1.n28_1=lu().t1z_1,this.m7l_1=this.k7l_1,this.n7l_1=this.l7l_1,this.zb_1=2,(t=new cu(this.n7l_1,this.m7l_1).x2y(this))===Js())return t;continue t;case 2:if(this.o7l_1=t,this.zb_1=3,(t=fu(this.o7l_1,Yr,this))===Js())return t;continue t;case 3:this.e7l_1=t,this.ac_1=6,this.zb_1=7;continue t;case 4:if(this.ac_1=5,this.cc_1 instanceof Error){var i=this.cc_1;try{this.d7l_1=!0,this.c7l_1.z1i()}catch(t){if(!(t instanceof Error))throw t;vu(i,t)}throw i}throw this.cc_1;case 5:this.ac_1=6;var e=this.cc_1;throw this.d7l_1||this.c7l_1.z1i(),e;case 6:throw this.cc_1;case 7:var r=this.e7l_1;return this.ac_1=6,this.d7l_1||this.c7l_1.z1i(),r}}catch(t){var s=t;if(6===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},Pr(Gv).g7o=function(t,n,i,e,r){var s=new Yv(this,t,n,i,e,r);return s.bc_1=Xr,s.cc_1=null,s.mc()},Pr(Gv).h7o=function(t,n,i,e,r,s){return i=i===Yr?null:i,e=e===Yr?null:e,s===Yr?this.g7o(t,n,i,e,r):s.g7o.call(this,t,n,i,e,r)},Pr(Gv).o7m=function(t){var n=t.h1(0).p7l(),i=null==n?null:n.u7l(),e=null==i?null:i.y7l_1,r=null==e?null:e.q7l_1,s=null==r?null:r.j7o_1,o=null==s?null:s.n7o();if(null==o){var u=kr.f5y("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Unable to resolve GetMap URL");throw fs(Gr(u))}for(var a=o,h=null,_=t.v();_.w();){var l=_.y().o7o();null==h?h=pu(l):h.a1(wu(l))}var c=new Nv(a,Jr(t,",",Yr,Yr,Yr,Yr,Bv)),f=i.v7l_1;if("1.3.0"!==f){var v=kr.f5y("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Version not compatible");throw fs(Gr(v))}if(c.h7i_1=f,!0===(null==h?null:h.r("EPSG:4326")))c.j7i_1="EPSG:4326";else{if(!0!==(null==h?null:h.r("CRS:84"))){var d=kr.f5y("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Coordinate systems not compatible");throw fs(Gr(d))}c.j7i_1="CRS:84"}var w,p=i.y7l_1.q7l_1.j7o_1.l7o_1,m=c;t:{for(var g=this.m7m_1.v();g.w();){var b=g.y();if(p.r(b)){w=b;break t}}w=null}var $,y=w;if(null==y){var k=kr.f5y("WmsLayerFactory","getLayerConfigFromWmsCapabilities","Image Formats Not Compatible");throw fs(Gr(k))}$=y,m.k7i_1=$;var x,S=c;t:if(ss(t,rs)&&t.d1())x=!1;else{for(var E=t.v();E.w();)if(E.y().m7k_1){x=!0;break t}x=!1}return S.l7i_1=!x,c},Pr(Gv).p7m=function(t){for(var n=new F$,i=17976931348623157e292,e=Y_(),r=t.v();r.w();){var s=r.y(),o=s.p7o();null==o||(i=Io(i,o));var u=s.q7o();null==u||e.t5x(u)}if(e.n19()){var a=kr.f5y("WmsLayerFactory","getLevelSetConfigFromWmsCapabilities","Geographic Bounding Box Not Defined");throw fs(Gr(a))}n.r7o_1.h5q(e);var h,_=n;if(17976931348623157e292!==i){var l=28e-5*i/c_().w5u_1.y5u_1;h=n.y7o(l)}else h=20;return _.u7o_1=h,n},Pr(Jv).q6g=function(t,n,i,e){var r=new US(t,n,i,e),s=this.y7i(t,n.e6f_1,n.f6f_1),o=r,u=MS().m7e(s);return u.l7c_1=r,o.f7c_1=u,r},Pr(Jv).y7i=function(t,n,i){var e=su().z1t(this.p7i_1).n4w();if(!(n>=1&&i>=1)){var r=kr.n54(kr.i54_1,"WmsTileFactory","urlForTile","invalidWidthOrHeight");throw is(Gr(r))}e.p4v("VERSION",this.q7i_1),e.p4v("SERVICE","WMS"),e.p4v("REQUEST","GetMap"),e.p4v("LAYERS",this.r7i_1);var s=this.s7i_1;e.p4v("STYLES",null==s?"":s),e.p4v("WIDTH",n.toString()),e.p4v("HEIGHT",i.toString());var o=this.u7i_1;if(e.p4v("FORMAT",null==o?"image/png":o),e.p4v("TRANSPARENT",this.v7i_1?"TRUE":"FALSE"),"1.3.0"===this.q7i_1){e.p4v("CRS",this.t7i_1);var u="CRS:84"===this.t7i_1?t.q5p_1+","+t.o5p_1+","+t.r5p_1+","+t.p5p_1:t.o5p_1+","+t.q5p_1+","+t.p5p_1+","+t.r5p_1;e.p4v("BBOX",u)}else{e.p4v("SRS",this.t7i_1);var a=t.q5p_1+","+t.o5p_1+","+t.r5p_1+","+t.p5p_1;e.p4v("BBOX",a)}var h=this.w7i_1;return null==h||e.p4v("TIME",h),Gr(e.o1d())},Pr(ed).g7t=function(t,n){var i=this.w1g(t,n);return i.bc_1=Xr,i.cc_1=null,i.mc()},Pr(ed).zc=function(t,n){return this.g7t(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(ed).mc=function(){for(this.bc_1;;)try{var t=this.zb_1;if(0===t){this.ac_1=1;var n=ad().i7r_1,i=this.e7t_1,e=n.w37(),r=tu(e,Qo(bs(Ym),Zo([]),!1));return n.j3n(ss(r,nu)?r:Nr(),i)}if(1===t)throw this.cc_1}catch(t){throw t}},Pr(ed).w1g=function(t,n){var i=new ed(this.e7t_1,n);return i.f7t_1=t,i},Pr(sd).mc=function(){var t,n,i,e=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=4;var r=this.f7u_1;if(!(Eo(r)>0)){var s=kr.n54(kr.i54_1,"WmtsLayerFactory","createLayer","missingServiceAddress");throw is(Gr(s))}var o=this.g7u_1;if(!(Eo(o)>0)){var u=kr.n54(kr.i54_1,"WmtsLayerFactory","createLayer","missingLayerNames");throw is(Gr(u))}if(this.j7u_1=this.h7u_1,null==this.j7u_1){if(this.zb_1=1,t=this.e7u_1,n=this.f7u_1,i=void 0,(i=new od(t,n,this)).bc_1=Xr,i.cc_1=null,(e=i.mc())===Js())return e;continue t}this.k7u_1=this.j7u_1,this.zb_1=2;continue t;case 1:this.k7u_1=e,this.zb_1=2;continue t;case 2:if(this.l7u_1=this.k7u_1,this.zb_1=3,(e=Zv(this.e7u_1,this.l7u_1,this))===Js())return e;continue t;case 3:var a=e.m7u(this.g7u_1);n:do{if(null==a){var h=kr.f5y("WmtsLayerFactory","createLayer","Specified layer name was not found");throw is(Gr(h))}break n}while(0);return Qv(this.e7u_1,this.f7u_1,this.l7u_1,a,this.i7u_1);case 4:throw this.cc_1}}catch(t){var _=t;if(4===this.ac_1)throw _;this.zb_1=this.ac_1,this.cc_1=_}},Pr(od).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6,this.j7p_1=Ak(),this.k7p_1=!1,this.zb_1=1;continue t;case 1:this.ac_1=5,this.ac_1=4,this.m7p_1=this.j7p_1,this.n7p_1=su().z1t(this.i7p_1).n4w().p4v("VERSION","1.0.0").p4v("SERVICE","WMTS").p4v("REQUEST","GetCapabilities").o1d(),this.o7p_1=this.m7p_1,this.p7p_1=Gr(this.n7p_1),this.q7p_1=this.o7p_1,this.r7p_1=this.q7p_1;var n=new au;if(hu(n,this.p7p_1),_u(n,!0),this.s7p_1=n,this.s7p_1.n28_1=lu().t1z_1,this.t7p_1=this.r7p_1,this.u7p_1=this.s7p_1,this.zb_1=2,(t=new cu(this.u7p_1,this.t7p_1).x2y(this))===Js())return t;continue t;case 2:if(this.v7p_1=t,this.zb_1=3,(t=fu(this.v7p_1,Yr,this))===Js())return t;continue t;case 3:this.l7p_1=t,this.ac_1=6,this.zb_1=7;continue t;case 4:if(this.ac_1=5,this.cc_1 instanceof Error){var i=this.cc_1;try{this.k7p_1=!0,this.j7p_1.z1i()}catch(t){if(!(t instanceof Error))throw t;vu(i,t)}throw i}throw this.cc_1;case 5:this.ac_1=6;var e=this.cc_1;throw this.k7p_1||this.j7p_1.z1i(),e;case 6:throw this.cc_1;case 7:var r=this.l7p_1;return this.ac_1=6,this.k7p_1||this.j7p_1.z1i(),r}}catch(t){var s=t;if(6===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},Pr(ud).n7u=function(t,n,i,e,r){var s=new sd(this,t,n,i,e,r);return s.bc_1=Xr,s.cc_1=null,s.mc()},Pr(ud).o7u=function(t,n,i,e,r,s){return i=i===Yr?null:i,e=e===Yr?null:e,s===Yr?this.n7u(t,n,i,e,r):s.n7u.call(this,t,n,i,e,r)},Pr(_d).q6g=function(t,n,i,e){var r=new US(t,n,i,e),s=this.x7u(n.a6f_1,i,e);if(null==s);else{var o=r,u=MS().m7e(s);u.l7c_1=r,o.f7c_1=u}return r},Pr(_d).x7u=function(t,n,i){if(t>=this.t7u_1.n())return kr.n54(kr.j54_1,"WmtsTileFactory","urlForTile","invalid level for tileMatrixIdentifiers: "+t),null;var e=((this.u7u_1<this.v6f()[1]&&zs(this.v6f(),0)},Pr(ub).c5i=function(t,n,i,e){return this.z51_1=t,this.a52_1=n,this.b52_1=i,this.c52_1=e,this},Pr(ub).f5i=function(t){return this.c5i(t.z51_1,t.a52_1,t.b52_1,t.c52_1)},Pr(ub).t6u=function(t){var n,i,e=ru(ru(this.z51_1,this.a52_1),this.b52_1),r=e-iu(iu(this.z51_1,this.a52_1),this.b52_1);if(0===r)n=0,i=0;else{i=r/e;var s=(e-this.z51_1)/6/r+.5,o=(e-this.a52_1)/6/r+.5,u=(e-this.b52_1)/6/r+.5;(n=this.z51_1===e?u-o:this.a52_1===e?.3333333333333333+s-u:this.b52_1===e?.6666666666666666+o-s:0)<0?n+=1:n>1&&(n-=1)}t[0]=360*n,t[1]=i,t[2]=e},Pr(ub).a83=function(t,n){var i=n;if(!((t.length-i|0)>=4)){var e=kr.n54(kr.i54_1,"Color","premultiplyToArray","missingArray");throw is(Gr(e))}var r=i;i=r+1|0,t[r]=this.z51_1*this.c52_1;var s=i;i=s+1|0,t[s]=this.a52_1*this.c52_1;var o=i;return i=o+1|0,t[o]=this.b52_1*this.c52_1,t[i]=this.c52_1,t},Pr(ub).equals=function(t){return this===t||t instanceof ub&&this.z51_1===t.z51_1&&this.a52_1===t.a52_1&&this.b52_1===t.b52_1&&this.c52_1===t.c52_1},Pr(ub).hashCode=function(){var t=Es(this.z51_1);return t=Tr(31,t)+Es(this.a52_1)|0,t=Tr(31,t)+Es(this.b52_1)|0,Tr(31,t)+Es(this.c52_1)|0},Pr(ub).toString=function(){return"Color(red="+this.z51_1+", green="+this.a52_1+", blue="+this.b52_1+", alpha="+this.c52_1+")"},Pr(ub).b83=function(){var t=255*this.z51_1,n=Wr(t),i=255*this.a52_1,e=Wr(i),r=255*this.b52_1;return"rgba("+n+", "+e+", "+Wr(r)+", "+this.c52_1+")"},Pr(cb).k5n=function(t){return this.q5f_1.e83()||this.c83(t),this.q5f_1.e83()&&t.i5g(this.q5f_1),this.q5f_1.e83()},Pr(cb).s5f=function(t,n,i){return this.q5f_1.e83()||this.c83(t),this.q5f_1.e83()&&(this.f83(t,n,i),this.r5f_1.e2(i,n)),this.q5f_1.e83()},Pr(cb).l5n=function(t){var n=this.r5f_1.o2(t);if(null==n)throw fs(Gr("Invalid attachment type"));return n},Pr(cb).c83=function(t){var n=t.a5f();try{this.q5f_1=t.m55_1.g83(),t.m55_1.j5g(sx(),this.q5f_1)}finally{t.m55_1.j5g(sx(),n)}},Pr(cb).f83=function(t,n,i){var e=t.a5f();try{t.i5g(this.q5f_1);var r=null==n?null:n.h83(t),s=null==r?rE().t5e_1:r;t.m55_1.i83(sx(),i,ox(),s,0)}finally{t.i5g(e)}},Pr(vb).toString=function(){return"TextCacheKey(text="+this.k83_1+", attributes="+this.l83_1+")"},Pr(vb).hashCode=function(){var t=null==this.k83_1?0:Ys(this.k83_1);return Tr(t,31)+(null==this.l83_1?0:this.l83_1.hashCode())|0},Pr(vb).equals=function(t){if(this===t)return!0;if(!(t instanceof vb))return!1;var n=t instanceof vb?t:Nr();return this.k83_1==n.k83_1&&!!Ss(this.l83_1,n.l83_1)},Pr(wb).y5r=function(){var t=this.k5a_1;if(null!=t)return t;Gs("globe")},Pr(wb).o5s=function(){var t=this.l5a_1;if(null!=t)return t;Gs("terrainTessellator")},Pr(wb).r5s=function(){var t=this.m5a_1;if(null!=t)return t;Gs("terrain")},Pr(wb).t5s=function(){var t=this.n5a_1;if(null!=t)return t;Gs("layers")},Pr(wb).l85=function(){var t=this.o5a_1;if(null!=t)return t;Gs("currentLayer")},Pr(wb).r6i=function(){var t=this.p5a_1;if(null!=t)return t;Gs("camera")},Pr(wb).x5s=function(){var t=this.q5a_1;if(null!=t)return t;Gs("renderResourceCache")},Pr(wb).m85=function(){var t=this.w5b_1;return po("tessellator",1,wo,(function(t){return t.m85()}),null),t.h2()},Pr(wb).r1h=function(){this.r5a_1=1,this.s5a_1=1,this.t5a_1=0,this.u5a_1=0,this.v5a_1=0,this.w5a_1=0,this.x5a_1=null,this.y5a_1=null,this.z5a_1=new Hr(0,0),this.a5b_1.u5f(0,0,0),this.b5b_1.k55(),this.c5b_1.v5f(),this.d5b_1.v5f(),this.e5b_1.v5f(),this.f5b_1.c5v(),this.g5b_1=null,this.h5b_1=null,this.i5b_1=null,this.j5b_1=null,this.k5b_1=null,this.l5b_1=null,this.m5b_1=null,this.n5b_1=!1,this.p5b_1=0,this.o5b_1=!1,this.q5b_1=0,this.r5b_1.b1()},Pr(wb).u59=function(t){if(0===this.q5b_1){var n=.5*Lh(this.r6i().a54_1),i=Math.tan(n);this.q5b_1=2*i/this.b5b_1.j55_1}return t*this.q5b_1},Pr(wb).n85=function(t,n,i){var e=t.g57_1,r=t.h57_1,s=t.k57_1,o=this.d5b_1.a57_1,u=o[0]*e+o[1]*r+o[2]*s+o[3],a=o[4]*e+o[5]*r+o[6]*s+o[7],h=o[8]*e+o[9]*r+o[10]*s+o[11],_=o[12]*e+o[13]*r+o[14]*s+o[15],l=this.c5b_1.a57_1,c=l[0]*u+l[1]*a+l[2]*h+l[3]*_,f=l[4]*u+l[5]*a+l[6]*h+l[7]*_,v=l[8]*u+l[9]*a+l[10]*h+l[11]*_,d=l[12]*u+l[13]*a+l[14]*h+l[15]*_;return 0!==d&&(c/=d,f/=d,!((v/=d)<-1||v>1||(v=l[8]*u+l[9]*a+l[10]*h*(1+n)+l[11]*_,f=.5*f+.5,v=.5*(v=us(v/=d,-1,1))+.5,c=(c=.5*c+.5)*this.b5b_1.i55_1+this.b5b_1.g55_1,f=f*this.b5b_1.j55_1+this.b5b_1.h55_1,i.g57_1=c,i.h57_1=f,i.k57_1=v,0)))},Pr(wb).o85=function(t,n,i){return this.p85(t.b54_1,t.c54_1,t.f54_1,n,i)},Pr(wb).p85=function(t,n,i,e,r){switch(e.v9_1){case 0:this.y5r().t57(t,n,i*this.s5a_1,r);break;case 1:if(!this.r5s().q6e(t,n,r)){var s=this.y5r(),o=s.d58(t,n);s.t57(t,n,o*this.s5a_1,r)}break;case 2:if(this.r5s().q6e(t,n,r))0!==i&&(this.y5r().f58(t,n,this.v5b_1),r.q5y(this.v5b_1.j5u(i)));else{var u=this.y5r(),a=i+u.d58(t,n);u.t57(t,n,a*this.s5a_1,r)}}return r},Pr(wb).q85=function(t,n,i){var e=this.x5s(),r=e.o2(t),s=null==r?i?e.r85(t,n):null:r;return null==s||s instanceof gb?s:Nr()},Pr(wb).j6o=function(t,n,i,e){return i=i===Yr||i,e===Yr?this.q85(t,n,i):e.q85.call(this,t,n,i)},Pr(wb).s85=function(t,n,i){var e=this.x5s();this.u5b_1.k83_1=t,this.u5b_1.l83_1=n;var r,s=e.o2(this.u5b_1),o=null==s||s instanceof gb?s:Nr();if(null==o){var u;if(i){var a,h=this.t5b_1.v85(t,n);null==h?a=null:(e.f5t(new vb(t,S$(n)),h,h.w85()),a=h),u=a}else u=null;r=u}else r=o;return r},Pr(wb).b7h=function(t){var n=this.g5b_1;null==n||n.i5l(t,eh(),0)},Pr(wb).g5t=function(t,n){var i=this.g5b_1;null==i||i.i5l(t,rh(),n)},Pr(wb).x85=function(t,n){var i=this.g5b_1;null==i||i.i5l(t,(nh(),y),-n)},Pr(wb).m6h=function(t,n){var i=this.h5b_1;null==i||i.i5l(t,rh(),n)},Pr(wb).j5l=function(){var t=this.g5b_1;null==t||t.j5l();var n=this.h5b_1;null==n||n.j5l()},Pr(wb).y85=function(){var t=this.g5b_1,n=null==t?null:t.n52();return null==n?0:n},Pr(wb).q52=function(t){var n=this.i5b_1;null==n||n.q52(t)},Pr(wb).w5s=function(){return this.p5b_1=this.p5b_1+1|0,this.p5b_1>16777215&&(this.p5b_1=1),this.p5b_1},Pr(mb).z85=function(t,n,i,e,r){if(!(t>=0&&n>=0)){var s=kr.n54(kr.i54_1,"Texture","estimateByteCount","invalidWidthOrHeight");throw is(Gr(s))}var o=mx(t),u=e===ix()?i===Be||i===Ye?o:i===We?Tr(o,2):i===Ge?Tr(o,3):(nx(),Tr(o,4)):e===Fk()||e===Ke||e===Xe||e===Je?Tr(o,2):(Vk(),Tr(o,4)),a=mx(n),h=Tr(u,a);return r&&(h=h+(h/3|0)|0),h},Pr(gb).w85=function(){return fi.z85(this.f5f_1,this.g5f_1,this.h5f_1,this.i5f_1,this.a86())},Pr(gb).a86=function(){return this.n5f_1},Pr(gb).b86=function(t){var n=this.m5f_1,i=null==n?null:n.o2(t);return null==i?0:i},Pr(gb).p5f=function(t,n){var i,e=this.m5f_1;if(null==e){var r=Kr();this.m5f_1=r,i=r}else i=e;i.e2(t,n)},Pr(gb).h83=function(t){return this.l5f_1.e83()||this.c86(t),this.l5f_1},Pr(gb).z5l=function(t){return this.l5f_1.e83()||this.c86(t),this.l5f_1.e83()&&t.n5g(this.l5f_1),this.l5f_1.e83()&&this.o5f_1!==t.y55_1&&(this.e86(t),this.o5f_1=t.y55_1),this.l5f_1.e83()},Pr(gb).c86=function(t){var n=t.c5f();try{this.l5f_1=t.m55_1.f86(),t.m55_1.o5g(ox(),this.l5f_1),this.g86(t),this.e86(t)}finally{t.m55_1.o5g(ox(),n)}},Pr(gb).g86=function(t){this.j5f_1&t.m55_1.i86()&&t.m55_1.h86(ox(),0,this.h5f_1,1,1,0,this.h5f_1,this.i5f_1,null),t.m55_1.h86(ox(),0,this.h5f_1,this.f5f_1,this.g5f_1,0,this.h5f_1,this.i5f_1,null)},Pr(gb).e86=function(t){var n;if(t.y55_1)t.m55_1.j86(ox(),Yk(),Wk());else{var i=this.b86(Yk());n=i,0!==i?t.m55_1.j86(ox(),Yk(),n):t.m55_1.j86(ox(),Yk(),this.a86()?Ze:lx())}if(t.y55_1)t.m55_1.j86(ox(),Gk(),Wk());else{var e=this.b86(Gk());n=e,0!==e?t.m55_1.j86(ox(),Gk(),n):t.m55_1.j86(ox(),Gk(),lx())}var r=this.b86(Kk());n=r,0!==r?t.m55_1.j86(ox(),Kk(),n):t.m55_1.j86(ox(),Kk(),cx());var s=this.b86(Jk());n=s,0!==s?t.m55_1.j86(ox(),Jk(),n):t.m55_1.j86(ox(),Jk(),cx())},Pr(bb).c5e=function(t){return this.h5m_1.e83()&&t.q5g(this.e5m_1,this.h5m_1),this.h5m_1.e83()},Pr(bb).l86=function(t){var n=t.p5g(this.e5m_1);try{this.h5m_1.e83()||this.m86(t),t.q5g(this.e5m_1,this.h5m_1),this.n86(t)}catch(n){if(!(n instanceof $s))throw n;var i=n;this.o86(t),kr.k5t(kr.i54_1,"BufferObject","loadBuffer","Exception attempting to load buffer data",i)}finally{t.q5g(this.e5m_1,n)}},Pr(bb).m86=function(t){this.h5m_1=t.m55_1.p86()},Pr(bb).o86=function(t){this.h5m_1.e83()&&(t.m55_1.q86(this.h5m_1),this.h5m_1=nE().u5e_1)},Pr(kb).r1h=function(){this.b5g_1=0,this.c5g_1=0},Pr(kb).q56=function(){this.r1h(),cs(this.a5g_1,nE().u5e_1)},Pr(kb).s5g=function(t,n){var i=n.length;return this.y5f_1t.y5f_1)return-1;n.m55_1.s86(t.w5f_1,t.c5g_1,r,i);var s=t.c5g_1;return t.c5g_1=t.c5g_1+r|0,s}(this,t,n)):-1},Pr(xb).c5e=function(t){return null==this.b5e_1||this.l86(t),this.b5e_1=null,Pr(bb).c5e.call(this,t)},Pr(xb).n86=function(t){var n=this.b5e_1;null==n||t.m55_1.r86(this.e5m_1,this.f5m_1,n,_x())},Pr(Sb).c5e=function(t){return null==this.z86_1||this.l86(t),this.z86_1=null,Pr(bb).c5e.call(this,t)},Pr(Sb).n86=function(t){var n=this.z86_1;null==n||t.m55_1.a87(this.e5m_1,this.f5m_1,n,_x())},Pr(Eb).c5e=function(t){return null==this.l5e_1||this.l86(t),this.l5e_1=null,Pr(bb).c5e.call(this,t)},Pr(Eb).n86=function(t){var n=this.l5e_1;null==n||t.m55_1.b87(this.e5m_1,this.f5m_1,n,_x())},Pr(Rb).e6m=function(){var t=this.t5i_1;if(null!=t)return t;Gs("gl")},Pr(Rb).e5t=function(){for(var t=0,n=this.t6m(),i=0,e=n.length;i0&&_<=l||c<0&&l<=_)do{var f=_;_=_+c|0;var v=n[f]-s,d=n[f+1|0]-o,w=n[f+2|0]-u,p=v*v+d*d+w*w;a>p&&(a=p)}while(f!==l);var m=a;return Math.sqrt(m)},Pr(Hb).k88=function(t,n,i){var e=i.v5f();return e.b5w(1/(t.f5f_1*n),1/(t.g5f_1*n)),e.d5w(t.k5f_1),e},Pr(Hb).o6g=function(t){Ss(t.y5a_1,this.o6s_1)||(this.r1h(),this.o6s_1=t.y5a_1)},Pr(Hb).r1h=function(){this.s6s_1.f5u(),this.r6s_1.k55()},Pr(Vb).v88=function(t){var n=_s(),i=fo(t),e=this.w88(t);n.s(0),n.s(1);var r=2;if(r(t/2|0))i=Pu(i-1),n.s(i);else{var o=i;i=Pu(o+1),n.s(o)}s===(t/2|0)&&n.s(fo(s)),n.s(fo(s))}while(rthis.v89_1,s=r?90:0,o=2*as()/this.z89_1,u=t.y5r().v59(),a=t.y5r().c69(),h=Math.max(u,a);r?(i=this.u89_1/h,e=this.v89_1/h):(i=this.v89_1/h,e=this.u89_1/h);var _=Tr(Bb().w88(this.z89_1),6),l=0,c=new Float64Array(n),f=0,v=this.z89_1;if(f0&&d<(this.z89_1/2|0)){var E=l;l=E+1|0,c[E]=p}}while(f=this.y89_1)return n;var i=t.o85(this.t89_1,this.f6s_1,Bb().u88_1),e=this.u89_1,r=this.v89_1,s=Math.max(e,r),o=i.n5c(t.a5b_1)-s;if(o<=0)return this.y89_1;var u=t.u59(o),a=this.t8a()/u/this.x89_1/n,h=Math.log(a)/Math.log(2),_=Math.ceil(h),l=Fu(ks(_),0);return $o(n<<=l,this.y89_1)},Pr(Yb).q8a=function(t){return 0==(t%2|0)?t:t-1|0},Pr(Yb).t8a=function(){var t=this.u89_1,n=this.v89_1,i=(3*t+n)*(t+3*n);return as()*(3*(t+n)-Math.sqrt(i))},Pr(Yb).r1h=function(){Pr(Hb).r1h.call(this),this.a8a_1=new Float32Array(0)},Pr(Jb).b72=function(t){this.f6t_1.u57(t)},Pr(Jb).v6s=function(t){this.g6t_1=t},Pr(Jb).e8b=function(){return this.g6t_1},Pr(Jb).c88=function(t){this.j6t_1=t},Pr(Jb).d88=function(){return this.j6t_1},Pr(Jb).e88=function(){var t=this.l6t_1;if(null!=t)return t;Gs("activeAttributes")},Pr(Jb).f8b=function(){return this.f6t_1},Pr(Jb).g8b=function(t,n){this.b72(n)},Pr(Jb).p6i=function(t){var n=this.d6t_1;if(!1!==(null==n?null:0===Eo(n)))return Xr;var i=t.y5r().d69();if(!1===(null==i?null:i.p5x(this.f6t_1)))return Xr;var e=t.y5r().e58()?Rh():this.e8b();t.o85(this.f6t_1,e,Kb().v8a_1.w8a_1),Kb().v8a_1.d8b_1=this.m6t_1?0:t.y5r().e58()?t.v5a_1:t.a5b_1.n5c(Kb().v8a_1.w8a_1);var r=0;if(Kb().v8a_1.d8b_10)}else n=!1;return n},Pr(f$).o8f=function(t){return!(!this.e88().f8e_1||!this.b8f_1&&t.n5b_1||this.e8b().equals(Rh())||t.y5r().e58())},Pr(d$).t8f=function(t){var n=v$();return n.b8e_1=t,n},Pr(d$).u8f=function(t){var n=v$();return n.b8e_1=t,n.f8e_1=!0,n},Pr(w$).l8e=function(t){this.h8e_1.f5i(t)},Pr(w$).v8f=function(t){this.i8e_1.a5x(t)},Pr(w$).equals=function(t){return this===t||t instanceof w$&&!!Ss(this.b8e_1,t.b8e_1)&&!!this.h8e_1.equals(t.h8e_1)&&!!this.i8e_1.equals(t.i8e_1)&&this.c8e_1===t.c8e_1&&this.d8e_1===t.d8e_1&&this.e8e_1===t.e8e_1&&this.f8e_1===t.f8e_1&&this.g8e_1===t.g8e_1&&!!this.j8e_1.equals(t.j8e_1)&&!!this.k8e_1.equals(t.k8e_1)},Pr(w$).hashCode=function(){var t=this.b8e_1,n=null==t?null:t.hashCode(),i=null==n?0:n;return i=Tr(31,i)+this.h8e_1.hashCode()|0,i=Tr(31,i)+this.i8e_1.hashCode()|0,i=Tr(31,i)+Es(this.c8e_1)|0,i=Tr(31,i)+Es(this.d8e_1)|0,i=Tr(31,i)+zu(this.e8e_1)|0,i=Tr(31,i)+zu(this.f8e_1)|0,i=Tr(31,i)+zu(this.g8e_1)|0,i=Tr(31,i)+this.j8e_1.hashCode()|0,Tr(31,i)+this.k8e_1.hashCode()|0},Pr(p$).u7g=function(){return new Object},Pr(g$).d8g=function(t,n,i,e,r){return this.c8g_1.x8h(r instanceof wb?r:Nr(),t,n,i,e)},Pr(g$).y8h=function(t,n){return this.c8g_1.z8h(n instanceof wb?n:Nr(),t)},Pr(g$).a8i=function(t,n){return this.c8g_1.b8i(n instanceof wb?n:Nr(),t)},Pr(g$).c8i=function(t,n){return this.c8g_1.d8i(n instanceof wb?n:Nr(),t)},Pr(b$).m8i=function(t){return this.r1h(),this.z8g_1.s(t)},Pr(b$).r1h=function(){Pr(Hb).r1h.call(this),this.a8h_1=new Float32Array(0),this.c8h_1.b1(),this.d8h_1.b1(),this.e8h_1.b1(),this.f8h_1.b1()},Pr(b$).h88=function(t){if(this.z8g_1.d1())return Xr;var n,i;if(this.m8a(t)&&(this.l8a(t),this.g8h_1=m$().u7g(),this.h8h_1=m$().u7g()),this.n6s_1){var e,r=bs(Sh),s=t.s5b_1.o2(r),o=null==s||ss(s,W$)?s:Nr();if(null==o){var u=new VS;t.s5b_1.e2(r,u),e=u}else e=o;var a=e;i=(n=A.c5p(a)).f5p_1,this.j8h_1=this.i88(t,this.r6s_1),n.d5p_1=t.y5r().c55_1,n.e5p_1.h5q(this.r6s_1)}else{var h,_=bs(ph),l=t.s5b_1.o2(_),c=null==l||ss(l,W$)?l:Nr();if(null==c){var f=new VS;t.s5b_1.e2(_,f),h=f}else h=c;var v=h;i=(n=C.a5m(v)).b5m_1,this.j8h_1=this.j88(t,this.a8h_1,this.b8h_1,6,this.i8h_1)}var d,w=i,p=bs(Pb),m=t.x5s(),g=m.o2(p);if(null==g){var b=new Pb;m.f5t(p,b,b.e5t()),d=b}else d=g;var $=d;w.l5h_1=$ instanceof Pb?$:Nr();var y,k=i,x=this.g8h_1,S=t.x5s(),E=S.o2(x);if(null==E){var q=new xb(Rk(),this.a8h_1,this.b8h_1);S.f5t(x,q,q.f5m_1),y=q}else y=E;var O=y;k.m5h_1=O instanceof xb?O:Nr();var z,T=i,I=this.h8h_1,D=t.x5s(),j=D.o2(I);if(null==j){var M=new Sb(Pk(),Uu(Iu(Iu(Iu(this.c8h_1,this.d8h_1),this.e8h_1),this.f8h_1)));D.f5t(I,M,M.f5m_1),z=M}else z=j;var N=z;T.n5h_1=N instanceof Sb?N:Nr(),this.n6s_1||this.e88().p6v_1.c52_1>=1?(this.o8a(t,i),this.n8a(t,i)):(this.n8a(t,i),this.o8a(t,i)),i.o5h_1.m5c(this.i8h_1),i.p5h_1=24,i.q5h_1=this.h6s_1,i.r5h_1=this.e88().j6v_1,i.s5h_1=this.e88().k6v_1,this.n6s_1?t.g5t(n,0):t.x85(n,this.j8h_1)},Pr(b$).o8a=function(t,n){if(!this.e88().g6v_1)return Xr;var i,e=this.e88().n6v_1;if(null==e)i=null;else{var r,s=t.j6o(e,m$().x8f_1);if(null==s)r=null;else{var o=t.u59(this.j8h_1);this.k88(s,o,this.p8h_1),n.i5i(s),r=n.j5i(this.p8h_1)}i=r}if(null==i&&n.i5i(null),n.e5i(t.n5b_1?this.q6s_1:this.e88().p6v_1),n.g5i(t.n5b_1?1:t.l85().m6i()),n.l5i(2,12),n.o5e(Bk(),this.c8h_1.n(),Vk(),0),this.h6s_1){n.i5i(null);var u=Bk(),a=this.d8h_1.n(),h=Vk(),_=this.c8h_1.n();n.o5e(u,a,h,Tr(_,4))}},Pr(b$).n8a=function(t,n){if(!this.e88().h6v_1)return Xr;var i,e=this.e88().o6v_1;if(null==e)i=null;else{var r,s=t.j6o(e,m$().y8f_1);if(null==s)r=null;else{var o=t.u59(this.j8h_1);this.k88(s,o,this.p8h_1),n.i5i(s),r=n.j5i(this.p8h_1)}i=r}null==i&&n.i5i(null),n.e5i(t.n5b_1?this.q6s_1:this.e88().q6v_1),n.g5i(t.n5b_1?1:t.l85().m6i()),n.h5i(this.e88().m6v_1),n.l5i(1,20);var u=Hk(),a=this.e8h_1.n(),h=Vk(),_=this.c8h_1.n()+this.d8h_1.n()|0;if(n.o5e(u,a,h,Tr(_,4)),this.e88().i6v_1&&this.h6s_1){n.e5i(t.n5b_1?this.q6s_1:this.e88().q6v_1),n.g5i(t.n5b_1?1:t.l85().m6i()),n.h5i(this.e88().m6v_1),n.i5i(null);var l=Hk(),c=this.f8h_1.n(),f=Vk(),v=(this.c8h_1.n()+this.d8h_1.n()|0)+this.e8h_1.n()|0;n.o5e(l,c,f,Tr(v,4))}},Pr(b$).m8a=function(t){return 0===this.a8h_1.length},Pr(b$).l8a=function(t){for(var n=this.l6s_1<=0||this.g6s_1.equals(_$()),i=0,e=this.z8g_1.v();e.w();){var r=e.y();i=i+(n?r.n():!r.d1()&&r.h1(0).equals(r.h1(r.n()-1|0))?r.n()+Tr(r.n()-1|0,this.l6s_1)|0:r.n()+Tr(r.n(),this.l6s_1)|0)|0}var s=i;this.b8h_1=0,this.a8h_1=this.h6s_1&&!this.n6s_1?new Float32Array(Tr(Tr(s,2),6)):this.n6s_1?new Float32Array(Tr(s+this.z8g_1.n()|0,6)):new Float32Array(Tr(s,6)),this.c8h_1.b1(),this.d8h_1.b1(),this.e8h_1.b1(),this.f8h_1.b1(),this.r8a(t);var o=t.m85();Ki.n8i(o,0,0,1),Ki.o8i(o,100111,this.l8h_1),Ki.o8i(o,100107,this.l8h_1),Ki.o8i(o,100110,this.l8h_1),Ki.o8i(o,100109,this.l8h_1),Ki.p8i(o,t);var u=0,a=this.z8g_1.n()-1|0;if(u<=a)do{var h=u;u=u+1|0;var _=this.z8g_1.h1(h);if(!_.d1()){Ki.q8i(o);var l=_.h1(0);this.r8i(t,l.b54_1,l.c54_1,l.f54_1,0);var c=1,f=_.n();if(c>1,12),i=new Float32Array(t+n|0),e=this.a8h_1,r=e.length;ps(e,i,0,0,r),this.a8h_1=i}},Pr(y$).x8i=function(t){this.p6v_1.f5i(t)},Pr(y$).d6v=function(t){this.q6v_1.f5i(t)},Pr(y$).y8i=function(t){return this.g6v_1=t.g6v_1,this.h6v_1=t.h6v_1,this.i6v_1=t.i6v_1,this.j6v_1=t.j6v_1,this.k6v_1=t.k6v_1,this.l6v_1=t.l6v_1,this.p6v_1.f5i(t.p6v_1),this.q6v_1.f5i(t.q6v_1),this.m6v_1=t.m6v_1,this.n6v_1=t.n6v_1,this.o6v_1=t.o6v_1,this},Pr(y$).equals=function(t){return this===t||t instanceof y$&&this.g6v_1===t.g6v_1&&this.h6v_1===t.h6v_1&&this.i6v_1===t.i6v_1&&this.j6v_1===t.j6v_1&&this.k6v_1===t.k6v_1&&this.l6v_1===t.l6v_1&&!!this.p6v_1.equals(t.p6v_1)&&!!this.q6v_1.equals(t.q6v_1)&&this.m6v_1===t.m6v_1&&!!Ss(this.n6v_1,t.n6v_1)&&!!Ss(this.o6v_1,t.o6v_1)},Pr(y$).hashCode=function(){var t=zu(this.g6v_1);t=Tr(31,t)+zu(this.h6v_1)|0,t=Tr(31,t)+zu(this.i6v_1)|0,t=Tr(31,t)+zu(this.j6v_1)|0,t=Tr(31,t)+zu(this.k6v_1)|0,t=Tr(31,t)+zu(this.l6v_1)|0,t=Tr(31,t)+this.p6v_1.hashCode()|0,t=Tr(31,t)+this.q6v_1.hashCode()|0,t=Tr(31,t)+Es(this.m6v_1)|0;var n=Tr(31,t),i=this.n6v_1,e=null==i?null:i.hashCode(),r=Tr(31,t=n+(null==e?0:e)|0),s=this.o6v_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},Pr(k$).p6i=function(t){if(this.k6k_1.h5q(this.t82_1),this.k6k_1.n19()||!this.k6k_1.n5x(t.r5s().s5d())||!this.d6i(t).n5s(t.f5b_1))return Xr;var n=t.j6o(this.i6k_1,this.j6k_1);if(null==n)return Xr;var i,e=n,r=t.n5b_1?1:t.l85().m6i(),s=this.z8i(t),o=bs(qh),u=t.s5b_1.o2(o),a=null==u||ss(u,W$)?u:Nr();if(null==a){var h=new VS;t.s5b_1.e2(o,h),i=h}else i=a;var _=i,l=T.w5p(_).g5q(s,this.t82_1,r,e,e.k5f_1,t.y5r().c55_1,this.k6k_1);if(t.g5t(l,0),t.n5b_1){var c=t.w5s();w.y51(c,l.a5q_1),t.q52(w.v51(c,this,t.l85()))}},Pr(k$).z8i=function(t){var n,i=bs(Fb),e=t.x5s(),r=e.o2(i);if(null==r){var s=new Fb;e.f5t(i,s,s.e5t()),n=s}else n=r;return n instanceof Fb?n:Nr()},Pr(E$).e6v=function(t){this.y6u_1.g8j(t)},Pr(E$).c6v=function(t){this.z6u_1.f5i(t)},Pr(E$).r71=function(t){this.a6v_1.a5x(t)},Pr(E$).d6v=function(t){this.b6v_1.f5i(t)},Pr(E$).equals=function(t){return this===t||t instanceof E$&&!!this.y6u_1.equals(t.y6u_1)&&!!this.z6u_1.equals(t.z6u_1)&&!!this.a6v_1.equals(t.a6v_1)&&!!this.b6v_1.equals(t.b6v_1)&&this.u6u_1===t.u6u_1&&this.v6u_1===t.v6u_1&&this.w6u_1===t.w6u_1&&this.x6u_1===t.x6u_1},Pr(E$).hashCode=function(){var t=this.y6u_1.hashCode();return t=Tr(31,t)+this.z6u_1.hashCode()|0,t=Tr(31,t)+this.a6v_1.hashCode()|0,t=Tr(31,t)+this.b6v_1.hashCode()|0,t=Tr(31,t)+Es(this.u6u_1)|0,t=Tr(31,t)+zu(this.v6u_1)|0,t=Tr(31,t)+zu(this.w6u_1)|0,Tr(31,t)+Es(this.x6u_1)|0},Pr(q$).h7d=function(t){this.u7c_1=t,this.n6h()},Pr(q$).p6i=function(t){if(t.r5s().s5d().n19())return Xr;this.o6g(t),this.c7e(t),this.d7e(t),this.b7d_1=null,this.c7d_1=null,this.d7d_1=null},Pr(q$).c7e=function(t){var n,i=bs(Fb),e=t.x5s(),r=e.o2(i);if(null==r){var s=new Fb;e.f5t(i,s,s.e5t()),n=s}else n=r;var o=n;this.b7d_1=o instanceof Fb?o:Nr()},Pr(q$).d7e=function(t){this.f7d_1.d1()&&this.s6g();var n=0,i=this.f7d_1.n()-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=this.f7d_1.h1(e);this.e7e(t,r instanceof US?r:Nr())}while(n<=i)},Pr(q$).s6g=function(){return Pi.d6h(this.t7c_1.b6h(),this.s7c_1,this.f7d_1)},Pr(q$).e7e=function(t,n){var i=t.y5r().d69();if(!1===(null==i?null:n.e6h(i)))return Xr;if(!n.e6h(this.t7c_1.u6g_1)||!n.e6h(t.r5s().s5d())||!n.f6h(t))return Xr;var e=n.p6f_1.a6f_1>=this.t7c_1.z6g_1;if(n.p6f_1.i6h()||!n.h6h(t,this.v7c_1))return e&&this.f7e(t,n),Xr;var r=this.c7d_1,s=this.d7d_1,o=this.g7e(t,n,!!this.w7c_1&&e);null==o||this.x7c_1&&(this.c7d_1=n,this.d7d_1=o);var u=n.j6h(this.s7c_1,this.a7d_1,4),a=0,h=u.length-1|0;if(a<=h)do{var _=a;a=a+1|0;var l=u[_];this.e7e(t,l instanceof US?l:Nr())}while(a<=h);this.c7d_1=r,this.d7d_1=s},Pr(q$).f7e=function(t,n){var i=this.h7e(t,n),e=this.c7d_1,r=this.d7d_1,s=t.n5b_1?1:t.l85().m6i();if(null!=i){var o,u=bs(qh),a=t.s5b_1.o2(u),h=null==a||ss(a,W$)?a:Nr();if(null==h){var _=new VS;t.s5b_1.e2(u,_),o=_}else o=h;var l=o,c=T.w5p(l).i5q(this.b7d_1,n.r6e_1,s,i,i.k5f_1,t.y5r().c55_1);t.g5t(c,0)}else if(null!=e&&null!=r){this.e7d_1.k5i(r.k5f_1),this.e7d_1.d5r(n.r6e_1,e.r6e_1);var f,v=bs(qh),d=t.s5b_1.o2(v),w=null==d||ss(d,W$)?d:Nr();if(null==w){var p=new VS;t.s5b_1.e2(v,p),f=p}else f=w;var m=f,g=T.w5p(m).i5q(this.b7d_1,n.r6e_1,s,r,this.e7d_1,t.y5r().c55_1);t.g5t(g,0)}},Pr(q$).g7e=function(t,n,i){var e=n.f7c_1;if(null==e)return null;var r,s=e,o=n.g7c_1;if(null==o){var u,a=this.y7c_1;if(null==a)u=null;else{var h,_=a.q6g(n.r6e_1,n.p6f_1,n.q6f_1,n.r6f_1),l=(_ instanceof US?_:Nr()).f7c_1;null==l?h=null:(n.g7c_1=l,h=l),u=h}r=u}else r=o;var c=r,f=!!this.z7c_1||Ss(this.s7c_1,this.y7c_1),v=null==c||t.x5s().x54_1.i6c(c.hashCode());return t.q85(v?s:os(c),this.u7c_1,!(!i||f&&v))},Pr(q$).h7e=function(t,n,i,e){return i=i===Yr||i,e===Yr?this.g7e(t,n,i):e.g7e.call(this,t,n,i)},Pr(q$).o6g=function(t){Ss(t.y5a_1,this.g7d_1)||(this.n6h(),this.g7d_1=t.y5a_1)},Pr(q$).n6h=function(){this.f7d_1.b1(),this.a7d_1.b1()},Pr(O$).o8j=function(t){this.l8j_1=this.l8j_1+1|0,this.k8j_1=js.a3k(),this.m8j_1=t},Pr(z$).b1=function(){this.c6c_1.b1()},Pr(z$).i6c=function(t){var n=this.c6c_1.o2(t);if(null==n)return!1;var i=n;if(i.m8j_1)return!0;var e=js.a3k().c3l(i.k8j_1);return Vu(e,this.b6c_1)>0?(this.c6c_1.i2(t),!1):Vu(e,this.a6c_1)<0||i.l8j_1>this.z6b_1},Pr(z$).p8j=function(t,n){var i,e=this.c6c_1.o2(t);if(null==e){var r=new O$(this);this.c6c_1.e2(t,r),i=r}else i=e;i.o8j(n)},Pr(z$).m6c=function(t,n,i){var e;return n=n!==Yr&&n,i===Yr?(this.p8j(t,n),e=Xr):e=i.p8j.call(this,t,n),e},Pr(z$).k6c=function(t){this.c6c_1.i2(t)},Pr(A$).equals=function(t){return this===t||t instanceof A$&&!!Ss(this.k7c_1,t.k7c_1)},Pr(A$).hashCode=function(){return Xo(this.k7c_1)},Pr(A$).toString=function(){return Gr(this.k7c_1)},Pr(D$).b6i=function(){var t=this.s6e_1;return po("extent",1,wo,(function(t){return t.b6i()}),null),t.h2()},Pr(D$).v6f=function(){var t=this.t6e_1;return po("heightLimits",1,wo,(function(t){return t.v6f()}),null),t.h2()},Pr(D$).f6h=function(t){return this.d6i(t).n5s(t.f5b_1)},Pr(D$).e6h=function(t){return this.r6e_1.c5r(t)},Pr(D$).z6h=function(t){var n=t.r6i().v53_1,i=n.b54_1-this.r6e_1.l5u(),e=Math.abs(i),r=n.c54_1-this.r6e_1.m5u(),s=Math.abs(r),o=360-s;return e+Math.min(s,o)},Pr(D$).c6i=function(t){var n=t.r6i().v53_1,i=us(n.b54_1,this.r6e_1.o5p_1,this.r6e_1.p5p_1),e=n.c54_1-this.r6e_1.m5u(),r=e<-180?this.r6e_1.r5p_1:e>180?this.r6e_1.q5p_1:us(n.c54_1,this.r6e_1.q5p_1,this.r6e_1.r5p_1),s=this.v6f()[0]*t.s5a_1,o=t.y5r(),u=Uh().d5d(i),a=Uh().d5d(r);return o.t57(u,a,s,this.y6e_1)},Pr(D$).d6i=function(t){var n=t.y5r(),i=t.z5a_1;i.equals(this.u6e_1)||(n.e58()?zs(this.v6f(),0):this.w6h(n));var e=t.s5a_1,r=t.y5a_1,s=t.y5r().c55_1;if(!i.equals(this.u6e_1)||e!==this.v6e_1||!Ss(r,this.w6e_1)||!s.equals(this.x6e_1)){var o=this.v6f()[0]*e,u=this.v6f()[1]*e;this.b6i().m5s(this.r6e_1,n,o,u)}return this.u6e_1=i,this.v6e_1=e,this.w6e_1=r,this.x6e_1=s,this.b6i()},Pr(D$).w6h=function(t){this.v6f()[0]=34028235e31,this.v6f()[1]=-34028235e31,t.b55_1.w69(this.r6e_1,this.v6f()),this.v6f()[0]>this.v6f()[1]&&zs(this.v6f(),0)},Pr(M$).f5d=function(){if(this.r8j_1>0){this.r8j_1=this.r8j_1-1|0;var t=this.r8j_1,n=this.s8j_1[t];return this.s8j_1[t]=null,null==n||null!=n?n:Nr()}return null},Pr(M$).v5d=function(t){if(null!=t){var n=this.s8j_1.length;if(n===this.r8j_1){var i=n>>1,e=Math.max(i,12),r=hs(Array(n+e|0),null),s=this.s8j_1;ps(s,r,0,0,n),this.s8j_1=r}var o=this.s8j_1,u=this.r8j_1;this.r8j_1=u+1|0,o[u]=t}},Pr(N$).i6h=function(){return this.a6f_1===(this.z6e_1.t8j()-1|0)},Pr(N$).r7b=function(){return this.z6e_1.u8j(this.a6f_1+1|0)},Pr(L$).t8j=function(){return this.a6h_1.length},Pr(L$).b6h=function(){return Bu(this.a6h_1)},Pr(L$).u8j=function(t){return 0<=t&&t<=(this.a6h_1.length-1|0)?this.a6h_1[t]:null},Pr(F$).y7o=function(t){if(!(t>0)){var n=kr.n54(kr.i54_1,"LevelSetConfig","numLevelsForMinResolution","invalidResolution");throw is(Gr(n))}var i=Uh().m5t(t),e=this.t7o_1.b54_1/this.x7o_1/i,r=Math.log(e)/Math.log(2),s=Math.floor(r),o=ks(s);return o<0&&(o=0),o+1|0},Pr(H$).l9=function(t,n){return this.z8j_1(t,n)},Pr(H$).compare=function(t,n){return this.l9(t,n)},Pr(B$).a8k=function(){return this.b5t_1},Pr(B$).b8k=function(){return this.d5t_1=this.d5t_1.gb(),this.d5t_1},Pr(B$).o2=function(t){var n,i=this.c5t_1.o2(t);return null==i?n=null:(i.y8j_1=this.b8k(),n=i.w8j_1),n},Pr(B$).f5t=function(t,n,i){this.a5t_1.db(Ps(i)).z9(this.y5s_1)>0&&this.c8k(i);var e=new U$(t,n,i);e.y8j_1=this.b8k();var r=this.a5t_1,s=e.x8j_1;this.a5t_1=r.db(Ps(s));var o=this.c5t_1.e2(t,e);if(null!=o){var u=this.a5t_1,a=o.x8j_1;if(this.a5t_1=u.eb(Ps(a)),e.w8j_1!==o.w8j_1)return this.d8k(o.v8j_1,o.w8j_1,e.w8j_1,!1),o.w8j_1}return null},Pr(B$).b1=function(){this.c5t_1.b1(),this.a5t_1=new Hr(0,0)},Pr(B$).c8k=function(t){var n=this.e8k(),i=0,e=n.n()-1|0;if(i<=e)t:do{var r=i;i=i+1|0;var s=n.h1(r);if(!(this.a5t_1.z9(this.z5s_1)>0||this.y5s_1.eb(this.a5t_1).z9(Ps(t))<0))break t;this.c5t_1.i2(s.v8j_1);var o=this.a5t_1,u=s.x8j_1;this.a5t_1=o.eb(Ps(u)),this.d8k(s.v8j_1,s.w8j_1,null,!0)}while(i<=e)},Pr(B$).e8k=function(){return Yu(this.c5t_1.c2(),this.a8k())},Pr(B$).d8k=function(t,n,i,e){},Pr(K$).p6n=function(t){return this.f8k(this.y7g(t),t)},Pr(K$).y7g=function(t){var n=this.x7g(t)-2451545,i=Uh().p5t(280.46+.9856474*n),e=Uh().l5t(Uh().p5t(357.528+.9856003*n)),r=2*e,s=i+1.915*Math.sin(e)+.02*Math.sin(r),o=Uh().l5t(s),u=Uh().l5t(23.439-4e-7*n),a=Uh(),h=Math.sin(u)*Math.sin(o),_=Math.asin(h),l=a.i59(_),c=Uh(),f=Math.cos(u)*Math.tan(o),v=Math.atan(f),d=c.i59(v);return s>=90&&s<270&&(d=Hh(d,Uh().m58_1)),new G$(l,function(t){var n;if(0<=t&&t<=360)n=t;else{var i=Uh(),e=Uh().p5t(t);n=i.d5d(e)}return n}(d))},Pr(K$).f8k=function(t,n){var i=this.x7g(n)-2451545,e=Uh().p5t(280.46061837+360.98564736629*i),r=-Uh().p5t(e-t.a7h_1),s=Zh(Uh().d5d(r));return new $_(t.z7g_1,s)},Pr(K$).x7g=function(t){var n=Wu(t,ns().r3k_1),i=n.g3k(),e=n.h3k()+1|0,r=n.i3k(),s=(n.j3l()+n.k3l()/60+n.l3l()/3600)/24;e<=2&&(i=i-1|0,e=e+12|0);var o=i/100,u=Math.floor(o),a=u/4,h=2-u+Math.floor(a),_=365.25*(i+4716|0),l=30.6001*(e+1|0);return Math.floor(_)+Math.floor(l)+r+h-1524.5+s},Pr(X$).r7a=function(t,n,i){var e=(n-i)/t,r=Math.floor(e),s=ks(r);return n-i==180&&(s=s-1|0),s},Pr(X$).t7a=function(t,n,i){var e=(n-i)/t,r=Math.floor(e),s=ks(r);return n-i==360&&(s=s-1|0),s},Pr(X$).s7a=function(t,n,i){var e=(n-i)/t-1,r=Math.ceil(e),s=ks(r);return n-ii*n*t.r5a_1},Pr(J$).a6i=function(t){var n=this.p6f_1.r7b();if(null==n)return[];var i=n,e=this.r6e_1.o5p_1,r=this.r6e_1.q5p_1,s=this.r6e_1.l5u(),o=this.r6e_1.m5u(),u=this.r6e_1.p5p_1,a=this.r6e_1.r5p_1,h=Tr(2,this.q6f_1),_=Tr(2,this.r6f_1),l=new K_(e,s,r,o),c=t.q6g(l,i,h,_);h=Tr(2,this.q6f_1),_=Tr(2,this.r6f_1)+1|0,l=new K_(e,s,o,a);var f=t.q6g(l,i,h,_);h=Tr(2,this.q6f_1)+1|0,_=Tr(2,this.r6f_1),l=new K_(s,u,r,o);var v=t.q6g(l,i,h,_);return h=Tr(2,this.q6f_1)+1|0,_=Tr(2,this.r6f_1)+1|0,l=new K_(s,u,o,a),[c,f,v,t.q6g(l,i,h,_)]},Pr(J$).j6h=function(t,n,i){var e,r=n.o2(this.s6f_1);if(null==r){var s=this.a6i(t);n.f5t(this.s6f_1,s,i),e=s}else e=r;return e},Pr(ny).l8k=function(t,n){var i=this.h8k_1<0?2:1;if(0===t)return this.j8k_1+this.k8k_1;if(n<0&&t>0){var e=t-this.k8k_1.length|0;return e=0){this.b8l_1=this.b8l_1-1|0;var e=this.e8l_1;this.e8l_1=e+1|0,new qy(this,e).p8l()}else this.d8l_1.p5(n)}return this},Pr(Ty).se=function(){this.b8l_1>=this.z8k_1.length&&this.f8l("unexpected end of string inside format specification");var t=this.b8l_1;return this.b8l_1=t+1|0,Hs(this.z8k_1,t)},Pr(Ty).f8l=function(t){throw is("bad format: "+t+" at ofset "+(this.b8l_1-1|0)+' of "'+this.z8k_1+'"')},Pr(Ty).toString=function(){return this.d8l_1.toString()},Pr(Ty).m8l=function(t){return this.s8l(t)},Pr(Ty).l8l=function(t){return Gr(os(this.a8l_1[t]))},Pr(Ty).n8l=function(t){return this.s8l(t).la_1},Pr(Ty).o8l=function(t){this.d8l_1.o5(t),this.c8l_1=-1},Pr(Ty).g8l=function(t){var n=this.s8l(t);return n instanceof la?Wu(n,ns().o3l()):n instanceof _a?n:n instanceof ha?aa(n,0,0,0):Wu(function(t){if(!(t instanceof Date))throw is("Can't convert to LocalDateTime: "+Gr(t));return Vr().w3k(Us(t.getTime()))}(n),ns().o3l())},Pr(Ty).s8l=function(t){var n=os(this.a8l_1[t]);return null!=n?n:Nr()},Pr(Ty).q8l=function(){this.e8l_1=this.e8l_1-1|0},Pr(Iy).w8i=function(t){return(null==Xi&&new jy,Xi).w8i(t)},Pr(Iy).k85=function(){return Ky().k85()},Pr(Iy).n8i=function(t,n,i,e){(t instanceof Xy?t:Nr()).c8n(n,i,e)},Pr(Iy).o8i=function(t,n,i){(t instanceof Xy?t:Nr()).d8n(n,i)},Pr(Iy).u8i=function(t,n,i,e){(t instanceof Xy?t:Nr()).e8n(n,i,e)},Pr(Iy).p8i=function(t,n){(t instanceof Xy?t:Nr()).f8n(n)},Pr(Iy).q8i=function(t){(t instanceof Xy?t:Nr()).g8n()},Pr(Iy).s8i=function(t){(t instanceof Xy?t:Nr()).h8n()},Pr(Iy).t8i=function(t){(t instanceof Xy?t:Nr()).i8n()},Pr(Dy).e8i=function(t){},Pr(Dy).f8i=function(t){},Pr(Dy).g8i=function(t){},Pr(Dy).h8i=function(){},Pr(Dy).i8i=function(t){},Pr(Dy).j8i=function(t,n,i,e){},Pr(Dy).k8i=function(t,n){},Pr(Dy).a8i=function(t,n){},Pr(Dy).y8h=function(t,n){},Pr(Dy).l8i=function(t){},Pr(Dy).c8i=function(t,n){},Pr(Dy).d8g=function(t,n,i,e,r){},Pr(jy).w8i=function(t){return 0===t?"no error":t>=100900&&t<=100904?this.t8l_1[t-100900|0]:t>=100151&&t<=100158?this.t8l_1[t-100150|0]:null},Pr(Ry).s8n=function(t,n){return new Py(new Ly,t,n)},Pr(Ry).t8n=function(t){},Pr(Ry).u8n=function(t,n){return this.y8n(t,t.v8n_1,n)},Pr(Ry).y8n=function(t,n,i){var e=n;do{e=e.b8o_1}while(null!=e.z8n_1&&!t.x8n_1.c8o(t.w8n_1,e.z8n_1,i));var r=new Ly(i);r.b8o_1=e,r.a8o_1=e.a8o_1;var s=r;return e.a8o_1.b8o_1=s,e.a8o_1=s,s},Pr(Ry).d8o=function(t){return t.z8n_1},Pr(Ry).e8o=function(t){return t.a8o_1},Pr(Ry).f8o=function(t){return t.b8o_1},Pr(Ry).g8o=function(t){return t.v8n_1.a8o_1},Pr(Ry).h8o=function(t){t.a8o_1.b8o_1=t.b8o_1,t.b8o_1.a8o_1=t.a8o_1},Pr(Ry).i8o=function(t,n){var i=t.v8n_1;do{i=i.a8o_1}while(null!=i.z8n_1&&!t.x8n_1.c8o(t.w8n_1,n,i.z8n_1));return i},Pr(Gy).k85=function(){return new Xy},Pr(Xy).c8n=function(t,n,i){this.a8m_1[0]=t,this.a8m_1[1]=n,this.a8m_1[2]=i},Pr(Xy).d8n=function(t,n){100100===t?this.q8m_1=null==n?Ky().w8l_1:n:100106===t?this.w8m_1=null==n?Ky().w8l_1:n:100104===t?(this.r8m_1=null==n?Ky().w8l_1:n,this.j8m_1=!(null==n)):100110===t?(this.q8m_1=null==n?Ky().w8l_1:n,this.x8m_1=this.q8m_1,this.j8m_1=!(null==n)):100101===t?this.s8m_1=null==n?Ky().w8l_1:n:100107===t?this.y8m_1=null==n?Ky().w8l_1:n:100102===t?this.t8m_1=null==n?Ky().w8l_1:n:100108===t?this.z8m_1=null==n?Ky().w8l_1:n:100103===t?this.u8m_1=null==n?Ky().w8l_1:n:100109===t?this.a8n_1=null==n?Ky().w8l_1:n:100105===t?this.v8m_1=null==n?Ky().w8l_1:n:100111===t?this.b8n_1=null==n?Ky().w8l_1:n:this.e8p(100900)},Pr(Xy).e8n=function(t,n,i){var e=!1,r=new Float64Array(3);if(By(this,2),this.m8m_1){if(!Wy(this))return this.e8p(100902),Xr;this.y8l_1=null}for(var s=0;s<3;){var o=t[s+n|0];o<-1e150&&(o=-1e150,e=!0),o>1e150&&(o=1e150,e=!0),r[s]=o,s=s+1|0}if(e&&this.e8p(100155),null==this.z8l_1){if(this.n8m_1<100)return function(t,n,i){var e=t.o8m_1[t.n8m_1];e.r8n_1=i,e.q8n_1[0]=n[0],e.q8n_1[1]=n[1],e.q8n_1[2]=n[2],t.n8m_1=t.n8m_1+1|0}(this,r,i),Xr;if(!Wy(this))return this.e8p(100902),Xr}Yy(this,r,i)||this.e8p(100902)},Pr(Xy).f8n=function(t){By(this,0),this.x8l_1=1,this.n8m_1=0,this.m8m_1=!1,this.z8l_1=null,this.p8m_1=t},Pr(Xy).g8n=function(){By(this,1),this.x8l_1=2,this.y8l_1=null,this.n8m_1>0&&(this.m8m_1=!0)},Pr(Xy).h8n=function(){By(this,2),this.x8l_1=1},Pr(Xy).i8n=function(){try{if(By(this,1),this.x8l_1=0,null==this.z8l_1){if(!this.j8m_1&&kk().w8p(this))return this.p8m_1=null,Xr;if(!Wy(this))throw ca()}if((null==ne&&new nk,ne).b8q(this),!re.e8q(this))throw ca();var t=os(this.z8l_1);if(!this.f8m_1){if(!(this.k8m_1?se.g8q(t,1,!0):se.f8q(t)))throw ca();te.h8q(t),this.q8m_1===Ky().w8l_1&&this.t8m_1===Ky().w8l_1&&this.s8m_1===Ky().w8l_1&&this.r8m_1===Ky().w8l_1&&this.w8m_1===Ky().w8l_1&&this.z8m_1===Ky().w8l_1&&this.y8m_1===Ky().w8l_1&&this.x8m_1===Ky().w8l_1||(this.k8m_1?kk().j8q(this,t):kk().i8q(this,t))}te.d8p(t),this.p8m_1=null}catch(t){if(!(t instanceof $s))throw t;fa(t),this.e8p(100902)}},Pr(Xy).k8q=function(t){this.w8m_1!==Ky().w8l_1?this.w8m_1.k8i(t,os(this.p8m_1)):this.q8m_1.e8i(t)},Pr(Xy).l8q=function(t){this.y8m_1!==Ky().w8l_1?this.y8m_1.y8h(t,os(this.p8m_1)):this.s8m_1.g8i(t)},Pr(Xy).m8q=function(t){this.x8m_1!==Ky().w8l_1?this.x8m_1.a8i(t,os(this.p8m_1)):this.r8m_1.f8i(t)},Pr(Xy).n8q=function(){this.z8m_1!==Ky().w8l_1?this.z8m_1.l8i(os(this.p8m_1)):this.t8m_1.h8i()},Pr(Xy).o8q=function(t,n,i,e){this.b8n_1!==Ky().w8l_1?this.b8n_1.d8g(t,n,i,e,os(this.p8m_1)):this.v8m_1.j8i(t,n,i,e)},Pr(Xy).e8p=function(t){this.a8n_1!==Ky().w8l_1?this.a8n_1.c8i(t,os(this.p8m_1)):this.u8m_1.i8i(t)},Pr(Zy).p8q=function(t,n,i){var e=n.n8p_1-t.n8p_1,r=i.n8p_1-n.n8p_1;return e+r>0?e0?(n.o8p_1-i.o8p_1)*e+(n.o8p_1-t.o8p_1)*r:0},Pr(Zy).r8q=function(t,n,i){var e=n.o8p_1-t.o8p_1,r=i.o8p_1-n.o8p_1;return e+r>0?e0?(n.n8p_1-i.n8p_1)*e+(n.n8p_1-t.n8p_1)*r:0},Pr(Zy).t8q=function(t,n,i,e){var r=t<0?0:t,s=i<0?0:i;return r<=s?0===s?(n+e)/2:n+r/(r+s)*(e-n):e+s/(r+s)*(n-e)},Pr(Zy).u8q=function(t,n,i,e,r){var s=t,o=n,u=i,a=e;if(!this.v8q(s,o)){var h=s;s=o,o=h}if(!this.v8q(u,a)){var _=u;u=a,a=_}if(!this.v8q(s,u)){var l=s;s=u,u=l,l=o,o=a,a=l}if(this.v8q(u,o))if(this.v8q(o,a)){var c=this.p8q(s,u,o),f=this.p8q(u,o,a);c+f<0&&(c=-c,f=-f),r.n8p_1=this.t8q(c,u.n8p_1,f,o.n8p_1)}else{var v=this.q8q(s,u,o),d=-this.q8q(s,a,o);v+d<0&&(v=-v,d=-d),r.n8p_1=this.t8q(v,u.n8p_1,d,a.n8p_1)}else r.n8p_1=(u.n8p_1+o.n8p_1)/2;if(!this.w8q(s,o)){var w=s;s=o,o=w}if(!this.w8q(u,a)){var p=u;u=a,a=p}if(!this.w8q(s,u)){var m=u;u=s,s=m,m=a,a=o,o=m}if(this.w8q(u,o))if(this.w8q(o,a)){var g=this.r8q(s,u,o),b=this.r8q(u,o,a);g+b<0&&(g=-g,b=-b),r.o8p_1=this.t8q(g,u.o8p_1,b,o.o8p_1)}else{var $=this.s8q(s,u,o),y=-this.s8q(s,a,o);$+y<0&&($=-$,y=-y),r.o8p_1=this.t8q($,u.o8p_1,y,a.o8p_1)}else r.o8p_1=(u.o8p_1+o.o8p_1)/2},Pr(Zy).x8q=function(t,n){return t.n8p_1===n.n8p_1&&t.o8p_1===n.o8p_1},Pr(Zy).v8q=function(t,n){return t.n8p_1Math.abs(r)&&(n=1);var s=t[2],o=Math.abs(s),u=t[n];return o>Math.abs(u)&&(n=2),n},Pr(nk).n8r=function(t,n){var i=t.z8l_1,e=os(null==i?null:i.z8o_1),r=new Float64Array(3),s=new Float64Array(3),o=hs(Array(3),null),u=hs(Array(3),null),a=new Float64Array(3),h=new Float64Array(3),_=new Float64Array(3);r[2]=-2e150,r[1]=r[2],r[0]=r[1],s[2]=2e150,s[1]=s[2],s[0]=s[1];for(var l=os(e.i8p_1);l!==e;){for(var c=0;c<3;){var f=l.m8p_1[c];fr[c]&&(r[c]=f,u[c]=l),c=c+1|0}l=os(l.i8p_1)}var v=0;if(r[1]-s[1]>r[0]-s[0]&&(v=1),r[2]-s[2]>r[v]-s[v]&&(v=2),s[v]>=r[v])return n[0]=0,n[1]=0,n[2]=1,Xr;var d=0,w=os(o[v]),p=os(u[v]);for(a[0]=w.m8p_1[0]-p.m8p_1[0],a[1]=w.m8p_1[1]-p.m8p_1[1],a[2]=w.m8p_1[2]-p.m8p_1[2],l=os(e.i8p_1);l!==e;){h[0]=l.m8p_1[0]-p.m8p_1[0],h[1]=l.m8p_1[1]-p.m8p_1[1],h[2]=l.m8p_1[2]-p.m8p_1[2],_[0]=a[1]*h[2]-a[2]*h[1],_[1]=a[2]*h[0]-a[0]*h[2],_[2]=a[0]*h[1]-a[1]*h[0];var m=_[0]*_[0]+_[1]*_[1]+_[2]*_[2];m>d&&(d=m,n[0]=_[0],n[1]=_[1],n[2]=_[2]),l=os(l.i8p_1)}d<=0&&(n[2]=0,n[1]=n[2],n[0]=n[1],n[this.m8r(a)]=1)},Pr(nk).o8r=function(t){for(var n=t.z8l_1,i=os(null==n?null:n.a8p_1),e=t.z8l_1,r=os(null==e?null:e.z8o_1),s=0,o=os(i.j8o_1);o!==i;){var u=os(o.l8o_1);if(u.y8o_1<=0)o=os(o.j8o_1);else{do{s+=(os(u.v8o_1).n8p_1-os(os(u.s8o_1).v8o_1).n8p_1)*(os(u.v8o_1).o8p_1+os(os(u.s8o_1).v8o_1).o8p_1),u=os(u.u8o_1)}while(u!==o.l8o_1);o=os(o.j8o_1)}}if(s<0){for(var a=os(r.i8p_1);a!==r;)a.o8p_1=-a.o8p_1,a=os(a.i8p_1);t.c8m_1[0]=-t.c8m_1[0],t.c8m_1[1]=-t.c8m_1[1],t.c8m_1[2]=-t.c8m_1[2]}},Pr(nk).b8q=function(t){var n=t.z8l_1,i=os(null==n?null:n.z8o_1),e=new Float64Array(3),r=!1;e[0]=t.a8m_1[0],e[1]=t.a8m_1[1],e[2]=t.a8m_1[2],0===e[0]&&0===e[1]&&0===e[2]&&(this.n8r(t,e),r=!0);var s=t.b8m_1,o=t.c8m_1,u=this.m8r(e);s[u]=0,s[(u+1|0)%3|0]=this.y8p_1,s[(u+2|0)%3|0]=this.z8p_1,o[u]=0,o[(u+1|0)%3|0]=e[u]>0?-this.z8p_1:this.z8p_1,o[(u+2|0)%3|0]=e[u]>0?this.y8p_1:-this.y8p_1;for(var a=os(i.i8p_1);a!==i;)a.n8p_1=tk(0,a.m8p_1,s),a.o8p_1=tk(0,a.m8p_1,o),a=os(a.i8p_1);r&&this.o8r(t)},Pr(rk).t8r=function(t,n){var i=Qi,e=t instanceof Jy?t:Nr();return i.v8q(e,n instanceof Jy?n:Nr())},Pr(rk).u8r=function(){return new lk},Pr(ok).v8r=function(){this.c8s_1=[],this.b8s_1=[]},Pr(ok).h8s=function(t){var n=t,i=this.b8s_1,e=this.c8s_1,r=i[n].p8r_1;t:for(;;){var s=n<<1;sthis.d8s_1||ie.t8r(os(e[r].q8r_1),os(e[o].q8r_1))){i[n].p8r_1=r,e[r].r8r_1=n;break t}i[n].p8r_1=o,e[o].r8r_1=n,n=s}},Pr(ok).i8s=function(t){var n=t,i=this.b8s_1,e=this.c8s_1,r=i[n].p8r_1;t:for(;;){var s=n>>1,o=i[s].p8r_1;if(0===s||ie.t8r(os(e[o].q8r_1),os(e[r].q8r_1))){i[n].p8r_1=r,e[r].r8r_1=n;break t}i[n].p8r_1=o,e[o].r8r_1=n,n=s}},Pr(ok).w8r=function(){for(var t=this.d8s_1;t>=1;)this.h8s(t),t=t-1|0;return this.g8s_1=!0,!0},Pr(ok).x8r=function(t){var n;this.d8s_1=this.d8s_1+1|0;var i=this.d8s_1;if(Tr(i,2)>this.e8s_1){this.e8s_1=this.e8s_1<<1;for(var e=0,r=this.e8s_1+1|0,s=hs(Array(r),null);e0&&(t[1].p8r_1=t[this.d8s_1].p8r_1,n[t[1].p8r_1].r8r_1=1,n[i].q8r_1=null,n[i].r8r_1=this.f8s_1,this.f8s_1=i,this.d8s_1=this.d8s_1-1|0,this.d8s_1>0&&this.h8s(1)),e},Pr(ok).z8r=function(t){var n=this.b8s_1,i=this.c8s_1,e=i[t].r8r_1;n[e].p8r_1=n[this.d8s_1].p8r_1,i[n[e].p8r_1].r8r_1=e,this.d8s_1=this.d8s_1-1|0,e<=this.d8s_1&&(e<=1||ie.t8r(os(i[n[e>>1].p8r_1].q8r_1),os(i[n[e].p8r_1].q8r_1))?this.h8s(e):this.i8s(e)),i[t].q8r_1=null,i[t].r8r_1=this.f8s_1,this.f8s_1=t},Pr(ok).a8s=function(){return this.c8s_1[this.b8s_1[1].p8r_1].q8r_1},Pr(ok).j8s=function(){return 0===this.d8s_1},Pr(lk).v8r=function(){this.m8s_1.v8r(),this.o8s_1=null,this.n8s_1=null},Pr(lk).w8r=function(){var t=hs(Array(50),null),n=0,i=t.length-1|0;if(n<=i)do{var e=n;n=n+1|0,t[e]=new hk}while(n<=i);var r=0,s=2016473283;this.o8s_1=new Int32Array(this.p8s_1+1|0);for(var o=0,u=this.p8s_1-1|0,a=0,h=o;h<=u;)os(this.o8s_1)[h]=a,a=a+1|0,h=h+1|0;var _=t[r];null!=_&&(_.k8s_1=o);var l,c,f=t[r];for(null!=f&&(f.l8s_1=u),r=r+1|0;(r=r-1|0)>=0;){for(o=os(t[r]).k8s_1,u=os(t[r]).l8s_1;u>(o+10|0);){h=o+((s=Fs(Tr(s,1539415821)+1|0))%(1+(u-o|0)|0)|0)|0,a=os(this.o8s_1)[h],os(this.o8s_1)[h]=os(this.o8s_1)[o],os(this.o8s_1)[o]=a,h=o-1|0;var v=u+1|0;do{do{h=h+1|0}while(l=os(os(this.n8s_1)[os(this.o8s_1)[h]]),c=os(os(this.n8s_1)[a]),!ie.t8r(l,c));do{v=v-1|0}while(uk(0,os(os(this.n8s_1)[os(this.o8s_1)[v]]),os(os(this.n8s_1)[a])));ak(0,os(this.o8s_1),h,v)}while(ho&&uk(0,os(os(this.n8s_1)[os(this.o8s_1)[g-1|0]]),os(os(this.n8s_1)[a]));)os(this.o8s_1)[g]=os(this.o8s_1)[g-1|0],g=g-1|0;os(this.o8s_1)[g]=a,h=h+1|0}}return this.q8s_1=this.p8s_1,this.r8s_1=!0,this.m8s_1.w8r(),!0},Pr(lk).x8r=function(t){if(this.r8s_1)return this.m8s_1.x8r(t);var n=this.p8s_1;if(this.p8s_1=this.p8s_1+1|0,this.p8s_1>=this.q8s_1){this.q8s_1=this.q8s_1<<1;var i=this.q8s_1,e=hs(Array(i),null),r=this.n8s_1;if(null==r);else{var s=r.length;ps(r,e,0,0,s)}this.n8s_1=e}return os(this.n8s_1)[n]=t,0|-(n+1|0)},Pr(lk).y8r=function(){if(0===this.p8s_1)return this.m8s_1.y8r();var t=os(os(this.n8s_1)[os(this.o8s_1)[this.p8s_1-1|0]]);if(!this.m8s_1.j8s()){var n=os(this.m8s_1.a8s());if(ie.t8r(n,t))return this.m8s_1.y8r()}do{this.p8s_1=this.p8s_1-1|0}while(this.p8s_1>0&&null==os(this.n8s_1)[os(this.o8s_1)[this.p8s_1-1|0]]);return t},Pr(lk).a8s=function(){if(0===this.p8s_1)return this.m8s_1.a8s();var t=os(os(this.n8s_1)[os(this.o8s_1)[this.p8s_1-1|0]]);if(!this.m8s_1.j8s()){var n=os(this.m8s_1.a8s());if(ie.t8r(n,t))return n}return t},Pr(lk).z8r=function(t){var n=t;if(n>=0)return this.m8s_1.z8r(n),Xr;for(n=0|-(n+1|0),os(this.n8s_1)[n]=null;this.p8s_1>0&&null==os(this.n8s_1)[os(this.o8s_1)[this.p8s_1-1|0]];)this.p8s_1=this.p8s_1-1|0},Pr(gk).v8s=function(t,n,i){t.l8m_1=dk(kk(),os(n.w8o_1),t.l8m_1)},Pr(bk).v8s=function(t,n,i){var e=n,r=i;t.k8q(cr);var s=e.v8o_1;t.l8q(os(null==s?null:s.l8p_1));var o=e.s8o_1,u=null==o?null:o.v8o_1;for(t.l8q(os(null==u?null:u.l8p_1));!vk(kk(),os(e.w8o_1));){var a=e.w8o_1;null!=a&&(a.o8o_1=!0),r=r.hb();var h=(e=os(e.t8o_1)).s8o_1,_=null==h?null:h.v8o_1;t.l8q(os(null==_?null:_.l8p_1))}t.n8q()},Pr($k).v8s=function(t,n,i){var e=n,r=i;t.k8q(Lk());var s=e.v8o_1;t.l8q(os(null==s?null:s.l8p_1));var o=e.s8o_1,u=null==o?null:o.v8o_1;t.l8q(os(null==u?null:u.l8p_1));t:for(;!vk(kk(),os(e.w8o_1));){var a=e.w8o_1;null!=a&&(a.o8o_1=!0),r=r.hb();var h=e.u8o_1,_=(e=os(null==h?null:h.s8o_1)).v8o_1;if(t.l8q(os(null==_?null:_.l8p_1)),vk(kk(),os(e.w8o_1)))break t;var l=e.w8o_1;null!=l&&(l.o8o_1=!0),r=r.hb();var c=(e=os(e.t8o_1)).s8o_1,f=null==c?null:c.v8o_1;t.l8q(os(null==f?null:f.l8p_1))}t.n8q()},Pr(yk).i8q=function(t,n){t.l8m_1=null;for(var i=os(n.a8p_1.j8o_1);i!==n.a8p_1;)i.o8o_1=!1,i=os(i.j8o_1);for(i=os(n.a8p_1.j8o_1);i!==n.a8p_1;)i.p8o_1&&!i.o8o_1&&this.w8s(t,i),i=os(i.j8o_1);null!=t.l8m_1&&(this.x8s(t,t.l8m_1),t.l8m_1=null)},Pr(yk).w8s=function(t,n){var i=os(n.l8o_1),e=ck();if(e.s8s_1=new Hr(1,0),e.t8s_1=i,e.u8s_1=this.u8p_1,!t.j8m_1){var r=this.y8s(i);r.s8s_1.z9(e.s8s_1)>0&&(e=r),(r=this.y8s(os(i.u8o_1))).s8s_1.z9(e.s8s_1)>0&&(e=r);var s=i.t8o_1;(r=this.y8s(os(null==s?null:s.s8o_1))).s8s_1.z9(e.s8s_1)>0&&(e=r),(r=this.z8s(i)).s8s_1.z9(e.s8s_1)>0&&(e=r),(r=this.z8s(os(i.u8o_1))).s8s_1.z9(e.s8s_1)>0&&(e=r);var o=i.t8o_1;(r=this.z8s(os(null==o?null:o.s8o_1))).s8s_1.z9(e.s8s_1)>0&&(e=r)}var u=e.u8s_1;null==u||u.v8s(t,os(e.t8s_1),e.s8s_1)},Pr(yk).y8s=function(t){for(var n=fk(new Hr(0,0),null,this.s8p_1),i=null,e=t;!vk(0,os(e.w8o_1));)i=dk(0,os(e.w8o_1),i),n.s8s_1=n.s8s_1.gb(),e=os(e.t8o_1);e=t;t:for(;;){var r=e.s8o_1;if(vk(0,os(null==r?null:r.w8o_1)))break t;var s=e.s8o_1;i=dk(0,os(null==s?null:s.w8o_1),i),n.s8s_1=n.s8s_1.gb();var o=e.s8o_1;e=os(null==o?null:o.u8o_1)}return n.t8s_1=e,wk(0,i),n},Pr(yk).z8s=function(t){var n=fk(new Hr(0,0),null,this.t8p_1),i=new Hr(0,0),e=new Hr(0,0),r=null,s=t;t:for(;!vk(0,os(s.w8o_1));){r=dk(0,os(s.w8o_1),r),e=e.gb();var o=s.u8o_1;if(s=os(null==o?null:o.s8o_1),vk(0,os(s.w8o_1)))break t;r=dk(0,os(s.w8o_1),r),e=e.gb(),s=os(s.t8o_1)}var u=s;s=t;t:for(;;){var a=s.s8o_1;if(vk(0,os(null==a?null:a.w8o_1)))break t;var h=s.s8o_1;r=dk(0,os(null==h?null:h.w8o_1),r),i=i.gb();var _=s.s8o_1,l=(s=os(null==_?null:_.u8o_1)).s8o_1;if(vk(0,os(null==l?null:l.w8o_1)))break t;var c=s.s8o_1;r=dk(0,os(null==c?null:c.w8o_1),r),i=i.gb();var f=s.s8o_1,v=null==f?null:f.t8o_1;s=os(null==v?null:v.s8o_1)}var d=s;return n.s8s_1=e.db(i),pk(0,e)?n.t8s_1=u.s8o_1:pk(0,i)?n.t8s_1=d:(n.s8s_1=n.s8s_1.hb(),n.t8s_1=d.t8o_1),wk(0,r),n},Pr(yk).x8s=function(t,n){var i=n,e=-1;for(t.k8q(Bk());null!=i;){var r=os(i.l8o_1);do{if(t.j8m_1){var s=os(os(r.s8o_1).w8o_1).p8o_1?0:1;e!==s&&(e=s,t.m8q(!(0===e)))}var o=r.v8o_1;t.l8q(os(null==o?null:o.l8p_1)),r=os(r.u8o_1)}while(r!==i.l8o_1);i=i.n8o_1}t.n8q()},Pr(yk).j8q=function(t,n){for(var i=os(n.a8p_1.j8o_1);i!==n.a8p_1;){if(i.p8o_1){t.k8q(Uk());var e=os(i.l8o_1);do{var r=e.v8o_1;t.l8q(os(null==r?null:r.l8p_1)),e=os(e.u8o_1)}while(e!==i.l8o_1);t.n8q()}i=os(i.j8o_1)}},Pr(yk).a8t=function(t,n,i){var e=t.o8m_1,r=t.n8m_1,s=new Float64Array(3),o=0;i||(n[2]=0,n[1]=n[2],n[0]=n[1]);for(var u=1,a=e[u].q8n_1[0]-e[0].q8n_1[0],h=e[u].q8n_1[1]-e[0].q8n_1[1],_=e[u].q8n_1[2]-e[0].q8n_1[2];(u=u+1|0)0){if(o<0)return 2;d=1}else{if(o>0)return 2;d=-1}o=d}}else v>=0?(n[0]=n[0]+s[0],n[1]=n[1]+s[1],n[2]=n[2]+s[2]):(n[0]=n[0]-s[0],n[1]=n[1]-s[1],n[2]=n[2]-s[2])}return o},Pr(yk).w8p=function(t){t.o8m_1,t.n8m_1;var n=new Float64Array(3);if(t.n8m_1<3)return!0;n[0]=t.a8m_1[0],n[1]=t.a8m_1[1],n[2]=t.a8m_1[2],0===n[0]&&0===n[1]&&0===n[2]&&this.a8t(t,n,!1);var i=this.a8t(t,n,!0);return 2!==i&&(0===i||!1)},Pr(Ck).c8o=function(t,n,i){var e=re,r=n instanceof My?n:Nr();return e.c8t(this.b8t_1,r,i instanceof My?i:Nr())},Pr(qk).c8t=function(t,n,i){var e=os(t.i8m_1),r=n.j8n_1,s=i.j8n_1,o=r.s8o_1;if((null==o?null:o.v8o_1)===e){var u,a=s.s8o_1;if((null==a?null:a.v8o_1)===e){var h;if(Qi.v8q(os(r.v8o_1),os(s.v8o_1))){var _=Qi,l=s.s8o_1;h=_.q8q(os(null==l?null:l.v8o_1),os(r.v8o_1),os(s.v8o_1))<=0}else{var c=Qi,f=r.s8o_1;h=c.q8q(os(null==f?null:f.v8o_1),os(s.v8o_1),os(r.v8o_1))>=0}u=h}else{var v=Qi,d=s.s8o_1;u=v.q8q(os(null==d?null:d.v8o_1),e,os(s.v8o_1))<=0}return u}var w=s.s8o_1;if((null==w?null:w.v8o_1)===e){var p=Qi,m=r.s8o_1;return p.q8q(os(null==m?null:m.v8o_1),e,os(r.v8o_1))>=0}var g=Qi,b=r.s8o_1,$=g.p8q(os(null==b?null:b.v8o_1),e,os(r.v8o_1)),y=Qi,k=s.s8o_1;return $>=y.p8q(os(null==k?null:k.v8o_1),e,os(s.v8o_1))},Pr(qk).d8t=function(t){t.j8n_1.x8o_1=null,Ji.h8o(os(t.k8n_1))},Pr(qk).e8t=function(t,n){return!!te.i8r(t.j8n_1)&&(t.p8n_1=!1,t.j8n_1=n,n.x8o_1=t,!0)},Pr(qk).f8t=function(t){var n=t,i=n.j8n_1.v8o_1;do{n=os(Ek(0,n))}while(n.j8n_1.v8o_1===i);if(n.p8n_1){var e=te.k8r(os(Sk(0,n).j8n_1.s8o_1),os(n.j8n_1.u8o_1));if(!this.e8t(n,e))return null;n=os(Ek(0,n))}return n},Pr(qk).g8t=function(t){var n=t,i=n.j8n_1.s8o_1,e=null==i?null:i.v8o_1;do{var r=(n=os(Ek(0,n))).j8n_1.s8o_1}while((null==r?null:r.v8o_1)===e);return n},Pr(qk).h8t=function(t,n,i){var e=new My(i);return e.k8n_1=Ji.y8n(os(t.g8m_1),os(n.k8n_1),e),e.p8n_1=!1,e.n8n_1=!1,e.o8n_1=!1,i.x8o_1=e,e},Pr(qk).i8t=function(t,n){var i=t.e8m_1;if(100130===i)return!(0==(1&n));if(100131===i)return!(0===n);if(100132===i)return n>0;if(100133===i)return n<0;if(100134===i)return n>=2||n<=-2;throw ca()},Pr(qk).j8t=function(t,n){n.l8n_1=os(Ek(0,n)).l8n_1+n.j8n_1.y8o_1|0,n.m8n_1=this.i8t(t,n.l8n_1)},Pr(qk).k8t=function(t){var n=t.j8n_1,i=os(n.w8o_1);i.p8o_1=t.m8n_1,i.l8o_1=n,this.d8t(t)},Pr(qk).l8t=function(t,n){var i=t,e=t.j8n_1;t:for(;i!==n;){i.p8n_1=!1;var r=Sk(0,i),s=r.j8n_1;if(s.v8o_1!==e.v8o_1){if(!r.p8n_1){this.k8t(i);break t}var o=te,u=e.t8o_1;if(s=o.k8r(os(null==u?null:u.s8o_1),os(s.s8o_1)),!this.e8t(r,s))throw ca()}if(e.t8o_1!==s){var a=te,h=s.s8o_1;if(!a.h8p(os(null==h?null:h.u8o_1),s))throw ca();if(!te.h8p(e,s))throw ca()}this.k8t(i),e=r.j8n_1,i=r}return e},Pr(qk).m8t=function(t,n,i,e,r,s){var o=r,u=!0,a=i;do{this.h8t(t,n,os(a.s8o_1)),a=os(a.t8o_1)}while(a!==e);if(null==o){var h=Sk(0,n).j8n_1.s8o_1;o=null==h?null:h.t8o_1}for(var _,l=n,c=os(o);_=Sk(0,l),(a=os(_.j8n_1.s8o_1)).v8o_1===c.v8o_1;){if(a.t8o_1!==c){var f=te,v=a.s8o_1;if(!f.h8p(os(null==v?null:v.u8o_1),a))throw ca();var d=te,w=c.s8o_1;if(!d.h8p(os(null==w?null:w.u8o_1),a))throw ca()}if(_.l8n_1=l.l8n_1-a.y8o_1|0,_.m8n_1=this.i8t(t,_.l8n_1),l.o8n_1=!0,!u&&this.n8t(t,l)&&(xk(0,a,c),this.d8t(l),!te.i8r(c)))throw ca();u=!1,l=_,c=a}l.o8n_1=!0,s&&this.o8t(t,l)},Pr(qk).p8t=function(t,n,i,e,r){var s=new Float64Array(3);s[0]=n.m8p_1[0],s[1]=n.m8p_1[1],s[2]=n.m8p_1[2];var o=hs(Array(1),null);t.o8q(s,i,e,o),n.l8p_1=o[0],null==n.l8p_1&&(r?t.f8m_1||(t.e8p(100156),t.f8m_1=!0):n.l8p_1=i[0])},Pr(qk).q8t=function(t,n,i){var e=hs(Array(4),null),r=new Float32Array([.5,.5,0,0]),s=n.v8o_1;e[0]=null==s?null:s.l8p_1;var o=i.v8o_1;if(e[1]=null==o?null:o.l8p_1,this.p8t(t,os(n.v8o_1),e,r,!1),!te.h8p(n,i))throw ca()},Pr(qk).r8t=function(t,n,i,e){var r=Qi.a8r(n,t),s=Qi.a8r(i,t);e[0]=.5*s/(r+s),e[1]=.5*r/(r+s);var o=t.m8p_1;o[0]=o[0]+(e[0]*n.m8p_1[0]+e[1]*i.m8p_1[0]);var u=t.m8p_1;u[1]=u[1]+(e[0]*n.m8p_1[1]+e[1]*i.m8p_1[1]);var a=t.m8p_1;a[2]=a[2]+(e[0]*n.m8p_1[2]+e[1]*i.m8p_1[2])},Pr(qk).s8t=function(t,n,i,e,r,s){var o=hs(Array(4),null),u=new Float32Array(4),a=new Float32Array(2),h=new Float32Array(2);o[0]=i.l8p_1,o[1]=e.l8p_1,o[2]=r.l8p_1,o[3]=s.l8p_1,n.m8p_1[2]=0,n.m8p_1[1]=n.m8p_1[2],n.m8p_1[0]=n.m8p_1[1],this.r8t(n,i,e,a),this.r8t(n,r,s,h);var _=a.length;ps(a,u,0,0,_);var l=h.length;ps(h,u,2,0,l),this.p8t(t,n,o,u,!0)},Pr(qk).n8t=function(t,n){var i=Sk(0,n),e=n.j8n_1,r=i.j8n_1;if(Qi.v8q(os(e.v8o_1),os(r.v8o_1))){var s=Qi,o=r.s8o_1;if(s.q8q(os(null==o?null:o.v8o_1),os(e.v8o_1),os(r.v8o_1))>0)return!1;if(Qi.x8q(os(e.v8o_1),os(r.v8o_1))){if(e.v8o_1!==r.v8o_1){var u=t.h8m_1;if(null==u);else{var a=e.v8o_1;u.z8r(os(null==a?null:a.p8p_1))}var h=r.s8o_1;this.q8t(t,os(null==h?null:h.u8o_1),e)}}else{te.f8p(os(r.s8o_1));var _=te,l=r.s8o_1;if(!_.h8p(e,os(null==l?null:l.u8o_1)))throw ca();i.o8n_1=!0,n.o8n_1=i.o8n_1}}else{var c=Qi,f=e.s8o_1;if(c.q8q(os(null==f?null:f.v8o_1),os(r.v8o_1),os(e.v8o_1))<0)return!1;n.o8n_1=!0;var v=Ek(0,n);null!=v&&(v.o8n_1=n.o8n_1),te.f8p(os(e.s8o_1));var d=te,w=r.s8o_1;if(!d.h8p(os(null==w?null:w.u8o_1),e))throw ca()}return!0},Pr(qk).t8t=function(t){var n=Sk(0,t),i=t.j8n_1,e=n.j8n_1,r=Qi,s=i.s8o_1,o=os(null==s?null:s.v8o_1),u=e.s8o_1;if(r.v8q(o,os(null==u?null:u.v8o_1))){var a=Qi,h=i.s8o_1,_=os(null==h?null:h.v8o_1),l=e.s8o_1;if(a.q8q(_,os(null==l?null:l.v8o_1),os(i.v8o_1))<0)return!1;t.o8n_1=!0;var c=Ek(0,t);null!=c&&(c.o8n_1=t.o8n_1);var f=te.f8p(i);if(!te.h8p(os(e.s8o_1),f))throw ca();var v=f.w8o_1;null!=v&&(v.p8o_1=t.m8n_1)}else{var d=Qi,w=e.s8o_1,p=os(null==w?null:w.v8o_1),m=i.s8o_1;if(d.q8q(p,os(null==m?null:m.v8o_1),os(e.v8o_1))>0)return!1;n.o8n_1=!0,t.o8n_1=n.o8n_1;var g=te.f8p(e);if(!te.h8p(os(i.u8o_1),os(e.s8o_1)))throw ca();var b=g.s8o_1,$=null==b?null:b.w8o_1;null!=$&&($.p8o_1=t.m8n_1)}return!0},Pr(qk).u8t=function(t,n){var i=n,e=Sk(0,i),r=i.j8n_1,s=e.j8n_1,o=os(r.v8o_1),u=os(s.v8o_1),a=r.s8o_1,h=os(null==a?null:a.v8o_1),_=s.s8o_1,l=os(null==_?null:_.v8o_1),c=new Jy;if(o===u)return!1;if(Io(o.o8p_1,h.o8p_1)>yo(u.o8p_1,l.o8p_1))return!1;if(Qi.v8q(o,u)){if(Qi.q8q(l,o,u)>0)return!1}else if(Qi.q8q(h,u,o)<0)return!1;Qi.u8q(h,o,l,u,c),Qi.v8q(c,os(t.i8m_1))&&(c.n8p_1=os(t.i8m_1).n8p_1,c.o8p_1=os(t.i8m_1).o8p_1);var f=Qi.v8q(o,u)?o:u;if(Qi.v8q(f,c)&&(c.n8p_1=f.n8p_1,c.o8p_1=f.o8p_1),Qi.x8q(c,o)||Qi.x8q(c,u))return this.n8t(t,i),!1;if(!Qi.x8q(h,os(t.i8m_1))&&Qi.q8q(h,os(t.i8m_1),c)>=0||!Qi.x8q(l,os(t.i8m_1))&&Qi.q8q(l,os(t.i8m_1),c)<=0){if(l===t.i8m_1){if(te.f8p(os(r.s8o_1)),!te.h8p(os(s.s8o_1),r))throw ca();r=Sk(0,i=os(this.f8t(i))).j8n_1,this.l8t(Sk(0,i),e);var v=i,d=r.s8o_1;return this.m8t(t,v,os(null==d?null:d.u8o_1),r,r,!0),!0}if(h===t.i8m_1){te.f8p(os(s.s8o_1));var w=te,p=os(r.u8o_1),m=s.s8o_1;if(!w.h8p(p,os(null==m?null:m.u8o_1)))throw ca();e=i;var g=Sk(0,i=this.g8t(i)).j8n_1.s8o_1,b=null==g?null:g.t8o_1,$=e,y=s.s8o_1;$.j8n_1=os(null==y?null:y.u8o_1),s=this.l8t(e,null);var k=i,x=os(s.t8o_1),S=r.s8o_1;return this.m8t(t,k,x,null==S?null:S.t8o_1,b,!0),!0}if(Qi.q8q(h,os(t.i8m_1),c)>=0){i.o8n_1=!0;var E=Ek(0,i);null!=E&&(E.o8n_1=i.o8n_1),te.f8p(os(r.s8o_1));var C=r.v8o_1;null!=C&&(C.n8p_1=os(t.i8m_1).n8p_1);var q=r.v8o_1;null!=q&&(q.o8p_1=os(t.i8m_1).o8p_1)}if(Qi.q8q(l,os(t.i8m_1),c)<=0){e.o8n_1=!0,i.o8n_1=e.o8n_1,te.f8p(os(s.s8o_1));var O=s.v8o_1;null!=O&&(O.n8p_1=os(t.i8m_1).n8p_1);var z=s.v8o_1;null!=z&&(z.o8p_1=os(t.i8m_1).o8p_1)}return!1}te.f8p(os(r.s8o_1)),te.f8p(os(s.s8o_1));var A=te,T=s.s8o_1;if(!A.h8p(os(null==T?null:T.u8o_1),r))throw ca();var I=r.v8o_1;null!=I&&(I.n8p_1=c.n8p_1);var D=r.v8o_1;null!=D&&(D.o8p_1=c.o8p_1);var j=r.v8o_1;null!=j&&(j.p8p_1=os(t.h8m_1).x8r(r.v8o_1)),this.s8t(t,os(r.v8o_1),o,h,u,l),e.o8n_1=!0,i.o8n_1=e.o8n_1;var M=Ek(0,i);return null!=M&&(M.o8n_1=i.o8n_1),!1},Pr(qk).o8t=function(t,n){for(var i=n,e=Sk(0,i);;){for(;e.o8n_1;)i=e,e=Sk(0,e);if(!i.o8n_1){e=i;var r=Ek(0,i);if(null==r)return Xr;if(!(i=r).o8n_1)return Xr}i.o8n_1=!1;var s,o=i.j8n_1,u=e.j8n_1,a=o.s8o_1,h=null==a?null:a.v8o_1,_=u.s8o_1;if(h!==(null==_?null:_.v8o_1)&&this.t8t(i))if(e.p8n_1){if(this.d8t(e),!te.i8r(u))throw ca();u=(e=Sk(0,i)).j8n_1}else if(i.p8n_1){if(this.d8t(i),!te.i8r(o))throw ca();o=(i=os(Ek(0,e))).j8n_1}if(o.v8o_1!==u.v8o_1){var l,c=o.s8o_1,f=null==c?null:c.v8o_1,v=u.s8o_1;if(f===(null==v?null:v.v8o_1)||i.p8n_1||e.p8n_1)l=!1;else{var d,w=o.s8o_1;if((null==w?null:w.v8o_1)===t.i8m_1)d=!0;else{var p=u.s8o_1;d=(null==p?null:p.v8o_1)===t.i8m_1}l=d}if(l){if(this.u8t(t,i))return Xr}else this.n8t(t,i)}if(o.v8o_1===u.v8o_1){var m=o.s8o_1,g=null==m?null:m.v8o_1,b=u.s8o_1;s=g===(null==b?null:b.v8o_1)}else s=!1;if(s){if(xk(0,u,o),this.d8t(i),!te.i8r(o))throw ca();i=os(Ek(0,e))}}},Pr(qk).v8t=function(t,n,i){var e,r=n,s=i,o=os(s.t8o_1),u=Sk(0,r),a=r.j8n_1,h=u.j8n_1,_=!1,l=a.s8o_1,c=null==l?null:l.v8o_1,f=h.s8o_1;if(c!==(null==f?null:f.v8o_1)&&this.u8t(t,r),Qi.x8q(os(a.v8o_1),os(t.i8m_1))){var v=te,d=o.s8o_1;if(!v.h8p(os(null==d?null:d.u8o_1),a))throw ca();o=Sk(0,r=os(this.f8t(r))).j8n_1,this.l8t(Sk(0,r),u),_=!0}if(Qi.x8q(os(h.v8o_1),os(t.i8m_1))){var w=te,p=s,m=h.s8o_1;if(!w.h8p(p,os(null==m?null:m.u8o_1)))throw ca();s=this.l8t(u,null),_=!0}if(_)return this.m8t(t,r,os(s.t8o_1),o,o,!0),Xr;if(Qi.v8q(os(h.v8o_1),os(a.v8o_1))){var g=h.s8o_1;e=os(null==g?null:g.u8o_1)}else e=a;var b=e,$=te,y=s.t8o_1;b=$.k8r(os(null==y?null:y.s8o_1),b),this.m8t(t,r,b,b.t8o_1,b.t8o_1,!1);var k=b.s8o_1,x=null==k?null:k.x8o_1;null!=x&&(x.p8n_1=!0),this.o8t(t,r)},Pr(qk).w8t=function(t,n,i){var e=n,r=e.j8n_1;if(Qi.x8q(os(r.v8o_1),i))return this.q8t(t,r,os(i.k8p_1)),Xr;var s=Qi,o=r.s8o_1;if(!s.x8q(os(null==o?null:o.v8o_1),i)){if(te.f8p(os(r.s8o_1)),e.p8n_1){if(!te.i8r(os(r.t8o_1)))throw ca();e.p8n_1=!1}if(!te.h8p(os(i.k8p_1),r))throw ca();return this.x8t(t,i),Xr}var u=Sk(0,e=this.g8t(e)),a=os(u.j8n_1.s8o_1),h=a.t8o_1,_=h;if(u.p8n_1){if(this.d8t(u),!te.i8r(a))throw ca();var l=null==_?null:_.s8o_1;a=os(null==l?null:l.u8o_1)}if(!te.h8p(os(i.k8p_1),a))throw ca();Qi.y8q(os(_))||(_=null),this.m8t(t,e,os(a.t8o_1),h,_,!0)},Pr(qk).y8t=function(t,n){var i=n.k8p_1,e=new My(os(null==i?null:i.s8o_1)),r=Ji.d8o(Ji.i8o(os(t.g8m_1),e)),s=r instanceof My?r:Nr(),o=Sk(0,s),u=s.j8n_1,a=o.j8n_1,h=Qi,_=u.s8o_1;if(0===h.q8q(os(null==_?null:_.v8o_1),n,os(u.v8o_1)))return this.w8t(t,s,n),Xr;var l=Qi,c=a.s8o_1,f=os(null==c?null:c.v8o_1),v=u.s8o_1,d=l.v8q(f,os(null==v?null:v.v8o_1))?s:o;if(s.m8n_1||d.p8n_1){var w;if(d===s){var p=te,m=n.k8p_1;w=p.k8r(os(null==m?null:m.s8o_1),os(u.u8o_1))}else{var g=te,b=a.s8o_1,$=null==b?null:b.t8o_1,y=g.k8r(os(null==$?null:$.s8o_1),os(n.k8p_1));w=os(y.s8o_1)}var k=w;if(d.p8n_1){if(!this.e8t(d,k))throw ca()}else this.j8t(t,this.h8t(t,s,k));this.x8t(t,n)}else this.m8t(t,s,os(n.k8p_1),n.k8p_1,null,!0)},Pr(qk).x8t=function(t,n){t.i8m_1=n;for(var i=os(n.k8p_1);null==i.x8o_1;)if((i=os(i.t8o_1))===n.k8p_1)return this.y8t(t,n),Xr;var e=os(this.f8t(os(i.x8o_1))),r=Sk(0,e),s=r.j8n_1,o=this.l8t(r,null);o.t8o_1===s?this.v8t(t,e,o):this.m8t(t,e,os(o.t8o_1),s,s,!0)},Pr(qk).z8t=function(t,n){var i=te.g8p(os(t.z8l_1)),e=i.v8o_1;null!=e&&(e.n8p_1=4e150);var r=i.v8o_1;null!=r&&(r.o8p_1=n);var s=i.s8o_1,o=null==s?null:s.v8o_1;null!=o&&(o.n8p_1=-4e150);var u=i.s8o_1,a=null==u?null:u.v8o_1;null!=a&&(a.o8p_1=n);var h=t,_=i.s8o_1;h.i8m_1=null==_?null:_.v8o_1;var l=new My(i);l.l8n_1=0,l.m8n_1=!1,l.p8n_1=!1,l.n8n_1=!0,l.o8n_1=!1,l.k8n_1=Ji.u8n(os(t.g8m_1),l)},Pr(qk).a8u=function(t){var n=Ji;t.g8m_1=n.s8n(t,new Ck(t)),this.z8t(t,-4e150),this.z8t(t,4e150)},Pr(qk).b8u=function(t){t:for(;;){var n=Ji.d8o(Ji.g8o(os(t.g8m_1))),i=null==n||n instanceof My?n:Nr();if(null==i)break t;var e=i;this.d8t(e)}Ji.t8n(os(t.g8m_1))},Pr(qk).c8u=function(t){for(var n=t.z8l_1,i=os(null==n?null:n.b8p_1),e=os(i.r8o_1);e!==i;){var r,s=os(e.r8o_1),o=os(e.u8o_1),u=Qi,a=os(e.v8o_1),h=e.s8o_1;if(u.x8q(a,os(null==h?null:h.v8o_1))){var _=e.u8o_1;r=!((null==_?null:_.u8o_1)===e)}else r=!1;if(r){if(this.q8t(t,o,e),!te.i8r(e))throw ca();o=os((e=o).u8o_1)}if(o.u8o_1===e){if(o!==e&&(o!==s&&o!==s.s8o_1||(s=os(s.r8o_1)),!te.i8r(o)))throw ca();if(e!==s&&e!==s.s8o_1||(s=os(s.r8o_1)),!te.i8r(e))throw ca()}e=s}},Pr(qk).d8u=function(t){t.h8m_1=ie.u8r();for(var n=os(t.h8m_1),i=t.z8l_1,e=os(null==i?null:i.z8o_1),r=os(e.i8p_1);r!==e;)r.p8p_1=n.x8r(r),r=os(r.i8p_1);if(!n.w8r()){var s=t.h8m_1;return null==s||s.v8r(),t.h8m_1=null,!1}return!0},Pr(qk).e8u=function(t){var n=t.h8m_1;null==n||n.v8r()},Pr(qk).f8u=function(t){for(var n=os(t.a8p_1.j8o_1);n!==t.a8p_1;){var i=os(n.j8o_1),e=os(n.l8o_1),r=e.u8o_1;if((null==r?null:r.u8o_1)===e&&(xk(0,os(e.t8o_1),e),!te.i8r(e)))return!1;n=i}return!0},Pr(qk).e8q=function(t){if(t.f8m_1=!1,this.c8u(t),!this.d8u(t))return!1;this.a8u(t);t:for(;;){var n=t.h8m_1,i=null==n?null:n.y8r(),e=null==i||i instanceof Jy?i:Nr();if(null==e)break t;var r=e;n:for(;;){var s=t.h8m_1,o=null==s?null:s.a8s(),u=null==o||o instanceof Jy?o:Nr();if(null==u||!Qi.x8q(u,r))break n;var a=t.h8m_1,h=null==a?null:a.y8r();u=h instanceof Jy?h:Nr(),this.q8t(t,os(r.k8p_1),os(u.k8p_1))}this.x8t(t,r)}var _=t,l=Ji.d8o(Ji.g8o(os(t.g8m_1)));return _.i8m_1=(l instanceof My?l:Nr()).j8n_1.v8o_1,this.b8u(t),this.e8u(t),!!this.f8u(os(t.z8l_1))&&(te.h8q(os(t.z8l_1)),!0)},Pr(Ok).g8u=function(t){var n=os(t.l8o_1);t:for(;;){var i=Qi,e=n.s8o_1;if(!i.v8q(os(null==e?null:e.v8o_1),os(n.v8o_1)))break t;var r=n.t8o_1;n=os(null==r?null:r.s8o_1)}t:for(;;){var s=Qi,o=os(n.v8o_1),u=n.s8o_1;if(!s.v8q(o,os(null==u?null:u.v8o_1)))break t;n=os(n.u8o_1)}for(var a=n.t8o_1,h=os(null==a?null:a.s8o_1);n.u8o_1!==h;){var _=Qi,l=n.s8o_1;if(_.v8q(os(null==l?null:l.v8o_1),os(h.v8o_1))){t:for(;;){var c;if(h.u8o_1!==n){var f;if(Qi.y8q(os(h.u8o_1)))f=!0;else{var v=Qi,d=os(h.v8o_1),w=h.s8o_1,p=os(null==w?null:w.v8o_1),m=h.u8o_1,g=null==m?null:m.s8o_1;f=v.q8q(d,p,os(null==g?null:g.v8o_1))<=0}c=f}else c=!1;if(!c)break t;var b=te.k8r(os(h.u8o_1),h);h=os(b.s8o_1)}var $=h.t8o_1;h=os(null==$?null:$.s8o_1)}else{t:for(;;){var y;if(h.u8o_1!==n){var k,x=Qi,S=n.t8o_1;if(x.z8q(os(null==S?null:S.s8o_1)))k=!0;else{var E=Qi,C=n.s8o_1,q=os(null==C?null:C.v8o_1),O=os(n.v8o_1),z=n.t8o_1,A=null==z?null:z.s8o_1;k=E.q8q(q,O,os(null==A?null:A.v8o_1))>=0}y=k}else y=!1;if(!y)break t;var T=te,I=n,D=n.t8o_1,j=T.k8r(I,os(null==D?null:D.s8o_1));n=os(j.s8o_1)}n=os(n.u8o_1)}}t:for(;;){var M=h.u8o_1;if((null==M?null:M.u8o_1)===n)break t;var N=te.k8r(os(h.u8o_1),h);h=os(N.s8o_1)}},Pr(Ok).f8q=function(t){for(var n=os(t.a8p_1.j8o_1);n!==t.a8p_1;){var i=os(n.j8o_1);n.p8o_1&&this.g8u(n),n=i}return!0},Pr(Ok).g8q=function(t,n,i){for(var e=os(t.b8p_1.r8o_1);e!==t.b8p_1;){var r=os(e.r8o_1),s=e.s8o_1,o=null==s?null:s.w8o_1,u=null==o?null:o.p8o_1,a=e.w8o_1;if(u!=(null==a?null:a.p8o_1))e.y8o_1=os(e.w8o_1).p8o_1?n:0|-n;else if(i){if(!te.i8r(e))return!1}else e.y8o_1=0;e=r}return!0},Pr(yx).ml=function(t){if(Pr(Dx).ml.call(this,t),!t.defaultPrevented)if("wheel"===t.type)t.preventDefault(),this.k8x(t instanceof WheelEvent?t:Nr());else for(var n=Jx().j8x_1.v();n.w();){var i=n.y();Ss(i.z8u_1,this.h8x_1.o8u_1)&&i.ml(t)}},Pr(yx).handleEvent=function(t){return this.ml(t)},Pr(yx).l8x=function(t){Ss(t,this.w8v_1)||Ss(t,this.y8v_1)?this.q8x(t):Ss(t,this.x8v_1)?this.p8x(t):Ss(t,this.z8v_1)?this.o8x(t):Ss(t,this.a8w_1)?this.n8x(t):Ss(t,this.b8w_1)&&this.m8x(t)},Pr(yx).q8x=function(t){this.h8x_1.t8x().y52_1.e58()?this.s8x(t):this.r8x(t)},Pr(yx).r8x=function(t){var n=t.b8v_1,i=t.e8v_1,e=t.f8v_1;switch(n.v9_1){case 3:this.u8x(),this.f8w_1.c5x(0,0);break;case 4:var r=this.h8x_1.t8x().y52_1,s=r.v59(),o=r.c69(),u=Math.max(s,o),a=this.e8w_1.n57_1,h=Math.max(1,a),_=this.h8x_1.t8x().u59(h)*this.h8x_1.t8x().h53_1,l=(e-this.f8w_1.h57_1)*_/u,c=-(i-this.f8w_1.g57_1)*_/u,f=Lh(this.e8w_1.o57_1),v=Math.sin(f),d=Lh(this.e8w_1.o57_1),w=Math.cos(d),p=this.e8w_1.l57_1;p.b54_1=Bh(p.b54_1,l*w-c*v),p.c54_1=Bh(p.c54_1,l*v+c*w),this.f8w_1.c5x(i,e),this.v8x();break;case 6:case 5:this.w8x()}},Pr(yx).s8x=function(t){var n=t.b8v_1,i=t.e8v_1,e=t.f8v_1;switch(n.v9_1){case 3:this.u8x(),this.h8x_1.t8x().y52_1.t57(this.c8w_1.l57_1.b54_1,this.c8w_1.l57_1.c54_1,this.c8w_1.l57_1.f54_1,this.d8w_1);break;case 4:var r=this.h8x_1.t8x().u59(this.e8w_1.n57_1)*this.h8x_1.t8x().h53_1,s=e*r,o=-i*r,u=this.e8w_1.o57_1,a=Lh(u),h=Math.sin(a),_=Lh(u),l=Math.cos(_),c=this.d8w_1.g57_1+s*h+o*l,f=this.d8w_1.h57_1+s*l-o*h;this.h8x_1.t8x().y52_1.r57(c,f,this.d8w_1.k57_1,this.e8w_1.l57_1),this.v8x();break;case 6:case 5:this.w8x()}},Pr(yx).p8x=function(t){var n=t.b8v_1,i=t.e8v_1,e=t.f8v_1;switch(n.v9_1){case 3:this.u8x();break;case 4:var r=180*i/this.h8x_1.o8u_1.clientWidth,s=90*e/this.h8x_1.o8u_1.clientHeight;this.e8w_1.o57_1=Vh(this.c8w_1.o57_1,r),this.e8w_1.p57_1=Vh(this.c8w_1.p57_1,s),this.v8x();break;case 6:case 5:this.w8x()}},Pr(yx).o8x=function(t){var n=t.b8v_1,i=(t instanceof nS?t:Nr()).x8y();switch(n.v9_1){case 3:this.u8x();break;case 4:0!==i&&(this.e8w_1.n57_1=this.c8w_1.n57_1/i,this.v8x());break;case 6:case 5:this.w8x()}},Pr(yx).n8x=function(t){var n=t.b8v_1,i=(t instanceof iS?t:Nr()).y8z();switch(n.v9_1){case 3:this.u8x(),this.g8w_1=0;break;case 4:this.e8w_1.o57_1=Wh(this.e8w_1.o57_1,i-this.g8w_1),this.g8w_1=i,this.v8x();break;case 6:case 5:this.w8x()}},Pr(yx).m8x=function(t){var n=t.b8v_1,i=t.f8v_1;switch(n.v9_1){case 3:this.u8x();break;case 4:var e=-90*i/this.h8x_1.o8u_1.clientHeight;this.e8w_1.p57_1=Vh(this.c8w_1.p57_1,e),this.v8x();break;case 6:case 5:this.w8x()}},Pr(yx).k8x=function(t){var n=ks(t.timeStamp);(n-this.h8w_1|0)>500&&(this.h8x_1.t8x().z57(this.e8w_1),this.h8w_1=n);var i=t.deltaMode,e=1+(i===WheelEvent.DOM_DELTA_PIXEL?t.deltaY:i===WheelEvent.DOM_DELTA_LINE?20*t.deltaY:i===WheelEvent.DOM_DELTA_PAGE?200*t.deltaY:t.deltaY)/1e3,r=this.e8w_1;r.n57_1=r.n57_1*e,this.v8x()},Pr(yx).v8x=function(){this.h8x_1.t8x().a58(this.e8w_1),this.h8x_1.w52()},Pr(yx).u8x=function(){var t=this.i8w_1;this.i8w_1=t+1|0,0===t&&(this.h8x_1.t8x().z57(this.c8w_1),this.e8w_1.z5v(this.c8w_1))},Pr(yx).w8x=function(){this.i8w_1>0&&(this.i8w_1=this.i8w_1-1|0)},Pr(kx).l90=function(){this.e90_1.o57_1=Uh().j58_1,this.z8z_1.t8x().a58(this.e90_1),this.z8z_1.w52()},Pr(kx).m90=function(){this.e90_1.o57_1=Uh().j58_1,this.e90_1.p57_1=Uh().j58_1,this.z8z_1.t8x().a58(this.e90_1),this.z8z_1.w52()},Pr(kx).k90=function(t){if(this.f90_1){var n=this.e90_1.o57_1,i=this.c90_1*this.e90_1.n57_1;switch(t){case"panDown":n=Yh(n,Uh().m58_1);break;case"panLeft":n=Yh(n,Uh().k58_1);break;case"panRight":n=Hh(n,Uh().k58_1)}this.e90_1.l57_1.u5v(n,i,this.e90_1.l57_1),this.z8z_1.t8x().a58(this.e90_1),this.z8z_1.w52(),window.setTimeout((e=this,(r=function(t){return e.k90(t),Xr}).callableName="handlePan",r),50,t)}var e,r},Pr(kx).i90=function(t){if(this.f90_1){if("zoomIn"===t){var n=this.e90_1;n.n57_1=n.n57_1*(1-this.b90_1)}else if("zoomOut"===t){var i=this.e90_1;i.n57_1=i.n57_1*(1+this.b90_1)}this.z8z_1.t8x().a58(this.e90_1),this.z8z_1.w52(),window.setTimeout((e=this,(r=function(t){return e.i90(t),Xr}).callableName="handleZoom",r),50,t)}var e,r},Pr(kx).j90=function(t){var n,i;this.f90_1&&("tiltUp"===t?this.e90_1.p57_1=Wh(this.e90_1.p57_1,this.d90_1):"tiltDown"===t&&(this.e90_1.p57_1=Vh(this.e90_1.p57_1,this.d90_1)),this.z8z_1.t8x().a58(this.e90_1),this.z8z_1.w52(),window.setTimeout((n=this,(i=function(t){return n.j90(t),Xr}).callableName="handleTilt",i),50,t))},Pr(Sx).y90=function(t,n){var i=this.z90(t,n);return i.bc_1=Xr,i.cc_1=null,i.mc()},Pr(Sx).zc=function(t,n){return this.y90(null!=t&&ss(t,Ya)?t:Nr(),n)},Pr(Sx).mc=function(){for(this.bc_1;;)try{var t=this.zb_1;if(0===t){this.ac_1=1;var n=this.x90_1;return n instanceof Ua?this.w90_1.w52():n instanceof Ha&&this.w90_1.t8x().x52_1.x54_1.k6c(this.x90_1.a91_1),Xr}if(1===t)throw this.cc_1}catch(t){throw t}},Pr(Sx).z90=function(t,n){var i=new Sx(this.w90_1,n);return i.x90_1=t,i},Pr(qx).d91=function(t){var n={alpha:!0,depth:!0,stencil:!1,antialias:!1,premultipliedAlpha:!0,preserveDrawingBuffer:!1,preferLowPowerToHighPerformance:!1,failIfMajorPerformanceCaveat:!1},i=t.getContext("webgl",n),e=null==i?t.getContext("experimental-webgl",n):i;if(!(e instanceof WebGLRenderingContext)){var r=kr.n54(kr.i54_1,"WorldWindow","createContext","webglNotSupported");throw is(Gr(r))}return e},Pr(zx).f14=function(t,n){return this.e91_1(t,n)},Pr(Tx).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=Xr,i.cc_1=null,i.mc()},Pr(Tx).zc=function(t,n){return this.v1g(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(Tx).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=2,this.zb_1=1;var n=Ba().v52_1,i=Ex(this.o91_1,null);if((t=n.i14(new zx(i),this))===Js())return t;continue t;case 1:pa();break;case 2:throw this.cc_1}}catch(t){var e=t;if(2===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},Pr(Tx).w1g=function(t,n){var i=new Tx(this.o91_1,n);return i.p91_1=t,i},Pr(Ix).s91=function(){return this.t8x().x52_1.w54_1},Pr(Ix).t8x=function(){return this.q8u_1},Pr(Ix).t91=function(){return this.u8u_1},Pr(Ix).n90=function(t,n){var i,e,r={_v:this.r8u_1.o2(t)};if(null==r._v){var s=new Cx((i=this,e=r,function(t){t.worldWindow=i;var n=e._v,r=null==n?null:n.c91_1;if(null==r);else for(var s=r.v();s.w();)s.y().handleEvent(t);return Xr}));this.r8u_1.e2(t,s),r._v=s}r._v.c91_1.r(n)||(r._v.c91_1.p1(0,n),1===r._v.c91_1.n()&&this.o8u_1.addEventListener(t,r._v.b91_1,!1))},Pr(Ix).w52=function(){this.y8u_1=!0},Pr(Ix).u91=function(t,n){var i=this.o8u_1.getBoundingClientRect();return new nl(xs(t)-(i.left+this.o8u_1.clientLeft),xs(n)-(i.top+this.o8u_1.clientTop))},Pr(Ix).v91=function(t){return this.w91(t.g57_1,t.h57_1)},Pr(Ix).x91=function(t,n,i,e,r){var s,o=new Fa,u=this.t8x().f53_1;if(u.n19())return o;if(0!==i&&0!==e){var a=Math.floor(t),h=ks(a),_=u.j55_1,l=n+e,c=Math.ceil(l),f=_-ks(c)|0,v=Math.ceil(i),d=ks(v),w=Math.ceil(e);s=new sl(h,f,d,ks(w))}else s=new sl(Wr(t)-1|0,(u.j55_1-Wr(n)|0)-1|0,3,3);var p=s;if(!p.t5y(u))return o;if(this.w8u_1.c5a_1=o,this.w8u_1.e5a_1=p,r){var m=p.g55_1+p.i55_1/2,g=p.h55_1+p.j55_1/2;if(u.u5y(m,g)){var b=w_();this.t8x().l59(m,u.j55_1-g,b)&&(this.w8u_1.f5a_1=new nl(m,g),this.w8u_1.g5a_1=b)}}return this.w8u_1.h5a_1=!0,this.y91(),o},Pr(Ix).w91=function(t,n,i,e,r,s){return i=i===Yr?0:i,e=e===Yr?0:e,r=r===Yr||r,s===Yr?this.x91(t,n,i,e,r):s.x91.call(this,t,n,i,e,r)},Pr(Ix).q56=function(){window.cancelAnimationFrame(this.x8u_1),io(this.s91().am()),this.t8x().r1h()},Pr(Ix).f91=function(){this.t8x().x52_1.b1(),this.t8x().l55(),this.t8x().h54(window.devicePixelRatio),this.p8u_1.getExtension("WEBGL_depth_texture"),this.p8u_1.getExtension("OES_element_index_uint");var t,n,i=this.s91();ro(i,Yr,Yr,(t=new Tx(this,null),(n=function(n,i){return t.v1g(n,i)}).$arity=1,n)),this.w52(),this.q91()},Pr(Ix).q91=function(){this.z91();var t,n=window;this.x8u_1=n.requestAnimationFrame((t=this,function(n){return t.q91(),Xr}))},Pr(Ix).z91=function(){if(this.a92(),!this.y8u_1)return Xr;this.y8u_1=!1,this.y91()},Pr(Ix).y91=function(){var t=this.w8u_1.h5a_1;try{t||this.b92((xx(),vr)),(this.t8x().w59(this.w8u_1)||t)&&this.w52(),this.t8x().q5c(this.w8u_1)}catch(t){if(!(t instanceof $s))throw t;var n=t;kr.n54(kr.i54_1,"WorldWindow","drawFrame","Exception occurred during redrawing.\n"+n)}finally{this.w8u_1.u5d(),t||this.b92((xx(),fr))}},Pr(Ix).a92=function(){var t=this.p8u_1.canvas.clientWidth*this.t8x().h53_1,n=Wr(t),i=this.p8u_1.canvas.clientHeight*this.t8x().h53_1,e=Wr(i);(this.p8u_1.canvas.width!==n||this.p8u_1.canvas.height!==e||this.t8x().f53_1.n19())&&(this.p8u_1.canvas.width=n,this.p8u_1.canvas.height=e,this.t8x().s56(this.p8u_1.drawingBufferWidth,this.p8u_1.drawingBufferHeight),this.w52())},Pr(Ix).b92=function(t){for(var n=this.v8u_1.v();n.w();){var i=n.y();try{i(this,t)}catch(t){if(!(t instanceof $s))throw t;var e=t;kr.v5o(kr.i54_1,"Exception calling redraw callback.\n"+e)}}return Xr},Pr(Dx).ml=function(t){var n=0,i=this.i8x_1.n()-1|0;if(n<=i)t:do{var e=n;if(n=n+1|0,this.i8x_1.h1(e).handleEvent(t),t.defaultPrevented)break t}while(n<=i)},Pr(Dx).handleEvent=function(t){return this.ml(t)},Pr(Mx).h94=function(t){var n,i=this.e94_1;if(0===i)n=this.g94_1;else{if(34737===i){var e=kr.n54(kr.i54_1,"GeoTiffKeyEntry","getGeoKeyValue","Invalid key type");throw fs(Gr(e))}n=34736===i?t.h1(this.g94_1):null}return n},Pr(Mx).i94=function(t){if(34737!==this.e94_1){var n=kr.n54(kr.i54_1,"GeoTiffKeyEntry","getAsciiGeoKeyValue","Invalid key type");throw is(Gr(n))}var i;if(null==t)i=null;else{var e=jo(),r=this.g94_1,s=this.f94_1-1|0;if(r>>8|0:t.getUint32(n,e)>>>8|0;else if(i<=4)s=r?t.getInt32(n,e):t.getUint32(n,e);else{if(!(i<=8)){var u=kr.n54(kr.i54_1,"GeoTiffUtil","getBytes","Too many bytes requested");throw fs(Gr(u))}s=t.getFloat64(n,e)}return s},Pr(Ux).g96=function(t,n,i,e,r,s){return r=r!==Yr&&r,s===Yr?this.r96(t,n,i,e,r):s.r96.call(this,t,n,i,e,r)},Pr(Ux).h96=function(t,n,i,e,r){var s;if(1===e)s=this.r96(t,n,i,r,!1);else if(2===e)s=this.r96(t,n,i,r,!0);else if(3===e){var o;switch(i){case 3:o=ks(t.getFloat32(n,r))>>>8|0;break;case 4:o=t.getFloat32(n,r);break;case 8:o=t.getFloat64(n,r);break;default:var u=kr.n54(kr.i54_1,"GeoTiffUtil","getSampleBytes","Do not attempt to parse the data not handled: "+i);throw fs(Gr(u))}s=o}else s=this.r96(t,n,i,r,!1);return s},Pr(Wx).l9a=function(t){if(!t&&2===this.j96_1){var n=kr.n54(kr.i54_1,"TiffIFDEntry","getIFDEntryValue","Invalid Key Type - ASCII not allowed.");throw is(Gr(n))}var i,e=1!==(i=this.j96_1)&&2!==i&&6!==i&&7!==i?3===i||8===i?2:4===i||9===i||11===i?4:5===i||10===i||12===i?8:-1:1;return Tr(e,this.k96_1)<=4?Tu(this.n96_1?this.l96_1:this.l96_1>>Tr(4-e|0,8)):function(t,n){var i=_s(),e=0,r=t.k96_1;if(e=8){var u=t.j96_1;if(5===u||10===u)i.s(pr.g96(t.m96_1,t.l96_1+o|0,4,t.n96_1)),i.s(pr.g96(t.m96_1,4+(t.l96_1+o|0)|0,4,t.n96_1));else{if(12!==u){var a=kr.n54(kr.i54_1,"TiffIFDEntry","getIFDEntryValue","Invalid Type of IFD");throw fs(Gr(a))}i.s(pr.g96(t.m96_1,t.l96_1+o|0,8,t.n96_1))}}else i.s(pr.g96(t.m96_1,t.l96_1+o|0,n,t.n96_1))}while(ethis.i9b_1*window.devicePixelRatio&&this.n9b(Hl())},Pr(Gx).s9b=function(t){return this.b8v_1.equals(Ul())?0!==this.g8v_1?Xr:void(this.l9b_1.n()===this.g9b_1?(this.c8v_1=this.l9b_1.h1(0).t9b_1,this.d8v_1=this.l9b_1.h1(0).u9b_1,this.n9b(Vl())):this.q9b(this.k9b_1)):Xr},Pr(Gx).v9b=function(t){if(!this.b8v_1.equals(Ul()))return Xr;this.n9b(Hl())},Pr(Gx).q9b=function(t){var n=this.m9b_1;null==n||window.clearTimeout(n);var i,e=window;this.m9b_1=e.setTimeout((i=this,function(){return i.m9b_1=null,i.b8v_1.equals(Ul())&&i.n9b(Hl()),Xr}),t)},Pr(Gx).o9b=function(){var t=this.m9b_1;null==t||window.clearTimeout(t),this.m9b_1=null},Pr(Kx).r9b=function(t){var n;this.b8v_1.equals(Ul())?this.a9d()&&(this.z9c()?(this.y9c(),n=Bl()):n=Hl(),this.n9b(n)):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Yl())},Pr(Kx).s9b=function(t){0===this.g8v_1&&(this.b8v_1.equals(Ul())?this.n9b(Hl()):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Gl()))},Pr(Kx).v9b=function(t){this.b8v_1.equals(Ul())&&this.n9b(Hl())},Pr(Kx).a9d=function(){var t=this.e8v_1,n=this.f8v_1,i=t*t+n*n;return Math.sqrt(i)>this.e8x_1*window.devicePixelRatio},Pr(Kx).z9c=function(){return 1<0)return Xr;var n=1<this.e9e_1*window.devicePixelRatio},Pr(tS).z9c=function(){var t=this.c9e_1,n=this.d9e_1,i=this.b9d();return t<=i&&i<=n},Pr(nS).x8y=function(){return this.u8y_1*this.v8y_1},Pr(nS).r1h=function(){Pr(Qx).r1h.call(this),this.u8y_1=1,this.v8y_1=1,this.r8y_1=0,this.w8y_1.b1()},Pr(nS).p9b=function(t){this.b8v_1.equals(Ul())&&this.n9b(Hl())},Pr(nS).v9b=function(t){this.w8y_1.n()<2&&(this.w8y_1.s(t),2===this.w8y_1.n()&&(this.r8y_1=this.f9e(),this.v8y_1=this.v8y_1*this.u8y_1,this.u8y_1=1))},Pr(nS).a9c=function(t){if(2===this.w8y_1.n())if(this.b8v_1.equals(Ul()))this.z9c()&&this.n9b(Bl());else if(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl())){var n=this.f9e()/this.r8y_1,i=Math.abs(n),e=this.t8y_1;this.u8y_1=this.u8y_1*(1-e)+i*e,this.n9b(Yl())}},Pr(nS).c9c=function(t){this.w8y_1.t(t),0===this.b9d()&&(this.b8v_1.equals(Ul())?this.n9b(Hl()):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Gl()))},Pr(nS).b9c=function(t){this.w8y_1.t(t),0===this.b9d()&&(this.b8v_1.equals(Ul())?this.n9b(Hl()):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Wl()))},Pr(nS).z9b=function(){this.r8y_1=this.f9e(),this.u8y_1=1},Pr(nS).z9c=function(){var t=this.f9e()-this.r8y_1;return Math.abs(t)>this.s8y_1*window.devicePixelRatio},Pr(nS).f9e=function(){var t=this.w8y_1.h1(0),n=this.w8y_1.h1(1),i=t.e9d_1-n.e9d_1|0,e=t.f9d_1-n.f9d_1|0,r=Tr(i,i)+Tr(e,e)|0;return Math.sqrt(r)},Pr(iS).y8z=function(){return this.v8z_1+this.w8z_1},Pr(iS).r1h=function(){Pr(Qx).r1h.call(this),this.v8z_1=0,this.w8z_1=0,this.s8z_1=0,this.x8z_1.b1()},Pr(iS).p9b=function(t){this.b8v_1.equals(Ul())&&this.n9b(Hl())},Pr(iS).v9b=function(t){this.x8z_1.n()<2&&(this.x8z_1.s(t),2===this.x8z_1.n()&&(this.s8z_1=this.g9e(),this.w8z_1=this.w8z_1+this.v8z_1,this.v8z_1=0))},Pr(iS).a9c=function(t){if(2===this.x8z_1.n())if(this.b8v_1.equals(Ul()))this.z9c()&&this.n9b(Bl());else if(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl())){var n=this.g9e(),i=Uh().o5t(n-this.s8z_1),e=this.u8z_1;this.v8z_1=this.v8z_1*(1-e)+i*e,this.n9b(Yl())}},Pr(iS).c9c=function(t){this.x8z_1.t(t),0===this.b9d()&&(this.b8v_1.equals(Ul())?this.n9b(Hl()):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Gl()))},Pr(iS).b9c=function(t){this.x8z_1.t(t),0===this.b9d()&&(this.b8v_1.equals(Ul())?this.n9b(Hl()):(this.b8v_1.equals(Bl())||this.b8v_1.equals(Yl()))&&this.n9b(Wl()))},Pr(iS).z9b=function(){this.s8z_1=this.g9e(),this.v8z_1=0},Pr(iS).z9c=function(){this.v8z_1=Uh().o5t(this.g9e()-this.s8z_1);var t=this.v8z_1;return Math.abs(t)>this.t8z_1},Pr(iS).g9e=function(){var t=this.x8z_1.h1(0),n=this.x8z_1.h1(1),i=t.e9d_1-n.e9d_1|0,e=t.f9d_1-n.f9d_1|0,r=Uh(),s=Math.atan2(e,i);return r.m5t(s)},Pr(rS).z9c=function(){return!!Pr(Kx).z9c.call(this)&&this.b9g_1.r9e_1},Pr(sS).z9c=function(){return!!Pr(tS).z9c.call(this)&&this.z9g_1.r9e_1},Pr(oS).e9f=function(){this.q9e_1=!1,this.r9e_1=!1},Pr(uS).r1h=function(){Pr(Qx).r1h.call(this),this.z9h_1.b1(),this.b9i()},Pr(uS).p9b=function(t){if(!this.b8v_1.equals(Ul()))return Xr;this.n9b(Hl())},Pr(uS).v9b=function(t){if(!this.b8v_1.equals(Ul()))return Xr;if(this.b9d()>this.v9h_1)this.n9b(Hl());else if(1===this.b9d())this.z9h_1.s(new _S(this.b9d(),this.c8v_1,this.d8v_1)),this.q9b(this.x9h_1);else{var n=this.z9h_1.h1(this.z9h_1.n()-1|0);n.d9d_1=this.b9d(),n.e9d_1=this.c8v_1,n.f9d_1=this.d8v_1}},Pr(uS).a9c=function(t){if(!this.b8v_1.equals(Ul()))return Xr;var n=this.e8v_1,i=this.f8v_1,e=n*n+i*i;Math.sqrt(e)>this.w9h_1*window.devicePixelRatio&&this.n9b(Hl())},Pr(uS).c9c=function(t){if(!this.b8v_1.equals(Ul()))return Xr;if(0!==this.b9d())return Xr;var n=this.z9h_1.n();this.z9h_1.h1(n-1|0).d9d_1!==this.v9h_1?this.n9b(Hl()):n===this.u9h_1?(this.c8v_1=this.z9h_1.h1(0).e9d_1,this.d8v_1=this.z9h_1.h1(0).f9d_1,this.n9b(Vl())):this.q9b(this.y9h_1)},Pr(uS).b9c=function(t){if(!this.b8v_1.equals(Ul()))return Xr;this.n9b(Hl())},Pr(uS).q9b=function(t){var n=this.a9i_1;null==n||window.clearTimeout(n);var i,e=window;this.a9i_1=e.setTimeout((i=this,function(){return i.a9i_1=null,i.b8v_1.equals(Ul())&&i.n9b(Hl()),Xr}),t)},Pr(uS).b9i=function(){var t,n=this.a9i_1;null==n?t=null:(window.clearTimeout(n),t=Xr);var i=t;return this.a9i_1=null,i},Pr(hS).a9d=function(){var t=0,n=this.b9d();if(tthis.e9e_1)return!0}while(tthis.d9j_1*window.devicePixelRatio)return!1;var s=t.f9j()-n.f9j()|0,o=t.g9j()-n.g9j()|0,u=Tr(s,s)+Tr(o,o)|0;if(Math.sqrt(u)>this.e9j_1*window.devicePixelRatio)return!1;return!(0==(12&this.h9j(t)&this.h9j(n)&12))},Pr(hS).h9j=function(t){var n=t.f9j(),i=t.g9j(),e=0;return Fs(n)>Fs(i)?(e|=n<0?1:0,e|=n>0?2:0):(e|=i<0?4:0,e|=i>0?8:0),e},Pr(_S).f9j=function(){return this.e9d_1-this.g9d_1|0},Pr(_S).g9j=function(){return this.f9d_1-this.h9d_1|0},Pr(lS).i9j=function(t){return new cS(t.href)},Pr(lS).m7e=function(t){var n;try{n=this.i9j(new URL(t))}catch(t){if(t instanceof $s){var i=t;throw kr.k5t(kr.i54_1,"ElevationSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Pr(lS).j9j=function(t){return t instanceof URL?this.i9j(t):"string"==typeof t?this.m7e(t):new cS(t)},Pr(cS).m9j=function(){return"string"==typeof this.k7c_1},Pr(cS).n9j=function(){var t=this.k7c_1;return"string"==typeof t?t:Nr()},Pr(cS).toString=function(){return"string"==typeof this.k7c_1?"URL: "+Gr(this.k7c_1):Pr(A$).toString.call(this)},Pr(vS).d7i=function(t,n,i){return gr.j9j(new Object)},Pr(dS).z9j=function(t,n){var i=this.w1g(t,n);return i.bc_1=Xr,i.cc_1=null,i.mc()},Pr(dS).zc=function(t,n){return this.z9j(null!=t&&ss(t,Xs)?t:Nr(),n)},Pr(dS).mc=function(){for(this.bc_1;;)try{var t=this.zb_1;if(0===t)return this.ac_1=1,new Fx(this.x9j_1).q96();if(1===t)throw this.cc_1}catch(t){throw t}},Pr(dS).w1g=function(t,n){var i=new dS(this.x9j_1,n);return i.y9j_1=t,i},Pr(wS).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=12,this.n9k_1=this.i9k_1.r6b_1.d7i(this.k9k_1,this.l9k_1,this.m9k_1),this.n9k_1.m9j()){if(this.o9k_1=this.n9k_1.n9j(),this.ac_1=9,this.zb_1=1,(t=Ea(fetch(this.o9k_1),this))===Js())return t;continue t}this.i9k_1.d6d(this.j9k_1,"Unsupported elevation source type"),this.zb_1=11;continue t;case 1:if(this.p9k_1=t,this.p9k_1.ok){if(this.zb_1=2,(t=Ea(this.p9k_1.arrayBuffer(),this))===Js())return t;continue t}this.i9k_1.d6d(this.j9k_1,"Elevations retrieval failed ("+this.p9k_1.statusText+"): "+this.o9k_1),this.zb_1=8;continue t;case 2:if(this.q9k_1=t,this.r9k_1=this.p9k_1.headers.get("Content-Type"),this.s9k_1=null,qa(this.r9k_1,"image/bil",!0)||qa(this.r9k_1,"application/bil",!0)||qa(this.r9k_1,"application/bil16",!0)){this.t9k_1=new Int16Array(this.q9k_1),this.zb_1=4;continue t}if(qa(this.r9k_1,"application/bil32",!0)){this.t9k_1=new Float32Array(this.q9k_1),this.zb_1=4;continue t}if(qa(this.r9k_1,"image/tiff",!0)){if(this.zb_1=3,(t=fS(this.i9k_1,this.q9k_1,this))===Js())return t;continue t}if(qa(this.r9k_1,"text/xml",!0)){this.s9k_1="Elevations retrieval failed ("+this.p9k_1.statusText+"): "+this.o9k_1+".\n",Ca.fromCharCode.apply(null,new Uint8Array(this.q9k_1)),this.t9k_1=null,this.zb_1=4;continue t}this.s9k_1="Elevations retrieval failed (Unexpected content type "+this.r9k_1+"): "+this.o9k_1,this.t9k_1=null,this.zb_1=4;continue t;case 3:this.t9k_1=t,this.zb_1=4;continue t;case 4:if(this.u9k_1=this.t9k_1,null==this.u9k_1){this.v9k_1=null,this.zb_1=7;continue t}if(this.w9k_1=this.u9k_1,this.x9k_1=this.w9k_1,this.y9k_1=this.n9k_1.l7c_1,null==this.y9k_1){this.z9k_1=null,this.zb_1=6;continue t}if(this.zb_1=5,(t=this.y9k_1.h7c(this.x9k_1,this))===Js())return t;continue t;case 5:this.z9k_1=t,this.zb_1=6;continue t;case 6:var n=this.z9k_1;this.v9k_1=null==n?this.x9k_1:n,this.zb_1=7;continue t;case 7:var i,e=this.v9k_1,r=this.i9k_1.b6d(e);if(null==r?i=null:(this.i9k_1.c6d(this.j9k_1,r,"Elevation retrieval succeeded: "+this.o9k_1),i=Xr),null==i){var s=this.s9k_1;this.i9k_1.d6d(this.j9k_1,null==s?"Elevations retrieval failed: "+this.o9k_1:s)}this.zb_1=8;continue t;case 8:this.ac_1=12,this.zb_1=10;continue t;case 9:if(this.ac_1=12,this.cc_1 instanceof Error){var o=this.cc_1;this.i9k_1.d6d(this.j9k_1,"Elevations retrieval failed ("+o.message+"): "+this.o9k_1),this.zb_1=10;continue t}throw this.cc_1;case 10:this.ac_1=12,this.zb_1=11;continue t;case 11:return Xr;case 12:throw this.cc_1}}catch(t){var u=t;if(12===this.ac_1)throw u;this.zb_1=this.ac_1,this.cc_1=u}},Pr(pS).y6b=function(t,n,i,e,r){var s=new wS(this,t,n,i,e,r);return s.bc_1=Xr,s.cc_1=null,s.mc()},Pr(pS).b6d=function(t){var n;if(t instanceof Int16Array){for(var i=0,e=t.length,r=new Int16Array(e);i=this.v54_1||this.y54_1.r(t)||this.x54_1.i6c(t.hashCode())||(t.b9o()?this.z9n(t,n,t.a9o().l3m_1):t.m9j()?this.z9n(t,n,t.n9j()):t.w9n()&&(this.y54_1.s(t),ro(this.w54_1,Yr,Yr,(h=new OS(t,this,n,null),(_=function(t,n){return h.v1g(t,n)}).$arity=1,_)))),null;var h,_},Pr(IS).c7h=function(t,n){var i,e;ro(this.w54_1,Yr,Yr,(i=new zS(n,t,null),(e=function(t,n){return i.v1g(t,n)}).$arity=1,e))},Pr(IS).z9n=function(t,n,i){var e,r,s=new Image;s.onload=TS(t,{_v:!1},this,n,s),s.onerror=(e=this,r=t,function(t,n,i,s,o){return e.w9m(r),Xr}),this.y54_1.s(t),s.crossOrigin="anonymous",s.src=i},Pr(IS).u9n=function(t,n){var i;if(n instanceof HTMLImageElement)i=Is(n.width,n.height);else{if(!(n instanceof HTMLCanvasElement))return null;i=Is(n.width,n.height)}var e=i,r=e.oe(),s=e.pe();if(0===r||0===s){var o=null!=t&&t.f87_1>0?r/t.f87_1|0:0,u=null!=t&&t.g87_1>0?s/t.g87_1|0:0,a=u>o?u:o;a>0&&(r=r/a|0,s=s/a|0)}else null!=t&&t.f87_1>0&&t.g87_1>0&&(r=t.f87_1,s=t.g87_1);var h=new FS(n,r,s);return Ss(null==t?null:t.d87_1,Ib())&&(h.p5f(Yk(),Wk()),h.p5f(Gk(),Wk())),Ss(null==t?null:t.e87_1,Mb())&&(h.p5f(Kk(),Xk()),h.p5f(Jk(),Xk())),h},Pr(IS).v9m=function(t,n,i){var e=this.u9n(n,i);null==e||this.f5t(t,e,e.w85()),this.y54_1.t(t),this.x54_1.k6c(t.hashCode()),Ba().w52(),kr.a9l(kr.l54_1)&&kr.v5o(kr.l54_1,"Image retrieval succeeded: "+t)},Pr(IS).w9m=function(t){this.y54_1.t(t),this.x54_1.m6c(t.hashCode()),kr.v5o(kr.j54_1,"Image retrieval failed: "+t)},Pr(DS).v85=function(t,n){return!0===(null==t?null:Eo(t)>0)?LS(this.c9o(t,n)):null},Pr(DS).c9o=function(t,n){var i=document.createElement("canvas"),e=i instanceof HTMLCanvasElement?i:Nr(),r=e.getContext("2d"),s=r instanceof CanvasRenderingContext2D?r:Nr(),o=this.d9o(s,t,n),u=Lo(t,["\n"]),a=n.v6u_1?n.u6u_1/2:0,h=o.g57_1*this.t85_1.r5a_1,_=Math.ceil(h);e.width=ks(_);var l=o.h57_1*this.t85_1.r5a_1,c=Math.ceil(l);e.height=ks(c),s.scale(this.t85_1.r5a_1,this.t85_1.r5a_1),s.font=n.y6u_1.toString(),s.textBaseline="bottom",s.textAlign=n.y6u_1.f8j_1,s.fillStyle=n.z6u_1.b83(),s.strokeStyle=n.b6v_1.b83(),s.lineWidth=n.u6u_1,s.lineCap="round",s.lineJoin="round";var f=n.y6u_1.f8j_1;Ss(f,"left")?s.translate(a,0):Ss(f,"right")?s.translate(o.g57_1-a,0):s.translate(o.g57_1/2,0);var v=0,d=u.n()-1|0;if(v<=d)do{var w=v;v=v+1|0;var p=u.h1(w);s.translate(0,n.y6u_1.a8j_1*(1+this.u85_1)+a),n.v6u_1&&s.strokeText(p,0,0),s.fillText(p,0,0)}while(v<=d);return e},Pr(DS).d9o=function(t,n,i){0===Eo(n)&&tl(),t.font=i.y6u_1.toString();var e=Lo(n,["\n"]),r=e.n()*(i.y6u_1.a8j_1*(1+this.u85_1)),s=0,o=0,u=e.n()-1|0;if(o<=u)do{var a=o;o=o+1|0,s=yo(s,t.measureText(e.h1(a)).width)}while(o<=u);return i.v6u_1&&(s+=i.u6u_1,r+=i.u6u_1),new nl(s,r)},Pr(jS).m6j=function(t){return new PS(t)},Pr(jS).i9j=function(t){return new PS(t.href)},Pr(jS).m7e=function(t){var n;try{n=this.i9j(new URL(t))}catch(t){if(t instanceof $s){var i=t;throw kr.k5t(kr.i54_1,"ImageSource","fromUrlString","invalidUrlString",i),i}throw t}return n},Pr(jS).v6v=function(t,n){var i,e=Ps(t).nb(new Hr(-1,0)),r=Ps(n).nb(new Hr(65535,0)),s=e.kb(32).ob(r),o=this.l6j_1.o2(s);if(null==o){var u=new RS(t,n);MS().l6j_1.e2(s,u),i=u}else i=o;return new PS(i)},Pr(RS).u9m=function(){var t=document.createElement("canvas"),n=t instanceof HTMLCanvasElement?t:Nr();n.width=this.e9o_1<=0?16:Tr(this.e9o_1,16),n.height=1;var i=n.getContext("2d"),e=i instanceof CanvasRenderingContext2D?i:Nr();if(e.strokeStyle="white",e.beginPath(),this.e9o_1<=0)e.moveTo(0,.5),e.lineTo(n.width,.5);else{var r=0,s=0;if(s<=15)do{var o=s;s=s+1|0,0!=(this.f9o_1&1<>>0,e=arguments[1]>>0,r=e<0?Math.max(i+e,0):Math.min(e,i),s=arguments[2],o=void 0===s?i:s>>0,u=o<0?Math.max(i+o,0):Math.min(o,i);ro&&(n+=t*t*t/6),n}var i=Math.exp(t),e=1/i;return isFinite(i)?isFinite(e)?(i-e)/2:-Math.exp(-t-Math.LN2):Math.exp(t-Math.LN2)}}void 0===Math.clz32&&(Math.clz32=(r=Math.log,s=Math.LN2,function(t){var n=t>>>0;return 0===n?32:31-(r(n)/s|0)|0})),void 0===Math.sign&&(Math.sign=function(t){return 0==(t=+t)||isNaN(t)?Number(t):t>0?1:-1}),void 0===Math.log10&&(Math.log10=function(t){return Math.log(t)*Math.LOG10E}),void 0===String.prototype.endsWith&&Object.defineProperty(String.prototype,"endsWith",{value:function(t,n){var i=this.toString();(void 0===n||n>i.length)&&(n=i.length),n-=t.length;var e=i.indexOf(t,n);return-1!==e&&e===n}}),void 0===String.prototype.startsWith&&Object.defineProperty(String.prototype,"startsWith",{value:function(t,n){return n=n||0,this.lastIndexOf(t,n)===n}}),void 0===Math.imul&&(Math.imul=function(t,n){return(4294901760&t)*(65535&n)+(65535&t)*(0|n)|0}),void 0===(e="function"==typeof(i=function(t){"use strict";var n,i,e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt,ct,ft,vt,dt,wt,pt,mt,gt,bt,$t,yt,kt,xt,St,Et,Ct,qt,Ot,zt=Math.clz32,At=ArrayBuffer.isView,Tt=Math.imul;function It(t){return t===a_()?this:t.ig(this,s_)}function Dt(t){return Gs(this.g2(),t)?Jo(this,r_)?this:ro():null}function jt(t,n){return n(t,this)}function Mt(t){return Gs(this.g2(),t)?a_():this}function Nt(){}function Rt(){}function Pt(){}function Lt(){}function Ft(){this.MIN_VALUE=-128,this.MAX_VALUE=127,this.SIZE_BYTES=1,this.SIZE_BITS=8}function Ut(){this.MIN_VALUE=-32768,this.MAX_VALUE=32767,this.SIZE_BYTES=2,this.SIZE_BITS=16}function Ht(){this.MIN_VALUE=-2147483648,this.MAX_VALUE=2147483647,this.SIZE_BYTES=4,this.SIZE_BITS=32}function Vt(){this.MIN_VALUE=14e-46,this.MAX_VALUE=34028235e31,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=4,this.SIZE_BITS=32}function Bt(){this.MIN_VALUE=5e-324,this.MAX_VALUE=17976931348623157e292,this.POSITIVE_INFINITY=1/0,this.NEGATIVE_INFINITY=-1/0,this.NaN=NaN,this.SIZE_BYTES=8,this.SIZE_BITS=64}function Yt(){}function Wt(){}function Gt(t){return!(t==t)}function Kt(t){return 32-zt(~(0|t|-t))|0}function Xt(t){return function(t){if(t.d1())return[];for(var n=t.n(),i=ys(Array(n),null),e=t.v(),r=0;e.w();){var s=r;r=s+1|0,i[s]=e.y()}return i}(t)}function Jt(t){return 0===(n=[t]).length?pn():gn(new lh(n,!0));var n}function Zt(t){return vr(n=[t],Yn(n.length));var n}function Qt(t){return $h(i=zn((n=[t]).length),n),i;var n,i}function tn(t){return t}function nn(t){return t<0&&function(){throw ka("Index overflow has happened.")}(),t}function en(t,i){!function(t,i){if(t.n()<=1)return n;var e=rn(t);yn(e,i);var r=0,s=e.length;if(r=0))throw Fu(Ws("capacity must be non-negative."));return ys(Array(t),null)}function fn(t,n){t[n]=null}function vn(t,n,i){t.fill(null,n,i)}function dn(t,n){return mu(t,n)}function wn(){h=this;var t=mn(0);t.t2_1=!0,this.u2_1=t}function pn(){return t=no(to($n)),$n.call(t,[]),t;var t}function mn(t){return function(t,n){if($n.call(n,[]),!(t>=0))throw Fu(Ws("Negative initial capacity: "+t));return n}(t,no(to($n)))}function gn(t){return function(t,n){var i=rn(t);return $n.call(n,i),n}(t,no(to($n)))}function bn(t,n){return tt.v2(n,t.n()),n}function $n(t){null==h&&new wn,hn.call(this),this.s2_1=t,this.t2_1=!1}function yn(t,n){if(function(){if(null!=_)return _;_=!1;var t=[],n=0;if(n<600)do{var i=n;n=n+1|0,t.push(i)}while(n<600);var e=Sn;t.sort(e);var r=1,s=t.length;if(r=a)return!1}while(r0))throw Fu(Ws("Non-positive load factor: "+n));return i}(t,n,no(to(mi)))}function Qn(t){return t.d4_1.length}function ti(t){return t.g4_1.length}function ni(t){t.k4_1=t.k4_1+1|0}function ii(t,n){!function(t,n){var i=Qn(t)-t.i4_1|0,e=t.i4_1-t.n()|0;return i=n&&e>=(Qn(t)/4|0)}(t,n)?function(t,n){if(n<0)throw ua("too many elements");if(n>Qn(t)){var i=tt.n4(Qn(t),n);t.d4_1=dn(t.d4_1,i);var e=t,r=t.e4_1;e.e4_1=null==r?null:dn(r,i),t.f4_1=du(t.f4_1,i);var s=Gn(0,i);s>ti(t)&&si(t,s)}}(t,t.i4_1+n|0):si(t,ti(t))}function ei(t){var n=t.e4_1;if(null!=n)return n;var i=cn(Qn(t));return t.e4_1=i,i}function ri(t,n){return null==n?0:Tt(Ks(n),-1640531527)>>>t.j4_1|0}function si(t,n){var i,e,r,s;ni(t),t.i4_1>t.l4_1&&function(t){for(var n=0,i=0,e=t.e4_1;n=0&&(t.d4_1[i]=t.d4_1[n],null!=e&&(e[i]=e[n]),i=i+1|0),n=n+1|0;vn(t.d4_1,i,t.i4_1),null==e||vn(e,i,t.i4_1),t.i4_1=i}(t),n!==ti(t)?(t.g4_1=new Int32Array(n),t.j4_1=Kn(0,n)):(i=t.g4_1,e=0,r=0,s=ti(t),r=r===K?0:r,s=s===K?i.length:s,tt.q(r,s,i.length),i.fill(e,r,s));for(var o=0;o0&&Gs(t.d4_1[r-1|0],n))return r-1|0;if((e=e-1|0)<0)return-1;var s=i;i=s-1|0,0===s&&(i=ti(t)-1|0)}}function ai(t,n){for(var i=t.i4_1;(i=i-1|0)>=0;)if(t.f4_1[i]>=0&&Gs(eo(t.e4_1)[i],n))return i;return-1}function hi(t,n){t.u();t:for(;;)for(var i=ri(t,n),e=Fr(Tt(t.h4_1,2),ti(t)/2|0),r=0;;){var s=t.g4_1[i];if(s<=0){if(t.i4_1>=Qn(t)){ii(t,1);continue t}var o=t.i4_1;t.i4_1=o+1|0;var u=o;return t.d4_1[u]=n,t.f4_1[u]=i,t.g4_1[i]=u+1|0,t.l4_1=t.l4_1+1|0,ni(t),r>t.h4_1&&(t.h4_1=r),u}if(Gs(t.d4_1[s-1|0],n))return 0|-s;if((r=r+1|0)>e){si(t,Tt(ti(t),2));continue t}var a=i;i=a-1|0,0===a&&(i=ti(t)-1|0)}}function _i(t,i){fn(t.d4_1,i),function(t,i){for(var e=i,r=i,s=0,o=Fr(Tt(t.h4_1,2),ti(t)/2|0);;){var u=e;if(e=u-1|0,0===u&&(e=ti(t)-1|0),(s=s+1|0)>t.h4_1)return t.g4_1[r]=0,n;var a=t.g4_1[e];if(0===a)return t.g4_1[r]=0,n;if(a<0?(t.g4_1[r]=-1,r=e,s=0):((ri(t,t.d4_1[a-1|0])-e|0)&(ti(t)-1|0))>=s&&(t.g4_1[r]=a,t.f4_1[a-1|0]=r,r=e,s=0),(o=o-1|0)<0)return t.g4_1[r]=-1,n}}(t,t.f4_1[i]),t.f4_1[i]=-1,t.l4_1=t.l4_1-1|0,ni(t)}function li(t,n){var i=hi(t,n.g2()),e=ei(t);if(i>=0)return e[i]=n.h2(),!0;var r=e[(0|-i)-1|0];return!Gs(n.h2(),r)&&(e[(0|-i)-1|0]=n.h2(),!0)}function ci(){this.o4_1=-1640531527,this.p4_1=8,this.q4_1=2,this.r4_1=-1}function fi(t){this.s4_1=t,this.t4_1=0,this.u4_1=-1,this.v4_1=this.s4_1.k4_1,this.w4()}function vi(t){fi.call(this,t)}function di(t){fi.call(this,t)}function wi(t){fi.call(this,t)}function pi(t,n){this.q5_1=t,this.r5_1=n}function mi(t,n,i,e,r,s){this.d4_1=t,this.e4_1=n,this.f4_1=i,this.g4_1=e,this.h4_1=r,this.i4_1=s,this.j4_1=Kn(0,ti(this)),this.k4_1=0,this.l4_1=0,this.m4_1=!1}function gi(){}function bi(){return Cn(t=no(to(yi))),yi.call(t),t;var t}function $i(t){return function(t,n){return On(t,n),yi.call(n),n}(t,no(to(yi)))}function yi(){}function ki(){return Un(t=no(to(Ci))),Ci.call(t),t;var t}function xi(t){return function(t,n){return Vn(t,n),Ci.call(n),n}(t,no(to(Ci)))}function Si(t,n){return function(t,n,i){Bn(t,n,i),Ci.call(i)}(t,1,n),n}function Ei(t){return Si(t,no(to(Ci)))}function Ci(){}function qi(t,n){return Xu(t,n),zi.call(n),n}function Oi(t,n,i){return Zu(t,n,i),zi.call(i),i}function zi(){Qs(this,zi)}function Ai(t){var n;if(Gt(t))throw Fu("Cannot round NaN value.");return ao(),t>new ho(-1,2147483647).c6()?(ao(),n=new ho(-1,2147483647)):(ao(),t>>4|0)),i}(t,t>>31,no(to(E_)));var t}function Ii(){}function Di(t){this.d6_1=t}function ji(){c=this,Di.call(this,Object),this.i6_1="Nothing"}function Mi(){return null==c&&new ji,c}function Ni(){}function Ri(t,n,i){Di.call(this,t),this.k6_1=n,this.l6_1=i}function Pi(t){Di.call(this,t);var n=t.$metadata$;this.n6_1=null==n?null:n.simpleName}function Li(){}function Fi(t,n,i){this.o6_1=t,this.p6_1=n,this.q6_1=i}function Ui(){return d||(d=!0,f=ys(Array(0),null)),f}function Hi(t){return!(null==t)}function Vi(t){return nu(t)}function Bi(t){return null!=t&&"boolean"==typeof t}function Yi(t){return null!=t&&"number"==typeof t}function Wi(t){return null!=t&&"number"==typeof t}function Gi(t){return null!=t&&"number"==typeof t}function Ki(t){return null!=t&&"number"==typeof t}function Xi(t){return null!=t&&"number"==typeof t}function Ji(t){return null!=t&&Qo(t)}function Zi(t){return null!=t&&"string"==typeof t}function Qi(t){return t instanceof Error}function te(t){return null!=t&&eu(t)}function ne(t){return null!=t&&ou(t)}function ie(t){return null!=t&&ru(t)}function ee(t){return null!=t&&su(t)}function re(t){return null!=t&&uu(t)}function se(t){return null!=t&&hu(t)}function oe(t){return null!=t&&au(t)}function ue(t){return null!=t&&_u(t)}function ae(){v=this;var t=Object;this.anyClass=new Ri(t,"Any",Hi);var n=Number;this.numberClass=new Ri(n,"Number",Vi),this.nothingClass=Mi();var i=Boolean;this.booleanClass=new Ri(i,"Boolean",Bi);var e=Number;this.byteClass=new Ri(e,"Byte",Yi);var r=Number;this.shortClass=new Ri(r,"Short",Wi);var s=Number;this.intClass=new Ri(s,"Int",Gi);var o=Number;this.floatClass=new Ri(o,"Float",Ki);var u=Number;this.doubleClass=new Ri(u,"Double",Xi);var a=Array;this.arrayClass=new Ri(a,"Array",Ji);var h=String;this.stringClass=new Ri(h,"String",Zi);var _=Error;this.throwableClass=new Ri(_,"Throwable",Qi);var l=Array;this.booleanArrayClass=new Ri(l,"BooleanArray",te);var c=Uint16Array;this.charArrayClass=new Ri(c,"CharArray",ne);var f=Int8Array;this.byteArrayClass=new Ri(f,"ByteArray",ie);var d=Int16Array;this.shortArrayClass=new Ri(d,"ShortArray",ee);var w=Int32Array;this.intArrayClass=new Ri(w,"IntArray",re);var p=Array;this.longArrayClass=new Ri(p,"LongArray",se);var m=Float32Array;this.floatArrayClass=new Ri(m,"FloatArray",oe);var g=Float64Array;this.doubleArrayClass=new Ri(g,"DoubleArray",ue)}function he(){return null==v&&new ae,v}function _e(t){return Array.isArray(t)?function(t){var n;switch(t.length){case 1:n=le(t[0]);break;case 0:n=Mi();break;default:n=new Ni}return n}(t):le(t)}function le(t){if(t===String)return he().stringClass;var n,i=t.$metadata$;if(null!=i){var e;if(null==i.$kClass$){var r=new Pi(t);i.$kClass$=r,e=r}else e=i.$kClass$;n=e}else n=new Pi(t);return n}function ce(t){this.o7_1=t}function fe(t){Du(t,this),Qs(this,fe)}function ve(t){return de(n=no(to(pe))),n;var n}function de(t){return pe.call(t,""),t}function we(){return de(no(to(pe)))}function pe(t){this.m5_1=void 0!==t?t:""}function me(t){var n=rs(t).toUpperCase();return n.length>1?t:js(n,0)}function ge(t){return function(t){var n=es(t);return 9<=n&&n<=13||28<=n&&n<=32||160===n||n>4096&&(5760===n||8192<=n&&n<=8202||8232===n||8233===n||8239===n||8287===n||12288===n)}(t)}function be(t){return function(t){var n=es(t);return 452<=n&&n<=460||497<=n&&n<=499?Vo(Tt(3,(n+1|0)/3|0)):4304<=n&&n<=4346||4349<=n&&n<=4351?t:me(t)}(t)}function $e(t){if(!(2<=t&&t<=36))throw Fu("radix "+t+" was not in valid range 2..36");return t}function ye(t){var n,i=B_(t);return null==i?G_(t):n=i,n}function ke(t){var n=+t;return(Gt(n)&&!Se(t)||0===n&&Re(t))&&G_(t),n}function xe(t,n){var i,e,r,s=ns(t,48)>=0&&ns(t,57)<=0?is(t,48):ns(t,65)>=0&&ns(t,90)<=0?is(t,65)+10|0:ns(t,97)>=0&&ns(t,122)<=0?is(t,97)+10|0:ns(t,128)<0?-1:ns(t,65313)>=0&&ns(t,65338)<=0?is(t,65313)+10|0:ns(t,65345)>=0&&ns(t,65370)<=0?is(t,65345)+10|0:(i=es(t),e=bu(yu().sb_1,i),(r=i-yu().sb_1[e]|0)<10?r:-1);return s>=n?-1:s}function Se(t){switch(t.toLowerCase()){case"nan":case"+nan":case"-nan":return!0;default:return!1}}function Ee(){w=this,this.d8_1=new RegExp("[\\\\^$*+?.()|[\\]{}]","g"),this.e8_1=new RegExp("[\\\\$]","g"),this.f8_1=new RegExp("\\$","g")}function Ce(){return null==w&&new Ee,w}function qe(t){return t.y()}function Oe(t,n){Ce(),this.i8_1=t,this.j8_1=Er(n),this.k8_1=new RegExp(t,xr(n,"","gu",K,K,K,Te)),this.l8_1=null,this.m8_1=null}function ze(t){this.x8_1=t}function Ae(t,n,i,e){t.lastIndex=i;var r=t.exec(n);return null==r?null:new De(Yo(r.index,t.lastIndex-1|0),r,e,n)}function Te(t){return t.a9_1}function Ie(t,n){this.b9_1=t,this.c9_1=n,Ma.call(this)}function De(t,n,i,e){this.g9_1=t,this.h9_1=n,this.i9_1=i,this.j9_1=e,this.d9_1=t,this.e9_1=new Ie(n,this),this.f9_1=null}function je(t){this.k9_1=t}function Me(t,n){return Ne(),function(t,n,i){if(i=i!==K&&i,Ne(),i){var e=t.length,r=n.length,s=Math.min(e,r);if(0===s)return e-r|0;var o=0;if(o=0&&i<=t.length&&n<=i))throw Fu(Ws("Failed requirement."));for(var r=n,s=we();r=0)s.p5(Vo(u));else if(u>>5==-2){var a=Ye(t,u,r,i,e);a<=0?(s.p5(65533),r=r+(0|-a)|0):(s.p5(Vo(a)),r=r+1|0)}else if(u>>4==-2){var h=We(t,u,r,i,e);h<=0?(s.p5(65533),r=r+(0|-h)|0):(s.p5(Vo(h)),r=r+2|0)}else if(u>>3==-2){var _=Ge(t,u,r,i,e);if(_<=0)s.p5(65533),r=r+(0|-_)|0;else{var l=(_-65536|0)>>10|55296,c=1023&_|56320;s.p5(Vo(l)),s.p5(Vo(c)),r=r+3|0}}else Ke(0,r,e),s.p5(65533)}return s.toString()}function Be(t,n,i,e,r){if(Xe(),!(55296<=n&&n<=56319)||i>=e)return Ke(0,i,r);var s=es(js(t,i));return 56320<=s&&s<=57343?65536+((1023&n)<<10)|0|1023&s:Ke(0,i,r)}function Ye(t,n,i,e,r){if(Xe(),0==(30&n)||i>=e)return Ke(0,i,r);var s=t[i];return 128!=(192&s)?Ke(0,i,r):n<<6^s^3968}function We(t,n,i,e,r){if(Xe(),i>=e)return Ke(0,i,r);var s=t[i];if(0==(15&n)){if(160!=(224&s))return Ke(0,i,r)}else if(13==(15&n)){if(128!=(224&s))return Ke(0,i,r)}else if(128!=(192&s))return Ke(0,i,r);if((i+1|0)===e)return Ke(1,i,r);var o=t[i+1|0];return 128!=(192&o)?Ke(1,i,r):n<<12^s<<6^o^-123008}function Ge(t,n,i,e,r){Xe(),i>=e&&Ke(0,i,r);var s=t[i];if(0==(15&n)){if((240&s)<=128)return Ke(0,i,r)}else if(4==(15&n)){if(128!=(240&s))return Ke(0,i,r)}else{if((15&n)>4)return Ke(0,i,r);if(128!=(192&s))return Ke(0,i,r)}if((i+1|0)===e)return Ke(1,i,r);var o=t[i+1|0];if(128!=(192&o))return Ke(1,i,r);if((i+2|0)===e)return Ke(2,i,r);var u=t[i+2|0];return 128!=(192&u)?Ke(2,i,r):n<<18^s<<12^o<<6^u^3678080}function Ke(t,n,i){if(Xe(),i)throw new fe("Malformed sequence starting at "+(n-1|0));return 0|-t}function Xe(){g||(g=!0,m=new Int8Array([-17,-65,-67]))}function Je(t){return(new tr).q9(t)}function Ze(t,i,e,r){if(!Qe(t,i,e,r))return n;for(var s=t.cause;null!=s;){if(!Qe(s,i,e,"Caused by: "))return n;s=s.cause}}function Qe(t,n,i,e){n.m9_1.o5(i).o5(e);var r=t.toString();if(function(t,n){var i;t:{for(var e=t.n9_1,r=0,s=e.length;r0&&32===js(n,K_(n)-(s-1|0)|0);)s=s-1|0;return Gr(n,s)+"... and "+(e-1|0)+" more common stack frames skipped"}(n,o,a),Ns(i)>0){var h;if(0===a)h=0;else{for(var _=0,l=0;l=f&&n.m9_1.o5(i),n.m9_1.o5(w).o5("\n")}}else n.m9_1.o5(o).o5("\n")}else n.m9_1.o5(r).o5("\n");var m=function(t){var n=t._suppressed,i=null==n?null:n;return null==i?rh():i}(t);if(!m.d1())for(var g=i+" ",b=m.v();b.w();)Ze(b.y(),n,g,"Suppressed: ");return!0}function tr(){this.m9_1=we(),this.n9_1=[],this.o9_1="",this.p9_1=0}function nr(){if(C)return n;C=!0,b=new ir("NANOSECONDS",0,1),$=new ir("MICROSECONDS",1,1e3),y=new ir("MILLISECONDS",2,1e6),k=new ir("SECONDS",3,1e9),x=new ir("MINUTES",4,6e10),S=new ir("HOURS",5,36e11),E=new ir("DAYS",6,864e11)}function ir(t,n,i){ms.call(this,t,n),this.t9_1=i}function er(t,n,i){var e=Us(n.t9_1,i.t9_1);return e>0?t*(n.t9_1/i.t9_1):e<0?t/(i.t9_1/n.t9_1):t}function rr(t,n,i){var e,r=Us(n.t9_1,i.t9_1);if(r>0){var s,o=Ho(n.t9_1/i.t9_1),u=t.y9(o);u.x9(o).equals(t)?s=u:t.z9(new ho(0,0))>0?(ao(),s=new ho(-1,2147483647)):(ao(),s=new ho(0,-2147483648)),e=s}else e=r<0?t.x9(Ho(i.t9_1/n.t9_1)):t;return e}function sr(t,n,i){var e=Us(n.t9_1,i.t9_1);return e>0?t.y9(Ho(n.t9_1/i.t9_1)):e<0?t.x9(Ho(i.t9_1/n.t9_1)):t}function or(){return nr(),b}function ur(){return nr(),y}function ar(){return nr(),k}function hr(){return nr(),x}function _r(){return nr(),S}function lr(){return nr(),E}function cr(t,n){return fr(t,n)>=0}function fr(t,n){if(null==n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,null==t[r])return r}while(i<=e)}else{var s=0,o=t.length-1|0;if(s<=o)do{var u=s;if(s=s+1|0,Gs(n,t[u]))return u}while(s<=o)}return-1}function vr(t,n){for(var i=0,e=t.length;i=0}function mr(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function gr(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function br(t,n){return function(t,n){var i=0,e=t.length-1|0;if(i<=e)do{var r=i;if(i=i+1|0,n===t[r])return r}while(i<=e);return-1}(t,n)>=0}function $r(t,n,i,e,r,s,o){return n=n===K?", ":n,i=i===K?"":i,e=e===K?"":e,r=r===K?-1:r,s=s===K?"...":s,o=o===K?null:o,function(t,n,i,e,r,s,o,u){i=i===K?", ":i,e=e===K?"":e,r=r===K?"":r,s=s===K?-1:s,o=o===K?"...":o,u=u===K?null:u,n.p7(e);var a=0,h=0,_=t.length;t:for(;h<_;){var l=t[h];if(h=h+1|0,(a=a+1|0)>1&&n.p7(i),!(s<0||a<=s))break t;L_(n,l,u)}return s>=0&&a>s&&n.p7(o),n.p7(r),n}(t,we(),n,i,e,r,s,o).toString()}function yr(t,n){return n>=0&&n<=dr(t)?t[n]:null}function kr(t){this.aa_1=t}function xr(t,n,i,e,r,s,o){return n=n===K?", ":n,i=i===K?"":i,e=e===K?"":e,r=r===K?-1:r,s=s===K?"...":s,o=o===K?null:o,Sr(t,we(),n,i,e,r,s,o).toString()}function Sr(t,n,i,e,r,s,o,u){i=i===K?", ":i,e=e===K?"":e,r=r===K?"":r,s=s===K?-1:s,o=o===K?"...":o,u=u===K?null:u,n.p7(e);var a=0,h=t.v();t:for(;h.w();){var _=h.y();if((a=a+1|0)>1&&n.p7(i),!(s<0||a<=s))break t;L_(n,_,u)}return s>=0&&a>s&&n.p7(o),n.p7(r),n}function Er(t){if(Jo(t,hs)){var n;switch(t.n()){case 0:n=Zh();break;case 1:n=Zt(Jo(t,as)?t.h1(0):t.v().y());break;default:n=Ir(t,Ei(t.n()))}return n}return function(t){switch(t.n()){case 0:return Zh();case 1:return Zt(t.v().y());default:return t}}(Ir(t,ki()))}function Cr(t,n){if(Jo(n,hs)){var i=mn(t.n()+n.n()|0);return i.z(t),i.z(n),i}var e=gn(t);return yh(e,n),e}function qr(t){return new Mr(t)}function Or(t){if(Jo(t,hs)){var n;switch(t.n()){case 0:n=rh();break;case 1:n=Jt(Jo(t,as)?t.h1(0):t.v().y());break;default:n=Ar(t)}return n}return uh(Dr(t))}function zr(t){if(Jo(t,as))return function(t){var n;switch(t.n()){case 0:throw fa("List is empty.");case 1:n=t.h1(0);break;default:throw Fu("List has more than one element.")}return n}(t);var n=t.v();if(!n.w())throw fa("Collection is empty.");var i=n.y();if(n.w())throw Fu("Collection has more than one element.");return i}function Ar(t){return gn(t)}function Tr(t){if(Jo(t,as))return jr(t);var n=t.v();if(!n.w())throw fa("Collection is empty.");return n.y()}function Ir(t,n){for(var i=t.v();i.w();){var e=i.y();n.s(e)}return n}function Dr(t){return Jo(t,hs)?Ar(t):Ir(t,pn())}function jr(t){if(t.d1())throw fa("List is empty.");return t.h1(0)}function Mr(t){this.ba_1=t}function Nr(t,n){return n<=r.MIN_VALUE?q_().ca_1:Yo(t,n-1|0)}function Rr(t,n){return wt.da(t,n,-1)}function Pr(t,n,i){if(n.z9(i)>0)throw Fu("Cannot coerce value to an empty range: maximum "+i.toString()+" is less than minimum "+n.toString()+".");return t.z9(n)<0?n:t.z9(i)>0?i:t}function Lr(t,n){return tn?n:t}function Ur(t,n,i){if(n>i)throw Fu("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t}function Hr(t,n){return new Th(t,n)}function Vr(t){var n=t.v();if(!n.w())return rh();var i=n.y();if(!n.w())return Jt(i);var e=pn();for(e.s(i);n.w();)e.s(n.y());return e}function Br(t){return new Yr(t)}function Yr(t){this.ka_1=t}function Wr(t){if(0===Ns(t))throw fa("Char sequence is empty.");return js(t,K_(t))}function Gr(t,n){if(!(n>=0))throw Fu(Ws("Requested character count "+n+" is less than zero."));return Kr(t,Lr(t.length-n|0,0))}function Kr(t,n){if(!(n>=0))throw Fu(Ws("Requested character count "+n+" is less than zero."));var i=Fr(n,t.length);return t.substring(0,i)}function Xr(t,n){if(!(n>=0))throw Fu(Ws("Requested character count "+n+" is less than zero."));var i=Fr(n,t.length);return t.substring(i)}function Jr(){var t,n=(ra(t=no(to(Zr))),Zr.call(t),t);return Qs(n,Jr),n}function Zr(){Qs(this,Zr)}function Qr(t){return t}function ts(t){return 65535&t}function ns(t,n){return t-n|0}function is(t,n){return t-n|0}function es(t){return t}function rs(t){return String.fromCharCode(t)}function ss(){O=this,this.ma_1=0,this.na_1=65535,this.oa_1=55296,this.pa_1=56319,this.qa_1=56320,this.ra_1=57343,this.sa_1=55296,this.ta_1=57343,this.ua_1=2,this.va_1=16}function os(){return null==O&&new ss,O}function us(t){os(),this.la_1=t}function as(){}function hs(){}function _s(){}function ls(){}function cs(){}function fs(){}function vs(){}function ds(){}function ws(){}function ps(){}function ms(t,n){this.u9_1=t,this.v9_1=n}function gs(t){var n=null==t?null:Ws(t);return null==n?"null":n}function bs(t,n){var i=null==t?null:Ws(t),e=null==i?"null":i,r=null==n?null:Ws(n);return e+(null==r?"null":r)}function $s(t){for(var n=1,i=[],e=0,r=t.length;e>5,f=new Int32Array(c+1|0),v=1<<(31&l),f[c]=f[c]|v,f);null!=_&&(i.push(_),o=Math.max(o,_.length)),o>n&&(n=o)}var l,c,f,v;return function(t,n){for(var i=0,e=new Int32Array(t);i65535),e)throw Fu("Invalid Char code: "+r);i=Vo(r)}else i=t.b(n);return i}function Ms(t){return"string"==typeof t}function Ns(t){return Ms(t)?t.length:t.a()}function Rs(t,n,i){return Ms(t)?t.substring(n,i):t.c(n,i)}function Ps(t,n){var i=t,e=n;if(i===e)return!0;if(null==i||null==e||!Ko(e)||i.length!=e.length)return!1;var r=0,s=i.length;if(rn)i=1;else if(t===n){var e;if(0!==t)e=0;else{var r=1/t;e=r===1/n?0:r<0?-1:1}i=e}else i=t!=t?n!=n?0:1:-1;return i}function Vs(t,n){return tn?1:0}function Bs(t){if(!("kotlinHashCodeValue$"in t)){var n=Ys(),i=new Object;i.value=n,i.enumerable=!1,Object.defineProperty(t,"kotlinHashCodeValue$",i)}return t.kotlinHashCodeValue$}function Ys(){return 4294967296*Math.random()|0}function Ws(t){return null==t?"null":Ko(t)?"[...]":"function"!=typeof t.toString?Xs(t):t.toString()}function Gs(t,n){return null==t?null==n:null!=n&&("object"==typeof t&&"function"==typeof t.equals?t.equals(n):t!=t?n!=n:"number"==typeof t&&"number"==typeof n?t===n&&(0!==t||1/t==1/n):t===n)}function Ks(t){if(null==t)return 0;var n,i=typeof t;switch(i){case"object":n="function"==typeof t.hashCode?t.hashCode():Bs(t);break;case"function":n=Bs(t);break;case"number":n=Is(t);break;case"boolean":n=Js(t);break;case"string":n=Zs(String(t));break;case"bigint":n=function(t){for(var n=BigInt(32),i=BigInt(4294967295),e=t<0?-t:t,r=0,s=t<0?-1:1;0!=e;){var o=Number(e&i);r=Tt(31,r)+o|0,e>>=n}return Tt(r,s)}(t);break;case"symbol":n=function(t){var n=(e=t,Symbol.keyFor(e)!=K?(M===K&&(M=new Map),M):(N===K&&(N=new WeakMap),N)),i=n.get(t);var e;if(i!==K)return i;var r=Ys();return n.set(t,r),r}(t);break;default:n=function(){throw new Error("Unexpected typeof `"+i+"`")}()}return n}function Xs(t){return Object.prototype.toString.call(t)}function Js(t){return t?1231:1237}function Zs(t){var n=0,i=0,e=t.length-1|0;if(i<=e)do{var r=i;i=i+1|0;var s=t.charCodeAt(r);n=Tt(n,31)+s|0}while(r!==e);return n}function Qs(t,n){null!=Error.captureStackTrace?Error.captureStackTrace(t,n):t.stack=(new Error).stack}function to(t){return t.prototype}function no(t){return Object.create(t)}function io(t,n,i){Error.call(t),function(t,n,i){var e=cu(Object.getPrototypeOf(t));if(0==(1&e)){var r;if(null==n){var s;if(null!==n){var o=null==i?null:i.toString();s=null==o?K:o}else s=K;r=s}else r=n;t.message=r}0==(2&e)&&(t.cause=i),t.name=Object.getPrototypeOf(t).constructor.name}(t,n,i)}function eo(t){var n;return null==t?function(){throw Ca()}():n=t,n}function ro(){throw Aa()}function so(t,n){for(var i=t.length,e=n.length,r=0,s=n;rr)for(e.length=n;r>>16|0,e=65535&t.m_1,r=t.l_1>>>16|0,s=65535&t.l_1,o=n.m_1>>>16|0,u=65535&n.m_1,a=n.l_1>>>16|0,h=0,_=0,l=0,c=0;return h=(h=h+((_=(_=_+((l=(l=l+((c=c+(s+(65535&n.l_1)|0)|0)>>>16|0)|0)+(r+a|0)|0)>>>16|0)|0)+(e+u|0)|0)>>>16|0)|0)+(i+o|0)|0,new ho((l&=65535)<<16|(c&=65535),(h&=65535)<<16|(_&=65535))}function mo(t,n){return Do(),po(t,n.ib())}function go(t,n){if(Do(),Co(t))return _o();if(Co(n))return _o();if(ko(t,fo()))return qo(n)?fo():_o();if(ko(n,fo()))return qo(t)?fo():_o();if(Eo(t))return Eo(n)?go(Oo(t),Oo(n)):Oo(go(Oo(t),n));if(Eo(n))return Oo(go(t,Oo(n)));if(zo(t,vo())&&zo(n,vo()))return Ao(yo(t)*yo(n));var i=t.m_1>>>16|0,e=65535&t.m_1,r=t.l_1>>>16|0,s=65535&t.l_1,o=n.m_1>>>16|0,u=65535&n.m_1,a=n.l_1>>>16|0,h=65535&n.l_1,_=0,l=0,c=0,f=0;return c=c+((f=f+Tt(s,h)|0)>>>16|0)|0,f&=65535,l=(l=l+((c=c+Tt(r,h)|0)>>>16|0)|0)+((c=(c&=65535)+Tt(s,a)|0)>>>16|0)|0,c&=65535,_=(_=(_=_+((l=l+Tt(e,h)|0)>>>16|0)|0)+((l=(l&=65535)+Tt(r,a)|0)>>>16|0)|0)+((l=(l&=65535)+Tt(s,u)|0)>>>16|0)|0,l&=65535,_=_+(((Tt(i,h)+Tt(e,a)|0)+Tt(r,u)|0)+Tt(s,o)|0)|0,new ho(c<<16|f,(_&=65535)<<16|l)}function bo(t,n){Do();var i=63&n;return 0===i?t:i<32?new ho(t.l_1<>>(32-i|0)|0):new ho(0,t.l_1<<(i-32|0))}function $o(t,n){Do();var i=63&n;return 0===i?t:i<32?new ho(t.l_1>>>i|0|t.m_1<<(32-i|0),t.m_1>>i):new ho(t.m_1>>(i-32|0),t.m_1>=0?0:-1)}function yo(t){return Do(),4294967296*t.m_1+function(t){return Do(),t.l_1>=0?t.l_1:4294967296+t.l_1}(t)}function ko(t,n){return Do(),t.m_1===n.m_1&&t.l_1===n.l_1}function xo(t,n){if(Do(),n<2||36=0x8000000000000000)return Do(),U;if(t<0)return Oo(Ao(-t));var n=4294967296;return new ho(t%n|0,t/n|0)}function To(t,n){return Do(),wo(t,n)>0}function Io(t,n){return Do(),wo(t,n)>=0}function Do(){B||(B=!0,P=So(0),L=So(1),F=So(-1),U=new ho(-1,2147483647),H=new ho(0,-2147483648),V=So(16777216))}function jo(t,n,i,e,r){return Mo("class",t,n,i,e,r,null)}function Mo(t,n,i,e,r,s,o){return{kind:t,simpleName:n,associatedObjectKey:e,associatedObjects:r,suspendArity:s,$kClass$:K,defaultConstructor:i,iid:o}}function No(t,n,i,e,r,s,o,u,a){null!=e&&(t.prototype=Object.create(e.prototype),t.prototype.constructor=t);var h=i(n,s,o,u,null==a?[]:a);t.$metadata$=h,null!=r&&((null!=h.iid?t:t.prototype).$imask$=$s(r))}function Ro(t,n,i,e,r){return Mo("interface",t,n,i,e,r,(Y===K&&(Y=0),Y=Y+1|0))}function Po(t,n,i,e,r){return Mo("object",t,n,i,e,r,null)}function Lo(t){return t<<24>>24}function Fo(t){return t instanceof ho?t.ia():function(t){return t>2147483647?2147483647:t<-2147483648?-2147483648:0|t}(t)}function Uo(t){return t<<16>>16}function Ho(t){return t instanceof ho?t:Ao(t)}function Vo(t){return ts(Uo(Fo(t)))}function Bo(t){return So(t)}function Yo(t,n){return new O_(t,n)}function Wo(){return Go(),jo(K,K,K,K,K)}function Go(){if(!G){G=!0;var t=[Wo(),Wo()],n=[Wo(),Wo()];W=[t,n,[Wo(),Wo()]]}}function Ko(t){return!!Xo(t)||At(t)}function Xo(t){return Array.isArray(t)}function Jo(t,n){return Zo(t,n.$metadata$.iid)}function Zo(t,n){var i=t.$imask$;return null!=i&&function(t,n){var i=n>>5;if(i>t.length)return!1;var e=1<<(31&n);return!(0==(t[i]&e))}(i,n)}function Qo(t){return!!Xo(t)&&!t.$type$}function tu(t,n){if("function"==typeof t)return t.$arity===n;var i=null==t?null:t.constructor,e=null==i?null:i.$metadata$,r=null==e?null:e.suspendArity;if(null==r)return!1;var s=r,o=!1,u=0,a=s.length;t:for(;u=0))throw Fu(Ws("Invalid new array size: "+n+"."));return so(t,new Int32Array(n))}function wu(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));return so(t,new Int8Array(n))}function pu(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)}function mu(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));return oo(t,n,null)}function gu(t,n,i){for(var e=new Int32Array(i),r=0,s=0,o=0,u=0,a=t.length;u(s=t[r=(i+e|0)/2|0]))i=r+1|0;else{if(n===s)return r;e=r-1|0}return r-(n=t.jd_1.length?n-t.jd_1.length|0:n}function Qa(t,n){return n===dr(t.jd_1)?0:n+1|0}function th(t,n){return 0===n?dr(t.jd_1):n-1|0}function nh(){it=this,this.ld_1=[],this.md_1=10}function ih(){return null==it&&new nh,it}function eh(){ih(),this.id_1=0,this.kd_1=0}function rh(){return _h()}function sh(t){return t.n()-1|0}function oh(t){return Yo(0,t.n()-1|0)}function uh(t){switch(t.n()){case 0:return rh();case 1:return Jt(t.h1(0));default:return t}}function ah(t){return 0===t.length?pn():gn(new lh(t,!0))}function hh(){et=this,this.vd_1=new ho(-1478467534,-1720727600)}function _h(){return null==et&&new hh,et}function lh(t,n){this.zd_1=t,this.ae_1=n}function ch(){}function fh(t,n){this.de_1=t,this.ee_1=n}function vh(t,n){return Jo(t,hs)?t.n():n}function dh(t){this.fe_1=t}function wh(t){this.ge_1=t,this.he_1=0}function ph(){}function mh(){var t=(null==st&&new gh,st);return Jo(t,vs)?t:ro()}function gh(){st=this,this.je_1=new ho(-888910638,1920087921)}function bh(t,n){return function(t,n){for(var i=n.v();i.w();){var e=i.y(),r=e.oe(),s=e.pe();t.e2(r,s)}}(n,t),n}function $h(t,n){for(var i=0,e=n.length;i=0))throw Fu(Ws("count must be non-negative, but was "+this.vf_1+"."))}function Bh(t){t.wf_1=-2===t.xf_1?t.yf_1.zf_1():t.yf_1.ag_1(eo(t.wf_1)),t.xf_1=null==t.wf_1?0:1}function Yh(t){this.yf_1=t,this.wf_1=null,this.xf_1=-2}function Wh(t,n){this.zf_1=t,this.ag_1=n}function Gh(){}function Kh(t){this.bg_1=t}function Xh(t){return t.v()}function Jh(t){return t}function Zh(){return t_()}function Qh(){ut=this,this.cg_1=new ho(1993859828,793161749)}function t_(){return null==ut&&new Qh,ut}function n_(){}function i_(){}function e_(){}function r_(){}function s_(t,n){var i,e=t.hg(n.g2());if(e===a_())i=n;else{var r,s=e.hc(at);if(null==s)r=new c_(e,n);else{var o=e.hg(at);r=o===a_()?new c_(n,s):new c_(new c_(o,n),s)}i=r}return i}function o_(){}function u_(){ht=this,this.kg_1=new ho(0,0)}function a_(){return null==ht&&new u_,ht}function h_(t){for(var n=t,i=2;;){var e=n.lg_1,r=e instanceof c_?e:null;if(null==r)return i;n=r,i=i+1|0}}function __(t,n){return Gs(t.hc(n.g2()),n)}function l_(t,n){return 0===Ns(t)?Ws(n):t+", "+n}function c_(t,n){this.lg_1=t,this.mg_1=n}function f_(t,n){this.dg_1=n;var i;i=t instanceof f_?t.eg_1:t,this.eg_1=i}function v_(t){this.ng_1=t}function d_(){return function(){if(lt)return n;lt=!0,_t=new w_("COROUTINE_SUSPENDED",0),new w_("UNDECIDED",1),new w_("RESUMED",2)}(),_t}function w_(t,n){ms.call(this,t,n)}function p_(t){Pa.call(this),this.og_1=t}function m_(t,n,i){var e;if(i>0)e=t>=n?n:n-g_(n,t,i)|0;else{if(!(i<0))throw Fu("Step is zero.");e=t<=n?n:n+g_(t,n,0|-i)|0}return e}function g_(t,n,i){return b_(b_(t,i)-b_(n,i)|0,i)}function b_(t,n){var i=t%n|0;return i>=0?i:i+n|0}function $_(){ct=this,k_.call(this),this.rg_1=Ti()}function y_(){return null==ct&&new $_,ct}function k_(){y_()}function x_(t,n){if(!(n>t))throw Fu(Ws(function(t,n){return"Random range is empty: ["+Ws(t)+", "+Ws(n)+")."}(t,n)))}function S_(){ft=this,this.vg_1=new ho(0,0)}function E_(t,n,i,e,r,s){if(null==ft&&new S_,k_.call(this),this.wg_1=t,this.xg_1=n,this.yg_1=i,this.zg_1=e,this.ah_1=r,this.bh_1=s,0==(this.wg_1|this.xg_1|this.yg_1|this.zg_1|this.ah_1))throw Fu(Ws("Initial state must have at least one non-zero element."));var o=0;if(o<64)do{o=o+1|0,this.qe()}while(o<64)}function C_(){vt=this,this.ca_1=new O_(1,0)}function q_(){return null==vt&&new C_,vt}function O_(t,n){q_(),j_.call(this,t,n,1)}function z_(){dt=this,this.dh_1=new A_(1,0)}function A_(t,n){null==dt&&new z_,N_.call(this,t,n,1)}function T_(t,n,i){xh.call(this),this.nh_1=i,this.oh_1=n,this.ph_1=this.nh_1>0?t<=n:t>=n,this.qh_1=this.ph_1?t:this.oh_1}function I_(t,n,i){Sh.call(this),this.rh_1=i,this.sh_1=n,this.th_1=this.rh_1>0?ns(t,n)<=0:ns(t,n)>=0;var e;e=this.th_1?t:this.sh_1,this.uh_1=e}function D_(){}function j_(t,n,i){if(0===i)throw Fu("Step must be non-zero.");if(i===r.MIN_VALUE)throw Fu("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.ea_1=t,this.fa_1=m_(t,n,i),this.ga_1=i}function M_(){}function N_(t,n,i){if(0===i)throw Fu("Step must be non-zero.");if(i===r.MIN_VALUE)throw Fu("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.ih_1=t;var e=t,s=n;this.jh_1=Vo(m_(e,s,i)),this.kh_1=i}function R_(){}function P_(){}function L_(t,n,i){null!=i?t.p7(i(n)):null==n||iu(n)?t.p7(n):n instanceof us?t.p5(n.la_1):t.p7(gs(n))}function F_(t,n,i){if(t===n)return!0;if(!(i=i!==K&&i))return!1;var e=me(t),r=me(n);return e===r||js(rs(e).toLowerCase(),0)===js(rs(r).toLowerCase(),0)}function U_(t){return 0===Ns(t)?V_:(n=t,function(t){return n+t});var n}function H_(t){var n;t:{var i=0,e=Ns(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!ge(js(t,r))){n=r;break t}}while(i<=e);n=-1}var s=n;return-1===s?t.length:s}function V_(t){return t}function B_(t){return function(t,n){$e(n);var i,e,r,s=t.length;if(0===s)return null;var o=js(t,0);if(ns(o,48)<0){if(1===s)return null;if(i=1,45===o)e=!0,ao(),r=new ho(0,-2147483648);else{if(43!==o)return null;e=!1,ao(),r=new ho(-1,2147483647).ib()}}else i=0,e=!1,ao(),r=new ho(-1,2147483647).ib();ao();var u=new ho(-1,2147483647).ib().x9(Bo(36)),a=u,h=new ho(0,0),_=i;if(_=0}function Q_(t,n,i,e){var r;if(i=i===K?K_(t):i,(e=e!==K&&e)||"string"!=typeof t)r=function(t,n,i,e){if(i=i===K?K_(t):i,!(e=e!==K&&e)&&1===n.length&&"string"==typeof t){var r=rs(wr(n));return t.lastIndexOf(r,i)}var s=Fr(i,K_(t));if(0<=s)do{var o=s;s=s+-1|0;var u,a=js(t,o);t:{for(var h=0,_=n.length;h<_;){var l=n[h];if(h=h+1|0,F_(l,a,e)){u=!0;break t}}u=!1}if(u)return o}while(0<=s);return-1}(t,Cs([n]),i,e);else{var s=rs(n);r=t.lastIndexOf(s,i)}return r}function tl(t,n,i){return i=i!==K&&i,Ns(t)>0&&F_(js(t,0),n,i)}function nl(t,n,i,e){return i=i===K?0:i,(e=e!==K&&e)||"string"!=typeof t?ol(t,n,i,Ns(t),e):t.indexOf(n,i)}function il(t,n,i,e){if(i=i===K?0:i,!(e=e!==K&&e)&&1===n.length&&"string"==typeof t){var r=rs(wr(n));return t.indexOf(r,i)}var s=Lr(i,0),o=K_(t);if(s<=o)do{var u=s;s=s+1|0;var a,h=js(t,u);t:{for(var _=0,l=n.length;_0,u=mn(o?Fr(e,10):10);t:do{var a=Ws(Rs(t,r,s));if(u.s(a),r=s+n.length|0,o&&u.n()===(e-1|0))break t;s=nl(t,n,r,i)}while(-1!==s);var h=Ws(Rs(t,r,Ns(t)));return u.s(h),u}function rl(t,n){return Ws(Rs(t,n.v8(),n.w8()+1|0))}function sl(t,n,i,e,r){return i=i===K?0:i,e=e!==K&&e,al(r=r===K?0:r),new ll(t,i,r,(s=vu(n),o=e,function(t,n){var i=function(t,n,i,e,r){if(!e&&1===n.n()){var s=zr(n),o=r?cl(t,s,i):nl(t,s,i);return o<0?null:lc(o,s)}var u=r?Rr(Fr(i,K_(t)),0):Yo(Lr(i,0),Ns(t));if("string"==typeof t){var a=u.ea_1,h=u.fa_1,_=u.ga_1;if(_>0&&a<=h||_<0&&h<=a)do{var l,c=a;a=a+_|0;t:{for(var f=n.v();f.w();){var v=f.y();if(Le(v,0,t,c,v.length,e)){l=v;break t}}l=null}if(null!=l)return lc(c,l)}while(c!==h)}else{var d=u.ea_1,w=u.fa_1,p=u.ga_1;if(p>0&&d<=w||p<0&&w<=d)do{var m,g=d;d=d+p|0;t:{for(var b=n.v();b.w();){var $=b.y();if(ul($,0,t,g,$.length,e)){m=$;break t}}m=null}if(null!=m)return lc(g,m)}while(g!==w)}return null}(t,s,n,o,!1);return null==i?null:lc(i.me_1,i.ne_1.length)}));var s,o}function ol(t,n,i,e,r,s){var o=(s=s!==K&&s)?Rr(Fr(i,K_(t)),Lr(e,0)):Yo(Lr(i,0),Fr(e,Ns(t)));if("string"==typeof t&&"string"==typeof n){var u=o.ea_1,a=o.fa_1,h=o.ga_1;if(h>0&&u<=a||h<0&&a<=u)do{var _=u;if(u=u+h|0,Le(n,0,t,_,Ns(n),r))return _}while(_!==a)}else{var l=o.ea_1,c=o.fa_1,f=o.ga_1;if(f>0&&l<=c||f<0&&c<=l)do{var v=l;if(l=l+f|0,ul(n,0,t,v,Ns(n),r))return v}while(v!==c)}return-1}function ul(t,n,i,e,r,s){if(e<0||n<0||n>(Ns(t)-r|0)||e>(Ns(i)-r|0))return!1;var o=0;if(o=0))throw Fu(Ws("Limit must be non-negative, but was "+t))}function hl(t){if(t.xh_1<0)t.vh_1=0,t.yh_1=null;else{var n;if(t.ai_1.di_1>0?(t.zh_1=t.zh_1+1|0,n=t.zh_1>=t.ai_1.di_1):n=!1,n||t.xh_1>Ns(t.ai_1.bi_1))t.yh_1=Yo(t.wh_1,K_(t.ai_1.bi_1)),t.xh_1=-1;else{var i=t.ai_1.ei_1(t.ai_1.bi_1,t.xh_1);if(null==i)t.yh_1=Yo(t.wh_1,K_(t.ai_1.bi_1)),t.xh_1=-1;else{var e=i.oe(),r=i.pe();t.yh_1=Nr(t.wh_1,e),t.wh_1=e+r|0,t.xh_1=t.wh_1+(0===r?1:0)|0}}t.vh_1=1}}function _l(t){this.ai_1=t,this.vh_1=-1,this.wh_1=Ur(t.ci_1,0,Ns(t.bi_1)),this.xh_1=this.wh_1,this.yh_1=null,this.zh_1=0}function ll(t,n,i,e){this.bi_1=t,this.ci_1=n,this.di_1=i,this.ei_1=e}function cl(t,n,i,e){return i=i===K?K_(t):i,(e=e!==K&&e)||"string"!=typeof t?ol(t,n,i,0,e,!0):t.lastIndexOf(n,i)}function fl(t){return Vr(J_(t))}function vl(t,n,i){return i=i===K?32:i,Ws(function(t,n,i){if(i=i===K?32:i,n<0)throw Fu("Desired length "+n+" is less than zero.");if(n<=Ns(t))return Rs(t,0,Ns(t));var e=ve(),r=1,s=n-Ns(t)|0;if(r<=s)do{var o=r;r=r+1|0,e.p5(i)}while(o!==s);return e.p7(t),e}(iu(t)?t:ro(),n,i))}function dl(t,n,i){return(i=i!==K&&i)||"string"!=typeof t||"string"!=typeof n?ul(t,Ns(t)-Ns(n)|0,n,0,Ns(n),i):Ue(t,n)}function wl(t){if(ml(t)){var n=pl(t);if(!(new ho(387905,-1073741824).z9(n)<=0&&n.z9(new ho(-387905,1073741823))<=0))throw ga(pl(t).toString()+" ns is out of nanoseconds range")}else{var i=pl(t);if(!(new ho(1,-1073741824).z9(i)<=0&&i.z9(new ho(-1,1073741823))<=0))throw ga(pl(t).toString()+" ms is out of milliseconds range");var e=pl(t);if(new ho(1108857478,-1074).z9(e)<=0&&e.z9(new ho(-1108857478,1073))<=0)throw ga(pl(t).toString()+" ms is denormalized")}return t}function pl(t){return t.lb(1)}function ml(t){return 0==(1&t.ia())}function gl(t){return 1==(1&t.ia())}function bl(){pt=this,this.fi_1=wl(new ho(0,0)),this.gi_1=jl(new ho(-1,1073741823)),this.hi_1=jl(new ho(1,-1073741824))}function $l(){return null==pt&&new bl,pt}function yl(t){return n=pl(t).ib(),i=1&t.ia(),wl(n.kb(1).db(Bo(i)));var n,i}function kl(t,n){if(El(t)){if(function(t){return!El(t)}(n)||t.pb(n).z9(new ho(0,0))>=0)return t;throw Fu("Summing infinite durations of different signs yields an undefined result.")}if(El(n))return n;var i,e;if((1&t.ia())==(1&n.ia())){var r=pl(t).db(pl(n));i=ml(t)?(e=r,new ho(387905,-1073741824).z9(e)<=0&&e.z9(new ho(-387905,1073741823))<=0?Fl(e):jl(Pl(e))):Rl(r)}else i=gl(t)?xl(0,pl(t),pl(n)):xl(0,pl(n),pl(t));return i}function xl(t,n,i){var e,r=Pl(i),s=n.db(r);if(new ho(1108857478,-1074).z9(s)<=0&&s.z9(new ho(-1108857478,1073))<=0){var o=i.eb(Ll(r));e=Fl(Ll(s).db(o))}else e=jl(Pr(s,new ho(1,-1073741824),new ho(-1,1073741823)));return e}function Sl(t){return t.z9(new ho(0,0))<0}function El(t){return!!t.equals($l().gi_1)||t.equals($l().hi_1)}function Cl(t,n){var i=t.pb(n);if(i.z9(new ho(0,0))<0||0==(1&i.ia()))return t.z9(n);var e=(1&t.ia())-(1&n.ia())|0;return Sl(t)?0|-e:e}function ql(t){return El(t)?0:function(t){return Al(t,_r())}(t).fb(Bo(24)).ia()}function Ol(t){return El(t)?0:function(t){return Al(t,hr())}(t).fb(Bo(60)).ia()}function zl(t){return El(t)?0:function(t){return Al(t,ar())}(t).fb(Bo(60)).ia()}function Al(t,n){var i,e=t;return e.equals($l().gi_1)?(ao(),i=new ho(-1,2147483647)):e.equals($l().hi_1)?(ao(),i=new ho(0,-2147483648)):i=rr(pl(t),function(t){return ml(t)?or():ur()}(t),n),i}function Tl(t){var n,i=t;if(i.equals(new ho(0,0)))n="0s";else if(i.equals($l().gi_1))n="Infinity";else if(i.equals($l().hi_1))n="-Infinity";else{var e=Sl(t),r=we();e&&r.p5(45);var s=function(t){return Sl(t)?yl(t):t}(t),o=function(t){return Al(t,lr())}(s),u=ql(s),a=Ol(s),h=zl(s),_=function(t){var n;n=El(t)?0:gl(t)?Ll(pl(t).fb(Bo(1e3))).ia():pl(t).fb(Bo(1e9)).ia();return n}(s),l=!o.equals(new ho(0,0)),c=!(0===u),f=!(0===a),v=0!==h||!(0===_),d=0;if(l&&(r.t7(o).p5(100),d=d+1|0),c||l&&(f||v)){var w=d;d=w+1|0,w>0&&r.p5(32),r.s7(u).p5(104)}if(f||v&&(c||l)){var p=d;d=p+1|0,p>0&&r.p5(32),r.s7(a).p5(109)}if(v){var m=d;d=m+1|0,m>0&&r.p5(32),0!==h||l||c||f?Il(r,0,h,_,9,"s",!1):_>=1e6?Il(r,0,_/1e6|0,_%1e6|0,6,"ms",!1):_>=1e3?Il(r,0,_/1e3|0,_%1e3|0,3,"us",!1):r.s7(_).o5("ns")}e&&d>1&&r.v7(1,40).p5(41),n=r.toString()}return n}function Il(t,n,i,e,r,s,o){if(t.s7(i),0!==e){t.p5(46);var u,a=vl(e.toString(),r,48);t:{var h=Ns(a)-1|0;if(0<=h)do{var _=h;if(h=h+-1|0,48!==js(a,_)){u=_;break t}}while(0<=h);u=-1}var l=u+1|0;!o&&l<3?t.r7(a,0,l):t.r7(a,0,Tt((l+2|0)/3|0,3))}t.o5(s)}function Dl(t){$l(),this.ji_1=t}function jl(t){return wl(t.kb(1).db(Bo(1)))}function Ml(t,n){var i=sr(new ho(-387905,1073741823),or(),n);return i.ib().z9(t)<=0&&t.z9(i)<=0?Fl(sr(t,n,or())):jl(Pr(rr(t,n,ur()),new ho(1,-1073741824),new ho(-1,1073741823)))}function Nl(t,n){var i=er(t,n,or());if(Gt(i))throw Fu(Ws("Duration value cannot be NaN."));var e=Ai(i);return new ho(387905,-1073741824).z9(e)<=0&&e.z9(new ho(-387905,1073741823))<=0?Fl(e):Rl(Ai(er(t,n,ur())))}function Rl(t){return new ho(1108857478,-1074).z9(t)<=0&&t.z9(new ho(-1108857478,1073))<=0?Fl(Ll(t)):jl(Pr(t,new ho(1,-1073741824),new ho(-1,1073741823)))}function Pl(t){return t.x9(Bo(1e6))}function Ll(t){return t.y9(Bo(1e6))}function Fl(t){return wl(t.kb(1))}function Ul(t){var n,i,e=t.length,r=0;if(e>0&&Z_("+-",js(t,0))&&(r=r+1|0),(e-r|0)>16){var s;t:{var o=Yo(r,K_(t));if(Jo(o,hs)&&o.d1())s=!0;else{for(var u=o.v();u.w();){var a=js(t,u.y());if(!(48<=a&&a<=57)){s=!1;break t}}s=!0}}n=s}else n=!1;return n?(45===js(t,0)?(ao(),i=new ho(0,-2147483648)):(ao(),i=new ho(-1,2147483647)),i):Pe(t,"+")?ye(Xr(t,1)):ye(t)}function Hl(t,n){var i;if(n){var e;if(72===t)e=_r();else if(77===t)e=hr();else{if(83!==t)throw Fu("Invalid duration ISO time unit: "+rs(t));e=ar()}i=e}else{if(68!==t)throw Fu("Invalid or unsupported duration ISO non-time unit: "+rs(t));i=lr()}return i}function Vl(t){var n;switch(t){case"ns":n=or();break;case"us":nr(),n=$;break;case"ms":n=ur();break;case"s":n=ar();break;case"m":n=hr();break;case"h":n=_r();break;case"d":n=lr();break;default:throw Fu("Unknown duration unit short name: "+t)}return n}function Bl(){return Kl(),mt}function Yl(){}function Wl(t){this.mi_1=t}function Gl(t,n){Yl.call(this),this.ni_1=tu(t,2)?t:ro(),this.oi_1=n,this.pi_1=Jo(this,n_)?this:ro(),this.qi_1=Bl()}function Kl(){if(!gt){gt=!0;var t=d_();mt=t}}function Xl(){if(yt)return n;yt=!0,new Jl("SYNCHRONIZED",0),bt=new Jl("PUBLICATION",1),$t=new Jl("NONE",2)}function Jl(t,n){ms.call(this,t,n)}function Zl(t){this.ui_1=t,this.vi_1=kt}function Ql(){}function tc(t){return t}function nc(t){return t}function ic(t){return t instanceof sc}function ec(t){return t instanceof sc?t.xi_1:null}function rc(){}function sc(t){this.xi_1=t}function oc(t){this.yi_1=t}function uc(t){return new sc(t)}function ac(t){if(t instanceof sc)throw t.xi_1}function hc(t){wa(t=t===K?"An operation is not implemented.":t,this),Qs(this,hc)}function _c(t,n){this.me_1=t,this.ne_1=n}function lc(t,n){return new _c(t,n)}function cc(t,n,i){this.zi_1=t,this.aj_1=n,this.bj_1=i}function fc(t){return t}function vc(t){return t}function dc(){St=this,this.cj_1=0,this.dj_1=-1,this.ej_1=1,this.fj_1=8}function wc(){return null==St&&new dc,St}function pc(t,n){return Us(255&t,255&n)}function mc(t){wc(),this.gj_1=t}function gc(t){return t}function bc(t){return t}function $c(t){return t.length}function yc(t){this.ij_1=t,this.jj_1=0}function kc(t,n){return(null!=new mc(n)?new mc(n):ro())instanceof mc&&br(t,n)}function xc(t,n){var i;t:{var e=Jo(n,hs)?n:ro();if(Jo(e,hs)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof mc&&br(t,s.gj_1))){i=!1;break t}}i=!0}}return i}function Sc(t){this.lj_1=t}function Ec(t){return t}function Cc(t){return t}function qc(){Et=this,this.oj_1=0,this.pj_1=-1,this.qj_1=4,this.rj_1=32}function Oc(){return null==Et&&new qc,Et}function zc(t,n){return bf(t,n)}function Ac(t){Oc(),this.sj_1=t}function Tc(t){return t}function Ic(t){return t}function Dc(t){return t.length}function jc(t){this.uj_1=t,this.vj_1=0}function Mc(t,n){return(null!=new Ac(n)?new Ac(n):ro())instanceof Ac&&mr(t,n)}function Nc(t,n){var i;t:{var e=Jo(n,hs)?n:ro();if(Jo(e,hs)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof Ac&&mr(t,s.sj_1))){i=!1;break t}}i=!0}}return i}function Rc(t){this.xj_1=t}function Pc(){Ct=this;Oc();Oc(),this.ak_1=new Lc(-1,0)}function Lc(t,n){null==Ct&&new Pc,Uc.call(this,t,n,1)}function Fc(){}function Uc(t,n,i){if(0===i)throw Fu("Step must be non-zero.");if(i===r.MIN_VALUE)throw Fu("Step must be greater than Int.MIN_VALUE to avoid overflow on negation.");this.fk_1=t,this.gk_1=function(t,n,i){var e;if(i>0){var r;if(bf(t,n)>=0)r=n;else r=n-sf(n,t,i)|0;e=r}else{if(!(i<0))throw Fu("Step is zero.");var s;if(bf(t,n)<=0)s=n;else s=n+sf(t,n,0|-i)|0;e=s}return e}(t,n,i),this.hk_1=i}function Hc(t,n,i){this.jk_1=n;var e;e=i>0?bf(t,n)<=0:bf(t,n)>=0,this.kk_1=e,this.lk_1=i,this.mk_1=this.kk_1?t:this.jk_1}function Vc(t){return t}function Bc(t){return t}function Yc(){qt=this,this.nk_1=new ho(0,0),this.ok_1=new ho(-1,-1),this.pk_1=8,this.qk_1=64}function Wc(){return null==qt&&new Yc,qt}function Gc(t,n){return yf(t,n)}function Kc(t){return function(t,n){if(t.z9(new ho(0,0))>=0)return ja(t,n);var i=t.mb(1).x9(Bo(n)).kb(1),e=i.y9(Bo(n)),r=t.eb(e);return r.z9(Bo(n))>=0&&(r=r.eb(Bo(n)),i=i.db(Bo(1))),ja(i,n)+ja(r,n)}(t,10)}function Xc(t){Wc(),this.rk_1=t}function Jc(t){return t}function Zc(t){return t}function Qc(t){return t.length}function tf(t){this.tk_1=t,this.uk_1=0}function nf(t,n){return(null!=new Xc(n)?new Xc(n):ro())instanceof Xc&&pr(t,n)}function ef(t,n){var i;t:{var e=Jo(n,hs)?n:ro();if(Jo(e,hs)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof Xc&&pr(t,s.rk_1))){i=!1;break t}}i=!0}}return i}function rf(t){this.wk_1=t}function sf(t,n,i){var e,r=$f(t,i),s=$f(n,i);bf(r,s)>=0?e=r-s|0:e=(r-s|0)+i|0;return e}function of(t){return t}function uf(t){return t}function af(){Ot=this,this.zk_1=0,this.al_1=-1,this.bl_1=2,this.cl_1=16}function hf(){return null==Ot&&new af,Ot}function _f(t,n){return Us(65535&t,65535&n)}function lf(t){hf(),this.dl_1=t}function cf(t){return t}function ff(t){return t}function vf(t){return t.length}function df(t){this.fl_1=t,this.gl_1=0}function wf(t,n){return(null!=new lf(n)?new lf(n):ro())instanceof lf&&gr(t,n)}function pf(t,n){var i;t:{var e=Jo(n,hs)?n:ro();if(Jo(e,hs)&&e.d1())i=!0;else{for(var r=e.v();r.w();){var s=r.y();if(!(s instanceof lf&&gr(t,s.dl_1))){i=!1;break t}}i=!0}}return i}function mf(t){this.il_1=t}function gf(t,n){$e(n);var i=t.length;if(0===i)return null;Oc();var e,r=js(t,0);if(ns(r,48)<0){if(1===i||43!==r)return null;e=1}else e=0;var s,o,u,a=119304647,h=a,_=n,l=0,c=e;if(c0){if(h!==a)return null;if(bf(l,(s=_,o=void 0,u=void 0,o=Bo(-1).nb(new ho(-1,0)),u=Bo(s).nb(new ho(-1,0)),h=o.x9(u).ia()))>0)return null}var d=l=Tt(l,_);if(bf(l=l+v|0,d)<0)return null}while(c=0)return i.x9(e);var r=i.mb(1).x9(e).kb(1),s=yf(i.eb(r.y9(e)),e)>=0?1:0;return r.db(Bo(s))}return No(Nt,"CharSequence",Ro),No(Rt,"Comparable",Ro),No(Pt,"Number",jo),No(Lt,"Unit",Po),No(Ft,"ByteCompanionObject",Po),No(Ut,"ShortCompanionObject",Po),No(Ht,"IntCompanionObject",Po),No(Vt,"FloatCompanionObject",Po),No(Bt,"DoubleCompanionObject",Po),No(Yt,"StringCompanionObject",Po),No(Wt,"BooleanCompanionObject",Po),No(hs,"Collection",Ro),No(Ma,"AbstractCollection",jo,K,[hs]),No(ws,"MutableIterable",Ro),No(on,"AbstractMutableCollection",jo,Ma,[Ma,hs,ws]),No(un,"IteratorImpl",jo),No(an,"ListIteratorImpl",jo,un),No(as,"List",Ro,K,[hs]),No(ls,"MutableList",Ro,K,[as,hs,ws]),No(hn,"AbstractMutableList",jo,on,[on,ls]),No(vs,"Map",Ro),No(Wa,"AbstractMap",jo,K,[vs]),No(ds,"MutableMap",Ro,K,[vs]),No(_n,"AbstractMutableMap",jo,Wa,[Wa,ds]),No(cs,"Set",Ro,K,[hs]),No(_s,"MutableSet",Ro,K,[cs,hs,ws]),No(ln,"AbstractMutableSet",jo,on,[on,_s]),No(wn,"Companion",Po),No($n,"ArrayList",jo,hn,[hn,ls],pn),No(Tn,"HashMap",jo,_n,[_n,ds],qn),No(In,"HashMapKeys",jo,ln,[_s,ln]),No(Dn,"HashMapValues",jo,on,[hs,ws,on]),No(Mn,"HashMapEntrySetBase",jo,ln,[_s,ln]),No(jn,"HashMapEntrySet",jo,Mn),No(Nn,K,jo),No(Rn,"HashMapKeysDefault",jo,ln),No(Pn,K,jo),No(Ln,"HashMapValuesDefault",jo,on),No(Wn,"HashSet",jo,ln,[ln,_s],Hn),No(ci,"Companion",Po),No(fi,"Itr",jo),No(vi,"KeysItr",jo,fi),No(di,"ValuesItr",jo,fi),No(wi,"EntriesItr",jo,fi),No(fs,"Entry",Ro),No(pi,"EntryRef",jo,K,[fs]),No(gi,"InternalMap",Ro),No(mi,"InternalHashMap",jo,K,[gi],Xn),No(yi,"LinkedHashMap",jo,Tn,[Tn,ds],bi),No(Ci,"LinkedHashSet",jo,Wn,[Wn,_s],ki),No(Nu,"Exception",jo,Error,K,(function t(){var n=Iu(no(to(Nu)));return Qs(n,t),n})),No(_a,"RuntimeException",jo,Nu,K,sa),No(Qu,"IllegalStateException",jo,_a,K,(function t(){var n=Ku(no(to(Qu)));return Qs(n,t),n})),No(zi,"CancellationException",jo,Qu,K,(function t(){var n,i=(Ku(n=no(to(zi))),zi.call(n),n);return Qs(i,t),i})),No(Ii,"KClass",Ro),No(Di,"KClassImpl",jo,K,[Ii]),No(ji,"NothingKClassImpl",Po,Di),No(Ni,"ErrorKClass",jo,K,[Ii],Ni),No(Ri,"PrimitiveKClassImpl",jo,Di),No(Pi,"SimpleKClassImpl",jo,Di),No(Li,"KProperty1",Ro),No(Fi,"KTypeImpl",jo),No(ae,"PrimitiveClasses",Po),No(Eh,"Sequence",Ro),No(ce,"ConstrainedOnceSequence",jo,K,[Eh]),No(fe,"CharacterCodingException",jo,Nu,K,(function t(){var n,i=(n=no(to(fe)),fe.call(n,null),n);return Qs(i,t),i})),No(pe,"StringBuilder",jo,K,[Nt],we),No(Ee,"Companion",Po),No(Oe,"Regex",jo),No(ze,"MatchGroup",jo),No(Ie,K,jo,Ma,[hs,Ma]),No(De,K,jo),No(je,"sam$kotlin_Comparator$0",jo),No(tr,"ExceptionTraceBuilder",jo,K,K,tr),No(ms,"Enum",jo,K,[Rt]),No(ir,"DurationUnit",jo,ms),No(kr,K,jo,K,[Eh]),No(Mr,K,jo,K,[Eh]),No(Yr,K,jo),No(Zr,"KotlinNothingValueException",jo,_a,K,Jr),No(ss,"Companion",Po),No(us,"Char",jo,K,[Rt]),No(ps,"Companion",Po),No(qs,K,jo),No(uo,"Companion",Po),No(ho,"Long",jo,Pt,[Pt,Rt]),No($u,"Digit",Po),No(ku,"Letter",Po),No(Su,"OtherLowercase",Po),No(n_,"Continuation",Ro),No(qu,"CoroutineImpl",jo,K,[n_]),No(Ou,"CompletedContinuation",Po,K,[n_]),No(Tu,K,jo,qu),No(Bu,"IllegalArgumentException",jo,_a,K,Pu),No(Gu,"IndexOutOfBoundsException",jo,_a,K,Yu),No(ea,"UnsupportedOperationException",jo,_a,K,na),No(va,"NoSuchElementException",jo,_a,K,la),No(ma,"Error",jo,Error,K,(function t(){var n=da(no(to(ma)));return Qs(n,t),n})),No(ba,"AssertionError",jo,ma,K,(function t(){var n,i=(da(n=no(to(ba))),ba.call(n),n);return Qs(i,t),i})),No(ya,"NumberFormatException",jo,Bu,K,(function t(){var n,i=(Ru(n=no(to(ya))),ya.call(n),n);return Qs(i,t),i})),No(xa,"ArithmeticException",jo,_a,K,(function t(){var n,i=(ra(n=no(to(xa))),xa.call(n),n);return Qs(i,t),i})),No(Ea,"ConcurrentModificationException",jo,_a,K,Sa),No(qa,"NullPointerException",jo,_a,K,Ca),No(za,"NoWhenBranchMatchedException",jo,_a,K,Oa),No(Ta,"ClassCastException",jo,_a,K,Aa),No(Da,"UninitializedPropertyAccessException",jo,_a,K,(function t(){var n,i=(ra(n=no(to(Da))),Da.call(n),n);return Qs(i,t),i})),No(Na,"IteratorImpl",jo),No(Ra,"Companion",Po),No(Pa,"AbstractList",jo,Ma,[Ma,as]),No(La,K,jo),No(Fa,K,jo),No(Va,"Companion",Po),No(Ka,"AbstractSet",jo,Ma,[Ma,cs]),No(Ba,K,jo,Ka),No(Ya,K,jo,Ma),No(Ga,"Companion",Po),No(nh,"Companion",Po),No(eh,"ArrayDeque",jo,hn,K,Xa),No(hh,"EmptyList",Po,K,[as]),No(lh,"ArrayAsCollection",jo,K,[hs]),No(ch,"EmptyIterator",Po),No(fh,"IndexedValue",jo),No(dh,"IndexingIterable",jo),No(wh,"IndexingIterator",jo),No(ph,"MapWithDefault",Ro,K,[vs]),No(gh,"EmptyMap",Po,K,[vs]),No(xh,"IntIterator",jo),No(Sh,"CharIterator",jo),No(Ch,"SequenceScope",jo,K,K,K,K,K,[1]),No(Oh,"SequenceBuilderIterator",jo,Ch,[Ch,n_],Oh,K,K,[1]),No(zh,K,jo,K,[Eh]),No(Ah,K,jo),No(Th,"TransformingSequence",jo,K,[Eh]),No(Dh,K,jo),No(jh,"FilteringSequence",jo,K,[Eh]),No(Ph,K,jo),No(Lh,"FlatteningSequence",jo,K,[Eh]),No(Uh,"DropTakeSequence",Ro,K,[Eh]),No(Hh,K,jo),No(Vh,"TakeSequence",jo,K,[Eh,Uh]),No(Yh,K,jo),No(Wh,"GeneratorSequence",jo,K,[Eh]),No(Gh,"EmptySequence",Po,K,[Eh,Uh]),No(Kh,K,jo,K,[Eh]),No(Qh,"EmptySet",Po,K,[cs]),No(i_,"Key",Po),No(o_,"CoroutineContext",Ro),No(r_,"Element",Ro,K,[o_]),No(e_,"ContinuationInterceptor",Ro,K,[r_]),No(u_,"EmptyCoroutineContext",Po,K,[o_]),No(c_,"CombinedContext",jo,K,[o_]),No(f_,"AbstractCoroutineContextKey",jo),No(v_,"AbstractCoroutineContextElement",jo,K,[r_]),No(w_,"CoroutineSingletons",jo,ms),No(p_,"EnumEntriesList",jo,Pa,[as,Pa]),No(k_,"Random",jo),No($_,"Default",Po,k_),No(S_,"Companion",Po),No(E_,"XorWowRandom",jo,k_),No(C_,"Companion",Po),No(j_,"IntProgression",jo),No(R_,"ClosedRange",Ro),No(O_,"IntRange",jo,j_,[j_,R_]),No(z_,"Companion",Po),No(N_,"CharProgression",jo),No(A_,"CharRange",jo,N_,[N_,R_]),No(T_,"IntProgressionIterator",jo,xh),No(I_,"CharProgressionIterator",jo,Sh),No(D_,"Companion",Po),No(M_,"Companion",Po),No(P_,"KTypeParameter",Ro),No(_l,K,jo),No(ll,"DelimitedRangesSequence",jo,K,[Eh]),No(bl,"Companion",Po),No(Dl,"Duration",jo,K,[Rt]),No(Yl,"DeepRecursiveScope",jo,K,K,K,K,K,[1]),No(Wl,"DeepRecursiveFunction",jo),No(Gl,"DeepRecursiveScopeImpl",jo,Yl,[Yl,n_],K,K,K,[1]),No(Jl,"LazyThreadSafetyMode",jo,ms),No(Zl,"UnsafeLazyImpl",jo),No(Ql,"UNINITIALIZED_VALUE",Po),No(rc,"Companion",Po),No(sc,"Failure",jo),No(oc,"Result",jo),No(hc,"NotImplementedError",jo,ma,K,hc),No(_c,"Pair",jo),No(cc,"Triple",jo),No(dc,"Companion",Po),No(mc,"UByte",jo,K,[Rt]),No(yc,"Iterator",jo),No(Sc,"UByteArray",jo,K,[hs]),No(qc,"Companion",Po),No(Ac,"UInt",jo,K,[Rt]),No(jc,"Iterator",jo),No(Rc,"UIntArray",jo,K,[hs]),No(Pc,"Companion",Po),No(Uc,"UIntProgression",jo),No(Lc,"UIntRange",jo,Uc,[Uc,R_]),No(Fc,"Companion",Po),No(Hc,"UIntProgressionIterator",jo),No(Yc,"Companion",Po),No(Xc,"ULong",jo,K,[Rt]),No(tf,"Iterator",jo),No(rf,"ULongArray",jo,K,[hs]),No(af,"Companion",Po),No(lf,"UShort",jo,K,[Rt]),No(df,"Iterator",jo),No(mf,"UShortArray",jo,K,[hs]),to(Lt).toString=function(){return"kotlin.Unit"},to(Ft).e=function(){return this.MIN_VALUE},to(Ft).f=function(){return this.MAX_VALUE},to(Ft).g=function(){return this.SIZE_BYTES},to(Ft).h=function(){return this.SIZE_BITS},to(Ut).e=function(){return this.MIN_VALUE},to(Ut).f=function(){return this.MAX_VALUE},to(Ut).g=function(){return this.SIZE_BYTES},to(Ut).h=function(){return this.SIZE_BITS},to(Ht).e=function(){return this.MIN_VALUE},to(Ht).f=function(){return this.MAX_VALUE},to(Ht).g=function(){return this.SIZE_BYTES},to(Ht).h=function(){return this.SIZE_BITS},to(Vt).e=function(){return this.MIN_VALUE},to(Vt).f=function(){return this.MAX_VALUE},to(Vt).i=function(){return this.POSITIVE_INFINITY},to(Vt).j=function(){return this.NEGATIVE_INFINITY},to(Vt).k=function(){return this.NaN},to(Vt).g=function(){return this.SIZE_BYTES},to(Vt).h=function(){return this.SIZE_BITS},to(Bt).e=function(){return this.MIN_VALUE},to(Bt).f=function(){return this.MAX_VALUE},to(Bt).i=function(){return this.POSITIVE_INFINITY},to(Bt).j=function(){return this.NEGATIVE_INFINITY},to(Bt).k=function(){return this.NaN},to(Bt).g=function(){return this.SIZE_BYTES},to(Bt).h=function(){return this.SIZE_BITS},to(on).t=function(t){this.u();for(var n=this.v();n.w();)if(Gs(n.y(),t))return n.x(),!0;return!1},to(on).z=function(t){this.u();for(var n=!1,i=t.v();i.w();){var e=i.y();this.s(e)&&(n=!0)}return n},to(on).a1=function(t){return this.u(),n=Jo(this,ws)?this:ro(),i=t,function(t,n,i){for(var e=!1,r=t.v();r.w();)n(r.y())===i&&(r.x(),e=!0);return e}(n,(function(t){return!i.r(t)}),!0);var n,i},to(on).b1=function(){this.u();for(var t=this.v();t.w();)t.y(),t.x()},to(on).toJSON=function(){return this.toArray()},to(on).u=function(){},to(un).w=function(){return this.e1_1=0},to(hn).r1=function(t){var n;t:{for(var i=0,e=this.v();e.w();){if(Gs(e.y(),t)){n=i;break t}i=i+1|0}n=-1}return n},to(hn).s1=function(t){return new an(this,t)},to(hn).q1=function(t,n){var i=this.s1(t),e=n-t|0,r=0;if(r=this.s4_1.i4_1)throw la();var t=this.t4_1;this.t4_1=t+1|0,this.u4_1=t;var n=this.s4_1.d4_1[this.u4_1];return this.w4(),n},to(di).y=function(){if(this.x4(),this.t4_1>=this.s4_1.i4_1)throw la();var t=this.t4_1;this.t4_1=t+1|0,this.u4_1=t;var n=eo(this.s4_1.e4_1)[this.u4_1];return this.w4(),n},to(wi).y=function(){if(this.x4(),this.t4_1>=this.s4_1.i4_1)throw la();var t=this.t4_1;this.t4_1=t+1|0,this.u4_1=t;var n=new pi(this.s4_1,this.u4_1);return this.w4(),n},to(wi).k5=function(){if(this.t4_1>=this.s4_1.i4_1)throw la();var t=this.t4_1;this.t4_1=t+1|0,this.u4_1=t;var n=this.s4_1.d4_1[this.u4_1],i=null==n?null:Ks(n),e=null==i?0:i,r=eo(this.s4_1.e4_1)[this.u4_1],s=null==r?null:Ks(r),o=e^(null==s?0:s);return this.w4(),o},to(wi).l5=function(t){if(this.t4_1>=this.s4_1.i4_1)throw la();var n=this.t4_1;this.t4_1=n+1|0,this.u4_1=n;var i=this.s4_1.d4_1[this.u4_1];Gs(i,this.s4_1)?t.o5("(this Map)"):t.n5(i),t.p5(61);var e=eo(this.s4_1.e4_1)[this.u4_1];Gs(e,this.s4_1)?t.o5("(this Map)"):t.n5(e),this.w4()},to(pi).g2=function(){return this.q5_1.d4_1[this.r5_1]},to(pi).h2=function(){return eo(this.q5_1.e4_1)[this.r5_1]},to(pi).equals=function(t){return!(null==t||!Jo(t,fs)||!Gs(t.g2(),this.g2()))&&Gs(t.h2(),this.h2())},to(pi).hashCode=function(){var t=this.g2(),n=null==t?null:Ks(t),i=null==n?0:n,e=this.h2(),r=null==e?null:Ks(e);return i^(null==r?0:r)},to(pi).toString=function(){return this.g2()+"="+this.h2()},to(mi).n=function(){return this.l4_1},to(mi).m2=function(t){return ai(this,t)>=0},to(mi).o2=function(t){var n=ui(this,t);return n<0?null:eo(this.e4_1)[n]},to(mi).e3=function(t){return ui(this,t)>=0},to(mi).e2=function(t,n){var i=hi(this,t),e=ei(this);if(i<0){var r=e[(0|-i)-1|0];return e[(0|-i)-1|0]=n,r}return e[i]=n,null},to(mi).f2=function(t){this.u(),function(t,n){if(n.d1())return!1;ii(t,n.n());for(var i=n.v(),e=!1;i.w();)li(t,i.y())&&(e=!0)}(this,t.d2())},to(mi).i2=function(t){var n=function(t,n){t.u();var i=ui(t,n);return i<0?-1:(_i(t,i),i)}(this,t);if(n<0)return null;var i=eo(this.e4_1),e=i[n];return fn(i,n),e},to(mi).b1=function(){this.u();var t=0,n=this.i4_1-1|0;if(t<=n)do{var i=t;t=t+1|0;var e=this.f4_1[i];e>=0&&(this.g4_1[e]=0,this.f4_1[i]=-1)}while(i!==n);vn(this.d4_1,0,this.i4_1);var r=this.e4_1;null==r||vn(r,0,this.i4_1),this.l4_1=0,this.i4_1=0,ni(this)},to(mi).equals=function(t){return t===this||!(null==t||!Jo(t,vs))&&function(t,n){return t.l4_1===n.n()&&t.w3(n.d2())}(this,t)},to(mi).hashCode=function(){for(var t=0,n=this.q3();n.w();)t=t+n.k5()|0;return t},to(mi).toString=function(){var t=ve(Tt(this.l4_1,3));t.o5("{");for(var n=0,i=this.q3();i.w();)n>0&&t.o5(", "),i.l5(t),n=n+1|0;return t.o5("}"),t.toString()},to(mi).u=function(){if(this.m4_1)throw na()},to(mi).u3=function(t){var n=ui(this,t.g2());return!(n<0)&&Gs(eo(this.e4_1)[n],t.h2())},to(mi).s5=function(t){return this.u3(Jo(t,fs)?t:ro())},to(mi).v3=function(t){this.u();var n=ui(this,t.g2());return!(n<0||!Gs(eo(this.e4_1)[n],t.h2())||(_i(this,n),0))},to(mi).n3=function(t){this.u();var n=ai(this,t);return!(n<0||(_i(this,n),0))},to(mi).g3=function(){return new vi(this)},to(mi).l3=function(){return new di(this)},to(mi).q3=function(){return new wi(this)},to(yi).u=function(){return this.c3_1.u()},to(Ci).u=function(){return this.c4_1.u()},to(Di).e6=function(){return this.d6_1},to(Di).equals=function(t){return!(t instanceof ji)&&!(t instanceof Ni)&&t instanceof Di&&Gs(this.e6(),t.e6())},to(Di).hashCode=function(){var t=this.f6(),n=null==t?null:Zs(t);return null==n?0:n},to(Di).toString=function(){return"class "+this.f6()},to(ji).f6=function(){return this.i6_1},to(ji).g6=function(t){return!1},to(ji).e6=function(){throw ia("There's no native JS class for Nothing type")},to(ji).equals=function(t){return t===this},to(ji).hashCode=function(){return 0},to(Ni).f6=function(){throw Ju(Ws("Unknown simpleName for ErrorKClass"))},to(Ni).g6=function(t){throw Ju(Ws("Can's check isInstance on ErrorKClass"))},to(Ni).equals=function(t){return t===this},to(Ni).hashCode=function(){return 0},to(Ri).equals=function(t){return t instanceof Ri&&!!to(Di).equals.call(this,t)&&this.k6_1===t.k6_1},to(Ri).f6=function(){return this.k6_1},to(Ri).g6=function(t){return this.l6_1(t)},to(Pi).f6=function(){return this.n6_1},to(Pi).g6=function(t){return lu(t,this.e6())},to(Fi).r6=function(){return this.o6_1},to(Fi).s6=function(){return this.p6_1},to(Fi).t6=function(){return this.q6_1},to(Fi).equals=function(t){return!!(t instanceof Fi&&Gs(this.o6_1,t.o6_1)&&Gs(this.p6_1,t.p6_1))&&this.q6_1===t.q6_1},to(Fi).hashCode=function(){return Tt(Tt(Ks(this.o6_1),31)+Ks(this.p6_1)|0,31)+Js(this.q6_1)|0},to(Fi).toString=function(){var t=this.o6_1,n=Jo(t,Ii)?t:null,i=null==n?Ws(this.o6_1):null!=n.f6()?n.f6():"(non-denotable type)",e=this.p6_1.d1()?"":xr(this.p6_1,", ","<",">"),r=this.q6_1?"?":"";return bs(i,e)+r},to(ae).u6=function(){return this.anyClass},to(ae).v6=function(){return this.numberClass},to(ae).w6=function(){return this.nothingClass},to(ae).x6=function(){return this.booleanClass},to(ae).y6=function(){return this.byteClass},to(ae).z6=function(){return this.shortClass},to(ae).a7=function(){return this.intClass},to(ae).b7=function(){return this.floatClass},to(ae).c7=function(){return this.doubleClass},to(ae).d7=function(){return this.arrayClass},to(ae).e7=function(){return this.stringClass},to(ae).f7=function(){return this.throwableClass},to(ae).g7=function(){return this.booleanArrayClass},to(ae).h7=function(){return this.charArrayClass},to(ae).i7=function(){return this.byteArrayClass},to(ae).j7=function(){return this.shortArrayClass},to(ae).k7=function(){return this.intArrayClass},to(ae).l7=function(){return this.longArrayClass},to(ae).m7=function(){return this.floatArrayClass},to(ae).n7=function(){return this.doubleArrayClass},to(ae).functionClass=function(t){var n,i,e=Ui()[t];if(null==e){var r=new Ri(Function,"Function"+t,(i=t,function(t){return"function"==typeof t&&t.length===i}));Ui()[t]=r,n=r}else n=e;return n},to(ce).v=function(){var t=this.o7_1;if(null==t)throw Ju("This sequence can be consumed only once.");var n=t;return this.o7_1=null,n.v()},to(pe).a=function(){return this.m5_1.length},to(pe).b=function(t){var n=this.m5_1;if(!(t>=0&&t<=K_(n)))throw Wu("index: "+t+", length: "+this.a()+"}");return js(n,t)},to(pe).c=function(t,n){return this.m5_1.substring(t,n)},to(pe).p5=function(t){return this.m5_1=this.m5_1+rs(t),this},to(pe).p7=function(t){return this.m5_1=this.m5_1+gs(t),this},to(pe).q7=function(t,n,i){return this.r7(null==t?"null":t,n,i)},to(pe).n5=function(t){return this.m5_1=this.m5_1+gs(t),this},to(pe).s7=function(t){return this.o5(t.toString())},to(pe).t7=function(t){return this.o5(t.toString())},to(pe).u7=function(t){return this.o5(t.toString())},to(pe).o5=function(t){var n=this.m5_1;return this.m5_1=n+(null==t?"null":t),this},to(pe).v7=function(t,n){tt.o1(t,this.a());var i=this.m5_1.substring(0,t)+rs(n);return this.m5_1=i+this.m5_1.substring(t),this},to(pe).w7=function(t,n){tt.o1(t,this.a());var i=null==n?"null":n,e=this.m5_1.substring(0,t)+i;return this.m5_1=e+this.m5_1.substring(t),this},to(pe).x7=function(t){if(t<0)throw Fu("Negative new length: "+t+".");if(t<=this.a())this.m5_1=this.m5_1.substring(0,t);else{var n=this.a();if(nNs(t))throw Wu("Start index out of bounds: "+n+", input length: "+Ns(t));return Ae(this.k8_1,Ws(t),n,this.k8_1)},to(Oe).o8=function(t,n){if(n<0||n>Ns(t))throw Wu("Start index out of bounds: "+n+", input length: "+Ns(t));return i=this,e=t,r=n,new Wh((function(){return i.n8(e,r)}),qe);var i,e,r},to(Oe).p8=function(t,n,i){return n=n===K?0:n,i===K?this.o8(t,n):i.o8.call(this,t,n)},to(Oe).q8=function(t,n){al(n);for(var i=this.p8(t),e=0===n?i:function(t,n){if(!(n>=0))throw Fu(Ws("Requested element count "+n+" is less than zero."));return 0===n?Fh():Jo(t,Uh)?t.ja(n):new Vh(t,n)}(i,n-1|0),r=pn(),s=0,o=e.v();o.w();){var u=o.y();r.s(Ws(Rs(t,s,u.r8().v8()))),s=u.r8().w8()+1|0}return r.s(Ws(Rs(t,s,Ns(t)))),r},to(Oe).toString=function(){return this.k8_1.toString()},to(ze).toString=function(){return"MatchGroup(value="+this.x8_1+")"},to(ze).hashCode=function(){return Zs(this.x8_1)},to(ze).equals=function(t){if(this===t)return!0;if(!(t instanceof ze))return!1;var n=t instanceof ze?t:ro();return this.x8_1===n.x8_1},to(Ie).n=function(){return this.b9_1.length},to(Ie).v=function(){return Hr(qr(oh(this)),(t=this,function(n){return t.h1(n)})).v();var t},to(Ie).h1=function(t){var n=this.b9_1[t];return null==n?null:new ze(n)},to(De).r8=function(){return this.d9_1},to(De).y=function(){return Ae(this.i9_1,this.j9_1,this.g9_1.d1()?function(t,n){if(n>>i|0|t.m_1<<(32-i|0),t.m_1>>>i|0):new ho(32===i?t.m_1:t.m_1>>>(i-32|0)|0,0)}(this,t)},to(ho).nb=function(t){return new ho(this.l_1&t.l_1,this.m_1&t.m_1)},to(ho).ob=function(t){return new ho(this.l_1|t.l_1,this.m_1|t.m_1)},to(ho).pb=function(t){return new ho(this.l_1^t.l_1,this.m_1^t.m_1)},to(ho).jb=function(){return new ho(~this.l_1,~this.m_1)},to(ho).qb=function(){return Lo(this.l_1)},to(ho).rb=function(){return Uo(this.l_1)},to(ho).ia=function(){return this.l_1},to(ho).c6=function(){return yo(this)},to(ho).valueOf=function(){return this.c6()},to(ho).equals=function(t){return t instanceof ho&&ko(this,t)},to(ho).hashCode=function(){return t=this,Do(),t.l_1^t.m_1;var t},to(ho).toString=function(){return xo(this,10)},to(qu).gc=function(){return eo(this.ec_1)},to(qu).jc=function(){var t,n=this.fc_1;if(null==n){var i=this.gc().hc(at),e=null==i?null:i.kc(this),r=null==e?this:e;this.fc_1=r,t=r}else t=n;return t},to(qu).lc=function(t){var i,e=this;if(ic(t))i=null;else{i=null==t||null!=t?t:ro()}for(var r=i,s=ec(t);;){var o=e;null==s?o.bc_1=r:(o.zb_1=o.ac_1,o.cc_1=s);try{var u=o.mc();if(u===d_())return n;r=u,s=null}catch(t){r=null,s=t}Cu(o);var a=eo(o.yb_1);if(!(a instanceof qu)){if(null!=s){var h=uc(eo(s));a.nc(h)}else{var _=r;a.nc(_)}return n}e=a}},to(qu).nc=function(t){return this.lc(t)},to(Ou).gc=function(){throw Ju(Ws("This continuation is already complete"))},to(Ou).lc=function(t){throw Ju(Ws("This continuation is already complete"))},to(Ou).nc=function(t){return this.lc(t)},to(Ou).toString=function(){return"This continuation is already complete"},to(Tu).mc=function(){if(null!=this.cc_1)throw this.cc_1;var t=this.wc_1;return"function"==typeof t?t(this.xc_1,this.yc_1):this.wc_1.zc(this.xc_1,this.yc_1)},to(Ma).r=function(t){var n;t:if(Jo(this,hs)&&this.d1())n=!1;else{for(var i=this.v();i.w();)if(Gs(i.y(),t)){n=!0;break t}n=!1}return n},to(Ma).c1=function(t){var n;t:if(Jo(t,hs)&&t.d1())n=!0;else{for(var i=t.v();i.w();){var e=i.y();if(!this.r(e)){n=!1;break t}}n=!0}return n},to(Ma).d1=function(){return 0===this.n()},to(Ma).toString=function(){return xr(this,", ","[","]",K,K,(t=this,function(n){return n===t?"(this Collection)":gs(n)}));var t},to(Ma).toArray=function(){return Xt(this)},to(Na).w=function(){return this.ad_1=n)throw Wu("index: "+t+", size: "+n)},to(Ra).o1=function(t,n){if(t<0||t>n)throw Wu("index: "+t+", size: "+n)},to(Ra).q=function(t,n,i){if(t<0||n>i)throw Wu("fromIndex: "+t+", toIndex: "+n+", size: "+i);if(t>n)throw Fu("fromIndex: "+t+" > toIndex: "+n)},to(Ra).z7=function(t,n,i){if(t<0||n>i)throw Wu("startIndex: "+t+", endIndex: "+n+", size: "+i);if(t>n)throw Fu("startIndex: "+t+" > endIndex: "+n)},to(Ra).n4=function(t,n){var i=t+(t>>1)|0;return(i-n|0)<0&&(i=n),(i-2147483639|0)>0&&(i=n>2147483639?r.MAX_VALUE:2147483639),i},to(Ra).u1=function(t){for(var n=1,i=t.v();i.w();){var e=i.y(),r=Tt(31,n),s=null==e?null:Ks(e);n=r+(null==s?0:s)|0}return n},to(Ra).t1=function(t,n){if(t.n()!==n.n())return!1;for(var i=n.v(),e=t.v();e.w();)if(!Gs(e.y(),i.y()))return!1;return!0},to(Pa).v=function(){return new Na(this)},to(Pa).r1=function(t){var n;t:{for(var i=0,e=this.v();e.w();){if(Gs(e.y(),t)){n=i;break t}i=i+1|0}n=-1}return n},to(Pa).equals=function(t){return t===this||!(null==t||!Jo(t,as))&&tt.t1(this,t)},to(Pa).hashCode=function(){return tt.u1(this)},to(La).w=function(){return this.cd_1.w()},to(La).y=function(){return this.cd_1.y().g2()},to(Fa).w=function(){return this.dd_1.w()},to(Fa).y=function(){return this.dd_1.y().h2()},to(Ba).e3=function(t){return this.ed_1.l2(t)},to(Ba).r=function(t){return(null==t||null!=t)&&this.e3(null==t||null!=t?t:ro())},to(Ba).v=function(){return new La(this.ed_1.d2().v())},to(Ba).n=function(){return this.ed_1.n()},to(Ya).i3=function(t){return this.gd_1.m2(t)},to(Ya).r=function(t){return(null==t||null!=t)&&this.i3(null==t||null!=t?t:ro())},to(Ya).v=function(){return new Fa(this.gd_1.d2().v())},to(Ya).n=function(){return this.gd_1.n()},to(Wa).l2=function(t){return!(null==Ha(this,t))},to(Wa).m2=function(t){var n;t:{var i=this.d2();if(Jo(i,hs)&&i.d1())n=!1;else{for(var e=i.v();e.w();)if(Gs(e.y().h2(),t)){n=!0;break t}n=!1}}return n},to(Wa).n2=function(t){if(null==t||!Jo(t,fs))return!1;var n=t.g2(),i=t.h2(),e=(Jo(this,vs)?this:ro()).o2(n);return!(!Gs(i,e)||null==e&&!(Jo(this,vs)?this:ro()).l2(n))},to(Wa).equals=function(t){if(t===this)return!0;if(null==t||!Jo(t,vs))return!1;if(this.n()!==t.n())return!1;var n;t:{var i=t.d2();if(Jo(i,hs)&&i.d1())n=!0;else{for(var e=i.v();e.w();){var r=e.y();if(!this.n2(r)){n=!1;break t}}n=!0}}return n},to(Wa).o2=function(t){var n=Ha(this,t);return null==n?null:n.h2()},to(Wa).hashCode=function(){return Ks(this.d2())},to(Wa).d1=function(){return 0===this.n()},to(Wa).n=function(){return this.d2().n()},to(Wa).b2=function(){return null==this.j2_1&&(this.j2_1=new Ba(this)),eo(this.j2_1)},to(Wa).toString=function(){return xr(this.d2(),", ","{","}",K,K,(t=this,function(n){return t.fd(n)}));var t},to(Wa).fd=function(t){return Ua(this,t.g2())+"="+Ua(this,t.h2())},to(Wa).c2=function(){return null==this.k2_1&&(this.k2_1=new Ya(this)),eo(this.k2_1)},to(Ga).q2=function(t){for(var n=0,i=t.v();i.w();){var e=i.y(),r=n,s=null==e?null:Ks(e);n=r+(null==s?0:s)|0}return n},to(Ga).p2=function(t,n){return t.n()===n.n()&&t.c1(n)},to(Ka).equals=function(t){return t===this||!(null==t||!Jo(t,cs))&&nt.p2(this,t)},to(Ka).hashCode=function(){return nt.q2(this)},to(eh).n=function(){return this.kd_1},to(eh).d1=function(){return 0===this.kd_1},to(eh).nd=function(){if(this.d1())throw fa("ArrayDeque is empty.");var t=this.id_1,n=this.jd_1[t];return null==n||null!=n?n:ro()},to(eh).od=function(){var t;if(this.d1())t=null;else{var n=this.id_1,i=this.jd_1[n];t=null==i||null!=i?i:ro()}return t},to(eh).pd=function(t){Ja(this,this.kd_1+1|0),this.id_1=th(this,this.id_1),this.jd_1[this.id_1]=t,this.kd_1=this.kd_1+1|0},to(eh).qd=function(t){Ja(this,this.kd_1+1|0);var n=this.jd_1,i=this.kd_1;n[Za(this,this.id_1+i|0)]=t,this.kd_1=this.kd_1+1|0},to(eh).rd=function(){if(this.d1())throw fa("ArrayDeque is empty.");var t=this.id_1,n=this.jd_1[t],i=null==n||null!=n?n:ro();return this.jd_1[this.id_1]=null,this.id_1=Qa(this,this.id_1),this.kd_1=this.kd_1-1|0,i},to(eh).sd=function(){return this.d1()?null:this.rd()},to(eh).td=function(){if(this.d1())throw fa("ArrayDeque is empty.");var t=sh(this),n=Za(this,this.id_1+t|0),i=this.jd_1[n],e=null==i||null!=i?i:ro();return this.jd_1[n]=null,this.kd_1=this.kd_1-1|0,e},to(eh).s=function(t){return this.qd(t),!0},to(eh).p1=function(t,i){if(tt.o1(t,this.kd_1),t===this.kd_1)return this.qd(i),n;if(0===t)return this.pd(i),n;Ja(this,this.kd_1+1|0);var e=Za(this,this.id_1+t|0);if(t<(this.kd_1+1|0)>>1){var r=th(this,e),s=th(this,this.id_1);r>=this.id_1?(this.jd_1[s]=this.jd_1[this.id_1],sn(this.jd_1,this.jd_1,this.id_1,this.id_1+1|0,r+1|0)):(sn(this.jd_1,this.jd_1,this.id_1-1|0,this.id_1,this.jd_1.length),this.jd_1[this.jd_1.length-1|0]=this.jd_1[0],sn(this.jd_1,this.jd_1,0,1,r+1|0)),this.jd_1[r]=i,this.id_1=s}else{var o=this.kd_1,u=Za(this,this.id_1+o|0);e=i){var s=this.id_1,o=this.jd_1.length;if(s>1)n>=this.id_1?sn(this.jd_1,this.jd_1,this.id_1+1|0,this.id_1,n):(sn(this.jd_1,this.jd_1,1,0,n),this.jd_1[0]=this.jd_1[this.jd_1.length-1|0],sn(this.jd_1,this.jd_1,this.id_1+1|0,this.id_1,this.jd_1.length-1|0)),this.jd_1[this.id_1]=null,this.id_1=Qa(this,this.id_1);else{var r=sh(this),s=Za(this,this.id_1+r|0);n<=s?sn(this.jd_1,this.jd_1,n,n+1|0,s+1|0):(sn(this.jd_1,this.jd_1,n,n+1|0,this.jd_1.length),this.jd_1[this.jd_1.length-1|0]=this.jd_1[0],sn(this.jd_1,this.jd_1,0,1,s+1|0)),this.jd_1[s]=null}return this.kd_1=this.kd_1-1|0,e},to(eh).b1=function(){var t=this.kd_1,n=Za(this,this.id_1+t|0);this.id_1=this.kd_1?t:function(t,n){return ys(Array(n),null)}(0,this.kd_1),i=Qo(n)?n:ro(),e=this.kd_1,r=Za(this,this.id_1+e|0);this.id_10&&this.tf_1.w()},to(Vh).ja=function(t){return t>=this.vf_1?this:new Vh(this.uf_1,t)},to(Vh).v=function(){return new Hh(this)},to(Yh).y=function(){if(this.xf_1<0&&Bh(this),0===this.xf_1)throw la();var t=this.wf_1,n=null!=t?t:ro();return this.xf_1=-1,n},to(Yh).w=function(){return this.xf_1<0&&Bh(this),1===this.xf_1},to(Wh).v=function(){return new Yh(this)},to(Gh).v=function(){return rt},to(Gh).ja=function(t){return ot},to(Kh).v=function(){return this.bg_1},to(Qh).equals=function(t){return!(null==t||!Jo(t,cs))&&t.d1()},to(Qh).hashCode=function(){return 0},to(Qh).toString=function(){return"[]"},to(Qh).n=function(){return 0},to(Qh).d1=function(){return!0},to(Qh).wd=function(t){return!1},to(Qh).r=function(t){return!1},to(Qh).xd=function(t){return t.d1()},to(Qh).c1=function(t){return this.xd(t)},to(Qh).v=function(){return rt},to(u_).hc=function(t){return null},to(u_).ig=function(t,n){return t},to(u_).jg=function(t){return t},to(u_).hg=function(t){return this},to(u_).hashCode=function(){return 0},to(u_).toString=function(){return"EmptyCoroutineContext"},to(c_).hc=function(t){for(var n=this;;){var i=n.mg_1.hc(t);if(null!=i)return i;var e=n.lg_1;if(!(e instanceof c_))return e.hc(t);n=e}},to(c_).ig=function(t,n){return n(this.lg_1.ig(t,n),this.mg_1)},to(c_).hg=function(t){if(null!=this.mg_1.hc(t))return this.lg_1;var n=this.lg_1.hg(t);return n===this.lg_1?this:n===a_()?this.mg_1:new c_(n,this.mg_1)},to(c_).equals=function(t){return this===t||!!(t instanceof c_&&h_(t)===h_(this))&&function(t,n){for(var i=n;;){if(!__(t,i.mg_1))return!1;var e=i.lg_1;if(!(e instanceof c_))return __(t,Jo(e,r_)?e:ro());i=e}}(t,this)},to(c_).hashCode=function(){return Ks(this.lg_1)+Ks(this.mg_1)|0},to(c_).toString=function(){return"["+this.ig("",l_)+"]"},to(f_).fg=function(t){return this.dg_1(t)},to(f_).gg=function(t){return t===this||this.eg_1===t},to(v_).g2=function(){return this.ng_1},to(p_).n=function(){return this.og_1.length},to(p_).h1=function(t){return tt.v2(t,this.og_1.length),this.og_1[t]},to(p_).pg=function(t){return null!==t&&yr(this.og_1,t.v9_1)===t},to(p_).r=function(t){return t instanceof ms&&this.pg(t instanceof ms?t:ro())},to(p_).qg=function(t){if(null===t)return-1;var n=t.v9_1;return yr(this.og_1,n)===t?n:-1},to(p_).r1=function(t){return t instanceof ms?this.qg(t instanceof ms?t:ro()):-1},to($_).sg=function(t){return this.rg_1.sg(t)},to($_).qe=function(){return this.rg_1.qe()},to($_).tg=function(t){return this.rg_1.tg(t)},to($_).ug=function(t,n){return this.rg_1.ug(t,n)},to(k_).qe=function(){return this.sg(32)},to(k_).tg=function(t){return this.ug(0,t)},to(k_).ug=function(t,n){x_(t,n);var i=n-t|0;if(i>0||i===r.MIN_VALUE){var e;if((i&(0|-i))===i){var s=31-zt(i)|0;e=this.sg(s)}else{var o;do{var u=this.qe()>>>1|0;o=u%i|0}while(((u-o|0)+(i-1|0)|0)<0);e=o}return t+e|0}for(;;){var a=this.qe();if(t<=a&&a>>2|0,this.wg_1=this.xg_1,this.xg_1=this.yg_1,this.yg_1=this.zg_1;var n=this.ah_1;return this.zg_1=n,t=t^t<<1^n^n<<4,this.ah_1=t,this.bh_1=this.bh_1+362437|0,t+this.bh_1|0},to(E_).sg=function(t){return function(t,n){return(t>>>(32-n|0)|0)&(0|-n)>>31}(this.qe(),t)},to(O_).v8=function(){return this.ea_1},to(O_).w8=function(){return this.fa_1},to(O_).ch=function(t){return this.ea_1<=t&&t<=this.fa_1},to(O_).ha=function(t){return this.ch("number"==typeof t?t:ro())},to(O_).d1=function(){return this.ea_1>this.fa_1},to(O_).equals=function(t){return t instanceof O_&&(!(!this.d1()||!t.d1())||this.ea_1===t.ea_1&&this.fa_1===t.fa_1)},to(O_).hashCode=function(){return this.d1()?-1:Tt(31,this.ea_1)+this.fa_1|0},to(O_).toString=function(){return this.ea_1+".."+this.fa_1},to(A_).hh=function(){return this.ih_1},to(A_).v8=function(){return new us(this.hh())},to(A_).lh=function(){return this.jh_1},to(A_).w8=function(){return new us(this.lh())},to(A_).mh=function(t){return ns(this.ih_1,t)<=0&&ns(t,this.jh_1)<=0},to(A_).ha=function(t){return this.mh(t instanceof us?t.la_1:ro())},to(A_).d1=function(){return ns(this.ih_1,this.jh_1)>0},to(A_).equals=function(t){return t instanceof A_&&(!(!this.d1()||!t.d1())||this.ih_1===t.ih_1&&this.jh_1===t.jh_1)},to(A_).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.ih_1;t=Tt(31,n)+this.jh_1|0}return t},to(A_).toString=function(){return rs(this.ih_1)+".."+rs(this.jh_1)},to(T_).w=function(){return this.ph_1},to(T_).qe=function(){var t=this.qh_1;if(t===this.oh_1){if(!this.ph_1)throw la();this.ph_1=!1}else this.qh_1=this.qh_1+this.nh_1|0;return t},to(I_).w=function(){return this.th_1},to(I_).se=function(){var t=this.uh_1;if(t===this.sh_1){if(!this.th_1)throw la();this.th_1=!1}else this.uh_1=this.uh_1+this.rh_1|0;return Vo(t)},to(D_).da=function(t,n,i){return new j_(t,n,i)},to(j_).v=function(){return new T_(this.ea_1,this.fa_1,this.ga_1)},to(j_).d1=function(){return this.ga_1>0?this.ea_1>this.fa_1:this.ea_10?this.ea_1+".."+this.fa_1+" step "+this.ga_1:this.ea_1+" downTo "+this.fa_1+" step "+(0|-this.ga_1)},to(N_).v=function(){return new I_(this.ih_1,this.jh_1,this.kh_1)},to(N_).d1=function(){return this.kh_1>0?ns(this.ih_1,this.jh_1)>0:ns(this.ih_1,this.jh_1)<0},to(N_).equals=function(t){return t instanceof N_&&(!(!this.d1()||!t.d1())||this.ih_1===t.ih_1&&this.jh_1===t.jh_1&&this.kh_1===t.kh_1)},to(N_).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.ih_1,i=Tt(31,n),e=this.jh_1;t=Tt(31,i+e|0)+this.kh_1|0}return t},to(N_).toString=function(){return this.kh_1>0?rs(this.ih_1)+".."+rs(this.jh_1)+" step "+this.kh_1:rs(this.ih_1)+" downTo "+rs(this.jh_1)+" step "+(0|-this.kh_1)},to(_l).y=function(){if(-1===this.vh_1&&hl(this),0===this.vh_1)throw la();var t=this.yh_1,n=t instanceof O_?t:ro();return this.yh_1=null,this.vh_1=-1,n},to(_l).w=function(){return-1===this.vh_1&&hl(this),1===this.vh_1},to(ll).v=function(){return new _l(this)},to(bl).ii=function(t){var n;try{n=function(t,n){var i=t.length;if(0===i)throw Fu("The string is empty");var e=0,r=$l().fi_1,s="Infinity",o=js(t,e);43!==o&&45!==o||(e=e+1|0);var u=e>0,a=!!u&&tl(t,45);if(i<=e)throw Fu("No components");if(80===js(t,e)){if((e=e+1|0)===i)throw Pu();for(var h=!1,_=null;e=0&&p<=K_(t)))throw Fu("Missing unit for value "+w);e=e+1|0;var m=Hl(js(t,p),h);if(null!=_&&_.w9(m)<=0)throw Fu("Unexpected order of duration components");_=m;var g=X_(w,46);m.equals(ar())&&g>0?(r=kl(r,Ml(Ul(w.substring(0,g)),m)),r=kl(r,Nl(ke(w.substring(g)),m))):r=kl(r,Ml(Ul(w),m))}else{if(h||(e=e+1|0)===i)throw Pu();h=!0}}else{if(n)throw Pu();var b=i-e|0;if(Le(t,e,s,0,Math.max(b,8),!0))r=$l().gi_1;else{var $=null,y=!1,k=!u;if(u&&40===js(t,e)&&41===Wr(t)&&(k=!0,(e=e+1|0)==(i=i-1|0)))throw Fu("No components");for(;e0){if(r=kl(r,Ml(ye(z.substring(0,R)),N)),r=kl(r,Nl(ke(z.substring(R)),N)),e0},to(Lc).equals=function(t){return t instanceof Lc&&(!(!this.d1()||!t.d1())||this.fk_1===t.fk_1&&this.gk_1===t.gk_1)},to(Lc).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.fk_1;t=Tt(31,n)+this.gk_1|0}return t},to(Lc).toString=function(){return new Ac(this.fk_1)+".."+new Ac(this.gk_1)},to(Uc).v=function(){return new Hc(this.fk_1,this.gk_1,this.hk_1)},to(Uc).d1=function(){var t;this.hk_1>0?t=bf(this.fk_1,this.gk_1)>0:t=bf(this.fk_1,this.gk_1)<0;return t},to(Uc).equals=function(t){return t instanceof Uc&&(!(!this.d1()||!t.d1())||this.fk_1===t.fk_1&&this.gk_1===t.gk_1&&this.hk_1===t.hk_1)},to(Uc).hashCode=function(){var t;if(this.d1())t=-1;else{var n=this.fk_1,i=Tt(31,n),e=this.gk_1;t=Tt(31,i+e|0)+this.hk_1|0}return t},to(Uc).toString=function(){return this.hk_1>0?new Ac(this.fk_1)+".."+new Ac(this.gk_1)+" step "+this.hk_1:new Ac(this.fk_1)+" downTo "+new Ac(this.gk_1)+" step "+(0|-this.hk_1)},to(Hc).w=function(){return this.kk_1},to(Hc).wj=function(){var t=this.mk_1;if(t===this.jk_1){if(!this.kk_1)throw la();this.kk_1=!1}else{var n=this.mk_1,i=this.lk_1;this.mk_1=n+i|0}return t},to(Hc).y=function(){return new Ac(this.wj())},to(Xc).sk=function(t){return Gc(this.rk_1,t)},to(Xc).d=function(t){return function(t,n){return Gc(t.rk_1,n instanceof Xc?n.rk_1:ro())}(this,t)},to(Xc).toString=function(){return Kc(this.rk_1)},to(Xc).hashCode=function(){return this.rk_1.hashCode()},to(Xc).equals=function(t){return function(t,n){if(!(n instanceof Xc))return!1;var i=n instanceof Xc?n.rk_1:ro();return!!t.equals(i)}(this.rk_1,t)},to(tf).w=function(){return this.uk_1=0},t.$_$.y5=cr,t.$_$.z5=function(t,n){return Ps(t,n)},t.$_$.a6=function(t,n){return Ps(t,n)},t.$_$.b6=function(t){return Ls(t)},t.$_$.c6=function(t){return Ls(t)},t.$_$.d6=function(t){return Ls(t)},t.$_$.e6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));return so(t,new Int16Array(n))},t.$_$.f6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));var i=oo(t,n,new ho(0,0));return i.$type$="LongArray",i},t.$_$.g6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));var i=oo(t,n,!1);return i.$type$="BooleanArray",i},t.$_$.h6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));var i=so(t,Ss(n));return i.$type$="CharArray",i},t.$_$.i6=wu,t.$_$.j6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));return so(t,new Float64Array(n))},t.$_$.k6=function(t,n){if(!(n>=0))throw Fu(Ws("Invalid new array size: "+n+"."));return so(t,new Float32Array(n))},t.$_$.l6=mu,t.$_$.m6=du,t.$_$.n6=rn,t.$_$.o6=function(t,n){if(!(n>=0))throw Fu(Ws("Requested element count "+n+" is less than zero."));return function(t,n){if(!(n>=0))throw Fu(Ws("Requested element count "+n+" is less than zero."));if(0===n)return rh();if(Jo(t,hs)){if(n>=t.n())return Or(t);if(1===n)return Jt(Tr(t))}var i=0,e=mn(n),r=t.v();t:for(;r.w();){var s=r.y();if(e.s(s),(i=i+1|0)===n)break t}return uh(e)}(t,Lr(t.n()-n|0,0))},t.$_$.p6=rh,t.$_$.q6=mh,t.$_$.r6=Zh,t.$_$.s6=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)},t.$_$.t6=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),t.fill(n,i,e)},t.$_$.u6=pu,t.$_$.v6=function(t){return t.d1()?null:t.h1(0)},t.$_$.w6=jr,t.$_$.x6=Tr,t.$_$.y6=function(t){if(0===t.length)throw fa("Array is empty.");return t[0]},t.$_$.z6=function(t){for(var n=pn(),i=t.v();i.w();)yh(n,i.y());return n},t.$_$.a7=function(t){for(var n=0,i=0,e=t.length;i0?vu(t):rh()},t.$_$.p7=tn,t.$_$.q7=function(t){return t.length>0?(n=t,$h(i=$i(t.length),n),i):mh();var n,i},t.$_$.r7=ah,t.$_$.s7=function(t,n){var i=function(t){return Jo(t,hs)?t.n():null}(n),e=null==i?null:t.n()+i|0,r=Ei(null==e?Tt(t.n(),2):e);return r.z(t),yh(r,n),r},t.$_$.t7=function(t,n){if(Jo(t,hs))return Cr(t,n);var i=pn();return yh(i,t),yh(i,n),i},t.$_$.u7=Cr,t.$_$.v7=function(t,n){var i=mn(t.n()+1|0);return i.z(t),i.s(n),i},t.$_$.w7=function(t){return t.d1()?null:t.j1(0)},t.$_$.x7=function(t){if(t.d1())throw fa("List is empty.");return t.j1(sh(t))},t.$_$.y7=function(t){for(var n=0,i=t.length;n0?function(t){switch(t.length){case 0:return Zh();case 1:return Zt(t[0]);default:return vr(t,Ei(t.length))}}(t):Zh()},t.$_$.c8=function(t){return 1===t.n()?t.h1(0):null},t.$_$.d8=zr,t.$_$.e8=en,t.$_$.f8=function(t,n,i,e){i=i===K?0:i,e=e===K?t.length:e,tt.q(i,e,t.length),function(t,n,i,e){n<(i-1|0)&&kn(t,n,i-1|0,e)}(t,i,e,n)},t.$_$.g8=function(t,n){if(Jo(t,hs)){if(t.n()<=1)return Or(t);var i=rn(t),e=Qo(i)?i:ro();return function(t,n){t.length>1&&yn(t,n)}(e,n),vu(e)}var r=Dr(t);return en(r,n),r},t.$_$.h8=function(t){for(var n=xs(t.n()),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.i8=function(t){return Ir(t,Yn(vh(t,12)))},t.$_$.j8=function(t){for(var n=new Int32Array(t.n()),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.k8=function(t){if(0===t.n())return rh();var n=t.d2().v();if(!n.w())return rh();var i=n.y();if(!n.w())return Jt(new _c(i.g2(),i.h2()));var e=mn(t.n()),r=new _c(i.g2(),i.h2());e.s(r);do{var s=n.y(),o=new _c(s.g2(),s.h2());e.s(o)}while(n.w());return e},t.$_$.l8=Or,t.$_$.m8=function(t){switch(t.length){case 0:return rh();case 1:return Jt(t[0]);default:return function(t){return gn(function(t){return new lh(t,!1)}(t))}(t)}},t.$_$.n8=function(t){if(Jo(t,hs)){var n;switch(t.n()){case 0:n=mh();break;case 1:n=Qt(Jo(t,as)?t.h1(0):t.v().y());break;default:n=bh(t,$i(t.n()))}return n}return function(t){return 0===t.n()?mh():t}(bh(t,bi()))},t.$_$.o8=Ar,t.$_$.p8=function(t){return Jo(t,hs)?xi(t):Ir(t,ki())},t.$_$.q8=Er,t.$_$.r8=function(t){for(var n=new Int16Array(t.n()),i=0,e=t.v();e.w();){var r=e.y(),s=i;i=s+1|0,n[s]=r}return n},t.$_$.s8=function(t){return[].slice.call(t)},t.$_$.t8=function(t){return new dh((n=t,function(){return ks(n)}));var n},t.$_$.u8=function(t,n){return t===n?0:null==t?-1:null==n?1:Us(null!=t&&("string"===(e=typeof(i=t))||"boolean"===e||nu(i)||Jo(i,Rt))?t:ro(),n);var i,e},t.$_$.v8=zi,t.$_$.w8=d_,t.$_$.x8=Au,t.$_$.y8=zu,t.$_$.z8=v_,t.$_$.a9=f_,t.$_$.b9=function(t){if(t instanceof f_){var n;if(t.gg(this.g2())){var i=t.fg(this);n=null!=i&&Jo(i,r_)?i:null}else n=null;return n}return at===t?Jo(this,r_)?this:ro():null},t.$_$.c9=function(t){return t instanceof f_?t.gg(this.g2())&&null!=t.fg(this)?a_():this:at===t?a_():this},t.$_$.d9=e_,t.$_$.e9=n_,t.$_$.f9=jt,t.$_$.g9=Dt,t.$_$.h9=Mt,t.$_$.i9=r_,t.$_$.j9=It,t.$_$.k9=qu,t.$_$.l9=function(t,i,e){var r=zu(Au(t,i,e)),s=n;r.nc(s)},t.$_$.m9=function(t){return new p_(t)},t.$_$.n9=m_,t.$_$.o9=Xs,t.$_$.p9=xs,t.$_$.q9=Qs,t.$_$.r9=Cs,t.$_$.s9=Ss,t.$_$.t9=js,t.$_$.u9=Ns,t.$_$.v9=Rs,t.$_$.w9=jo,t.$_$.x9=Us,t.$_$.y9=function(t,n,i,e){return Object.defineProperty(t,n,{configurable:!0,get:i,set:e})},t.$_$.z9=Gs,t.$_$.aa=io,t.$_$.ba=ys,t.$_$.ca=Js,t.$_$.da=Is,t.$_$.ea=function(t,n,i,e,r){return Go(),e.get=e,e.set=r,e.callableName=t,s=e,o=function(t,n){return Go(),(Go(),W)[t][null==n?0:1]}(n,r),u=function(t,n){Go();var i=t.$imask$;return null==i?$s([n]):i}(e,i),Go(),s.$metadata$=o,s.constructor=s,s.$imask$=u,s;var s,o,u},t.$_$.fa=Zs,t.$_$.ga=Ks,t.$_$.ha=Ro,t.$_$.ia=Qo,t.$_$.ja=eu,t.$_$.ka=ru,t.$_$.la=ou,t.$_$.ma=iu,t.$_$.na=_u,t.$_$.oa=au,t.$_$.pa=uu,t.$_$.qa=Jo,t.$_$.ra=hu,t.$_$.sa=nu,t.$_$.ta=su,t.$_$.ua=tu,t.$_$.va=function(t){return(t instanceof Di?t:ro()).e6()},t.$_$.wa=Es,t.$_$.xa=Yo,t.$_$.ya=function(t){return Lo(Fo(t))},t.$_$.za=Vo,t.$_$.ab=function(t){return+t},t.$_$.bb=Fo,t.$_$.cb=Ho,t.$_$.db=function(t){return Uo(Fo(t))},t.$_$.eb=no,t.$_$.fb=Po,t.$_$.gb=to,t.$_$.hb=No,t.$_$.ib=Lo,t.$_$.jb=Bo,t.$_$.kb=Uo,t.$_$.lb=Ws,t.$_$.mb=function(){return q},t.$_$.nb=function(t){return t<0?0|-t:t},t.$_$.ob=function(t){if(Gt(t))throw Fu("Cannot round NaN value.");return t>r.MAX_VALUE?r.MAX_VALUE:tn?n:t},t.$_$.wb=function(t,n){return t>n?n:t},t.$_$.xb=function(t,n){return t.z9(n)>0?n:t},t.$_$.yb=Fr,t.$_$.zb=function(t,n,i){if(n>i)throw Fu("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");return ti?i:t},t.$_$.ac=Ur,t.$_$.bc=Pr,t.$_$.cc=function(t,n,i){if(null!==n&&null!==i){if(Us(n,i)>0)throw Fu("Cannot coerce value to an empty range: maximum "+i+" is less than minimum "+n+".");if(Us(t,n)<0)return n;if(Us(t,i)>0)return i}else{if(null!==n&&Us(t,n)<0)return n;if(null!==i&&Us(t,i)>0)return i}return t},t.$_$.dc=function(t,n){return t.ha(n)},t.$_$.ec=function(t,n){var i=function(t){var n=Bo(r.MIN_VALUE);return t.z9(Bo(r.MAX_VALUE))<=0&&n.z9(t)<=0?t.ia():null}(n);return null!=i&&t.ha(i)},t.$_$.fc=Rr,t.$_$.gc=function(t){return wt.da(t.fa_1,t.ea_1,0|-t.ga_1)},t.$_$.hc=function(t,n){return function(t,n){if(!t)throw Fu("Step must be positive, was: "+Ws(n)+".")}(n>0,n),wt.da(t.ea_1,t.fa_1,t.ga_1>0?n:0|-n)},t.$_$.ic=Nr,t.$_$.jc=Ii,t.$_$.kc=Li,t.$_$.lc=P_,t.$_$.mc=Ch,t.$_$.nc=Eh,t.$_$.oc=function(t){return function(t){return t instanceof ce?t:new ce(t)}(new Kh(t))},t.$_$.pc=function(t,n){return new jh(t,!0,n)},t.$_$.qc=function(t){var n=t.v();return n.w()?n.y():null},t.$_$.rc=function(t,n){return new Lh(t,n,((i=function(t){return t.v()}).callableName="iterator",i));var i},t.$_$.sc=function(t,n){return new Lh(t,n,((i=function(t){return t.v()}).callableName="iterator",i));var i},t.$_$.tc=Hr,t.$_$.uc=function(t,n){return Mh(Nh([t,n]))},t.$_$.vc=function(t,n){return Mh(Nh([t,qr(n)]))},t.$_$.wc=Nh,t.$_$.xc=function(t){return new zh(t)},t.$_$.yc=Vr,t.$_$.zc=pe,t.$_$.ad=function(t){Ne();for(var n="",i=0,e=t.length;i=0:ol(t,n,0,Ns(t),i)>=0},t.$_$.cd=Z_,t.$_$.dd=function(t){return Ne(),Ve(t,0,t.length,!1)},t.$_$.ed=function(t,n,i,e){return n=n===K?0:n,i=i===K?t.length:i,e=e!==K&&e,Ne(),tt.z7(n,i,t.length),Ve(t,n,i,e)},t.$_$.fd=Gr,t.$_$.gd=function(t){return Ne(),function(t,n,i,e){if(Xe(),!(n>=0&&i<=t.length&&n<=i))throw Fu(Ws("Failed requirement."));for(var r=new Int8Array(Tt(i-n|0,3)),s=0,o=n;o>6|192);var l=s;s=l+1|0,r[l]=Lo(63&a|128)}else if(a<55296||a>=57344){var c=s;s=c+1|0,r[c]=Lo(a>>12|224);var f=s;s=f+1|0,r[f]=Lo(a>>6&63|128);var v=s;s=v+1|0,r[v]=Lo(63&a|128)}else{var d=Be(t,a,o,i,e);if(d<=0){var w=s;s=w+1|0,r[w]=He()[0];var p=s;s=p+1|0,r[p]=He()[1];var m=s;s=m+1|0,r[m]=He()[2]}else{var g=s;s=g+1|0,r[g]=Lo(d>>18|240);var b=s;s=b+1|0,r[b]=Lo(d>>12&63|128);var $=s;s=$+1|0,r[$]=Lo(d>>6&63|128);var y=s;s=y+1|0,r[y]=Lo(63&d|128),o=o+1|0}}}return r.length===s?r:wu(r,s)}(t,0,t.length,!1)},t.$_$.hd=function(t,n,i){return i=i!==K&&i,Ns(t)>0&&F_(js(t,K_(t)),n,i)},t.$_$.id=Ue,t.$_$.jd=function(t,n,i){if(null==t)return null==n;if(null==n)return!1;if(!(i=i!==K&&i))return t==n;if(t.length!==n.length)return!1;var e=0,r=t.length;if(er)return 0;var o=3&s;if(0===o){var u=2,a=e,h=0;if(h<=1)do{if(h=h+1|0,(a=a+(s>>u&127)|0)>n)return 3;if((a=a+(s>>(u=u+7|0)&127)|0)>n)return 0;u=u+7|0}while(h<=1);return 3}if(s<=7)return o;var _=n-e|0;return s>>Tt(2,s<=31?_%2|0:_)&3}(t)||function(t){var n=bu(Eu().wb_1,t);return n>=0&&t<(Eu().wb_1[n]+Eu().xb_1[n]|0)}(es(t))}(t)},t.$_$.sd=function(t){return os(),os(),t<=57343&&55296<=t},t.$_$.td=ge,t.$_$.ud=K_,t.$_$.vd=Q_,t.$_$.wd=cl,t.$_$.xd=Wr,t.$_$.yd=function(t,n){if(dl(t,n)){var i=t.length-Ns(n)|0;return t.substring(0,i)}return t},t.$_$.zd=function(t,n,i){if(t.length>=(Ns(n)+Ns(i)|0)&&function(t,n,i){return(i=i!==K&&i)||"string"!=typeof t||"string"!=typeof n?ul(t,0,n,0,Ns(n),i):Pe(t,n)}(t,n)&&dl(t,i)){var e=Ns(n),r=t.length-Ns(i)|0;return t.substring(e,r)}return t},t.$_$.ae=function(t,n,i,e){e=e!==K&&e;var r=new RegExp(Ce().g8(n),e?"gui":"gu"),s=Ce().h8(i);return t.replace(r,s)},t.$_$.be=function(t,n,i,e){e=e!==K&&e;var r=new RegExp(Ce().g8(rs(n)),e?"gui":"gu"),s=rs(i);return t.replace(r,s)},t.$_$.ce=function(t){var n;switch(Ns(t)){case 0:throw fa("Char sequence is empty.");case 1:n=js(t,0);break;default:throw Fu("Char sequence has more than one element.")}return n},t.$_$.de=function(t,n){return n.d1()?"":function(t,n){var i=n.v8(),e=n.w8()+1|0;return t.substring(i,e)}(t,n)},t.$_$.ee=function(t,n,i,e){if(i=i!==K&&i,e=e===K?0:e,1===n.length)return el(t,rs(n[0]),i,e);for(var r=Br(function(t,n,i,e,r){return i=i===K?0:i,e=e!==K&&e,al(r=r===K?0:r),new ll(t,i,r,(s=n,o=e,function(t,n){var i=il(t,s,n,o);return i<0?null:lc(i,1)}));var s,o}(t,n,K,i,e)),s=mn(vh(r,10)),o=r.v();o.w();){var u=rl(t,o.y());s.s(u)}return s},t.$_$.fe=function(t,n,i,e){if(i=i!==K&&i,e=e===K?0:e,1===n.length){var r=n[0];if(0!==Ns(r))return el(t,r,i,e)}for(var s=Br(sl(t,n,K,i,e)),o=mn(vh(s,10)),u=s.v();u.w();){var a=rl(t,u.y());o.s(a)}return o},t.$_$.ge=Pe,t.$_$.he=tl,t.$_$.ie=function(t,n,i){i=i===K?t:i;var e,r=Q_(t,n);if(-1===r)e=i;else{var s=r+1|0,o=t.length;e=t.substring(s,o)}return e},t.$_$.je=function(t,n,i){i=i===K?t:i;var e,r=X_(t,n);if(-1===r)e=i;else{var s=r+1|0,o=t.length;e=t.substring(s,o)}return e},t.$_$.ke=function(t,n,i){i=i===K?t:i;var e=Q_(t,n);return-1===e?i:t.substring(0,e)},t.$_$.le=function(t,n,i){i=i===K?t:i;var e=X_(t,n);return-1===e?i:t.substring(0,e)},t.$_$.me=function(t,n){if(!(n>=0))throw Fu(Ws("Requested character count "+n+" is less than zero."));var i=t.length,e=i-Fr(n,i)|0;return t.substring(e)},t.$_$.ne=Kr,t.$_$.oe=function(t){return function(t){var n=rs(t).toUpperCase();if(n.length>1){var i;if(329===t)i=n;else{var e=js(n,0),r=n.substring(1).toLowerCase();i=rs(e)+r}return i}return rs(be(t))}(t)},t.$_$.pe=function(t){return null!=t&&"true"===t.toLowerCase()},t.$_$.qe=function(t){var n,e=function(t){return function(t,n){var e=W_(t,n);if(null==e)return null;var r=e;return ri.MAX_VALUE?null:Lo(r)}(t,10)}(t);return null==e?G_(t):n=e,n},t.$_$.re=function(t){Ne();for(var n=0,i=t.length,e=Ss(i);ne.MAX_VALUE?null:Uo(r)}(t,10)}(t);return null==i?G_(t):n=i,n},t.$_$.ze=function(t,n){return ja(Bo(t).nb(new ho(-1,0)),n)},t.$_$.af=function(t,n){return t.toString($e(n))},t.$_$.bf=ja,t.$_$.cf=function(t){var n,i=function(t){return function(t,n){var i=gf(t,n);if(null==(null==i?null:new Ac(i)))return null;var e=i;wc();var r=255;return bf(e,r)>0?null:Lo(e)}(t,10)}(t);return null==(null==i?null:new mc(i))?G_(t):n=i,n},t.$_$.df=function(t){var n,i=function(t){return gf(t,10)}(t);return null==(null==i?null:new Ac(i))?G_(t):n=i,n},t.$_$.ef=function(t){var n,i=function(t){return function(t,n){$e(n);var i=t.length;if(0===i)return null;Wc();var e,r=new ho(-1,-1),s=js(t,0);if(ns(s,48)<0){if(1===i||43!==s)return null;e=1}else e=0;var o=new ho(477218588,119304647),u=o,a=Bo(n),h=new ho(0,0),_=e;if(_0){if(!Gs(u,o))return null;if(yf(h,u=kf(r,a))>0)return null}var f=h=h.y9(a),v=h,d=Bo(c).nb(new ho(-1,0));if(yf(h=v.db(d),f)<0)return null}while(_0?null:Uo(e)}(t,10)}(t);return null==(null==i?null:new lf(i))?G_(t):n=i,n},t.$_$.gf=function(t){return function(t,n){n=n===K?"":n;for(var i=fl(t),e=pn(),r=i.v();r.w();){var s=r.y();Re(s)||e.s(s)}for(var o=mn(vh(e,10)),u=e.v();u.w();){var a=H_(u.y());o.s(a)}for(var h=function(t){var n=t.v();if(!n.w())return null;for(var i=n.y();n.w();){var e=n.y();Us(i,e)>0&&(i=e)}return i}(o),_=null==h?0:h,l=(t.length,Tt(n.length,i.n()),U_(n)),c=sh(i),f=pn(),v=0,d=i.v();d.w();){var w=d.y(),p=v;v=p+1|0;var m,g=nn(p);if(0!==g&&g!==c||!Re(w)){var b,$=Xr(w,_);m=null==(b=null==$?null:l($))?w:b}else m=null;var y=m;null==y||f.s(y)}return Sr(f,ve(),"\n").toString()}(t,"")},t.$_$.hf=function(t,n){return function(t,n,i){if(n=n===K?"":n,Re(i=i===K?"|":i))throw Fu(Ws("marginPrefix must be non-blank string."));for(var e=fl(t),r=(t.length,Tt(n.length,e.n()),U_(n)),s=sh(e),o=pn(),u=0,a=e.v();a.w();){var h=a.y(),_=u;u=_+1|0;var l,c=nn(_);if(0!==c&&c!==s||!Re(h)){var f;t:{var v=0,d=Ns(h)-1|0;if(v<=d)do{var w=v;if(v=v+1|0,!ge(js(h,w))){f=w;break t}}while(v<=d);f=-1}var p,m,g=f;if(-1===g)p=null;else if(Fe(h,i,g)){var b=g+i.length|0;p=h.substring(b)}else p=null;l=null==(m=null==p?null:r(p))?h:m}else l=null;var $=l;null==$||o.s($)}return Sr(o,ve(),"\n").toString()}(t,"",n=n===K?"|":n)},t.$_$.if=function(t){var n;t:{var i=0,e=Ns(t)-1|0;if(i<=e)do{var r=i;if(i=i+1|0,!ge(js(t,r))){n=Rs(t,r,Ns(t));break t}}while(i<=e);n=""}return n},t.$_$.jf=function(t){var n=0,i=Ns(t)-1|0,e=!1;t:for(;n<=i;){var r=ge(js(t,e?i:n));if(e){if(!r)break t;i=i-1|0}else r?n=n+1|0:e=!0}return Rs(t,n,i+1|0)},t.$_$.kf=Dl,t.$_$.lf=Nl,t.$_$.mf=function(t,n){return n.w9(ar())<=0?Fl(sr(Bo(t),n,or())):Ml(Bo(t),n)},t.$_$.nf=xa,t.$_$.of=us,t.$_$.pf=Rt,t.$_$.qf=Wl,t.$_$.rf=Yl,t.$_$.sf=ms,t.$_$.tf=ma,t.$_$.uf=Nu,t.$_$.vf=Bu,t.$_$.wf=Qu,t.$_$.xf=Gu,t.$_$.yf=ho,t.$_$.zf=va,t.$_$.ag=hc,t.$_$.bg=ya,t.$_$.cg=_c,t.$_$.dg=oc,t.$_$.eg=_a,t.$_$.fg=ro,t.$_$.gg=cc,t.$_$.hg=Sc,t.$_$.ig=mc,t.$_$.jg=Rc,t.$_$.kg=Ac,t.$_$.lg=rf,t.$_$.mg=Xc,t.$_$.ng=mf,t.$_$.og=lf,t.$_$.pg=Lt,t.$_$.qg=ea,t.$_$.rg=function(t,n){if(t!==n){var i=t._suppressed;null==i?t._suppressed=ah([n]):i.s(n)}},t.$_$.sg=function(t){return t},t.$_$.tg=function(t){var n=t.l_1;return 0===n?32+Kt(t.m_1)|0:Kt(n)},t.$_$.ug=uc,t.$_$.vg=eo,t.$_$.wg=function(t,n){return Kl(),new Gl(t.mi_1,n).ri()},t.$_$.xg=function(t){return!function(t){return t===1/0||t===-1/0}(t)&&!Gt(t)},t.$_$.yg=function(t){return!function(t){return t===1/0||t===-1/0}(t)&&!function(t){return!(t==t)}(t)},t.$_$.zg=Gt,t.$_$.ah=function(t,n){return new Zl(n)},t.$_$.bh=function(t){return new Zl(t)},t.$_$.ch=function(){throw Oa()},t.$_$.dh=bs,t.$_$.eh=function(t){console.error(Je(t))},t.$_$.fh=Je,t.$_$.gh=function(){throw Jr()},t.$_$.hh=function(t){throw Ia("lateinit property "+t+" has not been initialized")},t.$_$.ih=gs,t.$_$.jh=lc,t.$_$.kh=bf,t})?i.apply(n,[n]):i)||(t.exports=e)},852:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i=n.$_$.gb,e=n.$_$.w9;function r(t){this.ll_1=t}return(0,n.$_$.hb)(r,"EventListenerHandler",e),i(r).ml=function(t){this.ll_1(t)},i(r).handleEvent=function(t){return this.ml(t)},i(r).toString=function(){return"EventListenerHandler("+this.ll_1+")"},t.$_$=t.$_$||{},t.$_$.a=function(t){return new r(t)},t})?e.apply(n,r):e)||(t.exports=s)},205:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e=n.$_$.ba,r=n.$_$.gb,s=n.$_$.y9,o=n.$_$.w9,u=n.$_$.hb,a=n.$_$.fb,h=n.$_$.ih,_=n.$_$.f;function l(t){for(var n=0,i=e(Array(t),null);n>ie()){case 0:var e=536870911&i,r=(2<=0){if(null===r)return io();if(n.jy(i,s,r))return ys(t),eo()}}else if(s===Gr()&&n.jy(i,s,Qr()))return ys(t),n.fy(i);return function(t,n,i,e,r){t:for(;;){var s=n.hy(i);if(null===s||s===Kr()){var o=t.ny_1.kotlinx$atomicfu$value.nb(new bn(-1,268435455));if(e.z9(o)<0){if(n.jy(i,s,Zr()))return ys(t),ro()}else{if(null===r)return io();if(n.jy(i,s,r))return ys(t),eo()}}else if(s===Gr()){if(n.jy(i,s,Qr()))return ys(t),n.fy(i)}else{if(s===ts())return ro();if(s===Zr())return ro();if(s===is())return ys(t),ro();if(s===Jr())continue t;if(n.jy(i,s,Xr())){var u,a=s instanceof Hs;return $s(s instanceof Hs?s.p10_1:s,t,n,i)?(n.iy(i,Qr()),ys(t),u=n.fy(i)):(n.iy(i,ts()),n.xy(i,!1),a&&ys(t),u=ro()),u}}}}(t,n,i,e,r)}function $s(t,n,i,e){var r;if(Xt(t,Ii))Xt(t,Ii)||Dt(),r=Bs(t,Tt);else if(Xt(t,Mu)){t instanceof Pu||Dt();var s=t.b11(n,Tt);s===Bu()&&i.gy(e),r=s===Vu()}else{if(!(t instanceof vs)){var o="Unexpected waiter: "+Bt(t);throw Yt(Bt(o))}r=Bs(t.x10_1,!0)}return r}function ys(t){if(cs(t))return Tt;var n=t.ty_1.kotlinx$atomicfu$value;t:for(;;){var i=t.py_1.atomicfu$getAndIncrement$long(),e=Wr(),r=i.x9(Yn(e));if(t.pz().z9(i)<=0)return n.gq_1.z9(r)<0&&null!=n.fz()&&Ls(t,r,n),Ss(t),Tt;if(!n.gq_1.equals(r)){var s=Ps(t,r,n,i);if(null==s)continue t;n=s}var o=Wr();if(ks(t,n,i.fb(Yn(o)).ia(),i))return Ss(t),Tt;Ss(t)}}function ks(t,n,i,e){var r,s=n.hy(i);return null!=s&&Xt(s,Fr)&&e.z9(t.oy_1.kotlinx$atomicfu$value)>=0&&n.jy(i,s,Jr())?($s(s,t,n,i)?(n.iy(i,Gr()),r=!0):(n.iy(i,ts()),n.xy(i,!1),r=!1),r):function(t,n,i,e){t:for(;;){var r=n.hy(i);if(null!=r&&Xt(r,Fr)){var s;if(e.z9(t.oy_1.kotlinx$atomicfu$value)<0){if(n.jy(i,r,new Hs(r)))return!0}else if(n.jy(i,r,Jr()))return $s(r,t,n,i)?(n.iy(i,Gr()),s=!0):(n.iy(i,ts()),n.xy(i,!1),s=!1),s}else{if(r===ts())return!1;if(null!==r){if(r===Gr())return!0;if(r===Zr()||r===Qr()||r===ns())return!0;if(r===is())return!0;if(r===Xr())continue t;var o="Unexpected cell state: "+Jt(r);throw Yt(Bt(o))}if(n.jy(i,r,Kr()))return!0}}}(t,n,i,e)}function xs(t,n){if(!t.qy_1.atomicfu$addAndGet$long(n).nb(new bn(0,1073741824)).equals(new bn(0,0)))for(;!t.qy_1.kotlinx$atomicfu$value.nb(new bn(0,1073741824)).equals(new bn(0,0)););}function Ss(t,n,i){return xs(t,n=n===Rt?new bn(1,0):n)}function Es(t){this.nz_1=t,this.lz_1=es(),this.mz_1=null}function Cs(t){var n=t.oz();return null==n?new wo(go()):n}function qs(t){t.e11()}function Os(t,n){var i=function(t){var n=t.ty_1.kotlinx$atomicfu$value,i=t.ry_1.kotlinx$atomicfu$value;i.gq_1.z9(n.gq_1)>0&&(n=i);var e=t.sy_1.kotlinx$atomicfu$value;return e.gq_1.z9(n.gq_1)>0&&(n=e),function(t){hu();for(var n=t;;){var i=ru(n);if(i===Qo())return n;var e=null==i||i instanceof uu?i:Dt();if(null===e){if(n.kz())return n}else n=e}}(n)}(t);if(t.g11()){var e=function(t,n){for(var i=n;;){var e=Wr()-1|0;if(0<=e)do{var r=e;e=e+-1|0;var s=i.gq_1,o=Wr(),u=s.y9(Yn(o)).db(Yn(r));if(u.z9(t.q10())<0)return new bn(-1,-1);t:for(;;){var a=i.hy(r);if(null!==a&&a!==Kr()){if(a===Gr())return u;break t}if(i.jy(r,a,is())){i.zy();break t}}}while(0<=e);var h=i.iz();if(null==h)return new bn(-1,-1);i=h}}(t,i);e.equals(new bn(-1,-1))||t.f11(e)}return function(t,n,i){var e=yu(),r=n;t:for(;null!=r;){var s=Wr()-1|0;if(0<=s)do{var o=s;s=s+-1|0;var u=r.gq_1,a=Wr();if(u.y9(Yn(a)).db(Yn(o)).z9(i)<0)break t;n:for(;;){var h=r.hy(o);if(null===h||h===Kr()){if(r.jy(o,h,is())){r.zy();break n}}else if(h instanceof Hs){if(r.jy(o,h,is())){e=ku(e,h.p10_1),r.xy(o,!0);break n}}else{if(null==h||!Xt(h,Fr))break n;if(r.jy(o,h,is())){e=ku(e,h),r.xy(o,!0);break n}}}}while(0<=s);r=r.iz()}var _=e,l=_;if(null!=l)if(l instanceof In){var c=_ instanceof In?_:Dt(),f=c.n()-1|0;if(0<=f)do{var v=f;f=f+-1|0,As(c.h1(v),t)}while(0<=f)}else{As(null==_||null!=_?_:Dt(),t)}}(t,i,n),i}function zs(t,n){!function(t,n){var i=t.my_1,e=null,r=yu(),s=n;t:for(;;){var o=Wr()-1|0;if(0<=o)do{var u=o;o=o+-1|0;var a=s.gq_1,h=Wr(),_=a.y9(Yn(h)).db(Yn(u));n:for(;;){var l=s.hy(u);if(l===Qr())break t;if(l===Gr()){if(_.z9(t.q10())<0)break t;if(s.jy(u,l,is())){null!=i&&(e=Eu(i,s.ey(u),e)),s.gy(u),s.zy();break n}}else if(l===Kr()||null===l){if(s.jy(u,l,is())){s.zy();break n}}else{if(!(null!=l&&Xt(l,Fr)||l instanceof Hs)){if(l===Jr()||l===Xr())break t;if(l===Jr())continue n;break n}if(_.z9(t.q10())<0)break t;var c=l instanceof Hs?l.p10_1:null!=l&&Xt(l,Fr)?l:Dt();if(s.jy(u,l,is())){null!=i&&(e=Eu(i,s.ey(u),e)),r=ku(r,c),s.gy(u),s.zy();break n}}}}while(0<=o);var f=s.iz();if(null==f)break t;s=f}var v=r,d=v;if(null!=d)if(d instanceof In){var w=v instanceof In?v:Dt(),p=w.n()-1|0;if(0<=p)do{var m=p;p=p+-1|0,Ts(w.h1(m),t)}while(0<=p)}else{Ts(null==v||null!=v?v:Dt(),t)}if(null!=e)throw e}(t,Os(t,n))}function As(t,n){return Is(t,n,!0)}function Ts(t,n){return Is(t,n,!1)}function Is(t,n,i){if(t instanceof vs){var e=t.x10_1,r=on(!1);e.nc(r)}else if(Xt(t,Ii)){var s=i?Cs(n):n.i11(),o=on(un(s));t.nc(o)}else if(t instanceof Vs){var u=t.u10_1,a=new fo(co().h11(n.oz())),h=on(a);u.nc(h)}else if(t instanceof Es)t.d11();else{if(!Xt(t,Mu))throw Yt(Bt("Unexpected waiter: "+t));t.v10(n,is())}}function Ds(t,n){return js(n,t,!1)}function js(t,n,i){var e;switch(n.lb(60).ia()){case 0:case 1:e=!1;break;case 2:Os(t,n.nb(new bn(-1,268435455))),e=!i||!t.j11();break;case 3:zs(t,n.nb(new bn(-1,268435455))),e=!0;break;default:var r="unexpected close status: "+n.lb(60).ia();throw Yt(Bt(r))}return e}function Ms(t,n,i,e){for(;;){var r=n.hy(i);if(null!==r&&r!==Kr())return r===Gr()||r!==ts()&&r!==is()&&r!==Qr()&&r!==Zr()&&(r===Jr()||r!==Xr()&&e.equals(t.q10()));if(n.jy(i,r,Zr()))return ys(t),!1}}function Ns(t,n,i){var e;t:for(var r=t.ry_1,s=Gs();;){var o,u=au(i,n,s);if(nu(u))o=!0;else{var a;n:{for(var h=iu(u);;){var _=r.kotlinx$atomicfu$value;if(_.gq_1.z9(h.gq_1)>=0){a=!0;break n}if(!h.bz()){a=!1;break n}if(r.atomicfu$compareAndSet(_,h)){_.cz()&&_.x(),a=!0;break n}h.cz()&&h.x()}a=Tt}o=a}if(o){e=u;break t}}var l,c=e;if(nu(c)){qs(t);var f=i.gq_1,v=Wr();f.y9(Yn(v)).z9(t.q10())<0&&i.jz(),l=null}else{var d,w=iu(c);if(w.gq_1.z9(n)>0){var p=w.gq_1,m=Wr();!function(t,n){for(var i=t.ny_1;;){var e=i.kotlinx$atomicfu$value,r=e.nb(new bn(-1,268435455));if(r.z9(n)>=0)return Tt;var s=Ws(r,e.lb(60).ia());if(t.ny_1.atomicfu$compareAndSet(e,s))return Tt}}(t,p.y9(Yn(m)));var g=w.gq_1,b=Wr();g.y9(Yn(b)).z9(t.q10())<0&&w.jz(),d=null}else d=w;l=d}return l}function Rs(t,n,i){var e;t:for(var r=t.sy_1,s=Gs();;){var o,u=au(i,n,s);if(nu(u))o=!0;else{var a;n:{for(var h=iu(u);;){var _=r.kotlinx$atomicfu$value;if(_.gq_1.z9(h.gq_1)>=0){a=!0;break n}if(!h.bz()){a=!1;break n}if(r.atomicfu$compareAndSet(_,h)){_.cz()&&_.x(),a=!0;break n}h.cz()&&h.x()}a=Tt}o=a}if(o){e=u;break t}}var l,c=e;if(nu(c)){qs(t);var f=i.gq_1,v=Wr();f.y9(Yn(v)).z9(t.pz())<0&&i.jz(),l=null}else{var d,w,p=iu(c);if(cs(t))d=!1;else{var m=ls(t),g=Wr(),b=m.x9(Yn(g));d=n.z9(b)<=0}if(d)t:for(var $=t.ty_1;;){var y=$.kotlinx$atomicfu$value;if(y.gq_1.z9(p.gq_1)>=0)break t;if(!p.bz())break t;if($.atomicfu$compareAndSet(y,p)){y.cz()&&y.x();break t}p.cz()&&p.x()}if(p.gq_1.z9(n)>0){var k=p.gq_1,x=Wr();!function(t,n){for(var i=t.oy_1;;){var e=i.kotlinx$atomicfu$value;if(e.z9(n)>=0)return Tt;if(t.oy_1.atomicfu$compareAndSet(e,n))return Tt}}(t,k.y9(Yn(x)));var S=p.gq_1,E=Wr();S.y9(Yn(E)).z9(t.pz())<0&&p.jz(),w=null}else w=p;l=w}return l}function Ps(t,n,i,e){var r;t:for(var s=t.ty_1,o=Gs();;){var u,a=au(i,n,o);if(nu(a))u=!0;else{var h;n:{for(var _=iu(a);;){var l=s.kotlinx$atomicfu$value;if(l.gq_1.z9(_.gq_1)>=0){h=!0;break n}if(!_.bz()){h=!1;break n}if(s.atomicfu$compareAndSet(l,_)){l.cz()&&l.x(),h=!0;break n}_.cz()&&_.x()}h=Tt}u=h}if(u){r=a;break t}}var c,f=r;if(nu(f))qs(t),Ls(t,n,i),Ss(t),c=null;else{var v,d=iu(f);if(d.gq_1.z9(n)>0){var w=e.db(Yn(1)),p=d.gq_1,m=Wr(),g=p.y9(Yn(m));if(t.py_1.atomicfu$compareAndSet(w,g)){var b=d.gq_1,$=Wr();xs(t,b.y9(Yn($)).eb(e))}else Ss(t);v=null}else v=d;c=v}return c}function Ls(t,n,i){var e=i;t:for(;e.gq_1.z9(n)<0;){var r=e.fz();if(null==r)break t;e=r}for(;;){t:for(;e.az();){var s=e.fz();if(null==s)break t;e=s}var o;t:{for(var u=t.ty_1,a=e;;){var h=u.kotlinx$atomicfu$value;if(h.gq_1.z9(a.gq_1)>=0){o=!0;break t}if(!a.bz()){o=!1;break t}if(u.atomicfu$compareAndSet(h,a)){h.cz()&&h.x(),o=!0;break t}a.cz()&&a.x()}o=Tt}if(o)return Tt}}function Fs(t){return function(n,i,e){return function(t,n,i){return function(e){return t!==is()&&xu(n.my_1,null==t||null!=t?t:Dt(),i.gc()),Tt}}(e,t,n)}}function Us(t,n){if(n=n===Rt?null:n,this.ly_1=t,this.my_1=n,!(this.ly_1>=0)){var i="Invalid channel capacity: "+this.ly_1+", should be >=0";throw Wn(Bt(i))}this.ny_1=Gn(new bn(0,0)),this.oy_1=Gn(new bn(0,0)),this.py_1=Gn(function(t){var n;return so(),uo(),0===t?n=new bn(0,0):(uo(),n=2147483647===t?new bn(-1,2147483647):Yn(t)),n}(this.ly_1)),this.qy_1=Gn(ls(this));var e=new os(new bn(0,0),null,this,3);this.ry_1=Zt(e),this.sy_1=Zt(e);var r;if(cs(this)){var s=Yr();r=s instanceof os?s:Dt()}else r=e;this.ty_1=Zt(r);var o;o=null==this.my_1?null:Fs(this),this.uy_1=o,this.vy_1=Zt(rs()),this.wy_1=Zt(null)}function Hs(t){this.p10_1=t}function Vs(){}function Bs(t,n,i){i=i===Rt?null:i,so();var e,r=t.gp(n,null,i);return null!=r?(t.hp(r),e=!0):e=!1,e}function Ys(t,n){return so(),new bn(0,n?1073741824:0).db(t)}function Ws(t,n){return so(),Yn(n).kb(60).db(t)}function Gs(){return so(),(t=function(t,n){return i=t,e=n,so(),new os(i,e,e.by(),0);var i,e}).callableName="createSegment",t;var t}function Ks(){return K}function Xs(){return so(),3}function Js(){return so(),0}function Zs(){return so(),1}function Qs(){return so(),2}function to(){return so(),4}function no(){return so(),5}function io(){return so(),so(),H}function eo(){return so(),so(),U}function ro(){return so(),so(),V}function so(){X||(X=!0,z=new os(new bn(-1,-1),null,null,0),A=Au("kotlinx.coroutines.bufferedChannel.segmentSize",32),T=Au("kotlinx.coroutines.bufferedChannel.expandBufferCompletionWaitIterations",1e4),I=new zu("BUFFERED"),D=new zu("SHOULD_BUFFER"),j=new zu("S_RESUMING_BY_RCV"),M=new zu("RESUMING_BY_EB"),N=new zu("POISONED"),R=new zu("DONE_RCV"),P=new zu("INTERRUPTED_SEND"),L=new zu("INTERRUPTED_RCV"),F=new zu("CHANNEL_CLOSED"),U=new zu("SUSPEND"),H=new zu("SUSPEND_NO_WAITER"),V=new zu("FAILED"),B=new zu("NO_RECEIVE_RESULT"),Y=new zu("CLOSE_HANDLER_CLOSED"),W=new zu("CLOSE_HANDLER_INVOKED"),G=new zu("NO_CLOSE_CAUSE"))}function oo(){J=this,this.t11_1=2147483647,this.u11_1=0,this.v11_1=-1,this.w11_1=-2,this.x11_1=-3,this.y11_1="kotlinx.coroutines.channels.defaultBuffer",this.z11_1=Au("kotlinx.coroutines.channels.defaultBuffer",64,1,2147483646)}function uo(){return null==J&&new oo,J}function ao(t){return!(t instanceof ho)}function ho(){}function _o(t){ho.call(this),this.a12_1=t}function lo(){Z=this,this.s10_1=new ho}function co(){return null==Z&&new lo,Z}function fo(t){co(),this.b12_1=t}function vo(t){ii(t,this),Sn(this,vo)}function wo(t){ri(t,this),Sn(this,wo)}function po(){}function mo(){}function go(){return Q}function bo(t,n,i){return t.p12_1===(Ur(),q)?function(t,n,i){var e=It(Us).l11.call(t,n);if(ao(e)||function(t){return t instanceof _o}(e))return e;if(i){var r=t.my_1,s=null==r?null:Eu(r,n);if(null!=s)throw s}return co().t10(Tt)}(t,n,i):function(t,n){var i,e=Gr(),r=t.ry_1.kotlinx$atomicfu$value;t:for(;;){var s=t.ny_1.atomicfu$getAndIncrement$long(),o=s.nb(Ks()),u=Ds(s,t),a=Wr(),h=o.x9(Yn(a)),_=Wr(),l=o.fb(Yn(_)).ia();if(!r.gq_1.equals(h)){var c=Ns(t,h,r);if(null==c){if(u)return co().h11(t.i11());continue t}r=c}var f=ds(t,r,l,n,o,e,u);if(f===Js())return r.jz(),co().t10(Tt);if(f===Zs())return co().t10(Tt);if(f===Qs()){if(u)return r.zy(),co().h11(t.i11());var v=null!=e&&Xt(e,Fr)?e:null;null==v||fs(v,0,r,l);var d=r.gq_1,w=Wr(),p=d.y9(Yn(w)).db(Yn(l));return t.f11(p),co().t10(Tt)}if(f===to())return o.z9(t.q10())<0&&r.jz(),co().h11(t.i11());if(f!==no()){if(f===Xs())throw Yt(Bt("unexpected"))}else r.jz()}return i}(t,n)}function $o(t,n,i){if(i=i===Rt?null:i,Us.call(this,t,i),this.o12_1=t,this.p12_1=n,this.p12_1===Vr()){var e="This implementation does not support suspension for senders, use "+si(Us).f6()+" instead";throw Wn(Bt(e))}if(!(this.o12_1>=1)){var r="Buffered channel capacity must be at least 1, but "+this.o12_1+" was specified";throw Wn(Bt(r))}}function yo(){return Ho(),tt}function ko(t){var n=t.z12_1,i=t.y12_1;return n.z9(i)<=0?n:i}function xo(t){var n=ko(t),i=t.a13_1;return n.db(Yn(i)).eb(t.y12_1).ia()}function So(t){return t.a13_1+t.b13_1|0}function Eo(t){var n=ko(t),i=t.a13_1;return n.db(Yn(i))}function Co(t,n){if(0===t.d13_1)return function(t,n){if(0===t.u12_1)return!0;Oo(t,n),t.a13_1=t.a13_1+1|0,t.a13_1>t.u12_1&&qo(t);var i=t,e=ko(t),r=t.a13_1;return i.z12_1=e.db(Yn(r)),!0}(t,n);if(t.a13_1>=t.v12_1&&t.z12_1.z9(t.y12_1)<=0)switch(t.w12_1.v9_1){case 0:return!1;case 2:return!0}if(Oo(t,n),t.a13_1=t.a13_1+1|0,t.a13_1>t.v12_1&&qo(t),xo(t)>t.u12_1){var i=t.y12_1.db(Yn(1));Ao(t,i,t.z12_1,Eo(t),function(t){var n=ko(t),i=t.a13_1,e=n.db(Yn(i)),r=t.b13_1;return e.db(Yn(r))}(t))}return!0}function qo(t){Uo(Bn(t.x12_1),ko(t),null),t.a13_1=t.a13_1-1|0;var n=ko(t).db(Yn(1));t.y12_1.z9(n)<0&&(t.y12_1=n),t.z12_1.z9(n)<0&&function(t,n){if(0!==t.d13_1){var i=t.c13_1;if(null==i);else for(var e=0,r=i.length;e=0&&s.g13_1.z9(n)<0&&(s.g13_1=n)}}t.z12_1=n}(t,n)}function Oo(t,n){var i=So(t),e=t.x12_1;Uo(null==e?zo(t,null,0,2):i>=e.length?zo(t,e,i,At(e.length,2)):e,ko(t).db(Yn(i)),n)}function zo(t,n,i,e){if(!(e>0))throw Yt(Bt("Buffer size overflow"));var r=ui(Array(e),null);t.x12_1=r;var s=r;if(null==n)return s;var o=ko(t),u=0;if(u0){var e=ko(t),r=So(t);i=Fo(n,e.db(Yn(r)).eb(Yn(1)))===yo()}else i=!1;if(!i)break t;t.b13_1=t.b13_1-1|0;var s=ko(t),o=So(t);Uo(n,s.db(Yn(o)),null)}}function Io(t,n){var i,e=Vo(),r=Do(t,n);if(r.z9(new bn(0,0))<0)i=yo();else{var s=n.g13_1,o=function(t,n){var i=Fo(Bn(t.x12_1),n);return i instanceof No?i.k13_1:i}(t,r);n.g13_1=r.db(Yn(1)),e=t.m13(s),i=o}for(var u=i,a=e,h=0,_=a.length;h<_;){var l=a[h];if(h=h+1|0,null==l);else{var c=on(Tt);l.nc(c)}}return u}function Do(t,n){var i=n.g13_1;return i.z9(Eo(t))<0?i:t.v12_1>0||i.z9(ko(t))>0||0===t.b13_1?new bn(-1,-1):i}function jo(t,n,i){var e=new Xi(Gt(i),pu());if(e.zq(),Do(t,n).z9(new bn(0,0))<0)n.h13_1=e,n.h13_1=e;else{var r=on(Tt);e.nc(r)}return e.ap()}function Mo(t,n){var i=n,e=n.length;if(0!==t.d13_1){var r=t.c13_1;if(null==r);else for(var s=0,o=r.length;s=i.length){var _=i,l=At(2,i.length),c=Math.max(2,l);i=ai(_,c)}var f=e;e=f+1|0,i[f]=h,u.h13_1=null}}}}}return i}function No(t,n,i,e){this.i13_1=t,this.j13_1=n,this.k13_1=i,this.l13_1=e}function Ro(t,n,i){Ft.call(this,i),this.v13_1=t,this.w13_1=n}function Po(t,n,i){Bo.call(this),this.u12_1=t,this.v12_1=n,this.w12_1=i,this.x12_1=null,this.y12_1=new bn(0,0),this.z12_1=new bn(0,0),this.a13_1=0,this.b13_1=0}function Lo(){Yo.call(this),this.g13_1=new bn(-1,-1),this.h13_1=null}function Fo(t,n){return Ho(),t[n.ia()&(t.length-1|0)]}function Uo(t,n,i){return Ho(),t[n.ia()&(t.length-1|0)]=i}function Ho(){nt||(nt=!0,tt=new zu("NO_VALUE"))}function Vo(){return et||(et=!0,it=ui(Array(0),null)),it}function Bo(){za.call(this),this.c13_1=null,this.d13_1=0,this.e13_1=0,this.f13_1=null}function Yo(){}function Wo(t,n){if(n.ig(0,(e=t,function(t,n){var i=n.g2(),r=e.g15_1.hc(i);if(i!==v)return n!==r?oi.MIN_VALUE:t+1|0;var s=null==r||Xt(r,Me)?r:Dt(),o=function(t,n){for(var i=t,e=n;;){if(null===i)return null;if(i===e)return i;if(!(i instanceof Ou))return i;i=i.um()}}(Xt(n,Me)?n:Dt(),s);if(o!==s)throw Yt(Bt("Flow invariant is violated:\n\t\tEmission from another coroutine is detected.\n\t\tChild of "+o+", expected child of "+s+".\n\t\tFlowCollector is not thread-safe and concurrent emissions are prohibited.\n\t\tTo mitigate this restriction please use 'channelFlow' builder instead of 'flow'"));return null==s?t:t+1|0}))!==t.h15_1){var i="Flow invariant is violated:\n\t\tFlow was collected in "+t.g15_1+",\n\t\tbut emission happened in "+n+".\n\t\tPlease refer to 'flow' documentation or use 'flowOn' instead";throw Yt(Bt(i))}var e}function Go(t,n){Ft.call(this,n),this.r15_1=t}function Ko(){}function Xo(t,n,i){Ft.call(this,i),this.d16_1=t,this.e16_1=n}function Jo(t,n){this.f16_1=n,this.g16_1=t}function Zo(){}function Qo(){return hu(),rt}function tu(t,n,i){uu.call(this,n),this.gq_1=t,this.hq_1=Wt(i<<16)}function nu(t){return t===Qo()}function iu(t){if(t===Qo())throw Yt(Bt("Does not contain segment"));return t instanceof tu?t:Dt()}function eu(t){this.k11_1=t}function ru(t){return t.dz_1.kotlinx$atomicfu$value}function su(t){for(var n=t.iz();null!==n&&n.az();)n=n.ez_1.kotlinx$atomicfu$value;return n}function ou(t){for(var n=Bn(t.fz());n.az();){var i=n.fz();if(null==i)return n;n=i}return n}function uu(t){this.dz_1=Zt(null),this.ez_1=Zt(t)}function au(t,n,i){hu();for(var e=t;e.gq_1.z9(n)<0||e.az();){var r=ru(e);if(r===Qo())return Qo();var s=null==r||r instanceof uu?r:Dt();if(null==s){var o=i(e.gq_1.db(Yn(1)),e);e.gz(o)&&(e.az()&&e.x(),e=o)}else e=s}return e}function hu(){st||(st=!0,rt=new zu("CLOSED"))}function _u(t,n){for(var i=(ga(),ga(),qt).v();i.w();){var e=i.y();try{e.ms(t,n)}catch(t){if(t instanceof lu)return Tt;if(!(t instanceof Error))throw t;ua(me(n,t))}}try{vn(n,new ma(t))}catch(t){if(!(t instanceof Error))throw t}ua(n)}function lu(){}function cu(){return wu(),ot}function fu(){return wu(),ut}function vu(t,n){mu.call(this,lt),this.op_1=t,this.pp_1=n,this.qp_1=cu(),this.rp_1=(this.gc(),0),this.sp_1=Zt(null)}function du(t,n,i){var e;if(i=i===Rt?null:i,wu(),t instanceof vu){var r,s=he(n,i);if(t.op_1.js(t.gc()))t.qp_1=s,t.cq_1=pu(),t.op_1.ks(t.gc(),t),r=Tt;else{var o=pu(),u=Te().ht();if(u.bt())t.qp_1=s,t.cq_1=o,u.at(t);else{u.dt(!0);try{var a,h=t.gc().hc(v);if(null==h||h.bm())a=!1;else{var _=h.zm();t.br(s,_);var l=on(un(_));t.nc(l),a=!0}for(a||(t.pp_1,t.rp_1,t.pp_1.nc(n));u.zs(););}catch(n){if(!(n instanceof Error))throw n;var c=n;t.nr(c,null)}finally{u.et(!0)}}r=Tt}e=r}else t.nc(n),e=Tt;return e}function wu(){at||(at=!0,ot=new zu("UNDEFINED"),ut=new zu("REUSABLE_CLAIMED"))}function pu(){return ht}function mu(t){va.call(this),this.cq_1=t}function gu(t){return 1===t||2===t}function bu(t,n,i){var e,r=t.ar(),s=t.lr(r);if(null!=s)e=on(un(s));else{var o=t.hr(r);e=on(o)}var u=e;if(i){var a=n instanceof vu?n:Dt();a.pp_1,a.rp_1,a.pp_1.nc(u)}else n.nc(u)}function $u(){return ft}function yu(t){return t===Rt?null:t}function ku(t,n){var i,e=t;if(null==e)i=yu(n);else if(e instanceof In){(t instanceof In?t:Dt()).s(n),i=yu(t)}else{var r=An(4),s=t;r.s(null==s||null!=s?s:Dt()),r.s(n),i=yu(r)}return i}function xu(t,n,i){var e=Eu(t,n,null);null==e||we(i,e)}function Su(t,n){xn(t,n,this),Sn(this,Su)}function Eu(t,n,i){i=i===Rt?null:i;try{t(n)}catch(t){if(!(t instanceof Error))throw t;var e=t;if(null==i||i.cause===e)return new Su("Exception in undelivered element handler for "+n,e);vn(i,e)}return i}function Cu(t,n,i){return e=t,r=n,s=i,function(t){return xu(e,r,s),Tt};var e,r,s}function qu(t){this.i16_1=t}function Ou(t,n){Ei.call(this,t,!0,!0),this.ep_1=n}function zu(t){this.j16_1=t}function Au(t,n,i,e){return i=i===Rt?1:i,e=e===Rt?oi.MAX_VALUE:e,function(t,n,i,e){var r;i=i===Rt?new bn(1,0):i,e===Rt?($n(),r=new bn(-1,2147483647)):r=e,e=r;var s=null;if(null==s)return n;var o=s,u=li(o);if(null==u)throw Yt(Bt("System property '"+t+"' has unrecognized value '"+o+"'"));var a=u;if(!(i.z9(a)<=0&&a.z9(e)<=0)){var h="System property '"+t+"' should be in range "+i.toString()+".."+e.toString()+", but is '"+a.toString()+"'";throw Yt(Bt(h))}return a}(t,Yn(n),Yn(i),Yn(e)).ia()}function Tu(t,n){var i;try{du(Gt(t),on(Tt)),i=Tt}catch(t){if(!(t instanceof Error))throw t;Du(n,t),i=Tt}return i}function Iu(t,n,i,e){var r;e=e===Rt?null:e;try{du(Gt(Lt(t,n,i)),on(Tt),e),r=Tt}catch(t){if(!(t instanceof Error))throw t;Du(i,t),r=Tt}return r}function Du(t,n){return function(t,n){var i=on(un(n));throw t.nc(i),n}(t,n)}function ju(t,n,i){var e,r;try{r="function"==typeof i?i(n,t):i.zc(n,t)}catch(t){if(!(t instanceof Error))throw t;r=new ue(t)}var s=r;if(s!==Ut()){var o=t.jm(s);if(o!==Ve()){if(o instanceof ue)throw o.gm_1,Oa(o.gm_1,t.ep_1);e=Or(o)}else e=Ut()}else e=Ut();return e}function Mu(){}function Nu(t,n){var i,e=t.z10_1;if(null==e)return null;t:{for(var r=e.v();r.w();){var s=r.y();if(s.k16_1===n){i=s;break t}}i=null}var o=i;if(null==o){var u="Clause with object "+Bt(n)+" is not found";throw Yt(Bt(u))}return o}function Ru(){}function Pu(){}function Lu(){if(yt)return Tt;yt=!0,mt=new Fu("SUCCESSFUL",0),gt=new Fu("REREGISTER",1),bt=new Fu("CANCELLED",2),$t=new Fu("ALREADY_SELECTED",3)}function Fu(t,n){pn.call(this,t,n)}function Uu(t){var n;switch(Yu(),t){case 0:n=Vu();break;case 1:n=Bu();break;case 2:Lu(),n=bt;break;case 3:Lu(),n=$t;break;default:throw Yt(Bt("Unexpected internal result: "+t))}return n}function Hu(t,n){Yu();var i=t.gp(Tt,null,n);if(null==i)return!1;var e=i;return t.hp(e),!0}function Vu(){return Lu(),mt}function Bu(){return Lu(),gt}function Yu(){kt||(kt=!0,vt=new zu("STATE_REG"),dt=new zu("STATE_COMPLETED"),wt=new zu("STATE_CANCELLED"),pt=new zu("NO_RESULT"),new zu("PARAM_CLAUSE_0"))}function Wu(){qa.call(this)}function Gu(t,n){"function"==typeof t?t(n):t.invoke(n)}function Ku(){}function Xu(t){return Bt(t)}function Ju(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&void 0!==navigator.userAgent&&void 0!==navigator.userAgent.match&&navigator.userAgent.match("\\bjsdom\\b")?ra():"undefined"!=typeof window&&null!=window&&void 0!==window.addEventListener?function(t){var n,i=t.coroutineDispatcher;if(null==i){var e=new xa(t);t.coroutineDispatcher=e,n=e}else n=i;return n}(window):"undefined"==typeof process||void 0===process.nextTick?(null==zt&&new ba,zt):ra()}function Zu(t,n){var i=t.am().jg(n);return i!==ha().ps_1&&null==i.hc(Ht)?i.jg(ha().ps_1):i}function Qu(t,n){Ou.call(this,t,n)}function ta(){return St}function na(t){var n=di(t).f6();return null==n?"Unknown":n}function ia(t){var n=t.__debug_counter;return"number"!=typeof n&&(n=xt=xt+1|0,t.__debug_counter=n),(null!=n&&"number"==typeof n?n:Dt()).toString()}function ea(){Et=this,$a.call(this)}function ra(){return null==Et&&new ea,Et}function sa(t){var n;ya.call(this),this.y16_1=t,this.z16_1=(n=this,function(){return n.f17(),Tt})}function oa(t){var n;ya.call(this),this.v17_1=t,this.w17_1="dispatchCoroutine",this.v17_1.addEventListener("message",(n=this,function(t){return t.source==n.v17_1&&t.data==n.w17_1&&(t.stopPropagation(),n.f17()),Tt}),!0)}function ua(t){console.error(t.toString())}function aa(){Ct=this,this.ps_1=Ju(),this.qs_1=(null==x&&new Pr,x),this.rs_1=new _a(this.ps_1,!1),this.ss_1=null}function ha(){return null==Ct&&new aa,Ct}function _a(t,n){jr.call(this),this.y17_1=t,this.z17_1=n,this.a18_1=this.z17_1?this:new _a(this.y17_1,!0)}function la(){ze.call(this)}function ca(t,n,i){wi(t,n,this),Sn(this,ca),this.f18_1=i}function fa(){}function va(){}function da(){}function wa(t,n){return t+1|0}function pa(t,n){this.f15_1=t,this.g15_1=n,this.h15_1=this.g15_1.ig(0,wa),this.i15_1=null}function ma(t){mi(Bt(t),this),Sn(this,ma)}function ga(){Ot||(Ot=!0,qt=gi())}function ba(){zt=this,$a.call(this)}function $a(){de.call(this),this.b17_1=new sa(this)}function ya(){this.c17_1=yn(),this.d17_1=16,this.e17_1=!1}function ka(t,n){this.j18_1=t,Ea.call(this,n)}function xa(t){de.call(this),this.l18_1=t,this.m18_1=new oa(this.l18_1)}function Sa(t){return yi(t,new bn(0,0),new bn(2147483647,0)).ia()}function Ea(t){Zi.call(this),this.n18_1=t}function Ca(){qa.call(this)}function qa(){this.rt_1=this,this.st_1=this,this.tt_1=!1}function Oa(t,n){return t}function za(){}function Aa(){this.it_1=null}return Nt(Me,"Job",Kt,Rt,[qn],Rt,Rt,Rt,[0]),Nt(Ne,"ParentJob",Kt,Rt,[Me],Rt,Rt,Rt,[0]),Nt($r,"JobSupport",Mt,Rt,[Me,Ne],Rt,Rt,Rt,[0]),Nt(ye,"CoroutineScope",Kt),Nt(Ei,"AbstractCoroutine",Mt,$r,[$r,Me,jt,ye],Rt,Rt,Rt,[0]),Nt(Ci,"StandaloneCoroutine",Mt,Ei,Rt,Rt,Rt,Rt,[0]),Nt(qi,"LazyStandaloneCoroutine",Mt,Ci,Rt,Rt,Rt,Rt,[0]),Nt(Oi,"$awaitCOROUTINE$0",Mt,Ft),Nt(zi,"DeferredCoroutine",Mt,Ei,[Ei,Me],Rt,Rt,Rt,[0]),Nt(Ai,"LazyDeferredCoroutine",Mt,zi,Rt,Rt,Rt,Rt,[0]),Nt(Ou,"ScopeCoroutine",Mt,Ei,Rt,Rt,Rt,Rt,[0]),Nt(Ti,"DispatchedCoroutine",Mt,Ou,Rt,Rt,Rt,Rt,[0]),Nt(Ii,"CancellableContinuation",Kt,Rt,[jt]),Nt(Ku,"CancelHandlerBase",Mt),Nt(Ji,"NotCompleted",Kt),Nt(Zi,"CancelHandler",Mt,Ku,[Ku,Ji]),Nt(ji,"DisposeOnCancel",Mt,Zi),Nt(fa,"Runnable",Kt),Nt(va,"SchedulerTask",Mt,Rt,[fa]),Nt(mu,"DispatchedTask",Mt,va),Nt(Fr,"Waiter",Kt),Nt(Xi,"CancellableContinuationImpl",Mt,mu,[mu,Ii,Fr]),Nt(Qi,"Active",Qt,Rt,[Ji]),Nt(te,"CompletedContinuation",Mt),Nt(ne,"InvokeOnCancel",Mt,Zi),Nt(re,"$awaitCOROUTINE$1",Mt,Ft),Nt(se,"CompletableDeferredImpl",Mt,$r,[$r,Me],Rt,Rt,Rt,[0]),Nt(oe,"CompletableJob",Kt,Rt,[Me],Rt,Rt,Rt,[0]),Nt(ue,"CompletedExceptionally",Mt),Nt(ae,"CancelledContinuation",Mt,ue),Nt(_e,"CompletedWithCancellation",Mt),Nt(fe,"Key",Qt,an),Nt(de,"CoroutineDispatcher",Mt,hn,[hn,cn]),Nt(pe,"Key",Qt),Nt(ge,"Key",Qt),Nt(be,"CoroutineName",Mt,hn),Nt(ke,"GlobalScope",Qt,Rt,[ye]),Nt(Se,"CoroutineStart",Mt,pn),Nt(Ce,"Delay",Kt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(ze,"EventLoop",Mt,de),Nt(Ae,"ThreadLocalEventLoop",Qt),Nt(Ie,"CompletionHandlerException",Mt,kn),Nt(De,"CoroutinesInternalError",Mt,En),Nt(je,"Key",Qt),Nt(Re,"ChildHandle",Kt),Nt(Pe,"NonDisposableHandle",Qt,Rt,[Re]),Nt(Xe,"Incomplete",Kt),Nt(Ke,"Empty",Mt,Rt,[Xe]),Nt(qa,"LinkedListNode",Mt,Rt,Rt,qa),Nt(Ca,"LinkedListHead",Mt,qa,Rt,Ca),Nt(Je,"NodeList",Mt,Ca,[Ca,Xe],Je),Nt(Wu,"CompletionHandlerBase",Mt,qa),Nt(Ze,"JobNode",Mt,Wu,[Wu,Xe]),Nt(za,"SynchronizedObject",Mt,Rt,Rt,za),Nt(pr,"Finishing",Mt,za,[za,Xe]),Nt(mr,"ChildCompletion",Mt,Ze),Nt(gr,"AwaitContinuation",Mt,Xi),Nt(br,"JobSupport$$slambda",Mt,Ft,Rt,Rt,Rt,Rt,[1]),Nt(kr,"JobCancellingNode",Mt,Ze),Nt(xr,"InactiveNodeList",Mt,Rt,[Xe]),Nt(Sr,"ChildHandleNode",Mt,kr,[kr,Re]),Nt(Er,"InvokeOnCancelling",Mt,kr),Nt(Cr,"InvokeOnCompletion",Mt,Ze),Nt(qr,"ResumeOnCompletion",Mt,Ze),Nt(zr,"ResumeAwaitOnCompletion",Mt,Ze),Nt(Ar,"IncompleteStateBox",Mt),Nt(Tr,"ChildContinuation",Mt,kr),Nt(Ir,"JobImpl",Mt,$r,[$r,oe],Rt,Rt,Rt,[0]),Nt(jr,"MainCoroutineDispatcher",Mt,de),Nt(Nr,"SupervisorJobImpl",Mt,Ir,Rt,Rt,Rt,Rt,[0]),Nt(Rr,"TimeoutCancellationException",Mt,Tn),Nt(Pr,"Unconfined",Qt,de),Nt(Lr,"Key",Qt),Nt(Hr,"BufferOverflow",Mt,pn),Nt(uu,"ConcurrentLinkedListNode",Mt),Nt(tu,"Segment",Mt,uu,[uu,Ji]),Nt(os,"ChannelSegment",Mt,tu),Nt(_s,"$hasNextCOROUTINE$5",Mt,Ft),Nt(vs,"SendBroadcast",Mt,Rt,[Fr]),Nt(Es,"BufferedChannelIterator",Mt,Rt,[Fr],Rt,Rt,Rt,[0,3]),Nt(mo,"ReceiveChannel",Kt,Rt,Rt,Rt,Rt,Rt,[0]),Nt(po,"SendChannel",Kt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(Us,"BufferedChannel",Mt,Rt,[mo,po],Rt,Rt,Rt,[1,4,0,3]),Nt(Hs,"WaiterEB",Mt),Nt(Vs,"ReceiveCatching",Mt,Rt,[Fr]),Nt(oo,"Factory",Qt),Nt(ho,"Failed",Mt,Rt,Rt,ho),Nt(_o,"Closed",Mt,ho),Nt(lo,"Companion",Qt),Nt(fo,"ChannelResult",Mt),Nt(vo,"ClosedSendChannelException",Mt,ni),Nt(wo,"ClosedReceiveChannelException",Mt,ei),Nt($o,"ConflatedBufferedChannel",Mt,Us,Rt,Rt,Rt,Rt,[1,0]),Nt(No,"Emitter",Mt),Nt(Ro,"$collectCOROUTINE$10",Mt,Ft),Nt(Bo,"AbstractSharedFlow",Mt,za),Nt(Po,"SharedFlowImpl",Mt,Bo,Rt,Rt,Rt,Rt,[1]),Nt(Yo,"AbstractSharedFlowSlot",Mt),Nt(Lo,"SharedFlowSlot",Mt,Yo,Rt,Lo),Nt(Go,"$onSubscriptionCOROUTINE$12",Mt,Ft),Nt(Ko,"SubscribedFlowCollector",Mt,Rt,Rt,Rt,Rt,Rt,[1,0]),Nt(Xo,"$collectCOROUTINE$13",Mt,Ft),Nt(Jo,"ReadonlySharedFlow",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(Zo,"OpDescriptor",Mt),Nt(eu,"SegmentOrClosed",Mt),Nt(lu,"ExceptionSuccessfullyProcessed",Qt,_i),Nt(vu,"DispatchedContinuation",Mt,mu,[mu,jt]),Nt(Su,"UndeliveredElementException",Mt,kn),Nt(qu,"ContextScope",Mt,Rt,[ye]),Nt(zu,"Symbol",Mt),Nt(Mu,"SelectInstance",Kt),Nt(Ru,"ClauseData",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(Pu,"SelectImplementation",Mt,Zi,[Zi,Mu,Fr],Rt,Rt,Rt,[0,2]),Nt(Fu,"TrySelectDetailedResult",Mt,pn),Nt(Qu,"UndispatchedCoroutine",Mt,Ou,Rt,Rt,Rt,Rt,[0]),Nt($a,"SetTimeoutBasedDispatcher",Mt,de,[de,Ce],Rt,Rt,Rt,[1]),Nt(ea,"NodeDispatcher",Qt,$a,Rt,Rt,Rt,Rt,[1]),Nt(ya,"MessageQueue",Mt,Rt,[$i]),Nt(sa,"ScheduledMessageQueue",Mt,ya),Nt(oa,"WindowMessageQueue",Mt,ya),Nt(aa,"Dispatchers",Qt),Nt(_a,"JsMainDispatcher",Mt,jr),Nt(la,"UnconfinedEventLoop",Mt,ze,Rt,la),Nt(ca,"JobCancellationException",Mt,Tn),Nt(da,"TaskContext",Qt),Nt(pa,"SafeCollector",Mt,Rt,Rt,Rt,Rt,Rt,[1]),Nt(ma,"DiagnosticCoroutineContextException",Mt,kn),Nt(ba,"SetTimeoutDispatcher",Qt,$a,Rt,Rt,Rt,Rt,[1]),Nt(Ea,"ClearTimeout",Mt,Zi),Nt(ka,"WindowClearTimeout",Mt,Ea),Nt(xa,"WindowDispatcher",Mt,de,[de,Ce],Rt,Rt,Rt,[1]),Nt(Aa,"CommonThreadLocal",Mt,Rt,Rt,Aa),It(Ei).gc=function(){return this.zl_1},It(Ei).am=function(){return this.zl_1},It(Ei).bm=function(){return It($r).bm.call(this)},It(Ei).cm=function(t){},It(Ei).dm=function(t,n){},It(Ei).em=function(){return na(this)+" was cancelled"},It(Ei).fm=function(t){t instanceof ue?this.dm(t.gm_1,t.im()):this.cm(null==t||null!=t?t:Dt())},It(Ei).nc=function(t){var n=this.jm(he(t));if(n===Ve())return Tt;this.km(n)},It(Ei).km=function(t){return this.lm(t)},It(Ei).mm=function(t){we(this.zl_1,t)},It(Ei).nm=function(){var t=(this.zl_1,null);return null==t?It($r).nm.call(this):'"'+t+'":'+It($r).nm.call(this)},It(Ei).om=function(t,n,i){t.rm(i,n,this)},It(Ci).tn=function(t){return we(this.zl_1,t),!0},It(qi).ym=function(){Tu(this.do_1,this)},It(Oi).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=this.mo_1.vn(this))===Ut())return t;continue t;case 1:return null==t||null!=t?t:Dt();case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},It(zi).qo=function(t){var n=new Oi(this,t);return n.bc_1=Tt,n.cc_1=null,n.mc()},It(Ai).ym=function(){Tu(this.uo_1,this)},It(Ti).lm=function(t){this.km(t)},It(Ti).km=function(t){if(function(t){for(var n=t.zo_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.zo_1.atomicfu$compareAndSet(0,2))return!0;break;case 1:return!1;default:throw Yt(Bt("Already resumed"))}}(this))return Tt;du(Gt(this.ep_1),le(t,this.ep_1))},It(Ti).ap=function(){if(function(t){for(var n=t.zo_1;;)switch(n.kotlinx$atomicfu$value){case 0:if(t.zo_1.atomicfu$compareAndSet(0,1))return!0;break;case 2:return!1;default:throw Yt(Bt("Already suspended"))}}(this))return Ut();var t=Or(this.vm());if(t instanceof ue)throw t.gm_1;return null==t||null!=t?t:Dt()},It(ji).lp=function(t){return this.kp_1.mp()},It(ji).invoke=function(t){return this.lp(t)},It(ji).toString=function(){return"DisposeOnCancel["+this.kp_1+"]"},It(Xi).yq=function(){return this.vp_1},It(Xi).gc=function(){return this.wp_1},It(Xi).vm=function(){return this.yp_1.kotlinx$atomicfu$value},It(Xi).wm=function(){var t=this.vm();return!(null!=t&&Xt(t,Ji))},It(Xi).fp=function(){return this.vm()instanceof ae},It(Xi).zq=function(){var t=Fi(this);if(null==t)return Tt;var n=t;this.wm()&&(n.mp(),this.zp_1.kotlinx$atomicfu$value=d)},It(Xi).aq=function(){var t=this.yp_1.kotlinx$atomicfu$value;return t instanceof te&&null!=t.mq_1?(this.xq(),!1):(this.xp_1.kotlinx$atomicfu$value=536870911+(0<>ie()){case 0:var e=536870911&i,r=(1<>ie()<=0},It(ze).ct=function(){var t=this.ys_1,n=null==t?null:t.d1();return null==n||n},It(ze).dt=function(t){this.ws_1=this.ws_1.db(Oe(0,t)),t||(this.xs_1=!0)},It(ze).et=function(t){if(this.ws_1=this.ws_1.eb(Oe(0,t)),this.ws_1.z9(new bn(0,0))>0)return Tt;this.xs_1&&this.ft()},It(ze).ft=function(){},It(Ae).ht=function(){var t,n=this.gt_1.jt();if(null==n){var i=new la;Te().gt_1.kt(i),t=i}else t=n;return t},It(Pe).um=function(){return null},It(Pe).mp=function(){},It(Pe).ln=function(t){return!1},It(Pe).toString=function(){return"NonDisposableHandle"},It(Ke).bm=function(){return this.lt_1},It(Ke).mt=function(){return null},It(Ke).toString=function(){return"Empty{"+(this.lt_1?"Active":"New")+"}"},It(Je).bm=function(){return!0},It(Je).mt=function(){return this},It(Je).qt=function(t){var n=On();n.o5("List{"),n.o5(t),n.o5("}[");for(var i=!0,e=this.rt_1;!Vt(e,this);){if(e instanceof Ze){var r=e;i?i=!1:n.o5(", "),n.n5(r)}e=e.rt_1}return n.o5("]"),n.toString()},It(Je).toString=function(){return ta()?this.qt("Active"):It(Ca).toString.call(this)},It(Ze).eu=function(){var t=this.du_1;if(null!=t)return t;zn("job")},It(Ze).bm=function(){return!0},It(Ze).mt=function(){return null},It(Ze).mp=function(){return this.eu().fn(this)},It(Ze).toString=function(){return na(this)+"@"+ia(this)+"[job@"+ia(this.eu())+"]"},It(pr).mt=function(){return this.gu_1},It(pr).ru=function(t){this.hu_1.kotlinx$atomicfu$value=t},It(pr).nu=function(){return this.hu_1.kotlinx$atomicfu$value},It(pr).xu=function(t){this.iu_1.kotlinx$atomicfu$value=t},It(pr).qu=function(){return this.iu_1.kotlinx$atomicfu$value},It(pr).ou=function(){return tr(this)===We()},It(pr).ku=function(){return!(null==this.qu())},It(pr).bm=function(){return null==this.qu()},It(pr).lu=function(t){var n,i=tr(this);if(null==i)n=nr();else if(i instanceof Error){var e=nr();e.s(i),n=e}else{if(!(i instanceof In)){var r="State is "+Jt(i);throw Yt(Bt(r))}n=i instanceof In?i:Dt()}var s=n,o=this.qu();return null==o||s.p1(0,o),null==t||Vt(t,o)||s.s(t),Qe(this,We()),s},It(pr).pu=function(t){var n=this.qu();if(null==n)return this.xu(t),Tt;if(t===n)return Tt;var i=tr(this);if(null==i)Qe(this,t);else if(i instanceof Error){if(t===i)return Tt;var e=nr();e.s(i),e.s(t),Qe(this,e)}else{if(!(i instanceof In)){var r="State is "+Jt(i);throw Yt(Bt(r))}(i instanceof In?i:Dt()).s(t)}},It(pr).toString=function(){return"Finishing[cancelling="+this.ku()+", completing="+this.nu()+", rootCause="+this.qu()+", exceptions="+Jt(tr(this))+", list="+this.gu_1+"]"},It(mr).lp=function(t){!function(t,n,i,e){var r=dr(i);if(null!=r&&vr(t,n,r,e))return Tt;var s=ir(t,n,e);t.lm(s)}(this.cv_1,this.dv_1,this.ev_1,this.fv_1)},It(mr).invoke=function(t){return this.lp(t)},It(gr).fr=function(t){var n=this.mv_1.vm();if(n instanceof pr){var i=n.qu();if(null!=i)return i}return n instanceof ue?n.gm_1:t.zm()},It(gr).nm=function(){return"AwaitContinuation"},It(br).fw=function(t,n){var i=this.gw(t,n);return i.bc_1=Tt,i.cc_1=null,i.mc()},It(br).zc=function(t,n){return this.fw(t instanceof Dn?t:Dt(),n)},It(br).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=8,this.xv_1=this.vv_1.vm(),this.xv_1 instanceof Sr){if(this.zb_1=6,(t=this.wv_1.te(this.xv_1.wu_1,this))===Ut())return t;continue t}var n=this.xv_1;if(null!=n&&Xt(n,Xe)){if(this.yv_1=this.xv_1.mt(),null==this.yv_1){this.zv_1=null,this.zb_1=5;continue t}this.aw_1=this.yv_1,this.bw_1=this.aw_1,this.cw_1=this.bw_1,this.dw_1=this.cw_1.rt_1,this.zb_1=1;continue t}this.zb_1=7;continue t;case 1:if(Vt(this.dw_1,this.cw_1)){this.zb_1=4;continue t}if(this.dw_1 instanceof Sr){if(this.ew_1=this.dw_1,this.zb_1=2,(t=this.wv_1.te(this.ew_1.wu_1,this))===Ut())return t;continue t}this.zb_1=3;continue t;case 2:this.zb_1=3;continue t;case 3:this.dw_1=this.dw_1.rt_1,this.zb_1=1;continue t;case 4:this.zv_1=Tt,this.zb_1=5;continue t;case 5:case 6:this.zb_1=7;continue t;case 7:return Tt;case 8:throw this.cc_1}}catch(t){var i=t;if(8===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},It(br).gw=function(t,n){var i=new br(this.vv_1,n);return i.wv_1=t,i},It($r).g2=function(){return v},It($r).sm=function(t){this.vl_1.kotlinx$atomicfu$value=t},It($r).tm=function(){return this.vl_1.kotlinx$atomicfu$value},It($r).um=function(){var t=this.tm();return null==t?null:t.um()},It($r).wl=function(t){if(null==t)return this.sm(d),Tt;t.xm();var n=t.pn(this);this.sm(n),this.wm()&&(n.mp(),this.sm(d))},It($r).vm=function(){for(var t=this.ul_1;;){var n=t.kotlinx$atomicfu$value;if(!(n instanceof Zo))return n;n.hw(this)}},It($r).bm=function(){var t=this.vm();return!(null==t||!Xt(t,Xe))&&t.bm()},It($r).wm=function(){var t=this.vm();return!(null!=t&&Xt(t,Xe))},It($r).xm=function(){for(;;){var t=or(this,this.vm());if(0===t)return!1;if(1===t)return!0}},It($r).ym=function(){},It($r).zm=function(){var t,n=this.vm();if(n instanceof pr){var i=n.qu(),e=null==i?null:this.an(i,na(this)+" is cancelling");if(null==e)throw Yt(Bt("Job is still new or active: "+this));t=e}else{if(null!=n&&Xt(n,Xe))throw Yt(Bt("Job is still new or active: "+this));t=n instanceof ue?this.bn(n.gm_1):new ca(na(this)+" has completed normally",null,this)}return t},It($r).an=function(t,n){var i=t instanceof Tn?t:null;return null==i?new ca(null==n?this.em():n,t,this):i},It($r).bn=function(t,n,i){return n=n===Rt?null:n,i===Rt?this.an(t,n):i.an.call(this,t,n)},It($r).cn=function(t){return this.dn(!1,!0,t)},It($r).dn=function(t,n,i){for(var e=function(t,n,i){var e;if(i){var r=n instanceof kr?n:null;e=null==r?new Er(n):r}else{var s=n instanceof Ze?n:null,o=null==s?null:s;e=null==o?new Cr(n):o}var u=e;return u.du_1=t,u}(this,i,t);;)t:{var r=this.vm();if(r instanceof Ke)if(r.lt_1){if(this.ul_1.atomicfu$compareAndSet(r,e))return e}else ar(this,r);else{if(null==r||!Xt(r,Xe)){if(n){var s=r instanceof ue?r:null;Gu(i,null==s?null:s.gm_1)}return d}var o=r.mt();if(null==o)hr(this,r instanceof Ze?r:Dt());else{var u=null,a=d;if(t&&r instanceof pr&&(null==(u=r.qu())||i instanceof Sr&&!r.nu())){if(!ur(this,r,o,e))break t;if(null==u)return e;a=e}if(null!=u)return n&&Gu(i,u),a;if(ur(this,r,o,e))return e}}}},It($r).fs=function(t){return function(t){for(;;){var n=t.vm();if(null==n||!Xt(n,Xe))return!1;if(or(t,n)>=0)return!0}}(this)?function(t,n){var i=new Xi(Gt(n),pu());i.zq();var e=new qr(i);return Di(i,t.cn(e)),i.ap()}(this,t):(Le(t.gc()),Tt)},It($r).fn=function(t){for(;;){var n=this.vm();if(!(n instanceof Ze))return null!=n&&Xt(n,Xe)?(null!=n.mt()&&t.xt(),Tt):Tt;if(n!==t)return Tt;if(this.ul_1.atomicfu$compareAndSet(n,Ge()))return Tt}},It($r).gn=function(){return!1},It($r).hn=function(t){var n;n=null==t?new ca(this.em(),null,this):t,this.jn(n)},It($r).em=function(){return"Job was cancelled"},It($r).jn=function(t){this.mn(t)},It($r).kn=function(t){this.mn(t)},It($r).ln=function(t){return t instanceof Tn||!!this.mn(t)&&this.sn()},It($r).mn=function(t){var n,i=He();return!(!this.gn()||(i=function(t,n){for(;;){var i=t.vm();if(null==i||!Xt(i,Xe)||i instanceof pr&&i.nu())return He();var e=fr(t,i,new ue(_r(t,n)));if(e!==Be())return e}}(this,t))!==Ve())||(i===He()&&(i=function(t,n){for(var i=null;;)t:{var e=t.vm();if(e instanceof pr){if(e.ou())return Ye();var r=e.ku();if(null!=n||!r){var s,o=i;if(null==o){var u=_r(t,n);i=u,s=u}else s=o;var a=s;e.pu(a)}var h=e.qu(),_=r?null:h;return null==_||rr(t,e.gu_1,_),He()}if(null==e||!Xt(e,Xe))return Ye();var l,c=i;if(null==c){var f=_r(t,n);i=f,l=f}else l=c;var v=l;if(!e.bm()){var d=fr(t,e,new ue(v));if(d===He()){var w="Cannot happen in "+Jt(e);throw Yt(Bt(w))}if(d===Be())break t;return d}if(cr(t,e,v))return He()}}(this,t)),i===He()||i===Ve()?n=!0:i===Ye()?n=!1:(this.lm(i),n=!0),n)},It($r).nn=function(){var t,n=this.vm();if(n instanceof pr)t=n.qu();else if(n instanceof ue)t=n.gm_1;else{if(null!=n&&Xt(n,Xe)){var i="Cannot be cancelling child in this state: "+Jt(n);throw Yt(Bt(i))}t=null}var e=t,r=e instanceof Tn?e:null;return null==r?new ca("Parent job is "+wr(0,n),e,this):r},It($r).cs=function(t){for(;;){var n=fr(this,this.vm(),t);if(n===He())return!1;if(n===Ve())return!0;if(n!==Be())return this.lm(n),!0}},It($r).jm=function(t){for(;;){var n=fr(this,this.vm(),t);if(n===He())throw jn("Job "+this+" is already complete or completing, but is being completed with "+Jt(t),(e=void 0,null==(e=(i=t)instanceof ue?i:null)?null:e.gm_1));if(n!==Be())return n}var i,e},It($r).on=function(){return Mn((t=new br(this,null),(n=function(n,i){return t.fw(n,i)}).$arity=1,n));var t,n},It($r).pn=function(t){var n=new Sr(t),i=this.en(!0,Rt,n);return Xt(i,Re)?i:Dt()},It($r).mm=function(t){throw t},It($r).qn=function(t){},It($r).rn=function(){return!1},It($r).sn=function(){return!0},It($r).tn=function(t){return!1},It($r).fm=function(t){},It($r).lm=function(t){},It($r).toString=function(){return this.un()+"@"+ia(this)},It($r).un=function(){return this.nm()+"{"+wr(0,this.vm())+"}"},It($r).nm=function(){return na(this)},It($r).vn=function(t){t:for(;;){var n=this.vm();if(null==n||!Xt(n,Xe)){if(n instanceof ue)throw n.gm_1;return Or(n)}if(or(this,n)>=0)break t}return function(t,n){var i=new gr(Gt(n),t);i.zq();var e=new zr(i);return Di(i,t.cn(e)),i.ap()}(this,t)},It(xr).mt=function(){return this.mu_1},It(xr).bm=function(){return!1},It(xr).toString=function(){return ta()?this.mu_1.qt("New"):Fn(this)},It(Sr).um=function(){return this.eu()},It(Sr).lp=function(t){return this.wu_1.kn(this.eu())},It(Sr).invoke=function(t){return this.lp(t)},It(Sr).ln=function(t){return this.eu().ln(t)},It(Er).lp=function(t){this.nw_1.atomicfu$compareAndSet(0,1)&&this.mw_1(t)},It(Er).invoke=function(t){return this.lp(t)},It(Cr).lp=function(t){return this.sw_1(t)},It(Cr).invoke=function(t){return this.lp(t)},It(qr).lp=function(t){var n=this.xw_1,i=on(Tt);return n.nc(i),Tt},It(qr).invoke=function(t){return this.lp(t)},It(zr).lp=function(t){var n=this.eu().vm();if(n instanceof ue){var i=this.dx_1,e=n.gm_1,r=on(un(e));i.nc(r)}else{var s=this.dx_1,o=Or(n),u=null==o||null!=o?o:Dt(),a=on(u);s.nc(a)}},It(zr).invoke=function(t){return this.lp(t)},It(Tr).lp=function(t){this.ix_1.er(this.ix_1.fr(this.eu()))},It(Tr).invoke=function(t){return this.lp(t)},It(Ir).gn=function(){return!0},It(Ir).sn=function(){return this.lx_1},It(Ir).es=function(){return this.cs(Tt)},It(Ir).ds=function(t){return this.cs(new ue(t))},It(jr).toString=function(){var t=this.ox();return null==t?na(this)+"@"+ia(this):t},It(jr).ox=function(){var t,n=ha().ts();if(this===n)return"Dispatchers.Main";try{t=n.nx()}catch(n){if(!(n instanceof Un))throw n;t=null}return this===t?"Dispatchers.Main.immediate":null},It(Nr).ln=function(t){return!1},It(Pr).js=function(t){return!1},It(Pr).ks=function(t,n){var i=t.hc(S);if(null!=i)return i.ux_1=!0,Tt;throw Hn("Dispatchers.Unconfined.dispatch function can only be used by the yield function. If you wrap Unconfined dispatcher in your code, make sure you properly delegate isDispatchNeeded and dispatch calls.")},It(Pr).toString=function(){return"Dispatchers.Unconfined"},It(os).by=function(){return Bn(this.zx_1)},It(os).cy=function(){return Wr()},It(os).dy=function(t,n){ss(this,t,n)},It(os).ey=function(t){var n=this.ay_1.atomicfu$get(At(t,2)).kotlinx$atomicfu$value;return null==n||null!=n?n:Dt()},It(os).fy=function(t){var n=this.ey(t);return this.gy(t),n},It(os).gy=function(t){ss(this,t,null)},It(os).hy=function(t){return this.ay_1.atomicfu$get(At(t,2)+1|0).kotlinx$atomicfu$value},It(os).iy=function(t,n){this.ay_1.atomicfu$get(At(t,2)+1|0).kotlinx$atomicfu$value=n},It(os).jy=function(t,n,i){return this.ay_1.atomicfu$get(At(t,2)+1|0).atomicfu$compareAndSet(n,i)},It(os).ky=function(t,n){return this.ay_1.atomicfu$get(At(t,2)+1|0).atomicfu$getAndSet(n)},It(os).iq=function(t,n,i){var e=t>=Wr(),r=e?t-Wr()|0:t,s=this.ey(r);t:for(;;){var o=this.hy(r);if(!(null!=o&&Xt(o,Fr)||o instanceof Hs)){if(o===ts()||o===ns()){if(this.gy(r),e){var u=this.by().my_1;null==u||xu(u,s,i)}return Tt}if(o===Jr()||o===Xr())continue t;if(o===Qr()||o===Gr())return Tt;if(o===is())return Tt;var a="unexpected state: "+Jt(o);throw Yt(Bt(a))}var h=e?ts():ns();if(this.jy(r,o,h)){if(this.gy(r),this.xy(r,!e),e){var _=this.by().my_1;null==_||xu(_,s,i)}return Tt}}},It(os).xy=function(t,n){if(n){var i=this.by(),e=this.gq_1,r=Wr(),s=e.y9(Yn(r)).db(Yn(t));i.yy(s)}this.zy()},It(_s).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=8,this.zb_1=1;continue t;case 1:this.b10_1=this.zz_1.nz_1,this.c10_1=null,this.d10_1=this.b10_1.sy_1.kotlinx$atomicfu$value,this.zb_1=2;continue t;case 2:if(this.b10_1.qz()){this.a10_1=us(this.zz_1),this.zb_1=10;continue t}this.zb_1=3;continue t;case 3:this.e10_1=this.b10_1.oy_1.atomicfu$getAndIncrement$long();var n=this.e10_1,i=Wr();this.f10_1=n.x9(Yn(i));var e=this.e10_1,r=Wr();if(this.g10_1=e.fb(Yn(r)).ia(),this.d10_1.gq_1.equals(this.f10_1)){this.zb_1=5;continue t}if(this.h10_1=Rs(this.b10_1,this.f10_1,this.d10_1),null==this.h10_1){this.zb_1=2;continue t}this.i10_1=this.h10_1,this.zb_1=4;continue t;case 4:this.d10_1=this.i10_1,this.zb_1=5;continue t;case 5:if(this.j10_1=bs(this.b10_1,this.d10_1,this.g10_1,this.e10_1,this.c10_1),this.j10_1===eo()){var s=this.c10_1,o=null!=s&&Xt(s,Fr)?s:null;throw null==o||gs(o,this.b10_1,this.d10_1,this.g10_1),this.d10_1,this.g10_1,this.e10_1,Yt(Bt("unreachable"))}if(this.j10_1===ro()){this.e10_1.z9(this.b10_1.pz())<0&&this.d10_1.jz(),this.zb_1=2;continue t}if(this.j10_1===io()){if(this.l10_1=this.d10_1,this.m10_1=this.g10_1,this.n10_1=this.e10_1,this.zb_1=6,(t=as(this.zz_1,this.l10_1,this.m10_1,this.n10_1,this))===Ut())return t;continue t}this.d10_1.jz();var u=this.j10_1,a=null==u||null!=u?u:Dt();this.zz_1.lz_1=a,this.k10_1=!0,this.zb_1=7;continue t;case 6:return t;case 7:this.a10_1=this.k10_1,this.zb_1=10;continue t;case 8:throw this.cc_1;case 9:this.zb_1=10;continue t;case 10:return this.a10_1}}catch(t){var h=t;if(8===this.ac_1)throw h;this.zb_1=this.ac_1,this.cc_1=h}},It(Es).c11=function(t){var n=new _s(this,t);return n.bc_1=Tt,n.cc_1=null,n.mc()},It(Es).kr=function(t,n){var i=this.mz_1;null==i||i.kr(t,n)},It(Es).y=function(){var t=this.lz_1;if(t===es())throw Yt(Bt("`hasNext()` has not been invoked"));if(this.lz_1=es(),t===is())throw Cs(this.nz_1);return null==t||null!=t?t:Dt()},It(Es).r10=function(t){var n=Bn(this.mz_1);this.mz_1=null,this.lz_1=t;var i=this.nz_1.my_1;return Bs(n,!0,null==i?null:Cu(i,t,n.gc()))},It(Es).d11=function(){var t=Bn(this.mz_1);this.mz_1=null,this.lz_1=is();var n=this.nz_1.oz();if(null==n){var i=on(!1);t.nc(i)}else{var e=Oa(n),r=on(un(e));t.nc(r)}},It(Us).pz=function(){return this.ny_1.kotlinx$atomicfu$value.nb(new bn(-1,268435455))},It(Us).q10=function(){return this.oy_1.kotlinx$atomicfu$value},It(Us).l11=function(t){if(n=this,!Ds(i=this.ny_1.kotlinx$atomicfu$value,n)&&!ps(n,i.nb(new bn(-1,268435455))))return co().m11();var n,i,e;t:{var r=ts(),s=this.ry_1.kotlinx$atomicfu$value;n:for(;;){var o=this.ny_1.atomicfu$getAndIncrement$long(),u=o.nb(new bn(-1,268435455)),a=Ds(o,this),h=Wr(),_=u.x9(Yn(h)),l=Wr(),c=u.fb(Yn(l)).ia();if(!s.gq_1.equals(_)){var f=Ns(this,_,s);if(null==f){if(a){e=co().h11(this.i11());break t}continue n}s=f}var v=ds(this,s,c,t,u,r,a);if(v===Js()){s.jz(),e=co().t10(Tt);break t}if(v===Zs()){e=co().t10(Tt);break t}if(v===Qs()){if(a){s.zy(),e=co().h11(this.i11());break t}var d=null!=r&&Xt(r,Fr)?r:null;null==d||fs(d,0,s,c),s.zy(),e=co().m11();break t}if(v===to()){u.z9(this.q10())<0&&s.jz(),e=co().h11(this.i11());break t}if(v!==no()){if(v===Xs())throw Yt(Bt("unexpected"))}else s.jz()}}return e},It(Us).w10=function(){},It(Us).o10=function(){},It(Us).f11=function(t){var n=this.sy_1.kotlinx$atomicfu$value;t:for(;;){var i=this.oy_1.kotlinx$atomicfu$value,e=this.ly_1,r=i.db(Yn(e)),s=ls(this),o=r.z9(s)>=0?r:s;if(t.z9(o)<0)return Tt;var u=i.db(Yn(1));if(this.oy_1.atomicfu$compareAndSet(i,u)){var a=Wr(),h=i.x9(Yn(a)),_=Wr(),l=i.fb(Yn(_)).ia();if(!n.gq_1.equals(h)){var c=Rs(this,h,n);if(null==c)continue t;n=c}var f=bs(this,n,l,i,null);if(f===ro())i.z9(this.pz())<0&&n.jz();else{n.jz();var v,d=this.my_1;if(null!=(v=null==d?null:Eu(d,null==f||null!=f?f:Dt())))throw v}}}},It(Us).yy=function(t){if(cs(this))return Tt;for(;ls(this).z9(t)<=0;);var n=(so(),T),i=0;if(i0&&(a=_,h=l)}while(u.w());t=a}else t=a;var c=t,f=this.q10(),v=this.pz(),d=c;t:for(;;){var w=0,p=Wr();if(w=0&&$.z9(f)>=0)break t;var y,k=d.hy(m),x=d.ey(m);if(null!=k&&Xt(k,Ii))y=$.z9(f)<0&&$.z9(v)>=0?"receive":$.z9(v)<0&&$.z9(f)>=0?"send":"cont";else if(null!=k&&Xt(k,Mu))y=$.z9(f)<0&&$.z9(v)>=0?"onReceive":$.z9(v)<0&&$.z9(f)>=0?"onSend":"select";else if(k instanceof Vs)y="receiveCatching";else if(k instanceof vs)y="sendBroadcast";else if(k instanceof Hs)y="EB("+Jt(k)+")";else if(Vt(k,Xr())||Vt(k,Jr()))y="resuming_sender";else{if(null==k||Vt(k,Kr())||Vt(k,Qr())||Vt(k,Zr())||Vt(k,ns())||Vt(k,ts())||Vt(k,is()))continue n;y=Bt(k)}var S=y;null!=x?n.o5("("+S+","+x+"),"):n.o5(S+",")}while(w0)return Vo();var n=ko(this),i=this.a13_1,e=n.db(Yn(i));if(0===this.v12_1&&this.b13_1>0&&(e=e.gb()),0!==this.d13_1){var r=this.c13_1;if(null==r);else for(var s=0,o=r.length;s=0&&u.g13_1.z9(e)<0&&(e=u.g13_1)}}if(e.z9(this.z12_1)<=0)return Vo();var a,h=Eo(this);if(this.d13_1>0){var _=h.eb(e).ia(),l=this.b13_1,c=this.v12_1-_|0;a=Math.min(l,c)}else a=this.b13_1;var f=a,v=Vo(),d=h,w=this.b13_1,p=d.db(Yn(w));if(f>0){v=ui(Array(f),null);var m=0,g=Bn(this.x12_1),b=h;if(b.z9(p)<0)t:do{var $=b;b=b.db(new bn(1,0));var y=Fo(g,$);if(y!==yo()){y instanceof No||Dt();var k=m;if(m=k+1|0,v[k]=y.l13_1,Uo(g,$,yo()),Uo(g,h,y.k13_1),h=h.gb(),m>=f)break t}}while(b.z9(p)<0)}var x=h.eb(n).ia();0===this.d13_1&&(e=h);var S=this.y12_1,E=h,C=this.u12_1,q=Math.min(C,x),O=E.eb(Yn(q)),z=S.z9(O)>=0?S:O;return 0===this.v12_1&&z.z9(p)<0&&Vt(Fo(Bn(this.x12_1),z),yo())&&(h=h.gb(),z=z.gb()),Ao(this,z,e,h,p),To(this),0!==v.length&&(v=Mo(this,v)),v},It(Po).m14=function(){return new Lo},It(Po).n14=function(t){return ui(Array(t),null)},It(Lo).o14=function(t){return!(this.g13_1.z9(new bn(0,0))>=0||(this.g13_1=t.l14(),0))},It(Lo).p14=function(t){return this.o14(t instanceof Po?t:Dt())},It(Lo).q14=function(t){var n=this.g13_1;return this.g13_1=new bn(-1,-1),this.h13_1=null,t.m13(n)},It(Lo).r14=function(t){return this.q14(t instanceof Po?t:Dt())},It(Bo).b14=function(){var t,n,i=this.c13_1;if(null==i){var e=this.n14(2);this.c13_1=e,n=e}else{var r;if(this.d13_1>=i.length){var s=ai(i,At(2,i.length));this.c13_1=s,r=s}else r=i;n=r}var o,u=n,a=this.e13_1;t:for(;;){var h,_=u[a];if(null==_){var l=this.m14();u[a]=l,h=l}else h=_;if(o=h,(a=a+1|0)>=u.length&&(a=0),(o instanceof Yo?o:Dt()).p14(this))break t}this.e13_1=a,this.d13_1=this.d13_1+1|0;var c=o;return null==(t=this.f13_1)||t.e15(1),c},It(Bo).g14=function(t){var n;this.d13_1=this.d13_1-1|0,n=this.f13_1,0===this.d13_1&&(this.e13_1=0);for(var i=(t instanceof Yo?t:Dt()).r14(this),e=0,r=i.length;e"},It(Ru).n16=function(t,n){var i=this.m16_1;return null==i?null:i(t,this.l16_1,n)},It(Pu).b11=function(t,n){return Uu(function(t,n,i){t:for(;;){var e=t.y10_1.kotlinx$atomicfu$value;if(Xt(e,Ii)){var r=Nu(t,n);if(null==r)continue t;var s=r,o=s.n16(t,i);if(t.y10_1.atomicfu$compareAndSet(e,s)){var u=Xt(e,Ii)?e:Dt();return t.a11_1=i,Hu(u,o)?0:(t.a11_1=(Yu(),pt),2)}}else{if(Vt(e,(Yu(),dt))||e instanceof Ru)return 3;if(Vt(e,(Yu(),wt)))return 2;if(Vt(e,(Yu(),vt))){if(t.y10_1.atomicfu$compareAndSet(e,vi(n)))return 1}else{if(!Xt(e,fi)){var a="Unexpected state: "+Bt(e);throw Yt(Bt(a))}if(t.y10_1.atomicfu$compareAndSet(e,ci(e,n)))return 1}}}}(this,t,n))},It(Qu).km=function(t){return this.ep_1.nc(le(t,this.ep_1))},It(ea).u16=function(){process.nextTick(this.b17_1.z16_1)},It(sa).g17=function(){this.y16_1.u16()},It(sa).h17=function(){setTimeout(this.z16_1,0)},It(sa).i17=function(t){setTimeout(this.z16_1,t)},It(oa).g17=function(){var t;Promise.resolve(Tt).then((t=this,function(n){return t.f17(),Tt}))},It(oa).h17=function(){this.v17_1.postMessage(this.w17_1,"*")},It(aa).ts=function(){var t=this.ss_1;return null==t?this.rs_1:t},It(_a).nx=function(){return this.a18_1},It(_a).js=function(t){return!this.z17_1},It(_a).ks=function(t,n){return this.y17_1.ks(t,n)},It(_a).toString=function(){var t=this.ox();return null==t?this.y17_1.toString():t},It(la).ks=function(t,n){!function(){throw Hn("runBlocking event loop is not supported")}()},It(ca).toString=function(){return It(Tn).toString.call(this)+"; job="+this.f18_1},It(ca).equals=function(t){return t===this||!!(t instanceof ca&&t.message==this.message&&Vt(t.f18_1,this.f18_1))&&Vt(t.cause,this.cause)},It(ca).hashCode=function(){var t=At(At(dn(Bn(this.message)),31)+tn(this.f18_1)|0,31),n=this.cause,i=null==n?null:tn(n);return t+(null==i?0:i)|0},It(pa).f14=function(t,n){var i=n.gc();return Le(i),this.i15_1!==i&&(Wo(this,i),this.i15_1=i),this.f15_1.f14(t,n)},It(pa).u15=function(){},It(ba).u16=function(){this.b17_1.i17(0)},It($a).ks=function(t,n){this.b17_1.r17(n)},It($a).us=function(t,n){var i,e,r,s,o=new Ea((r=n,s=this,i=function(){return r.jp(s,Tt),Tt},e=Sa(t),setTimeout(i,e)));n.ip(o)},It(ya).n=function(){return this.c17_1.kd_1},It(ya).j17=function(t,n){this.c17_1.p1(t,n)},It(ya).p1=function(t,n){return this.j17(t,null!=n&&Xt(n,fa)?n:Dt())},It(ya).k17=function(t){return this.c17_1.s(t)},It(ya).s=function(t){return this.k17(null!=t&&Xt(t,fa)?t:Dt())},It(ya).l17=function(t){return this.c17_1.z(t)},It(ya).z=function(t){return this.l17(t)},It(ya).b1=function(){this.c17_1.b1()},It(ya).m17=function(t){return this.c17_1.r(t)},It(ya).r=function(t){return!(null==t||!Xt(t,fa))&&this.m17(null!=t&&Xt(t,fa)?t:Dt())},It(ya).n17=function(t){return this.c17_1.c1(t)},It(ya).c1=function(t){return this.n17(t)},It(ya).h1=function(t){return this.c17_1.h1(t)},It(ya).o17=function(t){return this.c17_1.r1(t)},It(ya).r1=function(t){return null!=t&&Xt(t,fa)?this.o17(null!=t&&Xt(t,fa)?t:Dt()):-1},It(ya).d1=function(){return this.c17_1.d1()},It(ya).v=function(){return this.c17_1.v()},It(ya).p17=function(t){return this.c17_1.t(t)},It(ya).t=function(t){return!(null==t||!Xt(t,fa))&&this.p17(null!=t&&Xt(t,fa)?t:Dt())},It(ya).j1=function(t){return this.c17_1.j1(t)},It(ya).q17=function(t,n){return this.c17_1.o(t,n)},It(ya).o=function(t,n){return this.q17(t,null!=n&&Xt(n,fa)?n:Dt())},It(ya).r17=function(t){this.k17(t),this.e17_1||(this.e17_1=!0,this.g17())},It(ya).f17=function(){try{var t=this.d17_1,n=0;if(n=0))throw Wn(Bt("replay cannot be negative, but was "+t));if(!(n>=0))throw Wn(Bt("extraBufferCapacity cannot be negative, but was "+n));if(!(t>0||n>0||i.equals(Vr())))throw Wn(Bt("replay or extraBufferCapacity must be positive with non-default onBufferOverflow strategy "+i));var e=t+n|0;return new Po(t,e<0?oi.MAX_VALUE:e,i)},t.$_$.p=function(t){return new Jo(t,null)},t.$_$.q=qa,t.$_$.r=Oa,t.$_$.s=Xi,t.$_$.t=function(t){return new se(t=t===Rt?null:t)},t.$_$.u=oe,t.$_$.v=be,t.$_$.w=function(t){return new qu(null!=t.hc(v)?t:t.jg(Ue()))},t.$_$.x=ye,t.$_$.y=Ue,t.$_$.z=Me,t.$_$.a1=pu,t.$_$.b1=function(){return new qu(Mr().jg(ha().ts()))},t.$_$.c1=Mr,t.$_$.d1=function(t,n,i,e){n=n===Rt?Pt():n,i=i===Rt?Ee():i;var r=Zu(t,n),s=i.wn()?new Ai(r,e):new zi(r,!0);return s.om(i,s,e),s},t.$_$.e1=function(t,n){n=n===Rt?null:n;var i=t.hc(v),e=null==i?null:i.on();if(null==e);else for(var r=e.v();r.w();)r.y().hn(n)},t.$_$.f1=$e,t.$_$.g1=function(t,n){n=n===Rt?null:n;var i=t.hc(v);null==i||i.hn(n)},t.$_$.h1=function(t,n,i){return $e(t,wn(n,i=i===Rt?null:i))},t.$_$.i1=function(t,n,i){return i=i===Rt?null:i,t.hn(wn(n,i))},t.$_$.j1=function(t){var n=t.am().hc(v),i=null==n?null:n.bm();return null==i||i},t.$_$.k1=function(t){var n=t.hc(v);if(null==n)throw Yt(Bt("Current context doesn't contain Job in it: "+t));return n},t.$_$.l1=function(t,n,i,e){n=n===Rt?Pt():n,i=i===Rt?Ee():i;var r=Zu(t,n),s=i.wn()?new qi(r,e):new Ci(r,!0);return s.om(i,s,e),s},t})?e.apply(n,r):e)||(t.exports=s)},755:function(t,n,i){var e,r,s;r=[n,i(675)],void 0===(s="function"==typeof(e=function(t,n){"use strict";var i,e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,X,J,Z,Q,tt,nt,it,et,rt,st,ot,ut,at,ht,_t,lt=Math.imul,ct=n.$_$.gb,ft=n.$_$.ha,vt=n.$_$.hb,dt=n.$_$.f,wt=(n.$_$.p4,n.$_$.a5),pt=n.$_$.p6,mt=n.$_$.j,gt=n.$_$.ah,bt=n.$_$.w9,$t=n.$_$.kc,yt=n.$_$.ea,kt=n.$_$.r1,xt=n.$_$.eb,St=n.$_$.q9,Et=n.$_$.s1,Ct=n.$_$.u1,qt=n.$_$.vf,Ot=n.$_$.w5,zt=n.$_$.l,At=n.$_$.fg,Tt=n.$_$.jc,It=n.$_$.qa,Dt=n.$_$.gg,jt=n.$_$.d,Mt=n.$_$.cg,Nt=n.$_$.j5,Rt=n.$_$.g5,Pt=n.$_$.m5,Lt=n.$_$.k5,Ft=n.$_$.e5,Ut=n.$_$.h5,Ht=n.$_$.n5,Vt=n.$_$.o5,Bt=n.$_$.f5,Yt=n.$_$.c5,Wt=n.$_$.l5,Gt=n.$_$.i5,Kt=n.$_$.d5,Xt=n.$_$.n6,Jt=n.$_$.lb,Zt=n.$_$.t1,Qt=n.$_$.d3,tn=n.$_$.c3,nn=n.$_$.dg,en=n.$_$.vg,rn=n.$_$.z9,sn=n.$_$.fa,on=n.$_$.od,un=n.$_$.m8,an=n.$_$.m,hn=n.$_$.s,_n=n.$_$.i8,ln=n.$_$.h8,cn=n.$_$.t8,fn=n.$_$.jh,vn=n.$_$.n8,dn=n.$_$.bh,wn=n.$_$.z5,pn=n.$_$.ic,mn=n.$_$.f7,gn=n.$_$.fb,bn=n.$_$.c,$n=n.$_$.yf,yn=n.$_$.of,kn=n.$_$.s4,xn=n.$_$.kf,Sn=n.$_$.ue,En=n.$_$.ga,Cn=n.$_$.x1,qn=n.$_$.n,On=n.$_$.t,zn=n.$_$.x,An=n.$_$.y,Tn=n.$_$.p,In=n.$_$.q,Dn=n.$_$.v,jn=n.$_$.w,Mn=n.$_$.r5,Nn=n.$_$.ia,Rn=n.$_$.hc,Pn=n.$_$.b7,Ln=n.$_$.wa,Fn=n.$_$.u4,Un=n.$_$.i7,Hn=n.$_$.tg,Vn=n.$_$.r,Bn=n.$_$.lc,Yn=n.$_$.ba,Wn=n.$_$.p9,Gn=n.$_$.q6,Kn=n.$_$.b6,Xn=n.$_$.t4,Jn=n.$_$.la,Zn=n.$_$.s9,Qn=(n.$_$.l4,n.$_$.na),ti=(n.$_$.m4,n.$_$.oa),ni=n.$_$.ra,ii=n.$_$.y4,ei=n.$_$.lg,ri=n.$_$.v3,si=n.$_$.t3,oi=(n.$_$.n4,n.$_$.pa),ui=n.$_$.x4,ai=n.$_$.jg,hi=n.$_$.o3,_i=n.$_$.l3,li=(n.$_$.o4,n.$_$.ta),ci=n.$_$.z4,fi=n.$_$.ng,vi=n.$_$.c4,di=n.$_$.a4,wi=(n.$_$.k4,n.$_$.ka),pi=n.$_$.w4,mi=n.$_$.hg,gi=n.$_$.h3,bi=n.$_$.e3,$i=(n.$_$.j4,n.$_$.ja),yi=n.$_$.tb,ki=n.$_$.h6,xi=n.$_$.j6,Si=n.$_$.k6,Ei=n.$_$.f6,Ci=n.$_$.y3,qi=n.$_$.z3,Oi=n.$_$.w3,zi=n.$_$.x3,Ai=n.$_$.m6,Ti=n.$_$.r3,Ii=n.$_$.s3,Di=n.$_$.p3,ji=n.$_$.q3,Mi=n.$_$.e6,Ni=n.$_$.f4,Ri=n.$_$.g4,Pi=n.$_$.d4,Li=n.$_$.e4,Fi=n.$_$.i6,Ui=n.$_$.j3,Hi=n.$_$.k3,Vi=n.$_$.g3,Bi=n.$_$.i3,Yi=n.$_$.g6,Wi=n.$_$.gf,Gi=n.$_$.jd,Ki=n.$_$.u9,Xi=n.$_$.t9,Ji=n.$_$.z2,Zi=n.$_$.oe,Qi=n.$_$.rd,te=n.$_$.r4,ne=n.$_$.mg,ie=n.$_$.kg,ee=n.$_$.og,re=n.$_$.ig,se=n.$_$.pg,oe=n.$_$.q7,ue=n.$_$.l7,ae=n.$_$.j7,he=n.$_$.s5,_e=n.$_$.va,le=n.$_$.b,ce=n.$_$.d7,fe=n.$_$.b2,ve=n.$_$.c7,de=(n.$_$.v4,n.$_$.a3),we=n.$_$.ug;function pe(){return!1}function me(){return!1}function ge(){return pt()}function be(t){return t.h34(this)}function $e(){return!1}function ye(t){return-1}function ke(t,n,i,e,r){return e=e===dt?null:e,r===dt?this.t37(t,n,i,e):r.t37.call(this,t,n,i,e)}function xe(){return so()}function Se(){}function Ee(){}function Ce(t){return function(){return n=Cr("kotlinx.serialization.Polymorphic",us(),[],function(t){return function(n){return n.q34("type",Ke().g34()),n.q34("value",Cr("kotlinx.serialization.Polymorphic<"+t.r34_1.f6()+">",Nr(),[])),n.k34_1=t.s34_1,wt}}(t)),i=t.r34_1,new yr(n,i);var n,i}}function qe(t){fs.call(this),this.r34_1=t,this.s34_1=pt();var n=mt();this.t34_1=gt(n,Ce(this))}function Oe(t,n,i){var e,r=t.v34(n,i);return null==r?function(t,n){var i="in the polymorphic scope of '"+n.f6()+"'";throw Ae(null==t?"Class discriminator was missing and no default serializers were registered "+i+".":"Serializer for subclass '"+t+"' is not found "+i+".\nCheck if class with serial name '"+t+"' exists and serializer is registered in a corresponding SerializersModule.\nTo be registered automatically, class '"+t+"' has to be '@Serializable', and the base class '"+n.f6()+"' has to be sealed and '@Serializable'.")}(i,t.u34()):e=r,e}function ze(t,n){return Et(t,n),Ie.call(n),n}function Ae(t){var n=ze(t,xt(ct(Ie)));return St(n,Ae),n}function Te(t,n,i){return Ct(t,n,i),Ie.call(i),i}function Ie(){St(this,Ie)}function De(t){ze(t,this),St(this,De)}function je(t,n){var i=function(t,n,i){return Me.call(i,t,1===t.n()?"Field '"+t.h1(0)+"' is required for type with serial name '"+n+"', but it was missing":"Fields "+t+" are required for type with serial name '"+n+"', but they were missing",null),i}(t,n,xt(ct(Me)));return St(i,je),i}function Me(t,n,i){Te(n,i,this),St(this,Me),this.w34_1=t}function Ne(t){var n=function(t){var n,i=Cu(t,[]);if(null==i){var e;if(t===te().w6())e=ds();else{var r=_e(t).Companion;e=null==r?null:r.serializer()}var s=e;n=null!=s&&It(s,Se)?s:null}else n=i;return n}(t);return null==n?function(t){Zo();var n=Io().o2(t);return null==n||It(n,Se)?n:At()}(t):n}function Re(t,n,i){var e;if(i){for(var r=zt(Ot(n,10)),s=n.v();s.w();){var o=Le(t,s.y());r.s(o)}e=r}else{for(var u=zt(Ot(n,10)),a=n.v();a.w();){var h=Fe(t,a.y());if(null==h)return null;var _=h;u.s(_)}e=u}return e}function Pe(t,n,i){var e=function(t,n,i){var e;if(t.equals(jt(Kt))||t.equals(jt(Gt))||t.equals(jt(Wt))||t.equals(jt(Yt)))e=new Cs(n.h1(0));else if(t.equals(jt(Bt)))e=new qs(n.h1(0));else if(t.equals(jt(Vt))||t.equals(jt(Ht))||t.equals(jt(Ut)))e=new Os(n.h1(0));else if(t.equals(jt(Ft)))e=new zs(n.h1(0),n.h1(1));else if(t.equals(jt(Lt))||t.equals(jt(Pt))||t.equals(jt(Rt)))e=new As(n.h1(0),n.h1(1));else if(t.equals(jt(Nt)))l=n.h1(0),c=n.h1(1),e=new ru(l,c);else if(t.equals(jt(Mt)))e=function(t,n){return new su(t,n)}(n.h1(0),n.h1(1));else if(t.equals(jt(Dt)))a=n.h1(0),h=n.h1(1),_=n.h1(2),e=new ou(a,h,_);else{var r;if(t.equals(te().d7())){var s=i();o=null!=s&&It(s,Tt)?s:At(),u=n.h1(0),r=new Ts(o,u)}else r=null;e=r}var o,u;var a,h,_;var l,c;return e}(t,n,i);return null==e?function(t,n){return Cu(t,Xt(n).slice())}(t,n):e}function Le(t,n){var i,e=Ue(t,n,!0);return null==e?function(t){throw Ae(function(t){to();var n=t.f6();return i=null==n?"":n,to(),"Serializer for class '"+i+"' is not found.\nPlease ensure that class is marked as '@Serializable' and that the serialization compiler plugin is applied.\n";var i}(t)+"To get enum serializer on Kotlin/JS, it should be annotated with @Serializable annotation.")}(Zs(n)):i=e,i}function Fe(t,n){return Ue(t,n,!1)}function Ue(t,n,o){for(var u=Zs(n),a=n.t6(),h=n.s6(),_=zt(Ot(h,10)),l=h.v();l.w();){var c=l.y().y34_1;if(null==c)throw Zt(Jt("Star projections in type arguments are not allowed, but had "+n));var f=c;_.s(f)}var v,d,w,p=_;if(p.d1())v=function(t,n){var r;if(We(),n)r=(We(),e).b35(t);else{var s=(We(),i).b35(t);r=null==s?null:It(s,Se)?s:At()}return r}(u,a);else{var m,g=function(t,n,i){var e;if(We(),i)e=(We(),s).c35(t,n);else{var o=(We(),r).c35(t,n);e=new nn(o)instanceof nn?o:At()}return e}(u,p,a);if(tn(g))m=null;else{var b=Qt(g);m=null==b||null!=b?b:At()}v=m}if(null!=v)return v;if(p.d1())d=t.a35(u);else{var $=Re(t,p,o);if(null==$)return null;var y=$,k=Pe(u,y,(w=p,function(){return w.h1(0).r6()}));d=null==k?t.z34(u,y):k}var x,S=d;return null==(x=null==S?null:It(S,Se)?S:At())?null:function(t,n){return n?Ge(t):It(t,Se)?t:At()}(x,a)}function He(t){return We(),Ne(t)}function Ve(t){We();var n=Ne(t),i=null==n?null:Ge(n);return null==i?null:It(i,Se)?i:At()}function Be(t,n){return We(),Pe(t,en(Re(gu(),n,!0)),(i=n,function(){return i.h1(0).r6()}));var i}function Ye(t,n){We();var i,e=Pe(t,en(Re(gu(),n,!0)),(i=n,function(){return i.h1(0).r6()})),r=null==e?null:Ge(e);return null==r?null:It(r,Se)?r:At()}function We(){o||(o=!0,i=Su(He),e=Su(Ve),r=Eu(Be),s=Eu(Ye))}function Ge(t){return t.g34().d35()?It(t,Se)?t:At():new Ws(t)}function Ke(t){return jo()}function Xe(t){return null==W&&new Mo,W}function Je(){return null==I&&new ao,I}function Ze(t){return Ro()}function Qe(){return null==D&&new ho,D}function tr(t){return Lo()}function nr(){return null==j&&new _o,j}function ir(t){return null==X&&new Fo,X}function er(){return null==M&&new lo,M}function rr(t){return null==st&&new au,st}function sr(){return null==N&&new co,N}function or(t){return Ho()}function ur(){return null==R&&new fo,R}function ar(t){return null==ot&&new hu,ot}function hr(){return null==P&&new vo,P}function _r(t){return null==Z&&new Vo,Z}function lr(){return null==L&&new wo,L}function cr(t){return null==ut&&new _u,ut}function fr(){return null==F&&new po,F}function vr(t){return null==Q&&new Bo,Q}function dr(){return null==U&&new mo,U}function wr(t){return null==at&&new lu,at}function pr(){return null==H&&new go,H}function mr(t){return Wo()}function gr(){return null==V&&new bo,V}function br(t){return null==nt&&new Go,nt}function $r(t){return null==E&&new ws,E}function yr(t,n){this.e35_1=t,this.f35_1=n,this.g35_1=this.e35_1.h35()+"<"+this.f35_1.f6()+">"}function kr(t){return t instanceof yr?t.f35_1:t instanceof Gs?kr(t.r35_1):null}function xr(){}function Sr(t){this.a36_1=t,this.z35_1=t.j35()}function Er(t){this.b36_1=t}function Cr(t,n,i,e){if(e=e===dt?Ir:e,on(t))throw Zt(Jt("Blank serial names are prohibited"));if(rn(n,Jr()))throw Zt(Jt("For StructureKind.CLASS please use 'buildClassSerialDescriptor' instead"));var r=new qr(t);return e(r),new Ar(t,n,r.l34_1.n(),un(i),r)}function qr(t){this.i34_1=t,this.j34_1=!1,this.k34_1=pt(),this.l34_1=an(),this.m34_1=hn(),this.n34_1=an(),this.o34_1=an(),this.p34_1=an()}function Or(t,n,i){if(i=i===dt?Dr:i,on(t))throw Zt(Jt("Blank serial names are prohibited"));var e=new qr(t);return i(e),new Ar(t,Jr(),e.l34_1.n(),un(n),e)}function zr(t){var n=t.o36_1;return yt("_hashCode",1,$t,(function(t){return zr(t)}),null),n.h2()}function Ar(t,n,i,e,r){this.d36_1=t,this.e36_1=n,this.f36_1=i,this.g36_1=r.k34_1,this.h36_1=_n(r.l34_1);var s=r.l34_1;this.i36_1=Xt(s),this.j36_1=Qs(r.n34_1);var o,u=r.o34_1;this.k36_1=Xt(u),this.l36_1=ln(r.p34_1);for(var a=cn(this.i36_1),h=zt(Ot(a,10)),_=a.v();_.w();){var l=_.y(),c=fn(l.ee_1,l.de_1);h.s(c)}this.m36_1=vn(h),this.n36_1=Qs(e),this.o36_1=dn((o=this,function(){return ro(o,o.n36_1)}))}function Tr(t,n){this.q36_1=t,this.r36_1=n}function Ir(t){return wt}function Dr(t){return wt}function jr(){u=this,Rr.call(this)}function Mr(){a=this,Rr.call(this)}function Nr(){return null==a&&new Mr,a}function Rr(){}function Pr(){h=this,Kr.call(this)}function Lr(){_=this,Kr.call(this)}function Fr(){l=this,Kr.call(this)}function Ur(){c=this,Kr.call(this)}function Hr(){f=this,Kr.call(this)}function Vr(){v=this,Kr.call(this)}function Br(){d=this,Kr.call(this)}function Yr(){w=this,Kr.call(this)}function Wr(){p=this,Kr.call(this)}function Gr(){return null==p&&new Wr,p}function Kr(){Rr.call(this)}function Xr(){m=this,rs.call(this)}function Jr(){return null==m&&new Xr,m}function Zr(){g=this,rs.call(this)}function Qr(){return null==g&&new Zr,g}function ts(){b=this,rs.call(this)}function ns(){return null==b&&new ts,b}function is(){$=this,rs.call(this)}function es(){return null==$&&new is,$}function rs(){Rr.call(this)}function ss(){y=this,as.call(this)}function os(){k=this,as.call(this)}function us(){return null==k&&new os,k}function as(){Rr.call(this)}function hs(){}function _s(){}function ls(){this.a38_1=-1,this.b38_1=-3}function cs(){}function fs(){}function vs(){S=this,this.d38_1=(null==q&&new Ys,q)}function ds(){return null==S&&new vs,S}function ws(){E=this,this.e38_1=new Xo("kotlin.time.Duration",Gr())}function ps(){}function ms(t){xs.call(this,t)}function gs(t){xs.call(this,t)}function bs(t){xs.call(this,t)}function $s(t,n){Ss.call(this,"kotlin.collections.HashMap",t,n)}function ys(t,n){Ss.call(this,"kotlin.collections.LinkedHashMap",t,n)}function ks(t){xs.call(this,t)}function xs(t){this.i38_1=t,this.j38_1=1}function Ss(t,n,i){this.o38_1=t,this.p38_1=n,this.q38_1=i,this.r38_1=2}function Es(t){xs.call(this,t),this.w38_1=t.h35()+"Array"}function Cs(t){Is.call(this,t),this.y38_1=new ms(t.g34())}function qs(t){Is.call(this,t),this.q39_1=new gs(t.g34())}function Os(t){Is.call(this,t),this.x39_1=new bs(t.g34())}function zs(t,n){Ds.call(this,t,n),this.e3a_1=new $s(t.g34(),n.g34())}function As(t,n){Ds.call(this,t,n),this.p3a_1=new ys(t.g34(),n.g34())}function Ts(t,n){js.call(this,n),this.u3a_1=t,this.v3a_1=new ks(n.g34())}function Is(t){js.call(this,t)}function Ds(t,n){Ms.call(this),this.j3a_1=t,this.k3a_1=n}function js(t){Ms.call(this),this.k39_1=t}function Ms(){}function Ns(t){js.call(this,t),this.c3b_1=new Es(t.g34())}function Rs(){}function Ps(){C=this,this.l3b_1=Ln(0)}function Ls(){return null==C&&new Ps,C}function Fs(t,n){Ls(),this.m3b_1=t,this.n3b_1=n;var i=this.m3b_1.j35();if(Fn(),i<=64){var e;Fn(),e=64===i?new $n(0,0):new $n(-1,-1).kb(i),this.o3b_1=e,this.p3b_1=Ls().l3b_1}else this.o3b_1=new $n(0,0),this.p3b_1=function(t,n){var i=(n-1|0)>>>6|0;Fn();var e=63&n,r=Ln(i);return 0!==e&&(r[Un(r)]=new $n(-1,-1).kb(n)),r}(0,i)}function Us(t,n){return new Hs(t,new Vs(n))}function Hs(t,n){eo.call(this,t,n,1),this.e3c_1=!0}function Vs(t){this.v3c_1=t}function Bs(t){throw Cn("Descriptor for type `kotlin.Nothing` does not have elements")}function Ys(){q=this,this.y3c_1=es(),this.z3c_1="kotlin.Nothing"}function Ws(t){this.a3d_1=t,this.b3d_1=new Gs(this.a3d_1.g34())}function Gs(t){this.r35_1=t,this.s35_1=this.r35_1.h35()+"?",this.t35_1=Js(this.r35_1)}function Ks(t,n){return function(){var i=es();return Cr(t,i,[],function(t){return function(n){return n.k34_1=t.d3d_1,wt}}(n))}}function Xs(t,n){this.c3d_1=n,this.d3d_1=pt();var i=mt();this.e3d_1=gt(i,Ks(t,this))}function Js(t){if(to(),It(t,ps))return t.p36();var n=Vn(t.j35()),i=0,e=t.j35();if(i0){var i=Xi(t,0),e=Qi(i)?Zi(i):Ji(i);n=Jt(e)+t.substring(1)}else n=t;return n}function Zo(){it||(it=!0,B=oe([fn(te().e7(),Ke()),fn(jt(yn),Xe(Xn())),fn(te().h7(),Je()),fn(te().c7(),Ze()),fn(te().n7(),Qe()),fn(te().b7(),tr()),fn(te().m7(),nr()),fn(jt($n),ir(Fn())),fn(te().l7(),er()),fn(jt(ne),rr(ii())),fn(jt(ei),sr()),fn(te().a7(),or()),fn(te().k7(),ur()),fn(jt(ie),ar(ui())),fn(jt(ai),hr()),fn(te().z6(),_r()),fn(te().j7(),lr()),fn(jt(ee),cr(ci())),fn(jt(fi),fr()),fn(te().y6(),vr()),fn(te().i7(),dr()),fn(jt(re),wr(pi())),fn(jt(mi),pr()),fn(te().x6(),mr()),fn(te().g7(),gr()),fn(jt(se),br()),fn(te().w6(),ds()),fn(jt(xn),$r(kn()))]))}function Qo(){nu.call(this)}function tu(t,n,i){t.d3i(n);var e=i();return t.o3h_1||t.e3i(),t.o3h_1=!1,e}function nu(){this.n3h_1=an(),this.o3h_1=!1}function iu(){return rt||(rt=!0,et=new Object),et}function eu(t,n){this.f3i_1=t,this.g3i_1=n}function ru(t,n){uu.call(this,t,n);var i,e,r=ns();this.j3i_1=Cr("kotlin.collections.Map.Entry",r,[],(i=t,e=n,function(t){return t.q34("key",i.g34()),t.q34("value",e.g34()),wt}))}function su(t,n){var i,e;uu.call(this,t,n),this.p3i_1=Or("kotlin.Pair",[],(i=t,e=n,function(t){return t.q34("first",i.g34()),t.q34("second",e.g34()),wt}))}function ou(t,n,i){var e;this.q3i_1=t,this.r3i_1=n,this.s3i_1=i,this.t3i_1=Or("kotlin.Triple",[],(e=this,function(t){return t.q34("first",e.q3i_1.g34()),t.q34("second",e.r3i_1.g34()),t.q34("third",e.s3i_1.g34()),wt}))}function uu(t,n){this.l3i_1=t,this.m3i_1=n}function au(){st=this,this.u3i_1=Us("kotlin.ULong",ir(Fn()))}function hu(){ot=this,this.w3i_1=Us("kotlin.UInt",or())}function _u(){ut=this,this.y3i_1=Us("kotlin.UShort",_r())}function lu(){at=this,this.a3j_1=Us("kotlin.UByte",vr())}function cu(){return mu(),ht}function fu(){}function vu(t,n,i,e,r){fu.call(this),this.u35_1=t,this.v35_1=n,this.w35_1=i,this.x35_1=e,this.y35_1=r}function du(t){pu.call(this),this.g3j_1=t}function wu(t){pu.call(this),this.e3j_1=t}function pu(){}function mu(){_t||(_t=!0,ht=new vu(Gn(),Gn(),Gn(),Gn(),Gn()))}function gu(){return cu()}function bu(){this.l3j_1=Tn(),this.m3j_1=Tn(),this.n3j_1=Tn(),this.o3j_1=Tn(),this.p3j_1=Tn()}function $u(t,n){var i=function(t,n,i){return yu.call(i,"Serializer for "+n+" already registered in the scope of "+t),i}(t,n,xt(ct(yu)));return St(i,$u),i}function yu(t){Et(t,this),St(this,yu)}function ku(){}function xu(t){this.x3j_1=t}function Su(t){return new zu(t)}function Eu(t){return new Au(t)}function Cu(t,n){var i;try{var e,r=le(t,jt(xu));if(null!=r&&It(r,Se))e=null!=r&&It(r,Se)?r:At();else if(null!=r&&It(r,oo)){var s=r.f3d(n.slice());e=It(s,Se)?s:At()}else e=function(t){var n=_e(t).$metadata$;return"interface"==(null==n?null:n.kind)}(t)?new qe(t):null;i=e}catch(t){i=null}return i}function qu(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw fe("Index "+n+" out of bounds "+ce(t));return t[n]}function Ou(t,n){if(!(0<=n&&n<=(t.length-1|0)))throw fe("Index "+n+" out of bounds "+ve(t));return t[n]}function zu(t){this.y3j_1=t}function Au(t){this.z3j_1=t}return vt(Ee,"DeserializationStrategy",ft),vt(Se,"KSerializer",ft,dt,[Ee]),vt(fs,"AbstractPolymorphicSerializer",bt,dt,[Se]),vt(qe,"PolymorphicSerializer",bt,fs),vt(Ie,"SerializationException",bt,qt,dt,(function t(){var n,i=(n=xt(ct(Ie)),kt(n),Ie.call(n),n);return St(i,t),i})),vt(De,"UnknownFieldException",bt,Ie),vt(Me,"MissingFieldException",bt,Ie),vt(xr,"SerialDescriptor",ft),vt(yr,"ContextDescriptor",bt,dt,[xr]),vt(Sr,dt,bt),vt(Er,dt,bt),vt(qr,"ClassSerialDescriptorBuilder",bt),vt(ps,"CachedNames",ft),vt(Ar,"SerialDescriptorImpl",bt,dt,[xr,ps]),vt(Tr,"WrappedSerialDescriptor",bt,dt,[xr]),vt(Rr,"SerialKind",bt),vt(jr,"ENUM",gn,Rr),vt(Mr,"CONTEXTUAL",gn,Rr),vt(Kr,"PrimitiveKind",bt,Rr),vt(Pr,"BOOLEAN",gn,Kr),vt(Lr,"BYTE",gn,Kr),vt(Fr,"CHAR",gn,Kr),vt(Ur,"SHORT",gn,Kr),vt(Hr,"INT",gn,Kr),vt(Vr,"LONG",gn,Kr),vt(Br,"FLOAT",gn,Kr),vt(Yr,"DOUBLE",gn,Kr),vt(Wr,"STRING",gn,Kr),vt(rs,"StructureKind",bt,Rr),vt(Xr,"CLASS",gn,rs),vt(Zr,"LIST",gn,rs),vt(ts,"MAP",gn,rs),vt(is,"OBJECT",gn,rs),vt(as,"PolymorphicKind",bt,Rr),vt(ss,"SEALED",gn,as),vt(os,"OPEN",gn,as),vt(_s,"Decoder",ft),vt(cs,"CompositeDecoder",ft),vt(hs,"AbstractDecoder",bt,dt,[_s,cs]),vt(ls,"Companion",gn),vt(vs,"NothingSerializer",gn,dt,[Se]),vt(ws,"DurationSerializer",gn,dt,[Se]),vt(xs,"ListLikeDescriptor",bt,dt,[xr]),vt(ms,"ArrayListClassDesc",bt,xs),vt(gs,"HashSetClassDesc",bt,xs),vt(bs,"LinkedHashSetClassDesc",bt,xs),vt(Ss,"MapLikeDescriptor",bt,dt,[xr]),vt($s,"HashMapClassDesc",bt,Ss),vt(ys,"LinkedHashMapClassDesc",bt,Ss),vt(ks,"ArrayClassDesc",bt,xs),vt(Es,"PrimitiveArrayDescriptor",bt,xs),vt(Ms,"AbstractCollectionSerializer",bt,dt,[Se]),vt(js,"CollectionLikeSerializer",bt,Ms),vt(Is,"CollectionSerializer",bt,js),vt(Cs,"ArrayListSerializer",bt,Is),vt(qs,"HashSetSerializer",bt,Is),vt(Os,"LinkedHashSetSerializer",bt,Is),vt(Ds,"MapLikeSerializer",bt,Ms),vt(zs,"HashMapSerializer",bt,Ds),vt(As,"LinkedHashMapSerializer",bt,Ds),vt(Ts,"ReferenceArraySerializer",bt,js),vt(Ns,"PrimitiveArraySerializer",bt,js),vt(Rs,"PrimitiveArrayBuilder",bt),vt(Ps,"Companion",gn),vt(Fs,"ElementMarker",bt),vt(eo,"PluginGeneratedSerialDescriptor",bt,dt,[xr,ps]),vt(Hs,"InlineClassDescriptor",bt,eo),vt(uo,"GeneratedSerializer",ft,dt,[Se]),vt(Vs,dt,bt,dt,[uo]),vt(Ys,"NothingSerialDescriptor",gn,dt,[xr]),vt(Ws,"NullableSerializer",bt,dt,[Se]),vt(Gs,"SerialDescriptorForNullable",bt,dt,[xr,ps]),vt(Xs,"ObjectSerializer",bt,dt,[Se]),vt(oo,"SerializerFactory",ft),vt(ao,"CharArraySerializer",gn,Ns,[Se,Ns]),vt(ho,"DoubleArraySerializer",gn,Ns,[Se,Ns]),vt(_o,"FloatArraySerializer",gn,Ns,[Se,Ns]),vt(lo,"LongArraySerializer",gn,Ns,[Se,Ns]),vt(co,"ULongArraySerializer",gn,Ns,[Se,Ns]),vt(fo,"IntArraySerializer",gn,Ns,[Se,Ns]),vt(vo,"UIntArraySerializer",gn,Ns,[Se,Ns]),vt(wo,"ShortArraySerializer",gn,Ns,[Se,Ns]),vt(po,"UShortArraySerializer",gn,Ns,[Se,Ns]),vt(mo,"ByteArraySerializer",gn,Ns,[Se,Ns]),vt(go,"UByteArraySerializer",gn,Ns,[Se,Ns]),vt(bo,"BooleanArraySerializer",gn,Ns,[Se,Ns]),vt($o,"CharArrayBuilder",bt,Rs),vt(yo,"DoubleArrayBuilder",bt,Rs),vt(ko,"FloatArrayBuilder",bt,Rs),vt(xo,"LongArrayBuilder",bt,Rs),vt(So,"ULongArrayBuilder",bt,Rs),vt(Eo,"IntArrayBuilder",bt,Rs),vt(Co,"UIntArrayBuilder",bt,Rs),vt(qo,"ShortArrayBuilder",bt,Rs),vt(Oo,"UShortArrayBuilder",bt,Rs),vt(zo,"ByteArrayBuilder",bt,Rs),vt(Ao,"UByteArrayBuilder",bt,Rs),vt(To,"BooleanArrayBuilder",bt,Rs),vt(Do,"StringSerializer",gn,dt,[Se]),vt(Mo,"CharSerializer",gn,dt,[Se]),vt(No,"DoubleSerializer",gn,dt,[Se]),vt(Po,"FloatSerializer",gn,dt,[Se]),vt(Fo,"LongSerializer",gn,dt,[Se]),vt(Uo,"IntSerializer",gn,dt,[Se]),vt(Vo,"ShortSerializer",gn,dt,[Se]),vt(Bo,"ByteSerializer",gn,dt,[Se]),vt(Yo,"BooleanSerializer",gn,dt,[Se]),vt(Go,"UnitSerializer",gn,dt,[Se]),vt(Xo,"PrimitiveSerialDescriptor",bt,dt,[xr]),vt(nu,"TaggedDecoder",bt,dt,[_s,cs]),vt(Qo,"NamedValueDecoder",bt,nu),vt(eu,"MapEntry",bt,dt,[Nt]),vt(uu,"KeyValueSerializer",bt,dt,[Se]),vt(ru,"MapEntrySerializer",bt,uu),vt(su,"PairSerializer",bt,uu),vt(ou,"TripleSerializer",bt,dt,[Se]),vt(au,"ULongSerializer",gn,dt,[Se]),vt(hu,"UIntSerializer",gn,dt,[Se]),vt(_u,"UShortSerializer",gn,dt,[Se]),vt(lu,"UByteSerializer",gn,dt,[Se]),vt(fu,"SerializersModule",bt),vt(vu,"SerialModuleImpl",bt,fu),vt(pu,"ContextualProvider",bt),vt(du,"Argless",bt,pu),vt(wu,"WithTypeArguments",bt,pu),vt(ku,"SerializersModuleCollector",ft),vt(bu,"SerializersModuleBuilder",bt,dt,[ku]),vt(yu,"SerializerAlreadyRegisteredException",bt,qt),vt(xu,"SerializableWith",bt,dt,dt,dt,0),vt(zu,dt,bt),vt(Au,dt,bt),ct(qe).u34=function(){return this.r34_1},ct(qe).g34=function(){var t=this.t34_1;return yt("descriptor",1,$t,(function(t){return t.g34()}),null),t.h2()},ct(qe).toString=function(){return"kotlinx.serialization.PolymorphicSerializer(baseClass: "+this.r34_1+")"},ct(yr).i35=function(){return this.e35_1.i35()},ct(yr).j35=function(){return this.e35_1.j35()},ct(yr).k35=function(){return this.e35_1.k35()},ct(yr).d35=function(){return this.e35_1.d35()},ct(yr).l35=function(){return this.e35_1.l35()},ct(yr).m35=function(t){return this.e35_1.m35(t)},ct(yr).n35=function(t){return this.e35_1.n35(t)},ct(yr).o35=function(t){return this.e35_1.o35(t)},ct(yr).p35=function(t){return this.e35_1.p35(t)},ct(yr).q35=function(t){return this.e35_1.q35(t)},ct(yr).h35=function(){return this.g35_1},ct(yr).equals=function(t){var n=t instanceof yr?t:null;if(null==n)return!1;var i=n;return!!rn(this.e35_1,i.e35_1)&&i.f35_1.equals(this.f35_1)},ct(yr).hashCode=function(){var t=this.f35_1.hashCode();return lt(31,t)+sn(this.g35_1)|0},ct(yr).toString=function(){return"ContextDescriptor(kClass: "+this.f35_1+", original: "+this.e35_1+")"},ct(Sr).w=function(){return this.z35_1>0},ct(Sr).y=function(){var t=this.a36_1.j35(),n=this.z35_1;return this.z35_1=n-1|0,this.a36_1.n35(t-n|0)},ct(Er).v=function(){return new Sr(this.b36_1)},ct(qr).c36=function(t,n,i,e){if(!this.m34_1.s(t)){var r="Element with name '"+t+"' is already registered in "+this.i34_1;throw Zt(Jt(r))}this.l34_1.s(t),this.n34_1.s(n),this.o34_1.s(i),this.p34_1.s(e)},ct(qr).q34=function(t,n,i,e,r){var s;return i=i===dt?pt():i,e=e!==dt&&e,r===dt?(this.c36(t,n,i,e),s=wt):s=r.c36.call(this,t,n,i,e),s},ct(Ar).h35=function(){return this.d36_1},ct(Ar).l35=function(){return this.e36_1},ct(Ar).j35=function(){return this.f36_1},ct(Ar).i35=function(){return this.g36_1},ct(Ar).p36=function(){return this.h36_1},ct(Ar).p35=function(t){return qu(this.i36_1,t)},ct(Ar).o35=function(t){var n=this.m36_1.o2(t);return null==n?-3:n},ct(Ar).m35=function(t){return qu(this.k36_1,t)},ct(Ar).n35=function(t){return qu(this.j36_1,t)},ct(Ar).q35=function(t){return Ou(this.l36_1,t)},ct(Ar).equals=function(t){var n;t:if(this!==t)if(t instanceof Ar)if(this.h35()===t.h35())if(wn(this.n36_1,t.n36_1))if(this.j35()===t.j35()){var i=0,e=this.j35();if(i=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}return!1},ct(xs).m35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}return pt()},ct(xs).n35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}return this.i38_1},ct(xs).equals=function(t){return this===t||t instanceof xs&&!(!rn(this.i38_1,t.i38_1)||this.h35()!==t.h35())},ct(xs).hashCode=function(){return lt(En(this.i38_1),31)+sn(this.h35())|0},ct(xs).toString=function(){return this.h35()+"("+this.i38_1+")"},ct(Ss).h35=function(){return this.o38_1},ct(Ss).l35=function(){return ns()},ct(Ss).j35=function(){return this.r38_1},ct(Ss).p35=function(t){return t.toString()},ct(Ss).o35=function(t){var n=Sn(t);if(null==n)throw Zt(t+" is not a valid map index");return n},ct(Ss).q35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}return!1},ct(Ss).m35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}return pt()},ct(Ss).n35=function(t){if(!(t>=0)){var n="Illegal index "+t+", "+this.h35()+" expects only non-negative indices";throw Zt(Jt(n))}var i;switch(t%2|0){case 0:i=this.p38_1;break;case 1:i=this.q38_1;break;default:throw Cn(Jt("Unreached"))}return i},ct(Ss).equals=function(t){return this===t||t instanceof Ss&&this.h35()===t.h35()&&!!rn(this.p38_1,t.p38_1)&&!!rn(this.q38_1,t.q38_1)},ct(Ss).hashCode=function(){var t=sn(this.h35());return t=lt(31,t)+En(this.p38_1)|0,lt(31,t)+En(this.q38_1)|0},ct(Ss).toString=function(){return this.h35()+"("+this.p38_1+", "+this.q38_1+")"},ct(Es).h35=function(){return this.w38_1},ct(Cs).g34=function(){return this.y38_1},ct(Cs).z38=function(){return an()},ct(Cs).a39=function(t){return t.n()},ct(Cs).b39=function(t){return this.a39(t instanceof Yt?t:At())},ct(Cs).c39=function(t){return t},ct(Cs).d39=function(t){return this.c39(t instanceof Yt?t:At())},ct(Cs).e39=function(t){var n=t instanceof Yt?t:null;return null==n?qn(t):n},ct(Cs).f39=function(t){return this.e39(null!=t&&It(t,Gt)?t:At())},ct(Cs).g39=function(t,n){return t.w2(n)},ct(Cs).h39=function(t,n){return this.g39(t instanceof Yt?t:At(),n)},ct(Cs).i39=function(t,n,i){t.p1(n,i)},ct(Cs).j39=function(t,n,i){var e=t instanceof Yt?t:At();return this.i39(e,n,null==i||null!=i?i:At())},ct(qs).g34=function(){return this.q39_1},ct(qs).z38=function(){return hn()},ct(qs).r39=function(t){return t.n()},ct(qs).b39=function(t){return this.r39(t instanceof Bt?t:At())},ct(qs).s39=function(t){return t},ct(qs).d39=function(t){return this.s39(t instanceof Bt?t:At())},ct(qs).t39=function(t){var n=t instanceof Bt?t:null;return null==n?On(t):n},ct(qs).f39=function(t){return this.t39(null!=t&&It(t,Vt)?t:At())},ct(qs).u39=function(t,n){},ct(qs).h39=function(t,n){return this.u39(t instanceof Bt?t:At(),n)},ct(qs).v39=function(t,n,i){t.s(i)},ct(qs).j39=function(t,n,i){var e=t instanceof Bt?t:At();return this.v39(e,n,null==i||null!=i?i:At())},ct(Os).g34=function(){return this.x39_1},ct(Os).z38=function(){return zn()},ct(Os).y39=function(t){return t.n()},ct(Os).b39=function(t){return this.y39(t instanceof Ut?t:At())},ct(Os).z39=function(t){return t},ct(Os).d39=function(t){return this.z39(t instanceof Ut?t:At())},ct(Os).t39=function(t){var n=t instanceof Ut?t:null;return null==n?An(t):n},ct(Os).f39=function(t){return this.t39(null!=t&&It(t,Vt)?t:At())},ct(Os).a3a=function(t,n){},ct(Os).h39=function(t,n){return this.a3a(t instanceof Ut?t:At(),n)},ct(Os).b3a=function(t,n,i){t.s(i)},ct(Os).j39=function(t,n,i){var e=t instanceof Ut?t:At();return this.b3a(e,n,null==i||null!=i?i:At())},ct(zs).g34=function(){return this.e3a_1},ct(zs).z38=function(){return Tn()},ct(zs).f3a=function(t){return lt(t.n(),2)},ct(zs).b39=function(t){return this.f3a(t instanceof Ft?t:At())},ct(zs).g3a=function(t){return t},ct(zs).d39=function(t){return this.g3a(t instanceof Ft?t:At())},ct(zs).h3a=function(t){var n=t instanceof Ft?t:null;return null==n?In(t):n},ct(zs).f39=function(t){return this.h3a(null!=t&&It(t,Lt)?t:At())},ct(zs).i3a=function(t,n){},ct(zs).h39=function(t,n){return this.i3a(t instanceof Ft?t:At(),n)},ct(As).g34=function(){return this.p3a_1},ct(As).z38=function(){return Dn()},ct(As).q3a=function(t){return lt(t.n(),2)},ct(As).b39=function(t){return this.q3a(t instanceof Rt?t:At())},ct(As).r3a=function(t){return t},ct(As).d39=function(t){return this.r3a(t instanceof Rt?t:At())},ct(As).h3a=function(t){var n=t instanceof Rt?t:null;return null==n?jn(t):n},ct(As).f39=function(t){return this.h3a(null!=t&&It(t,Lt)?t:At())},ct(As).s3a=function(t,n){},ct(As).h39=function(t,n){return this.s3a(t instanceof Rt?t:At(),n)},ct(Ts).g34=function(){return this.v3a_1},ct(Ts).z38=function(){return an()},ct(Ts).w3a=function(t){return t.n()},ct(Ts).b39=function(t){return this.w3a(t instanceof Yt?t:At())},ct(Ts).x3a=function(t){return function(t,n){return Xt(t)}(t,this.u3a_1)},ct(Ts).d39=function(t){return this.x3a(t instanceof Yt?t:At())},ct(Ts).y3a=function(t){return qn(Mn(t))},ct(Ts).f39=function(t){return this.y3a(null!=t&&Nn(t)?t:At())},ct(Ts).z3a=function(t,n){return t.w2(n)},ct(Ts).h39=function(t,n){return this.z3a(t instanceof Yt?t:At(),n)},ct(Ts).a3b=function(t,n,i){t.p1(n,i)},ct(Ts).j39=function(t,n,i){var e=t instanceof Yt?t:At();return this.a3b(e,n,null==i||null!=i?i:At())},ct(Ds).l3a=function(t,n,i,e){if(!(e>=0))throw Zt(Jt("Size must be known in advance when using READ_ALL"));var r=Rn(pn(0,lt(e,2)),2),s=r.ea_1,o=r.fa_1,u=r.ga_1;if(u>0&&s<=o||u<0&&o<=s)do{var a=s;s=s+u|0,this.m3a(t,i+a|0,n,!1)}while(a!==o)},ct(Ds).l39=function(t,n,i,e){return this.l3a(t,null!=n&&It(n,Pt)?n:At(),i,e)},ct(Ds).m3a=function(t,n,i,e){var r,s=t.u37(this.g34(),n,this.j3a_1);if(e){var o=t.y37(this.g34());if(o!==(n+1|0))throw Zt(Jt("Value must follow key in a map, index for key: "+n+", returned index for value: "+o));r=o}else r=n+1|0;var u=r,a=!i.l2(s)||this.k3a_1.g34().l35()instanceof Kr?t.u37(this.g34(),u,this.k3a_1):t.t37(this.g34(),u,this.k3a_1,Pn(i,s));i.e2(s,a)},ct(Ds).m39=function(t,n,i,e){return this.m3a(t,n,null!=i&&It(i,Pt)?i:At(),e)},ct(js).l39=function(t,n,i,e){if(!(e>=0))throw Zt(Jt("Size must be known in advance when using READ_ALL"));var r=0;if(r>>6|0)-1|0;Fn();var e=63&n;t.p3b_1[i]=t.p3b_1[i].ob(new $n(1,0).kb(e))}(this,t)},ct(Fs).r3b=function(){for(var t=this.m3b_1.j35();!this.o3b_1.equals(new $n(-1,-1));){var n=Hn(this.o3b_1.jb());if(this.o3b_1=this.o3b_1.ob(new $n(1,0).kb(n)),this.n3b_1(this.m3b_1,n))return n}return Fn(),t>64?function(t){var n=0,i=t.p3b_1.length-1|0;if(n<=i)do{var e=n;n=n+1|0;var r=e+1|0;Fn();for(var s=lt(r,64),o=t.p3b_1[e];!o.equals(new $n(-1,-1));){var u=Hn(o.jb());o=o.ob(new $n(1,0).kb(u));var a=s+u|0;if(t.n3b_1(t.m3b_1,a))return t.p3b_1[e]=o,a}t.p3b_1[e]=o}while(n<=i);return-1}(this):-1},ct(Hs).k35=function(){return this.e3c_1},ct(Hs).hashCode=function(){return lt(ct(eo).hashCode.call(this),31)},ct(Hs).equals=function(t){var n;t:if(this!==t)if(t instanceof Hs)if(this.h35()===t.h35())if(t.e3c_1&&wn(this.r3c(),t.r3c()))if(this.j35()===t.j35()){var i=0,e=this.j35();if(i>>1|0}while(s<32);throw je(e,i.h35())},t.$_$.k2=cu,t.$_$.l2=gu,t.$_$.m2=bu,t.$_$.n2=function(t,n){mu();var i=new bu;return i.q3j(t),i.q3j(n),i.o1d()},t.$_$.o2=Ee,t.$_$.p2=Se,t.$_$.q2=Me,t.$_$.r2=Ie,t.$_$.s2=Oe,t.$_$.t2=Ne,t.$_$.u2=function(t){return Le(gu(),t)},t.$_$.v2=Le,t})?e.apply(n,r):e)||(t.exports=s)},800:function(t,n,i){var e,r,s;r=[n,i(755),i(675)],void 0===(s="function"==typeof(e=function(t,n,i){"use strict";var e,r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V,B,Y,W,G,K,X=Math.imul,J=n.$_$.l2,Z=i.$_$.gb,Q=i.$_$.fb,tt=i.$_$.hb,nt=i.$_$.w9,it=i.$_$.f,et=n.$_$.w1,rt=n.$_$.u1,st=i.$_$.ha,ot=i.$_$.f1,ut=i.$_$.r2,at=i.$_$.a5,ht=i.$_$.fg,_t=i.$_$.z9,lt=i.$_$.ga,ct=i.$_$.f7,ft=i.$_$.k5,vt=i.$_$.j,dt=i.$_$.ah,wt=n.$_$.h2,pt=i.$_$.lb,mt=i.$_$.t1,gt=i.$_$.c,bt=i.$_$.ca,$t=i.$_$.fa,yt=i.$_$.i5,kt=i.$_$.f2,xt=i.$_$.n4,St=i.$_$.xa,Et=i.$_$.qb,Ct=i.$_$.qa,qt=i.$_$.ec,Ot=i.$_$.te,zt=i.$_$.p4,At=n.$_$.x,Tt=n.$_$.d2,It=n.$_$.g,Dt=n.$_$.n1,jt=n.$_$.p2,Mt=n.$_$.v,Nt=n.$_$.j1,Rt=n.$_$.u,Pt=n.$_$.h,Lt=n.$_$.j,Ft=n.$_$.e1,Ut=i.$_$.x1,Ht=i.$_$.bh,Vt=n.$_$.h1,Bt=n.$_$.g1,Yt=n.$_$.f1,Wt=i.$_$.kc,Gt=i.$_$.ea,Kt=n.$_$.a2,Xt=i.$_$.q9,Jt=n.$_$.r2,Zt=n.$_$.b,Qt=i.$_$.u9,tn=i.$_$.v9,nn=i.$_$.tb,en=i.$_$.yb,rn=(n.$_$.o,n.$_$.k),sn=i.$_$.v,on=i.$_$.m,un=i.$_$.c8,an=i.$_$.q6,hn=i.$_$.b7,_n=i.$_$.l6,ln=i.$_$.m6,cn=i.$_$.ba,fn=n.$_$.l,vn=i.$_$.qf,dn=i.$_$.wg,wn=i.$_$.k9,pn=i.$_$.rf,mn=i.$_$.pg,gn=i.$_$.w8,bn=n.$_$.y1,$n=i.$_$.d,yn=n.$_$.s2,kn=i.$_$.vg,xn=n.$_$.o2,Sn=n.$_$.r1,En=i.$_$.le,Cn=i.$_$.yd,qn=i.$_$.je,On=i.$_$.bd,zn=i.$_$.dh,An=n.$_$.q2,Tn=i.$_$.jb,In=i.$_$.vf,Dn=i.$_$.yg,jn=i.$_$.xg,Mn=i.$_$.t9,Nn=i.$_$.df,Rn=i.$_$.n3,Pn=i.$_$.ef,Ln=i.$_$.u3,Fn=i.$_$.cf,Un=i.$_$.f3,Hn=i.$_$.ff,Vn=i.$_$.b4,Bn=i.$_$.x4,Yn=n.$_$.z,Wn=i.$_$.y4,Gn=n.$_$.b1,Kn=i.$_$.w4,Xn=n.$_$.a1,Jn=i.$_$.z4,Zn=n.$_$.y,Qn=i.$_$.b8,ti=i.$_$.y2,ni=i.$_$.za,ii=i.$_$.jd,ei=i.$_$.z2,ri=n.$_$.f2,si=n.$_$.c1,oi=n.$_$.d1,ui=n.$_$.m,ai=i.$_$.k4,hi=i.$_$.ib,_i=i.$_$.o4,li=i.$_$.kb,ci=i.$_$.ce,fi=i.$_$.of,vi=n.$_$.i2,di=i.$_$.r6,wi=i.$_$.s7,pi=i.$_$.ve,mi=i.$_$.l8,gi=i.$_$.sf,bi=n.$_$.p1,$i=n.$_$.i,yi=i.$_$.ch,ki=i.$_$.m7,xi=i.$_$.x7,Si=i.$_$.wd,Ei=i.$_$.yf,Ci=i.$_$.u2,qi=i.$_$.u4,Oi=i.$_$.cb,zi=i.$_$.s9,Ai=i.$_$.nd,Ti=i.$_$.o;function Ii(){e=this,ji.call(this,new Ri,J())}function Di(){return null==e&&new Ii,e}function ji(t,n){Di(),this.g3n_1=t,this.h3n_1=n,this.i3n_1=new or}function Mi(){}function Ni(){}function Ri(t,n,i,e,r,s,o,u,a,h,_,l,c,f,v){t=t!==it&&t,n=n!==it&&n,i=i!==it&&i,e=e!==it&&e,r=r!==it&&r,s=s===it||s,o=o===it?" ":o,u=u!==it&&u,a=a!==it&&a,h=h===it?"type":h,_=_!==it&&_,l=l===it||l,c=c===it?null:c,f=f!==it&&f,v=v!==it&&v,this.x3n_1=t,this.y3n_1=n,this.z3n_1=i,this.a3o_1=e,this.b3o_1=r,this.c3o_1=s,this.d3o_1=o,this.e3o_1=u,this.f3o_1=a,this.g3o_1=h,this.h3o_1=_,this.i3o_1=l,this.j3o_1=c,this.k3o_1=f,this.l3o_1=v}function Pi(){}function Li(){}function Fi(){}function Ui(){}function Hi(t){var n=t.g2(),i=t.h2(),e=ot();return pr(e,n),e.p5(ut(58)),e.n5(i),e.toString()}function Vi(t){Fi.call(this),this.o3o_1=t}function Bi(){return ye()}function Yi(){r=this,Ki.call(this),this.p3o_1="null";var t=vt();this.q3o_1=dt(t,Bi)}function Wi(){return null==r&&new Yi,r}function Gi(){}function Ki(){Fi.call(this)}function Xi(t,n,i){if(i=i===it?null:i,Ki.call(this),this.s3o_1=n,this.t3o_1=i,this.u3o_1=pt(t),null!=this.t3o_1&&!this.t3o_1.k35())throw mt(pt("Failed requirement."))}function Ji(){}function Zi(t){Fi.call(this),this.v3o_1=t}function Qi(t){return ee(),function(t){return mr(),!!ii(t,"true",!0)||!ii(t,"false",!0)&&null}(t.x2a())}function te(t){var n;ee();try{n=new ls(t.x2a()).z3o()}catch(t){if(t instanceof Ie)throw kt(t.message);throw t}var i=n,e=St(xt.MIN_VALUE,xt.MAX_VALUE);if(!qt(Ct(e,Et)?e:ht(),i))throw kt(t.x2a()+" is not an Int");return i.ia()}function ne(t){return ee(),t instanceof Yi?null:t.x2a()}function ie(t){ee();var n,i=t instanceof Ki?t:null;return null==i?function(t,n){throw ee(),mt("Element "+gt(t)+" is not a "+n)}(t,"JsonPrimitive"):n=i,n}function ee(){s||(s=!0,Tt("kotlinx.serialization.json.JsonUnquotedLiteral",At(zt)))}function re(t){return t.q34("JsonPrimitive",me(se)),t.q34("JsonNull",me(oe)),t.q34("JsonLiteral",me(ue)),t.q34("JsonObject",me(ae)),t.q34("JsonArray",me(he)),at}function se(){return be().a3p_1}function oe(){return ye().b3p_1}function ue(){return(null==f&&new ke,f).c3p_1}function ae(){return ve().d3p_1}function he(){return pe().e3p_1}function _e(){o=this;var t=It();this.f3p_1=Dt("kotlinx.serialization.json.JsonElement",t,[],re)}function le(){return null==o&&new _e,o}function ce(){u=this,this.g3p_1=Mt(At(zt),le()).g34(),this.h3p_1="kotlinx.serialization.json.JsonObject"}function fe(){a=this,this.d3p_1=(null==u&&new ce,u)}function ve(){return null==a&&new fe,a}function de(){h=this,this.i3p_1=Rt(le()).g34(),this.j3p_1="kotlinx.serialization.json.JsonArray"}function we(){_=this,this.e3p_1=(null==h&&new de,h)}function pe(){return null==_&&new we,_}function me(t){return new Ce(t)}function ge(){l=this,this.a3p_1=Dt("kotlinx.serialization.json.JsonPrimitive",Pt(),[])}function be(){return null==l&&new ge,l}function $e(){c=this,this.b3p_1=Dt("kotlinx.serialization.json.JsonNull",Lt(),[])}function ye(){return null==c&&new $e,c}function ke(){f=this,this.c3p_1=Ft("kotlinx.serialization.json.JsonLiteral",Pt())}function xe(t){var n=Ct(t,Pi)?t:null;if(null==n)throw Ut("This serializer can be used only with Json format.Expected Decoder to be JsonDecoder, got "+gt(t));return n}function Se(t){xe(t)}function Ee(t){var n=t.k3p_1;return Gt("original",1,Wt,(function(t){return Ee(t)}),null),n.h2()}function Ce(t){this.k3p_1=Ht(t)}function qe(t){var n,i;this.l3p_1=new Kt(t,(n=this,i=function(t,i){return r=t,s=i,(e=n).m3p_1=!r.q35(s)&&r.n35(s).d35(),e.m3p_1;var e,r,s},i.callableName="readIfAbsent",i)),this.m3p_1=!1}function Oe(t,n){n=n===it?"object":n,t.n3p("Trailing comma before the end of JSON "+n,t.s3n_1-1|0,"Trailing commas are non-complaint JSON and not allowed by default. Use 'allowTrailingCommas = true' in 'Json {}' builder to support them.")}function ze(t,n){t.o3p("Unexpected special floating-point value "+pt(n)+". By default, non-finite floating point values are prohibited because they do not conform JSON specification",it,_s())}function Ae(t){Re.call(this,t),Xt(this,Ae)}function Te(t){return new Ae("Value of type '"+t.h35()+"' can't be used in JSON as a key in the map. It should have either primitive or enum kind, but its kind is '"+t.l35()+"'.\n"+K)}function Ie(t){Re.call(this,t),Xt(this,Ie)}function De(t,n,i){return Me(t,n+"\nJSON input: "+Pe(i,t))}function je(t,n,i){return Me(-1,function(t,n,i){return"Unexpected special floating-point value "+pt(t)+" with key "+n+". By default, non-finite floating point values are prohibited because they do not conform JSON specification. "+_s()+"\nCurrent output: "+Pe(i)}(t,n,i))}function Me(t,n){return new Ie(t>=0?"Unexpected JSON token at offset "+t+": "+n:n)}function Ne(t,n){return Me(-1,"Encountered an unknown key '"+t+"'.\n"+Y+"\nCurrent input: "+Pe(n))}function Re(t){Zt(t,this),Xt(this,Re)}function Pe(t,n){if(n=n===it?-1:n,Qt(t)<200)return t;if(-1===n){var i=Qt(t)-60|0;if(i<=0)return t;var e=Qt(t);return"....."+pt(tn(t,i,e))}var r=n-30|0,s=n+30|0,o=r<=0?"":".....",u=s>=Qt(t)?"":".....",a=nn(r,0),h=en(s,Qt(t));return o+pt(tn(t,a,h))+u}function Le(){return We(),v}function Fe(t,n,i){if(We(),Ve(n,t))return Be(t,n,i.toLowerCase());if(null!=Ue(t,n))return Be(t,n,i);var e=t.o35(i);return-3!==e?e:n.g3n_1.i3o_1?Be(t,n,i):e}function Ue(t,n){return We(),_t(t.l35(),rn())?n.g3n_1.j3o_1:null}function He(t,n){We();var i,e,r=cs(t),s=Le();return r.q3p(n,s,(i=n,e=t,function(){return function(t,n){We();var i=sn(),e=Ve(n,t),r=Ue(t,n),s=0,o=t.j35();if(s>12),r=wr(i>>8),s=wr(i>>4),o=wr(i);t[i]="\\u"+ei(e)+ei(r)+ei(s)+ei(o)}while(n<=31);var u=ut(34);t[ti(u)]='\\"';var a=ut(92);t[ti(a)]="\\\\";var h=ut(9);t[ti(h)]="\\t";var _=ut(8);t[ti(_)]="\\b";var l=ut(10);t[ti(l)]="\\n";var c=ut(13);t[ti(c)]="\\r",t[12]="\\f",g=t;var f=new Int8Array(93),v=0;if(v<=31)do{var d=v;v=v+1|0,f[d]=1}while(v<=31);var w=ut(34);f[ti(w)]=34;var p=ut(92);f[ti(p)]=92;var m=ut(9);f[ti(m)]=116;var $=ut(8);f[ti($)]=98;var y=ut(10);f[ti(y)]=110;var k=ut(13);f[ti(k)]=114,f[12]=102}}function gr(t,n){throw De(-1,"Failed to parse literal as '"+n+"' value",pt(t.q3s()))}function br(t,n){ri.call(this),this.n3s_1=t,this.o3s_1=n,this.p3s_1=this.m3o().g3n_1}function $r(t,n,i,e){var r;t:{var s=t.m3o(),o=n.n35(i);if(!o.d35()&&t.r3s(e)instanceof Yi)r=!0;else{if(_t(o.l35(),Lt())){if(o.d35()&&t.r3s(e)instanceof Yi){r=!1;break t}var u=t.r3s(e),a=u instanceof Ki?u:null,h=null==a?null:ne(a);if(null==h){r=!1;break t}if(-3===Fe(o,s,h)){r=!0;break t}}r=!1}}return r}function yr(t,n,i){return t.n3t_1=!t.m3o().g3n_1.c3o_1&&!n.q35(i)&&n.n35(i).d35(),t.n3t_1}function kr(t,n,i,e){i=i===it?null:i,e=e===it?null:e,br.call(this,t,n),this.j3t_1=n,this.k3t_1=i,this.l3t_1=e,this.m3t_1=0,this.n3t_1=!1}function xr(t,n){br.call(this,t,n),this.t3t_1=n,this.u3t_1=this.t3t_1.n(),this.v3t_1=-1}function Sr(t,n){br.call(this,t,n),this.b3u_1=n,this.d3i(Cr())}function Er(t,n){kr.call(this,t,n),this.m3u_1=n,this.n3u_1=mi(this.m3u_1.b2()),this.o3u_1=X(this.n3u_1.n(),2),this.p3u_1=-1}function Cr(){return $}function qr(){if(E)return at;E=!0,y=new Or("OBJ",0,Kr(),Xr()),k=new Or("LIST",1,Jr(),Zr()),x=new Or("MAP",2,Kr(),Xr()),S=new Or("POLY_OBJ",3,Jr(),Zr())}function Or(t,n,i,e){gi.call(this,t,n),this.f3s_1=i,this.g3s_1=e}function zr(t,n){var i,e=n.l35();if(e instanceof si)qr(),i=S;else if(_t(e,fn()))i=Ir();else if(_t(e,ui())){var r,s=Ar(n.n35(0),t.w37()),o=s.l35();if(o instanceof oi||_t(o,Lt()))r=Dr();else{if(!t.g3n_1.a3o_1)throw Te(s);r=Ir()}i=r}else i=Tr();return i}function Ar(t,n){var i;if(_t(t.l35(),$i())){var e=bi(n,t),r=null==e?null:Ar(e,n);i=null==r?t:r}else i=t.k35()?Ar(t.n35(0),n):t;return i}function Tr(){return qr(),y}function Ir(){return qr(),k}function Dr(){return qr(),x}function jr(t,n,i){return t.q3u(n,i),function(t,n){var i=n;-1===(i=t.s3u(i))&&t.o3p("Expected escape sequence to continue, got EOF");var e=t.r3u(),r=i;i=r+1|0;var s=Mn(e,r);if(s===ut(117))return Rr(t,t.r3u(),i);var o=function(t){return t<117?hs().a3v_1[t]:ut(0)}(ti(s));return o===ut(0)&&t.o3p("Invalid escaped char '"+ei(s)+"'"),t.v3n_1.p5(o),i}(t,i+1|0)}function Mr(t,n,i){t.q3u(n,i);var e=t.v3n_1.toString();return t.v3n_1.x7(0),e}function Nr(t){var n=kn(t.u3n_1);return t.u3n_1=null,n}function Rr(t,n,i){return(i+4|0)>=Qt(n)?(t.s3n_1=i,t.t3u(),(t.s3n_1+4|0)>=Qt(n)&&t.o3p("Unexpected EOF during unicode escape"),Rr(t,n,t.s3n_1)):(t.v3n_1.p5(ni((((Pr(t,n,i)<<12)+(Pr(t,n,i+1|0)<<8)|0)+(Pr(t,n,i+2|0)<<4)|0)+Pr(t,n,i+3|0)|0)),i+4|0)}function Pr(t,n,i){var e,r=Mn(n,i);if(ut(48)<=r&&r<=ut(57)){var s=ti(r),o=ut(48);e=s-ti(o)|0}else if(ut(97)<=r&&r<=ut(102)){var u=ti(r),a=ut(97);e=10+(u-ti(a)|0)|0}else if(ut(65)<=r&&r<=ut(70)){var h=ti(r),_=ut(65);e=10+(h-ti(_)|0)|0}else t.o3p("Invalid toHexChar char '"+ei(r)+"' in unicode escape");return e}function Lr(t,n,i){(Qt(t.r3u())-i|0)=0&&(t.o5("."),t.o5(r.p35(s)))}else r!==w&&(t.o5("["),t.o5("'"),t.n5(r),t.o5("'"),t.o5("]"))}while(i0&&t===ut(34)){var n;t:{var i=this.s3n_1;try{this.s3n_1=this.s3n_1-1|0,n=this.k3q();break t}finally{this.s3n_1=i}}"null"===n&&this.n3p("Expected string literal but 'null' literal was found",this.s3n_1-1|0,"Use 'coerceInputValues = true' in 'Json {}' builder to coerce nulls to default values.")}this.v3u(Ur(t))},Z(Fr).x3u=function(t,n){var i=Qr(t),e=n?this.s3n_1-1|0:this.s3n_1,r=this.s3n_1===Qt(this.r3u())||e<0?"EOF":ei(Mn(this.r3u(),e));this.o3p("Expected "+i+", but had '"+r+"' instead",e)},Z(Fr).v3u=function(t,n,i){return n=n===it||n,i===it?this.x3u(t,n):i.x3u.call(this,t,n)},Z(Fr).h3q=function(){for(var t=this.r3u(),n=this.s3n_1;-1!==(n=this.s3u(n));){var i=Mn(t,n);if(i!==ut(32)&&i!==ut(10)&&i!==ut(13)&&i!==ut(9))return this.s3n_1=n,Ur(i);n=n+1|0}return this.s3n_1=n,10},Z(Fr).w3r=function(t){var n=this.y3u();n=this.s3u(n);var i=Qt(this.r3u())-n|0;if(i<4||-1===n)return!1;var e=0;if(e<=3)do{var r=e;if(e=e+1|0,Mn("null",r)!==Mn(this.r3u(),n+r|0))return!1}while(e<=3);return!(i>4&&0===Ur(Mn(this.r3u(),n+4|0))||(t&&(this.s3n_1=n+4|0),0))},Z(Fr).h3s=function(t,n){return t=t===it||t,n===it?this.w3r(t):n.w3r.call(this,t)},Z(Fr).y3u=function(){var t=this.s3n_1;t:for(;-1!==(t=this.s3u(t));){var n=Mn(this.r3u(),t);if(n!==ut(32)&&n!==ut(10)&&n!==ut(13)&&n!==ut(9))break t;t=t+1|0}return this.s3n_1=t,t},Z(Fr).x3r=function(t){var n,i=this.h3q();if(t){if(1!==i&&0!==i)return null;n=this.k3q()}else{if(1!==i)return null;n=this.j3q()}var e=n;return this.u3n_1=e,e},Z(Fr).z3u=function(){this.u3n_1=null},Z(Fr).y7=function(t,n){var i=this.r3u();return pt(tn(i,t,n))},Z(Fr).j3q=function(){return null!=this.u3n_1?Nr(this):this.a3s()},Z(Fr).consumeString2=function(t,n,i){for(var e=i,r=n,s=Mn(t,e),o=!1;s!==ut(34);)s===ut(92)?(o=!0,-1===(e=this.s3u(jr(this,r,e)))&&this.o3p("Unexpected EOF",e),r=e):(e=e+1|0)>=Qt(t)&&(o=!0,this.q3u(r,e),-1===(e=this.s3u(e))&&this.o3p("Unexpected EOF",e),r=e),s=Mn(t,e);var u=o?Mr(this,r,e):this.y7(r,e);return this.s3n_1=e+1|0,u},Z(Fr).b3s=function(){var t,n=this.k3q();return"null"===n&&!(Mn((t=this).r3u(),t.s3n_1-1|0)===ut(34))&&this.o3p("Unexpected 'null' value instead of string literal"),n},Z(Fr).k3q=function(){if(null!=this.u3n_1)return Nr(this);var t=this.y3u();(t>=Qt(this.r3u())||-1===t)&&this.o3p("EOF",t);var n=Ur(Mn(this.r3u(),t));if(1===n)return this.j3q();0!==n&&this.o3p("Expected beginning of the string, but got "+ei(Mn(this.r3u(),t)));for(var i=!1;0===Ur(Mn(this.r3u(),t));)if((t=t+1|0)>=Qt(this.r3u())){i=!0,this.q3u(this.s3n_1,t);var e=this.s3u(t);if(-1===e)return this.s3n_1=t,Mr(this,0,0);t=e}var r=i?Mr(this,this.s3n_1,t):this.y7(this.s3n_1,t);return this.s3n_1=t,r},Z(Fr).q3u=function(t,n){this.v3n_1.q7(this.r3u(),t,n)},Z(Fr).z3r=function(t){var n=on(),i=this.h3q();if(8!==i&&6!==i)return this.k3q(),at;for(;;)if(1!==(i=this.h3q())){var e=i;if(8===e||6===e)n.s(i);else if(9===e){if(8!==ki(n))throw De(this.s3n_1,"found ] instead of } at path: "+this.t3n_1,this.r3u());xi(n)}else if(7===e){if(6!==ki(n))throw De(this.s3n_1,"found } instead of ] at path: "+this.t3n_1,this.r3u());xi(n)}else 10===e&&this.o3p("Unexpected end of input due to malformed JSON during ignoring unknown keys");if(this.m3q(),0===n.n())return at}else t?this.k3q():this.a3s()},Z(Fr).toString=function(){return"JsonReader(source='"+this.r3u()+"', currentPosition="+this.s3n_1+")"},Z(Fr).y3r=function(t){var n=this.y7(0,this.s3n_1),i=Si(n,t);this.n3p("Encountered an unknown key '"+t+"'",i,"Use 'ignoreUnknownKeys = true' in 'Json {}' builder to ignore unknown keys.")},Z(Fr).n3p=function(t,n,i){var e=0===Qt(i)?"":"\n"+i;throw De(n,t+" at path: "+this.t3n_1.b3q()+e,this.r3u())},Z(Fr).o3p=function(t,n,i,e){return n=n===it?this.s3n_1:n,i=i===it?"":i,e===it?this.n3p(t,n,i):e.n3p.call(this,t,n,i)},Z(Fr).z3o=function(){var t,n=this.y3u();((n=this.s3u(n))>=Qt(this.r3u())||-1===n)&&this.o3p("EOF"),Mn(this.r3u(),n)===ut(34)?((n=n+1|0)===Qt(this.r3u())&&this.o3p("EOF"),t=!0):t=!1;var i=t,e=new Ei(0,0),r=new Ei(0,0),s=!1,o=!1,u=!1,a=n;t:for(;n!==Qt(this.r3u());){var h=Mn(this.r3u(),n);if(h!==ut(101)&&h!==ut(69)||u)if(h===ut(45)&&u)n===a&&this.o3p("Unexpected symbol '-' in numeric literal"),o=!1,n=n+1|0;else if(h===ut(43)&&u)n===a&&this.o3p("Unexpected symbol '+' in numeric literal"),o=!0,n=n+1|0;else if(h!==ut(45)){if(0!==Ur(h))break t;n=n+1|0;var _=Ci(h,ut(48));0<=_&&_<=9||this.o3p("Unexpected symbol '"+ei(h)+"' in numeric literal"),u?r=r.y9(Tn(10)).db(Tn(_)):(e=e.y9(Tn(10)).eb(Tn(_))).z9(new Ei(0,0))>0&&this.o3p("Numeric value overflow")}else n!==a&&this.o3p("Unexpected symbol '-' in numeric literal"),s=!0,n=n+1|0;else n===a&&this.o3p("Unexpected symbol "+ei(h)+" in numeric literal"),o=!0,u=!0,n=n+1|0}var l,c=!(n===a);if((a===n||s&&a===(n-1|0))&&this.o3p("Expected numeric literal"),i&&(c||this.o3p("EOF"),Mn(this.r3u(),n)!==ut(34)&&this.o3p("Expected closing quotation mark"),n=n+1|0),this.s3n_1=n,u){var f,v=e.c6()*function(t,n){var i;switch(n){case!1:var e=-t.c6();i=Math.pow(10,e);break;case!0:var r=t.c6();i=Math.pow(10,r);break;default:yi()}return i}(r,o);qi(),v>new Ei(-1,2147483647).c6()?f=!0:(qi(),f=v=Qt(t.r3u())||-1===i)&&t.o3p("EOF");var e=t.r3u(),r=i;i=r+1|0;var s,o=Mn(e,r),u=32|ti(o),a=ut(116);if(u===ti(a))Lr(t,"rue",i),s=!0;else{var h=ut(102);u===ti(h)?(Lr(t,"alse",i),s=!1):t.o3p("Expected valid boolean literal prefix, but had '"+t.k3q()+"'")}return s}(this,n);return i&&(this.s3n_1===Qt(this.r3u())&&this.o3p("EOF"),Mn(this.r3u(),this.s3n_1)!==ut(34)&&this.o3p("Expected closing quotation mark"),this.s3n_1=this.s3n_1+1|0),e},Z(ls).r3u=function(){return this.g3v_1},Z(ls).s3u=function(t){return t0&&c.o5(","),c.o5(get_name(v))}for(var d=o.v();d.w();){var w=d.y(),p=w.oe(),m=w.pe();if(charSequenceLength(c)>0&&c.o5(","),!(0<=m&&m<=1))throw IllegalStateException_init_$Create$(toString("Check failed."));var g=roundToInt(100*m)/100;c.o5(get_name(p)+";q="+g)}0===charSequenceLength(c)&&c.o5(get_name(this.y2n_1)),this.a2o_1=c.toString();var b,$=null==i?firstOrNull(l):i;if(null==$){var y=firstOrNull(o);b=null==y?null:y.me_1}else b=$;var k=b;this.z2n_1=null==k?Charsets_getInstance().l1k_1:k}function _init_properties_HttpPlainText_kt__iy89z1(){properties_initialized_HttpPlainText_kt_2nx4ox||(properties_initialized_HttpPlainText_kt_2nx4ox=!0,LOGGER_2=KtorSimpleLogger("io.ktor.client.plugins.HttpPlainText"))}function get_ALLOWED_FOR_REDIRECT(){return _init_properties_HttpRedirect_kt__ure7fo(),ALLOWED_FOR_REDIRECT}function get_LOGGER_3(){return _init_properties_HttpRedirect_kt__ure7fo(),LOGGER_3}function handleCall(t,n,i,e,r,s,o){var u=new $handleCallCOROUTINE$7(n,t,i,e,r,s,o);return u.bc_1=Unit_instance,u.cc_1=null,u.mc()}function HttpRedirect$Plugin$install$slambda(t,n,i){this.b2q_1=t,this.c2q_1=n,CoroutineImpl.call(this,i)}function HttpRedirect$Plugin$install$slambda_0(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.u2l(t,n,i)};return r.$arity=2,r}function $handleCallCOROUTINE$7(t,n,i,e,r,s,o){CoroutineImpl.call(this,o),this.i2p_1=t,this.j2p_1=n,this.k2p_1=i,this.l2p_1=e,this.m2p_1=r,this.n2p_1=s}function Config_1(){this.k2q_1=!0,this.l2q_1=!1}function Plugin_1(){Plugin_instance_1=this,this.i2q_1=new AttributeKey("HttpRedirect"),this.j2q_1=new EventDefinition}function Plugin_getInstance_1(){return null==Plugin_instance_1&&new Plugin_1,Plugin_instance_1}function HttpRedirect(t,n){Plugin_getInstance_1(),this.g2q_1=t,this.h2q_1=n}function isRedirect(t){_init_properties_HttpRedirect_kt__ure7fo();var n=t.n22_1;return n===Companion_getInstance_2().w20_1.n22_1||n===Companion_getInstance_2().x20_1.n22_1||n===Companion_getInstance_2().c21_1.n22_1||n===Companion_getInstance_2().d21_1.n22_1||n===Companion_getInstance_2().y20_1.n22_1}function _init_properties_HttpRedirect_kt__ure7fo(){properties_initialized_HttpRedirect_kt_klj746||(properties_initialized_HttpRedirect_kt_klj746=!0,ALLOWED_FOR_REDIRECT=setOf_0([Companion_getInstance_1().t1z_1,Companion_getInstance_1().y1z_1]),LOGGER_3=KtorSimpleLogger("io.ktor.client.plugins.HttpRedirect"))}function get_LOGGER_4(){return _init_properties_HttpRequestLifecycle_kt__jgkmfx(),LOGGER_4}function HttpRequestLifecycle$Plugin$install$slambda(t,n){this.w2q_1=t,CoroutineImpl.call(this,n)}function HttpRequestLifecycle$Plugin$install$slambda_0(t,n){var i=new HttpRequestLifecycle$Plugin$install$slambda(t,n),e=function(t,n,e){return i.g27(t,n,e)};return e.$arity=2,e}function Plugin_2(){Plugin_instance_2=this,this.b2r_1=new AttributeKey("RequestLifecycle")}function Plugin_getInstance_2(){return null==Plugin_instance_2&&new Plugin_2,Plugin_instance_2}function HttpRequestLifecycle(){Plugin_getInstance_2()}function attachToClientEngineJob(t,n){_init_properties_HttpRequestLifecycle_kt__jgkmfx();var i=n.cn(attachToClientEngineJob$lambda(t));t.cn(attachToClientEngineJob$lambda_0(i))}function attachToClientEngineJob$lambda(t){return function(n){return null!=n?(get_LOGGER_4().s1t("Cancelling request because engine Job failed with error: "+n),cancel_2(t,"Engine failed",n)):(get_LOGGER_4().s1t("Cancelling request because engine Job completed"),t.es()),Unit_instance}}function attachToClientEngineJob$lambda_0(t){return function(n){return t.mp(),Unit_instance}}function _init_properties_HttpRequestLifecycle_kt__jgkmfx(){properties_initialized_HttpRequestLifecycle_kt_3hmcrf||(properties_initialized_HttpRequestLifecycle_kt_3hmcrf=!0,LOGGER_4=KtorSimpleLogger("io.ktor.client.plugins.HttpRequestLifecycle"))}function HttpSend$Plugin$install$slambda(t,n,i){this.l2r_1=t,this.m2r_1=n,CoroutineImpl.call(this,i)}function HttpSend$Plugin$install$slambda_0(t,n,i){var e=new HttpSend$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.g27(t,n,i)};return r.$arity=2,r}function $executeCOROUTINE$8(t,n,i){CoroutineImpl.call(this,i),this.a2s_1=t,this.b2s_1=n}function Config_2(){this.g2s_1=20}function Plugin_3(){Plugin_instance_3=this,this.h2s_1=new AttributeKey("HttpSend")}function Plugin_getInstance_3(){return null==Plugin_instance_3&&new Plugin_3,Plugin_instance_3}function InterceptedSender(t,n){this.k2s_1=t,this.l2s_1=n}function DefaultSender(t,n){this.c2s_1=t,this.d2s_1=n,this.e2s_1=0,this.f2s_1=null}function HttpSend(t){Plugin_getInstance_3(),t=t===VOID?20:t,this.c2n_1=t,this.d2n_1=ArrayList_init_$Create$()}function Sender(){}function SendCountExceedException(t){IllegalStateException_init_$Init$_0(t,this),captureStack(this,SendCountExceedException)}function get_LOGGER_5(){return _init_properties_HttpTimeout_kt__pucqrr(),LOGGER_5}function HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,e){return t=t===VOID?null:t,n=n===VOID?null:n,i=i===VOID?null:i,HttpTimeoutCapabilityConfiguration.call(e),e.p2s(t),e.q2s(n),e.r2s(i),e}function HttpTimeoutCapabilityConfiguration_init_$Create$(t,n,i){return HttpTimeoutCapabilityConfiguration_init_$Init$(t,n,i,objectCreate(protoOf(HttpTimeoutCapabilityConfiguration)))}function checkTimeoutValue(t,n){if(!(null==n||n.z9(new Long(0,0))>0))throw IllegalArgumentException_init_$Create$(toString("Only positive timeout values are allowed, for infinite timeout use HttpTimeout.INFINITE_TIMEOUT_MS"));return n}function Companion_2(){Companion_instance_3=this,this.s2s_1=new AttributeKey("TimeoutConfiguration")}function Companion_getInstance_9(){return null==Companion_instance_3&&new Companion_2,Companion_instance_3}function HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e){this.b2t_1=t,this.c2t_1=n,this.d2t_1=i,CoroutineImpl.call(this,e)}function HttpTimeout$Plugin$install$slambda$slambda_0(t,n,i,e){var r=new HttpTimeout$Plugin$install$slambda$slambda(t,n,i,e),s=function(t,n){return r.v1g(t,n)};return s.$arity=1,s}function HttpTimeout$Plugin$install$slambda$lambda(t){return function(n){return t.in(),Unit_instance}}function HttpTimeout$Plugin$install$slambda(t,n,i){this.n2t_1=t,this.o2t_1=n,CoroutineImpl.call(this,i)}function HttpTimeout$Plugin$install$slambda_0(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(t,n,i),r=function(t,n,i){return e.u2l(t,n,i)};return r.$arity=2,r}function HttpTimeoutCapabilityConfiguration(){Companion_getInstance_9(),this.m2s_1=new Long(0,0),this.n2s_1=new Long(0,0),this.o2s_1=new Long(0,0)}function hasNotNullTimeouts(t){return null!=t.w2t_1||null!=t.x2t_1||!(null==t.y2t_1)}function Plugin_4(){Plugin_instance_4=this,this.b2u_1=new AttributeKey("TimeoutPlugin"),this.c2u_1=new Long(-1,2147483647)}function Plugin_getInstance_4(){return null==Plugin_instance_4&&new Plugin_4,Plugin_instance_4}function HttpTimeout(t,n,i){Plugin_getInstance_4(),this.w2t_1=t,this.x2t_1=n,this.y2t_1=i}function HttpRequestTimeoutException_init_$Init$(t,n){var i=t.m28_1.i24(),e=t.t2t(Plugin_getInstance_4());return HttpRequestTimeoutException.call(n,i,null==e?null:e.a2u()),n}function HttpRequestTimeoutException_init_$Create$(t){var n=HttpRequestTimeoutException_init_$Init$(t,objectCreate(protoOf(HttpRequestTimeoutException)));return captureStack(n,HttpRequestTimeoutException_init_$Create$),n}function HttpRequestTimeoutException(t,n){IOException_init_$Init$("Request timeout has expired [url="+t+", request_timeout="+toString(null==n?"unknown":n)+" ms]",this),captureStack(this,HttpRequestTimeoutException)}function _init_properties_HttpTimeout_kt__pucqrr(){properties_initialized_HttpTimeout_kt_9oyjbd||(properties_initialized_HttpTimeout_kt_9oyjbd=!0,LOGGER_5=KtorSimpleLogger("io.ktor.client.plugins.HttpTimeout"))}function wrapWithContent(t,n){return new DelegatedCall(t.i27_1,n,t)}function DelegatedCall(t,n,i){HttpClientCall.call(this,t),this.k27_1=new DelegatedRequest(this,i.w2a()),this.l27_1=new DelegatedResponse(this,n,i.n27())}function DelegatedRequest(t,n){this.f2u_1=t,this.g2u_1=n}function DelegatedResponse(t,n,i){HttpResponse.call(this),this.h2u_1=t,this.i2u_1=n,this.j2u_1=i,this.k2u_1=this.j2u_1.am()}function WebSocketCapability(){}function WebSocketCapability_getInstance(){return WebSocketCapability_instance}function WebSocketException_init_$Init$(t,n){return WebSocketException.call(n,t,null),n}function WebSocketException_init_$Create$(t){var n=WebSocketException_init_$Init$(t,objectCreate(protoOf(WebSocketException)));return captureStack(n,WebSocketException_init_$Create$),n}function WebSocketException(t,n){IllegalStateException_init_$Init$_1(t,n,this),captureStack(this,WebSocketException)}function ClientUpgradeContent(){}function DefaultHttpRequest(t,n){this.l2u_1=t,this.m2u_1=n.n2d_1,this.n2u_1=n.m2d_1,this.o2u_1=n.p2d_1,this.p2u_1=n.o2d_1,this.q2u_1=n.r2d_1}function HttpRequest_0(){}function Companion_3(){}function Companion_getInstance_10(){return Companion_instance_4}function HttpRequestBuilder$setCapability$lambda(){return LinkedHashMap_init_$Create$()}function HttpRequestBuilder(){this.m28_1=new URLBuilder,this.n28_1=Companion_getInstance_1().t1z_1,this.o28_1=new HeadersBuilder,this.p28_1=EmptyContent_getInstance(),this.q28_1=SupervisorJob(),this.r28_1=AttributesJsFn(!0)}function HttpRequestData(t,n,i,e,r,s){this.m2d_1=t,this.n2d_1=n,this.o2d_1=i,this.p2d_1=e,this.q2d_1=r,this.r2d_1=s;var o=this.r2d_1.f1o(get_ENGINE_CAPABILITIES_KEY()),u=null==o?null:o.b2();this.s2d_1=null==u?emptySet():u}function HttpResponseData(t,n,i,e,r,s){this.u29_1=t,this.v29_1=n,this.w29_1=i,this.x29_1=e,this.y29_1=r,this.z29_1=s,this.a2a_1=GMTDate()}function url(t,n){takeFrom(t.m28_1,n)}function isUpgradeRequest(t){return t.p2d_1 instanceof ClientUpgradeContent}function Phases(){Phases_instance=this,this.k2f_1=new PipelinePhase("Before"),this.l2f_1=new PipelinePhase("State"),this.m2f_1=new PipelinePhase("Transform"),this.n2f_1=new PipelinePhase("Render"),this.o2f_1=new PipelinePhase("Send")}function Phases_getInstance(){return null==Phases_instance&&new Phases,Phases_instance}function HttpRequestPipeline(t){Phases_getInstance(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance().k2f_1,Phases_getInstance().l2f_1,Phases_getInstance().m2f_1,Phases_getInstance().n2f_1,Phases_getInstance().o2f_1]),this.a2v_1=t}function Phases_0(){Phases_instance_0=this,this.c29_1=new PipelinePhase("Before"),this.d29_1=new PipelinePhase("State"),this.e29_1=new PipelinePhase("Monitoring"),this.f29_1=new PipelinePhase("Engine"),this.g29_1=new PipelinePhase("Receive")}function Phases_getInstance_0(){return null==Phases_instance_0&&new Phases_0,Phases_instance_0}function HttpSendPipeline(t){Phases_getInstance_0(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_0().c29_1,Phases_getInstance_0().d29_1,Phases_getInstance_0().e29_1,Phases_getInstance_0().f29_1,Phases_getInstance_0().g29_1]),this.i2v_1=t}function get_BodyTypeAttributeKey(){return _init_properties_RequestBody_kt__bo3lwf(),BodyTypeAttributeKey}function _init_properties_RequestBody_kt__bo3lwf(){properties_initialized_RequestBody_kt_agyv1b||(properties_initialized_RequestBody_kt_agyv1b=!0,BodyTypeAttributeKey=new AttributeKey("BodyTypeAttributeKey"))}function DefaultHttpResponse(t,n){HttpResponse.call(this),this.j2v_1=t,this.k2v_1=n.z29_1,this.l2v_1=n.u29_1,this.m2v_1=n.x29_1,this.n2v_1=n.v29_1,this.o2v_1=n.a2a_1;var i=n.y29_1,e=isInterface(i,ByteReadChannel)?i:null;this.p2v_1=null==e?Companion_getInstance().z1g():e,this.q2v_1=n.w29_1}function HttpResponse(){}function get_request(t){return t.v2b().w2a()}function complete(t){var n=ensureNotNull(t.am().hc(Key_instance));(isInterface(n,CompletableJob)?n:THROW_CCE()).es()}function bodyAsText(t,n,i){var e=new $bodyAsTextCOROUTINE$13(t,n=n===VOID?Charsets_getInstance().l1k_1:n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()}function $bodyAsTextCOROUTINE$13(t,n,i){CoroutineImpl.call(this,i),this.z2v_1=t,this.a2w_1=n}function Phases_1(){Phases_instance_1=this,this.k29_1=new PipelinePhase("Receive"),this.l29_1=new PipelinePhase("Parse"),this.m29_1=new PipelinePhase("Transform"),this.n29_1=new PipelinePhase("State"),this.o29_1=new PipelinePhase("After")}function Phases_getInstance_1(){return null==Phases_instance_1&&new Phases_1,Phases_instance_1}function HttpResponsePipeline(t){Phases_getInstance_1(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_1().k29_1,Phases_getInstance_1().l29_1,Phases_getInstance_1().m29_1,Phases_getInstance_1().n29_1,Phases_getInstance_1().o29_1]),this.l2w_1=t}function Phases_2(){Phases_instance_2=this,this.p2f_1=new PipelinePhase("Before"),this.q2f_1=new PipelinePhase("State"),this.r2f_1=new PipelinePhase("After")}function Phases_getInstance_2(){return null==Phases_instance_2&&new Phases_2,Phases_instance_2}function HttpReceivePipeline(t){Phases_getInstance_2(),t=t!==VOID&&t,Pipeline.call(this,[Phases_getInstance_2().p2f_1,Phases_getInstance_2().q2f_1,Phases_getInstance_2().r2f_1]),this.t2w_1=t}function HttpResponseContainer(t,n){this.u2a_1=t,this.v2a_1=n}function checkCapabilities(t){var n,i=t.u2w_1.r28_1.f1o(get_ENGINE_CAPABILITIES_KEY()),e=null==i?null:i.b2();if(null==e)n=null;else{for(var r=ArrayList_init_$Create$(),s=e.v();s.w();){var o=s.y();null!=o&&isInterface(o,HttpClientPlugin)&&r.s(o)}n=r}if(null==n);else for(var u=n.v();u.w();){var a=u.y();if(null==pluginOrNull(t.v2w_1,a))throw IllegalArgumentException_init_$Create$(toString("Consider installing "+a+" plugin because the request requires it to be installed"))}}function HttpStatement$execute$slambda(t){CoroutineImpl.call(this,t)}function HttpStatement$execute$slambda_0(t){var n=new HttpStatement$execute$slambda(t),i=function(t,i){return n.f2x(t,i)};return i.$arity=1,i}function $executeCOROUTINE$14(t,n,i){CoroutineImpl.call(this,i),this.o2x_1=t,this.p2x_1=n}function $executeUnsafeCOROUTINE$15(t,n){CoroutineImpl.call(this,n),this.f2y_1=t}function $cleanupCOROUTINE$16(t,n,i){CoroutineImpl.call(this,i),this.q2y_1=t,this.r2y_1=n}function HttpStatement(t,n){this.u2w_1=t,this.v2w_1=n,checkCapabilities(this)}function observable(t,n,i,e){return writer(GlobalScope_instance,n,!0,observable$slambda_0(i,t,e,null)).by()}function observable$slambda(t,n,i,e){this.g2z_1=t,this.h2z_1=n,this.i2z_1=i,CoroutineImpl.call(this,e)}function observable$slambda_0(t,n,i,e){var r=new observable$slambda(t,n,i,e),s=function(t,n){return r.t2c(t,n)};return s.$arity=1,s}function get_HttpRequestCreated(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestCreated}function get_HttpRequestIsReadyForSending(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpRequestIsReadyForSending}function get_HttpResponseReceived(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceived}function get_HttpResponseReceiveFailed(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseReceiveFailed}function get_HttpResponseCancelled(){return _init_properties_ClientEvents_kt__xuvbz8(),HttpResponseCancelled}function HttpResponseReceiveFail(t,n){this.t2z_1=t,this.u2z_1=n}function _init_properties_ClientEvents_kt__xuvbz8(){properties_initialized_ClientEvents_kt_rdee4m||(properties_initialized_ClientEvents_kt_rdee4m=!0,HttpRequestCreated=new EventDefinition,HttpRequestIsReadyForSending=new EventDefinition,HttpResponseReceived=new EventDefinition,HttpResponseReceiveFailed=new EventDefinition,HttpResponseCancelled=new EventDefinition)}function EmptyContent(){EmptyContent_instance=this,NoContent.call(this),this.w2z_1=new Long(0,0)}function EmptyContent_getInstance(){return null==EmptyContent_instance&&new EmptyContent,EmptyContent_instance}function buildHeaders(t){t=t===VOID?buildHeaders$lambda:t;var n=new HeadersBuilder;return t(n),n.o1d()}function buildHeaders$lambda(t){return Unit_instance}function HttpClient_1(t){return t=t===VOID?HttpClient$lambda_3:t,HttpClient_0(JsClient(),t)}function HttpClient$lambda_3(t){return Unit_instance}function ioDispatcher(){return Dispatchers_getInstance().ps_1}function JsClient(){return Js_instance}function Js(){}function Js_getInstance(){return Js_instance}function createWebSocket($this,urlString_capturingHack,headers){for(var this_0=headers.b1q(),destination=ArrayList_init_$Create$(),tmp0_iterator=this_0.v();tmp0_iterator.w();){var element=tmp0_iterator.y();equals_0(element,"sec-websocket-protocol",!0)&&destination.s(element)}for(var protocolHeaderNames=destination,destination_0=ArrayList_init_$Create$(),tmp0_iterator_0=protocolHeaderNames.v();tmp0_iterator_0.w();){var element_0=tmp0_iterator_0.y(),tmp0_safe_receiver=headers.a1q(element_0);null==tmp0_safe_receiver||destination_0.s(tmp0_safe_receiver)}var this_1=flatten(destination_0),protocols=copyToArray(this_1),tmp;if(2===get_platform(PlatformUtils_getInstance()).v9_1)tmp=new WebSocket(urlString_capturingHack,protocols);else{var ws_capturingHack=eval("require")("ws"),headers_capturingHack=new JsClientEngine$createWebSocket$headers_capturingHack$1;headers.d1q(JsClientEngine$createWebSocket$lambda(headers_capturingHack)),tmp=new ws_capturingHack(urlString_capturingHack,protocols,{headers:headers_capturingHack})}return tmp}function executeWebSocketRequest(t,n,i,e){var r=new $executeWebSocketRequestCOROUTINE$18(t,n,i,e);return r.bc_1=Unit_instance,r.cc_1=null,r.mc()}function JsClientEngine$createWebSocket$headers_capturingHack$1(){}function JsClientEngine$createWebSocket$lambda(t){return function(n,i){return t[n]=joinToString(i,","),Unit_instance}}function $executeCOROUTINE$17(t,n,i){CoroutineImpl.call(this,i),this.u30_1=t,this.v30_1=n}function $executeWebSocketRequestCOROUTINE$18(t,n,i,e){CoroutineImpl.call(this,e),this.g30_1=t,this.h30_1=n,this.i30_1=i}function JsClientEngine(t){if(HttpClientEngineBase.call(this,"ktor-js"),this.e31_1=t,this.f31_1=setOf_0([Plugin_getInstance_4(),WebSocketCapability_instance]),null!=this.e31_1.i2f_1)throw IllegalStateException_init_$Create$(toString("Proxy unsupported in Js engine."))}function mapToKtor(t){return buildHeaders(mapToKtor$lambda(t))}function awaitConnection(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());if(i.zq(),!i.fp()){var e=awaitConnection$lambda(i,t);t.addEventListener("open",e),t.addEventListener("error",e),i.ip(awaitConnection$lambda_0(t,e))}return i.ap()}function asString(t){var n=StringBuilder_init_$Create$(),i=JSON;return n.o5(i.stringify(t,["message","target","type","isTrusted"])),n.toString()}function JsError(t){extendThrowable(this,"Error from javascript["+t+"]."),captureStack(this,JsError),this.g31_1=t}function mapToKtor$lambda$lambda(t){return function(n,i){return t.k1q(i,n),Unit_instance}}function mapToKtor$lambda(t){return function(n){return t.forEach(mapToKtor$lambda$lambda(n)),Unit_instance}}function awaitConnection$lambda(t,n){return function(i){var e=i.type;if("open"===e){var r=t,s=_Result___init__impl__xyqfz8(n);r.nc(s)}else if("error"===e){var o=t,u=WebSocketException_init_$Create$(asString(i)),a=_Result___init__impl__xyqfz8(createFailure(u));o.nc(a)}return Unit_instance}}function awaitConnection$lambda_0(t,n){return function(i){return t.removeEventListener("open",n),t.removeEventListener("error",n),null!=i&&t.close(),Unit_instance}}function toRaw(t,n,i,e){var r=new $toRawCOROUTINE$19(t,n,i,e);return r.bc_1=Unit_instance,r.cc_1=null,r.mc()}function buildObject(t){var n={},i=null==n||null!=n?n:THROW_CCE();return t(i),i}function toRaw$lambda(t){return function(n,i){return t[n]=i,Unit_instance}}function toRaw$slambda(t,n){this.d32_1=t,CoroutineImpl.call(this,n)}function toRaw$slambda_0(t,n){var i=new toRaw$slambda(t,n),e=function(t,n){return i.t2c(t,n)};return e.$arity=1,e}function toRaw$lambda_0(t,n,i,e){return function(r){var s;r.method=t.n2d_1.b20_1,r.headers=n,s=i.w28_1?"follow":"manual",r.redirect=s;var o=e;return null==o||(r.body=new Uint8Array(toTypedArray(o))),Unit_instance}}function $toRawCOROUTINE$19(t,n,i,e){CoroutineImpl.call(this,e),this.p31_1=t,this.q31_1=n,this.r31_1=i}function asByteArray(t){return new Int8Array(t.buffer,t.byteOffset,t.length)}function readBodyBrowser(t,n){var i=n.body;return null==i?Companion_getInstance().z1g():channelFromStream(t,i)}function channelFromStream(t,n){return writer(t,VOID,VOID,channelFromStream$slambda_0(n,null)).by()}function readChunk(t,n){var i=new CancellableContinuationImpl(intercepted(n),get_MODE_CANCELLABLE());return i.zq(),t.read().then(readChunk$lambda(i)).catch(readChunk$lambda_0(i)),i.ap()}function channelFromStream$slambda(t,n){this.n32_1=t,CoroutineImpl.call(this,n)}function channelFromStream$slambda_0(t,n){var i=new channelFromStream$slambda(t,n),e=function(t,n){return i.t2c(t,n)};return e.$arity=1,e}function readChunk$lambda(t){return function(n){var i=n.value,e=n.done||null==i?null:i,r=_Result___init__impl__xyqfz8(e);return t.nc(r),Unit_instance}}function readChunk$lambda_0(t){return function(n){var i=t,e=_Result___init__impl__xyqfz8(createFailure(n));return i.nc(e),Unit_instance}}function commonFetch(t,n,i){var e=new CancellableContinuationImpl(intercepted(i),get_MODE_CANCELLABLE());e.zq();var r=AbortController_0();n.signal=r.signal,e.ip(commonFetch$lambda(r));var s=2===get_platform(PlatformUtils_getInstance()).v9_1?fetch(t,n):jsRequireNodeFetch()(t,n),o=commonFetch$lambda_0(e);return s.then(o,commonFetch$lambda_1(e)),e.ap()}function readBody(t,n){return 3===get_platform(PlatformUtils_getInstance()).v9_1?readBodyNode(t,n):readBodyBrowser(t,n)}function AbortController_0(){var tmp;if(2===get_platform(PlatformUtils_getInstance()).v9_1)tmp=new AbortController;else{var controller=eval("require")("abort-controller");tmp=new controller}return tmp}function jsRequireNodeFetch(){var tmp;try{tmp=eval("require")("node-fetch")}catch(t){var tmp_0,cause=t;throw Error_init_$Create$("Error loading module 'node-fetch': "+cause)}return tmp}function commonFetch$lambda(t){return function(n){return t.abort(),Unit_instance}}function commonFetch$lambda_0(t){return function(n){var i=_Result___init__impl__xyqfz8(n);return t.nc(i),Unit_instance}}function commonFetch$lambda_1(t){return function(n){var i=Error_init_$Create$_0("Fail to fetch",n),e=_Result___init__impl__xyqfz8(createFailure(i));return t.nc(e),Unit_instance}}function readBodyNode(t,n){return writer(t,VOID,VOID,readBodyNode$slambda_0(n,null)).by()}function readBodyNode$slambda$lambda(t,n){return function(i){return _ChannelResult___get_isSuccess__impl__odq1z9(t.l11(asByteArray(new Uint8Array(i)))),n.pause()}}function readBodyNode$slambda$lambda_0(t,n){return function(i){var e=new JsError(i);return t.o11(e),n.by().o11(e)}}function readBodyNode$slambda$lambda_1(t){return function(){return t.q11()}}function readBodyNode$slambda(t,n){this.b33_1=t,CoroutineImpl.call(this,n)}function readBodyNode$slambda_0(t,n){var i=new readBodyNode$slambda(t,n),e=function(t,n){return i.t2c(t,n)};return e.$arity=1,e}function platformRequestDefaultTransform(t,n,i){return null}function platformResponseDefaultTransformers(t){}function isReservedStatusCode(t,n){var i=Companion_getInstance_5().o25(t);return null==i||equals(i,Codes_CLOSED_ABNORMALLY_getInstance())}function JsWebSocketSession$lambda(t){return function(n){var i,e=n,r=e.data;if(r instanceof ArrayBuffer){var s=new Int8Array(r);i=Binary_init_$Create$(!1,s)}else{if(null==r||"string"!=typeof r){var o=IllegalStateException_init_$Create$("Unknown frame type: "+e.type);throw t.j33_1.ds(o),o}i=Text_init_$Create$(r)}var u=i;return t.k33_1.l11(u),Unit_instance}}function JsWebSocketSession$lambda_0(t){return function(n){var i=WebSocketException_init_$Create$(""+n);return t.j33_1.ds(i),t.k33_1.o11(i),t.l33_1.s11(),Unit_instance}}function JsWebSocketSession$lambda_1(t){return function(n){var i=n.code,e=null!=i&&"number"==typeof i?i:THROW_CCE(),r=n.reason,s=new CloseReason(e,null!=r&&"string"==typeof r?r:THROW_CCE());return t.j33_1.bs(s),t.k33_1.l11(Close_init_$Create$(s)),t.k33_1.q11(),t.l33_1.s11(),Unit_instance}}function JsWebSocketSession$slambda(t,n){this.x33_1=t,CoroutineImpl.call(this,n)}function JsWebSocketSession$slambda_0(t,n){var i=new JsWebSocketSession$slambda(t,n),e=function(t,n){return i.v1g(t,n)};return e.$arity=1,e}function JsWebSocketSession$lambda_2(t){return function(n){return null==n?t.i33_1.close():t.i33_1.close(Codes_NORMAL_getInstance().l25_1,"Client failed"),Unit_instance}}function JsWebSocketSession(t,n){this.h33_1=t,this.i33_1=n,this.j33_1=CompletableDeferred(),Factory_getInstance(),this.k33_1=Channel(2147483647),Factory_getInstance(),this.l33_1=Channel(2147483647),this.m33_1=this.k33_1,this.n33_1=this.l33_1,this.o33_1=this.j33_1,this.i33_1.binaryType="arraybuffer",this.i33_1.addEventListener("message",JsWebSocketSession$lambda(this)),this.i33_1.addEventListener("error",JsWebSocketSession$lambda_0(this)),this.i33_1.addEventListener("close",JsWebSocketSession$lambda_1(this)),launch(this,VOID,VOID,JsWebSocketSession$slambda_0(this,null));var i=this.h33_1.hc(Key_instance);null==i||i.cn(JsWebSocketSession$lambda_2(this))}function unwrapCancellationException(t){for(var n=t;n instanceof CancellationException;){if(equals(n,n.cause))return t;n=n.cause}return null==n?t:n}return setMetadataFor(HttpClient$slambda,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpClient$slambda_1,"HttpClient$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$0,"$executeCOROUTINE$0",classMeta,CoroutineImpl),setMetadataFor(HttpClient,"HttpClient",classMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,VOID,[1]),setMetadataFor(HttpClientConfig,"HttpClientConfig",classMeta,VOID,VOID,HttpClientConfig),setMetadataFor(Companion,"Companion",objectMeta),setMetadataFor($bodyNullableCOROUTINE$1,"$bodyNullableCOROUTINE$1",classMeta,CoroutineImpl),setMetadataFor(HttpClientCall,"HttpClientCall",classMeta,VOID,[CoroutineScope],VOID,VOID,VOID,[0,1]),setMetadataFor(DoubleReceiveException,"DoubleReceiveException",classMeta,IllegalStateException),setMetadataFor(NoTransformationFoundException,"NoTransformationFoundException",classMeta,UnsupportedOperationException),setMetadataFor(SavedHttpCall,"SavedHttpCall",classMeta,HttpClientCall,VOID,VOID,VOID,VOID,[0,1]),setMetadataFor(HttpRequest_0,"HttpRequest",interfaceMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpRequest,"SavedHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpResponse,"HttpResponse",classMeta,VOID,[CoroutineScope]),setMetadataFor(SavedHttpResponse,"SavedHttpResponse",classMeta,HttpResponse),setMetadataFor($saveCOROUTINE$3,"$saveCOROUTINE$3",classMeta,CoroutineImpl),setMetadataFor(UnsupportedContentTypeException,"UnsupportedContentTypeException",classMeta,IllegalStateException),setMetadataFor(ObservableContent$content$slambda,"ObservableContent$content$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(ObservableContent,"ObservableContent",classMeta,ReadChannelContent),setMetadataFor(HttpClientEngine$install$slambda,"HttpClientEngine$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpClientEngine$executeWithinCallContext$slambda,"HttpClientEngine$executeWithinCallContext$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($executeWithinCallContextCOROUTINE$4,"$executeWithinCallContextCOROUTINE$4",classMeta,CoroutineImpl),setMetadataFor(HttpClientEngine,"HttpClientEngine",interfaceMeta,VOID,[CoroutineScope,Closeable],VOID,VOID,VOID,[1]),setMetadataFor(ClientEngineClosedException,"ClientEngineClosedException",classMeta,IllegalStateException,VOID,ClientEngineClosedException),setMetadataFor(HttpClientEngineBase,"HttpClientEngineBase",classMeta,VOID,[HttpClientEngine],VOID,VOID,VOID,[1]),setMetadataFor(HttpClientEngineConfig,"HttpClientEngineConfig",classMeta,VOID,VOID,HttpClientEngineConfig),setMetadataFor(Companion_0,"Companion",objectMeta),setMetadataFor(KtorCallContextElement,"KtorCallContextElement",classMeta,VOID,[Element]),setMetadataFor(HttpClientPlugin,"HttpClientPlugin",interfaceMeta),setMetadataFor(Plugin,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(BodyProgress$handle$slambda,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress$handle$slambda_1,"BodyProgress$handle$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(BodyProgress,"BodyProgress",classMeta),setMetadataFor(ResponseException,"ResponseException",classMeta,IllegalStateException),setMetadataFor(RedirectResponseException,"RedirectResponseException",classMeta,ResponseException),setMetadataFor(ClientRequestException,"ClientRequestException",classMeta,ResponseException),setMetadataFor(ServerResponseException,"ServerResponseException",classMeta,ResponseException),setMetadataFor(addDefaultResponseValidation$lambda$slambda,"addDefaultResponseValidation$lambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$1$content$1,VOID,classMeta,ByteArrayContent),setMetadataFor(defaultTransformers$1$content$2,VOID,classMeta,ReadChannelContent),setMetadataFor(defaultTransformers$slambda,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(defaultTransformers$slambda$slambda,"defaultTransformers$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(defaultTransformers$slambda_1,"defaultTransformers$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_1,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpCallValidator$Companion$install$slambda_3,"HttpCallValidator$Companion$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Config,"Config",classMeta,VOID,VOID,Config),setMetadataFor(Companion_1,"Companion",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor($validateResponseCOROUTINE$5,"$validateResponseCOROUTINE$5",classMeta,CoroutineImpl),setMetadataFor($processExceptionCOROUTINE$6,"$processExceptionCOROUTINE$6",classMeta,CoroutineImpl),setMetadataFor(HttpCallValidator,"HttpCallValidator",classMeta,VOID,VOID,VOID,VOID,VOID,[1,2]),setMetadataFor(ExceptionHandlerWrapper,"ExceptionHandlerWrapper",classMeta),setMetadataFor(RequestExceptionHandlerWrapper,"RequestExceptionHandlerWrapper",classMeta),setMetadataFor(HttpRequest$1,VOID,classMeta,VOID,[HttpRequest_0]),setMetadataFor(HttpPlainText$Plugin$install$slambda,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpPlainText$Plugin$install$slambda_1,"HttpPlainText$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Config_0,"Config",classMeta,VOID,VOID,Config_0),setMetadataFor(Plugin_0,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(sam$kotlin_Comparator$0,"sam$kotlin_Comparator$0",classMeta),setMetadataFor(HttpPlainText,"HttpPlainText",classMeta),setMetadataFor(HttpRedirect$Plugin$install$slambda,"HttpRedirect$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($handleCallCOROUTINE$7,"$handleCallCOROUTINE$7",classMeta,CoroutineImpl),setMetadataFor(Config_1,"Config",classMeta,VOID,VOID,Config_1),setMetadataFor(Plugin_1,"Plugin",objectMeta,VOID,[HttpClientPlugin],VOID,VOID,VOID,[4]),setMetadataFor(HttpRedirect,"HttpRedirect",classMeta),setMetadataFor(HttpRequestLifecycle$Plugin$install$slambda,"HttpRequestLifecycle$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(Plugin_2,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpRequestLifecycle,"HttpRequestLifecycle",classMeta),setMetadataFor(HttpSend$Plugin$install$slambda,"HttpSend$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor($executeCOROUTINE$8,"$executeCOROUTINE$8",classMeta,CoroutineImpl),setMetadataFor(Config_2,"Config",classMeta,VOID,VOID,Config_2),setMetadataFor(Plugin_3,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(Sender,"Sender",interfaceMeta,VOID,VOID,VOID,VOID,VOID,[1]),setMetadataFor(InterceptedSender,"InterceptedSender",classMeta,VOID,[Sender],VOID,VOID,VOID,[1]),setMetadataFor(DefaultSender,"DefaultSender",classMeta,VOID,[Sender],VOID,VOID,VOID,[1]),setMetadataFor(HttpSend,"HttpSend",classMeta),setMetadataFor(SendCountExceedException,"SendCountExceedException",classMeta,IllegalStateException),setMetadataFor(Companion_2,"Companion",objectMeta),setMetadataFor(HttpTimeout$Plugin$install$slambda$slambda,"HttpTimeout$Plugin$install$slambda$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(HttpTimeout$Plugin$install$slambda,"HttpTimeout$Plugin$install$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[2]),setMetadataFor(HttpTimeoutCapabilityConfiguration,"HttpTimeoutCapabilityConfiguration",classMeta,VOID,VOID,HttpTimeoutCapabilityConfiguration_init_$Create$),setMetadataFor(Plugin_4,"Plugin",objectMeta,VOID,[HttpClientPlugin]),setMetadataFor(HttpTimeout,"HttpTimeout",classMeta),setMetadataFor(HttpRequestTimeoutException,"HttpRequestTimeoutException",classMeta,IOException),setMetadataFor(DelegatedCall,"DelegatedCall",classMeta,HttpClientCall,VOID,VOID,VOID,VOID,[0,1]),setMetadataFor(DelegatedRequest,"DelegatedRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(DelegatedResponse,"DelegatedResponse",classMeta,HttpResponse),setMetadataFor(WebSocketCapability,"WebSocketCapability",objectMeta),setMetadataFor(WebSocketException,"WebSocketException",classMeta,IllegalStateException),setMetadataFor(ClientUpgradeContent,"ClientUpgradeContent",classMeta,NoContent,VOID,VOID,VOID,VOID,[1]),setMetadataFor(DefaultHttpRequest,"DefaultHttpRequest",classMeta,VOID,[HttpRequest_0]),setMetadataFor(Companion_3,"Companion",objectMeta),setMetadataFor(HttpRequestBuilder,"HttpRequestBuilder",classMeta,VOID,VOID,HttpRequestBuilder),setMetadataFor(HttpRequestData,"HttpRequestData",classMeta),setMetadataFor(HttpResponseData,"HttpResponseData",classMeta),setMetadataFor(Phases,"Phases",objectMeta),setMetadataFor(HttpRequestPipeline,"HttpRequestPipeline",classMeta,Pipeline,VOID,HttpRequestPipeline,VOID,VOID,[2]),setMetadataFor(Phases_0,"Phases",objectMeta),setMetadataFor(HttpSendPipeline,"HttpSendPipeline",classMeta,Pipeline,VOID,HttpSendPipeline,VOID,VOID,[2]),setMetadataFor(DefaultHttpResponse,"DefaultHttpResponse",classMeta,HttpResponse),setMetadataFor($bodyAsTextCOROUTINE$13,"$bodyAsTextCOROUTINE$13",classMeta,CoroutineImpl),setMetadataFor(Phases_1,"Phases",objectMeta),setMetadataFor(HttpResponsePipeline,"HttpResponsePipeline",classMeta,Pipeline,VOID,HttpResponsePipeline,VOID,VOID,[2]),setMetadataFor(Phases_2,"Phases",objectMeta),setMetadataFor(HttpReceivePipeline,"HttpReceivePipeline",classMeta,Pipeline,VOID,HttpReceivePipeline,VOID,VOID,[2]),setMetadataFor(HttpResponseContainer,"HttpResponseContainer",classMeta),setMetadataFor(HttpStatement$execute$slambda,"HttpStatement$execute$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($executeCOROUTINE$14,"$executeCOROUTINE$14",classMeta,CoroutineImpl),setMetadataFor($executeUnsafeCOROUTINE$15,"$executeUnsafeCOROUTINE$15",classMeta,CoroutineImpl),setMetadataFor($cleanupCOROUTINE$16,"$cleanupCOROUTINE$16",classMeta,CoroutineImpl),setMetadataFor(HttpStatement,"HttpStatement",classMeta,VOID,VOID,VOID,VOID,VOID,[1,0]),setMetadataFor(observable$slambda,"observable$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(HttpResponseReceiveFail,"HttpResponseReceiveFail",classMeta),setMetadataFor(EmptyContent,"EmptyContent",objectMeta,NoContent),setMetadataFor(Js,"Js",objectMeta),setMetadataFor(JsClientEngine$createWebSocket$headers_capturingHack$1,VOID,classMeta),setMetadataFor($executeCOROUTINE$17,"$executeCOROUTINE$17",classMeta,CoroutineImpl),setMetadataFor($executeWebSocketRequestCOROUTINE$18,"$executeWebSocketRequestCOROUTINE$18",classMeta,CoroutineImpl),setMetadataFor(JsClientEngine,"JsClientEngine",classMeta,HttpClientEngineBase,VOID,VOID,VOID,VOID,[1,2]),setMetadataFor(JsError,"JsError",classMeta,Error),setMetadataFor(toRaw$slambda,"toRaw$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor($toRawCOROUTINE$19,"$toRawCOROUTINE$19",classMeta,CoroutineImpl),setMetadataFor(channelFromStream$slambda,"channelFromStream$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(readBodyNode$slambda,"readBodyNode$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession$slambda,"JsWebSocketSession$slambda",classMeta,CoroutineImpl,VOID,VOID,VOID,VOID,[1]),setMetadataFor(JsWebSocketSession,"JsWebSocketSession",classMeta,VOID,[CoroutineScope],VOID,VOID,VOID,[0,1]),protoOf(HttpClient$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpClient$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpClient$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,!(this.e27_1 instanceof HttpClientCall)){var n="Error: HttpClientCall expected, but found "+toString(this.e27_1)+"("+getKClassFromExpression(this.e27_1)+").";throw IllegalStateException_init_$Create$(toString(n))}if(this.zb_1=1,(t=this.c27_1.p26_1.w1s(Unit_instance,this.e27_1.n27(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.f27_1=t,this.e27_1.o27(this.f27_1),this.zb_1=2,(t=this.d27_1.b1s(this.e27_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.cc_1}}catch(t){var i=t;if(3===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(HttpClient$slambda).h27=function(t,n,i){var e=new HttpClient$slambda(this.c27_1,i);return e.d27_1=t,e.e27_1=n,e},protoOf(HttpClient$slambda_1).a28=function(t,n,i){var e=this.b28(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpClient$slambda_1).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.a28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpClient$slambda_1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.ac_1=2,this.zb_1=1,(t=this.y27_1.c1s(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ac_1=3,this.zb_1=4;continue t;case 2:if(this.ac_1=3,this.cc_1 instanceof Error){var n=this.cc_1;throw this.x27_1.s26_1.e25(get_HttpResponseReceiveFailed(),new HttpResponseReceiveFail(this.y27_1.x1s_1.n27(),n)),n}throw this.cc_1;case 3:throw this.cc_1;case 4:return this.ac_1=3,Unit_instance}}catch(t){var i=t;if(3===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(HttpClient$slambda_1).b28=function(t,n,i){var e=new HttpClient$slambda_1(this.x27_1,i);return e.y27_1=t,e.z27_1=n,e},protoOf($executeCOROUTINE$0).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.k28_1.s26_1.e25(get_HttpRequestCreated(),this.l28_1),this.zb_1=1,(t=this.k28_1.m26_1.w1s(this.l28_1,this.l28_1.p28_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t instanceof HttpClientCall?t:THROW_CCE();case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpClient).am=function(){return this.l26_1},protoOf(HttpClient).p29=function(t,n){var i=new $executeCOROUTINE$0(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpClient).z1i=function(){if(!this.j26_1.atomicfu$compareAndSet(!1,!0))return Unit_instance;for(var t=this.q26_1.e1o(get_PLUGIN_INSTALLED_LIST()),n=t.k1o().v();n.w();){var i=n.y(),e=t.e1o(i instanceof AttributeKey?i:THROW_CCE());isInterface(e,Closeable)&&e.z1i()}this.k26_1.es(),this.i26_1&&this.g26_1.z1i()},protoOf(HttpClient).toString=function(){return"HttpClient["+this.g26_1+"]"},protoOf(HttpClientConfig).t29=function(t,n){var i=this.t28_1.o2(t.g2()),e=this.t28_1,r=t.g2(),s=HttpClientConfig$install$lambda_0(i,n);if(e.e2(r,s),this.s28_1.l2(t.g2()))return Unit_instance;var o=this.s28_1,u=t.g2(),a=HttpClientConfig$install$lambda_1(t);o.e2(u,a)},protoOf(HttpClientConfig).h29=function(t,n,i){var e;return n=n===VOID?HttpClientConfig$install$lambda:n,i===VOID?(this.t29(t,n),e=Unit_instance):e=i.t29.call(this,t,n),e},protoOf(HttpClientConfig).i29=function(t,n){this.u28_1.e2(t,n)},protoOf(HttpClientConfig).b29=function(t){for(var n=this.s28_1.c2().v();n.w();)n.y()(t);for(var i=this.u28_1.c2().v();i.w();)i.y()(t)},protoOf(HttpClientConfig).j29=function(t){this.w28_1=t.w28_1,this.x28_1=t.x28_1,this.y28_1=t.y28_1;var n=this.s28_1,i=t.s28_1;n.f2(i);var e=this.t28_1,r=t.t28_1;e.f2(r);var s=this.u28_1,o=t.u28_1;s.f2(o)},protoOf($bodyNullableCOROUTINE$1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=10,this.zb_1=1;continue t;case 1:this.zb_1=2;continue t;case 2:if(this.ac_1=9,this.ac_1=8,instanceOf(this.l2a_1.n27(),this.m2a_1.n1t_1)){this.n2a_1=this.l2a_1.n27(),this.ac_1=10,this.zb_1=7;continue t}this.zb_1=3;continue t;case 3:if(!this.l2a_1.s2a()&&!this.l2a_1.j27_1.atomicfu$compareAndSet(!1,!0))throw new DoubleReceiveException(this.l2a_1);if(this.o2a_1=this.l2a_1.b2a().f1o(Companion_getInstance_6().c2a_1),null==this.o2a_1){if(this.zb_1=4,(t=this.l2a_1.t2a(this))===get_COROUTINE_SUSPENDED())return t;continue t}this.p2a_1=this.o2a_1,this.zb_1=5;continue t;case 4:this.p2a_1=t,this.zb_1=5;continue t;case 5:if(this.q2a_1=this.p2a_1,this.r2a_1=new HttpResponseContainer(this.m2a_1,this.q2a_1),this.zb_1=6,(t=this.l2a_1.i27_1.n26_1.w1s(this.l2a_1,this.r2a_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var n=t.v2a_1,i=equals(n,NullBody_instance)?null:n;if(null!=i&&!instanceOf(i,this.m2a_1.n1t_1)){var e=getKClassFromExpression(i),r=this.m2a_1.n1t_1;throw new NoTransformationFoundException(this.l2a_1.n27(),e,r)}this.n2a_1=i,this.ac_1=10,this.zb_1=7;continue t;case 7:var s=this.n2a_1;return this.ac_1=10,complete(this.l2a_1.n27()),s;case 8:if(this.ac_1=9,this.cc_1 instanceof Error){var o=this.cc_1;throw cancel_0(this.l2a_1.n27(),"Receive failed",o),o}throw this.cc_1;case 9:this.ac_1=10;var u=this.cc_1;throw complete(this.l2a_1.n27()),u;case 10:throw this.cc_1;case 11:return this.ac_1=10,complete(this.l2a_1.n27()),Unit_instance}}catch(t){var a=t;if(10===this.ac_1)throw a;this.zb_1=this.ac_1,this.cc_1=a}},protoOf(HttpClientCall).am=function(){return this.n27().am()},protoOf(HttpClientCall).b2a=function(){return this.w2a().b2a()},protoOf(HttpClientCall).w2a=function(){var t=this.k27_1;if(null!=t)return t;throwUninitializedPropertyAccessException("request")},protoOf(HttpClientCall).n27=function(){var t=this.l27_1;if(null!=t)return t;throwUninitializedPropertyAccessException("response")},protoOf(HttpClientCall).s2a=function(){return this.m27_1},protoOf(HttpClientCall).t2a=function(t){return this.n27().x2a()},protoOf(HttpClientCall).y2a=function(t,n){var i=new $bodyNullableCOROUTINE$1(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpClientCall).toString=function(){return"HttpClientCall["+this.w2a().z2a()+", "+this.n27().a2b()+"]"},protoOf(HttpClientCall).o27=function(t){this.l27_1=t},protoOf(DoubleReceiveException).a6=function(){return this.b2b_1},protoOf(NoTransformationFoundException).a6=function(){return this.c2b_1},protoOf(SavedHttpCall).t2a=function(t){return ByteReadChannel_0(this.r2b_1)},protoOf(SavedHttpCall).s2a=function(){return this.s2b_1},protoOf(SavedHttpRequest).v2b=function(){return this.t2b_1},protoOf(SavedHttpRequest).b2a=function(){return this.u2b_1.b2a()},protoOf(SavedHttpRequest).am=function(){return this.u2b_1.am()},protoOf(SavedHttpRequest).s1z=function(){return this.u2b_1.s1z()},protoOf(SavedHttpRequest).w2b=function(){return this.u2b_1.w2b()},protoOf(SavedHttpRequest).z2a=function(){return this.u2b_1.z2a()},protoOf(SavedHttpResponse).v2b=function(){return this.x2b_1},protoOf(SavedHttpResponse).a2b=function(){return this.z2b_1},protoOf(SavedHttpResponse).g2c=function(){return this.a2c_1},protoOf(SavedHttpResponse).h2c=function(){return this.b2c_1},protoOf(SavedHttpResponse).i2c=function(){return this.c2c_1},protoOf(SavedHttpResponse).s1z=function(){return this.d2c_1},protoOf(SavedHttpResponse).am=function(){return this.e2c_1},protoOf(SavedHttpResponse).x2a=function(){return this.f2c_1},protoOf($saveCOROUTINE$3).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=this.l2b_1.n27().x2a().u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=readBytes(t);return new SavedHttpCall(this.l2b_1.i27_1,this.l2b_1.w2a(),this.l2b_1.n27(),n);case 2:throw this.cc_1}}catch(t){var i=t;if(2===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(ObservableContent$content$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(ObservableContent$content$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(ObservableContent$content$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=this.r2c_1.w2c_1.v24(this.s2c_1.by(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(ObservableContent$content$slambda).u2c=function(t,n){var i=new ObservableContent$content$slambda(this.r2c_1,n);return i.s2c_1=t,i},protoOf(ObservableContent).q24=function(){return this.w2c_1.q24()},protoOf(ObservableContent).r24=function(){return this.w2c_1.r24()},protoOf(ObservableContent).s1z=function(){return this.w2c_1.s1z()},protoOf(ObservableContent).t24=function(){return observable(this.z2c_1,this.x2c_1,this.r24(),this.y2c_1)},protoOf(HttpClientEngine$install$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpClientEngine$install$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpClientEngine$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=3;var n=new HttpRequestBuilder;n.l2e(this.e2e_1.x1s_1);var i=this.f2e_1;if(null==i){n.p28_1=NullBody_instance;var e,r=JsType_instance,s=PrimitiveClasses_getInstance().u6();try{e=createKType(PrimitiveClasses_getInstance().u6(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;e=null}n.m2e(typeInfoImpl(r,s,e))}else if(i instanceof OutgoingContent)n.p28_1=i,n.m2e(null);else{n.p28_1=i;var o,u=JsType_instance,a=PrimitiveClasses_getInstance().u6();try{o=createKType(PrimitiveClasses_getInstance().u6(),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;o=null}n.m2e(typeInfoImpl(u,a,o))}this.g2e_1=n,this.c2e_1.s26_1.e25(get_HttpRequestIsReadyForSending(),this.g2e_1);var h=this.g2e_1.o1d();if(h.r2d_1.h1o(get_CLIENT_CONFIG(),this.c2e_1.t26_1),this.h2e_1=h,validateHeaders(this.h2e_1),checkExtensions(this.d2e_1,this.h2e_1),this.zb_1=1,(t=executeWithinCallContext(this.d2e_1,this.h2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.i2e_1=t,this.j2e_1=HttpClientCall_init_$Create$(this.c2e_1,this.h2e_1,this.i2e_1),this.k2e_1=this.j2e_1.n27(),this.c2e_1.s26_1.e25(get_HttpResponseReceived(),this.k2e_1),get_job(this.k2e_1.am()).cn(HttpClientEngine$install$slambda$lambda(this.c2e_1,this.k2e_1)),this.zb_1=2,(t=this.e2e_1.b1s(this.j2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.cc_1}}catch(t){var _=t;if(3===this.ac_1)throw _;this.zb_1=this.ac_1,this.cc_1=_}},protoOf(HttpClientEngine$install$slambda).h27=function(t,n,i){var e=new HttpClientEngine$install$slambda(this.c2e_1,this.d2e_1,i);return e.e2e_1=t,e.f2e_1=n,e},protoOf(HttpClientEngine$executeWithinCallContext$slambda).y2e=function(t,n){var i=this.w1g(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpClientEngine$executeWithinCallContext$slambda).zc=function(t,n){return this.y2e(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpClientEngine$executeWithinCallContext$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,_get_closed__iwkfs1(this.v2e_1))throw new ClientEngineClosedException;if(this.zb_1=1,(t=this.v2e_1.z2e(this.w2e_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t;case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpClientEngine$executeWithinCallContext$slambda).w1g=function(t,n){var i=new HttpClientEngine$executeWithinCallContext$slambda(this.v2e_1,this.w2e_1,n);return i.x2e_1=t,i},protoOf($executeWithinCallContextCOROUTINE$4).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.zb_1=1,(t=createCallContext(this.i2d_1,this.j2d_1.q2d_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.k2d_1=t,this.l2d_1=this.k2d_1.jg(new KtorCallContextElement(this.k2d_1)),this.zb_1=2,(t=async(this.i2d_1,this.l2d_1,VOID,HttpClientEngine$executeWithinCallContext$slambda_0(this.i2d_1,this.j2d_1,null)).qo(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.cc_1}}catch(t){var n=t;if(3===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(ClientEngineClosedException).b6=function(){return this.a2f_1},protoOf(HttpClientEngineBase).f2f=function(){return this.d2f_1},protoOf(HttpClientEngineBase).am=function(){var t=this.e2f_1;return coroutineContext$factory(),t.h2()},protoOf(HttpClientEngineBase).z1i=function(){if(!this.c2f_1.atomicfu$compareAndSet(!1,!0))return Unit_instance;var t=this.am().hc(Key_instance),n=null!=t&&isInterface(t,CompletableJob)?t:null;if(null==n)return Unit_instance;n.es()},protoOf(KtorCallContextElement).g2=function(){return Companion_instance_1},protoOf(Plugin).g2=function(){return this.s2f_1},protoOf(Plugin).t2f=function(t){return new BodyProgress},protoOf(Plugin).r29=function(t){return this.t2f(t)},protoOf(Plugin).u2f=function(t,n){handle(t,n)},protoOf(Plugin).s29=function(t,n){return this.u2f(t instanceof BodyProgress?t:THROW_CCE(),n)},protoOf(BodyProgress$handle$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(BodyProgress$handle$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=2;var n,i=this.d2g_1.x1s_1.r28_1.f1o(get_UploadProgressListenerAttributeKey());if(null==i)return Unit_instance;n=i,this.f2g_1=n;var e=this.e2g_1;if(this.g2g_1=new ObservableContent(e instanceof OutgoingContent?e:THROW_CCE(),this.d2g_1.x1s_1.q28_1,this.f2g_1),this.zb_1=1,(t=this.d2g_1.b1s(this.g2g_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.cc_1}}catch(t){var r=t;if(2===this.ac_1)throw r;this.zb_1=this.ac_1,this.cc_1=r}},protoOf(BodyProgress$handle$slambda).h27=function(t,n,i){var e=new BodyProgress$handle$slambda(i);return e.d2g_1=t,e.e2g_1=n,e},protoOf(BodyProgress$handle$slambda_1).t2g=function(t,n,i){var e=this.u2g(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(BodyProgress$handle$slambda_1).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.t2g(e,n instanceof HttpResponse?n:THROW_CCE(),i)},protoOf(BodyProgress$handle$slambda_1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=2;var n,i=this.q2g_1.v2b().w2a().b2a().f1o(get_DownloadProgressListenerAttributeKey());if(null==i)return Unit_instance;if(n=i,this.r2g_1=n,this.s2g_1=withObservableDownload(this.q2g_1,this.r2g_1),this.zb_1=1,(t=this.p2g_1.b1s(this.s2g_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.cc_1}}catch(t){var e=t;if(2===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},protoOf(BodyProgress$handle$slambda_1).u2g=function(t,n,i){var e=new BodyProgress$handle$slambda_1(i);return e.p2g_1=t,e.q2g_1=n,e},protoOf(RedirectResponseException).a6=function(){return this.x2g_1},protoOf(ClientRequestException).a6=function(){return this.z2g_1},protoOf(ServerResponseException).a6=function(){return this.b2h_1},protoOf(addDefaultResponseValidation$lambda$slambda).s2h=function(t,n){var i=this.t2h(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(addDefaultResponseValidation$lambda$slambda).zc=function(t,n){return this.s2h(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(addDefaultResponseValidation$lambda$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=5,this.l2h_1=this.k2h_1.v2b().b2a().e1o(get_ExpectSuccessAttributeKey()),!this.l2h_1)return get_LOGGER().s1t("Skipping default response validation for "+this.k2h_1.v2b().w2a().z2a()),Unit_instance;if(this.m2h_1=this.k2h_1.a2b().n22_1,this.n2h_1=this.k2h_1.v2b(),this.m2h_1<300||this.n2h_1.b2a().g1o(get_ValidateMark()))return Unit_instance;if(this.zb_1=1,(t=save(this.n2h_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.o2h_1=t,this.o2h_1.b2a().h1o(get_ValidateMark(),Unit_instance),this.p2h_1=this.o2h_1,this.q2h_1=this.p2h_1.n27(),this.ac_1=3,this.zb_1=2,(t=bodyAsText(this.q2h_1,VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.r2h_1=t,this.ac_1=5,this.zb_1=4;continue t;case 3:if(this.ac_1=5,this.cc_1 instanceof MalformedInputException){this.cc_1,this.r2h_1="",this.zb_1=4;continue t}throw this.cc_1;case 4:this.ac_1=5;var n=this.r2h_1,i=this.m2h_1,e=300<=i&&i<=399?new RedirectResponseException(this.q2h_1,n):400<=i&&i<=499?new ClientRequestException(this.q2h_1,n):500<=i&&i<=599?new ServerResponseException(this.q2h_1,n):new ResponseException(this.q2h_1,n);throw get_LOGGER().s1t("Default response validation for "+this.k2h_1.v2b().w2a().z2a()+" failed with "+e),e;case 5:throw this.cc_1}}catch(t){var r=t;if(5===this.ac_1)throw r;this.zb_1=this.ac_1,this.cc_1=r}},protoOf(addDefaultResponseValidation$lambda$slambda).t2h=function(t,n){var i=new addDefaultResponseValidation$lambda$slambda(n);return i.k2h_1=t,i},protoOf(defaultTransformers$1$content$1).q24=function(){return this.z2h_1},protoOf(defaultTransformers$1$content$1).r24=function(){return this.a2i_1},protoOf(defaultTransformers$1$content$1).x24=function(){return this.b2i_1},protoOf(defaultTransformers$1$content$2).r24=function(){return this.d2i_1},protoOf(defaultTransformers$1$content$2).q24=function(){return this.e2i_1},protoOf(defaultTransformers$1$content$2).t24=function(){return this.f2i_1},protoOf(defaultTransformers$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(defaultTransformers$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=3,null==this.o2i_1.x1s_1.o28_1.y1o(HttpHeaders_getInstance().q1v_1)&&this.o2i_1.x1s_1.o28_1.k1q(HttpHeaders_getInstance().q1v_1,"*/*"),this.q2i_1=contentType(this.o2i_1.x1s_1);var n,i=this.p2i_1;if("string"==typeof i){var e=this.q2i_1;n=new TextContent(this.p2i_1,null==e?Text_getInstance().z1u_1:e)}else n=isByteArray(i)?new defaultTransformers$1$content$1(this.q2i_1,this.p2i_1):isInterface(i,ByteReadChannel)?new defaultTransformers$1$content$2(this.o2i_1,this.q2i_1,this.p2i_1):i instanceof OutgoingContent?this.p2i_1:platformRequestDefaultTransform(this.q2i_1,this.o2i_1.x1s_1,this.p2i_1);this.r2i_1=n;var r=this.r2i_1;if(null!=(null==r?null:r.q24())){if(this.o2i_1.x1s_1.o28_1.m1q(HttpHeaders_getInstance().i1w_1),get_LOGGER_0().s1t("Transformed with default transformers request body for "+this.o2i_1.x1s_1.m28_1+" from "+getKClassFromExpression(this.p2i_1)),this.zb_1=1,(t=this.o2i_1.b1s(this.r2i_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.zb_1=2;continue t;case 1:this.zb_1=2;continue t;case 2:return Unit_instance;case 3:throw this.cc_1}}catch(t){var s=t;if(3===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},protoOf(defaultTransformers$slambda).h27=function(t,n,i){var e=new defaultTransformers$slambda(i);return e.o2i_1=t,e.p2i_1=n,e},protoOf(defaultTransformers$slambda$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(defaultTransformers$slambda$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(defaultTransformers$slambda$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=5,this.zb_1=1;continue t;case 1:this.ac_1=4,this.ac_1=3,this.zb_1=2;var n=this.c2j_1.by();if(Companion_getInstance_0(),(t=copyTo(this.a2j_1,n,new Long(-1,2147483647),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.d2j_1=Unit_instance,this.ac_1=5,this.zb_1=6;continue t;case 3:if(this.ac_1=4,this.cc_1 instanceof CancellationException){var i=this.cc_1;throw cancel(this.b2j_1,i),i}if(this.cc_1 instanceof Error){var e=this.cc_1;throw cancel_0(this.b2j_1,"Receive failed",e),e}throw this.cc_1;case 4:this.ac_1=5;var r=this.cc_1;throw complete(this.b2j_1),r;case 5:throw this.cc_1;case 6:return this.ac_1=5,complete(this.b2j_1),Unit_instance}}catch(t){var s=t;if(5===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},protoOf(defaultTransformers$slambda$slambda).u2c=function(t,n){var i=new defaultTransformers$slambda$slambda(this.a2j_1,this.b2j_1,n);return i.c2j_1=t,i},protoOf(defaultTransformers$slambda_1).a28=function(t,n,i){var e=this.b28(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(defaultTransformers$slambda_1).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.a28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(defaultTransformers$slambda_1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=11,this.o2j_1=this.n2j_1.oe(),this.p2j_1=this.n2j_1.pe();var n=this.p2j_1;if(!isInterface(n,ByteReadChannel))return Unit_instance;if(this.q2j_1=this.m2j_1.x1s_1.n27(),this.r2j_1=this.o2j_1.n1t_1,this.r2j_1.equals(getKClass(Unit))){if(cancel_1(this.p2j_1),this.zb_1=9,(t=this.m2j_1.b1s(new HttpResponseContainer(this.o2j_1,Unit_instance),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.r2j_1.equals(PrimitiveClasses_getInstance().a7())){if(this.zb_1=7,(t=this.p2j_1.u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.r2j_1.equals(getKClass(ByteReadPacket))||this.r2j_1.equals(getKClass(Input))){if(this.zb_1=5,(t=this.p2j_1.u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.r2j_1.equals(PrimitiveClasses_getInstance().i7())){if(this.zb_1=3,(t=toByteArray(this.p2j_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.r2j_1.equals(getKClass(ByteReadChannel))){this.t2j_1=Job(this.q2j_1.am().hc(Key_instance));var i=this.q2j_1.am(),e=writer(this.m2j_1,i,VOID,defaultTransformers$slambda$slambda_0(this.p2j_1,this.q2j_1,null));if(e.cn(defaultTransformers$slambda$lambda(this.t2j_1)),this.u2j_1=e.by(),this.zb_1=2,(t=this.m2j_1.b1s(new HttpResponseContainer(this.o2j_1,this.u2j_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.r2j_1.equals(getKClass(HttpStatusCode))){if(cancel_1(this.p2j_1),this.zb_1=1,(t=this.m2j_1.b1s(new HttpResponseContainer(this.o2j_1,this.q2j_1.a2b()),this))===get_COROUTINE_SUSPENDED())return t;continue t}this.s2j_1=null,this.zb_1=10;continue t;case 1:case 2:case 4:case 6:case 8:case 9:this.s2j_1=t,this.zb_1=10;continue t;case 3:if(this.v2j_1=t,this.w2j_1=contentLength(this.q2j_1),this.x2j_1=!PlatformUtils_getInstance().t1p_1&&null==this.q2j_1.s1z().y1o(HttpHeaders_getInstance().d1w_1),this.y2j_1=!this.m2j_1.x1s_1.w2a().w2b().equals(Companion_getInstance_1().y1z_1),this.x2j_1&&this.y2j_1&&null!=this.w2j_1&&this.w2j_1.z9(new Long(0,0))>0&&this.v2j_1.length!==this.w2j_1.ia()){var r="Expected "+toString_0(this.w2j_1)+", actual "+this.v2j_1.length;throw IllegalStateException_init_$Create$(toString(r))}if(this.zb_1=4,(t=this.m2j_1.b1s(new HttpResponseContainer(this.o2j_1,this.v2j_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.z2j_1=t,this.a2k_1=new HttpResponseContainer(this.o2j_1,this.z2j_1),this.zb_1=6,(t=this.m2j_1.b1s(this.a2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:if(this.b2k_1=t,this.c2k_1=this.b2k_1.c1k(),this.d2k_1=toInt(this.c2k_1),this.e2k_1=new HttpResponseContainer(this.o2j_1,this.d2k_1),this.zb_1=8,(t=this.m2j_1.b1s(this.e2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 10:return null!=this.s2j_1&&get_LOGGER_0().s1t("Transformed with default transformers response body for "+this.m2j_1.x1s_1.w2a().z2a()+" to "+this.o2j_1.n1t_1),Unit_instance;case 11:throw this.cc_1}}catch(t){var s=t;if(11===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},protoOf(defaultTransformers$slambda_1).b28=function(t,n,i){var e=new defaultTransformers$slambda_1(i);return e.m2j_1=t,e.n2j_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpCallValidator$Companion$install$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=5,this.ac_1=3;var n=get_ExpectSuccessAttributeKey();if(this.r2k_1.x1s_1.r28_1.j1o(n,HttpCallValidator$Companion$install$slambda$lambda(this.q2k_1)),this.zb_1=1,(t=this.r2k_1.b1s(this.s2k_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ac_1=5,this.zb_1=2;continue t;case 2:return this.ac_1=5,Unit_instance;case 3:if(this.ac_1=5,this.cc_1 instanceof Error){if(this.t2k_1=this.cc_1,this.u2k_1=unwrapCancellationException(this.t2k_1),this.zb_1=4,(t=processException(this.q2k_1,this.u2k_1,HttpRequest(this.r2k_1.x1s_1),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.cc_1;case 4:throw this.u2k_1;case 5:throw this.cc_1}}catch(t){var i=t;if(5===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(HttpCallValidator$Companion$install$slambda).h27=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda(this.q2k_1,i);return e.r2k_1=t,e.s2k_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_1).a28=function(t,n,i){var e=this.b28(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpCallValidator$Companion$install$slambda_1).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.a28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=5,this.ac_1=3,this.zb_1=1,(t=this.e2l_1.b1s(this.f2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ac_1=5,this.zb_1=2;continue t;case 2:return this.ac_1=5,Unit_instance;case 3:if(this.ac_1=5,this.cc_1 instanceof Error){if(this.g2l_1=this.cc_1,this.h2l_1=unwrapCancellationException(this.g2l_1),this.zb_1=4,(t=processException(this.d2l_1,this.h2l_1,this.e2l_1.x1s_1.w2a(),this))===get_COROUTINE_SUSPENDED())return t;continue t}throw this.cc_1;case 4:throw this.h2l_1;case 5:throw this.cc_1}}catch(t){var n=t;if(5===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_1).b28=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_1(this.d2l_1,i);return e.e2l_1=t,e.f2l_1=n,e},protoOf(HttpCallValidator$Companion$install$slambda_3).u2l=function(t,n,i){var e=this.v2l(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpCallValidator$Companion$install$slambda_3).ti=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.u2l(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpCallValidator$Companion$install$slambda_3).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.zb_1=1,(t=this.r2l_1.p29(this.s2l_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.t2l_1=t,this.zb_1=2,(t=validateResponse(this.q2l_1,this.t2l_1.n27(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return this.t2l_1;case 3:throw this.cc_1}}catch(t){var n=t;if(3===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpCallValidator$Companion$install$slambda_3).v2l=function(t,n,i){var e=new HttpCallValidator$Companion$install$slambda_3(this.q2l_1,i);return e.r2l_1=t,e.s2l_1=n,e},protoOf(Config).x2h=function(t){this.u2h_1.s(t)},protoOf(Companion_1).g2=function(){return this.z2m_1},protoOf(Companion_1).a2n=function(t){var n=new Config;t(n);var i=n;return new HttpCallValidator(reversed(i.u2h_1),reversed(i.v2h_1),i.w2h_1)},protoOf(Companion_1).r29=function(t){return this.a2n(t)},protoOf(Companion_1).b2n=function(t,n){var i=Phases_getInstance().k2f_1;n.m26_1.b1t(i,HttpCallValidator$Companion$install$slambda_0(t,null));var e=new PipelinePhase("BeforeReceive");n.n26_1.a1t(Phases_getInstance_1().k29_1,e),n.n26_1.b1t(e,HttpCallValidator$Companion$install$slambda_2(t,null)),plugin(n,Plugin_getInstance_3()).e2n(HttpCallValidator$Companion$install$slambda_4(t,null))},protoOf(Companion_1).s29=function(t,n){return this.b2n(t instanceof HttpCallValidator?t:THROW_CCE(),n)},protoOf($validateResponseCOROUTINE$5).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=4,get_LOGGER_1().s1t("Validating response for request "+this.f2m_1.v2b().w2a().z2a()),this.g2m_1=this.e2m_1.f2k_1,this.h2m_1=this.g2m_1.v(),this.zb_1=1;continue t;case 1:if(!this.h2m_1.w()){this.zb_1=3;continue t}if(this.i2m_1=this.h2m_1.y(),this.zb_1=2,(t=this.i2m_1(this.f2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.zb_1=1;continue t;case 3:return Unit_instance;case 4:throw this.cc_1}}catch(t){var n=t;if(4===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf($processExceptionCOROUTINE$6).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6,get_LOGGER_1().s1t("Processing exception "+this.s2m_1+" for request "+this.t2m_1.z2a()),this.u2m_1=this.r2m_1.g2k_1,this.v2m_1=this.u2m_1.v(),this.zb_1=1;continue t;case 1:if(!this.v2m_1.w()){this.zb_1=5;continue t}if(this.w2m_1=this.v2m_1.y(),this.x2m_1=this.w2m_1,this.y2m_1=this.x2m_1,this.y2m_1 instanceof ExceptionHandlerWrapper){if(this.zb_1=3,(t=this.x2m_1.g2n_1(this.s2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.y2m_1 instanceof RequestExceptionHandlerWrapper){if(this.zb_1=2,(t=this.x2m_1.f2n_1(this.s2m_1,this.t2m_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.zb_1=4;continue t;case 2:case 3:this.zb_1=4;continue t;case 4:this.zb_1=1;continue t;case 5:return Unit_instance;case 6:throw this.cc_1}}catch(t){var n=t;if(6===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpRequest$1).v2b=function(){throw IllegalStateException_init_$Create$(toString("Call is not initialized"))},protoOf(HttpRequest$1).w2b=function(){return this.h2n_1},protoOf(HttpRequest$1).z2a=function(){return this.i2n_1},protoOf(HttpRequest$1).b2a=function(){return this.j2n_1},protoOf(HttpRequest$1).s1z=function(){return this.k2n_1},protoOf(HttpPlainText$Plugin$install$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpPlainText$Plugin$install$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.u2n_1.b2o(this.v2n_1.x1s_1),"string"!=typeof this.w2n_1)return Unit_instance;if(this.x2n_1=contentType(this.v2n_1.x1s_1),null!=this.x2n_1&&this.x2n_1.j1v_1!==Text_getInstance().z1u_1.j1v_1)return Unit_instance;if(this.zb_1=1,(t=this.v2n_1.b1s(wrapContent(this.u2n_1,this.v2n_1.x1s_1,this.w2n_1,this.x2n_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpPlainText$Plugin$install$slambda).h27=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda(this.u2n_1,i);return e.v2n_1=t,e.w2n_1=n,e},protoOf(HttpPlainText$Plugin$install$slambda_1).a28=function(t,n,i){var e=this.b28(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpPlainText$Plugin$install$slambda_1).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.a28(e,n instanceof HttpResponseContainer?n:THROW_CCE(),i)},protoOf(HttpPlainText$Plugin$install$slambda_1).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:var n;if(this.ac_1=3,this.n2o_1=this.m2o_1.oe(),this.o2o_1=this.m2o_1.pe(),this.n2o_1.n1t_1.equals(PrimitiveClasses_getInstance().e7())){var i=this.o2o_1;n=!isInterface(i,ByteReadChannel)}else n=!0;if(n)return Unit_instance;if(this.zb_1=1,(t=this.o2o_1.u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.p2o_1=t,this.q2o_1=this.k2o_1.r2o(this.l2o_1.x1s_1,this.p2o_1),this.zb_1=2,(t=this.l2o_1.b1s(new HttpResponseContainer(this.n2o_1,this.q2o_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.cc_1}}catch(t){var e=t;if(3===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},protoOf(HttpPlainText$Plugin$install$slambda_1).b28=function(t,n,i){var e=new HttpPlainText$Plugin$install$slambda_1(this.k2o_1,i);return e.l2o_1=t,e.m2o_1=n,e},protoOf(Plugin_0).g2=function(){return this.w2o_1},protoOf(Plugin_0).x2o=function(t){var n=new Config_0;t(n);var i=n;return new HttpPlainText(i.s2o_1,i.t2o_1,i.u2o_1,i.v2o_1)},protoOf(Plugin_0).r29=function(t){return this.x2o(t)},protoOf(Plugin_0).y2o=function(t,n){var i=Phases_getInstance().n2f_1;n.m26_1.b1t(i,HttpPlainText$Plugin$install$slambda_0(t,null));var e=Phases_getInstance_1().m29_1;n.n26_1.b1t(e,HttpPlainText$Plugin$install$slambda_2(t,null))},protoOf(Plugin_0).s29=function(t,n){return this.y2o(t instanceof HttpPlainText?t:THROW_CCE(),n)},protoOf(sam$kotlin_Comparator$0).l9=function(t,n){return this.z2o_1(t,n)},protoOf(sam$kotlin_Comparator$0).compare=function(t,n){return this.l9(t,n)},protoOf(HttpPlainText).r2o=function(t,n){var i=charset_0(t.n27()),e=null==i?this.y2n_1:i;return get_LOGGER_2().s1t("Reading response body for "+t.w2a().z2a()+" as String with charset "+e),readText(n,e)},protoOf(HttpPlainText).b2o=function(t){if(null!=t.o28_1.y1o(HttpHeaders_getInstance().r1v_1))return Unit_instance;get_LOGGER_2().s1t("Adding Accept-Charset="+this.a2o_1+" to "+t.m28_1),t.o28_1.i1q(HttpHeaders_getInstance().r1v_1,this.a2o_1)},protoOf(HttpRedirect$Plugin$install$slambda).u2l=function(t,n,i){var e=this.v2l(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpRedirect$Plugin$install$slambda).ti=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.u2l(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpRedirect$Plugin$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.zb_1=1,(t=this.d2q_1.p29(this.e2q_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.f2q_1=t,this.b2q_1.g2q_1&&!get_ALLOWED_FOR_REDIRECT().r(this.f2q_1.w2a().w2b()))return this.f2q_1;if(this.zb_1=2,(t=handleCall(this.d2q_1,Plugin_getInstance_1(),this.e2q_1,this.f2q_1,this.b2q_1.h2q_1,this.c2q_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t;case 3:throw this.cc_1}}catch(t){var n=t;if(3===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpRedirect$Plugin$install$slambda).v2l=function(t,n,i){var e=new HttpRedirect$Plugin$install$slambda(this.b2q_1,this.c2q_1,i);return e.d2q_1=t,e.e2q_1=n,e},protoOf($handleCallCOROUTINE$7).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,!isRedirect(this.l2p_1.n27().a2b()))return this.l2p_1;this.o2p_1=this.l2p_1,this.p2p_1=this.k2p_1,this.q2p_1=this.l2p_1.w2a().z2a().f23_1,this.r2p_1=get_authority(this.l2p_1.w2a().z2a()),this.zb_1=1;continue t;case 1:this.n2p_1.s26_1.e25(this.i2p_1.j2q_1,this.o2p_1.n27()),this.s2p_1=this.o2p_1.n27().s1z().y1o(HttpHeaders_getInstance().e1x_1),get_LOGGER_3().s1t("Received redirect response to "+this.s2p_1+" for request "+this.k2p_1.m28_1);var n=new HttpRequestBuilder;n.l2e(this.p2p_1),n.m28_1.c23_1.b1();var i=this.s2p_1;if(null==i||takeFrom(n.m28_1,i),!this.m2p_1&&isSecure(this.q2p_1)&&!isSecure(n.m28_1.t22_1))return get_LOGGER_3().s1t("Can not redirect "+this.k2p_1.m28_1+" because of security downgrade"),this.o2p_1;if(this.r2p_1!==get_authority_0(n.m28_1)&&(n.o28_1.m1q(HttpHeaders_getInstance().z1v_1),get_LOGGER_3().s1t("Removing Authorization header from redirect for "+this.k2p_1.m28_1)),this.p2p_1=n,this.zb_1=2,(t=this.j2p_1.p29(this.p2p_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.o2p_1=t,!isRedirect(this.o2p_1.n27().a2b()))return this.o2p_1;this.zb_1=1;continue t;case 3:throw this.cc_1;case 4:return Unit_instance}}catch(t){var e=t;if(3===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},protoOf(Plugin_1).g2=function(){return this.i2q_1},protoOf(Plugin_1).m2q=function(t){var n=new Config_1;t(n);var i=n;return new HttpRedirect(i.k2q_1,i.l2q_1)},protoOf(Plugin_1).r29=function(t){return this.m2q(t)},protoOf(Plugin_1).n2q=function(t,n){plugin(n,Plugin_getInstance_3()).e2n(HttpRedirect$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_1).s29=function(t,n){return this.n2q(t instanceof HttpRedirect?t:THROW_CCE(),n)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpRequestLifecycle$Plugin$install$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpRequestLifecycle$Plugin$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6,this.z2q_1=SupervisorJob(this.x2q_1.x1s_1.q28_1),attachToClientEngineJob(this.z2q_1,ensureNotNull(this.w2q_1.l26_1.hc(Key_instance))),this.zb_1=1;continue t;case 1:if(this.ac_1=4,this.ac_1=3,this.x2q_1.x1s_1.q28_1=this.z2q_1,this.zb_1=2,(t=this.x2q_1.c1s(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.a2r_1=Unit_instance,this.ac_1=6,this.zb_1=5;continue t;case 3:if(this.ac_1=4,this.cc_1 instanceof Error){var n=this.cc_1;throw this.z2q_1.ds(n),n}throw this.cc_1;case 4:this.ac_1=6;var i=this.cc_1;throw this.z2q_1.es(),i;case 5:return this.ac_1=6,this.z2q_1.es(),Unit_instance;case 6:throw this.cc_1}}catch(t){var e=t;if(6===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},protoOf(HttpRequestLifecycle$Plugin$install$slambda).h27=function(t,n,i){var e=new HttpRequestLifecycle$Plugin$install$slambda(this.w2q_1,i);return e.x2q_1=t,e.y2q_1=n,e},protoOf(Plugin_2).g2=function(){return this.b2r_1},protoOf(Plugin_2).t2f=function(t){return new HttpRequestLifecycle},protoOf(Plugin_2).r29=function(t){return this.t2f(t)},protoOf(Plugin_2).c2r=function(t,n){var i=Phases_getInstance().k2f_1;n.m26_1.b1t(i,HttpRequestLifecycle$Plugin$install$slambda_0(n,null))},protoOf(Plugin_2).s29=function(t,n){return this.c2r(t instanceof HttpRequestLifecycle?t:THROW_CCE(),n)},protoOf(HttpSend$Plugin$install$slambda).g27=function(t,n,i){var e=this.h27(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpSend$Plugin$install$slambda).ti=function(t,n,i){var e=t instanceof PipelineContext?t:THROW_CCE();return this.g27(e,null!=n?n:THROW_CCE(),i)},protoOf(HttpSend$Plugin$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,!(this.o2r_1 instanceof OutgoingContent)){var n=trimMargin("\n|Fail to prepare request body for sending. \n|The body type is: "+getKClassFromExpression(this.o2r_1)+", with Content-Type: "+contentType(this.n2r_1.x1s_1)+".\n|\n|If you expect serialized body, please check that you have installed the corresponding plugin(like `ContentNegotiation`) and set `Content-Type` header.");throw IllegalStateException_init_$Create$(toString(n))}var i=this.n2r_1.x1s_1,e=this.o2r_1;if(null==e){i.p28_1=NullBody_instance;var r,s=JsType_instance,o=getKClass(OutgoingContent);try{r=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;r=null}i.m2e(typeInfoImpl(s,o,r))}else if(e instanceof OutgoingContent)i.p28_1=e,i.m2e(null);else{i.p28_1=e;var u,a=JsType_instance,h=getKClass(OutgoingContent);try{u=createKType(getKClass(OutgoingContent),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;u=null}i.m2e(typeInfoImpl(a,h,u))}this.p2r_1=new DefaultSender(this.l2r_1.c2n_1,this.m2r_1),this.q2r_1=this.p2r_1;for(var _=downTo(get_lastIndex(this.l2r_1.d2n_1),0).v();_.w();){var l=_.y(),c=this.l2r_1.d2n_1.h1(l);this.q2r_1=new InterceptedSender(c,this.q2r_1)}if(this.zb_1=1,(t=this.q2r_1.p29(this.n2r_1.x1s_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.r2r_1=t,this.zb_1=2,(t=this.n2r_1.b1s(this.r2r_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return Unit_instance;case 3:throw this.cc_1}}catch(t){var f=t;if(3===this.ac_1)throw f;this.zb_1=this.ac_1,this.cc_1=f}},protoOf(HttpSend$Plugin$install$slambda).h27=function(t,n,i){var e=new HttpSend$Plugin$install$slambda(this.l2r_1,this.m2r_1,i);return e.n2r_1=t,e.o2r_1=n,e},protoOf($executeCOROUTINE$8).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=2;var n=this.a2s_1.f2s_1;if(null==n||cancel(n),this.a2s_1.e2s_1>=this.a2s_1.c2s_1)throw new SendCountExceedException("Max send count "+this.a2s_1.c2s_1+" exceeded. Consider increasing the property maxSendCount if more is required.");var i=this.a2s_1;if(i.e2s_1=i.e2s_1+1|0,this.zb_1=1,(t=this.a2s_1.d2s_1.o26_1.w1s(this.b2s_1,this.b2s_1.p28_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var e=t instanceof HttpClientCall?t:null;if(null==e){var r="Failed to execute send pipeline. Expected [HttpClientCall], but received "+toString(t);throw IllegalStateException_init_$Create$(toString(r))}var s=e;return this.a2s_1.f2s_1=s,s;case 2:throw this.cc_1}}catch(t){var o=t;if(2===this.ac_1)throw o;this.zb_1=this.ac_1,this.cc_1=o}},protoOf(Plugin_3).g2=function(){return this.h2s_1},protoOf(Plugin_3).i2s=function(t){var n=new Config_2;return t(n),new HttpSend(n.g2s_1)},protoOf(Plugin_3).r29=function(t){return this.i2s(t)},protoOf(Plugin_3).j2s=function(t,n){var i=Phases_getInstance().o2f_1;n.m26_1.b1t(i,HttpSend$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_3).s29=function(t,n){return this.j2s(t instanceof HttpSend?t:THROW_CCE(),n)},protoOf(InterceptedSender).p29=function(t,n){return this.k2s_1(this.l2s_1,t,n)},protoOf(DefaultSender).p29=function(t,n){var i=new $executeCOROUTINE$8(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpSend).e2n=function(t){this.d2n_1.s(t)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpTimeout$Plugin$install$slambda$slambda).zc=function(t,n){return this.v1g(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(HttpTimeout$Plugin$install$slambda$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=delay(this.b2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var n=HttpRequestTimeoutException_init_$Create$(this.c2t_1);return get_LOGGER_5().s1t("Request timeout: "+this.c2t_1.m28_1),cancel_2(this.d2t_1,ensureNotNull(n.message),n),Unit_instance;case 2:throw this.cc_1}}catch(t){var i=t;if(2===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(HttpTimeout$Plugin$install$slambda$slambda).w1g=function(t,n){var i=new HttpTimeout$Plugin$install$slambda$slambda(this.b2t_1,this.c2t_1,this.d2t_1,n);return i.e2t_1=t,i},protoOf(HttpTimeout$Plugin$install$slambda).u2l=function(t,n,i){var e=this.v2l(t,n,i);return e.bc_1=Unit_instance,e.cc_1=null,e.mc()},protoOf(HttpTimeout$Plugin$install$slambda).ti=function(t,n,i){var e=null!=t&&isInterface(t,Sender)?t:THROW_CCE();return this.u2l(e,n instanceof HttpRequestBuilder?n:THROW_CCE(),i)},protoOf(HttpTimeout$Plugin$install$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=4,this.r2t_1=isWebsocket(this.q2t_1.m28_1.t22_1),this.r2t_1||this.q2t_1.p28_1 instanceof ClientUpgradeContent){if(this.zb_1=3,(t=this.p2t_1.p29(this.q2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.zb_1=1;continue t;case 1:this.s2t_1=this.q2t_1.t2t(Plugin_getInstance_4()),null==this.s2t_1&&hasNotNullTimeouts(this.n2t_1)&&(this.s2t_1=HttpTimeoutCapabilityConfiguration_init_$Create$(),this.q2t_1.u2t(Plugin_getInstance_4(),this.s2t_1));var n=this.s2t_1;if(null==n);else n:do{var i=n.v2t();n.q2s(null==i?this.n2t_1.x2t_1:i);var e=n.z2t();n.r2s(null==e?this.n2t_1.y2t_1:e);var r=n.a2u();n.p2s(null==r?this.n2t_1.w2t_1:r);var s=n.a2u(),o=null==s?this.n2t_1.w2t_1:s;if(null==o||equals(o,new Long(-1,2147483647)))break n;var u=this.q2t_1.q28_1,a=launch(this.o2t_1,VOID,VOID,HttpTimeout$Plugin$install$slambda$slambda_0(o,this.q2t_1,u,null));this.q2t_1.q28_1.cn(HttpTimeout$Plugin$install$slambda$lambda(a))}while(0);if(this.zb_1=2,(t=this.p2t_1.p29(this.q2t_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:case 3:return t;case 4:throw this.cc_1}}catch(t){var h=t;if(4===this.ac_1)throw h;this.zb_1=this.ac_1,this.cc_1=h}},protoOf(HttpTimeout$Plugin$install$slambda).v2l=function(t,n,i){var e=new HttpTimeout$Plugin$install$slambda(this.n2t_1,this.o2t_1,i);return e.p2t_1=t,e.q2t_1=n,e},protoOf(HttpTimeoutCapabilityConfiguration).p2s=function(t){this.m2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).a2u=function(){return this.m2s_1},protoOf(HttpTimeoutCapabilityConfiguration).q2s=function(t){this.n2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).v2t=function(){return this.n2s_1},protoOf(HttpTimeoutCapabilityConfiguration).r2s=function(t){this.o2s_1=checkTimeoutValue(this,t)},protoOf(HttpTimeoutCapabilityConfiguration).z2t=function(){return this.o2s_1},protoOf(HttpTimeoutCapabilityConfiguration).o1d=function(){return new HttpTimeout(this.a2u(),this.v2t(),this.z2t())},protoOf(HttpTimeoutCapabilityConfiguration).equals=function(t){return!!(this===t||null!=t&&getKClassFromExpression(this).equals(getKClassFromExpression(t))&&(t instanceof HttpTimeoutCapabilityConfiguration||THROW_CCE(),equals(this.m2s_1,t.m2s_1)&&equals(this.n2s_1,t.n2s_1)&&equals(this.o2s_1,t.o2s_1)))},protoOf(HttpTimeoutCapabilityConfiguration).hashCode=function(){var t=this.m2s_1,n=null==t?null:t.hashCode(),i=null==n?0:n,e=imul(31,i),r=this.n2s_1,s=null==r?null:r.hashCode(),o=imul(31,i=e+(null==s?0:s)|0),u=this.o2s_1,a=null==u?null:u.hashCode();return o+(null==a?0:a)|0},protoOf(Plugin_4).g2=function(){return this.b2u_1},protoOf(Plugin_4).d2u=function(t){var n=HttpTimeoutCapabilityConfiguration_init_$Create$();return t(n),n.o1d()},protoOf(Plugin_4).r29=function(t){return this.d2u(t)},protoOf(Plugin_4).e2u=function(t,n){plugin(n,Plugin_getInstance_3()).e2n(HttpTimeout$Plugin$install$slambda_0(t,n,null))},protoOf(Plugin_4).s29=function(t,n){return this.e2u(t instanceof HttpTimeout?t:THROW_CCE(),n)},protoOf(DelegatedRequest).v2b=function(){return this.f2u_1},protoOf(DelegatedRequest).b2a=function(){return this.g2u_1.b2a()},protoOf(DelegatedRequest).am=function(){return this.g2u_1.am()},protoOf(DelegatedRequest).s1z=function(){return this.g2u_1.s1z()},protoOf(DelegatedRequest).w2b=function(){return this.g2u_1.w2b()},protoOf(DelegatedRequest).z2a=function(){return this.g2u_1.z2a()},protoOf(DelegatedResponse).v2b=function(){return this.h2u_1},protoOf(DelegatedResponse).x2a=function(){return this.i2u_1},protoOf(DelegatedResponse).am=function(){return this.k2u_1},protoOf(DelegatedResponse).a2b=function(){return this.j2u_1.a2b()},protoOf(DelegatedResponse).g2c=function(){return this.j2u_1.g2c()},protoOf(DelegatedResponse).h2c=function(){return this.j2u_1.h2c()},protoOf(DelegatedResponse).i2c=function(){return this.j2u_1.i2c()},protoOf(DelegatedResponse).s1z=function(){return this.j2u_1.s1z()},protoOf(WebSocketCapability).toString=function(){return"WebSocketCapability"},protoOf(DefaultHttpRequest).v2b=function(){return this.l2u_1},protoOf(DefaultHttpRequest).am=function(){return this.v2b().am()},protoOf(DefaultHttpRequest).w2b=function(){return this.m2u_1},protoOf(DefaultHttpRequest).z2a=function(){return this.n2u_1},protoOf(DefaultHttpRequest).s1z=function(){return this.p2u_1},protoOf(DefaultHttpRequest).b2a=function(){return this.q2u_1},protoOf(HttpRequestBuilder).s1z=function(){return this.o28_1},protoOf(HttpRequestBuilder).m2e=function(t){null!=t?this.r28_1.h1o(get_BodyTypeAttributeKey(),t):this.r28_1.i1o(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).r2u=function(){return this.r28_1.f1o(get_BodyTypeAttributeKey())},protoOf(HttpRequestBuilder).o1d=function(){var t=this.m28_1.o1d(),n=this.n28_1,i=this.o28_1.o1d(),e=this.p28_1,r=e instanceof OutgoingContent?e:null;if(null==r){var s="No request transformation found: "+toString(this.p28_1);throw IllegalStateException_init_$Create$(toString(s))}return new HttpRequestData(t,n,i,r,this.q28_1,this.r28_1)},protoOf(HttpRequestBuilder).l2e=function(t){return this.q28_1=t.q28_1,this.s2u(t)},protoOf(HttpRequestBuilder).s2u=function(t){return this.n28_1=t.n28_1,this.p28_1=t.p28_1,this.m2e(t.r2u()),takeFrom_0(this.m28_1,t.m28_1),this.m28_1.a23_1=this.m28_1.a23_1,appendAll(this.o28_1,t.o28_1),putAll(this.r28_1,t.r28_1),this},protoOf(HttpRequestBuilder).u2t=function(t,n){var i=get_ENGINE_CAPABILITIES_KEY();this.r28_1.j1o(i,HttpRequestBuilder$setCapability$lambda).e2(t,n)},protoOf(HttpRequestBuilder).t2t=function(t){var n=this.r28_1.f1o(get_ENGINE_CAPABILITIES_KEY()),i=null==n?null:n.o2(t);return null==i||null!=i?i:THROW_CCE()},protoOf(HttpRequestData).toString=function(){return"HttpRequestData(url="+this.m2d_1+", method="+this.n2d_1+")"},protoOf(HttpResponseData).toString=function(){return"HttpResponseData=(statusCode="+this.u29_1+")"},protoOf(HttpRequestPipeline).v1s=function(){return this.a2v_1},protoOf(HttpSendPipeline).v1s=function(){return this.i2v_1},protoOf(DefaultHttpResponse).v2b=function(){return this.j2v_1},protoOf(DefaultHttpResponse).am=function(){return this.k2v_1},protoOf(DefaultHttpResponse).a2b=function(){return this.l2v_1},protoOf(DefaultHttpResponse).g2c=function(){return this.m2v_1},protoOf(DefaultHttpResponse).h2c=function(){return this.n2v_1},protoOf(DefaultHttpResponse).i2c=function(){return this.o2v_1},protoOf(DefaultHttpResponse).x2a=function(){return this.p2v_1},protoOf(DefaultHttpResponse).s1z=function(){return this.q2v_1},protoOf(HttpResponse).toString=function(){return"HttpResponse["+get_request(this).z2a()+", "+this.a2b()+"]"},protoOf($bodyAsTextCOROUTINE$13).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=2;var n=charset_0(this.z2v_1);this.b2w_1=null==n?this.a2w_1:n,this.c2w_1=this.b2w_1.o1k(),this.d2w_1=this.z2v_1,this.zb_1=1;var i,e=this.d2w_1.v2b(),r=JsType_instance,s=getKClass(ByteReadPacket);try{i=createKType(getKClass(ByteReadPacket),arrayOf([]),!1)}catch(t){if(!(t instanceof Error))throw t;i=null}if((t=e.y2a(typeInfoImpl(r,s,i),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:var o=t instanceof ByteReadPacket?t:THROW_CCE();return decode(this.c2w_1,o);case 2:throw this.cc_1}}catch(t){var u=t;if(2===this.ac_1)throw u;this.zb_1=this.ac_1,this.cc_1=u}},protoOf(HttpResponsePipeline).v1s=function(){return this.l2w_1},protoOf(HttpReceivePipeline).v1s=function(){return this.t2w_1},protoOf(HttpResponseContainer).oe=function(){return this.u2a_1},protoOf(HttpResponseContainer).pe=function(){return this.v2a_1},protoOf(HttpResponseContainer).toString=function(){return"HttpResponseContainer(expectedType="+this.u2a_1+", response="+toString(this.v2a_1)+")"},protoOf(HttpResponseContainer).hashCode=function(){var t=this.u2a_1.hashCode();return imul(t,31)+hashCode(this.v2a_1)|0},protoOf(HttpResponseContainer).equals=function(t){if(this===t)return!0;if(!(t instanceof HttpResponseContainer))return!1;var n=t instanceof HttpResponseContainer?t:THROW_CCE();return!!this.u2a_1.equals(n.u2a_1)&&!!equals(this.v2a_1,n.v2a_1)},protoOf(HttpStatement$execute$slambda).f2x=function(t,n){var i=this.t2h(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpStatement$execute$slambda).zc=function(t,n){return this.f2x(t instanceof HttpResponse?t:THROW_CCE(),n)},protoOf(HttpStatement$execute$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=save(this.e2x_1.v2b(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return t.n27();case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(HttpStatement$execute$slambda).t2h=function(t,n){var i=new HttpStatement$execute$slambda(n);return i.e2x_1=t,i},protoOf($executeCOROUTINE$14).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=13,this.zb_1=1;continue t;case 1:if(this.ac_1=12,this.zb_1=2,(t=this.o2x_1.v2x(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:this.r2x_1=t,this.zb_1=3;continue t;case 3:this.zb_1=4;continue t;case 4:if(this.ac_1=10,this.zb_1=5,(t=this.p2x_1(this.r2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:this.s2x_1=t,this.zb_1=6;continue t;case 6:if(this.t2x_1=this.s2x_1,this.ac_1=12,this.zb_1=7,(t=this.o2x_1.w2x(this.r2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:return this.t2x_1;case 8:if(this.ac_1=12,this.zb_1=9,(t=this.o2x_1.w2x(this.r2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 9:this.q2x_1=Unit_instance,this.ac_1=13,this.zb_1=15;continue t;case 10:if(this.ac_1=12,this.u2x_1=this.cc_1,this.zb_1=11,(t=this.o2x_1.w2x(this.r2x_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 11:throw this.u2x_1;case 12:if(this.ac_1=13,this.cc_1 instanceof CancellationException)throw unwrapCancellationException(this.cc_1);throw this.cc_1;case 13:throw this.cc_1;case 14:this.ac_1=13,this.zb_1=15;continue t;case 15:return this.q2x_1}}catch(t){var n=t;if(13===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf($executeUnsafeCOROUTINE$15).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=4,this.zb_1=1;continue t;case 1:if(this.ac_1=3,this.h2y_1=(new HttpRequestBuilder).l2e(this.f2y_1.u2w_1),this.zb_1=2,(t=this.f2y_1.v2w_1.p29(this.h2y_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:return t.n27();case 3:if(this.ac_1=4,this.cc_1 instanceof CancellationException)throw unwrapCancellationException(this.cc_1);throw this.cc_1;case 4:throw this.cc_1;case 5:this.ac_1=4,this.zb_1=6;continue t;case 6:return this.g2y_1}}catch(t){var n=t;if(4===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf($cleanupCOROUTINE$16).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=4;var n=ensureNotNull(this.r2y_1.am().hc(Key_instance));this.s2y_1=isInterface(n,CompletableJob)?n:THROW_CCE(),this.t2y_1=this.s2y_1,this.u2y_1=this.t2y_1,this.u2y_1.es(),this.ac_1=1,cancel_1(this.r2y_1.x2a()),this.ac_1=4,this.zb_1=2;continue t;case 1:if(this.ac_1=4,this.cc_1 instanceof Error){this.v2y_1=this.cc_1,this.zb_1=2;continue t}throw this.cc_1;case 2:if(this.ac_1=4,this.zb_1=3,(t=this.u2y_1.fs(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:return Unit_instance;case 4:throw this.cc_1}}catch(t){var i=t;if(4===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(HttpStatement).w2y=function(t,n){var i=new $executeCOROUTINE$14(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpStatement).x2y=function(t){return this.w2y(HttpStatement$execute$slambda_0(null),t)},protoOf(HttpStatement).v2x=function(t){var n=new $executeUnsafeCOROUTINE$15(this,t);return n.bc_1=Unit_instance,n.cc_1=null,n.mc()},protoOf(HttpStatement).w2x=function(t,n){var i=new $cleanupCOROUTINE$16(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(HttpStatement).toString=function(){return"HttpStatement["+this.u2w_1.m28_1+"]"},protoOf(observable$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(observable$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(observable$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=15,this.zb_1=1;continue t;case 1:this.l2z_1=get_ByteArrayPool(),this.m2z_1=this.l2z_1.x1i(),this.zb_1=2;continue t;case 2:this.zb_1=3;continue t;case 3:this.ac_1=14,this.o2z_1=this.m2z_1;var n=this.g2z_1;this.p2z_1=null==n?new Long(-1,-1):n,this.q2z_1=new Long(0,0),this.zb_1=4;continue t;case 4:if(this.h2z_1.o1a()){this.zb_1=8;continue t}if(this.zb_1=5,(t=readAvailable(this.h2z_1,this.o2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(this.r2z_1=t,this.zb_1=6,(t=this.j2z_1.by().s1f(this.o2z_1,0,this.r2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 6:var i=this.q2z_1,e=this.r2z_1;if(this.q2z_1=i.db(toLong(e)),this.zb_1=7,(t=this.i2z_1(this.q2z_1,this.p2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 7:this.zb_1=4;continue t;case 8:if(this.s2z_1=this.h2z_1.y19(),this.j2z_1.by().o11(this.s2z_1),null==this.s2z_1&&this.q2z_1.equals(new Long(0,0))){if(this.zb_1=9,(t=this.i2z_1(this.q2z_1,this.p2z_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.zb_1=10;continue t;case 9:this.zb_1=10;continue t;case 10:this.n2z_1=Unit_instance,this.ac_1=15,this.zb_1=11;continue t;case 11:this.ac_1=15,this.l2z_1.y1i(this.m2z_1),this.k2z_1=Unit_instance,this.zb_1=13;continue t;case 12:this.ac_1=15,this.l2z_1.y1i(this.m2z_1),this.zb_1=13;continue t;case 13:return Unit_instance;case 14:this.ac_1=15;var r=this.cc_1;throw this.l2z_1.y1i(this.m2z_1),r;case 15:throw this.cc_1}}catch(t){var s=t;if(15===this.ac_1)throw s;this.zb_1=this.ac_1,this.cc_1=s}},protoOf(observable$slambda).u2c=function(t,n){var i=new observable$slambda(this.g2z_1,this.h2z_1,this.i2z_1,n);return i.j2z_1=t,i},protoOf(EmptyContent).r24=function(){return this.w2z_1},protoOf(EmptyContent).toString=function(){return"EmptyContent"},protoOf(Js).x2z=function(t){var n=new HttpClientEngineConfig;return t(n),new JsClientEngine(n)},protoOf(Js).q29=function(t){return this.x2z(t)},protoOf($executeCOROUTINE$17).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=6,this.zb_1=1,(t=callContext(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:if(this.w30_1=t,this.x30_1=this.v30_1.r2d_1.e1o(get_CLIENT_CONFIG()),isUpgradeRequest(this.v30_1)){if(this.zb_1=5,(t=executeWebSocketRequest(this.u30_1,this.v30_1,this.w30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.zb_1=2;continue t;case 2:if(this.y30_1=GMTDate(),this.zb_1=3,(t=toRaw(this.v30_1,this.x30_1,this.w30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:if(this.z30_1=t,this.zb_1=4,(t=commonFetch(this.v30_1.m2d_1.toString(),this.z30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:var n=t,i=new HttpStatusCode(n.status,n.statusText),e=mapToKtor(n.headers),r=Companion_getInstance_3().d20_1,s=readBody(CoroutineScope_0(this.w30_1),n);return new HttpResponseData(i,this.y30_1,e,r,s,this.w30_1);case 5:return t;case 6:throw this.cc_1}}catch(t){var o=t;if(6===this.ac_1)throw o;this.zb_1=this.ac_1,this.cc_1=o}},protoOf($executeWebSocketRequestCOROUTINE$18).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=4,this.j30_1=GMTDate(),this.k30_1=this.h30_1.m2d_1.toString(),this.l30_1=createWebSocket(this.g30_1,this.k30_1,this.h30_1.o2d_1),this.ac_1=2,this.zb_1=1,(t=awaitConnection(this.l30_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:this.ac_1=4,this.zb_1=3;continue t;case 2:if(this.ac_1=4,this.cc_1 instanceof Error){var n=this.cc_1;throw cancel_3(this.i30_1,CancellationException_init_$Create$_0("Failed to connect to "+this.k30_1,n)),n}throw this.cc_1;case 3:this.ac_1=4;var i=new JsWebSocketSession(this.i30_1,this.l30_1);return new HttpResponseData(Companion_getInstance_2().l20_1,this.j30_1,Companion_getInstance_4().n1v_1,Companion_getInstance_3().d20_1,i,this.i30_1);case 4:throw this.cc_1}}catch(t){var e=t;if(4===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},protoOf(JsClientEngine).a29=function(){return this.e31_1},protoOf(JsClientEngine).t2d=function(){return this.f31_1},protoOf(JsClientEngine).z2e=function(t,n){var i=new $executeCOROUTINE$17(this,t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(toRaw$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(toRaw$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(toRaw$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=2,this.zb_1=1,(t=this.d32_1.v24(this.e32_1.by(),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 1:return Unit_instance;case 2:throw this.cc_1}}catch(t){var n=t;if(2===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},protoOf(toRaw$slambda).u2c=function(t,n){var i=new toRaw$slambda(this.d32_1,n);return i.e32_1=t,i},protoOf($toRawCOROUTINE$19).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=4,this.s31_1={},mergeHeaders(this.p31_1.o2d_1,this.p31_1.p2d_1,toRaw$lambda(this.s31_1)),this.t31_1=this.p31_1.p2d_1,this.t31_1 instanceof ByteArrayContent){this.u31_1=this.t31_1.x24(),this.zb_1=3;continue t}if(this.t31_1 instanceof ReadChannelContent){if(this.zb_1=2,(t=this.t31_1.t24().u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}if(this.t31_1 instanceof WriteChannelContent){if(this.zb_1=1,(t=writer(GlobalScope_instance,this.r31_1,VOID,toRaw$slambda_0(this.t31_1,null)).by().u1f(VOID,this))===get_COROUTINE_SUSPENDED())return t;continue t}this.u31_1=null,this.zb_1=3;continue t;case 1:var n=t;this.u31_1=readBytes(n),this.zb_1=3;continue t;case 2:var i=t;this.u31_1=readBytes(i),this.zb_1=3;continue t;case 3:var e=this.u31_1;return buildObject(toRaw$lambda_0(this.p31_1,this.s31_1,this.q31_1,e));case 4:throw this.cc_1}}catch(t){var r=t;if(4===this.ac_1)throw r;this.zb_1=this.ac_1,this.cc_1=r}},protoOf(channelFromStream$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(channelFromStream$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(channelFromStream$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6,this.p32_1=this.n32_1.getReader(),this.zb_1=1;continue t;case 1:if(this.ac_1=5,this.zb_1=2,(t=readChunk(this.p32_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(this.q32_1=t,null==this.q32_1){this.ac_1=6,this.zb_1=8;continue t}this.r32_1=this.q32_1,this.zb_1=3;continue t;case 3:if(this.s32_1=this.r32_1,this.zb_1=4,(t=writeFully(this.o32_1.by(),asByteArray(this.s32_1),this))===get_COROUTINE_SUSPENDED())return t;continue t;case 4:this.o32_1.by().q1f(),this.ac_1=6,this.zb_1=7;continue t;case 5:if(this.ac_1=6,this.cc_1 instanceof Error){var n=this.cc_1;throw this.p32_1.cancel(n),n}throw this.cc_1;case 6:throw this.cc_1;case 7:this.ac_1=6,this.zb_1=1;continue t;case 8:return Unit_instance}}catch(t){var i=t;if(6===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},protoOf(channelFromStream$slambda).u2c=function(t,n){var i=new channelFromStream$slambda(this.n32_1,n);return i.o32_1=t,i},protoOf(readBodyNode$slambda).t2c=function(t,n){var i=this.u2c(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(readBodyNode$slambda).zc=function(t,n){return this.t2c(null!=t&&isInterface(t,WriterScope)?t:THROW_CCE(),n)},protoOf(readBodyNode$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=6;var n,i=this.b33_1.body;if(null==i)throw IllegalStateException_init_$Create$(toString("Fail to get body"));n=i,this.d33_1=n,this.e33_1=Channel(1),this.d33_1.on("data",readBodyNode$slambda$lambda(this.e33_1,this.d33_1)),this.d33_1.on("error",readBodyNode$slambda$lambda_0(this.e33_1,this.c33_1)),this.d33_1.on("end",readBodyNode$slambda$lambda_1(this.e33_1)),this.ac_1=5,this.f33_1=this.e33_1.v(),this.zb_1=1;continue t;case 1:if(this.zb_1=2,(t=this.f33_1.c11(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 2:if(!t){this.zb_1=4;continue t}if(this.g33_1=this.f33_1.y(),this.zb_1=3,(t=writeFully(this.c33_1.by(),this.g33_1,this))===get_COROUTINE_SUSPENDED())return t;continue t;case 3:this.c33_1.by().q1f(),this.d33_1.resume(),this.zb_1=1;continue t;case 4:this.ac_1=6,this.zb_1=7;continue t;case 5:if(this.ac_1=6,this.cc_1 instanceof Error){var e=this.cc_1;throw this.d33_1.destroy(e),e}throw this.cc_1;case 6:throw this.cc_1;case 7:return this.ac_1=6,Unit_instance}}catch(t){var r=t;if(6===this.ac_1)throw r;this.zb_1=this.ac_1,this.cc_1=r}},protoOf(readBodyNode$slambda).u2c=function(t,n){var i=new readBodyNode$slambda(this.b33_1,n);return i.c33_1=t,i},protoOf(JsWebSocketSession$slambda).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=Unit_instance,i.cc_1=null,i.mc()},protoOf(JsWebSocketSession$slambda).zc=function(t,n){return this.v1g(null!=t&&isInterface(t,CoroutineScope)?t:THROW_CCE(),n)},protoOf(JsWebSocketSession$slambda).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=10,this.z33_1=this.x33_1.l33_1,this.zb_1=1;continue t;case 1:this.b34_1=this.z33_1,this.c34_1=null,this.zb_1=2;continue t;case 2:this.zb_1=3;continue t;case 3:this.ac_1=9,this.ac_1=8,this.e34_1=this.b34_1,this.f34_1=this.e34_1.v(),this.zb_1=4;continue t;case 4:if(this.zb_1=5,(t=this.f34_1.c11(this))===get_COROUTINE_SUSPENDED())return t;continue t;case 5:if(!t){this.zb_1=6;continue t}var n=this.f34_1.y();switch(n.a26_1.v9_1){case 0:var i=n.b26_1;this.x33_1.i33_1.send(String_0(i));break;case 1:var e=n.b26_1,r=e instanceof Int8Array?e:THROW_CCE(),s=r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength|0);this.x33_1.i33_1.send(s);break;case 2:var o;n:do{var u=new BytePacketBuilder;try{writeFully_0(u,n.b26_1),o=u.o1d();break n}catch(t){if(t instanceof Error){var a=t;throw u.ls(),a}throw t}}while(0);var h=o,_=readShort(h),l=h.c1k();this.x33_1.j33_1.bs(new CloseReason(_,l)),isReservedStatusCode(_,this.x33_1)?this.x33_1.i33_1.close():this.x33_1.i33_1.close(_,l)}this.zb_1=4;continue t;case 6:this.d34_1=Unit_instance,this.ac_1=10,this.zb_1=7;continue t;case 7:this.ac_1=10,cancelConsumed(this.b34_1,this.c34_1),this.a34_1=Unit_instance,this.zb_1=12;continue t;case 8:if(this.ac_1=9,this.cc_1 instanceof Error){var c=this.cc_1;throw this.c34_1=c,c}throw this.cc_1;case 9:this.ac_1=10;var f=this.cc_1;throw cancelConsumed(this.b34_1,this.c34_1),f;case 10:throw this.cc_1;case 11:this.ac_1=10,cancelConsumed(this.b34_1,this.c34_1),this.zb_1=12;continue t;case 12:return Unit_instance}}catch(t){var v=t;if(10===this.ac_1)throw v;this.zb_1=this.ac_1,this.cc_1=v}},protoOf(JsWebSocketSession$slambda).w1g=function(t,n){var i=new JsWebSocketSession$slambda(this.x33_1,n);return i.y33_1=t,i},protoOf(JsWebSocketSession).am=function(){return this.h33_1},defineProp(protoOf(DoubleReceiveException),"message",(function(){return this.a6()})),defineProp(protoOf(NoTransformationFoundException),"message",(function(){return this.a6()})),defineProp(protoOf(ClientEngineClosedException),"cause",(function(){return this.b6()})),protoOf(HttpClientEngineBase).t2d=get_supportedCapabilities,protoOf(HttpClientEngineBase).b29=install,protoOf(KtorCallContextElement).hc=get,protoOf(KtorCallContextElement).ig=fold,protoOf(KtorCallContextElement).hg=minusKey,protoOf(KtorCallContextElement).jg=plus,defineProp(protoOf(RedirectResponseException),"message",(function(){return this.a6()})),defineProp(protoOf(ClientRequestException),"message",(function(){return this.a6()})),defineProp(protoOf(ServerResponseException),"message",(function(){return this.a6()})),protoOf(HttpRequest$1).am=get_coroutineContext,Companion_instance_1=new Companion_0,WebSocketCapability_instance=new WebSocketCapability,Companion_instance_4=new Companion_3,Js_instance=new Js,_.$_$=_.$_$||{},_.$_$.a=bodyAsText,_.$_$.b=Plugin_getInstance_4,_.$_$.c=set_expectSuccess,_.$_$.d=HttpRequestBuilder,_.$_$.e=url,_.$_$.f=HttpStatement,_.$_$.g=HttpClient_1,_},__WEBPACK_AMD_DEFINE_ARRAY__=[exports,__webpack_require__(675),__webpack_require__(485),__webpack_require__(754),__webpack_require__(205),__webpack_require__(498),__webpack_require__(229),__webpack_require__(997),__webpack_require__(878)],void 0===(__WEBPACK_AMD_DEFINE_RESULT__="function"==typeof(__WEBPACK_AMD_DEFINE_FACTORY__=factory)?__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__):__WEBPACK_AMD_DEFINE_FACTORY__)||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},498:function(t,n,i){var e,r,s;r=[n,i(485),i(675),i(754)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r=n.$_$.q,s=i.$_$.w9,o=i.$_$.hb,u=e.$_$.d,a=i.$_$.z9,h=i.$_$.fg,_=i.$_$.rg,l=i.$_$.a5,c=i.$_$.gb,f=i.$_$.f;function v(){}function d(){this.d25_1=new u}function w(){}return o(v,"HandlerRegistration",s,r),o(d,"Events",s,f,f,d),o(w,"EventDefinition",s,f,f,w),c(d).e25=function(t,n){var i=null,e=this.d25_1.q1q(t);if(null==e);else for(var r=e.rt_1;!a(r,e);){if(r instanceof v){var s=r;try{var o=s.i25_1;("function"==typeof o?o:h())(n)}catch(t){if(!(t instanceof Error))throw t;var u,c=t;null==i?u=null:(_(i,c),u=l),null==u&&(i=c)}}r=r.rt_1}if(null!=i)throw i},t.$_$=t.$_$||{},t.$_$.a=w,t.$_$.b=d,t})?e.apply(n,r):e)||(t.exports=s)},997:function(t,n,i){var e,r,s;r=[n,i(675),i(229),i(754)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z=Math.imul,A=n.$_$.f,T=n.$_$.f1,I=i.$_$.f,D=i.$_$.k,j=n.$_$.a5,M=i.$_$.n,N=i.$_$.o,R=i.$_$.m,P=n.$_$.s9,L=n.$_$.r2,F=n.$_$.ad,U=n.$_$.t9,H=n.$_$.lb,V=n.$_$.of,B=n.$_$.sd,Y=n.$_$.w2,W=n.$_$.v2,G=n.$_$.e1,K=n.$_$.u9,X=n.$_$.v9,J=n.$_$.z2,Z=n.$_$.ib,Q=i.$_$.t,tt=n.$_$.uf,nt=n.$_$.n1,it=n.$_$.q9,et=n.$_$.gb,rt=n.$_$.w9,st=n.$_$.hb,ot=n.$_$.u2,ut=n.$_$.za,at=n.$_$.x2,ht=n.$_$.t7,_t=n.$_$.u7,lt=n.$_$.w5,ct=n.$_$.l,ft=n.$_$.y2,vt=n.$_$.q8,dt=n.$_$.b8,wt=n.$_$.s7,pt=n.$_$.o7,mt=n.$_$.p6,gt=n.$_$.eb,bt=n.$_$.jd,$t=n.$_$.d5,yt=n.$_$.qa,kt=n.$_$.od,xt=n.$_$.m7,St=n.$_$.nd,Et=n.$_$.fg,Ct=n.$_$.ma,qt=n.$_$.jf,Ot=n.$_$.cd,zt=n.$_$.fb,At=n.$_$.v7,Tt=n.$_$.z9,It=n.$_$.fa,Dt=n.$_$.ga,jt=i.$_$.e,Mt=n.$_$.vf,Nt=i.$_$.l,Rt=n.$_$.j7,Pt=n.$_$.xd,Lt=n.$_$.kd,Ft=n.$_$.ud,Ut=e.$_$.q,Ht=n.$_$.r6,Vt=e.$_$.p,Bt=e.$_$.o,Yt=e.$_$.s,Wt=e.$_$.r,Gt=n.$_$.q6,Kt=n.$_$.se,Xt=n.$_$.i,Jt=n.$_$.ah,Zt=n.$_$.jh,Qt=n.$_$.m,tn=n.$_$.r5,nn=n.$_$.t2,en=n.$_$.s1,rn=n.$_$.xe,sn=n.$_$.p7,on=n.$_$.tb,un=n.$_$.u,an=n.$_$.pf,hn=n.$_$.ha,_n=n.$_$.td,ln=n.$_$.he,cn=n.$_$.r9,fn=n.$_$.ee,vn=n.$_$.o8,dn=n.$_$.w6,wn=n.$_$.f7,pn=n.$_$.t1,mn=e.$_$.x,gn=n.$_$.ld,bn=n.$_$.o6,$n=n.$_$.wf,yn=n.$_$.y1,kn=n.$_$.md,xn=n.$_$.ve,Sn=n.$_$.n7,En=e.$_$.y,Cn=e.$_$.u,qn=e.$_$.t,On=n.$_$.ge,zn=n.$_$.p5,An=n.$_$.h7,Tn=n.$_$.ih,In=n.$_$.bh,Dn=n.$_$.c,jn=n.$_$.kc,Mn=n.$_$.ea,Nn=n.$_$.gd,Rn=i.$_$.j,Pn=n.$_$.jb,Ln=n.$_$.ne,Fn=e.$_$.c,Un=e.$_$.v;function Hn(){return ui(),r}function Vn(){return ui(),s}function Bn(){return ui(),o}function Yn(){return ui(),a}function Wn(t,n){n=n!==A&&n,ui();var i,e,r=T();return Zn(D(I().l1k_1.p1k(),t),(i=r,e=n,function(t){return Hn().r(t)||(ui(),h).r(t)?i.p5(ut(t)):e&&32===t?i.p5(L(43)):i.o5(Qn(t)),j})),r.toString()}function Gn(t,n,i,e){return n=n===A?0:n,i=i===A?t.length:i,e=e===A?I().l1k_1:e,ui(),ti(t,n,i,!1,e)}function Kn(t,n,i,e){n=n!==A&&n,i=i!==A&&i,e=e===A?I().l1k_1:e,ui();var r,s,o,a=T();return Zn(D(e.p1k(),t),(r=i,s=a,o=n,function(t){return 32===t?r?s.p5(L(43)):s.o5("%20"):Hn().r(t)||!o&&(ui(),u).r(t)?s.p5(ut(t)):s.o5(Qn(t)),j})),a.toString()}function Xn(t,n,i,e,r){return n=n===A?0:n,i=i===A?t.length:i,e=e!==A&&e,r=r===A?I().l1k_1:r,ui(),ti(t,n,i,e,r)}function Jn(t){return ui(),function(t,n){ui();for(var i=T(),e=I().l1k_1,r=0;rs.w1b_1;)n(s.p1h());i=!1;var o=N(t,r);if(null==o)break t;r=o,i=!0}}finally{i&&R(t,r)}}}function Qn(t){ui();var n=255&t,i=P(3);return i[0]=L(37),i[1]=ni(n>>4),i[2]=ni(15&n),F(i)}function ti(t,n,i,e,r){ui();var s=n;if(s255?o/3|0:o);e>n&&u.q7(t,n,e);for(var a=e,h=null;a=i){var c=a,f=K(t);throw new ei("Incomplete trailing HEX escape: "+H(X(t,c,f))+", in "+t+" at "+a)}var v=ri(U(t,a+1|0)),d=ri(U(t,a+2|0));if(-1===v||-1===d)throw new ei("Wrong HEX escape: %"+J(U(t,a+1|0))+J(U(t,a+2|0))+", in "+t+", at "+a);var w=l;l=w+1|0,h[w]=Z(z(v,16)+d|0),a=a+3|0}u.o5(Q(h,0,l,s))}else u.p5(_),a=a+1|0}return u.toString()}function ei(t){nt(t,this),it(this,ei)}function ri(t){return ui(),L(48)<=t&&t<=L(57)?ot(t,L(48)):L(65)<=t&&t<=L(70)?ot(t,L(65))+10|0:L(97)<=t&&t<=L(102)?ot(t,L(97))+10|0:-1}function si(t){return ui(),Wn(t,!0)}function oi(t){return function(n){return t.o5(Qn(n)),j}}function ui(){if(!_){_=!0;for(var t=_t(ht(at(L(97),L(122)),at(L(65),L(90))),at(L(48),L(57))),n=ct(lt(t,10)),i=t.v();i.w();){var e=i.y().la_1,l=ft(e),c=Z(l);n.s(c)}r=vt(n),s=vt(_t(ht(at(L(97),L(122)),at(L(65),L(90))),at(L(48),L(57)))),o=vt(_t(ht(at(L(97),L(102)),at(L(65),L(70))),at(L(48),L(57))));for(var f=dt([new V(L(58)),new V(L(47)),new V(L(63)),new V(L(35)),new V(L(91)),new V(L(93)),new V(L(64)),new V(L(33)),new V(L(36)),new V(L(38)),new V(L(39)),new V(L(40)),new V(L(41)),new V(L(42)),new V(L(44)),new V(L(59)),new V(L(61)),new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126)),new V(L(43))]),v=ct(lt(f,10)),d=f.v();d.w();){var w=d.y().la_1,p=ft(w),m=Z(p);v.s(m)}u=v,a=dt([new V(L(58)),new V(L(64)),new V(L(33)),new V(L(36)),new V(L(38)),new V(L(39)),new V(L(40)),new V(L(41)),new V(L(42)),new V(L(43)),new V(L(44)),new V(L(59)),new V(L(61)),new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126))]),wt(Vn(),dt([new V(L(33)),new V(L(35)),new V(L(36)),new V(L(38)),new V(L(43)),new V(L(45)),new V(L(46)),new V(L(94)),new V(L(95)),new V(L(96)),new V(L(124)),new V(L(126))]));for(var g=pt([new V(L(45)),new V(L(46)),new V(L(95)),new V(L(126))]),b=ct(lt(g,10)),$=g.v();$.w();){var y=$.y().la_1,k=ft(y),x=Z(k);b.s(x)}h=b}}function ai(t,n,i){return function(t,n,i,e){return i=i===A?mt():i,fi.call(e,t,n,t+"/"+n,i),e}(t,n,i,gt(et(fi)))}function hi(){l=this,this.y1t_1=ai("*","*")}function _i(){return null==l&&new hi,l}function li(){c=this,this.d1u_1=ai("application","*"),this.e1u_1=ai("application","atom+xml"),this.f1u_1=ai("application","cbor"),this.g1u_1=ai("application","json"),this.h1u_1=ai("application","hal+json"),this.i1u_1=ai("application","javascript"),this.j1u_1=ai("application","octet-stream"),this.k1u_1=ai("application","rss+xml"),this.l1u_1=ai("application","xml"),this.m1u_1=ai("application","xml-dtd"),this.n1u_1=ai("application","zip"),this.o1u_1=ai("application","gzip"),this.p1u_1=ai("application","x-www-form-urlencoded"),this.q1u_1=ai("application","pdf"),this.r1u_1=ai("application","vnd.openxmlformats-officedocument.spreadsheetml.sheet"),this.s1u_1=ai("application","vnd.openxmlformats-officedocument.wordprocessingml.document"),this.t1u_1=ai("application","vnd.openxmlformats-officedocument.presentationml.presentation"),this.u1u_1=ai("application","protobuf"),this.v1u_1=ai("application","wasm"),this.w1u_1=ai("application","problem+json"),this.x1u_1=ai("application","problem+xml")}function ci(){f=this,this.y1u_1=ai("text","*"),this.z1u_1=ai("text","plain"),this.a1v_1=ai("text","css"),this.b1v_1=ai("text","csv"),this.c1v_1=ai("text","html"),this.d1v_1=ai("text","javascript"),this.e1v_1=ai("text","vcard"),this.f1v_1=ai("text","xml"),this.g1v_1=ai("text","event-stream")}function fi(t,n,i,e){_i(),e=e===A?mt():e,pi.call(this,i,e),this.j1v_1=t,this.k1v_1=n}function vi(t){nt("Bad Content-Type format: "+t,this),it(this,vi)}function di(t){var n,i=t.m1v("charset");if(null==i)n=null;else{var e;try{e=jt.n1n(i)}catch(t){if(!(t instanceof Mt))throw t;e=null}n=e}return n}function wi(){}function pi(t,n){n=n===A?mt():n,this.t1t_1=t,this.u1t_1=n}function mi(t){if(bi(),0===K(t))return!0;if(function(t){if(bi(),t.length<2)return!1;if(Lt(t)!==L(34)||Pt(t)!==L(34))return!1;var n=1;t:do{var i=St(t,L(34),n);if(i===Ft(t))break t;for(var e=0,r=i-1|0;U(t,r)===L(92);)e=e+1|0,r=r-1|0;if(0==(e%2|0))return!1;n=i+1|0}while(nFt(t))r=te().q22_1;else{te();var s=ie();(function(t,n,i,e,r){var s=0,o=i,u=-1,a=i,h=Ft(n);if(a<=h)do{var _=a;if(a=a+1|0,s===e)return j;var l=U(n,_);l===L(38)?(ue(t,n,o,u,_,r),o=_+1|0,u=-1,s=s+1|0):l===L(61)&&-1===u&&(u=_)}while(_!==h);if(s===e)return j;ue(t,n,o,u,n.length,r)})(s,t,n,i,e),r=s.o1d()}return r}function ue(t,n,i,e,r,s){if(-1===e){var o=ae(i,r,n),u=he(o,r,n);if(u>o){var a=s?Xn(n,o,u):n.substring(o,u);t.h1q(a,mt())}return j}var h=ae(i,e,n),_=he(h,e,n);if(_>h){var l=s?Xn(n,h,_):n.substring(h,_),c=ae(e+1|0,r,n),f=he(c,r,n),v=s?Xn(n,c,f,!0):n.substring(c,f);t.k1q(l,v)}}function ae(t,n,i){for(var e=t;et&&_n(U(i,e-1|0));)e=e-1|0;return e}function _e(t){var n=t.u22_1;if(K(n)>0||"file"===t.t22_1.d23_1)return j;t.u22_1=ce().v23_1.g23_1,t.t22_1.equals(Ce().w23_1)&&(t.t22_1=ce().v23_1.f23_1),0===t.v22_1&&(t.v22_1=ce().v23_1.h23_1)}function le(){x=this,this.v23_1=function(t){return $e(new fe,t)}(function(t){var n;if(2===Un(Fn()).v9_1){var i=function(){var t=null;"undefined"!=typeof window?t=window.location:"undefined"!=typeof self&&(t=self.location);var n="";return t&&(n=t.origin),n&&"null"!=n?n:"http://localhost"}();n=null!=i&&"string"==typeof i?i:Et()}else n="http://localhost";return n}()).o1d()}function ce(){return null==x&&new le,x}function fe(t,n,i,e,r,s,o,u,a){ce(),t=t===A?Ce().w23_1:t,n=n===A?"":n,i=i===A?0:i,e=e===A?null:e,r=r===A?null:r,s=s===A?mt():s,o=o===A?te().q22_1:o,u=u===A?"":u,a=a!==A&&a,this.t22_1=t,this.u22_1=n,this.v22_1=i,this.w22_1=a,this.x22_1=null==e?null:Wn(e),this.y22_1=null==r?null:Wn(r),this.z22_1=Kn(u);for(var h=ct(lt(s,10)),_=s.v();_.w();){var l=Jn(_.y());h.s(l)}this.a23_1=h,this.b23_1=function(t){var n=ie();return function(t,n){for(var i=n.b1q().v();i.w();){for(var e=i.y(),r=n.a1q(e),s=null==r?mt():r,o=Wn(e),u=ct(lt(s,10)),a=s.v();a.w();){var h=si(a.y());u.s(h)}t.h1q(o,u)}}(n,t),n}(o),this.c23_1=new Ie(this.b23_1)}function ve(t){var n=T();return n.o5(pe(t)),n.o5(t.u22_1),0!==t.v22_1&&t.v22_1!==t.t22_1.e23_1&&(n.o5(":"),n.o5(t.v22_1.toString())),n.toString()}function de(){return S}function we(t,n){n.p7(t.t22_1.d23_1);var i=t.t22_1.d23_1;if("file"===i)return function(t,n,i){t.p7("://"),t.p7(n),ln(i,L(47))||t.p5(L(47)),t.p7(i)}(n,t.u22_1,ge(t)),n;if("mailto"===i)return function(t,n,i){t.p7(":"),t.p7(n),t.p7(i)}(n,pe(t),t.u22_1),n;n.p7("://"),n.p7(ve(t)),function(t,n,i,e){!kt(n)&&!On(n,"/")&&t.p5(L(47)),t.p7(n),i.d1()&&!e||t.p7("?");for(var r=i.c1q(),s=Qt(),o=r.v();o.w();){var u,a=o.y(),h=a.g2(),_=a.h2();if(_.d1())u=Sn(Zt(h,null));else{for(var l=ct(lt(_,10)),c=_.v();c.w();){var f=c.y(),v=Zt(h,f);l.s(v)}u=l}zn(s,u)}An(s,t,"&",A,A,A,A,ze)}(n,ge(t),t.b23_1,t.w22_1);var e=t.z22_1;return K(e)>0&&(n.p5(L(35)),n.p7(t.z22_1)),n}function pe(t){var n=T();return Oe(n,t.x22_1,t.y22_1),n.toString()}function me(t,n){t.a23_1=kt(n)?mt():"/"===n?be():vn(fn(n,cn([L(47)])))}function ge(t){return function(t){if(t.d1())return"";if(1===t.n()){var n=dn(t);return 0===K(n)?"/":dn(t)}return wn(t,"/")}(t.a23_1)}function be(){return Se(),E}function $e(t,n){if(Se(),kt(n))return t;var i;try{i=function(t,n){var i;Se();t:{var e=0,r=K(n)-1|0;if(e<=r)do{var s=e;e=e+1|0;var o=U(n,s);if(!_n(o)){i=s;break t}}while(e<=r);i=-1}var u,a=i;t:{var h=K(n)-1|0;if(0<=h)do{var _=h;h=h+-1|0;var l=U(n,_);if(!_n(l)){u=_;break t}}while(0<=h);u=-1}var c=u+1|0,f=function(t,n,i){Se();var e=n,r=-1,s=U(t,e);for(L(97)<=s&&s<=L(122)||L(65)<=s&&s<=L(90)||(r=e);e0){var v=a,d=a+f|0,w=n.substring(v,d);t.t22_1=Ce().j24(w),a=a+(f+1|0)|0}var p=function(t,n,i,e){Se();for(var r=0;(n+r|0)=2)t:for(;;){var m,g=gn(n,mn("@/\\?#"),a),b=null==(m=g>0?g:null)?c:m;if(!(b=c)return t.a23_1=U(n,c-1|0)===L(47)?be():mt(),t;var S,E=t;S=0===p?bn(t.a23_1,1):mt(),E.a23_1=S;var C,q=gn(n,mn("?#"),a),O=null==(C=q>0?q:null)?c:C;if(O>a){var z,T=a,I=n.substring(T,O);if(1===t.a23_1.n()){var D=dn(t.a23_1);z=0===K(D)}else z=!1;var M=z?mt():t.a23_1,N="/"===I?be():fn(I,cn([L(47)])),R=_t(1===p?be():mt(),N);t.a23_1=_t(M,R),a=O}return a0?s:null)?e:r,u=i+1|0;return oe(n.substring(u,o),A,A,!1).d1q((a=t,function(t,n){return a.b23_1.h1q(t,n),j})),o;var a}(t,n,a,c)),function(t,n,i,e){if(Se(),i0?s:null)?e:r;if(t.u22_1=n.substring(i,o),(o+1|0)?@[\\]{}',e))throw new Fi(t,r)}},et(Pi).n1z=function(t){for(var n=0,i=0;i=0?i:e}return n}(n),s=(e.z9(r)<=0?e:r).ia(),o=ht(s);return function(t,n,i,e){var r=Se(ee(ve(t)),!0),s=0,o=!0,u=Ai(n,1);if(null!=u){var a=u,h=1;try{t:do{var _,l,c=a,f=c.x1b_1-c.w1b_1|0;if(f>=h)try{var v,d=a,w=e-s|0,p=d.x1b_1-d.w1b_1|0;if(w0&&d.f1h(p),E=0}else E=s0)}finally{o&&zi(n,a)}}if(s=N)try{var U=M,H=U.v1b_1,V=U.w1b_1,B=U.x1b_1,Y=pe(new Int8Array(H.a1h_1.buffer,H.a1h_1.byteOffset+V|0,B-V|0),r,e-s|0);i.p7(Y.y1n_1),s=s+Y.y1n_1.length|0;var W=Y.z1n_1;U.b1h(W),N=I=W>0?1:I===de()?0:I+1|0}finally{var G=M;R=G.x1b_1-G.w1b_1|0}else R=F;if(D=!1,0===R)P=Ti(n,M);else{var K;if(R0)}finally{D&&zi(n,M)}}}}(t,n,o,i),o.toString()}function $n(t,n,i,e,r){var s=e;if(s>=r)return 0;var o=0,u=Ii(n,1,null);try{var a;t:for(;;){var h=u,_=h.z1b_1-h.x1b_1|0,l=ce(t,i,s,r,h);if(!(l>=0))throw D(A("Check failed."));if(s=s+l|0,o=o+(_-(h.z1b_1-h.x1b_1|0)|0)|0,(a=s>=r?0:0===l?8:1)<=0)break t;u=Ii(n,a,u)}}finally{n.x1g()}return o+function(t,n){var i=1,e=0,r=Ii(n,1,null);try{t:for(;;){var s=r,o=s.z1b_1-s.x1b_1|0;if(i=0,e=e+(o-(s.z1b_1-s.x1b_1|0)|0)|0,!(i>0))break t;r=Ii(n,1,r)}}finally{n.x1g()}return e}(0,n)|0}function yn(){this.y1g_1=8}function kn(t){this.v1b_1=t,this.w1b_1=0,this.x1b_1=0,this.y1b_1=0,this.z1b_1=this.v1b_1.a1h_1.byteLength,this.a1c_1=this.v1b_1.a1h_1.byteLength}function xn(t,n){throw new ye("Unable to discard "+t+" bytes: only "+n+" available for reading")}function Sn(t,n){throw new ye("Unable to discard "+t+" bytes: only "+n+" available for writing")}function En(t,n,i){var e=function(t,n,i,e){return Cn.call(e,"Not enough free space to write "+t+" of "+n+" bytes, available "+i+" bytes."),e}(t,n,i,vt(N(Cn)));return K(e,En),e}function Cn(t){wt(t=t===F?"Not enough free space":t,this),K(this,Cn)}function qn(t,n,i){var e=n.x1b_1-n.w1b_1|0,r=Math.min(e,i);(t.z1b_1-t.x1b_1|0)<=r&&function(t,n){if(((t.z1b_1-t.x1b_1|0)+(t.a1c_1-t.z1b_1|0)|0)0&&t.n1h()}(t,r);var s=t.v1b_1,o=t.x1b_1;t.z1b_1;var u=n.v1b_1,a=n.w1b_1;n.x1b_1,u.s1h(s,a,r,o);var h=r;n.b1h(h);var _=h;return t.c1h(_),_}function On(){return h||(h=!0,u=new zn),u}function zn(t,n,i){t=t===F?4096:t,n=n===F?1e3:n,i=i===F?p:i,Ae.call(this,n),this.w1h_1=t,this.x1h_1=i}function An(t,n,i,e){i=i===F?0:i,e=e===F?n.length-i|0:e;var r=t.v1b_1,s=t.x1b_1,o=t.z1b_1-s|0;if(o=0))throw T(A("length shouldn't be negative: "+i));if(!(i<=(n.x1b_1-n.w1b_1|0))){var e="length shouldn't be greater than the source read remaining: "+i+" > "+(n.x1b_1-n.w1b_1|0);throw T(A(e))}if(!(i<=(t.z1b_1-t.x1b_1|0))){var r="length shouldn't be greater than the destination write remaining space: "+i+" > "+(t.z1b_1-t.x1b_1|0);throw T(A(r))}var s=t.v1b_1,o=t.x1b_1,u=t.z1b_1-o|0;if(u=0))throw T(A("Failed requirement."));if(!(i<=(n.z1b_1-n.x1b_1|0)))throw T(A("Failed requirement."));var e=t.v1b_1,r=t.w1b_1;if((t.x1b_1-r|0)r)!function(t,n,i,e){var r=t.e1d_1.x1i(),s=t.e1d_1.x1i();r.h1h(8),s.h1h(8),r.j1k(s),s.j1k(n.a1j()),qn(r,n,i-e|0),qn(s,n,e),Hn(t,r),t.w1j(jn(s))}(t,n,i,r);else{var s=t.e1d_1.x1i();s.h1h(8),s.j1k(n.a1j()),qn(s,n,i),Hn(t,s)}n.b1j(t.e1d_1)}function Wn(t){if(t.k1d_1)return null;var n=t.t1j();return null==n?(t.k1d_1=!0,null):(function(t,n){var i=Mn(t.f1d_1);if(i===di().l1f_1){if(Hn(t,n),!t.j1d_1.equals(new L(0,0)))throw D("It should be no tail remaining bytes if current tail is EmptyBuffer");var e=n.fz(),r=null==e?null:jn(e);t.w1j(null==r?new L(0,0):r)}else i.j1k(n),t.w1j(t.j1d_1.db(jn(n)))}(t,n),n)}function Gn(t,n,i){for(var e=t,r=n,s=i;;){var o=e,u=o.i1d_1-o.h1d_1|0;if(u>=r)return s;var a=s.fz(),h=null==a?Wn(e):a;if(null==h)return null;var _=h;if(0!==u){var l=qn(s,_,r-u|0);e.i1d_1=s.x1b_1;var c=e,f=c.j1d_1.eb(I(l));c.w1j(f),_.x1b_1>_.w1b_1?_.g1h(l):(s.j1k(null),s.j1k(_.a1j()),_.b1j(e.e1d_1));var v=s;if((v.x1b_1-v.w1b_1|0)>=r)return s;r>8&&Kn(0,r)}else s!==di().l1f_1&&e.i1k(s),s=_}}function Kn(t,n){throw D("minSize of "+n+" is too big (should be less than 8)")}function Xn(t,n){0==(n.x1b_1-n.w1b_1|0)&&t.i1k(n)}function Jn(){}function Zn(t,n,i){t=t===F?di().l1f_1:t,n=n===F?jn(t):n,i=i===F?di().o1f():i,this.e1d_1=i,this.f1d_1=t,this.g1d_1=t.v1b_1,this.h1d_1=t.w1b_1,this.i1d_1=t.x1b_1;var e=this.i1d_1-this.h1d_1|0;this.j1d_1=n.eb(I(e)),this.k1d_1=!1}function Qn(t,n,i,e){i=i===F?0:i;var r=e=e===F?n.length-i|0:e,s=i,o=!0,u=Ai(t,1);if(null!=u){var a=u;try{t:for(;;){var h=a,_=r,l=h.x1b_1-h.w1b_1|0,c=Math.min(_,l);if(In(h,n,s,c),s=s+c|0,!((r=r-c|0)>0))break t;o=!1;var f=Ti(t,a);if(null==f)break t;a=f,o=!0}}finally{o&&zi(t,a)}}r>0&&ai(r)}function ti(t,n,i){var e=i=i===F?n.z1b_1-n.x1b_1|0:i,r=0,s=!0,o=Ai(t,1);if(null!=o){var u=o;try{t:for(;;){var a=u,h=e,_=a.x1b_1-a.w1b_1|0,l=Math.min(h,_);if(Dn(a,n,l),r=r+l|0,!((e=e-l|0)>0))break t;s=!1;var c=Ti(t,u);if(null==c)break t;u=c,s=!0}}finally{s&&zi(t,u)}}e>0&&ai(e)}function ni(t){var n=t.o19_1.x1i();return n.h1h(8),t.h1j(n),n}function ii(t,n,i,e){var r=t.q19_1;if(null==r)t.p19_1=n,t.v19_1=0;else{r.j1k(n);var s=t.s19_1;r.d1h(s),t.v19_1=t.v19_1+(s-t.u19_1|0)|0}t.q19_1=i,t.v19_1=t.v19_1+e|0,t.r19_1=i.v1b_1,t.s19_1=i.x1b_1,t.u19_1=i.w1b_1,t.t19_1=i.z1b_1}function ei(t,n,i,e){n.d1h(t.s19_1);var r=n.x1b_1-n.w1b_1|0,s=i.x1b_1-i.w1b_1|0,o=$e(),u=s0))break t;s=Ii(t,1,s)}}finally{t.x1g()}}function oi(t,n,i,e){var r=i=i===F?0:i,s=e=e===F?n.length-i|0:e,o=Ii(t,1,null);try{t:for(;;){var u=o,a=s,h=u.z1b_1-u.x1b_1|0,_=Math.min(a,h);if(An(u,n,r,_),r=r+_|0,!((s=s-_|0)>0))break t;o=Ii(t,1,o)}}finally{t.x1g()}}function ui(t,n){var i,e;if(n===F){var r=t.l1d();if(r.z9(I(at.MAX_VALUE))>0)throw T("Unable to convert to a ByteArray: packet is too big");i=r.ia()}else i=n;if(0!==(n=i)){var s=new Int8Array(n);Qn(t,s,0,n),e=s}else e=Oi();return e}function ai(t){throw new ye("Premature end of stream: expected "+t+" bytes")}function hi(t,n,i){return function(t,n,i){if(0===i)return"";if((n.i1d_1-n.h1d_1|0)>=i){var e,r=Se(ve(t).n1k_1,!0),s=n.g1j(),o=n.g1d_1.a1h_1;t:try{var u=0===s.w1b_1&&i===o.byteLength?o:new DataView(o.buffer,o.byteOffset+s.w1b_1|0,i);e=r.a1o(u);break t}catch(t){if(t instanceof Error){var a=t.message;throw new oe("Failed to decode bytes: "+(null==a?"no cause provided":a))}throw t}var h=e;return n.b1h(i),h}return function(t,n,i){var e=Se(ee(ve(t)),!0),r=i,s=ht(i);t:try{var o=!0,u=Ai(n,6);if(null!=u){var a=u,h=6;try{n:do{var _,l,c=a,f=c.x1b_1-c.w1b_1|0;if(f>=h)try{var v,d=a,w=d.x1b_1-d.w1b_1|0,p=r,m=Math.min(w,p);if(0===d.w1b_1&&d.v1b_1.a1h_1.byteLength===m){var g;i:{var b=d.v1b_1.a1h_1;try{g=e.w1n(b,Ee(!0));break i}catch(t){if(t instanceof Error){var $=t.message;throw new oe("Failed to decode bytes: "+(null==$?"no cause provided":$))}throw t}}v=g}else{var y;i:{var k=new Int8Array(d.v1b_1.a1h_1.buffer,d.v1b_1.a1h_1.byteOffset+d.w1b_1|0,m);try{y=e.w1n(k,Ee(!0));break i}catch(t){if(t instanceof Error){var x=t.message;throw new oe("Failed to decode bytes: "+(null==x?"no cause provided":x))}throw t}}v=y}var S=v;s.o5(S),d.b1h(m),h=(r=r-m|0)>0?6:0}finally{var E=a;_=E.x1b_1-E.w1b_1|0}else _=f;if(o=!1,0===_)l=Ti(n,a);else{var C;if(_0)}finally{o&&zi(n,a)}}if(r>0){var z=!0,A=Ai(n,1);if(null!=A){var T=A;try{n:for(;;){var I,D=T,j=D.x1b_1-D.w1b_1|0,M=r,N=Math.min(j,M);if(0===D.w1b_1&&D.v1b_1.a1h_1.byteLength===N)I=e.a1o(D.v1b_1.a1h_1);else{var R;i:{var P=new Int8Array(D.v1b_1.a1h_1.buffer,D.v1b_1.a1h_1.byteOffset+D.w1b_1|0,N);try{R=e.w1n(P,Ee(!0));break i}catch(t){if(t instanceof Error){var L=t.message;throw new oe("Failed to decode bytes: "+(null==L?"no cause provided":L))}throw t}}I=R}var F=I;s.o5(F),D.b1h(N),r=r-N|0,z=!1;var U=Ti(n,T);if(null==U)break n;T=U,z=!0}}finally{z&&zi(n,T)}}}s.o5(e.x1n());break t}catch(t){if(t instanceof Error){var H=t.message;throw new oe("Failed to decode bytes: "+(null==H?"no cause provided":H))}throw t}if(r>0)throw new ye("Not enough bytes available: had only "+(i-r|0)+" instead of "+i);return s.toString()}(t,n,i)}((i=i===F?se().l1k_1:i).o1k(),t,n)}function _i(t,n,i,e,r){if(i=i===F?0:i,e=e===F?_t(n):e,(r=r===F?se().l1k_1:r)===se().l1k_1)return function(t,n,i,e){var r=i,s=Ii(t,1,null);try{var o;t:for(;;){var u=s,a=Ci(u.v1b_1,n,r,e,u.x1b_1,u.z1b_1),h=mi(a),_=gi(a);r=r+(65535&yt(h))|0;var l=65535&yt(_);if(u.c1h(l),(o=0==(65535&yt(h))&&r>>16|0);return St(n)}(t)}function gi(t){return function(t){var n=xt(65535&t);return St(n)}(t)}function bi(t){wt(t,this),K(this,bi)}function $i(t){throw new bi("Expected "+t+" more character bytes")}function yi(t){return 0==(t>>>16|0)}function ki(t){return t<=1114111}function xi(t){throw T("Malformed code-point "+t+" found")}function Si(t){return 55232+(t>>>10|0)|0}function Ei(t){return 56320+(1023&t)|0}function Ci(t,n,i,e,r,s){Et();var o=St(-1),u=i+(65535&yt(o))|0,a=Math.min(e,u);Et();var h=St(-1),_=65535&yt(h),l=gt(s,_),c=r,f=i;t:for(;;){if(c>=l||f>=a)return pi(St(xt(f-i|0)),St(xt(c-r|0)));var v=f;f=v+1|0;var d=Ct(n,v),w=65535&bt(d);if(0!=(65408&w))break t;var p=c;c=p+1|0;var m=$t(w);t.a1h_1.setInt8(p,m)}return function(t,n,i,e,r,s,o,u){var a=i,h=s,_=o-3|0;for(;!((_-h|0)<=0||a>=e);){var l=a;a=l+1|0;var c,f=Ct(n,l);if(Ot(f)){var v;if(a!==e&&qt(Ct(n,a))){var d=a;a=d+1|0,v=qi(f,Ct(n,d))}else v=63;c=v}else c=bt(f);var w,p=c,m=h;if(0<=p&&p<=127){var g=$t(p);t.a1h_1.setInt8(m,g),w=1}else if(128<=p&&p<=2047){var b=$t(192|p>>6&31);t.a1h_1.setInt8(m,b);var $=m+1|0,y=$t(128|63&p);t.a1h_1.setInt8($,y),w=2}else if(2048<=p&&p<=65535){var k=$t(224|p>>12&15);t.a1h_1.setInt8(m,k);var x=m+1|0,S=$t(128|p>>6&63);t.a1h_1.setInt8(x,S);var E=m+2|0,C=$t(128|63&p);t.a1h_1.setInt8(E,C),w=3}else if(65536<=p&&p<=1114111){var q=$t(240|p>>18&7);t.a1h_1.setInt8(m,q);var O=m+1|0,z=$t(128|p>>12&63);t.a1h_1.setInt8(O,z);var A=m+2|0,T=$t(128|p>>6&63);t.a1h_1.setInt8(A,T);var I=m+3|0,D=$t(128|63&p);t.a1h_1.setInt8(I,D),w=4}else xi(p);h=h+w|0}return h===_?function(t,n,i,e,r,s,o,u){var a=i,h=s;t:for(;;){var _=o-h|0;if(_<=0||a>=e)break t;var l=a;a=l+1|0;var c,f=Ct(n,l);if(Ot(f)){var v;if(a!==e&&qt(Ct(n,a))){var d=a;a=d+1|0,v=qi(f,Ct(n,d))}else v=63;c=v}else c=bt(f);var w,p=c;if(1<=p&&p<=127?w=1:128<=p&&p<=2047?w=2:2048<=p&&p<=65535?w=3:65536<=p&&p<=1114111?w=4:xi(p),w>_){a=a-1|0;break t}var m,g=h;if(0<=p&&p<=127){var b=$t(p);t.a1h_1.setInt8(g,b),m=1}else if(128<=p&&p<=2047){var $=$t(192|p>>6&31);t.a1h_1.setInt8(g,$);var y=g+1|0,k=$t(128|63&p);t.a1h_1.setInt8(y,k),m=2}else if(2048<=p&&p<=65535){var x=$t(224|p>>12&15);t.a1h_1.setInt8(g,x);var S=g+1|0,E=$t(128|p>>6&63);t.a1h_1.setInt8(S,E);var C=g+2|0,q=$t(128|63&p);t.a1h_1.setInt8(C,q),m=3}else if(65536<=p&&p<=1114111){var O=$t(240|p>>18&7);t.a1h_1.setInt8(g,O);var z=g+1|0,A=$t(128|p>>12&63);t.a1h_1.setInt8(z,A);var T=g+2|0,I=$t(128|p>>6&63);t.a1h_1.setInt8(T,I);var D=g+3|0,j=$t(128|63&p);t.a1h_1.setInt8(D,j),m=4}else xi(p);h=h+m|0}return pi(St(xt(a-r|0)),St(xt(h-u|0)))}(t,n,a,e,r,h,o,u):pi(St(xt(a-r|0)),St(xt(h-u|0)))}(t,n,f=f-1|0,a,i,c,l,r)}function qi(t,n){return(bt(t)-55232|0)<<10|bt(n)-56320|0}function Oi(){return Di(),c}function zi(t,n){if(Di(),n===t)return z;n.x1b_1>n.w1b_1?(n.a1c_1-n.z1b_1|0)<8?t.g1k(n):t.h1d_1=n.w1b_1:t.f1k(n)}function Ai(t,n){return Di(),t.d1k(n)}function Ti(t,n){return Di(),n===t?t.b1e()?t:null:t.e1k(n)}function Ii(t,n,i){return Di(),null!=i&&t.x1g(),t.j1j(n)}function Di(){f||(f=!0,c=new Int8Array(0))}function ji(t,n,i){j.call(this,i),this.o1l_1=t,this.p1l_1=n}function Mi(t,n,i){j.call(this,i),this.c1l_1=t,this.d1l_1=n}function Ni(){this.d19_1=U(null)}function Ri(t,n,i,e){j.call(this,e),this.y1l_1=t,this.z1l_1=n,this.a1m_1=i}function Pi(t,n,i,e){j.call(this,e),this.n1m_1=t,this.o1m_1=n,this.p1m_1=i}function Li(){Ae.call(this,128)}function Fi(){}function Ui(){}function Hi(t){return function(n){return t.l1n_1=null,null!=n&&t.dr(function(t){for(var n=t;n instanceof W;){if(ut(n,n.cause))return t;var i=n.cause;if(null==i)return n;n=i}return n}(n)),z}}function Vi(t,n){cn.call(this,t,n),this.l1n_1=null}function Bi(){var t=new Vi(di().l1f_1,!1);return t.o11(null),t}function Yi(){w=this,this.w1m_1=Tt(Bi)}function Wi(){return null==w&&new Yi,w}function Gi(){}function Ki(){}function Xi(t,n,i,e){return i=i===F?0:i,e=e===F?n.byteLength-i|0:e,new Qi(new DataView(n,i,e))}function Ji(){m=this,this.k1k_1=new Qi(new DataView(new ArrayBuffer(0)))}function Zi(){return null==m&&new Ji,m}function Qi(t){Zi(),this.a1h_1=t}function te(t,n,i,e,r){!function(t,n,i,e,r){var s=new Int8Array(t,i,e);new Int8Array(n.a1h_1.buffer,n.a1h_1.byteOffset+r|0,e).set(s,0)}(t.buffer,n,i+t.byteOffset|0,e,r)}function ne(){}function ie(t){this.n1k_1=t}function ee(t){return t.n1k_1}function re(){b=this,this.l1k_1=new he("UTF-8"),this.m1k_1=new he("ISO-8859-1")}function se(){return null==b&&new re,b}function oe(t){Lt(this,t),K(this,oe)}function ue(t){this.o1n_1=t}function ae(t){this.p1n_1=t}function he(t){ie.call(this,t),this.r1n_1=t}function _e(t){ae.call(this,t),this.t1n_1=t}function le(t){ue.call(this,t),this.v1n_1=t}function ce(t,n,i,e,r){if(!(i<=e))throw T(A("Failed requirement."));if(fe(t).equals(se().m1k_1))return function(t,n,i,e){if(n>=i)return 0;var r=e.v1b_1,s=e.x1b_1,o=e.z1b_1,u=r.m1n(s,o-s|0).a1h_1,a=new Int8Array(u.buffer,u.byteOffset,u.byteLength),h=0,_=n;if(_255&&me(f);var v=h;h=v+1|0,a[v]=$t(f)}while(_0;){var a=e-o|0,h=u/6|0,_=Math.min(a,h),l=mt(_,1),c=Ot(Ct(n,(o+l|0)-1|0)),f=c&&1===l?o+2|0:c?(o+l|0)-1|0:o+l|0,v=A(Ft(n,o,f)),d=s.encode(v);if(d.length>u)break t;ge(r,d),o=f,u=u-d.length|0}return o-i|0}function fe(t){return t.p1n_1}function ve(t){return t.o1n_1}function de(){return $}function we(t,n){this.y1n_1=t,this.z1n_1=n}function pe(t,n,i){if(0===i)return new we("",0);try{var e=gt(i,t.byteLength),r=n.a1o(t.subarray(0,e));if(r.length<=i)return new we(r,e)}catch(t){}return function(t,n,i){for(var e=gt(i>=268435455?at.MAX_VALUE:q(i,8),t.byteLength);e>8;){try{var r=n.a1o(t.subarray(0,e));if(r.length<=i)return new we(r,e)}catch(t){}e=e/2|0}for(e=8;e>0;){try{var s=n.a1o(t.subarray(0,e));if(s.length<=i)return new we(s,e)}catch(t){}e=e-1|0}t:try{n.a1o(t);break t}catch(t){if(t instanceof Error){var o=t.message;throw new oe("Failed to decode bytes: "+(null==o?"no cause provided":o))}throw t}throw new oe("Unable to decode buffer")}(t,n,i)}function me(t){throw new oe("The character with unicode point "+t+" couldn't be mapped to ISO-8859-1 character")}function ge(t,n,i,e){i=i===F?0:i,e=e===F?n.byteLength-i|0:e;var r=t.v1b_1,s=t.x1b_1;if((t.z1b_1-s|0)=0))throw T(A("Failed requirement."));if(this.zb_1=1,(t=this.h1f_1.j1f(this.i1f_1,this))===M())return t;continue t;case 1:this.h1f_1.a1e();var n=this.h1f_1.y19();if(null!=n)throw n;return!this.h1f_1.o1a()&&this.h1f_1.m1a()>=this.i1f_1;case 2:throw this.cc_1}}catch(t){var i=t;if(2===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},N(cn).p1f=function(){return this.o18_1},N(cn).z19=function(){return!(null==this.u18_1.kotlinx$atomicfu$value)},N(cn).m1a=function(){return this.s18_1.kotlinx$atomicfu$value},N(cn).n1a=function(){var t=4088-this.t18_1.kotlinx$atomicfu$value|0;return Math.max(0,t)},N(cn).o1a=function(){return!(t=this,n=t.u18_1.kotlinx$atomicfu$value,null==(null==n?null:n.c19_1)&&(!this.z19()||0!==this.t18_1.kotlinx$atomicfu$value));var t,n},N(cn).y19=function(){var t=this.u18_1.kotlinx$atomicfu$value;return null==t?null:t.c19_1},N(cn).u1b=function(t,n){var i=new nn(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).j1f=function(t,n){var i=new en(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).q1f=function(){Xt(this)},N(cn).a1e=function(){this.a19_1,function(t,n){Di();var i=n.n(),e=n.w19();if(null==e)return 0;var r=e;i<=$e()&&null==r.fz()&&t.z1j(r)?n.k1j():t.y1j(r)}(this.w18_1,this.b19_1)},N(cn).r1f=function(t,n){var i=new rn(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).s1f=function(t,n,i,e){var r=new sn(this,t,n,i,e);return r.bc_1=z,r.cc_1=null,r.mc()},N(cn).n1d=function(t){(function(t,n){if(!(n>=0))throw T(A("Can't read negative amount of bytes: "+n));if(t.t18_1.atomicfu$getAndAdd(0|-n),t.q18_1.atomicfu$addAndGet$long(I(n)),t.s18_1.atomicfu$getAndAdd(0|-n),!(t.t18_1.kotlinx$atomicfu$value>=0)){var i="Readable bytes count is negative: "+t.m1a()+", "+n+" in "+t;throw D(A(i))}if(!(t.m1a()>=0)){var e="Readable bytes count is negative: "+t.m1a()+", "+n+" in "+t;throw D(A(e))}})(this,t),this.z18_1.e19()},N(cn).t1f=function(t,n){var i=new on(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).v1f=function(t,n){return this.w1f(t instanceof kn?t:B(),n)},N(cn).w1f=function(t,n){var i=new an(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).x1f=function(t,n,i,e){var r=new hn(this,t,n,i,e);return r.bc_1=z,r.cc_1=null,r.mc()},N(cn).y1f=function(t){var n=new _n(this,t);return n.bc_1=z,n.cc_1=null,n.mc()},N(cn).p1d=function(t,n){var i=new ln(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(cn).dr=function(t){return null==this.y19()&&!this.z19()&&this.o11(null==t?Y("Channel cancelled"):t)},N(cn).o11=function(t){var n=null==t?vn():new dn(t);return!!this.u18_1.atomicfu$compareAndSet(null,n)&&(null!=t?(this.w18_1.ls(),this.v18_1.ls(),this.b19_1.ls()):(this.q1f(),this.v18_1.ls()),this.z18_1.z1f(t),!0)},N(cn).a1g=function(t,n){var i,e=this.w18_1.l1d();return e.z9(n)<=0?(t.v18_1.b1g(this.w18_1),t.b1c(e.ia()),this.n1d(e.ia()),i=e):i=new L(0,0),i},N(cn).b1c=function(t){(function(t,n){if(!(n>=0))throw T(A("Can't write negative amount of bytes: "+n));if(t.t18_1.atomicfu$getAndAdd(n),t.r18_1.atomicfu$addAndGet$long(I(n)),!(t.t18_1.kotlinx$atomicfu$value>=0)){var i="Readable bytes count is negative: "+t.t18_1.kotlinx$atomicfu$value+", "+n+" in "+t;throw D(A(i))}})(this,t),this.z19()&&(this.v18_1.ls(),function(t){if(t.z19()){var n=t.y19();throw null==n?new fn("Channel "+t+" is already closed"):n}}(this)),(this.p1f()||0===this.n1a())&&this.q1f()},N(pn).by=function(){return this.e1g_1},N(pn).on=function(){return this.d1g_1.on()},N(pn).bm=function(){return this.d1g_1.bm()},N(pn).g2=function(){return this.d1g_1.g2()},N(pn).um=function(){return this.d1g_1.um()},N(pn).pn=function(t){return this.d1g_1.pn(t)},N(pn).hn=function(t){this.d1g_1.hn(t)},N(pn).ig=function(t,n){return this.d1g_1.ig(t,n)},N(pn).hc=function(t){return this.d1g_1.hc(t)},N(pn).zm=function(){return this.d1g_1.zm()},N(pn).dn=function(t,n,i){return this.d1g_1.dn(t,n,i)},N(pn).cn=function(t){return this.d1g_1.cn(t)},N(pn).hg=function(t){return this.d1g_1.hg(t)},N(pn).jg=function(t){return this.d1g_1.jg(t)},N(pn).xm=function(){return this.d1g_1.xm()},N(pn).toString=function(){return"ChannelJob["+this.d1g_1+"]"},N(mn).by=function(){return this.f1g_1},N(mn).am=function(){return this.g1g_1.am()},N(gn).v1g=function(t,n){var i=this.w1g(t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(gn).zc=function(t,n){return this.v1g(null!=t&&rt(t,J)?t:B(),n)},N(gn).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=3,this.p1g_1&&this.q1g_1.c1g(O(this.t1g_1.am().hc(st)));var n=new mn(this.t1g_1,this.q1g_1);if(this.u1g_1=rt(n,J)?n:B(),this.ac_1=2,this.zb_1=1,(t=this.r1g_1(this.u1g_1,this))===M())return t;continue t;case 1:this.ac_1=3,this.zb_1=4;continue t;case 2:if(this.ac_1=3,this.cc_1 instanceof Error){var i=this.cc_1;if(!ut(this.s1g_1,ot().qs_1)&&null!=this.s1g_1)throw i;this.q1g_1.dr(i),this.zb_1=4;continue t}throw this.cc_1;case 3:throw this.cc_1;case 4:return this.ac_1=3,z}}catch(t){var e=t;if(3===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},N(gn).w1g=function(t,n){var i=new gn(this.p1g_1,this.q1g_1,this.r1g_1,this.s1g_1,n);return i.t1g_1=t,i},N(yn).z1g=function(){return di().l1f_1},N(kn).b1h=function(t){if(0===t)return z;var n=this.w1b_1+t|0;(t<0||n>this.x1b_1)&&xn(t,this.x1b_1-this.w1b_1|0),this.w1b_1=n},N(kn).c1h=function(t){var n=this.x1b_1+t|0;(t<0||n>this.z1b_1)&&Sn(t,this.z1b_1-this.x1b_1|0),this.x1b_1=n},N(kn).d1h=function(t){var n=this.z1b_1;if(t=n){if(t===n)return this.x1b_1=t,!1;Sn(t-this.x1b_1|0,this.z1b_1-this.x1b_1|0)}return this.x1b_1=t,!0},N(kn).e1h=function(t){(t<0||t>this.x1b_1)&&xn(t-this.w1b_1|0,this.x1b_1-this.w1b_1|0),this.w1b_1!==t&&(this.w1b_1=t)},N(kn).f1h=function(t){var n=this.w1b_1-t|0;n=0))throw T(A("startGap shouldn't be negative: "+t));return this.w1b_1>=t?(this.y1b_1=t,z):this.w1b_1===this.x1b_1?(t>this.z1b_1&&function(t,n){if(n>t.a1c_1)throw T("Start gap "+n+" is bigger than the capacity "+t.a1c_1);var i=t.a1c_1-t.z1b_1|0;throw D("Unable to reserve "+n+" start gap: there are already "+i+" bytes reserved in the end")}(this,t),this.x1b_1=t,this.w1b_1=t,this.y1b_1=t,z):void function(t,n){var i="Unable to reserve "+n+" start gap: ",e=t.x1b_1-t.w1b_1|0;throw D(i+"there are already "+e+" content bytes starting at offset "+t.w1b_1)}(this,t)},N(kn).h1h=function(t){if(!(t>=0))throw T(A("endGap shouldn't be negative: "+t));var n=this.a1c_1-t|0;return n>=this.x1b_1?(this.z1b_1=n,z):(n<0&&function(t,n){throw T("End gap "+n+" is too big: capacity is "+t.a1c_1)}(this,t),n=0))throw T(A("newReadPosition shouldn't be negative: "+t));if(!(t<=this.w1b_1)){var n="newReadPosition shouldn't be ahead of the read position: "+t+" > "+this.w1b_1;throw T(A(n))}this.w1b_1=t,this.y1b_1>t&&(this.y1b_1=t)},N(kn).o1h=function(t){t.z1b_1=this.z1b_1,t.y1b_1=this.y1b_1,t.w1b_1=this.w1b_1,t.x1b_1=this.x1b_1},N(kn).p1h=function(){var t=this.w1b_1;if(t===this.x1b_1)throw new ye("No readable bytes available.");return this.w1b_1=t+1|0,this.v1b_1.a1h_1.getInt8(t)},N(kn).q1h=function(t){var n=this.x1b_1;if(n===this.z1b_1)throw new Cn("No free space in the buffer to write a byte");this.v1b_1.a1h_1.setInt8(n,t),this.x1b_1=n+1|0},N(kn).r1h=function(){this.l1h(),this.j1h()},N(kn).toString=function(){return"Buffer[0x"+ft(ct(this),16)+"]("+(this.x1b_1-this.w1b_1|0)+" used, "+(this.z1b_1-this.x1b_1|0)+" free, "+(this.y1b_1+(this.a1c_1-this.z1b_1|0)|0)+" reserved of "+this.a1c_1+")"},N(zn).y1h=function(){return new wi(this.x1h_1.z1h(this.w1h_1),null,this)},N(zn).a1i=function(t){this.x1h_1.b1i(t.v1b_1),N(Ae).f1i.call(this,t),t.q1i()},N(zn).f1i=function(t){return this.a1i(t instanceof wi?t:B())},N(zn).r1i=function(t){N(Ae).s1i.call(this,t);var n=t.v1b_1;if(!I(n.a1h_1.byteLength).equals(I(this.w1h_1))){var i=t.v1b_1,e=I(i.a1h_1.byteLength),r="Buffer size mismatch. Expected: "+this.w1h_1+", actual: "+e.toString();throw D(A(r))}if(t===di().l1f_1)throw D(A("ChunkBuffer.Empty couldn't be recycled"));if(t===o.z1g())throw D(A("Empty instance couldn't be recycled"));if(0!==t.t1i())throw D(A("Unable to clear buffer: it is still in use."));if(null!=t.fz())throw D(A("Recycled instance shouldn't be a part of a chain."));if(null!=t.p1i_1)throw D(A("Recycled instance shouldn't be a view or another buffer."))},N(zn).s1i=function(t){return this.r1i(t instanceof wi?t:B())},N(zn).u1i=function(t){var n=N(Ae).v1i.call(this,t);return n.w1i(),n.r1h(),n},N(zn).v1i=function(t){return this.u1i(t instanceof wi?t:B())},N(Rn).n=function(){return this.c1j()},N(Rn).n19=function(){return 0===this.c1j()},N(Rn).d1j=function(){},N(Rn).e1j=function(t,n,i){},N(Rn).p5=function(t){var n=N(ri).p5.call(this,t);return n instanceof Rn?n:B()},N(Rn).p7=function(t){var n=N(ri).p7.call(this,t);return n instanceof Rn?n:B()},N(Rn).q7=function(t,n,i){var e=N(ri).q7.call(this,t,n,i);return e instanceof Rn?e:B()},N(Rn).o1d=function(){var t=this.n(),n=this.w19();return null==n?Fn().f1j_1:new Un(n,I(t),this.o19_1)},N(Rn).toString=function(){return"BytePacketBuilder[0x"+ct(this)+"]"},N(Un).t1j=function(){return null},N(Un).u1j=function(t,n,i){return 0},N(Un).v1j=function(){},N(Un).toString=function(){return"ByteReadPacket["+ct(this)+"]"},N(Zn).y1e=function(){return!(0!=(this.i1d_1-this.h1d_1|0)||!this.j1d_1.equals(new L(0,0))||!this.k1d_1&&null!=Wn(this))},N(Zn).g1j=function(){var t=this.f1d_1;return t.e1h(this.h1d_1),t},N(Zn).w1j=function(t){if(!(t.z9(new L(0,0))>=0)){var n="tailRemaining shouldn't be negative: "+t.toString();throw T(A(n))}this.j1d_1=t},N(Zn).l1d=function(){var t=this.i1d_1-this.h1d_1|0;return I(t).db(this.j1d_1)},N(Zn).b1e=function(){return this.h1d_1!==this.i1d_1||!this.j1d_1.equals(new L(0,0))},N(Zn).ls=function(){var t=this.g1j(),n=di().l1f_1;t!==n&&(Hn(this,n),this.w1j(new L(0,0)),Nn(t,this.e1d_1))},N(Zn).z1i=function(){this.ls(),this.k1d_1||(this.k1d_1=!0),this.v1j()},N(Zn).w19=function(){var t=this.g1j(),n=di().l1f_1;return t===n?null:(Hn(this,n),this.w1j(new L(0,0)),t)},N(Zn).x1j=function(){var t=this.g1j(),n=t.fz(),i=di().l1f_1;if(t===i)return null;if(null==n)Hn(this,i),this.w1j(new L(0,0));else{Hn(this,n);var e=this.j1d_1,r=n.x1b_1-n.w1b_1|0,s=e.eb(I(r));this.w1j(s)}return t.j1k(null),t},N(Zn).y1j=function(t){if(t===di().l1f_1)return z;var n=jn(t);if(this.f1d_1===di().l1f_1){Hn(this,t);var i=this.i1d_1-this.h1d_1|0,e=n.eb(I(i));this.w1j(e)}else Mn(this.f1d_1).j1k(t),this.w1j(this.j1d_1.db(n))},N(Zn).z1j=function(t){var n=Mn(this.g1j()),i=t.x1b_1-t.w1b_1|0;if(0===i||(n.z1b_1-n.x1b_1|0)=0))throw T(A("Negative discard is not allowed: "+t));return function(t,n,i){for(var e=n,r=i;;){if(0===e)return r;var s=t.h1k(1);if(null==s)return r;var o=s,u=o.x1b_1-o.w1b_1|0,a=e,h=Math.min(u,a);o.b1h(h),t.h1d_1=t.h1d_1+h|0,Xn(t,o),e=e-h|0,r=r+h|0}}(this,t,0)},N(Zn).b1h=function(t){if(this.a1k(t)!==t)throw new ye("Unable to discard "+t+" bytes due to end of packet")},N(Zn).b1k=function(t,n){if(0===t&&(0===n||this.y1e()))return"";var i=this.l1d();if(i.z9(new L(0,0))>0&&I(n).z9(i)>=0)return hi(this,i.ia());var e=gt(mt(t,16),n),r=ht(e);return Vn(this,r,t,n),r.toString()},N(Zn).c1k=function(t,n,i){return t=t===F?0:t,n=n===F?at.MAX_VALUE:n,i===F?this.b1k(t,n):i.b1k.call(this,t,n)},N(Zn).d1k=function(t){return Gn(this,t,this.g1j())},N(Zn).e1k=function(t){return this.f1k(t)},N(Zn).f1k=function(t){return function(t,n,i){for(var e=t,r=n,s=i;;){if(r===s)return Wn(e);var o=r.a1j();if(r.b1j(e.e1d_1),null!=o){if(o.x1b_1>o.w1b_1){Hn(e,o);var u=e,a=u.j1d_1,h=o.x1b_1-o.w1b_1|0,_=a.eb(I(h));return u.w1j(_),o}r=o}else Hn(e,s),e.w1j(new L(0,0)),r=s}}(this,t,di().l1f_1)},N(Zn).g1k=function(t){var n=t.fz();if(null==n)return Yn(this,t);var i,e,r=n,s=t.x1b_1-t.w1b_1|0,o=8-(t.a1c_1-t.z1b_1|0)|0,u=Math.min(s,o);if(r.y1b_1u){t.n1h(),this.i1d_1=t.x1b_1;var a=this.j1d_1.db(I(u));this.w1j(a)}else{Hn(this,r);var h=this.j1d_1,_=(r.x1b_1-r.w1b_1|0)-u|0,l=h.eb(I(_));this.w1j(l),t.a1j(),t.b1j(this.e1d_1)}},N(Zn).t1j=function(){var t=this.e1d_1.x1i();try{t.h1h(8);var n=t.x1b_1,i=t.z1b_1-t.x1b_1|0,e=this.u1j(t.v1b_1,n,i);return 0!==e||(this.k1d_1=!0,t.x1b_1>t.w1b_1)?(t.c1h(e),t):(t.b1j(this.e1d_1),null)}catch(n){if(n instanceof Error){var r=n;throw t.b1j(this.e1d_1),r}throw n}},N(Zn).l1j=function(){this.k1d_1||(this.k1d_1=!0)},N(Zn).h1k=function(t){var n=this.g1j();return(this.i1d_1-this.h1d_1|0)>=t?n:Gn(this,t,n)},N(Zn).i1k=function(t){var n=t.a1j(),i=null==n?di().l1f_1:n;Hn(this,i);var e=this.j1d_1,r=i.x1b_1-i.w1b_1|0,s=e.eb(I(r));return this.w1j(s),t.b1j(this.e1d_1),i},N(ri).c1j=function(){return this.v19_1+(this.s19_1-this.u19_1|0)|0},N(ri).g1j=function(){var t=this.p19_1;return null==t?di().l1f_1:t},N(ri).q1f=function(){!function(t){var n=t.w19();if(null==n)return z;var i=n;try{var e=i;t:for(;;){var r=e,s=r.w1b_1,o=r.x1b_1-r.w1b_1|0;t.e1j(r.v1b_1,s,o);var u=e.fz();if(null==u)break t;e=u}}finally{Nn(i,t.o19_1)}}(this)},N(ri).w19=function(){var t=this.p19_1;if(null==t)return null;var n=t,i=this.q19_1;return null==i||i.d1h(this.s19_1),this.p19_1=null,this.q19_1=null,this.s19_1=0,this.t19_1=0,this.u19_1=0,this.v19_1=0,this.r19_1=Zi().k1k_1,n},N(ri).h1j=function(t){if(null!=t.fz())throw D(A("It should be a single buffer chunk."));ii(this,t,t,0)},N(ri).i1j=function(t){var n=Mn(t),i=jn(t),e=n.x1b_1-n.w1b_1|0,r=i.eb(I(e));r.z9(I(at.MAX_VALUE))>=0&&function(t,n){throw T("Long value "+t.toString()+" of "+n+" doesn't fit into 32-bit integer")}(r,"total size increase"),ii(this,t,n,r.ia())},N(ri).q1h=function(t){var n=this.s19_1;return n=3){var i,e=this.r19_1,r=bt(t);if(0<=r&&r<=127){var s=$t(r);e.a1h_1.setInt8(n,s),i=1}else if(128<=r&&r<=2047){var o=$t(192|r>>6&31);e.a1h_1.setInt8(n,o);var u=n+1|0,a=$t(128|63&r);e.a1h_1.setInt8(u,a),i=2}else if(2048<=r&&r<=65535){var h=$t(224|r>>12&15);e.a1h_1.setInt8(n,h);var _=n+1|0,l=$t(128|r>>6&63);e.a1h_1.setInt8(_,l);var c=n+2|0,f=$t(128|63&r);e.a1h_1.setInt8(c,f),i=3}else if(65536<=r&&r<=1114111){var v=$t(240|r>>18&7);e.a1h_1.setInt8(n,v);var d=n+1|0,w=$t(128|r>>12&63);e.a1h_1.setInt8(d,w);var p=n+2|0,m=$t(128|r>>6&63);e.a1h_1.setInt8(p,m);var g=n+3|0,b=$t(128|63&r);e.a1h_1.setInt8(g,b),i=4}else xi(r);var $=i;return this.s19_1=n+$|0,this}return function(t,n){t:{var i=t.j1j(3);try{var e,r=i.v1b_1,s=i.x1b_1,o=bt(n);if(0<=o&&o<=127){var u=$t(o);r.a1h_1.setInt8(s,u),e=1}else if(128<=o&&o<=2047){var a=$t(192|o>>6&31);r.a1h_1.setInt8(s,a);var h=s+1|0,_=$t(128|63&o);r.a1h_1.setInt8(h,_),e=2}else if(2048<=o&&o<=65535){var l=$t(224|o>>12&15);r.a1h_1.setInt8(s,l);var c=s+1|0,f=$t(128|o>>6&63);r.a1h_1.setInt8(c,f);var v=s+2|0,d=$t(128|63&o);r.a1h_1.setInt8(v,d),e=3}else if(65536<=o&&o<=1114111){var w=$t(240|o>>18&7);r.a1h_1.setInt8(s,w);var p=s+1|0,m=$t(128|o>>12&63);r.a1h_1.setInt8(p,m);var g=s+2|0,b=$t(128|o>>6&63);r.a1h_1.setInt8(g,b);var $=s+3|0,y=$t(128|63&o);r.a1h_1.setInt8($,y),e=4}else xi(o);var k=e;if(i.c1h(k),!(k>=0))throw D(A("The returned value shouldn't be negative"));break t}finally{t.x1g()}}}(this,t),this},N(ri).p7=function(t){return null==t?this.q7("null",0,4):this.q7(t,0,_t(t)),this},N(ri).q7=function(t,n,i){return null==t?this.q7("null",n,i):(_i(this,t,n,i,se().l1k_1),this)},N(ri).b1g=function(t){var n=t.w19();if(null==n)return t.ls(),z;var i=this.q19_1;if(null==i)return this.i1j(n),z;ei(this,i,n,t.e1d_1)},N(ri).x19=function(t){var n=this.q19_1;if(null==n)return this.i1j(t),z;ei(this,n,t,this.o19_1)},N(ri).m1d=function(t,n){var i=n;t:for(;i.z9(new L(0,0))>0;){var e=t.i1d_1-t.h1d_1|0,r=I(e);if(!(r.z9(i)<=0)){var s,o=t.h1k(1);null==o?ai(1):s=o;var u=s,a=u.w1b_1;try{si(this,u,i.ia())}finally{var h=u.w1b_1;if(h=t){var n=this.q19_1;if(null!=n)return n.d1h(this.s19_1),n}return ni(this)},N(ri).x1g=function(){var t=this.q19_1;null==t||(this.s19_1=t.x1b_1)},N(ri).k1j=function(){var t=this.g1j();if(t!==di().l1f_1){if(null!=t.fz())throw D(A("Check failed."));t.j1h(),t.h1h(8),this.s19_1=t.x1b_1,this.u19_1=this.s19_1,this.t19_1=t.z1b_1}},N(li).x1i=function(){return di().l1f_1},N(li).q1k=function(t){if(t!==di().l1f_1)throw T(A("Only ChunkBuffer.Empty instance could be recycled."))},N(li).y1i=function(t){return this.q1k(t instanceof wi?t:B())},N(li).mp=function(){},N(ci).x1i=function(){return new wi(p.z1h(a),null,this)},N(ci).q1k=function(t){p.b1i(t.v1b_1)},N(ci).y1i=function(t){return this.q1k(t instanceof wi?t:B())},N(fi).x1i=function(){throw kt("This pool doesn't support borrow")},N(fi).q1k=function(t){},N(fi).y1i=function(t){return this.q1k(t instanceof wi?t:B())},N(vi).o1f=function(){return On()},N(wi).j1k=function(t){null==t?this.a1j():function(t,n){if(!t.n1i_1.atomicfu$compareAndSet(null,n))throw D("This chunk has already a next chunk.")}(this,t)},N(wi).fz=function(){return this.n1i_1.kotlinx$atomicfu$value},N(wi).t1i=function(){return this.o1i_1.kotlinx$atomicfu$value},N(wi).a1j=function(){return this.n1i_1.atomicfu$getAndSet(null)},N(wi).r1k=function(){var t=this.p1i_1,n=null==t?this:t;n.s1k();var i=new wi(this.v1b_1,n,this.m1i_1);return this.o1h(i),i},N(wi).b1j=function(t){if(this.t1k()){var n=this.p1i_1;if(null!=n)this.q1i(),n.b1j(t);else{var i=this.m1i_1;(null==i?t:i).y1i(this)}}},N(wi).q1i=function(){if(!this.o1i_1.atomicfu$compareAndSet(0,-1))throw D("Unable to unlink: buffer is in use.");this.a1j(),this.p1i_1=null},N(wi).s1k=function(){t:for(var t=this.o1i_1;;){var n=t.kotlinx$atomicfu$value;if(n<=0)throw D("Unable to acquire chunk: it is already released.");var i=n+1|0;if(t.atomicfu$compareAndSet(n,i))break t}},N(wi).w1i=function(){t:for(var t=this.o1i_1;;){var n=t.kotlinx$atomicfu$value;if(n<0)throw D("This instance is already disposed and couldn't be borrowed.");if(n>0)throw D("This instance is already in use but somehow appeared in the pool.");if(t.atomicfu$compareAndSet(n,1))break t}},N(wi).t1k=function(){var t;t:for(var n=this.o1i_1;;){var i=n.kotlinx$atomicfu$value;if(i<=0)throw D("Unable to release: it is already released.");var e=i-1|0;if(n.atomicfu$compareAndSet(i,e)){t=e;break t}}return 0===t},N(wi).r1h=function(){if(null!=this.p1i_1)throw T(A("Unable to reset buffer with origin"));N(kn).r1h.call(this),this.n1i_1.kotlinx$atomicfu$value=null},N(ji).mc=function(){var t,n,i,e=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.zb_1=1,t=this.o1l_1,n=this.p1l_1,i=void 0,(i=new Mi(t,n,this)).bc_1=z,i.cc_1=null,(e=i.mc())===M())return e;continue t;case 1:if(e)return z;this.zb_1=2;continue t;case 2:return this.o1l_1.e19(),z;case 3:throw this.cc_1}}catch(t){var r=t;if(3===this.ac_1)throw r;this.zb_1=this.ac_1,this.cc_1=r}},N(Mi).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=3,this.e1l_1=!1,this.f1l_1=zt(),this.c1l_1.d19_1.atomicfu$compareAndSet(null,this.f1l_1)&&this.d1l_1()){if(this.e1l_1=!0,this.zb_1=1,(t=this.f1l_1.fs(this))===M())return t;continue t}this.zb_1=2;continue t;case 1:this.zb_1=2;continue t;case 2:return this.e1l_1;case 3:throw this.cc_1}}catch(t){var n=t;if(3===this.ac_1)throw n;this.zb_1=this.ac_1,this.cc_1=n}},N(Ni).z1a=function(t,n){var i=new ji(this,t,n);return i.bc_1=z,i.cc_1=null,i.mc()},N(Ni).e19=function(){var t=this.d19_1.atomicfu$getAndSet(null);null==t||t.es()},N(Ni).z1f=function(t){var n=this.d19_1.atomicfu$getAndSet(null);if(null==n)return z;var i=n;null!=t?i.ds(t):i.es()},N(Ri).mc=function(){var t,n,i,e,r=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:if(this.ac_1=10,this.y1l_1===this.z1l_1)throw T(A("Failed requirement."));if(null!=this.y1l_1.y19())return this.z1l_1.o11(this.y1l_1.y19()),new L(0,0);this.b1m_1=this.a1m_1,this.zb_1=1;continue t;case 1:if(!(this.b1m_1.z9(new L(0,0))>0)){this.zb_1=9;continue t}if(this.zb_1=2,(r=this.y1l_1.y1f(this))===M())return r;continue t;case 2:if(this.c1m_1=r,this.c1m_1){this.zb_1=3;continue t}this.zb_1=9;continue t;case 3:if(this.d1m_1=this.y1l_1.a1g(this.z1l_1,this.b1m_1),this.d1m_1.equals(new L(0,0))){if(this.zb_1=6,t=this.y1l_1,n=this.z1l_1,i=this.b1m_1,e=void 0,(e=new Pi(t,n,i,this)).bc_1=z,e.cc_1=null,(r=e.mc())===M())return r;continue t}if(0===this.z1l_1.n1a()){if(this.zb_1=4,(r=this.z1l_1.u1b(1,this))===M())return r;continue t}this.zb_1=5;continue t;case 4:this.zb_1=5;continue t;case 5:this.e1m_1=this.d1m_1,this.zb_1=8;continue t;case 6:var s=r;if(s.equals(new L(0,0))){this.zb_1=9;continue t}this.zb_1=7;continue t;case 7:this.e1m_1=s,this.zb_1=8;continue t;case 8:var o=this.e1m_1;this.b1m_1=this.b1m_1.eb(o),o.z9(new L(0,0))>0&&this.z1l_1.q1f(),this.zb_1=1;continue t;case 9:return this.a1m_1.eb(this.b1m_1);case 10:throw this.cc_1}}catch(t){var u=t;if(10===this.ac_1)throw u;this.zb_1=this.ac_1,this.cc_1=u}},N(Pi).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=9,this.q1m_1=di().o1f().x1i(),this.zb_1=1;continue t;case 1:this.zb_1=2;continue t;case 2:if(this.ac_1=8,this.q1m_1.k1h(At(this.p1m_1,I(this.q1m_1.a1c_1)).ia()),this.zb_1=3,(t=this.n1m_1.v1f(this.q1m_1,this))===M())return t;continue t;case 3:if(this.s1m_1=t,-1===this.s1m_1){this.q1m_1.b1j(di().o1f()),this.r1m_1=new L(0,0),this.ac_1=9,this.zb_1=6;continue t}this.zb_1=4;continue t;case 4:if(this.zb_1=5,(t=this.o1m_1.r1f(this.q1m_1,this))===M())return t;continue t;case 5:this.r1m_1=I(this.s1m_1),this.ac_1=9,this.zb_1=6;continue t;case 6:var n=this.r1m_1;return this.ac_1=9,this.q1m_1.b1j(di().o1f()),n;case 7:return this.ac_1=9,this.q1m_1.b1j(di().o1f()),z;case 8:this.ac_1=9;var i=this.cc_1;throw this.q1m_1.b1j(di().o1f()),i;case 9:throw this.cc_1}}catch(t){var e=t;if(9===this.ac_1)throw e;this.zb_1=this.ac_1,this.cc_1=e}},N(Li).y1h=function(){return new Int8Array(4096)},N(Ui).y1i=function(t){},N(Ui).mp=function(){},N(Vi).c1g=function(t){var n=this.l1n_1;null==n||n.in(),this.l1n_1=t,t.en(!0,F,Hi(this))},N(Vi).toString=function(){return"ByteChannel["+this.l1n_1+", "+ct(this)+"]"},N(Yi).z1g=function(){var t=this.w1m_1;return jt("Empty",1,Dt,(function(t){return t.z1g()}),null),t.h2()},N(Ki).z1h=function(t){return new Qi(new DataView(new ArrayBuffer(t)))},N(Ki).b1i=function(t){},N(Qi).m1n=function(t,n){if(!(t>=0))throw T(A("offset shouldn't be negative: "+t));if(!(n>=0))throw T(A("length shouldn't be negative: "+n));var i=I(t+n|0),e=I(this.a1h_1.byteLength);if(i.z9(e)>0){var r=I(this.a1h_1.byteLength);throw Mt("offset + length > size: "+t+" + "+n+" > "+r.toString())}return new Qi(new DataView(this.a1h_1.buffer,this.a1h_1.byteOffset+t|0,n))},N(Qi).s1h=function(t,n,i,e){var r=new Int8Array(this.a1h_1.buffer,this.a1h_1.byteOffset+n|0,i);new Int8Array(t.a1h_1.buffer,t.a1h_1.byteOffset+e|0,i).set(r)},N(ne).n1n=function(t){switch(t){case"UTF-8":case"utf-8":case"UTF8":case"utf8":return se().l1k_1}var n;switch(t){case"ISO-8859-1":case"iso-8859-1":n=!0;break;default:var i=Rt(t,Nt(95),Nt(45));n="iso-8859-1"===i||"iso-8859-1"===i.toLowerCase()}if(n||"latin1"===t||"Latin1"===t)return se().m1k_1;throw T("Charset "+t+" is not supported")},N(ie).equals=function(t){return this===t||null!=t&&this.constructor==t.constructor&&(t instanceof ie||B(),this.n1k_1===t.n1k_1)},N(ie).hashCode=function(){return Pt(this.n1k_1)},N(ie).toString=function(){return this.n1k_1},N(he).p1k=function(){return new _e(this)},N(he).o1k=function(){return new le(this)},N(he).toString=function(){return"CharsetImpl(name="+this.r1n_1+")"},N(he).hashCode=function(){return Pt(this.r1n_1)},N(he).equals=function(t){if(this===t)return!0;if(!(t instanceof he))return!1;var n=t instanceof he?t:B();return this.r1n_1===n.r1n_1},N(_e).toString=function(){return"CharsetEncoderImpl(charset="+this.t1n_1+")"},N(_e).hashCode=function(){return this.t1n_1.hashCode()},N(_e).equals=function(t){if(this===t)return!0;if(!(t instanceof _e))return!1;var n=t instanceof _e?t:B();return!!this.t1n_1.equals(n.t1n_1)},N(le).toString=function(){return"CharsetDecoderImpl(charset="+this.v1n_1+")"},N(le).hashCode=function(){return this.v1n_1.hashCode()},N(le).equals=function(t){if(this===t)return!0;if(!(t instanceof le))return!1;var n=t instanceof le?t:B();return!!this.v1n_1.equals(n.v1n_1)},N(we).toString=function(){return"DecodeBufferResult(charactersDecoded="+this.y1n_1+", bytesConsumed="+this.z1n_1+")"},N(we).hashCode=function(){var t=Pt(this.y1n_1);return q(t,31)+this.z1n_1|0},N(we).equals=function(t){if(this===t)return!0;if(!(t instanceof we))return!1;var n=t instanceof we?t:B();return this.y1n_1===n.y1n_1&&this.z1n_1===n.z1n_1},N(Ce).x1n=function(){return this.b1o_1.decode()},N(Ce).a1o=function(t){return this.b1o_1.decode(t)},N(Ce).w1n=function(t,n){return this.b1o_1.decode(t,n)},N(qe).x1n=function(){return""},N(qe).a1o=function(t){var n;t:{var i=new Rn;try{var e=t instanceof Int8Array?t:B(),r=0,s=e.length;if(r255&&i.q1h($t(u>>8)),i.q1h($t(255&u))}while(r=(e=e===F?_t(n):e))return Oi();var s=di().o1f().x1i();try{var o;if((r=r+ce(t,n,r,e,s)|0)===e){var u=s.x1b_1-s.w1b_1|0,a=new Int8Array(u),h=a.length-0|0;return In(s instanceof kn?s:B(),a,0,h),a}t:{var _=new Rn;try{_.h1j(s.r1k()),$n(t,_,n,r,e),o=_.o1d();break t}catch(t){if(t instanceof Error){var l=t;throw _.ls(),l}throw t}}return ui(o)}finally{s.b1j(di().o1f())}}(t,n,i=i===F?0:i,e=e===F?_t(n):e)},t.$_$.k=function(t,n,i,e){var r;i=i===F?0:i,e=e===F?_t(n):e;t:{var s=new Rn;try{$n(t,s,n,i,e),r=s.o1d();break t}catch(t){if(t instanceof Error){var o=t;throw s.ls(),o}throw t}}return r},t.$_$.l=ee,t.$_$.m=zi,t.$_$.n=Ai,t.$_$.o=Ti,t.$_$.p=Rn,t.$_$.q=Un,t.$_$.r=be,t.$_$.s=Zn,t.$_$.t=function(t,n,i,e){n=n===F?0:n,i=i===F?t.length:i,e=e===F?se().l1k_1:e,(n<0||i<0||(n+i|0)>t.length)&&function(t,n,i){if(!(t>=0))throw Mt("offset ("+t+") shouldn't be negative");if(!(n>=0))throw Mt("length ("+n+") shouldn't be negative");if(!((t+n|0)<=i.length))throw Mt("offset ("+t+") + length ("+n+") > bytes.size ("+i.length+")");throw Ut()}(n,i,t);var r=t,s=r.byteOffset+n|0,o=r.buffer.slice(s,s+i|0),u=new wi(Xi(Zi(),o),null,di().m1f_1);u.i1h();var a=Pn(u,di().n1f_1);return bn(e.o1k(),a,at.MAX_VALUE)},t.$_$.u=function(t,n){},t.$_$.v=ui,t.$_$.w=function(t){var n;if((t.i1d_1-t.h1d_1|0)>2){var i=t.h1d_1;t.h1d_1=i+2|0,n=t.g1d_1.a1h_1.getInt16(i,!1)}else n=function(t){var n,i=Ai(t,2);null==i?ai(2):n=i;var e=n,r=function(t){var n,i=t.v1b_1,e=t.w1b_1;if((t.x1b_1-e|0)<2)throw new ye("Not enough bytes to read a short integer of size 2.");return n=i.a1h_1.getInt16(e,!1),t.b1h(2),n}(e);return zi(t,e),r}(t);return n},t.$_$.x=function(t,n,i){return n=n===F?se().l1k_1:n,i=i===F?at.MAX_VALUE:i,bn(n.o1k(),t,i)},t.$_$.y=oi,t.$_$.z=function(t,n){var i,e=t.s19_1;(t.t19_1-e|0)>2?(t.s19_1=e+2|0,t.r19_1.a1h_1.setInt16(e,n,!1),i=!0):i=!1,i||function(t,n){(function(t,n){var i=t.v1b_1,e=t.x1b_1,r=t.z1b_1-e|0;if(r<2)throw En("short integer",2,r);i.a1h_1.setInt16(e,n,!1),t.c1h(2)})(t.j1j(2),n),t.x1g()}(t,n)},t.$_$.a1=_i,t.$_$.b1=xe,t.$_$.c1=function(){return d||(d=!0,v=new Li),v},t.$_$.d1=function(t){return function(t,n,i){if(0===t.length)return Wi().z1g();var e=di().o1f().x1i(),r=e,s=n,o=s+i|0;t:for(;;){r.h1h(8);var u=o-s|0,a=r,h=a.z1b_1-a.x1b_1|0,_=Math.min(u,h);if(An(r instanceof kn?r:B(),t,s,_),(s=s+_|0)===o)break t;var l=r;r=di().o1f().x1i(),l.j1k(r)}var c=new Vi(e,!1);return f=c,f.o11(null),c;var f}(t,0,t.length)},t.$_$.e1=Gi,t.$_$.f1=wn,t.$_$.g1=function(t){return t.dr(null)},t.$_$.h1=function(t,n,i,e){return function(t,n,i,e,r){var s=t.am().hc(it()),o=et(t,n,F,(u=e,a=i,h=r,_=s,l=null,c=new gn(u,a,h,_,l),f=function(t,n){return c.v1g(t,n)},f.$arity=1,f));var u,a,h,_,l,c,f;return o.cn(function(t){return function(n){return t.o11(n),z}}(i)),new pn(o,i)}(t,n=n===F?X():n,function(t){return t=t!==F&&t,new Vi(di().l1f_1,t)}(i=i!==F&&i),!0,e)},t})?e.apply(n,r):e)||(t.exports=s)},754:function(t,n,i){var e,r,s;r=[n,i(675),i(229),i(485),i(205)],void 0===(s="function"==typeof(e=function(t,n,i,e,r){"use strict";var s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M,N,R,P,L,F,U,H,V,B,Y=Math.imul,W=n.$_$.u9,G=n.$_$.x1,K=n.$_$.gb,X=n.$_$.c,J=n.$_$.fg,Z=n.$_$.a5,Q=n.$_$.fa,tt=n.$_$.w9,nt=n.$_$.hb,it=n.$_$.ha,et=n.$_$.k9,rt=n.$_$.f,st=n.$_$.w8,ot=i.$_$.v,ut=n.$_$.v,at=n.$_$.z9,ht=n.$_$.ga,_t=n.$_$.m5,lt=n.$_$.vg,ct=n.$_$.j5,ft=n.$_$.qa,vt=n.$_$.s9,dt=n.$_$.t9,wt=n.$_$.z2,pt=e.$_$.c1,mt=n.$_$.z8,gt=e.$_$.i,bt=n.$_$.i9,$t=n.$_$.w5,yt=n.$_$.l,kt=n.$_$.o5,xt=n.$_$.lb,St=n.$_$.n5,Et=n.$_$.sf,Ct=n.$_$.fb,qt=n.$_$.v6,Ot=n.$_$.m,zt=n.$_$.u,At=n.$_$.q6,Tt=n.$_$.ca,It=n.$_$.e1,Dt=n.$_$.ud,jt=n.$_$.r2,Mt=n.$_$.w2,Nt=n.$_$.jd,Rt=r.$_$.d,Pt=n.$_$.yf,Lt=n.$_$.pf,Ft=n.$_$.ua,Ut=n.$_$.l5,Ht=n.$_$.eb,Vt=n.$_$.c5,Bt=n.$_$.p6,Yt=n.$_$.j7,Wt=n.$_$.m7,Gt=n.$_$.r7,Kt=e.$_$.x,Xt=n.$_$.aa,Jt=n.$_$.q9,Zt=e.$_$.r,Qt=(n.$_$.v4,n.$_$.a3),tn=n.$_$.ug,nn=n.$_$.b3,en=n.$_$.c3,rn=n.$_$.n4,sn=n.$_$.e9,on=n.$_$.ba,un=n.$_$.y8,an=n.$_$.l8,hn=n.$_$.zg,_n=n.$_$.cb,ln=n.$_$.wf,cn=n.$_$.w1,fn=n.$_$.d3,vn=n.$_$.ch;function dn(t){this.d1o_1=t;var n=this.d1o_1;if(0===W(n))throw G("Name can't be blank")}function wn(){}function pn(t,n){et.call(this,n),this.t1o_1=t}function mn(t){return t.u1o_1}function gn(t){return Fn(t)}function bn(t){return new kn(t.g2().u1o_1,t.h2())}function $n(t){return new kn(Fn(t.g2()),t.h2())}function yn(){this.w1o_1=ut()}function kn(t,n){this.c1p_1=t,this.d1p_1=n}function xn(){return new yn}function Sn(){mt.call(this,gt)}function En(t){this.g1p_1=t,this.f1p_1=t.h1p_1.v()}function Cn(t,n,i){this.h1p_1=t,this.i1p_1=n,this.j1p_1=i,this.k1p_1=this.h1p_1.n()}function qn(){if(h)return Z;h=!0,s=new On("Jvm",0),o=new On("Native",1),u=new On("Browser",2),a=new On("Node",3)}function On(t,n){Et.call(this,t,n)}function zn(){_=this,this.t1p_1=Ei().equals(Tn()),this.u1p_1=Ei().equals(In()),this.v1p_1=Ei().equals((qn(),s)),this.w1p_1=Ei().equals((qn(),o)),this.x1p_1=!1,this.y1p_1=!0}function An(){return null==_&&new zn,_}function Tn(){return qn(),u}function In(){return qn(),a}function Dn(){}function jn(t,n){var i,e=t.f1q_1.o2(n);if(null==e){var r=Ot();t.g1q(n),t.f1q_1.e2(n,r),i=r}else i=e;return i}function Mn(t,n){t=t!==rt&&t,n=n===rt?8:n,this.e1q_1=t,this.f1q_1=this.e1q_1?xn():zt(n)}function Nn(t,n){return t.o1q_1.o2(n)}function Rn(t,n){t=t!==rt&&t,n=n===rt?At():n,this.n1q_1=t;for(var i=this.n1q_1?xn():ut(),e=n.d2().v();e.w();){var r=e.y(),s=r.g2(),o=r.h2(),u=o.n(),a=yt(u),h=0;if(h=this.t1r_1.n()){this.r1r_1.a1s(),this.zb_1=5;continue t}this.zb_1=3;continue t;case 3:this.u1r_1=this.t1r_1.h1(this.s1r_1),this.r1r_1.z1r_1=this.s1r_1+1|0,this.zb_1=4;var n=this.u1r_1;if((t=(Ft(n,2)?n:J())(this.r1r_1,this.r1r_1.y1r_1,this))===st())return t;continue t;case 4:this.zb_1=1;continue t;case 5:return this.r1r_1.y1r_1;case 6:throw this.cc_1}}catch(t){var i=t;if(6===this.ac_1)throw i;this.zb_1=this.ac_1,this.cc_1=i}},K(Zn).am=function(){return this.x1r_1},K(Zn).a1s=function(){this.z1r_1=-1},K(Zn).b1s=function(t,n){return this.y1r_1=t,this.c1s(n)},K(Zn).c1s=function(t){var n=this.z1r_1;return n<0?this.y1r_1:n>=this.w1r_1.n()?(this.a1s(),this.y1r_1):function(t,n){var i=new Jn(t,n);return i.bc_1=Z,i.cc_1=null,i.mc()}(this,t)},K(Zn).d1s=function(t,n){return this.z1r_1=0,this.y1r_1=t,this.c1s(n)},K(ii).n19=function(){return this.h1s_1.d1()},K(ii).n=function(){return this.h1s_1.n()},K(ii).k1s=function(t){var n;this.i1s_1&&((n=this).h1s_1=n.j1s(),n.i1s_1=!1),this.h1s_1.s(t)},K(ii).l1s=function(t){var n=this.h1s_1;t instanceof Vt&&t.w2(t.n()+n.n()|0);var i=0,e=n.n();if(i=0)throw G("Already started");return this.c1s(n)},K(ki).toString=function(){return"TypeInfo(type="+this.n1t_1+", reifiedType="+this.o1t_1+", kotlinType="+this.p1t_1+")"},K(ki).hashCode=function(){var t=this.n1t_1.hashCode();return t=Y(t,31)+ht(this.o1t_1)|0,Y(t,31)+(null==this.p1t_1?0:ht(this.p1t_1))|0},K(ki).equals=function(t){if(this===t)return!0;if(!(t instanceof ki))return!1;var n=t instanceof ki?t:J();return!!this.n1t_1.equals(n.n1t_1)&&!!at(this.o1t_1,n.o1t_1)&&!!at(this.p1t_1,n.p1t_1)},K(Si).f1o=function(t){var n=this.q1t_1.o2(t);return null==n||null!=n?n:J()},K(Si).g1o=function(t){return this.q1t_1.l2(t)},K(Si).h1o=function(t,n){this.q1t_1.e2(t,n)},K(Si).i1o=function(t){this.q1t_1.i2(t)},K(Si).j1o=function(t,n){var i=this.q1t_1.o2(t);if(null!=i)return null!=i?i:J();var e=n();return this.q1t_1.e2(t,e),e},K(Si).k1o=function(){return an(this.q1t_1.b2())},K(Oi).s1t=function(t){if(this.r1t_1.w9(Ti())>0)return Z;console.debug("TRACE: "+t)},K(Si).e1o=function(t){var n=this.f1o(t);if(null==n)throw G("No instance for key "+t);return n},g=new Bn,I=new Gn,V=!1,B=new Ri,t.$_$=t.$_$||{},t.$_$.a=function(t,n){var i=new pn(t,n);return i.bc_1=Z,i.cc_1=null,i.mc()},t.$_$.b=B,t.$_$.c=An,t.$_$.d=Un,t.$_$.e=Ci,t.$_$.f=function(t){return new Oi},t.$_$.g=ci,t.$_$.h=fi,t.$_$.i=li,t.$_$.j=function(t,n){return n.g6(t)},t.$_$.k=function(t,n,i){return new ki(n,t,i)},t.$_$.l=dn,t.$_$.m=xi,t.$_$.n=function(t){var n=pt(t=t===rt?null:t),i=new Sn;return n.jg(i)},t.$_$.o=function(t){for(var n=this.c1q().v();n.w();){var i=n.y();t(i.g2(),i.h2())}return Z},t.$_$.p=function(t){var n=this.a1q(t);return null==n?null:qt(n)},t.$_$.q=Mn,t.$_$.r=Rn,t.$_$.s=Dn,t.$_$.t=function(t,n){for(var i=n.c1q().v();i.w();){var e=i.y(),r=e.g2(),s=e.h2();t.h1q(r,s)}return t},t.$_$.u=function(t){var n=wt(t).toLowerCase();return dt(n,0)===t},t.$_$.v=Ei,t.$_$.w=function(t,n){for(var i=n.k1o().v();i.w();){var e=i.y();t.h1o(e instanceof dn?e:J(),n.e1o(e))}},t.$_$.x=function(t){for(var n=0,i=t.length,e=vt(i);n=e)throw new Ot(n,"Unexpected end of string "+(null==r?"":" in ["+r+"]"),i);return R(n,i)}function Et(t,n){var i,e=t.u4v_1,r=e.ih_1;if(n<=e.jh_1&&r<=n){var s=P(n),o=l(48);i=s-P(o)|0}else{var u=t.r4v_1,a=u.ih_1;if(n<=u.jh_1&&a<=n){var h=10+P(n)|0,_=l(97);i=h-P(_)|0}else{var c=t.t4v_1,f=c.ih_1;if(n<=c.jh_1&&f<=n){var v=10+P(n)|0,d=l(65);i=v-P(d)|0}else i=-1}}return i}function Ct(){s=this,this.q4v_1=L(l(97),l(122)),this.r4v_1=L(l(97),l(102)),this.s4v_1=L(l(65),l(90)),this.t4v_1=L(l(65),l(70)),this.u4v_1=L(l(48),l(57)),this.v4v_1=F([new I(l(95)),new I(l(45)),new I(l(33)),new I(l(46)),new I(l(126)),new I(l(39)),new I(l(40)),new I(l(41)),new I(l(42))]),this.w4v_1=c([l(48),l(49),l(50),l(51),l(52),l(53),l(54),l(55),l(56),l(57),l(65),l(66),l(67),l(68),l(69),l(70)]),this.x4v_1=l(65533)}function qt(){return null==s&&new Ct,s}function Ot(t,n,i){if(i=i===S?-1:i,Z(n,this),Q(this,Ot),this.x4w_1=t,this.y4w_1=n,this.z4w_1=i,!(this.z4w_1>=-1))throw b(g("Failed requirement."))}function zt(){return o}function At(t){var n=t.d4w_1;return J("internalDecoded",1,X,(function(t){return At(t)}),null),n.h2()}function Tt(t){var n=t.e4w_1;return J("internalEncoded",1,X,(function(t){return Tt(t)}),null),n.h2()}function It(){this.a4x_1=1,this.b4x_1=2}function Dt(t,n){if(this.b4w_1=!(t===ct().u4u_1),this.c4w_1=!(n===ct().u4u_1),this.d4w_1=j((i=this,e=n,r=t,function(){return i.b4w_1||e===ct().u4u_1?qt().v4w(r):e})),this.e4w_1=j(function(t,n,i){return function(){return t===ct().u4u_1?n.c4x(i):t}}(t,this,n)),t===ct().u4u_1&&n===ct().u4u_1)throw b("Neither encoded nor decoded");var i,e,r}function jt(t){if(Rt.call(this,t,t),null!=t&&0!==C(t))throw b(g("Expected empty value, got: "+t));this.i4x_1=!0}function Mt(){u=this,this.h4v_1=new jt(null),this.i4v_1=new jt("")}function Nt(){return null==u&&new Mt,u}function Rt(t,n){Nt(),Dt.call(this,t,n)}function Pt(){a=this,this.g4w_1=new Ft(null,null),this.h4w_1=new Ft("","")}function Lt(){return null==a&&new Pt,a}function Ft(t,n){var i;Lt(),Dt.call(this,t,n),this.t4x_1=j((i=t,function(){var t=i;if(null==t)return vt().v4u_1;var n,e=t,r=new pt,s=0;t:for(;;){var o=D(e,l(47),s);if(n=o,!(o>-1))break t;if(sP(h)}if(r)return zt()}while(0<=i);return zt()}function Vt(){var t;this.u4x_1=j((t=this,function(){var n=t.g24();return n.d1()?null:it(n)})),this.v4x_1=j(function(t){return function(){var n=t.l4w();if(null==n)return Nt().a4w(null);var i,e=n,r=et(e,l(64)),s=Nt();return i=r===zt()?null:e.substring(0,r),s.a4w(i)}}(this)),this.w4x_1=j(function(t){return function(){return Ut(t).d4x()}}(this)),this.x4x_1=j(function(t){return function(){return Ut(t).f4w()}}(this)),this.y4x_1=j(function(t){return function(){var n=t.l4w();if(null==n)return null;var i,e=n,r=et(e,l(64)),s=Ht(0,e);if(s===zt()){var o=r+1|0;i=e.substring(o)}else{var u=r+1|0;i=e.substring(u,s)}var a=i;return qt().w4w(a)}}(this)),this.z4x_1=j(function(t){return function(){var n=t.l4w();if(null==n)return-1;var i=n,e=Ht(0,i);if(e===zt())return-1;var r,s=qt(),o=e+1|0,u=i.substring(o),a=s.w4w(u);try{r=rt(a)}catch(t){if(!(t instanceof st))throw t;r=-1}return r}}(this))}function Bt(t){var n=t.n4y_1;return J("ssp",1,X,(function(t){return Bt(t)}),null),n.h2()}function Yt(t,n){var i=n.h4y_1.f4w();null!=i&&t.o5("//").o5(i);var e=n.i4y_1.f4w();null!=e&&t.o5(e),n.j4y_1.n19()||t.p5(l(63)).o5(n.j4y_1.f4w())}function Wt(t){var n=t.z4y_1;return J("uriString",1,X,(function(t){return Wt(t)}),null),n.h2()}function Gt(t){return function(){return Nt().a4w((n=t,Yt(i=U(),n),i.toString()));var n,i}}function Kt(t,n,i,e,r){var s;Vt.call(this),this.g4y_1=t,this.h4y_1=Nt().n4x(n),this.i4y_1=null==i?Lt().g4w_1:i,this.j4y_1=Nt().n4x(e),this.k4y_1=Nt().n4x(r),this.l4y_1=!0,this.m4y_1=null==this.g4y_1,this.n4y_1=j(Gt(this)),this.o4y_1=j((s=this,function(){return Bt(s).f4w()})),this.p4y_1=j(function(t){return function(){return Bt(t).d4x()}}(this)),this.q4y_1=j(function(t){return function(){return t.h4y_1.d4x()}}(this)),this.r4y_1=j(function(t){return function(){return t.h4y_1.f4w()}}(this)),this.s4y_1=j(function(t){return function(){return t.i4y_1.f4w()}}(this)),this.t4y_1=j(function(t){return function(){return t.i4y_1.d4x()}}(this)),this.u4y_1=j(function(t){return function(){return t.j4y_1.d4x()}}(this)),this.v4y_1=j(function(t){return function(){return t.j4y_1.f4w()}}(this)),this.w4y_1=j(function(t){return function(){return t.k4y_1.d4x()}}(this)),this.x4y_1=j(function(t){return function(){return t.k4y_1.f4w()}}(this)),this.y4y_1=j(function(t){return function(){return t.i4y_1.g24()}}(this)),this.z4y_1=j(function(t){return function(){var n=U();return null!=t.g4y_1&&n.o5(t.g4y_1).p5(l(58)),Yt(n,t),t.k4y_1.n19()||n.p5(l(35)).o5(t.a4z()),n.toString()}}(this))}function Xt(t){var n=t.w4z_1;return J("cachedString",1,X,(function(t){return Xt(t)}),null),n.h2()}function Jt(t,n,i){var e;this.b4z_1=t,this.c4z_1=n,this.d4z_1=null==i?Nt().h4v_1:i,this.e4z_1=!1,this.f4z_1=null==this.b4z_1,this.g4z_1=j((e=this,function(){return e.c4z_1.f4w()})),this.h4z_1=j(function(t){return function(){return t.c4z_1.d4x()}}(this)),this.i4z_1=null,this.j4z_1=null,this.k4z_1=null,this.l4z_1=null,this.m4z_1=null,this.n4z_1=null,this.o4z_1=j(function(t){return function(){return t.d4z_1.d4x()}}(this)),this.p4z_1=j(function(t){return function(){return t.d4z_1.f4w()}}(this)),this.q4z_1=ht(),this.r4z_1=null,this.s4z_1=null,this.t4z_1=null,this.u4z_1=null,this.v4z_1=-1,this.w4z_1=j(function(t){return function(){var n=U();return n.o5(t.b4z_1).p5(l(58)),n.o5(t.x4z()),t.d4z_1.n19()||n.p5(l(35)).o5(t.a4z()),n.toString()}}(this))}function Zt(t){var n=t.f50_1;return J("cachedSsi",1,X,(function(t){return Zt(t)}),null),n.h2()}function Qt(t){var n=t.g50_1;return J("cachedFsi",1,X,(function(t){return Qt(t)}),null),n.h2()}function tn(t){var n=t.k50_1;return J("ssp",1,X,(function(t){return tn(t)}),null),n.h2()}function nn(t){var n=t.l50_1;return J("authorityPart",1,X,(function(t){return nn(t)}),null),n.h2()}function en(t){var n=t.o50_1;return J("pathPart",1,X,(function(t){return en(t)}),null),n.h2()}function rn(t){var n=t.s50_1;return J("queryPart",1,X,(function(t){return rn(t)}),null),n.h2()}function sn(t){var n=t.v50_1;return J("fragmentPart",1,X,(function(t){return sn(t)}),null),n.h2()}function on(){}function un(t){var n;Vt.call(this),this.e50_1=t,this.f50_1=j((n=this,function(){return D(n.e50_1,l(58))})),this.g50_1=j(function(t){return function(){return D(t.e50_1,l(35),Zt(t))}}(this)),this.h50_1=j(function(t){return function(){var n=Zt(t);return n===zt()||t.e50_1.length!==(n+1|0)&&R(t.e50_1,n+1|0)===l(47)}}(this)),this.i50_1=j(function(t){return function(){return Zt(t)===zt()}}(this)),this.j50_1=j(function(t){return function(){var n=Zt(t);return n===zt()?null:t.e50_1.substring(0,n)}}(this)),this.k50_1=j(function(t){return function(){var n,i=Zt(t),e=Qt(t),r=Nt();if(e===zt()){var s=i+1|0;n=t.e50_1.substring(s)}else{var o=i+1|0;n=t.e50_1.substring(o,e)}return r.a4w(n)}}(this)),this.l50_1=j(function(t){return function(){var n=h.y50(t.e50_1,Zt(t));return Nt().a4w(n)}}(this)),this.m50_1=j(function(t){return function(){return nn(t).d4x()}}(this)),this.n50_1=j(function(t){return function(){return nn(t).f4w()}}(this)),this.o50_1=j(function(t){return function(){var n=Zt(t),i=n>-1&&((n+1|0)===t.e50_1.length||R(t.e50_1,n+1|0)!==l(47))?null:h.z50(t.e50_1,n);return Lt().a4w(i)}}(this)),this.p50_1=j(function(t){return function(){return en(t).d4x()}}(this)),this.q50_1=j(function(t){return function(){return en(t).f4w()}}(this)),this.r50_1=j(function(t){return function(){return en(t).g24()}}(this)),this.s50_1=j(function(t){return function(){var n,i=D(t.e50_1,l(63),Zt(t));if(i===zt())n=null;else{var e,r=Qt(t);if(r===zt()){var s=i+1|0;e=t.e50_1.substring(s)}else if(r=this.x4u_1)throw m("Index "+t+" should be less than "+this.x4u_1);if(null==this.w4u_1)throw b(g("Required value was null."));return this.w4u_1[t]},v(pt).a4v=function(t){if(null!=this.y4u_1){if((this.z4u_1+1|0)===wt(this).length){for(var n=0,i=_(wt(this).length,2),e=k(Array(i),null);nr&&i.q7(t,r,o);for(var u=(r=o)+1|0;u>4]),i.p5(this.w4v_1[15&c[d]])}while(v-1&&(t.o5(" at index "),t.n5(this.z4w_1)),t.o5(": "),t.o5(this.x4w_1),t.toString()},v(Dt).d4x=function(){return At(this)},v(Dt).f4w=function(){return Tt(this)},v(jt).n19=function(){return this.i4x_1},v(Mt).n4x=function(t){return null==t?this.h4v_1:t},v(Mt).a4w=function(t){return this.o4x(t,ct().u4u_1)},v(Mt).o4x=function(t,n){return null==t?this.h4v_1:0===C(t)?this.i4v_1:null==n?this.h4v_1:0===C(n)?this.i4v_1:new Rt(t,n)},v(Rt).n19=function(){return!1},v(Rt).c4x=function(t){return qt().s4w(t)},v(Pt).a4w=function(t){return this.o4x(t,ct().u4u_1)},v(Pt).o4x=function(t,n){return null==t?this.g4w_1:0===C(t)?this.h4w_1:new Ft(t,n)},v(Pt).i4w=function(t){var n=t.b4w_1?t.f4w():t.d4x();return null==n||0===C(n)||nt(n,"/")?t:new Ft(t.b4w_1?"/"+t.f4w():ct().u4u_1,t.c4w_1?"/"+t.d4x():ct().u4u_1)},v(Ft).c4x=function(t){return qt().z4v(t,"/")},v(Ft).g24=function(){var t=this.t4x_1;return J("pathSegments",1,X,(function(t){return t.g24()}),null),t.h2()},v(Vt).d=function(t){return this.m4w(null!=t&&ut(t,bt)?t:ot())},v(Kt).l4w=function(){var t=this.r4y_1;return J("encodedAuthority",1,X,(function(t){return t.l4w()}),null),t.h2()},v(Kt).a4z=function(){var t=this.x4y_1;return J("encodedFragment",1,X,(function(t){return t.a4z()}),null),t.h2()},v(Kt).g24=function(){var t=this.y4y_1;return J("pathSegments",1,X,(function(t){return t.g24()}),null),t.h2()},v(Kt).equals=function(t){return!(null==t||!ut(t,bt))&&this.toString()===g(t)},v(Kt).hashCode=function(){return at(this.toString())},v(Kt).toString=function(){return Wt(this)},v(Kt).n4w=function(){return(new mt).j4v(this.g4y_1).l4v(this.h4y_1).m4v(this.i4y_1).n4v(this.j4y_1).o4v(this.k4y_1)},v(Kt).d=function(t){return this.m4w(null!=t&&ut(t,bt)?t:ot())},v(Jt).x4z=function(){var t=this.g4z_1;return J("encodedSchemeSpecificPart",1,X,(function(t){return t.x4z()}),null),t.h2()},v(Jt).a4z=function(){var t=this.p4z_1;return J("encodedFragment",1,X,(function(t){return t.a4z()}),null),t.h2()},v(Jt).equals=function(t){return!(null==t||!ut(t,bt))&&this.toString()===g(t)},v(Jt).hashCode=function(){return at(this.toString())},v(Jt).toString=function(){return Xt(this)},v(Jt).n4w=function(){return(new mt).j4v(this.b4z_1).k4v(this.c4z_1).o4v(this.d4z_1)},v(Jt).d=function(t){return this.m4w(null!=t&&ut(t,bt)?t:ot())},v(on).y50=function(t,n){var i,e=t.length;if(e>(n+2|0)&&R(t,n+1|0)===l(47)&&R(t,n+2|0)===l(47)){var r=n+3|0;t:for(;r(n+2|0)&&R(t,n+1|0)===l(47)&&R(t,n+2|0)===l(47)){i=n+3|0;t:for(;i=0&&!i.d1()&&t.o3x_1!==t.q3x_1){t.u3x("\n");try{t.h3x_1=pt();var e=t.q3x_1,r=0;if(r":"/>":">";t.s43_1.p7(i)}function Ze(t,n){Ct.call(this,t,n)}function Qe(t,n,i,e){var r,s,o,u=i;if(i===mn(9)||i===mn(10)||i===mn(13))o=!0;else{var a=mn(32),h=mn(55295),_=new gn(a,h),l=_.fk_1;o=bn(i,_.gk_1)<=0&&0<=bn(i,l)}if(o)s=!0;else{var c=mn(57344),f=mn(65533),v=new gn(c,f),d=v.fk_1;s=bn(i,v.gk_1)<=0&&0<=bn(i,d)}if(s){var w=kn(i),p=$n(xn(w));r=yn(p)}else r=yn($n(0));var m=r;if(u===mn(0))throw ht("XML documents may not contain null strings directly or indirectly");if(m===ot(38))t.p7("&");else if(m!==ot(60)||e.equals(hr()))if(m===ot(62)&&e.equals(cr()))t.p7(">");else if(m===ot(34)&&e.equals(_r()))t.p7(""");else if(m===ot(39)&&e.equals(lr()))t.p7("'");else{var g,b=mn(1),$=mn(8),y=new gn(b,$),k=y.fk_1;if(bn(u,y.gk_1)<=0&&0<=bn(u,k)||u===mn(11)||u===mn(12))g=!0;else{var x=mn(14),S=mn(31),E=new gn(x,S),C=E.fk_1;g=bn(u,E.gk_1)<=0&&0<=bn(u,C)}if(g){var q=n.v43_1.v9_1;0===q?ar(n,u):1===q&&ur(t,u)}else{var O,z=mn(127),A=mn(132),T=new gn(z,A),I=T.fk_1;if(bn(u,T.gk_1)<=0&&0<=bn(u,I))O=!0;else{var D=mn(134),j=mn(159),M=new gn(D,j),N=M.fk_1;O=bn(u,M.gk_1)<=0&&0<=bn(u,N)}if(O){var R=n.v43_1.v9_1;0===R?t.p5(m):1===R&&ur(t,u)}else{var P=mn(55296),L=mn(57343),F=new gn(P,L),U=F.fk_1;if(bn(u,F.gk_1)<=0&&0<=bn(u,U)||u===mn(65534)||u===mn(65535))ar(n,u);else{var H=mn(65535);if(Sn(kn(u),kn(H))>0){var V=mn(65536),B=mn(kn(u)-kn(V)|0),Y=mn(kn(B)>>>10|0),W=mn(55296),G=mn(kn(Y)+kn(W)|0),K=mn(1023),X=mn(kn(B)&kn(K)),J=mn(56320),Z=mn(kn(X)+kn(J)|0),Q=kn(G),tt=$n(xn(Q));t.p5(yn(tt));var nt=kn(Z),it=$n(xn(nt));t.p5(yn(it))}else t.p5(m)}}}}else t.p7("<")}function tr(t,n,i){for(var e=pr(n).v();e.w();){var r=e.y().sj_1;Qe(t.s43_1,t,r,i)}}function nr(t){0===t.z43_1.v9_1&&(t.u43_1.equals(Re())||t.m3y(null,null,null),t.z43_1=vr())}function ir(t,n){var i=t.h3x_1;if(t.b44_1>=0&&!i.d1()&&t.b44_1!==t.p3w()){t.u3x("\n");try{t.h3x_1=pt();for(var e=function(t,n){if(!t.v().w())return pt();var i=rt(),e=null,r=0;if(r0&&null!=i&&t.a44_1.c44(i)!=n&&t.h3y(i,n)}function rr(t,n,i,e){t.s43_1.p5(ot(32)),Q(n)>0&&t.s43_1.p7(n).p5(ot(58)),t.s43_1.p7(i).p5(ot(61));var r=-1===xt(e,ot(34))?new Cn(new En(ot(34)),_r()):new Cn(new En(ot(39)),lr()),s=r.oe().la_1,o=r.pe();t.s43_1.p5(s),tr(t,e,o),t.s43_1.p5(s)}function sr(){this.d44_1=-1,this.e44_1=2147483647}function or(t,n){Ct.call(this,t,n)}function ur(t,n){t.p7("&#x").p7(qn(n,16)).p5(ot(59))}function ar(t,n){throw ht("In xml "+t.v43_1.h44_1+" the character 0x"+qn(n,16)+" is not valid")}function hr(){return Ye(),x}function _r(){return Ye(),S}function lr(){return Ye(),E}function cr(){return Ye(),C}function fr(){return We(),O}function vr(){return We(),z}function dr(){return We(),T}function wr(t,n,i,e){n=n===et||n,i=i===et?Re():i,e=e===et?yr():e,Dr.call(this),this.s43_1=t,this.t43_1=n,this.u43_1=i,this.v43_1=e,this.w43_1=!0,this.x43_1=!1,this.y43_1=Bt(Array(12),null),this.z43_1=fr(),this.a44_1=new Ar,this.b44_1=-1}function pr(t){return new gr(t)}function mr(t){this.p44_1=t,this.o44_1=0}function gr(t){this.q44_1=t}function br(){if(N)return G;N=!0,j=new $r("XML10",0,"1.0"),M=new $r("XML11",1,"1.1")}function $r(t,n,i){Ct.call(this,t,n),this.h44_1=i}function yr(){return br(),M}function kr(t,n){var i=0===n?0:xr(t,n-1|0)/2|0,e=xr(t,n)/2|0;return Z(i,e)}function xr(t,n){return Y(t.d42_1[n],2)}function Sr(t,n){return Y(n,2)}function Er(t,n){return Y(n,2)+1|0}function Cr(t,n){return ft(t.c42_1[Sr(0,n)])}function qr(t,n){return ft(t.c42_1[Er(0,n)])}function Or(t){this.r44_1=t}function zr(t){this.t44_1=t,this.s44_1=0}function Ar(){this.b42_1=1,this.c42_1=Bt(Array(10),null),this.d42_1=new Int32Array(20),this.e42_1=0,this.f42_1=new Or(this)}function Tr(t,n){if(Q(t)>0){var i=t.toString();if(!Mr(i))throw Ce("Indents can only be whitespace or comments: "+i);n.s(new de(null,Pi(),i)),t.a8()}}function Ir(){this.v44_1="\x3c!----\x3e"}function Dr(t){t=t===et?pt():t,this.h3x_1=Wt(t)}function jr(){return Rr(),P}function Mr(t){var n;Rr();t:{for(var i=0;i=jr().length)&&jr()[t]}function Rr(){if(!L){L=!0;var t=Rn(33),n=ot(9);t[An(n)]=!0;var i=ot(10);t[An(i)]=!0;var e=ot(13);t[An(e)]=!0;var r=ot(32);t[An(r)]=!0,P=t}}function Pr(t,n){var i=t.item(n);return null==i||null!=i?i:X()}function Lr(){this.x44_1=1,this.y44_1=2,this.z44_1=3,this.a45_1=4,this.b45_1=5,this.c45_1=6,this.d45_1=7,this.e45_1=8,this.f45_1=9,this.g45_1=10,this.h45_1=11,this.i45_1=12}function Fr(t){this.j45_1=t,this.k45_1=0}function Ur(){}function Hr(){U=this,this.n45_1=Fn("xmlBoolean",Ln())}function Vr(t,n){var i;if(1!==t.nodeType)i=null;else{var e=(null!=t?t:X()).attributes,r=rt(),s=e.length,o=0;if(o=d;){switch(null==w?-1:w.v9_1){case 1:var p=new di(l,!0);Ve(p,t,v),De(t,p),Be(p,v,t),p.z1i();break;case 9:case 4:l.appendChild(ft(l.ownerDocument).createTextNode(t.s3w()));break;case 5:l.appendChild(ft(l.ownerDocument).createCDATASection(t.s3w()));break;case 3:l.appendChild(ft(l.ownerDocument).createComment(t.s3w()));break;case 8:throw Ce("Entity references are not expected here");case 10:throw Bn("Attributes are not expected in the event stream")}w=t.w()?t.y():null}""===v.o2("")&&v.i2("");var m=Rt(v.d2()),g=tn(m,Jr),b=Lt(nn(g,(c=l,function(t){var n=t.g2(),i=t.h2();return c.setAttributeNS("http://www.w3.org/2000/xmlns/",""===n?"xmlns":"xmlns:"+n,i),new xe(n,i)}))),$=(new XMLSerializer).serializeToString(l instanceof Node?l:X()),y=xt($,ot(62),19)+1|0,k=($.length-19|0)-3|0;return os(b,$.substring(y,k))}catch(t){if(t instanceof ze)throw Oe("Failure to parse children into string at "+f,t);if(t instanceof fn)throw Oe("Failure to parse children into string at "+f,t);throw t}}function Jr(t){var n=t.g2(),i=t.h2();return""!==n||!(""===i)}function Zr(){}function Qr(t){return Yn(t),ts.call(t),t}function ts(){ln(this,ts)}function ns(t,n){t||console.error("Assertion failed: "+n())}function is(t){t||console.error("Assertion failed")}function es(){}function rs(t){return function(t,n){return ss(pt(),t,n),n}(t,wt(K(hs)))}function ss(t,n,i){return hs.call(i),i.p45_1=ee().q40(t),i.q45_1=n,i}function os(t,n){return ss(t,n,wt(K(hs)))}function us(){V=this,this.r45_1=new es}function as(t){return'"'+t.n3w()+" -> "+t.l3w()+'"'}function hs(){null==V&&new us}function _s(t){return t.prototype}function ls(t,n,i,e){return function(t,n,i){for(var e=0,r=Y(t.length,2),s=Bt(Array(r),null);e");var a=e.toString()+n+"",h=(new DOMParser).parseFromString(a,"text/xml");return new ui(null!=h?h:X())}(0,t,n));this.z45_1=cs(null,[],[]),this.yq().u3w()===Ai()&&vs(this)}function ps(t){var n=document.implementation,i=t.e40(),e=n.createDocument(null==i?"":i,Pe(t));return null!=e?e:X()}return it(ii,"DomReader$$o$iterator$slambda",nt,W,et,et,et,et,[1]),it(Yi,"IterableNamespaceContext",Nt),it(oi,et,nt,et,[Yi]),it(Ae,"XmlReader",Nt),it(ui,"DomReader",nt,et,[Ae]),it(fi,"Companion",bt),it(vi,et,nt),it(He,"XmlWriter",Nt),it(Dr,"PlatformXmlWriterBase",nt,et,[He]),it(di,"DomWriter",nt,Dr,[Dr,He],(function(t){return function(t,n){return t=t===et?Re():t,di.call(n,null,et,t),n}(t,wt(K(di)))})),it(Oi,"EventType",nt,Ct),it(wi,"START_DOCUMENT",nt,Oi),it(pi,"START_ELEMENT",nt,Oi),it(mi,"END_ELEMENT",nt,Oi),it(gi,"COMMENT",nt,Oi),it(bi,"TEXT",nt,Oi),it($i,"CDSECT",nt,Oi),it(yi,"DOCDECL",nt,Oi),it(ki,"END_DOCUMENT",nt,Oi),it(xi,"ENTITY_REF",nt,Oi),it(Si,"IGNORABLE_WHITESPACE",nt,Oi),it(Ei,"ATTRIBUTE",nt,Oi),it(Ci,"PROCESSING_INSTRUCTION",nt,Oi),it(Hi,"Companion",bt,et,[It]),it(Bi,"Namespace",Nt),it(Gi,"QNameSerializer",bt,et,[It]),it(Xi,"SimpleIterator",nt),it(Ji,"SimpleNamespace",nt,et,[Bi]),it(ie,"Companion",bt,et,[It]),it(oe,"SimpleNamespaceContext",nt,et,[Yi],(function(){return t=wt(K(oe)),oe.call(t,[]),t;var t}),et,{0:ee}),it(ue,"XMLConstants",bt),it(le,"XmlBufferedReaderBase",nt,et,[Ae]),it(ae,"XmlBufferedReader",nt,le),it(ce,"XmlDelegatingReader",nt,et,[Ae]),it(ve,"Companion",bt),it(Se,"XmlEvent",nt),it(de,"TextEvent",nt,Se),it(we,"ProcessingInstructionEvent",nt,de),it(pe,"EntityRefEvent",nt,de),it(me,"EndDocumentEvent",nt,Se),it($e,"NamedEvent",nt,Se),it(ge,"EndElementEvent",nt,$e),it(be,"StartDocumentEvent",nt,Se),it(ye,"StartElementEvent",nt,$e),it(ke,"Attribute",nt,Se),it(xe,"NamespaceImpl",nt,et,[Bi]),it(ts,"IOException",nt,Kn,et,(function t(){var n=Qr(wt(K(ts)));return ln(n,t),n})),it(ze,"XmlException",nt,ts,et,(function t(){var n,i=(Qr(n=wt(K(ze))),ze.call(n),n);return ln(i,t),i})),it(je,"Companion",bt),it(Ne,"XmlDeclMode",nt,Ct),it(Ze,"EscapeMode",nt,Ct),it(sr,"Companion",bt),it(or,"WriteState",nt,Ct),it(wr,"KtXmlWriter",nt,Dr,[Dr,He]),it(mr,et,nt),it(gr,et,nt),it($r,"XmlVersion",nt,Ct),it(Or,et,nt,et,[Yi]),it(zr,et,nt),it(Ar,"NamespaceHolder",nt,et,et,Ar),it(Ir,"Companion",bt),it(Lr,"NodeConsts",bt),it(Fr,"NodeListIterator",nt),it(Ur,"ICompactFragment",Nt),it(Hr,"XmlBooleanSerializer",bt,et,[It]),it(Kr,"QName",nt),it(Zr,"XmlStreaming",bt),it(es,"Factory",nt,et,et,es),it(us,"Companion",bt),it(hs,"CompactFragment",nt,et,[Ur]),it(fs,"FragmentNamespaceContext",nt,oe),it(ds,"Companion",bt),it(ws,"XMLFragmentStreamReader",nt,ce),K(ii).x3v=function(t,n){var i=this.y3v(t,n);return i.bc_1=G,i.cc_1=null,i.mc()},K(ii).zc=function(t,n){return this.x3v(t instanceof J?t:X(),n)},K(ii).mc=function(){var t=this.bc_1;t:for(;;)try{switch(this.zb_1){case 0:this.ac_1=8,this.r3v_1=this.p3v_1.z3v_1,this.zb_1=1;continue t;case 1:if(null==this.r3v_1){this.zb_1=7;continue t}this.s3v_1=this.r3v_1.attributes,this.t3v_1=this.s3v_1.length,this.u3v_1=Z(0,this.t3v_1).v(),this.zb_1=2;continue t;case 2:if(!this.u3v_1.w()){this.zb_1=6;continue t}this.v3v_1=this.u3v_1.y();var n=this.s3v_1.item(this.v3v_1);if(this.w3v_1=null!=n&&null!=n?n:X(),"xmlns"===this.w3v_1.prefix){this.zb_1=4;var i=this.w3v_1.localName,e=null==i?this.w3v_1.name:i,r=this.w3v_1;if((t=this.q3v_1.te(new xe(e,r.value),this))===tt())return t;continue t}var s=this.w3v_1.prefix;if((null==s||0===Q(s))&&"xmlns"===this.w3v_1.localName){this.zb_1=3;var o=this.w3v_1;if((t=this.q3v_1.te(new xe("",o.value),this))===tt())return t;continue t}this.zb_1=5;continue t;case 3:case 4:this.zb_1=5;continue t;case 5:this.zb_1=2;continue t;case 6:this.r3v_1=this.r3v_1.parentElement,this.zb_1=1;continue t;case 7:return G;case 8:throw this.cc_1}}catch(t){var u=t;if(8===this.ac_1)throw u;this.zb_1=this.ac_1,this.cc_1=u}},K(ii).y3v=function(t,n){var i=new ii(this.p3v_1,n);return i.q3v_1=t,i},K(oi).h3w=function(t){var n=this.z3v_1;return null==n?null:Vr(n,t)},K(oi).i3w=function(t){var n=this.z3v_1;return null==n?null:Br(n,t)},K(oi).j3w=function(){return this},K(oi).v=function(){return ut((t=this,n=null,i=new ii(t,n),e=function(t,n){return i.x3v(t,n)},e.$arity=1,e)).v();var t,n,i,e},K(ui).l3w=function(){var t,n=this.g3w();if(null==n)t=null;else{var i=n.namespaceURI;t=null==i?"":i}var e=t;if(null==e)throw Ce("Only elements have a namespace uri");return e},K(ui).m3w=function(){var t,n=this.g3w();if(null==n)t=null;else{var i=n.localName;t=null==i?n.tagName:i}var e=t;if(null==e)throw Ce("Only elements have a local name");return e},K(ui).n3w=function(){var t,n=this.g3w();if(null==n)t=null;else{var i=n.prefix;t=null==i?"":i}var e=t;if(null==e)throw Ce("Only elements have a prefix");return e},K(ui).o3w=function(){return this.c3w_1},K(ui).p3w=function(){return this.e3w_1},K(ui).q3w=function(){var t=ei(this);if(7!==t.nodeType)throw ht(at("Failed requirement."));return(null!=t?t:X()).target},K(ui).r3w=function(){var t=ei(this);if(7!==t.nodeType)throw ht(at("Failed requirement."));return(null!=t?t:X()).data},K(ui).s3w=function(){var t,n=this.b3w_1,i=null==n?null:n.nodeType;if(5===(null==i?null:i)||8===(null==i?null:i)||3===(null==i?null:i)||4===(null==i?null:i)){var e=this.b3w_1;t=(null!=e&&null!=e?e:X()).data}else{if(7!==(null==i?null:i))throw Ce("Node is not a text node");var r=this.b3w_1,s=null!=r&&null!=r?r:X();t=s.nodeName+" "+s.data}return t},K(ui).t3w=function(){var t=this.b3w_1,n=null==t||null!=t?t:X(),i=null==n?null:n.attributes,e=null==i?null:i.length;return null==e?0:e},K(ui).u3w=function(){var t=this.b3w_1;return null==t?Ni():ai(t,this.d3w_1)},K(ui).v3w=function(){return si(this.b3w_1,_t()).toString()},K(ui).g3w=function(){var t,n=this.b3w_1,i=null==n?null:n.nodeType;if(1===(null==i?null:i)){var e=this.b3w_1;t=null!=e&&null!=e?e:X()}else t=null;return t},K(ui).w3w=function(){return new oi(this)},K(ui).x3w=function(){for(var t=function(t){var n,i=t.f3w_1;if(null==i){var e=ri(t).attributes,r=rt(),s=e.length,o=0;if(o0&&function(t){for(var n=t,i=n.firstChild;null!=i;){var e=i.nextSibling;Yr(i)&&n.removeChild(i),i=e}}(this.g3y())}var h,_=function(t,n){return t.createElementNS(n.e40(),Pe(n))}(this.g3y(),Fe(t,n,i));ft(this.m3x_1).appendChild(_),this.m3x_1=_},K(di).c3y=function(t){_i(this);var n,i,e=this.m3x_1;if(null==e)li(this,(n=this,i=t,function(t){return n.c3y(i),G}));else{var r=this.g3y().createComment(t);e.appendChild(r)}},K(di).j3y=function(t){this.o3x_1=-1;var n,i,e=this.m3x_1;if(null==e){if(!kt(t))throw Ce("Not in an element -- text");li(this,(n=this,i=t,function(t){return n.u3x(i),G}))}else{var r=this.g3y().createTextNode(t);e.appendChild(r)}},K(di).k3y=function(t){this.o3x_1=-1;var n=this.g3y().createCDATASection(t),i=this.m3x_1;if(null==(null==i?null:i.appendChild(n)))throw Ce("Not in an element -- cdsect")},K(di).d3y=function(t){hi(this,2147483647);var n,i,e=this.m3x_1,r=null==e?null:e.nodeType;if(1!==(null==r?null:r))throw Ce("Document already started");if(null==this.l3x_1)li(this,(n=this,i=t,function(t){return n.d3y(i),G}));else{var s,o=xt(t,ot(32));if(o<0)s=St(t,"");else{var u=t.substring(0,o),a=o+1|0,h=t.substring(a);s=St(u,h)}var _=s,l=_.oe(),c=_.pe(),f=this.g3y().createProcessingInstruction(l,c);this.g3y().appendChild(f)}},K(di).e3y=function(t,n){var i,e,r,s=this.m3x_1;if(null==s)li(this,(i=this,e=t,r=n,function(t){return i.e3y(e,r),G}));else{var o=this.g3y().createProcessingInstruction(t,n);s.appendChild(o)}this.o3x_1=-1},K(di).u3x=function(t){var n,i,e=this.m3x_1;if(null==e)li(this,(n=this,i=t,function(t){return n.u3x(i),G}));else if(9!==e.nodeType){var r=this.g3y().createTextNode(t);e.appendChild(r)}this.o3x_1=-1},K(di).l3y=function(t,n,i,e){var r,s=ci(this,"attribute");null!=t&&0!==Q(t)||null!=i&&0!==Q(i)?null==i||0===Q(i)?s.setAttributeNS(t,n,e):(r=null==t?"":t,s.setAttributeNS(r,i+":"+n,e)):s.setAttribute(n,e)},K(di).f3y=function(t){hi(this,2147483647);var n,i,e=this.l3x_1;if(null==e)li(this,(n=this,i=t,function(t){return n.f3y(i),G}));else{var r=Et(t,[" "],et,3),s=r.h1(0),o=r.n()>1?r.h1(1):"",u=r.n()>2?r.h1(2):"",a=e.implementation.createDocumentType(s,o,u);e.appendChild(a)}},K(di).m3y=function(t,n,i){hi(this,2147483647),this.r3x_1=t,this.s3x_1=n,this.t3x_1=i},K(di).n3y=function(){this.m3x_1=null},K(di).o3y=function(t,n,i){this.q3x_1=this.q3x_1-1|0,hi(this,2147483647),this.m3x_1=ci(this,"No current element or no parent element").parentNode},K(di).p3y=function(t){var n=this.m3x_1;return null==n?null:Vr(n,t)},K(di).z1i=function(){var t;ns(0===this.q3x_1,(t=this,function(){return"Closing a dom writer but not all elements were closed (depth:"+t.q3x_1+")"})),this.m3x_1=null},K(wi).s3y=function(t){return new be(t.v3w(),t.g2c(),t.y3w(),t.z3w())},K(wi).t3y=function(t,n){t.m3y(n.g2c(),n.y3w(),n.z3w())},K(pi).s3y=function(t){return new ye(t.v3w(),t.l3w(),t.m3w(),t.n3w(),function(t){for(var n=0,i=t.t3w(),e=Bt(Array(i),null);n")},K(wr).f3y=function(t){if(ir(this,2147483647),nr(this),!this.z43_1.equals(vr()))throw Ce("Writing a DTD is only allowed once, in the prolog");this.z43_1=(We(),A);var n=this.s43_1.p7("")},K(wr).d3y=function(t){Je(this,!1),ir(this,2147483647),nr(this),this.s43_1.p7("")},K(wr).e3y=function(t,n){Je(this,!1),ir(this,2147483647),nr(this),this.s43_1.p7("0&&this.s43_1.p5(ot(32)).p7(n),this.s43_1.p7("?>")},K(wr).i3y=function(t,n,i){if(Je(this,!1),e=this,r=r===et?e.p3w():r,ir(e,r),nr(this),this.z43_1.equals((We(),I)))throw Ce("Attempting to write tag after the document finished");var e,r,s;if(this.z43_1=dr(),""===t)s="";else{var o=this.i44(t);s=null!=o?o:null==i?this.a44_1.j44():i}var u=s;(function(t,n,i,e,r){var s=Y(n,3);if(t.y43_1.length<(s+3|0)){var o=t.y43_1.length+12|0,u=Bt(Array(o),null),a=t.y43_1;pn(a,u,0,0,s),t.y43_1=u}var h=s;s=h+1|0,t.y43_1[h]=i;var _=s;s=_+1|0,t.y43_1[_]=e,t.y43_1[s]=r})(this,this.p3w(),null==t?"":t,u,n),this.s43_1.p5(ot(60)),Q(u)>0&&(this.s43_1.p7(u),this.s43_1.p5(ot(58))),this.s43_1.p7(n),this.x43_1=!0,this.a44_1.q41(),er(this,t,u)},K(wr).o3y=function(t,n,i){if(this.a44_1.p41(),ir(this,2147483647),(null==t?"":t)!==Ge(this,this.p3w())||Xe(this,this.p3w())!==n)throw ht(" does not match start");if(this.x43_1)Je(this,!0);else{this.s43_1.p7("0&&(this.s43_1.p7(e),this.s43_1.p5(ot(58))),this.s43_1.p7(n),this.s43_1.p5(ot(62))}},K(wr).c3y=function(t){Je(this,!1),ir(this,2147483647),nr(this);var n=!1;this.s43_1.p7("\x3c!--");for(var i=pr(t).v();i.w();){var e=i.y().sj_1,r=ot(45),s=An(r);e===mn(s)?n?(n=!1,this.s43_1.p7("-")):(n=!0,this.s43_1.p5(ot(45))):Qe(this.s43_1,this,e,hr())}this.s43_1.p7("--\x3e")},K(wr).j3y=function(t){Je(this,!1),tr(this,t,cr()),this.b44_1=-1},K(wr).k3y=function(t){Je(this,!1);var n=0;this.s43_1.p7(""),this.b44_1=-1},K(wr).u3x=function(t){Je(this,!1),nr(this);for(var n=0,i=t.length;n0&&null!=t)&&Q(t)>0&&(this.k44(i,t),er(this,t,i)),!this.x43_1)throw st("illegal position for attribute");rr(this,null==(r=null!=i&&0!==Q(i)&&this.p3y(i)!=t?this.i44(t):i)?"":r,n,e)},K(wr).h3y=function(t,n){var i=this.a44_1.l44(t);if(null!=i){if(this.t43_1)return G;throw st(i!==n?"Attempting to set prefix to different values in the same tag":"Namespace attribute duplicated")}if(this.a44_1.m44(t,n),!this.x43_1)throw st("illegal position for attribute");Q(t)>0?rr(this,"xmlns",t,n):rr(this,"","xmlns",n)},K(wr).n3y=function(){if(is(0===this.p3w()),!this.z43_1.equals(dr()))throw Ce("Attempting to end document when in invalid state: "+this.z43_1);for(;this.p3w()>0;)this.o3y(Ge(this,this.p3w()-1|0),Ke(this,this.p3w()-1|0),Xe(this,this.p3w()-1|0));this.q1f()},K(wr).k44=function(t,n){n!==this.p3y(t)&&this.a44_1.m44(t,n)},K(wr).p3y=function(t){return this.a44_1.c44(t)},K(wr).i44=function(t){return null==t?null:this.a44_1.n44(t)},K(wr).z1i=function(){this.a44_1.b1()},K(mr).w=function(){return this.o44_1=this.d42_1.length&&(this.d42_1=jn(this.d42_1,Y(this.d42_1.length,2))),this.d42_1[this.e42_1]=0===this.e42_1?0:this.d42_1[this.e42_1-1|0]},K(Ar).p41=function(){var t=kr(this,this.e42_1),n=t.ea_1,i=t.fa_1;if(n<=i)do{var e=n;n=n+1|0,this.c42_1[Sr(0,e)]=null,this.c42_1[Er(0,e)]=null}while(e!==i);this.d42_1[this.e42_1]=0,this.e42_1=this.e42_1-1|0},K(Ar).u44=function(){return this.d42_1[this.e42_1]},K(Ar).b1=function(){this.c42_1=Bt(Array(10),null),this.d42_1=new Int32Array(20),this.e42_1=0},K(Ar).n42=function(t){this.m44(t.n3w(),t.l3w())},K(Ar).m44=function(t,n){var i=this.e42_1>=1?this.d42_1[this.e42_1-1|0]:0,e=this.d42_1[this.e42_1];if(i=this.c42_1.length&&((s=this).c42_1=Dn(s.c42_1,Y(s.c42_1.length,2))),function(t,n,i){var e=t.c42_1,r=Sr(0,n),s=null==i?null:at(i);e[r]=null==s?"":s}(this,o,t),function(t,n,i){var e=t.c42_1,r=Er(0,n),s=null==i?null:at(i);e[r]=null==s?"":s}(this,o,n);var u=this.d42_1,a=this.e42_1;u[a]=u[a]+1|0},K(Ar).c44=function(t){var n,i=at(t);if("xml"===i)return"http://www.w3.org/XML/1998/namespace";if("xmlns"===i)return"http://www.w3.org/2000/xmlns/";t:{for(var e=Mn(this.u44()-1|0,0).v();e.w();){var r=e.y();if(Cr(this,r)===i){n=r;break t}}n=null}var s=null==n?null:qr(this,n);return null==s?0===Q(i)?"":null:s},K(Ar).n44=function(t){var n,i=at(t);if("http://www.w3.org/XML/1998/namespace"===i)n="xml";else if("http://www.w3.org/2000/xmlns/"===i)n="xmlns";else if(""===i){var e;t:{var r=Z(0,this.u44());if(gt(r,Yt)&&r.d1())e=!0;else{for(var s=r.v();s.w();){var o=Cr(this,s.y());if(0===Q(o)){e=!1;break t}}e=!0}}n=e?"":null}else{var u;t:{for(var a=Mn(this.u44()-1|0,0).v();a.w();){var h,_=a.y();if(qr(this,_)===i){var l;n:{var c=Z(_+1|0,this.u44());if(gt(c,Yt)&&c.d1())l=!0;else{for(var f=c.v();f.w();){var v=f.y();if(Cr(this,_)===Cr(this,v)){l=!1;break n}}l=!0}}h=l}else h=!1;if(h){u=_;break t}}u=null}n=null==u?null:Cr(this,u)}return n},K(Ar).v=function(){return new zr(this)},K(Ar).j44=function(){var t;do{t="n"+this.b42_1}while(null!=this.c44(t));return t},K(Ar).l44=function(t){var n=kr(this,this.e42_1),i=n.ea_1,e=n.fa_1,r=i,s=Nn(i,e,2);if(r<=s)do{var o=r;if(r=r+2|0,this.c42_1[Sr(0,o)]===t)return this.c42_1[Er(0,o)]}while(o!==s);return null},K(Ir).w44=function(t){for(var n=rt(),i=_t(),e=0,r=0,s=t.length;r");break;default:i.p5(o)}else switch(e){case 1:case 2:case 3:i.q7("\x3c!----\x3e",0,e),e=0,i.p5(o);break;case 0:case 4:i.p5(o);break;case 5:e=4,i.p5(ot(45)).p5(o);break;case 6:throw Ce("-- is not allowed to occur inside xml comment text")}}if(e>0)throw Ce("Indent can not contain unclosed comment");return Tr(i,n),n},K(Dr).q43=function(t){this.h3x_1=R.w44(t)},K(Fr).w=function(){return this.k45_1=0){if(vn(t,0)!==ot(123))throw ht("Not a valid qname literal");e=at(dn(t,1,r));var s=r+1|0,o=Q(t);i=at(dn(t,s,o))}else e=n.l3w(),i=at(t);return Gr(e,i)},t.$_$.o1=function(t,n,i){if(i.u3w().equals(Ti()))throw ht("Cannot really validly write an end element here");De(i,t),i.u3w().equals(Ai())&&Be(t,n,i)},t.$_$.p1=function(t){for(var n=t.length,i=wn(n),e=ot(32),r=0,s=t.length;r0&&i.c8(i.a()-1|0),i.toString()},t.$_$.q1=function(){return H},t})?e.apply(n,r):e)||(t.exports=s)},931:function(t,n,i){var e,r,s;r=[n,i(675),i(681),i(755)],void 0===(s="function"==typeof(e=function(t,n,i,e){"use strict";var r,s,o,u,a,h,_,l,c,f,v,d,w,p,m,g,b,$,y,k,x,S,E,C,q,O,z,A,T,I,D,j,M=Math.imul,N=n.$_$.m,R=i.$_$.i,P=n.$_$.a5,L=i.$_$.k1,F=n.$_$.qa,U=n.$_$.r4,H=n.$_$.sg,V=n.$_$.a,B=e.$_$.u2,Y=n.$_$.fg,W=e.$_$.p2,G=i.$_$.q,K=e.$_$.u,X=e.$_$.m1,J=n.$_$.gb,Z=n.$_$.fb,Q=n.$_$.hb,tt=n.$_$.f,nt=(e.$_$.o,e.$_$.c),it=n.$_$.d8,et=e.$_$.i,rt=e.$_$.n1,st=n.$_$.p4,ot=e.$_$.x,ut=e.$_$.v,at=e.$_$.g,ht=i.$_$.x,_t=i.$_$.z,lt=i.$_$.o1,ct=(i.$_$.o,n.$_$.x1),ft=n.$_$.u9,vt=i.$_$.l,dt=n.$_$.eb,wt=e.$_$.w1,pt=n.$_$.w9,mt=e.$_$.a,gt=e.$_$.u1,bt=e.$_$.o2,$t=n.$_$.sf,yt=n.$_$.ga,kt=n.$_$.z9,xt=e.$_$.l2,St=n.$_$.ha,Et=e.$_$.n2,Ct=i.$_$.q1,qt=i.$_$.l1,Ot=i.$_$.n,zt=i.$_$.i1,At=i.$_$.a1,Tt=i.$_$.m,It=n.$_$.d5,Dt=e.$_$.m2,jt=i.$_$.y,Mt=n.$_$.d,Nt=i.$_$.r,Rt=e.$_$.m,Pt=e.$_$.l,Lt=i.$_$.p1,Ft=n.$_$.fe,Ut=n.$_$.pe,Ht=i.$_$.p,Vt=n.$_$.qe,Bt=n.$_$.cf,Yt=n.$_$.f3,Wt=n.$_$.ye,Gt=n.$_$.ff,Kt=n.$_$.b4,Xt=n.$_$.ve,Jt=n.$_$.df,Zt=n.$_$.n3,Qt=n.$_$.xe,tn=n.$_$.ef,nn=n.$_$.u3,en=n.$_$.te,rn=n.$_$.ce,sn=e.$_$.v1,on=i.$_$.c,un=i.$_$.d,an=i.$_$.f,hn=i.$_$.j1,_n=i.$_$.e1,ln=i.$_$.f1,cn=n.$_$.ch,fn=n.$_$.i1,vn=n.$_$.lb,dn=n.$_$.o2,wn=e.$_$.d1,pn=e.$_$.k1,mn=e.$_$.l1,gn=e.$_$.t1,bn=n.$_$.p9,$n=n.$_$.k,yn=n.$_$.v,kn=i.$_$.k,xn=i.$_$.j,Sn=e.$_$.x1,En=n.$_$.l,Cn=n.$_$.u7,qn=n.$_$.c8,On=n.$_$.c7,zn=n.$_$.v5,An=(i.$_$.s,n.$_$.n4),Tn=n.$_$.p6,In=e.$_$.h,Dn=i.$_$.g1,jn=i.$_$.c1,Mn=e.$_$.s1,Nn=n.$_$.bh,Rn=n.$_$.ic,Pn=i.$_$.h1,Ln=i.$_$.t,Fn=i.$_$.u,Un=n.$_$.jh,Hn=n.$_$.f7,Vn=i.$_$.b,Bn=i.$_$.e,Yn=i.$_$.g,Wn=n.$_$.vg,Gn=i.$_$.b1,Kn=n.$_$.kc,Xn=n.$_$.ea,Jn=n.$_$.r2,Zn=n.$_$.ie,Qn=i.$_$.n1,ti=n.$_$.he,ni=n.$_$.vd,ii=n.$_$.y5,ei=i.$_$.h,ri=i.$_$.a,si=n.$_$.q9,oi=e.$_$.r2,ui=e.$_$.d,ai=n.$_$.fa,hi=n.$_$.ca,_i=e.$_$.f,li=e.$_$.n,ci=e.$_$.j,fi=e.$_$.k,vi=e.$_$.c1,di=e.$_$.w,wi=n.$_$.w5,pi=n.$_$.p7,mi=n.$_$.tb,gi=n.$_$.u,bi=n.$_$.s,$i=n.$_$.ba,yi=n.$_$.l8,ki=n.$_$.t5,xi=n.$_$.vc,Si=n.$_$.pc,Ei=n.$_$.nc,Ci=n.$_$.sc,qi=n.$_$.yc,Oi=n.$_$.r9,zi=n.$_$.ee,Ai=n.$_$.nd,Ti=i.$_$.d1,Ii=n.$_$.of,Di=n.$_$.yf,ji=n.$_$.n7,Mi=n.$_$.ma,Ni=n.$_$.jf,Ri=n.$_$.b2,Pi=n.$_$.c,Li=n.$_$.f1,Fi=n.$_$.x,Ui=e.$_$.q1,Hi=e.$_$.o1,Vi=i.$_$.m1,Bi=n.$_$.w4,Yi=e.$_$.a1,Wi=n.$_$.z4,Gi=e.$_$.y,Ki=n.$_$.x4,Xi=e.$_$.z,Ji=n.$_$.y4,Zi=e.$_$.b1,Qi=n.$_$.t1,te=n.$_$.y7,ne=n.$_$.m8,ie=n.$_$.e7,ee=n.$_$.ke,re=n.$_$.fd,se=n.$_$.hd,oe=i.$_$.v,ue=n.$_$.cg,ae=n.$_$.o8,he=n.$_$.x9,_e=e.$_$.k2,le=e.$_$.t2,ce=i.$_$.w,fe=n.$_$.be;function ve(t,n,i,e){return t=t===tt?this.f4r():t,n=n===tt?this.c4s():n,i=i===tt?this.x4s():i,e===tt?this.e4t(t,n,i):e.e4t.call(this,t,n,i)}function de(t){t.q34("namespaces",pe().a46_1.g34());var n=B(V(U().e7(),H([]),!1)),i=(F(n,W)?n:Y()).g34();return t.q34("content",i),P}function we(){r=this,this.a46_1=K(G()),this.b46_1=X("compactFragment",[],de)}function pe(){return null==r&&new we,r}function me(t){var n=B(V(U().e7(),H([]),!1)),i=(F(n,W)?n:Y()).g34();t.q34("text",i);var e=et();return t.q34("element",rt("element",e,[],ge)),P}function ge(t){return P}function be(t){var n=B(V(U().e7(),H([]),!1)),i=(F(n,W)?n:Y()).g34();return t.q34("type",i),t.q34("value",ye().e46_1),P}function $e(){s=this,this.d46_1=ut(ot(st),ot(st));var t=et();this.e46_1=rt("org.w3c.dom.Node",t,[],me);var n=at();this.f46_1=rt("node",n,[],be)}function ye(){return null==s&&new $e,s}function ke(t){var n=B(V(U().e7(),H([]),!1)),i=(F(n,W)?n:Y()).g34();t.q34("namespace",i,tt,!0);var e=B(V(U().e7(),H([]),!1)),r=(F(e,W)?e:Y()).g34();return t.q34("localname",r),t.q34("attributes",Se().i46_1.g34()),t.q34("content",K(ye()).g34()),P}function xe(){o=this,this.i46_1=ut(ot(st),ot(st)),this.j46_1=X("element",[],ke)}function Se(){return null==o&&new xe,o}function Ee(t){return function(t,n){var i=ht(vt("dummy")),e=i.documentElement;return null==e||i.removeChild(e),Ce.call(n,t,i),n}(t,dt(J(Ce)))}function Ce(t,n){this.g46_1=t,this.h46_1=n}function qe(t,n){this.k46_1=t,this.l46_1=n}function Oe(t,n){this.m46_1=t,this.n46_1=n}function ze(t,n){return new Oe(t,n)}function Ae(){je.call(this,"Element",0),u=this}function Te(){je.call(this,"Attribute",1),a=this}function Ie(){je.call(this,"Text",2),h=this}function De(){if(_)return P;_=!0,u=new Ae,a=new Te,h=new Ie}function je(t,n){$t.call(this,t,n)}function Me(){return De(),u}function Ne(){return De(),a}function Re(){Fe.call(this,"Attribute",1),c=this}function Pe(){Fe.call(this,"Text",2),f=this}function Le(){if(d)return P;d=!0,l=new Fe("Element",0),c=new Re,f=new Pe,v=new Fe("Mixed",3),new Fe("Inline",4)}function Fe(t,n){$t.call(this,t,n)}function Ue(){return Le(),l}function He(){return Le(),c}function Ve(){return Le(),f}function Be(){return Le(),v}function Ye(t,n){this.g47_1=t,this.h47_1=n}function We(t){return P}function Ge(t,n,i){t=t===tt?xt():t,n=n===tt?Ze:n;var e=new Hr;return n(e),function(t,n,i){return n=n===tt?xt():n,Qe.call(i,(e=t,function(t,n){var i,e,r,s,o,u,a,h,_=(t=t===tt?new Hr:t).n4p_1,l=t.o4p_1,c=t.p4p_1,f=t.r4p_1;if(null==f){var v=t.y4p(),d=null!=v&&v,w=t.t4p_1,p=t.q4p_1;e=!1,r=d,s=w,o=null==p?Br().j4p_1:p,i=function(t,n,i,e,r,s,o,u){return n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().j4p_1:e,r=r===tt?null:r,s=s!==tt&&s,o=o!==tt&&o,ls.call(u,t,n,i,e,r,s,o,!1),u}(e,r,s,o,u,a,h,dt(J(ls)))}else i=f;return Yr.call(n,_,l,c,i,t.v4p_1,t.w4p_1),n.k4d_1=t.u4p_1,n.l4d_1=t.x4p_1,n}(e,dt(J(Yr)))),n),i;var e}(e,t,i),i}function Ke(t,n){return Ge(t,n,dt(J(Qe)))}function Xe(){p=this,this.w47_1=[Os(),ye(),Se(),pe()],this.x47_1=Ke(tt,We)}function Je(){}function Ze(t){return P}function Qe(t,n){null==p&&new Xe,n=n===tt?xt():n,this.j47_1=t,this.k47_1=Et(n,(sr(),w))}function tr(t,n,i){var e;if(sr(),t.e49_1===fs()){var r;if(t.d49_1===fs()){var s=null==i?null:Tt(i.l3w(),n);r=null==s?vt(n):s}else{var o=null==i?null:Tt(i.l3w(),t.d49_1);r=null==o?vt(t.d49_1):o}e=r}else e=t.d49_1===fs()?t.f49_1===fs()?Tt(n,t.e49_1):new At(n,t.e49_1,t.f49_1):t.f49_1===fs()?Tt(t.e49_1,t.d49_1):new At(t.e49_1,t.d49_1,t.f49_1);return e}function nr(t){return sr(),t.h49_1===fs()?vt(t.g49_1):t.i49_1===fs()?Tt(t.h49_1,t.g49_1):new At(t.h49_1,t.g49_1,t.i49_1)}function ir(t){sr();var n=0,i=t.j35();if(n":e)+" ("+n+")",r);return Tn()}function Lr(t,n,i,e,r){return Tn()}function Fr(t,n,i,e,r){if(!(t.l3w()!==i.h48().e40()||!!n.equals(Ne())&&"http://www.w3.org/2001/XMLSchema-instance"===(null==e?null:e.e40())))throw new Wr(t.v3w(),"("+i.j49().h35()+") "+i.h48()+"/"+vn(null==e?"":e)+" ("+n+")",r);return Tn()}function Ur(t,n,i,e){var r=t.v3w(),s=null==i?null:i.toString();throw new Wr(r,null==s?"":s,e)}function Hr(t,n,i,e,r,s){t=t===tt||t,n=n===tt?ei():n,i=i===tt?"":i,e=e===tt?null:e,r=r===tt?Br().j4p_1:r,s=s===tt?null:s,this.n4p_1=t,this.o4p_1=n,this.p4p_1=i,this.q4p_1=r,this.r4p_1=s,this.s4p_1=e,this.t4p_1=ns(),this.u4p_1=!0,this.v4p_1=null,this.w4p_1=ri(),this.x4p_1=!1}function Vr(){b=this,this.i4p_1=["http://www.w3.org/2001/XMLSchema-instance","http://www.w3.org/XML/1998/namespace"];var t=Pr;this.j4p_1=new Mr(t);var n=Lr;this.k4p_1=new Nr(n);var i=Fr;this.l4p_1=new Rr(i),this.m4p_1=Ur}function Br(){return null==b&&new Vr,b}function Yr(t,n,i,e,r,s){Br(),t=t===tt||t,n=n===tt?ei():n,i=i===tt?"":i,r=r===tt?null:r,s=s===tt?ri():s,this.e4d_1=t,this.f4d_1=n,this.g4d_1=i,this.h4d_1=e,this.i4d_1=r,this.j4d_1=s,this.k4d_1=!0,this.l4d_1=!1}function Wr(t,n,i){var e=function(t){return!0===t.v().w()?Hn(t,tt,"\n candidates: ",tt,tt,tt,Xr):""}(i=i===tt?Tn():i),r=null==t?null:" at position "+t;Gr.call(this,"Could not find a field for name "+n+e+(null==r?"":r)),si(this,Wr)}function Gr(t,n){ui(t,n=n===tt?null:n,this),si(this,Gr)}function Kr(t,n,i){i=i===tt?null:i,Gr.call(this,"Invalid XML value at position: "+t+": "+n,i),si(this,Kr)}function Xr(t){return t instanceof Ar?t.k4b_1+" ("+t.m4b_1.y46()+")":vn(t)}function Jr(t){return function(t,n){return Zr.call(n,t,null,!1),n}(t,dt(J(Zr)))}function Zr(t,n,i){if(this.j4q_1=t,this.k4q_1=n,this.l4q_1=i,this.l4q_1&&null==this.k4q_1)throw ct(vn("Default namespace requires there to be an annotated name"))}function Qr(t,n){this.m4q_1=t,this.n4q_1=n}function ts(t,n){$t.call(this,t,n)}function ns(){return function(){if(y)return P;y=!0,new ts("ALWAYS",0),$=new ts("ANNOTATED",1),new ts("NEVER",2)}(),$}function is(){}function es(){return t=dt(J(os)),os.call(t,!1),t;var t}function rs(t){return function(t,n){return os.call(n,t.z4p_1,t.a4q_1,t.b4q_1,t.c4q_1,t.d4q_1,t.e4q_1,t.w4g(),t.c4g()),n}(t,dt(J(os)))}function ss(t){return function(t,n){return ls.call(n,t.q4r_1,t.r4r_1,t.s4r_1,t.t4r_1,t.u4r_1,t.v4r_1,t.w4r_1,t.x4r_1,t.y4r_1),n}(t,dt(J(ls)))}function os(t,n,i,e,r,s,o,u,a){t=t!==tt&&t,n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().j4p_1:e,r=r===tt?null:r,s=s!==tt&&s,o=o!==tt&&o,u=u!==tt&&u,a=a!==tt&&a,this.q4r_1=t,this.r4r_1=n,this.s4r_1=i,this.t4r_1=e,this.u4r_1=r,this.v4r_1=s,this.w4r_1=o,this.x4r_1=u,this.y4r_1=a}function us(t,n,i){var e;if("*"===t)e=-2;else{var r=n.o2(t);if(null==r)throw new Gr("Could not find the attribute in "+i.h35()+" with the name: "+t+"\n Candidates were: "+Hn(n.b2()));e=r}return e}function as(){return"Type name info should match"}function hs(t){return t instanceof Ss}function _s(t){return function(t){for(var n=zi(t.q4s_1,Oi([Jn(59)])),i=En(wi(n,10)),e=n.v();e.w();){var r,s=e.y(),o=Ai(s,Jn(61));if(-1===o)r=new Ti("",s);else{var u=s.substring(0,o),a=o+1|0,h=s.substring(a);r=new Ti(u,h)}var _=r;i.s(_)}return i}(t)}function ls(t,n,i,e,r,s,o,u,a){n=n!==tt&&n,i=i===tt?ns():i,e=e===tt?Br().j4p_1:e,r=r===tt?null:r,s=s!==tt&&s,o=o!==tt&&o,a=a!==tt&&a,this.z4p_1=t,this.a4q_1=n,this.b4q_1=i,this.c4q_1=e,this.d4q_1=r,this.e4q_1=s,this.f4q_1=o,this.g4q_1=u,this.h4q_1=a}function cs(t,n,i){t=t===tt?"ZXCVBNBVCXZ":t,n=n===tt?"ZXCVBNBVCXZ":n,i=i===tt?"ZXCVBNBVCXZ":i,this.d49_1=t,this.e49_1=n,this.f49_1=i}function fs(){return k}function vs(){}function ds(t){t=t===tt||t,this.o4s_1=t}function ws(){}function ps(t){t=t===tt||t,this.u4k_1=t}function ms(t,n,i){n=n===tt?"ZXCVBNBVCXZ":n,i=i===tt?"ZXCVBNBVCXZ":i,this.g49_1=t,this.h49_1=n,this.i49_1=i}function gs(){}function bs(t){this.p4s_1=t}function $s(){}function ys(){}function ks(){}function xs(){}function Ss(){}function Es(t){this.r4s_1=t}function Cs(t){return t.k34_1=ji(new cs("QName","http://www.w3.org/2001/XMLSchema","xsd")),P}function qs(){x=this;var t=In();this.a4p_1=rt("javax.xml.namespace.QName",t,[],Cs)}function Os(){return null==x&&new qs,x}function zs(){return ko(),S}function As(t){var n=t.g48_1;return Xn("element",1,Kn,(function(t){return As(t)}),null),n.h2()}function Ts(t,n,i,e,r){var s,o,u;Ds.call(this,t.h4d_1,new Ps(i,e,!0,null)),this.g48_1=Nn((s=t,o=n,u=this,function(){return E.s4s(s,o,u.l47_1,tt,!1)}))}function Is(){}function Ds(t,n,i){var e,r,s;i=i===tt?n:i,this.l47_1=i,this.m47_1=n.x4s(),this.n47_1=n.f4r(),this.o47_1=n.d4s(),this.p47_1=t.n4r(n),this.q47_1=Nn((e=t,r=n,s=this,function(){return e.t4q(r,s.l47_1,s.y46(),s.n47_1)}))}function js(t){var n=t.v48_1;return Xn("children",1,Kn,(function(t){return js(t)}),null),n.h2()}function Ms(t,n,i,e){var r;uo.call(this,t.h4d_1,i,e),this.r48_1=t.h4d_1.b4r(i,e,!1);t:{for(var s=e.a4s().v();s.w();){var o=s.y();if(o instanceof vs){r=o;break t}}r=null}var u=r,a=t.h4d_1.w4q(i,e);this.s48_1=t.h4d_1.v4q(i,e)?ho():null==a?lo():new co(a);var h,_=yn(),l=this.s48_1;kt(l,ho())?h=null:kt(l,lo())?h=E.s4s(t,n,new vo(this,1),tt,!1).h48():l instanceof co?h=this.h48():cn();var c=h;if(null!=u)for(var f=e.g34(),v=null==f?null:f.j49(),d=null==v?null:v.h35(),w=null==d?"":d,p=e.g34(),m=null==p?null:p.h48(),g=new Qr(w,null==m?Tt("",""):m),b=Hi(this.j49()),$=null==b?U().u6():b,y=u.y4s_1,k=0,x=y.length;k0&&(Q=Z,et=at),Z=Z+1|0}while(Z=0){var l=_.h1(n);if(!kt(l.e4s(),Pt())||!kt(l.n35(0).j49(),pe().b46_1)){var c;t:{for(var f=ie(_).v();f.w();){var v=f.y();if(v!==n&&_.h1(v).y46().equals(Ue())){c=v;break t}}c=null}var d=c;if(null!=d)throw new Gr("Types with an @XmlValue member may not contain other child elements ("+s.j49().n35(d))}}return _})),this.r4g_1=Nn(ro(this))}function oo(){}function uo(t,n,i){Ds.call(this,t,n,i);var e;t:{for(var r=n.a4s().v();r.w();){var s=r.y();if(s instanceof gs){e=s;break t}}e=null}var o,u=e;if(null==u){var a;t:{for(var h=i.a4s().v();h.w();){var _=h.y();if(_ instanceof gs){a=_;break t}}a=null}o=a}else o=u;var l,c=o;if(null==c){var f;t:{for(var v=n.b4s().i35().v();v.w();){var d=v.y();if(d instanceof gs){f=d;break t}}f=null}l=f}else l=c;var w=l;this.h4b_1=!0===(null==w?null:w.g4u_1);var p,m=$o(i.a4s());this.i4b_1=null==m?(p=n.b4s(),ko(),$o(p.i35())):m,this.j4b_1=q}function ao(){O=this,fo.call(this)}function ho(){return null==O&&new ao,O}function _o(){z=this,fo.call(this)}function lo(){return null==z&&new _o,z}function co(t){fo.call(this),this.z4o_1=t}function fo(){}function vo(t,n,i,e,r){i=i===tt?null:i,e=e===tt?null:e,r=r===tt?null:r,this.h4u_1=t,this.i4u_1=n,this.j4u_1=r;var s;s=null==i?-1===this.i4u_1?Jr(this.h4u_1.j49().h35()):function(t,n,i){ko();var e,r=t.p35(n);t:{for(var s=t.m35(n).v();s.w();){var o=s.y();if(o instanceof cs){e=o;break t}}e=null}var u=e;return new Zr(r,null==u?null:tr(u,r,i),(null==u?null:u.e49_1)===fs())}(this.h4u_1.j49(),this.i4u_1,Vi(this.h4u_1.h48())):i,this.k4u_1=s;var o;o=null==e?-1===this.i4u_1?null:function(t){ko();for(var n=null,i=t.v();i.w();){var e=i.y(),r=e instanceof ps?e:null;if(!0===(null==r?null:r.u4k_1))return Be();if(e instanceof ws||e instanceof $s)return He();if(e instanceof ds)return e.o4s_1?Ue():He();if(e instanceof vs||e instanceof ms)return Ue();e instanceof gs&&(n=e)}return!0===(null==n?null:n.g4u_1)?Ue():null}(this.h4u_1.j49().m35(this.i4u_1)):e,this.l4u_1=o}function wo(t,n,i,e){ko();var r,s,o,u,a=ee(t.m4q_1,Jn(46),""),h=t.n4q_1,_=Ai(n,Jn(61));if(_<0){var l;if(s=n,r=ni(n,Jn(46)),o=h.g40(),r<0)l=n;else{var c=r+1|0;l=n.substring(c)}u=l}else{var f=n.substring(0,_);s=vn(Ni(Mi(f)?f:Y())),r=ni(n,Jn(46),_-1|0);var v=Ai(n,Jn(58),_+1|0);if(v<0){o=h.g40();var d=_+1|0,w=n.substring(d);u=vn(Ni(Mi(w)?w:Y()))}else{var p=_+1|0,m=n.substring(p,v);o=vn(Ni(Mi(m)?m:Y()));var b=v+1|0,$=n.substring(b);u=vn(Ni(Mi($)?$:Y()))}}var y=0!==r||0===ft(a)?s:a+"."+s.substring(1),k=e.c38(i,y),x=null==k?null:k.g34();if(null==x)throw Ot("Missing descriptor for "+y+" in the serial context");var S,E=x;if(_<0){var C=g,q=h.e40();S=C.d4p(E,new Ti(o,q))}else{var O=h.e40();S=new At(O,u,o)}return new Ye(S,E)}function po(t,n){var i;if(ko(),t.d35()&&se(t.h35(),Jn(63)))i=re(t.h35(),1);else{var e=Hi(t),r=null==e?null:Uo(e);i=null==r?t.h35():r}var s,o=i;t:{for(var u=t.i35().v();u.w();){var a=u.y();if(a instanceof cs){s=a;break t}}s=null}var h,_=s;if(null==_){var l,c=Hi(t),f=null==c?null:oe(c);if(null==f)l=null;else{var v;t:{for(var d=f.v();d.w();){var w=d.y();if(w instanceof cs){v=w;break t}}v=null}l=v}h=l}else h=_;var p=h;return new Zr(o,null==p?null:tr(p,o,n),(null==p?null:p.e49_1)===fs())}function mo(t,n,i){i=i===tt?n:i,Ds.call(this,t.h4d_1,n,i);var e;e=!(i instanceof Ps&&i.b4t_1)&&t.h4d_1.u4q(n,i),this.t49_1=e}function go(t,n){ko();var i=0;if(in&&(n=e)}return n}function jo(t,n,i){for(var e=t.j4s_1,r=N(),s=e.v();s.w();){var o=s.y();n[o.h4s_1]||r.s(o)}for(var u=r,a=u.v();a.w();){var h=a.y();i.s(h),n[h.h4s_1]=!0}for(var _=u.v();_.w();)jo(_.y(),n,i)}function Mo(t,n){if(null==t[n.h4s_1]){t[n.h4s_1]=n;for(var i=n.j4s_1.v();i.w();)Mo(t,i.y())}}function No(t){return function(n){return!t[n.h4s_1]}}function Ro(t){return function(n){return!t[n.h4s_1]}}function Po(t){return t.i4s_1.d1()}function Lo(t){var n=t.u47_1;return Xn("children",1,Kn,(function(t){return Lo(t)}),null),n.h2()}function Fo(t,n){var i,e;this.s47_1=t,this.t47_1=po(this.s47_1,n),this.u47_1=Nn((i=this,e=n,function(){for(var t=0,n=i.s47_1.j35(),r=$i(Array(n),null);t=0;){var u=o;0===u?r=n.u37(t.b46_1,o,t.a46_1):1===u&&(s=n.r37(t.b46_1,o)),o=n.y37(t.b46_1)}i=R(r,s)}return i}(pe(),i);return i.i37(n),e},J($e).g34=function(){return this.f46_1},J($e).h34=function(t){return function(t,n){for(var i={_v:null},e=t.f46_1,r=n.h37(e),s=null,o=r.y37(ye().f46_1);-1!==o;){var u=o;if(0===u)s=r.r37(ye().f46_1,0);else if(1===u)switch(s){case null:throw nt("Missing type");case"element":i._v=r.u37(ye().f46_1,1,Se());break;case"attr":var a=r.u37(ye().f46_1,1,ye().d46_1);if(1!==a.n())throw nt("Only a single attribute pair expected");var h=n.h46_1.createAttribute(it(a.b2()));h.value=it(a.c2()),i._v=h;break;case"text":i._v=n.h46_1.createTextNode(r.r37(ye().f46_1,1));break;case"comment":i._v=n.h46_1.createComment(r.r37(ye().f46_1,1));break;default:throw nt("unsupported type: "+s)}o=r.y37(ye().f46_1)}r.i37(e);var _=i._v;if(null==_)throw nt("Missing value");return _}(this,t instanceof Ce?t:Ee(t))},J(xe).g34=function(){return this.j46_1},J(xe).h34=function(t){return F(t,Je)?function(t,n){var i=ht(n.c46().f3x()).createDocumentFragment(),e=new _t(i);lt(e,null,n.c46());var r=i.firstChild;for(;null!=r&&1!==r.nodeType;)r=r.nextSibling;var s=null==r||null!=r?r:Y();if(null==s)throw nt("Expected element, but did not find it");return s}(0,t):function(t,n){for(var i=t.j46_1,e=n.h37(i),r=K(ye()),s=e.y37(Se().j46_1),o=null,u=null,a=null,h=null;-1!==s;){var _=s;if(0===_)o=e.r37(Se().j46_1,0);else if(1===_)u=e.r37(Se().j46_1,1);else if(2===_)a=Se().i46_1.h34(n);else{if(3!==_)throw-3===_?nt("Found unexpected child at index: "+s):ct("Received an unexpected decoder value: "+s);h=r.h34(n)}s=e.y37(Se().j46_1)}if(null==u)throw nt("Missing localName");if(null==a)throw nt("Missing attributes");if(null==h)throw nt("Missing content");for(var l=n.h46_1,c=null==o||0===ft(o)?l.createElement(u):l.createElementNS(o,u),f=a.d2().v();f.w();){var v=f.y(),d=v.g2(),w=v.h2();c.setAttribute(d,w)}for(var p=h.v();p.w();){var m=p.y();c.appendChild(l.adoptNode(m))}var g=c;return e.i37(i),g}(this,t instanceof Ce?t:Ee(t))},J(Ce).v36=function(){return this.g46_1.v36()},J(Ce).w36=function(){return this.g46_1.w36()},J(Ce).c37=function(){return this.g46_1.c37()},J(Ce).b37=function(){return this.g46_1.b37()},J(Ce).a37=function(){return this.g46_1.a37()},J(Ce).e37=function(t){return this.g46_1.e37(t)},J(Ce).y36=function(){return this.g46_1.y36()},J(Ce).z36=function(){return this.g46_1.z36()},J(Ce).t36=function(){return this.g46_1.t36()},J(Ce).u36=function(){return this.g46_1.u36()},J(Ce).g37=function(t){return this.g46_1.g37(t)},J(Ce).x36=function(){return this.g46_1.x36()},J(Ce).d37=function(){return this.g46_1.d37()},J(Ce).h37=function(t){return new qe(this.g46_1.h37(t),this.h46_1)},J(qe).w37=function(){return this.k46_1.w37()},J(qe).j37=function(t,n){return this.k46_1.j37(t,n)},J(qe).k37=function(t,n){return this.k46_1.k37(t,n)},J(qe).q37=function(t,n){return this.k46_1.q37(t,n)},J(qe).z37=function(t){return this.k46_1.z37(t)},J(qe).p37=function(t,n){return this.k46_1.p37(t,n)},J(qe).y37=function(t){return this.k46_1.y37(t)},J(qe).o37=function(t,n){return this.k46_1.o37(t,n)},J(qe).s37=function(t,n){return this.k46_1.s37(t,n)},J(qe).m37=function(t,n){return this.k46_1.m37(t,n)},J(qe).n37=function(t,n){return this.k46_1.n37(t,n)},J(qe).x37=function(){return this.k46_1.x37()},J(qe).l37=function(t,n){return this.k46_1.l37(t,n)},J(qe).r37=function(t,n){return this.k46_1.r37(t,n)},J(qe).i37=function(t){this.k46_1.i37(t)},J(qe).t37=function(t,n,i,e){return this.k46_1.t37(t,n,ze(i,this.l46_1),e)},J(qe).v37=function(t,n,i,e){return this.k46_1.v37(t,n,ze(i,this.l46_1),e)},J(Oe).g34=function(){return this.m46_1.g34()},J(Oe).h34=function(t){return this.m46_1.h34(new Ce(t,this.n46_1))},J(Ae).q46=function(t){return t.equals(Ue())},J(Te).q46=function(t){return t.equals(He())},J(Ie).q46=function(t){return t.equals(Ve())},J(je).t46=function(t){return this.q46(t.y46())},J(Re).b47=function(){return!0},J(Pe).b47=function(){return!0},J(Fe).b47=function(){return!1},J(Ye).i47=function(){return this.h47_1.h35()},J(Ye).toString=function(){return"PolyBaseInfo(tagName="+this.g47_1+", descriptor="+this.h47_1+")"},J(Ye).hashCode=function(){var t=this.g47_1.hashCode();return M(t,31)+yt(this.h47_1)|0},J(Ye).equals=function(t){if(this===t)return!0;if(!(t instanceof Ye))return!1;var n=t instanceof Ye?t:Y();return!!this.g47_1.equals(n.g47_1)&&!!kt(this.h47_1,n.h47_1)},J(Xe).w37=function(){return this.x47_1.k47_1},J(Xe).j3n=function(t,n){return this.x47_1.j3n(t,n)},J(Qe).w37=function(){return this.k47_1},J(Qe).j3n=function(t,n){return this.y47(t,Ct().o45(n))},J(Qe).z47=function(t,n,i){qt(n);var e,r=new zr(this.k47_1,this.j47_1,n),s=function(t,n,i,e){if(null!=i)return new Zr(e.f40(),i,!1);var r=e.f40(),s=new Ts(t.j47_1,t.k47_1,n,Jr(r),!1).r47().v47(),o=null==s?e:s;return new Zr(o.f40(),o,!1)}(this,t.g34(),i,n.f3x()),o=new Ts(this.j47_1,this.k47_1,t.g34(),s,!1),u=o.n35(0);if(u instanceof Ms){var a,h=n.f3x();t:{for(var _=null,l=!1,c=u.t48_1.c2().v();c.w();){var f=c.y();if(zt(h,f.h48())){if(l){a=null;break t}_=f,l=!0}}a=l?_:null}e=null==a?null:new Ar(h,0,a)}else{var v=o.n35(0).h48();if(!zt(v,n.f3x()))throw Ot('Local name "'+n.f3x()+'" for root tag does not match expected name "'+v+'"');e=null}return new vr(r,u,e).g37(t)},J(Qe).y47=function(t,n,i,e){return i=i===tt?null:i,e===tt?this.z47(t,n,i):e.z47.call(this,t,n,i)},J(or).l49=function(t){this.k49_1=t},J(or).m49=function(){return this.k49_1},J(fr).a29=function(){return this.w4c_1.y4c_1},J(fr).w37=function(){return this.w4c_1.x4c_1},J(fr).c46=function(){return this.w4c_1.b4d_1},J(fr).u36=function(){return null},J(fr).v36=function(){return this.a29().h4d_1.m4d()?Ht().h34(this):Ut(this.d4d())},J(fr).w36=function(){var t;if(this.n4d_1.p4d()){var n=Bt(this.d4d());t=Yt(n)}else t=Vt(this.d4d());return t},J(fr).x36=function(){var t;if(this.n4d_1.p4d()){var n=Gt(this.d4d());t=Kt(n)}else t=Wt(this.d4d());return t},J(fr).y36=function(){var t;if(this.n4d_1.p4d()){var n=Jt(this.d4d());t=Zt(n)}else t=Xt(this.d4d());return t},J(fr).z36=function(){var t;if(this.n4d_1.p4d()){var n=tn(this.d4d());t=nn(n)}else t=Qt(this.d4d());return t},J(fr).a37=function(){var t=this.d4d();return en(t)},J(fr).b37=function(){return en(this.d4d())},J(fr).c37=function(){return rn(this.d4d())},J(fr).d4d=function(t,n){return t=t===tt||t,n===tt?this.q4d(t):n.q4d.call(this,t)},J(fr).d37=function(){return this.q4d(!1)},J(vr).r4d=function(){return null},J(vr).t36=function(){return!this.c49_1.s4d()&&!this.c46().u3w().equals(on())},J(vr).u36=function(){if(this.c49_1.s4d()){this.c46().v41();var t=this.c46(),n=un(),i=this.h35().e40(),e=this.h35().f40();return t.g3x(n,i,e),null}return J(fr).u36.call(this)},J(vr).e37=function(t){return this.b49_1=!0,this},J(vr).q4d=function(t){var n,i=this.n4d_1,e=i instanceof uo?i:null,r=null==e?null:e.i4b_1,s=this.n4d_1.y46();if(this.a49_1>=0)n=this.c46().d3x(this.a49_1);else{var o;switch(s.v9_1){case 0:var u=this.c46(),a=an(),h=this.h35().e40(),_=this.h35().f40();u.g3x(a,h,_),o=hn(this.c46());break;case 1:throw nt("Attribute parsing without a concrete index is unsupported");case 4:throw nt("Inline classes can not be decoded directly");case 3:o=_n(this.c46());break;case 2:o=this.n4d_1.t4d()?_n(this.c46()):ln(this.c46());break;default:cn()}n=o}var l=n;return t&&0===ft(l)&&null!=r?r:l},J(vr).h37=function(t){throw fn("This should not happen as decodeSerializableValue should be called first")},J(vr).g37=function(t){var n=this.n4d_1.u4d(t),i=this.b49_1&&this.n4d_1 instanceof Zs?this.n4d_1.n35(0):this.n4d_1,e=new wr(this.c49_1,i,this.z48_1,this.a49_1,this.r4d()),r=n.h34(e),s=e.e4e_1,o=null==s?null:s.m49();if(null!=o){if(null==r)throw ct(vn("Required value was null."));if(null!=this.c49_1.c4d_1.e2(o,r))throw Ot("Duplicate use of id "+o)}return r},J(dr).h37=function(t){throw dn("Strings cannot be decoded to structures")},J(dr).t36=function(){return!0},J(dr).e37=function(t){return new dr(this.l4e_1,this.n4d_1.n35(0),this.k4e_1)},J(dr).q4d=function(t){var n,i=this.n4d_1,e=i instanceof uo?i:null,r=null==e?null:e.i4b_1;if(t&&null!=r){var s=this.k4e_1;n=0===ft(s)}else n=!1;return n?r:this.k4e_1},J(dr).g37=function(t){return this.n4d_1.u4d(t).h34(this)},J(wr).r4d=function(){return this.c4e_1},J(wr).m4e=function(t){this.f4e_1.s(t)},J(wr).q4d=function(t){var n=J(vr).q4d.call(this,t);if(this.a49_1>=0&&this.n4d_1.n4e()){var i=this.e4e_1;null==i||i.l49(n)}return n},J(wr).t36=function(){return this.d4e_1=!0,J(vr).t36.call(this)},J(wr).g37=function(t){return this.d4e_1?t.h34(this):J(vr).g37.call(this,t)},J(wr).e37=function(t){return this.e4e_1=new or,J(vr).e37.call(this,t)},J(wr).h37=function(t){if(t.d35()){var n=new mr(this.g4e_1,this.n4d_1,this.r4d());return this.e4e_1=n,n}var i;if(this.n4d_1.l35()instanceof wn)throw fn("A primitive is not a composite");if(this.n4d_1 instanceof Ms){var e=new Or(this.g4e_1,this.n4d_1,this.z48_1);this.e4e_1=e,i=e}else if(this.n4d_1 instanceof Hs){var r;if(this.n4d_1.y46().equals(He())){var s=new yr(this.g4e_1,this.n4d_1,this.a49_1);this.e4e_1=s,r=s}else if(this.n4d_1.y46().equals(Ve()))r=new kr(this.g4e_1,this.n4d_1);else if(this.n4d_1.u49()){var o=new xr(this.g4e_1,this.n4d_1,this.z48_1,this.r4d());this.e4e_1=o,r=o}else{var u=new Sr(this.g4e_1,this.n4d_1,this.r4d());this.e4e_1=u,r=u}i=r}else if(this.n4d_1 instanceof Gs){var a;if(this.n4d_1.u49()){var h=new Cr(this.g4e_1,this.n4d_1,this.z48_1,this.r4d());this.e4e_1=h,a=h}else{var _=new qr(this.g4e_1,this.n4d_1,this.z48_1,this.r4d());this.e4e_1=_,a=_}i=a}else{var l=new mr(this.g4e_1,this.n4d_1,this.r4d());this.e4e_1=l,i=l}for(var c=i,f=this.f4e_1.v();f.w();){var v=f.y();c.m4e(v)}return c},J(pr).t36=function(){return!1},J(pr).t37=function(t,n,i,e){var r=this.n4d_1,s=r instanceof uo?r:null,o=null==s?null:s.w4e(this.v4e_1,i),u=null==o?e:o;return null==u||null!=u?u:Y()},J(pr).v37=function(t,n,i,e){return null},J(pr).h37=function(t){return this},J(pr).i37=function(t){},J(pr).y37=function(t){var n=t.l35();if(n instanceof mn||n instanceof pn)return-1;throw fn("Null objects have no members")},J(pr).j37=function(t,n){throw fn("Null objects have no members")},J(pr).k37=function(t,n){throw fn("Null objects have no members")},J(pr).l37=function(t,n){throw fn("Null objects have no members")},J(pr).m37=function(t,n){throw fn("Null objects have no members")},J(pr).z37=function(t){return 0},J(pr).n37=function(t,n){throw fn("Null objects have no members")},J(pr).o37=function(t,n){throw fn("Null objects have no members")},J(pr).p37=function(t,n){throw fn("Null objects have no members")},J(pr).q37=function(t,n){throw fn("Null objects have no members")},J(pr).r37=function(t,n){throw fn("Null objects have no members")},J(pr).s37=function(t,n){throw fn("Null objects have no members")},J(mr).i37=function(t){if(!this.x4a_1&&-1!==this.y37(t))throw new Gr("Unexpected content in end structure");this.c46().y41(un(),this.p4f_1)},J(gr).l49=function(t){this.k4a_1=t},J(gr).m49=function(){return this.k4a_1},J(gr).c46=function(){return this.y4a_1.b4d_1},J(gr).r4f=function(t,n,i){var e=this.z4a_1.n35(n),r=e.u4d(i);return this.s4a_1>=0?null:r.g34().l35()instanceof wn?new vr(this.y4a_1,e,this.u4a_1,this.t4a_1):new wr(this.y4a_1,e,this.u4a_1,this.t4a_1,null)},J(gr).t37=function(t,n,i,e){if(this.y4a_1,!this.w4a_1.d1()){var r=this.w4a_1.rd();if(r.z4f_1!==n)throw ct("Recovery state is inconsistent");var s=r.a4g_1,o=null==s||null!=s?s:Y();return null==o||null!=o?o:Y()}var u,a=this.z4a_1.n35(n),h=a.u4d(i);if(kt(F(h,bt)?h:Y(),pe())&&ir(this.z4a_1)===n){if(this.s4a_1>=0){var _=kn("");return null!=_?_:Y()}var l=L(this.c46());this.c46().k41();var c=l instanceof jt?l:null,f=null==c?xn(l):c;return null!=f?f:Y()}if(this.t4a_1>=0&&a instanceof Bs)u=new br(this.y4a_1,a,this.t4a_1);else{var v=this.r4f(t,n,h);u=null==v?new pr(this.y4a_1,a):v}var d=u,w=h instanceof Sn?h.o39(d,e):h.h34(d),p=d instanceof wr?d:null,m=null==p?null:p.e4e_1,g=null==m?null:m.m49();if(null!=g){if(null==w)throw ct(vn("Required value was null."));if(null!=this.y4a_1.c4d_1.e2(g,w))throw Ot("Duplicate use of id "+g)}return this.r4a_1[n]=!0,w},J(gr).v37=function(t,n,i,e){if(this.y4a_1,!this.w4a_1.d1()){var r=this.w4a_1.rd();if(r.z4f_1!==n)throw ct("Recovery state is inconsistent");var s=r.a4g_1,o=null==s||null!=s?s:Y();return null!=o?o:Y()}if(this.y4a_1.s4d()){if(!this.c46().v41().equals(un()))throw nt("Elements with nil tags may not have content");return null}var u=this.r4f(t,n,i);if(null==u)return null;var a=u,h=this.z4a_1.n35(n).u4d(i),_=h instanceof Sn?h.o39(a,e):h.h34(a),l=a instanceof wr?a:null,c=null==l?null:l.e4e_1,f=null==c?null:c.m49();if(null!=f){if(null==_)throw ct(vn("Required value was null."));if(null!=this.y4a_1.c4d_1.e2(f,_))throw Ot("Duplicate use of id "+f)}return this.r4a_1[n]=!0,_},J(gr).s37=function(t,n){if(this.y4a_1,!this.w4a_1.d1()){var i=this.w4a_1.rd();if(i.z4f_1!==n)throw ct("Recovery state is inconsistent");var e=i.a4g_1;return new Es(null==e||null!=e?e:Y())}var r=this.z4a_1.n35(n);return t.l35()instanceof wn?new vr(this.y4a_1,r,this.u4a_1,this.t4a_1):new wr(this.y4a_1,r,this.u4a_1,this.t4a_1,this.j4a_1)},J(gr).s4f=function(t,n){var i=n.equals(Ne());this.u4a_1=null;var e=this.n4a_1,r=this.m4a_1,s=this.x4f(t),o=r.o2(s),u=null==o?null:hr(o,n,this);if(null!=u)return this.u4f(u,n);var a=e.o2(s),h=null==a?null:_r(a,n);if(null!=h){var _=this.u4f(h.l4b_1,n);return this.u4a_1=h,_}var l,c=this.h35().e40();if(i&&!this.a29().h4d_1.c4g()){var f=t.e40();if(0===ft(f)){var v=er(s,c),d=r.o2(v),w=null==d?null:hr(d,n,this);if(null!=w)return this.t4f(w);var p=e.o2(v),m=null==p?null:_r(p,n);if(null!=m)return this.u4a_1=m,this.t4f(m.l4b_1)}var g=t.g40();if(0===ft(g)){var b=this.c46().h3w("");if(null!=b){var $=er(s,b),y=r.o2($),k=null==y?null:hr(y,n,this);if(null!=k)return this.t4f(k);var x=e.o2($),S=null==x?null:_r(x,n);if(null!=S)return this.t4f(S.l4b_1)}}}if(!this.a29().h4d_1.c4g()&&ft(c)>0&&c===t.e40()){var E=r.o2(vt(t.f40())),C=null==E?null:hr(E,n,this);if(null!=C)return this.u4f(C,n)}if(n.equals(Ne())){var q=this.p4a_1,O=this.t4a_1;l=0<=O&&O=0?A:null))return z}else{var T=ir(this.z4a_1),I=T>=0?T:null;if(null==I);else{for(var D=this.z4a_1.n35(I);D instanceof Hs&&D.u49()||D instanceof Zs;)D=D.n35(0);if(kt(D.j49(),pe().b46_1))return this.t4f(I)}}for(var j=this.a29().h4d_1,M=this.c46(),N=En(r.n()),R=r.d2().v();R.w();){var P=R.y(),L=P.g2(),F=P.h2(),U=new Ar(L,F,this.z4a_1.n35(F));N.s(U)}var H=j.d4g(M,n,this.z4a_1,t,Cn(N,e.c2())),V=qn(H);return!0===(null==V?null:V.b4g_1)?V.z4f_1:(this.w4a_1.z(H),-3)},J(gr).t4f=function(t){if(t>=0&&this.r4a_1[t]){var n=this.z4a_1.n35(t);(!(n instanceof mo)||!n.u49())&&this.a29().h4d_1.e4g(this.z4a_1,t)}return t},J(gr).u4f=function(t,n){if(this.t4f(t),this.a29().h4d_1.w4g()&&n.equals(Me())&&this.z4a_1 instanceof so){var i=this.z4a_1.s4g();if(null!=i&&!i.d1()){for(var e=bn(this.r4a_1.length),r=bn(this.r4a_1.length),s=i.v();s.w();){var o=s.y(),u=o.oe(),a=o.pe();-2===u&&(r[a]=!0),-2===a&&(e[u]=!0)}for(var h=i.v();h.w();){var _=h.y(),l=_.oe(),c=_.pe();if(l===t)if(-2===c){var f;t:{for(var v=0,d=On(this.r4a_1).v();d.w();){var w=d.y();if(zn(v),this.r4a_1[w]&&this.z4a_1.n35(w).v4g().equals(Ue())&&!e[w]){f=v;break t}v=v+1|0}f=-1}var p=f;if(p>=0)throw new Gr("Found element "+this.z4a_1.n35(p).h48()+" before "+this.z4a_1.n35(t).h48()+" in conflict with ordering constraints")}else if(this.r4a_1[c])throw new Gr("Found element "+this.z4a_1.n35(c).h48()+" before "+this.z4a_1.n35(t).h48()+" in conflict with ordering constraints");if(!r[t]){var m;t:{for(var g=0,b=On(this.r4a_1).v();b.w();){var $=b.y();if(zn(g),this.r4a_1[$]&&r[$]){m=g;break t}g=g+1|0}m=-1}var y=m;if(y>0)throw new Gr("Found element "+this.z4a_1.n35(t).h48()+" after "+this.z4a_1.n35(y)+" in conflict with ordering constraints")}}}}return t},J(gr).y37=function(t){if(!this.x4a_1&&this.c46().p3w()=0){if(this.c46().y41(un(),this.z4a_1.h48()),this.s4a_1>=this.r4a_1.length)return-1;var n=this.s4a_1;return ar(this),n}this.t4a_1=this.t4a_1+1|0;t:for(;;){var i,e=this.p4a_1,r=this.t4a_1;if(0<=r&&r"),Tn());this.w4a_1.z(S),x=this.y37(t)}else this.r4a_1[y]=!0,x=y;return x}break;case 10:this.y4a_1;var E,C=this.s4f(this.c46().f3x(),Ne());return-3===C?E=this.y37(t):(this.r4a_1[C]=!0,E=C),E;case 1:var q=this.s4f(this.c46().f3x(),Me());if(-3!==q)return this.r4a_1[q]=!0,q;if(!this.w4a_1.d1())return this.w4a_1.nd().z4f_1;Dn(this.c46());break;case 7:throw new Gr("End document in unexpected location")}return-1},J(gr).i37=function(t){if(!this.x4a_1&&-1!==this.y37(t))throw new Gr("Unexpected content in end structure");null==this.j4a_1?this.c46().y41(un(),this.h35()):this.c46().y41(un(),null)},J(gr).v4f=function(t){return ar(this),this.s4a_1=0){var o=this.w4f(this.t4a_1);return this.z4a_1.n35(n).n4e()&&this.l49(o),o}if(this.s4a_1>=0){var u,a=s instanceof uo?s:null,h=null==a?null:a.i4b_1;if(null!=h)u=h;else{if(n!==ir(this.z4a_1))throw new Gr("Missing child "+t.p35(n)+":"+n);u=""}return u}switch(s.y46().v9_1){case 4:throw new Gr("Inline elements can not be directly decoded");case 0:r=hn(this.c46());break;case 3:case 2:var _=_n(this.c46()),l=this.c46().t41();if(!(l instanceof jn))throw new Gr("Missing end tag after text only content (found: "+l+")");var c=this.h35().f40();if(l.w42_1!==c)throw new Gr("Expected end tag local name "+this.h35().f40()+", found "+l.w42_1);r=_;break;case 1:throw ct(vn("Attributes should already be read now"));default:cn()}return r},J(gr).m37=function(t,n){return Xt(this.r37(t,n))},J(gr).j37=function(t,n){var i=this.r37(t,n);return this.a29().h4d_1.m4d()?Ht().h34(new dr(this.y4a_1,this.z4a_1.n35(n),i)):Ut(i)},J(gr).k37=function(t,n){return Vt(this.r37(t,n))},J(gr).l37=function(t,n){return Wt(this.r37(t,n))},J(gr).n37=function(t,n){return Qt(this.r37(t,n))},J(gr).o37=function(t,n){var i=this.r37(t,n);return en(i)},J(gr).p37=function(t,n){return en(this.r37(t,n))},J(gr).q37=function(t,n){return rn(this.r37(t,n))},J(gr).m4e=function(t){this.l4a_1.s(t)},J(br).x37=function(){return!0},J(br).z37=function(t){return 1},J(br).y37=function(t){var n;switch(this.r4h_1){case 0:case 1:var i=this.r4h_1;this.r4h_1=i+1|0,n=i;break;default:n=-1}return n},J(br).t37=function(t,n,i,e){this.q4h_1<0&&(this.q4h_1=n);var r=(n-this.q4h_1|0)%2|0,s=this.z4a_1.n35(r).u4d(i);if(0===r&&kt(s,Os())){var o=this.c46().z41(this.p4h_1);return null!=o?o:Y()}return s.h34(new dr(this.s4h_1,this.z4a_1.e4i(),Lt(this.c46().d3x(this.p4h_1))))},J(br).r37=function(t,n){var i;if(0==(n%2|0)){var e,r=this.c46().z41(this.p4h_1),s=r.g40();if(0===ft(s))e=!0;else{var o=r.e40();e=0===ft(o)}if(!e)throw new Gr("A QName in a namespace cannot be converted to a string");i=r.f40()}else i=this.c46().d3x(this.p4h_1);return i},J(br).i37=function(t){},J(br).h37=function(t){return this},J(br).v36=function(){throw dn("Expect map structure")},J(br).w36=function(){throw dn("Expect map structure")},J(br).c37=function(){throw dn("Expect map structure")},J(br).b37=function(){throw dn("Expect map structure")},J(br).a37=function(){throw dn("Expect map structure")},J(br).e37=function(t){return this},J(br).y36=function(){throw dn("Expect map structure")},J(br).z36=function(){throw dn("Expect map structure")},J(br).t36=function(){throw dn("Expect map structure")},J(br).u36=function(){throw dn("Expect map structure")},J(br).x36=function(){throw dn("Expect map structure")},J(br).d37=function(){throw dn("Expect map structure")},J($r).x37=function(){return!0},J($r).z37=function(t){return lr(this).n()},J($r).t37=function(t,n,i,e){var r=this.z4a_1.n35(n),s=lr(this),o=this.f4c_1;return this.f4c_1=o+1|0,new dr(this.h4c_1,r,s.h1(o)).g37(i)},J($r).r37=function(t,n){var i=lr(this),e=this.f4c_1;return this.f4c_1=e+1|0,i.h1(e)},J($r).i37=function(t){},J(yr).i4c=function(){return this.c46().d3x(this.a4j_1)},J(kr).i4c=function(){return this.c46().s3w()},J(xr).y37=function(t){var n;return this.s4k_1?n=-1:(this.s4k_1=!0,n=0),n},J(xr).t37=function(t,n,i,e){var r=this.z4a_1.n35(0),s=r.u4d(i);if(kt(F(s,bt)?s:Y(),pe())&&ir(cr(this))===this.r4k_1){var o=Pn(this.c46()),u=o instanceof jt?o:null,a=null==u?xn(o):u;return null!=a?a:Y()}var h=new wr(this.t4k_1,r,this.q4k_1,An.MIN_VALUE,this.j4a_1),_=i.h34(h),l=h instanceof wr?h:null,c=null==l?null:l.e4e_1,f=null==c?null:c.m49();if(null!=f){if(null==_)throw ct(vn("Required value was null."));if(null!=this.t4k_1.c4d_1.e2(f,_))throw Ot("Duplicate use of id "+f)}return _},J(xr).i37=function(t){},J(xr).z37=function(t){return 1},J(Sr).y37=function(t){var n;if(this.x4a_1=!0,2===this.c46().v41().v9_1)n=-1;else{var i=this.n4l_1;this.n4l_1=i+1|0,n=i}return n},J(Sr).t37=function(t,n,i,e){var r=this.z4a_1.n35(0),s=new wr(this.o4l_1,r,this.u4a_1,this.t4a_1,null),o=i instanceof Sn?i.o39(s,e):i.h34(s),u=s instanceof wr?s:null,a=null==u?null:u.e4e_1,h=null==a?null:a.m49();if(null!=h){if(null==o)throw ct(vn("Required value was null."));if(null!=this.o4l_1.c4d_1.e2(h,o))throw Ot("Duplicate use of id "+h)}return o},J(Er).t37=function(t,n,i,e){this.i4m_1=n;var r=this.z4a_1.n35(0);if(0==(n%2|0)){if(r.v4g().equals(He())){var s=this.c46().x41(r.h48());if(null==s)throw new Gr("Missing key attribute ("+r.h48()+") on "+this.c46().f3x()+"@"+this.c46().v3w());var o=s;return i.h34(new dr(this.j4m_1,r,o))}if(Ln(!this.z4a_1.g4a()),!zt(this.c46().f3x(),r.h48())){var u=this.c46().f3x()+" != "+this.z4a_1.t4c();throw ct(vn(u))}return J(gr).t37.call(this,t,n%2|0,i,e)}var a=this.z4a_1.n35(1),h=new wr(this.j4m_1,a,this.h4m_1,An.MIN_VALUE,this.j4a_1);this.z4a_1.g4a()&&h.m4e(r.h48());var _=i.h34(h),l=h instanceof wr?h:null,c=null==l?null:l.e4e_1,f=null==c?null:c.m49();if(null!=f){if(null==_)throw ct(vn("Required value was null."));if(null!=this.j4m_1.c4d_1.e2(f,_))throw Ot("Duplicate use of id "+f)}return _},J(Cr).y37=function(t){var n,i;if(this.z4a_1.g4a())return this.i4m_1>=0&&1==(this.i4m_1%2|0)?n=-1:(this.i4m_1=this.i4m_1+1|0,n=this.i4m_1),n;if(this.i4m_1<0){if(!this.c46().u3w().equals(an()))throw ct(vn("Check failed."));if(!zt(this.z4a_1.t4c(),this.c46().f3x()))throw new Gr("Map entry not found. Found "+this.c46().f3x()+"@"+this.c46().v3w()+" instead")}if(0==(this.i4m_1%2|0)){var e=zt(this.z4a_1.t4c(),this.c46().f3x());Fn(e,(i=this,function(){return i.z4a_1.t4c()+" != "+i.c46().f3x()}))}var r=J(Er).y37.call(this,t);return r<0?r:(this.i4m_1=(this.i4m_1-(this.i4m_1%2|0)|0)+(r%2|0)|0,this.i4m_1)},J(Cr).i37=function(t){if(!this.z4a_1.g4a()&&!this.c46().u3w().equals(un()))throw ct(vn("Check failed."));if(!zt(this.c46().f3x(),this.z4a_1.t4c()))throw ct(vn("Check failed."))},J(Cr).z37=function(t){return 2},J(qr).t4f=function(t){return t},J(qr).y37=function(t){if(this.z4a_1.g4a()){var n=this.i4m_1%2|0;if(1==(n+(2&((2^n)&(0|n|-n))>>31)|0)&&J(Er).y37.call(this,t)<0)return-1}else{var i,e=this.i4m_1%2|0;if(1==(e+(2&((2^e)&(0|e|-e))>>31)|0)){var r=this.c46().t41();i=kt(null==r?null:r.u3w(),an())}else i=!1;if(i&&this.c46().v41(),J(Er).y37.call(this,t)<0)return-1}return this.i4m_1=this.i4m_1+1|0,this.i4m_1},J(qr).t37=function(t,n,i,e){var r=J(Er).t37.call(this,t,n,i,e);if(1==(n%2|0)&&!this.z4a_1.g4a()){if(!this.c46().v41().equals(un()))throw ct(vn("Check failed."));Ln(zt(this.z4a_1.t4c(),this.c46().f3x()))}return r},J(qr).i37=function(t){Ln(zt(this.z4a_1.h48(),this.c46().f3x())),J(Er).i37.call(this,t)},J(qr).z37=function(t){return-1},J(Or).y37=function(t){var n,i,e,r=this.z4a_1.s48_1;if(kt(r,ho())){var s;switch(this.v4o_1){case 0:case 1:var o=this.v4o_1;this.v4o_1=o+1|0,s=o;break;default:s=-1}return s}if(null!=this.w4o_1)return 1===this.v4o_1?1:-1;if(0===this.v4o_1){var u=0,a=this.p4a_1;if(u("),this.n35(0).t4s(t,n+4|0,i),t.p7(")")},J(Ts).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Ds).equals.call(this,t)&&(t instanceof Ts||Y(),As(this).equals(As(t)))},J(Ts).hashCode=function(){var t=J(Ds).hashCode.call(this);return M(31,t)+As(this).hashCode()|0},J(Is).v4s=function(t,n,i,e,r){var s,o,u,a=t.h4d_1.d4r(i,e);null==a?(s=i.b4s(),o=i,u=e):(s=a.g34(),o=i.w4s(tt,tt,a),u=e.w4s(tt,tt,a));var h=t.h4d_1.h4r(i,e),_=s.l35();if(kt(_,ci())||_ instanceof wn)return new Vs(t.h4d_1,o,u,r,h);if(kt(_,Pt()))return new Hs(t,n,o,u);if(kt(_,Rt())){var l=i.c4s();return 1===(null==l?-1:l.v9_1)?new Bs(t,n,o,u):new Gs(t,n,o,u)}return _ instanceof vi?new Ms(t,n,o,u):t.k4d_1&&s.k35()?new Zs(t,n,o,u,r):new so(t,n,o,u,h)},J(Is).s4s=function(t,n,i,e,r,s){return e=e===tt?i:e,s===tt?this.v4s(t,n,i,e,r):s.v4s.call(this,t,n,i,e,r)},J(Ds).v4g=function(){return 4===this.y46().v9_1?this.n35(0).v4g():this.y46()},J(Ds).r47=function(){return this.o47_1},J(Ds).p4d=function(){return!1},J(Ds).h48=function(){var t=this.q47_1;return Xn("tagName",1,Kn,(function(t){return t.h48()}),null),t.h2()},J(Ds).u4d=function(t){var n=this.m47_1,i=null==n?t:n;return F(i,bt)?i:Y()},J(Ds).j49=function(){return this.r47().s47_1},J(Ds).j35=function(){return this.r47().s47_1.j35()},J(Ds).e4s=function(){return this.r47().s47_1.l35()},J(Ds).n35=function(t){throw Ri("There are no children")},J(Ds).u4s=function(t,n,i){return this instanceof Hs||this instanceof Vs?this.t4s(t,n,i):i.r(this.j49().h35())?t.p7(this.h48().toString()).p7("<...> = ").p7(this.y46().u9_1):(i.s(this.j49().h35()),this.t4s(t,n,i)),t},J(Ds).toString=function(){var t=Li(),n=Fi();return this.u4s(t,0,n).toString()},J(Ds).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof Ds||Y(),!!kt(this.m47_1,t.m47_1)&&!!this.n47_1.equals(t.n47_1)&&this.r47().equals(t.r47()))},J(Ds).hashCode=function(){var t=this.n47_1.hashCode();t=M(31,t)+this.r47().hashCode()|0;var n=M(31,t),i=this.m47_1,e=null==i?null:yt(i);return n+(null==e?0:e)|0},J(Ms).n4e=function(){return!1},J(Ms).t4d=function(){return!1},J(Ms).y46=function(){return this.r48_1},J(Ms).y4f=function(){return kt(this.s48_1,ho())},J(Ms).n35=function(t){return js(this).h1(t)},J(Ms).c4p=function(t){var n=this.t48_1.o2(t);if(null==n)throw new Gr("Missing polymorphic information for "+t);return n},J(Ms).t4s=function(t,n,i){if(t.p7(this.h48().toString()),this.y4f()){t.p7(" <~(");for(var e=this.t48_1.c2().v();e.w();){var r=e.y().u4s(t,n+4|0,i),s=Jn(44);r.p5(s).p5(Jn(10))}}else{t.p7(" ("),t.p7(" [");for(var o=this.t48_1.c2().v();o.w();){var u=o.y().u4s(t,n+4|0,i),a=Jn(44);u.p5(a).p5(Jn(10))}t.p5(Jn(93))}},J(Ms).equals=function(t){return!!(this===t||null!=t&&Pi(this).equals(Pi(t))&&J(uo).equals.call(this,t)&&(t instanceof Ms||Y(),this.r48_1.equals(t.r48_1)&&kt(this.s48_1,t.s48_1)&&kt(this.t48_1,t.t48_1)&&this.u48_1==t.u48_1))},J(Ms).hashCode=function(){var t=J(uo).hashCode.call(this);t=M(31,t)+this.r48_1.hashCode()|0,t=M(31,t)+yt(this.s48_1)|0,t=M(31,t)+yt(this.t48_1)|0;var n=M(31,t),i=this.u48_1,e=null==i?null:ai(i);return n+(null==e?0:e)|0},J(Ps).f4r=function(){return this.a4t_1},J(Ps).x4s=function(){return this.c4t_1},J(Ps).e4t=function(t,n,i){return new Ps(this.z4s_1,t,this.b4t_1,n,i)},J(Ps).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof Ps||Y(),!!(kt(this.z4s_1,t.z4s_1)&&this.a4t_1.equals(t.a4t_1)&&this.b4t_1===t.b4t_1&&kt(this.c4t_1,t.c4t_1)&&kt(this.d4t_1,t.d4t_1)))},J(Ps).hashCode=function(){var t=yt(this.z4s_1);t=M(31,t)+this.a4t_1.hashCode()|0,t=M(31,t)+hi(this.b4t_1)|0;var n=M(31,t),i=this.c4t_1,e=null==i?null:yt(i),r=M(31,t=n+(null==e?0:e)|0),s=this.d4t_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},J(Ps).g34=function(){return null},J(Ps).d4s=function(){var t=this.c4t_1,n=null==t?null:t.g34();return new Fo(null==n?this.z4s_1:n,this.l4r())},J(Ps).a4s=function(){return Tn()},J(Ps).b4s=function(){var t=this.c4t_1,n=null==t?null:t.g34();return null==n?this.z4s_1:n},J(Ps).c4s=function(){return this.d4t_1},J(Ps).l4r=function(){var t=this.a4t_1.k4q_1,n=null==t?null:Vi(t);return null==n?zs():n},J(Hs).y46=function(){return this.q4c_1},J(Hs).n4e=function(){return!1},J(Hs).n35=function(t){return Us(this)},J(Hs).t4s=function(t,n,i){t.p7(this.h48().toString()),this.u49()?(t.p7(": EludedList<"),Us(this).u4s(t,n,i),t.p5(Jn(62))):(t.p7(": ExplicitList<"),Us(this).u4s(t,n,i),t.p5(Jn(62)))},J(Hs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(mo).equals.call(this,t)&&(t instanceof Hs||Y(),this.u49()===t.u49()&&!!this.q4c_1.equals(t.q4c_1)&&Us(this).equals(Us(t)))},J(Hs).hashCode=function(){var t=J(mo).hashCode.call(this);return t=M(31,t)+hi(this.u49())|0,t=M(31,t)+this.q4c_1.hashCode()|0,M(31,t)+Us(this).hashCode()|0},J(Vs).t4d=function(){return this.p4t_1},J(Vs).n4e=function(){return this.q4t_1},J(Vs).y46=function(){return this.r4t_1},J(Vs).j35=function(){return 0},J(Vs).t4s=function(t,n,i){t.p7(this.h48().toString()).p5(Jn(58)).p7(this.l35().toString()).p7(" = ").p7(this.r4t_1.toString())},J(Vs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(uo).equals.call(this,t)&&(t instanceof Vs||Y(),this.r4t_1.equals(t.r4t_1))},J(Vs).hashCode=function(){var t=J(uo).hashCode.call(this);return M(31,t)+this.r4t_1.hashCode()|0},J(Bs).n4e=function(){return!1},J(Bs).t4d=function(){return!0},J(Bs).y46=function(){return He()},J(Bs).s4t=function(){var t=this.c4i_1;return Xn("keyDescriptor",1,Kn,(function(t){return t.s4t()}),null),t.h2()},J(Bs).e4i=function(){var t=this.d4i_1;return Xn("valueDescriptor",1,Kn,(function(t){return t.e4i()}),null),t.h2()},J(Bs).j35=function(){return 2},J(Bs).n35=function(t){return 0==(t%2|0)?this.s4t():this.e4i()},J(Bs).t4s=function(t,n,i){t.p7(this.h48().toString()).p7(" (").p5(Jn(10)),go(t,n),this.s4t().u4s(t,n+4|0,i).p7(",").p5(Jn(10)),go(t,n),this.e4i().u4s(t,n+4|0,i).p5(Jn(41))},J(Gs).y46=function(){return Ue()},J(Gs).n4e=function(){return!1},J(Gs).g4a=function(){var t=this.c4a_1;return Xn("isValueCollapsed",1,Kn,(function(t){return t.g4a()}),null),t.h2()},J(Gs).t4c=function(){var t=this.d4a_1;return Xn("entryName",1,Kn,(function(t){return t.t4c()}),null),t.h2()},J(Gs).n35=function(t){return 0==(t%2|0)?Ys(this):Ws(this)},J(Gs).t4s=function(t,n,i){t.p7(this.h48().toString()).p7(this.u49()?": TransparentMap<":": ExplicitMap<"),this.n35(0).t4s(t,n+4|0,i),t.p7(", "),this.n35(1).t4s(t,n+4|0,i),t.p5(Jn(62))},J(Zs).n4e=function(){return this.c4u_1},J(Zs).t4d=function(){return Ks(this).t4d()},J(Zs).y46=function(){return Ks(this).y46()},J(Zs).h48=function(){return Ks(this).h48()},J(Zs).n35=function(t){if(0!==t)throw Qi("Inline classes only have one child");return Ks(this)},J(Zs).p4d=function(){var t=this.e4u_1;return Xn("isUnsigned",1,Kn,(function(t){return t.p4d()}),null),t.h2()},J(Zs).t4s=function(t,n,i){t.p7(this.h48().toString()),t.p7(": Inline ("),Ks(this).u4s(t,n+4|0,i),t.p5(Jn(41))},J(Zs).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(uo).equals.call(this,t)&&(t instanceof Zs||Y(),this.p4d()===t.p4d())},J(Zs).hashCode=function(){var t=J(uo).hashCode.call(this);return M(31,t)+hi(this.p4d())|0},J(so).t4d=function(){return this.o4g_1},J(so).n4e=function(){return!1},J(so).y46=function(){return Ue()},J(so).n35=function(t){return Qs(this).h1(t)},J(so).s4g=function(){var t=io(this);return null==t?null:t.me_1},J(so).t4s=function(t,n,i){t.p7(this.h48().toString()).p7(" (").p5(Jn(10));for(var e=!0,r=Qs(this).v();r.w();){var s=r.y();if(e)e=!1;else{var o=Jn(44);t.p5(o).p5(Jn(10))}go(t,n),s.u4s(t,n+4|0,i)}go(t.p5(Jn(10)),n-4|0).p5(Jn(41))},J(so).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(uo).equals.call(this,t)&&(t instanceof so||Y(),!!kt(this.p4g_1,t.p4g_1))},J(so).hashCode=function(){var t=J(uo).hashCode.call(this),n=M(31,t),i=this.p4g_1,e=null==i?null:yt(i);return n+(null==e?0:e)|0},J(uo).w4e=function(t,n){return function(t,n,i,e){var r,s=t.j4b_1;if(!kt(s,q))return null==s||null!=s?s:Y();if(null==t.i4b_1)r=null;else{var o=new vr(new zr(n,i,kn(t.i4b_1).s45()),t);r=e.h34(o)}var u=r;return t.j4b_1=u,null==u||null!=u?u:Y()}(this,t.x4c_1,t.y4c_1,n)},J(uo).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Ds).equals.call(this,t)&&(t instanceof uo||Y(),this.h4b_1===t.h4b_1&&this.i4b_1==t.i4b_1&&kt(this.j4b_1,t.j4b_1))},J(uo).hashCode=function(){var t=J(Ds).hashCode.call(this);t=M(31,t)+hi(this.h4b_1)|0;var n=M(31,t),i=this.i4b_1,e=null==i?null:ai(i),r=M(31,t=n+(null==e?0:e)|0),s=this.j4b_1,o=null==s?null:yt(s);return r+(null==o?0:o)|0},J(vo).g34=function(){return this.h4u_1},J(vo).x4s=function(){return this.j4u_1},J(vo).e4t=function(t,n,i){return new vo(this.h4u_1,this.i4u_1,t,n,i)},J(vo).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&(t instanceof vo||Y(),!!this.h4u_1.equals(t.h4u_1)&&this.i4u_1===t.i4u_1&&!!kt(this.j4u_1,t.j4u_1)&&!!this.k4u_1.equals(t.k4u_1)&&kt(this.l4u_1,t.l4u_1))},J(vo).hashCode=function(){var t=this.h4u_1.hashCode();t=M(31,t)+this.i4u_1|0;var n=M(31,t),i=this.j4u_1,e=null==i?null:yt(i);t=M(31,t=n+(null==e?0:e)|0)+this.k4u_1.hashCode()|0;var r=M(31,t),s=this.l4u_1,o=null==s?null:s.hashCode();return r+(null==o?0:o)|0},J(vo).l4r=function(){return Vi(this.h4u_1.h48())},J(vo).d4s=function(){return null!=this.j4u_1?new Fo(this.j4u_1.g34(),Vi(this.h4u_1.h48())):-1===this.i4u_1||kt(this.b4s().l35(),et())?this.h4u_1.r47():new Fo(this.b4s(),this.h4u_1.l47_1.l4r())},J(vo).f4r=function(){return this.k4u_1},J(vo).a4s=function(){return-1===this.i4u_1?Tn():this.h4u_1.j49().m35(this.i4u_1)},J(vo).b4s=function(){return null!=this.j4u_1?this.j4u_1.g34():kt(this.h4u_1.e4s(),et())||-1===this.i4u_1?this.h4u_1.j49():this.h4u_1.j49().n35(this.i4u_1)},J(vo).c4s=function(){return this.l4u_1},J(mo).u49=function(){return this.t49_1},J(mo).f4t=function(){return!1},J(mo).t4d=function(){return!1},J(mo).equals=function(t){return this===t||!(null==t||!Pi(this).equals(Pi(t)))&&!!J(Ds).equals.call(this,t)&&(t instanceof mo||Y(),this.u49()===t.u49()&&this.f4t()===t.f4t()&&this.t4d()===t.t4d())},J(mo).hashCode=function(){var t=J(Ds).hashCode.call(this);return t=M(31,t)+hi(this.u49())|0,t=M(31,t)+hi(this.f4t())|0,M(31,t)+hi(this.t4d())|0},J(bo).d4s=function(){return this.n4u_1},J(bo).f4r=function(){return this.o4u_1},J(bo).l4r=function(){return this.p4u_1},J(bo).c4s=function(){return this.q4u_1},J(bo).x4s=function(){return this.r4u_1},J(bo).g34=function(){return this.s4u_1},J(bo).a4s=function(){return Tn()},J(bo).b4s=function(){return this.n4u_1.s47_1},J(bo).e4t=function(t,n,i){return new bo(this.m4u_1,this.n4u_1,t,this.p4u_1,n,i)},J(So).oe=function(){return this.t4g_1},J(So).pe=function(){return this.u4g_1},J(So).toString=function(){return"XmlOrderConstraint(before="+this.t4g_1+", after="+this.u4g_1+")"},J(So).hashCode=function(){var t=this.t4g_1;return M(t,31)+this.u4g_1|0},J(So).equals=function(t){if(this===t)return!0;if(!(t instanceof So))return!1;var n=t instanceof So?t:Y();return this.t4g_1===n.t4g_1&&this.u4g_1===n.u4g_1},J(To).l4s=function(t){for(var n=0,i=t.length;n{"use strict";t.exports=i.p+"a1015df118c0009bbaae.json"},918:(t,n,i)=>{"use strict";t.exports=i.p+"4e1313da42287d18ad5a.png"},513:(t,n,i)=>{"use strict";t.exports=i.p+"5de21dc9a6671d378dbe.png"},79:(t,n,i)=>{"use strict";t.exports=i.p+"b52705ec61511efb27b9.png"},926:(t,n,i)=>{"use strict";t.exports=i.p+"21c6d0bc8e5465644f8b.png"},105:(t,n,i)=>{"use strict";t.exports=i.p+"33c2ca54c6adbcd6a2e3.png"},36:(t,n,i)=>{"use strict";t.exports=i.p+"dd554b8af1ab5e3bc726.png"},257:(t,n,i)=>{"use strict";t.exports=i.p+"791bfb510d74390a8d5a.png"},520:(t,n,i)=>{"use strict";t.exports=i.p+"fbab3596911513c77182.png"},709:(t,n,i)=>{"use strict";t.exports=i.p+"4f486d36fd4835ea883d.png"}},__webpack_module_cache__={};function __webpack_require__(t){var n=__webpack_module_cache__[t];if(void 0!==n)return n.exports;var i=__webpack_module_cache__[t]={exports:{}};return __webpack_modules__[t].call(i.exports,i,i.exports,__webpack_require__),i.exports}__webpack_require__.d=(t,n)=>{for(var i in n)__webpack_require__.o(n,i)&&!__webpack_require__.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:n[i]})},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),__webpack_require__.o=(t,n)=>Object.prototype.hasOwnProperty.call(t,n),__webpack_require__.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;__webpack_require__.g.importScripts&&(t=__webpack_require__.g.location+"");var n=__webpack_require__.g.document;if(!t&&n&&(n.currentScript&&(t=n.currentScript.src),!t)){var i=n.getElementsByTagName("script");if(i.length)for(var e=i.length-1;e>-1&&!t;)t=i[e--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),__webpack_require__.p=t})();var __webpack_exports__=__webpack_require__(960);return __webpack_exports__})())); //# sourceMappingURL=worldwind-tutorials.js.map \ No newline at end of file diff --git a/worldwind-tutorials.js.map b/worldwind-tutorials.js.map index b203f2e0b..79abe3ed4 100644 --- a/worldwind-tutorials.js.map +++ b/worldwind-tutorials.js.map @@ -1 +1 @@ -{"version":3,"file":"worldwind-tutorials.js","mappings":"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AAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,IxEvSwmU,KwEwS1qU,MAAE,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,IAAMic,EAAG,GAAKjc,EAAG,IxExSumU,KwEyS1qU,MAAE,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,IAAMic,EAAG,GAAKjc,EAAG,IxEzSumU,KwE0S1qU,MAAE,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IxE1SsmU,KwE2S1qU,MAAE,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IxE3SsmU,KwE4S1qU,MAAE,IAAMic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IAAMic,EAAG,IAAMjc,EAAG,IxE5SomU,KwE6S1qU,MAAE,IAAMic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IAAMic,EAAG,IAAMjc,EAAG,IxE7SomU,KwE8S1qU,MAAE,IAAMic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IxE9SmmU,KwE+S1qU,MAAE,IAAMic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IxE/SmmU,KwEgT1qU,MAAE,IAAMic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IAAMic,EAAG,IAAMjc,EAAG,IxEhTkmU,KwEiT1qU,MAAE,IAAMic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic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CX,wBzFp8BA,IyFg9BkB,SxEt1BqghC,KwEs1B9/gC,MxEt1B8/gC,KwEs1B3/gC,OzFh9BhB,KACR5E,EyFk9BI,UAAW,MAAQ,UAAW,eAAgB,kBzFj9BlD,MAAM,GAAiC,GAAR,GACnC,CyFk9BC,OxE31BshhC,IwE21BvhhC,4BAmCI0+C,ExE93Bg9jC,KwE83Bt8jC,MAAE,GxE93Bo8jC,KwE+3Bh9jC,MAAE,GxE/3B88jC,KwE+3Bz8jC,MAAE,GxE/3Bu8jC,KwEg4Bh9jC,MAAE,GAAKA,EAEPA,ExEl4Bg9jC,KwEk4B18jC,MAAE,GxEl4Bw8jC,KwEm4Bh9jC,MAAE,GxEn4B88jC,KwEm4Bz8jC,MAAE,GxEn4Bu8jC,KwEo4Bh9jC,MAAE,GAAKA,EAEPA,ExEt4Bg9jC,KwEs4B18jC,MAAE,GxEt4Bw8jC,KwEu4Bh9jC,MAAE,GxEv4B88jC,KwEu4Bz8jC,MAAE,GxEv4Bu8jC,KwEw4Bh9jC,MAAE,GAAKA,MAEP17C,ExE14Bg9jC,KwE04Bx8jC,MAAE,GACVC,ExE34Bg9jC,KwE24Bx8jC,MAAE,GACVg8C,ExE54Bg9jC,KwE44Bx8jC,MAAE,IAUb,OxEt5Bm9jC,KwE84Bh9jC,MAAE,IxE94B88jC,KwE84Bv8jC,MAAE,GAAKj8C,ExE94Bg8jC,KwE84B37jC,MAAE,GAAKC,ExE94Bo7jC,KwE84Bh7jC,MAAE,GAAKg8C,ExE94By6jC,KwE+4Bh9jC,MAAE,IxE/4B88jC,KwE+4Bv8jC,MAAE,GAAKj8C,ExE/4Bg8jC,KwE+4B37jC,MAAE,GAAKC,ExE/4Bo7jC,KwE+4Bh7jC,MAAE,GAAKg8C,ExE/4By6jC,KwEg5Bh9jC,MAAE,KxEh5B88jC,KwEg5Bt8jC,MAAE,GAAKj8C,ExEh5B+7jC,KwEg5B17jC,MAAE,GAAKC,ExEh5Bm7jC,KwEg5B/6jC,MAAE,IAAMg8C,ExEh5Bu6jC,KwEk5Bh9jC,MAAE,IAAM,ExEl5Bw8jC,KwEm5Bh9jC,MAAE,IAAM,ExEn5Bw8jC,KwEo5Bh9jC,MAAE,IAAM,ExEp5Bw8jC,KwEq5Bh9jC,MAAE,IAAM,ExEr5Bw8jC,IwEs5Bp9jC,sBAoE0B+iC,OAA+B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","sources":["webpack://worldwind-tutorials/webpack/universalModuleDefinition","webpack://worldwind-tutorials/../../node_modules/@js-joda/core/dist/js-joda.esm.js","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/Clock.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Preconditions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/dateCalculations.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/InstantSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateTimeSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/TimeZoneSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/JSJodaExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/LocalDateTime.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Standard.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/js/src/JSJodaExceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/dynamic.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/long.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Strings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/FloorDivMod.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/internal/mathJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/time/Duration.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/build/generated/moko-resources/jsMain/src/earth/worldwind/tutorials/MR.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/AbstractTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/BasicTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/CameraViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ElevationHeatmapTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/EllipsesTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Angle.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/GKGraticuleTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LabelsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LookAtViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/MGRSGraticuleTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PathsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PlacemarksTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PolygonsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ShapesDashAndFillTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ShowTessellationTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SightlineTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SurfaceImageTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WcsElevationTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmtsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/jsMain/kotlin/earth/worldwind/tutorials/Main.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Collections.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/math.kt","webpack://worldwind-tutorials/../../../../worldwind/build/generated/moko-resources/jsMain/src/earth/worldwind/MR.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/GoToAnimator.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObjectList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Maps.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/WorldWind.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/BasicDrawableTerrain.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawContext.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Library.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/kgl/Kgl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Collections.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawShapeState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableGroup.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableHeatmap.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableLines.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableQueue.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableScreenTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableStarField.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceColor.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableTessellation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/BasicFrameController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/Frame.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/AltitudeMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingSphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Camera.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Ellipsoid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Frustum.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Line.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Location.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/LookAt.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix3.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_ArraysJs.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix4.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Offset.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/OffsetMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Plane.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Position.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Range.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Sector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec2.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec3.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Viewport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/GKCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/GKCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/HelmertParameters.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/HelmertTransformation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/Hemisphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/PolarCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/GestureState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/Globe.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/ElevationModel.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractTiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Sets.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/BasicElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/MercatorProjection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/Wgs84Projection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTerrain.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTessellator.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/comparisons/Comparisons.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/TerrainTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/AbstractLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/AbstractTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/BackgroundLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/LayerList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/RenderableLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/ShowTessellationLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AbstractAtmosphereProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AtmosphereLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableGroundAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableSkyAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/GroundProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/SkyProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleRenderingParams.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/LineStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GridElement.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GridTilesSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKGraticuleTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKLayerHelper.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKMetricGrid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKMetricLabels.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKOverview.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/AbstractUTMGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSGridZone.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/stringJs.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSOverview.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMMetricScaleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareGrid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareZone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/heatmap/ElevationHeatmapLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/heatmap/ElevationHeatmapProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/AbstractMercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/WebMercatorLayerFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/Wcs100ElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/Wcs100ElevationSourceFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSet.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsLayerFactory.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Strings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/regex/RegexExtensions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAttribution.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAuthorityUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapability.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactInformation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactPersonPrimary.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDcpType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsException.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsGeographicBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsIdentifier.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsInfoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLogoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsMetadataUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequest.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequestOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsService.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsConstraint.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsContactInfo.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDcp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDescription.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttpMethod.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperationsMetadata.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsPhone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceContact.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceIdentification.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceProvider.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsContents.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLegendURL.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsResourceUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTheme.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixLimits.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSetLink.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractSurfaceRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Color.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/FontWeight.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Framebuffer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/RenderContext.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Texture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/AbstractBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/BufferPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/FloatBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/IntBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/ShortBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageOptions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ResamplingMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/WrapMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/AbstractShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/BasicShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SightlineProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SurfaceTextureProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/AbstractShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Ellipse.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Label.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OmnidirectionalSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OrientationMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Path.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PathType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Placemark.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PlacemarkAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Polygon.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/ShapeAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/SurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TextAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbsentResourceList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/BasicPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Level.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSetConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LruMemoryCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/MessageTable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/SunPosition.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Tile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/ExponentFormatter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/Specification.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Lazy.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/StringFormat.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLU.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLUtessellatorCallbackAdapter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/error/Error.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/ActiveRegion.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/CachedVertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Dict.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/DictNode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUface.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUhalfEdge.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUmesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUtessellatorImpl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUvertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Geom.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Mesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Normal.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQ.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQHeap.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQSort.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Render.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Sweep.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessMono.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/http/DefaultHttpClient.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/math/WWMath.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/BasicWorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/KeyboardControls.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindow.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffConstants.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffKeyEntry.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffMetadata.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffReader.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collectionJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/kotlinHacks.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffUtil.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/TiffConstants.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/TiffIFDEntry.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/ClickRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/DragRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/GestureRecognizer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/MutableCollections.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PanRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PinchRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/RotationRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/SelectDragDetector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TapRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TiltRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TouchWrapper.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/ElevationSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/coverage/TiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/TiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/mercator/MercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/Font.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/RenderResourceCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/TextRenderer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/Logger.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/SynchronizedPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/kgl/WebKgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/locale/Locale.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_ComparisonsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/Serializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/Json.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/format/ConvertToInstant.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/libraries/stdlib/js/src/org.w3c/org.khronos.webgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/GeographicProjection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/SelectDragCallback.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/js/math.polyfills.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/ArrayBuffer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/js.arrays/fill.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/math.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/core/builtins/native/kotlin/Number.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/core/builtins/src/kotlin/Unit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/NumbersJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArrayFunctions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArrayList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArraySorting.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalHashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMapEntry.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMapEntryDefault.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/coroutines/cancellation/CancellationException.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/random/PlatformRandom.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/random/Random.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/random/XorWowRandom.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KClassImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/primitives.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/reflection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/sequenceJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/CharacterCodingExceptionJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/StringBuilderJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/charJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_WhitespaceChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/CharCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_TitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/numberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_DigitChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/regex.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/stringsCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/utf8Encoding.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/throwableExtensions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/time/DurationUnitJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Iterables.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/kotlin/ExceptionsH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UShort.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Enum.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/BitMask.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/noPackageHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/bitUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/runtimeForStdLib.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/charSequenceJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/collectionsHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/compareTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/coreRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/hacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/longjs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/metadataUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/numberConversion.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/rangeTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/reflectRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/typeCheckUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_CharCategories.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_LetterChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_OtherLowercaseChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/coroutines_13/CoroutineImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/coroutines_13/IntrinsicsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/exceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/text/numberConversions_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/ArrayDeque.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/IndexedValue.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Iterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/PrimitiveIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/SequenceBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/ContinuationInterceptor.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/CoroutineContextImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/intrinsics/Intrinsics.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/enums/EnumEntries.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/internal/progressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/PrimitiveRanges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/ProgressionIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/Progressions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Appendable.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Indent.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/StringNumberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/StringBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/time/DurationUnit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/DeepRecursive.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Result.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Tuples.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UByte.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UByteArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UInt.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UIntArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UIntRange.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UProgressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/ULong.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UnsignedUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/ULongArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UShortArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UStrings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/HashCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/regexp.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/Continuation.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/kotlin/MathH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeHelpers.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/reflection_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Maps.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/MapWithDefault.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Sets.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_CollectionsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/JsClass.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_OneToManyTitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/libraries/stdlib/js/src/org.w3c/EventListener.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/AtomicFU.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/Trace.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsAndWasmSharedMain/kotlin/kotlinx/atomicfu/AtomicFU.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Job.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/AbstractCoroutine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Builders.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CompletionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedTask.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuationImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletableDeferred.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionState.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineExceptionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineName.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineScope.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineStart.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Delay.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/EventLoop.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/ThreadLocal.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Exceptions.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/JobSupport.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/Concurrent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/LinkedList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/MainCoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Supervisor.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Unconfined.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/BufferOverflow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/BufferedChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/ConcurrentLinkedList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/InlineList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channels.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/ConflatedBufferedChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/SharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/AbstractSharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/SafeCollector.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/operators/Share.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/CoroutineExceptionHandlerImpl.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/CoroutineExceptionHandlerImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/ThreadContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/OnUndeliveredElement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Scopes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Symbol.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/SystemProps.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/SystemProps.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Cancellable.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Undispatched.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/selects/Select.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Window.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Debug.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/JSDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/CoroutineExceptionHandlerImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/Dispatchers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/EventLoop.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/SchedulerTask.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/flow/internal/SafeCollector.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/JSDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/StackTraceRecovery.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionHandler.common.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/coroutineInternalJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Promise.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/Decoding.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/PolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/ContextAware.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/AbstractPolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializationExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/internal/Platform.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Primitives.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializersCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialKinds.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/AbstractDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/BuiltInSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/InlineClassDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NothingSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ObjectSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginGeneratedSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PrimitiveArraysSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tagged.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tuples.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModuleBuilders.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/SerializersJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/AssociatedObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_UArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/JsonInternalDependencies.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonConfiguration.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/AbstractJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonPath.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonTreeReader.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/Polymorphic.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/SchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/WriteMode.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/StringJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsWasmMain/src/kotlinx/serialization/json/JsonSchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsWasmMain/src/kotlinx/serialization/json/internal/createMapForCache.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClientConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/HttpClientCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/SavedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/content/ObservableContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineBase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineCapability.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/BodyProgress.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultResponseValidation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultTransform.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpCallValidator.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpClientPlugin.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpPlainText.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRedirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRequestLifecycle.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpSend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpTimeout.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/observer/DelegatedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/websocket/WebSockets.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/DefaultHttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequestPipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/RequestBody.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/DefaultHttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponsePipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpStatement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ByteChannelUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ClientEvents.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/Content.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/HttpClientJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/HttpClientEngineBase.js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/Js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/ReadableStream.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/browser/BrowserFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/compatibility/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/node/NodeFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/DefaultTransformJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/websocket/JsWebSocketSession.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/utils/ExceptionUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-events/common/src/io/ktor/events/Events.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Codecs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Input.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/ContentTypes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HeaderValueWithParameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaderValueParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMethod.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpProtocolVersion.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpStatusCode.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Parameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Query.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/js/src/io/ktor/http/URLBuilderJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/UrlDecodedParametersBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLProtocol.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Url.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/OutgoingContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/TextContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMessageProperties.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/Pool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelSequential.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsAndWasmSharedMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteWriteChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/CloseElement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/Coroutines.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/charsets/Encoding.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/CharsetJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/BufferUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Decoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Output.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferAppend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferFactory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryFactoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/PrimiteArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BytePacketBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/ByteReadPacket.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/UTF8.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/Memory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/ChunkBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/EncodeResult.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/ByteOrder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Unsafe.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/AwaitingSlot.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/SequentialCopyTo.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/ByteArrayPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteChannelJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ExceptionUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteReadChannelJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/ISO88591.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/DecodeBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/PacketJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/errors/IOException.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoderFallback.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Win1252Table.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/pool/DefaultPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Numbers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/PacketDirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Builder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteReadChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/StringsJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/CloseableJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryPrimitivesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/OutputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelCtor.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Attributes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/ByteChannels.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CaseInsensitiveMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Collections.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CoroutinesUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/DelegatingMutableSet.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/PlatformUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/PlatformUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/StringValues.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Text.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/collections/CopyOnWriteHashMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/date/Date.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/DebugPipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PhaseContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/Pipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/PipelineContext.js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhaseRelation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/SuspendFunctionGun.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/StackTraceRecover.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/StackTraceRecoverJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/reflect/Type.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/AttributesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/date/DateJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/logging/KtorSimpleLoggerJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/logging/LoggerJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/reflect/TypeInfoJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Charset.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/CloseReason.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameCommon.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameType.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/js/src/io/ktor/websocket/FrameJs.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/FileResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/ImageResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/ResourcePlatformDetails.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/internal/ioUtil.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/Uri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/NotCachedHolder.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/PathSegments.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriCodec.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriSyntaxException.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/constants.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/AbstractPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/Part.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/PathPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/AbstractHierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/HierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/OpaqueUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/StringUri.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/NamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/util/commondomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/EventType.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/Namespace.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/SimpleNamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XMLConstants.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReaderBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlDelegatingReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlEvent.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/_IOException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlUtil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/KtXmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/XmlVersion.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/NamespaceHolder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/PlatformXmlWriterBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/chars.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NamedNodeMap.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/Node.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/util/XmlBoolean.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/Attr.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlReaderExt.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.js.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/jsMultiplatform.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/JSCompactFragment.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/XMLFragmentStreamReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/impl/jsDomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/Element.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/ProcessingInstruction.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/CharacterData.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReaderNS.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/CompactFragmentSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/ElementSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/InputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/OutputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/PolyBaseInfo.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XML.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlSerializationPolicy.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/defaultPlatformModule.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XMLDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlCodecBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlExceptions.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/annotations.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/DummyDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/XmlQNameSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderNode.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderConstraint.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlTypeDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/compat.js.kt","webpack://worldwind-tutorials/webpack/bootstrap","webpack://worldwind-tutorials/webpack/runtime/define property getters","webpack://worldwind-tutorials/webpack/runtime/global","webpack://worldwind-tutorials/webpack/runtime/hasOwnProperty shorthand","webpack://worldwind-tutorials/webpack/runtime/make namespace object","webpack://worldwind-tutorials/webpack/runtime/publicPath","webpack://worldwind-tutorials/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"worldwind-tutorials\"] = factory();\n\telse\n\t\troot[\"worldwind-tutorials\"] = factory();\n})(this, () => {\nreturn ","//! @version @js-joda/core - 3.2.0\n//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction createErrorType(name, init, superErrorClass) {\n if (superErrorClass === void 0) {\n superErrorClass = Error;\n }\n\n function JsJodaException(message) {\n if (!Error.captureStackTrace) {\n this.stack = new Error().stack;\n } else {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.message = message;\n init && init.apply(this, arguments);\n\n this.toString = function () {\n return this.name + \": \" + this.message;\n };\n }\n\n JsJodaException.prototype = Object.create(superErrorClass.prototype);\n JsJodaException.prototype.name = name;\n JsJodaException.prototype.constructor = JsJodaException;\n return JsJodaException;\n}\n\nvar DateTimeException = createErrorType('DateTimeException', messageWithCause);\nvar DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException);\nvar UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException);\nvar ArithmeticException = createErrorType('ArithmeticException');\nvar IllegalArgumentException = createErrorType('IllegalArgumentException');\nvar IllegalStateException = createErrorType('IllegalStateException');\nvar NullPointerException = createErrorType('NullPointerException');\n\nfunction messageWithCause(message, cause) {\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n}\n\nfunction messageForDateTimeParseException(message, text, index, cause) {\n if (text === void 0) {\n text = '';\n }\n\n if (index === void 0) {\n index = 0;\n }\n\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n msg += ': ' + text + ', at index: ' + index;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n\n this.parsedString = function () {\n return text;\n };\n\n this.errorIndex = function () {\n return index;\n };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction assert(assertion, msg, error) {\n if (!assertion) {\n if (error) {\n throw new error(msg);\n } else {\n throw new Error(msg);\n }\n }\n}\nfunction requireNonNull(value, parameterName) {\n if (value == null) {\n throw new NullPointerException(parameterName + ' must not be null');\n }\n\n return value;\n}\nfunction requireInstance(value, _class, parameterName) {\n if (!(value instanceof _class)) {\n throw new IllegalArgumentException(parameterName + ' must be an instance of ' + (_class.name ? _class.name : _class) + (value && value.constructor && value.constructor.name ? ', but is ' + value.constructor.name : ''));\n }\n\n return value;\n}\nfunction abstractMethodFail(methodName) {\n throw new TypeError('abstract method \"' + methodName + '\" is not implemented');\n}\n\nvar assert$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n assert: assert,\n requireNonNull: requireNonNull,\n requireInstance: requireInstance,\n abstractMethodFail: abstractMethodFail\n});\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar MIN_SAFE_INTEGER = -9007199254740991;\nvar MathUtil = function () {\n function MathUtil() {}\n\n MathUtil.intDiv = function intDiv(x, y) {\n var r = x / y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.intMod = function intMod(x, y) {\n var r = x - MathUtil.intDiv(x, y) * y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.roundDown = function roundDown(r) {\n if (r < 0) {\n return Math.ceil(r);\n } else {\n return Math.floor(r);\n }\n };\n\n MathUtil.floorDiv = function floorDiv(x, y) {\n var r = Math.floor(x / y);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.floorMod = function floorMod(x, y) {\n var r = x - MathUtil.floorDiv(x, y) * y;\n return MathUtil.safeZero(r);\n };\n\n MathUtil.safeAdd = function safeAdd(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n var r = MathUtil.safeToInt(x + y);\n\n if (r === x || r === y) {\n throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!');\n }\n\n return r;\n };\n\n MathUtil.safeSubtract = function safeSubtract(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0 && y === 0) {\n return 0;\n } else if (x === 0) {\n return MathUtil.safeZero(-1 * y);\n } else if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n return MathUtil.safeToInt(x - y);\n };\n\n MathUtil.safeMultiply = function safeMultiply(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 1) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 1) {\n return MathUtil.safeZero(x);\n }\n\n if (x === 0 || y === 0) {\n return 0;\n }\n\n var r = MathUtil.safeToInt(x * y);\n\n if (r / y !== x || x === MIN_SAFE_INTEGER && y === -1 || y === MIN_SAFE_INTEGER && x === -1) {\n throw new ArithmeticException('Multiplication overflows: ' + x + ' * ' + y);\n }\n\n return r;\n };\n\n MathUtil.parseInt = function (_parseInt) {\n function parseInt(_x) {\n return _parseInt.apply(this, arguments);\n }\n\n parseInt.toString = function () {\n return _parseInt.toString();\n };\n\n return parseInt;\n }(function (value) {\n var r = parseInt(value);\n return MathUtil.safeToInt(r);\n });\n\n MathUtil.safeToInt = function safeToInt(value) {\n MathUtil.verifyInt(value);\n return MathUtil.safeZero(value);\n };\n\n MathUtil.verifyInt = function verifyInt(value) {\n if (value == null) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"', using null or undefined as argument\");\n }\n\n if (isNaN(value)) {\n throw new ArithmeticException('Invalid int value, using NaN as argument');\n }\n\n if (value % 1 !== 0) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"' is a float\");\n }\n\n if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) {\n throw new ArithmeticException('Calculation overflows an int: ' + value);\n }\n };\n\n MathUtil.safeZero = function safeZero(value) {\n return value === 0 ? 0 : +value;\n };\n\n MathUtil.compareNumbers = function compareNumbers(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n };\n\n MathUtil.smi = function smi(int) {\n return int >>> 1 & 0x40000000 | int & 0xBFFFFFFF;\n };\n\n MathUtil.hash = function hash(number) {\n if (number !== number || number === Infinity) {\n return 0;\n }\n\n var result = number;\n\n while (number > 0xFFFFFFFF) {\n number /= 0xFFFFFFFF;\n result ^= number;\n }\n\n return MathUtil.smi(result);\n };\n\n MathUtil.hashCode = function hashCode() {\n var result = 17;\n\n for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n numbers[_key] = arguments[_key];\n }\n\n for (var _i = 0, _numbers = numbers; _i < _numbers.length; _i++) {\n var n = _numbers[_i];\n result = (result << 5) - result + MathUtil.hash(n);\n }\n\n return MathUtil.hash(result);\n };\n\n return MathUtil;\n}();\nMathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nMathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar Enum = function () {\n function Enum(name) {\n this._name = name;\n }\n\n var _proto = Enum.prototype;\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Enum;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAmount = function () {\n function TemporalAmount() {}\n\n var _proto = TemporalAmount.prototype;\n\n _proto.get = function get(unit) {\n abstractMethodFail('get');\n };\n\n _proto.units = function units() {\n abstractMethodFail('units');\n };\n\n _proto.addTo = function addTo(temporal) {\n abstractMethodFail('addTo');\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n abstractMethodFail('subtractFrom');\n };\n\n return TemporalAmount;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalUnit = function () {\n function TemporalUnit() {}\n\n var _proto = TemporalUnit.prototype;\n\n _proto.duration = function duration() {\n abstractMethodFail('duration');\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n abstractMethodFail('isDurationEstimated');\n };\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.addTo = function addTo(dateTime, periodToAdd) {\n abstractMethodFail('addTo');\n };\n\n _proto.between = function between(temporal1, temporal2) {\n abstractMethodFail('between');\n };\n\n return TemporalUnit;\n}();\n\nvar Duration = function (_TemporalAmount) {\n _inheritsLoose(Duration, _TemporalAmount);\n\n function Duration(seconds, nanos) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanos);\n return _this;\n }\n\n Duration.ofDays = function ofDays(days) {\n return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n Duration.ofHours = function ofHours(hours) {\n return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n Duration.ofMinutes = function ofMinutes(minutes) {\n return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n Duration.ofSeconds = function ofSeconds(seconds, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND));\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Duration._create(secs, nos);\n };\n\n Duration.ofMillis = function ofMillis(millis) {\n var secs = MathUtil.intDiv(millis, 1000);\n var mos = MathUtil.intMod(millis, 1000);\n\n if (mos < 0) {\n mos += 1000;\n secs--;\n }\n\n return Duration._create(secs, mos * 1000000);\n };\n\n Duration.ofNanos = function ofNanos(nanos) {\n var secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND);\n\n if (nos < 0) {\n nos += LocalTime.NANOS_PER_SECOND;\n secs--;\n }\n\n return this._create(secs, nos);\n };\n\n Duration.of = function of(amount, unit) {\n return Duration.ZERO.plus(amount, unit);\n };\n\n Duration.from = function from(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount);\n var duration = Duration.ZERO;\n amount.units().forEach(function (unit) {\n duration = duration.plus(amount.get(unit), unit);\n });\n return duration;\n };\n\n Duration.between = function between(startInclusive, endExclusive) {\n requireNonNull(startInclusive, 'startInclusive');\n requireNonNull(endExclusive, 'endExclusive');\n var secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS);\n var nanos = 0;\n\n if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) {\n try {\n var startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND);\n nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos;\n\n if (secs > 0 && nanos < 0) {\n nanos += LocalTime.NANOS_PER_SECOND;\n } else if (secs < 0 && nanos > 0) {\n nanos -= LocalTime.NANOS_PER_SECOND;\n } else if (secs === 0 && nanos !== 0) {\n var adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos);\n secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS);\n }\n } catch (e) {}\n }\n\n return this.ofSeconds(secs, nanos);\n };\n\n Duration.parse = function parse(text) {\n requireNonNull(text, 'text');\n var PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i');\n var matches = PATTERN.exec(text);\n\n if (matches !== null) {\n if ('T' === matches[3] === false) {\n var negate = '-' === matches[1];\n var dayMatch = matches[2];\n var hourMatch = matches[4];\n var minuteMatch = matches[5];\n var secondMatch = matches[6];\n var fractionMatch = matches[7];\n\n if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) {\n var daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days');\n\n var hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours');\n\n var minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes');\n\n var seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds');\n\n var negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-';\n\n var nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1);\n\n try {\n return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex);\n }\n }\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0);\n };\n\n Duration._parseNumber = function _parseNumber(text, parsed, multiplier, errorText) {\n if (parsed == null) {\n return 0;\n }\n\n try {\n if (parsed[0] === '+') {\n parsed = parsed.substring(1);\n }\n\n return MathUtil.safeMultiply(parseFloat(parsed), multiplier);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: ' + errorText, text, 0, ex);\n }\n };\n\n Duration._parseFraction = function _parseFraction(text, parsed, negate) {\n if (parsed == null || parsed.length === 0) {\n return 0;\n }\n\n parsed = (parsed + '000000000').substring(0, 9);\n return parseFloat(parsed) * negate;\n };\n\n Duration._create = function _create() {\n if (arguments.length <= 2) {\n return Duration._createSecondsNanos(arguments[0], arguments[1]);\n } else {\n return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n };\n\n Duration._createNegateDaysHoursMinutesSecondsNanos = function _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) {\n var seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs)));\n\n if (negate) {\n return Duration.ofSeconds(seconds, nanos).negated();\n }\n\n return Duration.ofSeconds(seconds, nanos);\n };\n\n Duration._createSecondsNanos = function _createSecondsNanos(seconds, nanoAdjustment) {\n if (seconds === void 0) {\n seconds = 0;\n }\n\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n if (seconds === 0 && nanoAdjustment === 0) {\n return Duration.ZERO;\n }\n\n return new Duration(seconds, nanoAdjustment);\n };\n\n var _proto = Duration.prototype;\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.SECONDS) {\n return this._seconds;\n } else if (unit === ChronoUnit.NANOS) {\n return this._nanos;\n } else {\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n };\n\n _proto.units = function units() {\n return [ChronoUnit.SECONDS, ChronoUnit.NANOS];\n };\n\n _proto.isZero = function isZero() {\n return this._seconds === 0 && this._nanos === 0;\n };\n\n _proto.isNegative = function isNegative() {\n return this._seconds < 0;\n };\n\n _proto.seconds = function seconds() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withSeconds = function withSeconds(seconds) {\n return Duration._create(seconds, this._nanos);\n };\n\n _proto.withNanos = function withNanos(nanoOfSecond) {\n ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond);\n return Duration._create(this._seconds, nanoOfSecond);\n };\n\n _proto.plusDuration = function plusDuration(duration) {\n requireNonNull(duration, 'duration');\n return this.plus(duration.seconds(), duration.nano());\n };\n\n _proto.plus = function plus(durationOrNumber, unitOrNumber) {\n if (arguments.length === 1) {\n return this.plusDuration(durationOrNumber);\n } else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) {\n return this.plusAmountUnit(durationOrNumber, unitOrNumber);\n } else {\n return this.plusSecondsNanos(durationOrNumber, unitOrNumber);\n }\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.DAYS) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n if (unit.isDurationEstimated()) {\n throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration');\n }\n\n if (amountToAdd === 0) {\n return this;\n }\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, 1000000 * 1000) * 1000, MathUtil.intMod(amountToAdd, 1000000 * 1000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n }\n\n return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0);\n }\n\n var duration = unit.duration().multipliedBy(amountToAdd);\n return this.plusSecondsNanos(duration.seconds(), duration.nano());\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this.plusSecondsNanos(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this.plusSecondsNanos(0, nanosToAdd);\n };\n\n _proto.plusSecondsNanos = function plusSecondsNanos(secondsToAdd, nanosToAdd) {\n requireNonNull(secondsToAdd, 'secondsToAdd');\n requireNonNull(nanosToAdd, 'nanosToAdd');\n\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd);\n epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND));\n nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd);\n return Duration.ofSeconds(epochSec, nanoAdjustment);\n };\n\n _proto.minus = function minus(durationOrNumber, unit) {\n if (arguments.length === 1) {\n return this.minusDuration(durationOrNumber);\n } else {\n return this.minusAmountUnit(durationOrNumber, unit);\n }\n };\n\n _proto.minusDuration = function minusDuration(duration) {\n requireNonNull(duration, 'duration');\n var secsToSubtract = duration.seconds();\n var nanosToSubtract = duration.nano();\n\n if (secsToSubtract === MIN_SAFE_INTEGER) {\n return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract);\n }\n\n return this.plus(-secsToSubtract, -nanosToSubtract);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract);\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(multiplicand) {\n if (multiplicand === 0) {\n return Duration.ZERO;\n }\n\n if (multiplicand === 1) {\n return this;\n }\n\n var secs = MathUtil.safeMultiply(this._seconds, multiplicand);\n var nos = MathUtil.safeMultiply(this._nanos, multiplicand);\n secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND);\n nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND);\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.dividedBy = function dividedBy(divisor) {\n if (divisor === 0) {\n throw new ArithmeticException('Cannot divide by zero');\n }\n\n if (divisor === 1) {\n return this;\n }\n\n var secs = MathUtil.intDiv(this._seconds, divisor);\n var secsMod = MathUtil.roundDown((this._seconds / divisor - secs) * LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intDiv(this._nanos, divisor);\n nos = secsMod + nos;\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.abs = function abs() {\n return this.isNegative() ? this.negated() : this;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.plus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.minus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.toDays = function toDays() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY);\n };\n\n _proto.toHours = function toHours() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n };\n\n _proto.toMinutes = function toMinutes() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n };\n\n _proto.toMillis = function toMillis() {\n var millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000));\n millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000));\n return millis;\n };\n\n _proto.toNanos = function toNanos() {\n var totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND);\n totalNanos = MathUtil.safeAdd(totalNanos, this._nanos);\n return totalNanos;\n };\n\n _proto.compareTo = function compareTo(otherDuration) {\n requireNonNull(otherDuration, 'otherDuration');\n requireInstance(otherDuration, Duration, 'otherDuration');\n var cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds());\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherDuration.nano();\n };\n\n _proto.equals = function equals(otherDuration) {\n if (this === otherDuration) {\n return true;\n }\n\n if (otherDuration instanceof Duration) {\n return this.seconds() === otherDuration.seconds() && this.nano() === otherDuration.nano();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n if (this === Duration.ZERO) {\n return 'PT0S';\n }\n\n var hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n var minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE);\n var secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n var rval = 'PT';\n\n if (hours !== 0) {\n rval += hours + 'H';\n }\n\n if (minutes !== 0) {\n rval += minutes + 'M';\n }\n\n if (secs === 0 && this._nanos === 0 && rval.length > 2) {\n return rval;\n }\n\n if (secs < 0 && this._nanos > 0) {\n if (secs === -1) {\n rval += '-0';\n } else {\n rval += secs + 1;\n }\n } else {\n rval += secs;\n }\n\n if (this._nanos > 0) {\n rval += '.';\n var nanoString;\n\n if (secs < 0) {\n nanoString = '' + (2 * LocalTime.NANOS_PER_SECOND - this._nanos);\n } else {\n nanoString = '' + (LocalTime.NANOS_PER_SECOND + this._nanos);\n }\n\n nanoString = nanoString.slice(1, nanoString.length);\n rval += nanoString;\n\n while (rval.charAt(rval.length - 1) === '0') {\n rval = rval.slice(0, rval.length - 1);\n }\n }\n\n rval += 'S';\n return rval;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Duration;\n}(TemporalAmount);\nfunction _init() {\n Duration.ZERO = new Duration(0, 0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\nvar YearConstants = function YearConstants() {};\nfunction _init$1() {\n YearConstants.MIN_VALUE = -999999;\n YearConstants.MAX_VALUE = 999999;\n}\n\nvar ChronoUnit = function (_TemporalUnit) {\n _inheritsLoose(ChronoUnit, _TemporalUnit);\n\n function ChronoUnit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto = ChronoUnit.prototype;\n\n _proto.duration = function duration() {\n return this._duration;\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n return this.isDateBased() || this === ChronoUnit.FOREVER;\n };\n\n _proto.isDateBased = function isDateBased() {\n return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return this.compareTo(ChronoUnit.DAYS) < 0;\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n if (this === ChronoUnit.FOREVER) {\n return false;\n }\n\n try {\n temporal.plus(1, this);\n return true;\n } catch (e) {\n try {\n temporal.plus(-1, this);\n return true;\n } catch (e2) {\n return false;\n }\n }\n };\n\n _proto.addTo = function addTo(temporal, amount) {\n return temporal.plus(amount, this);\n };\n\n _proto.between = function between(temporal1, temporal2) {\n return temporal1.until(temporal2, this);\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n return this.duration().compareTo(other.duration());\n };\n\n return ChronoUnit;\n}(TemporalUnit);\nfunction _init$2() {\n ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1));\n ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000));\n ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000));\n ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1));\n ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60));\n ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600));\n ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200));\n ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400));\n ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400));\n ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12));\n ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952));\n ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10));\n ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100));\n ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000));\n ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1)));\n ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar TemporalField = function () {\n function TemporalField() {}\n\n var _proto = TemporalField.prototype;\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.baseUnit = function baseUnit() {\n abstractMethodFail('baseUnit');\n };\n\n _proto.rangeUnit = function rangeUnit() {\n abstractMethodFail('rangeUnit');\n };\n\n _proto.range = function range() {\n abstractMethodFail('range');\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n abstractMethodFail('rangeRefinedBy');\n };\n\n _proto.getFrom = function getFrom(temporal) {\n abstractMethodFail('getFrom');\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n abstractMethodFail('adjustInto');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.displayName = function displayName() {\n abstractMethodFail('displayName');\n };\n\n _proto.equals = function equals(other) {\n abstractMethodFail('equals');\n };\n\n _proto.name = function name() {\n abstractMethodFail('name');\n };\n\n return TemporalField;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ValueRange = function () {\n function ValueRange(minSmallest, minLargest, maxSmallest, maxLargest) {\n assert(!(minSmallest > minLargest), 'Smallest minimum value \\'' + minSmallest + '\\' must be less than largest minimum value \\'' + minLargest + '\\'', IllegalArgumentException);\n assert(!(maxSmallest > maxLargest), 'Smallest maximum value \\'' + maxSmallest + '\\' must be less than largest maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n assert(!(minLargest > maxLargest), 'Minimum value \\'' + minLargest + '\\' must be less than maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n this._minSmallest = minSmallest;\n this._minLargest = minLargest;\n this._maxLargest = maxLargest;\n this._maxSmallest = maxSmallest;\n }\n\n var _proto = ValueRange.prototype;\n\n _proto.isFixed = function isFixed() {\n return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest;\n };\n\n _proto.minimum = function minimum() {\n return this._minSmallest;\n };\n\n _proto.largestMinimum = function largestMinimum() {\n return this._minLargest;\n };\n\n _proto.maximum = function maximum() {\n return this._maxLargest;\n };\n\n _proto.smallestMaximum = function smallestMaximum() {\n return this._maxSmallest;\n };\n\n _proto.isValidValue = function isValidValue(value) {\n return this.minimum() <= value && value <= this.maximum();\n };\n\n _proto.checkValidValue = function checkValidValue(value, field) {\n var msg;\n\n if (!this.isValidValue(value)) {\n if (field != null) {\n msg = 'Invalid value for ' + field + ' (valid values ' + this.toString() + '): ' + value;\n } else {\n msg = 'Invalid value (valid values ' + this.toString() + '): ' + value;\n }\n\n return assert(false, msg, DateTimeException);\n }\n\n return value;\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value, field) {\n if (this.isValidIntValue(value) === false) {\n throw new DateTimeException('Invalid int value for ' + field + ': ' + value);\n }\n\n return value;\n };\n\n _proto.isValidIntValue = function isValidIntValue(value) {\n return this.isIntValue() && this.isValidValue(value);\n };\n\n _proto.isIntValue = function isIntValue() {\n return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER;\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ValueRange) {\n return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest);\n };\n\n _proto.toString = function toString() {\n var str = this.minimum() + (this.minimum() !== this.largestMinimum() ? '/' + this.largestMinimum() : '');\n str += ' - ';\n str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? '/' + this.maximum() : '');\n return str;\n };\n\n ValueRange.of = function of() {\n if (arguments.length === 2) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]);\n } else if (arguments.length === 3) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]);\n } else if (arguments.length === 4) {\n return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n return assert(false, 'Invalid number of arguments ' + arguments.length, IllegalArgumentException);\n }\n };\n\n return ValueRange;\n}();\n\nvar ChronoField = function (_TemporalField) {\n _inheritsLoose(ChronoField, _TemporalField);\n\n ChronoField.byName = function byName(fieldName) {\n for (var prop in ChronoField) {\n if (ChronoField[prop]) {\n if (ChronoField[prop] instanceof ChronoField && ChronoField[prop].name() === fieldName) {\n return ChronoField[prop];\n }\n }\n }\n };\n\n function ChronoField(name, baseUnit, rangeUnit, range) {\n var _this;\n\n _this = _TemporalField.call(this) || this;\n _this._name = name;\n _this._baseUnit = baseUnit;\n _this._rangeUnit = rangeUnit;\n _this._range = range;\n return _this;\n }\n\n var _proto = ChronoField.prototype;\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.baseUnit = function baseUnit() {\n return this._baseUnit;\n };\n\n _proto.rangeUnit = function rangeUnit() {\n return this._rangeUnit;\n };\n\n _proto.range = function range() {\n return this._range;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.checkValidValue = function checkValidValue(value) {\n return this.range().checkValidValue(value, this);\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value) {\n return this.range().checkValidIntValue(value, this);\n };\n\n _proto.isDateBased = function isDateBased() {\n var dateBased = this === ChronoField.DAY_OF_WEEK || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || this === ChronoField.DAY_OF_MONTH || this === ChronoField.DAY_OF_YEAR || this === ChronoField.EPOCH_DAY || this === ChronoField.ALIGNED_WEEK_OF_MONTH || this === ChronoField.ALIGNED_WEEK_OF_YEAR || this === ChronoField.MONTH_OF_YEAR || this === ChronoField.YEAR_OF_ERA || this === ChronoField.YEAR || this === ChronoField.ERA;\n return dateBased;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n var timeBased = this === ChronoField.NANO_OF_SECOND || this === ChronoField.NANO_OF_DAY || this === ChronoField.MICRO_OF_SECOND || this === ChronoField.MICRO_OF_DAY || this === ChronoField.MILLI_OF_SECOND || this === ChronoField.MILLI_OF_DAY || this === ChronoField.SECOND_OF_MINUTE || this === ChronoField.SECOND_OF_DAY || this === ChronoField.MINUTE_OF_HOUR || this === ChronoField.MINUTE_OF_DAY || this === ChronoField.HOUR_OF_AMPM || this === ChronoField.CLOCK_HOUR_OF_AMPM || this === ChronoField.HOUR_OF_DAY || this === ChronoField.CLOCK_HOUR_OF_DAY || this === ChronoField.AMPM_OF_DAY;\n return timeBased;\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return temporal.range(this);\n };\n\n _proto.getFrom = function getFrom(temporal) {\n return temporal.getLong(this);\n };\n\n _proto.toString = function toString() {\n return this.name();\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n return temporal.with(this, newValue);\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(this);\n };\n\n return ChronoField;\n}(TemporalField);\nfunction _init$3() {\n ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999));\n ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1));\n ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999));\n ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1));\n ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999));\n ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1));\n ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59));\n ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1));\n ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59));\n ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, 24 * 60 - 1));\n ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11));\n ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12));\n ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23));\n ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24));\n ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1));\n ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day');\n ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366));\n ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(Math.floor(YearConstants.MIN_VALUE * 365.25), Math.floor(YearConstants.MAX_VALUE * 365.25)));\n ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5));\n ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53));\n ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month');\n ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11));\n ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1));\n ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year');\n ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1));\n ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER));\n ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalQueries = function () {\n function TemporalQueries() {}\n\n TemporalQueries.zoneId = function zoneId() {\n return TemporalQueries.ZONE_ID;\n };\n\n TemporalQueries.chronology = function chronology() {\n return TemporalQueries.CHRONO;\n };\n\n TemporalQueries.precision = function precision() {\n return TemporalQueries.PRECISION;\n };\n\n TemporalQueries.zone = function zone() {\n return TemporalQueries.ZONE;\n };\n\n TemporalQueries.offset = function offset() {\n return TemporalQueries.OFFSET;\n };\n\n TemporalQueries.localDate = function localDate() {\n return TemporalQueries.LOCAL_DATE;\n };\n\n TemporalQueries.localTime = function localTime() {\n return TemporalQueries.LOCAL_TIME;\n };\n\n return TemporalQueries;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAccessor = function () {\n function TemporalAccessor() {}\n\n var _proto = TemporalAccessor.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.chronology() || _query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (this.isSupported(field)) {\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n return TemporalAccessor;\n}();\n\nvar TemporalQuery = function (_Enum) {\n _inheritsLoose(TemporalQuery, _Enum);\n\n function TemporalQuery() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TemporalQuery.prototype;\n\n _proto.queryFrom = function queryFrom(temporal) {\n abstractMethodFail('queryFrom');\n };\n\n return TemporalQuery;\n}(Enum);\nfunction createTemporalQuery(name, queryFromFunction) {\n var ExtendedTemporalQuery = function (_TemporalQuery) {\n _inheritsLoose(ExtendedTemporalQuery, _TemporalQuery);\n\n function ExtendedTemporalQuery() {\n return _TemporalQuery.apply(this, arguments) || this;\n }\n\n return ExtendedTemporalQuery;\n }(TemporalQuery);\n\n ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction;\n return new ExtendedTemporalQuery(name);\n}\n\nvar DayOfWeek = function (_TemporalAccessor) {\n _inheritsLoose(DayOfWeek, _TemporalAccessor);\n\n function DayOfWeek(ordinal, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._ordinal = ordinal;\n _this._name = name;\n return _this;\n }\n\n var _proto = DayOfWeek.prototype;\n\n _proto.ordinal = function ordinal() {\n return this._ordinal;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n DayOfWeek.values = function values() {\n return ENUMS.slice();\n };\n\n DayOfWeek.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < ENUMS.length; ordinal++) {\n if (ENUMS[ordinal].name() === name) {\n break;\n }\n }\n\n return DayOfWeek.of(ordinal + 1);\n };\n\n DayOfWeek.of = function of(dayOfWeek) {\n if (dayOfWeek < 1 || dayOfWeek > 7) {\n throw new DateTimeException('Invalid value for DayOfWeek: ' + dayOfWeek);\n }\n\n return ENUMS[dayOfWeek - 1];\n };\n\n DayOfWeek.from = function from(temporal) {\n assert(temporal != null, 'temporal', NullPointerException);\n\n if (temporal instanceof DayOfWeek) {\n return temporal;\n }\n\n try {\n return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n throw new DateTimeException('Unable to obtain DayOfWeek from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''), ex);\n } else {\n throw ex;\n }\n }\n };\n\n _proto.value = function value() {\n return this._ordinal + 1;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.DAY_OF_WEEK;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(days) {\n var amount = MathUtil.floorMod(days, 7);\n return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)];\n };\n\n _proto.minus = function minus(days) {\n return this.plus(-1 * MathUtil.floorMod(days, 7));\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n assert(_query != null, 'query', NullPointerException);\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.DAY_OF_WEEK, this.value());\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, DayOfWeek, 'other');\n return this._ordinal - other._ordinal;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return DayOfWeek;\n}(TemporalAccessor);\nvar ENUMS;\nfunction _init$4() {\n DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY');\n DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY');\n DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY');\n DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY');\n DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY');\n DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY');\n DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY');\n DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', function (temporal) {\n return DayOfWeek.from(temporal);\n });\n ENUMS = [DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY, DayOfWeek.SUNDAY];\n}\n\nvar Month = function (_TemporalAccessor) {\n _inheritsLoose(Month, _TemporalAccessor);\n\n function Month(value, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._value = MathUtil.safeToInt(value);\n _this._name = name;\n return _this;\n }\n\n var _proto = Month.prototype;\n\n _proto.value = function value() {\n return this._value;\n };\n\n _proto.ordinal = function ordinal() {\n return this._value - 1;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (null === field) {\n return false;\n }\n\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(months) {\n var amount = MathUtil.intMod(months, 12) + 12;\n var newMonthVal = MathUtil.intMod(this.value() + amount, 12);\n newMonthVal = newMonthVal === 0 ? 12 : newMonthVal;\n return Month.of(newMonthVal);\n };\n\n _proto.minus = function minus(months) {\n return this.plus(-1 * MathUtil.intMod(months, 12));\n };\n\n _proto.length = function length(leapYear) {\n switch (this) {\n case Month.FEBRUARY:\n return leapYear ? 29 : 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.minLength = function minLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.maxLength = function maxLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 29;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.firstDayOfYear = function firstDayOfYear(leapYear) {\n var leap = leapYear ? 1 : 0;\n\n switch (this) {\n case Month.JANUARY:\n return 1;\n\n case Month.FEBRUARY:\n return 32;\n\n case Month.MARCH:\n return 60 + leap;\n\n case Month.APRIL:\n return 91 + leap;\n\n case Month.MAY:\n return 121 + leap;\n\n case Month.JUNE:\n return 152 + leap;\n\n case Month.JULY:\n return 182 + leap;\n\n case Month.AUGUST:\n return 213 + leap;\n\n case Month.SEPTEMBER:\n return 244 + leap;\n\n case Month.OCTOBER:\n return 274 + leap;\n\n case Month.NOVEMBER:\n return 305 + leap;\n\n case Month.DECEMBER:\n default:\n return 335 + leap;\n }\n };\n\n _proto.firstMonthOfQuarter = function firstMonthOfQuarter() {\n switch (this) {\n case Month.JANUARY:\n case Month.FEBRUARY:\n case Month.MARCH:\n return Month.JANUARY;\n\n case Month.APRIL:\n case Month.MAY:\n case Month.JUNE:\n return Month.APRIL;\n\n case Month.JULY:\n case Month.AUGUST:\n case Month.SEPTEMBER:\n return Month.JULY;\n\n case Month.OCTOBER:\n case Month.NOVEMBER:\n case Month.DECEMBER:\n default:\n return Month.OCTOBER;\n }\n };\n\n _proto.query = function query(_query) {\n assert(_query != null, 'query() parameter must not be null', DateTimeException);\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case Month.JANUARY:\n return 'JANUARY';\n\n case Month.FEBRUARY:\n return 'FEBRUARY';\n\n case Month.MARCH:\n return 'MARCH';\n\n case Month.APRIL:\n return 'APRIL';\n\n case Month.MAY:\n return 'MAY';\n\n case Month.JUNE:\n return 'JUNE';\n\n case Month.JULY:\n return 'JULY';\n\n case Month.AUGUST:\n return 'AUGUST';\n\n case Month.SEPTEMBER:\n return 'SEPTEMBER';\n\n case Month.OCTOBER:\n return 'OCTOBER';\n\n case Month.NOVEMBER:\n return 'NOVEMBER';\n\n case Month.DECEMBER:\n return 'DECEMBER';\n\n default:\n return 'unknown Month, value: ' + this.value();\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.MONTH_OF_YEAR, this.value());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Month, 'other');\n return this._value - other._value;\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n Month.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < MONTHS.length; ordinal++) {\n if (MONTHS[ordinal].name() === name) {\n break;\n }\n }\n\n return Month.of(ordinal + 1);\n };\n\n Month.values = function values() {\n return MONTHS.slice();\n };\n\n Month.of = function of(month) {\n if (month < 1 || month > 12) {\n assert(false, 'Invalid value for MonthOfYear: ' + month, DateTimeException);\n }\n\n return MONTHS[month - 1];\n };\n\n Month.from = function from(temporal) {\n if (temporal instanceof Month) {\n return temporal;\n }\n\n try {\n return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Month from TemporalAccessor: ' + temporal + ' of type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''), ex);\n }\n };\n\n return Month;\n}(TemporalAccessor);\nvar MONTHS;\nfunction _init$5() {\n Month.JANUARY = new Month(1, 'JANUARY');\n Month.FEBRUARY = new Month(2, 'FEBRUARY');\n Month.MARCH = new Month(3, 'MARCH');\n Month.APRIL = new Month(4, 'APRIL');\n Month.MAY = new Month(5, 'MAY');\n Month.JUNE = new Month(6, 'JUNE');\n Month.JULY = new Month(7, 'JULY');\n Month.AUGUST = new Month(8, 'AUGUST');\n Month.SEPTEMBER = new Month(9, 'SEPTEMBER');\n Month.OCTOBER = new Month(10, 'OCTOBER');\n Month.NOVEMBER = new Month(11, 'NOVEMBER');\n Month.DECEMBER = new Month(12, 'DECEMBER');\n MONTHS = [Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER];\n}\n\nvar PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/;\nvar Period = function (_TemporalAmount) {\n _inheritsLoose(Period, _TemporalAmount);\n\n function Period(years, months, days) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n\n var _years = MathUtil.safeToInt(years);\n\n var _months = MathUtil.safeToInt(months);\n\n var _days = MathUtil.safeToInt(days);\n\n if (_years === 0 && _months === 0 && _days === 0) {\n if (!Period.ZERO) {\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n Period.ZERO = _assertThisInitialized(_this);\n }\n\n return Period.ZERO || _assertThisInitialized(_this);\n }\n\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n return _this;\n }\n\n Period.ofYears = function ofYears(years) {\n return Period.create(years, 0, 0);\n };\n\n Period.ofMonths = function ofMonths(months) {\n return Period.create(0, months, 0);\n };\n\n Period.ofWeeks = function ofWeeks(weeks) {\n return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7));\n };\n\n Period.ofDays = function ofDays(days) {\n return Period.create(0, 0, days);\n };\n\n Period.of = function of(years, months, days) {\n return Period.create(years, months, days);\n };\n\n Period.from = function from(amount) {\n if (amount instanceof Period) {\n return amount;\n }\n\n requireNonNull(amount, 'amount');\n var years = 0;\n var months = 0;\n var days = 0;\n var units = amount.units();\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var unitAmount = amount.get(unit);\n\n if (unit === ChronoUnit.YEARS) {\n years = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.MONTHS) {\n months = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.DAYS) {\n days = MathUtil.safeToInt(unitAmount);\n } else {\n throw new DateTimeException('Unit must be Years, Months or Days, but was ' + unit);\n }\n }\n\n return Period.create(years, months, days);\n };\n\n Period.between = function between(startDate, endDate) {\n requireNonNull(startDate, 'startDate');\n requireNonNull(endDate, 'endDate');\n requireInstance(startDate, LocalDate, 'startDate');\n requireInstance(endDate, LocalDate, 'endDate');\n return startDate.until(endDate);\n };\n\n Period.parse = function parse(text) {\n requireNonNull(text, 'text');\n\n try {\n return Period._parse(text);\n } catch (ex) {\n if (ex instanceof ArithmeticException) {\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex);\n } else {\n throw ex;\n }\n }\n };\n\n Period._parse = function _parse(text) {\n var matches = PATTERN.exec(text);\n\n if (matches != null) {\n var negate = '-' === matches[1] ? -1 : 1;\n var yearMatch = matches[2];\n var monthMatch = matches[3];\n var weekMatch = matches[4];\n var dayMatch = matches[5];\n\n if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) {\n var years = Period._parseNumber(text, yearMatch, negate);\n\n var months = Period._parseNumber(text, monthMatch, negate);\n\n var weeks = Period._parseNumber(text, weekMatch, negate);\n\n var days = Period._parseNumber(text, dayMatch, negate);\n\n days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7));\n return Period.create(years, months, days);\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0);\n };\n\n Period._parseNumber = function _parseNumber(text, str, negate) {\n if (str == null) {\n return 0;\n }\n\n var val = MathUtil.parseInt(str);\n return MathUtil.safeMultiply(val, negate);\n };\n\n Period.create = function create(years, months, days) {\n return new Period(years, months, days);\n };\n\n var _proto = Period.prototype;\n\n _proto.units = function units() {\n return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS];\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.YEARS) {\n return this._years;\n }\n\n if (unit === ChronoUnit.MONTHS) {\n return this._months;\n }\n\n if (unit === ChronoUnit.DAYS) {\n return this._days;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n };\n\n _proto.isZero = function isZero() {\n return this === Period.ZERO;\n };\n\n _proto.isNegative = function isNegative() {\n return this._years < 0 || this._months < 0 || this._days < 0;\n };\n\n _proto.years = function years() {\n return this._years;\n };\n\n _proto.months = function months() {\n return this._months;\n };\n\n _proto.days = function days() {\n return this._days;\n };\n\n _proto.withYears = function withYears(years) {\n if (years === this._years) {\n return this;\n }\n\n return Period.create(years, this._months, this._days);\n };\n\n _proto.withMonths = function withMonths(months) {\n if (months === this._months) {\n return this;\n }\n\n return Period.create(this._years, months, this._days);\n };\n\n _proto.withDays = function withDays(days) {\n if (days === this._days) {\n return this;\n }\n\n return Period.create(this._years, this._months, days);\n };\n\n _proto.plus = function plus(amountToAdd) {\n var amount = Period.from(amountToAdd);\n return Period.create(MathUtil.safeAdd(this._years, amount._years), MathUtil.safeAdd(this._months, amount._months), MathUtil.safeAdd(this._days, amount._days));\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days);\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd)));\n };\n\n _proto.minus = function minus(amountToSubtract) {\n var amount = Period.from(amountToSubtract);\n return Period.create(MathUtil.safeSubtract(this._years, amount._years), MathUtil.safeSubtract(this._months, amount._months), MathUtil.safeSubtract(this._days, amount._days));\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(-1 * yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(-1 * monthsToSubtract);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(-1 * daysToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(scalar) {\n if (this === Period.ZERO || scalar === 1) {\n return this;\n }\n\n return Period.create(MathUtil.safeMultiply(this._years, scalar), MathUtil.safeMultiply(this._months, scalar), MathUtil.safeMultiply(this._days, scalar));\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.normalized = function normalized() {\n var totalMonths = this.toTotalMonths();\n var splitYears = MathUtil.intDiv(totalMonths, 12);\n var splitMonths = MathUtil.intMod(totalMonths, 12);\n\n if (splitYears === this._years && splitMonths === this._months) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days);\n };\n\n _proto.toTotalMonths = function toTotalMonths() {\n return this._years * 12 + this._months;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.plus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.plus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.plus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.minus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.minus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.minus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof Period) {\n var other = obj;\n return this._years === other._years && this._months === other._months && this._days === other._days;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._years, this._months, this._days);\n };\n\n _proto.toString = function toString() {\n if (this === Period.ZERO) {\n return 'P0D';\n } else {\n var buf = 'P';\n\n if (this._years !== 0) {\n buf += '' + this._years + 'Y';\n }\n\n if (this._months !== 0) {\n buf += '' + this._months + 'M';\n }\n\n if (this._days !== 0) {\n buf += '' + this._days + 'D';\n }\n\n return buf;\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Period;\n}(TemporalAmount);\nfunction _init$6() {\n Period.ofDays(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ParsePosition = function () {\n function ParsePosition(index) {\n this._index = index;\n this._errorIndex = -1;\n }\n\n var _proto = ParsePosition.prototype;\n\n _proto.getIndex = function getIndex() {\n return this._index;\n };\n\n _proto.setIndex = function setIndex(index) {\n this._index = index;\n };\n\n _proto.getErrorIndex = function getErrorIndex() {\n return this._errorIndex;\n };\n\n _proto.setErrorIndex = function setErrorIndex(errorIndex) {\n this._errorIndex = errorIndex;\n };\n\n return ParsePosition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar EnumMap = function () {\n function EnumMap() {\n this._map = {};\n }\n\n var _proto = EnumMap.prototype;\n\n _proto.putAll = function putAll(otherMap) {\n for (var key in otherMap._map) {\n this._map[key] = otherMap._map[key];\n }\n\n return this;\n };\n\n _proto.containsKey = function containsKey(key) {\n return this._map.hasOwnProperty(key.name()) && this.get(key) !== undefined;\n };\n\n _proto.get = function get(key) {\n return this._map[key.name()];\n };\n\n _proto.put = function put(key, val) {\n return this.set(key, val);\n };\n\n _proto.set = function set(key, val) {\n this._map[key.name()] = val;\n return this;\n };\n\n _proto.retainAll = function retainAll(keyList) {\n var map = {};\n\n for (var i = 0; i < keyList.length; i++) {\n var key = keyList[i].name();\n map[key] = this._map[key];\n }\n\n this._map = map;\n return this;\n };\n\n _proto.remove = function remove(key) {\n var keyName = key.name();\n var val = this._map[keyName];\n this._map[keyName] = undefined;\n return val;\n };\n\n _proto.keySet = function keySet() {\n return this._map;\n };\n\n _proto.clear = function clear() {\n this._map = {};\n };\n\n return EnumMap;\n}();\n\nvar ResolverStyle = function (_Enum) {\n _inheritsLoose(ResolverStyle, _Enum);\n\n function ResolverStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n return ResolverStyle;\n}(Enum);\nResolverStyle.STRICT = new ResolverStyle('STRICT');\nResolverStyle.SMART = new ResolverStyle('SMART');\nResolverStyle.LENIENT = new ResolverStyle('LENIENT');\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAdjuster = function () {\n function TemporalAdjuster() {}\n\n var _proto = TemporalAdjuster.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n abstractMethodFail('adjustInto');\n };\n\n return TemporalAdjuster;\n}();\n\nvar Temporal = function (_TemporalAccessor) {\n _inheritsLoose(Temporal, _TemporalAccessor);\n\n function Temporal() {\n return _TemporalAccessor.apply(this, arguments) || this;\n }\n\n var _proto = Temporal.prototype;\n\n _proto.isSupported = function isSupported(unit) {\n abstractMethodFail('isSupported');\n };\n\n _proto.minus = function minus(p1, p2) {\n if (arguments.length < 2) {\n return this.minusAmount(p1);\n } else {\n return this.minusAmountUnit(p1, p2);\n }\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n abstractMethodFail('minusAmount');\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n abstractMethodFail('minusAmountUnit');\n };\n\n _proto.plus = function plus(p1, p2) {\n if (arguments.length < 2) {\n return this.plusAmount(p1);\n } else {\n return this.plusAmountUnit(p1, p2);\n }\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n abstractMethodFail('plusAmount');\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n abstractMethodFail('plusAmountUnit');\n };\n\n _proto.until = function until(endTemporal, unit) {\n abstractMethodFail('until');\n };\n\n _proto.with = function _with(p1, p2) {\n if (arguments.length < 2) {\n return this.withAdjuster(p1);\n } else {\n return this.withFieldValue(p1, p2);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n abstractMethodFail('withAdjuster');\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n abstractMethodFail('withFieldValue');\n };\n\n return Temporal;\n}(TemporalAccessor);\n\nvar DefaultInterfaceTemporal = function (_Temporal) {\n _inheritsLoose(DefaultInterfaceTemporal, _Temporal);\n\n function DefaultInterfaceTemporal() {\n return _Temporal.apply(this, arguments) || this;\n }\n\n var _proto = DefaultInterfaceTemporal.prototype;\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n requireInstance(adjuster, TemporalAdjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmount(-amountToSubtract, unit);\n };\n\n return DefaultInterfaceTemporal;\n}(Temporal);\n\nvar ChronoLocalDate = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDate, _DefaultInterfaceTemp);\n\n function ChronoLocalDate() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDate.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toEpochDay());\n } else if (_query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay());\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return ChronoLocalDate;\n}(DefaultInterfaceTemporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringUtil = function () {\n function StringUtil() {}\n\n StringUtil.startsWith = function startsWith(text, pattern) {\n return text.indexOf(pattern) === 0;\n };\n\n StringUtil.hashCode = function hashCode(text) {\n var len = text.length;\n\n if (len === 0) {\n return 0;\n }\n\n var hash = 0;\n\n for (var i = 0; i < len; i++) {\n var chr = text.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n\n return MathUtil.smi(hash);\n };\n\n return StringUtil;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneId = function () {\n function ZoneId() {}\n\n ZoneId.systemDefault = function systemDefault() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.getAvailableZoneIds = function getAvailableZoneIds() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.of = function of(zoneId) {\n throw new DateTimeException('not supported operation' + zoneId);\n };\n\n ZoneId.ofOffset = function ofOffset(prefix, offset) {\n throw new DateTimeException('not supported operation' + prefix + offset);\n };\n\n ZoneId.from = function from(temporal) {\n throw new DateTimeException('not supported operation' + temporal);\n };\n\n var _proto = ZoneId.prototype;\n\n _proto.id = function id() {\n abstractMethodFail('ZoneId.id');\n };\n\n _proto.rules = function rules() {\n abstractMethodFail('ZoneId.rules');\n };\n\n _proto.normalized = function normalized() {\n var rules = this.rules();\n\n if (rules.isFixedOffset()) {\n return rules.offset(Instant.EPOCH);\n }\n\n return this;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZoneId) {\n return this.id() === other.id();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return StringUtil.hashCode(this.id());\n };\n\n _proto.toString = function toString() {\n return this.id();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneId;\n}();\n\nvar ZoneRules = function () {\n function ZoneRules() {}\n\n ZoneRules.of = function of(offset) {\n requireNonNull(offset, 'offset');\n return new Fixed(offset);\n };\n\n var _proto = ZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n abstractMethodFail('ZoneRules.isFixedOffset');\n };\n\n _proto.offset = function offset(instantOrLocalDateTime) {\n if (instantOrLocalDateTime instanceof Instant) {\n return this.offsetOfInstant(instantOrLocalDateTime);\n } else {\n return this.offsetOfLocalDateTime(instantOrLocalDateTime);\n }\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n abstractMethodFail('ZoneRules.offsetInstant');\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n abstractMethodFail('ZoneRules.offsetOfEpochMilli');\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n abstractMethodFail('ZoneRules.offsetLocalDateTime');\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n abstractMethodFail('ZoneRules.validOffsets');\n };\n\n _proto.transition = function transition(localDateTime) {\n abstractMethodFail('ZoneRules.transition');\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n abstractMethodFail('ZoneRules.standardOffset');\n };\n\n _proto.daylightSavings = function daylightSavings(instant) {\n abstractMethodFail('ZoneRules.daylightSavings');\n };\n\n _proto.isDaylightSavings = function isDaylightSavings(instant) {\n abstractMethodFail('ZoneRules.isDaylightSavings');\n };\n\n _proto.isValidOffset = function isValidOffset(localDateTime, offset) {\n abstractMethodFail('ZoneRules.isValidOffset');\n };\n\n _proto.nextTransition = function nextTransition(instant) {\n abstractMethodFail('ZoneRules.nextTransition');\n };\n\n _proto.previousTransition = function previousTransition(instant) {\n abstractMethodFail('ZoneRules.previousTransition');\n };\n\n _proto.transitions = function transitions() {\n abstractMethodFail('ZoneRules.transitions');\n };\n\n _proto.transitionRules = function transitionRules() {\n abstractMethodFail('ZoneRules.transitionRules');\n };\n\n _proto.toString = function toString() {\n abstractMethodFail('ZoneRules.toString');\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneRules;\n}();\n\nvar Fixed = function (_ZoneRules) {\n _inheritsLoose(Fixed, _ZoneRules);\n\n function Fixed(offset) {\n var _this;\n\n _this = _ZoneRules.call(this) || this;\n _this._offset = offset;\n return _this;\n }\n\n var _proto2 = Fixed.prototype;\n\n _proto2.isFixedOffset = function isFixedOffset() {\n return true;\n };\n\n _proto2.offsetOfInstant = function offsetOfInstant() {\n return this._offset;\n };\n\n _proto2.offsetOfEpochMilli = function offsetOfEpochMilli() {\n return this._offset;\n };\n\n _proto2.offsetOfLocalDateTime = function offsetOfLocalDateTime() {\n return this._offset;\n };\n\n _proto2.validOffsets = function validOffsets() {\n return [this._offset];\n };\n\n _proto2.transition = function transition() {\n return null;\n };\n\n _proto2.standardOffset = function standardOffset() {\n return this._offset;\n };\n\n _proto2.daylightSavings = function daylightSavings() {\n return Duration.ZERO;\n };\n\n _proto2.isDaylightSavings = function isDaylightSavings() {\n return false;\n };\n\n _proto2.isValidOffset = function isValidOffset(localDateTime, offset) {\n return this._offset.equals(offset);\n };\n\n _proto2.nextTransition = function nextTransition() {\n return null;\n };\n\n _proto2.previousTransition = function previousTransition() {\n return null;\n };\n\n _proto2.transitions = function transitions() {\n return [];\n };\n\n _proto2.transitionRules = function transitionRules() {\n return [];\n };\n\n _proto2.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Fixed) {\n return this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto2.toString = function toString() {\n return 'FixedRules:' + this._offset.toString();\n };\n\n return Fixed;\n}(ZoneRules);\n\nvar SECONDS_CACHE = {};\nvar ID_CACHE = {};\nvar ZoneOffset = function (_ZoneId) {\n _inheritsLoose(ZoneOffset, _ZoneId);\n\n function ZoneOffset(totalSeconds) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n\n ZoneOffset._validateTotalSeconds(totalSeconds);\n\n _this._totalSeconds = MathUtil.safeToInt(totalSeconds);\n _this._rules = ZoneRules.of(_assertThisInitialized(_this));\n _this._id = ZoneOffset._buildId(totalSeconds);\n return _this;\n }\n\n var _proto = ZoneOffset.prototype;\n\n _proto.totalSeconds = function totalSeconds() {\n return this._totalSeconds;\n };\n\n _proto.id = function id() {\n return this._id;\n };\n\n ZoneOffset._buildId = function _buildId(totalSeconds) {\n if (totalSeconds === 0) {\n return 'Z';\n } else {\n var absTotalSeconds = Math.abs(totalSeconds);\n var absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR);\n var absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var buf = '' + (totalSeconds < 0 ? '-' : '+') + (absHours < 10 ? '0' : '') + absHours + (absMinutes < 10 ? ':0' : ':') + absMinutes;\n var absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE);\n\n if (absSeconds !== 0) {\n buf += (absSeconds < 10 ? ':0' : ':') + absSeconds;\n }\n\n return buf;\n }\n };\n\n ZoneOffset._validateTotalSeconds = function _validateTotalSeconds(totalSeconds) {\n if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset._validate = function _validate(hours, minutes, seconds) {\n if (hours < -18 || hours > 18) {\n throw new DateTimeException('Zone offset hours not in valid range: value ' + hours + ' is not in the range -18 to 18');\n }\n\n if (hours > 0) {\n if (minutes < 0 || seconds < 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive');\n }\n } else if (hours < 0) {\n if (minutes > 0 || seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative');\n }\n } else if (minutes > 0 && seconds < 0 || minutes < 0 && seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must have the same sign');\n }\n\n if (Math.abs(minutes) > 59) {\n throw new DateTimeException('Zone offset minutes not in valid range: abs(value) ' + Math.abs(minutes) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(seconds) > 59) {\n throw new DateTimeException('Zone offset seconds not in valid range: abs(value) ' + Math.abs(seconds) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset.of = function of(offsetId) {\n requireNonNull(offsetId, 'offsetId');\n var offset = ID_CACHE[offsetId];\n\n if (offset != null) {\n return offset;\n }\n\n var hours, minutes, seconds;\n\n switch (offsetId.length) {\n case 2:\n offsetId = offsetId[0] + '0' + offsetId[1];\n\n case 3:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = 0;\n seconds = 0;\n break;\n\n case 5:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = 0;\n break;\n\n case 6:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = 0;\n break;\n\n case 7:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = ZoneOffset._parseNumber(offsetId, 5, false);\n break;\n\n case 9:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = ZoneOffset._parseNumber(offsetId, 7, true);\n break;\n\n default:\n throw new DateTimeException('Invalid ID for ZoneOffset, invalid format: ' + offsetId);\n }\n\n var first = offsetId[0];\n\n if (first !== '+' && first !== '-') {\n throw new DateTimeException('Invalid ID for ZoneOffset, plus/minus not found when expected: ' + offsetId);\n }\n\n if (first === '-') {\n return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds);\n } else {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds);\n }\n };\n\n ZoneOffset._parseNumber = function _parseNumber(offsetId, pos, precededByColon) {\n if (precededByColon && offsetId[pos - 1] !== ':') {\n throw new DateTimeException('Invalid ID for ZoneOffset, colon not found when expected: ' + offsetId);\n }\n\n var ch1 = offsetId[pos];\n var ch2 = offsetId[pos + 1];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n throw new DateTimeException('Invalid ID for ZoneOffset, non numeric characters found: ' + offsetId);\n }\n\n return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n };\n\n ZoneOffset.ofHours = function ofHours(hours) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0);\n };\n\n ZoneOffset.ofHoursMinutes = function ofHoursMinutes(hours, minutes) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0);\n };\n\n ZoneOffset.ofHoursMinutesSeconds = function ofHoursMinutesSeconds(hours, minutes, seconds) {\n ZoneOffset._validate(hours, minutes, seconds);\n\n var totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalMinutes = function ofTotalMinutes(totalMinutes) {\n var totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalSeconds = function ofTotalSeconds(totalSeconds) {\n if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) {\n var totalSecs = totalSeconds;\n var result = SECONDS_CACHE[totalSecs];\n\n if (result == null) {\n result = new ZoneOffset(totalSeconds);\n SECONDS_CACHE[totalSecs] = result;\n ID_CACHE[result.id()] = result;\n }\n\n return result;\n } else {\n return new ZoneOffset(totalSeconds);\n }\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._totalSeconds;\n } else if (field instanceof ChronoField) {\n throw new DateTimeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.precision() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n return other._totalSeconds - this._totalSeconds;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof ZoneOffset) {\n return this._totalSeconds === obj._totalSeconds;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._totalSeconds;\n };\n\n _proto.toString = function toString() {\n return this._id;\n };\n\n return ZoneOffset;\n}(ZoneId);\nfunction _init$7() {\n ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n}\n\nvar DateTimeBuilder = function (_TemporalAccessor) {\n _inheritsLoose(DateTimeBuilder, _TemporalAccessor);\n\n DateTimeBuilder.create = function create(field, value) {\n var dtb = new DateTimeBuilder();\n\n dtb._addFieldValue(field, value);\n\n return dtb;\n };\n\n function DateTimeBuilder() {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this.fieldValues = new EnumMap();\n _this.chrono = null;\n _this.zone = null;\n _this.date = null;\n _this.time = null;\n _this.leapSecond = false;\n _this.excessDays = null;\n return _this;\n }\n\n var _proto = DateTimeBuilder.prototype;\n\n _proto.getFieldValue0 = function getFieldValue0(field) {\n return this.fieldValues.get(field);\n };\n\n _proto._addFieldValue = function _addFieldValue(field, value) {\n requireNonNull(field, 'field');\n var old = this.getFieldValue0(field);\n\n if (old != null && old !== value) {\n throw new DateTimeException('Conflict found: ' + field + ' ' + old + ' differs from ' + field + ' ' + value + ': ' + this);\n }\n\n return this._putFieldValue0(field, value);\n };\n\n _proto._putFieldValue0 = function _putFieldValue0(field, value) {\n this.fieldValues.put(field, value);\n return this;\n };\n\n _proto.resolve = function resolve(resolverStyle, resolverFields) {\n if (resolverFields != null) {\n this.fieldValues.retainAll(resolverFields);\n }\n\n this._mergeDate(resolverStyle);\n\n this._mergeTime(resolverStyle);\n\n this._resolveTimeInferZeroes(resolverStyle);\n\n if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) {\n this.date = this.date.plus(this.excessDays);\n this.excessDays = Period.ZERO;\n }\n\n this._resolveInstant();\n\n return this;\n };\n\n _proto._mergeDate = function _mergeDate(resolverStyle) {\n this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle));\n };\n\n _proto._checkDate = function _checkDate(date) {\n if (date != null) {\n this._addObject(date);\n\n for (var fieldName in this.fieldValues.keySet()) {\n var field = ChronoField.byName(fieldName);\n\n if (field) {\n if (this.fieldValues.get(field) !== undefined) {\n if (field.isDateBased()) {\n var val1 = void 0;\n\n try {\n val1 = date.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n continue;\n } else {\n throw ex;\n }\n }\n\n var val2 = this.fieldValues.get(field);\n\n if (val1 !== val2) {\n throw new DateTimeException('Conflict found: Field ' + field + ' ' + val1 + ' differs from ' + field + ' ' + val2 + ' derived from ' + date);\n }\n }\n }\n }\n }\n }\n };\n\n _proto._mergeTime = function _mergeTime(resolverStyle) {\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) {\n var ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch);\n }\n\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) {\n var _ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && _ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(_ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_AMPM, _ch === 12 ? 0 : _ch);\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) {\n ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY));\n }\n\n if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n var ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY);\n var hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM);\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap);\n }\n\n if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) {\n var nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.NANO_OF_DAY.checkValidValue(nod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000));\n\n this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) {\n var cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MICRO_OF_DAY.checkValidValue(cod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000));\n\n this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) {\n var lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MILLI_OF_DAY.checkValidValue(lod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000));\n\n this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) {\n var sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.SECOND_OF_DAY.checkValidValue(sod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n\n this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) {\n var mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MINUTE_OF_DAY.checkValidValue(mod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60));\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n var cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + MathUtil.intMod(cos, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000));\n\n this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var _nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(_nos, 1000000));\n\n this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var _cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _cos * 1000);\n } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n var _los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _los * 1000000);\n }\n };\n\n _proto._resolveTimeInferZeroes = function _resolveTimeInferZeroes(resolverStyle) {\n var hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY);\n var moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR);\n var som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE);\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n if (hod == null) {\n return;\n }\n\n if (moh == null && (som != null || nos != null)) {\n return;\n }\n\n if (moh != null && som == null && nos != null) {\n return;\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (hod != null) {\n if (resolverStyle === ResolverStyle.SMART && hod === 24 && (moh == null || moh === 0) && (som == null || som === 0) && (nos == null || nos === 0)) {\n hod = 0;\n this.excessDays = Period.ofDays(1);\n }\n\n var hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod);\n\n if (moh != null) {\n var mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh);\n\n if (som != null) {\n var somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som);\n\n if (nos != null) {\n var nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos);\n\n this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal));\n } else {\n this._addObject(LocalTime.of(hodVal, mohVal, somVal));\n }\n } else {\n if (nos == null) {\n this._addObject(LocalTime.of(hodVal, mohVal));\n }\n }\n } else {\n if (som == null && nos == null) {\n this._addObject(LocalTime.of(hodVal, 0));\n }\n }\n }\n } else {\n if (hod != null) {\n var _hodVal = hod;\n\n if (moh != null) {\n if (som != null) {\n if (nos == null) {\n nos = 0;\n }\n\n var totalNanos = MathUtil.safeMultiply(_hodVal, 3600000000000);\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, nos);\n var excessDays = MathUtil.floorDiv(totalNanos, 86400000000000);\n var nod = MathUtil.floorMod(totalNanos, 86400000000000);\n\n this._addObject(LocalTime.ofNanoOfDay(nod));\n\n this.excessDays = Period.ofDays(excessDays);\n } else {\n var totalSecs = MathUtil.safeMultiply(_hodVal, 3600);\n totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60));\n\n var _excessDays = MathUtil.floorDiv(totalSecs, 86400);\n\n var sod = MathUtil.floorMod(totalSecs, 86400);\n\n this._addObject(LocalTime.ofSecondOfDay(sod));\n\n this.excessDays = Period.ofDays(_excessDays);\n }\n } else {\n var _excessDays2 = MathUtil.safeToInt(MathUtil.floorDiv(_hodVal, 24));\n\n _hodVal = MathUtil.floorMod(_hodVal, 24);\n\n this._addObject(LocalTime.of(_hodVal, 0));\n\n this.excessDays = Period.ofDays(_excessDays2);\n }\n }\n }\n\n this.fieldValues.remove(ChronoField.HOUR_OF_DAY);\n this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR);\n this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE);\n this.fieldValues.remove(ChronoField.NANO_OF_SECOND);\n };\n\n _proto._addObject = function _addObject(dateOrTime) {\n if (dateOrTime instanceof ChronoLocalDate) {\n this.date = dateOrTime;\n } else if (dateOrTime instanceof LocalTime) {\n this.time = dateOrTime;\n }\n };\n\n _proto._resolveInstant = function _resolveInstant() {\n if (this.date != null && this.time != null) {\n var offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs != null) {\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n var instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n } else if (this.zone != null) {\n var _instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS);\n\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, _instant);\n }\n }\n };\n\n _proto.build = function build(type) {\n return type.queryFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field == null) {\n return false;\n }\n\n return this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined || this.date != null && this.date.isSupported(field) || this.time != null && this.time.isSupported(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n var value = this.getFieldValue0(field);\n\n if (value == null) {\n if (this.date != null && this.date.isSupported(field)) {\n return this.date.getLong(field);\n }\n\n if (this.time != null && this.time.isSupported(field)) {\n return this.time.getLong(field);\n }\n\n throw new DateTimeException('Field not found: ' + field);\n }\n\n return value;\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId()) {\n return this.zone;\n } else if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n } else if (_query === TemporalQueries.localDate()) {\n return this.date != null ? LocalDate.from(this.date) : null;\n } else if (_query === TemporalQueries.localTime()) {\n return this.time;\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return _query.queryFrom(this);\n } else if (_query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n return DateTimeBuilder;\n}(TemporalAccessor);\n\nvar DateTimeParseContext = function () {\n function DateTimeParseContext() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DateTimeParseContext) {\n this._constructorSelf.apply(this, arguments);\n\n return;\n } else {\n this._constructorFormatter.apply(this, arguments);\n }\n } else {\n this._constructorParam.apply(this, arguments);\n }\n\n this._caseSensitive = true;\n this._strict = true;\n this._parsed = [new Parsed(this)];\n }\n\n var _proto = DateTimeParseContext.prototype;\n\n _proto._constructorParam = function _constructorParam(locale, symbols, chronology) {\n this._locale = locale;\n this._symbols = symbols;\n this._overrideChronology = chronology;\n };\n\n _proto._constructorFormatter = function _constructorFormatter(formatter) {\n this._locale = formatter.locale();\n this._symbols = formatter.decimalStyle();\n this._overrideChronology = formatter.chronology();\n };\n\n _proto._constructorSelf = function _constructorSelf(other) {\n this._locale = other._locale;\n this._symbols = other._symbols;\n this._overrideChronology = other._overrideChronology;\n this._overrideZone = other._overrideZone;\n this._caseSensitive = other._caseSensitive;\n this._strict = other._strict;\n this._parsed = [new Parsed(this)];\n };\n\n _proto.copy = function copy() {\n return new DateTimeParseContext(this);\n };\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.isStrict = function isStrict() {\n return this._strict;\n };\n\n _proto.setStrict = function setStrict(strict) {\n this._strict = strict;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n _proto.startOptional = function startOptional() {\n this._parsed.push(this.currentParsed().copy());\n };\n\n _proto.endOptional = function endOptional(successful) {\n if (successful) {\n this._parsed.splice(this._parsed.length - 2, 1);\n } else {\n this._parsed.splice(this._parsed.length - 1, 1);\n }\n };\n\n _proto.isCaseSensitive = function isCaseSensitive() {\n return this._caseSensitive;\n };\n\n _proto.setCaseSensitive = function setCaseSensitive(caseSensitive) {\n this._caseSensitive = caseSensitive;\n };\n\n _proto.subSequenceEquals = function subSequenceEquals(cs1, offset1, cs2, offset2, length) {\n if (offset1 + length > cs1.length || offset2 + length > cs2.length) {\n return false;\n }\n\n if (!this.isCaseSensitive()) {\n cs1 = cs1.toLowerCase();\n cs2 = cs2.toLowerCase();\n }\n\n for (var i = 0; i < length; i++) {\n var ch1 = cs1[offset1 + i];\n var ch2 = cs2[offset2 + i];\n\n if (ch1 !== ch2) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.charEquals = function charEquals(ch1, ch2) {\n if (this.isCaseSensitive()) {\n return ch1 === ch2;\n }\n\n return this.charEqualsIgnoreCase(ch1, ch2);\n };\n\n _proto.charEqualsIgnoreCase = function charEqualsIgnoreCase(c1, c2) {\n return c1 === c2 || c1.toLowerCase() === c2.toLowerCase();\n };\n\n _proto.setParsedField = function setParsedField(field, value, errorPos, successPos) {\n var currentParsedFieldValues = this.currentParsed().fieldValues;\n var old = currentParsedFieldValues.get(field);\n currentParsedFieldValues.set(field, value);\n return old != null && old !== value ? ~errorPos : successPos;\n };\n\n _proto.setParsedZone = function setParsedZone(zone) {\n requireNonNull(zone, 'zone');\n this.currentParsed().zone = zone;\n };\n\n _proto.getParsed = function getParsed(field) {\n return this.currentParsed().fieldValues.get(field);\n };\n\n _proto.toParsed = function toParsed() {\n return this.currentParsed();\n };\n\n _proto.currentParsed = function currentParsed() {\n return this._parsed[this._parsed.length - 1];\n };\n\n _proto.setParsedLeapSecond = function setParsedLeapSecond() {\n this.currentParsed().leapSecond = true;\n };\n\n _proto.getEffectiveChronology = function getEffectiveChronology() {\n var chrono = this.currentParsed().chrono;\n\n if (chrono == null) {\n chrono = this._overrideChronology;\n\n if (chrono == null) {\n chrono = IsoChronology.INSTANCE;\n }\n }\n\n return chrono;\n };\n\n return DateTimeParseContext;\n}();\n\nvar Parsed = function (_Temporal) {\n _inheritsLoose(Parsed, _Temporal);\n\n function Parsed(dateTimeParseContext) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this.chrono = null;\n _this.zone = null;\n _this.fieldValues = new EnumMap();\n _this.leapSecond = false;\n _this.dateTimeParseContext = dateTimeParseContext;\n return _this;\n }\n\n var _proto2 = Parsed.prototype;\n\n _proto2.copy = function copy() {\n var cloned = new Parsed();\n cloned.chrono = this.chrono;\n cloned.zone = this.zone;\n cloned.fieldValues.putAll(this.fieldValues);\n cloned.leapSecond = this.leapSecond;\n cloned.dateTimeParseContext = this.dateTimeParseContext;\n return cloned;\n };\n\n _proto2.toString = function toString() {\n return this.fieldValues + \", \" + this.chrono + \", \" + this.zone;\n };\n\n _proto2.isSupported = function isSupported(field) {\n return this.fieldValues.containsKey(field);\n };\n\n _proto2.get = function get(field) {\n var val = this.fieldValues.get(field);\n assert(val != null);\n return val;\n };\n\n _proto2.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n }\n\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto2.toBuilder = function toBuilder() {\n var builder = new DateTimeBuilder();\n builder.fieldValues.putAll(this.fieldValues);\n builder.chrono = this.dateTimeParseContext.getEffectiveChronology();\n\n if (this.zone != null) {\n builder.zone = this.zone;\n } else {\n builder.zone = this.overrideZone;\n }\n\n builder.leapSecond = this.leapSecond;\n builder.excessDays = this.excessDays;\n return builder;\n };\n\n return Parsed;\n}(Temporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimePrintContext = function () {\n function DateTimePrintContext(temporal, localeOrFormatter, symbols) {\n if (arguments.length === 2 && arguments[1] instanceof DateTimeFormatter) {\n this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter);\n this._locale = localeOrFormatter.locale();\n this._symbols = localeOrFormatter.decimalStyle();\n } else {\n this._temporal = temporal;\n this._locale = localeOrFormatter;\n this._symbols = symbols;\n }\n\n this._optional = 0;\n }\n\n DateTimePrintContext.adjust = function adjust(temporal, formatter) {\n return temporal;\n };\n\n var _proto = DateTimePrintContext.prototype;\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.startOptional = function startOptional() {\n this._optional++;\n };\n\n _proto.endOptional = function endOptional() {\n this._optional--;\n };\n\n _proto.getValueQuery = function getValueQuery(query) {\n var result = this._temporal.query(query);\n\n if (result == null && this._optional === 0) {\n throw new DateTimeException('Unable to extract value: ' + this._temporal);\n }\n\n return result;\n };\n\n _proto.getValue = function getValue(field) {\n try {\n return this._temporal.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException && this._optional > 0) {\n return null;\n }\n\n throw ex;\n }\n };\n\n _proto.temporal = function temporal() {\n return this._temporal;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setDateTime = function setDateTime(temporal) {\n this._temporal = temporal;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n return DateTimePrintContext;\n}();\n\nvar IsoFields = {};\nvar QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274];\n\nvar Field = function (_TemporalField) {\n _inheritsLoose(Field, _TemporalField);\n\n function Field() {\n return _TemporalField.apply(this, arguments) || this;\n }\n\n var _proto = Field.prototype;\n\n _proto.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto._isIso = function _isIso() {\n return true;\n };\n\n Field._getWeekRangeByLocalDate = function _getWeekRangeByLocalDate(date) {\n var wby = Field._getWeekBasedYear(date);\n\n return ValueRange.of(1, Field._getWeekRangeByYear(wby));\n };\n\n Field._getWeekRangeByYear = function _getWeekRangeByYear(wby) {\n var date = LocalDate.of(wby, 1, 1);\n\n if (date.dayOfWeek() === DayOfWeek.THURSDAY || date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear()) {\n return 53;\n }\n\n return 52;\n };\n\n Field._getWeek = function _getWeek(date) {\n var dow0 = date.dayOfWeek().ordinal();\n var doy0 = date.dayOfYear() - 1;\n var doyThu0 = doy0 + (3 - dow0);\n var alignedWeek = MathUtil.intDiv(doyThu0, 7);\n var firstThuDoy0 = doyThu0 - alignedWeek * 7;\n var firstMonDoy0 = firstThuDoy0 - 3;\n\n if (firstMonDoy0 < -3) {\n firstMonDoy0 += 7;\n }\n\n if (doy0 < firstMonDoy0) {\n return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum();\n }\n\n var week = MathUtil.intDiv(doy0 - firstMonDoy0, 7) + 1;\n\n if (week === 53) {\n if ((firstMonDoy0 === -3 || firstMonDoy0 === -2 && date.isLeapYear()) === false) {\n week = 1;\n }\n }\n\n return week;\n };\n\n Field._getWeekBasedYear = function _getWeekBasedYear(date) {\n var year = date.year();\n var doy = date.dayOfYear();\n\n if (doy <= 3) {\n var dow = date.dayOfWeek().ordinal();\n\n if (doy - dow < -2) {\n year--;\n }\n } else if (doy >= 363) {\n var _dow = date.dayOfWeek().ordinal();\n\n doy = doy - 363 - (date.isLeapYear() ? 1 : 0);\n\n if (doy - _dow >= 0) {\n year++;\n }\n }\n\n return year;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.resolve = function resolve() {\n return null;\n };\n\n _proto.name = function name() {\n return this.toString();\n };\n\n return Field;\n}(TemporalField);\n\nvar DAY_OF_QUARTER_FIELD = function (_Field) {\n _inheritsLoose(DAY_OF_QUARTER_FIELD, _Field);\n\n function DAY_OF_QUARTER_FIELD() {\n return _Field.apply(this, arguments) || this;\n }\n\n var _proto2 = DAY_OF_QUARTER_FIELD.prototype;\n\n _proto2.toString = function toString() {\n return 'DayOfQuarter';\n };\n\n _proto2.baseUnit = function baseUnit() {\n return ChronoUnit.DAYS;\n };\n\n _proto2.rangeUnit = function rangeUnit() {\n return QUARTER_YEARS;\n };\n\n _proto2.range = function range() {\n return ValueRange.of(1, 90, 92);\n };\n\n _proto2.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal);\n };\n\n _proto2.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var qoy = temporal.getLong(QUARTER_OF_YEAR);\n\n if (qoy === 1) {\n var year = temporal.getLong(ChronoField.YEAR);\n return IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90);\n } else if (qoy === 2) {\n return ValueRange.of(1, 91);\n } else if (qoy === 3 || qoy === 4) {\n return ValueRange.of(1, 92);\n }\n\n return this.range();\n };\n\n _proto2.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var doy = temporal.get(ChronoField.DAY_OF_YEAR);\n var moy = temporal.get(ChronoField.MONTH_OF_YEAR);\n var year = temporal.getLong(ChronoField.YEAR);\n return doy - QUARTER_DAYS[MathUtil.intDiv(moy - 1, 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)];\n };\n\n _proto2.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue));\n };\n\n _proto2.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var yearLong = fieldValues.get(ChronoField.YEAR);\n var qoyLong = fieldValues.get(QUARTER_OF_YEAR);\n\n if (yearLong == null || qoyLong == null) {\n return null;\n }\n\n var y = ChronoField.YEAR.checkValidIntValue(yearLong);\n var doq = fieldValues.get(DAY_OF_QUARTER);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var qoy = qoyLong;\n date = LocalDate.of(y, 1, 1);\n date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3));\n date = date.plusDays(MathUtil.safeSubtract(doq, 1));\n } else {\n var _qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var max = 92;\n\n if (_qoy === 1) {\n max = IsoChronology.isLeapYear(y) ? 91 : 90;\n } else if (_qoy === 2) {\n max = 91;\n }\n\n ValueRange.of(1, max).checkValidValue(doq, this);\n } else {\n this.range().checkValidValue(doq, this);\n }\n\n date = LocalDate.of(y, (_qoy - 1) * 3 + 1, 1).plusDays(doq - 1);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(ChronoField.YEAR);\n fieldValues.remove(QUARTER_OF_YEAR);\n return date;\n };\n\n return DAY_OF_QUARTER_FIELD;\n}(Field);\n\nvar QUARTER_OF_YEAR_FIELD = function (_Field2) {\n _inheritsLoose(QUARTER_OF_YEAR_FIELD, _Field2);\n\n function QUARTER_OF_YEAR_FIELD() {\n return _Field2.apply(this, arguments) || this;\n }\n\n var _proto3 = QUARTER_OF_YEAR_FIELD.prototype;\n\n _proto3.toString = function toString() {\n return 'QuarterOfYear';\n };\n\n _proto3.baseUnit = function baseUnit() {\n return QUARTER_YEARS;\n };\n\n _proto3.rangeUnit = function rangeUnit() {\n return ChronoUnit.YEARS;\n };\n\n _proto3.range = function range() {\n return ValueRange.of(1, 4);\n };\n\n _proto3.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal);\n };\n\n _proto3.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return this.range();\n };\n\n _proto3.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear');\n }\n\n var moy = temporal.getLong(ChronoField.MONTH_OF_YEAR);\n return MathUtil.intDiv(moy + 2, 3);\n };\n\n _proto3.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3);\n };\n\n return QUARTER_OF_YEAR_FIELD;\n}(Field);\n\nvar WEEK_OF_WEEK_BASED_YEAR_FIELD = function (_Field3) {\n _inheritsLoose(WEEK_OF_WEEK_BASED_YEAR_FIELD, _Field3);\n\n function WEEK_OF_WEEK_BASED_YEAR_FIELD() {\n return _Field3.apply(this, arguments) || this;\n }\n\n var _proto4 = WEEK_OF_WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto4.toString = function toString() {\n return 'WeekOfWeekBasedYear';\n };\n\n _proto4.baseUnit = function baseUnit() {\n return ChronoUnit.WEEKS;\n };\n\n _proto4.rangeUnit = function rangeUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto4.range = function range() {\n return ValueRange.of(1, 52, 53);\n };\n\n _proto4.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto4.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeekRangeByLocalDate(LocalDate.from(temporal));\n };\n\n _proto4.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeek(LocalDate.from(temporal));\n };\n\n _proto4.adjustInto = function adjustInto(temporal, newValue) {\n this.range().checkValidValue(newValue, this);\n return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS);\n };\n\n _proto4.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var wbyLong = fieldValues.get(WEEK_BASED_YEAR);\n var dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK);\n\n if (wbyLong == null || dowLong == null) {\n return null;\n }\n\n var wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR);\n var wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var dow = dowLong;\n var weeks = 0;\n\n if (dow > 7) {\n weeks = MathUtil.intDiv(dow - 1, 7);\n dow = MathUtil.intMod(dow - 1, 7) + 1;\n } else if (dow < 1) {\n weeks = MathUtil.intDiv(dow, 7) - 1;\n dow = MathUtil.intMod(dow, 7) + 7;\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow);\n } else {\n var _dow2 = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var temp = LocalDate.of(wby, 1, 4);\n\n var range = Field._getWeekRangeByLocalDate(temp);\n\n range.checkValidValue(wowby, this);\n } else {\n this.range().checkValidValue(wowby, this);\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, _dow2);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(WEEK_BASED_YEAR);\n fieldValues.remove(ChronoField.DAY_OF_WEEK);\n return date;\n };\n\n _proto4.displayName = function displayName() {\n return 'Week';\n };\n\n return WEEK_OF_WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar WEEK_BASED_YEAR_FIELD = function (_Field4) {\n _inheritsLoose(WEEK_BASED_YEAR_FIELD, _Field4);\n\n function WEEK_BASED_YEAR_FIELD() {\n return _Field4.apply(this, arguments) || this;\n }\n\n var _proto5 = WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto5.toString = function toString() {\n return 'WeekBasedYear';\n };\n\n _proto5.baseUnit = function baseUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto5.rangeUnit = function rangeUnit() {\n return ChronoUnit.FOREVER;\n };\n\n _proto5.range = function range() {\n return ChronoField.YEAR.range();\n };\n\n _proto5.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto5.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return ChronoField.YEAR.range();\n };\n\n _proto5.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n return Field._getWeekBasedYear(LocalDate.from(temporal));\n };\n\n _proto5.adjustInto = function adjustInto(temporal, newValue) {\n if (this.isSupportedBy(temporal) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n var newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR);\n var date = LocalDate.from(temporal);\n var dow = date.get(ChronoField.DAY_OF_WEEK);\n\n var week = Field._getWeek(date);\n\n if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) {\n week = 52;\n }\n\n var resolved = LocalDate.of(newWby, 1, 4);\n var days = dow - resolved.get(ChronoField.DAY_OF_WEEK) + (week - 1) * 7;\n resolved = resolved.plusDays(days);\n return temporal.with(resolved);\n };\n\n return WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar Unit = function (_TemporalUnit) {\n _inheritsLoose(Unit, _TemporalUnit);\n\n function Unit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto6 = Unit.prototype;\n\n _proto6.duration = function duration() {\n return this._duration;\n };\n\n _proto6.isDurationEstimated = function isDurationEstimated() {\n return true;\n };\n\n _proto6.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto6.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto6.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY);\n };\n\n _proto6.addTo = function addTo(temporal, periodToAdd) {\n switch (this) {\n case WEEK_BASED_YEARS:\n {\n var added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd);\n return temporal.with(WEEK_BASED_YEAR, added);\n }\n\n case QUARTER_YEARS:\n return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.between = function between(temporal1, temporal2) {\n switch (this) {\n case WEEK_BASED_YEARS:\n return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR));\n\n case QUARTER_YEARS:\n return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.toString = function toString() {\n return name;\n };\n\n return Unit;\n}(TemporalUnit);\n\nvar DAY_OF_QUARTER = null;\nvar QUARTER_OF_YEAR = null;\nvar WEEK_OF_WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEARS = null;\nvar QUARTER_YEARS = null;\nfunction _init$8() {\n DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD();\n QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD();\n WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952));\n QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4));\n IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER;\n IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR;\n IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS;\n IsoFields.QUARTER_YEARS = QUARTER_YEARS;\n\n LocalDate.prototype.isoWeekOfWeekyear = function () {\n return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);\n };\n\n LocalDate.prototype.isoWeekyear = function () {\n return this.get(IsoFields.WEEK_BASED_YEAR);\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DecimalStyle = function () {\n function DecimalStyle(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) {\n this._zeroDigit = zeroChar;\n this._zeroDigitCharCode = zeroChar.charCodeAt(0);\n this._positiveSign = positiveSignChar;\n this._negativeSign = negativeSignChar;\n this._decimalSeparator = decimalPointChar;\n }\n\n var _proto = DecimalStyle.prototype;\n\n _proto.positiveSign = function positiveSign() {\n return this._positiveSign;\n };\n\n _proto.withPositiveSign = function withPositiveSign(positiveSign) {\n if (positiveSign === this._positiveSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.negativeSign = function negativeSign() {\n return this._negativeSign;\n };\n\n _proto.withNegativeSign = function withNegativeSign(negativeSign) {\n if (negativeSign === this._negativeSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator);\n };\n\n _proto.zeroDigit = function zeroDigit() {\n return this._zeroDigit;\n };\n\n _proto.withZeroDigit = function withZeroDigit(zeroDigit) {\n if (zeroDigit === this._zeroDigit) {\n return this;\n }\n\n return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.decimalSeparator = function decimalSeparator() {\n return this._decimalSeparator;\n };\n\n _proto.withDecimalSeparator = function withDecimalSeparator(decimalSeparator) {\n if (decimalSeparator === this._decimalSeparator) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator);\n };\n\n _proto.convertToDigit = function convertToDigit(char) {\n var val = char.charCodeAt(0) - this._zeroDigitCharCode;\n\n return val >= 0 && val <= 9 ? val : -1;\n };\n\n _proto.convertNumberToI18N = function convertNumberToI18N(numericText) {\n if (this._zeroDigit === '0') {\n return numericText;\n }\n\n var diff = this._zeroDigitCharCode - '0'.charCodeAt(0);\n var convertedText = '';\n\n for (var i = 0; i < numericText.length; i++) {\n convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff);\n }\n\n return convertedText;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof DecimalStyle) {\n return this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator;\n };\n\n _proto.toString = function toString() {\n return 'DecimalStyle[' + this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator + ']';\n };\n\n DecimalStyle.of = function of() {\n throw new Error('not yet supported');\n };\n\n DecimalStyle.availableLocales = function availableLocales() {\n throw new Error('not yet supported');\n };\n\n return DecimalStyle;\n}();\nDecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.');\n\nvar SignStyle = function (_Enum) {\n _inheritsLoose(SignStyle, _Enum);\n\n function SignStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SignStyle.prototype;\n\n _proto.parse = function parse(positive, strict, fixedWidth) {\n switch (this) {\n case SignStyle.NORMAL:\n return !positive || !strict;\n\n case SignStyle.ALWAYS:\n case SignStyle.EXCEEDS_PAD:\n return true;\n\n default:\n return !strict && !fixedWidth;\n }\n };\n\n return SignStyle;\n}(Enum);\nSignStyle.NORMAL = new SignStyle('NORMAL');\nSignStyle.NEVER = new SignStyle('NEVER');\nSignStyle.ALWAYS = new SignStyle('ALWAYS');\nSignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD');\nSignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE');\n\nvar TextStyle = function (_Enum) {\n _inheritsLoose(TextStyle, _Enum);\n\n function TextStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TextStyle.prototype;\n\n _proto.isStandalone = function isStandalone() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n case TextStyle.SHORT_STANDALONE:\n case TextStyle.NARROW_STANDALONE:\n return true;\n\n default:\n return false;\n }\n };\n\n _proto.asStandalone = function asStandalone() {\n switch (this) {\n case TextStyle.FULL:\n return TextStyle.FULL_STANDALONE;\n\n case TextStyle.SHORT:\n return TextStyle.SHORT_STANDALONE;\n\n case TextStyle.NARROW:\n return TextStyle.NARROW_STANDALONE;\n\n default:\n return this;\n }\n };\n\n _proto.asNormal = function asNormal() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n return TextStyle.FULL;\n\n case TextStyle.SHORT_STANDALONE:\n return TextStyle.SHORT;\n\n case TextStyle.NARROW_STANDALONE:\n return TextStyle.NARROW;\n\n default:\n return this;\n }\n };\n\n return TextStyle;\n}(Enum);\nTextStyle.FULL = new TextStyle('FULL');\nTextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE');\nTextStyle.SHORT = new TextStyle('SHORT');\nTextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE');\nTextStyle.NARROW = new TextStyle('NARROW');\nTextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CharLiteralPrinterParser = function () {\n function CharLiteralPrinterParser(literal) {\n if (literal.length > 1) {\n throw new IllegalArgumentException('invalid literal, too long: \"' + literal + '\"');\n }\n\n this._literal = literal;\n }\n\n var _proto = CharLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n var ch = text.charAt(position);\n\n if (context.charEquals(this._literal, ch) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n if (this._literal === '\\'') {\n return \"''\";\n }\n\n return \"'\" + this._literal + \"'\";\n };\n\n return CharLiteralPrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CompositePrinterParser = function () {\n function CompositePrinterParser(printerParsers, optional) {\n this._printerParsers = printerParsers;\n this._optional = optional;\n }\n\n var _proto = CompositePrinterParser.prototype;\n\n _proto.withOptional = function withOptional(optional) {\n if (optional === this._optional) {\n return this;\n }\n\n return new CompositePrinterParser(this._printerParsers, optional);\n };\n\n _proto.print = function print(context, buf) {\n var length = buf.length();\n\n if (this._optional) {\n context.startOptional();\n }\n\n try {\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n\n if (pp.print(context, buf) === false) {\n buf.setLength(length);\n return true;\n }\n }\n } finally {\n if (this._optional) {\n context.endOptional();\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n if (this._optional) {\n context.startOptional();\n var pos = position;\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n pos = pp.parse(context, text, pos);\n\n if (pos < 0) {\n context.endOptional(false);\n return position;\n }\n }\n\n context.endOptional(true);\n return pos;\n } else {\n for (var _i = 0; _i < this._printerParsers.length; _i++) {\n var _pp = this._printerParsers[_i];\n position = _pp.parse(context, text, position);\n\n if (position < 0) {\n break;\n }\n }\n\n return position;\n }\n };\n\n _proto.toString = function toString() {\n var buf = '';\n\n if (this._printerParsers != null) {\n buf += this._optional ? '[' : '(';\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n buf += pp.toString();\n }\n\n buf += this._optional ? ']' : ')';\n }\n\n return buf;\n };\n\n return CompositePrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar FractionPrinterParser = function () {\n function FractionPrinterParser(field, minWidth, maxWidth, decimalPoint) {\n requireNonNull(field, 'field');\n\n if (field.range().isFixed() === false) {\n throw new IllegalArgumentException('Field must have a fixed set of values: ' + field);\n }\n\n if (minWidth < 0 || minWidth > 9) {\n throw new IllegalArgumentException('Minimum width must be from 0 to 9 inclusive but was ' + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > 9) {\n throw new IllegalArgumentException('Maximum width must be from 1 to 9 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException('Maximum width must exceed or equal the minimum width but ' + maxWidth + ' < ' + minWidth);\n }\n\n this.field = field;\n this.minWidth = minWidth;\n this.maxWidth = maxWidth;\n this.decimalPoint = decimalPoint;\n }\n\n var _proto = FractionPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var value = context.getValue(this.field);\n\n if (value === null) {\n return false;\n }\n\n var symbols = context.symbols();\n\n if (value === 0) {\n if (this.minWidth > 0) {\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n for (var i = 0; i < this.minWidth; i++) {\n buf.append(symbols.zeroDigit());\n }\n }\n } else {\n var fraction = this.convertToFraction(value, symbols.zeroDigit());\n var outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth);\n fraction = fraction.substr(0, outputScale);\n\n if (fraction * 1 > 0) {\n while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') {\n fraction = fraction.substr(0, fraction.length - 1);\n }\n }\n\n var str = fraction;\n str = symbols.convertNumberToI18N(str);\n\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n buf.append(str);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var effectiveMin = context.isStrict() ? this.minWidth : 0;\n var effectiveMax = context.isStrict() ? this.maxWidth : 9;\n var length = text.length;\n\n if (position === length) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n if (this.decimalPoint) {\n if (text[position] !== context.symbols().decimalSeparator()) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n position++;\n }\n\n var minEndPos = position + effectiveMin;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var maxEndPos = Math.min(position + effectiveMax, length);\n var total = 0;\n var pos = position;\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n if (pos < minEndPos) {\n return ~position;\n }\n\n pos--;\n break;\n }\n\n total = total * 10 + digit;\n }\n\n var moveLeft = pos - position;\n var scale = Math.pow(10, moveLeft);\n var value = this.convertFromFraction(total, scale);\n return context.setParsedField(this.field, value, position, pos);\n };\n\n _proto.convertToFraction = function convertToFraction(value, zeroDigit) {\n var range = this.field.range();\n range.checkValidValue(value, this.field);\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = value - _min;\n\n var _scaled = MathUtil.intDiv(_value * 1000000000, _range);\n\n var fraction = '' + _scaled;\n\n while (fraction.length < 9) {\n fraction = zeroDigit + fraction;\n }\n\n return fraction;\n };\n\n _proto.convertFromFraction = function convertFromFraction(total, scale) {\n var range = this.field.range();\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = MathUtil.intDiv(total * _range, scale);\n\n return _value;\n };\n\n _proto.toString = function toString() {\n var decimal = this.decimalPoint ? ',DecimalPoint' : '';\n return 'Fraction(' + this.field + ',' + this.minWidth + ',' + this.maxWidth + decimal + ')';\n };\n\n return FractionPrinterParser;\n}();\n\nvar MAX_WIDTH = 15;\nvar EXCEED_POINTS = [0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000];\nvar NumberPrinterParser = function () {\n function NumberPrinterParser(field, minWidth, maxWidth, signStyle, subsequentWidth) {\n if (subsequentWidth === void 0) {\n subsequentWidth = 0;\n }\n\n this._field = field;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._signStyle = signStyle;\n this._subsequentWidth = subsequentWidth;\n }\n\n var _proto = NumberPrinterParser.prototype;\n\n _proto.field = function field() {\n return this._field;\n };\n\n _proto.minWidth = function minWidth() {\n return this._minWidth;\n };\n\n _proto.maxWidth = function maxWidth() {\n return this._maxWidth;\n };\n\n _proto.signStyle = function signStyle() {\n return this._signStyle;\n };\n\n _proto.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1);\n };\n\n _proto.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth);\n };\n\n _proto._isFixedWidth = function _isFixedWidth() {\n return this._subsequentWidth === -1 || this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE;\n };\n\n _proto.print = function print(context, buf) {\n var contextValue = context.getValue(this._field);\n\n if (contextValue == null) {\n return false;\n }\n\n var value = this._getValue(context, contextValue);\n\n var symbols = context.symbols();\n var str = '' + Math.abs(value);\n\n if (str.length > this._maxWidth) {\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' exceeds the maximum print width of ' + this._maxWidth);\n }\n\n str = symbols.convertNumberToI18N(str);\n\n if (value >= 0) {\n switch (this._signStyle) {\n case SignStyle.EXCEEDS_PAD:\n if (this._minWidth < MAX_WIDTH && value >= EXCEED_POINTS[this._minWidth]) {\n buf.append(symbols.positiveSign());\n }\n\n break;\n\n case SignStyle.ALWAYS:\n buf.append(symbols.positiveSign());\n break;\n }\n } else {\n switch (this._signStyle) {\n case SignStyle.NORMAL:\n case SignStyle.EXCEEDS_PAD:\n case SignStyle.ALWAYS:\n buf.append(symbols.negativeSign());\n break;\n\n case SignStyle.NOT_NEGATIVE:\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' cannot be negative according to the SignStyle');\n }\n }\n\n for (var i = 0; i < this._minWidth - str.length; i++) {\n buf.append(symbols.zeroDigit());\n }\n\n buf.append(str);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n assert(position >= 0 && position < length);\n var sign = text.charAt(position);\n var negative = false;\n var positive = false;\n\n if (sign === context.symbols().positiveSign()) {\n if (this._signStyle.parse(true, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n positive = true;\n position++;\n } else if (sign === context.symbols().negativeSign()) {\n if (this._signStyle.parse(false, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n negative = true;\n position++;\n } else {\n if (this._signStyle === SignStyle.ALWAYS && context.isStrict()) {\n return ~position;\n }\n }\n\n var effMinWidth = context.isStrict() || this._isFixedWidth() ? this._minWidth : 1;\n var minEndPos = position + effMinWidth;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0);\n var total = 0;\n var pos = position;\n\n for (var pass = 0; pass < 2; pass++) {\n var maxEndPos = Math.min(pos + effMaxWidth, length);\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n pos--;\n\n if (pos < minEndPos) {\n return ~position;\n }\n\n break;\n }\n\n if (pos - position > MAX_WIDTH) {\n throw new ArithmeticException('number text exceeds length');\n } else {\n total = total * 10 + digit;\n }\n }\n\n if (this._subsequentWidth > 0 && pass === 0) {\n var parseLen = pos - position;\n effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth);\n pos = position;\n total = 0;\n } else {\n break;\n }\n }\n\n if (negative) {\n if (total === 0 && context.isStrict()) {\n return ~(position - 1);\n }\n\n if (total !== 0) {\n total = -total;\n }\n } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) {\n var _parseLen = pos - position;\n\n if (positive) {\n if (_parseLen <= this._minWidth) {\n return ~(position - 1);\n }\n } else {\n if (_parseLen > this._minWidth) {\n return ~position;\n }\n }\n }\n\n return this._setValue(context, total, position, pos);\n };\n\n _proto._getValue = function _getValue(context, value) {\n return value;\n };\n\n _proto._setValue = function _setValue(context, value, errorPos, successPos) {\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto.toString = function toString() {\n if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH && this._signStyle === SignStyle.NORMAL) {\n return 'Value(' + this._field + ')';\n }\n\n if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) {\n return 'Value(' + this._field + ',' + this._minWidth + ')';\n }\n\n return 'Value(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + this._signStyle + ')';\n };\n\n return NumberPrinterParser;\n}();\nvar ReducedPrinterParser = function (_NumberPrinterParser) {\n _inheritsLoose(ReducedPrinterParser, _NumberPrinterParser);\n\n function ReducedPrinterParser(field, width, maxWidth, baseValue, baseDate) {\n var _this;\n\n _this = _NumberPrinterParser.call(this, field, width, maxWidth, SignStyle.NOT_NEGATIVE) || this;\n\n if (width < 1 || width > 10) {\n throw new IllegalArgumentException('The width must be from 1 to 10 inclusive but was ' + width);\n }\n\n if (maxWidth < 1 || maxWidth > 10) {\n throw new IllegalArgumentException('The maxWidth must be from 1 to 10 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < width) {\n throw new IllegalArgumentException('The maxWidth must be greater than the width');\n }\n\n if (baseDate === null) {\n if (field.range().isValidValue(baseValue) === false) {\n throw new IllegalArgumentException('The base value must be within the range of the field');\n }\n\n if (baseValue + EXCEED_POINTS[width] > MathUtil.MAX_SAFE_INTEGER) {\n throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int');\n }\n }\n\n _this._baseValue = baseValue;\n _this._baseDate = baseDate;\n return _this;\n }\n\n var _proto2 = ReducedPrinterParser.prototype;\n\n _proto2._getValue = function _getValue(context, value) {\n var absValue = Math.abs(value);\n var baseValue = this._baseValue;\n\n if (this._baseDate !== null) {\n context.temporal();\n var chrono = IsoChronology.INSTANCE;\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) {\n return absValue % EXCEED_POINTS[this._minWidth];\n }\n\n return absValue % EXCEED_POINTS[this._maxWidth];\n };\n\n _proto2._setValue = function _setValue(context, value, errorPos, successPos) {\n var baseValue = this._baseValue;\n\n if (this._baseDate != null) {\n var chrono = context.getEffectiveChronology();\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n var parseLen = successPos - errorPos;\n\n if (parseLen === this._minWidth && value >= 0) {\n var range = EXCEED_POINTS[this._minWidth];\n var lastPart = baseValue % range;\n var basePart = baseValue - lastPart;\n\n if (baseValue > 0) {\n value = basePart + value;\n } else {\n value = basePart - value;\n }\n\n if (value < baseValue) {\n value += range;\n }\n }\n\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto2.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, -1);\n };\n\n _proto2.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, this._subsequentWidth + subsequentWidth);\n };\n\n _proto2.isFixedWidth = function isFixedWidth(context) {\n if (context.isStrict() === false) {\n return false;\n }\n\n return _NumberPrinterParser.prototype.isFixedWidth.call(this, context);\n };\n\n _proto2.toString = function toString() {\n return 'ReducedValue(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + (this._baseDate != null ? this._baseDate : this._baseValue) + ')';\n };\n\n return ReducedPrinterParser;\n}(NumberPrinterParser);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PATTERNS = ['+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS'];\nvar OffsetIdPrinterParser = function () {\n function OffsetIdPrinterParser(noOffsetText, pattern) {\n requireNonNull(noOffsetText, 'noOffsetText');\n requireNonNull(pattern, 'pattern');\n this.noOffsetText = noOffsetText;\n this.type = this._checkPattern(pattern);\n }\n\n var _proto = OffsetIdPrinterParser.prototype;\n\n _proto._checkPattern = function _checkPattern(pattern) {\n for (var i = 0; i < PATTERNS.length; i++) {\n if (PATTERNS[i] === pattern) {\n return i;\n }\n }\n\n throw new IllegalArgumentException('Invalid zone offset pattern: ' + pattern);\n };\n\n _proto.print = function print(context, buf) {\n var offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs == null) {\n return false;\n }\n\n var totalSecs = MathUtil.safeToInt(offsetSecs);\n\n if (totalSecs === 0) {\n buf.append(this.noOffsetText);\n } else {\n var absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100));\n var absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60));\n var absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60));\n var bufPos = buf.length();\n var output = absHours;\n buf.append(totalSecs < 0 ? '-' : '+').appendChar(MathUtil.intDiv(absHours, 10) + '0').appendChar(MathUtil.intMod(absHours, 10) + '0');\n\n if (this.type >= 3 || this.type >= 1 && absMinutes > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absMinutes, 10) + '0').appendChar(absMinutes % 10 + '0');\n output += absMinutes;\n\n if (this.type >= 7 || this.type >= 5 && absSeconds > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absSeconds, 10) + '0').appendChar(absSeconds % 10 + '0');\n output += absSeconds;\n }\n }\n\n if (output === 0) {\n buf.setLength(bufPos);\n buf.append(this.noOffsetText);\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n var noOffsetLen = this.noOffsetText.length;\n\n if (noOffsetLen === 0) {\n if (position === length) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position);\n }\n } else {\n if (position === length) {\n return ~position;\n }\n\n if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n }\n\n var sign = text[position];\n\n if (sign === '+' || sign === '-') {\n var negative = sign === '-' ? -1 : 1;\n var array = [0, 0, 0, 0];\n array[0] = position + 1;\n\n if ((this._parseNumber(array, 1, text, true) || this._parseNumber(array, 2, text, this.type >= 3) || this._parseNumber(array, 3, text, false)) === false) {\n var offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3]));\n return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]);\n }\n }\n\n if (noOffsetLen === 0) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n\n return ~position;\n };\n\n _proto._parseNumber = function _parseNumber(array, arrayIndex, parseText, required) {\n if ((this.type + 3) / 2 < arrayIndex) {\n return false;\n }\n\n var pos = array[0];\n\n if (this.type % 2 === 0 && arrayIndex > 1) {\n if (pos + 1 > parseText.length || parseText[pos] !== ':') {\n return required;\n }\n\n pos++;\n }\n\n if (pos + 2 > parseText.length) {\n return required;\n }\n\n var ch1 = parseText[pos++];\n var ch2 = parseText[pos++];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n return required;\n }\n\n var value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n\n if (value < 0 || value > 59) {\n return required;\n }\n\n array[arrayIndex] = value;\n array[0] = pos;\n return false;\n };\n\n _proto.toString = function toString() {\n var converted = this.noOffsetText.replace('\\'', '\\'\\'');\n return 'Offset(' + PATTERNS[this.type] + ',\\'' + converted + '\\')';\n };\n\n return OffsetIdPrinterParser;\n}();\nOffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss');\nOffsetIdPrinterParser.PATTERNS = PATTERNS;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PadPrinterParserDecorator = function () {\n function PadPrinterParserDecorator(printerParser, padWidth, padChar) {\n this._printerParser = printerParser;\n this._padWidth = padWidth;\n this._padChar = padChar;\n }\n\n var _proto = PadPrinterParserDecorator.prototype;\n\n _proto.print = function print(context, buf) {\n var preLen = buf.length();\n\n if (this._printerParser.print(context, buf) === false) {\n return false;\n }\n\n var len = buf.length() - preLen;\n\n if (len > this._padWidth) {\n throw new DateTimeException(\"Cannot print as output of \" + len + \" characters exceeds pad width of \" + this._padWidth);\n }\n\n for (var i = 0; i < this._padWidth - len; i++) {\n buf.insert(preLen, this._padChar);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var strict = context.isStrict();\n var caseSensitive = context.isCaseSensitive();\n assert(!(position > text.length));\n assert(position >= 0);\n\n if (position === text.length) {\n return ~position;\n }\n\n var endPos = position + this._padWidth;\n\n if (endPos > text.length) {\n if (strict) {\n return ~position;\n }\n\n endPos = text.length;\n }\n\n var pos = position;\n\n while (pos < endPos && (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) {\n pos++;\n }\n\n text = text.substring(0, endPos);\n\n var resultPos = this._printerParser.parse(context, text, pos);\n\n if (resultPos !== endPos && strict) {\n return ~(position + pos);\n }\n\n return resultPos;\n };\n\n _proto.toString = function toString() {\n return \"Pad(\" + this._printerParser + \",\" + this._padWidth + (this._padChar === ' ' ? ')' : ',\\'' + this._padChar + '\\')');\n };\n\n return PadPrinterParserDecorator;\n}();\n\nvar SettingsParser = function (_Enum) {\n _inheritsLoose(SettingsParser, _Enum);\n\n function SettingsParser() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SettingsParser.prototype;\n\n _proto.print = function print() {\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n switch (this) {\n case SettingsParser.SENSITIVE:\n context.setCaseSensitive(true);\n break;\n\n case SettingsParser.INSENSITIVE:\n context.setCaseSensitive(false);\n break;\n\n case SettingsParser.STRICT:\n context.setStrict(true);\n break;\n\n case SettingsParser.LENIENT:\n context.setStrict(false);\n break;\n }\n\n return position;\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case SettingsParser.SENSITIVE:\n return 'ParseCaseSensitive(true)';\n\n case SettingsParser.INSENSITIVE:\n return 'ParseCaseSensitive(false)';\n\n case SettingsParser.STRICT:\n return 'ParseStrict(true)';\n\n case SettingsParser.LENIENT:\n return 'ParseStrict(false)';\n }\n };\n\n return SettingsParser;\n}(Enum);\nSettingsParser.SENSITIVE = new SettingsParser('SENSITIVE');\nSettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE');\nSettingsParser.STRICT = new SettingsParser('STRICT');\nSettingsParser.LENIENT = new SettingsParser('LENIENT');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringLiteralPrinterParser = function () {\n function StringLiteralPrinterParser(literal) {\n this._literal = literal;\n }\n\n var _proto = StringLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n assert(!(position > length || position < 0));\n\n if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n var converted = this._literal.replace(\"'\", \"''\");\n\n return '\\'' + converted + '\\'';\n };\n\n return StringLiteralPrinterParser;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneRulesProvider = function () {\n function ZoneRulesProvider() {}\n\n ZoneRulesProvider.getRules = function getRules(zoneId) {\n throw new DateTimeException('unsupported ZoneId:' + zoneId);\n };\n\n ZoneRulesProvider.getAvailableZoneIds = function getAvailableZoneIds() {\n return [];\n };\n\n return ZoneRulesProvider;\n}();\n\nvar ZoneRegion = function (_ZoneId) {\n _inheritsLoose(ZoneRegion, _ZoneId);\n\n ZoneRegion.ofId = function ofId(zoneId) {\n var rules = ZoneRulesProvider.getRules(zoneId);\n return new ZoneRegion(zoneId, rules);\n };\n\n function ZoneRegion(id, rules) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._id = id;\n _this._rules = rules;\n return _this;\n }\n\n var _proto = ZoneRegion.prototype;\n\n _proto.id = function id() {\n return this._id;\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n return ZoneRegion;\n}(ZoneId);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdPrinterParser = function () {\n function ZoneIdPrinterParser(query, description) {\n this.query = query;\n this.description = description;\n }\n\n var _proto = ZoneIdPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var zone = context.getValueQuery(this.query);\n\n if (zone == null) {\n return false;\n }\n\n buf.append(zone.id());\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position > length) {\n return ~position;\n }\n\n if (position === length) {\n return ~position;\n }\n\n var nextChar = text.charAt(position);\n\n if (nextChar === '+' || nextChar === '-') {\n var newContext = context.copy();\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n return endPos;\n }\n\n var offset = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var zone = ZoneOffset.ofTotalSeconds(offset);\n context.setParsedZone(zone);\n return endPos;\n } else if (length >= position + 2) {\n var nextNextChar = text.charAt(position + 1);\n\n if (context.charEquals(nextChar, 'U') && context.charEquals(nextNextChar, 'T')) {\n if (length >= position + 3 && context.charEquals(text.charAt(position + 2), 'C')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n\n return this._parsePrefixedOffset(context, text, position, position + 2);\n } else if (context.charEquals(nextChar, 'G') && length >= position + 3 && context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n }\n\n if (text.substr(position, 6) === 'SYSTEM') {\n context.setParsedZone(ZoneId.systemDefault());\n return position + 6;\n }\n\n if (context.charEquals(nextChar, 'Z')) {\n context.setParsedZone(ZoneOffset.UTC);\n return position + 1;\n }\n\n var availableZoneIds = ZoneRulesProvider.getAvailableZoneIds();\n\n if (zoneIdTree.size !== availableZoneIds.length) {\n zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds);\n }\n\n var maxParseLength = length - position;\n var treeMap = zoneIdTree.treeMap;\n var parsedZoneId = null;\n var parseLength = 0;\n\n while (treeMap != null) {\n var parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength));\n treeMap = treeMap.get(parsedSubZoneId);\n\n if (treeMap != null && treeMap.isLeaf) {\n parsedZoneId = parsedSubZoneId;\n parseLength = treeMap.length;\n }\n }\n\n if (parsedZoneId != null) {\n context.setParsedZone(ZoneRegion.ofId(parsedZoneId));\n return position + parseLength;\n }\n\n return ~position;\n };\n\n _proto._parsePrefixedOffset = function _parsePrefixedOffset(context, text, prefixPos, position) {\n var prefix = text.substring(prefixPos, position).toUpperCase();\n var newContext = context.copy();\n\n if (position < text.length && context.charEquals(text.charAt(position), 'Z')) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n context.setParsedZone(ZoneId.ofOffset(prefix, offset));\n return endPos;\n };\n\n _proto.toString = function toString() {\n return this.description;\n };\n\n return ZoneIdPrinterParser;\n}();\n\nvar ZoneIdTree = function () {\n ZoneIdTree.createTreeMap = function createTreeMap(availableZoneIds) {\n var sortedZoneIds = availableZoneIds.sort(function (a, b) {\n return a.length - b.length;\n });\n var treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false);\n\n for (var i = 0; i < sortedZoneIds.length; i++) {\n treeMap.add(sortedZoneIds[i]);\n }\n\n return new ZoneIdTree(sortedZoneIds.length, treeMap);\n };\n\n function ZoneIdTree(size, treeMap) {\n this.size = size;\n this.treeMap = treeMap;\n }\n\n return ZoneIdTree;\n}();\n\nvar ZoneIdTreeMap = function () {\n function ZoneIdTreeMap(length, isLeaf) {\n if (length === void 0) {\n length = 0;\n }\n\n if (isLeaf === void 0) {\n isLeaf = false;\n }\n\n this.length = length;\n this.isLeaf = isLeaf;\n this._treeMap = {};\n }\n\n var _proto2 = ZoneIdTreeMap.prototype;\n\n _proto2.add = function add(zoneId) {\n var idLength = zoneId.length;\n\n if (idLength === this.length) {\n this._treeMap[zoneId] = new ZoneIdTreeMap(idLength, true);\n } else if (idLength > this.length) {\n var subZoneId = zoneId.substr(0, this.length);\n var subTreeMap = this._treeMap[subZoneId];\n\n if (subTreeMap == null) {\n subTreeMap = new ZoneIdTreeMap(idLength, false);\n this._treeMap[subZoneId] = subTreeMap;\n }\n\n subTreeMap.add(zoneId);\n }\n };\n\n _proto2.get = function get(zoneId) {\n return this._treeMap[zoneId];\n };\n\n return ZoneIdTreeMap;\n}();\n\nvar zoneIdTree = new ZoneIdTree([]);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_WIDTH$1 = 15;\nvar DateTimeFormatterBuilder = function () {\n function DateTimeFormatterBuilder() {\n this._active = this;\n this._parent = null;\n this._printerParsers = [];\n this._optional = false;\n this._padNextWidth = 0;\n this._padNextChar = null;\n this._valueParserIndex = -1;\n }\n\n DateTimeFormatterBuilder._of = function _of(parent, optional) {\n requireNonNull(parent, 'parent');\n requireNonNull(optional, 'optional');\n var dtFormatterBuilder = new DateTimeFormatterBuilder();\n dtFormatterBuilder._parent = parent;\n dtFormatterBuilder._optional = optional;\n return dtFormatterBuilder;\n };\n\n var _proto = DateTimeFormatterBuilder.prototype;\n\n _proto.parseCaseSensitive = function parseCaseSensitive() {\n this._appendInternalPrinterParser(SettingsParser.SENSITIVE);\n\n return this;\n };\n\n _proto.parseCaseInsensitive = function parseCaseInsensitive() {\n this._appendInternalPrinterParser(SettingsParser.INSENSITIVE);\n\n return this;\n };\n\n _proto.parseStrict = function parseStrict() {\n this._appendInternalPrinterParser(SettingsParser.STRICT);\n\n return this;\n };\n\n _proto.parseLenient = function parseLenient() {\n this._appendInternalPrinterParser(SettingsParser.LENIENT);\n\n return this;\n };\n\n _proto.appendValue = function appendValue() {\n if (arguments.length === 1) {\n return this._appendValue1.apply(this, arguments);\n } else if (arguments.length === 2) {\n return this._appendValue2.apply(this, arguments);\n } else {\n return this._appendValue4.apply(this, arguments);\n }\n };\n\n _proto._appendValue1 = function _appendValue1(field) {\n requireNonNull(field);\n\n this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH$1, SignStyle.NORMAL));\n\n return this;\n };\n\n _proto._appendValue2 = function _appendValue2(field, width) {\n requireNonNull(field);\n\n if (width < 1 || width > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + width);\n }\n\n var pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValue4 = function _appendValue4(field, minWidth, maxWidth, signStyle) {\n requireNonNull(field);\n requireNonNull(signStyle);\n\n if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) {\n return this._appendValue2(field, maxWidth);\n }\n\n if (minWidth < 1 || minWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(\"The maximum width must exceed or equal the minimum width but \" + maxWidth + \" < \" + minWidth);\n }\n\n var pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto.appendValueReduced = function appendValueReduced() {\n if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) {\n return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments);\n } else {\n return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments);\n }\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseValue = function _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) {\n requireNonNull(field, 'field');\n var pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseDate = function _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) {\n requireNonNull(field, 'field');\n requireNonNull(baseDate, 'baseDate');\n requireInstance(baseDate, ChronoLocalDate, 'baseDate');\n var pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValuePrinterParser = function _appendValuePrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._valueParserIndex >= 0 && this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) {\n var activeValueParser = this._active._valueParserIndex;\n var basePP = this._active._printerParsers[activeValueParser];\n\n if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) {\n basePP = basePP.withSubsequentWidth(pp.maxWidth());\n\n this._appendInternal(pp.withFixedWidth());\n\n this._active._valueParserIndex = activeValueParser;\n } else {\n basePP = basePP.withFixedWidth();\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n this._active._printerParsers[activeValueParser] = basePP;\n } else {\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n return this;\n };\n\n _proto.appendFraction = function appendFraction(field, minWidth, maxWidth, decimalPoint) {\n this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint));\n\n return this;\n };\n\n _proto.appendInstant = function appendInstant(fractionalDigits) {\n if (fractionalDigits === void 0) {\n fractionalDigits = -2;\n }\n\n if (fractionalDigits < -2 || fractionalDigits > 9) {\n throw new IllegalArgumentException('Invalid fractional digits: ' + fractionalDigits);\n }\n\n this._appendInternal(new InstantPrinterParser(fractionalDigits));\n\n return this;\n };\n\n _proto.appendOffsetId = function appendOffsetId() {\n this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID);\n\n return this;\n };\n\n _proto.appendOffset = function appendOffset(pattern, noOffsetText) {\n this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern));\n\n return this;\n };\n\n _proto.appendZoneId = function appendZoneId() {\n this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()'));\n\n return this;\n };\n\n _proto.appendPattern = function appendPattern(pattern) {\n requireNonNull(pattern, 'pattern');\n\n this._parsePattern(pattern);\n\n return this;\n };\n\n _proto.appendZoneText = function appendZoneText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendText = function appendText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendLocalizedOffset = function appendLocalizedOffset() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendWeekField = function appendWeekField() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto._parsePattern = function _parsePattern(pattern) {\n var FIELD_MAP = {\n 'G': ChronoField.ERA,\n 'y': ChronoField.YEAR_OF_ERA,\n 'u': ChronoField.YEAR,\n 'Q': IsoFields.QUARTER_OF_YEAR,\n 'q': IsoFields.QUARTER_OF_YEAR,\n 'M': ChronoField.MONTH_OF_YEAR,\n 'L': ChronoField.MONTH_OF_YEAR,\n 'D': ChronoField.DAY_OF_YEAR,\n 'd': ChronoField.DAY_OF_MONTH,\n 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,\n 'E': ChronoField.DAY_OF_WEEK,\n 'c': ChronoField.DAY_OF_WEEK,\n 'e': ChronoField.DAY_OF_WEEK,\n 'a': ChronoField.AMPM_OF_DAY,\n 'H': ChronoField.HOUR_OF_DAY,\n 'k': ChronoField.CLOCK_HOUR_OF_DAY,\n 'K': ChronoField.HOUR_OF_AMPM,\n 'h': ChronoField.CLOCK_HOUR_OF_AMPM,\n 'm': ChronoField.MINUTE_OF_HOUR,\n 's': ChronoField.SECOND_OF_MINUTE,\n 'S': ChronoField.NANO_OF_SECOND,\n 'A': ChronoField.MILLI_OF_DAY,\n 'n': ChronoField.NANO_OF_SECOND,\n 'N': ChronoField.NANO_OF_DAY\n };\n\n for (var pos = 0; pos < pattern.length; pos++) {\n var cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n var start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n var count = pos - start;\n\n if (cur === 'p') {\n var pad = 0;\n\n if (pos < pattern.length) {\n cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n pad = count;\n start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n count = pos - start;\n }\n }\n\n if (pad === 0) {\n throw new IllegalArgumentException('Pad letter \\'p\\' must be followed by valid pad pattern: ' + pattern);\n }\n\n this.padNext(pad);\n }\n\n var field = FIELD_MAP[cur];\n\n if (field != null) {\n this._parseField(cur, count, field);\n } else if (cur === 'z') {\n if (count > 4) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n } else if (count === 4) {\n this.appendZoneText(TextStyle.FULL);\n } else {\n this.appendZoneText(TextStyle.SHORT);\n }\n } else if (cur === 'V') {\n if (count !== 2) {\n throw new IllegalArgumentException('Pattern letter count must be 2: ' + cur);\n }\n\n this.appendZoneId();\n } else if (cur === 'Z') {\n if (count < 4) {\n this.appendOffset('+HHMM', '+0000');\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else if (count === 5) {\n this.appendOffset('+HH:MM:ss', 'Z');\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n } else if (cur === 'O') {\n if (count === 1) {\n this.appendLocalizedOffset(TextStyle.SHORT);\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else {\n throw new IllegalArgumentException('Pattern letter count must be 1 or 4: ' + cur);\n }\n } else if (cur === 'X') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z');\n } else if (cur === 'x') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n var zero = count === 1 ? '+00' : count % 2 === 0 ? '+0000' : '+00:00';\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero);\n } else if (cur === 'W') {\n if (count > 1) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('W', count);\n } else if (cur === 'w') {\n if (count > 2) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('w', count);\n } else if (cur === 'Y') {\n this.appendWeekField('Y', count);\n } else {\n throw new IllegalArgumentException('Unknown pattern letter: ' + cur);\n }\n\n pos--;\n } else if (cur === '\\'') {\n var _start = pos++;\n\n for (; pos < pattern.length; pos++) {\n if (pattern.charAt(pos) === '\\'') {\n if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\\'') {\n pos++;\n } else {\n break;\n }\n }\n }\n\n if (pos >= pattern.length) {\n throw new IllegalArgumentException('Pattern ends with an incomplete string literal: ' + pattern);\n }\n\n var str = pattern.substring(_start + 1, pos);\n\n if (str.length === 0) {\n this.appendLiteral('\\'');\n } else {\n this.appendLiteral(str.replace('\\'\\'', '\\''));\n }\n } else if (cur === '[') {\n this.optionalStart();\n } else if (cur === ']') {\n if (this._active._parent === null) {\n throw new IllegalArgumentException('Pattern invalid as it contains ] without previous [');\n }\n\n this.optionalEnd();\n } else if (cur === '{' || cur === '}' || cur === '#') {\n throw new IllegalArgumentException('Pattern includes reserved character: \\'' + cur + '\\'');\n } else {\n this.appendLiteral(cur);\n }\n }\n };\n\n _proto._parseField = function _parseField(cur, count, field) {\n switch (cur) {\n case 'u':\n case 'y':\n if (count === 2) {\n this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE);\n } else if (count < 4) {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.NORMAL);\n } else {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.EXCEEDS_PAD);\n }\n\n break;\n\n case 'M':\n case 'Q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'L':\n case 'q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'e':\n switch (count) {\n case 1:\n case 2:\n this.appendWeekField('e', count);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'c':\n switch (count) {\n case 1:\n this.appendWeekField('c', count);\n break;\n\n case 2:\n throw new IllegalArgumentException('Invalid number of pattern letters: ' + cur);\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'a':\n if (count === 1) {\n this.appendText(field, TextStyle.SHORT);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'E':\n case 'G':\n switch (count) {\n case 1:\n case 2:\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'S':\n this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false);\n break;\n\n case 'F':\n if (count === 1) {\n this.appendValue(field);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'd':\n case 'h':\n case 'H':\n case 'k':\n case 'K':\n case 'm':\n case 's':\n if (count === 1) {\n this.appendValue(field);\n } else if (count === 2) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'D':\n if (count === 1) {\n this.appendValue(field);\n } else if (count <= 3) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n default:\n if (count === 1) {\n this.appendValue(field);\n } else {\n this.appendValue(field, count);\n }\n\n break;\n }\n };\n\n _proto.padNext = function padNext() {\n if (arguments.length === 1) {\n return this._padNext1.apply(this, arguments);\n } else {\n return this._padNext2.apply(this, arguments);\n }\n };\n\n _proto._padNext1 = function _padNext1(padWidth) {\n return this._padNext2(padWidth, ' ');\n };\n\n _proto._padNext2 = function _padNext2(padWidth, padChar) {\n if (padWidth < 1) {\n throw new IllegalArgumentException('The pad width must be at least one but was ' + padWidth);\n }\n\n this._active._padNextWidth = padWidth;\n this._active._padNextChar = padChar;\n this._active._valueParserIndex = -1;\n return this;\n };\n\n _proto.optionalStart = function optionalStart() {\n this._active._valueParserIndex = -1;\n this._active = DateTimeFormatterBuilder._of(this._active, true);\n return this;\n };\n\n _proto.optionalEnd = function optionalEnd() {\n if (this._active._parent == null) {\n throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()');\n }\n\n if (this._active._printerParsers.length > 0) {\n var cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional);\n this._active = this._active._parent;\n\n this._appendInternal(cpp);\n } else {\n this._active = this._active._parent;\n }\n\n return this;\n };\n\n _proto._appendInternal = function _appendInternal(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.appendLiteral = function appendLiteral(literal) {\n assert(literal != null);\n\n if (literal.length > 0) {\n if (literal.length === 1) {\n this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0)));\n } else {\n this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal));\n }\n }\n\n return this;\n };\n\n _proto._appendInternalPrinterParser = function _appendInternalPrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.append = function append(formatter) {\n requireNonNull(formatter, 'formatter');\n\n this._appendInternal(formatter._toPrinterParser(false));\n\n return this;\n };\n\n _proto.toFormatter = function toFormatter(resolverStyle) {\n if (resolverStyle === void 0) {\n resolverStyle = ResolverStyle.SMART;\n }\n\n while (this._active._parent != null) {\n this.optionalEnd();\n }\n\n var pp = new CompositePrinterParser(this._printerParsers, false);\n return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null);\n };\n\n return DateTimeFormatterBuilder;\n}();\nvar SECONDS_PER_10000_YEARS = 146097 * 25 * 86400;\nvar SECONDS_0000_TO_1970 = (146097 * 5 - (30 * 365 + 7)) * 86400;\n\nvar InstantPrinterParser = function () {\n function InstantPrinterParser(fractionalDigits) {\n this.fractionalDigits = fractionalDigits;\n }\n\n var _proto2 = InstantPrinterParser.prototype;\n\n _proto2.print = function print(context, buf) {\n var inSecs = context.getValue(ChronoField.INSTANT_SECONDS);\n var inNanos = 0;\n\n if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) {\n inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND);\n }\n\n if (inSecs == null) {\n return false;\n }\n\n var inSec = inSecs;\n var inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos);\n\n if (inSec >= -SECONDS_0000_TO_1970) {\n var zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970;\n var hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1;\n var lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS);\n var ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n if (hi > 0) {\n buf.append('+').append(hi);\n }\n\n buf.append(ldt);\n\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n } else {\n var _zeroSecs = inSec + SECONDS_0000_TO_1970;\n\n var _hi = MathUtil.intDiv(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _lo = MathUtil.intMod(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _ldt = LocalDateTime.ofEpochSecond(_lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n var pos = buf.length();\n buf.append(_ldt);\n\n if (_ldt.second() === 0) {\n buf.append(':00');\n }\n\n if (_hi < 0) {\n if (_ldt.year() === -10000) {\n buf.replace(pos, pos + 2, '' + (_hi - 1));\n } else if (_lo === 0) {\n buf.insert(pos, _hi);\n } else {\n buf.insert(pos + 1, Math.abs(_hi));\n }\n }\n }\n\n if (this.fractionalDigits === -2) {\n if (inNano !== 0) {\n buf.append('.');\n\n if (MathUtil.intMod(inNano, 1000000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000000) + 1000)).substring(1));\n } else if (MathUtil.intMod(inNano, 1000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000) + 1000000)).substring(1));\n } else {\n buf.append(('' + (inNano + 1000000000)).substring(1));\n }\n }\n } else if (this.fractionalDigits > 0 || this.fractionalDigits === -1 && inNano > 0) {\n buf.append('.');\n var div = 100000000;\n\n for (var i = 0; this.fractionalDigits === -1 && inNano > 0 || i < this.fractionalDigits; i++) {\n var digit = MathUtil.intDiv(inNano, div);\n buf.append(digit);\n inNano = inNano - digit * div;\n div = MathUtil.intDiv(div, 10);\n }\n }\n\n buf.append('Z');\n return true;\n };\n\n _proto2.parse = function parse(context, text, position) {\n var newContext = context.copy();\n var minDigits = this.fractionalDigits < 0 ? 0 : this.fractionalDigits;\n var maxDigits = this.fractionalDigits < 0 ? 9 : this.fractionalDigits;\n\n var parser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z').toFormatter()._toPrinterParser(false);\n\n var pos = parser.parse(newContext, text, position);\n\n if (pos < 0) {\n return pos;\n }\n\n var yearParsed = newContext.getParsed(ChronoField.YEAR);\n var month = newContext.getParsed(ChronoField.MONTH_OF_YEAR);\n var day = newContext.getParsed(ChronoField.DAY_OF_MONTH);\n var hour = newContext.getParsed(ChronoField.HOUR_OF_DAY);\n var min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR);\n var secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE);\n var nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND);\n var sec = secVal != null ? secVal : 0;\n var nano = nanoVal != null ? nanoVal : 0;\n var year = MathUtil.intMod(yearParsed, 10000);\n var days = 0;\n\n if (hour === 24 && min === 0 && sec === 0 && nano === 0) {\n hour = 0;\n days = 1;\n } else if (hour === 23 && min === 59 && sec === 60) {\n context.setParsedLeapSecond();\n sec = 59;\n }\n\n var instantSecs;\n\n try {\n var ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days);\n instantSecs = ldt.toEpochSecond(ZoneOffset.UTC);\n instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS);\n } catch (ex) {\n return ~position;\n }\n\n var successPos = pos;\n successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos);\n return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos);\n };\n\n _proto2.toString = function toString() {\n return 'Instant()';\n };\n\n return InstantPrinterParser;\n}();\n\nfunction _init$9() {\n ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1);\n DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser;\n DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator;\n DateTimeFormatterBuilder.SettingsParser = SettingsParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser;\n DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser;\n DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser;\n DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser;\n DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser;\n DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser;\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringBuilder = function () {\n function StringBuilder() {\n this._str = '';\n }\n\n var _proto = StringBuilder.prototype;\n\n _proto.append = function append(str) {\n this._str += str;\n return this;\n };\n\n _proto.appendChar = function appendChar(str) {\n this._str += str[0];\n return this;\n };\n\n _proto.insert = function insert(offset, str) {\n this._str = this._str.slice(0, offset) + str + this._str.slice(offset);\n return this;\n };\n\n _proto.replace = function replace(start, end, str) {\n this._str = this._str.slice(0, start) + str + this._str.slice(end);\n return this;\n };\n\n _proto.length = function length() {\n return this._str.length;\n };\n\n _proto.setLength = function setLength(length) {\n this._str = this._str.slice(0, length);\n return this;\n };\n\n _proto.toString = function toString() {\n return this._str;\n };\n\n return StringBuilder;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimeFormatter = function () {\n DateTimeFormatter.parsedExcessDays = function parsedExcessDays() {\n return DateTimeFormatter.PARSED_EXCESS_DAYS;\n };\n\n DateTimeFormatter.parsedLeapSecond = function parsedLeapSecond() {\n return DateTimeFormatter.PARSED_LEAP_SECOND;\n };\n\n DateTimeFormatter.ofPattern = function ofPattern(pattern) {\n return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter();\n };\n\n function DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone) {\n if (chrono === void 0) {\n chrono = IsoChronology.INSTANCE;\n }\n\n assert(printerParser != null);\n assert(decimalStyle != null);\n assert(resolverStyle != null);\n this._printerParser = printerParser;\n this._locale = locale;\n this._decimalStyle = decimalStyle;\n this._resolverStyle = resolverStyle;\n this._resolverFields = resolverFields;\n this._chrono = chrono;\n this._zone = zone;\n }\n\n var _proto = DateTimeFormatter.prototype;\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.decimalStyle = function decimalStyle() {\n return this._decimalStyle;\n };\n\n _proto.chronology = function chronology() {\n return this._chrono;\n };\n\n _proto.withChronology = function withChronology(chrono) {\n if (this._chrono != null && this._chrono.equals(chrono)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, this._resolverStyle, this._resolverFields, chrono, this._zone);\n };\n\n _proto.withLocale = function withLocale() {\n return this;\n };\n\n _proto.withResolverStyle = function withResolverStyle(resolverStyle) {\n requireNonNull(resolverStyle, 'resolverStyle');\n\n if (resolverStyle.equals(this._resolverStyle)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone);\n };\n\n _proto.format = function format(temporal) {\n var buf = new StringBuilder(32);\n\n this._formatTo(temporal, buf);\n\n return buf.toString();\n };\n\n _proto._formatTo = function _formatTo(temporal, appendable) {\n requireNonNull(temporal, 'temporal');\n requireNonNull(appendable, 'appendable');\n var context = new DateTimePrintContext(temporal, this);\n\n this._printerParser.print(context, appendable);\n };\n\n _proto.parse = function parse(text, type) {\n if (arguments.length === 1) {\n return this.parse1(text);\n } else {\n return this.parse2(text, type);\n }\n };\n\n _proto.parse1 = function parse1(text) {\n requireNonNull(text, 'text');\n\n try {\n return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto.parse2 = function parse2(text, type) {\n requireNonNull(text, 'text');\n requireNonNull(type, 'type');\n\n try {\n var builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n\n return builder.build(type);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto._createError = function _createError(text, ex) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substring(0, 64) + '...';\n } else {\n abbr = text;\n }\n\n return new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed: ' + ex.message, text, 0, ex);\n };\n\n _proto._parseToBuilder = function _parseToBuilder(text, position) {\n var pos = position != null ? position : new ParsePosition(0);\n\n var result = this._parseUnresolved0(text, pos);\n\n if (result == null || pos.getErrorIndex() >= 0 || position == null && pos.getIndex() < text.length) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substr(0, 64).toString() + '...';\n } else {\n abbr = text;\n }\n\n if (pos.getErrorIndex() >= 0) {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed at index ' + pos.getErrorIndex(), text, pos.getErrorIndex());\n } else {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed, unparsed text found at index ' + pos.getIndex(), text, pos.getIndex());\n }\n }\n\n return result.toBuilder();\n };\n\n _proto.parseUnresolved = function parseUnresolved(text, position) {\n return this._parseUnresolved0(text, position);\n };\n\n _proto._parseUnresolved0 = function _parseUnresolved0(text, position) {\n assert(text != null, 'text', NullPointerException);\n assert(position != null, 'position', NullPointerException);\n var context = new DateTimeParseContext(this);\n var pos = position.getIndex();\n pos = this._printerParser.parse(context, text, pos);\n\n if (pos < 0) {\n position.setErrorIndex(~pos);\n return null;\n }\n\n position.setIndex(pos);\n return context.toParsed();\n };\n\n _proto._toPrinterParser = function _toPrinterParser(optional) {\n return this._printerParser.withOptional(optional);\n };\n\n _proto.toString = function toString() {\n var pattern = this._printerParser.toString();\n\n return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1);\n };\n\n return DateTimeFormatter;\n}();\nfunction _init$a() {\n DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder().appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).optionalStart().appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).optionalStart().appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendInstant().toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral('[').parseCaseSensitive().appendZoneId().appendLiteral(']').toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendValue(ChronoField.MONTH_OF_YEAR, 2).appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.DAY_OF_YEAR).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-W').appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR).appendLiteral('-').appendValue(ChronoField.DAY_OF_WEEK).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.excessDays;\n } else {\n return Period.ZERO;\n }\n });\n DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.leapSecond;\n } else {\n return false;\n }\n });\n}\n\nvar MonthDay = function (_TemporalAccessor) {\n _inheritsLoose(MonthDay, _TemporalAccessor);\n\n MonthDay.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return MonthDay.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return MonthDay.nowZoneId(zoneIdOrClock);\n } else {\n return MonthDay.nowClock(zoneIdOrClock);\n }\n };\n\n MonthDay.now0 = function now0() {\n return this.nowClock(Clock.systemDefaultZone());\n };\n\n MonthDay.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n return this.nowClock(Clock.system(zone));\n };\n\n MonthDay.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n var now = LocalDate.now(clock);\n return MonthDay.of(now.month(), now.dayOfMonth());\n };\n\n MonthDay.of = function of(monthOrNumber, number) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return MonthDay.ofMonthNumber(monthOrNumber, number);\n } else {\n return MonthDay.ofNumberNumber(monthOrNumber, number);\n }\n };\n\n MonthDay.ofMonthNumber = function ofMonthNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > month.maxLength()) {\n throw new DateTimeException('Illegal value for DayOfMonth field, value ' + dayOfMonth + ' is not valid for month ' + month.toString());\n }\n\n return new MonthDay(month.value(), dayOfMonth);\n };\n\n MonthDay.ofNumberNumber = function ofNumberNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return MonthDay.of(Month.of(month), dayOfMonth);\n };\n\n MonthDay.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof MonthDay) {\n return temporal;\n }\n\n try {\n return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain MonthDay from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n MonthDay.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return MonthDay.parseString(text);\n } else {\n return MonthDay.parseStringFormatter(text, formatter);\n }\n };\n\n MonthDay.parseString = function parseString(text) {\n return MonthDay.parseStringFormatter(text, PARSER);\n };\n\n MonthDay.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, MonthDay.FROM);\n };\n\n function MonthDay(month, dayOfMonth) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n return _this;\n }\n\n var _proto = MonthDay.prototype;\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return field.range();\n } else if (field === ChronoField.DAY_OF_MONTH) {\n return ValueRange.of(1, this.month().minLength(), this.month().maxLength());\n }\n\n return _TemporalAccessor.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isValidYear = function isValidYear(year) {\n return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false;\n };\n\n _proto.withMonth = function withMonth(month) {\n return this.with(Month.of(month));\n };\n\n _proto.with = function _with(month) {\n requireNonNull(month, 'month');\n\n if (month.value() === this._month) {\n return this;\n }\n\n var day = Math.min(this._day, month.maxLength());\n return new MonthDay(month.value(), day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (dayOfMonth === this._day) {\n return this;\n }\n\n return MonthDay.of(this._month, dayOfMonth);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month);\n return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day));\n };\n\n _proto.atYear = function atYear(year) {\n return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n var cmp = this._month - other.monthValue();\n\n if (cmp === 0) {\n cmp = this._day - other.dayOfMonth();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof MonthDay) {\n var other = obj;\n return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '--' + (this._month < 10 ? '0' : '') + this._month + (this._day < 10 ? '-0' : '-') + this._day;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return MonthDay;\n}(TemporalAccessor);\nvar PARSER;\nfunction _init$b() {\n PARSER = new DateTimeFormatterBuilder().appendLiteral('--').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter();\n MonthDay.FROM = createTemporalQuery('MonthDay.FROM', function (temporal) {\n return MonthDay.from(temporal);\n });\n}\n\nvar YearMonth = function (_Temporal) {\n _inheritsLoose(YearMonth, _Temporal);\n\n YearMonth.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return YearMonth.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return YearMonth.nowZoneId(zoneIdOrClock);\n } else {\n return YearMonth.nowClock(zoneIdOrClock);\n }\n };\n\n YearMonth.now0 = function now0() {\n return YearMonth.nowClock(Clock.systemDefaultZone());\n };\n\n YearMonth.nowZoneId = function nowZoneId(zone) {\n return YearMonth.nowClock(Clock.system(zone));\n };\n\n YearMonth.nowClock = function nowClock(clock) {\n var now = LocalDate.now(clock);\n return YearMonth.of(now.year(), now.month());\n };\n\n YearMonth.of = function of(year, monthOrNumber) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return YearMonth.ofNumberMonth(year, monthOrNumber);\n } else {\n return YearMonth.ofNumberNumber(year, monthOrNumber);\n }\n };\n\n YearMonth.ofNumberMonth = function ofNumberMonth(year, month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.ofNumberNumber(year, month.value());\n };\n\n YearMonth.ofNumberNumber = function ofNumberNumber(year, month) {\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(year, month);\n };\n\n YearMonth.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof YearMonth) {\n return temporal;\n }\n\n try {\n return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain YearMonth from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n YearMonth.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return YearMonth.parseString(text);\n } else {\n return YearMonth.parseStringFormatter(text, formatter);\n }\n };\n\n YearMonth.parseString = function parseString(text) {\n return YearMonth.parseStringFormatter(text, PARSER$1);\n };\n\n YearMonth.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, YearMonth.FROM);\n };\n\n function YearMonth(year, month) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n return _this;\n }\n\n var _proto = YearMonth.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.YEAR_OF_ERA) {\n return this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._getProlepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._getProlepticMonth = function _getProlepticMonth() {\n return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), this._month - 1);\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.isValidDay = function isValidDay(dayOfMonth) {\n return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth();\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n return this.month().length(this.isLeapYear());\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.with = function _with(adjusterOrField, value) {\n if (arguments.length === 1) {\n return this.withAdjuster(adjusterOrField);\n } else {\n return this.withFieldValue(adjusterOrField, value);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n ChronoField.YEAR.checkValidValue(year);\n return new YearMonth(year, this._month);\n };\n\n _proto.withMonth = function withMonth(month) {\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(this._year, month);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return this.withYear(newYear);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return new YearMonth(newYear, newMonth);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusAmountUnit(MathUtil.MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, Temporal, 'temporal');\n return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n requireInstance(endExclusive, Temporal, 'endExclusive');\n requireInstance(unit, TemporalUnit, 'unit');\n var end = YearMonth.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var monthsUntil = end._getProlepticMonth() - this._getProlepticMonth();\n\n switch (unit) {\n case ChronoUnit.MONTHS:\n return monthsUntil;\n\n case ChronoUnit.YEARS:\n return monthsUntil / 12;\n\n case ChronoUnit.DECADES:\n return monthsUntil / 120;\n\n case ChronoUnit.CENTURIES:\n return monthsUntil / 1200;\n\n case ChronoUnit.MILLENNIA:\n return monthsUntil / 12000;\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDay = function atDay(dayOfMonth) {\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.atEndOfMonth = function atEndOfMonth() {\n return LocalDate.of(this._year, this._month, this.lengthOfMonth());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, YearMonth, 'other');\n var cmp = this._year - other.year();\n\n if (cmp === 0) {\n cmp = this._month - other.monthValue();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof YearMonth) {\n var other = obj;\n return this.year() === other.year() && this.monthValue() === other.monthValue();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return PARSER$1.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return YearMonth;\n}(Temporal);\nvar PARSER$1;\nfunction _init$c() {\n PARSER$1 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).toFormatter();\n YearMonth.FROM = createTemporalQuery('YearMonth.FROM', function (temporal) {\n return YearMonth.from(temporal);\n });\n}\n\nvar Year = function (_Temporal) {\n _inheritsLoose(Year, _Temporal);\n\n function Year(value) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(value);\n return _this;\n }\n\n var _proto = Year.prototype;\n\n _proto.value = function value() {\n return this._year;\n };\n\n Year.now = function now(zoneIdOrClock) {\n if (zoneIdOrClock === void 0) {\n zoneIdOrClock = undefined;\n }\n\n if (zoneIdOrClock === undefined) {\n return Year.now0();\n } else if (zoneIdOrClock instanceof ZoneId) {\n return Year.nowZoneId(zoneIdOrClock);\n } else {\n return Year.nowClock(zoneIdOrClock);\n }\n };\n\n Year.now0 = function now0() {\n return Year.nowClock(Clock.systemDefaultZone());\n };\n\n Year.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n return Year.nowClock(Clock.system(zone));\n };\n\n Year.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n requireInstance(clock, Clock, 'clock');\n var now = LocalDate.now(clock);\n return Year.of(now.year());\n };\n\n Year.of = function of(isoYear) {\n requireNonNull(isoYear, 'isoYear');\n ChronoField.YEAR.checkValidValue(isoYear);\n return new Year(isoYear);\n };\n\n Year.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof Year) {\n return temporal;\n }\n\n try {\n return Year.of(temporal.get(ChronoField.YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Year from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n Year.parse = function parse(text, formatter) {\n if (arguments.length <= 1) {\n return Year.parseText(text);\n } else {\n return Year.parseTextFormatter(text, formatter);\n }\n };\n\n Year.parseText = function parseText(text) {\n requireNonNull(text, 'text');\n return Year.parse(text, PARSER$2);\n };\n\n Year.parseTextFormatter = function parseTextFormatter(text, formatter) {\n if (formatter === void 0) {\n formatter = PARSER$2;\n }\n\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, Year.FROM);\n };\n\n Year.isLeap = function isLeap(year) {\n return MathUtil.intMod(year, 4) === 0 && (MathUtil.intMod(year, 100) !== 0 || MathUtil.intMod(year, 400) === 0);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (this.isSupported(field)) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isLeap = function isLeap() {\n return Year.isLeap(this._year);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return Year.of(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return Year.of(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd)));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plus(MathUtil.MAX_SAFE_INTEGER, unit).plus(1, unit) : this.plus(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.YEAR, this._year);\n };\n\n _proto.isValidMonthDay = function isValidMonthDay(monthDay) {\n return monthDay != null && monthDay.isValidYear(this._year);\n };\n\n _proto.length = function length() {\n return this.isLeap() ? 366 : 365;\n };\n\n _proto.atDay = function atDay(dayOfYear) {\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.atMonth = function atMonth(monthOrNumber) {\n if (arguments.length === 1 && monthOrNumber instanceof Month) {\n return this.atMonthMonth(monthOrNumber);\n } else {\n return this.atMonthNumber(monthOrNumber);\n }\n };\n\n _proto.atMonthMonth = function atMonthMonth(month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthNumber = function atMonthNumber(month) {\n requireNonNull(month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthDay = function atMonthDay(monthDay) {\n requireNonNull(monthDay, 'monthDay');\n requireInstance(monthDay, MonthDay, 'monthDay');\n return monthDay.atYear(this._year);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query()');\n requireInstance(_query, TemporalQuery, 'query()');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.YEARS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year - other._year;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year > other._year;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year < other._year;\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Year) {\n return this.value() === other.value();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '' + this._year;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = Year.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var yearsUntil = end.value() - this.value();\n\n switch (unit) {\n case ChronoUnit.YEARS:\n return yearsUntil;\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(yearsUntil, 10);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(yearsUntil, 100);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(yearsUntil, 1000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n return Year;\n}(Temporal);\nvar PARSER$2;\nfunction _init$d() {\n Year.MIN_VALUE = YearConstants.MIN_VALUE;\n Year.MAX_VALUE = YearConstants.MAX_VALUE;\n PARSER$2 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).toFormatter();\n Year.FROM = createTemporalQuery('Year.FROM', function (temporal) {\n return Year.from(temporal);\n });\n}\n\nvar TemporalAdjusters = function () {\n function TemporalAdjusters() {}\n\n TemporalAdjusters.firstDayOfMonth = function firstDayOfMonth() {\n return Impl.FIRST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.lastDayOfMonth = function lastDayOfMonth() {\n return Impl.LAST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.firstDayOfNextMonth = function firstDayOfNextMonth() {\n return Impl.FIRST_DAY_OF_NEXT_MONTH;\n };\n\n TemporalAdjusters.firstDayOfYear = function firstDayOfYear() {\n return Impl.FIRST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.lastDayOfYear = function lastDayOfYear() {\n return Impl.LAST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.firstDayOfNextYear = function firstDayOfNextYear() {\n return Impl.FIRST_DAY_OF_NEXT_YEAR;\n };\n\n TemporalAdjusters.firstInMonth = function firstInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(1, dayOfWeek);\n };\n\n TemporalAdjusters.lastInMonth = function lastInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(-1, dayOfWeek);\n };\n\n TemporalAdjusters.dayOfWeekInMonth = function dayOfWeekInMonth(ordinal, dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(ordinal, dayOfWeek);\n };\n\n TemporalAdjusters.next = function next(dayOfWeek) {\n return new RelativeDayOfWeek(2, dayOfWeek);\n };\n\n TemporalAdjusters.nextOrSame = function nextOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(0, dayOfWeek);\n };\n\n TemporalAdjusters.previous = function previous(dayOfWeek) {\n return new RelativeDayOfWeek(3, dayOfWeek);\n };\n\n TemporalAdjusters.previousOrSame = function previousOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(1, dayOfWeek);\n };\n\n return TemporalAdjusters;\n}();\n\nvar Impl = function (_TemporalAdjuster) {\n _inheritsLoose(Impl, _TemporalAdjuster);\n\n function Impl(ordinal) {\n var _this;\n\n _this = _TemporalAdjuster.call(this) || this;\n _this._ordinal = ordinal;\n return _this;\n }\n\n var _proto = Impl.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n switch (this._ordinal) {\n case 0:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1);\n\n case 1:\n return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n case 2:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS);\n\n case 3:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1);\n\n case 4:\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum());\n\n case 5:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS);\n }\n\n throw new IllegalStateException('Unreachable');\n };\n\n return Impl;\n}(TemporalAdjuster);\n\nImpl.FIRST_DAY_OF_MONTH = new Impl(0);\nImpl.LAST_DAY_OF_MONTH = new Impl(1);\nImpl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2);\nImpl.FIRST_DAY_OF_YEAR = new Impl(3);\nImpl.LAST_DAY_OF_YEAR = new Impl(4);\nImpl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5);\n\nvar DayOfWeekInMonth = function (_TemporalAdjuster2) {\n _inheritsLoose(DayOfWeekInMonth, _TemporalAdjuster2);\n\n function DayOfWeekInMonth(ordinal, dow) {\n var _this2;\n\n _this2 = _TemporalAdjuster2.call(this) || this;\n _this2._ordinal = ordinal;\n _this2._dowValue = dow.value();\n return _this2;\n }\n\n var _proto2 = DayOfWeekInMonth.prototype;\n\n _proto2.adjustInto = function adjustInto(temporal) {\n if (this._ordinal >= 0) {\n var temp = temporal.with(ChronoField.DAY_OF_MONTH, 1);\n var curDow = temp.get(ChronoField.DAY_OF_WEEK);\n var dowDiff = MathUtil.intMod(this._dowValue - curDow + 7, 7);\n dowDiff += (this._ordinal - 1) * 7;\n return temp.plus(dowDiff, ChronoUnit.DAYS);\n } else {\n var _temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n var _curDow = _temp.get(ChronoField.DAY_OF_WEEK);\n\n var daysDiff = this._dowValue - _curDow;\n daysDiff = daysDiff === 0 ? 0 : daysDiff > 0 ? daysDiff - 7 : daysDiff;\n daysDiff -= (-this._ordinal - 1) * 7;\n return _temp.plus(daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return DayOfWeekInMonth;\n}(TemporalAdjuster);\n\nvar RelativeDayOfWeek = function (_TemporalAdjuster3) {\n _inheritsLoose(RelativeDayOfWeek, _TemporalAdjuster3);\n\n function RelativeDayOfWeek(relative, dayOfWeek) {\n var _this3;\n\n _this3 = _TemporalAdjuster3.call(this) || this;\n requireNonNull(dayOfWeek, 'dayOfWeek');\n _this3._relative = relative;\n _this3._dowValue = dayOfWeek.value();\n return _this3;\n }\n\n var _proto3 = RelativeDayOfWeek.prototype;\n\n _proto3.adjustInto = function adjustInto(temporal) {\n var calDow = temporal.get(ChronoField.DAY_OF_WEEK);\n\n if (this._relative < 2 && calDow === this._dowValue) {\n return temporal;\n }\n\n if ((this._relative & 1) === 0) {\n var daysDiff = calDow - this._dowValue;\n return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n } else {\n var _daysDiff = this._dowValue - calDow;\n\n return temporal.minus(_daysDiff >= 0 ? 7 - _daysDiff : -_daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return RelativeDayOfWeek;\n}(TemporalAdjuster);\n\nvar IsoChronology = function (_Enum) {\n _inheritsLoose(IsoChronology, _Enum);\n\n function IsoChronology() {\n return _Enum.apply(this, arguments) || this;\n }\n\n IsoChronology.isLeapYear = function isLeapYear(prolepticYear) {\n return (prolepticYear & 3) === 0 && (prolepticYear % 100 !== 0 || prolepticYear % 400 === 0);\n };\n\n var _proto = IsoChronology.prototype;\n\n _proto._updateResolveMap = function _updateResolveMap(fieldValues, field, value) {\n requireNonNull(fieldValues, 'fieldValues');\n requireNonNull(field, 'field');\n var current = fieldValues.get(field);\n\n if (current != null && current !== value) {\n throw new DateTimeException('Invalid state, field: ' + field + ' ' + current + ' conflicts with ' + field + ' ' + value);\n }\n\n fieldValues.put(field, value);\n };\n\n _proto.resolveDate = function resolveDate(fieldValues, resolverStyle) {\n if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY));\n }\n\n var prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH);\n\n if (prolepticMonth != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth);\n }\n\n this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1);\n\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12));\n }\n\n var yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA);\n\n if (yoeLong != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong);\n }\n\n var era = fieldValues.remove(ChronoField.ERA);\n\n if (era == null) {\n var year = fieldValues.get(ChronoField.YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n if (year != null) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n } else {\n fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong);\n }\n } else {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year == null || year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n }\n } else if (era === 1) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong);\n } else if (era === 0) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong));\n } else {\n throw new DateTimeException('Invalid value for era: ' + era);\n }\n } else if (fieldValues.containsKey(ChronoField.ERA)) {\n ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA));\n }\n\n if (fieldValues.containsKey(ChronoField.YEAR)) {\n if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) {\n var y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n var moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR);\n var dom = fieldValues.remove(ChronoField.DAY_OF_MONTH);\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var months = moy - 1;\n var days = dom - 1;\n return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);\n } else if (resolverStyle === ResolverStyle.SMART) {\n ChronoField.DAY_OF_MONTH.checkValidValue(dom);\n\n if (moy === 4 || moy === 6 || moy === 9 || moy === 11) {\n dom = Math.min(dom, 30);\n } else if (moy === 2) {\n dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y)));\n }\n\n return LocalDate.of(y, moy, dom);\n } else {\n return LocalDate.of(y, moy, dom);\n }\n }\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) {\n var _y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1);\n\n return LocalDate.ofYearDay(_y, 1).plusDays(_days);\n }\n\n var doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR));\n return LocalDate.ofYearDay(_y, doy);\n }\n\n if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) {\n var _y2 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days2 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1);\n\n return LocalDate.of(_y2, 1, 1).plusWeeks(weeks).plusDays(_days2);\n }\n\n var aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n var ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n var date = LocalDate.of(_y2, 1, 1).plusDays((aw - 1) * 7 + (ad - 1));\n\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== _y2) {\n throw new DateTimeException('Strict mode rejected date parsed to a different year');\n }\n\n return date;\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) {\n var _y3 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days3 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1);\n\n return LocalDate.of(_y3, 1, 1).plusWeeks(_weeks).plusDays(_days3);\n }\n\n var _aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n var dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK));\n\n var _date = LocalDate.of(_y3, 1, 1).plusWeeks(_aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow)));\n\n if (resolverStyle === ResolverStyle.STRICT && _date.get(ChronoField.YEAR) !== _y3) {\n throw new DateTimeException('Strict mode rejected date parsed to a different month');\n }\n\n return _date;\n }\n }\n }\n\n return null;\n };\n\n _proto.date = function date(temporal) {\n return LocalDate.from(temporal);\n };\n\n return IsoChronology;\n}(Enum);\nfunction _init$e() {\n IsoChronology.INSTANCE = new IsoChronology('IsoChronology');\n}\n\nvar OffsetTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetTime, _DefaultInterfaceTemp);\n\n OffsetTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetTime) {\n return temporal;\n } else if (temporal instanceof OffsetDateTime) {\n return temporal.toOffsetTime();\n }\n\n try {\n var time = LocalTime.from(temporal);\n var offset = ZoneOffset.from(temporal);\n return new OffsetTime(time, offset);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return OffsetTime._now(clockOrZone);\n } else {\n return OffsetTime._now(Clock.system(clockOrZone));\n }\n };\n\n OffsetTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n var now = clock.instant();\n return OffsetTime.ofInstant(now, clock.zone().rules().offset(now));\n };\n\n OffsetTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetTime.ofTimeAndOffset.apply(this, arguments);\n } else {\n return OffsetTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetTime.ofNumbers = function ofNumbers(hour, minute, second, nanoOfSecond, offset) {\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofTimeAndOffset = function ofTimeAndOffset(time, offset) {\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY;\n secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY;\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n var time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetTime.FROM);\n };\n\n function OffsetTime(time, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(time, 'time');\n requireInstance(time, LocalTime, 'time');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._time = time;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.atDate = function atDate(date) {\n return OffsetDateTime.of(date, this._time, this._offset);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this, OffsetTime.FROM);\n };\n\n _proto.get = function get(field) {\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._offset.totalSeconds();\n }\n\n return this._time.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() > other._toEpochNano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() < other._toEpochNano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() === other._toEpochNano();\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localTime()) {\n return this._time;\n } else if (_query === TemporalQueries.chronology() || _query === TemporalQueries.localDate() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._time.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = OffsetTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end._toEpochNano() - this._toEpochNano();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return Math.floor(nanosUntil / 1000);\n\n case ChronoUnit.MILLIS:\n return Math.floor(nanosUntil / 1000000);\n\n case ChronoUnit.SECONDS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return Math.floor(nanosUntil / (12 * LocalTime.NANOS_PER_HOUR));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withLocalTimeOffset(this._time.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withLocalTimeOffset(this._time.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nano) {\n return this._withLocalTimeOffset(this._time.withNano(nano), this._offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._time.plusSeconds(difference);\n\n return new OffsetTime(adjusted, offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset);\n };\n\n _proto._toEpochNano = function _toEpochNano() {\n var nod = this._time.toNanoOfDay();\n\n var offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND;\n return nod - offsetNanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return this._withLocalTimeOffset(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withLocalTimeOffset(this._time, adjuster);\n } else if (adjuster instanceof OffsetTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)));\n }\n\n return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withLocalTimeOffset = function _withLocalTimeOffset(time, offset) {\n if (this._time === time && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetTime(time, offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetTime, 'other');\n\n if (this._offset.equals(other._offset)) {\n return this._time.compareTo(other._time);\n }\n\n var compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano());\n\n if (compare === 0) {\n return this._time.compareTo(other._time);\n }\n\n return compare;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetTime) {\n return this._time.equals(other._time) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._time.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._time.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return OffsetTime;\n}(DefaultInterfaceTemporal);\nfunction _init$f() {\n OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0, 0, ZoneOffset.MAX);\n OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59, 999999999, ZoneOffset.MIN);\n OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', function (temporal) {\n return OffsetTime.from(temporal);\n });\n}\n\nvar ChronoZonedDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoZonedDateTime, _DefaultInterfaceTemp);\n\n function ChronoZonedDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoZonedDateTime.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone();\n } else if (_query === TemporalQueries.chronology()) {\n return this.toLocalDate().chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.toInstant = function toInstant() {\n return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= this.offset().totalSeconds();\n return secs;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n\n if (cmp === 0) {\n cmp = strcmp(this.zone().id(), other.zone().id());\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ChronoZonedDateTime) {\n return this.compareTo(other) === 0;\n }\n\n return false;\n };\n\n return ChronoZonedDateTime;\n}(DefaultInterfaceTemporal);\n\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n}\n\nvar ZonedDateTime = function (_ChronoZonedDateTime) {\n _inheritsLoose(ZonedDateTime, _ChronoZonedDateTime);\n\n ZonedDateTime.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone;\n }\n\n return ZonedDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n ZonedDateTime.of = function of() {\n if (arguments.length <= 2) {\n return ZonedDateTime.of2.apply(this, arguments);\n } else if (arguments.length === 3 && arguments[0] instanceof LocalDate) {\n return ZonedDateTime.of3.apply(this, arguments);\n } else {\n return ZonedDateTime.of8.apply(this, arguments);\n }\n };\n\n ZonedDateTime.of3 = function of3(date, time, zone) {\n return ZonedDateTime.of2(LocalDateTime.of(date, time), zone);\n };\n\n ZonedDateTime.of2 = function of2(localDateTime, zone) {\n return ZonedDateTime.ofLocal(localDateTime, zone, null);\n };\n\n ZonedDateTime.of8 = function of8(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, zone) {\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return ZonedDateTime.ofLocal(dt, zone, null);\n };\n\n ZonedDateTime.ofLocal = function ofLocal(localDateTime, zone, preferredOffset) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset) {\n return new ZonedDateTime(localDateTime, zone, zone);\n }\n\n var offset = null;\n var rules = zone.rules();\n var validOffsets = rules.validOffsets(localDateTime);\n\n if (validOffsets.length === 1) {\n offset = validOffsets[0];\n } else if (validOffsets.length === 0) {\n var trans = rules.transition(localDateTime);\n localDateTime = localDateTime.plusSeconds(trans.duration().seconds());\n offset = trans.offsetAfter();\n } else {\n if (preferredOffset != null && validOffsets.some(function (validOffset) {\n return validOffset.equals(preferredOffset);\n })) {\n offset = preferredOffset;\n } else {\n offset = requireNonNull(validOffsets[0], 'offset');\n }\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofInstant = function ofInstant() {\n if (arguments.length === 2) {\n return ZonedDateTime.ofInstant2.apply(this, arguments);\n } else {\n return ZonedDateTime.ofInstant3.apply(this, arguments);\n }\n };\n\n ZonedDateTime.ofInstant2 = function ofInstant2(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone);\n };\n\n ZonedDateTime.ofInstant3 = function ofInstant3(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone);\n };\n\n ZonedDateTime._create = function _create(epochSecond, nanoOfSecond, zone) {\n var rules = zone.rules();\n var instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond);\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset);\n return new ZonedDateTime(ldt, offset, zone);\n };\n\n ZonedDateTime.ofStrict = function ofStrict(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n\n if (rules.isValidOffset(localDateTime, offset) === false) {\n var trans = rules.transition(localDateTime);\n\n if (trans != null && trans.isGap()) {\n throw new DateTimeException('LocalDateTime ' + localDateTime + ' does not exist in zone ' + zone + ' due to a gap in the local time-line, typically caused by daylight savings');\n }\n\n throw new DateTimeException('ZoneOffset \"' + offset + '\" is not valid for LocalDateTime \"' + localDateTime + '\" in zone \"' + zone + '\"');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofLenient = function ofLenient(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset && offset.equals(zone) === false) {\n throw new IllegalArgumentException('ZoneId must match ZoneOffset');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof ZonedDateTime) {\n return temporal;\n }\n\n var zone = ZoneId.from(temporal);\n\n if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {\n var zdt = ZonedDateTime._from(temporal, zone);\n\n if (zdt != null) return zdt;\n }\n\n var ldt = LocalDateTime.from(temporal);\n return ZonedDateTime.of2(ldt, zone);\n };\n\n ZonedDateTime._from = function _from(temporal, zone) {\n try {\n return ZonedDateTime.__from(temporal, zone);\n } catch (ex) {\n if (!(ex instanceof DateTimeException)) throw ex;\n }\n };\n\n ZonedDateTime.__from = function __from(temporal, zone) {\n var epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return ZonedDateTime._create(epochSecond, nanoOfSecond, zone);\n };\n\n ZonedDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, ZonedDateTime.FROM);\n };\n\n function ZonedDateTime(dateTime, offset, zone) {\n var _this;\n\n requireNonNull(dateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n _this = _ChronoZonedDateTime.call(this) || this;\n _this._dateTime = dateTime;\n _this._offset = offset;\n _this._zone = zone;\n return _this;\n }\n\n var _proto = ZonedDateTime.prototype;\n\n _proto._resolveLocal = function _resolveLocal(newDateTime) {\n requireNonNull(newDateTime, 'newDateTime');\n return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset);\n };\n\n _proto._resolveInstant = function _resolveInstant(newDateTime) {\n return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone);\n };\n\n _proto._resolveOffset = function _resolveOffset(offset) {\n if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) {\n return new ZonedDateTime(this._dateTime, offset, this._zone);\n }\n\n return this;\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return true;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this._offset.totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n requireNonNull(field, 'field');\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.withEarlierOffsetAtOverlap = function withEarlierOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this._dateTime);\n\n if (trans != null && trans.isOverlap()) {\n var earlierOffset = trans.offsetBefore();\n\n if (earlierOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, earlierOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.withLaterOffsetAtOverlap = function withLaterOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this.toLocalDateTime());\n\n if (trans != null) {\n var laterOffset = trans.offsetAfter();\n\n if (laterOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, laterOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.zone = function zone() {\n return this._zone;\n };\n\n _proto.withZoneSameLocal = function withZoneSameLocal(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.withZoneSameInstant = function withZoneSameInstant(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone);\n };\n\n _proto.withFixedOffsetZone = function withFixedOffsetZone() {\n return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset);\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n if (adjuster instanceof LocalDate) {\n return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime()));\n } else if (adjuster instanceof LocalTime) {\n return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster));\n } else if (adjuster instanceof LocalDateTime) {\n return this._resolveLocal(adjuster);\n } else if (adjuster instanceof Instant) {\n var instant = adjuster;\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone);\n } else if (adjuster instanceof ZoneOffset) {\n return this._resolveOffset(adjuster);\n }\n\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return ZonedDateTime._create(newValue, this.nano(), this._zone);\n\n case ChronoField.OFFSET_SECONDS:\n {\n var offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue));\n return this._resolveOffset(offset);\n }\n }\n\n return this._resolveLocal(this._dateTime.with(field, newValue));\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._resolveLocal(this._dateTime.withYear(year));\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._resolveLocal(this._dateTime.withMonth(month));\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth));\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear));\n };\n\n _proto.withHour = function withHour(hour) {\n return this._resolveLocal(this._dateTime.withHour(hour));\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._resolveLocal(this._dateTime.withMinute(minute));\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._resolveLocal(this._dateTime.withSecond(second));\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._resolveLocal(this._dateTime.withNano(nanoOfSecond));\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._resolveLocal(this._dateTime.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n if (unit.isDateBased()) {\n return this._resolveLocal(this._dateTime.plus(amountToAdd, unit));\n } else {\n return this._resolveInstant(this._dateTime.plus(amountToAdd, unit));\n }\n }\n\n requireNonNull(unit, 'unit');\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._resolveLocal(this._dateTime.plusYears(years));\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._resolveLocal(this._dateTime.plusMonths(months));\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._resolveLocal(this._dateTime.plusWeeks(weeks));\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._resolveLocal(this._dateTime.plusDays(days));\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._resolveInstant(this._dateTime.plusHours(hours));\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._resolveInstant(this._dateTime.plusMinutes(minutes));\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._resolveInstant(this._dateTime.plusSeconds(seconds));\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._resolveInstant(this._dateTime.plusNanos(nanos));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this.plusHours(-1 * hours);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this.plusMinutes(-1 * minutes);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this.plusSeconds(-1 * seconds);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this.plusNanos(-1 * nanos);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n requireNonNull(_query, 'query');\n return _ChronoZonedDateTime.prototype.query.call(this, _query);\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = ZonedDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withZoneSameInstant(this._zone);\n\n if (unit.isDateBased()) {\n return this._dateTime.until(end._dateTime, unit);\n } else {\n var difference = this._offset.totalSeconds() - end._offset.totalSeconds();\n\n var adjustedEnd = end._dateTime.plusSeconds(difference);\n\n return this._dateTime.until(adjustedEnd, unit);\n }\n }\n\n return unit.between(this, end);\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetDateTime = function toOffsetDateTime() {\n return OffsetDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZonedDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset) && this._zone.equals(other._zone);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode());\n };\n\n _proto.toString = function toString() {\n var str = this._dateTime.toString() + this._offset.toString();\n\n if (this._offset !== this._zone) {\n str += '[' + this._zone.toString() + ']';\n }\n\n return str;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n return _ChronoZonedDateTime.prototype.format.call(this, formatter);\n };\n\n return ZonedDateTime;\n}(ChronoZonedDateTime);\nfunction _init$g() {\n ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', function (temporal) {\n return ZonedDateTime.from(temporal);\n });\n}\n\nvar OffsetDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetDateTime, _DefaultInterfaceTemp);\n\n OffsetDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetDateTime) {\n return temporal;\n }\n\n try {\n var offset = ZoneOffset.from(temporal);\n\n try {\n var ldt = LocalDateTime.from(temporal);\n return OffsetDateTime.of(ldt, offset);\n } catch (_) {\n var instant = Instant.from(temporal);\n return OffsetDateTime.ofInstant(instant, offset);\n }\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetDateTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetDateTime.now(Clock.systemDefaultZone());\n } else {\n requireNonNull(clockOrZone, 'clockOrZone');\n\n if (clockOrZone instanceof ZoneId) {\n return OffsetDateTime.now(Clock.system(clockOrZone));\n } else if (clockOrZone instanceof Clock) {\n var now = clockOrZone.instant();\n return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now));\n } else {\n throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock');\n }\n }\n };\n\n OffsetDateTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetDateTime.ofDateTime.apply(this, arguments);\n } else if (arguments.length === 3) {\n return OffsetDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return OffsetDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetDateTime.ofDateTime = function ofDateTime(dateTime, offset) {\n return new OffsetDateTime(dateTime, offset);\n };\n\n OffsetDateTime.ofDateAndTime = function ofDateAndTime(date, time, offset) {\n var dt = LocalDateTime.of(date, time);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n return new OffsetDateTime(ldt, offset);\n };\n\n OffsetDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetDateTime.FROM);\n };\n\n function OffsetDateTime(dateTime, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(dateTime, 'dateTime');\n requireInstance(dateTime, LocalDateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._dateTime = dateTime;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetDateTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = OffsetDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withOffsetSameInstant(this._offset);\n return this._dateTime.until(end._dateTime, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atZoneSameInstant = function atZoneSameInstant(zone) {\n return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone);\n };\n\n _proto.atZoneSimilarLocal = function atZoneSimilarLocal(zone) {\n return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n throw new DateTimeException('Field too large for an int: ' + field);\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.get(field);\n }\n\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetTime = function toOffsetTime() {\n return OffsetTime.of(this._dateTime.toLocalTime(), this._offset);\n };\n\n _proto.toZonedDateTime = function toZonedDateTime() {\n return ZonedDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.toInstant = function toInstant() {\n return this._dateTime.toInstant(this._offset);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._dateTime.toEpochSecond(this._offset);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster);\n\n if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) {\n return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset);\n } else if (adjuster instanceof Instant) {\n return OffsetDateTime.ofInstant(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withDateTimeOffset(this._dateTime, adjuster);\n } else if (adjuster instanceof OffsetDateTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field);\n\n if (field instanceof ChronoField) {\n var f = field;\n\n switch (f) {\n case ChronoField.INSTANT_SECONDS:\n return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset);\n\n case ChronoField.OFFSET_SECONDS:\n {\n return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue)));\n }\n }\n\n return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withDateTimeOffset = function _withDateTimeOffset(dateTime, offset) {\n if (this._dateTime === dateTime && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetDateTime(dateTime, offset);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n requireNonNull(offset, 'offset');\n return this._withDateTimeOffset(this._dateTime, offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._dateTime.plusSeconds(difference);\n\n return new OffsetDateTime(adjusted, offset);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset);\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetDateTime, 'other');\n\n if (this.offset().equals(other.offset())) {\n return this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._dateTime.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._dateTime.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return OffsetDateTime;\n}(DefaultInterfaceTemporal);\nfunction _init$h() {\n OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX);\n OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN);\n OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', function (temporal) {\n return OffsetDateTime.from(temporal);\n });\n}\n\nvar DAYS_PER_CYCLE = 146097;\nvar DAYS_0000_TO_1970 = DAYS_PER_CYCLE * 5 - (30 * 365 + 7);\nvar LocalDate = function (_ChronoLocalDate) {\n _inheritsLoose(LocalDate, _ChronoLocalDate);\n\n LocalDate.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone == null) {\n clock = Clock.systemDefaultZone();\n } else if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone;\n }\n\n return LocalDate.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDate.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n var offset = zone.rules().offset(instant);\n var epochSec = instant.epochSecond() + offset.totalSeconds();\n var epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY);\n return LocalDate.ofEpochDay(epochDay);\n };\n\n LocalDate.of = function of(year, month, dayOfMonth) {\n return new LocalDate(year, month, dayOfMonth);\n };\n\n LocalDate.ofYearDay = function ofYearDay(year, dayOfYear) {\n ChronoField.YEAR.checkValidValue(year);\n var leap = IsoChronology.isLeapYear(year);\n\n if (dayOfYear === 366 && leap === false) {\n assert(false, 'Invalid date \\'DayOfYear 366\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n }\n\n var moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1));\n var monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1;\n\n if (dayOfYear > monthEnd) {\n moy = moy.plus(1);\n }\n\n var dom = dayOfYear - moy.firstDayOfYear(leap) + 1;\n return new LocalDate(year, moy.value(), dom);\n };\n\n LocalDate.ofEpochDay = function ofEpochDay(epochDay) {\n if (epochDay === void 0) {\n epochDay = 0;\n }\n\n var adjust, adjustCycles, doyEst, yearEst, zeroDay;\n zeroDay = epochDay + DAYS_0000_TO_1970;\n zeroDay -= 60;\n adjust = 0;\n\n if (zeroDay < 0) {\n adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1;\n adjust = adjustCycles * 400;\n zeroDay += -adjustCycles * DAYS_PER_CYCLE;\n }\n\n yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE);\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n\n if (doyEst < 0) {\n yearEst--;\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n }\n\n yearEst += adjust;\n var marchDoy0 = doyEst;\n var marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153);\n var month = (marchMonth0 + 2) % 12 + 1;\n var dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1;\n yearEst += MathUtil.intDiv(marchMonth0, 10);\n var year = yearEst;\n return new LocalDate(year, month, dom);\n };\n\n LocalDate.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var date = temporal.query(TemporalQueries.localDate());\n\n if (date == null) {\n throw new DateTimeException(\"Unable to obtain LocalDate from TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return date;\n };\n\n LocalDate.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE;\n }\n\n assert(formatter != null, 'formatter', NullPointerException);\n return formatter.parse(text, LocalDate.FROM);\n };\n\n LocalDate._resolvePreviousValid = function _resolvePreviousValid(year, month, day) {\n switch (month) {\n case 2:\n day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28);\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n day = Math.min(day, 30);\n break;\n }\n\n return LocalDate.of(year, month, day);\n };\n\n function LocalDate(year, month, dayOfMonth) {\n var _this;\n\n _this = _ChronoLocalDate.call(this) || this;\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n\n if (month instanceof Month) {\n month = month.value();\n }\n\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n\n LocalDate._validate(_this._year, _this._month, _this._day);\n\n return _this;\n }\n\n LocalDate._validate = function _validate(year, month, dayOfMonth) {\n var dom;\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > 28) {\n dom = 31;\n\n switch (month) {\n case 2:\n dom = IsoChronology.isLeapYear(year) ? 29 : 28;\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n dom = 30;\n }\n\n if (dayOfMonth > dom) {\n if (dayOfMonth === 29) {\n assert(false, 'Invalid date \\'February 29\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n } else {\n assert(false, 'Invalid date \\'' + year + '\\' \\'' + month + '\\' \\'' + dayOfMonth + '\\'', DateTimeException);\n }\n }\n }\n };\n\n var _proto = LocalDate.prototype;\n\n _proto.isSupported = function isSupported(field) {\n return _ChronoLocalDate.prototype.isSupported.call(this, field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field.isDateBased()) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return ValueRange.of(1, this.lengthOfMonth());\n\n case ChronoField.DAY_OF_YEAR:\n return ValueRange.of(1, this.lengthOfYear());\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5);\n\n case ChronoField.YEAR_OF_ERA:\n return this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n assert(field != null, '', NullPointerException);\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.DAY_OF_WEEK:\n return this.dayOfWeek().value();\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return MathUtil.intMod(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return MathUtil.intMod(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.DAY_OF_YEAR:\n return this.dayOfYear();\n\n case ChronoField.EPOCH_DAY:\n return this.toEpochDay();\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return MathUtil.intDiv(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return MathUtil.intDiv(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._prolepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year >= 1 ? this._year : 1 - this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year >= 1 ? 1 : 0;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto._prolepticMonth = function _prolepticMonth() {\n return this._year * 12 + (this._month - 1);\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1;\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n var dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7);\n return DayOfWeek.of(dow0 + 1);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n switch (this._month) {\n case 2:\n return this.isLeapYear() ? 29 : 28;\n\n case 4:\n case 6:\n case 9:\n case 11:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n assert(field != null, 'field', NullPointerException);\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.DAY_OF_WEEK:\n return this.plusDays(newValue - this.dayOfWeek().value());\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n\n case ChronoField.DAY_OF_MONTH:\n return this.withDayOfMonth(newValue);\n\n case ChronoField.DAY_OF_YEAR:\n return this.withDayOfYear(newValue);\n\n case ChronoField.EPOCH_DAY:\n return LocalDate.ofEpochDay(newValue);\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year >= 1 ? newValue : 1 - newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n if (this._year === year) {\n return this;\n }\n\n ChronoField.YEAR.checkValidValue(year);\n return LocalDate._resolvePreviousValid(year, this._month, this._day);\n };\n\n _proto.withMonth = function withMonth(month) {\n var m = month instanceof Month ? month.value() : month;\n\n if (this._month === m) {\n return this;\n }\n\n ChronoField.MONTH_OF_YEAR.checkValidValue(m);\n return LocalDate._resolvePreviousValid(this._year, m, this._day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (this._day === dayOfMonth) {\n return this;\n }\n\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n if (this.dayOfYear() === dayOfYear) {\n return this;\n }\n\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.plusDays(amountToAdd);\n\n case ChronoUnit.WEEKS:\n return this.plusWeeks(amountToAdd);\n\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return LocalDate._resolvePreviousValid(newYear, this._month, this._day);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return LocalDate._resolvePreviousValid(newYear, newMonth, this._day);\n };\n\n _proto.plusWeeks = function plusWeeks(weeksToAdd) {\n return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7));\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n var mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd);\n return LocalDate.ofEpochDay(mjDay);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(yearsToSubtract * -1);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(monthsToSubtract * -1);\n };\n\n _proto.minusWeeks = function minusWeeks(weeksToSubtract) {\n return this.plusWeeks(weeksToSubtract * -1);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(daysToSubtract * -1);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this;\n }\n\n return _ChronoLocalDate.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDate.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(p1, p2) {\n if (arguments.length < 2) {\n return this.until1(p1);\n } else {\n return this.until2(p1, p2);\n }\n };\n\n _proto.until2 = function until2(endExclusive, unit) {\n var end = LocalDate.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.daysUntil(end);\n\n case ChronoUnit.WEEKS:\n return MathUtil.intDiv(this.daysUntil(end), 7);\n\n case ChronoUnit.MONTHS:\n return this._monthsUntil(end);\n\n case ChronoUnit.YEARS:\n return MathUtil.intDiv(this._monthsUntil(end), 12);\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(this._monthsUntil(end), 120);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(this._monthsUntil(end), 1200);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(this._monthsUntil(end), 12000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.daysUntil = function daysUntil(end) {\n return end.toEpochDay() - this.toEpochDay();\n };\n\n _proto._monthsUntil = function _monthsUntil(end) {\n var packed1 = this._prolepticMonth() * 32 + this.dayOfMonth();\n var packed2 = end._prolepticMonth() * 32 + end.dayOfMonth();\n return MathUtil.intDiv(packed2 - packed1, 32);\n };\n\n _proto.until1 = function until1(endDate) {\n var end = LocalDate.from(endDate);\n\n var totalMonths = end._prolepticMonth() - this._prolepticMonth();\n\n var days = end._day - this._day;\n\n if (totalMonths > 0 && days < 0) {\n totalMonths--;\n var calcDate = this.plusMonths(totalMonths);\n days = end.toEpochDay() - calcDate.toEpochDay();\n } else if (totalMonths < 0 && days > 0) {\n totalMonths++;\n days -= end.lengthOfMonth();\n }\n\n var years = MathUtil.intDiv(totalMonths, 12);\n var months = MathUtil.intMod(totalMonths, 12);\n return Period.of(years, months, days);\n };\n\n _proto.atTime = function atTime() {\n if (arguments.length === 1) {\n return this.atTime1.apply(this, arguments);\n } else {\n return this.atTime4.apply(this, arguments);\n }\n };\n\n _proto.atTime1 = function atTime1(time) {\n requireNonNull(time, 'time');\n\n if (time instanceof LocalTime) {\n return LocalDateTime.of(this, time);\n } else if (time instanceof OffsetTime) {\n return this._atTimeOffsetTime(time);\n } else {\n throw new IllegalArgumentException('time must be an instance of LocalTime or OffsetTime' + (time && time.constructor && time.constructor.name ? ', but is ' + time.constructor.name : ''));\n }\n };\n\n _proto.atTime4 = function atTime4(hour, minute, second, nanoOfSecond) {\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond));\n };\n\n _proto._atTimeOffsetTime = function _atTimeOffsetTime(time) {\n return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset());\n };\n\n _proto.atStartOfDay = function atStartOfDay(zone) {\n if (zone != null) {\n return this.atStartOfDayWithZone(zone);\n } else {\n return LocalDateTime.of(this, LocalTime.MIDNIGHT);\n }\n };\n\n _proto.atStartOfDayWithZone = function atStartOfDayWithZone(zone) {\n requireNonNull(zone, 'zone');\n var ldt = this.atTime(LocalTime.MIDNIGHT);\n\n if (zone instanceof ZoneOffset === false) {\n var trans = zone.rules().transition(ldt);\n\n if (trans != null && trans.isGap()) {\n ldt = trans.dateTimeAfter();\n }\n }\n\n return ZonedDateTime.of(ldt, zone);\n };\n\n _proto.toEpochDay = function toEpochDay() {\n var y = this._year;\n var m = this._month;\n var total = 0;\n total += 365 * y;\n\n if (y >= 0) {\n total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400);\n } else {\n total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400);\n }\n\n total += MathUtil.intDiv(367 * m - 362, 12);\n total += this.dayOfMonth() - 1;\n\n if (m > 2) {\n total--;\n\n if (!IsoChronology.isLeapYear(y)) {\n total--;\n }\n }\n\n return total - DAYS_0000_TO_1970;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDate, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(otherDate) {\n var cmp = this._year - otherDate._year;\n\n if (cmp === 0) {\n cmp = this._month - otherDate._month;\n\n if (cmp === 0) {\n cmp = this._day - otherDate._day;\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDate) {\n return this._compareTo0(other) === 0;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n return MathUtil.hash(yearValue & 0xFFFFF800 ^ (yearValue << 11) + (monthValue << 6) + dayValue);\n };\n\n _proto.toString = function toString() {\n var dayString, monthString, yearString;\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n var absYear = Math.abs(yearValue);\n\n if (absYear < 1000) {\n if (yearValue < 0) {\n yearString = '-' + ('' + (yearValue - 10000)).slice(-4);\n } else {\n yearString = ('' + (yearValue + 10000)).slice(-4);\n }\n } else {\n if (yearValue > 9999) {\n yearString = '+' + yearValue;\n } else {\n yearString = '' + yearValue;\n }\n }\n\n if (monthValue < 10) {\n monthString = '-0' + monthValue;\n } else {\n monthString = '-' + monthValue;\n }\n\n if (dayValue < 10) {\n dayString = '-0' + dayValue;\n } else {\n dayString = '-' + dayValue;\n }\n\n return yearString + monthString + dayString;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return _ChronoLocalDate.prototype.format.call(this, formatter);\n };\n\n return LocalDate;\n}(ChronoLocalDate);\nfunction _init$i() {\n LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1);\n LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31);\n LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0);\n LocalDate.FROM = createTemporalQuery('LocalDate.FROM', function (temporal) {\n return LocalDate.from(temporal);\n });\n}\n\nvar ChronoLocalDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDateTime, _DefaultInterfaceTemp);\n\n function ChronoLocalDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDateTime.prototype;\n\n _proto.chronology = function chronology() {\n return this.toLocalDate().chronology();\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay());\n };\n\n _proto.toInstant = function toInstant(offset) {\n requireInstance(offset, ZoneOffset, 'zoneId');\n return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond(offset) {\n requireNonNull(offset, 'offset');\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= offset.totalSeconds();\n return MathUtil.safeToInt(secs);\n };\n\n return ChronoLocalDateTime;\n}(DefaultInterfaceTemporal);\n\nvar LocalDateTime = function (_ChronoLocalDateTime) {\n _inheritsLoose(LocalDateTime, _ChronoLocalDateTime);\n\n LocalDateTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalDateTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalDateTime._now(clockOrZone);\n } else {\n return LocalDateTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalDateTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n return LocalDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDateTime._ofEpochMillis = function _ofEpochMillis(epochMilli, offset) {\n var localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000;\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.of = function of() {\n if (arguments.length <= 2) {\n return LocalDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return LocalDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n LocalDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var date = LocalDate.of(year, month, dayOfMonth);\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofDateAndTime = function ofDateAndTime(date, time) {\n requireNonNull(date, 'date');\n requireNonNull(time, 'time');\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n var offset = zone.rules().offset(instant);\n return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n };\n\n LocalDateTime.ofEpochSecond = function ofEpochSecond(epochSecond, nanoOfSecond, offset) {\n if (epochSecond === void 0) {\n epochSecond = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (arguments.length === 2 && nanoOfSecond instanceof ZoneOffset) {\n offset = nanoOfSecond;\n nanoOfSecond = 0;\n }\n\n requireNonNull(offset, 'offset');\n var localSecond = epochSecond + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof LocalDateTime) {\n return temporal;\n } else if (temporal instanceof ZonedDateTime) {\n return temporal.toLocalDateTime();\n }\n\n try {\n var date = LocalDate.from(temporal);\n var time = LocalTime.from(temporal);\n return new LocalDateTime(date, time);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain LocalDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n LocalDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalDateTime.FROM);\n };\n\n function LocalDateTime(date, time) {\n var _this;\n\n _this = _ChronoLocalDateTime.call(this) || this;\n requireInstance(date, LocalDate, 'date');\n requireInstance(time, LocalTime, 'time');\n _this._date = date;\n _this._time = time;\n return _this;\n }\n\n var _proto = LocalDateTime.prototype;\n\n _proto._withDateTime = function _withDateTime(newDate, newTime) {\n if (this._date.equals(newDate) && this._time.equals(newTime)) {\n return this;\n }\n\n return new LocalDateTime(newDate, newTime);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.range(field) : this._date.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.get(field) : this._date.get(field);\n }\n\n return _ChronoLocalDateTime.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.year = function year() {\n return this._date.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._date.monthValue();\n };\n\n _proto.month = function month() {\n return this._date.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._date.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._date.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._date.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return this._withDateTime(adjuster, this._time);\n } else if (adjuster instanceof LocalTime) {\n return this._withDateTime(this._date, adjuster);\n } else if (adjuster instanceof LocalDateTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field.isTimeBased()) {\n return this._withDateTime(this._date, this._time.with(field, newValue));\n } else {\n return this._withDateTime(this._date.with(field, newValue), this._time);\n }\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTime(this._date.withYear(year), this._time);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTime(this._date.withMonth(month), this._time);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time);\n };\n\n _proto.withHour = function withHour(hour) {\n var newTime = this._time.withHour(hour);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withMinute = function withMinute(minute) {\n var newTime = this._time.withMinute(minute);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withSecond = function withSecond(second) {\n var newTime = this._time.withSecond(second);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n var newTime = this._time.withNano(nanoOfSecond);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTime(this._date, this._time.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12);\n }\n\n return this._withDateTime(this._date.plus(amountToAdd, unit), this._time);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n var newDate = this._date.plusYears(years);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n var newDate = this._date.plusMonths(months);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n var newDate = this._date.plusWeeks(weeks);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusDays = function plusDays(days) {\n var newDate = this._date.plusDays(days);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1);\n };\n\n _proto._plusWithOverflow = function _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) {\n if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) {\n return this._withDateTime(newDate, this._time);\n }\n\n var totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY);\n totDays *= sign;\n var totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY) * LocalTime.NANOS_PER_MINUTE + MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY) * LocalTime.NANOS_PER_HOUR;\n\n var curNoD = this._time.toNanoOfDay();\n\n totNanos = totNanos * sign + curNoD;\n totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY);\n var newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY);\n var newTime = newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD);\n return this._withDateTime(newDate.plusDays(totDays), newTime);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n return _ChronoLocalDateTime.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDateTime.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n if (unit.isTimeBased()) {\n var daysUntil = this._date.daysUntil(end._date);\n\n var timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay();\n\n if (daysUntil > 0 && timeUntil < 0) {\n daysUntil--;\n timeUntil += LocalTime.NANOS_PER_DAY;\n } else if (daysUntil < 0 && timeUntil > 0) {\n daysUntil++;\n timeUntil -= LocalTime.NANOS_PER_DAY;\n }\n\n var amount = daysUntil;\n\n switch (unit) {\n case ChronoUnit.NANOS:\n amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY);\n return MathUtil.safeAdd(amount, timeUntil);\n\n case ChronoUnit.MICROS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000));\n\n case ChronoUnit.MILLIS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000));\n\n case ChronoUnit.SECONDS:\n amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND));\n\n case ChronoUnit.MINUTES:\n amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n amount = MathUtil.safeMultiply(amount, 2);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR * 12));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n var endDate = end._date;\n var endTime = end._time;\n\n if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) {\n endDate = endDate.minusDays(1);\n } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) {\n endDate = endDate.plusDays(1);\n }\n\n return this._date.until(endDate, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.of(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.of(this, zone);\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._date;\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDateTime, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(other) {\n var cmp = this._date.compareTo(other.toLocalDate());\n\n if (cmp === 0) {\n cmp = this._time.compareTo(other.toLocalTime());\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDateTime) {\n return this._date.equals(other._date) && this._time.equals(other._time);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._date.hashCode() ^ this._time.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._date.toString() + 'T' + this._time.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalDateTime;\n}(ChronoLocalDateTime);\nfunction _init$j() {\n LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);\n LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);\n LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', function (temporal) {\n return LocalDateTime.from(temporal);\n });\n}\n\nvar LocalTime = function (_Temporal) {\n _inheritsLoose(LocalTime, _Temporal);\n\n LocalTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalTime._now(clockOrZone);\n } else {\n return LocalTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalTime._now = function _now(clock) {\n if (clock === void 0) {\n clock = Clock.systemDefaultZone();\n }\n\n requireNonNull(clock, 'clock');\n return LocalTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n var offset = zone.rules().offset(instant);\n var secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY);\n secsOfDay = MathUtil.intMod(secsOfDay + offset.totalSeconds(), LocalTime.SECONDS_PER_DAY);\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n return LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n };\n\n LocalTime.of = function of(hour, minute, second, nanoOfSecond) {\n return new LocalTime(hour, minute, second, nanoOfSecond);\n };\n\n LocalTime.ofSecondOfDay = function ofSecondOfDay(secondOfDay, nanoOfSecond) {\n if (secondOfDay === void 0) {\n secondOfDay = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n var hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR);\n secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR;\n var minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE);\n secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE;\n return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond);\n };\n\n LocalTime.ofNanoOfDay = function ofNanoOfDay(nanoOfDay) {\n if (nanoOfDay === void 0) {\n nanoOfDay = 0;\n }\n\n ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay);\n var hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR);\n nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR;\n var minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE);\n nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE;\n var seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND);\n nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND;\n return new LocalTime(hours, minutes, seconds, nanoOfDay);\n };\n\n LocalTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var time = temporal.query(TemporalQueries.localTime());\n\n if (time == null) {\n throw new DateTimeException(\"Unable to obtain LocalTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return time;\n };\n\n LocalTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalTime.FROM);\n };\n\n function LocalTime(hour, minute, second, nanoOfSecond) {\n var _this;\n\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n _this = _Temporal.call(this) || this;\n\n var _hour = MathUtil.safeToInt(hour);\n\n var _minute = MathUtil.safeToInt(minute);\n\n var _second = MathUtil.safeToInt(second);\n\n var _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond);\n\n LocalTime._validate(_hour, _minute, _second, _nanoOfSecond);\n\n if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) {\n if (!LocalTime.HOURS[_hour]) {\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n LocalTime.HOURS[_hour] = _assertThisInitialized(_this);\n }\n\n return LocalTime.HOURS[_hour] || _assertThisInitialized(_this);\n }\n\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n return _this;\n }\n\n LocalTime._validate = function _validate(hour, minute, second, nanoOfSecond) {\n ChronoField.HOUR_OF_DAY.checkValidValue(hour);\n ChronoField.MINUTE_OF_HOUR.checkValidValue(minute);\n ChronoField.SECOND_OF_MINUTE.checkValidValue(second);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n };\n\n var _proto = LocalTime.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n requireNonNull(field);\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nano;\n\n case ChronoField.NANO_OF_DAY:\n return this.toNanoOfDay();\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this._second;\n\n case ChronoField.SECOND_OF_DAY:\n return this.toSecondOfDay();\n\n case ChronoField.MINUTE_OF_HOUR:\n return this._minute;\n\n case ChronoField.MINUTE_OF_DAY:\n return this._hour * 60 + this._minute;\n\n case ChronoField.HOUR_OF_AMPM:\n return MathUtil.intMod(this._hour, 12);\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n {\n var ham = MathUtil.intMod(this._hour, 12);\n return ham % 12 === 0 ? 12 : ham;\n }\n\n case ChronoField.HOUR_OF_DAY:\n return this._hour;\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this._hour === 0 ? 24 : this._hour;\n\n case ChronoField.AMPM_OF_DAY:\n return MathUtil.intDiv(this._hour, 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto.hour = function hour() {\n return this._hour;\n };\n\n _proto.minute = function minute() {\n return this._minute;\n };\n\n _proto.second = function second() {\n return this._second;\n };\n\n _proto.nano = function nano() {\n return this._nano;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this.withNano(newValue);\n\n case ChronoField.NANO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue);\n\n case ChronoField.MICRO_OF_SECOND:\n return this.withNano(newValue * 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return this.withNano(newValue * 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this.withSecond(newValue);\n\n case ChronoField.SECOND_OF_DAY:\n return this.plusSeconds(newValue - this.toSecondOfDay());\n\n case ChronoField.MINUTE_OF_HOUR:\n return this.withMinute(newValue);\n\n case ChronoField.MINUTE_OF_DAY:\n return this.plusMinutes(newValue - (this._hour * 60 + this._minute));\n\n case ChronoField.HOUR_OF_AMPM:\n return this.plusHours(newValue - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.HOUR_OF_DAY:\n return this.withHour(newValue);\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this.withHour(newValue === 24 ? 0 : newValue);\n\n case ChronoField.AMPM_OF_DAY:\n return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withHour = function withHour(hour) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (this._hour === hour) {\n return this;\n }\n\n return new LocalTime(hour, this._minute, this._second, this._nano);\n };\n\n _proto.withMinute = function withMinute(minute) {\n if (minute === void 0) {\n minute = 0;\n }\n\n if (this._minute === minute) {\n return this;\n }\n\n return new LocalTime(this._hour, minute, this._second, this._nano);\n };\n\n _proto.withSecond = function withSecond(second) {\n if (second === void 0) {\n second = 0;\n }\n\n if (this._second === second) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, second, this._nano);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (this._nano === nanoOfSecond) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = this.toNanoOfDay();\n return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n if (hoursToAdd === 0) {\n return this;\n }\n\n var newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY);\n return new LocalTime(newHour, this._minute, this._second, this._nano);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n if (minutesToAdd === 0) {\n return this;\n }\n\n var mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute;\n var newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY);\n\n if (mofd === newMofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR);\n var newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR);\n return new LocalTime(newHour, newMinute, this._second, this._nano);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n if (secondsToAdd === 0) {\n return this;\n }\n\n var sofd = this._hour * LocalTime.SECONDS_PER_HOUR + this._minute * LocalTime.SECONDS_PER_MINUTE + this._second;\n var newSofd = MathUtil.intMod(MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY, LocalTime.SECONDS_PER_DAY);\n\n if (sofd === newSofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE);\n return new LocalTime(newHour, newMinute, newSecond, this._nano);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n if (nanosToAdd === 0) {\n return this;\n }\n\n var nofd = this.toNanoOfDay();\n var newNofd = MathUtil.intMod(MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY, LocalTime.NANOS_PER_DAY);\n\n if (nofd === newNofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE);\n var newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND);\n return new LocalTime(newHour, newMinute, newSecond, newNano);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY));\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY));\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY));\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY));\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localTime()) {\n return this;\n }\n\n if (_query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset() || _query === TemporalQueries.localDate()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end.toNanoOfDay() - this.toNanoOfDay();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(nanosUntil, 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.intDiv(nanosUntil, 1000000);\n\n case ChronoUnit.SECONDS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDate = function atDate(date) {\n return LocalDateTime.of(date, this);\n };\n\n _proto.toSecondOfDay = function toSecondOfDay() {\n var total = this._hour * LocalTime.SECONDS_PER_HOUR;\n total += this._minute * LocalTime.SECONDS_PER_MINUTE;\n total += this._second;\n return total;\n };\n\n _proto.toNanoOfDay = function toNanoOfDay() {\n var total = this._hour * LocalTime.NANOS_PER_HOUR;\n total += this._minute * LocalTime.NANOS_PER_MINUTE;\n total += this._second * LocalTime.NANOS_PER_SECOND;\n total += this._nano;\n return total;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalTime, 'other');\n var cmp = MathUtil.compareNumbers(this._hour, other._hour);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._minute, other._minute);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._second, other._second);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._nano, other._nano);\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalTime) {\n return this._hour === other._hour && this._minute === other._minute && this._second === other._second && this._nano === other._nano;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var nod = this.toNanoOfDay();\n return MathUtil.hash(nod);\n };\n\n _proto.toString = function toString() {\n var buf = '';\n var hourValue = this._hour;\n var minuteValue = this._minute;\n var secondValue = this._second;\n var nanoValue = this._nano;\n buf += hourValue < 10 ? '0' : '';\n buf += hourValue;\n buf += minuteValue < 10 ? ':0' : ':';\n buf += minuteValue;\n\n if (secondValue > 0 || nanoValue > 0) {\n buf += secondValue < 10 ? ':0' : ':';\n buf += secondValue;\n\n if (nanoValue > 0) {\n buf += '.';\n\n if (MathUtil.intMod(nanoValue, 1000000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000000) + 1000)).substring(1);\n } else if (MathUtil.intMod(nanoValue, 1000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000) + 1000000)).substring(1);\n } else {\n buf += ('' + (nanoValue + 1000000000)).substring(1);\n }\n }\n }\n\n return buf;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalTime;\n}(Temporal);\nfunction _init$k() {\n LocalTime.HOURS = [];\n\n for (var hour = 0; hour < 24; hour++) {\n LocalTime.of(hour, 0, 0, 0);\n }\n\n LocalTime.MIN = LocalTime.HOURS[0];\n LocalTime.MAX = new LocalTime(23, 59, 59, 999999999);\n LocalTime.MIDNIGHT = LocalTime.HOURS[0];\n LocalTime.NOON = LocalTime.HOURS[12];\n LocalTime.FROM = createTemporalQuery('LocalTime.FROM', function (temporal) {\n return LocalTime.from(temporal);\n });\n}\nLocalTime.HOURS_PER_DAY = 24;\nLocalTime.MINUTES_PER_HOUR = 60;\nLocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.SECONDS_PER_MINUTE = 60;\nLocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000;\nLocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000;\nLocalTime.NANOS_PER_SECOND = 1000000000;\nLocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE;\nLocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n\nvar NANOS_PER_MILLI = 1000000;\nvar Instant = function (_Temporal) {\n _inheritsLoose(Instant, _Temporal);\n\n Instant.now = function now(clock) {\n if (clock === void 0) {\n clock = Clock.systemUTC();\n }\n\n return clock.instant();\n };\n\n Instant.ofEpochSecond = function ofEpochSecond(epochSecond, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Instant._create(secs, nos);\n };\n\n Instant.ofEpochMilli = function ofEpochMilli(epochMilli) {\n var secs = MathUtil.floorDiv(epochMilli, 1000);\n var mos = MathUtil.floorMod(epochMilli, 1000);\n return Instant._create(secs, mos * 1000000);\n };\n\n Instant.from = function from(temporal) {\n try {\n var instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return Instant.ofEpochSecond(instantSecs, nanoOfSecond);\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Instant from TemporalAccessor: ' + temporal + ', type ' + typeof temporal, ex);\n }\n };\n\n Instant.parse = function parse(text) {\n return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM);\n };\n\n Instant._create = function _create(seconds, nanoOfSecond) {\n if (seconds === 0 && nanoOfSecond === 0) {\n return Instant.EPOCH;\n }\n\n return new Instant(seconds, nanoOfSecond);\n };\n\n Instant._validate = function _validate(seconds, nanoOfSecond) {\n if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n\n if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n };\n\n function Instant(seconds, nanoOfSecond) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n\n Instant._validate(seconds, nanoOfSecond);\n\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanoOfSecond);\n return _this;\n }\n\n var _proto = Instant.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND;\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS;\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nanos;\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nanos, 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n\n case ChronoField.INSTANT_SECONDS:\n return this._seconds;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.epochSecond = function epochSecond() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.MILLI_OF_SECOND:\n {\n var nval = newValue * NANOS_PER_MILLI;\n return nval !== this._nanos ? Instant._create(this._seconds, nval) : this;\n }\n\n case ChronoField.MICRO_OF_SECOND:\n {\n var _nval = newValue * 1000;\n\n return _nval !== this._nanos ? Instant._create(this._seconds, _nval) : this;\n }\n\n case ChronoField.NANO_OF_SECOND:\n return newValue !== this._nanos ? Instant._create(this._seconds, newValue) : this;\n\n case ChronoField.INSTANT_SECONDS:\n return newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos;\n\n var result = MathUtil.intDiv(nod, dur) * dur;\n return this.plusNanos(result - nod);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this._plus(MathUtil.intDiv(amountToAdd, 1000000), MathUtil.intMod(amountToAdd, 1000000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2));\n\n case ChronoUnit.DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this._plus(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this._plus(0, nanosToAdd);\n };\n\n _proto._plus = function _plus(secondsToAdd, nanosToAdd) {\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = this._seconds + secondsToAdd;\n epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND;\n return Instant.ofEpochSecond(epochSec, nanoAdjustment);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(secondsToSubtract * -1);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return this.plusMillis(-1 * millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * nanosToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n }\n\n if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = Instant.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this._nanosUntil(end);\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(this._nanosUntil(end), 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli());\n\n case ChronoUnit.SECONDS:\n return this._secondsUntil(end);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), 12 * LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto._nanosUntil = function _nanosUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND);\n return MathUtil.safeAdd(totalNanos, end.nano() - this.nano());\n };\n\n _proto._secondsUntil = function _secondsUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var nanosDiff = end.nano() - this.nano();\n\n if (secsDiff > 0 && nanosDiff < 0) {\n secsDiff--;\n } else if (secsDiff < 0 && nanosDiff > 0) {\n secsDiff++;\n }\n\n return secsDiff;\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.ofInstant(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.ofInstant(this, zone);\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n var millis = MathUtil.safeMultiply(this._seconds, 1000);\n return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n };\n\n _proto.compareTo = function compareTo(otherInstant) {\n requireNonNull(otherInstant, 'otherInstant');\n requireInstance(otherInstant, Instant, 'otherInstant');\n var cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds);\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherInstant._nanos;\n };\n\n _proto.isAfter = function isAfter(otherInstant) {\n return this.compareTo(otherInstant) > 0;\n };\n\n _proto.isBefore = function isBefore(otherInstant) {\n return this.compareTo(otherInstant) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Instant) {\n return this.epochSecond() === other.epochSecond() && this.nano() === other.nano();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._seconds, this._nanos);\n };\n\n _proto.toString = function toString() {\n return DateTimeFormatter.ISO_INSTANT.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Instant;\n}(Temporal);\nfunction _init$l() {\n Instant.MIN_SECONDS = -31619119219200;\n Instant.MAX_SECONDS = 31494816403199;\n Instant.EPOCH = new Instant(0, 0);\n Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0);\n Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999);\n Instant.FROM = createTemporalQuery('Instant.FROM', function (temporal) {\n return Instant.from(temporal);\n });\n}\n\nvar Clock = function () {\n function Clock() {}\n\n Clock.systemUTC = function systemUTC() {\n return new SystemClock(ZoneOffset.UTC);\n };\n\n Clock.systemDefaultZone = function systemDefaultZone() {\n return new SystemClock(ZoneId.systemDefault());\n };\n\n Clock.system = function system(zone) {\n return new SystemClock(zone);\n };\n\n Clock.fixed = function fixed(fixedInstant, zoneId) {\n return new FixedClock(fixedInstant, zoneId);\n };\n\n Clock.offset = function offset(baseClock, duration) {\n return new OffsetClock(baseClock, duration);\n };\n\n var _proto = Clock.prototype;\n\n _proto.millis = function millis() {\n abstractMethodFail('Clock.millis');\n };\n\n _proto.instant = function instant() {\n abstractMethodFail('Clock.instant');\n };\n\n _proto.zone = function zone() {\n abstractMethodFail('Clock.zone');\n };\n\n _proto.withZone = function withZone() {\n abstractMethodFail('Clock.withZone');\n };\n\n return Clock;\n}();\n\nvar SystemClock = function (_Clock) {\n _inheritsLoose(SystemClock, _Clock);\n\n function SystemClock(zone) {\n var _this;\n\n requireNonNull(zone, 'zone');\n _this = _Clock.call(this) || this;\n _this._zone = zone;\n return _this;\n }\n\n var _proto2 = SystemClock.prototype;\n\n _proto2.zone = function zone() {\n return this._zone;\n };\n\n _proto2.millis = function millis() {\n return new Date().getTime();\n };\n\n _proto2.instant = function instant() {\n return Instant.ofEpochMilli(this.millis());\n };\n\n _proto2.equals = function equals(obj) {\n if (obj instanceof SystemClock) {\n return this._zone.equals(obj._zone);\n }\n\n return false;\n };\n\n _proto2.withZone = function withZone(zone) {\n if (zone.equals(this._zone)) {\n return this;\n }\n\n return new SystemClock(zone);\n };\n\n _proto2.toString = function toString() {\n return 'SystemClock[' + this._zone.toString() + ']';\n };\n\n return SystemClock;\n}(Clock);\n\nvar FixedClock = function (_Clock2) {\n _inheritsLoose(FixedClock, _Clock2);\n\n function FixedClock(fixedInstant, zoneId) {\n var _this2;\n\n _this2 = _Clock2.call(this) || this;\n _this2._instant = fixedInstant;\n _this2._zoneId = zoneId;\n return _this2;\n }\n\n var _proto3 = FixedClock.prototype;\n\n _proto3.instant = function instant() {\n return this._instant;\n };\n\n _proto3.millis = function millis() {\n return this._instant.toEpochMilli();\n };\n\n _proto3.zone = function zone() {\n return this._zoneId;\n };\n\n _proto3.toString = function toString() {\n return 'FixedClock[]';\n };\n\n _proto3.equals = function equals(obj) {\n if (obj instanceof FixedClock) {\n return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId);\n }\n\n return false;\n };\n\n _proto3.withZone = function withZone(zone) {\n if (zone.equals(this._zoneId)) {\n return this;\n }\n\n return new FixedClock(this._instant, zone);\n };\n\n return FixedClock;\n}(Clock);\n\nvar OffsetClock = function (_Clock3) {\n _inheritsLoose(OffsetClock, _Clock3);\n\n function OffsetClock(baseClock, offset) {\n var _this3;\n\n _this3 = _Clock3.call(this) || this;\n _this3._baseClock = baseClock;\n _this3._offset = offset;\n return _this3;\n }\n\n var _proto4 = OffsetClock.prototype;\n\n _proto4.zone = function zone() {\n return this._baseClock.zone();\n };\n\n _proto4.withZone = function withZone(zone) {\n if (zone.equals(this._baseClock.zone())) {\n return this;\n }\n\n return new OffsetClock(this._baseClock.withZone(zone), this._offset);\n };\n\n _proto4.millis = function millis() {\n return this._baseClock.millis() + this._offset.toMillis();\n };\n\n _proto4.instant = function instant() {\n return this._baseClock.instant().plus(this._offset);\n };\n\n _proto4.equals = function equals(obj) {\n if (obj instanceof OffsetClock) {\n return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset);\n }\n\n return false;\n };\n\n _proto4.toString = function toString() {\n return 'OffsetClock[' + this._baseClock + ',' + this._offset + ']';\n };\n\n return OffsetClock;\n}(Clock);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneOffsetTransition = function () {\n ZoneOffsetTransition.of = function of(transition, offsetBefore, offsetAfter) {\n return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter);\n };\n\n function ZoneOffsetTransition(transition, offsetBefore, offsetAfter) {\n requireNonNull(transition, 'transition');\n requireNonNull(offsetBefore, 'offsetBefore');\n requireNonNull(offsetAfter, 'offsetAfter');\n\n if (offsetBefore.equals(offsetAfter)) {\n throw new IllegalArgumentException('Offsets must not be equal');\n }\n\n if (transition.nano() !== 0) {\n throw new IllegalArgumentException('Nano-of-second must be zero');\n }\n\n if (transition instanceof LocalDateTime) {\n this._transition = transition;\n } else {\n this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore);\n }\n\n this._offsetBefore = offsetBefore;\n this._offsetAfter = offsetAfter;\n }\n\n var _proto = ZoneOffsetTransition.prototype;\n\n _proto.instant = function instant() {\n return this._transition.toInstant(this._offsetBefore);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._transition.toEpochSecond(this._offsetBefore);\n };\n\n _proto.dateTimeBefore = function dateTimeBefore() {\n return this._transition;\n };\n\n _proto.dateTimeAfter = function dateTimeAfter() {\n return this._transition.plusSeconds(this.durationSeconds());\n };\n\n _proto.offsetBefore = function offsetBefore() {\n return this._offsetBefore;\n };\n\n _proto.offsetAfter = function offsetAfter() {\n return this._offsetAfter;\n };\n\n _proto.duration = function duration() {\n return Duration.ofSeconds(this.durationSeconds());\n };\n\n _proto.durationSeconds = function durationSeconds() {\n return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds();\n };\n\n _proto.isGap = function isGap() {\n return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds();\n };\n\n _proto.isOverlap = function isOverlap() {\n return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds();\n };\n\n _proto.isValidOffset = function isValidOffset(offset) {\n return this.isGap() ? false : this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset);\n };\n\n _proto.validOffsets = function validOffsets() {\n if (this.isGap()) {\n return [];\n } else {\n return [this._offsetBefore, this._offsetAfter];\n }\n };\n\n _proto.compareTo = function compareTo(transition) {\n return this.instant().compareTo(transition.instant());\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ZoneOffsetTransition) {\n var d = other;\n return this._transition.equals(d._transition) && this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter());\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ this._offsetAfter.hashCode() >>> 16;\n };\n\n _proto.toString = function toString() {\n return 'Transition[' + (this.isGap() ? 'Gap' : 'Overlap') + ' at ' + this._transition.toString() + this._offsetBefore.toString() + ' to ' + this._offsetAfter + ']';\n };\n\n return ZoneOffsetTransition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction _init$m() {\n TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', function (temporal) {\n return temporal.query(TemporalQueries.ZONE_ID);\n });\n TemporalQueries.CHRONO = createTemporalQuery('CHRONO', function (temporal) {\n return temporal.query(TemporalQueries.CHRONO);\n });\n TemporalQueries.PRECISION = createTemporalQuery('PRECISION', function (temporal) {\n return temporal.query(TemporalQueries.PRECISION);\n });\n TemporalQueries.OFFSET = createTemporalQuery('OFFSET', function (temporal) {\n if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {\n return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS));\n }\n\n return null;\n });\n TemporalQueries.ZONE = createTemporalQuery('ZONE', function (temporal) {\n var zone = temporal.query(TemporalQueries.ZONE_ID);\n return zone != null ? zone : temporal.query(TemporalQueries.OFFSET);\n });\n TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', function (temporal) {\n if (temporal.isSupported(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY));\n }\n\n return null;\n });\n TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', function (temporal) {\n if (temporal.isSupported(ChronoField.NANO_OF_DAY)) {\n return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY));\n }\n\n return null;\n });\n}\n\nvar SystemDefaultZoneRules = function (_ZoneRules) {\n _inheritsLoose(SystemDefaultZoneRules, _ZoneRules);\n\n function SystemDefaultZoneRules() {\n return _ZoneRules.apply(this, arguments) || this;\n }\n\n var _proto = SystemDefaultZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n return false;\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n var offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n var offsetInMinutes = new Date(epochMilli).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n var epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000;\n var offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset();\n var epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000;\n var offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1);\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n return [this.offsetOfLocalDateTime(localDateTime)];\n };\n\n _proto.transition = function transition() {\n return null;\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n return this.offsetOfInstant(instant);\n };\n\n _proto.daylightSavings = function daylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isDaylightSavings = function isDaylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isValidOffset = function isValidOffset(dateTime, offset) {\n return this.offsetOfLocalDateTime(dateTime).equals(offset);\n };\n\n _proto.nextTransition = function nextTransition() {\n this._throwNotSupported();\n };\n\n _proto.previousTransition = function previousTransition() {\n this._throwNotSupported();\n };\n\n _proto.transitions = function transitions() {\n this._throwNotSupported();\n };\n\n _proto.transitionRules = function transitionRules() {\n this._throwNotSupported();\n };\n\n _proto._throwNotSupported = function _throwNotSupported() {\n throw new DateTimeException('not supported operation');\n };\n\n _proto.equals = function equals(other) {\n if (this === other || other instanceof SystemDefaultZoneRules) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto.toString = function toString() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneRules;\n}(ZoneRules);\n\nvar SystemDefaultZoneId = function (_ZoneId) {\n _inheritsLoose(SystemDefaultZoneId, _ZoneId);\n\n function SystemDefaultZoneId() {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._rules = new SystemDefaultZoneRules();\n return _this;\n }\n\n var _proto = SystemDefaultZoneId.prototype;\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n return false;\n };\n\n _proto.id = function id() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneId;\n}(ZoneId);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdFactory = function () {\n function ZoneIdFactory() {}\n\n ZoneIdFactory.systemDefault = function systemDefault() {\n return SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n };\n\n ZoneIdFactory.getAvailableZoneIds = function getAvailableZoneIds() {\n return ZoneRulesProvider.getAvailableZoneIds();\n };\n\n ZoneIdFactory.of = function of(zoneId) {\n requireNonNull(zoneId, 'zoneId');\n\n if (zoneId === 'Z') {\n return ZoneOffset.UTC;\n }\n\n if (zoneId.length === 1) {\n throw new DateTimeException('Invalid zone: ' + zoneId);\n }\n\n if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) {\n return ZoneOffset.of(zoneId);\n }\n\n if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') {\n return new ZoneRegion(zoneId, ZoneOffset.UTC.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) {\n var offset = ZoneOffset.of(zoneId.substring(3));\n\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(zoneId.substring(0, 3), offset.rules());\n }\n\n return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) {\n var _offset = ZoneOffset.of(zoneId.substring(2));\n\n if (_offset.totalSeconds() === 0) {\n return new ZoneRegion('UT', _offset.rules());\n }\n\n return new ZoneRegion('UT' + _offset.id(), _offset.rules());\n }\n\n if (zoneId === 'SYSTEM') {\n return ZoneId.systemDefault();\n }\n\n return ZoneRegion.ofId(zoneId);\n };\n\n ZoneIdFactory.ofOffset = function ofOffset(prefix, offset) {\n requireNonNull(prefix, 'prefix');\n requireNonNull(offset, 'offset');\n\n if (prefix.length === 0) {\n return offset;\n }\n\n if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') {\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(prefix, offset.rules());\n }\n\n return new ZoneRegion(prefix + offset.id(), offset.rules());\n }\n\n throw new IllegalArgumentException('Invalid prefix, must be GMT, UTC or UT: ' + prefix);\n };\n\n ZoneIdFactory.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var obj = temporal.query(TemporalQueries.zone());\n\n if (obj == null) {\n throw new DateTimeException('Unable to obtain ZoneId from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return obj;\n };\n\n return ZoneIdFactory;\n}();\nvar SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null;\nfunction _init$n() {\n SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId();\n ZoneId.systemDefault = ZoneIdFactory.systemDefault;\n ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds;\n ZoneId.of = ZoneIdFactory.of;\n ZoneId.ofOffset = ZoneIdFactory.ofOffset;\n ZoneId.from = ZoneIdFactory.from;\n ZoneOffset.from = ZoneIdFactory.from;\n ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n ZoneId.UTC = ZoneOffset.ofTotalSeconds(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar isInit = false;\n\nfunction init() {\n if (isInit) {\n return;\n }\n\n isInit = true;\n _init$1();\n _init();\n _init$2();\n _init$3();\n _init$k();\n _init$8();\n _init$m();\n _init$4();\n _init$l();\n _init$i();\n _init$j();\n _init$d();\n _init$5();\n _init$c();\n _init$b();\n _init$6();\n _init$7();\n _init$g();\n _init$n();\n _init$e();\n _init$a();\n _init$9();\n _init$h();\n _init$f();\n}\n\ninit();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar ToNativeJsConverter = function () {\n function ToNativeJsConverter(temporal, zone) {\n var zonedDateTime;\n\n if (temporal instanceof LocalDate) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atStartOfDay(zone);\n } else if (temporal instanceof LocalDateTime) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atZone(zone);\n } else if (temporal instanceof ZonedDateTime) {\n if (zone == null) {\n zonedDateTime = temporal;\n } else {\n zonedDateTime = temporal.withZoneSameInstant(zone);\n }\n } else {\n throw new IllegalArgumentException('unsupported instance for convert operation:' + temporal);\n }\n\n this.instant = zonedDateTime.toInstant();\n }\n\n var _proto = ToNativeJsConverter.prototype;\n\n _proto.toDate = function toDate() {\n return new Date(this.instant.toEpochMilli());\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n return this.instant.toEpochMilli();\n };\n\n return ToNativeJsConverter;\n}();\n\nfunction convert(temporal, zone) {\n return new ToNativeJsConverter(temporal, zone);\n}\n\nvar NativeJsTemporal = function (_TemporalAccessor) {\n _inheritsLoose(NativeJsTemporal, _TemporalAccessor);\n\n function NativeJsTemporal(date, zone) {\n var _this;\n\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n _this = _TemporalAccessor.call(this) || this;\n _this._zone = zone;\n\n if (date instanceof Date) {\n _this._epochMilli = date.getTime();\n return _assertThisInitialized(_this);\n } else if (typeof date.toDate === 'function' && date.toDate() instanceof Date) {\n _this._epochMilli = date.toDate().getTime();\n return _assertThisInitialized(_this);\n }\n\n assert(false, 'date must be either a javascript date or a moment');\n return _this;\n }\n\n var _proto = NativeJsTemporal.prototype;\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.localTime()) {\n return LocalTime.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.zone()) {\n return this._zone;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return MathUtil.floorMod(this._epochMilli, 1000) * 1000000;\n\n case ChronoField.INSTANT_SECONDS:\n return MathUtil.floorDiv(this._epochMilli, 1000);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n return field === ChronoField.INSTANT_SECONDS || field === ChronoField.NANO_OF_SECOND;\n };\n\n return NativeJsTemporal;\n}(TemporalAccessor);\n\nfunction nativeJs(date, zone) {\n return new NativeJsTemporal(date, zone);\n}\n\nfunction bindUse(jsJoda) {\n var used = [];\n return function use(fn) {\n if (!~used.indexOf(fn)) {\n fn(jsJoda);\n used.push(fn);\n }\n\n return jsJoda;\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar _ = {\n assert: assert$1,\n DateTimeBuilder: DateTimeBuilder,\n DateTimeParseContext: DateTimeParseContext,\n DateTimePrintContext: DateTimePrintContext,\n MathUtil: MathUtil,\n StringUtil: StringUtil,\n StringBuilder: StringBuilder\n};\nvar jsJodaExports = {\n _: _,\n convert: convert,\n nativeJs: nativeJs,\n ArithmeticException: ArithmeticException,\n DateTimeException: DateTimeException,\n DateTimeParseException: DateTimeParseException,\n IllegalArgumentException: IllegalArgumentException,\n IllegalStateException: IllegalStateException,\n UnsupportedTemporalTypeException: UnsupportedTemporalTypeException,\n NullPointerException: NullPointerException,\n Clock: Clock,\n DayOfWeek: DayOfWeek,\n Duration: Duration,\n Instant: Instant,\n LocalDate: LocalDate,\n LocalTime: LocalTime,\n LocalDateTime: LocalDateTime,\n OffsetTime: OffsetTime,\n OffsetDateTime: OffsetDateTime,\n Month: Month,\n MonthDay: MonthDay,\n Period: Period,\n Year: Year,\n YearConstants: YearConstants,\n YearMonth: YearMonth,\n ZonedDateTime: ZonedDateTime,\n ZoneOffset: ZoneOffset,\n ZoneId: ZoneId,\n ZoneRegion: ZoneRegion,\n ZoneOffsetTransition: ZoneOffsetTransition,\n ZoneRules: ZoneRules,\n ZoneRulesProvider: ZoneRulesProvider,\n ChronoLocalDate: ChronoLocalDate,\n ChronoLocalDateTime: ChronoLocalDateTime,\n ChronoZonedDateTime: ChronoZonedDateTime,\n IsoChronology: IsoChronology,\n ChronoField: ChronoField,\n ChronoUnit: ChronoUnit,\n IsoFields: IsoFields,\n Temporal: Temporal,\n TemporalAccessor: TemporalAccessor,\n TemporalAdjuster: TemporalAdjuster,\n TemporalAdjusters: TemporalAdjusters,\n TemporalAmount: TemporalAmount,\n TemporalField: TemporalField,\n TemporalQueries: TemporalQueries,\n TemporalQuery: TemporalQuery,\n TemporalUnit: TemporalUnit,\n ValueRange: ValueRange,\n DateTimeFormatter: DateTimeFormatter,\n DateTimeFormatterBuilder: DateTimeFormatterBuilder,\n DecimalStyle: DecimalStyle,\n ResolverStyle: ResolverStyle,\n SignStyle: SignStyle,\n TextStyle: TextStyle\n};\nvar use = bindUse(jsJodaExports);\njsJodaExports.use = use;\n\nexport { ArithmeticException, ChronoField, ChronoLocalDate, ChronoLocalDateTime, ChronoUnit, ChronoZonedDateTime, Clock, DateTimeException, DateTimeFormatter, DateTimeFormatterBuilder, DateTimeParseException, DayOfWeek, DecimalStyle, Duration, IllegalArgumentException, IllegalStateException, Instant, IsoChronology, IsoFields, LocalDate, LocalDateTime, LocalTime, Month, MonthDay, NullPointerException, OffsetDateTime, OffsetTime, Period, ResolverStyle, SignStyle, Temporal, TemporalAccessor, TemporalAdjuster, TemporalAdjusters, TemporalAmount, TemporalField, TemporalQueries, TemporalQuery, TemporalUnit, TextStyle, UnsupportedTemporalTypeException, ValueRange, Year, YearConstants, YearMonth, ZoneId, ZoneOffset, ZoneOffsetTransition, ZoneRegion, ZoneRules, ZoneRulesProvider, ZonedDateTime, _, convert, nativeJs, use };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"package earth.worldwind.tutorials\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.ResourcePlatformDetails\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"b2b6bf999bb7eb17beafe2c2594b9e31\"\n\n public actual object images : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val aircraft_fighter: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fighter.png\\\")\") as String, fileName = \"aircraft_fighter.png\")\n\n public actual val worldwind_logo: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_logo.png\\\")\") as String, fileName = \"worldwind_logo.png\")\n\n public actual val aircraft_fixwing: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fixwing.png\\\")\") as String, fileName = \"aircraft_fixwing.png\")\n\n public actual val ehipcc: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/ehipcc.png\\\")\") as String, fileName = \"ehipcc.png\")\n\n public actual val pattern_sample_houndstooth: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/pattern_sample_houndstooth.png\\\")\") as String, fileName =\n \"pattern_sample_houndstooth.png\")\n\n public actual val airport_terminal: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/airport_terminal.png\\\")\") as String, fileName = \"airport_terminal.png\")\n\n public actual override fun values(): List = listOf(aircraft_fighter,\n worldwind_logo, aircraft_fixwing, ehipcc, pattern_sample_houndstooth, airport_terminal)\n }\n}\n","package earth.worldwind.tutorials\n\nabstract class AbstractTutorial {\n\n /**\n * Defines a list of custom actions\n */\n open val actions: ArrayList? = null\n\n /**\n * Runs any of custom actions listed in [actions]\n */\n open fun runAction(actionName: String) {}\n\n /**\n * Runs after switching to this example\n */\n open fun start() {}\n\n /**\n * Runs before switching to another example\n */\n open fun stop() {}\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport kotlinx.datetime.Clock\n\nclass BasicTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n var starFieldLayer: StarFieldLayer? = null\n var atmosphereLayer: AtmosphereLayer? = null\n\n override fun start() {\n super.start()\n engine.layers.run {\n val time = Clock.System.now()\n starFieldLayer = (getLayer(indexOfLayerNamed(\"StarField\")) as StarFieldLayer).apply { this.time = time }\n atmosphereLayer = (getLayer(indexOfLayerNamed(\"Atmosphere\")) as AtmosphereLayer).apply { this.time = time }\n }\n }\n\n override fun stop() {\n super.stop()\n starFieldLayer?.time = null\n atmosphereLayer?.time = null\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\n\nclass CameraViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setCameraAction()\n }\n\n private fun setCameraAction() {\n // Create a view of Point Mugu airport as seen from an aircraft above Oxnard, CA.\n val aircraft = Position.fromDegrees(34.2, -119.2, 3000.0) // Above Oxnard CA, altitude in meters\n val airport = Position.fromDegrees(34.1192744, -119.1195850, 4.0) // KNTD airport, Point Mugu CA, altitude MSL\n\n // Compute heading and tilt angles from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply the camera view\n engine.camera.set(\n aircraft.latitude, aircraft.longitude, aircraft.altitude, AltitudeMode.ABSOLUTE, heading, tilt, roll = Angle.ZERO\n )\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.heatmap.ElevationHeatmapLayer\n\nclass ElevationHeatmapTutorial(private val engine: WorldWind) : AbstractTutorial() {\n var elevationHeatmapLayer = ElevationHeatmapLayer();\n\n override fun start() {\n super.start()\n engine.layers.addLayer(elevationHeatmapLayer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position.fromDegrees(50.4501 , 30.5234 , 0.0), // Kyiv\n altitudeMode = AltitudeMode.ABSOLUTE, range = 1e4,\n heading = Angle.ZERO, tilt = 0.0.degrees, roll = Angle.ZERO\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(elevationHeatmapLayer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Ellipse\n\nclass EllipsesTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Ellipses\").apply {\n // Create a surface ellipse with the default attributes, a 500km major-radius and a 300km minor-radius. Surface\n // ellipses are configured with a CLAMP_TO_GROUND altitudeMode and followTerrain set to true.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with custom attributes that make the interior 50% transparent and increase the\n // outline width.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -100.0, 0.0), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with a heading of 45 degrees, causing the semi-major axis to point Northeast and the\n // semi-minor axis to point Southeast.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n heading = 45.0.degrees\n }\n )\n\n // Create a surface circle with the default attributes and 400km radius.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -100.0, 0.0), 400000.0, 400000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create an ellipse with the default attributes, an altitude of 200 km, and a 500km major-radius and a 300km\n // minor-radius.\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -120.0, 200e3), 500000.0, 300000.0)\n )\n\n // Create an ellipse with custom attributes that make the interior 50% transparent and an extruded outline with\n // vertical lines\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -100.0, 200e3), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n isDrawVerticals = true\n }\n isExtrude = true\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-110.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.format.format\nimport kotlin.jvm.JvmInline\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n@JvmInline\nvalue class Angle private constructor(\n /**\n * Size of this angle in degrees.\n */\n val inDegrees: Double\n): Comparable {\n /**\n * Size of this angle in radians. This may be useful for functions, which\n * generally take radians as trigonometric arguments.\n */\n val inRadians get() = toRadians(inDegrees)\n /**\n * Size of this angle in minutes.\n */\n val inMinutes get() = toMinutes(inDegrees)\n /**\n * Size of this angle in seconds.\n */\n val inSeconds get() = toSeconds(inDegrees)\n /**\n * Size of this angle in milliradians.\n */\n val inMrad get() = toMrad(inDegrees)\n /**\n * Size of this angle in mil NATO.\n */\n val inMilNATO get() = toMilNATO(inDegrees)\n /**\n * Size of this angle in mil Warsaw Pact.\n */\n val inMilWP get() = toMilWP(inDegrees)\n /**\n * Size of this angle in Streck.\n */\n val inStreck get() = toStreck(inDegrees)\n /**\n * Size of this angle in minute of angle (MOA).\n */\n val inMOA get() = toMOA(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of latitude, [-90, 90].\n */\n val isValidLatitude get() = isValidLatitude(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of longitude, [-180, 180].\n */\n val isValidLongitude get() = isValidLongitude(inDegrees)\n /**\n * Return North or South notation depends on sign\n */\n val latitudeLetter get() = if (inDegrees < 0.0) \"S\" else \"N\"\n /**\n * Return West or East notation depends on sign\n */\n val longitudeLetter get() = if (inDegrees < 0.0) \"W\" else \"E\"\n /**\n * Relative latitude (from wiki.openstreetmap.org)\n */\n val relativeLatitude get() = (1 - ln(tan(inRadians) + 1 / cos(inRadians)) / PI) / 2\n /**\n * Relative longitude (from wiki.openstreetmap.org)\n */\n val relativeLongitude get() = (inDegrees + 180.0) / 360.0\n\n companion object {\n /** Represents an angle of zero degrees */\n @JvmStatic val ZERO = 0.0.degrees\n /** Represents a right angle of positive 90 degrees */\n @JvmStatic val POS90 = 90.0.degrees\n /** Represents a right angle of negative 90 degrees */\n @JvmStatic val NEG90 = (-90.0).degrees\n /** Represents an angle of positive 180 degrees */\n @JvmStatic val POS180 = 180.0.degrees\n /** Represents an angle of negative 180 degrees */\n @JvmStatic val NEG180 = (-180.0).degrees\n /** Represents an angle of positive 360 degrees */\n @JvmStatic val POS360 = 360.0.degrees\n /** Represents an angle of negative 360 degrees */\n @JvmStatic val NEG360 = (-360.0).degrees\n /** Represents an angle of 1 minute */\n @JvmStatic val MINUTE = (1.0 / 60.0).degrees\n /** Represents an angle of 1 second */\n @JvmStatic val SECOND = (1.0 / 3600.0).degrees\n /**\n * Conversion factor for degrees to radians.\n */\n const val DEGREES_TO_RADIANS = PI / 180.0\n /**\n * Conversion factor for radians to degrees.\n */\n const val RADIANS_TO_DEGREES = 180.0 / PI\n /**\n * Conversion factor for degrees to minutes.\n */\n const val DEGREES_TO_MINUTES = 60.0\n /**\n * Conversion factor for minutes to degrees.\n */\n const val MINUTES_TO_DEGREES = 1.0 / 60.0\n /**\n * Conversion factor for degrees to seconds.\n */\n const val DEGREES_TO_SECONDS = 3600.0\n /**\n * Conversion factor for seconds to degrees.\n */\n const val SECONDS_TO_DEGREES = 1.0 / 3600.0\n /**\n * Conversion factor for degrees to milliradians.\n */\n const val DEGREES_TO_MRAD = PI * 2.0 / 360.0\n /**\n * Conversion factor for milliradians to degrees.\n */\n const val MRAD_TO_DEGREES = 360.0 / PI / 2.0\n /**\n * Conversion factor for degrees to milliradians (NATO).\n */\n const val DEGREES_TO_MIL_NATO = 6400.0 / 360.0\n /**\n * Conversion factor for milliradians (NATO) to degrees.\n */\n const val MIL_NATO_TO_DEGREES = 360.0 / 6400.0\n /**\n * Conversion factor for degrees to milliradians (Warsaw Pact).\n */\n const val DEGREES_TO_MIL_WP = 6000.0 / 360.0\n /**\n * Conversion factor for milliradians (Warsaw Pact) to degrees.\n */\n const val MIL_WP_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to milliradians (Sweden).\n */\n const val DEGREES_TO_STRECK = 6300.0 / 360.0\n /**\n * Conversion factor for milliradians (Sweden) to degrees.\n */\n const val STRECK_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to minute of angle (MOA).\n */\n const val DEGREES_TO_MOA = 21600.0 / 360.0\n /**\n * Conversion factor for minute of angle (MOA) to degrees.\n */\n const val MOA_TO_DEGREES = 360.0 / 21600.0\n\n /**\n * Returns an Angle equal to this Double number in degrees.\n */\n inline val Double.degrees get() = fromDegrees(this)\n\n /**\n * Returns an Angle equal to this Double number in radians.\n */\n inline val Double.radians get() = fromRadians(this)\n\n /**\n * Returns an Angle equal to this Double number in minutes.\n */\n inline val Double.minutes get() = fromMinutes(this)\n\n /**\n * Returns an Angle equal to this Double number in seconds.\n */\n inline val Double.seconds get() = fromSeconds(this)\n\n /**\n * Returns an Angle equal to this Double number in milliradians.\n */\n inline val Double.mrad get() = fromMrad(this)\n\n /**\n * Returns an Angle equal to this Double number in mil NATO.\n */\n inline val Double.milNATO get() = fromMilNATO(this)\n\n /**\n * Returns an Angle equal to this Double number in mil Warsaw Pact.\n */\n inline val Double.milWP get() = fromMilWP(this)\n\n /**\n * Returns an Angle equal to this Double number in Streck.\n */\n inline val Double.streck get() = fromStreck(this)\n\n /**\n * Returns an Angle equal to this Double number in minute of angle (MOA).\n */\n inline val Double.MOA get() = fromMOA(this)\n\n /**\n * Convert radians to degrees\n *\n * @param radians value in radians\n *\n * @return value in degrees\n */\n @JvmStatic fun toDegrees(radians: Double) = radians * RADIANS_TO_DEGREES\n\n /**\n * Convert degrees to radians\n *\n * @param degrees value in degrees\n *\n * @return value in radians\n */\n @JvmStatic fun toRadians(degrees: Double) = degrees * DEGREES_TO_RADIANS\n\n /**\n * Convert degrees to minutes\n *\n * @param degrees value in degrees\n *\n * @return value in minutes\n */\n @JvmStatic fun toMinutes(degrees: Double) = degrees * DEGREES_TO_MINUTES\n\n /**\n * Convert degrees to seconds\n *\n * @param degrees value in degrees\n *\n * @return value in seconds\n */\n @JvmStatic fun toSeconds(degrees: Double) = degrees * DEGREES_TO_SECONDS\n\n /**\n * Convert degrees to milliradians\n *\n * @param degrees value in degrees\n *\n * @return value in milliradians\n */\n @JvmStatic fun toMrad(degrees: Double) = degrees * DEGREES_TO_MRAD\n\n /**\n * Convert degrees to mil NATO\n *\n * @param degrees value in degrees\n *\n * @return value in mil NATO\n */\n @JvmStatic fun toMilNATO(degrees: Double) = degrees * DEGREES_TO_MIL_NATO\n\n /**\n * Convert degrees to mil Warsaw Pact\n *\n * @param degrees value in degrees\n *\n * @return value in mil Warsaw Pact\n */\n @JvmStatic fun toMilWP(degrees: Double) = degrees * DEGREES_TO_MIL_WP\n\n /**\n * Convert degrees to Streck\n *\n * @param degrees value in degrees\n *\n * @return value in mil Streck\n */\n @JvmStatic fun toStreck(degrees: Double) = degrees * DEGREES_TO_STRECK\n\n /**\n * Convert degrees to minute of angle (MOA)\n *\n * @param degrees value in degrees\n *\n * @return value in minute of angle (MOA)\n */\n @JvmStatic fun toMOA(degrees: Double) = degrees * DEGREES_TO_MOA\n\n /**\n * Obtains an angle from a specified number of degrees.\n *\n * @param degrees the size in degrees of the angle to be obtained\n *\n * @return a new angle, whose size in degrees is given by [degrees]\n */\n @JvmStatic fun fromDegrees(degrees: Double) = Angle(degrees)\n\n /**\n * Obtains an angle from a specified number of radians.\n *\n * @param radians the size in radians of the angle to be obtained.\n *\n * @return a new angle, whose size in radians is given by [radians].\n */\n @JvmStatic fun fromRadians(radians: Double) = Angle(radians * RADIANS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minutes.\n *\n * @param minutes the size in minutes of the angle to be obtained.\n *\n * @return a new angle, whose size in minutes is given by [minutes].\n */\n @JvmStatic fun fromMinutes(minutes: Double) = Angle(minutes * MINUTES_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of seconds.\n *\n * @param seconds the size in seconds of the angle to be obtained.\n *\n * @return a new angle, whose size in seconds is given by [seconds].\n */\n @JvmStatic fun fromSeconds(seconds: Double) = Angle(seconds * SECONDS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of milliradians.\n *\n * @param mrad the size in milliradians of the angle to be obtained.\n *\n * @return a new angle, whose size in milliradians is given by [mrad].\n */\n @JvmStatic fun fromMrad(mrad: Double) = Angle(mrad * MRAD_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil NATO.\n *\n * @param milNATO the size in mil NATO of the angle to be obtained.\n *\n * @return a new angle, whose size in mil NATO is given by [milNATO].\n */\n @JvmStatic fun fromMilNATO(milNATO: Double) = Angle(milNATO * MIL_NATO_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil Warsaw Pact.\n *\n * @param milWP the size in mil WP of the angle to be obtained.\n *\n * @return a new angle, whose size in mil WP is given by [milWP].\n */\n @JvmStatic fun fromMilWP(milWP: Double) = Angle(milWP * MIL_WP_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of Streck.\n *\n * @param streck the size in Streck of the angle to be obtained.\n *\n * @return a new angle, whose size in Streck is given by [streck].\n */\n @JvmStatic fun fromStreck(streck: Double) = Angle(streck * STRECK_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minute of angle (MOA).\n *\n * @param moa the size in MOA of the angle to be obtained.\n *\n * @return a new angle, whose size in MOA is given by [moa].\n */\n @JvmStatic fun fromMOA(moa: Double) = Angle(moa * MOA_TO_DEGREES)\n\n /**\n * Obtains an angle from rectangular coordinates.\n *\n * @param x the abscissa coordinate.\n * @param y the ordinate coordinate.\n *\n * @return a new angle, whose size is determined from `x` and `y`.\n */\n @JvmStatic fun fromXY(x: Double, y: Double) = atan2(y, x).radians\n\n /**\n * Obtain an angle from a given number of positive degrees, minutes and seconds.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes integer number of minutes, positive only between 0 and 60.\n * @param seconds integer number of seconds, positive only between 0 and 60.\n *\n * @return a new angle whose size in degrees is given by `degrees`, `minutes` and `seconds`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDMS(degrees: Int, minutes: Int, seconds: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidDegrees\")\n }\n require(minutes in 0 until 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidMinutes\")\n }\n require(seconds >= 0 && seconds < 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidSeconds\")\n }\n return fromDegrees(degrees + minutes / 60.0 + seconds / 3600.0)\n }\n\n /**\n * Obtain an angle from a given number of positive degrees and decimal minutes.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes double representing the decimal representation of minutes and seconds.\n *\n * @return a new angle whose size in degrees is given by `degrees` and decimal `minutes`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDM(degrees: Int, minutes: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidDegrees\")\n }\n require(minutes >= 0 && minutes < 60) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidMinutes\")\n }\n return fromDegrees(degrees + minutes / 60.0)\n }\n\n /**\n * Obtain an angle from a degrees, minute and seconds character string.\n *\n * eg:
\n         * 123 34 42\n         * -123* 34' 42\" (where * stands for the degree symbol)\n         * +45* 12' 30\" (where * stands for the degree symbol)\n         * 45 12 30 S\n         * 45 12 30 N\n         * 
\n * For a string containing both a sign and compass direction, the compass direction will take precedence.\n *\n * @param dmsString the degrees, minute and second character string.\n *\n * @return the corresponding angle.\n *\n * @throws IllegalArgumentException if dmsString is not properly formatted.\n */\n @JvmStatic\n fun fromDMS(dmsString: String): Angle {\n var dms = dmsString\n // Check for string format validity\n val regex = Regex(\"([-+]?\\\\d{1,3}[dD°\\\\s](\\\\s*\\\\d{1,2}['’\\\\s])?(\\\\s*\\\\d{1,2}[\\\"”\\\\s])?\\\\s*([NnSsEeWw])?\\\\s?)\")\n require(regex.matches(\"$dms \")) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidFormat\")\n }\n // Replace degree, min and sec signs with space\n dms = dms.replace(\"[Dd°'’\\\"”]\".toRegex(), \" \")\n // Replace multiple spaces with single ones\n dms = dms.replace(\"\\\\s+\".toRegex(), \" \")\n dms = dms.trim { it <= ' ' }\n\n // Check for sign prefix and suffix\n var sign = 1\n val suffix = dms.uppercase()[dms.length - 1]\n val prefix = dms[0]\n if (!suffix.isDigit()) {\n sign = if (suffix == 'S' || suffix == 'W') -1 else 1\n dms = dms.substring(0, dms.length - 1)\n dms = dms.trim { it <= ' ' }\n\n // check and trim the prefix if it is erroneously included\n if (!prefix.isDigit()) {\n dms = dms.substring(1, dms.length)\n dms = dms.trim { it <= ' ' }\n }\n } else if (!prefix.isDigit()) {\n sign *= if (prefix == '-') -1 else 1\n dms = dms.substring(1, dms.length)\n }\n\n // Extract degrees, minutes and seconds\n val dmsArray = dms.split(\" \").toTypedArray()\n val d = dmsArray[0].toInt()\n val m = if (dmsArray.size > 1) dmsArray[1].toInt() else 0\n val s = if (dmsArray.size > 2) dmsArray[2].toDouble() else 0.0\n return fromDMS(d, m, s) * sign.toDouble()\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than -180 wrap back to +180, while angles greater than\n * +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeAngle180(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle > 180) angle - 360 else if (angle < -180) 360 + angle else angle\n }\n\n /**\n * Restricts an angle to the range [0, 360] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than 0 wrap back to 360, while angles greater than 360\n * wrap back to 0.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [0, 360] degrees\n */\n @JvmStatic\n fun normalizeAngle360(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle >= 0) angle else 360 + angle\n }\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, wrapping angles outside the range. Wrapping takes place along\n * a line of constant longitude which may pass through the poles. In which case, 135 degrees normalizes to 45\n * degrees; 181 degrees normalizes to -1 degree.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun normalizeLatitude(degrees: Double): Double {\n val lat = degrees % 180\n val normalizedLat = if (lat > 90) 180 - lat else if (lat < -90) -180 - lat else lat\n // Determine whether the latitude is in the north or south hemisphere\n val numEquatorCrosses = (degrees / 180).toInt()\n return if (numEquatorCrosses % 2 == 0) normalizedLat else -normalizedLat\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing a line of constant latitude which may pass through the antimeridian; angles less than -180 wrap\n * back to +180, while angles greater than +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeLongitude(degrees: Double): Double {\n val lon = degrees % 360\n return if (lon > 180) lon - 360 else if (lon < -180) 360 + lon else lon\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as -180, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampAngle180(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Restricts an angle to the range [0, 360] degrees, clamping angles outside the range. Angles less than 0 are\n * returned as 0, and angles greater than 360 are returned as 360. Angles within the range are returned unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [0, 360] degrees\n */\n @JvmStatic\n fun clampAngle360(degrees: Double) = degrees.coerceIn(0.0, 360.0)\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, clamping angles outside the range. Angles less than -90 are\n * returned as -90, and angles greater than +90 are returned as +90. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun clampLatitude(degrees: Double) = degrees.coerceIn(-90.0, 90.0)\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as 0, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampLongitude(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Computes the linear interpolation of two angles in the range [-180, +180] degrees according to a specified\n * fractional amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0\n * indicates the first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second\n * angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle in degrees\n * @param angle2 the second angle in degrees\n *\n * @return the interpolated angle in the range [-180, +180] degrees\n */\n @JvmStatic\n fun interpolateAngle180(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle180(angle).degrees\n }\n\n /**\n * Computes the linear interpolation of two angles in the range [0, 360] degrees according to a specified fractional\n * amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0 indicates the\n * first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle\n * @param angle2 the second angle\n *\n * @return the interpolated angle in the range [0, 360] degrees\n */\n @JvmStatic\n fun interpolateAngle360(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle360(angle).degrees\n }\n\n /**\n * Obtains the average of two angles. This method is commutative, so `midAngle(m, n)` and\n * `midAngle(n, m)` are equivalent.\n *\n * @param a1 the first angle.\n * @param a2 the second angle.\n *\n * @return the average of `a1` and `a2`\n */\n @JvmStatic\n fun average(a1: Angle, a2: Angle) = fromDegrees(0.5 * (a1.inDegrees + a2.inDegrees))\n\n @JvmStatic\n fun max(a: Angle, b: Angle) = if (a.inDegrees >= b.inDegrees) a else b\n\n @JvmStatic\n fun min(a: Angle, b: Angle) = if (a.inDegrees <= b.inDegrees) a else b\n\n /**\n * Indicates whether a specified value is within the normal range of latitude, [-90, 90].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of latitude, otherwise false.\n */\n @JvmStatic\n fun isValidLatitude(degrees: Double) = degrees >= -90 && degrees <= 90\n\n /**\n * Indicates whether a specified value is within the normal range of longitude, [-180, 180].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of longitude, otherwise false.\n */\n @JvmStatic\n fun isValidLongitude(degrees: Double) = degrees >= -180 && degrees <= 180\n }\n\n init {\n // NaN value is not suppoted due to unpredictable `compareTo(NaN)` behavior\n require(!inDegrees.isNaN()) {\n logMessage(ERROR, \"Angle\", \"init\", \"NaN is not supported!\")\n }\n }\n\n /**\n * Obtains the sum of these two angles.\n * This method is commutative, so `a.add(b)` and `b.add(a)` are equivalent.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to add to this one.\n *\n * @return an angle whose size is the total of these angles and angles size.\n */\n operator fun plus(angle: Angle) = fromDegrees(inDegrees + angle.inDegrees)\n fun plusDegrees(degrees: Double) = fromDegrees(this.inDegrees + degrees)\n fun plusRadians(radians: Double) = fromRadians(this.inRadians + radians)\n\n /**\n * Obtains the difference of these two angles. This method is not commutative.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to subtract from this angle.\n *\n * @return a new angle corresponding to this angle's size minus angle's size.\n */\n operator fun minus(angle: Angle) = fromDegrees(inDegrees - angle.inDegrees)\n fun minusDegrees(degrees: Double) = fromDegrees(this.inDegrees - degrees)\n fun minusRadians(radians: Double) = fromRadians(this.inRadians - radians)\n\n /**\n * Multiplies this angle by another angle.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to multiply.\n *\n * @return a new angle whose size equals this angle's size multiplied by angle's size.\n */\n operator fun times(angle: Angle) = this * angle.inDegrees\n\n /**\n * Multiplies this angle by `multiplier`.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param multiplier a scalar by which this angle is multiplied.\n *\n * @return a new angle whose size equals this angle's size multiplied by `multiplier`.\n */\n operator fun times(multiplier: Number) = fromDegrees(inDegrees * multiplier.toDouble())\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to divide.\n *\n * @return this angle's degrees divided by angle's degrees.\n */\n operator fun div(angle: Angle) = this / angle.inDegrees\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param divisor a scalar by which to divide.\n *\n * @return this angle's degrees divided by divisor.\n */\n operator fun div(divisor: Number): Angle {\n require(divisor != 0.0) {\n logMessage(ERROR, \"Angle\", \"div\", \"divideByZero\")\n }\n return fromDegrees(inDegrees / divisor.toDouble())\n }\n\n /**\n * Returns new angle with opposite sign.\n */\n operator fun unaryMinus() = Angle(-inDegrees)\n\n /**\n * Computes the shortest distance between this and angle, as an angle.\n *\n * @param angle the angle to measure angular distance to.\n *\n * @return the angular distance between this and `value`.\n */\n fun distanceTo(angle: Angle): Angle {\n var distance = angle.inDegrees - inDegrees\n if (distance < -180) distance += 360.0 else if (distance > 180) distance -= 360.0\n return abs(distance).degrees\n }\n\n fun normalize180() = if (inDegrees in -180.0..180.0) this else normalizeAngle180(inDegrees).degrees\n\n fun normalize360() = if (inDegrees in 0.0..360.0) this else normalizeAngle360(inDegrees).degrees\n\n fun normalizeLatitude() = if (inDegrees in -90.0..90.0) this else normalizeLatitude(inDegrees).degrees\n\n fun normalizeLongitude() = if (inDegrees in -180.0..180.0) this else normalizeLongitude(inDegrees).degrees\n\n fun clampAngle180() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun clampAngle360() = inDegrees.coerceIn(0.0, 360.0).degrees\n\n fun clampLatitude() = inDegrees.coerceIn(-90.0, 90.0).degrees\n\n fun clampLongitude() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun toDMS(): DoubleArray {\n var angle = inDegrees\n val sign = sign(angle)\n angle *= sign\n var d = floor(angle)\n angle = (angle - d) * 60.0\n var m = floor(angle)\n angle = (angle - m) * 60.0\n var s = round(angle * 100) / 100 // keep two decimals for seconds\n if (s == 60.0) {\n m++\n s = 0.0\n }\n if (m == 60.0) {\n d++\n m = 0.0\n }\n return doubleArrayOf(sign, d, m, s)\n }\n\n /**\n * Forms a decimal degrees [String] representation of this [Angle].\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in decimal degrees as a string with the specified number of digits beyond the\n * decimal point. The string is padded with trailing zeros to fill the number of post-decimal point\n * positions requested.\n */\n fun toDDString(digits: Int = 6): String {\n require(digits in 0..15) {\n logMessage(ERROR, \"Angle\", \"toDecimalDegreesString\", \"outOfRange\")\n }\n return \"%.${digits}f°\".format(inDegrees)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees and decimal minutes.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees and decimal minutes as a string.\n */\n fun toDMString(digits: Int = 3): String {\n val dms = toDMS()\n val mf = if (dms[3] == 0.0) dms[2] else dms[2] + dms[3] / 60.0\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2.${digits}f’\".format(dms[1], mf)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees, minutes and seconds.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees, minutes and seconds as a string.\n */\n fun toDMSString(digits: Int = 1): String {\n val dms = toDMS()\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2d’ %2.${digits}f”\".format(dms[1], dms[2], dms[3])\n }\n\n /**\n * Compares this [Angle] with another. Returns a negative integer if this is the smaller angle, a positive\n * integer if this is the larger, and zero if both angles are equal.\n *\n * @param other the angle to compare against.\n *\n * @return -1 if this angle is smaller, 0 if both are equal and +1 if this angle is larger.\n */\n override operator fun compareTo(other: Angle) = inDegrees.compareTo(other.inDegrees)\n\n override fun toString() = \"$inDegrees°\"\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer\n\nclass GKGraticuleTutorial(private val engine: WorldWind) : AbstractTutorial() {\n private val layer = GKGraticuleLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.OrientationMode\n\nclass LabelsTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Labels\").apply {\n // Create a basic label with the default attributes, including the default text color (white), the default text\n // size (24 pixels), the system default font, and the default alignment (bottom center).\n addRenderable(\n Label(Position.fromDegrees(38.8977, -77.0365, 0.0), \"The White House\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create a label with a black text color, the default text size, the system default font, the default\n // alignment, and a thick white text outline.\n addRenderable(\n Label(Position.fromDegrees(38.881389, -77.036944, 0.0), \"Thomas Jefferson Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply {\n textColor = Color(0f, 0f, 0f, 1f) // black text via r,g,b,a\n outlineColor = Color(1f, 1f, 1f, 1f) // white outline via r,g,b,a\n outlineWidth = 5f // thicken the white outline\n }\n }\n )\n\n // Create a right-aligned label using a bottom-right offset.\n addRenderable(\n Label(Position.fromDegrees(38.8893, -77.050111, 0.0), \"Lincoln Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomRight() }\n }\n )\n\n // Create a left-aligned label using a bottom-left offset.\n addRenderable(\n Label(Position.fromDegrees(38.889803, -77.009114, 0.0), \"United States Capitol\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomLeft() }\n }\n )\n\n // Create a label with a 48 pixel text size and a bold font.\n addRenderable(\n Label(Position.fromDegrees(38.907192, -77.036871, 0.0), \"Washington\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { font = Font(\"arial\", FontWeight.BOLD, 28) }\n }\n )\n\n // Create a label with its orientation fixed relative to the globe.\n addRenderable(\n Label(Position.fromDegrees(38.89, -77.023611, 0.0), \"National Mall\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n rotationMode = OrientationMode.RELATIVE_TO_GLOBE\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 38.89.degrees, (-77.023611).degrees, 10e3,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\nimport kotlin.math.sqrt\n\nclass LookAtViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setLookAtAction()\n }\n\n private fun setLookAtAction() {\n // Create a view of LAX airport as seen from an aircraft above Santa Monica, CA.\n val aircraft = Position.fromDegrees(34.0158333, -118.4513056, 2500.0)\n // Aircraft above Santa Monica airport, altitude in meters\n val airport = Position.fromDegrees(33.9424368, -118.4081222, 38.7)\n\n // Compute heading and distance from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n\n // Compute camera settings\n val altitude = aircraft.altitude - airport.altitude\n val range = sqrt(altitude * altitude + distanceMeters * distanceMeters)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply new \"look at\" view\n engine.cameraFromLookAt(LookAt(airport, AltitudeMode.ABSOLUTE, range, heading, tilt, roll = Angle.ZERO))\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer\n\nclass MGRSGraticuleTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = MGRSGraticuleLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Path\n\nclass PathsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Paths\").apply {\n // Create a basic path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(50.0, -180.0, 1e5),\n Position.fromDegrees(30.0, -100.0, 1e6),\n Position.fromDegrees(50.0, -40.0, 1e5)\n )\n )\n )\n\n // Create a terrain following path with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(40.0, -180.0, 0.0),\n Position.fromDegrees(20.0, -100.0, 0.0),\n Position.fromDegrees(40.0, -40.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the path vertices to the ground\n isFollowTerrain = true // follow the ground between path vertices\n }\n )\n\n // Create an extruded path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(30.0, -180.0, 1e5),\n Position.fromDegrees(10.0, -100.0, 1e6),\n Position.fromDegrees(30.0, -40.0, 1e5)\n )\n ).apply {\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n\n // Create an extruded path with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the path line with.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(20.0, -180.0, 1e5),\n Position.fromDegrees(0.0, -100.0, 1e6),\n Position.fromDegrees(20.0, -40.0, 1e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-100.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Placemark\nimport earth.worldwind.shape.PlacemarkAttributes\n\nclass PlacemarksTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Placemarks\").apply {\n // Create a simple placemark at downtown Ventura, CA. This placemark is a 20x20 cyan square centered on the\n // geographic position. This placemark demonstrates the creation with a convenient factory method.\n addRenderable(\n Placemark.createWithColorAndSize(\n Position.fromDegrees(34.281, -119.293, 0.0), Color(0f, 1f, 1f, 1f), 20\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create an image-based placemark of an aircraft above the ground with a leader-line to the surface.\n // This placemark demonstrates creation via a constructor and a convenient PlacemarkAttributes factory method.\n // The image is scaled to 1.5 times its original size.\n addRenderable(\n Placemark(Position.fromDegrees(34.260, -119.2, 5000.0)).apply {\n attributes = PlacemarkAttributes.createWithImageAndLeader(ImageSource.fromResource(MR.images.aircraft_fixwing)).apply {\n imageScale = 1.5\n }\n }\n )\n\n // Create an image-based placemark with a label at Oxnard Airport, CA. This placemark demonstrates creation\n // with a constructor and a convenient PlacemarkAttributes factory method. The image is scaled to 2x\n // its original size, with the bottom center of the image anchored at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.200, -119.208, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.airport_terminal)).apply {\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n }\n displayName = \"Oxnard Airport\"\n }\n )\n\n // Create an image-based placemark from a bitmap. This placemark demonstrates creation with a\n // constructor and a convenient PlacemarkAttributes factory method. First, a 64x64 bitmap is loaded,\n // and then it is passed into the placemark attributes. The bottom center of the image anchored\n // at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.300, -119.25, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.ehipcc)).apply {\n imageOffset = Offset.bottomCenter()\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position.fromDegrees(34.200, -119.208, 0.0),\n altitudeMode = AltitudeMode.ABSOLUTE, range = 1e4,\n heading = Angle.ZERO, tilt = 80.0.degrees, roll = Angle.ZERO\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Polygon\n\nclass PolygonsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Polygons\").apply {\n // Create a basic polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -135.0, 5.0e5),\n Position.fromDegrees(45.0, -140.0, 7.0e5),\n Position.fromDegrees(50.0, -130.0, 9.0e5),\n Position.fromDegrees(45.0, -120.0, 7.0e5),\n Position.fromDegrees(40.0, -125.0, 5.0e5)\n )\n )\n )\n\n // Create a terrain following polygon with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -105.0, 0.0),\n Position.fromDegrees(45.0, -110.0, 0.0),\n Position.fromDegrees(50.0, -100.0, 0.0),\n Position.fromDegrees(45.0, -90.0, 0.0),\n Position.fromDegrees(40.0, -95.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the polygon vertices to the ground\n isFollowTerrain = true // follow the ground between polygon vertices\n }\n )\n\n // Create an extruded polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -135.0, 5.0e5),\n Position.fromDegrees(25.0, -140.0, 7.0e5),\n Position.fromDegrees(30.0, -130.0, 9.0e5),\n Position.fromDegrees(25.0, -120.0, 7.0e5),\n Position.fromDegrees(20.0, -125.0, 5.0e5)\n )\n ).apply {\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create an extruded polygon with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -105.0, 5.0e5),\n Position.fromDegrees(25.0, -110.0, 7.0e5),\n Position.fromDegrees(30.0, -100.0, 9.0e5),\n Position.fromDegrees(25.0, -90.0, 7.0e5),\n Position.fromDegrees(20.0, -95.0, 5.0e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create a polygon with an inner hole by specifying multiple polygon boundaries\n addRenderable(\n Polygon().apply {\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -135.0, 5.0e5),\n Position.fromDegrees(5.0, -140.0, 7.0e5),\n Position.fromDegrees(10.0, -130.0, 9.0e5),\n Position.fromDegrees(5.0, -120.0, 7.0e5),\n Position.fromDegrees(0.0, -125.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -130.0, 6.0e5),\n Position.fromDegrees(5.0, -135.0, 7.0e5),\n Position.fromDegrees(7.5, -130.0, 8.0e5),\n Position.fromDegrees(5.0, -125.0, 7.0e5)\n )\n )\n }\n )\n\n // Create an extruded polygon with an inner hole and custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon().apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -105.0, 5.0e5),\n Position.fromDegrees(5.0, -110.0, 7.0e5),\n Position.fromDegrees(10.0, -100.0, 9.0e5),\n Position.fromDegrees(5.0, -90.0, 7.0e5),\n Position.fromDegrees(0.0, -95.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -100.0, 6.0e5),\n Position.fromDegrees(5.0, -105.0, 7.0e5),\n Position.fromDegrees(7.5, -100.0, 8.0e5),\n Position.fromDegrees(5.0, -95.0, 7.0e5)\n )\n )\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-115.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Ellipse\nimport earth.worldwind.shape.Path\nimport earth.worldwind.shape.Polygon\nimport earth.worldwind.shape.ShapeAttributes\n\nclass ShapesDashAndFillTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Dash and fill\").apply {\n // Thicken all lines used in the tutorial.\n val thickenLine = ShapeAttributes().apply { outlineWidth = 4f }\n\n // Create a path with a simple dashed pattern generated from the ImageSource factory. The\n // ImageSource.fromLineStipple function generates a texture based on the provided factor and pattern, similar to\n // stipple parameters of OpenGL 2. The binary representation of the pattern value will be the pattern displayed,\n // where positions with a 1 appearing as opaque and a 0 as transparent.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -100.0, 1e5),\n Position.fromDegrees(30.0, -120.0, 1e5),\n Position.fromDegrees(0.0, -100.0, 1e5)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 2, pattern = 0xF0F0.toShort())\n }\n }\n )\n\n // Modify the factor of the pattern for comparison to first path. Only the factor is modified, not the pattern.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -90.0, 5e4),\n Position.fromDegrees(30.0, -110.0, 5e4),\n Position.fromDegrees(0.0, -90.0, 5e4)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 4, pattern = 0xF0F0.toShort())\n }\n }\n )\n\n // Create a path conforming to the terrain with a different pattern from the first two Paths.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -80.0, 0.0),\n Position.fromDegrees(30.0, -100.0, 0.0),\n Position.fromDegrees(0.0, -80.0, 0.0)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 8, pattern = 0xDFF6.toShort())\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n )\n\n // Create an Ellipse using an image as a repeating fill pattern\n addRenderable(\n Ellipse(Position.fromDegrees(40.0, -70.0, 1e5), 1.5e6, 800e3).apply {\n attributes.copy(thickenLine).apply {\n interiorImageSource = ImageSource.fromResource(MR.images.pattern_sample_houndstooth)\n }\n }\n )\n\n // Create a surface polygon using an image as a repeating fill pattern and a dash pattern for the outline\n // of the polygon.\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(25.0, -85.0, 0.0),\n Position.fromDegrees(10.0, -80.0, 0.0),\n Position.fromDegrees(10.0, -60.0, 0.0),\n Position.fromDegrees(25.0, -55.0, 0.0)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n interiorImageSource = ImageSource.fromResource(MR.images.pattern_sample_houndstooth)\n outlineImageSource = ImageSource.fromLineStipple(8, 0xDFF6.toShort())\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-85.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.ShowTessellationLayer\n\nclass ShowTessellationTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = ShowTessellationLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.OmnidirectionalSightline\nimport earth.worldwind.shape.Placemark\n\nclass SightlineTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Sightline\").apply {\n // Specify the sightline position, which is the origin of the line of sight calculation\n val position = Position.fromDegrees(46.230, -122.190, 2500.0)\n // Create the sightline, specifying the range of the sightline (meters)\n addRenderable(\n OmnidirectionalSightline(position, 10000.0).apply {\n // Create attributes for the visible terrain\n attributes.apply { interiorColor = Color(0f, 1f, 0f, 0.5f) }\n // Create attributes for the occluded terrain\n occludeAttributes.apply { interiorColor = Color(0.1f, 0.1f, 0.1f, 0.8f) }\n }\n )\n // Create a Placemark to visualize the position of the sightline\n addRenderable(\n Placemark(position).apply {\n attributes.apply {\n imageSource = earth.worldwind.render.image.ImageSource.fromResource(MR.images.aircraft_fixwing)\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n isDrawLeader = true\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position(46.230.degrees, (-122.190).degrees, 500.0), altitudeMode = AltitudeMode.ABSOLUTE,\n range = 1.5e4, heading = 45.0.degrees, tilt = 70.0.degrees, roll = 0.0.degrees\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\n\nclass SurfaceImageTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Surface image\").apply {\n // Configure a Surface Image to display an Android resource showing the WorldWindEarth logo.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46, 15.5, 0.5, 0.6),\n ImageSource.fromResource(MR.images.worldwind_logo)\n )\n )\n\n // Configure a Surface Image to display a remote image showing Mount Etna erupting on July 13th, 2001.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46543388598137, 14.60128369746704, 0.45360804083528, 0.75704283995502),\n ImageSource.fromUrlString(\"https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg\")\n )\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 37.46543388598137.degrees, 14.97980511744455.degrees, 4.0e5,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.ogc.Wcs100ElevationCoverage\nimport kotlin.math.atan\n\nclass WcsElevationTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create an elevation coverage from a version 1.0.0 WCS\n private val wcsElevationCoverage = Wcs100ElevationCoverage(\n // Specify the version 1.0.0 WCS address\n serviceAddress = \"https://elevation.nationalmap.gov/arcgis/services/3DEPElevation/ImageServer/WCSServer\",\n // Specify the coverage name\n coverageName = \"DEP3Elevation\",\n // Specify the output format\n outputFormat = \"geotiff\",\n // Specify the bounding sector - provided by the WCS\n sector = Sector.fromDegrees(25.0, -125.0, 25.0, 60.0),\n // Specify the data resolution of 10m (1/3 arc-second)\n resolution = Angle.fromSeconds(1.0 / 3.0)\n )\n\n override fun start() {\n super.start()\n engine.globe.elevationModel.apply {\n forEach { coverage -> coverage.isEnabled = false }\n addCoverage(wcsElevationCoverage)\n }\n positionView()\n }\n\n override fun stop() {\n super.stop()\n engine.globe.elevationModel.apply {\n removeCoverage(wcsElevationCoverage)\n forEach { coverage -> coverage.isEnabled = true }\n }\n }\n\n private fun positionView() {\n val mtRainier = Position.fromDegrees(46.852886, -121.760374, 4392.0)\n val eye = Position.fromDegrees(46.912, -121.527, 2000.0)\n\n // Compute heading and distance from peak to eye\n val heading = eye.greatCircleAzimuth(mtRainier)\n val distanceRadians = mtRainier.greatCircleDistance(eye)\n val distance = distanceRadians * engine.globe.getRadiusAt(mtRainier.latitude, mtRainier.longitude)\n\n // Compute camera settings\n val tilt = atan(distance / eye.altitude).radians\n\n // Apply the new view\n engine.camera.set(\n eye.latitude, eye.longitude, eye.altitude, AltitudeMode.ABSOLUTE, heading, tilt, roll = Angle.ZERO\n )\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Service (WMS) layer to display the\n // surface temperature layer from NASA's Near Earth Observations WMS.\n WmsLayerFactory.createLayer(\"https://neo.gsfc.nasa.gov/wms/wms\", listOf(\"MOD_LSTD_CLIM_M\")).also {\n if (isActive) {\n wmsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMS layer creation succeeded\")\n } catch (e: Throwable) {\n Logger.log(Logger.ERROR, \"WMS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmsLayer?.let { engine.layers.removeLayer(it) }.also { wmsLayer = null }\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmtsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmtsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmtsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Tile Service (WMTS) layer to display Global Hillshade based on GMTED2010\n WmtsLayerFactory.createLayer(\"https://tiles.geoservice.dlr.de/service/wmts\", \"hillshade\").also {\n if (isActive) {\n wmtsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMTS layer creation succeeded\")\n } catch (e: Throwable) {\n Logger.log(Logger.ERROR, \"WMTS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmtsLayer?.let { engine.layers.removeLayer(it) }.also { wmtsLayer = null }\n }\n\n}","@file:JsExport\n@file:Suppress(\"OPT_IN_USAGE\", \"NON_EXPORTABLE_TYPE\")\n\npackage earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.gesture.SelectDragCallback\nimport earth.worldwind.globe.elevation.coverage.BasicElevationCoverage\nimport earth.worldwind.globe.projection.MercatorProjection\nimport earth.worldwind.globe.projection.Wgs84Projection\nimport earth.worldwind.layer.BackgroundLayer\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.mercator.WebMercatorLayerFactory\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Movable\nimport kotlinx.browser.document\nimport kotlinx.browser.window\nimport org.w3c.dom.*\n\nfun main() {\n // Register an event listener to be called when the page is loaded.\n window.onload = {\n // Create a WorldWindow for the canvas.\n val wwd = WorldWindow(document.getElementById(\"WorldWindow\") as HTMLCanvasElement)\n val tutorialSelect = document.getElementById(\"Tutorials\") as HTMLSelectElement\n val projectionSelect = document.getElementById(\"Projections\") as HTMLSelectElement\n val actionsContainer = document.getElementById(\"Actions\") as HTMLDivElement\n val tutorials = mapOf (\n \"Basic globe\" to BasicTutorial(wwd.engine),\n \"Set camera view\" to CameraViewTutorial(wwd.engine),\n \"Set \\\"look at\\\" view\" to LookAtViewTutorial(wwd.engine),\n \"Placemarks\" to PlacemarksTutorial(wwd.engine),\n \"Paths\" to PathsTutorial(wwd.engine),\n \"Polygons\" to PolygonsTutorial(wwd.engine),\n \"Ellipses\" to EllipsesTutorial(wwd.engine),\n \"Dash and fill\" to ShapesDashAndFillTutorial(wwd.engine),\n \"Labels\" to LabelsTutorial(wwd.engine),\n \"Sight line\" to SightlineTutorial(wwd.engine),\n \"Surface image\" to SurfaceImageTutorial(wwd.engine),\n \"Show tessellation\" to ShowTessellationTutorial(wwd.engine),\n \"MGRS Graticule\" to MGRSGraticuleTutorial(wwd.engine),\n \"Gauss-Kruger Graticule\" to GKGraticuleTutorial(wwd.engine),\n \"WMS Layer\" to WmsLayerTutorial(wwd.engine, wwd.mainScope),\n \"WMTS Layer\" to WmtsLayerTutorial(wwd.engine, wwd.mainScope),\n \"WCS Elevation\" to WcsElevationTutorial(wwd.engine),\n \"Elevation Heatmap\" to ElevationHeatmapTutorial(wwd.engine),\n )\n val projections = mapOf (\n \"WGS84 Projection\" to Wgs84Projection(),\n \"Mercator Projection\" to MercatorProjection()\n )\n var currentTutorial: String? = null\n\n // Add some image layers to the WorldWindow's globe.\n wwd.engine.layers.apply {\n addLayer(BackgroundLayer())\n addLayer(WebMercatorLayerFactory.createLayer(\n urlTemplate = \"https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&hl={lang}\",\n imageFormat = \"image/jpeg\",\n name = \"Google Satellite\"\n ))\n addLayer(StarFieldLayer())\n addLayer(AtmosphereLayer())\n }\n\n // Add elevation coverage source\n wwd.engine.globe.elevationModel.addCoverage(BasicElevationCoverage())\n\n // Allow pick and move any movable object\n wwd.selectDragDetector.callback = object : SelectDragCallback {\n override fun canPickRenderable(renderable: Renderable) = renderable is Movable\n override fun canMoveRenderable(renderable: Renderable) = renderable is Movable\n }\n\n fun callAction(actionName: String) { currentTutorial?.let { tutorials[it]?.runAction(actionName) } }\n\n fun createAction(actionName: String) {\n (document.createElement(\"button\") as HTMLButtonElement).apply {\n innerHTML = actionName\n actionsContainer.append(this)\n onclick = { callAction(actionName) }\n }\n }\n\n fun selectTutorial(tutorial: String) {\n currentTutorial?.let { tutorials[it]?.stop() }\n currentTutorial = tutorial\n tutorials[tutorial]?.run {\n start()\n //TODO actions\n actionsContainer.innerHTML = \"\"\n actions?.forEach { action -> createAction(action) }\n actionsContainer.hidden = actions?.isEmpty() != false\n }\n wwd.requestRedraw()\n }\n\n fun selectProjection(projectionName: String) {\n wwd.engine.globe.projection = projections[projectionName]!!\n wwd.requestRedraw()\n }\n\n tutorials.keys.forEach {\n (document.createElement(\"option\") as HTMLOptionElement).apply {\n value = it\n innerHTML = it\n tutorialSelect.append(this)\n }\n }\n projections.keys.forEach {\n (document.createElement(\"option\") as HTMLOptionElement).apply {\n value = it\n innerHTML = it\n projectionSelect.append(this)\n }\n }\n tutorialSelect.onchange = { event -> selectTutorial((event.target as HTMLSelectElement).value) }\n projectionSelect.onchange = { event -> selectProjection((event.target as HTMLSelectElement).value)}\n selectTutorial(tutorials.keys.first())\n selectProjection(projections.keys.first())\n }\n}",null,null,"package earth.worldwind\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.FileResource\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.ResourcePlatformDetails\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"9b24c64f544c9d9ebb21130e2d2e72f5\"\n\n public actual object images : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val sun_texture: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/sun_texture.png\\\")\") as String, fileName = \"sun_texture.png\")\n\n public actual val dnb_land_ocean_ice_2012: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/dnb_land_ocean_ice_2012.png\\\")\") as String, fileName =\n \"dnb_land_ocean_ice_2012.png\")\n\n public actual val worldwind_worldtopobathy2004053: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_worldtopobathy2004053.png\\\")\") as String, fileName =\n \"worldwind_worldtopobathy2004053.png\")\n\n public actual override fun values(): List = listOf(sun_texture,\n dnb_land_ocean_ice_2012, worldwind_worldtopobathy2004053)\n }\n\n public actual object files : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val stars_json: FileResource = FileResource(fileUrl =\n js(\"require(\\\"files/stars.json\\\")\") as String)\n\n public actual override fun values(): List = listOf(stars_json)\n }\n}\n","package earth.worldwind\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlin.math.abs\nimport kotlin.math.max\nimport kotlin.math.min\nimport kotlin.math.roundToInt\n\n/**\n * Incrementally and smoothly moves the Camera to a specified position.\n */\nopen class GoToAnimator(\n /**\n * The [WorldWind] engine associated with this animator.\n */\n protected val engine: WorldWind\n) {\n /**\n * The frequency in milliseconds at which to animate the position change.\n */\n var animationFrequency = 20L\n /**\n * The animation's duration, in milliseconds. When the distance is short, less than twice the viewport\n * size, the travel time is reduced proportionally to the distance to travel. It therefore takes less\n * time to move shorter distances.\n */\n var travelTime = 3000\n /**\n * Main scope to launch animation\n */\n protected val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * A temp variable used to hold the current view as a look at during calculations. Using an object level temp\n * property negates the need for ad-hoc allocations and reduces load on the garbage collector.\n */\n protected val lookAt = LookAt()\n protected var animationJob: Job? = null\n protected var completionCallback: ((GoToAnimator) -> Unit)? = null\n protected var targetPosition: Position? = null\n protected var startPosition: Position? = null\n protected var startTime = Instant.DISTANT_PAST\n protected var maxAltitude = 0.0\n protected var maxAltitudeReachedTime = Instant.DISTANT_PAST\n protected var panVelocity = 0.0\n protected var rangeVelocity = 0.0\n\n /**\n * Stop the current animation.\n */\n fun cancel() { animationJob?.cancel() }\n\n /**\n * Moves the camera to a specified look at location or position.\n *\n * @param position The [Location] or [Position] to move the camera to. If this\n * argument contains an \"altitude\" property, as [Position] does, the end point of the navigation is\n * at the specified altitude. Otherwise, the end point is at the current altitude of the camera.\n * @param completionCallback If not null, specifies a function to call when the animation completes.\n * The completion callback is called with a single argument, this animator.\n */\n open fun goTo(position: Location, completionCallback: ((GoToAnimator) -> Unit)? = null) {\n if (engine.viewport.isEmpty) return\n\n this.completionCallback = completionCallback\n\n engine.cameraAsLookAt(lookAt)\n // Capture the target position and determine its altitude.\n val targetPosition = Position(\n position.latitude, position.longitude, if(position is Position) position.altitude else lookAt.range\n ).also { targetPosition = it }\n\n // Capture the start position and start time.\n val startPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range).also { startPosition = it }\n startTime = Clock.System.now()\n\n // Determination of the pan and range velocities requires the distance to be travelled.\n var animationDuration = travelTime\n val panDistance = startPosition.greatCircleDistance(targetPosition)\n\n // Determine how high we need to go to give the user context. The max altitude computed is approximately\n // that needed to fit the start and end positions in the same viewport assuming a 45 degree field of view.\n val pA = engine.globe.geographicToCartesian(startPosition.latitude, startPosition.longitude, 0.0, Vec3())\n val pB = engine.globe.geographicToCartesian(targetPosition.latitude, targetPosition.longitude, 0.0, Vec3())\n maxAltitude = pA.distanceTo(pB)\n\n // Determine an approximate viewport size in radians in order to determine whether we actually change\n // the range as we pan to the new location. We don't want to change the range if the distance between\n // the start and target positions is small relative to the current viewport.\n val viewportSize = engine.pixelSizeAtDistance(startPosition.altitude) *\n engine.viewport.width / engine.globe.equatorialRadius\n\n // Start and target positions are close, so don't back out.\n if (panDistance <= 2 * viewportSize) maxAltitude = startPosition.altitude\n\n // We need to capture the time the max altitude is reached in order to begin decreasing the range\n // midway through the animation. If we're already above the max altitude, then that time is now since\n // we don't back out if the current altitude is above the computed max altitude.\n maxAltitudeReachedTime = if (maxAltitude <= lookAt.range) Clock.System.now() else Instant.DISTANT_PAST\n\n // Compute the total range to travel since we need that to compute the range velocity.\n // Note that the range velocity and pan velocity are computed so that the respective animations, which\n // operate independently, finish at the same time.\n val rangeDistance = if (maxAltitude > startPosition.altitude) {\n max(0.0, maxAltitude - startPosition.altitude) + abs(targetPosition.altitude - maxAltitude)\n } else {\n abs(targetPosition.altitude - startPosition.altitude)\n }\n\n // Determine which distance governs the animation duration.\n val animationDistance = max(panDistance, rangeDistance / engine.globe.equatorialRadius)\n if (animationDistance == 0.0) return // current and target positions are the same\n\n if (animationDistance < 2 * viewportSize) {\n // Start and target positions are close, so reduce the travel time based on the\n // distance to travel relative to the viewport size.\n animationDuration = min(((animationDistance / viewportSize) * travelTime).roundToInt(), travelTime)\n }\n\n // Don't let the animation duration go to 0.\n animationDuration = max(1, animationDuration)\n\n // Determine the pan velocity, in radians per millisecond.\n panVelocity = panDistance / animationDuration\n\n // Determine the range velocity, in meters per millisecond.\n rangeVelocity = rangeDistance / animationDuration // meters per millisecond\n\n // Set up the animation timer.\n setUpAnimationTimer()\n }\n\n protected open fun setUpAnimationTimer() {\n animationJob?.cancel()\n animationJob = mainScope.launch {\n delay(animationFrequency)\n if (!isActive || !update()) completionCallback?.invoke(this@GoToAnimator) else setUpAnimationTimer()\n }\n }\n\n /**\n * This is the timer callback function. It invokes the range animator and the pan animator.\n */\n protected open fun update(): Boolean {\n val currentPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range)\n val continueUpdateRange = updateRange(currentPosition)\n val continueUpdateLocation = updateLocation(currentPosition)\n WorldWind.requestRedraw()\n return continueUpdateRange || continueUpdateLocation\n }\n\n /**\n * This function animates the range.\n */\n protected open fun updateRange(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n\n // If we haven't reached the maximum altitude, then step-wise increase it. Otherwise, step-wise change\n // the range towards the target altitude.\n val continueAnimation = if (maxAltitudeReachedTime == Instant.DISTANT_PAST) {\n val elapsedTime = Clock.System.now() - startTime\n val nextRange = min(startPosition.altitude + rangeVelocity * elapsedTime.inWholeMilliseconds, maxAltitude)\n // We're done if we get withing 1 meter of the desired range.\n if (abs(lookAt.range - nextRange) < 1) maxAltitudeReachedTime = Clock.System.now()\n lookAt.range = nextRange\n true\n } else {\n val elapsedTime = Clock.System.now() - maxAltitudeReachedTime\n val nextRange = if (maxAltitude > targetPosition.altitude) {\n max(maxAltitude - (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n } else {\n min(maxAltitude + (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n }\n lookAt.range = nextRange\n // We're done if we get withing 1 meter of the desired range.\n abs(lookAt.range - targetPosition.altitude) > 1\n }\n\n engine.cameraFromLookAt(lookAt)\n\n return continueAnimation\n }\n\n /**\n * This function animates the pan to the desired location.\n */\n protected open fun updateLocation(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n val elapsedTime = Clock.System.now() - startTime\n val distanceTravelled = startPosition.greatCircleDistance(currentPosition)\n val distanceRemaining = currentPosition.greatCircleDistance(targetPosition)\n val azimuthToTarget = currentPosition.greatCircleAzimuth(targetPosition)\n val distanceForNow = panVelocity * elapsedTime.inWholeMilliseconds\n val nextDistance = min(distanceForNow - distanceTravelled, distanceRemaining)\n val nextLocation = currentPosition.greatCircleLocation(azimuthToTarget, nextDistance, Location())\n var locationReached = false\n\n lookAt.position.latitude = nextLocation.latitude\n lookAt.position.longitude = nextLocation.longitude\n engine.cameraFromLookAt(lookAt)\n\n // We're done if we're within a meter of the desired location.\n if (nextDistance < 1.0 / engine.globe.equatorialRadius) locationReached = true\n\n return !locationReached\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Renderable\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.roundToInt\n\nopen class PickedObject protected constructor(\n val identifier: Int, val userObject: Any, val layer: Layer? = null, val terrainPosition: Position? = null\n) {\n var isOnTop = false\n protected set\n val isTerrain get() = terrainPosition != null\n\n companion object {\n @JvmStatic\n fun fromRenderable(identifier: Int, renderable: Renderable, layer: Layer) =\n PickedObject(identifier, renderable.pickDelegate ?: renderable, layer)\n\n @JvmStatic\n fun fromTerrain(identifier: Int, position: Position): PickedObject {\n val positionCopy = Position(position)\n return PickedObject(identifier, positionCopy, terrainPosition = positionCopy)\n }\n\n @JvmStatic\n fun identifierToUniqueColor(identifier: Int, result: Color): Color {\n val r8 = identifier shr 16 and 0xFF\n val g8 = identifier shr 8 and 0xFF\n val b8 = identifier and 0xFF\n result.red = r8 / 0xFF.toFloat()\n result.green = g8 / 0xFF.toFloat()\n result.blue = b8 / 0xFF.toFloat()\n result.alpha = 1f\n return result\n }\n\n @JvmStatic\n fun uniqueColorToIdentifier(color: Color): Int {\n val r8 = (color.red * 0xFF).roundToInt()\n val g8 = (color.green * 0xFF).roundToInt()\n val b8 = (color.blue * 0xFF).roundToInt()\n return r8 shl 16 or (g8 shl 8) or b8\n }\n }\n\n internal fun markOnTop() { isOnTop = true }\n\n override fun toString() = \"PickedObject(isOnTop=$isOnTop, identifier=$identifier, userObject=$userObject, layer=$layer, terrainPosition=$terrainPosition)\"\n}","package earth.worldwind\n\nopen class PickedObjectList {\n protected val objectsById = mutableMapOf()\n val objects get() = objectsById.values\n val count get() = objectsById.size\n val topPickedObject get() = objects.firstOrNull { po -> po.isOnTop }\n val terrainPickedObject get() = objects.firstOrNull { po -> po.isTerrain }\n val hasNonTerrainObjects get() = objects.firstOrNull { po -> !po.isTerrain } != null\n\n fun offerPickedObject(pickedObject: PickedObject) { objectsById[pickedObject.identifier] = pickedObject }\n\n fun pickedObjectWithId(identifier: Int) = objectsById[identifier]\n\n fun clearPickedObjects() = objectsById.clear()\n\n fun keepTopAndTerrainObjects() = objectsById.entries.removeAll { e -> !e.value.isOnTop && !e.value.isTerrain }\n\n override fun toString() = objects.joinToString(\", \", \"PickedObjectList{\", \"}\") { po -> po.toString() }\n}",null,"package earth.worldwind\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.frame.BasicFrameController\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.frame.FrameController\nimport earth.worldwind.frame.FrameMetrics\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.BasicTessellator\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.kgl.*\nimport kotlinx.coroutines.flow.MutableSharedFlow\nimport kotlinx.coroutines.flow.asSharedFlow\nimport kotlinx.datetime.TimeZone\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Main WorldWind model, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\nopen class WorldWind @JvmOverloads constructor(\n /**\n * Platform-dependent OpenGL implementation\n */\n gl: Kgl,\n /**\n * Platform-dependent GPU resource cache manager.\n */\n var renderResourceCache: RenderResourceCache,\n /**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models.\n */\n var globe: Globe = Globe(),\n /**\n * Terrain model tessellator.\n */\n var tessellator: Tessellator = BasicTessellator(),\n /**\n * Frame rendering and drawing logic implementation.\n */\n var frameController: FrameController = BasicFrameController(),\n /**\n * Helper class implementing [FrameMetrics] to measure performance.\n */\n var frameMetrics: FrameMetrics? = null\n) {\n /**\n * List of renderable object layers to be displayed by this WorldWind.\n */\n var layers = LayerList()\n /**\n * Current user view point parameters: location, altitude, orientation and field of view.\n */\n var camera = Camera()\n /**\n * The [GoToAnimator] used by this WorldWindow to respond to its goTo method.\n */\n val goToAnimator = GoToAnimator(this)\n /**\n * Screen area occupied by this WorldWind.\n */\n val viewport = Viewport()\n /**\n * Keep pixel scale when changing the height of viewport by adapting field of view\n */\n var isKeepScale = true\n /**\n * Scale of logical pixel size to hardware display pixel size. Used to adopt general level of details to screen density.\n */\n var densityFactor = 1f\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setDensityFactor\", \"invalidDensityFactor\"\n )\n }\n field = value\n }\n /**\n * Vertical exaggeration (VE) is a scale that is used to emphasize vertical features, which might be too small\n * to identify relative to the horizontal scale.\n */\n var verticalExaggeration = 1.0\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setVerticalExaggeration\", \"invalidVerticalExaggeration\"\n )\n }\n field = value\n }\n /**\n * Atmosphere altitude above ellipsoid. Used to control when objects are clipped by the far plain behind the globe.\n */\n var atmosphereAltitude = 160000.0\n /**\n * Context related to frame rendering phase\n */\n protected val rc = RenderContext()\n /**\n * Context related to frame drawing phase\n */\n protected val dc = DrawContext(gl)\n /**\n * The number of bits in the depth buffer associated with this WorldWind.\n */\n protected var depthBits = 0\n private val scratchModelview = Matrix4()\n private val scratchProjection = Matrix4()\n private val scratchPoint = Vec3()\n private val scratchRay = Line()\n\n init {\n // Initialize default camera location based on user time zone\n val initLocation = Location.fromTimeZone(TimeZone.currentSystemDefault())\n // Fit globe to screen vertically with 10% margin.\n val initAltitude = distanceToViewGlobeExtents * 1.1\n camera.position.set(initLocation.latitude, initLocation.longitude, initAltitude)\n }\n\n /**\n * Reset internal WorldWind state to initial values.\n */\n open fun reset() {\n // Clear the render resource cache; it's entries are now invalid.\n renderResourceCache.clear()\n\n // Invalidate elevation model.\n globe.elevationModel.invalidate()\n\n // Clear the viewport dimensions.\n viewport.setEmpty()\n\n // Reset screen density factor.\n densityFactor = 1f\n }\n\n /**\n * Specify the default WorldWind OpenGL state.\n */\n open fun setupDrawContext() {\n dc.gl.enable(GL_BLEND)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.enableVertexAttribArray(0)\n dc.gl.disable(GL_DITHER)\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.depthFunc(GL_LEQUAL)\n\n // Clear any cached OpenGL resources and state, which are now invalid.\n dc.contextLost()\n\n // Set the WorldWindow's depth bits.\n depthBits = dc.gl.getParameteri(GL_DEPTH_BITS)\n }\n\n /**\n * Apply new viewport dimensions.\n */\n open fun setupViewport(width: Int, height: Int) {\n dc.gl.viewport(0, 0, width, height)\n\n // Keep pixel scale by adapting field of view on view port resize\n if (isKeepScale && viewport.height != 0) {\n try {\n camera.fieldOfView *= height / viewport.height.toDouble()\n } catch (ignore: IllegalArgumentException) {\n // Keep original field of view in case new one does not fit requirements\n }\n }\n\n viewport.set(0, 0, width, height)\n }\n\n /**\n * Get look at orientation and range based on current camera position and specified geographic position\n *\n * @param result Pre-allocated look at object\n * @param lookAtPosition Custom \"look at\" position. Terrain position on viewport center will be used by default.\n * @return Look at orientation and range based on current camera position and specified geographic position\n */\n open fun cameraAsLookAt(result: LookAt, lookAtPosition: Position? = null): LookAt {\n if (lookAtPosition != null) {\n cameraToViewingTransform(scratchModelview)\n globe.geographicToCartesian(lookAtPosition.latitude, lookAtPosition.longitude, lookAtPosition.altitude, scratchPoint)\n result.position.copy(lookAtPosition)\n } else if (viewport.isEmpty || !pickTerrainPosition(viewport.width / 2.0, viewport.height / 2.0, result.position)) {\n // Use point on horizon as a backup\n cameraToViewingTransform(scratchModelview)\n scratchModelview.extractEyePoint(scratchRay.origin)\n scratchModelview.extractForwardVector(scratchRay.direction)\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n scratchRay.pointAt(globe.horizonDistance(cameraPosition.altitude), scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result.position)\n }\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n result.range = -scratchModelview.m[11]\n result.heading = scratchModelview.extractHeading(camera.roll) // disambiguate heading and roll\n result.tilt = scratchModelview.extractTilt()\n result.roll = camera.roll // roll passes straight through\n return result\n }\n\n /**\n * Set camera position and orientation, based on look at position, orientation and range\n *\n * @param lookAt Look at position, orientation and range\n */\n open fun cameraFromLookAt(lookAt: LookAt) {\n applyLookAtLimits(lookAt)\n lookAtToViewingTransform(lookAt, scratchModelview)\n scratchModelview.extractEyePoint(scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, camera.position)\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n camera.altitudeMode = AltitudeMode.ABSOLUTE // Calculated position is absolute\n camera.heading = scratchModelview.extractHeading(lookAt.roll) // disambiguate heading and roll\n camera.tilt = scratchModelview.extractTilt()\n camera.roll = lookAt.roll // roll passes straight through\n\n // Check if camera altitude is not under the surface\n val position = camera.position\n val elevation = if (globe.is2D) COLLISION_THRESHOLD else globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration + COLLISION_THRESHOLD\n if (elevation > position.altitude) {\n // Set camera altitude above the surface\n position.altitude = elevation\n // Compute new camera point\n globe.geographicToCartesian(position.latitude, position.longitude, position.altitude, scratchPoint)\n // Compute look at point\n globe.geographicToCartesian(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude, scratchRay.origin\n )\n // Compute normal to globe in look at point\n globe.geographicToCartesianNormal(lookAt.position.latitude, lookAt.position.longitude, scratchRay.direction)\n // Calculate tilt angle between new camera point and look at point\n scratchPoint.subtract(scratchRay.origin).normalize()\n val dot = scratchRay.direction.dot(scratchPoint)\n if (dot >= -1 && dot <= 1) camera.tilt = acos(dot).radians\n }\n }\n\n /**\n * More efficient way to determine terrain position at screen point using terrain from last rendered frame.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return true if the screen point could be converted; false if the screen point is not on the terrain\n */\n open fun pickTerrainPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && frameController.lastTerrains.values.any {\n it.intersect(scratchRay, scratchPoint)\n }) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param point the Cartesian point in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun cartesianToScreenPoint(point: Vec3, result: Vec2) = cartesianToScreenPoint(point.x, point.y, point.z, result)\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param x the Cartesian point's x component in meters\n * @param y the Cartesian point's y component in meters\n * @param z the Cartesian point's z component in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun cartesianToScreenPoint(x: Double, y: Double, z: Double, result: Vec2): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the WorldWindow's modelview-projection matrix.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview)\n\n // Transform the Cartesian point to OpenGL screen coordinates. Complete the transformation by converting to\n // viewport coordinates and discarding the screen Z component.\n if (scratchProjection.project(x, y, z, viewport, scratchPoint)) {\n result.x = scratchPoint.x\n result.y = viewport.height - scratchPoint.y\n return true\n }\n return false\n }\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param position the geographic position\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun geographicToScreenPoint(position: Position, result: Vec2) =\n geographicToScreenPoint(position.latitude, position.longitude, position.altitude, result)\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun geographicToScreenPoint(\n latitude: Angle, longitude: Angle, altitude: Double, result: Vec2\n ): Boolean {\n // Convert the position from geographic coordinates to Cartesian coordinates.\n globe.geographicToCartesian(latitude, longitude, altitude, scratchPoint)\n\n // Convert the position from Cartesian coordinates to screen coordinates.\n return cartesianToScreenPoint(scratchPoint, result)\n }\n\n /**\n * Converts a screen point to the geographic coordinates on the globe ellipsoid, ignoring terrain altitude.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result Pre-allocated Position receives the geographic coordinates\n *\n * @return true if the screen point could be converted; false if the screen point is not on the globe\n */\n open fun screenPointToGroundPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && globe.intersect(scratchRay, scratchPoint)) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Computes a Cartesian coordinate ray that passes through a screen point.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated Line in which to return the computed ray\n *\n * @return the result set to the computed ray in Cartesian coordinates\n */\n open fun rayThroughScreenPoint(x: Double, y: Double, result: Line): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the inverse modelview-projection matrix corresponding to the WorldWindow's current Camera state.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview).invert()\n\n // Convert from viewport coordinates to OpenGL screen coordinates by inverting the Y axis.\n // Transform the screen point to Cartesian coordinates at the near and far clip planes, store the result in the\n // ray's origin and direction, respectively. Complete the ray direction by subtracting the near point from the\n // far point and normalizing.\n if (scratchProjection.unProject(x, viewport.height - y, viewport, result.origin, result.direction)) {\n result.direction.subtract(result.origin).normalize()\n return true\n }\n return false\n }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n open fun pixelSizeAtDistance(distance: Double): Double {\n val tanFovY2 = tan(camera.fieldOfView.inRadians * 0.5)\n val frustumHeight = 2 * distance * tanFovY2\n return frustumHeight / viewport.height\n }\n\n /**\n * Returns the minimum distance from the globe's surface necessary to make the globe's extents visible in this World\n * Window.\n */\n val distanceToViewGlobeExtents get(): Double {\n val sinFovY2 = sin(camera.fieldOfView.inRadians * 0.5)\n val radius = globe.equatorialRadius\n return radius / sinFovY2 - radius\n }\n\n open fun renderFrame(frame: Frame): Boolean {\n // Mark the beginning of a frame render.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginRendering(rc)\n\n // Restrict camera tilt and roll in 2D\n if (globe.is2D) {\n camera.tilt = ZERO\n camera.roll = ZERO\n }\n\n // Set up the render context according to the WorldWindow's current state.\n rc.globe = globe\n rc.terrainTessellator = tessellator\n rc.layers = layers\n rc.camera = camera\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n rc.horizonDistance = globe.horizonDistance(cameraPosition.altitude)\n globe.geographicToCartesian(\n cameraPosition.latitude, cameraPosition.longitude, cameraPosition.altitude, rc.cameraPoint\n )\n rc.renderResourceCache = renderResourceCache\n rc.verticalExaggeration = verticalExaggeration\n rc.densityFactor = densityFactor\n rc.atmosphereAltitude = atmosphereAltitude\n rc.globeState = globe.state\n rc.elevationModelTimestamp = globe.elevationModel.timestamp\n\n // Configure the frame's Cartesian modelview matrix and eye coordinate projection matrix.\n computeViewingTransform(frame.projection, frame.modelview)\n frame.viewport.copy(viewport)\n// frame.infiniteProjection.setToInfiniteProjection(viewport.width, viewport.height, camera.fieldOfView, 1.0)\n// frame.infiniteProjection.multiplyByMatrix(frame.modelview)\n rc.viewport.copy(frame.viewport)\n rc.projection.copy(frame.projection)\n rc.modelview.copy(frame.modelview)\n rc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n if (pickMode) rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport, frame.pickViewport!!)\n else rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport)\n\n // Compute viewing distance and pixel size (for 3D view it will be done after terrain tessellation)\n if (globe.is2D) {\n scratchRay.origin.copy(rc.cameraPoint)\n rc.modelview.extractForwardVector(scratchRay.direction)\n rc.viewingDistance = if (globe.intersect(scratchRay, scratchPoint)) {\n rc.lookAtPosition = globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, Position())\n scratchPoint.distanceTo(rc.cameraPoint)\n } else rc.horizonDistance\n rc.pixelSize = rc.pixelSizeAtDistance(rc.viewingDistance)\n }\n\n // Accumulate the Drawables in the frame's drawable queue and drawable terrain data structures.\n rc.drawableQueue = frame.drawableQueue\n rc.drawableTerrain = frame.drawableTerrain\n rc.pickedObjects = frame.pickedObjects\n rc.pickDeferred = frame.pickDeferred\n rc.pickViewport = frame.pickViewport\n rc.pickPoint = frame.pickPoint\n rc.pickRay = frame.pickRay\n rc.isPickMode = frame.isPickMode\n\n // Let the frame controller render the WorldWindow's current state.\n frameController.renderFrame(rc)\n\n // Propagate redraw requests submitted during rendering.\n val isRedrawRequested = !pickMode && rc.isRedrawRequested\n\n // Mark the end of a frame render.\n if (!pickMode) frameMetrics?.endRendering(rc)\n\n // Reset the render context's state in preparation for the next frame.\n rc.reset()\n\n return isRedrawRequested\n }\n\n open fun drawFrame(frame: Frame) {\n // Mark the beginning of a frame draw.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginDrawing(dc)\n\n // Set up the draw context according to the frame's current state.\n dc.eyePoint.copy(frame.modelview.extractEyePoint(dc.eyePoint))\n dc.viewport.copy(frame.viewport)\n dc.projection.copy(frame.projection)\n dc.modelview.copy(frame.modelview)\n dc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n// dc.infiniteProjection.copy(frame.infiniteProjection)\n dc.screenProjection.setToScreenProjection(\n frame.viewport.width.toDouble(), frame.viewport.height.toDouble()\n )\n\n // Process the drawables in the frame's drawable queue and drawable terrain data structures.\n dc.drawableQueue = frame.drawableQueue\n dc.drawableTerrain = frame.drawableTerrain\n dc.pickedObjects = frame.pickedObjects\n dc.pickViewport = frame.pickViewport\n dc.pickPoint = frame.pickPoint\n dc.isPickMode = frame.isPickMode\n\n // Let the frame controller draw the frame.\n frameController.drawFrame(dc)\n\n // Increment render resource cache age on each frame\n renderResourceCache.incAge()\n\n // Release resources evicted during the previous frame.\n renderResourceCache.releaseEvictedResources(dc)\n\n // Mark the end of a frame draw.\n if (!pickMode) frameMetrics?.endDrawing(dc)\n\n // Reset the draw context's state in preparation for the next frame.\n dc.reset()\n }\n\n protected open fun computeViewingTransform(projection: Matrix4, modelview: Matrix4) {\n // Compute the clip plane distances. The near distance is set to a large value that does not clip the globe's\n // surface. The far distance is set to the smallest value that does not clip the atmosphere.\n val eyeAltitude = globe.getAbsolutePosition(camera.position, camera.altitudeMode).altitude\n val eyeHorizon = globe.horizonDistance(eyeAltitude)\n val atmosphereHorizon = globe.horizonDistance(atmosphereAltitude)\n\n // The far distance is set to the smallest value that does not clip the atmosphere.\n var far = eyeHorizon + atmosphereHorizon\n if (far < 1e3) far = 1e3\n\n //The near distance is set to a large value that does not clip the globe's surface.\n val maxDepthValue = (1 shl depthBits) - 1\n val farResolution = 10.0\n var near = far / (maxDepthValue / (1 - farResolution / far) - maxDepthValue + 1)\n\n // Prevent the near clip plane from intersecting the terrain.\n val distanceToSurface = if (globe.is2D) eyeAltitude else eyeAltitude - globe.getElevation(\n camera.position.latitude, camera.position.longitude\n ) * verticalExaggeration\n if (distanceToSurface > 0) {\n val tanHalfFov = tan(0.5 * camera.fieldOfView.inRadians)\n val maxNearDistance = distanceToSurface / (2 * sqrt(2 * tanHalfFov * tanHalfFov + 1))\n if (near > maxNearDistance) near = maxNearDistance\n }\n if (near < 1) near = 1.0\n\n // Compute a perspective projection matrix given the WorldWindow's viewport, field of view, and clip distances.\n projection.setToPerspectiveProjection(viewport.width, viewport.height, camera.fieldOfView, near, far)\n\n // Compute a Cartesian transform matrix from the Camera.\n cameraToViewingTransform(modelview)\n }\n\n protected open fun cameraToViewingTransform(result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the camera's position.\n geographicToCartesianTransform(camera.position, camera.altitudeMode, result)\n\n // Transform by the heading, tilt and roll.\n result.multiplyByRotation(0.0, 0.0, 1.0, -camera.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, camera.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, camera.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun lookAtToViewingTransform(lookAt: LookAt, result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the look-at's position.\n geographicToCartesianTransform(lookAt.position, lookAt.altitudeMode, result)\n\n // Transform by the heading and tilt.\n result.multiplyByRotation(0.0, 0.0, 1.0, -lookAt.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, lookAt.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, lookAt.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Transform by the range.\n result.multiplyByTranslation(0.0, 0.0, lookAt.range)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun geographicToCartesianTransform(position: Position, altitudeMode: AltitudeMode, result: Matrix4): Matrix4 {\n when (altitudeMode) {\n AltitudeMode.ABSOLUTE -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, position.altitude, result\n )\n AltitudeMode.CLAMP_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration, result\n )\n AltitudeMode.RELATIVE_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, (position.altitude + globe.getElevation(\n position.latitude, position.longitude\n )) * verticalExaggeration, result\n )\n }\n return result\n }\n\n protected open fun applyLookAtLimits(lookAt: LookAt) {\n // Clamp latitude to between -90 and +90, and normalize longitude to between -180 and +180.\n lookAt.position.latitude = lookAt.position.latitude.clampLatitude()\n lookAt.position.longitude = lookAt.position.longitude.normalizeLongitude()\n\n // Clamp range to values greater than 1 in order to prevent degenerating to a first-person lookAt when\n // range is zero.\n lookAt.range = lookAt.range.coerceIn(10.0, distanceToViewGlobeExtents * 2)\n\n // Normalize heading to between -180 and +180.\n lookAt.heading = lookAt.heading.normalize180()\n\n // Clamp tilt to between 0 and +90 to prevent the viewer from going upside down.\n lookAt.tilt = lookAt.tilt.inDegrees.coerceIn(0.0, 90.0).degrees\n\n // Normalize heading to between -180 and +180.\n lookAt.roll = lookAt.roll.normalize180()\n\n // Apply 2D limits when the globe is 2D.\n if (globe.is2D) {\n // Clamp range to prevent more than 360 degrees of visible longitude. Assumes a 45 degree horizontal\n // field of view.\n lookAt.range = lookAt.range.coerceIn(1.0, 2.0 * PI * globe.equatorialRadius)\n\n // Force tilt to 0 when in 2D mode to keep the viewer looking straight down.\n lookAt.tilt = ZERO\n lookAt.roll = ZERO\n }\n }\n\n companion object {\n protected const val COLLISION_THRESHOLD = 10.0 // 10m above surface\n\n private val _events = MutableSharedFlow(extraBufferCapacity = 1)\n\n /**\n * Provides a global mechanism for broadcasting notifications within the WorldWind library.\n */\n @JvmStatic\n val events = _events.asSharedFlow()\n\n /**\n * Requests that all WorldWindow instances update their display. Internally, this dispatches a REQUEST_REDRAW\n * message to the WorldWind message center.\n */\n @JvmStatic\n fun requestRedraw() { _events.tryEmit(Event.RequestRedraw) }\n\n /**\n * Requests render resource cache to remove specified resource ID from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n @JvmStatic\n suspend fun unmarkResourceAbsent(resourceId: Int) { _events.emit(Event.UnmarkResourceAbsent(resourceId)) }\n }\n\n sealed interface Event {\n /**\n * Event requesting WorldWindow instances to update their display.\n */\n object RequestRedraw : Event\n /**\n * Event requesting RenderResourceCache to un-mark resource from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n data class UnmarkResourceAbsent(val resourceId: Int) : Event\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_LINES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport earth.worldwind.util.kgl.GL_UNSIGNED_SHORT\nimport kotlin.jvm.JvmStatic\n\nopen class BasicDrawableTerrain protected constructor(): DrawableTerrain {\n override var offset = Globe.Offset.Center\n override val sector = Sector()\n override val vertexOrigin = Vec3()\n val lineElementRange = Range()\n val triStripElementRange = Range()\n var vertexPoints: FloatBufferObject? = null\n var vertexHeights: FloatBufferObject? = null\n var vertexTexCoords: FloatBufferObject? = null\n var elements: ShortBufferObject? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): BasicDrawableTerrain {\n val instance = pool.acquire() ?: BasicDrawableTerrain()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n vertexPoints = null\n vertexHeights = null\n vertexTexCoords = null\n elements = null\n pool?.release(this)\n pool = null\n }\n\n override fun useVertexPointAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexPoints?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 3, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun useVertexHeightsAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexHeights?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 1, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun useVertexTexCoordAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexTexCoords?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 2, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun drawLines(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.drawElements(\n GL_LINES, lineElementRange.length,\n GL_UNSIGNED_SHORT, lineElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun drawTriangles(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.drawElements(\n GL_TRIANGLE_STRIP, triStripElementRange.length,\n GL_UNSIGNED_SHORT, triStripElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun draw(dc: DrawContext) {\n drawTriangles(dc)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Framebuffer\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.BufferPool\nimport earth.worldwind.util.kgl.*\n\nopen class DrawContext(val gl: Kgl) {\n val eyePoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n// val infiniteProjection = Matrix4()\n val screenProjection = Matrix4()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var isPickMode = false\n private var framebuffer = KglFramebuffer.NONE\n private var program = KglProgram.NONE\n private var textureUnit = GL_TEXTURE0\n private val textures = Array(32) { KglTexture.NONE }\n private var arrayBuffer = KglBuffer.NONE\n private var elementArrayBuffer = KglBuffer.NONE\n private var scratchFramebufferCache: Framebuffer? = null\n private var unitSquareBufferCache: FloatBufferObject? = null\n private var scratchBuffer = ByteArray(4)\n private val pixelArray = ByteArray(4)\n private var bufferPool = BufferPool(GL_ARRAY_BUFFER, GL_DYNAMIC_DRAW)\n /**\n * Returns count of terrain drawables in queue\n */\n val drawableTerrainCount get() = drawableTerrain?.count?:0\n /**\n * Returns the name of the OpenGL framebuffer object that is currently active.\n */\n val currentFramebuffer get() = framebuffer\n /**\n * Returns the name of the OpenGL program object that is currently active.\n */\n val currentProgram get() = program\n /**\n * Returns the OpenGL multitexture unit that is currently active. Returns a value from the GL_TEXTUREi enumeration,\n * where i ranges from 0 to 32.\n */\n val currentTextureUnit get() = textureUnit\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the active multitexture unit. The active\n * multitexture unit may be determined by calling currentTextureUnit.\n */\n val currentTexture get() = currentTexture(textureUnit)\n /**\n * Returns an OpenGL framebuffer object suitable for offscreen drawing. The framebuffer has a 32-bit color buffer\n * and a 32-bit depth buffer, both attached as OpenGL texture 2D objects.\n *
\n * The framebuffer may be used by any drawable and for any purpose. However, the draw context makes no guarantees\n * about the framebuffer's contents. Drawables must clear the framebuffer before use, and must assume its contents\n * may be modified by another drawable, either during the current frame or in a subsequent frame.\n *
\n * The OpenGL framebuffer object is created on first use and cached. Subsequent calls to this method return the\n * cached buffer object.\n */\n val scratchFramebuffer get() = scratchFramebufferCache ?: Framebuffer().apply {\n val colorAttachment = Texture(1024, 1024, GL_RGBA, GL_UNSIGNED_BYTE, true)\n val depthAttachment = Texture(1024, 1024, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, true)\n // TODO consider modifying Texture's tex parameter behavior in order to make this unnecessary\n depthAttachment.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n depthAttachment.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n attachTexture(this@DrawContext, colorAttachment, GL_COLOR_ATTACHMENT0)\n attachTexture(this@DrawContext, depthAttachment, GL_DEPTH_ATTACHMENT)\n }.also { scratchFramebufferCache = it }\n /**\n * Returns an OpenGL buffer object containing a unit square expressed as four vertices at (0, 1), (0, 0), (1, 1) and\n * (1, 0). Each vertex is stored as two 32-bit floating point coordinates. The four vertices are in the order\n * required by a triangle strip.\n *
\n * The OpenGL buffer object is created on first use and cached. Subsequent calls to this method return the cached\n * buffer object.\n */\n val unitSquareBuffer get() = unitSquareBufferCache ?: FloatBufferObject(\n GL_ARRAY_BUFFER, floatArrayOf(0f, 1f, 0f, 0f, 1f, 1f, 1f, 0f)\n ).also { unitSquareBufferCache = it }\n /**\n * Returns a scratch list suitable for accumulating entries during drawing. The list is cleared before each frame,\n * otherwise its contents are undefined.\n */\n val scratchList = mutableListOf()\n\n fun reset() {\n eyePoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n screenProjection.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickViewport = null\n pickPoint = null\n isPickMode = false\n scratchBuffer.fill(0)\n scratchList.clear()\n bufferPool.reset()\n }\n\n fun contextLost() {\n // Clear objects and values associated with the current OpenGL context.\n framebuffer = KglFramebuffer.NONE\n program = KglProgram.NONE\n textureUnit = GL_TEXTURE0\n arrayBuffer = KglBuffer.NONE\n elementArrayBuffer = KglBuffer.NONE\n scratchFramebufferCache = null\n unitSquareBufferCache = null\n textures.fill(KglTexture.NONE)\n bufferPool.contextLost()\n }\n\n fun peekDrawable() = drawableQueue?.peekDrawable()\n\n fun pollDrawable() = drawableQueue?.pollDrawable()\n\n fun rewindDrawables() { drawableQueue?.rewindDrawables() }\n\n fun getDrawableTerrain(index: Int) = drawableTerrain?.getDrawable(index) as DrawableTerrain? ?: error(\"Invalid index\")\n\n /**\n * Makes an OpenGL framebuffer object active. The active framebuffer becomes the target of all OpenGL commands that\n * render to the framebuffer or read from the framebuffer. This has no effect if the specified framebuffer object is\n * already active. The default is framebuffer 0, indicating that the default framebuffer provided by the windowing\n * system is active.\n *\n * @param framebuffer the name of the OpenGL framebuffer object to make active, or 0 to make the default\n * framebuffer provided by the windowing system active\n */\n fun bindFramebuffer(framebuffer: KglFramebuffer) {\n if (this.framebuffer != framebuffer) {\n this.framebuffer = framebuffer\n gl.bindFramebuffer(GL_FRAMEBUFFER, framebuffer)\n }\n }\n\n /**\n * Makes an OpenGL program object active as part of current rendering state. This has no effect if the specified\n * program object is already active. The default is program 0, indicating that no program is active.\n *\n * @param program the name of the OpenGL program object to make active, or 0 to make no program active\n */\n fun useProgram(program: KglProgram) {\n if (this.program != program) {\n this.program = program\n gl.useProgram(program)\n }\n }\n\n /**\n * Specifies the OpenGL multitexture unit to make active. This has no effect if the specified multitexture unit is\n * already active. The default is GL_TEXTURE0.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n */\n fun activeTextureUnit(textureUnit: Int) {\n if (this.textureUnit != textureUnit) {\n this.textureUnit = textureUnit\n gl.activeTexture(textureUnit)\n }\n }\n\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the specified multitexture unit.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n *\n * @return the currently bound texture 2D object, or 0 if no texture object is bound\n */\n fun currentTexture(textureUnit: Int) = textures[textureUnit - GL_TEXTURE0]\n\n /**\n * Makes an OpenGL texture 2D object bound to the current multitexture unit. This has no effect if the specified\n * texture object is already bound. The default is texture 0, indicating that no texture is bound.\n *\n * @param texture the name of the OpenGL texture 2D object to make active, or 0 to make no texture active\n */\n fun bindTexture(texture: KglTexture) {\n val textureUnitIndex = textureUnit - GL_TEXTURE0\n if (textures[textureUnitIndex] != texture) {\n textures[textureUnitIndex] = texture\n gl.bindTexture(GL_TEXTURE_2D, texture)\n }\n }\n\n /**\n * Returns the name of the OpenGL buffer object bound to the specified target buffer.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n *\n * @return the currently bound buffer object, or 0 if no buffer object is bound\n */\n fun currentBuffer(target: Int): KglBuffer {\n return when (target) {\n GL_ARRAY_BUFFER -> arrayBuffer\n GL_ELEMENT_ARRAY_BUFFER -> elementArrayBuffer\n else -> KglBuffer.NONE\n }\n }\n\n /**\n * Makes an OpenGL buffer object bound to a specified target buffer. This has no effect if the specified buffer\n * object is already bound. The default is buffer 0, indicating that no buffer object is bound.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n * @param buffer the name of the OpenGL buffer object to make active\n */\n fun bindBuffer(target: Int, buffer: KglBuffer) {\n if (target == GL_ARRAY_BUFFER && arrayBuffer != buffer) {\n arrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else if (target == GL_ELEMENT_ARRAY_BUFFER && elementArrayBuffer != buffer) {\n elementArrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else {\n gl.bindBuffer(target, buffer)\n }\n }\n\n /**\n * Puts dynamic vertex data into the buffer pool and returns offset.\n *\n * @param vertexData dynamic vertex data to be added in the buffer pool\n * @return offset in the buffer pool\n */\n fun bindBufferPool(vertexData: FloatArray) = bufferPool.bindBuffer(this, vertexData)\n\n /**\n * Reads the fragment color at a screen point in the currently active OpenGL frame buffer. The X and Y components\n * indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param result an optional pre-allocated Color in which to return the fragment color, or null to return a new\n * color\n *\n * @return the result argument set to the fragment color, or a new color if the result is null\n */\n fun readPixelColor(x: Int, y: Int, result: Color): Color {\n // Read the fragment pixel as an RGBA 8888 color.\n gl.readPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixelArray)\n\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelArray[0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelArray[1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelArray[2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelArray[3].toInt() and 0xFF) / 0xFF.toFloat()\n return result\n }\n\n /**\n * Reads the unique fragment colors within a screen rectangle in the currently active OpenGL frame buffer. The\n * components indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen rectangle's X component\n * @param y the screen rectangle's Y component\n * @param width the screen rectangle's width\n * @param height the screen rectangle's height\n *\n * @return a set containing the unique fragment colors\n */\n fun readPixelColors(x: Int, y: Int, width: Int, height: Int): Set {\n // Read the fragment pixels as a tightly packed array of RGBA 8888 colors.\n val pixelCount = width * height\n val pixelBuffer = scratchBuffer(pixelCount * 4)\n val packAlignment = gl.getParameteri(GL_PACK_ALIGNMENT)\n gl.pixelStorei(GL_PACK_ALIGNMENT, 1) // read byte aligned\n gl.readPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixelBuffer)\n gl.pixelStorei(GL_PACK_ALIGNMENT, packAlignment) // restore the pack alignment\n val resultSet = mutableSetOf()\n var result = Color()\n for (i in 0 until pixelCount) {\n val idx = i * 4\n\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelBuffer[idx + 0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelBuffer[idx + 1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelBuffer[idx + 2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelBuffer[idx + 3].toInt() and 0xFF) / 0xFF.toFloat()\n\n // Accumulate the unique colors in a set.\n if (resultSet.add(result)) result = Color()\n }\n return resultSet\n }\n\n /**\n * Returns a scratch NIO buffer suitable for use during drawing. The returned buffer has capacity at least equal to\n * the specified capacity. The buffer is cleared before each frame, otherwise its contents, position, limit and mark\n * are undefined.\n *\n * @param capacity the buffer's minimum capacity in bytes\n *\n * @return the draw context's scratch buffer\n */\n fun scratchBuffer(capacity: Int): ByteArray {\n if (scratchBuffer.size < capacity) scratchBuffer = ByteArray(capacity)\n return scratchBuffer\n }\n}",null,"package earth.worldwind.util.kgl\n\nexpect class KglShader {\n companion object{ val NONE: KglShader }\n fun isValid(): Boolean\n}\nexpect class KglProgram {\n companion object{ val NONE: KglProgram }\n fun isValid(): Boolean\n}\nexpect class KglUniformLocation {\n companion object{ val NONE: KglUniformLocation }\n fun isValid(): Boolean\n}\nexpect class KglBuffer {\n companion object{ val NONE: KglBuffer }\n fun isValid(): Boolean\n}\nexpect class KglTexture {\n companion object{ val NONE: KglTexture }\n fun isValid(): Boolean\n}\nexpect class KglFramebuffer {\n companion object{ val NONE: KglFramebuffer }\n fun isValid(): Boolean\n}\n\nconst val GL_ACTIVE_TEXTURE = 0x84E0\nconst val GL_DEPTH_BUFFER_BIT = 0x00000100\nconst val GL_STENCIL_BUFFER_BIT = 0x00000400\nconst val GL_COLOR_BUFFER_BIT = 0x00004000\nconst val GL_FALSE = 0\nconst val GL_TRUE = 1\nconst val GL_POINTS = 0x0000\nconst val GL_LINES = 0x0001\nconst val GL_LINE_LOOP = 0x0002\nconst val GL_LINE_STRIP = 0x0003\nconst val GL_TRIANGLES = 0x0004\nconst val GL_TRIANGLE_STRIP = 0x0005\nconst val GL_TRIANGLE_FAN = 0x0006\nconst val GL_ZERO = 0\nconst val GL_ONE = 1\nconst val GL_SRC_COLOR = 0x0300\nconst val GL_ONE_MINUS_SRC_COLOR = 0x0301\nconst val GL_SRC_ALPHA = 0x0302\nconst val GL_ONE_MINUS_SRC_ALPHA = 0x0303\nconst val GL_DST_ALPHA = 0x0304\nconst val GL_ONE_MINUS_DST_ALPHA = 0x0305\nconst val GL_DST_COLOR = 0x0306\nconst val GL_ONE_MINUS_DST_COLOR = 0x0307\nconst val GL_SRC_ALPHA_SATURATE = 0x0308\nconst val GL_FUNC_ADD = 0x8006\nconst val GL_BLEND_EQUATION = 0x8009\nconst val GL_BLEND_EQUATION_RGB = 0x8009\nconst val GL_BLEND_EQUATION_ALPHA = 0x883D\nconst val GL_FUNC_SUBTRACT = 0x800A\nconst val GL_FUNC_REVERSE_SUBTRACT = 0x800B\nconst val GL_BLEND_DST_RGB = 0x80C8\nconst val GL_BLEND_SRC_RGB = 0x80C9\nconst val GL_BLEND_DST_ALPHA = 0x80CA\nconst val GL_BLEND_SRC_ALPHA = 0x80CB\nconst val GL_CONSTANT_COLOR = 0x8001\nconst val GL_ONE_MINUS_CONSTANT_COLOR = 0x8002\nconst val GL_CONSTANT_ALPHA = 0x8003\nconst val GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004\nconst val GL_BLEND_COLOR = 0x8005\nconst val GL_ARRAY_BUFFER = 0x8892\nconst val GL_ELEMENT_ARRAY_BUFFER = 0x8893\nconst val GL_ARRAY_BUFFER_BINDING = 0x8894\nconst val GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895\nconst val GL_STREAM_DRAW = 0x88E0\nconst val GL_STATIC_DRAW = 0x88E4\nconst val GL_DYNAMIC_DRAW = 0x88E8\nconst val GL_BUFFER_SIZE = 0x8764\nconst val GL_BUFFER_USAGE = 0x8765\nconst val GL_CURRENT_VERTEX_ATTRIB = 0x8626\nconst val GL_FRONT = 0x0404\nconst val GL_BACK = 0x0405\nconst val GL_FRONT_AND_BACK = 0x0408\nconst val GL_TEXTURE_2D = 0x0DE1\nconst val GL_CULL_FACE = 0x0B44\nconst val GL_BLEND = 0x0BE2\nconst val GL_DITHER = 0x0BD0\nconst val GL_STENCIL_TEST = 0x0B90\nconst val GL_DEPTH_TEST = 0x0B71\nconst val GL_SCISSOR_TEST = 0x0C11\nconst val GL_POLYGON_OFFSET_FILL = 0x8037\nconst val GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E\nconst val GL_SAMPLE_COVERAGE = 0x80A0\nconst val GL_NO_ERROR = 0\nconst val GL_INVALID_ENUM = 0x0500\nconst val GL_INVALID_VALUE = 0x0501\nconst val GL_INVALID_OPERATION = 0x0502\nconst val GL_OUT_OF_MEMORY = 0x0505\nconst val GL_INVALID_FRAMEBUFFER_OPERATION = 0x506\nconst val GL_CW = 0x0900\nconst val GL_CCW = 0x0901\nconst val GL_LINE_WIDTH = 0x0B21\nconst val GL_ALIASED_POINT_SIZE_RANGE = 0x846D\nconst val GL_ALIASED_LINE_WIDTH_RANGE = 0x846E\nconst val GL_CULL_FACE_MODE = 0x0B45\nconst val GL_FRONT_FACE = 0x0B46\nconst val GL_DEPTH_RANGE = 0x0B70\nconst val GL_DEPTH_WRITEMASK = 0x0B72\nconst val GL_DEPTH_CLEAR_VALUE = 0x0B73\nconst val GL_DEPTH_FUNC = 0x0B74\nconst val GL_STENCIL_CLEAR_VALUE = 0x0B91\nconst val GL_STENCIL_FUNC = 0x0B92\nconst val GL_STENCIL_FAIL = 0x0B94\nconst val GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95\nconst val GL_STENCIL_PASS_DEPTH_PASS = 0x0B96\nconst val GL_STENCIL_REF = 0x0B97\nconst val GL_STENCIL_VALUE_MASK = 0x0B93\nconst val GL_STENCIL_WRITEMASK = 0x0B98\nconst val GL_STENCIL_BACK_FUNC = 0x8800\nconst val GL_STENCIL_BACK_FAIL = 0x8801\nconst val GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802\nconst val GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803\nconst val GL_STENCIL_BACK_REF = 0x8CA3\nconst val GL_STENCIL_BACK_VALUE_MASK = 0x8CA4\nconst val GL_STENCIL_BACK_WRITEMASK = 0x8CA5\nconst val GL_VIEWPORT = 0x0BA2\nconst val GL_SCISSOR_BOX = 0x0C10\nconst val GL_COLOR_CLEAR_VALUE = 0x0C22\nconst val GL_COLOR_WRITEMASK = 0x0C23\nconst val GL_UNPACK_ALIGNMENT = 0x0CF5\nconst val GL_PACK_ALIGNMENT = 0x0D05\nconst val GL_MAX_TEXTURE_SIZE = 0x0D33\nconst val GL_MAX_VIEWPORT_DIMS = 0x0D3A\nconst val GL_SUBPIXEL_BITS = 0x0D50\nconst val GL_RED_BITS = 0x0D52\nconst val GL_GREEN_BITS = 0x0D53\nconst val GL_BLUE_BITS = 0x0D54\nconst val GL_ALPHA_BITS = 0x0D55\nconst val GL_DEPTH_BITS = 0x0D56\nconst val GL_STENCIL_BITS = 0x0D57\nconst val GL_POLYGON_OFFSET_UNITS = 0x2A00\nconst val GL_POLYGON_OFFSET_FACTOR = 0x8038\nconst val GL_TEXTURE_BINDING_2D = 0x8069\nconst val GL_SAMPLE_BUFFERS = 0x80A8\nconst val GL_SAMPLES = 0x80A9\nconst val GL_SAMPLE_COVERAGE_VALUE = 0x80AA\nconst val GL_SAMPLE_COVERAGE_INVERT = 0x80AB\nconst val GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2\nconst val GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3\nconst val GL_DONT_CARE = 0x1100\nconst val GL_FASTEST = 0x1101\nconst val GL_NICEST = 0x1102\nconst val GL_GENERATE_MIPMAP_HINT = 0x8192\nconst val GL_BYTE = 0x1400\nconst val GL_UNSIGNED_BYTE = 0x1401\nconst val GL_SHORT = 0x1402\nconst val GL_UNSIGNED_SHORT = 0x1403\nconst val GL_INT = 0x1404\nconst val GL_UNSIGNED_INT = 0x1405\nconst val GL_FLOAT = 0x1406\nconst val GL_FIXED = 0x140C\nconst val GL_STENCIL_INDEX = 0x1901\nconst val GL_DEPTH_COMPONENT = 0x1902\nconst val GL_RED = 0x1903\nconst val GL_GREEN = 0x1904\nconst val GL_BLUE = 0x1905\nconst val GL_ALPHA = 0x1906\nconst val GL_RGB = 0x1907\nconst val GL_RGBA = 0x1908\nconst val GL_LUMINANCE = 0x1909\nconst val GL_LUMINANCE_ALPHA = 0x190A\nconst val GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033\nconst val GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034\nconst val GL_UNSIGNED_SHORT_5_6_5 = 0x8363\nconst val GL_FRAGMENT_SHADER = 0x8B30\nconst val GL_VERTEX_SHADER = 0x8B31\nconst val GL_MAX_VERTEX_ATTRIBS = 0x8869\nconst val GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB\nconst val GL_MAX_VARYING_VECTORS = 0x8DFC\nconst val GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D\nconst val GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C\nconst val GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872\nconst val GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD\nconst val GL_SHADER_TYPE = 0x8B4F\nconst val GL_DELETE_STATUS = 0x8B80\nconst val GL_LINK_STATUS = 0x8B82\nconst val GL_VALIDATE_STATUS = 0x8B83\nconst val GL_ATTACHED_SHADERS = 0x8B85\nconst val GL_ACTIVE_UNIFORMS = 0x8B86\nconst val GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87\nconst val GL_ACTIVE_ATTRIBUTES = 0x8B89\nconst val GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A\nconst val GL_SHADING_LANGUAGE_VERSION = 0x8B8C\nconst val GL_CURRENT_PROGRAM = 0x8B8D\nconst val GL_NEVER = 0x0200\nconst val GL_LESS = 0x0201\nconst val GL_EQUAL = 0x0202\nconst val GL_LEQUAL = 0x0203\nconst val GL_GREATER = 0x0204\nconst val GL_NOTEQUAL = 0x0205\nconst val GL_GEQUAL = 0x0206\nconst val GL_ALWAYS = 0x0207\nconst val GL_KEEP = 0x1E00\nconst val GL_REPLACE = 0x1E01\nconst val GL_INCR = 0x1E02\nconst val GL_DECR = 0x1E03\nconst val GL_INVERT = 0x150A\nconst val GL_INCR_WRAP = 0x8507\nconst val GL_DECR_WRAP = 0x8508\nconst val GL_VENDOR = 0x1F00\nconst val GL_RENDERER = 0x1F01\nconst val GL_VERSION = 0x1F02\nconst val GL_EXTENSIONS = 0x1F03\nconst val GL_NEAREST = 0x2600\nconst val GL_LINEAR = 0x2601\nconst val GL_NEAREST_MIPMAP_NEAREST = 0x2700\nconst val GL_LINEAR_MIPMAP_NEAREST = 0x2701\nconst val GL_NEAREST_MIPMAP_LINEAR = 0x2702\nconst val GL_LINEAR_MIPMAP_LINEAR = 0x2703\nconst val GL_TEXTURE_MAG_FILTER = 0x2800\nconst val GL_TEXTURE_MIN_FILTER = 0x2801\nconst val GL_TEXTURE_WRAP_S = 0x2802\nconst val GL_TEXTURE_WRAP_T = 0x2803\nconst val GL_TEXTURE = 0x1702\nconst val GL_TEXTURE_CUBE_MAP = 0x8513\nconst val GL_TEXTURE_BINDING_CUBE_MAP = 0x8514\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A\nconst val GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C\nconst val GL_TEXTURE0 = 0x84C0\nconst val GL_TEXTURE1 = 0x84C1\nconst val GL_TEXTURE2 = 0x84C2\nconst val GL_TEXTURE3 = 0x84C3\nconst val GL_TEXTURE4 = 0x84C4\nconst val GL_TEXTURE5 = 0x84C5\nconst val GL_TEXTURE6 = 0x84C6\nconst val GL_TEXTURE7 = 0x84C7\nconst val GL_TEXTURE8 = 0x84C8\nconst val GL_TEXTURE9 = 0x84C9\nconst val GL_TEXTURE10 = 0x84CA\nconst val GL_TEXTURE11 = 0x84CB\nconst val GL_TEXTURE12 = 0x84CC\nconst val GL_TEXTURE13 = 0x84CD\nconst val GL_TEXTURE14 = 0x84CE\nconst val GL_TEXTURE15 = 0x84CF\nconst val GL_TEXTURE16 = 0x84D0\nconst val GL_TEXTURE17 = 0x84D1\nconst val GL_TEXTURE18 = 0x84D2\nconst val GL_TEXTURE19 = 0x84D3\nconst val GL_TEXTURE20 = 0x84D4\nconst val GL_TEXTURE21 = 0x84D5\nconst val GL_TEXTURE22 = 0x84D6\nconst val GL_TEXTURE23 = 0x84D7\nconst val GL_TEXTURE24 = 0x84D8\nconst val GL_TEXTURE25 = 0x84D9\nconst val GL_TEXTURE26 = 0x84DA\nconst val GL_TEXTURE27 = 0x84DB\nconst val GL_TEXTURE28 = 0x84DC\nconst val GL_TEXTURE29 = 0x84DD\nconst val GL_TEXTURE30 = 0x84DE\nconst val GL_TEXTURE31 = 0x84DF\nconst val GL_REPEAT = 0x2901\nconst val GL_CLAMP_TO_EDGE = 0x812F\nconst val GL_MIRRORED_REPEAT = 0x8370\nconst val GL_FLOAT_VEC2 = 0x8B50\nconst val GL_FLOAT_VEC3 = 0x8B51\nconst val GL_FLOAT_VEC4 = 0x8B52\nconst val GL_INT_VEC2 = 0x8B53\nconst val GL_INT_VEC3 = 0x8B54\nconst val GL_INT_VEC4 = 0x8B55\nconst val GL_BOOL = 0x8B56\nconst val GL_BOOL_VEC2 = 0x8B57\nconst val GL_BOOL_VEC3 = 0x8B58\nconst val GL_BOOL_VEC4 = 0x8B59\nconst val GL_FLOAT_MAT2 = 0x8B5A\nconst val GL_FLOAT_MAT3 = 0x8B5B\nconst val GL_FLOAT_MAT4 = 0x8B5C\nconst val GL_SAMPLER_2D = 0x8B5E\nconst val GL_SAMPLER_CUBE = 0x8B60\nconst val GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622\nconst val GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623\nconst val GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624\nconst val GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625\nconst val GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A\nconst val GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645\nconst val GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F\nconst val GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A\nconst val GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B\nconst val GL_COMPILE_STATUS = 0x8B81\nconst val GL_INFO_LOG_LENGTH = 0x8B84\nconst val GL_SHADER_SOURCE_LENGTH = 0x8B88\nconst val GL_SHADER_COMPILER = 0x8DFA\nconst val GL_SHADER_BINARY_FORMATS = 0x8DF8\nconst val GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9\nconst val GL_LOW_FLOAT = 0x8DF0\nconst val GL_MEDIUM_FLOAT = 0x8DF1\nconst val GL_HIGH_FLOAT = 0x8DF2\nconst val GL_LOW_INT = 0x8DF3\nconst val GL_MEDIUM_INT = 0x8DF4\nconst val GL_HIGH_INT = 0x8DF5\nconst val GL_FRAMEBUFFER = 0x8D40\nconst val GL_RENDERBUFFER = 0x8D41\nconst val GL_RGBA4 = 0x8056\nconst val GL_RGBA8 = 0x8058\nconst val GL_BGR = 0x80e0\nconst val GL_BGRA = 0x80e1\nconst val GL_RGB5_A1 = 0x8057\nconst val GL_RGB565 = 0x8D62\nconst val GL_DEPTH_COMPONENT16 = 0x81A5\nconst val GL_FRAMEBUFFER_COMPLETE = 0x8CD5\nconst val GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6\nconst val GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7\nconst val GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB\nconst val GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC\nconst val GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD\nconst val GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56\nconst val GL_FRAMEBUFFER_UNDEFINED = 0x8219\nconst val GL_COLOR_ATTACHMENT0 = 0x8CE0\nconst val GL_COLOR_ATTACHMENT1 = 0x8CE1\nconst val GL_COLOR_ATTACHMENT2 = 0x8CE2\nconst val GL_COLOR_ATTACHMENT3 = 0x8CE3\nconst val GL_COLOR_ATTACHMENT4 = 0x8CE4\nconst val GL_COLOR_ATTACHMENT5 = 0x8CE5\nconst val GL_COLOR_ATTACHMENT6 = 0x8CE6\nconst val GL_COLOR_ATTACHMENT7 = 0x8CE7\nconst val GL_COLOR_ATTACHMENT8 = 0x8CE8\nconst val GL_COLOR_ATTACHMENT9 = 0x8CE9\nconst val GL_COLOR_ATTACHMENT10 = 0x8CEA\nconst val GL_COLOR_ATTACHMENT11 = 0x8CEB\nconst val GL_COLOR_ATTACHMENT12 = 0x8CEC\nconst val GL_COLOR_ATTACHMENT13 = 0x8CED\nconst val GL_COLOR_ATTACHMENT14 = 0x8CEE\nconst val GL_COLOR_ATTACHMENT15 = 0x8CEF\nconst val GL_COLOR_ATTACHMENT16 = 0x8CF0\nconst val GL_COLOR_ATTACHMENT17 = 0x8CF1\nconst val GL_COLOR_ATTACHMENT18 = 0x8CF2\nconst val GL_COLOR_ATTACHMENT19 = 0x8CF3\nconst val GL_COLOR_ATTACHMENT20 = 0x8CF4\nconst val GL_COLOR_ATTACHMENT21 = 0x8CF5\nconst val GL_COLOR_ATTACHMENT22 = 0x8CF6\nconst val GL_COLOR_ATTACHMENT23 = 0x8CF7\nconst val GL_COLOR_ATTACHMENT24 = 0x8CF8\nconst val GL_COLOR_ATTACHMENT25 = 0x8CF9\nconst val GL_COLOR_ATTACHMENT26 = 0x8CFA\nconst val GL_COLOR_ATTACHMENT27 = 0x8CFB\nconst val GL_COLOR_ATTACHMENT28 = 0x8CFC\nconst val GL_COLOR_ATTACHMENT29 = 0x8CFD\nconst val GL_COLOR_ATTACHMENT30 = 0x8CFE\nconst val GL_COLOR_ATTACHMENT31 = 0x8CFF\nconst val GL_DEPTH_ATTACHMENT = 0x8D00\nconst val GL_STENCIL_ATTACHMENT = 0x8D20\nconst val GL_DEPTH_STENCIL_ATTACHMENT = 0x821A\nconst val GL_R8 = 0x8229\nconst val GL_R16 = 0x822A\nconst val GL_RG8 = 0x822B\nconst val GL_RG16 = 0x822C\nconst val GL_R16F = 0x822D\nconst val GL_R32F = 0x822E\nconst val GL_RG16F = 0x822F\nconst val GL_RG32F = 0x8230\nconst val GL_R8I = 0x8231\nconst val GL_R8UI = 0x8232\nconst val GL_R16I = 0x8233\nconst val GL_R16UI = 0x8234\nconst val GL_R32I = 0x8235\nconst val GL_R32UI = 0x8236\nconst val GL_RG8I = 0x8237\nconst val GL_RG8UI = 0x8238\nconst val GL_RG16I = 0x8239\nconst val GL_RG16UI = 0x823A\nconst val GL_RG32I = 0x823B\nconst val GL_RG32UI = 0x823C\nconst val GL_RG = 0x8227\nconst val GL_COMPRESSED_RED = 0x8225\nconst val GL_COMPRESSED_RG = 0x8226\n\ninterface Kgl {\n abstract val hasMaliOOMBug: Boolean\n \n fun createShader(type: Int): KglShader\n fun shaderSource(shader: KglShader, source: String)\n fun compileShader(shader: KglShader)\n fun deleteShader(shader: KglShader)\n\n fun getShaderParameteri(shader: KglShader, pname: Int): Int\n\n fun getProgramInfoLog(program: KglProgram) : String\n fun getShaderInfoLog(shader: KglShader) : String\n\n fun createProgram(): KglProgram\n fun attachShader(program: KglProgram, shader: KglShader)\n fun linkProgram(program: KglProgram)\n fun useProgram(program: KglProgram)\n fun deleteProgram(program: KglProgram)\n\n fun getProgramParameteri(program: KglProgram, pname: Int): Int\n\n fun getUniformLocation(program: KglProgram, name: String): KglUniformLocation\n fun bindAttribLocation(program: KglProgram, index: Int, name: String)\n\n fun enable(cap: Int)\n fun disable(cap: Int)\n\n fun enableVertexAttribArray(location: Int)\n fun disableVertexAttribArray(location: Int)\n\n fun getParameteri(pname: Int): Int\n fun getParameterf(pname: Int): Float\n fun getParameteriv(pname: Int): IntArray\n fun getParameterfv(pname: Int): FloatArray\n\n fun createBuffer(): KglBuffer\n fun bindBuffer(target: Int, buffer: KglBuffer)\n fun bufferData(target: Int, size: Int, sourceData: ShortArray?, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: IntArray?, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: FloatArray?, usage: Int, offset: Int = 0)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: ShortArray)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: IntArray)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: FloatArray)\n fun deleteBuffer(buffer: KglBuffer)\n\n fun vertexAttribPointer(location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int)\n\n fun uniform1f(location: KglUniformLocation, f: Float)\n fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform1i(location: KglUniformLocation, i: Int)\n\n fun uniform2f(location: KglUniformLocation, x: Float, y: Float)\n fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform2i(location: KglUniformLocation, x: Int, y: Int)\n\n fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float)\n fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int)\n\n fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float)\n fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int)\n\n fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n\n fun cullFace(mode: Int)\n fun frontFace (mode: Int)\n\n fun polygonOffset(factor: Float, units: Float)\n\n fun depthFunc(func: Int)\n fun depthMask(mask: Boolean)\n\n fun blendFunc(sFactor: Int, dFactor: Int)\n\n fun viewport(x: Int, y: Int, width: Int, height: Int)\n fun clearColor(r: Float, g: Float, b: Float, a: Float)\n fun clear(mask: Int)\n\n fun createTexture(): KglTexture\n fun deleteTexture(texture: KglTexture)\n fun texImage2D(target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?)\n fun activeTexture(texture: Int)\n fun bindTexture(target: Int, texture: KglTexture)\n fun generateMipmap(target: Int)\n fun texParameteri(target: Int, pname: Int, value: Int)\n\n fun drawArrays(mode: Int, first: Int, count: Int)\n fun drawElements(mode: Int, count: Int, type: Int, offset: Int)\n\n fun getError(): Int\n fun finish()\n\n fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer)\n fun createFramebuffer(): KglFramebuffer\n fun deleteFramebuffer(framebuffer: KglFramebuffer)\n fun checkFramebufferStatus(target: Int): Int\n fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int)\n\n fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray)\n fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean)\n fun lineWidth(width: Float)\n fun pixelStorei(pname: Int, param: Int)\n}\n",null,"package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.program.BasicShaderProgram\n\nopen class DrawShapeState internal constructor() {\n companion object {\n const val MAX_DRAW_ELEMENTS = 4\n }\n\n var program: BasicShaderProgram? = null\n var vertexBuffer: FloatBufferObject? = null\n var elementBuffer: AbstractBufferObject? = null\n val vertexOrigin = Vec3()\n var vertexStride = 0\n var enableCullFace = true\n var enableDepthTest = true\n var enableDepthWrite = true\n var depthOffset = 0.0\n protected val color = Color()\n protected var opacity = 1.0f\n protected var lineWidth = 1f\n protected var texture: Texture? = null\n protected val texCoordMatrix = Matrix3()\n private val texCoordAttrib = VertexAttrib()\n internal var primCount = 0\n internal val prims = Array(MAX_DRAW_ELEMENTS) { DrawElements() }\n\n open fun reset() {\n program = null\n vertexBuffer = null\n elementBuffer = null\n vertexOrigin.set(0.0, 0.0, 0.0)\n vertexStride = 0\n enableCullFace = true\n enableDepthTest = true\n depthOffset = 0.0\n color.set(1f, 1f, 1f, 1f)\n opacity = 1.0f\n lineWidth = 1f\n texture = null\n texCoordMatrix.setToIdentity()\n texCoordAttrib.size = 0\n texCoordAttrib.offset = 0\n primCount = 0\n for (idx in 0 until MAX_DRAW_ELEMENTS) prims[idx].texture = null\n }\n\n fun color(color: Color) = apply { this.color.copy(color) }\n\n fun opacity(opacity: Float) = apply { this.opacity = opacity }\n\n fun lineWidth(width: Float) = apply { lineWidth = width }\n\n fun texture(texture: Texture?) = apply { this.texture = texture }\n\n fun texCoordMatrix(matrix: Matrix3) = apply { texCoordMatrix.copy(matrix) }\n\n fun texCoordAttrib(size: Int, offset: Int) = apply {\n texCoordAttrib.size = size\n texCoordAttrib.offset = offset\n }\n\n open fun drawElements(mode: Int, count: Int, type: Int, offset: Int) {\n val prim = prims[primCount++]\n prim.mode = mode\n prim.count = count\n prim.type = type\n prim.offset = offset\n prim.color.copy(color)\n prim.opacity = opacity\n prim.lineWidth = lineWidth\n prim.texture = texture\n prim.texCoordMatrix.copy(texCoordMatrix)\n prim.texCoordAttrib.size = texCoordAttrib.size\n prim.texCoordAttrib.offset = texCoordAttrib.offset\n }\n\n internal open class DrawElements {\n var mode = 0\n var count = 0\n var type = 0\n var offset = 0\n val color = Color()\n var opacity = 1.0f\n var lineWidth = 0f\n var texture: Texture? = null\n val texCoordMatrix = Matrix3()\n val texCoordAttrib = VertexAttrib()\n }\n\n internal open class VertexAttrib {\n var size = 0\n var offset = 0\n }\n}","package earth.worldwind.draw\n\n/**\n * Drawable group provides a standard set of group IDs for organizing WorldWindow drawing into four phases:\n * background, surface, shape, and screen.\n * Accepted values are [BACKGROUND], [SURFACE], [SHAPE] and [SCREEN].\n */\nenum class DrawableGroup {\n /**\n * Indicating drawables displayed before everything else. This group is typically\n * used to display atmosphere and stars before all other drawables.\n */\n BACKGROUND,\n /**\n * Indicating drawables displayed on the globe's surface. Surface drawables are\n * displayed beneath shapes and screen drawables.\n */\n SURFACE,\n /**\n * Indicating shape drawables, such as placemarks, polygons and polylines. Shape\n * drawables are displayed on top of surface drawables, but beneath screen drawables.\n */\n SHAPE,\n /**\n * Indicating drawables displayed in the plane of the screen. Screen drawables are\n * displayed on top of everything else.\n */\n SCREEN;\n}","package earth.worldwind.draw\n\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.layer.heatmap.ElevationHeatmapProgram\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableHeatmap protected constructor(): Drawable {\n val heightLimits = FloatArray(2)\n val colors = Array(5) { Color() }\n var opacity = 1.0f\n var offset = Globe.Offset.Center\n var program: ElevationHeatmapProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableHeatmap {\n val instance = pool.acquire() ?: DrawableHeatmap()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n try {\n dc.gl.enableVertexAttribArray(1)\n\n program.setLimits(heightLimits)\n program.setColors(colors)\n program.setOpacity(opacity)\n\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n if (terrain.offset != offset) continue\n\n // Get the terrain's attributes, and keep a flag to ensure we apply the terrain's attributes at most once.\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (\n terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) &&\n terrain.useVertexHeightsAttrib(dc, 1 /*vertexHeights*/)\n ) {\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n program.mvpMatrix.copy(dc.modelviewProjection)\n program.mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection()\n } else continue // terrain vertex attribute failed to bind\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n dc.gl.disableVertexAttribArray(1)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_LINES\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableLines protected constructor(): Drawable {\n /**\n * Leader line vertex array. Initially sized to store two xyz points.\n */\n var vertexPoints = FloatArray(6)\n val mvpMatrix = Matrix4()\n val color = Color()\n var opacity = 1.0f\n var lineWidth = 1f\n var enableDepthTest = true\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableLines {\n val instance = pool.acquire() ?: DrawableLines()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n /**\n * Performs the actual rendering of the Placemark.\n *\n * @param dc The current draw context.\n */\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n val offset = dc.bindBufferPool(vertexPoints)\n if (offset < 0) return // vertex buffer unspecified or failed to bind\n\n // Disable texturing.\n program.enableTexture(false)\n\n // Use the leader's color.\n program.loadColor(color)\n\n // Use the leader's opacity.\n program.loadOpacity(opacity)\n\n // Use the leader's modelview-projection matrix.\n program.loadModelviewProjection(mvpMatrix)\n\n // Disable depth testing if requested.\n if (!enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Apply the leader's line width in screen pixels.\n dc.gl.lineWidth(lineWidth)\n\n // Use the leader line as the vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, 0, offset)\n\n // Draw the leader line.\n dc.gl.drawArrays(GL_LINES, 0 /*first*/, 2 /*count*/)\n\n // Restore the default WorldWind OpenGL state.\n if (!enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n\n dc.gl.lineWidth(1f)\n }\n}","package earth.worldwind.draw\n\nimport kotlin.math.max\n\nopen class DrawableQueue internal constructor(){\n protected var size = 0\n protected var position = 0\n protected var entries = arrayOfNulls(size)\n val count get() = size\n /**\n * Sorts drawables by ascending group ID, then ascending order, then by ascending ordinal.\n */\n protected open val sortComparator = Comparator { lhs, rhs ->\n // Comparator accepts only non-null Entries\n var result = lhs!!.groupId.compareTo(rhs!!.groupId)\n if (result == 0) result = lhs.order.compareTo(rhs.order)\n if (result == 0) result = lhs.ordinal.compareTo(rhs.ordinal)\n result\n }\n\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n fun offerDrawable(drawable: Drawable, groupId: DrawableGroup, depth: Double) {\n val capacity = entries.size\n if (capacity == size) {\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries)\n entries = newEntries\n }\n val entry = entries[size] ?: Entry().also { entries[size] = it }\n entry.set(drawable, groupId, depth, size++)\n }\n\n fun getDrawable(index: Int) = if (index < size) entries[index]?.drawable else null\n\n fun peekDrawable() = getDrawable(position)\n\n fun pollDrawable() = getDrawable(position++)\n\n fun rewindDrawables() { position = 0 }\n\n fun sortDrawables() {\n // Limit sort to non-null Entries only\n entries.sortWith(sortComparator, 0, size)\n position = 0\n }\n\n fun clearDrawables() {\n for (idx in 0 until size) {\n entries[idx]?.recycle()\n }\n size = 0\n position = 0\n }\n\n protected open class Entry {\n var drawable: Drawable? = null\n var groupId = DrawableGroup.BACKGROUND\n var order = 0.0\n var ordinal = 0\n\n fun set(drawable: Drawable, groupId: DrawableGroup, order: Double, ordinal: Int) {\n this.drawable = drawable\n this.groupId = groupId\n this.order = order\n this.ordinal = ordinal\n }\n\n fun recycle() {\n drawable?.recycle()\n drawable = null\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableScreenTexture protected constructor(): Drawable {\n val unitSquareTransform = Matrix4()\n val color = Color()\n var opacity = 1.0f\n var enableDepthTest = true\n var program: BasicShaderProgram? = null\n var texture: Texture? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableScreenTexture {\n val instance = pool.acquire() ?: DrawableScreenTexture()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n texture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (!dc.unitSquareBuffer.bindBuffer(dc)) return // vertex buffer failed to bind\n\n // Use the draw context's pick mode and use the drawable's color.\n program.enablePickMode(dc.isPickMode)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Disable writing to the depth buffer.\n dc.gl.depthMask(false)\n\n // Use a unit square as the vertex point and vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 2, GL_FLOAT, false, 0, 0)\n dc.gl.vertexAttribPointer(1 /*vertexTexCoord*/, 2, GL_FLOAT, false, 0, 0)\n\n // Draw this DrawableScreenTextures.\n doDraw(dc, this)\n\n // Draw all DrawableScreenTextures adjacent in the queue that share the same GLSL program.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n val drawable = dc.pollDrawable() as DrawableScreenTexture // take it off the queue\n doDraw(dc, drawable)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n }\n\n protected open fun doDraw(dc: DrawContext, drawable: DrawableScreenTexture) {\n val program = drawable.program ?: return\n\n // Use the drawable's color.\n program.loadColor(drawable.color)\n program.loadOpacity(drawable.opacity)\n\n // Attempt to bind the drawable's texture, configuring the shader program appropriately if there is no texture\n // or if the texture failed to bind.\n val texture = drawable.texture\n if (texture?.bindTexture(dc) == true) {\n program.enableTexture(true)\n program.loadTexCoordMatrix(texture.coordTransform)\n } else {\n program.enableTexture(false)\n }\n\n // Use a modelview-projection matrix that transforms the unit square to screen coordinates.\n drawable.mvpMatrix.setToMultiply(dc.screenProjection, drawable.unitSquareTransform)\n program.loadModelviewProjection(drawable.mvpMatrix)\n\n // Disable depth testing if requested.\n if (!drawable.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Draw the unit square as triangles.\n dc.gl.drawArrays(GL_TRIANGLE_STRIP, 0, 4)\n\n // Restore the default WorldWind OpenGL state.\n if (!drawable.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableScreenTexture && program === that.program\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_CULL_FACE\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableShape protected constructor(): Drawable {\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableShape {\n val instance = pool.acquire() ?: DrawableShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n // TODO shape batching\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (drawState.vertexBuffer?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n if (drawState.elementBuffer?.bindBuffer(dc) != true) return // element buffer unspecified or failed to bind\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Use the draw context's modelview projection matrix, transformed to shape local coordinates.\n if (drawState.depthOffset != 0.0) {\n mvpMatrix.copy(dc.projection).offsetProjectionDepth(drawState.depthOffset)\n mvpMatrix.multiplyByMatrix(dc.modelview)\n } else {\n mvpMatrix.copy(dc.modelviewProjection)\n }\n mvpMatrix.multiplyByTranslation(\n drawState.vertexOrigin.x,\n drawState.vertexOrigin.y,\n drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n\n // Disable triangle back face culling if requested.\n if (!drawState.enableCullFace) dc.gl.disable(GL_CULL_FACE)\n\n // Disable depth testing if requested.\n if (!drawState.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Disable depth writing if requested.\n if (!drawState.enableDepthWrite) dc.gl.depthMask(false)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Use the shape's vertex point attribute and vertex texture coordinate attribute.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, drawState.vertexStride, 0 /*offset*/)\n\n // Draw the specified primitives.\n for (idx in 0 until drawState.primCount) {\n val prim = drawState.prims[idx]\n program.loadColor(prim.color)\n program.loadOpacity(prim.opacity)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n dc.gl.vertexAttribPointer(\n 1 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Restore the default WorldWind OpenGL state.\n if (!drawState.enableCullFace) dc.gl.enable(GL_CULL_FACE)\n if (!drawState.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n if (!drawState.enableDepthWrite) dc.gl.depthMask(true)\n dc.gl.lineWidth(1f)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSightline protected constructor(): Drawable {\n val centerTransform = Matrix4()\n var range = 0f\n val visibleColor = Color(0f, 0f, 0f, 0f)\n val occludedColor = Color(0f, 0f, 0f, 0f)\n var program: SightlineProgram? = null\n private var pool: Pool? = null\n private val sightlineView = Matrix4()\n private val matrix = Matrix4()\n private val cubeMapProjection = Matrix4()\n private val cubeMapFace = arrayOf(\n Matrix4().setToRotation(0.0, 0.0, 1.0, NEG90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // positive X\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative X\n Matrix4().setToRotation(1.0, 0.0, 0.0, POS90), // positive Y\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS180).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative Y\n /*Matrix4().setToRotation(1.0, 0.0, 0.0, POS180),*/ // positive Z, intentionally omitted as terrain is never visible when looking up\n Matrix4() // negative Z\n )\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSightline {\n val instance = pool.acquire() ?: DrawableSightline()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n visibleColor.set(0f, 0f, 0f, 0f)\n occludedColor.set(0f, 0f, 0f, 0f)\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the drawable's color.\n program.loadRange(range)\n program.loadColor(visibleColor, occludedColor)\n\n // Configure the cube map projection matrix to capture one face of the cube map as far as the sightline's range.\n cubeMapProjection.setToPerspectiveProjection(1, 1, POS90, 1.0, range.toDouble())\n\n // TODO accumulate only the visible terrain, which can be used in both passes\n // TODO give terrain a bounding box, test with a frustum set using depthviewProjection\n for (i in cubeMapFace.indices) {\n sightlineView.copy(centerTransform)\n sightlineView.multiplyByMatrix(cubeMapFace[i])\n sightlineView.invertOrthonormal()\n if (drawSceneDepth(dc)) drawSceneOcclusion(dc)\n }\n }\n\n protected open fun drawSceneDepth(dc: DrawContext): Boolean {\n val program = program ?: return false\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return false // framebuffer failed to bind\n\n // Clear the framebuffer.\n val depthTexture = framebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n dc.gl.viewport(0, 0, depthTexture.width, depthTexture.height)\n dc.gl.clear(GL_DEPTH_BUFFER_BIT)\n\n // Draw only depth values offset slightly away from the viewer.\n dc.gl.colorMask(r = false, g = false, b = false, a = false)\n dc.gl.enable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(4f, 4f)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Draw the terrain onto one face of the cube map, from the sightline's point of view.\n matrix.setToMultiply(cubeMapProjection, sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Restore the default World Wind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.colorMask(r = true, g = true, b = true, a = true)\n dc.gl.disable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(0f, 0f)\n }\n return true\n }\n\n protected open fun drawSceneOcclusion(dc: DrawContext) {\n val program = program ?: return\n try {\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n val depthTexture = dc.scratchFramebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n if (!depthTexture.bindTexture(dc)) return // framebuffer texture failed to bind\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n matrix.copy(dc.modelviewProjection)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Map the terrain into one face of the cube map, from the sightline's point of view.\n matrix.copy(sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadSightlineProjection(cubeMapProjection, matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Unbind depth attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.layer.starfield.StarFieldProgram\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_ALIASED_POINT_SIZE_RANGE\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_POINTS\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableStarField protected constructor(): Drawable {\n val matrix = Matrix4()\n var julianDate = 0.0\n var minMagnitude = 0.0f\n var maxMagnitude = 0.0f\n var numStars = 0\n var isShowSun = false\n var sunSize = 0.0f\n var sunTexture: Texture? = null\n var starsPositionsBuffer: FloatBufferObject? = null\n var sunPositionsBuffer: FloatBufferObject? = null\n var program: StarFieldProgram? = null\n private var pool: Pool? = null\n\n companion object {\n var maxGlPointSize = 0f\n\n @JvmStatic\n fun obtain(pool: Pool): DrawableStarField {\n val instance = pool.acquire() ?: DrawableStarField()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n starsPositionsBuffer = null\n sunPositionsBuffer = null\n sunTexture = null\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n try {\n dc.gl.depthMask(false)\n drawStars(dc, program, starsPositionsBuffer)\n if (isShowSun) drawSun(dc, program, sunPositionsBuffer, sunTexture)\n } finally {\n dc.gl.depthMask(true)\n }\n }\n\n protected open fun drawStars(dc: DrawContext, program: StarFieldProgram, buffer: FloatBufferObject?) {\n if (buffer?.bindBuffer(dc) != true) return\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n // This subtraction does not work properly on the GPU due to precision loss. It must be done on the CPU.\n program.loadModelviewProjection(matrix)\n program.loadNumDays((julianDate - 2451545.0).toFloat())\n program.loadMagnitudeRange(minMagnitude, maxMagnitude)\n program.loadTextureEnabled(false)\n dc.gl.drawArrays(GL_POINTS, 0, numStars)\n }\n\n protected open fun drawSun(\n dc: DrawContext, program: StarFieldProgram, sunBuffer: FloatBufferObject?, sunTexture: Texture?\n ) {\n if (maxGlPointSize == 0f) maxGlPointSize = dc.gl.getParameterfv(GL_ALIASED_POINT_SIZE_RANGE)[1]\n\n if (sunSize > maxGlPointSize) {\n Logger.log(Logger.WARN, \"StarFieldLayer - sunSize is to big, max size allowed is: $maxGlPointSize\")\n }\n\n if (sunBuffer?.bindBuffer(dc) != true) return\n if (sunTexture?.bindTexture(dc) != true) return\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n program.loadTextureEnabled(true)\n dc.gl.drawArrays(GL_POINTS, 0, 1)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceColor protected constructor(): Drawable {\n val color = Color()\n var opacity = 1.0f\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceColor {\n val instance = pool.acquire() ?: DrawableSurfaceColor()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n program.loadOpacity(opacity)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceShape protected constructor(): Drawable {\n var offset = Globe.Offset.Center\n val sector = Sector()\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val textureMvpMatrix = Matrix4()\n private val identityMatrix3 = Matrix3()\n private val color = Color()\n private var opacity = 1.0f\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceShape {\n val instance = pool.acquire() ?: DrawableSurfaceShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n\n // Accumulate shapes in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this shape.\n scratchList.add(this)\n\n // Add all shapes that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (next !is DrawableSurfaceShape) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated shapes on each drawable terrain.\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n // Draw the accumulated surface shapes to a texture representing the terrain's sector.\n if (drawShapesToTexture(dc, terrain) > 0) {\n // Draw the texture containing the rasterized shapes onto the terrain geometry.\n drawTextureToTerrain(dc, terrain)\n }\n }\n } finally {\n // Clear the accumulated shapes.\n scratchList.clear()\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n }\n }\n\n protected open fun drawShapesToTexture(dc: DrawContext, terrain: DrawableTerrain): Int {\n // Shapes have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n\n // The terrain's sector defines the geographic region in which to draw.\n val terrainSector = terrain.sector\n\n // Keep track of the number of shapes drawn into the texture.\n var shapeCount = 0\n val program = drawState.program ?: return 0\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return 0 // framebuffer failed to bind\n\n // Clear the framebuffer and disable the depth test.\n val colorAttachment = framebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n dc.gl.viewport(0, 0, colorAttachment.width, colorAttachment.height)\n dc.gl.clear(GL_COLOR_BUFFER_BIT)\n dc.gl.disable(GL_DEPTH_TEST)\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Compute the tile common matrix that transforms geographic coordinates to texture fragments appropriate\n // for the terrain sector.\n // TODO capture this in a method on Matrix4\n textureMvpMatrix.setToIdentity()\n textureMvpMatrix.multiplyByTranslation(-1.0, -1.0, 0.0)\n textureMvpMatrix.multiplyByScale(\n 2.0 / terrainSector.deltaLongitude.inDegrees,\n 2.0 / terrainSector.deltaLatitude.inDegrees,\n 0.0\n )\n textureMvpMatrix.multiplyByTranslation(\n -terrainSector.minLongitude.inDegrees,\n -terrainSector.minLatitude.inDegrees,\n 0.0\n )\n for (element in scratchList) {\n // Get the shape.\n val shape = element as DrawableSurfaceShape\n if (shape.offset != terrain.offset || !shape.sector.intersectsOrNextTo(terrainSector)) continue\n if (shape.drawState.vertexBuffer?.bindBuffer(dc) != true) continue // vertex buffer unspecified or failed to bind\n if (shape.drawState.elementBuffer?.bindBuffer(dc) != true) continue // element buffer unspecified or failed to bind\n\n // Transform local shape coordinates to texture fragments appropriate for the terrain sector.\n mvpMatrix.copy(textureMvpMatrix)\n mvpMatrix.multiplyByTranslation(\n shape.drawState.vertexOrigin.x,\n shape.drawState.vertexOrigin.y,\n shape.drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n\n // Use the shape's vertex point attribute.\n dc.gl.vertexAttribPointer(\n 0 /*vertexPoint*/, 3, GL_FLOAT, false, shape.drawState.vertexStride, 0\n )\n\n // Draw the specified primitives to the framebuffer texture.\n for (primIdx in 0 until shape.drawState.primCount) {\n val prim = shape.drawState.prims[primIdx]\n program.loadColor(prim.color)\n program.loadOpacity(prim.opacity)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n dc.gl.vertexAttribPointer(\n 1 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n shape.drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Accumulate the number of shapes drawn into the texture.\n shapeCount++\n }\n } finally {\n // Restore the default WorldWind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.lineWidth(1f)\n }\n return shapeCount\n }\n\n protected open fun drawTextureToTerrain(dc: DrawContext, terrain: DrawableTerrain) {\n val program = drawState.program ?: return\n try {\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) return // terrain vertex attribute failed to bind\n if (!terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)) return // terrain vertex attribute failed to bind\n val colorAttachment = dc.scratchFramebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n if (!colorAttachment.bindTexture(dc)) return // framebuffer texture failed to bind\n\n // Configure the program to draw texture fragments unmodified and aligned with the terrain.\n // TODO consolidate pickMode and enableTexture into a single textureMode\n // TODO it's confusing that pickMode must be disabled during surface shape render-to-texture\n program.enablePickMode(false)\n program.enableTexture(true)\n program.loadTexCoordMatrix(identityMatrix3)\n program.loadColor(color)\n program.loadOpacity(opacity)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n } finally {\n // Unbind color attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceTexture protected constructor(): Drawable {\n var offset = Globe.Offset.Center\n val textureSector = Sector()\n val terrainSector = Sector()\n val color = Color()\n var opacity = 1.0f\n val texCoordMatrix = Matrix3()\n var texture: Texture? = null\n var program: SurfaceTextureProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceTexture {\n val instance = pool.acquire() ?: DrawableSurfaceTexture()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(\n program: SurfaceTextureProgram?, textureSector: Sector, opacity: Float, texture: Texture,\n texCoordMatrix: Matrix3, offset: Globe.Offset, terrainSector: Sector = textureSector\n ) = apply {\n this.offset = offset\n this.textureSector.copy(textureSector)\n this.terrainSector.copy(terrainSector)\n this.color.set(1f, 1f, 1f, 1f)\n this.opacity = opacity\n this.texCoordMatrix.copy(texCoordMatrix)\n this.texture = texture\n this.program = program\n }\n\n override fun recycle() {\n texture = null\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Accumulate surface textures in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this surface texture.\n scratchList.add(this)\n\n // Add all surface textures that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated surface textures.\n drawSurfaceTextures(dc)\n } finally {\n // Clear the accumulated surface textures.\n scratchList.clear()\n }\n }\n\n protected open fun drawSurfaceTextures(dc: DrawContext) {\n val program = program ?: return // program unspecified\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Enable the program to display surface textures from multi-texture unit 0.\n program.enableTexture(true)\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Surface textures have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Get the terrain's attributes, and keep a flag to ensure we apply the terrain's attributes at most once.\n val terrainSector = terrain.sector\n val terrainOrigin = terrain.vertexOrigin\n var usingTerrainAttrs = false\n for (element in scratchList) {\n // Get the surface texture and its sector.\n val texture = element as DrawableSurfaceTexture\n val textureSector = texture.textureSector\n if (texture.offset != terrain.offset || !texture.terrainSector.intersects(terrainSector)) continue\n if (!texture.bindTexture(dc)) continue // texture failed to bind\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!usingTerrainAttrs &&\n terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) &&\n terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) {\n // Suppress subsequent tile state application until the next terrain.\n usingTerrainAttrs = true\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n program.mvpMatrix.copy(dc.modelviewProjection)\n program.mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection()\n }\n if (!usingTerrainAttrs) continue // terrain vertex attribute failed to bind\n\n // Use tex coord matrices that register the surface texture correctly and mask terrain fragments that\n // fall outside the surface texture's sector.\n program.texCoordMatrix[0].copy(texture.texCoordMatrix)\n program.texCoordMatrix[0].multiplyByTileTransform(terrainSector, textureSector)\n program.texCoordMatrix[1].setToTileTransform(terrainSector, textureSector)\n program.loadTexCoordMatrix()\n\n // Use the surface texture's RGBA color.\n program.loadColor(texture.color)\n\n // Use the surface texture's opacity.\n program.loadOpacity(texture.opacity)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableSurfaceTexture && program === that.program\n\n private fun bindTexture(dc: DrawContext) = texture?.bindTexture(dc) == true\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableTessellation protected constructor(): Drawable {\n val color = Color()\n var opacity = 1.0f\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val offsetMvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableTessellation {\n val instance = pool.acquire() ?: DrawableTessellation()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(program: BasicShaderProgram, color: Color, opacity: Float) = apply {\n this.program = program\n this.color.copy(color)\n this.opacity = opacity\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n program.loadOpacity(opacity)\n\n // Suppress writes to the OpenGL depth buffer.\n dc.gl.depthMask(false)\n\n // Compute the portion of the modelview projection matrix that remains constant for each tile.\n offsetMvpMatrix.copy(dc.projection)\n offsetMvpMatrix.offsetProjectionDepth(-1.0e-3) // offset this layer's depth values toward the eye\n offsetMvpMatrix.multiplyByMatrix(dc.modelview)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(offsetMvpMatrix)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as lines.\n terrain.drawLines(dc)\n }\n\n // Restore default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObject.Companion.fromTerrain\nimport earth.worldwind.PickedObject.Companion.identifierToUniqueColor\nimport earth.worldwind.PickedObject.Companion.uniqueColorToIdentifier\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.DrawableSurfaceColor\nimport earth.worldwind.draw.DrawableSurfaceColor.Companion.obtain\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.Terrain\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_COLOR_BUFFER_BIT\nimport earth.worldwind.util.kgl.GL_DEPTH_BUFFER_BIT\nimport kotlin.math.roundToInt\n\nopen class BasicFrameController: FrameController {\n override val lastTerrains = mutableMapOf()\n private val pickColor = Color()\n private val pickPoint = Vec3()\n private val pickPos = Position()\n private val boundingBox = BoundingBox()\n private val fullSphere = Sector().setFullSphere()\n private val scratchPoint = Vec3()\n private val scratchRay = Line()\n\n override fun renderFrame(rc: RenderContext) {\n if (!rc.isPickMode) lastTerrains.clear()\n if (rc.globe.is2D && rc.globe.isContinuous) {\n // Tessellate and render all visible globe offsets of 2D continuous terrain\n renderGlobeOffset(rc, Globe.Offset.Center)\n renderGlobeOffset(rc, Globe.Offset.Right)\n renderGlobeOffset(rc, Globe.Offset.Left)\n // Reset globe offset for correct projection calculations after frame rendered\n rc.globe.offset = Globe.Offset.Center\n } else {\n // Tessellate and render single 3D terrain\n renderGlobeOffset(rc, Globe.Offset.Center)\n }\n rc.sortDrawables()\n }\n\n protected open fun renderGlobeOffset(rc: RenderContext, globeOffset: Globe.Offset) {\n rc.globe.offset = globeOffset\n\n // Check if 2D globe offset intersects current frustum\n if (rc.globe.is2D && !boundingBox.setToSector(fullSphere, rc.globe, 0f, 0f).intersectsFrustum(rc.frustum)) return\n\n // Prepare terrain for specified globe offset\n rc.terrain = rc.terrainTessellator.tessellate(rc)\n\n // Compute viewing distance and pixel size based on available terrain\n if (!rc.globe.is2D) adjustViewingParameters(rc)\n\n // Render the terrain picked object or remember the last terrain for future intersect operations\n if (rc.isPickMode) renderTerrainPickedObject(rc) else lastTerrains[globeOffset] = rc.terrain\n\n // Render all layers on specified globe offset\n rc.layers.render(rc)\n }\n\n protected open fun adjustViewingParameters(rc: RenderContext) {\n scratchRay.origin.copy(rc.cameraPoint)\n rc.modelview.extractForwardVector(scratchRay.direction)\n rc.viewingDistance = if (rc.terrain.intersect(scratchRay, scratchPoint)) {\n rc.lookAtPosition = rc.globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, Position())\n scratchPoint.distanceTo(rc.cameraPoint)\n } else rc.horizonDistance\n rc.pixelSize = rc.pixelSizeAtDistance(rc.viewingDistance)\n }\n\n protected open fun renderTerrainPickedObject(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to pick\n\n // Acquire a unique picked object ID for terrain.\n val pickedObjectId = rc.nextPickedObjectId()\n\n // Enqueue a drawable for processing on the OpenGL thread that displays terrain in the unique pick color.\n val pool = rc.getDrawablePool()\n val drawable = obtain(pool)\n identifierToUniqueColor(pickedObjectId, drawable.color)\n drawable.opacity = 1.0f // Just to be sure to reset opacity\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n rc.offerSurfaceDrawable(drawable, Double.NEGATIVE_INFINITY)\n\n // If the pick ray intersects the terrain, enqueue a picked object that associates the terrain drawable with its\n // picked object ID and the intersection position.\n val pickRay = rc.pickRay\n if (pickRay != null && rc.terrain.intersect(pickRay, pickPoint)) {\n rc.globe.cartesianToGeographic(pickPoint.x, pickPoint.y, pickPoint.z, pickPos)\n rc.offerPickedObject(fromTerrain(pickedObjectId, pickPos))\n }\n }\n\n override fun drawFrame(dc: DrawContext) {\n clearFrame(dc)\n drawDrawables(dc)\n if (dc.isPickMode) resolvePick(dc)\n }\n\n protected open fun clearFrame(dc: DrawContext) {\n dc.gl.clear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)\n }\n\n protected open fun drawDrawables(dc: DrawContext) {\n dc.rewindDrawables()\n while (true) {\n val next = dc.pollDrawable() ?: break\n try {\n next.draw(dc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"BasicFrameController\", \"drawDrawables\",\n \"Exception while drawing '$next'\", e\n )\n // Keep going. Draw the remaining drawables.\n }\n }\n }\n\n protected open fun resolvePick(dc: DrawContext) {\n val pickedObjects = dc.pickedObjects ?: return\n if (pickedObjects.count == 0) return // no eligible objects; avoid expensive calls to glReadPixels\n val pickViewport = dc.pickViewport ?: return\n val pickPointOnly = dc.pickPoint != null && pickViewport.width <= 3 && pickViewport.height <= 3\n var objectFound = false\n\n dc.pickPoint?.let { pickPoint ->\n // Read the fragment color at the pick point.\n dc.readPixelColor(pickPoint.x.roundToInt(), pickPoint.y.roundToInt(), pickColor)\n\n // Convert the fragment color to a picked object ID. It returns zero if the color cannot indicate a picked\n // object ID, in which case no objects have been drawn at the pick point.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject != null) {\n if (!topObject.isTerrain) objectFound = true // Non-terrain object found in pick point\n if (pickPointOnly || objectFound) {\n topObject.markOnTop()\n // Remove picked objects except top and terrain in case of object found or point only mode\n // Using clearPickedObjects and two offerPickedObject is faster than keepTopAndTerrainObjects\n val terrainObject = pickedObjects.terrainPickedObject\n pickedObjects.clearPickedObjects()\n pickedObjects.offerPickedObject(topObject)\n // handles null objects and duplicate objects\n if (terrainObject != null) pickedObjects.offerPickedObject(terrainObject)\n }\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no eligible objects drawn at the pick point\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no objects drawn at the pick point\n }\n\n if (!pickPointOnly && !objectFound) {\n // Read the unique fragment colors in the pick rectangle.\n dc.readPixelColors(pickViewport.x, pickViewport.y, pickViewport.width, pickViewport.height).forEach { pickColor ->\n // Convert the fragment color to a picked object ID. This returns zero if the color cannot indicate a picked\n // object ID.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject?.isTerrain == false) topObject.markOnTop()\n }\n }\n }\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.util.Pool\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.jvm.JvmStatic\n\nopen class Frame {\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n// val infiniteProjection = Matrix4()\n val drawableQueue = DrawableQueue()\n val drawableTerrain = DrawableQueue()\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): Frame {\n val instance = pool.acquire() ?: Frame() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n open fun recycle() {\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue.clearDrawables()\n drawableTerrain.clearDrawables()\n pickedObjects?.let { pickDeferred?.complete(it) } // Complete deferred pick if available\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pool?.release(this) // return this instance to the pool\n pool = null\n }\n}","package earth.worldwind.geom\n\n/**\n * Altitude mode indicates how WorldWind interprets a position's altitude component.\n * Accepted values are [ABSOLUTE], [CLAMP_TO_GROUND] and [RELATIVE_TO_GROUND].\n */\nenum class AltitudeMode {\n /**\n * Indicating an altitude relative to the globe's ellipsoid. Ignores the elevation of\n * the terrain directly beneath the position's latitude and longitude.\n */\n ABSOLUTE,\n /**\n * Indicating an altitude on the terrain. Ignores a position's specified altitude, and\n * always places the position on the terrain.\n */\n CLAMP_TO_GROUND,\n /**\n * Indicating an altitude relative to the terrain. The altitude indicates height above\n * the terrain directly beneath the position's latitude and longitude.\n */\n RELATIVE_TO_GROUND;\n}","package earth.worldwind.geom\n\nimport earth.worldwind.globe.Globe\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * Represents a bounding box in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingBox {\n /**\n * The box's center point.\n */\n internal val center = Vec3(0.0, 0.0, 0.0)\n /**\n * The center point of the box's bottom. (The origin of the R axis.)\n */\n protected val bottomCenter = Vec3(-0.5, 0.0, 0.0)\n /**\n * The center point of the box's top. (The end of the R axis.)\n */\n protected val topCenter = Vec3(0.5, 0.0, 0.0)\n /**\n * The box's R axis, its longest axis.\n */\n protected val r = Vec3(1.0, 0.0, 0.0)\n /**\n * The box's S axis, its mid-length axis.\n */\n protected val s = Vec3(0.0, 1.0, 0.0)\n /**\n * The box's T axis, its shortest axis.\n */\n protected val t = Vec3(0.0, 0.0, 1.0)\n /**\n * The box's radius. (The half-length of its diagonal.)\n */\n protected var radius = sqrt(3.0)\n\n private val endPoint1 = Vec3()\n private val endPoint2 = Vec3()\n private val scratchHeights = FloatArray(NUM_LAT * NUM_LON)\n private val scratchPoints = FloatArray(NUM_LAT * NUM_LON * 3)\n private var coherentPlaneIdx = -1\n\n /**\n * Indicates whether this bounding box is a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return true if this bounding box is a unit box, otherwise false\n */\n val isUnitBox get() = center.x == 0.0 && center.y == 0.0 && center.z == 0.0 && radius == sqrt(3.0)\n\n /**\n * Sets this bounding box to a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return This bounding box set to a unit box\n */\n fun setToUnitBox() = apply {\n center.set(0.0, 0.0, 0.0)\n bottomCenter.set(-0.5, 0.0, 0.0)\n topCenter.set(0.5, 0.0, 0.0)\n\n r.set(1.0, 0.0, 0.0)\n s.set(0.0, 1.0, 0.0)\n t.set(0.0, 0.0, 1.0)\n\n radius = sqrt(3.0)\n }\n\n /**\n * Sets this bounding box such that it minimally encloses a specified array of points.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return This bounding box set to contain the specified array of points.\n */\n fun setToPoints(array: FloatArray, count: Int, stride: Int) = apply {\n // Compute this box's axes by performing a principal component analysis on the array of points.\n val matrix = Matrix4()\n matrix.setToCovarianceOfPoints(array, count, stride)\n matrix.extractEigenvectors(r, s, t)\n r.normalize()\n s.normalize()\n t.normalize()\n\n // Find the extremes along each axis.\n var rMin = Double.POSITIVE_INFINITY\n var rMax = Double.NEGATIVE_INFINITY\n var sMin = Double.POSITIVE_INFINITY\n var sMax = Double.NEGATIVE_INFINITY\n var tMin = Double.POSITIVE_INFINITY\n var tMax = Double.NEGATIVE_INFINITY\n\n val p = Vec3()\n for (idx in 0 until count step stride) {\n p.set(array[idx].toDouble(), array[idx + 1].toDouble(), array[idx + 2].toDouble())\n\n val pdr = p.dot(r)\n if (rMin > pdr) rMin = pdr\n if (rMax < pdr) rMax = pdr\n\n val pds = p.dot(s)\n if (sMin > pds) sMin = pds\n if (sMax < pds) sMax = pds\n\n val pdt = p.dot(t)\n if (tMin > pdt) tMin = pdt\n if (tMax < pdt) tMax = pdt\n }\n\n // Ensure that the extremes along each axis have nonzero separation.\n if (rMax == rMin) rMax = rMin + 1\n if (sMax == sMin) sMax = sMin + 1\n if (tMax == tMin) tMax = tMin + 1\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rMax - rMin\n val sLen = sMax - sMin\n val tLen = tMax - tMin\n\n val rSum = rMax + rMin\n val sSum = sMax + sMin\n val tSum = tMax + tMin\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Sets this bounding box such that it contains a specified sector on a specified globe with min and max terrain\n * height.\n *
\n * To create a bounding box that contains the sector at mean sea level, specify zero for the minimum and maximum\n * height. To create a bounding box that contains the terrain surface in this sector, specify the actual minimum and\n * maximum height values associated with the terrain in the sector, multiplied by the scene's vertical\n * exaggeration.\n *
\n *\n * @param sector the sector for which to create the bounding box\n * @param globe the globe associated with the sector\n * @param minHeight the minimum terrain height within the sector\n * @param maxHeight the maximum terrain height within the sector\n *\n * @return this bounding box set to contain the specified sector\n */\n fun setToSector(sector: Sector, globe: Globe, minHeight: Float, maxHeight: Float) = apply {\n // Compute the cartesian points for a 3x3 geographic grid. This grid captures enough detail to bound the\n // sector. Use minimum elevation at the corners and max elevation everywhere else.\n val heights = scratchHeights\n heights.fill(maxHeight)\n heights[0] = minHeight\n heights[2] = minHeight\n heights[6] = minHeight\n heights[8] = minHeight\n val points = scratchPoints\n globe.geographicToCartesianGrid(sector, NUM_LAT, NUM_LON, heights, 1.0f, null, points)\n\n // Compute the local coordinate axes. Since we know this box is bounding a geographic sector, we use the\n // local coordinate axes at its centroid as the box axes. Using these axes results in a box that has +-10%\n // the volume of a box with axes derived from a principal component analysis, but is faster to compute.\n val centroidLat = sector.centroidLatitude\n val centroidLon = sector.centroidLongitude\n val matrix = globe.geographicToCartesianTransform(centroidLat, centroidLon, 0.0, Matrix4())\n val m = matrix.m\n r.set(m[0], m[4], m[8])\n s.set(m[1], m[5], m[9])\n t.set(m[2], m[6], m[10])\n\n // Find the extremes along each axis.\n val rExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val sExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val tExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n\n val p = Vec3()\n for (idx in points.indices step 3) {\n p.set(points[idx].toDouble(), points[idx + 1].toDouble(), points[idx + 2].toDouble())\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, p)\n }\n\n // If the sector encompasses more than one hemisphere, the 3x3 grid does not capture enough detail to bound\n // the sector. The antipodal points along the parallel through the sector's centroid represent its extremes\n // in longitude. Incorporate those antipodal points into the extremes along each axis.\n if (sector.deltaLongitude.inDegrees > 180.0) {\n val altitude = maxHeight.toDouble()\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.plusDegrees(90.0), altitude, endPoint1)\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.minusDegrees(90.0), altitude, endPoint2)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint1)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint2)\n }\n\n // Sort the axes from most prominent to least prominent. The frustum intersection methods assume that the axes\n // are defined in this way.\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n if (sExtremes[1] - sExtremes[0] < tExtremes[1] - tExtremes[0]) swapAxes(s, sExtremes, t, tExtremes)\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rExtremes[1] - rExtremes[0]\n val sLen = sExtremes[1] - sExtremes[0]\n val tLen = tExtremes[1] - tExtremes[0]\n\n val rSum = rExtremes[1] + rExtremes[0]\n val sSum = sExtremes[1] + sExtremes[0]\n val tSum = tExtremes[1] + tExtremes[0]\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Translates this bounding box by specified components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this bounding box translated by the specified components\n */\n fun translate(x: Double, y: Double, z: Double) = apply {\n center.x += x\n center.y += y\n center.z += z\n\n bottomCenter.x += x\n bottomCenter.y += y\n bottomCenter.z += z\n\n topCenter.x += x\n topCenter.y += y\n topCenter.z += z\n }\n\n fun distanceTo(point: Vec3): Double {\n var minDist2 = Double.POSITIVE_INFINITY\n\n // Start with distance to the center of the box.\n var dist2 = center.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the R axis.\n dist2 = bottomCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the R axis.\n dist2 = topCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the S axis.\n endPoint1.x = center.x - 0.5 * s.x\n endPoint1.y = center.y - 0.5 * s.y\n endPoint1.z = center.z - 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the S axis.\n endPoint1.x = center.x + 0.5 * s.x\n endPoint1.y = center.y + 0.5 * s.y\n endPoint1.z = center.z + 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n return sqrt(minDist2)\n }\n\n /**\n * Indicates whether this bounding box intersects a specified frustum.\n *\n * @param frustum The frustum of interest.\n *\n * @return true if the specified frustum intersects this bounding box, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n endPoint1.copy(bottomCenter)\n endPoint2.copy(topCenter)\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { intersectsAt(it) >= 0 } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || intersectsAt(plane) >= 0).also { if (!it) coherentPlaneIdx = idx }\n }\n }\n\n private fun intersectsAt(plane: Plane): Double {\n val n = plane.normal\n val effectiveRadius = 0.5 * (abs(s.dot(n)) + abs(t.dot(n)))\n\n // Test the distance from the first end-point.\n val dq1 = plane.dot(endPoint1)\n val bq1 = dq1 <= -effectiveRadius\n\n // Test the distance from the second end-point.\n val dq2 = plane.dot(endPoint2)\n val bq2 = dq2 <= -effectiveRadius\n if (bq1 && bq2) return -1.0 // endpoints more distant from plane than effective radius; box is on neg. side of plane\n if (bq1 == bq2) return 0.0 // endpoints less distant from plane than effective radius; can't draw any conclusions\n\n // Compute and return the endpoints of the box on the positive side of the plane\n val dot = n.x * (endPoint1.x - endPoint2.x) + n.y * (endPoint1.y - endPoint2.y) + n.z * (endPoint1.z - endPoint2.z)\n val t = (effectiveRadius + dq1) / dot\n\n // Truncate the line to only that in the positive half-space, e.g., inside the frustum.\n val x = (endPoint2.x - endPoint1.x) * t + endPoint1.x\n val y = (endPoint2.y - endPoint1.y) * t + endPoint1.y\n val z = (endPoint2.z - endPoint1.z) * t + endPoint1.z\n if (bq1) endPoint1.set(x, y, z) else endPoint2.set(x, y, z)\n return t\n }\n\n override fun toString() = \"BoundingBox(center=$center, bottomCenter=$bottomCenter, topCenter=$topCenter, r=$r, s=$s, t=$t, radius=$radius)\"\n\n companion object {\n private const val NUM_LAT = 3\n private const val NUM_LON = 3\n\n private fun adjustExtremes(\n r: Vec3, rExtremes: DoubleArray, s: Vec3, sExtremes: DoubleArray, t: Vec3, tExtremes: DoubleArray, p: Vec3\n ) {\n val pdr = p.dot(r)\n if (rExtremes[0] > pdr) rExtremes[0] = pdr\n if (rExtremes[1] < pdr) rExtremes[1] = pdr\n\n val pds = p.dot(s)\n if (sExtremes[0] > pds) sExtremes[0] = pds\n if (sExtremes[1] < pds) sExtremes[1] = pds\n\n val pdt = p.dot(t)\n if (tExtremes[0] > pdt) tExtremes[0] = pdt\n if (tExtremes[1] < pdt) tExtremes[1] = pdt\n }\n\n private fun swapAxes(a: Vec3, aExtremes: DoubleArray, b: Vec3, bExtremes: DoubleArray) {\n a.swap(b)\n\n var tmp = aExtremes[0]\n aExtremes[0] = bExtremes[0]\n bExtremes[0] = tmp\n\n tmp = aExtremes[1]\n aExtremes[1] = bExtremes[1]\n bExtremes[1] = tmp\n }\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a bounding sphere in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingSphere {\n /**\n * The sphere's center point.\n */\n val center = Vec3()\n /**\n * The sphere's radius.\n */\n var radius = 1.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"BoundingSphere\", \"setRadius\", \"invalidRadius\")\n }\n field = value\n }\n private var coherentPlaneIdx = -1\n\n /**\n * Sets this bounding sphere to the specified center point and radius.\n *\n * @param center the new center point\n * @param radius the new radius\n *\n * @return This bounding sphere with its center point and radius set to the specified values\n */\n fun set(center: Vec3, radius: Double) = apply {\n this.center.copy(center)\n this.radius = radius\n }\n\n /**\n * Indicates whether this bounding sphere intersects a specified frustum.\n *\n * @param frustum the frustum of interest\n *\n * @return true if the specified frustum intersects this bounding sphere, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n // See if the extent's bounding sphere is within or intersects the frustum. The dot product of the extent's\n // center point with each plane's vector provides a distance to each plane. If this distance is less than\n // -radius, the extent is completely clipped by that plane and therefore does not intersect the space enclosed\n // by this Frustum.\n val nr = -radius\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { it.distanceToPoint(center) > nr } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || plane.distanceToPoint(center) > nr).also { if (!it) coherentPlaneIdx = idx }\n }\n\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is BoundingSphere) return false\n return center == other.center && radius == other.radius\n }\n\n override fun hashCode(): Int {\n var result = center.hashCode()\n result = 31 * result + radius.hashCode()\n return result\n }\n\n override fun toString() = \"BoundingSphere(center=$center, radius=$radius)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.AltitudeMode.ABSOLUTE\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class Camera {\n val position = Position()\n var altitudeMode = ABSOLUTE\n var heading = ZERO\n var tilt = ZERO\n var roll = ZERO\n var fieldOfView = 45.0.degrees\n set(value) {\n require(value.inDegrees > 0.0 && value.inDegrees < 180.0) {\n logMessage(ERROR, \"Camera\", \"setFieldOfView\", \"invalidFieldOfView\")\n }\n field = value\n }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle, fieldOfView: Angle\n ) = set(latitude, longitude, altitude, altitudeMode, heading, tilt, roll).apply { this.fieldOfView = fieldOfView }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(camera: Camera) = set(\n camera.position.latitude,\n camera.position.longitude,\n camera.position.altitude,\n camera.altitudeMode,\n camera.heading,\n camera.tilt,\n camera.roll,\n camera.fieldOfView\n )\n\n override fun toString() = \"Camera(position=$position, altitudeMode=$altitudeMode, heading=$heading, tilt=$tilt, roll=$roll, fieldOfView=$fieldOfView)\"\n}","package earth.worldwind.geom\n\nimport kotlin.jvm.JvmStatic\n\n/**\n * Oblate ellipsoid with semi-major axis and inverse flattening.\n */\ndata class Ellipsoid(\n /**\n * One half of the ellipsoid's major axis length in meters, which runs through the center to opposite points on the\n * equator.\n */\n val semiMajorAxis: Double,\n /**\n * Measure of the ellipsoid's compression. Indicates how much the ellipsoid's semi-minor axis is compressed relative\n * to the semi-major axis. Expressed as `1/f`, where `f = (a - b) / a`, given the semi-major axis `a` and the semi-minor axis `b`.\n */\n val inverseFlattening: Double\n) {\n /**\n * Computes this ellipsoid's semi-minor length axis in meters. The semi-minor axis is one half of the ellipsoid's\n * minor axis, which runs through the center to opposite points on the poles.\n */\n val semiMinorAxis: Double get() {\n val f = 1 / inverseFlattening\n return semiMajorAxis * (1 - f)\n }\n /**\n * Computes this ellipsoid's eccentricity squared. The returned value is equivalent to `2*f - f*f`,\n * where `f` is this ellipsoid's flattening.\n */\n val eccentricitySquared: Double get() {\n val f = 1 / inverseFlattening\n return 2 * f - f * f\n }\n\n companion object {\n /**\n * WGS 84 reference ellipsoid for Earth. The ellipsoid's semi-major axis and inverse flattening factor are\n * configured according to the WGS 84 reference system (aka WGS 1984, EPSG:4326). WGS 84 reference values taken from\n * [here](http://earth-info.nga.mil/GandG/publications/NGA_STND_0036_1_0_0_WGS84/NGA.STND.0036_1.0.0_WGS84.pdf).\n */\n @JvmStatic val WGS84 = Ellipsoid(6378137.0, 298.257223563)\n /**\n * Krasovsky 1940 reference ellipsoid for Earth.\n */\n @JvmStatic val Krasovsky = Ellipsoid(6378245.0, 298.3)\n }\n}","package earth.worldwind.geom\n\n/**\n * Represents a six-sided view frustum in Cartesian coordinates with a corresponding viewport in screen coordinates.\n */\nopen class Frustum {\n internal val left = Plane(1.0, 0.0, 0.0, 1.0)\n internal val right = Plane(-1.0, 0.0, 0.0, 1.0)\n internal val bottom = Plane(0.0, 1.0, 0.0, 1.0)\n internal val top = Plane(0.0, -1.0, 0.0, 1.0)\n internal val near = Plane(0.0, 0.0, -1.0, 1.0)\n internal val far = Plane(0.0, 0.0, 1.0, 1.0)\n internal val viewport = Viewport(0, 0, 1, 1)\n internal val planes = arrayOf(near, far, left, right, top, bottom)\n private val scratchMatrix = Matrix4()\n\n /**\n * Constructs a new unit frustum with each of its planes 1 meter from the center and a viewport with width and\n * height both 1.\n */\n constructor()\n\n /**\n * Constructs a frustum from planes.\n *\n * @param left the frustum's left plane\n * @param right the frustum's right plane\n * @param bottom the frustum's bottom plane\n * @param top the frustum's top plane\n * @param near the frustum's near plane\n * @param far the frustum's far plane\n * @param viewport the frustum's viewport\n */\n constructor(left: Plane, right: Plane, bottom: Plane, top: Plane, near: Plane, far: Plane, viewport: Viewport): this() {\n this.left.copy(left)\n this.right.copy(right)\n this.bottom.copy(bottom)\n this.top.copy(top)\n this.near.copy(near)\n this.far.copy(far)\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to a unit frustum with each of its planes 1 meter from the center a viewport with width and\n * height both 1.\n *\n * @return this frustum, set to a unit frustum\n */\n fun setToUnitFrustum() = apply {\n left.set(1.0, 0.0, 0.0, 1.0)\n right.set(-1.0, 0.0, 0.0, 1.0)\n bottom.set(0.0, 1.0, 0.0, 1.0)\n top.set(0.0, -1.0, 0.0, 1.0)\n near.set(0.0, 0.0, -1.0, 1.0)\n far.set(0.0, 0.0, 1.0, 1.0)\n viewport.set(0, 0, 1, 1)\n }\n\n /**\n * Sets this frustum to one appropriate for a modelview-projection matrix. A modelview-projection matrix's view\n * frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport) = apply {\n // Compute the transpose of the modelview matrix.\n scratchMatrix.transposeMatrix(modelview)\n\n // Get the components of the projection matrix.\n val m = projection.m\n\n // Left Plane = row 4 + row 1:\n var x = m[12] + m[0]\n var y = m[13] + m[1]\n var z = m[14] + m[2]\n var w = m[15] + m[3]\n left.set(x, y, z, w) // normalizes the plane's coordinates\n left.transformByMatrix(scratchMatrix)\n\n // Right Plane = row 4 - row 1:\n x = m[12] - m[0]\n y = m[13] - m[1]\n z = m[14] - m[2]\n w = m[15] - m[3]\n right.set(x, y, z, w) // normalizes the plane's coordinates\n right.transformByMatrix(scratchMatrix)\n\n // Bottom Plane = row 4 + row 2:\n x = m[12] + m[4]\n y = m[13] + m[5]\n z = m[14] + m[6]\n w = m[15] + m[7]\n bottom.set(x, y, z, w) // normalizes the plane's coordinates\n bottom.transformByMatrix(scratchMatrix)\n\n // Top Plane = row 4 - row 2:\n x = m[12] - m[4]\n y = m[13] - m[5]\n z = m[14] - m[6]\n w = m[15] - m[7]\n top.set(x, y, z, w) // normalizes the plane's coordinates\n top.transformByMatrix(scratchMatrix)\n\n // Near Plane = row 4 + row 3:\n x = m[12] + m[8]\n y = m[13] + m[9]\n z = m[14] + m[10]\n w = m[15] + m[11]\n near.set(x, y, z, w) // normalizes the plane's coordinates\n near.transformByMatrix(scratchMatrix)\n\n // Far Plane = row 4 - row 3:\n x = m[12] - m[8]\n y = m[13] - m[9]\n z = m[14] - m[10]\n w = m[15] - m[11]\n far.set(x, y, z, w) // normalizes the plane's coordinates\n far.transformByMatrix(scratchMatrix)\n\n // Copy the specified viewport.\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to one appropriate for a subset of a modelview-projection matrix. A modelview-projection\n * matrix's view frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix. The subset is defined by the region within the original viewport that the frustum\n * contains.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n * @param subViewport the screen coordinate region the frustum should contain\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport, subViewport: Viewport) = apply {\n // Compute the sub-viewport's four edges in screen coordinates.\n val left = subViewport.x.toDouble()\n val right = (subViewport.x + subViewport.width).toDouble()\n val bottom = subViewport.y.toDouble()\n val top = (subViewport.y + subViewport.height).toDouble()\n\n // Transform the sub-viewport's four edges from screen coordinates to Cartesian coordinates.\n var bln: Vec3\n var blf: Vec3\n var brn: Vec3\n var brf: Vec3\n var tln: Vec3\n var tlf: Vec3\n var trn: Vec3\n var trf: Vec3\n val mvpInv = scratchMatrix.setToMultiply(projection, modelview).invert()\n mvpInv.unProject(left, bottom, viewport, Vec3().also { bln = it }, Vec3().also { blf = it })\n mvpInv.unProject(right, bottom, viewport, Vec3().also { brn = it }, Vec3().also { brf = it })\n mvpInv.unProject(left, top, viewport, Vec3().also { tln = it }, Vec3().also { tlf = it })\n mvpInv.unProject(right, top, viewport, Vec3().also { trn = it }, Vec3().also { trf = it })\n\n val va = Vec3(tlf.x - bln.x, tlf.y - bln.y, tlf.z - bln.z)\n val vb = Vec3(tln.x - blf.x, tln.y - blf.y, tln.z - blf.z)\n\n val nl = va.cross(vb)\n this.left.set(nl.x, nl.y, nl.z, -nl.dot(bln))\n va.set(trn.x - brf.x, trn.y - brf.y, trn.z - brf.z)\n vb.set(trf.x - brn.x, trf.y - brn.y, trf.z - brn.z)\n\n val nr = va.cross(vb)\n this.right.set(nr.x, nr.y, nr.z, -nr.dot(brn))\n va.set(brf.x - bln.x, brf.y - bln.y, brf.z - bln.z)\n vb.set(blf.x - brn.x, blf.y - brn.y, blf.z - brn.z)\n\n val nb = va.cross(vb)\n this.bottom.set(nb.x, nb.y, nb.z, -nb.dot(brn))\n va.set(tlf.x - trn.x, tlf.y - trn.y, tlf.z - trn.z)\n vb.set(trf.x - tln.x, trf.y - tln.y, trf.z - tln.z)\n\n val nt = va.cross(vb)\n this.top.set(nt.x, nt.y, nt.z, -nt.dot(tln))\n va.set(tln.x - brn.x, tln.y - brn.y, tln.z - brn.z)\n vb.set(trn.x - bln.x, trn.y - bln.y, trn.z - bln.z)\n\n val nn = va.cross(vb)\n this.near.set(nn.x, nn.y, nn.z, -nn.dot(bln))\n va.set(trf.x - blf.x, trf.y - blf.y, trf.z - blf.z)\n vb.set(tlf.x - brf.x, tlf.y - brf.y, tlf.z - brf.z)\n\n val nf = va.cross(vb)\n this.far.set(nf.x, nf.y, nf.z, -nf.dot(blf))\n\n // Copy the specified sub-viewport.\n this.viewport.copy(subViewport)\n }\n\n /**\n * See if the point is entirely within the frustum. The dot product of the point with each plane's vector\n * provides a distance to each plane. If this distance is less than 0, the point is clipped by that plane and\n * neither intersects nor is contained by the space enclosed by this Frustum.\n *\n * @param point Vector to check\n *\n * @return true if point contains in frustum\n */\n fun containsPoint(point: Vec3) = far.dot(point) > 0 && left.dot(point) > 0 && right.dot(point) > 0\n && top.dot(point) > 0 && bottom.dot(point) > 0 && near.dot(point) > 0\n\n /**\n * Determines whether a line segment intersects this frustum.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return true if the segment intersects or is contained in this frustum, otherwise false\n */\n fun intersectsSegment(pointA: Vec3, pointB: Vec3): Boolean {\n // First do a trivial accept test.\n if (containsPoint(pointA) || containsPoint(pointB)) return true\n if (pointA == pointB) return false\n for (i in planes.indices) {\n val plane = planes[i]\n // See if both points are behind the plane and therefore not in the frustum.\n if (plane.onSameSide(pointA, pointB) < 0) return false\n // See if the segment intersects the plane.\n if (plane.clip(pointA, pointB) != null) return true\n }\n return false // segment does not intersect frustum\n }\n\n /**\n * Determines whether a screen coordinate viewport intersects this frustum.\n *\n * @param viewport the viewport to test\n *\n * @return true if the viewport intersects or is contained in this frustum, otherwise false\n */\n fun intersectsViewport(viewport: Viewport) = this.viewport.intersects(viewport)\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a line in Cartesian coordinates.\n */\nopen class Line {\n /**\n * This line's origin.\n */\n val origin = Vec3()\n /**\n * This line's direction.\n */\n val direction = Vec3()\n\n /**\n * Constructs a line with origin and direction both zero.\n */\n constructor()\n\n /**\n * Constructs a line with a specified origin and direction.\n *\n * @param origin the line's origin\n * @param direction the line's direction\n */\n constructor(origin: Vec3, direction: Vec3): this() { set(origin, direction) }\n\n /**\n * Constructs a line with the origin and direction from a specified line.\n *\n * @param line the line specifying origin and direction\n */\n constructor(line: Line): this(line.origin, line.direction)\n\n /**\n * Sets this line to a specified origin and direction.\n *\n * @param origin the line's new origin\n * @param direction the line's new direction\n *\n * @return this line, set to the new origin and direction\n */\n fun set(origin: Vec3, direction: Vec3) = apply {\n this.origin.copy(origin)\n this.direction.copy(direction)\n }\n\n /**\n * Sets this line to the specified segment. This line has its origin at the first endpoint and its direction\n * extending from the first endpoint to the second.\n *\n * @param pointA the segment's first endpoint\n * @param pointB the segment's second endpoint\n *\n * @return this line, set to the specified segment\n */\n fun setToSegment(pointA: Vec3, pointB: Vec3) = apply {\n origin.copy(pointA)\n direction.set(pointB.x - pointA.x, pointB.y - pointA.y, pointB.z - pointA.z)\n }\n\n /**\n * Computes a Cartesian point a specified distance along this line.\n *\n * @param distance The distance from this line's origin at which to compute the point.\n * @param result A pre-allocated [Vec3] instance in which to return the computed point.\n *\n * @return The specified result argument containing the computed point.\n */\n fun pointAt(distance: Double, result: Vec3): Vec3 {\n result.x = origin.x + direction.x * distance\n result.y = origin.y + direction.y * distance\n result.z = origin.z + direction.z * distance\n return result\n }\n\n /**\n * Computes the first intersection of a triangle strip with this line. This line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *
\n * The triangle strip is specified by a list of vertex points and a list of elements indicating the triangle strip\n * tessellation of those vertices. The triangle strip elements are interpreted in the same manner as OpenGL, where\n * each index indicates a vertex position rather than an actual index into the points array (e.g. a triangle strip\n * index of 1 indicates the XYZ tuple starting at array index 3).\n *\n * @param points an array of points containing XYZ tuples\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n * @param elements an array of indices into the points defining the triangle strip organization\n * @param count the number of indices to consider\n * @param result a pre-allocated Vec3 in which to return the nearest intersection point, if any\n *\n * @return true if this line intersects the triangle strip, otherwise false\n *\n * @throws IllegalArgumentException If array is empty, if the stride is less than 3,\n * if the count is less than 0\n */\n fun triStripIntersection(points: FloatArray, stride: Int, elements: ShortArray, count: Int, result: Vec3): Boolean {\n require(points.size >= stride) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidStride\")\n }\n require(elements.isNotEmpty()) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidCount\")\n }\n\n // Taken from Moller and Trumbore\n // http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf\n\n // Adapted from the original ray-triangle intersection algorithm to optimize for ray-triangle strip\n // intersection. We optimize by reusing constant terms, replacing use of Vec3 with inline primitives, and\n // exploiting the triangle strip organization to reuse computations common to adjacent triangles. These\n // optimizations reduced worst-case terrain picking performance for Web WorldWind by approximately 50% in\n // Chrome on a 2010 iMac and a Nexus 9.\n val vx = direction.x\n val vy = direction.y\n val vz = direction.z\n val sx = origin.x\n val sy = origin.y\n val sz = origin.z\n var tMin = Double.POSITIVE_INFINITY\n val epsilon = 0.00001\n\n // Get the triangle strip's first vertex.\n var vertex = elements[0] * stride\n var vert1x = points[vertex++]\n var vert1y = points[vertex++]\n var vert1z = points[vertex]\n\n // Get the triangle strip's second vertex.\n vertex = elements[1] * stride\n var vert2x = points[vertex++]\n var vert2y = points[vertex++]\n var vert2z = points[vertex]\n\n // Compute the intersection of each triangle with the specified ray.\n for (idx in 2 until count) {\n // Move the last two vertices into the first two vertices. This takes advantage of the triangle strip's\n // structure and avoids redundant reads from points and elements. During the first iteration this places the\n // triangle strip's first three vertices in vert0, vert1 and vert2, respectively.\n val vert0x = vert1x\n val vert0y = vert1y\n val vert0z = vert1z\n vert1x = vert2x\n vert1y = vert2y\n vert1z = vert2z\n\n // Get the triangle strip's next vertex.\n vertex = elements[idx] * stride\n vert2x = points[vertex++]\n vert2y = points[vertex++]\n vert2z = points[vertex]\n\n // find vectors for two edges sharing point a: vert1 - vert0 and vert2 - vert0\n val edge1x = vert1x - vert0x\n val edge1y = vert1y - vert0y\n val edge1z = vert1z - vert0z\n val edge2x = vert2x - vert0x\n val edge2y = vert2y - vert0y\n val edge2z = vert2z - vert0z\n\n // Compute cross product of line direction and edge2\n val px = vy * edge2z - vz * edge2y\n val py = vz * edge2x - vx * edge2z\n val pz = vx * edge2y - vy * edge2x\n\n // Get determinant\n val det = edge1x * px + edge1y * py + edge1z * pz // edge1 dot p\n // if det is near zero then ray lies in plane of triangle\n if (det > -epsilon && det < epsilon) continue\n\n val invDet = 1.0 / det\n\n // Compute distance for vertex A to ray origin: origin - vert0\n val tx = sx - vert0x\n val ty = sy - vert0y\n val tz = sz - vert0z\n\n // Calculate u parameter and test bounds: 1/det * t dot p\n val u = invDet * (tx * px + ty * py + tz * pz)\n if (u < -epsilon || u > 1 + epsilon) continue\n\n // Prepare to test v parameter: tvec cross edge1\n val qx = ty * edge1z - tz * edge1y\n val qy = tz * edge1x - tx * edge1z\n val qz = tx * edge1y - ty * edge1x\n\n // Calculate v parameter and test bounds: 1/det * dir dot q\n val v = invDet * (vx * qx + vy * qy + vz * qz)\n if (v < -epsilon || u + v > 1 + epsilon) continue\n\n // Calculate the point of intersection on the line: t = 1/det * edge2 dot q\n val t = invDet * (edge2x * qx + edge2y * qy + edge2z * qz)\n if (t >= 0 && t < tMin) tMin = t\n }\n if (tMin != Double.POSITIVE_INFINITY) result.set(sx + vx * tMin, sy + vy * tMin, sz + vz * tMin)\n return tMin != Double.POSITIVE_INFINITY\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Line) return false\n return origin == other.origin && direction == other.direction\n }\n\n override fun hashCode(): Int {\n var result = origin.hashCode()\n result = 31 * result + direction.hashCode()\n return result\n }\n\n override fun toString() = \"Line(origin=$origin, direction=$direction)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.normalizeLongitude\nimport earth.worldwind.shape.PathType\nimport earth.worldwind.shape.PathType.GREAT_CIRCLE\nimport earth.worldwind.shape.PathType.RHUMB_LINE\nimport earth.worldwind.util.format.format\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.offsetIn\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Geographic location with a latitude and longitude.\n */\nopen class Location(\n /**\n * The location's latitude.\n */\n var latitude: Angle,\n /**\n * The location's longitude.\n */\n var longitude: Angle\n) {\n /**\n * Constructs a location with latitude and longitude both 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO)\n\n /**\n * Constructs a location with the latitude and longitude of a specified location.\n *\n * @param location the location specifying the coordinates\n */\n constructor(location: Location): this(location.latitude, location.longitude)\n\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-15\n protected val timeZoneLatitudes = mapOf(\n -12 to -45, // GMT-12\n -11 to -30, // GMT-11\n -10 to 20, // GMT-10\n -9 to 45, // GMT-9\n -8 to 40, // GMT-8\n -7 to 35, // GMT-7\n -6 to 30, // GMT-6\n -5 to 25, // GMT-5\n -4 to -15, // GMT-4\n -3 to 0, // GMT-3\n -2 to 45, // GMT-2\n -1 to 30, // GMT-1\n 0 to 30, // GMT+0\n 1 to 20, // GMT+1\n 2 to 20, // GMT+2\n 3 to 25, // GMT+3\n 4 to 30, // GMT+4\n 5 to 35, // GMT+5\n 6 to 30, // GMT+6\n 7 to 25, // GMT+7\n 8 to -30, // GMT+8\n 9 to -30, // GMT+9\n 10 to -30, // GMT+10\n 11 to -45, // GMT+11\n 12 to -45 // GMT+12\n )\n\n /**\n * Constructs a location with a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n *\n * @return the new location\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n Location(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Constructs a location with a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n *\n * @return the new location\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double) =\n Location(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Constructs an approximate location for a specified time zone. Used when selecting an initial camera position\n * based on the device's current time zone.\n *\n * @param timeZone the time zone in question\n *\n * @return the new location\n */\n @JvmStatic\n fun fromTimeZone(timeZone: TimeZone): Location {\n val secPerHour = 3.6e3\n val offsetSec = Clock.System.now().offsetIn(timeZone).totalSeconds\n val offsetHours = (offsetSec / secPerHour).toInt()\n // use a pre-determined latitude or 0 if none is available\n val latDegrees = (timeZoneLatitudes[offsetHours]?:0).toDouble()\n val lonDegrees = 180.0 * offsetHours / 12 // center on the time zone's average longitude\n return Location(fromDegrees(latDegrees), fromDegrees(lonDegrees))\n }\n\n /**\n * Determines whether a list of locations crosses the antimeridian.\n *\n * @param locations the locations to test\n *\n * @return true if the antimeridian is crossed, false otherwise\n */\n @JvmStatic\n fun locationsCrossAntimeridian(locations: List): Boolean {\n // Check the list's length. A list with fewer than two locations does not cross the antimeridan.\n val len = locations.size\n if (len < 2) return false\n\n // Compute the longitude attributes associated with the first location.\n var lon1 = normalizeLongitude(locations[0].longitude.inDegrees)\n var sig1 = sign(lon1)\n\n // Iterate over the segments in the list. A segment crosses the antimeridian if its endpoint longitudes have\n // different signs and are more than 180 degrees apart (but not 360, which indicates the longitudes are the same).\n for (idx in 1 until len) {\n val lon2 = normalizeLongitude(locations[idx].longitude.inDegrees)\n val sig2 = sign(lon2)\n if (sig1 != sig2) {\n val delta = abs(lon1 - lon2)\n if (delta > 180 && delta < 360) return true\n }\n lon1 = lon2\n sig1 = sig2\n }\n return false\n }\n\n @JvmStatic\n fun fromString(coordinates: String): Location {\n val tokens = coordinates.replace(\"[*'\\\"NSEW;°′″,]\".toRegex(), \" \").trim { it <= ' ' }\n .split(\"\\\\s+\".toRegex()).toTypedArray()\n // Lat\n var lat = 0.0\n var exponent = 0\n var i = 0\n while (i < tokens.size / 2) {\n lat += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n // Lon\n var lon = 0.0\n exponent = 0\n while (i < tokens.size) {\n lon += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n return fromDegrees(if (coordinates.contains(\"S\")) -lat else lat, if (coordinates.contains(\"W\")) -lon else lon)\n }\n }\n\n /**\n * Sets this location to a specified latitude and longitude.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle) = apply {\n this.latitude = latitude\n this.longitude = longitude\n }\n\n /**\n * Sets this location to a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n set(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Sets this location to a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double) =\n set(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Sets this location to the latitude and longitude of a specified location.\n *\n * @param location the location specifying the new coordinates\n *\n * @return this location with its latitude and longitude set to that of the specified location\n */\n fun copy(location: Location) = set(location.latitude, location.longitude)\n\n /**\n * Compute a location along a path between two locations. The amount indicates the fraction of the path at which to\n * compute a location. This value is typically between 0 and 1, where 0 indicates the begin location (this location)\n * and 1 indicates the end location.\n *\n * @param endLocation the path's end location\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a location\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun interpolateAlongPath(endLocation: Location, pathType: PathType, amount: Double, result: Location): Location {\n return if (this == endLocation) {\n result.latitude = latitude\n result.longitude = longitude\n result\n } else when (pathType) {\n GREAT_CIRCLE -> {\n val azimuth = greatCircleAzimuth(endLocation)\n val distanceRadians = greatCircleDistance(endLocation) * amount\n greatCircleLocation(azimuth, distanceRadians, result)\n }\n RHUMB_LINE -> {\n val azimuth = rhumbAzimuth(endLocation)\n val distanceRadians = rhumbDistance(endLocation) * amount\n rhumbLocation(azimuth, distanceRadians, result)\n }\n else -> {\n val azimuth = linearAzimuth(endLocation)\n val distanceRadians = linearDistance(endLocation) * amount\n linearLocation(azimuth, distanceRadians, result)\n }\n }\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the great circle path between this location and a specified\n * location. This angle can be used as the starting azimuth for a great circle path beginning at this location, and\n * passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed azimuth\n */\n fun greatCircleAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n if (lon1 == lon2) return if (lat1 > lat2) POS180 else ZERO\n\n // Taken from \"Map Projections - A Working Manual\", page 30, equation 5-4b.\n // The atan2() function is used in place of the traditional atan(y/x) to simplify the case when x == 0.\n val y = cos(lat2) * sin(lon2 - lon1)\n val x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon2 - lon1)\n val azimuthRadians = atan2(y, x)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the great circle path between this location and a specified location. In\n * radians, this angle is the arc length of the segment between the two locations. To compute a distance in meters\n * from this value, multiply the return value by the radius of the globe. This function uses a spherical model, not\n * elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun greatCircleDistance(location: Location): Double {\n val lat1Radians = latitude.inRadians\n val lon1Radians = longitude.inRadians\n val lat2Radians = location.latitude.inRadians\n val lon2Radians = location.longitude.inRadians\n if (lat1Radians == lat2Radians && lon1Radians == lon2Radians) return 0.0\n\n // \"Haversine formula,\" taken from http://en.wikipedia.org/wiki/Great-circle_distance#Formul.C3.A6\n val a = sin((lat2Radians - lat1Radians) / 2.0)\n val b = sin((lon2Radians - lon1Radians) / 2.0)\n val c = a * a + cos(lat1Radians) * cos(lat2Radians) * b * b\n val distanceRadians = 2.0 * asin(sqrt(c))\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the great circle path starting at this location and traversing with the specified\n * azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun greatCircleLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n val cosLat = cos(latRadians)\n val sinLat = sin(latRadians)\n val cosAzimuth = cos(azimuthRadians)\n val sinAzimuth = sin(azimuthRadians)\n val sinDistance = sin(distanceRadians)\n val cosDistance = cos(distanceRadians)\n\n // Taken from \"Map Projections - A Working Manual\", page 31, equation 5-5 and 5-6.\n val endLatRadians = asin(sinLat * cosDistance + cosLat * sinDistance * cosAzimuth)\n val endLonRadians = lonRadians + atan2(\n sinDistance * sinAzimuth, cosLat * cosDistance - sinLat * sinDistance * cosAzimuth\n )\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the rhumb path (line of constant azimuth) between this\n * location and a specified location. This angle can be used as the starting azimuth for a rhumb path beginning at\n * this location, and passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the rhumb path's ending location\n *\n * @return the computed azimuth\n */\n fun rhumbAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the rhumb path (line of constant azimuth) between this location and a specified\n * location. In radians, this angle is the arc length of the segment between the two locations. To compute a\n * distance in meters from this value, multiply the return value by the radius of the globe. This function uses a\n * spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun rhumbDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(lat1)\n else {\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n dLat / dPhi\n }\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + q * q * dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on a rhumb path (line of constant azimuth) starting at this location and traversing with\n * the specified azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun rhumbLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n val dLat = endLatRadians - latRadians\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(latRadians)\n else {\n val dPhi = ln(tan(endLatRadians / 2 + PI / 4) / tan(latRadians / 2 + PI / 4))\n dLat / dPhi\n }\n val dLon = distanceRadians * sin(azimuthRadians) / q\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + dLon + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the linear path between this location and a specified\n * location. This angle can be used as the starting azimuth for a linear path beginning at this location, and\n * passing through the specified location. This function uses a flat-earth approximation proximal to this location.\n *\n * @param location the linear path's ending location\n *\n * @return the computed azimuth\n */\n fun linearAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = lat2 - lat1\n\n // If longitude change is over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the linear path between this location and a specified location. In radians, this\n * angle is the arc length of the segment between the two locations. To compute a distance in meters from this\n * value, multiply the return value by the radius of the globe. This function uses a flat-earth approximation\n * proximal to this location.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun linearDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n\n // If lonChange over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the linear path starting at this location and traversing with the specified azimuth and\n * angular distance. This function uses a flat-earth approximation proximal to this location.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun linearLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + distanceRadians * sin(azimuthRadians) + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n fun equals(other: Location, tolerance: Double): Boolean {\n if (this === other) return true\n return abs(latitude.inDegrees - other.latitude.inDegrees) < tolerance\n && abs(longitude.inDegrees - other.longitude.inDegrees) < tolerance\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Location) return false\n return latitude.inDegrees == other.latitude.inDegrees && longitude.inDegrees == other.longitude.inDegrees\n }\n\n override fun hashCode(): Int {\n var result = latitude.hashCode()\n result = 31 * result + longitude.hashCode()\n return result\n }\n\n override fun toString() = \"Location(latitude=$latitude, longitude=$longitude)\"\n\n fun toDDString() = \"%s%09.6f°, %s%010.6f°\"\n .format(latitude.latitudeLetter, abs(latitude.inDegrees), longitude.longitudeLetter, abs(longitude.inDegrees))\n\n fun toDMString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%06.3f′, %s%03d°%06.3f′\".format(\n latitude.latitudeLetter, lat[1], lat[2] + lat[3] / 60.0,\n longitude.longitudeLetter, lon[1], lon[2] + lon[3] / 60.0\n )\n }\n\n fun toDMSString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%02d′%04.1f″, %s%03d°%02d′%04.1f″\".format(\n latitude.latitudeLetter, lat[1], lat[2], lat[3],\n longitude.longitudeLetter, lon[1], lon[2], lon[3]\n )\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\n\nopen class LookAt(\n val position: Position, var altitudeMode: AltitudeMode, var range: Double, var heading: Angle, var tilt: Angle, var roll: Angle,\n) {\n constructor(): this(\n position = Position(),\n altitudeMode = AltitudeMode.ABSOLUTE,\n range = 0.0,\n heading = ZERO,\n tilt = ZERO,\n roll = ZERO)\n\n constructor(lookAt: LookAt): this(\n Position(lookAt.position),\n lookAt.altitudeMode,\n lookAt.range,\n lookAt.heading,\n lookAt.tilt,\n lookAt.roll\n )\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n range: Double, heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.range = range\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(lookAt: LookAt) = set(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude,\n lookAt.altitudeMode, lookAt.range, lookAt.heading, lookAt.tilt, lookAt.roll\n )\n\n override fun toString() = \"LookAt(position=$position, altitudeMode=$altitudeMode, range=$range, heading=$heading, tilt=$tilt, roll=$roll)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.cos\nimport kotlin.math.sin\n\n/**\n * 3 x 3 matrix in row-major order.\n */\nopen class Matrix3 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n /**\n * The components for the 3 x 3 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n )\n }\n\n /**\n * Constructs a 3 x 3 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 3 x 3 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n */\n constructor(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ): this(doubleArrayOf(m11, m12, m13, m21, m22, m23, m31, m32, m33))\n\n /**\n * Constructs a 3 x 3 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix3): this(matrix.m.copyOf())\n\n /**\n * Sets this 3 x 3 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m21\n m[4] = m22\n m[5] = m23\n m[6] = m31\n m[7] = m32\n m[8] = m33\n }\n\n /**\n * Sets this 3 x 3 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix3) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double) = apply {\n m[2] = x\n m[5] = y\n }\n\n /**\n * Sets the rotation components of this matrix to a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[3] = s\n m[4] = c\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[4] = yScale\n }\n\n /**\n * Sets this matrix to the 3 x 3 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = x\n m[3] = 0.0\n m[4] = 1.0\n m[5] = y\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[2] = 0.0\n m[3] = s\n m[4] = c\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = yScale\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that flips and shifts the y-axis. The resultant matrix maps Y=0 to Y=1 and Y=1 to Y=0.\n * All existing values are overwritten. This matrix is usually used to change the coordinate origin from an upper\n * left coordinate origin to a lower left coordinate origin.\n *
\n * This matrix is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix set to values described above\n */\n fun setToVerticalFlip() = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = -1.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that transforms normalized coordinates from a source sector to a destination sector.\n * Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner and (1, 1)\n * indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its corresponding\n * normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix set to values described above\n */\n fun setToTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n m[0] = xs\n m[1] = 0.0\n m[2] = xt\n m[3] = 0.0\n m[4] = ys\n m[5] = yt\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix3, b: Matrix3) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[3] + ma[2] * mb[6]\n m[1] = ma[0] * mb[1] + ma[1] * mb[4] + ma[2] * mb[7]\n m[2] = ma[0] * mb[2] + ma[1] * mb[5] + ma[2] * mb[8]\n m[3] = ma[3] * mb[0] + ma[4] * mb[3] + ma[5] * mb[6]\n m[4] = ma[3] * mb[1] + ma[4] * mb[4] + ma[5] * mb[7]\n m[5] = ma[3] * mb[2] + ma[4] * mb[5] + ma[5] * mb[8]\n m[6] = ma[6] * mb[0] + ma[7] * mb[3] + ma[8] * mb[6]\n m[7] = ma[6] * mb[1] + ma[7] * mb[4] + ma[8] * mb[7]\n m[8] = ma[6] * mb[2] + ma[7] * mb[5] + ma[8] * mb[8]\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double) = apply {\n multiplyByMatrix(1.0, 0.0, x, 0.0, 1.0, y, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(c, -s, 0.0, s, c, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double) = apply {\n multiplyByMatrix(xScale, 0.0, 0.0, 0.0, yScale, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a matrix that flips and shifts the y-axis. The vertical flip matrix maps Y=0 to Y=1 and\n * Y=1 to Y=0. This matrix is usually used to change the coordinate origin from an upper left coordinate origin to a\n * lower left coordinate origin.\n *
\n * This is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix multiplied by a vertical flip matrix implied by values described above\n */\n fun multiplyByVerticalFlip() = apply {\n m[2] += m[1]\n m[5] += m[4]\n m[8] += m[7]\n m[1] = -m[1]\n m[4] = -m[4]\n m[7] = -m[7]\n }\n\n /**\n * Multiplies this matrix by a matrix that transforms normalized coordinates from a source sector to a destination\n * sector. Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner\n * and (1, 1) indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its\n * corresponding normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix multiplied by the transform matrix implied by values described above\n */\n fun multiplyByTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n\n m[2] += m[0] * xt + m[1] * yt\n m[5] += m[3] * xt + m[4] * yt\n m[8] += m[6] * xt + m[6] * yt\n m[0] *= xs\n m[1] *= ys\n m[3] *= xs\n m[4] *= ys\n m[6] *= xs\n m[7] *= ys\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n ma[0] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[1] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[2] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[3]\n ma1 = ma[4]\n ma2 = ma[5]\n ma[3] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[4] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[5] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[6]\n ma1 = ma[7]\n ma2 = ma[8]\n ma[6] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[7] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[8] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[3]\n mr2 = m[4]\n mr3 = m[5]\n m[3] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[4] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[5] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[6]\n mr2 = m[7]\n mr3 = m[8]\n m[6] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[7] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[8] = mr1 * m13 + mr2 * m23 + mr3 * m33\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[3]\n m[3] = tmp\n\n tmp = m[2]\n m[2] = m[6]\n m[6] = tmp\n\n tmp = m[5]\n m[5] = m[7]\n m[7] = tmp\n }\n\n /**\n * Transposes the specified matrix and stores the result in this matrix.\n *\n * @param matrix the matrix whose transpose is computed\n *\n * @return this matrix set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix3) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[3]\n m[2] = matrix.m[6]\n m[3] = matrix.m[1]\n m[4] = matrix.m[4]\n m[5] = matrix.m[7]\n m[6] = matrix.m[2]\n m[7] = matrix.m[5]\n m[8] = matrix.m[8]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix3fv.\n *\n * @param result a pre-allocated array of length 9 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 9) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[5].toFloat()\n result[o] = m[8].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert(): Matrix3 {\n throw UnsupportedOperationException(\"Matrix3.invert is not implemented\") // TODO\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n @Suppress(\"UNUSED_PARAMETER\")\n fun invertMatrix(matrix: Matrix3): Matrix3 {\n TODO(\"Matrix3.invertMatrix is not implemented\")\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix3) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix3([${m[0]}, ${m[1]}, ${m[2]}], [${m[3]}, ${m[4]}, ${m[5]}], [${m[6]}, ${m[7]}, ${m[8]}])\"\n}",null,"package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/**\n * 4 x 4 matrix in row-major order.\n */\nopen class Matrix4 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1.0e-8\n protected const val TINY = 1.0e-20\n protected const val EPSILON = 1.0e-10\n protected const val MAX_SWEEPS = 32\n\n /**\n * The components for the 4 x 4 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0, 0.0,\n 0.0, 1.0, 0.0, 0.0,\n 0.0, 0.0, 1.0, 0.0,\n 0.0, 0.0, 0.0, 1.0\n )\n\n /**\n * Inverts a 4 x 4 matrix, storing the result in a destination argument. The source and destination arguments\n * represent a 4 x 4 matrix with a one-dimensional array in row-major order. The source and destination may\n * reference the same array.\n *\n * @param src the matrix components to invert in row-major order\n * @param dst the inverted components in row-major order\n *\n * @return true if the matrix was successfully inverted, false otherwise\n */\n protected fun invert(src: DoubleArray, dst: DoubleArray): Boolean {\n // Copy the specified matrix into a mutable two-dimensional array.\n val a = Array(4) { DoubleArray(4) }\n a[0][0] = src[0]\n a[0][1] = src[1]\n a[0][2] = src[2]\n a[0][3] = src[3]\n a[1][0] = src[4]\n a[1][1] = src[5]\n a[1][2] = src[6]\n a[1][3] = src[7]\n a[2][0] = src[8]\n a[2][1] = src[9]\n a[2][2] = src[10]\n a[2][3] = src[11]\n a[3][0] = src[12]\n a[3][1] = src[13]\n a[3][2] = src[14]\n a[3][3] = src[15]\n\n val index = IntArray(4)\n var d = ludcmp(a, index)\n\n // Compute the matrix's determinant.\n for (i in 0..3) d *= a[i][i]\n\n // The matrix is singular if its determinant is zero or very close to zero.\n if (abs(d) < NEAR_ZERO_THRESHOLD) return false\n\n val y = Array(4) { DoubleArray(4) }\n val col = DoubleArray(4)\n for (j in 0..3) {\n for (i in 0..3) col[i] = 0.0\n col[j] = 1.0\n lubksb(a, index, col)\n for (i in 0..3) y[i][j] = col[i]\n }\n dst[0] = y[0][0]\n dst[1] = y[0][1]\n dst[2] = y[0][2]\n dst[3] = y[0][3]\n dst[4] = y[1][0]\n dst[5] = y[1][1]\n dst[6] = y[1][2]\n dst[7] = y[1][3]\n dst[8] = y[2][0]\n dst[9] = y[2][1]\n dst[10] = y[2][2]\n dst[11] = y[2][3]\n dst[12] = y[3][0]\n dst[13] = y[3][1]\n dst[14] = y[3][2]\n dst[15] = y[3][3]\n return true\n }\n\n /**\n * Utility method to perform an LU factorization of a matrix. Algorithm derived from \"Numerical Recipes in C\", Press\n * et al., 1988.\n *\n * @param A matrix to be factored\n * @param index permutation vector\n *\n * @return condition number of matrix\n */\n protected fun ludcmp(A: Array, index: IntArray): Double {\n val vv = DoubleArray(4)\n var d = 1.0\n var temp: Double\n for (i in 0..3) {\n var big = 0.0\n for (j in 0..3) if (abs(A[i][j]).also { temp = it } > big) big = temp\n if (big == 0.0) return 0.0 // Matrix is singular if the entire row contains zero.\n else vv[i] = 1 / big\n }\n for (j in 0..3) {\n for (i in 0 until j) {\n var sum = A[i][j]\n for (k in 0 until i) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n }\n var big = 0.0\n var imax = -1\n var dum: Double\n for (i in j..3) {\n var sum = A[i][j]\n for (k in 0 until j) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n if (vv[i] * abs(sum).also { dum = it } >= big) {\n big = dum\n imax = i\n }\n }\n if (j != imax) {\n for (k in 0..3) {\n dum = A[imax][k]\n A[imax][k] = A[j][k]\n A[j][k] = dum\n }\n d = -d\n vv[imax] = vv[j]\n }\n index[j] = imax\n if (A[j][j] == 0.0) A[j][j] = TINY\n if (j != 3) {\n dum = 1.0 / A[j][j]\n for (i in (j + 1)..3) {\n A[i][j] *= dum\n }\n }\n }\n return d\n }\n\n /**\n * Utility method to solve a linear system with an LU factorization of a matrix. Solves Ax=b, where A is in LU\n * factorized form. Algorithm derived from \"Numerical Recipes in C\", Press et al., 1988\n *\n * @param A an LU factorization of a matrix\n * @param index permutation vector of that LU factorization\n * @param b vector to be solved\n */\n protected fun lubksb(A: Array, index: IntArray, b: DoubleArray) {\n var ii = -1\n for (i in 0..3) {\n val ip = index[i]\n var sum = b[ip]\n b[ip] = b[i]\n if (ii != -1) for (j in ii until i) sum -= A[i][j] * b[j]\n else if (sum != 0.0) ii = i\n b[i] = sum\n }\n for (i in 3 downTo 0) {\n var sum = b[i]\n for (j in (i + 1)..3) sum -= A[i][j] * b[j]\n b[i] = sum / A[i][i]\n }\n }\n }\n\n /**\n * Constructs a 4 x 4 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 4 x 4 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n */\n constructor(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ): this(doubleArrayOf(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44))\n\n /**\n * Constructs a 4 x 4 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix4): this(matrix.m.copyOf())\n\n /**\n * Sets this 4 x 4 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m14\n m[4] = m21\n m[5] = m22\n m[6] = m23\n m[7] = m24\n m[8] = m31\n m[9] = m32\n m[10] = m33\n m[11] = m34\n m[12] = m41\n m[13] = m42\n m[14] = m43\n m[15] = m44\n }\n\n /**\n * Sets this 4 x 4 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix4) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] = x\n m[7] = y\n m[11] = z\n }\n\n /**\n * Sets the rotation components of this matrix to a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[5] = yScale\n m[10] = zScale\n }\n\n /**\n * Sets this matrix to the 4 x 4 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double, z: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = x\n m[4] = 0.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = y\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 1.0\n m[11] = z\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[3] = 0.0\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[7] = 0.0\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = yScale\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = zScale\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix4, b: Matrix4) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[4] + ma[2] * mb[8] + ma[3] * mb[12]\n m[1] = ma[0] * mb[1] + ma[1] * mb[5] + ma[2] * mb[9] + ma[3] * mb[13]\n m[2] = ma[0] * mb[2] + ma[1] * mb[6] + ma[2] * mb[10] + ma[3] * mb[14]\n m[3] = ma[0] * mb[3] + ma[1] * mb[7] + ma[2] * mb[11] + ma[3] * mb[15]\n m[4] = ma[4] * mb[0] + ma[5] * mb[4] + ma[6] * mb[8] + ma[7] * mb[12]\n m[5] = ma[4] * mb[1] + ma[5] * mb[5] + ma[6] * mb[9] + ma[7] * mb[13]\n m[6] = ma[4] * mb[2] + ma[5] * mb[6] + ma[6] * mb[10] + ma[7] * mb[14]\n m[7] = ma[4] * mb[3] + ma[5] * mb[7] + ma[6] * mb[11] + ma[7] * mb[15]\n m[8] = ma[8] * mb[0] + ma[9] * mb[4] + ma[10] * mb[8] + ma[11] * mb[12]\n m[9] = ma[8] * mb[1] + ma[9] * mb[5] + ma[10] * mb[9] + ma[11] * mb[13]\n m[10] = ma[8] * mb[2] + ma[9] * mb[6] + ma[10] * mb[10] + ma[11] * mb[14]\n m[11] = ma[8] * mb[3] + ma[9] * mb[7] + ma[10] * mb[11] + ma[11] * mb[15]\n m[12] = ma[12] * mb[0] + ma[13] * mb[4] + ma[14] * mb[8] + ma[15] * mb[12]\n m[13] = ma[12] * mb[1] + ma[13] * mb[5] + ma[14] * mb[9] + ma[15] * mb[13]\n m[14] = ma[12] * mb[2] + ma[13] * mb[6] + ma[14] * mb[10] + ma[15] * mb[14]\n m[15] = ma[12] * mb[3] + ma[13] * mb[7] + ma[14] * mb[11] + ma[15] * mb[15]\n }\n\n /**\n * Sets this matrix to an infinite perspective projection matrix for the specified viewport dimensions, vertical\n * field of view and near clip distance.\n *
\n * An infinite perspective projection matrix maps points in a manner similar to a standard projection matrix, but is\n * not bounded by depth. Objects at any depth greater than or equal to the near distance may be rendered. In\n * addition, this matrix interprets vertices with a w-coordinate of 0 as infinitely far from the camera in the\n * direction indicated by the point's coordinates.\n *
\n * The field of view must be positive and less than 180. The near distance must be positive.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near distance is\n * less than or equal to zero\n */\n fun setToInfiniteProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -1.0\n m[11] = -2 * nearDistance\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a perspective projection matrix for the specified viewport dimensions, vertical field of view\n * and clip distances.\n *
\n * A perspective projection matrix maps points in eye coordinates into clip coordinates in a way that causes distant\n * objects to appear smaller, and preserves the appropriate depth information for each point. In model coordinates,\n * a perspective projection is defined by frustum originating at the eye position and extending outward in the\n * viewer's direction. The near distance and the far distance identify the minimum and maximum distance,\n * respectively, at which an object in the scene is visible.\n *
\n * The field of view must be positive and less than 180. Near and far distances must be positive and must not be\n * equal to one another.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n * @param farDistance the far clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near and far\n * distances are equal, or if either the near or far distance are less than or\n * equal to zero\n */\n fun setToPerspectiveProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double, farDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance != farDistance) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n require(nearDistance > 0 && farDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -(farDistance + nearDistance) / (farDistance - nearDistance)\n m[11] = -(2 * nearDistance * farDistance) / (farDistance - nearDistance)\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a screen projection matrix for the specified viewport dimensions.\n *
\n * A screen projection matrix is an orthographic projection that interprets points in model coordinates as\n * representing a screen XY and a Z depth. Screen projection matrices therefore map coordinates directly into screen\n * coordinates without modification. A point's XY coordinates are interpreted as literal screen coordinates and must\n * be in the viewport to be visible. A point's Z coordinate is interpreted as a depth value that ranges from 0 to 1.\n * Additionally, the screen projection matrix preserves the depth value returned by\n * `RenderContext.project`.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero\n */\n fun setToScreenProjection(viewportWidth: Double, viewportHeight: Double) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidHeight\")\n }\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.57.\n // Simplified to assume that the viewport origin is (0, 0).\n //\n // The third row of this projection matrix is configured so that points with z coordinates representing\n // depth values ranging from 0 to 1 are not modified after transformation into window coordinates. This\n // projection matrix maps z values in the range [0, 1] to the range [-1, 1] by applying the following\n // function to incoming z coordinates:\n //\n // zp = z0 * 2 - 1\n //\n // Where 'z0' is the point's z coordinate and 'zp' is the projected z coordinate. The GPU then maps the\n // projected z coordinate into window coordinates in the range [0, 1] by applying the following function:\n //\n // zw = zp * 0.5 + 0.5\n //\n // The result is that a point's z coordinate is effectively passed to the GPU without modification.\n m[0] = 2 / viewportWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = -1.0\n m[4] = 0.0\n m[5] = 2 / viewportHeight\n m[6] = 0.0\n m[7] = -1.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 2.0\n m[11] = -1.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the symmetric covariance Matrix computed from an array of points.\n *
\n * The computed covariance matrix represents the correlation between each pair of x-, y-, and z-coordinates as\n * they're distributed about the point array's arithmetic mean. Its layout is as follows:\n *
\n * ` C(x, x) C(x, y) C(x, z)
C(x, y) C(y, y) C(y, z)
C(x, z) C(y, z) C(z, z) `\n *
\n * C(i, j) is the covariance of coordinates i and j, where i or j are a coordinate's dispersion about its mean\n * value. If any entry is zero, then there's no correlation between the two coordinates defining that entry. If the\n * returned matrix is diagonal, then all three coordinates are uncorrelated, and the specified point is distributed\n * evenly about its mean point.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return this matrix set to the covariance matrix for the specified array of points\n *\n * @throws IllegalArgumentException If the array is null or empty, if the count is less than 0, or if the stride is\n * less than 3\n */\n fun setToCovarianceOfPoints(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidCount\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidStride\")\n }\n\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var c11 = 0.0\n var c22 = 0.0\n var c33 = 0.0\n var c12 = 0.0\n var c13 = 0.0\n var c23 = 0.0\n var numPoints = 0.0\n for (idx in 0 until count step stride) {\n mx += array[idx]\n my += array[idx + 1]\n mz += array[idx + 2]\n numPoints++\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n for (idx in 0 until count step stride) {\n val dx = array[idx] - mx\n val dy = array[idx + 1] - my\n val dz = array[idx + 2] - mz\n c11 += dx * dx\n c22 += dy * dy\n c33 += dz * dz\n c12 += dx * dy // c12 = c21\n c13 += dx * dz // c13 = c31\n c23 += dy * dz // c23 = c32\n }\n m[0] = c11 / numPoints\n m[1] = c12 / numPoints\n m[2] = c13 / numPoints\n m[3] = 0.0\n m[4] = c12 / numPoints\n m[5] = c22 / numPoints\n m[6] = c23 / numPoints\n m[7] = 0.0\n m[8] = c13 / numPoints\n m[9] = c23 / numPoints\n m[10] = c33 / numPoints\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 0.0\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] += m[0] * x + m[1] * y + m[2] * z\n m[7] += m[4] * x + m[5] * y + m[6] * z\n m[11] += m[8] * x + m[9] * y + m[10] * z\n m[15] += m[12] * x + m[13] * y + m[14] * z\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis.\n *\n * @param x the X component of the rotation axis\n * @param y the Y component of the rotation axis\n * @param z the Z component of the rotation axis\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(\n c + (1 - c) * x * x,\n (1 - c) * x * y - s * z,\n (1 - c) * x * z + s * y,\n 0.0,\n (1 - c) * x * y + s * z,\n c + (1 - c) * y * y,\n (1 - c) * y * z - s * x,\n 0.0,\n (1 - c) * x * z - s * y,\n (1 - c) * y * z + s * x,\n c + (1 - c) * z * z,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n 1.0\n )\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] *= xScale\n m[4] *= xScale\n m[8] *= xScale\n m[12] *= xScale\n m[1] *= yScale\n m[5] *= yScale\n m[9] *= yScale\n m[13] *= yScale\n m[2] *= zScale\n m[6] *= zScale\n m[10] *= zScale\n m[14] *= zScale\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n var ma3 = ma[3]\n ma[0] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[1] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[2] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[3] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[4]\n ma1 = ma[5]\n ma2 = ma[6]\n ma3 = ma[7]\n ma[4] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[5] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[6] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[7] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[8]\n ma1 = ma[9]\n ma2 = ma[10]\n ma3 = ma[11]\n ma[8] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[9] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[10] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[11] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[12]\n ma1 = ma[13]\n ma2 = ma[14]\n ma3 = ma[15]\n ma[12] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[13] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[14] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[15] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n var mr4 = m[3]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[3] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[4]\n mr2 = m[5]\n mr3 = m[6]\n mr4 = m[7]\n m[4] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[5] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[6] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[7] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[8]\n mr2 = m[9]\n mr3 = m[10]\n mr4 = m[11]\n m[8] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[9] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[10] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[11] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[12]\n mr2 = m[13]\n mr3 = m[14]\n mr4 = m[15]\n m[12] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[13] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[14] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[15] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[3]\n m[3] = m[12]\n m[12] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n tmp = m[7]\n m[7] = m[13]\n m[13] = tmp\n\n tmp = m[11]\n m[11] = m[14]\n m[14] = tmp\n }\n\n /**\n * Sets this matrix to the transpose of a specified matrix.\n *\n * @param matrix the matrix whose transpose is to be computed\n *\n * @return this matrix with its values set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix4) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = matrix.m[12]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = matrix.m[13]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = matrix.m[14]\n m[12] = matrix.m[3]\n m[13] = matrix.m[7]\n m[14] = matrix.m[11]\n m[15] = matrix.m[15]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix4fv.\n *\n * @param result a pre-allocated array of length 16 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 16) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[8].toFloat()\n result[o++] = m[12].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[5].toFloat()\n result[o++] = m[9].toFloat()\n result[o++] = m[13].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[10].toFloat()\n result[o++] = m[14].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[11].toFloat()\n result[o] = m[15].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert() = apply {\n val success = invert(m, m) // passing the same array as src and dst is supported\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the specified matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n *\n * @throws IllegalArgumentException If the matrix cannot be inverted\n */\n fun invertMatrix(matrix: Matrix4) = apply {\n val success = invert(matrix.m, m) // store inverse of matrix in this matrix\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts this orthonormal transform matrix in place. This matrix's upper 3x3 is transposed, then its fourth column\n * is transformed by the transposed upper 3x3 and negated.\n *
\n * The result of this method is undefined if this matrix's values are not consistent with those of an orthonormal\n * transform.\n *\n * @return this matrix, inverted\n */\n fun invertOrthonormal() = apply {\n // This is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n val x = m[3]\n val y = m[7]\n val z = m[11]\n\n m[3] = -(m[0] * x) - m[1] * y - m[2] * z\n m[7] = -(m[4] * x) - m[5] * y - m[6] * z\n m[11] = -(m[8] * x) - m[9] * y - m[10] * z\n\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Inverts the specified orthonormal transform matrix and stores the result in 'this' matrix. The specified matrix's\n * upper 3x3 is transposed, then its fourth column is transformed by the transposed upper 3x3 and negated. The\n * result is stored in 'this' matrix.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert, or if the matrix's\n * values are not consistent with those of an orthonormal transform.\n *\n * @param matrix the matrix whose inverse is computed. The matrix is assumed to represent an orthonormal transform\n * matrix.\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n fun invertOrthonormalMatrix(matrix: Matrix4) = apply {\n // The matrix is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = -(matrix.m[0] * matrix.m[3]) - matrix.m[4] * matrix.m[7] - matrix.m[8] * matrix.m[11]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = -(matrix.m[1] * matrix.m[3]) - matrix.m[5] * matrix.m[7] - matrix.m[9] * matrix.m[11]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = -(matrix.m[2] * matrix.m[3]) - matrix.m[6] * matrix.m[7] - matrix.m[10] * matrix.m[11]\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Applies a specified depth offset to this projection matrix. The depth offset may be any real number and is\n * typically used to draw geometry slightly closer to the user's eye in order to give those shapes visual priority\n * over nearby or geometry. An offset of zero has no effect. An offset less than zero brings depth values closer to\n * the eye, while an offset greater than zero pushes depth values away from the eye.\n *
\n * The result of this method is undefined if this matrix is not a projection matrix. Projection matrices can be\n * created by calling `setToPerspectiveProjection` or `setToScreenProjection`\n *
\n * Depth offset may be applied to both perspective and screen projection matrices. The effect on each type is\n * outlined here:\n *
\n * **Perspective Projection**\n *
\n * The effect of depth offset on a perspective projection increases exponentially with distance from the eye. This\n * has the effect of adjusting the offset for the loss in depth precision with geometry drawn further from the eye.\n * Distant geometry requires a greater offset to differentiate itself from nearby geometry, while close geometry\n * does not.\n *
\n * **Screen Projection**\n *
\n * The effect of depth offset on an screen projection increases linearly with distance from the eye. While it is\n * reasonable to apply a depth offset to an screen projection, the effect is most appropriate when applied to the\n * projection used to draw the scene. For example, when an object's coordinates are projected by a perspective\n * projection into screen coordinates then drawn using a screen projection, it is best to apply the offset to the\n * original perspective projection. The method `RenderContext.project` performs the correct behavior for\n * the projection type used to draw the scene.\n *\n * @param depthOffset the amount of offset to apply\n *\n * @return this matrix with its components adjusted to account for the specified depth offset\n */\n fun offsetProjectionDepth(depthOffset: Double) = apply { m[10] *= 1 + depthOffset }\n\n /**\n * Returns this viewing matrix's eye point. In model coordinates, a viewing matrix's eye point is the point the\n * viewer is looking from and maps to the center of the screen.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's eye point\n */\n fun extractEyePoint(result: Vec3): Vec3 {\n // The eye point of a modelview matrix is computed by transforming the origin (0, 0, 0, 1) by the matrix's\n // inverse. This is equivalent to transforming the inverse of this matrix's translation components in the\n // rightmost column by the transpose of its upper 3x3 components.\n result.x = -(m[0] * m[3]) - m[4] * m[7] - m[8] * m[11]\n result.y = -(m[1] * m[3]) - m[5] * m[7] - m[9] * m[11]\n result.z = -(m[2] * m[3]) - m[6] * m[7] - m[10] * m[11]\n return result\n }\n\n /**\n * Returns this viewing matrix's forward vector.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's forward vector\n */\n fun extractForwardVector(result: Vec3): Vec3 {\n // The forward vector of a modelview matrix is computed by transforming the negative Z axis (0, 0, -1, 0) by the\n // matrix's inverse. We have pre-computed the result inline here to simplify this computation.\n result.x = -m[8]\n result.y = -m[9]\n result.z = -m[10]\n return result\n }\n\n /**\n * Returns this viewing matrix's heading angle. The roll argument enables the caller to disambiguate\n * heading and roll when the two rotation axes for heading and roll are parallel, causing gimbal lock.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param roll the viewing matrix's roll angle, or 0 if the roll angle is unknown\n *\n * @return the extracted heading angle\n */\n fun extractHeading(roll: Angle): Angle {\n val cr = cos(roll.inRadians)\n val sr = sin(roll.inRadians)\n val ch = cr * m[0] - sr * m[4]\n val sh = sr * m[5] - cr * m[1]\n return atan2(sh, ch).radians\n }\n\n /**\n * Returns this viewing matrix's tilt angle.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @return the extracted heading angle\n */\n fun extractTilt(): Angle {\n val ct = m[10]\n val st = sqrt(m[2] * m[2] + m[6] * m[6])\n return atan2(st, ct).radians\n }\n\n /**\n * Returns this symmetric matrix's eigenvectors. The eigenvectors are returned in the specified result arguments in\n * order of descending magnitude (most prominent to least prominent). Each eigenvector has length equal to its\n * corresponding eigenvalue.\n *
\n * This method returns false if this matrix is not a symmetric matrix.\n *\n * @param result1 a pre-allocated Vec3 in which to return the most prominent eigenvector\n * @param result2 a pre-allocated Vec3 in which to return the second most prominent eigenvector\n * @param result3 a pre-allocated Vec3 in which to return the least prominent eigenvector\n *\n * @return true if this matrix is symmetric and its eigenvectors can be determined, otherwise false\n */\n fun extractEigenvectors(result1: Vec3, result2: Vec3, result3: Vec3): Boolean {\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition,\n // listing 14.6.\n if (m[1] != m[4] || m[2] != m[8] || m[6] != m[9]) return false // matrix is not symmetric\n\n // Since the matrix is symmetric m12=m21, m13=m31 and m23=m32, therefore we can ignore the values m21,\n // m32 and m32.\n var m11 = m[0]\n var m12 = m[1]\n var m13 = m[2]\n var m22 = m[5]\n var m23 = m[6]\n var m33 = m[10]\n val r = Array(3) { DoubleArray(3) }\n r[2][2] = 1.0\n r[1][1] = r[2][2]\n r[0][0] = r[1][1]\n for (a in 0 until MAX_SWEEPS) {\n // Exit if off-diagonal entries small enough\n if (abs(m12) < EPSILON && abs(m13) < EPSILON && abs(m23) < EPSILON) break\n\n // Annihilate (1,2) entry.\n if (m12 != 0.0) {\n val u = (m22 - m11) * 0.5 / m12\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m12\n m22 += t * m12\n m12 = 0.0\n var temp = c * m13 - s * m23\n m23 = s * m13 + c * m23\n m13 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][1]\n r[i][1] = s * r[i][0] + c * r[i][1]\n r[i][0] = temp\n }\n }\n\n // Annihilate (1,3) entry.\n if (m13 != 0.0) {\n val u = (m33 - m11) * 0.5 / m13\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m13\n m33 += t * m13\n m13 = 0.0\n var temp = c * m12 - s * m23\n m23 = s * m12 + c * m23\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][2]\n r[i][2] = s * r[i][0] + c * r[i][2]\n r[i][0] = temp\n }\n }\n\n // Annihilate (2,3) entry.\n if (m23 != 0.0) {\n val u = (m33 - m22) * 0.5 / m23\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m22 -= t * m23\n m33 += t * m23\n m23 = 0.0\n var temp = c * m12 - s * m13\n m13 = s * m12 + c * m13\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][1] - s * r[i][2]\n r[i][2] = s * r[i][1] + c * r[i][2]\n r[i][1] = temp\n }\n }\n }\n\n // Sort the eigenvectors by descending magnitude.\n var i1 = 0\n var i2 = 1\n var i3 = 2\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n if (m22 < m33) {\n val temp = m22\n m22 = m33\n m33 = temp\n val itemp = i2\n i2 = i3\n i3 = itemp\n }\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n result1.set(r[0][i1], r[1][i1], r[2][i1])\n result2.set(r[0][i2], r[1][i2], r[2][i2])\n result3.set(r[0][i3], r[1][i3], r[2][i3])\n result1.normalize()\n result2.normalize()\n result3.normalize()\n result1.multiply(m11)\n result2.multiply(m22)\n result3.multiply(m33)\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. This method assumes this matrix represents an inverse\n * modelview-projection matrix. The result of this method is undefined if this matrix is not an inverse\n * modelview-projection matrix.\n *
\n * The resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes\n * that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's y component\n * @param z the Cartesian point's z component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(x: Double, y: Double, z: Double, viewport: Viewport, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This inverts\n // the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n var sx = m[0] * x + m[1] * y + m[2] * z + m[3]\n var sy = m[4] * x + m[5] * y + m[6] * z + m[7]\n var sz = m[8] * x + m[9] * y + m[10] * z + m[11]\n val sw = m[12] * x + m[13] * y + m[14] * z + m[15]\n if (sw == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n sx /= sw\n sy /= sw\n sz /= sw\n\n // Clip the point against the near and far clip planes.\n if (sz < -1 || sz > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n sx = sx * 0.5 + 0.5\n sy = sy * 0.5 + 0.5\n sz = sz * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n sx = sx * viewport.width + viewport.x\n sy = sy * viewport.height + viewport.y\n result.x = sx\n result.y = sy\n result.z = sz\n return true\n }\n\n /**\n * Un-projects a screen coordinate point to Cartesian coordinates at the near clip plane and the far clip plane.\n * This method assumes this matrix represents an inverse modelview-projection matrix. The result of this method is\n * undefined if this matrix is not an inverse modelview-projection matrix.\n *
\n * The screen point is understood to be in OpenGL screen coordinates, with the origin in the bottom-left corner and\n * axes that extend up and to the right from the origin.\n *
\n * This function stores the un-projected points in the result argument, and a boolean value indicating whether the\n * un-projection is successful.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param nearResult a pre-allocated [Vec3] in which to return the un-projected near clip plane point\n * @param farResult a pre-allocated [Vec3] in which to return the un-projected far clip plane point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun unProject(x: Double, y: Double, viewport: Viewport, nearResult: Vec3, farResult: Vec3): Boolean {\n // Convert the XY screen coordinates to coordinates in the range [0, 1]. This enables the XY coordinates to\n // be converted to clip coordinates.\n var sx = (x - viewport.x) / viewport.width\n var sy = (y - viewport.y) / viewport.height\n\n // Convert from coordinates in the range [0, 1] to clip coordinates in the range [-1, 1].\n sx = sx * 2 - 1\n sy = sy * 2 - 1\n\n // Transform the screen point from clip coordinates to model coordinates. This is a partial transformation that\n // factors out the contribution from the screen point's X and Y components. The contribution from the Z\n // component, which is both -1 and +1, is included next.\n val mx = m[0] * sx + m[1] * sy + m[3]\n val my = m[4] * sx + m[5] * sy + m[7]\n val mz = m[8] * sx + m[9] * sy + m[11]\n val mw = m[12] * sx + m[13] * sy + m[15]\n\n // Transform the screen point at the near clip plane (z = -1) to model coordinates.\n val nx = mx - m[2]\n val ny = my - m[6]\n val nz = mz - m[10]\n val nw = mw - m[14]\n\n // Transform the screen point at the far clip plane (z = +1) to model coordinates.\n val fx = mx + m[2]\n val fy = my + m[6]\n val fz = mz + m[10]\n val fw = mw + m[14]\n if (nw == 0.0 || fw == 0.0) return false\n\n // Complete the conversion from near clip coordinates to model coordinates by dividing by the W component.\n nearResult.x = nx / nw\n nearResult.y = ny / nw\n nearResult.z = nz / nw\n\n // Complete the conversion from far clip coordinates to model coordinates by dividing by the W component.\n farResult.x = fx / fw\n farResult.y = fy / fw\n farResult.z = fz / fw\n return true\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix4) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix4([${m[0]}, ${m[1]}, ${m[2]}, ${m[3]}], [${m[4]}, ${m[5]}, ${m[6]}, ${m[7]}], [${m[8]}, ${m[9]}, ${m[10]}, ${m[11]}], [${m[12]}, ${m[13]}, ${m[14]}, ${m[15]}])\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.OffsetMode.FRACTION\nimport earth.worldwind.geom.OffsetMode.INSET_PIXELS\nimport kotlin.jvm.JvmStatic\n\n/**\n * Specifies an offset relative to a rectangle. Used by renderable shapes.\n */\ndata class Offset(\n /**\n * The units of this instance's X offset. See this class' constructor description for a list of the possible\n * values.\n */\n var xUnits: OffsetMode,\n /**\n * The offset in the X dimension, interpreted according to this instance's xUnits argument.\n */\n var x: Double,\n /**\n * The units of this instance's Y offset. See this class' constructor description for a list of the possible\n * values.\n */\n var yUnits: OffsetMode,\n /**\n * The offset in the Y dimension, interpreted according to this instance's yUnits argument.\n */\n var y: Double\n) {\n /**\n * Creates a new offset of this offset with identical property values.\n */\n constructor(offset: Offset): this(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n companion object {\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its center.\n */\n @JvmStatic fun center() = Offset(FRACTION, 0.5, FRACTION, 0.5)\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its bottom-left corner.\n */\n @JvmStatic fun bottomLeft() = Offset(FRACTION, 0.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its center of its bottom edge.\n */\n @JvmStatic fun bottomCenter() = Offset(FRACTION, 0.5, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its bottom-right corner.\n */\n @JvmStatic fun bottomRight() = Offset(FRACTION, 1.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle its top-left corner.\n */\n @JvmStatic fun topLeft() = Offset(FRACTION, 0.0, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to the center of its top edge.\n */\n @JvmStatic fun topCenter() = Offset(FRACTION, 0.5, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its top-right corner.\n */\n @JvmStatic fun topRight() = Offset(FRACTION, 1.0, FRACTION, 1.0)\n }\n\n /**\n * Sets this offset to specified property values.\n */\n fun set(xUnits: OffsetMode, x: Double, yUnits: OffsetMode, y: Double) = apply {\n this.xUnits = xUnits\n this.x = x\n this.yUnits = yUnits\n this.y = y\n }\n\n /**\n * Sets this offset to identical property values of the specified offset.\n */\n fun copy(offset: Offset) = set(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n /**\n * Returns this offset's absolute X and Y coordinates in pixels for a rectangle of a specified size in pixels. The\n * returned offset is in pixels relative to the rectangle's origin, and is defined in the coordinate system used by\n * the caller.\n *\n * @param width the rectangle's width in pixels\n * @param height the rectangles height in pixels\n * @param result a pre-allocated Vec2 in which to return the computed offset relative to the rectangle's origin\n *\n * @return the result argument set to the computed offset\n */\n fun offsetForSize(width: Double, height: Double, result: Vec2): Vec2 {\n val x = when (xUnits) {\n FRACTION -> width * x\n INSET_PIXELS -> width - x\n else -> x // default to OFFSET_PIXELS\n }\n val y = when (yUnits) {\n FRACTION -> height * y\n INSET_PIXELS -> height - y\n else -> y // default to OFFSET_PIXELS\n }\n return result.set(x, y)\n }\n}","package earth.worldwind.geom\n\n/**\n * Offset mode indicates how WorldWind interprets an offset's x and y values.\n * Accepted values are [FRACTION], [INSET_PIXELS] and [PIXELS].\n */\nenum class OffsetMode {\n /**\n * Indicating that the associated parameters are fractional values of the virtual\n * rectangle's width or height in the range [0, 1], where 0 indicates the rectangle's origin and 1 indicates the\n * corner opposite its origin.\n */\n FRACTION,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's corner opposite its origin corner.\n */\n INSET_PIXELS,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's origin.\n */\n PIXELS;\n}","package earth.worldwind.geom\n\n/**\n * Represents a plane in Cartesian coordinates. The plane's X, Y and Z components indicate the plane's normal vector.\n * The distance component indicates the plane's distance from the origin relative to its unit normal.\n */\nopen class Plane {\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-10\n }\n\n /**\n * The normal vector to the plane.\n */\n val normal = Vec3(0.0, 0.0, 1.0)\n /**\n * The plane's distance from the origin.\n */\n var distance = 0.0\n\n /**\n * Constructs a plane in the X-Y plane with its unit normal pointing along the Z axis.\n */\n constructor()\n\n /**\n * Constructs a plane with specified normal vector components and distance from the origin.\n * This constructor normalizes the components, ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n */\n constructor(x: Double, y: Double, z: Double, distance: Double) { set(x, y, z, distance) }\n\n /**\n * Constructs a plane with the normal vector and distance from a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n */\n constructor(plane: Plane): this() { copy(plane) }\n\n /**\n * Computes the distance between this plane and a point.\n *\n * @param point the point whose distance to compute\n *\n * @return the computed distance\n */\n fun distanceToPoint(point: Vec3) = dot(point)\n\n /**\n * Sets this plane's specified normal vector and distance to specified values. This normalizes the components,\n * ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n *\n * @return this plane with its normal vector and distance set to specified values\n */\n fun set(x: Double, y: Double, z: Double, distance: Double) = apply {\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Sets this plane's normal vector and distance to that of a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n *\n * @return this plane with its normal vector and distance set to those of the specified plane\n */\n fun copy(plane: Plane) = apply {\n // Assumes the specified plane's parameters are normalized.\n normal.copy(plane.normal)\n distance = plane.distance\n }\n\n /**\n * Transforms this plane by a specified matrix.\n *\n * @param matrix the matrix to apply to this plane\n *\n * @return this plane transformed by the specified matrix\n */\n fun transformByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * normal.x + m[1] * normal.y + m[2] * normal.z + m[3] * distance\n val y = m[4] * normal.x + m[5] * normal.y + m[6] * normal.z + m[7] * distance\n val z = m[8] * normal.x + m[9] * normal.y + m[10] * normal.z + m[11] * distance\n val distance = m[12] * normal.x + m[13] * normal.y + m[14] * normal.z + m[15] * distance\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Computes the dot product of this plane's components with a specified vector. Since the plane was defined with a\n * unit normal vector, this function returns the distance of the vector from the plane.\n *\n * @param vector the vector to dot with this plane's components\n *\n * @return the computed dot product\n */\n fun dot(vector: Vec3) = normal.dot(vector) + distance\n\n /**\n * Determines whether a specified line segment intersects this plane.\n *\n * @param endPoint1 the line segment's first end point\n * @param endPoint2 the line segment's second end point\n *\n * @return true if the line segment intersects this plane, otherwise false\n */\n fun intersectsSegment(endPoint1: Vec3, endPoint2: Vec3): Boolean {\n val distance1 = dot(endPoint1)\n val distance2 = dot(endPoint2)\n return distance1 * distance2 <= 0\n }\n\n /**\n * Determines whether two points are on the same side of this plane.\n *\n * @param pointA the first point\n * @param pointB the second point\n *\n * @return -1 if both points are on the negative side of this plane, +1 if both points are on the positive side of\n * this plane, 0 if the points are on opposite sides of this plane\n */\n fun onSameSide(pointA: Vec3, pointB: Vec3): Int {\n val da = distanceToPoint(pointA)\n val db = distanceToPoint(pointB)\n if (da < 0 && db < 0) return -1\n return if (da > 0 && db > 0) 1 else 0\n }\n\n /**\n * Clips a line segment to this plane, returning an two-point array indicating the clipped segment. If the direction\n * of the line formed by the two points is positive with respect to this plane's normal vector, the first point in\n * the array will be the intersection point on the plane, and the second point will be the original segment end\n * point. If the direction of the line is negative with respect to this plane's normal vector, the first point in\n * the array will be the original segment's begin point, and the second point will be the intersection point on the\n * plane. If the segment does not intersect the plane, null is returned. If the segment is coincident with the\n * plane, the input points are returned, in their input order.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return an array of two points both on the positive side of the plane, or null if the segment does not intersect\n * this plane\n */\n fun clip(pointA: Vec3, pointB: Vec3): Array? {\n if (pointA == pointB) return null\n\n // Get the projection of the segment onto the plane.\n val line = Line().setToSegment(pointA, pointB)\n val lDotV = normal.dot(line.direction)\n\n // Are the line and plane parallel?\n if (lDotV == 0.0) { // line and plane are parallel and may be coincident.\n val lDotS = dot(line.origin)\n return if (lDotS == 0.0) arrayOf(pointA, pointB) // line is coincident with the plane\n else null // line is not coincident with the plane.\n }\n\n // Not parallel so the line intersects. But does the segment intersect?\n val t = -dot(line.origin) / lDotV // lDotS / lDotV\n if (t < 0 || t > 1) return null // segment does not intersect\n val p = line.pointAt(t, Vec3())\n return if (lDotV > 0) arrayOf(p, pointB) else arrayOf(pointA, p)\n }\n\n protected open fun normalizeIfNeeded() {\n // Compute the plane normal's magnitude in order to determine whether or not the plane needs normalization.\n val magnitude = normal.magnitude\n\n // Don't normalize a zero vector; the result is NaN when it should be 0.0.\n if (magnitude == 0.0) return\n\n // Don't normalize a unit vector, this indicates that the caller has already normalized the vector, but floating\n // point round-off results in a length not exactly 1.0. Since we're normalizing on the caller's behalf, we want\n // to avoid unnecessary any normalization that modifies the specified values.\n if (magnitude >= 1 - NEAR_ZERO_THRESHOLD && magnitude <= 1 + NEAR_ZERO_THRESHOLD) return\n\n // Normalize the caller-specified plane coordinates.\n normal.x /= magnitude\n normal.y /= magnitude\n normal.z /= magnitude\n distance /= magnitude\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Plane) return false\n return normal == other.normal && distance == other.distance\n }\n\n override fun hashCode(): Int {\n var result = normal.hashCode()\n result = 31 * result + distance.hashCode()\n return result\n }\n\n override fun toString() = \"Plane(normal=$normal, distance=$distance)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.shape.PathType\nimport kotlin.jvm.JvmStatic\n\n/**\n * Geographic position with a latitude and longitude and altitude in meters.\n */\nopen class Position(\n /**\n * The position's latitude.\n */\n latitude: Angle,\n /**\n * The position's longitude.\n */\n longitude: Angle,\n /**\n * The position's altitude in meters.\n */\n var altitude: Double\n): Location(latitude, longitude) {\n /**\n * Constructs a position with latitude, longitude and altitude all 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO, altitude = 0.0)\n\n /**\n * Constructs a position with the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the coordinates\n */\n constructor(position: Position): this(position.latitude, position.longitude, position.altitude)\n\n companion object {\n /**\n * Constructs a position with a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) =\n Position(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees), altitude)\n\n /**\n * Constructs a position with a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) =\n Position(fromRadians(latitudeRadians), fromRadians(longitudeRadians), altitude)\n }\n\n /**\n * Sets this position to a specified latitude and longitude and altitude in meters.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle, altitude: Double) = apply {\n set(latitude, longitude)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) = apply {\n setDegrees(latitudeDegrees, longitudeDegrees)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) = apply {\n setRadians(latitudeRadians, longitudeRadians)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the new coordinates\n *\n * @return this position with its latitude, longitude and altitude set to that of the specified position\n */\n fun copy(position: Position) = set(position.latitude, position.longitude, position.altitude)\n\n /**\n * Compute a position along a path between two positions. The amount indicates the fraction of the path at which to\n * compute a position. This value is typically between 0 and 1, where 0 indicates the begin position (this position)\n * and 1 indicates the end position.\n *\n * @param endPosition the path's end position\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a position\n * @param result a pre-allocated Position in which to return the computed result\n *\n * @return the result argument set to the computed position\n */\n fun interpolateAlongPath(endPosition: Position, pathType: PathType, amount: Double, result: Position): Position {\n // Interpolate latitude and longitude.\n super.interpolateAlongPath(endPosition, pathType, amount, result)\n // Interpolate altitude.\n result.altitude = (1 - amount) * altitude + amount * endPosition.altitude\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Position) return false\n if (!super.equals(other)) return false\n return altitude == other.altitude\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + altitude.hashCode()\n return result\n }\n\n override fun toString() = \"Position(latitude=$latitude, longitude=$longitude, altitude=$altitude)\"\n}","package earth.worldwind.geom\n\n/**\n * Continuous interval in a one-dimensional coordinate system expressed as a lower bound an an upper bound, inclusive.\n */\nopen class Range(\n /**\n * The range's lower bound, inclusive.\n */\n var lower: Int,\n /**\n * The range's upper bound, inclusive.\n */\n var upper: Int\n) {\n /**\n * Constructs an empty range with lower and upper both zero.\n */\n constructor(): this(lower = 0, upper = 0)\n\n /**\n * Constructs a range with the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the values\n */\n constructor(range: Range) : this(range.lower, range.upper)\n\n /**\n * Returns the length of the interval between this range's lower bound and upper bound, or 0 if this range is empty.\n */\n val length get() = if (upper > lower) upper - lower else 0\n\n /**\n * Indicates whether or not this range is empty. An range is empty when its lower bound is greater than or equal to\n * its upper bound.\n *\n * @return true if this range is empty, false otherwise\n */\n val isEmpty get() = lower >= upper\n\n /**\n * Sets this range to an empty range.\n *\n * @return this range with its lower bound and upper bound both set to zero\n */\n fun setEmpty() = set(0, 0)\n\n /**\n * Sets this range to the specified lower bound and upper bound.\n *\n * @param lower the new lower bound, inclusive\n * @param upper the new upper bound, inclusive\n *\n * @return this range set to the specified values\n */\n fun set(lower: Int, upper: Int) = apply {\n this.lower = lower\n this.upper = upper\n }\n\n /**\n * Sets this range to the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the new values\n *\n * @return this range with its lower bound and upper bound set to that of the specified range\n */\n fun copy(range: Range) = set(range.lower, range.upper)\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Range) return false\n return lower == other.lower && upper == other.upper\n }\n\n override fun hashCode(): Int {\n var result = lower\n result = 31 * result + upper\n return result\n }\n\n override fun toString() = \"Range(lower=$lower, upper=$upper)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.geom.Angle.Companion.clampLatitude\nimport earth.worldwind.geom.Angle.Companion.clampLongitude\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.max\nimport earth.worldwind.geom.Angle.Companion.min\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\n\n/**\n * Geographic rectangular region.\n */\nopen class Sector(\n /**\n * The sector's minimum latitude.\n */\n var minLatitude: Angle,\n /**\n * The sector's maximum latitude.\n */\n var maxLatitude: Angle,\n /**\n * The sector's minimum longitude.\n */\n var minLongitude: Angle,\n /**\n * The sector's maximum longitude.\n */\n var maxLongitude: Angle\n) {\n /**\n * Indicates whether this sector has no dimensions.\n */\n val isEmpty get() = minLatitude == ZERO && maxLatitude == ZERO && minLongitude == ZERO && maxLongitude == ZERO\n /**\n * Indicates whether this sector contains the full range of latitude [90 to +90] and longitude [-180 to +180].\n */\n val isFullSphere get() = minLatitude == NEG90 && maxLatitude == POS90 && minLongitude == NEG180 && maxLongitude == POS180\n /**\n * Returns the angle between this sector's minimum and maximum latitudes.\n */\n val deltaLatitude get() = maxLatitude - minLatitude\n /**\n * Returns the angle between this sector's minimum and maximum longitudes.\n */\n val deltaLongitude get() = maxLongitude - minLongitude\n /**\n * Returns the angle midway between this sector's minimum and maximum latitudes.\n */\n val centroidLatitude get() = average(minLatitude, maxLatitude)\n /**\n * Returns the angle midway between this sector's minimum and maximum longitudes.\n */\n val centroidLongitude get() = average(minLongitude, maxLongitude)\n\n /**\n * Constructs an empty sector with minimum and maximum latitudes and longitudes all 0.\n */\n constructor(): this(minLatitude = ZERO, maxLatitude = ZERO, minLongitude = ZERO, maxLongitude = ZERO)\n\n /**\n * Constructs a sector with the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the coordinates\n */\n constructor(sector: Sector): this(sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude)\n\n companion object {\n @JvmStatic\n fun fromDegrees(minLatDegrees: Double, minLonDegrees: Double, deltaLatDegrees: Double, deltaLonDegrees: Double): Sector {\n val maxLatDegrees = if (deltaLatDegrees > 0)\n clampLatitude(minLatDegrees + deltaLatDegrees) else minLatDegrees\n val maxLonDegrees = if (deltaLonDegrees > 0)\n clampLongitude(minLonDegrees + deltaLonDegrees) else minLonDegrees\n return Sector(\n fromDegrees(minLatDegrees), fromDegrees(maxLatDegrees),\n fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n }\n\n @JvmStatic\n fun fromRadians(minLatRadians: Double, minLonRadians: Double, deltaLatRadians: Double, deltaLonRadians: Double): Sector {\n val maxLatRadians = if (deltaLatRadians > 0)\n clampLatitude(minLatRadians + deltaLatRadians) else minLatRadians\n val maxLonRadians = if (deltaLonRadians > 0)\n clampLongitude(minLonRadians + deltaLonRadians) else minLonRadians\n return Sector(\n fromRadians(minLatRadians), fromRadians(maxLatRadians),\n fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n }\n }\n\n /**\n * Computes the location of the angular center of this sector, which is the mid-angle of each of this sector's\n * latitude and longitude dimensions.\n *\n * @param result a pre-allocated [Location] in which to return the computed centroid\n *\n * @return the specified result argument containing the computed centroid\n */\n fun centroid(result: Location): Location {\n result.latitude = centroidLatitude\n result.longitude = centroidLongitude\n return result\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension.\n *\n * @param minLatitude the minimum latitude, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun set(minLatitude: Angle, minLongitude: Angle, deltaLatitude: Angle, deltaLongitude: Angle) = apply {\n this.minLatitude = minLatitude\n this.minLongitude = minLongitude\n maxLatitude = if (deltaLatitude.inDegrees > 0.0) (minLatitude + deltaLatitude).clampLatitude() else minLatitude\n maxLongitude = if (deltaLongitude.inDegrees > 0.0) (minLongitude + deltaLongitude).clampLongitude() else minLongitude\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in degrees.\n *\n * @param minLatitude the minimum latitude in degrees, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in degrees, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in degrees; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in degrees; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setDegrees(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromDegrees(minLatitude), fromDegrees(minLongitude),\n fromDegrees(deltaLatitude), fromDegrees(deltaLongitude),\n )\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in radians.\n *\n * @param minLatitude the minimum latitude in radians, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in radians, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in radians; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in radians; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setRadians(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromRadians(minLatitude), fromRadians(minLongitude),\n fromRadians(deltaLatitude), fromRadians(deltaLongitude),\n )\n\n /**\n * Sets this sector to the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the new coordinates\n *\n * @return this sector with its coordinates set to that of the specified sector\n */\n fun copy(sector: Sector) = apply {\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n\n /**\n * Sets this sector to an empty sector.\n *\n * @return this sector with its coordinates set to an empty sector\n */\n fun setEmpty() = apply {\n minLatitude = ZERO\n maxLatitude = ZERO\n minLongitude = ZERO\n maxLongitude = ZERO\n }\n\n /**\n * Sets this sector to the full range of latitude [90 to +90] and longitude [-180 to +180].\n *\n * @return this sector with its coordinates set to the full range of latitude and longitude\n */\n fun setFullSphere() = apply {\n minLatitude = NEG90\n maxLatitude = POS90\n minLongitude = NEG180\n maxLongitude = POS180\n }\n\n /**\n * Indicates whether this sector intersects a specified sector. Two sectors intersect when both the latitude\n * boundaries and the longitude boundaries overlap by a non-zero amount. An empty sector never intersects another\n * sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersections this sector, false otherwise\n */\n fun intersects(sector: Sector) = minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n\n /**\n * Indicates if this sector is next to, or intersects, a specified sector. Two sectors intersect when the conditions\n * of the [Sector.intersects] methods have been met, and if the boundary or corner is shared with the\n * specified sector. This is a temporary implementation and will be deprecated in future releases.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersects or is next to this sector, false otherwise\n */\n fun intersectsOrNextTo(sector: Sector) = minLatitude.inDegrees <= sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.minLatitude.inDegrees\n && minLongitude.inDegrees <= sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.minLongitude.inDegrees\n\n /**\n * Computes the intersection of this sector and a specified sector, storing the result in this sector and returning\n * whether or not the sectors intersect. Two sectors intersect when both the latitude boundaries and the longitude\n * boundaries overlap by a non-zero amount. An empty sector never intersects another sector. When there is no\n * intersection, this returns false and leaves this sector unchanged.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to intersect with\n *\n * @return this true if this sector intersects the specified sector, false otherwise\n */\n fun intersect(sector: Sector): Boolean {\n if (minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n ) {\n if (minLatitude.inDegrees < sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees > sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees < sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees > sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n return true\n }\n return false // the two sectors do not intersect\n }\n\n /**\n * Indicates whether this sector contains a specified geographic location.\n * An empty sector never contains a location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(latitude: Angle, longitude: Angle) = latitude.inDegrees in minLatitude.inDegrees..maxLatitude.inDegrees\n && longitude.inDegrees in minLongitude.inDegrees..maxLongitude.inDegrees\n\n /**\n * Indicates whether this sector contains a specified geographic location. An empty sector never contains a\n * location.\n *\n * @param location the location\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(location: Location) = contains(location.latitude, location.longitude)\n\n /**\n * Indicates whether this sector fully contains a specified sector. This sector contains the specified sector when\n * the specified sector's boundaries are completely contained within this sector's boundaries, or are equal to this\n * sector's boundaries. An empty sector never contains another sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test containment with\n *\n * @return true if the specified sector contains this sector, false otherwise\n */\n fun contains(sector: Sector) = minLatitude.inDegrees <= sector.minLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.maxLatitude.inDegrees\n && minLongitude.inDegrees <= sector.minLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.maxLongitude.inDegrees\n\n /**\n * Sets this sector to the union of itself and a specified location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(latitude: Angle, longitude: Angle) = apply {\n if (!isEmpty) {\n minLatitude = min(minLatitude, latitude)\n maxLatitude = max(maxLatitude, latitude)\n minLongitude = min(minLongitude, longitude)\n maxLongitude = max(maxLongitude, longitude)\n } else {\n minLatitude = latitude\n maxLatitude = latitude\n minLongitude = longitude\n maxLongitude = longitude\n }\n }\n\n /**\n * Sets this sector to the union of itself and a specified location.\n *\n * @param location the location\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(location: Location) = union(location.latitude, location.longitude)\n\n /**\n * Sets this sector to the union of itself and an array of specified locations. If this sector is empty, it bounds\n * the specified locations. The array is understood to contain location of at least two coordinates organized as\n * (longitude, latitude, ...), where stride indicates the number of coordinates between longitude values.\n *\n * @param array the array of locations to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent locations - must be at least 2\n *\n * @return This bounding box set to contain the specified array of locations.\n *\n * @throws IllegalArgumentException If the array is empty, if the count is less than 0, or if the stride is\n * less than 2\n */\n fun union(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Sector\", \"union\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidCount\")\n }\n require(stride >= 2) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidStride\")\n }\n val empty = isEmpty\n var minLat = if (empty) Double.MAX_VALUE else minLatitude.inDegrees\n var maxLat = if (empty) -Double.MAX_VALUE else maxLatitude.inDegrees\n var minLon = if (empty) Double.MAX_VALUE else minLongitude.inDegrees\n var maxLon = if (empty) -Double.MAX_VALUE else maxLongitude.inDegrees\n for (idx in 0 until count step stride) {\n val lon = array[idx].toDouble()\n val lat = array[idx + 1].toDouble()\n if (maxLat < lat) maxLat = lat\n if (minLat > lat) minLat = lat\n if (maxLon < lon) maxLon = lon\n if (minLon > lon) minLon = lon\n }\n if (minLat < Double.MAX_VALUE) minLatitude = fromDegrees(minLat)\n if (maxLat > -Double.MAX_VALUE) maxLatitude = fromDegrees(maxLat)\n if (minLon < Double.MAX_VALUE) minLongitude = fromDegrees(minLon)\n if (maxLon > -Double.MAX_VALUE) maxLongitude = fromDegrees(maxLon)\n }\n\n /**\n * Sets this sector to the union of itself and a specified sector.\n * This has no effect if the specified sector is empty.\n * If this sector is empty, it is set to the specified sector.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param sector the sector to union with\n *\n * @return this sector, set to its union with the specified sector\n */\n fun union(sector: Sector) = apply {\n if (!sector.isEmpty) {\n // specified sector not empty\n if (!isEmpty) {\n // this sector not empty, make a union\n if (minLatitude.inDegrees > sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees < sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees > sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees < sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n } else {\n // this sector is empty, set to the specified sector\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n }\n }\n\n /**\n * Translates this sector by a specified geographic increment.\n *
\n * The translated sector is assumed to have normalized angles (angles within the range [-90, +90] latitude and\n * [-180, +180] longitude).\n *\n * @param deltaLatitudeDegrees the translation's latitude increment in degrees\n * @param deltaLongitudeDegrees the translation's longitude increment in degrees\n *\n * @return this sector, translated by the specified increment\n */\n fun translate(deltaLatitudeDegrees: Double, deltaLongitudeDegrees: Double) = apply {\n minLatitude = minLatitude.plusDegrees(deltaLatitudeDegrees)\n maxLatitude = maxLatitude.plusDegrees(deltaLatitudeDegrees)\n minLongitude = minLongitude.plusDegrees(deltaLongitudeDegrees)\n maxLongitude = maxLongitude.plusDegrees(deltaLongitudeDegrees)\n }\n\n /**\n * Determines minimal level number relevant for sector of the specified size\n * @param maxLevelNumber Maximum available level number\n * @return Minimal relevant level number for sector\n */\n fun minLevelNumber(maxLevelNumber: Int): Int {\n val relWidth = abs(maxLongitude.relativeLongitude - minLongitude.relativeLongitude)\n val relHeight = abs(maxLatitude.relativeLatitude - minLatitude.relativeLatitude)\n val delta = 0.00001\n\n for (minLevelNumber in 0 until maxLevelNumber) {\n val tileSize = 1.0 / (1 shl (minLevelNumber + 1))\n if (relWidth - delta > tileSize && relHeight - delta > tileSize) return minLevelNumber\n }\n\n return maxLevelNumber\n }\n\n fun equals(other: Sector, tolerance: Double): Boolean {\n // if (this === other) return true // Empty sector is not equal self\n if (isEmpty && other.isEmpty) return false // Two empty sectors are not equal\n return abs(minLatitude.inDegrees - other.minLatitude.inDegrees) < tolerance\n && abs(maxLatitude.inDegrees - other.maxLatitude.inDegrees) < tolerance\n && abs(minLongitude.inDegrees - other.minLongitude.inDegrees) < tolerance\n && abs(maxLongitude.inDegrees - other.maxLongitude.inDegrees) < tolerance\n }\n\n override fun equals(other: Any?): Boolean {\n // if (this === other) return true // Empty sector is not equal self\n if (other !is Sector) return false\n if (isEmpty && other.isEmpty) return false // Two empty sectors are not equal\n return minLatitude == other.minLatitude && maxLatitude == other.maxLatitude\n && minLongitude == other.minLongitude && maxLongitude == other.maxLongitude\n }\n\n override fun hashCode(): Int {\n var result = minLatitude.hashCode()\n result = 31 * result + maxLatitude.hashCode()\n result = 31 * result + minLongitude.hashCode()\n result = 31 * result + maxLongitude.hashCode()\n return result\n }\n\n override fun toString() = \"Sector(minLatitude=$minLatitude, maxLatitude=$maxLatitude, minLongitude=$minLongitude, maxLongitude=$maxLongitude)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport kotlin.math.ceil\n\nopen class TileMatrix internal constructor(\n val sector: Sector, val ordinal: Int, val matrixWidth: Int, val matrixHeight: Int, val tileWidth: Int, val tileHeight: Int\n) {\n val resolution get() = sector.deltaLatitude.div(matrixHeight * tileHeight)\n\n fun tileKey(row: Int, column: Int): Long {\n val lOrd = (ordinal and 0xFF).toLong() // 8 bits\n val lRow = (row and 0xFFFFFFF).toLong() // 28 bits\n val lCol = (column and 0xFFFFFFF).toLong() // 28 bits\n return lOrd.shl(56) or lRow.shl(28) or lCol\n }\n\n fun tileSector(row: Int, column: Int): Sector {\n val deltaLat = sector.deltaLatitude.inDegrees / matrixHeight\n val deltaLon = sector.deltaLongitude.inDegrees / matrixWidth\n val minLat = sector.maxLatitude.inDegrees - deltaLat * (row + 1)\n val minLon = sector.minLongitude.inDegrees + deltaLon * column\n return fromDegrees(minLat, minLon, deltaLat, deltaLon)\n }\n\n /**\n * Calculates amount of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector): Int {\n val deltaLat = this.sector.deltaLatitude.inDegrees / matrixHeight\n val deltaLon = this.sector.deltaLongitude.inDegrees / matrixWidth\n val tilesPerLat = ceil(sector.deltaLatitude.inDegrees / deltaLat).toInt()\n val tilesPerLon = ceil(sector.deltaLongitude.inDegrees / deltaLon).toInt()\n return tilesPerLat * tilesPerLon\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.makeMessage\nimport kotlin.jvm.JvmStatic\n\nopen class TileMatrixSet(val sector: Sector, val entries: List) {\n /**\n * Construct empty tile matrix set.\n */\n constructor(): this(Sector(), emptyList())\n\n companion object {\n @JvmStatic\n fun fromTilePyramid(\n sector: Sector, matrixWidth: Int, matrixHeight: Int, tileWidth: Int, tileHeight: Int, resolution: Angle\n ): TileMatrixSet {\n require(resolution.inDegrees > 0.0) {\n makeMessage(\"TileMatrixSet\", \"fromTilePyramid\", \"invalidResolution\")\n }\n var idx = 0\n var width = matrixWidth\n var height = matrixHeight\n val tileMatrices = mutableListOf()\n do {\n val matrix = TileMatrix(sector, idx++, width, height, tileWidth, tileHeight)\n tileMatrices.add(matrix)\n width *= 2\n height *= 2\n } while (matrix.resolution.inDegrees > resolution.inDegrees)\n return TileMatrixSet(sector, tileMatrices)\n }\n }\n\n val maxResolution get() = entries[entries.size - 1].resolution // entries.maxOf { it.resolution }\n\n fun indexOfMatrixNearest(resolution: Angle): Int {\n var nearestIdx = -1\n var nearestDelta2 = Double.POSITIVE_INFINITY\n for (idx in entries.indices) {\n val delta = entries[idx].resolution - resolution\n val delta2 = delta.inDegrees * delta.inDegrees\n if (nearestDelta2 > delta2) {\n nearestDelta2 = delta2\n nearestIdx = idx\n }\n }\n return nearestIdx\n }\n\n /**\n * Determine the min relevant index of matrix for the sector of this matrix set\n *\n * @param maxIndex Maximum available index\n * @return Minimum relevant index\n */\n fun minRelevantIndexOfMatrix(maxIndex: Int = entries.size - 1) = sector.minLevelNumber(maxIndex)\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Two-component vector with X and Y coordinates.\n */\nopen class Vec2(\n /**\n * The vector's X component.\n */\n var x: Double,\n /**\n * The vector's Y component.\n */\n var y: Double\n) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n *\n * @return the squared magnitude of this vector\n */\n open val magnitudeSquared get() = x * x + y * y\n /**\n * Computes the magnitude of this vector.\n *\n * @return the magnitude of this vector\n */\n val magnitude get() = sqrt(magnitudeSquared)\n\n /**\n * Constructs a two-component vector with X and Y both 0.\n */\n constructor(): this(x = 0.0, y = 0.0)\n\n /**\n * Constructs a two-component vector with the X and Y of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec2): this(vector.x, vector.y)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform2fv.\n *\n * @param result a pre-allocated array of length 2 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n open fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 2) {\n logMessage(ERROR, \"Vec2\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o] = y.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec2) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec2): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n return dx * dx + dy * dy\n }\n\n /**\n * Sets this vector to the specified X and Y.\n *\n * @param x the new X component\n * @param y the new Y component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double) = apply {\n this.x = x\n this.y = y\n }\n\n /**\n * Sets this vector to the X and Y of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X and Y set to that of the specified vector\n */\n fun copy(vector: Vec2) = set(vector.x, vector.y)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec2) = apply {\n var tmp = x\n x = vector.x\n vector.x = tmp\n\n tmp = y\n y = vector.y\n vector.y = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec2) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec2) = Vec2(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec2) {\n x += vector.x\n y += vector.y\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec2) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec2) = Vec2(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec2) {\n x -= vector.x\n y -= vector.y\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n open fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n open operator fun times(scalar: Double) = Vec2(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n open operator fun timesAssign(scalar: Double) {\n x *= scalar\n y *= scalar\n }\n\n /**\n * Multiplies this vector by a 3x3 matrix. The multiplication is performed with an implicit Z component of 1. The\n * resultant Z component of the product is then divided through the X and Y components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2]\n val y = m[3] * this.x + m[4] * y + m[5]\n val z = m[6] * this.x + m[7] * this.y + m[8]\n this.x = x / z\n this.y = y / z\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n open fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n open operator fun div(divisor: Double) = Vec2(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n open operator fun divAssign(divisor: Double) {\n x /= divisor\n y /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n open operator fun unaryMinus() = Vec2(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n open fun negate() = apply {\n x = -x\n y = -y\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n open fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec2) = x * vector.x + y * vector.y\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec2, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec2) return false\n return x == other.x && y == other.y\n }\n\n override fun hashCode(): Int {\n var result = x.hashCode()\n result = 31 * result + y.hashCode()\n return result\n }\n\n override fun toString() = \"Vec2(x=$x, y=$y)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Three-component vector with X, Y and Z coordinates.\n */\nopen class Vec3(\n /**\n * The vector's X component.\n */\n x: Double,\n /**\n * The vector's Y component.\n */\n y: Double,\n /**\n * The vector's Z component.\n */\n var z: Double\n): Vec2(x, y) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n */\n override val magnitudeSquared get() = super.magnitudeSquared + z * z\n\n /**\n * Constructs a three-component vector with X, Y and Z all 0.\n */\n constructor(): this(x = 0.0, y = 0.0, z = 0.0)\n\n /**\n * Constructs a three-component vector with the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec3): this(vector.x, vector.y, vector.z)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform3fv.\n *\n * @param result a pre-allocated array of length 3 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n override fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 3) {\n logMessage(ERROR, \"Vec3\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o++] = y.toFloat()\n result[o] = z.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector The vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec3) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec3): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n val dz = z - vector.z\n return dx * dx + dy * dy + dz * dz\n }\n\n /**\n * Sets this vector to the specified X, Y and Z.\n *\n * @param x the new X component\n * @param y the new Y component\n * @param z the new Z component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double, z: Double) = apply {\n set(x, y)\n this.z = z\n }\n\n /**\n * Sets this vector to the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X, Y and Z set to that of the specified vector\n */\n fun copy(vector: Vec3) = set(vector.x, vector.y, vector.z)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec3) = apply {\n super.swap(vector)\n val tmp = z\n z = vector.z\n vector.z = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec3) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec3) = Vec3(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec3) {\n super.plusAssign(vector)\n z += vector.z\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec3) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec3) = Vec3(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec3) {\n super.minusAssign(vector)\n z -= vector.z\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n override fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n override fun times(scalar: Double) = Vec3(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n override fun timesAssign(scalar: Double) {\n super.timesAssign(scalar)\n z *= scalar\n }\n\n /**\n * Multiplies this vector by a 4x4 matrix. The multiplication is performed with an implicit W component of 1. The\n * resultant W component of the product is then divided through the X, Y, and Z components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2] * z + m[3]\n val y = m[4] * this.x + m[5] * y + m[6] * z + m[7]\n val z = m[8] * this.x + m[9] * this.y + m[10] * z + m[11]\n val w = m[12] * this.x + m[13] * this.y + m[14] * this.z + m[15]\n this.x = x / w\n this.y = y / w\n this.z = z / w\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n override fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n override fun div(divisor: Double) = Vec3(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n override fun divAssign(divisor: Double) {\n super.divAssign(divisor)\n z /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n override fun unaryMinus() = Vec3(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n override fun negate() = apply {\n super.negate()\n z = -z\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n override fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n z /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec3) = super.dot(vector) + z * vector.z\n\n /**\n * Computes the cross product of this vector and a specified vector, modifying this vector.\n *\n * @param vector the vector to cross with this vector\n *\n * @return this vector set to the cross product of itself and the specified vector\n */\n fun cross(vector: Vec3) = apply {\n val x = y * vector.z - z * vector.y\n val y = z * vector.x - this.x * vector.z\n val z = this.x * vector.y - this.y * vector.x\n this.x = x\n this.y = y\n this.z = z\n }\n\n /**\n * Computes the cross product of two vectors, setting this vector to the result.\n *\n * @param a the first vector\n * @param b the second vector\n *\n * @return this vector set to the cross product of the two specified vectors\n */\n fun cross(a: Vec3, b: Vec3) = apply {\n x = a.y * b.z - a.z * b.y\n y = a.z * b.x - a.x * b.z\n z = a.x * b.y - a.y * b.x\n }\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec3, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n z = z * w0 + vector.z * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec3) return false\n if (!super.equals(other)) return false\n return z == other.z\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + z.hashCode()\n return result\n }\n\n override fun toString() = \"Vec3(x=$x, y=$y, z=$z)\"\n}","package earth.worldwind.geom\n\n/**\n * Rectangular region in a two-dimensional coordinate system expressed as an origin and dimensions extending from the\n * origin.\n */\nopen class Viewport(\n /**\n * The X component of the viewport's origin.\n */\n var x: Int,\n /**\n * The Y component of the viewport's origin.\n */\n var y: Int,\n /**\n * The viewport's width.\n */\n var width: Int,\n /**\n * The viewport's height.\n */\n var height: Int\n) {\n /**\n * Constructs an empty viewport width X, Y, width and height all zero.\n */\n constructor(): this(x = 0, y = 0, width = 0, height = 0)\n\n /**\n * Constructs a viewport with the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the values\n */\n constructor(viewport: Viewport): this(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport is empty. A viewport is empty when either its width or its height are\n * zero (or negative).\n *\n * @return true if this viewport is empty, false otherwise\n */\n val isEmpty get() = width <= 0 || height <= 0\n\n /**\n * Sets this viewport to an empty viewport.\n *\n * @return this viewport with its width and height both set to zero\n */\n fun setEmpty() = apply {\n width = 0\n height = 0\n }\n\n /**\n * Sets this viewport to the specified origin and dimensions.\n *\n * @param x the new X component of the viewport's lower left corner\n * @param y the new Y component of the viewport's lower left corner\n * @param width the viewport's new width\n * @param height the viewport's new height\n *\n * @return this viewport set to the specified values\n */\n fun set(x: Int, y: Int, width: Int, height: Int) = apply {\n this.x = x\n this.y = y\n this.width = width\n this.height = height\n }\n\n /**\n * Sets this viewport to the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the new values\n *\n * @return this viewport with its origin and dimensions set to that of the specified viewport\n */\n fun copy(viewport: Viewport) = set(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param x the X component of the viewport to test intersection with\n * @param y the Y component of the viewport to test intersection with\n * @param width the viewport width to test intersection with\n * @param height the viewport height to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(x: Int, y: Int, width: Int, height: Int) =\n this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param viewport the viewport to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(viewport: Viewport) =\n width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param x the X component of the viewport to intersect with\n * @param y the Y component of the viewport to intersect with\n * @param width the viewport width to intersect with\n * @param height the viewport height to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(x: Int, y: Int, width: Int, height: Int): Boolean {\n if (this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height) {\n if (this.x < x) {\n this.width -= x - this.x\n this.x = x\n }\n if (this.y < y) {\n this.height -= y - this.y\n this.y = y\n }\n if (this.x + this.width > x + width) this.width = x + width - this.x\n if (this.y + this.height > y + height) this.height = y + height - this.y\n return true\n }\n return false\n }\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param viewport the viewport to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(viewport: Viewport): Boolean {\n if (width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height) {\n if (x < viewport.x) {\n width -= viewport.x - x\n x = viewport.x\n }\n if (y < viewport.y) {\n height -= viewport.y - y\n y = viewport.y\n }\n if (x + width > viewport.x + viewport.width) width = viewport.x + viewport.width - x\n if (y + height > viewport.y + viewport.height) height = viewport.y + viewport.height - y\n return true\n }\n return false\n }\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param point the point\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(point: Vec2) = contains(point.x, point.y)\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param x the point's X component\n * @param y the point's Y component\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(x: Number, y: Number) = x.toDouble() >= this.x && x.toDouble() < this.x + width\n && y.toDouble() >= this.y && y.toDouble() < this.y + height\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Viewport) return false\n return x == other.x && y == other.y && width == other.width && height == other.height\n }\n\n override fun hashCode(): Int {\n var result = x\n result = 31 * result + y\n result = 31 * result + width\n result = 31 * result + height\n return result\n }\n\n override fun toString() = \"Viewport(x=$x, y=$y, width=$width, height=$height)\"\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Location\nimport earth.worldwind.util.format.format\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.roundToInt\n\nclass GKCoord private constructor(val latitude: Angle, val longitude: Angle, val x: Double, val y: Double) {\n companion object {\n /**\n * Create a set of Gauss-Kruger coordinates from a pair of latitude and longitude.\n *\n * @param latitude the latitude.\n * @param longitude the longitude.\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to GK coordinates fails.\n */\n @JvmStatic\n fun fromLatLon(latitude: Angle, longitude: Angle) = fromLatLon(latitude, longitude, 0)\n\n /**\n * Create a set of Gauss-Kruger coordinates from a pair of latitude and longitude.\n *\n * @param latitude the latitude.\n * @param longitude the longitude.\n * @param zone optional zone to force coordinates conversion in it.\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to GK coordinates fails.\n */\n @JvmStatic\n fun fromLatLon(latitude: Angle, longitude: Angle, zone: Int): GKCoord {\n val converter = GKCoordConverter()\n val err = converter.convertGeodeticToGK(latitude.inRadians, longitude.inRadians, zone)\n require(err == GKCoordConverter.NO_ERROR) { \"Gauss-Kruger Conversion Error\" }\n return GKCoord(latitude, longitude, converter.northing, converter.easting)\n }\n\n /**\n * Create a set of Gauss-Kruger coordinates.\n *\n * @param x the northing distance (X) in meters.\n * @param y the easting distance (Y) in meters\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to Gauss-Kruger coordinates fails.\n */\n @JvmStatic\n fun fromXY(x: Double, y: Double): GKCoord {\n val converter = GKCoordConverter()\n val err = converter.convertGKToGeodetic(y, x)\n require(err == GKCoordConverter.NO_ERROR) { \"Gauss-Kruger Conversion Error\" }\n return GKCoord(converter.latitude.radians, converter.longitude.radians, x, y)\n }\n\n /**\n * Create a Gauss-Kruger rectangular coordinate from a standard XY coordinate text string.\n *\n * @param xyString the XY coordinate text string.\n * @return the corresponding [GKCoord].\n * @throws IllegalArgumentException if the [xyString] is empty or the conversion to geodetic coordinates fails.\n */\n @JvmStatic\n fun fromString(xyString: String): GKCoord {\n val tokens = xyString.replace(\"[-.,;]\".toRegex(), \"\").trim { it <= ' ' }\n .split(\"\\\\s+\".toRegex()).toTypedArray()\n require(tokens.size >= 2 && tokens[1].length > 6) { \"Gauss-Kruger Conversion Error\" }\n val x = tokens[0].toDouble()\n val y = tokens[1].toDouble()\n val north = xyString.count { it == '-' }.mod(2) == 0\n return fromXY(if (north) x else -x, y)\n }\n }\n\n fun toLocation() = Location(latitude, longitude)\n\n override fun toString(): String {\n val x = x.roundToInt()\n val y = y.roundToInt()\n val suffix = 100000\n return \"%02d-%05d, %02d-%05d\".format(x / suffix, abs(x % suffix), y / suffix, abs(y % suffix))\n }\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Ellipsoid\nimport kotlin.math.*\n\n/**\n * Converter used to translate Gauss-Kruger rectangular coordinates to and from geodetic latitude and longitude.\n */\ninternal class GKCoordConverter {\n companion object {\n const val NO_ERROR = 0x0000\n }\n\n private val ellipsoid = Ellipsoid.Krasovsky\n\n /** Easting (Y) in meters */\n var easting = 0.0\n private set\n /** Northing (X) in meters */\n var northing = 0.0\n private set\n /** Latitude in radians. */\n var latitude = 0.0\n private set\n /** Longitude in radians.*/\n var longitude = 0.0\n private set\n\n /**\n * The function Convert_Geodetic_To_GK converts geodetic (latitude and longitude) coordinates to Gauss-Kruger\n * projection (easting and northing) coordinates according to the Krasovsky ellipsoid.\n *\n * @param lat Latitude in radians\n * @param lon Longitude in radians\n * @param zone optional zone to force coordinates conversion in it\n *\n * @return error code\n */\n @Suppress(\"NAME_SHADOWING\")\n fun convertGeodeticToGK(lat: Double, lon: Double, zone: Int = 0): Int {\n val lon = if (lon < 0.0) lon + 2.0 * PI else lon\n val zone = if (zone != 0) zone else (lon * 180.0 / PI).toInt() / 6 + 1\n val a = ellipsoid.semiMajorAxis\n val b = ellipsoid.semiMinorAxis\n val e2 = (a * a - b * b) / (a * a)\n val n = (a - b) / (a + b)\n val nPow2 = n * n\n val nPow3 = n * n * n\n\n val f = 1.0\n val lat0 = 0.0\n val lon0 = (zone * 6 - 3) * PI / 180.0\n val n0 = 0.0\n val e0 = zone * 1e6 + 500000.0\n\n val dLon = lon - lon0\n val dLat = lat - lat0\n val pLat = lat + lat0\n\n val sinLat = sin(lat)\n val sinLatPow2 = sinLat * sinLat\n val cosLat = cos(lat)\n val cosLatPow3 = cosLat * cosLat * cosLat\n val cosLatPow5 = cosLat * cosLat * cosLat * cosLat * cosLat\n val tanLat = tan(lat)\n val tanLatPow2 = tanLat * tanLat\n val tanLatPow4 = tanLatPow2 * tanLatPow2\n\n val v = a * f * (1.0 - e2 * sinLatPow2).pow(-0.5)\n val p = a * f * (1.0 - e2) * (1 - e2 * sinLatPow2).pow(-1.5)\n val n2 = v / p - 1.0\n val m1 = (1.0 + n + 5.0 / 4.0 * nPow2 + 5.0 / 4.0 * nPow3) * dLat\n val m2 = (3.0 * n + 3.0 * nPow2 + 21.0 / 8.0 * nPow3) * sin(dLat) * cos(pLat)\n val m3 = (15.0 / 8.0 * nPow2 + 15.0 / 8.0 * nPow3) * sin(2.0 * dLat) * cos(2 * pLat)\n val m4 = 35.0 / 24.0 * nPow3 * sin(3 * dLat) * cos(3.0 * pLat)\n val m = b * f * (m1 - m2 + m3 - m4)\n val i = m + n0\n val ii = v / 2.0 * sinLat * cosLat\n val iii = v / 24.0 * sinLat * cosLatPow3 * (5.0 - tanLatPow2 + 9.0 * n2)\n val iiia = v / 720.0 * sinLat * cosLatPow5 * (61.0 - 58.0 * tanLatPow2 + tanLatPow4)\n val iv = v * cosLat\n val V = v / 6.0 * cosLatPow3 * (v / p - tanLatPow2)\n val VI = v / 120.0 * cosLatPow5 * (5.0 - 18.0 * tanLatPow2 + tanLatPow4 + 14 * n2 - 58 * tanLatPow2 * n2)\n\n easting = e0 + iv * dLon + V * dLon * dLon * dLon + VI * dLon * dLon * dLon * dLon * dLon\n northing = i + ii * dLon * dLon + iii * dLon * dLon * dLon * dLon + iiia * dLon * dLon * dLon * dLon * dLon * dLon\n\n return NO_ERROR\n }\n\n fun convertGKToGeodetic(easting: Double, northing: Double): Int {\n val zone = (easting / 1e6).toInt()\n val l0 = (6 * (if (zone <= 30) zone else zone - 60) - 3) * PI / 180.0\n val x = northing\n val y = easting - (zone * 1e6 + 500000.0)\n val beta = x / 6367558.497\n val cosBeta = cos(beta)\n val cos2beta = cosBeta * cosBeta\n val bx = ((2382 * cos2beta + 293609) * cos2beta + 50221747) * sin(beta) * cos(beta) * 1e-10 + beta\n val cosBx = cos(bx)\n val cos2Bx = cosBx * cosBx\n val sinBx = sin(bx)\n val sin2Bx = sinBx * sinBx\n val a22 = (0.003369263 * cos2Bx + 0.5) * sinBx * cosBx\n val a24 = ((0.0056154 - 0.0000151 * cos2Bx) * cos2Bx + 0.1616128) * cos2Bx + 0.25\n val a26 = ((0.00389 * cos2Bx + 0.04310) * cos2Bx - 0.00168) * cos2Bx + 0.125\n val a28 = ((0.013 * cos2Bx + 0.008) * cos2Bx - 0.031) * cos2Bx + 0.078\n val b13 = (1 / 6.0 - 0.00112309 * cos2Bx) * cos2Bx - 1 / 3.0\n val b15 = ((0.008783 - 0.000112 * cos2Bx) * cos2Bx - 1 / 6.0) * cos2Bx + 0.2\n val b17 = (1 / 6.0 - 0.0361 * cos2Bx) * cos2Bx - 0.1429\n val b19 = ((0.064 - 0.004 * cos2Bx) * cos2Bx - 1 / 6.0) * cos2Bx + 1 / 9.0\n val nx = ((0.605 * sin2Bx + 107.155) * sin2Bx + 21346.142) * sin2Bx + ellipsoid.semiMajorAxis\n val z = y / (nx * cosBx)\n\n latitude = bx + (((a28 * z * z - a26) * z * z + a24) * z * z - 1) * z * z * a22\n longitude = l0 + ((((b19 * z * z + b17) * z * z + b15) * z * z + b13) * z * z + 1) * z\n\n return NO_ERROR\n }\n\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Ellipsoid\nimport kotlin.jvm.JvmStatic\n\ndata class HelmertParameters(\n // Linear transformation elements, in metres\n val dX: Double,\n val dY: Double,\n val dZ: Double,\n\n // Angular transformation elements, in arc-seconds\n val omegaX: Double,\n val omegaY: Double,\n val omegaZ: Double,\n\n // Scale differential\n val m: Double,\n\n // Ellipsoid\n val fromEllipsoid: Ellipsoid,\n val toEllipsoid: Ellipsoid\n) {\n companion object {\n @JvmStatic val UCS2000_WGS84 = HelmertParameters(\n 24.3234, -121.3708, -75.8275,\n 0.0, 0.0, 0.0,\n -1.74e-9, Ellipsoid.Krasovsky, Ellipsoid.WGS84\n )\n @JvmStatic val WGS84_UCS2000 = HelmertParameters(\n -24.3234, 121.3708, 75.8275,\n 0.0, 0.0, 0.0,\n 1.74e-9, Ellipsoid.WGS84, Ellipsoid.Krasovsky\n )\n @JvmStatic val SK42_WGS84 = HelmertParameters(\n 23.92, -141.27, -80.9,\n 0.0, 0.0, 0.0,\n 0.0, Ellipsoid.Krasovsky, Ellipsoid.WGS84\n )\n @JvmStatic val WGS84_SK42 = HelmertParameters(\n -23.92, 141.27, 80.9,\n 0.0, 0.0, 0.0,\n 0.0, Ellipsoid.WGS84, Ellipsoid.Krasovsky\n )\n }\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.projection.Wgs84Projection\n\nobject HelmertTransformation {\n\n fun transform(position: Position, parameters: HelmertParameters, result: Position = Position()) =\n transform(position.latitude, position.longitude, position.altitude, parameters, result)\n\n fun transform(latitude: Angle, longitude: Angle, altitude: Double, parameters: HelmertParameters, result: Position = Position()): Position {\n val projection = Wgs84Projection()\n val fromGlobe = Globe(parameters.fromEllipsoid, projection)\n val toGlobe = Globe(parameters.toEllipsoid, projection)\n val fromCartesian = fromGlobe.geographicToCartesian(latitude, longitude, altitude, Vec3())\n val toCartesian = transform(fromCartesian, parameters)\n return toGlobe.cartesianToGeographic(toCartesian.x, toCartesian.y, toCartesian.z, result)\n }\n\n fun transform(point: Vec3, parameters: HelmertParameters, result: Vec3 = Vec3()) =\n transform(point.x, point.y, point.z, parameters, result)\n\n fun transform(x: Double, y: Double, z: Double, parameters: HelmertParameters, result: Vec3 = Vec3()) = result.set(\n x + -parameters.omegaZ * z + parameters.m * x + parameters.omegaX * y + parameters.dY,\n y + parameters.omegaY * z + -parameters.omegaX * x + parameters.m * y + parameters.dZ,\n z + parameters.m * z + parameters.omegaZ * x + -parameters.omegaY * y + parameters.dX\n )\n\n}","package earth.worldwind.geom.coords\n\nenum class Hemisphere { N, S; }","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds an immutable MGRS coordinate string along with\r\n * the corresponding latitude and longitude.\r\n */\r\nclass MGRSCoord private constructor(val latitude: Angle, val longitude: Angle, private val MGRSString: String) {\r\n companion object {\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the maximum precision of five digits (one meter).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle) = fromLatLon(latitude, longitude, 5)\r\n\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the given precision or number of digits (1 to 5).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @param precision the number of digits used for easting and northing (1 to 5).\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle, precision: Int): MGRSCoord {\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertGeodeticToMGRS(latitude.inRadians, longitude.inRadians, precision)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(latitude, longitude, converter.mgrsString)\r\n }\r\n\r\n /**\r\n * Create a MGRS coordinate from a standard MGRS coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * Valid examples:
\r\n * 32TLP5626635418
\r\n * 32 T LP 56266 35418
\r\n * 11S KU 528 111
\r\n *\r\n * @param MGRSString the MGRS coordinate text string.\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the [MGRSString] is empty,\r\n * the [Globe] is null, or the conversion to geodetic coordinates fails (invalid coordinate string).\r\n */\r\n @JvmStatic\r\n fun fromString(MGRSString: String): MGRSCoord {\r\n var str = MGRSString\r\n str = str.uppercase().replace(\" \", \"\")\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertMGRSToGeodetic(str)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(converter.latitude.radians, converter.longitude.radians, str)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = MGRSString\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.util.format.format\r\nimport kotlin.math.PI\r\nimport kotlin.math.floor\r\nimport kotlin.math.pow\r\n\r\n/*\r\n * Converter used to translate MGRS coordinate strings to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans mgrs.c and mgrs.h code. Contains routines to convert from Geodetic to MGRS and\r\n * the other direction.\r\n */\r\ninternal class MGRSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val STRING_ERROR = 0x0004\r\n const val PRECISION_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0040\r\n const val NORTHING_ERROR = 0x0080\r\n const val HEMISPHERE_ERROR = 0x0200\r\n const val LAT_WARNING = 0x0400\r\n const val UTM_ERROR = 0x1000\r\n const val UPS_ERROR = 0x2000\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val MAX_PRECISION = 5\r\n private const val MIN_UTM_LAT = -80 * PI / 180.0 // -80 degrees in radians\r\n private const val MAX_UTM_LAT = 84 * PI / 180.0 // 84 degrees in radians\r\n private const val DEG_TO_RAD = 0.017453292519943295 // PI/180\r\n private const val RAD_TO_DEG = 57.29577951308232 // 180/PI\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n private const val TWO_MIL = 2000000.0\r\n private const val ONE_HT = 100000.0\r\n private const val CLARKE_1866 = \"CC\"\r\n private const val CLARKE_1880 = \"CD\"\r\n private const val BESSEL_1841 = \"BR\"\r\n private const val BESSEL_1841_NAMIBIA = \"BN\"\r\n private const val LETTER_A = 0 /* ARRAY INDEX FOR LETTER A */\r\n private const val LETTER_B = 1 /* ARRAY INDEX FOR LETTER B */\r\n private const val LETTER_C = 2 /* ARRAY INDEX FOR LETTER C */\r\n private const val LETTER_D = 3 /* ARRAY INDEX FOR LETTER D */\r\n private const val LETTER_E = 4 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_F = 5 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_G = 6 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_H = 7 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_I = 8 /* ARRAY INDEX FOR LETTER I */\r\n private const val LETTER_J = 9 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_K = 10 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_L = 11 /* ARRAY INDEX FOR LETTER L */\r\n private const val LETTER_M = 12 /* ARRAY INDEX FOR LETTER M */\r\n private const val LETTER_N = 13 /* ARRAY INDEX FOR LETTER N */\r\n private const val LETTER_O = 14 /* ARRAY INDEX FOR LETTER O */\r\n private const val LETTER_P = 15 /* ARRAY INDEX FOR LETTER P */\r\n private const val LETTER_Q = 16 /* ARRAY INDEX FOR LETTER Q */\r\n private const val LETTER_R = 17 /* ARRAY INDEX FOR LETTER R */\r\n private const val LETTER_S = 18 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_T = 19 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_U = 20 /* ARRAY INDEX FOR LETTER U */\r\n private const val LETTER_V = 21 /* ARRAY INDEX FOR LETTER V */\r\n private const val LETTER_W = 22 /* ARRAY INDEX FOR LETTER W */\r\n private const val LETTER_X = 23 /* ARRAY INDEX FOR LETTER X */\r\n private const val LETTER_Y = 24 /* ARRAY INDEX FOR LETTER Y */\r\n private const val LETTER_Z = 25 /* ARRAY INDEX FOR LETTER Z */\r\n private const val MGRS_LETTERS = 3 /* NUMBER OF LETTERS IN MGRS */\r\n private const val alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\r\n\r\n // UPS Constants are in the following order:\r\n // letter representing latitude band\r\n // 2nd letter range - high number\r\n // 2nd letter range - low number\r\n // 3rd letter range - high number (UPS)\r\n // False easting based on 2nd letter\r\n // False northing based on 3rd letter\r\n private val upsConstants = arrayOf(\r\n intArrayOf(LETTER_A, LETTER_J, LETTER_Z, LETTER_Z, 800000, 800000),\r\n intArrayOf(LETTER_B, LETTER_A, LETTER_R, LETTER_Z, 2000000, 800000),\r\n intArrayOf(LETTER_Y, LETTER_J, LETTER_Z, LETTER_P, 800000, 1300000),\r\n intArrayOf(LETTER_Z, LETTER_A, LETTER_J, LETTER_P, 2000000, 1300000)\r\n )\r\n\r\n // Latitude Band Constants are in the following order:\r\n // letter representing latitude band\r\n // minimum northing for latitude band\r\n // upper latitude for latitude band\r\n // lower latitude for latitude band\r\n private val latitudeBandConstants = arrayOf(\r\n doubleArrayOf(LETTER_C.toDouble(), 1100000.0, -72.0, -80.5, 0.0),\r\n doubleArrayOf(LETTER_D.toDouble(), 2000000.0, -64.0, -72.0, 2000000.0),\r\n doubleArrayOf(LETTER_E.toDouble(), 2800000.0, -56.0, -64.0, 2000000.0),\r\n doubleArrayOf(LETTER_F.toDouble(), 3700000.0, -48.0, -56.0, 2000000.0),\r\n doubleArrayOf(LETTER_G.toDouble(), 4600000.0, -40.0, -48.0, 4000000.0),\r\n doubleArrayOf(LETTER_H.toDouble(), 5500000.0, -32.0, -40.0, 4000000.0),\r\n doubleArrayOf(LETTER_J.toDouble(), 6400000.0, -24.0, -32.0, 6000000.0),\r\n doubleArrayOf(LETTER_K.toDouble(), 7300000.0, -16.0, -24.0, 6000000.0),\r\n doubleArrayOf(LETTER_L.toDouble(), 8200000.0, -8.0, -16.0, 8000000.0),\r\n doubleArrayOf(LETTER_M.toDouble(), 9100000.0, 0.0, -8.0, 8000000.0),\r\n doubleArrayOf(LETTER_N.toDouble(), 0.0, 8.0, 0.0, 0.0),\r\n doubleArrayOf(LETTER_P.toDouble(), 800000.0, 16.0, 8.0, 0.0),\r\n doubleArrayOf(LETTER_Q.toDouble(), 1700000.0, 24.0, 16.0, 0.0),\r\n doubleArrayOf(LETTER_R.toDouble(), 2600000.0, 32.0, 24.0, 2000000.0),\r\n doubleArrayOf(LETTER_S.toDouble(), 3500000.0, 40.0, 32.0, 2000000.0),\r\n doubleArrayOf(LETTER_T.toDouble(), 4400000.0, 48.0, 40.0, 4000000.0),\r\n doubleArrayOf(LETTER_U.toDouble(), 5300000.0, 56.0, 48.0, 4000000.0),\r\n doubleArrayOf(LETTER_V.toDouble(), 6200000.0, 64.0, 56.0, 6000000.0),\r\n doubleArrayOf(LETTER_W.toDouble(), 7000000.0, 72.0, 64.0, 6000000.0),\r\n doubleArrayOf(LETTER_X.toDouble(), 7900000.0, 84.5, 72.0, 6000000.0)\r\n )\r\n }\r\n\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n var mgrsString = \"\"\r\n private set\r\n private var ltr2LowValue = 0\r\n private var ltr2HighValue = 0 // this is only used for doing MGRS to xxx conversions.\r\n private var falseNorthing = 0.0\r\n private var lastLetter = 0\r\n private var lastError = NO_ERROR\r\n private var north = 0.0\r\n private var south = 0.0\r\n private var minNorthing = 0.0\r\n private var northingOffset = 0.0\r\n private val mgrsEllipsoidCode = \"WE\"\r\n\r\n private class MGRSComponents(\r\n val zone: Int, val latitudeBand: Int, val squareLetter1: Int, val squareLetter2: Int,\r\n val easting: Double, val northing: Double, val precision: Int\r\n ) {\r\n override fun toString() = \"MGRS: \" + zone + \" \" + alphabet[latitudeBand] + \" \" +\r\n alphabet[squareLetter1] + alphabet[squareLetter2] + \" \" +\r\n easting + \" \" + northing + \" \" + \"(\" + precision + \")\"\r\n }\r\n\r\n /**\r\n * The function ConvertMGRSToGeodetic converts an MGRS coordinate string to Geodetic (latitude and longitude)\r\n * coordinates according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param MGRSString MGRS coordinate string.\r\n *\r\n * @return the error code.\r\n */\r\n fun convertMGRSToGeodetic(MGRSString: String): Int {\r\n latitude = 0.0\r\n longitude = 0.0\r\n val mgrs = breakMGRSString(MGRSString) ?: return lastError\r\n var errorCode = NO_ERROR\r\n if (mgrs.zone != 0) {\r\n val utm = convertMGRSToUTM(MGRSString)\r\n if (utm != null) {\r\n latitude = utm.latitude.inRadians\r\n longitude = utm.longitude.inRadians\r\n } else errorCode = UTM_ERROR\r\n } else {\r\n val ups = convertMGRSToUPS(MGRSString)\r\n if (ups != null) {\r\n latitude = ups.latitude.inRadians\r\n longitude = ups.longitude.inRadians\r\n } else errorCode = UPS_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Break_MGRS_String breaks down an MGRS coordinate string into its component parts. Updates\r\n * last_error.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [MGRSComponents] or null.\r\n */\r\n private fun breakMGRSString(MGRSString: String): MGRSComponents? {\r\n var str = MGRSString\r\n var i = 0\r\n var errorCode = NO_ERROR\r\n var zone = 0\r\n val letters = IntArray(3)\r\n var easting = 0L\r\n var northing = 0L\r\n var precision = 0\r\n str = str.uppercase().replace(\"\\\\s\", \"\")\r\n var j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n var numDigits = i - j\r\n if (numDigits <= 2) {\r\n if (numDigits > 0) {\r\n /* get zone */\r\n zone = str.substring(j, i).toInt()\r\n if (zone < 1 || zone > 60) errorCode = errorCode or STRING_ERROR\r\n }\r\n }\r\n j = i\r\n while (i < str.length && str[i].isLetter()) i++\r\n val numLetters = i - j\r\n if (numLetters == 3) {\r\n /* get letters */\r\n letters[0] = alphabet.indexOf(str[j].uppercaseChar())\r\n if (letters[0] == LETTER_I || letters[0] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[1] = alphabet.indexOf(str[j + 1].uppercaseChar())\r\n if (letters[1] == LETTER_I || letters[1] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[2] = alphabet.indexOf(str[j + 2].uppercaseChar())\r\n if (letters[2] == LETTER_I || letters[2] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n } else errorCode = errorCode or STRING_ERROR\r\n j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n numDigits = i - j\r\n if (numDigits <= 10 && numDigits % 2 == 0) {\r\n /* get easting, northing and precision */\r\n /* get easting & northing */\r\n val n = numDigits / 2\r\n precision = n\r\n if (n > 0) {\r\n easting = str.substring(j, j + n).toLong()\r\n northing = str.substring(j + n, j + n + n).toLong()\r\n val multiplier = 10.0.pow(5 - n).toLong()\r\n easting *= multiplier\r\n northing *= multiplier\r\n } else {\r\n easting = 0\r\n northing = 0\r\n }\r\n } else errorCode = errorCode or STRING_ERROR\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR) MGRSComponents(\r\n zone, letters[0], letters[1], letters[2],\r\n easting.toDouble(), northing.toDouble(), precision\r\n ) else null\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Band_Min_Northing receives a latitude band letter and uses the Latitude_Band_Table to\r\n * determine the minimum northing for that latitude band letter. Updates min_northing.\r\n *\r\n * @param letter Latitude band letter.\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeBandMinNorthing(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n minNorthing = latitudeBandConstants[letter - 2][1]\r\n northingOffset = latitudeBandConstants[letter - 2][4]\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n minNorthing = latitudeBandConstants[letter - 3][1]\r\n northingOffset = latitudeBandConstants[letter - 3][4]\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n minNorthing = latitudeBandConstants[letter - 4][1]\r\n northingOffset = latitudeBandConstants[letter - 4][4]\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Range receives a latitude band letter and uses the Latitude_Band_Table to determine the\r\n * latitude band boundaries for that latitude band letter. Updates north and south.\r\n *\r\n * @param letter the Latitude band letter\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeRange(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n north = latitudeBandConstants[letter - 2][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 2][3] * DEG_TO_RAD\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n north = latitudeBandConstants[letter - 3][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 3][3] * DEG_TO_RAD\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n north = latitudeBandConstants[letter - 4][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 4][3] * DEG_TO_RAD\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function convertMGRSToUTM converts an MGRS coordinate string to UTM projection (zone, hemisphere, easting and\r\n * northing) coordinates according to the current ellipsoid parameters. Updates last_error if any errors occurred.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [UTMCoord] or null.\r\n */\r\n private fun convertMGRSToUTM(MGRSString: String): UTMCoord? {\r\n var errorCode = NO_ERROR\r\n var utm: UTMCoord? = null\r\n val mgrs = breakMGRSString(MGRSString)\r\n if (mgrs == null) errorCode = errorCode or STRING_ERROR else {\r\n if (mgrs.latitudeBand == LETTER_X && (mgrs.zone == 32 || mgrs.zone == 34 || mgrs.zone == 36))\r\n errorCode = errorCode or STRING_ERROR\r\n else {\r\n val hemisphere = if (mgrs.latitudeBand < LETTER_N) Hemisphere.S else Hemisphere.N\r\n getGridValues(mgrs.zone)\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter2 > LETTER_V) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n var gridNorthing = mgrs.squareLetter2 * ONE_HT\r\n var gridEasting = (mgrs.squareLetter1 - ltr2LowValue + 1) * ONE_HT\r\n if (ltr2LowValue == LETTER_J && mgrs.squareLetter1 > LETTER_O) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n errorCode = getLatitudeBandMinNorthing(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing -= falseNorthing\r\n if (gridNorthing < 0.0) gridNorthing += TWO_MIL\r\n gridNorthing += northingOffset\r\n if (gridNorthing < minNorthing) gridNorthing += TWO_MIL\r\n val easting = gridEasting + mgrs.easting\r\n val northing = gridNorthing + mgrs.northing\r\n try {\r\n utm = UTMCoord.fromUTM(mgrs.zone, hemisphere, easting, northing)\r\n latitude = utm.latitude.inRadians\r\n val divisor = 10.0.pow(mgrs.precision)\r\n errorCode = getLatitudeRange(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n if (!(south - DEG_TO_RAD / divisor <= latitude\r\n && latitude <= north + DEG_TO_RAD / divisor)\r\n ) errorCode = errorCode or LAT_WARNING\r\n }\r\n } catch (e: Exception) {\r\n errorCode = UTM_ERROR\r\n }\r\n }\r\n }\r\n }\r\n }\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR || errorCode == LAT_WARNING) utm else null\r\n }\r\n\r\n /**\r\n * The function convertGeodeticToMGRS converts Geodetic (latitude and longitude) coordinates to an MGRS coordinate\r\n * string, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned by\r\n * the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radian\r\n * @param precision Precision level of MGRS string\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToMGRS(latitude: Double, longitude: Double, precision: Int): Int {\r\n mgrsString = \"\"\r\n var errorCode = NO_ERROR\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = LAT_ERROR\r\n if (longitude < -PI || longitude > 2 * PI) errorCode = LON_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n errorCode = if (latitude < MIN_UTM_LAT || latitude > MAX_UTM_LAT) {\r\n try {\r\n val ups = UPSCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUPSToMGRS(ups.hemisphere, ups.easting, ups.northing, precision)\r\n } catch (e: Exception) {\r\n UPS_ERROR\r\n }\r\n } else {\r\n try {\r\n val utm = UTMCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUTMToMGRS(utm.zone, latitude, utm.easting, utm.northing, precision)\r\n } catch (e: Exception) {\r\n UTM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_MGRS converts UPS (hemisphere, easting, and northing) coordinates to an MGRS\r\n * coordinate string according to the current ellipsoid parameters. If any errors occur, the error code(s) are\r\n * returned by the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n * @param precision precision level of MGRS string\r\n *\r\n * @return error value\r\n */\r\n private fun convertUPSToMGRS(hemisphere: Hemisphere, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* northing used to derive 3rd letter of MGRS */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (east < MIN_EAST_NORTH || east > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (north < MIN_EAST_NORTH || north > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = errorCode or PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n if (Hemisphere.N == hemisphere) {\r\n if (east >= TWO_MIL) letters[0] = LETTER_Z else letters[0] = LETTER_Y\r\n val index = letters[0] - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n if (east >= TWO_MIL) letters[0] = LETTER_B else letters[0] = LETTER_A\r\n ltr2LowValue = upsConstants[letters[0]][1]\r\n falseEasting = upsConstants[letters[0]][4].toDouble()\r\n falseNorthing = upsConstants[letters[0]][5].toDouble()\r\n }\r\n gridNorthing = north\r\n gridNorthing -= falseNorthing\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n gridEasting -= falseEasting\r\n letters[1] = ltr2LowValue + (gridEasting / ONE_HT).toInt()\r\n if (east < TWO_MIL) {\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n if (letters[1] > LETTER_U) letters[1] = letters[1] + 2\r\n } else {\r\n if (letters[1] > LETTER_C) letters[1] = letters[1] + 2\r\n if (letters[1] > LETTER_H) letters[1] = letters[1] + 1\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n }\r\n makeMGRSString(0, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function UTM_To_MGRS calculates an MGRS coordinate string based on the zone, latitude, easting and northing.\r\n *\r\n * @param zone Zone number\r\n * @param latitude Latitude in radians\r\n * @param easting Easting\r\n * @param northing Northing\r\n * @param precision Precision\r\n *\r\n * @return error code\r\n */\r\n private fun convertUTMToMGRS(zone: Int, latitude: Double, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n var gridEasting: Double /* Easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* Northing used to derive 3rd letter of MGRS */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n\r\n /* Round easting and northing values */\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n getGridValues(zone)\r\n val errorCode = getLatitudeLetter(latitude)\r\n letters[0] = lastLetter\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = north\r\n if (gridNorthing == 1e7) gridNorthing -= 1.0\r\n while (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n gridNorthing += falseNorthing\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n if (letters[0] == LETTER_V && zone == 31 && gridEasting == 500000.0) gridEasting -= 1.0 /* SUBTRACT 1 METER */\r\n letters[1] = ltr2LowValue + ((gridEasting / ONE_HT).toInt() - 1)\r\n if (ltr2LowValue == LETTER_J && letters[1] > LETTER_N) letters[1] = letters[1] + 1\r\n makeMGRSString(zone, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Grid_Values sets the letter range used for the 2nd letter in the MGRS coordinate string, based\r\n * on the set number of the utm zone. It also sets the false northing using a value of A for the second letter of\r\n * the grid square, based on the grid pattern and set number of the utm zone.\r\n *
\r\n * Key values that are set in this function include: ltr2_low_value, ltr2_high_value, and false_northing.\r\n *\r\n * @param zone Zone number\r\n */\r\n private fun getGridValues(zone: Int) {\r\n var setNumber = zone % 6 /* Set number (1-6) based on UTM zone number */\r\n if (setNumber == 0) setNumber = 6\r\n val aaPattern = if (mgrsEllipsoidCode.compareTo(CLARKE_1866) == 0\r\n || mgrsEllipsoidCode.compareTo(CLARKE_1880) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841_NAMIBIA) == 0\r\n ) 0 else 1 /* Pattern based on ellipsoid code */\r\n if (setNumber == 1 || setNumber == 4) {\r\n ltr2LowValue = LETTER_A\r\n ltr2HighValue = LETTER_H\r\n } else if (setNumber == 2 || setNumber == 5) {\r\n ltr2LowValue = LETTER_J\r\n ltr2HighValue = LETTER_R\r\n } else if (setNumber == 3 || setNumber == 6) {\r\n ltr2LowValue = LETTER_S\r\n ltr2HighValue = LETTER_Z\r\n }\r\n\r\n /* False northing at A for second letter of grid square */\r\n falseNorthing = if (aaPattern == 1) {\r\n if (setNumber % 2 == 0) 500000.0\r\n else 0.0\r\n } else {\r\n if (setNumber % 2 == 0) 1500000.0\r\n else 1000000.00\r\n }\r\n }\r\n\r\n /**\r\n * The function receives a latitude value and uses the Latitude_Band_Table to determine the\r\n * latitude band letter for that latitude.\r\n *\r\n * @param latitude latitude to turn into code\r\n *\r\n * @return error code\r\n */\r\n private fun getLatitudeLetter(latitude: Double): Int {\r\n var errorCode = NO_ERROR\r\n val latDeg = latitude * RAD_TO_DEG\r\n if (latDeg >= 72 && latDeg < 84.5) lastLetter = LETTER_X\r\n else if (latDeg > -80.5 && latDeg < 72) {\r\n val temp = (latitude + 80.0 * DEG_TO_RAD) / (8.0 * DEG_TO_RAD) + 1.0e-12\r\n lastLetter = latitudeBandConstants[temp.toInt()][0].toInt()\r\n } else errorCode = errorCode or LAT_ERROR\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Round_MGRS rounds the input value to the nearest integer, using the standard engineering rule. The\r\n * rounded integer value is then returned.\r\n *\r\n * @param value Value to be rounded\r\n *\r\n * @return rounded double value\r\n */\r\n private fun roundMGRS(value: Double): Double {\r\n val floorValue = floor(value)\r\n val fraction = value - floorValue\r\n var intValue = floorValue.toLong()\r\n if (fraction > 0.5 || fraction == 0.5 && intValue % 2 == 1L) intValue++\r\n return intValue.toDouble()\r\n }\r\n\r\n /**\r\n * The function Make_MGRS_String constructs an MGRS string from its component parts.\r\n *\r\n * @param zone UTM Zone\r\n * @param letters MGRS coordinate string letters\r\n * @param easting Easting value\r\n * @param northing Northing value\r\n * @param precision Precision level of MGRS string\r\n */\r\n private fun makeMGRSString(zone: Int, letters: IntArray, easting: Double, northing: Double, precision: Int) {\r\n var east = easting\r\n var north = northing\r\n mgrsString = if (zone != 0) \"%02d\".format(zone) else \" \"\r\n for (j in 0..2) {\r\n if (letters[j] < 0 || letters[j] > 26) return\r\n mgrsString += alphabet[letters[j]]\r\n }\r\n val divisor = 10.0.pow(5 - precision)\r\n east %= 100000.0\r\n if (east >= 99999.5) east = 99999.0\r\n\r\n // Here we need to only use the number requesting in the precision\r\n val iEast = (east / divisor).toInt()\r\n var sEast = StringBuilder(iEast.toString())\r\n if (sEast.length > precision) sEast = StringBuilder(sEast.substring(0, precision - 1))\r\n else for (i in 0 until precision - sEast.length) sEast.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sEast\"\r\n north %= 100000.0\r\n if (north >= 99999.5) north = 99999.0\r\n val iNorth = (north / divisor).toInt()\r\n var sNorth = StringBuilder(iNorth.toString())\r\n if (sNorth.length > precision) sNorth = StringBuilder(sNorth.substring(0, precision - 1))\r\n else for (i in 0 until precision - sNorth.length) sNorth.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sNorth\"\r\n }\r\n\r\n /**\r\n * The function Convert_MGRS_To_UPS converts an MGRS coordinate string to UPS (hemisphere, easting, and northing)\r\n * coordinates, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param MGRS the MGRS coordinate string.\r\n *\r\n * @return a corresponding [UPSCoord] instance.\r\n */\r\n private fun convertMGRSToUPS(MGRS: String): UPSCoord? {\r\n val ltr2HighValue: Int /* 2nd letter range - high number */\r\n val ltr3HighValue: Int /* 3rd letter range - high number (UPS) */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting for 100,000 meter grid square */\r\n var gridNorthing: Double /* northing for 100,000 meter grid square */\r\n var errorCode = NO_ERROR\r\n val hemisphere: Hemisphere\r\n var easting: Double\r\n var northing: Double\r\n val mgrs = breakMGRSString(MGRS)\r\n if (mgrs != null) {\r\n if (mgrs.zone > 0) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n easting = mgrs.easting\r\n northing = mgrs.northing\r\n if (mgrs.latitudeBand >= LETTER_Y) {\r\n hemisphere = Hemisphere.N\r\n val index = mgrs.latitudeBand - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n ltr2HighValue = upsConstants[index][2]\r\n ltr3HighValue = upsConstants[index][3]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n hemisphere = Hemisphere.S\r\n ltr2LowValue = upsConstants[mgrs.latitudeBand][1]\r\n ltr2HighValue = upsConstants[mgrs.latitudeBand][2]\r\n ltr3HighValue = upsConstants[mgrs.latitudeBand][3]\r\n falseEasting = upsConstants[mgrs.latitudeBand][4].toDouble()\r\n falseNorthing = upsConstants[mgrs.latitudeBand][5].toDouble()\r\n }\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter1 == LETTER_D || mgrs.squareLetter1 == LETTER_E ||\r\n mgrs.squareLetter1 == LETTER_M || mgrs.squareLetter1 == LETTER_N ||\r\n mgrs.squareLetter1 == LETTER_V || mgrs.squareLetter1 == LETTER_W ||\r\n mgrs.squareLetter2 > ltr3HighValue) errorCode = STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = mgrs.squareLetter2 * ONE_HT + falseNorthing\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n gridEasting = (mgrs.squareLetter1 - ltr2LowValue) * ONE_HT + falseEasting\r\n if (ltr2LowValue != LETTER_A) {\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n if (mgrs.squareLetter1 > LETTER_U) gridEasting -= 200000.0\r\n } else {\r\n if (mgrs.squareLetter1 > LETTER_C) gridEasting -= 200000.0\r\n if (mgrs.squareLetter1 > LETTER_I) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n }\r\n easting += gridEasting\r\n northing += gridNorthing\r\n return UPSCoord.fromUPS(hemisphere, easting, northing)\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans polarst.c and polarst.h code.\r\n */\r\ninternal class PolarCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val ORIGIN_LAT_ERROR = 0x0004\r\n const val ORIGIN_LON_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0010\r\n const val NORTHING_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val RADIUS_ERROR = 0x0100\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val PI_Over_4 = PI / 4.0\r\n private const val TWO_PI = 2.0 * PI\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private var es = 0.08181919084262188000 /* Eccentricity of ellipsoid */\r\n private var esOver2 = .040909595421311 /* es / 2.0 */\r\n private var southernHemisphere = 0.0 /* Flag variable */\r\n private var mc = 1.0\r\n private var tc = 1.0\r\n private var e4 = 1.0033565552493\r\n private var amc = 6378137.0 /* Polar_a * mc */\r\n private var twoA = 12756274.0 /* 2.0 * Polar_a */\r\n\r\n /* Polar Stereographic projection Parameters */\r\n private var originLat = PI * 90.0 / 180.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 12713601.0\r\n private var deltaNorthing = 12713601.0\r\n\r\n var easting = 0.0\r\n private set\r\n var northing = 0.0\r\n private set\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function setPolarStereographicParameters receives the ellipsoid parameters and Polar Stereographic projection\r\n * parameters as inputs, and sets the corresponding state variables. If any errors occur, error code(s) are\r\n * returned by the function, otherwise POLAR_NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude of true scale, in radians\r\n * @param longitude Longitude down from pole, in radians\r\n * @param easting Easting (X) at center of projection, in meters\r\n * @param northing Northing (Y) at center of projection, in meters\r\n * @return error code\r\n */\r\n fun setPolarStereographicParameters(\r\n a: Double, f: Double, latitude: Double, longitude: Double, easting: Double, northing: Double\r\n ): Int {\r\n var lon = longitude\r\n val invF = 1 / f\r\n val epsilon = 1.0e-2\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* Origin Latitude out of range */\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* Origin Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or ORIGIN_LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n twoA = 2.0 * this.a\r\n this.f = f\r\n if (lon > PI) lon -= TWO_PI\r\n if (latitude < 0) {\r\n southernHemisphere = 1.0\r\n originLat = -latitude\r\n originLong = -lon\r\n } else {\r\n southernHemisphere = 0.0\r\n originLat = latitude\r\n originLong = lon\r\n }\r\n falseEasting = easting\r\n falseNorthing = northing\r\n val es2 = 2 * this.f - this.f * this.f\r\n es = sqrt(es2)\r\n esOver2 = es / 2.0\r\n if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) {\r\n val sLat = sin(originLat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val cLat = cos(originLat)\r\n mc = cLat / sqrt(1.0 - esSin * esSin)\r\n amc = this.a * mc\r\n tc = tan(PI_Over_4 - originLat / 2.0) / powEs\r\n } else {\r\n val onePlusEs = 1.0 + es\r\n val oneMinusEs = 1.0 - es\r\n e4 = sqrt(onePlusEs.pow(onePlusEs) * oneMinusEs.pow(oneMinusEs))\r\n }\r\n }\r\n\r\n /* Calculate Radius */\r\n convertGeodeticToPolarStereographic(0.0, originLong)\r\n deltaNorthing = this.northing * 2 // Increased range for accepted easting and northing values\r\n deltaNorthing = abs(deltaNorthing) + epsilon\r\n deltaEasting = deltaNorthing\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Polar_Stereographic converts geodetic coordinates (latitude and longitude) to\r\n * Polar Stereographic coordinates (easting and northing), according to the current ellipsoid and Polar\r\n * Stereographic projection parameters. If any errors occur, error code(s) are returned by the function, otherwise\r\n * POLAR_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude, in radians\r\n * @param longitude Longitude, in radians\r\n * @return error code\r\n */\r\n fun convertGeodeticToPolarStereographic(latitude: Double, longitude: Double): Int {\r\n var lat = latitude\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (lat < -PI_OVER_2 || lat > PI_OVER_2) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat < 0 && southernHemisphere == 0.0) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat > 0 && southernHemisphere == 1.0) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (abs(abs(lat) - PI_OVER_2) < 1.0e-10) {\r\n easting = 0.0\r\n northing = 0.0\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n lon *= -1.0\r\n lat *= -1.0\r\n }\r\n var dLam = lon - originLong\r\n if (dLam > PI) dLam -= TWO_PI\r\n if (dLam < -PI) dLam += TWO_PI\r\n val sLat = sin(lat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val t = tan(PI_Over_4 - lat / 2.0) / powEs\r\n val rho = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) amc * t / tc else twoA * t / e4\r\n if (southernHemisphere != 0.0) {\r\n easting = -(rho * sin(dLam) - falseEasting)\r\n northing = rho * cos(dLam) + falseNorthing\r\n } else easting = rho * sin(dLam) + falseEasting\r\n northing = -rho * cos(dLam) + falseNorthing\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Polar_Stereographic_To_Geodetic converts Polar\r\n * Stereographic coordinates (easting and northing) to geodetic\r\n * coordinates (latitude and longitude) according to the current ellipsoid\r\n * and Polar Stereographic projection Parameters. If any errors occur, the\r\n * code(s) are returned by the function, otherwise POLAR_NO_ERROR\r\n * is returned.\r\n *\r\n * @param Easting Easting (X), in meters\r\n * @param Northing Northing (Y), in meters\r\n * @return error code\r\n */\r\n fun convertPolarStereographicToGeodetic(Easting: Double, Northing: Double): Int {\r\n var dy = 0.0\r\n var dx = 0.0\r\n var rho = 0.0\r\n var tempPhi = 0.0\r\n var errorCode = NO_ERROR\r\n val minEasting = falseEasting - deltaEasting\r\n val maxEasting = falseEasting + deltaEasting\r\n val minNorthing = falseNorthing - deltaNorthing\r\n val maxNorthing = falseNorthing + deltaNorthing\r\n /* Easting out of range */\r\n if (Easting > maxEasting || Easting < minEasting) errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (Northing > maxNorthing || Northing < minNorthing) errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n dy = Northing - falseNorthing\r\n dx = Easting - falseEasting\r\n /* Radius of point with origin of false easting, false northing */\r\n rho = sqrt(dx * dx + dy * dy)\r\n val deltaRadius = sqrt(deltaEasting * deltaEasting + deltaNorthing * deltaNorthing)\r\n /* Point is outside of projection area */\r\n if (rho > deltaRadius) errorCode = errorCode or RADIUS_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (dy == 0.0 && dx == 0.0) {\r\n latitude = PI_OVER_2\r\n longitude = originLong\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n dy *= -1.0\r\n dx *= -1.0\r\n }\r\n val t = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) rho * tc / amc else rho * e4 / twoA\r\n var phi = PI_OVER_2 - 2.0 * atan(t)\r\n while (abs(phi - tempPhi) > 1.0e-10) {\r\n tempPhi = phi\r\n val sinPhi = sin(phi)\r\n val esSin = es * sinPhi\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n phi = PI_OVER_2 - 2.0 * atan(t * powEs)\r\n }\r\n latitude = phi\r\n longitude = originLong + atan2(dx, -dy)\r\n if (longitude > PI) longitude -= TWO_PI\r\n else if (longitude < -PI) longitude += TWO_PI\r\n /* force distorted values to 90, -90 degrees */\r\n if (latitude > PI_OVER_2) latitude = PI_OVER_2\r\n else if (latitude < -PI_OVER_2) latitude = -PI_OVER_2\r\n /* force distorted values to 180, -180 degrees */\r\n if (longitude > PI) longitude = PI else if (longitude < -PI) longitude = -PI\r\n }\r\n if (southernHemisphere != 0.0) {\r\n latitude *= -1.0\r\n longitude *= -1.0\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds a set of Transverse Mercator coordinates along with the\r\n * corresponding latitude and longitude.\r\n */\r\nclass TMCoord private constructor(val latitude: Angle, val longitude: Angle, val easting: Double, val northing: Double) {\r\n companion object {\r\n /**\r\n * Create a set of Transverse Mercator coordinates from a pair of latitude and longitude,\r\n * for the given [Globe] and projection parameters.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n * @param aOrNull semi-major ellipsoid radius. If this and argument f are non-null and globe is null, will use the specified a and f.\r\n * @param fOrNull ellipsoid flattening. If this and argument a are non-null and globe is null, will use the specified a and f.\r\n * @param originLatitude the origin latitude.\r\n * @param centralMeridian the central meridian longitude.\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * or the conversion to TM coordinates fails. If the globe is null conversion will default\r\n * to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(\r\n latitude: Angle, longitude: Angle, aOrNull: Double?, fOrNull: Double?,\r\n originLatitude: Angle, centralMeridian: Angle, falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n var a = aOrNull\r\n var f = fOrNull\r\n val converter = TMCoordConverter()\r\n if (a == null || f == null) {\r\n a = converter.a\r\n f = converter.f\r\n }\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertGeodeticToTransverseMercator(latitude.inRadians, longitude.inRadians)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(latitude, longitude, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of Transverse Mercator coordinates for the given [Globe],\r\n * easting, northing and projection parameters.\r\n *\r\n * @param easting the easting distance value in meters.\r\n * @param northing the northing distance value in meters.\r\n * @param originLatitude the origin latitude [Angle].\r\n * @param centralMeridian the central meridian longitude [Angle].\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * @throws IllegalArgumentException if the conversion to geodetic coordinates fails.\r\n * If the globe is null conversion will default to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromTM(\r\n easting: Double, northing: Double, originLatitude: Angle, centralMeridian: Angle,\r\n falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n val converter = TMCoordConverter()\r\n val a = converter.a\r\n val f = converter.f\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertTransverseMercatorToGeodetic(easting, northing)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(converter.latitude.radians, converter.longitude.radians, easting, northing)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/*\r\n * Converter used to translate Transverse Mercator coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans code tranmerc.c and tranmerc.h\r\n */\r\ninternal class TMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ORIGIN_LAT_ERROR = 0x0010\r\n const val CENT_MER_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val SCALE_FACTOR_ERROR = 0x0100\r\n const val LON_WARNING = 0x0200\r\n private const val MAX_LAT = PI * 89.99 / 180.0 /* 90 degrees in radians */\r\n private const val MAX_DELTA_LONG = PI * 90 / 180.0 /* 90 degrees in radians */\r\n private const val MIN_SCALE_FACTOR = 0.3\r\n private const val MAX_SCALE_FACTOR = 3.0\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid i meters */\r\n private set\r\n var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private set\r\n private var es = 0.0066943799901413800 /* Eccentricity (0.08181919084262188000) squared */\r\n private var ebs = 0.0067394967565869 /* Second Eccentricity squared */\r\n\r\n /* Transverse_Mercator projection Parameters */\r\n private var originLat = 0.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var scaleFactor = 1.0 /* Scale factor */\r\n\r\n /* Isometric to geodetic latitude parameters, default to WGS 84 */\r\n private var ap = 6367449.1458008\r\n private var bp = 16038.508696861\r\n private var cp = 16.832613334334\r\n private var dp = 0.021984404273757\r\n private var ep = 3.1148371319283e-005\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 40000000.0\r\n private var deltaNorthing = 40000000.0\r\n\r\n /** Easting/X at the center of the projection */\r\n var easting = 0.0\r\n private set\r\n /** Northing/Y at the center of the projection */\r\n var northing = 0.0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians. */\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function receives the ellipsoid parameters and Transverse Mercator\r\n * projection parameters as inputs, and sets the corresponding state variables. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude in radians at the origin of the projection\r\n * @param centralMeridian Longitude in radians at the center of the projection\r\n * @param easting Easting/X at the center of the projection\r\n * @param northing Northing/Y at the center of the projection\r\n * @param scaleFactor Projection scale factor\r\n *\r\n * @return error code\r\n */\r\n fun setTransverseMercatorParameters(\r\n a: Double, f: Double, latitude: Double, centralMeridian: Double, easting: Double, northing: Double, scaleFactor: Double\r\n ): Int {\r\n var cm = centralMeridian\r\n val invF = 1 / f\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* origin latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* origin longitude out of range */\r\n if (cm < -PI || cm > 2 * PI) errorCode = errorCode or CENT_MER_ERROR\r\n if (scaleFactor < MIN_SCALE_FACTOR || scaleFactor > MAX_SCALE_FACTOR) {\r\n errorCode = errorCode or SCALE_FACTOR_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n this.f = f\r\n originLat = 0.0\r\n originLong = 0.0\r\n falseNorthing = 0.0\r\n falseEasting = 0.0\r\n this.scaleFactor = 1.0\r\n\r\n /* Eccentricity Squared */\r\n es = 2 * this.f - this.f * this.f\r\n /* Second Eccentricity Squared */\r\n ebs = 1 / (1 - es) - 1\r\n val b = this.a * (1 - this.f)\r\n /*True meridional constants */\r\n val tn = (this.a - b) / (this.a + b)\r\n val tn2 = tn * tn\r\n val tn3 = tn2 * tn\r\n val tn4 = tn3 * tn\r\n val tn5 = tn4 * tn\r\n ap = this.a * (1e0 - tn + 5e0 * (tn2 - tn3) / 4e0 + 81e0 * (tn4 - tn5) / 64e0)\r\n bp = 3e0 * this.a * (tn - tn2 + (7e0 * (tn3 - tn4) / 8e0) + 55e0 * tn5 / 64e0) / 2e0\r\n cp = 15e0 * this.a * (tn2 - tn3 + 3e0 * (tn4 - tn5) / 4e0) / 16.0\r\n dp = 35e0 * this.a * (tn3 - tn4 + 11e0 * tn5 / 16e0) / 48e0\r\n ep = 315e0 * this.a * (tn4 - tn5) / 512e0\r\n convertGeodeticToTransverseMercator(MAX_LAT, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n deltaNorthing = this.northing\r\n convertGeodeticToTransverseMercator(0.0, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n originLat = latitude\r\n if (cm > PI) cm -= 2 * PI\r\n originLong = cm\r\n falseNorthing = northing\r\n falseEasting = easting\r\n this.scaleFactor = scaleFactor\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Transverse_Mercator converts geodetic (latitude and longitude) coordinates to\r\n * Transverse Mercator projection (easting and northing) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection coordinates. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToTransverseMercator(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n if (lon > PI) lon -= 2 * PI\r\n if (lon < originLong - MAX_DELTA_LONG || lon > originLong + MAX_DELTA_LONG) {\r\n val tempLong = if (lon < 0) lon + 2 * PI else lon\r\n val tempOrigin = if (originLong < 0) originLong + 2 * PI else originLong\r\n if (tempLong < tempOrigin - MAX_DELTA_LONG || tempLong > tempOrigin + MAX_DELTA_LONG)\r\n errorCode = errorCode or LON_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n /*\r\n * Delta Longitude\r\n */\r\n var dLam = lon - originLong\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian */\r\n if (abs(dLam) > 9.0 * PI / 180) errorCode = errorCode or LON_WARNING\r\n if (dLam > PI) dLam -= 2 * PI\r\n if (dLam < -PI) dLam += 2 * PI\r\n if (abs(dLam) < 2e-10) dLam = 0.0\r\n val s = sin(latitude)\r\n val c = cos(latitude)\r\n val c2 = c * c\r\n val c3 = c2 * c\r\n val c5 = c3 * c2\r\n val c7 = c5 * c2\r\n val t = tan(latitude)\r\n val tan2 = t * t\r\n val tan3 = tan2 * t\r\n val tan4 = tan3 * t\r\n val tan5 = tan4 * t\r\n val tan6 = tan5 * t\r\n val eta = ebs * c2\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n\r\n /* radius of curvature in prime vertical */\r\n val sn = a / sqrt(1 - es * sin(latitude).pow(2))\r\n\r\n /* True Meridional Distances */\r\n val tmd = (ap * latitude\r\n - bp * sin(2.0 * latitude)\r\n + cp * sin(4.0 * latitude)\r\n - dp * sin(6.0 * latitude)\r\n + ep * sin(8.0 * latitude))\r\n\r\n /* Origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* northing */\r\n val t1 = (tmd - tmdO) * scaleFactor\r\n val t2 = sn * s * c * scaleFactor / 2e0\r\n val t3 = sn * s * c3 * scaleFactor * (5e0 - tan2 + 9e0 * eta + 4e0 * eta2) / 24e0\r\n val t4 = sn * s * c5 * scaleFactor * (61e0 - 58e0 * tan2 + tan4 + 270e0 * eta - 330e0 * tan2 * eta + 445e0 * eta2 + 324e0 * eta3 - 680e0 * tan2 * eta2 + 88e0 * eta4 - 600e0 * tan2 * eta3 - 192e0 * tan2 * eta4) / 720e0\r\n val t5 = sn * s * c7 * scaleFactor * (1385e0 - 3111e0 * tan2 + 543e0 * tan4 - tan6) / 40320e0\r\n northing = falseNorthing + t1 + dLam.pow(2e0) * t2 + dLam.pow(4e0) * t3 + dLam.pow(6e0) * t4 + dLam.pow(8e0) * t5\r\n\r\n /* Easting */\r\n val t6 = sn * c * scaleFactor\r\n val t7 = sn * c3 * scaleFactor * (1e0 - tan2 + eta) / 6e0\r\n val t8 = sn * c5 * scaleFactor * ((5e0 - 18e0 * tan2 + tan4 + 14e0 * eta) - 58e0 * tan2 * eta + 13e0 * eta2 + 4e0 * eta3 - 64e0 * tan2 * eta2 - 24e0 * tan2 * eta3) / 120e0\r\n val t9 = sn * c7 * scaleFactor * (61e0 - 479e0 * tan2 + 179e0 * tan4 - tan6) / 5040e0\r\n easting = falseEasting + dLam * t6 + dLam.pow(3e0) * t7 + dLam.pow(5e0) * t8 + dLam.pow(7e0) * t9\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Transverse_Mercator_To_Geodetic converts Transverse Mercator projection (easting and\r\n * northing) coordinates to geodetic (latitude and longitude) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection parameters. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param easting Easting/X in meters\r\n * @param northing Northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertTransverseMercatorToGeodetic(easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n /* Easting out of range */\r\n if (easting < falseEasting - deltaEasting || easting > falseEasting + deltaEasting)\r\n errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (northing < falseNorthing - deltaNorthing || northing > falseNorthing + deltaNorthing)\r\n errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n /* True Meridional Distances for latitude of origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* Origin */\r\n val tmd = tmdO + (northing - falseNorthing) / scaleFactor\r\n\r\n /* First Estimate */\r\n var sr = a * (1e0 - es) / sqrt(1e0 - es * sin(0e0).pow(2)).pow(3)\r\n var ftphi = tmd / sr\r\n for (i in 0..4) {\r\n val t10 = (ap * ftphi\r\n - bp * sin(2.0 * ftphi)\r\n + cp * sin(4.0 * ftphi)\r\n - dp * sin(6.0 * ftphi)\r\n + ep * sin(8.0 * ftphi))\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n ftphi += (tmd - t10) / sr\r\n }\r\n\r\n /* Radius of Curvature in the meridian */\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n\r\n /* Radius of Curvature in the meridian */\r\n val sn = a / sqrt(1e0 - es * sin(ftphi).pow(2))\r\n\r\n /* Sine Cosine terms */\r\n val c = cos(ftphi)\r\n\r\n /* Tangent Value */\r\n val t = tan(ftphi)\r\n val tan2 = t * t\r\n val tan4 = tan2 * tan2\r\n val eta = ebs * c.pow(2)\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n var de = easting - falseEasting\r\n if (abs(de) < 0.0001) de = 0.0\r\n\r\n /* Latitude */\r\n val t10 = t / (2e0 * sr * sn * scaleFactor.pow(2))\r\n val t11 = t * (5e0 + 3e0 * tan2 + eta - 4e0 * eta.pow(2) - 9e0 * tan2 * eta) / (24e0 * sr * sn.pow(3) * scaleFactor.pow(4))\r\n val t12 = (t * ((61e0 + 90e0 * tan2 + 46e0 * eta + 45e0 * tan4 - 252e0 * tan2 * eta - 3e0 * eta2 + 100e0\r\n * eta3) - 66e0 * tan2 * eta2 - (90e0 * tan4\r\n * eta) + 88e0 * eta4 + 225e0 * tan4 * eta2 + 84e0 * tan2 * eta3 - 192e0 * tan2 * eta4)\r\n / (720e0 * sr * sn.pow(5) * scaleFactor.pow(6)))\r\n val t13 = t * (1385e0 + 3633e0 * tan2 + 4095e0 * tan4 + (1575e0 * t.pow(6))) / (40320e0 * sr * sn.pow(7) * scaleFactor.pow(8))\r\n latitude = (ftphi - de.pow(2) * t10 + de.pow(4) * t11 - de.pow(6) * t12 + de.pow(8) * t13)\r\n val t14 = 1e0 / (sn * c * scaleFactor)\r\n val t15 = (1e0 + 2e0 * tan2 + eta) / (6e0 * sn.pow(3) * c * scaleFactor.pow(3))\r\n val t16 = ((5e0 + 6e0 * eta + 28e0 * tan2 - 3e0 * eta2 + 8e0 * tan2 * eta + 24e0 * tan4 - 4e0\r\n * eta3) + 4e0 * tan2 * eta2 + (24e0 * tan2 * eta3)) / (120e0 * sn.pow(5) * c * scaleFactor.pow(5))\r\n val t17 = (61e0 + 662e0 * tan2 + 1320e0 * tan4 + (720e0 * t.pow(6))) / (5040e0 * sn.pow(7) * c * scaleFactor.pow(7))\r\n\r\n /* Difference in Longitude */\r\n val dLam = de * t14 - de.pow(3) * t15 + de.pow(5) * t16 - de.pow(7) * t17\r\n\r\n /* Longitude */\r\n longitude = originLong + dLam\r\n if (abs(latitude) > 90.0 * PI / 180.0) errorCode = errorCode or NORTHING_ERROR\r\n if (longitude > PI) {\r\n longitude -= 2 * PI\r\n if (abs(longitude) > PI) errorCode = errorCode or EASTING_ERROR\r\n }\r\n if (abs(dLam) > 9.0 * PI / 180 * cos(latitude)) {\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian at the equator */\r\n /* and decreases to 0 degrees at the poles */\r\n /* As you move towards the poles, distortion will become more significant */\r\n errorCode = errorCode or LON_WARNING\r\n }\r\n if (latitude > 1.0e10) errorCode = errorCode or LON_WARNING\r\n }\r\n return errorCode\r\n }\r\n}\r\n","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This immutable class holds a set of UPS coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UPSCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UPS coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertGeodeticToUPS(latitude.inRadians, longitude.inRadians)\r\n require(err == UPSCoordConverter.NO_ERROR) { \"UPS Conversion Error\" }\r\n return UPSCoord(latitude, longitude, converter.hemisphere, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of UPS coordinates for the given [Globe].\r\n *\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertUPSToGeodetic(hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UPSCoord(\r\n converter.latitude.radians, converter.longitude.radians, hemisphere, easting, northing\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = hemisphere.toString() + \" \" + easting + \"E\" + \" \" + northing + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans ups.c and ups.h code\r\n */\r\ninternal class UPSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val HEMISPHERE_ERROR = 0x0004\r\n const val EASTING_ERROR = 0x0008\r\n const val NORTHING_ERROR = 0x0010\r\n private const val MAX_LAT = PI * 90 / 180.0 // 90 degrees in radians\r\n\r\n // Min and max latitude values accepted\r\n private const val MIN_NORTH_LAT = 72 * PI / 180.0 // 83.5\r\n private const val MIN_SOUTH_LAT = -72 * PI / 180.0 // -79.5\r\n private const val MAX_ORIGIN_LAT = 81.114528 * PI / 180.0\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n }\r\n\r\n private var originLatitude = MAX_ORIGIN_LAT /*set default = North hemisphere */\r\n private val originLongitude = 0.0\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val falseEasting = 2000000.0\r\n private val falseNorthing = 2000000.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** easting/X in meters */\r\n var easting = 0.0\r\n private set\r\n /** northing/Y in meters */\r\n var northing = 0.0\r\n private set\r\n /** latitude in radians.*/\r\n var latitude = 0.0\r\n private set\r\n /** longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n private val polarConverter = PolarCoordConverter()\r\n\r\n /**\r\n * The function convertGeodeticToUPS converts geodetic (latitude and longitude) coordinates to UPS (hemisphere,\r\n * easting, and northing) coordinates, according to the current ellipsoid parameters. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude in radians\r\n * @param longitude longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUPS(latitude: Double, longitude: Double): Int {\r\n /* latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) return LAT_ERROR\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) return LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) return LAT_ERROR\r\n /* slam out of range */\r\n if (longitude < -PI || longitude > 2 * PI) return LON_ERROR\r\n if (latitude < 0) {\r\n originLatitude = -MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.S\r\n } else {\r\n originLatitude = MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.N\r\n }\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, 0.0, 0.0)\r\n polarConverter.convertGeodeticToPolarStereographic(latitude, longitude)\r\n easting = falseEasting + polarConverter.easting\r\n northing = falseNorthing + if (Hemisphere.S == hemisphere) - polarConverter.northing else polarConverter.northing\r\n return NO_ERROR\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_Geodetic converts UPS (hemisphere, easting, and northing) coordinates to geodetic\r\n * (latitude and longitude) coordinates according to the current ellipsoid parameters. If any errors occur, the\r\n * error code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertUPSToGeodetic(hemisphere: Hemisphere?, easting: Double, northing: Double): Int{\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (easting < MIN_EAST_NORTH || easting > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (northing < MIN_EAST_NORTH || northing > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (Hemisphere.N == hemisphere) originLatitude = MAX_ORIGIN_LAT\r\n if (Hemisphere.S == hemisphere) originLatitude = -MAX_ORIGIN_LAT\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, falseEasting, falseNorthing)\r\n polarConverter.convertPolarStereographicToGeodetic(easting, northing)\r\n latitude = polarConverter.latitude\r\n longitude = polarConverter.longitude\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) errorCode = errorCode or LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) errorCode = errorCode or LAT_ERROR\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\nimport kotlin.math.roundToInt\r\n\r\n/**\r\n * This immutable class holds a set of UTM coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UTMCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val zone: Int, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UTM coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertGeodeticToUTM(latitude.inRadians, longitude.inRadians)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n latitude, longitude, converter.zone, converter.hemisphere, converter.easting, converter.northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a set of UTM coordinates for the given [Globe].\r\n *\r\n * @param zone the UTM zone - 1 to 60.\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUTM(\r\n zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double\r\n ): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertUTMToGeodetic(zone, hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n converter.latitude.radians, converter.longitude.radians, zone, hemisphere, easting, northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a UTM coordinate from a standard UTM coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * @param UTMString the UTM coordinate text string.\r\n * @return the corresponding [UTMCoord].\r\n * @throws IllegalArgumentException if the [UTMString] is empty, or the conversion to geodetic coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromString(UTMString: String): UTMCoord {\r\n val separated = UTMString.trim { it <= ' ' }.replace(\" +\".toRegex(), \" \")\r\n .split(\" \").toTypedArray()\r\n return fromUTM(\r\n separated[0].toInt(),\r\n if (separated[1] == \"S\") Hemisphere.S else Hemisphere.N, //Hemisphere.valueOf(separated[1]),\r\n separated[2].substring(0, separated[2].length - 1).toDouble(),\r\n separated[3].substring(0, separated[3].length - 1).toDouble()\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = zone.toString() + \" \" + hemisphere + \" \" + easting.roundToInt() + \"E\" + \" \" + northing.roundToInt() + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/*\r\n * Converter used to translate UTM coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans utm.c and utm.h\r\n */\r\ninternal class UTMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ZONE_ERROR = 0x0010\r\n const val HEMISPHERE_ERROR = 0x0020\r\n const val ZONE_OVERRIDE_ERROR = 0x0040\r\n const val TM_ERROR = 0x0200\r\n private const val MIN_LAT = -82 * PI / 180.0 /* -82 degrees in radians */\r\n private const val MAX_LAT = 86 * PI / 180.0 /* 86 degrees in radians */\r\n private const val MIN_EASTING = 100000\r\n private const val MAX_EASTING = 900000\r\n private const val MIN_NORTHING = 0\r\n private const val MAX_NORTHING = 10000000\r\n }\r\n\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val override = 0 /* Zone override flag */\r\n private var centralMeridian = 0.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** Easting (X) in meters */\r\n var easting = 0.0\r\n private set\r\n /** Northing (Y) in meters */\r\n var northing = 0.0\r\n private set\r\n /** UTM zone */\r\n var zone = 0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function Convert_Geodetic_To_UTM converts geodetic (latitude and longitude) coordinates to UTM projection\r\n * (zone, hemisphere, easting and northing) coordinates according to the current ellipsoid and UTM zone override\r\n * parameters. If any errors occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is\r\n * returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUTM(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > 2 * PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (lon < 0) lon += 2 * PI + 1.0e-10\r\n val latDegrees = (latitude * 180.0 / PI).toInt()\r\n val lonDegrees = (lon * 180.0 / PI).toInt()\r\n var tempZone = (if (lon < PI) 31 + lon * 180.0 / PI / 6.0 else lon * 180.0 / PI / 6.0 - 29).toInt()\r\n if (tempZone > 60) tempZone = 1\r\n /* UTM special cases */\r\n if (latDegrees in 56..63 && lonDegrees > -1 && lonDegrees < 3) tempZone = 31\r\n if (latDegrees in 56..63 && lonDegrees > 2 && lonDegrees < 12) tempZone = 32\r\n if (latDegrees > 71 && lonDegrees > -1 && lonDegrees < 9) tempZone = 31\r\n if (latDegrees > 71 && lonDegrees > 8 && lonDegrees < 21) tempZone = 33\r\n if (latDegrees > 71 && lonDegrees > 20 && lonDegrees < 33) tempZone = 35\r\n if (latDegrees > 71 && lonDegrees > 32 && lonDegrees < 42) tempZone = 37\r\n if (override != 0) {\r\n if (tempZone == 1 && override == 60) tempZone = override\r\n else if (tempZone == 60 && override == 1) tempZone = override\r\n else if (tempZone - 1 <= override && override <= tempZone + 1) tempZone = override\r\n else errorCode = ZONE_OVERRIDE_ERROR\r\n }\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (tempZone >= 31) (6 * tempZone - 183) * PI / 180.0 else (6 * tempZone + 177) * PI / 180.0\r\n zone = tempZone\r\n if (latitude < 0) {\r\n falseNorthing = 10000000.0\r\n hemisphere = Hemisphere.S\r\n } else hemisphere = Hemisphere.N\r\n try {\r\n val tm = TMCoord.fromLatLon(\r\n latitude.radians, lon.radians, a, f, originLatitude.radians,\r\n centralMeridian.radians, falseEasting, falseNorthing, scale\r\n )\r\n easting = tm.easting\r\n northing = tm.northing\r\n if (easting < MIN_EASTING || easting > MAX_EASTING) errorCode = EASTING_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UTM_To_Geodetic converts UTM projection (zone, hemisphere, easting and northing) coordinates\r\n * to geodetic(latitude and longitude) coordinates, according to the current ellipsoid parameters. If any errors\r\n * occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param zone UTM zone.\r\n * @param hemisphere The coordinate hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting (X) in meters.\r\n * @param northing Northing (Y) in meters.\r\n *\r\n * @return error code.\r\n */\r\n fun convertUTMToGeodetic(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n if (zone < 1 || zone > 60) errorCode = errorCode or ZONE_ERROR\r\n if (hemisphere != Hemisphere.S && hemisphere != Hemisphere.N) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (zone >= 31) (6 * zone - 183) * PI / 180.0 else (6 * zone + 177) * PI / 180.0\r\n if (hemisphere == Hemisphere.S) falseNorthing = 10000000.0\r\n try {\r\n val tm = TMCoord.fromTM(\r\n easting, northing,\r\n originLatitude.radians, centralMeridian.radians,\r\n falseEasting, falseNorthing, scale\r\n )\r\n latitude = tm.latitude.inRadians\r\n longitude = tm.longitude.inRadians\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.gesture\n\n/**\n * Gesture state indicates a GestureRecognizer's current state.\n * Accepted values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN], [CHANGED], [CANCELLED], and [ENDED].\n */\nenum class GestureState {\n /**\n * POSSIBLE gesture recognizer state. Gesture recognizers in this state are\n * idle when there is no input event to evaluate, or are evaluating input events to determine whether or not to\n * transition into another state.\n */\n POSSIBLE,\n /**\n * FAILED gesture recognizer state. Gesture recognizers transition to this\n * state from the POSSIBLE state when the gesture cannot be recognized given the current input.\n */\n FAILED,\n /**\n * RECOGNIZED gesture recognizer state. Discrete gesture recognizers\n * transition to this state from the POSSIBLE state when the gesture is recognized.\n */\n RECOGNIZED,\n /**\n * BEGAN gesture recognizer state. Continuous gesture recognizers transition\n * to this state from the POSSIBLE state when the gesture is first recognized.\n */\n BEGAN,\n /**\n * CHANGED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from the BEGAN state or the CHANGED state, whenever an input event indicates a change in\n * the gesture.\n */\n CHANGED,\n /**\n * CANCELLED gesture recognizer state. Continuous gesture recognizers may\n * transition to this state from the BEGAN state or the CHANGED state when the touch events are cancelled.\n */\n CANCELLED,\n /**\n * ENDED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from either the BEGAN state or the CHANGED state when the current input no longer\n * represents the gesture.\n */\n ENDED;\n}","package earth.worldwind.globe\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.elevation.ElevationModel\nimport earth.worldwind.globe.projection.GeographicProjection\nimport earth.worldwind.globe.projection.Wgs84Projection\nimport kotlin.math.PI\nimport kotlin.math.sin\nimport kotlin.math.sqrt\n\n/**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models. Globe expresses its\n * ellipsoidal parameters and elevation values in meters.\n */\nopen class Globe(\n /**\n * The globe's reference ellipsoid defining the globe's equatorial radius and polar radius.\n */\n var ellipsoid: Ellipsoid = Ellipsoid.WGS84,\n /**\n * Indicates the geographic projection used by this globe. The projection specifies this globe's Cartesian\n * coordinate system.\n */\n var projection: GeographicProjection = Wgs84Projection()\n) {\n /**\n * Represents the elevations for an area, often but not necessarily the whole globe.\n */\n var elevationModel = ElevationModel()\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the equator.\n */\n val equatorialRadius get() = ellipsoid.semiMajorAxis\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the poles.\n */\n val polarRadius get() = ellipsoid.semiMinorAxis\n /**\n * Indicates the eccentricity squared parameter of the globe's ellipsoid. This is equivalent to `2*f -\n * f*f`, where `f` is the ellipsoid's flattening parameter.\n */\n val eccentricitySquared get() = ellipsoid.eccentricitySquared\n /**\n * Indicates whether this is a 2D globe.\n */\n val is2D get() = projection.is2D\n /**\n * Indicates whether this projection is continuous with itself horizontally.\n */\n val isContinuous get() = projection.isContinuous\n /**\n * Indicates the geographic limits of this projection.\n */\n val projectionLimits get() = projection.projectionLimits\n /**\n * Current globe state.\n */\n val state get() = State(ellipsoid, projection.displayName)\n /**\n * The globe offset in 2D continuous projection. Center is the default for 3D.\n */\n var offset = Offset.Center\n set (value) {\n field = value\n // Calculate horizontal projection offset in meters\n offsetValue = when (value) {\n Offset.Center -> 0.0\n Offset.Right -> 2.0 * PI * equatorialRadius\n Offset.Left -> -2.0 * PI * equatorialRadius\n }\n }\n protected var offsetValue = 0.0\n\n /**\n * An offset to apply to this globe when translating between Geographic positions and Cartesian points.\n * Used during scrolling to position points appropriately.\n */\n enum class Offset { Center, Right, Left }\n\n /**\n * Used to compare states during rendering to determine whether globe-state dependent cached values must be updated.\n */\n data class State(private val ellipsoid: Ellipsoid, private val projectionName: String)\n\n /**\n * Indicates the radius in meters of the globe's ellipsoid at a specified location.\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return the radius in meters of the globe's ellipsoid at the specified location\n */\n @Suppress(\"UNUSED_PARAMETER\")\n fun getRadiusAt(latitude: Angle, longitude: Angle): Double {\n // The radius for an ellipsoidal globe is a function of its latitude. The following solution was derived by\n // observing that the length of the ellipsoidal point at the specified latitude and longitude indicates the\n // radius at that location. The formula for the length of the ellipsoidal point was then converted into the\n // simplified form below.\n val sinLat = sin(latitude.inRadians)\n val ec2 = ellipsoid.eccentricitySquared\n val rpm = ellipsoid.semiMajorAxis / sqrt(1 - ec2 * sinLat * sinLat)\n return rpm * sqrt(1 + (ec2 * ec2 - 2 * ec2) * sinLat * sinLat)\n }\n\n /**\n * Converts a geographic position to Cartesian coordinates. This globe's projection specifies the Cartesian\n * coordinate system.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(latitude: Angle, longitude: Angle, altitude: Double, result: Vec3) =\n projection.geographicToCartesian(this, latitude, longitude, altitude, offsetValue, result)\n\n fun geographicToCartesianNormal(latitude: Angle, longitude: Angle, result: Vec3) =\n projection.geographicToCartesianNormal(this, latitude, longitude, result)\n\n fun geographicToCartesianTransform(latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4) =\n projection.geographicToCartesianTransform(this, latitude, longitude, altitude, result)\n\n fun geographicToCartesianGrid(\n sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, result: FloatArray, rowOffset: Int = 0, rowStride: Int = 0\n ) = projection.geographicToCartesianGrid(\n this, sector, numLat, numLon, height, verticalExaggeration,\n origin, offsetValue, result, rowOffset, rowStride\n )\n\n fun geographicToCartesianBorder(\n sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3, result: FloatArray\n ) = projection.geographicToCartesianBorder(this, sector, numLat, numLon, height, origin, offsetValue, result)\n\n /**\n * Converts a Cartesian point to a geographic position. This globe's projection specifies the Cartesian coordinate\n * system.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's Y component\n * @param z the Cartesian point's Z component\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return the result argument, set to the computed geographic position\n */\n fun cartesianToGeographic(x: Double, y: Double, z: Double, result: Position) =\n projection.cartesianToGeographic(this, x, y, z, offsetValue, result).also {\n if (is2D) result.longitude = result.longitude.normalize180()\n }\n\n fun cartesianToLocalTransform(x: Double, y: Double, z: Double, result: Matrix4) =\n projection.cartesianToLocalTransform(this, x, y, z, result)\n\n /**\n * Indicates the distance to the globe's horizon from a specified height above the globe's ellipsoid. The result of\n * this method is undefined if the height is negative.\n *\n * @param height the viewer's height above the globe's ellipsoid in meters\n *\n * @return the horizon distance in meters\n */\n fun horizonDistance(height: Double) = if (height > 0.0) sqrt(height * (2 * ellipsoid.semiMajorAxis + height)) else 0.0\n\n /**\n * Computes the first intersection of this globe with a specified line. The line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *\n * @param line the line to intersect with this globe\n * @param result a pre-allocated [Vec3] in which to return the computed point\n *\n * @return true if the ray intersects the globe, otherwise false\n */\n fun intersect(line: Line, result: Vec3) = projection.intersect(this, line, result)\n\n /**\n * Determine terrain altitude in specified geographic point from elevation model\n *\n * @param latitude location latitude\n * @param longitude location longitude\n * @param retrieve retrieve the most detailed elevation data instead of using first available cached value\n *\n * @return Elevation in meters in specified location\n */\n fun getElevation(latitude: Angle, longitude: Angle, retrieve: Boolean = false) =\n elevationModel.getHeight(latitude, longitude, retrieve).toDouble()\n\n /**\n * Get absolute position with terrain elevation at specified coordinates\n *\n * @param latitude Specified latitude\n * @param longitude Specified longitude\n *\n * @return Absolute position with terrain elevation\n */\n fun getAbsolutePosition(latitude: Angle, longitude: Angle) =\n Position(latitude, longitude, getElevation(latitude, longitude, retrieve = true))\n\n /**\n * Get absolute position for specified position and specified altitude mode\n *\n * @param position Specified position\n * @param altitudeMode Specified altitude mode\n *\n * @return Absolute position for specified altitude mode\n */\n fun getAbsolutePosition(position: Position, altitudeMode: AltitudeMode) = when (altitudeMode) {\n AltitudeMode.CLAMP_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude)\n AltitudeMode.RELATIVE_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude).apply {\n altitude += position.altitude\n }\n else -> Position(position)\n }\n\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.elevation.coverage.ElevationCoverage\n\nopen class ElevationModel(): Iterable {\n protected val coverages = mutableListOf()\n val timestamp: Long get() {\n var maxTimestamp = 0L\n for (i in coverages.indices) {\n val timestamp = coverages[i].timestamp\n if (maxTimestamp < timestamp) maxTimestamp = timestamp\n }\n return maxTimestamp\n }\n val count get() = coverages.size\n\n constructor(model: ElevationModel): this() { addAllCoverages(model) }\n\n constructor(iterable: Iterable): this() { for (coverage in iterable) addCoverage(coverage) }\n\n fun invalidate() = coverages.forEach { coverage -> coverage.clear() }\n\n fun getCoverageNamed(name: String) = coverages.firstOrNull { coverage -> coverage.displayName == name }\n\n fun getCoverageWithProperty(key: Any, value: Any) = coverages.firstOrNull { coverage ->\n coverage.hasUserProperty(key) && coverage.getUserProperty(key) == value\n }\n\n fun addCoverage(coverage: ElevationCoverage) = !coverages.contains(coverage) && coverages.add(coverage)\n\n fun addAllCoverages(model: ElevationModel): Boolean {\n val thatList = model.coverages\n //coverages.ensureCapacity(thatList.size)\n var changed = false\n for (thatCoverage in thatList) changed = changed or addCoverage(thatCoverage)\n return changed\n }\n\n fun removeCoverage(coverage: ElevationCoverage) = coverages.remove(coverage)\n\n fun removeAllCoverages(model: ElevationModel) = coverages.removeAll(model.coverages)\n\n fun clearCoverages() = coverages.clear()\n\n override fun iterator() = coverages.iterator()\n\n fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float {\n // coverages composite from fine to coarse\n for (i in coverages.indices.reversed()) {\n val height = coverages[i].getHeight(latitude, longitude, retrieve)\n if (height != null) return height\n }\n return 0f\n }\n\n fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n // coverages composite from coarse to fine\n for (i in coverages.indices) coverages[i].getHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n\n fun getHeightLimits(sector: Sector, result: FloatArray) {\n // coverage order is irrelevant\n for (i in coverages.indices) coverages[i].getHeightLimits(sector, result)\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.LruMemoryCache\nimport kotlinx.datetime.Clock\n\nabstract class AbstractElevationCoverage: ElevationCoverage {\n final override val sector = Sector().setFullSphere() // Real data availability sector can be smaller than TMS sector\n override var displayName: String? = null\n override var isEnabled = true\n set(value) {\n field = value\n updateTimestamp()\n }\n override var timestamp = Clock.System.now().toEpochMilliseconds()\n protected set\n private var userProperties: MutableMap? = null\n private val heightCache = LruMemoryCache(50000)\n\n protected fun updateTimestamp() {\n timestamp = Clock.System.now().toEpochMilliseconds()\n heightCache.clear() // Invalidate cache if elevation coverage changed\n }\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n return if (isEnabled) {\n val key = 31 * latitude.inDegrees.hashCode() + longitude.inDegrees.hashCode()\n heightCache[key] ?: doGetHeight(latitude, longitude, retrieve)?.also {\n heightCache.put(key, it, 1)\n }\n } else null\n }\n\n override fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (isEnabled) doGetHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n\n override fun getHeightLimits(sector: Sector, result: FloatArray) {\n if (isEnabled) doGetHeightLimits(sector, result)\n }\n\n protected abstract fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float?\n\n protected abstract fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray)\n\n protected abstract fun doGetHeightLimits(sector: Sector, result: FloatArray)\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.util.*\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.format.format\nimport earth.worldwind.util.math.fract\nimport earth.worldwind.util.math.mod\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.time.Duration.Companion.seconds\n\nabstract class AbstractTiledElevationCoverage(\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n): AbstractElevationCoverage() {\n companion object {\n protected const val GET_HEIGHT_LIMIT_SAMPLES = 32\n }\n\n var tileMatrixSet = tileMatrixSet\n set(value) {\n field = value\n sector.copy(value.sector) // Use TMS sector as bounding sector by default\n clear()\n }\n var elevationSourceFactory = elevationSourceFactory\n set(value) {\n field = value\n clear()\n }\n /**\n * Unique identifier of the coverage type, defined by elevation source factory content type\n */\n val type get() = elevationSourceFactory.contentType\n /**\n * Controls how many concurrent tile requests are allowed for this coverage.\n */\n var retrievalQueueSize = 4\n /**\n * The list of elevation retrievals in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n protected var coverageCache = LruMemoryCache(1024 * 1024 * 64)\n protected var isRetrievalEnabled = false\n protected val absentResourceList = AbsentResourceList(3, 5.seconds)\n protected val mainScope = MainScope()\n\n init {\n sector.copy(tileMatrixSet.sector) // Use TMS sector as bounding sector by default\n log(INFO, \"Coverage cache initialized %.0f KB\".format(coverageCache.capacity / 1024.0))\n }\n\n /**\n * Setup custom coverage cache size according to device capabilities and user needs.\n */\n fun setupCoverageCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n coverageCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun clear() {\n mainScope.coroutineContext.cancelChildren() // Cancel all async jobs but keep scope reusable\n currentRetrievals.clear()\n coverageCache.clear()\n absentResourceList.clear()\n updateTimestamp()\n }\n\n override fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n if (!tileMatrixSet.sector.contains(latitude, longitude)) return null // no coverage in the specified location\n val targetIdx = tileMatrixSet.entries.size - 1 // retrieve height from last available matrix\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the last and the first matrix\n isRetrievalEnabled = retrieve && (idx == targetIdx || idx == 0)\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val row = floor((tileMatrix.sector.maxLatitude.inDegrees - latitude.inDegrees) / deltaLat).toInt()\n val col = floor((longitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n fetchTileArray(tileMatrix, row, col)?.let {\n val maxLat = tileMatrix.sector.maxLatitude.inDegrees - deltaLat * row\n val minLon = tileMatrix.sector.minLongitude.inDegrees + deltaLon * col\n val maxX = tileMatrix.tileWidth - 1\n val maxY = tileMatrix.tileHeight - 1\n val x = (maxX * (longitude.inDegrees - minLon) / deltaLon).toFloat()\n val y = (maxY * (maxLat - latitude.inDegrees) / deltaLat).toFloat()\n val x0 = floor(x).toInt().coerceIn(0, maxX)\n val x1 = (x0 + 1).coerceIn(0, maxX)\n val y0 = floor(y).toInt().coerceIn(0, maxY)\n val y1 = (y0 + 1).coerceIn(0, maxY)\n val x0y0 = it[x0 + y0 * tileMatrix.tileWidth]\n val x1y0 = it[x1 + y0 * tileMatrix.tileWidth]\n val x0y1 = it[x0 + y1 * tileMatrix.tileWidth]\n val x1y1 = it[x1 + y1 * tileMatrix.tileWidth]\n val xf = x - x0\n val yf = y - y0\n return (1 - xf) * (1 - yf) * x0y0 + xf * (1 - yf) * x1y0 + (1 - xf) * yf * x0y1 + xf * yf * x1y1\n }\n }\n return null // did not find a tile\n }\n\n override fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(gridSector)) return // no coverage in the specified sector\n val targetPixelSpan = gridSector.deltaLatitude.div(gridHeight)\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(gridSector, gridWidth, gridHeight, tileMatrix, tileBlock)) {\n readHeightGrid(gridSector, gridWidth, gridHeight, tileBlock, result)\n return\n }\n }\n }\n\n override fun doGetHeightLimits(sector: Sector, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(sector)) return // no coverage in the specified sector\n val targetPixelSpan = sector.deltaLatitude.div(GET_HEIGHT_LIMIT_SAMPLES)\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(sector, tileMatrix, tileBlock)) {\n scanHeightLimits(sector, tileBlock, result)\n return\n }\n }\n }\n\n protected open fun fetchTileBlock(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileMatrix: TileMatrix, result: TileBlock\n ): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n result.tileMatrix = tileMatrix\n result.clear()\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var uIdx = 0\n while (uIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (uIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n if (lon in matrixMinLon..matrixMaxLon) {\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n result.cols[col0] = 0\n result.cols[col1] = 0\n }\n uIdx++\n lon += deltaLon\n }\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var vIdx = 0\n while (vIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (vIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n if (lat in matrixMinLat..matrixMaxLat) {\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n result.rows[row0] = 0\n result.rows[row1] = 0\n }\n vIdx++\n lat += deltaLat\n }\n for (row in result.rows.keys) {\n for (col in result.cols.keys) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) result.putTileArray(row, col, tileArray) else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileBlock(sector: Sector, tileMatrix: TileMatrix, result: TileBlock): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val colMin = iMin / tileWidth\n val colMax = iMax / tileWidth\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n val rowMin = jMin / tileHeight\n val rowMax = jMax / tileHeight\n result.tileMatrix = tileMatrix\n result.clear()\n for (row in rowMin..rowMax) {\n for (col in colMin..colMax) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) {\n result.rows[row] = 0\n result.cols[col] = 0\n result.putTileArray(row, col, tileArray)\n } else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileArray(tileMatrix: TileMatrix, row: Int, column: Int): ShortArray? {\n val key = tileMatrix.tileKey(row, column)\n return coverageCache[key] ?: run {\n // Ignore retrieval of already requested or marked as absent tiles\n if (isRetrievalEnabled && currentRetrievals.size < retrievalQueueSize && !currentRetrievals.contains(key)\n && !absentResourceList.isResourceAbsent(key)) {\n currentRetrievals += key\n mainScope.launch { retrieveTileArray(key, tileMatrix, row, column) }\n }\n null\n }\n }\n\n protected abstract suspend fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int)\n\n protected fun retrievalSucceeded(key: Long, value: ShortArray) {\n coverageCache.put(key, value, value.size * 2)\n absentResourceList.unmarkResourceAbsent(key)\n currentRetrievals -= key\n updateTimestamp()\n WorldWind.requestRedraw()\n }\n\n protected fun retrievalFailed(key: Long) {\n absentResourceList.markResourceAbsent(key)\n currentRetrievals -= key\n }\n\n protected open fun readHeightGrid(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileBlock: TileBlock, result: FloatArray\n ) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileBlock.tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileBlock.tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n var rIdx = 0\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var hIdx = 0\n while (hIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (hIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val b = fract(v - 0.5).toFloat()\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var wIdx = 0\n while (wIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (wIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileBlock.tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val a = fract(u - 0.5).toFloat()\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n if (lat in matrixMinLat..matrixMaxLat && lon in matrixMinLon..matrixMaxLon) {\n val i0j0 = tileBlock.readTexel(row0, col0, i0 % tileWidth, j0 % tileHeight)\n val i1j0 = tileBlock.readTexel(row0, col1, i1 % tileWidth, j0 % tileHeight)\n val i0j1 = tileBlock.readTexel(row1, col0, i0 % tileWidth, j1 % tileHeight)\n val i1j1 = tileBlock.readTexel(row1, col1, i1 % tileWidth, j1 % tileHeight)\n result[rIdx] = (1 - a) * (1 - b) * i0j0 + a * (1 - b) * i1j0 + (1 - a) * b * i0j1 + a * b * i1j1\n }\n rIdx++\n wIdx++\n lon += deltaLon\n }\n hIdx++\n lat += deltaLat\n }\n }\n\n protected open fun scanHeightLimits(sector: Sector, tileBlock: TileBlock, result: FloatArray) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileBlock.tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n for (row in tileBlock.rows.keys) {\n val rowJMin = row * tileHeight\n val rowJMax = rowJMin + tileHeight - 1\n val j0 = jMin.coerceIn(rowJMin, rowJMax) % tileHeight\n val j1 = jMax.coerceIn(rowJMin, rowJMax) % tileHeight\n for (col in tileBlock.cols.keys) {\n val colIMin = col * tileWidth\n val colIMax = colIMin + tileWidth - 1\n val i0 = iMin.coerceIn(colIMin, colIMax) % tileWidth\n val i1 = iMax.coerceIn(colIMin, colIMax) % tileWidth\n tileBlock.getTileArray(row, col)?.let { tileArray ->\n // TODO how often do we read all of tileArray?\n for (j in j0..j1) for (i in i0..i1) {\n val pos = i + j * tileWidth\n val texel = tileArray[pos]\n if (result[0] > texel) result[0] = texel.toFloat()\n if (result[1] < texel) result[1] = texel.toFloat()\n }\n }\n }\n }\n }\n\n protected open fun assembleTilesList(sector: Sector, resolution: ClosedRange): List {\n val result = mutableListOf()\n val startIdx = tileMatrixSet.indexOfMatrixNearest(resolution.endInclusive)\n val endIdx = tileMatrixSet.indexOfMatrixNearest(resolution.start)\n for (idx in startIdx..endIdx) {\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val minRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.maxLatitude.inDegrees) / deltaLat).toInt()\n val maxRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.minLatitude.inDegrees) / deltaLat).toInt()\n val minCol = floor((sector.minLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n val maxCol = floor((sector.maxLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n for (row in minRow..maxRow) for (col in minCol..maxCol) result.add(Tile(tileMatrix, row, col))\n }\n return result\n }\n\n protected data class Tile(val tileMatrix: TileMatrix, val row: Int, val col: Int)\n\n protected open class TileBlock {\n lateinit var tileMatrix: TileMatrix\n val rows = mutableMapOf()\n val cols = mutableMapOf()\n private val arrays = mutableMapOf()\n private var texelRow = -1\n private var texelCol = -1\n private var texelArray: ShortArray? = null\n\n open fun clear() {\n rows.clear()\n cols.clear()\n arrays.clear()\n texelRow = -1\n texelCol = -1\n texelArray = null\n }\n\n fun putTileArray(row: Int, column: Int, array: ShortArray) {\n val key = tileMatrix.tileKey(row, column)\n arrays[key] = array\n }\n\n fun getTileArray(row: Int, column: Int): ShortArray? {\n if (texelRow != row || texelCol != column) {\n texelRow = row\n texelCol = column\n texelArray = arrays[tileMatrix.tileKey(row, column)]\n }\n return texelArray\n }\n\n fun readTexel(row: Int, column: Int, i: Int, j: Int) =\n getTileArray(row, column)?.get(i + j * tileMatrix.tileWidth) ?: 0\n }\n}",null,"package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.ogc.WmsElevationCoverage\n\n/**\n * Displays NASA's global elevation coverage at 30m (1 arc-second) resolution.\n * By default, BasicElevationCoverage is configured to retrieve elevation coverage from the WMS at\n * [&https://wms.worldwind.earth/elev](https://wms.worldwind.earth/elev?SERVICE=WMS&REQUEST=GetCapabilities).\n */\nclass BasicElevationCoverage : WmsElevationCoverage(\n \"https://wms.worldwind.earth/elev\", \"NASADEM\", \"application/bil16\",\n Sector().setFullSphere(), Angle.fromSeconds(1.0)\n)","package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.util.Logger\nimport kotlin.math.*\n\nopen class MercatorProjection : GeographicProjection {\n override val displayName = \"Mercator\"\n override val is2D = true\n override val isContinuous = true\n override val projectionLimits = fromDegrees(-78.0, -180.0, 156.0, 360.0)\n private val scratchVec = Vec3()\n\n override fun geographicToCartesian(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3\n ): Vec3 {\n val lat = latitude.coerceIn(projectionLimits.minLatitude, projectionLimits.maxLatitude)\n val lon = longitude.coerceIn(projectionLimits.minLongitude, projectionLimits.maxLongitude)\n\n // See \"Map Projections: A Working Manual\", page 44 for the source of the below formulas.\n val ecc = sqrt(globe.eccentricitySquared)\n val sinPhi = sin(lat.inRadians)\n val s = (1 + sinPhi) / (1 - sinPhi) * ((1 - ecc * sinPhi) / (1 + ecc * sinPhi)).pow(ecc)\n result.x = globe.equatorialRadius * lon.inRadians + offset\n result.y = 0.5 * globe.equatorialRadius * ln(s)\n result.z = altitude\n return result\n }\n\n override fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3 {\n return result.set(0.0, 0.0, 1.0)\n }\n\n override fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4 {\n val vec = geographicToCartesian(globe, latitude, longitude, altitude, 0.0, scratchVec)\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return cartesianToLocalTransform(globe, vec.x, vec.y, vec.z, result)\n }\n\n override fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n Logger.logMessage(\n Logger.ERROR, \"MercatorProjection\", \"geographicToCartesianGrid\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n require(height == null || height.size >= numLat * numLon) {\n Logger.logMessage(Logger.ERROR, \"MercatorProjection\", \"geographicToCartesianGrid\", \"missingArray\")\n }\n\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 1 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 1 else 1\n val minLatLimit = projectionLimits.minLatitude.inRadians\n val maxLatLimit = projectionLimits.maxLatitude.inRadians\n val minLonLimit = projectionLimits.minLongitude.inRadians\n val maxLonLimit = projectionLimits.maxLongitude.inRadians\n var elevIndex = 0\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian point\n // corresponding to each latitude and longitude.\n var rowIndex = rowOffset\n val stride = if (rowStride == 0) numLon * 3 else rowStride\n var lat = minLat\n for (latIndex in 0 until numLat) {\n if (latIndex == numLat - 1) lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val sinLat = sin(lat.coerceIn(minLatLimit, maxLatLimit))\n val s = (1 + sinLat) / (1 - sinLat) * ((1 - ecc * sinLat) / (1 + ecc * sinLat)).pow(ecc)\n val y = eqr * ln(s) * 0.5 - yOffset\n\n var lon = minLon\n var colIndex = rowIndex\n for (lonIndex in 0 until numLon) {\n if (lonIndex == numLon - 1) lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n result[colIndex++] = (eqr * lon.coerceIn(minLonLimit, maxLonLimit) - xOffset + offset).toFloat()\n result[colIndex++] = y.toFloat()\n result[colIndex++] = if (height != null) (height[elevIndex++] * verticalExaggeration - zOffset).toFloat() else 0f\n lon += deltaLon\n }\n rowIndex += stride\n lat += deltaLat\n }\n\n return result\n }\n\n override fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float,\n origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray {\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / (if (numLat > 1) numLat - 3 else 1)\n val deltaLon = (maxLon - minLon) / (if (numLon > 1) numLon - 3 else 1)\n val minLatLimit = projectionLimits.minLatitude.inRadians\n val maxLatLimit = projectionLimits.maxLatitude.inRadians\n val minLonLimit = projectionLimits.minLongitude.inRadians\n val maxLonLimit = projectionLimits.maxLongitude.inRadians\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian point\n // corresponding to each latitude and longitude.\n var resultIndex = 0\n var lat = minLat\n var lon = minLon\n for (latIndex in 0 until numLat) {\n when {\n latIndex < 2 -> lat = minLat // explicitly set the first lat to the min latitude to ensure alignment\n latIndex < numLat - 2 -> lat += deltaLat\n else -> lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n }\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val sinLat = sin(lat.coerceIn(minLatLimit, maxLatLimit))\n val s = ((1 + sinLat) / (1 - sinLat)) * ((1 - ecc * sinLat) / (1 + ecc * sinLat)).pow(ecc)\n val y = eqr * ln(s) * 0.5 - yOffset\n\n var lonIndex = 0\n while (lonIndex < numLon) {\n when {\n lonIndex < 2 -> lon = minLon\n lonIndex < numLon - 2 -> lon += deltaLon\n else -> lon = maxLon\n }\n result[resultIndex++] = (eqr * lon.coerceIn(minLonLimit, maxLonLimit) - xOffset + offset).toFloat()\n result[resultIndex++] = y.toFloat()\n result[resultIndex++] = height - zOffset.toFloat()\n if (lonIndex == 0 && latIndex != 0 && latIndex != numLat - 1) {\n val skip = numLon - 2\n lonIndex += skip\n resultIndex += skip * 3\n }\n lonIndex++\n }\n }\n\n return result\n }\n\n override fun cartesianToGeographic(\n globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position\n ): Position {\n // See \"Map Projections: A Working Manual\", pages 44-45 for the source of the below formulas.\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val t = exp(-y / globe.equatorialRadius) // eq (7-10)\n\n // Inverse projection requires converging series\n var phi = PI / 2 - 2 * atan(t) // eq (7-11) [first trial]\n var phiLast = 0.0\n while (abs(phi - phiLast) > CONVERGENCE_FACTOR) {\n phiLast = phi\n phi = PI / 2.0 - 2.0 * atan(t * ((1 - ecc * sin(phi)) / (1 + ecc * sin(phi))).pow(ecc / 2.0)) // eq (7-9)\n }\n\n val lambda = (x - offset) / eqr // eq (7-12)\n\n return result.setRadians(phi, lambda, z)\n }\n\n override fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4) = result.set(\n 1.0, 0.0, 0.0, x,\n 0.0, 1.0, 0.0, y,\n 0.0, 0.0, 1.0, z,\n 0.0, 0.0, 0.0, 1.0\n )\n\n override fun intersect(globe: Globe, line: Line, result: Vec3): Boolean {\n // Taken from \"Mathematics for 3D Game Programming and Computer Graphics, Third Edition\", Section 6.2.3.\n // Note that the parameter n from in equations 6.70 and 6.71 is omitted here. For an ellipsoidal globe this\n // parameter is always 1, so its square and its product with any other value simplifies to the identity.\n val vx = line.direction.x\n val vy = line.direction.y\n val vz = line.direction.z\n val sx = line.origin.x\n val sy = line.origin.y\n val sz = line.origin.z\n\n if (vz == 0.0 && sz != 0.0) return false // ray is parallel to and not coincident with the XY plane\n\n val t = -sz / vz // intersection distance, simplified for the XY plane\n if (t < 0) return false // intersection is behind the ray's origin\n\n result.x = sx + vx * t\n result.y = sy + vy * t\n result.z = sz + vz * t\n\n return true\n }\n\n companion object {\n private const val CONVERGENCE_FACTOR = 0.000001\n }\n}","package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/*\n * GeographicProjection implementing coordinate transformations based on the WGS-84 reference system (aka WGS 1984,\n * EPSG:4326).\n *\n * The WGS 84 projection defines a Cartesian coordinate system whose origin is at the globe's center. It's Y axis points\n * to the North Pole, the Z axis points to the intersection of the prime meridian and the equator, and the X axis\n * completes a right-handed coordinate system, is in the equatorial plane and 90 degrees East of the Z axis.\n */\nopen class Wgs84Projection: GeographicProjection {\n override val displayName = \"WGS84\"\n private val scratchPos = Position()\n\n override fun geographicToCartesian(globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n return result.set(\n (altitude + rpm) * cosLat * sinLon,\n (altitude + rpm * (1.0 - ec2)) * sinLat,\n (altitude + rpm) * cosLat * cosLon\n )\n }\n\n override fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n return result.set(\n cosLat * sinLon / eqr2,\n (1 - globe.eccentricitySquared) * sinLat / pol2,\n cosLat * cosLon / eqr2\n ).normalize()\n }\n\n override fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Convert the geographic position to Cartesian coordinates. This is equivalent to calling geographicToCartesian\n // but is much more efficient as an inline computation, as the results of cosLat/sinLat/etc. can be computed\n // once and reused.\n val px = (rpm + altitude) * cosLat * sinLon\n val py = (rpm * (1.0 - ec2) + altitude) * sinLat\n val pz = (rpm + altitude) * cosLat * cosLon\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, px,\n ey, ny, uy, py,\n ez, nz, uz, pz,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n require(height == null || height.size >= numLat * numLon) {\n logMessage(ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\", \"missingArray\")\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 1 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 1 else 1\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val cosLon = DoubleArray(numLon)\n val sinLon = DoubleArray(numLon)\n var elevIndex = 0\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Compute and save values that are a function of each unique longitude value in the specified sector. This\n // eliminates the need to re-compute these values for each column of constant longitude.\n var lon = minLon\n for (lonIndex in 0 until numLon) {\n if (lonIndex == numLon - 1) lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n cosLon[lonIndex] = cos(lon)\n sinLon[lonIndex] = sin(lon)\n lon += deltaLon\n }\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian\n // point corresponding to each latitude and longitude.\n var rowIndex = rowOffset\n val stride = if (rowStride == 0) numLon * 3 else rowStride\n var lat = minLat\n for (latIndex in 0 until numLat) {\n if (latIndex == numLat - 1) lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var colIndex = rowIndex\n for (lonIndex in 0 until numLon) {\n val hgt = if (height != null) (height[elevIndex++] * verticalExaggeration).toDouble() else 0.0\n result[colIndex++] = ((hgt + rpm) * cosLat * sinLon[lonIndex] - xOffset).toFloat()\n result[colIndex++] = ((hgt + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[colIndex++] = ((hgt + rpm) * cosLat * cosLon[lonIndex] - zOffset).toFloat()\n }\n rowIndex += stride\n lat += deltaLat\n }\n return result\n }\n\n override fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianBorder\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 3 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 3 else 1\n var lat = minLat\n var lon = minLon\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n var resultIndex = 0\n\n // Iterate over the edges of the specified sector, computing the Cartesian point at designated latitude and\n // longitude around the border.\n for (latIndex in 0 until numLat) {\n when {\n latIndex < 2 -> lat = minLat // explicitly set the first lat to the min latitude to ensure alignment\n latIndex < numLat - 2 -> lat += deltaLat\n else -> lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n }\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var lonIndex = 0\n while (lonIndex < numLon) {\n when {\n lonIndex < 2 -> lon = minLon // explicitly set the first lon to the min longitude to ensure alignment\n lonIndex < numLon - 2 -> lon += deltaLon\n else -> lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n }\n val cosLon = cos(lon)\n val sinLon = sin(lon)\n result[resultIndex++] = ((height + rpm) * cosLat * sinLon - xOffset).toFloat()\n result[resultIndex++] = ((height + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[resultIndex++] = ((height + rpm) * cosLat * cosLon - zOffset).toFloat()\n if (lonIndex == 0 && latIndex != 0 && latIndex != numLat - 1) {\n val skip = numLon - 2\n lonIndex += skip\n resultIndex += skip * 3\n }\n lonIndex++\n }\n }\n return result\n }\n\n override fun cartesianToGeographic(globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position): Position {\n // According to H. Vermeille,\n // \"An analytical method to transform geocentric into geodetic coordinates\"\n // http://www.springerlink.com/content/3t6837t27t351227/fulltext.pdf\n // Journal of Geodesy, accepted 10/2010, not yet published\n val zpx = z * z + x * x\n val zpxSqrt = sqrt(zpx)\n val a = globe.equatorialRadius\n val ra2 = 1 / (a * a)\n val e2 = globe.eccentricitySquared\n val e4 = e2 * e2\n\n // Step 1\n val p = zpx * ra2\n val q = y * y * (1 - e2) * ra2\n val r = (p + q - e4) / 6\n val h: Double\n val phi: Double\n val evoluteBorderTest = 8 * r * r * r + e4 * p * q\n if (evoluteBorderTest > 0 || q != 0.0) {\n val u: Double\n if (evoluteBorderTest > 0) {\n // Step 2: general case\n val rad1 = sqrt(evoluteBorderTest)\n val rad2 = sqrt(e4 * p * q)\n\n // 10*e2 is my arbitrary decision of what Vermeille means by \"near... the cusps of the evolute\".\n val rad = ((rad1 + rad2) * (rad1 + rad2)).pow(1/3.0)\n u = if (evoluteBorderTest > 10 * e2) r + 0.5 * rad + 2 * r * r / rad\n else r + 0.5 * rad + 0.5 * ((rad1 - rad2) * (rad1 - rad2)).pow(1/3.0)\n } else {\n // Step 3: near evolute\n val rad1 = sqrt(-evoluteBorderTest)\n val rad2 = sqrt(-8 * r * r * r)\n val rad3 = sqrt(e4 * p * q)\n val aTan = 2 * atan2(rad3, rad1 + rad2) / 3\n u = -4 * r * sin(aTan) * cos(PI / 6 + aTan)\n }\n val v = sqrt(u * u + e4 * q)\n val w = e2 * (u + v - q) / (2 * v)\n val k = (u + v) / (sqrt(w * w + u + v) + w)\n val d = k * zpxSqrt / (k + e2)\n val dpySqrt = sqrt(d * d + y * y)\n h = (k + e2 - 1) * dpySqrt / k\n phi = 2 * atan2(y, dpySqrt + d)\n } else {\n // Step 4: singular disk\n val rad1 = sqrt(1 - e2)\n val rad2 = sqrt(e2 - p)\n val e = sqrt(e2)\n h = -a * rad1 * rad2 / e\n phi = rad2 / (e * rad2 + rad1 * sqrt(p))\n }\n\n // Compute lambda\n val s2 = sqrt(2.0)\n val lambda = when {\n (s2 - 1) * x < zpxSqrt + z -> 2 * atan2(x, zpxSqrt + z) // case 1 - -135deg < lambda < 135deg\n zpxSqrt + x < (s2 + 1) * z -> -PI * 0.5 + 2 * atan2(z, zpxSqrt - x) // case 2 - -225deg < lambda < 45deg\n else -> PI * 0.5 - 2 * atan2(z, zpxSqrt + x) // case 3: - -45deg < lambda < 225deg\n }\n return result.setRadians(phi, lambda, h)\n }\n\n override fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4): Matrix4 {\n val pos = cartesianToGeographic(globe, x, y, z, 0.0, scratchPos)\n val cosLat = cos(pos.latitude.inRadians)\n val sinLat = sin(pos.latitude.inRadians)\n val cosLon = cos(pos.longitude.inRadians)\n val sinLon = sin(pos.longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, x,\n ey, ny, uy, y,\n ez, nz, uz, z,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun intersect(globe: Globe, line: Line, result: Vec3): Boolean {\n // Taken from \"Mathematics for 3D Game Programming and Computer Graphics, Third Edition\", Section 6.2.3.\n // Note that the parameter n from in equations 6.70 and 6.71 is omitted here. For an ellipsoidal globe this\n // parameter is always 1, so its square and its product with any other value simplifies to the identity.\n val vx = line.direction.x\n val vy = line.direction.y\n val vz = line.direction.z\n val sx = line.origin.x\n val sy = line.origin.y\n val sz = line.origin.z\n val eqr = globe.equatorialRadius\n val eqr2 = eqr * eqr // nominal radius squared\n val m = eqr / globe.polarRadius // ratio of the x semi-axis length to the y semi-axis length\n val m2 = m * m\n val a = vx * vx + m2 * vy * vy + vz * vz\n val b = 2 * (sx * vx + m2 * sy * vy + sz * vz)\n val c = sx * sx + m2 * sy * sy + sz * sz - eqr2\n val d = b * b - 4 * a * c // discriminant\n if (d < 0) return false\n var t = (-b - sqrt(d)) / (2 * a)\n // check if the nearest intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n t = (-b + sqrt(d)) / (2 * a)\n // check if the second intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n\n // the intersection points were behind the origin of the provided line\n return false\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.util.math.fract\nimport kotlin.math.max\nimport kotlin.math.min\n\nopen class BasicTerrain(\n tiles: List, sector: Sector, protected val triStripElements: ShortArray?\n): Terrain {\n protected val tiles = tiles.toList()\n override val sector = Sector(sector)\n private val intersectPoint = Vec3()\n\n override fun intersect(line: Line, result: Vec3): Boolean {\n var found = false\n val triStripElements = triStripElements ?: return found\n\n // Tiles considered as sorted by L1 distance on cylinder from camera\n for (i in tiles.indices) {\n val tile = tiles[i]\n // Translate the line to the terrain tile's local coordinate system.\n line.origin.subtract(tile.origin)\n\n // Compute the first intersection of the terrain tile with the line. The line is interpreted as a ray;\n // intersection points behind the line's origin are ignored. Store the nearest intersection found so far\n // in the result argument.\n if (line.triStripIntersection(tile.points, 3, triStripElements, triStripElements.size, intersectPoint)) {\n result.copy(intersectPoint).add(tile.origin)\n found = true\n }\n\n // Restore the line's origin to its previous coordinate system.\n line.origin.add(tile.origin)\n\n // Do not analyze other tiles as they are sorted by distance from camera\n if (found) break\n }\n return found\n }\n\n override fun surfacePoint(latitude: Angle, longitude: Angle, result: Vec3): Boolean {\n for (i in tiles.indices) {\n val tile = tiles[i]\n val sector = tile.sector\n\n // Find the first tile that contains the specified location.\n if (sector.contains(latitude, longitude)) {\n // Compute the location's parameterized coordinates (s, t) within the tile grid, along with the\n // fractional component (sf, tf) and integral component (si, ti).\n val tileWidth = tile.level.tileWidth\n val tileHeight = tile.level.tileHeight\n val s = (longitude.inDegrees - sector.minLongitude.inDegrees) / sector.deltaLongitude.inDegrees * (tileWidth - 1)\n val t = (latitude.inDegrees - sector.minLatitude.inDegrees) / sector.deltaLatitude.inDegrees * (tileHeight - 1)\n val sf = if (s < tileWidth - 1) fract(s) else 1.0\n val tf = if (t < tileHeight - 1) fract(t) else 1.0\n val si = if (s < tileWidth - 1) (s + 1).toInt() else tileWidth - 1\n val ti = if (t < tileHeight - 1) (t + 1).toInt() else tileHeight - 1\n\n // Compute the location in the tile's local coordinate system. Perform a bilinear interpolation of\n // the cell's four points based on the fractional portion of the location's parameterized coordinates.\n // Tile coordinates are organized in the points array in row major order, starting at the tile's\n // Southwest corner. Account for the tile's border vertices, which are embedded in the points array but\n // must be ignored for this computation.\n val tileRowStride = tileWidth + 2\n val i00 = (si + ti * tileRowStride) * 3 // lower left coordinate\n val i10 = i00 + 3 // lower right coordinate\n val i01 = (si + (ti + 1) * tileRowStride) * 3 // upper left coordinate\n val i11 = i01 + 3 // upper right coordinate\n val f00 = (1 - sf) * (1 - tf)\n val f10 = sf * (1 - tf)\n val f01 = (1 - sf) * tf\n val f11 = sf * tf\n val points = tile.points\n result.x = points[i00] * f00 + points[i10] * f10 + points[i01] * f01 + points[i11] * f11\n result.y = points[i00 + 1] * f00 + points[i10 + 1] * f10 + points[i01 + 1] * f01 + points[i11 + 1] * f11\n result.z = points[i00 + 2] * f00 + points[i10 + 2] * f10 + points[i01 + 2] * f01 + points[i11 + 2] * f11\n\n // Translate the surface point from the tile's local coordinate system to Cartesian coordinates.\n result.x += tile.origin.x\n result.y += tile.origin.y\n result.z += tile.origin.z\n return true\n }\n }\n\n // No tile was found that contains the location.\n return false\n }\n\n override fun heightLimits(levelNumberDepth: Int, result: FloatArray) {\n result[0] = Float.MAX_VALUE\n result[1] = -Float.MAX_VALUE\n val maxLevelNumber = tiles.maxOf { it.level.levelNumber }\n val minLevelNumber = maxLevelNumber - levelNumberDepth\n for (tile in tiles) if (tile.level.levelNumber >= minLevelNumber) {\n result[0] = min(result[0], tile.heightLimits[0])\n result[1] = max(result[1], tile.heightLimits[1])\n }\n if (result[0] > result[1]) result.fill(0f)\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.draw.BasicDrawableTerrain\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.*\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\n\nopen class BasicTessellator: Tessellator, TileFactory {\n override val contentType = \"Tessellator\"\n /**\n * Default level set is configured to ~0.6 meter resolution\n */\n var levelSet = LevelSet(Sector().setFullSphere(), Sector().setFullSphere(), Location(POS90, POS90), 20, 32, 32)\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Detail control determines how much times terrain texel is greater than screen pixel.\n */\n var detailControl = 20.0\n /**\n * Memory cache for this tessellator's subdivision tiles. Each entry contains an array of four terrain tiles\n * corresponding to the subdivision of the group's common parent tile. The cache is configured to hold 300 groups, a\n * number tuned to store the tiles needed to navigate a small region, given the tessellator's first level tile delta\n * of 90 degrees, tile dimensions of 32x32 and detail control of 20.\n */\n protected var tileCache = LruMemoryCache>(300)\n protected val topLevelTiles = mutableListOf()\n protected val currentTiles = mutableListOf()\n protected val currentSector = Sector()\n protected var levelSetVertexTexCoords: FloatArray? = null\n protected var levelSetLineElements: ShortArray? = null\n protected var levelSetTriStripElements: ShortArray? = null\n protected val levelSetLineElementRange = Range()\n protected val levelSetTriStripElementRange = Range()\n protected var levelSetVertexTexCoordBuffer: FloatBufferObject? = null\n protected var levelSetElementBuffer: ShortBufferObject? = null\n protected var levelSetVertexTexCoordKey = this::class.simpleName + \".vertexTexCoordKey\"\n protected var levelSetElementKey = this::class.simpleName + \".elementKey\"\n protected var lastGlobeState: Globe.State? = null\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun tessellate(rc: RenderContext): Terrain {\n checkGlobeState(rc)\n return assembleTerrain(rc)\n }\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = TerrainTile(sector, level, row, column)\n\n protected open fun assembleTerrain(rc: RenderContext): Terrain {\n // Clear previous terrain tiles\n currentTiles.clear()\n currentSector.setEmpty()\n\n // Assemble the terrain buffers and OpenGL buffer objects associated with the level set.\n assembleLevelSetBuffers(rc)\n\n // Assemble the tessellator's top level terrain tiles, which we keep permanent references to.\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n\n // Subdivide the top level tiles until the desired resolution is achieved in each part of the scene.\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as TerrainTile)\n\n // Sort terrain tiles by L1 distance on cylinder from camera\n currentTiles.sortBy { it.sortOrder }\n\n // Release references to render resources acquired while assembling tiles.\n levelSetVertexTexCoordBuffer = null\n levelSetElementBuffer = null\n\n return BasicTerrain(currentTiles, currentSector, levelSetTriStripElements)\n }\n\n protected open fun createTopLevelTiles() = Tile.assembleTilesForLevel(levelSet.firstLevel, this, topLevelTiles)\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: TerrainTile) {\n // ignore tiles which soes not fit projection limits\n if (rc.globe.projectionLimits?.let { tile.intersectsSector(it) } == false) return\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsFrustum(rc)) return\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val childs = tile.subdivideToCache(this, tileCache, 4) // each tile has a cached size of 1\n for (i in childs.indices) addTileOrDescendants(rc, childs[i] as TerrainTile) // recursively process the tile's children\n }\n\n protected open fun addTile(rc: RenderContext, tile: TerrainTile) {\n // Prepare the terrain tile and add it.\n tile.prepare(rc)\n currentTiles.add(tile)\n currentSector.union(tile.sector)\n\n // Prepare a drawable for the terrain tile for processing on the OpenGL thread.\n val pool = rc.getDrawablePool()\n val drawable = BasicDrawableTerrain.obtain(pool)\n prepareDrawableTerrain(rc, tile, drawable)\n rc.offerDrawableTerrain(drawable, tile.sortOrder)\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n // Invalidate tiles cache when globe state changes\n if (rc.globeState != lastGlobeState) {\n invalidateTiles()\n lastGlobeState = rc.globeState\n }\n }\n\n protected open fun invalidateTiles() {\n topLevelTiles.clear()\n currentTiles.clear()\n currentSector.setEmpty()\n tileCache.clear()\n levelSetVertexTexCoords = null\n levelSetLineElements = null\n levelSetTriStripElements = null\n }\n\n protected open fun prepareDrawableTerrain(rc: RenderContext, tile: TerrainTile, drawable: BasicDrawableTerrain) {\n // Remember globe offset to be able to identify own surface drawables.\n drawable.offset = rc.globe.offset\n\n // Assemble the drawable's geographic sector and Cartesian vertex origin.\n drawable.sector.copy(tile.sector)\n drawable.vertexOrigin.copy(tile.origin)\n\n // Assemble the drawable's element buffer ranges.\n drawable.lineElementRange.copy(levelSetLineElementRange)\n drawable.triStripElementRange.copy(levelSetTriStripElementRange)\n\n // Assemble the drawable's OpenGL buffer objects.\n drawable.vertexPoints = tile.getPointBuffer(rc)\n drawable.vertexHeights = tile.getHeightBuffer(rc)\n drawable.vertexTexCoords = levelSetVertexTexCoordBuffer\n drawable.elements = levelSetElementBuffer\n }\n\n protected open fun assembleLevelSetBuffers(rc: RenderContext) {\n val numLat = levelSet.tileHeight + 2\n val numLon = levelSet.tileWidth + 2\n\n // Assemble the level set's vertex tex coords.\n val vertexTexCoords = levelSetVertexTexCoords ?: FloatArray(numLat * numLon * 2).also {\n levelSetVertexTexCoords = it\n assembleVertexTexCoords(numLat, numLon, it)\n }\n\n // Assemble the level set's line elements.\n val lineElements = levelSetLineElements ?: assembleLineElements(numLat, numLon).also { levelSetLineElements = it }\n\n // Assemble the level set's triangle strip elements.\n val triStripElements = levelSetTriStripElements ?: assembleTriStripElements(numLat, numLon).also { levelSetTriStripElements = it }\n\n // Retrieve or create the level set's OpenGL vertex tex coord buffer object.\n levelSetVertexTexCoordBuffer = rc.getBufferObject(levelSetVertexTexCoordKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexTexCoords)\n }\n\n // Retrieve or create the level set's OpenGL element buffer object.\n levelSetElementBuffer = rc.getBufferObject(levelSetElementKey) {\n ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, lineElements + triStripElements).also {\n levelSetLineElementRange.upper = lineElements.size\n levelSetTriStripElementRange.lower = lineElements.size\n levelSetTriStripElementRange.upper = lineElements.size + triStripElements.size\n }\n }\n }\n\n protected open fun assembleVertexTexCoords(numLat: Int, numLon: Int, result: FloatArray): FloatArray {\n val ds = 1f / if (numLon > 1) numLon - 3 else 1\n val dt = 1f / if (numLat > 1) numLat - 3 else 1\n var s = 0f\n var t = 0f\n var rIdx = 0\n\n // Iterate over the number of latitude and longitude vertices, computing the parameterized S and T coordinates\n // corresponding to each vertex.\n for (tIdx in 0 until numLat) {\n when {\n tIdx < 2 -> t = 0f // explicitly set the first T coordinate to 0 to ensure alignment\n tIdx < numLat - 2 -> t += dt\n else -> t = 1f // explicitly set the last T coordinate to 1 to ensure alignment\n }\n for (sIdx in 0 until numLon) {\n when {\n sIdx < 2 -> s = 0f // explicitly set the first S coordinate to 0 to ensure alignment\n sIdx < numLon - 2 -> s += ds\n else -> s = 1f // explicitly set the last S coordinate to 1 to ensure alignment\n }\n result[rIdx++] = s\n result[rIdx++] = t\n }\n }\n return result\n }\n\n protected open fun assembleLineElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = (numLat * (numLon - 1) + numLon * (numLat - 1)) * 2\n val result = ShortArray(count)\n var pos = 0\n\n // Add a line between each row to define the horizontal cell outlines.\n for (latIndex in 1 until numLat-1) {\n for (lonIndex in 1 until numLon - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + 1).toShort()\n }\n }\n\n // Add a line between each column to define the vertical cell outlines.\n for (lonIndex in 1 until numLon - 1) {\n for (latIndex in 1 until numLat - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + numLon).toShort()\n }\n }\n return result\n }\n\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val result = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n result[pos++] = (vertex + numLon).toShort()\n result[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n result[pos++] = vertex.toShort()\n result[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return result\n }\n}",null,"package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\n\n/**\n * Represents a portion of a globe's terrain. Applications typically do not interact directly with this class.\n */\nopen class TerrainTile(sector: Sector, level: Level, row: Int, column: Int): Tile(sector, level, row, column) {\n val origin = Vec3()\n val points by lazy { FloatArray((level.tileWidth + 2) * (level.tileHeight + 2) * 3) }\n protected val heights by lazy { FloatArray( (level.tileWidth + 2) * (level.tileHeight + 2)) }\n protected val heightGrid by lazy { FloatArray( level.tileWidth * level.tileHeight) }\n /**\n * Minimum elevation value used by the BasicTessellator to determine the terrain mesh edge extension depth (skirt).\n * This value is scaled by the vertical exaggeration when the terrain is generated.\n */\n protected val minTerrainElevation = -Short.MAX_VALUE.toFloat()\n protected var heightTimestamp = 0L\n protected var verticalExaggeration = 0.0f\n protected var globeState: Globe.State? = null\n protected var globeOffset: Globe.Offset? = null\n var sortOrder = 0.0\n protected set\n private var pointBufferKey = this::class.simpleName + \".points.default\" // This key will be replaced on prepare of each tile\n private var heightBufferKey = this::class.simpleName + \".heights.default\" // Use the same height buffer for all tiles by default\n\n public override val heightLimits get() = super.heightLimits\n\n open fun prepare(rc: RenderContext) {\n val globe = rc.globe\n val tileWidth = level.tileWidth\n val tileHeight = level.tileHeight\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightTimestamp) {\n heightGrid.fill(0f)\n globe.elevationModel.getHeightGrid(sector, tileWidth, tileHeight, heightGrid)\n // Calculate height vertex buffer from height grid\n for (r in 0 until level.tileHeight) for (c in 0 until level.tileWidth) {\n heights[(r + 1) * (level.tileWidth + 2) + c + 1] = heightGrid[r * level.tileWidth + c]\n }\n if (rc.globe.is2D) {\n heightGrid.fill(0f) // Do not show terrain in 2D, but keep height values in vertex for heatmap\n calcHeightLimits(globe) // Force calculate height limits for heatmap\n }\n updateHeightBufferKey()\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightTimestamp || ve != verticalExaggeration || state != globeState || offset != globeOffset) {\n val borderHeight = minTerrainElevation * ve\n val rowStride = (tileWidth + 2) * 3\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude, 0.0, origin)\n globe.geographicToCartesianGrid(\n sector, tileWidth, tileHeight, heightGrid, ve, origin, points, rowStride + 3, rowStride\n )\n globe.geographicToCartesianBorder(\n sector, tileWidth + 2, tileHeight + 2, borderHeight, origin, points\n )\n updatePointBufferKey()\n }\n heightTimestamp = timestamp\n verticalExaggeration = ve\n globeState = state\n globeOffset = offset\n sortOrder = drawSortOrder(rc)\n }\n\n fun getHeightBuffer(rc: RenderContext) = rc.getBufferObject(heightBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, heights)\n }\n\n fun getPointBuffer(rc: RenderContext) = rc.getBufferObject(pointBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n protected fun updateHeightBufferKey() {\n heightBufferKey = this::class.simpleName + \".heights.$tileKey.${bufferSequence++}\"\n }\n\n protected fun updatePointBufferKey() {\n pointBufferKey = this::class.simpleName + \".points.$tileKey.${bufferSequence++}\"\n }\n\n companion object {\n private var bufferSequence = 0L // Must be static to avoid cache collisions when a tile instance is re-created\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractLayer @JvmOverloads constructor(override var displayName: String? = null): Layer {\n override var isEnabled = true\n override var isPickEnabled = true\n override var opacity = 1f\n override var minActiveAltitude = Double.NEGATIVE_INFINITY\n override var maxActiveAltitude = Double.POSITIVE_INFINITY\n private var userProperties: MutableMap? = null\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) {\n if (isEnabled && (isPickEnabled || !rc.isPickMode) && isWithinActiveAltitudes(rc)) doRender(rc)\n }\n\n override fun isWithinActiveAltitudes(rc: RenderContext) = rc.camera.position.altitude in minActiveAltitude..maxActiveAltitude\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.layer\n\nimport earth.worldwind.shape.TiledSurfaceImage\n\nabstract class AbstractTiledImageLayer(name: String?, tiledSurfaceImage: TiledSurfaceImage?): RenderableLayer(name) {\n override var isPickEnabled = false // Image layer is not pick able\n\n var tiledSurfaceImage = tiledSurfaceImage?.also { addRenderable(it) }\n protected set(value) {\n field?.let { removeRenderable(it) }\n value?.let { addRenderable(it) }\n field = value\n }\n\n /**\n * Unique identifier of the layer type, defined by tiled surface image tile factory content type\n */\n val type get() = tiledSurfaceImage?.tileFactory?.contentType\n}","package earth.worldwind.layer\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays a single image spanning the globe. By default, BackgroundLayer is configured to display NASA's Blue Marble\n * next generation image at 40km resolution from the built-in WorldWind library resource\n * res/drawable/worldwind_worldtopobathy2004053.\n */\nclass BackgroundLayer @JvmOverloads constructor(\n imageSource: ImageSource = ImageSource.fromResource(MR.images.worldwind_worldtopobathy2004053),\n imageOptions: ImageOptions = ImageOptions(ImageConfig.RGB_565)\n) : RenderableLayer(\"Background\") {\n // Disable picking for the layer because it covers the full sphere and will override a terrain pick.\n override var isPickEnabled = false\n\n init {\n // Delegate display to the SurfaceImage shape.\n val surfaceImage = SurfaceImage(Sector().setFullSphere(), imageSource)\n surfaceImage.imageOptions = imageOptions\n addRenderable(surfaceImage)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class LayerList() : Iterable {\n protected val layers = mutableListOf()\n\n constructor(layerList: LayerList): this() { addAllLayers(layerList) }\n\n constructor(layers: Iterable): this() { addAllLayers(layers) }\n\n fun getLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"getLayer\", \"invalidIndex\")\n }\n return layers[index]\n }\n\n fun setLayer(index: Int, layer: Layer): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"setLayer\", \"invalidIndex\")\n }\n return layers.set(index, layer)\n }\n\n fun indexOfLayer(layer: Layer) = layers.indexOf(layer)\n\n fun indexOfLayerNamed(name: String): Int {\n for (idx in layers.indices) if ( name == layers[idx].displayName) return idx\n return -1\n }\n\n fun indexOfLayerWithProperty(key: Any, value: Any): Int {\n for (idx in layers.indices) {\n val layer = layers[idx]\n if (layer.hasUserProperty(key) && value == layer.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addLayer(layer: Layer) { layers.add(layer) }\n\n fun addLayer(index: Int, layer: Layer) {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"addLayer\", \"invalidIndex\")\n }\n layers.add(index, layer)\n }\n\n fun addAllLayers(list: LayerList) {\n //layers.ensureCapacity(list.layers.size)\n for (layer in list.layers) layers.add(layer) // we know the contents of layerList.layers is valid\n }\n\n fun addAllLayers(iterable: Iterable) { for (layer in iterable) layers.add(layer) }\n\n fun removeLayer(layer: Layer): Boolean { return layers.remove(layer) }\n\n fun removeLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"removeLayer\", \"invalidIndex\")\n }\n return layers.removeAt(index)\n }\n\n fun removeAllLayers(layers: Iterable): Boolean {\n var removed = false\n for (layer in layers) removed = removed or this.layers.remove(layer)\n return removed\n }\n\n fun clearLayers() { layers.clear() }\n\n override fun iterator() = layers.iterator()\n\n fun render(rc: RenderContext) {\n for (i in layers.indices) {\n val layer = layers[i]\n rc.currentLayer = layer\n try {\n layer.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"LayerList\", \"render\",\n \"Exception while rendering layer '${layer.displayName}'\", e\n )\n // Keep going. Draw the remaining layers.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class RenderableLayer @JvmOverloads constructor(displayName: String? = null): AbstractLayer(displayName), Iterable {\n protected val renderables = mutableListOf()\n val count get() = renderables.size\n\n constructor(layer: RenderableLayer): this(layer.displayName) { addAllRenderables(layer) }\n\n constructor(renderables: Iterable): this() { addAllRenderables(renderables) }\n\n fun isEmpty() = renderables.isEmpty()\n\n fun getRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"getRenderable\", \"invalidIndex\")\n }\n return renderables[index]\n }\n\n fun setRenderable(index: Int, renderable: Renderable): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"setRenderable\", \"invalidIndex\")\n }\n return renderables.set(index, renderable)\n }\n\n fun indexOfRenderable(renderable: Renderable) = renderables.indexOf(renderable)\n\n fun indexOfRenderableNamed(name: String): Int {\n for (idx in renderables.indices) if (name == renderables[idx].displayName) return idx\n return -1\n }\n\n fun indexOfRenderableWithProperty(key: Any, value: Any): Int {\n for (idx in renderables.indices) {\n val renderable = renderables[idx]\n if (renderable.hasUserProperty(key) && value == renderable.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addRenderable(renderable: Renderable) { renderables.add(renderable) }\n\n fun addRenderable(index: Int, renderable: Renderable) {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"addRenderable\", \"invalidIndex\")\n }\n renderables.add(index, renderable)\n }\n\n fun addAllRenderables(layer: RenderableLayer) {\n //renderables.ensureCapacity(layer.renderables.size)\n for (renderable in layer.renderables) renderables.add(renderable) // we know the contents of layer.renderables is valid\n }\n\n fun addAllRenderables(iterable: Iterable) { for (renderable in iterable) renderables.add(renderable) }\n\n fun removeRenderable(renderable: Renderable) = renderables.remove(renderable)\n\n fun removeRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"removeRenderable\", \"invalidIndex\")\n }\n return renderables.removeAt(index)\n }\n\n fun removeAllRenderables(renderables: Iterable): Boolean {\n var removed = false\n for (renderable in renderables) removed = removed or this.renderables.remove(renderable)\n return removed\n }\n\n fun clearRenderables() { renderables.clear() }\n\n override fun iterator() = renderables.iterator()\n\n override fun doRender(rc: RenderContext) {\n for (i in renderables.indices) {\n val renderable = renderables[i]\n try {\n renderable.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"RenderableLayer\", \"doRender\",\n \"Exception while rendering shape '${renderable.displayName}'\", e\n )\n // Keep going. Draw the remaining renderables.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.draw.DrawableTessellation\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\n\nclass ShowTessellationLayer: AbstractLayer(\"Terrain Tessellation\") {\n override var isPickEnabled = false\n var color = Color()\n set(value) {\n field.copy(value)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to render\n\n // Use WorldWind's basic GLSL program.\n val program = rc.getShaderProgram { BasicShaderProgram() }\n val pool = rc.getDrawablePool()\n val drawable = DrawableTessellation.obtain(pool).set(program, color, opacity)\n rc.offerSurfaceDrawable(drawable, 1.0 /*z-order after surface textures*/)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.KglUniformLocation\nimport kotlin.math.PI\nimport kotlin.math.pow\n\n// TODO Correctly compute the atmosphere color for eye positions beneath the atmosphere\n// TODO Test the effect of working in local coordinates (reference point) on the GLSL atmosphere programs\nabstract class AbstractAtmosphereProgram: AbstractShaderProgram() {\n protected var fragModeId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var vertexOriginId = KglUniformLocation.NONE\n protected var eyePointId = KglUniformLocation.NONE\n protected var eyeMagnitudeId = KglUniformLocation.NONE\n protected var eyeMagnitude2Id = KglUniformLocation.NONE\n protected var lightDirectionId = KglUniformLocation.NONE\n protected var invWavelengthId = KglUniformLocation.NONE\n protected var atmosphereRadiusId = KglUniformLocation.NONE\n protected var atmosphereRadius2Id = KglUniformLocation.NONE\n protected var globeRadiusId = KglUniformLocation.NONE\n protected var krESunId = KglUniformLocation.NONE\n protected var kmESunId = KglUniformLocation.NONE\n protected var kr4PIId = KglUniformLocation.NONE\n protected var km4PIId = KglUniformLocation.NONE\n protected var scaleId = KglUniformLocation.NONE\n protected var scaleDepthId = KglUniformLocation.NONE\n protected var scaleOverScaleDepthId = KglUniformLocation.NONE\n protected var gId = KglUniformLocation.NONE\n protected var g2Id = KglUniformLocation.NONE\n protected var exposureId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n /**\n * Frag color indicates the atmospheric scattering color components written to the fragment color. Accepted values\n * are [FRAGMODE_PRIMARY], [FRAGMODE_SECONDARY] and [FRAGMODE_PRIMARY_TEX_BLEND].\n */\n enum class FragMode(val asInt : Int) {\n PRIMARY(1),\n SECONDARY(2),\n PRIMARY_TEX_BLEND(3)\n }\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n val invWavelength = Vec3(\n 1 / 0.650.pow(4.0), // 650 nm for red\n 1 / 0.570.pow(4.0), // 570 nm for green\n 1 / 0.475.pow(4.0) // 475 nm for blue\n )\n val kr = 0.0025 // Rayleigh scattering constant\n val km = 0.0010 // Mie scattering constant\n val eSun = 20.0 // Sun brightness constant\n val g = -0.990 // The Mie phase asymmetry factor\n val exposure = 2.0\n fragModeId = gl.getUniformLocation(program, \"fragMode\")\n gl.uniform1i(fragModeId, FragMode.PRIMARY.asInt)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n vertexOriginId = gl.getUniformLocation(program, \"vertexOrigin\")\n array.fill(0f)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n eyePointId = gl.getUniformLocation(program, \"eyePoint\")\n array.fill(0f)\n gl.uniform3fv(eyePointId, 1, array, 0)\n eyeMagnitudeId = gl.getUniformLocation(program, \"eyeMagnitude\")\n gl.uniform1f(eyeMagnitudeId, 0f)\n eyeMagnitude2Id = gl.getUniformLocation(program, \"eyeMagnitude2\")\n gl.uniform1f(eyeMagnitude2Id, 0f)\n lightDirectionId = gl.getUniformLocation(program, \"lightDirection\")\n array.fill(0f)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n invWavelengthId = gl.getUniformLocation(program, \"invWavelength\")\n invWavelength.toArray(array, 0)\n gl.uniform3fv(invWavelengthId, 1, array, 0)\n atmosphereRadiusId = gl.getUniformLocation(program, \"atmosphereRadius\")\n atmosphereRadius2Id = gl.getUniformLocation(program, \"atmosphereRadius2\")\n globeRadiusId = gl.getUniformLocation(program, \"globeRadius\")\n krESunId = gl.getUniformLocation(program, \"KrESun\")\n gl.uniform1f(krESunId, (kr * eSun).toFloat())\n kmESunId = gl.getUniformLocation(program, \"KmESun\")\n gl.uniform1f(kmESunId, (km * eSun).toFloat())\n kr4PIId = gl.getUniformLocation(program, \"Kr4PI\")\n gl.uniform1f(kr4PIId, (kr * 4 * PI).toFloat())\n km4PIId = gl.getUniformLocation(program, \"Km4PI\")\n gl.uniform1f(km4PIId, (km * 4 * PI).toFloat())\n scaleId = gl.getUniformLocation(program, \"scale\")\n scaleDepthId = gl.getUniformLocation(program, \"scaleDepth\")\n scaleOverScaleDepthId = gl.getUniformLocation(program, \"scaleOverScaleDepth\")\n gId = gl.getUniformLocation(program, \"g\")\n gl.uniform1f(gId, g.toFloat())\n g2Id = gl.getUniformLocation(program, \"g2\")\n gl.uniform1f(g2Id, (g * g).toFloat())\n exposureId = gl.getUniformLocation(program, \"exposure\")\n gl.uniform1f(exposureId, exposure.toFloat())\n }\n\n fun loadFragMode(fragMode: FragMode) { gl.uniform1i(fragModeId, fragMode.asInt) }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n\n fun loadVertexOrigin(origin: Vec3) {\n origin.toArray(array, 0)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n }\n\n fun loadVertexOrigin(x: Double, y: Double, z: Double) {\n gl.uniform3f(vertexOriginId, x.toFloat(), y.toFloat(), z.toFloat())\n }\n\n fun loadLightDirection(direction: Vec3) {\n direction.toArray(array, 0)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n }\n\n fun loadEyePoint(eyePoint: Vec3) {\n eyePoint.toArray(array, 0)\n gl.uniform3fv(eyePointId, 1, array, 0)\n gl.uniform1f(eyeMagnitudeId, eyePoint.magnitude.toFloat())\n gl.uniform1f(eyeMagnitude2Id, eyePoint.magnitudeSquared.toFloat())\n }\n\n fun loadAtmosphereParams(equatorialRadius: Double, atmosphereAltitude: Double) {\n val rayleighScaleDepth = 0.25\n val ar = equatorialRadius + atmosphereAltitude\n gl.uniform1f(globeRadiusId, equatorialRadius.toFloat())\n gl.uniform1f(atmosphereRadiusId, ar.toFloat())\n gl.uniform1f(atmosphereRadius2Id, (ar * ar).toFloat())\n gl.uniform1f(scaleId, (1 / atmosphereAltitude).toFloat())\n gl.uniform1f(scaleDepthId, rayleighScaleDepth.toFloat())\n gl.uniform1f(scaleOverScaleDepthId, (1 / atmosphereAltitude / rayleighScaleDepth).toFloat())\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource.Companion.fromResource\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\nimport kotlinx.datetime.Instant\n\nopen class AtmosphereLayer: AbstractLayer(\"Atmosphere\") {\n override var isPickEnabled = false\n var nightImageSource = fromResource(MR.images.dnb_land_ocean_ice_2012)\n var nightImageOptions = ImageOptions(ImageConfig.RGB_565)\n /**\n * Display light location on a specified time point. If null, then light is located at camera position.\n */\n var time : Instant? = null\n protected val activeLightDirection = Vec3()\n private val fullSphereSector = Sector().setFullSphere()\n\n companion object {\n private val VERTEX_POINTS_KEY = AtmosphereLayer::class.simpleName + \".points\"\n private val TRI_STRIP_ELEMENTS_KEY = AtmosphereLayer::class.simpleName + \".triStripElements\"\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.globe.is2D) return // Atmosphere layer is not applicable for 2D globe\n\n // Compute the currently active light direction.\n determineLightDirection(rc)\n\n // Render the sky portion of the atmosphere.\n renderSky(rc)\n\n // Render the ground portion of the atmosphere.\n renderGround(rc)\n }\n\n protected open fun determineLightDirection(rc: RenderContext) {\n // TODO Make light/sun direction an optional property of the WorldWindow and attach it to the RenderContext each frame\n // TODO RenderContext property defaults to the eye lat/lon like we have below\n time?.let {\n val lightLocation = SunPosition.getAsGeographicLocation(it)\n rc.globe.geographicToCartesianNormal(\n lightLocation.latitude, lightLocation.longitude, activeLightDirection\n )\n } ?: rc.globe.geographicToCartesianNormal(\n rc.camera.position.latitude, rc.camera.position.longitude, activeLightDirection\n )\n }\n\n protected open fun renderSky(rc: RenderContext) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableSkyAtmosphere.obtain(pool)\n val size = 128\n drawable.program = rc.getShaderProgram { SkyProgram() }\n drawable.vertexPoints = rc.getBufferObject(VERTEX_POINTS_KEY) {\n assembleVertexPoints(rc, size, size, rc.atmosphereAltitude.toFloat())\n }\n drawable.triStripElements = rc.getBufferObject(TRI_STRIP_ELEMENTS_KEY) { assembleTriStripElements(size, size) }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun renderGround(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n val pool = rc.getDrawablePool()\n val drawable = DrawableGroundAtmosphere.obtain(pool)\n drawable.program = rc.getShaderProgram { GroundProgram() }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n\n // Use this layer's night image when the light location is different from the eye location.\n drawable.nightTexture = time?.run { rc.getTexture(nightImageSource, nightImageOptions) }\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun assembleVertexPoints(rc: RenderContext, numLat: Int, numLon: Int, altitude: Float): FloatBufferObject {\n val count = numLat * numLon\n val altitudes = FloatArray(count)\n altitudes.fill(altitude)\n val points = FloatArray(count * 3)\n rc.globe.geographicToCartesianGrid(\n fullSphereSector, numLat, numLon, altitudes, 1.0f, null, points\n )\n return FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n // TODO move this into a basic tessellator implementation in WorldWind\n // TODO tessellator and atmosphere needs the TriStripIndices - could we add these to BasicGlobe (needs to be on a static context)\n // TODO may need to switch the tessellation method anyway - geographic grid may produce artifacts at the poles\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortBufferObject {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val elements = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n elements[pos++] = (vertex + numLon).toShort()\n elements[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n elements[pos++] = vertex.toShort()\n elements[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.atmosphere.AbstractAtmosphereProgram.FragMode.*\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableGroundAtmosphere : Drawable {\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: GroundProgram? = null\n var nightTexture: Texture? = null\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val fullSphereSector = Sector().setFullSphere()\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableGroundAtmosphere {\n val instance = pool.acquire() ?: DrawableGroundAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n nightTexture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Set up to use the shared tile tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Attempt to bind the night side texture to multi-texture unit 0.\n dc.activeTextureUnit(GL_TEXTURE0)\n val nightTexture = nightTexture\n val textureBound = nightTexture?.bindTexture(dc) == true\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) ||\n !terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) continue // vertex buffer failed to bind\n\n // Use the vertex origin for the terrain.\n val terrainOrigin = terrain.vertexOrigin\n program.loadVertexOrigin(terrainOrigin)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Use a tex coord matrix that registers the night texture correctly on each terrain.\n if (textureBound && nightTexture != null) {\n texCoordMatrix.copy(nightTexture.coordTransform)\n texCoordMatrix.multiplyByTileTransform(terrain.sector, fullSphereSector)\n program.loadTexCoordMatrix(texCoordMatrix)\n }\n\n // Draw the terrain as triangles, multiplying the current fragment color by the program's secondary color.\n program.loadFragMode(SECONDARY)\n dc.gl.blendFunc(GL_DST_COLOR, GL_ZERO)\n terrain.drawTriangles(dc)\n\n // Draw the terrain as triangles, adding the current fragment color to the program's primary color.\n program.loadFragMode(if (textureBound) PRIMARY_TEX_BLEND else PRIMARY)\n dc.gl.blendFunc(GL_ONE, GL_ONE)\n terrain.drawTriangles(dc)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.disableVertexAttribArray(1)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nclass DrawableSkyAtmosphere : Drawable {\n var vertexPoints: FloatBufferObject? = null\n var triStripElements: ShortBufferObject? = null\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: SkyProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSkyAtmosphere {\n val instance = pool.acquire() ?: DrawableSkyAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n vertexPoints = null\n triStripElements = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (vertexPoints?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n val triStripElements = triStripElements ?: return // element buffer unspecified\n if (!triStripElements.bindBuffer(dc)) return // element buffer failed to bind\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Use the vertex origin for the sky ellipsoid.\n program.loadVertexOrigin(0.0, 0.0, 0.0)\n\n // Use the draw context's modelview projection matrix.\n program.loadModelviewProjection(dc.modelviewProjection)\n\n // Use the sky's vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, 0, 0)\n\n // Draw the inside of the sky without writing to the depth buffer.\n dc.gl.depthMask(false)\n dc.gl.frontFace(GL_CW)\n dc.gl.drawElements(GL_TRIANGLE_STRIP, triStripElements.byteCount / 2, GL_UNSIGNED_SHORT, 0)\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.frontFace(GL_CCW)\n }\n}","package earth.worldwind.layer.atmosphere\n\nopen class GroundProgram: AbstractAtmosphereProgram() {\n override var programSources = arrayOf(\n \"\"\"\n precision mediump int; /* fragMode is used in both shaders, so we must use a common precision */\n\n const int FRAGMODE_PRIMARY = 1;\n const int FRAGMODE_SECONDARY = 2;\n const int FRAGMODE_PRIMARY_TEX_BLEND = 3;\n\n const int SAMPLE_COUNT = 2;\n const float SAMPLES = 2.0;\n\n uniform int fragMode;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n uniform vec3 vertexOrigin;\n uniform vec3 eyePoint;\n uniform float eyeMagnitude;\t /* The eye point's magnitude */\n uniform float eyeMagnitude2;\t /* eyeMagnitude^2 */\n uniform vec3 lightDirection;\t /* The direction vector to the light source */\n uniform vec3 invWavelength;\t /* 1 / pow(wavelength, 4) for the red, green, and blue channels */\n uniform float atmosphereRadius; /* The outer (atmosphere) radius */\n uniform float atmosphereRadius2; /* atmosphereRadius^2 */\n uniform float globeRadius;\t\t /* The inner (planetary) radius */\n uniform float KrESun;\t\t\t /* Kr * ESun */\n uniform float KmESun;\t\t\t /* Km * ESun */\n uniform float Kr4PI;\t\t\t /* Kr * 4 * PI */\n uniform float Km4PI;\t\t\t /* Km * 4 * PI */\n uniform float scale;\t\t\t /* 1 / (atmosphereRadius - globeRadius) */\n uniform float scaleDepth;\t\t /* The scale depth (i.e. the altitude at which the atmosphere's average density is found) */\n uniform float scaleOverScaleDepth;\t/* fScale / fScaleDepth */\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec3 primaryColor;\n varying vec3 secondaryColor;\n varying vec3 direction;\n varying vec2 texCoord;\n\n float scaleFunc(float cos) {\n float x = 1.0 - cos;\n return scaleDepth * exp(-0.00287 + x*(0.459 + x*(3.83 + x*(-6.80 + x*5.25))));\n }\n\n void main() {\n /* Get the ray from the camera to the vertex and its length (which is the far point of the ray passing through the\n atmosphere) */\n vec3 point = vertexPoint.xyz + vertexOrigin;\n vec3 ray = point - eyePoint;\n float far = length(ray);\n ray /= far;\n\n vec3 start;\n if (eyeMagnitude < atmosphereRadius) {\n start = eyePoint;\n } else {\n /* Calculate the closest intersection of the ray with the outer atmosphere (which is the near point of the ray\n passing through the atmosphere) */\n float B = 2.0 * dot(eyePoint, ray);\n float C = eyeMagnitude2 - atmosphereRadius2;\n float det = max(0.0, B*B - 4.0 * C);\n float near = 0.5 * (-B - sqrt(det));\n\n /* Calculate the ray's starting point, then calculate its scattering offset */\n start = eyePoint + ray * near;\n far -= near;\n }\n\n float depth = exp((globeRadius - atmosphereRadius) / scaleDepth);\n float eyeAngle = dot(-ray, point) / length(point);\n float lightAngle = dot(lightDirection, point) / length(point);\n float eyeScale = scaleFunc(eyeAngle);\n float lightScale = scaleFunc(lightAngle);\n float eyeOffset = depth*eyeScale;\n float temp = (lightScale + eyeScale);\n\n /* Initialize the scattering loop variables */\n float sampleLength = far / SAMPLES;\n float scaledLength = sampleLength * scale;\n vec3 sampleRay = ray * sampleLength;\n vec3 samplePoint = start + sampleRay * 0.5;\n\n /* Now loop through the sample rays */\n vec3 frontColor = vec3(0.0, 0.0, 0.0);\n vec3 attenuate = vec3(0.0, 0.0, 0.0);\n for(int i=0; i\n abstract fun getTypeFor(resolution: Double): String\n\n /**\n * Determines whether the grid should be updated. It returns true if: * the eye has moved more than 1% of its\n * altitude above ground * the view FOV, heading or pitch have changed more than 1 degree * vertical\n * exaggeration has changed `RenderContext`.\n *\n * @return true if the graticule should be updated.\n */\n private fun needsToUpdate(rc: RenderContext): Boolean {\n if (lastVerticalExaggeration != rc.verticalExaggeration) return true\n if (abs(lastCameraHeading - rc.camera.heading.inDegrees) > 1) return true\n if (abs(lastCameraTilt - rc.camera.tilt.inDegrees) > 1) return true\n if (abs(lastFOV - rc.camera.fieldOfView.inDegrees) > 1) return true\n if (rc.cameraPoint.distanceTo(lastCameraPoint) > computeAltitudeAboveGround(rc) / 100) return true\n if (rc.globeState != lastGlobeState) return true\n return false\n }\n\n protected open fun clear(rc: RenderContext) {\n removeAllRenderables()\n lastCameraPoint.copy(rc.cameraPoint)\n lastFOV = rc.camera.fieldOfView.inDegrees\n lastCameraHeading = rc.camera.heading.inDegrees\n lastCameraTilt = rc.camera.tilt.inDegrees\n lastVerticalExaggeration = rc.verticalExaggeration\n lastGlobeState = rc.globeState\n }\n\n fun computeLabelOffset(rc: RenderContext): Location {\n return rc.lookAtPosition?.let {\n val labelOffset = toDegrees(rc.pixelSize / rc.globe.equatorialRadius * rc.viewport.width / 4)\n Location(\n it.latitude.minusDegrees(labelOffset).normalizeLatitude().coerceIn(MIN_LAT, MAX_LAT),\n it.longitude.minusDegrees(labelOffset).normalizeLongitude()\n )\n } ?: rc.camera.position\n }\n\n fun createLineRenderable(positions: List, pathType: PathType) = Path(positions).apply {\n this.pathType = pathType\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n\n @Suppress(\"UNUSED_PARAMETER\")\n fun createTextRenderable(position: Position, label: String, resolution: Double) = Label(position, label).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n // priority = resolution * 1e6 // TODO Implement priority\n }\n\n fun getSurfacePoint(rc: RenderContext, latitude: Angle, longitude: Angle): Vec3 {\n if (!rc.terrain.surfacePoint(latitude, longitude, surfacePoint))\n rc.globe.geographicToCartesian(\n latitude, longitude, rc.globe.getElevation(latitude, longitude)\n * rc.verticalExaggeration, surfacePoint\n )\n return surfacePoint\n }\n\n fun computeAltitudeAboveGround(rc: RenderContext): Double {\n val surfacePoint = getSurfacePoint(rc, rc.camera.position.latitude, rc.camera.position.longitude)\n return rc.cameraPoint.distanceTo(surfacePoint)\n }\n\n fun computeTruncatedSegment(p1: Position, p2: Position, sector: Sector, positions: MutableList) {\n val p1In = sector.contains(p1.latitude, p1.longitude)\n val p2In = sector.contains(p2.latitude, p2.longitude)\n if (!p1In && !p2In) return // the whole segment is (likely) outside\n if (p1In && p2In) {\n // the whole segment is (likely) inside\n positions.add(p1)\n positions.add(p2)\n } else {\n // segment does cross the boundary\n var outPoint = if (!p1In) p1 else p2\n val inPoint = if (p1In) p1 else p2\n for (i in 1..2) {\n // there may be two intersections\n var intersection: Location? = null\n if (outPoint.longitude.inDegrees > sector.maxLongitude.inDegrees\n || sector.maxLongitude.inDegrees == 180.0 && outPoint.longitude.inDegrees < 0.0) {\n // intersect with east meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.maxLongitude\n )\n } else if (outPoint.longitude.inDegrees < sector.minLongitude.inDegrees\n || sector.minLongitude.inDegrees == -180.0 && outPoint.longitude.inDegrees > 0.0) {\n // intersect with west meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.minLongitude\n )\n } else if (outPoint.latitude.inDegrees > sector.maxLatitude.inDegrees) {\n // intersect with top parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.maxLatitude\n )\n } else if (outPoint.latitude.inDegrees < sector.minLatitude.inDegrees) {\n // intersect with bottom parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.minLatitude\n )\n }\n outPoint = if (intersection != null) Position(\n intersection.latitude,\n intersection.longitude,\n outPoint.altitude\n ) else break\n }\n positions.add(inPoint)\n positions.add(outPoint)\n }\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a meridian.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param longitude the meridian longitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLongitude(p1: Location, p2: Location, longitude: Angle): Location? {\n if (p1.longitude == longitude) return p1\n if (p2.longitude == longitude) return p2\n var pos: Location? = null\n val deltaLon = getDeltaLongitude(p1, p2.longitude)\n if (getDeltaLongitude(p1, longitude) < deltaLon && getDeltaLongitude(p2, longitude) < deltaLon) {\n var count = 0\n val precision = 1.0 / Ellipsoid.WGS84.semiMajorAxis // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (toRadians(getDeltaLongitude(midPoint, longitude)) > precision && count <= 20) {\n count++\n if (getDeltaLongitude(a, longitude) < getDeltaLongitude(b, longitude)) b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final longitude for an exact match\n if (pos != null) pos = Location(pos.latitude, longitude)\n return pos\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a parallel.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param latitude the parallel latitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLatitude(p1: Location, p2: Location, latitude: Angle): Location? {\n var pos: Location? = null\n if (sign(p1.latitude.inDegrees - latitude.inDegrees) != sign(p2.latitude.inDegrees - latitude.inDegrees)) {\n var count = 0\n val precision = 1.0 / Ellipsoid.WGS84.semiMajorAxis // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (abs(midPoint.latitude.inRadians - latitude.inRadians) > precision && count <= 20) {\n count++\n if (sign(a.latitude.inDegrees - latitude.inDegrees) != sign(midPoint.latitude.inDegrees - latitude.inDegrees))\n b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final latitude for an exact match\n if (pos != null) pos = Location(latitude, pos.longitude)\n return pos\n }\n\n private fun greatCircleMidPoint(p1: Location, p2: Location): Location {\n val azimuth = p1.greatCircleAzimuth(p2)\n val distance = p1.greatCircleDistance(p2)\n return p1.greatCircleLocation(azimuth, distance / 2, Location())\n }\n\n private fun getDeltaLongitude(p1: Location, longitude: Angle): Double {\n val deltaLon = abs(p1.longitude.inDegrees - longitude.inDegrees)\n return if (deltaLon < 180) deltaLon else 360 - deltaLon\n }\n\n companion object {\n private val MIN_LAT = (-70.0).degrees\n private val MAX_LAT = 70.0.degrees\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.AbstractTile\n\nabstract class AbstractGraticuleTile(open val layer: AbstractGraticuleLayer, sector: Sector) : AbstractTile(sector) {\n val gridElements = mutableListOf()\n /**\n * Flag to avoid recursive renderables creation if tile should not have elements by design\n */\n private var shouldCreateRenderables = true\n private val scratchVector = Vec3()\n\n open fun isInView(rc: RenderContext) = rc.globe.projectionLimits?.let { intersectsSector(it) } != false &&\n intersectsSector(rc.terrain.sector) && intersectsFrustum(rc) && isFacingCamera(rc)\n\n open fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, sector.centroidLatitude, sector.centroidLongitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n val tileSizeMeter = sector.deltaLatitude.inRadians * rc.globe.equatorialRadius\n return tileSizeMeter / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n open fun selectRenderables(rc: RenderContext) {\n if (shouldCreateRenderables && gridElements.isEmpty()) createRenderables()\n }\n\n open fun clearRenderables() {\n gridElements.clear()\n shouldCreateRenderables = true\n }\n\n open fun createRenderables() {\n shouldCreateRenderables = false\n }\n\n fun subdivide(div: Int, sector: Sector = this.sector): List {\n val dLat = sector.deltaLatitude.inDegrees / div\n val dLon = sector.deltaLongitude.inDegrees / div\n val sectors = mutableListOf()\n for (row in 0 until div) {\n for (col in 0 until div) {\n sectors += fromDegrees(\n sector.minLatitude.inDegrees + dLat * row,\n sector.minLongitude.inDegrees + dLon * col, dLat, dLon\n )\n }\n }\n return sectors\n }\n\n protected open fun isFacingCamera(rc: RenderContext) = if (rc.globe.is2D) true else {\n val viewingVector = nearestPoint(rc).subtract(rc.cameraPoint)\n val normalVector = rc.globe.geographicToCartesianNormal(sector.centroidLatitude, sector.centroidLongitude, scratchVector)\n val dot = viewingVector.dot(normalVector)\n dot / (viewingVector.magnitude * normalVector.magnitude) < 0.0\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\nclass GraticuleRenderingParams: MutableMap by HashMap() {\n var isDrawLines: Boolean\n get() = get(KEY_DRAW_LINES) as? Boolean ?: false\n set(drawLines) { put(KEY_DRAW_LINES, drawLines) }\n var lineColor: Color?\n get() = get(KEY_LINE_COLOR) as? Color\n set(color) { put(KEY_LINE_COLOR, color) }\n var lineWidth: Float\n get() = get(KEY_LINE_WIDTH) as? Float ?: 0.0f\n set(lineWidth) { put(KEY_LINE_WIDTH, lineWidth) }\n var lineStyle: LineStyle\n get() = get(KEY_LINE_STYLE) as? LineStyle ?: LineStyle.SOLID\n set(lineStyle) { put(KEY_LINE_STYLE, lineStyle) }\n var isDrawLabels: Boolean\n get() = get(KEY_DRAW_LABELS) as? Boolean ?: false\n set(drawLabels) { put(KEY_DRAW_LABELS, drawLabels) }\n var labelColor: Color?\n get() = get(KEY_LABEL_COLOR) as? Color\n set(color) { put(KEY_LABEL_COLOR, color) }\n var labelFont: Font?\n get() = get(KEY_LABEL_FONT) as? Font\n set(font) { put(KEY_LABEL_FONT, font) }\n\n companion object {\n const val KEY_DRAW_LINES = \"DrawGraticule\"\n const val KEY_LINE_COLOR = \"GraticuleLineColor\"\n const val KEY_LINE_WIDTH = \"GraticuleLineWidth\"\n const val KEY_LINE_STYLE = \"GraticuleLineStyle\";\n const val KEY_DRAW_LABELS = \"DrawLabels\"\n const val KEY_LABEL_COLOR = \"LabelColor\"\n const val KEY_LABEL_FONT = \"LabelFont\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LINES\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_STYLE\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_WIDTH\nimport earth.worldwind.render.*\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.Path\nimport earth.worldwind.shape.ShapeAttributes\nimport kotlin.jvm.JvmOverloads\n\ninternal class GraticuleSupport {\n private val renderables = mutableMapOf()\n private val namedParams = mutableMapOf()\n private val namedShapeAttributes = mutableMapOf()\n var defaultParams: GraticuleRenderingParams? = null\n\n fun addRenderable(renderable: Renderable, paramsKey: String) { renderables[renderable] = paramsKey }\n\n fun removeAllRenderables() { renderables.clear() }\n\n @JvmOverloads\n fun render(rc: RenderContext, opacity: Float = 1f) {\n namedShapeAttributes.clear()\n\n // Render lines and collect text labels\n for ((renderable, paramsKey) in renderables) {\n val renderingParams = namedParams[paramsKey]\n if (renderable is Path) {\n if (renderingParams?.isDrawLines != false) {\n applyRenderingParams(paramsKey, renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n } else if (renderable is Label) {\n if (renderingParams?.isDrawLabels != false) {\n applyRenderingParams(renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n }\n }\n }\n\n fun getRenderingParams(key: String): GraticuleRenderingParams {\n return namedParams[key] ?: GraticuleRenderingParams().also { params ->\n initRenderingParams(params)\n defaultParams?.let { params.putAll(it) }\n namedParams[key] = params\n }\n }\n\n fun setRenderingParams(key: String, renderingParams: GraticuleRenderingParams) {\n initRenderingParams(renderingParams)\n namedParams[key] = renderingParams\n }\n\n private fun initRenderingParams(params: GraticuleRenderingParams) {\n if (params[KEY_DRAW_LINES] == null) params[KEY_DRAW_LINES] = true\n if (params[KEY_LINE_COLOR] == null) params[KEY_LINE_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LINE_WIDTH] == null) params[KEY_LINE_WIDTH] = .5f\n if (params[KEY_LINE_STYLE] == null) params[KEY_LINE_STYLE] = LineStyle.SOLID\n if (params[KEY_DRAW_LABELS] == null) params[KEY_DRAW_LABELS] = true\n if (params[KEY_LABEL_COLOR] == null) params[KEY_LABEL_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LABEL_FONT] == null) params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 12)\n }\n\n private fun applyRenderingParams(params: GraticuleRenderingParams?, text: Label, opacity: Float) {\n if (params != null) {\n // Apply \"label\" properties to the Label.\n var o = params[KEY_LABEL_COLOR]\n if (o is Color) {\n val color = applyOpacity(o, opacity)\n val compArray = FloatArray(3)\n color.toHSV(compArray)\n val colorValue = if (compArray[2] < .5f) 1f else 0f\n text.attributes.textColor = color\n text.attributes.outlineColor = Color(colorValue, colorValue, colorValue, color.alpha)\n }\n o = params[KEY_LABEL_FONT]\n if (o is Font) text.attributes.font = o\n }\n }\n\n private fun applyRenderingParams(key: String, params: GraticuleRenderingParams?, path: Path, opacity: Float) {\n if (params != null) {\n path.attributes = getLineShapeAttributes(key, params, opacity)\n }\n }\n\n private fun getLineShapeAttributes(key: String, params: GraticuleRenderingParams, opacity: Float) =\n namedShapeAttributes[key] ?: createLineShapeAttributes(params, opacity).also { namedShapeAttributes[key] = it }\n\n private fun createLineShapeAttributes(params: GraticuleRenderingParams, opacity: Float): ShapeAttributes {\n val attrs = ShapeAttributes()\n attrs.isDrawInterior = false\n attrs.isDrawOutline = true\n\n // Apply \"line\" properties.\n val color = params[KEY_LINE_COLOR]\n if (color is Color) attrs.outlineColor = applyOpacity(color, opacity)\n val lineWidth = params[KEY_LINE_WIDTH]\n if (lineWidth is Float) attrs.outlineWidth = lineWidth\n val style = params[KEY_LINE_STYLE]\n if (style is LineStyle && style.factor > 0) {\n attrs.outlineImageSource = ImageSource.fromLineStipple(style.factor, style.pattern)\n }\n return attrs\n }\n\n private fun applyOpacity(color: Color, opacity: Float) =\n if (opacity >= 1) color else Color(color.red, color.green, color.blue, color.alpha * opacity)\n}","package earth.worldwind.layer.graticule\n\n/**\n * A line stipple pattern.\n *\n * @param factor specifies the number of times each bit in the pattern is repeated before the next bit is used. For\n * example, if the factor is 3, each bit is repeated three times before using the next bit. The\n * specified factor must be either zero or an integer greater than 0. A factor of 0 indicates no\n * stippling.\n * @param pattern specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and\n * which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16\n * pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is\n * repeated three times before using the next bit.\n */\nenum class LineStyle(val factor: Int, val pattern: Short) {\n SOLID(0, 0x0000),\n DASHED(1, 0xFFE0.toShort()),\n DOTTED(2, 0xCCCC.toShort()),\n DASH_DOTTED(2, 0xFFCC.toShort())\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\n\nclass GridElement(val sector: Sector, val renderable: Renderable, val type: String, val value: Angle) {\n constructor(sector: Sector, renderable: Renderable, type: String): this(sector, renderable, type, ZERO)\n\n fun isInView(rc: RenderContext) = sector.intersectsOrNextTo(rc.terrain.sector)\n\n companion object {\n const val TYPE_LINE = \"GridElement_Line\"\n const val TYPE_LINE_NORTH = \"GridElement_LineNorth\"\n const val TYPE_LINE_SOUTH = \"GridElement_LineSouth\"\n const val TYPE_LINE_WEST = \"GridElement_LineWest\"\n const val TYPE_LINE_EAST = \"GridElement_LineEast\"\n const val TYPE_LINE_NORTHING = \"GridElement_LineNorthing\"\n const val TYPE_LINE_EASTING = \"GridElement_LineEasting\"\n const val TYPE_GRIDZONE_LABEL = \"GridElement_GridZoneLabel\"\n const val TYPE_LONGITUDE_LABEL = \"GridElement_LongitudeLabel\"\n const val TYPE_LATITUDE_LABEL = \"GridElement_LatitudeLabel\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.render.RenderContext\n\ninternal class GridTilesSupport(private val callback: Callback, private val rows: Int, private val cols: Int) {\n internal interface Callback {\n fun createGridTile(sector: Sector): AbstractGraticuleTile\n fun getGridSector(row: Int, col: Int): Sector\n fun getGridColumn(longitude: Angle): Int\n fun getGridRow(latitude: Angle): Int\n fun getProjectedSector(sector: Sector) = sector\n }\n\n private val gridTiles = Array(rows) { arrayOfNulls(cols) }\n\n fun clearTiles() {\n for (row in 0 until rows) for (col in 0 until cols) {\n gridTiles[row][col]?.clearRenderables()\n gridTiles[row][col] = null\n }\n }\n\n /**\n * Select the visible grid elements\n *\n * @param rc the current `RenderContext`.\n */\n fun selectRenderables(rc: RenderContext) {\n val tileList = getVisibleTiles(rc)\n // Select tile visible elements\n for (gt in tileList) gt.selectRenderables(rc)\n }\n\n private fun getVisibleTiles(rc: RenderContext): List {\n val tileList = mutableListOf()\n val vs = callback.getProjectedSector(rc.terrain.sector)\n val gridRectangle = getGridRectangleForSector(vs)\n for (row in gridRectangle.y..gridRectangle.height) {\n for (col in gridRectangle.x..gridRectangle.width) {\n val tile = gridTiles[row][col] ?: callback.createGridTile(callback.getGridSector(row, col)).also {\n gridTiles[row][col] = it\n }\n if (tile.isInView(rc)) tileList.add(tile) else tile.clearRenderables()\n }\n }\n return tileList\n }\n\n private fun getGridRectangleForSector(sector: Sector): Viewport {\n val x1 = callback.getGridColumn(sector.minLongitude)\n val x2 = callback.getGridColumn(sector.maxLongitude)\n val y1 = callback.getGridRow(sector.minLatitude)\n val y2 = callback.getGridRow(sector.maxLatitude)\n return Viewport(x1, y1, x2, y2) // Viewport is used as simple integer rectangle\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.HelmertParameters\nimport earth.worldwind.geom.coords.HelmertTransformation\nimport earth.worldwind.layer.graticule.AbstractGraticuleLayer\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GridTilesSupport\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport kotlin.math.floor\n\nclass GKGraticuleLayer(\n private val toWgsParameters: HelmertParameters = HelmertParameters.SK42_WGS84,\n private val fromWgsParameters: HelmertParameters = HelmertParameters.WGS84_SK42\n) : AbstractGraticuleLayer(\"Gauss-Kruger Graticule\"), GridTilesSupport.Callback {\n /**\n * Show 25k and 10k sheets when metric graticule becomes visible\n */\n var showDetailedSheets = false\n /**\n * Maximal visibility distance for 1km grid labels\n */\n var thresholdFor1kLabels = GK_MAX_RESOLUTION_25_000 * 2.0\n /**\n * Maximal visibility distance for 2km grid labels\n */\n var thresholdFor2kLabels = GK_MAX_RESOLUTION_50_000 * 2.0\n\n private val gridTilesSupport = GridTilesSupport(this, 46, 60)\n private val overview = GKOverview(this)\n private val metricLabels = GKMetricLabels(this )\n private var metricLabelScale = 0\n\n override val orderedTypes = listOf(\n GRATICULE_GK_OVERVIEW,\n GRATICULE_GK_1_000_000,\n GRATICULE_GK_500_000,\n GRATICULE_GK_200_000,\n GRATICULE_GK_100_000,\n GRATICULE_GK_50_000,\n GRATICULE_GK_25_000,\n GRATICULE_GK_10_000\n )\n\n override fun initRenderingParams() {\n var params = GraticuleRenderingParams()\n params[GraticuleRenderingParams.KEY_LINE_COLOR] = Color(0, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_COLOR] = Color(0, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_FONT] = Font(\"arial\", FontWeight.NORMAL, 11)\n setRenderingParams(GK_METRIC_GRID_2000, params)\n setRenderingParams(GK_METRIC_GRID_1000, params)\n\n params = GraticuleRenderingParams()\n params[GraticuleRenderingParams.KEY_LINE_COLOR] = Color(255, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_COLOR] = Color(255, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_FONT] = Font(\"arial\", FontWeight.NORMAL, 13)\n setRenderingParams(GRATICULE_GK_OVERVIEW, params)\n setRenderingParams(GRATICULE_GK_1_000_000, params)\n setRenderingParams(GRATICULE_GK_500_000, params)\n setRenderingParams(GRATICULE_GK_200_000, params)\n setRenderingParams(GRATICULE_GK_100_000, params)\n setRenderingParams(GRATICULE_GK_50_000, params)\n setRenderingParams(GRATICULE_GK_25_000, params)\n setRenderingParams(GRATICULE_GK_10_000, params)\n }\n\n override fun selectRenderables(rc: RenderContext) {\n metricLabelScale = 0\n if (rc.camera.position.altitude < GK_MAX_RESOLUTION_OVERVIEW) {\n gridTilesSupport.selectRenderables(rc)\n metricLabels.selectRenderables(rc, metricLabelScale)\n } else {\n overview.selectRenderables(rc)\n }\n }\n\n override fun getGridSector(row: Int, col: Int): Sector {\n var minLat = -92.0 + row * 4\n var maxLat = minLat + 4\n if (row == 0) {\n minLat = -90.0\n maxLat = -88.0\n } else if (row == 45) {\n maxLat = 90.0\n minLat = 88.0\n }\n val minLon = -180.0 + col * 6\n val maxLon = minLon + 6\n return Sector.fromDegrees(minLat, minLon, maxLat - minLat, maxLon - minLon)\n }\n\n override fun getGridColumn(longitude: Angle) = floor((longitude.inDegrees + 180) / 6.0).toInt().coerceAtMost(59)\n\n override fun getProjectedSector(sector: Sector) = Sector().apply {\n union(transformFromWGS(Position(sector.minLatitude, sector.minLongitude, 0.0)))\n union(transformFromWGS(Position(sector.minLatitude, sector.maxLongitude, 0.0)))\n union(transformFromWGS(Position(sector.maxLatitude, sector.minLongitude, 0.0)))\n union(transformFromWGS(Position(sector.maxLatitude, sector.maxLongitude, 0.0)))\n }\n\n fun getUnprojectedSector(sector: Sector) = Sector().apply {\n union(transformToWGS(Position(sector.minLatitude, sector.minLongitude, 0.0)))\n union(transformToWGS(Position(sector.minLatitude, sector.maxLongitude, 0.0)))\n union(transformToWGS(Position(sector.maxLatitude, sector.minLongitude, 0.0)))\n union(transformToWGS(Position(sector.maxLatitude, sector.maxLongitude, 0.0)))\n }\n\n fun transformFromWGS(position: Position, result: Position = Position()) : Position {\n //TODO Fix the the problem with coordinates conversion around the end of WGS84 coordinate system\n position.latitude.inDegrees.coerceIn(-88.0, 88.0).also { position.latitude = it.degrees }\n position.longitude.inDegrees.coerceAtLeast(-179.8).also { position.longitude = it.degrees }\n return HelmertTransformation.transform(position, fromWgsParameters, result)\n }\n\n fun transformToWGS(position: Position, result: Position = Position()) =\n HelmertTransformation.transform(position, toWgsParameters, result)\n\n override fun getGridRow(latitude: Angle) = when {\n latitude.inDegrees < - 88.0 -> 0\n latitude.inDegrees > 88.0 -> 45\n else -> floor(((latitude.inDegrees + 88.0) / 4.0) + 1.0).toInt().coerceAtMost(45)\n }\n\n override fun getTypeFor(resolution: Double) = when {\n resolution >= GK_MAX_RESOLUTION_1_000_000 -> GRATICULE_GK_1_000_000\n resolution >= GK_MAX_RESOLUTION_500_000 -> GRATICULE_GK_500_000\n resolution >= GK_MAX_RESOLUTION_200_000 -> GRATICULE_GK_200_000\n resolution >= GK_MAX_RESOLUTION_100_000 -> GRATICULE_GK_100_000\n resolution >= GK_MAX_RESOLUTION_50_000 -> GRATICULE_GK_50_000\n resolution >= GK_MAX_RESOLUTION_25_000 -> GRATICULE_GK_25_000\n else -> GRATICULE_GK_10_000\n }\n\n fun getDistanceFor(type: String) = when(type) {\n GRATICULE_GK_1_000_000 -> GK_MAX_RESOLUTION_1_000_000\n GRATICULE_GK_500_000 -> GK_MAX_RESOLUTION_500_000\n GRATICULE_GK_200_000 -> GK_MAX_RESOLUTION_200_000\n GRATICULE_GK_100_000 -> GK_MAX_RESOLUTION_100_000\n GRATICULE_GK_50_000 -> GK_MAX_RESOLUTION_50_000\n GRATICULE_GK_25_000 -> GK_MAX_RESOLUTION_25_000\n else -> GK_MAX_RESOLUTION_10_000\n }\n\n override fun createGridTile(sector: Sector) = GKGraticuleTile(this, sector, GRATICULE_GK_1_000_000)\n\n fun addMetricLabel(label: Label) = metricLabels.addLabel(label)\n\n fun setMetricLabelScale(value: Int) {\n if (isZeroOrMinimalValue(value)) metricLabelScale = value\n }\n\n private fun isZeroOrMinimalValue(value: Int) =\n value == 0 || (value > 0 && metricLabelScale == 0) || (metricLabelScale != 0 && value < metricLabelScale)\n\n companion object {\n const val GRATICULE_GK_OVERVIEW = \"Graticule.GK.Overview\"\n const val GK_MAX_RESOLUTION_OVERVIEW = 15e5\n const val GRATICULE_GK_1_000_000 = \"Graticule.GK.1_000_000\"\n const val GK_MAX_RESOLUTION_1_000_000 = 1e6\n const val GRATICULE_GK_500_000 = \"Graticule.GK.500_000\"\n const val GK_MAX_RESOLUTION_500_000 = 5e5\n const val GRATICULE_GK_200_000 = \"Graticule.GK.200_000\"\n const val GK_MAX_RESOLUTION_200_000 = 2e5\n const val GRATICULE_GK_100_000 = \"Graticule.GK.100_000\"\n const val GK_MAX_RESOLUTION_100_000 = 1e5\n const val GRATICULE_GK_50_000 = \"Graticule.GK.50_000\"\n const val GK_MAX_RESOLUTION_50_000 = 35e3\n const val GRATICULE_GK_25_000 = \"Graticule.GK.25_000\"\n const val GK_MAX_RESOLUTION_25_000 = 15e3\n const val GRATICULE_GK_10_000 = \"Graticule.GK.10_000\"\n const val GK_MAX_RESOLUTION_10_000 = 8e3\n const val GK_METRIC_GRID_1000 = \"GK.Metric.Grid.1000x1000\"\n const val GK_METRIC_GRID_2000 = \"GK.Metric.Grid.2000x2000\"\n\n val MILLION_COOL_NAME = arrayOf(\"SZ\", \"SV\", \"SU\", \"ST\", \"SS\", \"SR\", \"SQ\", \"SP\", \"SO\", \"SN\",\n \"SM\", \"SL\", \"SK\", \"SJ\", \"SI\", \"SH\", \"SG\", \"SF\", \"SE\", \"SD\", \"SC\", \"SB\", \"SA\",\"A\", \"B\", \"C\", \"D\",\n \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"Z\")\n\n val ENDING_200_000_MAP = arrayOf(\"І\", \"ІІ\", \"ІІІ\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\", \"X\",\n \"XI\", \"XII\", \"XIII\", \"XIV\", \"XV\", \"XVI\", \"XVII\", \"XVIII\", \"XIX\", \"XX\",\n \"XXI\", \"XXII\", \"XXIII\", \"XXIV\", \"XXV\", \"XXVI\", \"XXVII\", \"XXVIII\", \"XXIX\", \"XXX\",\n \"XXXI\", \"XXXII\", \"XXXIII\", \"XXXIV\", \"XXXV\", \"XXXVI\")\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_1000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_2000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_10_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_25_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_500_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_50_000\nimport earth.worldwind.layer.graticule.gk.GKLayerHelper.getNameByCoord\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\nprivate const val POINTS_IN_LINE = 3\n\nclass GKGraticuleTile(\n layer: GKGraticuleLayer, private val gkSector: Sector, private val tileType: String, previousName: String = \"\",\n private val countInParent: Int = 0, private val childNumber: Int = 0\n) : AbstractGraticuleTile(layer, layer.getUnprojectedSector(gkSector)) {\n private val name = getNameByCoord(gkSector.centroidLatitude, gkSector.centroidLongitude, tileType, previousName)\n private var subTiles: List? = null\n private var metricSquares: GKMetricGrid? = null\n private var renderWithNeighbors = true\n\n override val layer get() = super.layer as GKGraticuleLayer\n\n override fun selectRenderables(rc: RenderContext) {\n // TODO Remove workaround and add logic for 30th zone after fix of Path drawing at -179 to +179 longitude\n if (GKLayerHelper.getZone(gkSector.centroidLongitude) == 30) return\n\n super.selectRenderables(rc)\n val distanceToTile = if (rc.globe.is2D) rc.viewingDistance else nearestPoint(rc).distanceTo(rc.cameraPoint)\n val appropriateType = layer.getTypeFor(distanceToTile)\n enableRenderingForChildTile(appropriateType, distanceToTile)\n for (ge in gridElements) {\n if (ge.type == GridElement.TYPE_GRIDZONE_LABEL) renderLabel(appropriateType, rc, ge)\n else if (ge.isInView(rc)) layer.addRenderable(ge.renderable, tileType)\n }\n renderMetricGraticule()\n if (shouldCreateSubTile(distanceToTile)) {\n val subTiles = subTiles ?: createSubTiles().also { subTiles = it }\n for (subTile in subTiles) {\n if (subTile.isInView(rc)) subTile.selectRenderables(rc) //else subTile.clearRenderables()\n }\n }\n }\n\n private fun renderLabel(appropriateType: String, rc: RenderContext, label: GridElement) {\n if (shouldRenderLabel(appropriateType, rc)) layer.addRenderable(label.renderable, tileType)\n }\n\n private fun shouldRenderLabel(type: String, rc: RenderContext) =\n (((type == tileType || renderWithNeighbors) && shouldRenderSmallScale()) || shouldRenderMinimalScale()) && isInView(rc)\n\n private fun shouldRenderMinimalScale() = !layer.showDetailedSheets && tileType == GRATICULE_GK_50_000\n\n private fun shouldRenderSmallScale() =\n !(!layer.showDetailedSheets && (tileType == GRATICULE_GK_25_000 || tileType == GRATICULE_GK_10_000))\n\n private fun renderMetricGraticule() {\n if (tileType == GRATICULE_GK_25_000) {\n layer.setMetricLabelScale(2000)\n metricSquares?.selectRenderables(GK_METRIC_GRID_2000)\n } else if (tileType == GRATICULE_GK_10_000) {\n layer.setMetricLabelScale(1000)\n metricSquares?.selectRenderables(GK_METRIC_GRID_1000)\n }\n }\n\n private fun enableRenderingForChildTile(type: String, distanceToTile: Double) {\n val typeWithBiggerScale = getTypeWithBiggerScale()\n if (type == typeWithBiggerScale) {\n renderWithNeighbors = false\n subTiles?.forEach { it.renderWithNeighbors = true }\n } else if ( distanceToTile < layer.getDistanceFor(typeWithBiggerScale)) {\n renderWithNeighbors = false\n }\n }\n\n private fun shouldCreateSubTile(distanceToTile: Double) =\n distanceToTile <= layer.getDistanceFor(tileType) && tileType != GRATICULE_GK_10_000\n\n override fun clearRenderables() {\n super.clearRenderables()\n metricSquares?.clearRenderables()\n subTiles?.forEach { it.clearRenderables() }.also { subTiles = null }\n }\n\n private fun createSubTiles(): List {\n val newType = getTypeWithBiggerScale()\n val div = if (tileType == GRATICULE_GK_500_000) 3 else 2\n var count = 1\n return subdivide(div, gkSector).map { GKGraticuleTile(layer, it, newType, name, div*div, count++) }\n }\n\n private fun getTypeWithBiggerScale() = layer.getTypeFor(layer.getDistanceFor(tileType) * 0.8)\n\n override fun createRenderables() {\n super.createRenderables()\n\n if(!name.startsWith(\"Z\") && !name.startsWith(\"SZ\")){\n // TODO Fix problem with Z zone and add logic for maps under 60 parallels\n // TODO Fix problem related with transformation near the end of graticule zones\n if (shouldRenderSmallScale()) {\n generateMeridiansAndParallels()\n createLabels()\n }\n createMetricGraticule()\n }\n }\n\n private fun generateMeridiansAndParallels() {\n if (shouldGenerateMeridian()) generateWestMeridian()\n if (shouldGenerateParallel()) generateNorthParallel()\n }\n\n private fun shouldGenerateMeridian() = countInParent == 0 ||\n countInParent == 4 && (childNumber == 2 || childNumber == 4) ||\n countInParent == 9 && (childNumber == 2 || childNumber == 3 ||\n childNumber == 5 || childNumber == 6 || childNumber == 8 || childNumber == 9)\n\n private fun shouldGenerateParallel() =\n countInParent == 0 || countInParent == 4 && childNumber >= 3 || countInParent == 9 && childNumber >= 4\n\n private fun generateWestMeridian() {\n val minLon = gkSector.minLongitude\n val minLat = gkSector.minLatitude\n val latStep = gkSector.deltaLatitude.inDegrees / POINTS_IN_LINE\n val positions = mutableListOf()\n for (i in 0..POINTS_IN_LINE) positions.add(\n layer.transformToWGS(Position(minLat.plusDegrees(i * latStep), minLon, 0.0)))\n val westLine = layer.createLineRenderable(positions, PathType.LINEAR)\n gridElements.add(GridElement(sector, westLine, GridElement.TYPE_LINE_WEST, minLon))\n }\n\n private fun generateNorthParallel() {\n val minLon = gkSector.minLongitude\n val minLat = gkSector.minLatitude\n val positions = mutableListOf()\n val lonStep = gkSector.deltaLongitude.inDegrees / POINTS_IN_LINE\n for (i in 0..POINTS_IN_LINE) positions.add(\n layer.transformToWGS(Position(minLat, minLon.plusDegrees(i * lonStep), 0.0)))\n val northLine = layer.createLineRenderable(positions, PathType.LINEAR)\n gridElements.add(GridElement(sector, northLine, GridElement.TYPE_LINE_NORTH, minLat))\n }\n\n private fun createLabels() {\n val labelPos = Position(sector.centroidLatitude, sector.centroidLongitude, 0.0)\n val text = layer.createTextRenderable(labelPos, name, layer.getDistanceFor(tileType))\n text.attributes.isOutlineEnabled = false\n gridElements.add(GridElement(sector, text, GridElement.TYPE_GRIDZONE_LABEL))\n }\n\n private fun createMetricGraticule() {\n when (tileType) {\n GRATICULE_GK_25_000 -> {\n val squares = metricSquares ?: GKMetricGrid(layer, sector, gkSector, 2000.0).also { metricSquares = it }\n squares.createRenderables()\n }\n GRATICULE_GK_10_000 -> {\n val squares = metricSquares ?: GKMetricGrid(layer, sector, gkSector, 1000.0).also { metricSquares = it }\n squares.createRenderables()\n }\n }\n }\n}\n","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_100_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_1_000_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_200_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_25_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_500_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_50_000\nimport kotlin.jvm.JvmStatic\n\nobject GKLayerHelper {\n private const val Z_ZONE_LATITUDE = 88\n private const val MAX_LONGITUDE = 180\n private const val LATITUDE_1M_MAP = 4\n private const val LONGITUDE_1M_MAP = 6\n private const val LATITUDE_200K_MAP = 0.4 / 60.0 * 100.0 // 40 minutes\n private const val LATITUDE_100K_MAP = 0.2 / 60.0 * 100.0 // 20 minutes\n private const val LATITUDE_50K_MAP = 0.1 / 60.0 * 100.0 // 10 minutes\n private const val LATITUDE_25K_MAP = 0.05 / 60.0 * 100.0 // 10 minutes\n private const val LATITUDE_10K_MAP = 0.025 / 60.0 * 100.0 // 10 minutes\n\n /**\n * Get zone number by Gauss-Kruger longitude\n *\n * @param longitude Gauss-Kruger longitude\n * @return Corresponding zone number\n */\n @JvmStatic\n fun getZone(longitude: Angle) = if (longitude.inDegrees >= 0) longitude.inDegrees.toInt() / 6 + 1\n else (longitude.inDegrees + 180.0).toInt() / 6 + 31\n\n /**\n * The method returns coordinates of intersection lines.\n * The method doesn't check that the lines have an intersection\n * and will work incorrectly if the intersection is absent.\n *\n * The method returns GKCoordinate of intersection the lines or if\n * lines are parallel the method returns null\n */\n @JvmStatic\n fun intersect(\n x1: Double, y1: Double, x2: Double, y2: Double, x3: Double, y3: Double, x4: Double, y4: Double\n ): GKCoord? {\n val a1 = y2 - y1\n val b1 = x1 - x2\n val c1 = a1 * x1 + b1 * y1\n\n val a2 = y4 - y3\n val b2 = x3 - x4\n val c2 = a2 * x3 + b2 * y3\n\n val determinant = a1 * b2 - a2 * b1\n\n return if (determinant != 0.0) {\n val x = (b2 * c1 - b1 * c2) / determinant\n val y = (a1 * c2 - a2 * c1) / determinant\n GKCoord.fromXY(x, y)\n } else null // The lines are parallel.\n }\n\n @JvmStatic\n fun getNameByCoord(\n latitude: Angle, longitude: Angle, type: String = GRATICULE_GK_1_000_000, previousScaleName: String = \"\"\n ): String = when(type) {\n GRATICULE_GK_1_000_000 -> getMillionNameByCoord(latitude, longitude)\n GRATICULE_GK_500_000 -> previousScaleName.ifEmpty { getMillionNameByCoord (latitude, longitude) } +\n get500kPrefix(latitude, longitude)\n GRATICULE_GK_200_000 -> getMillionNameByCoord(latitude, longitude) + get200kPrefix(latitude, longitude)\n GRATICULE_GK_100_000 -> getMillionNameByCoord(latitude, longitude) + get100kPrefix(latitude, longitude)\n GRATICULE_GK_50_000 -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_100_000) } +\n get50kPrefix(latitude, longitude)\n GRATICULE_GK_25_000 -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_50_000) } +\n get25kPrefix(latitude, longitude)\n else -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_25_000) } +\n get10kPrefix(latitude, longitude)\n }\n\n @JvmStatic\n private fun get500kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 1 -((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / 2).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP / 3 ).toInt()\n val num = rowFromTop * 2 + col\n return when (num) {\n 0 -> \"-A\"\n 1 -> \"-Б\"\n 2 -> \"-В\"\n else -> \"-Г\"\n }\n }\n\n @JvmStatic\n private fun get200kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 5 -((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / LATITUDE_200K_MAP).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP).toInt()\n val num = rowFromTop * LONGITUDE_1M_MAP + col\n val romaNumber = GKGraticuleLayer.ENDING_200_000_MAP[num]\n return \"-$romaNumber\"\n }\n\n @JvmStatic\n private fun get100kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 11 - ((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / LATITUDE_100K_MAP).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP) / 0.5).toInt() + 1\n val num = rowFromTop * 12 + col\n return \"-$num\"\n }\n\n @JvmStatic\n private fun get50kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf100Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_100K_MAP).toInt()\n val rowFromTop = 1 -((latitude.inDegrees + Z_ZONE_LATITUDE - countOf100Maps * LATITUDE_100K_MAP)/ LATITUDE_50K_MAP).toInt()\n countOf100Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.5).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) - countOf100Maps * 0.5) / 0.25).toInt()\n val num = rowFromTop * 2 + col\n return when(num) {\n 0 -> \"-A\"\n 1 -> \"-Б\"\n 2 -> \"-В\"\n else -> \"-Г\"\n }\n }\n\n @JvmStatic\n private fun get25kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf50Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_50K_MAP).toInt()\n val rowFromTop = 1 -(((latitude.inDegrees + Z_ZONE_LATITUDE) - countOf50Maps * LATITUDE_50K_MAP)/ LATITUDE_25K_MAP).toInt()\n countOf50Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.25).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) - countOf50Maps * 0.25) / 0.125).toInt()\n val num = rowFromTop * 2 + col\n return when(num) {\n 0 -> \"-a\"\n 1 -> \"-б\"\n 2 -> \"-в\"\n else -> \"-г\"\n }\n }\n\n @JvmStatic\n private fun get10kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf50Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_25K_MAP).toInt()\n val rowFromTop = 1 - ((latitude.inDegrees + Z_ZONE_LATITUDE - countOf50Maps * LATITUDE_25K_MAP) / LATITUDE_10K_MAP).toInt()\n countOf50Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.125).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE - countOf50Maps * 0.125) / 0.0625).toInt() + 1\n val num = rowFromTop * 2 + col\n return \"-$num\"\n }\n\n @JvmStatic\n private fun getMillionNameByCoord(latitude: Angle, longitude: Angle): String {\n if(latitude.inDegrees >= Z_ZONE_LATITUDE) return GKGraticuleLayer.MILLION_COOL_NAME[45]\n if(latitude.inDegrees < -Z_ZONE_LATITUDE) return GKGraticuleLayer.MILLION_COOL_NAME[0]\n //TODO Add for 12 and 24 grade zone.\n val col = getMillionColumnIndex(longitude.inDegrees)\n return GKGraticuleLayer.MILLION_COOL_NAME[getMillionRowIndex(latitude.inDegrees)] + \"-\" +\n if (col< 9) \"0\" + (col + 1) else (col + 1)\n }\n\n @JvmStatic\n fun getMillionRowIndex(latitude: Double) = ((latitude + Z_ZONE_LATITUDE + LATITUDE_1M_MAP) / LATITUDE_1M_MAP).toInt()\n\n @JvmStatic\n fun getMillionColumnIndex(longitude: Double) =\n ((longitude + MAX_LONGITUDE) / LONGITUDE_1M_MAP).toInt().coerceAtMost(59)\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_1000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_2000\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_SCALE_TYPE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_KEY\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_X_VALUE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_Y_VALUE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_X_KEY\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_Y_KEY\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\nimport kotlin.math.abs\n\nprivate const val SMALL_VALUE_TO_BEE_IN_ZONE = 0.000000000001\n\nclass GKMetricGrid(\n layer: GKGraticuleLayer, sector: Sector, gkSector: Sector, private val scale: Double\n): AbstractGraticuleTile(layer, sector) {\n private val zone = GKLayerHelper.getZone(gkSector.centroidLongitude)\n private var zoneExtremes = ZoneExtremes(\n GKCoord.fromLatLon(gkSector.minLatitude, gkSector.minLongitude, zone),\n GKCoord.fromLatLon(gkSector.minLatitude, if (zone != 60) gkSector.maxLongitude else gkSector.maxLongitude.minusDegrees(SMALL_VALUE_TO_BEE_IN_ZONE), zone),\n GKCoord.fromLatLon(gkSector.maxLatitude, if (zone != 60) gkSector.maxLongitude else gkSector.maxLongitude.minusDegrees(SMALL_VALUE_TO_BEE_IN_ZONE), zone),\n GKCoord.fromLatLon(gkSector.maxLatitude, gkSector.minLongitude, zone)\n )\n\n override val layer get() = super.layer as GKGraticuleLayer\n\n fun selectRenderables(lineType :String) = gridElements.forEach {\n if (it.type == lineType) {\n layer.addRenderable(it.renderable, lineType)\n } else if (it.type == METRIC_LABEL && it.renderable is Label) {\n layer.addMetricLabel(it.renderable)\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val xMinZone = minOf(zoneExtremes.minXMinY.x, zoneExtremes.minXMaxY.x)\n val xMaxZone = maxOf(zoneExtremes.maxXMinY.x, zoneExtremes.maxXMaxY.x)\n val yMinZone = maxOf(zoneExtremes.minXMinY.y, zoneExtremes.maxXMinY.y)\n val yMaxZone = minOf(zoneExtremes.maxXMaxY.y, zoneExtremes.minXMaxY.y)\n\n val firstRow = (xMinZone / scale).toInt()\n val lastRow = (xMaxZone / scale).toInt()\n val firstCol = (yMinZone / scale).toInt()\n val lastCol = (yMaxZone / scale).toInt()\n\n createLinesAndLabels(firstRow, lastRow, firstCol, lastCol)\n createYLineThatIntersectCorners(firstCol, firstRow, lastRow, lastCol)\n }\n\n private fun createLinesAndLabels(firstRow: Int, lastRow: Int, firstCol: Int, lastCol: Int) {\n for (row in firstRow..lastRow) {\n val startX = row.toDouble() * scale\n val nextX = row.toDouble() * scale + scale\n\n for (col in firstCol..lastCol) {\n val startY = col * scale\n val startPoint = getWGSPositionFromXY(startX, startY)\n\n if (row != firstRow) {\n // Creat x line\n val nextY = col * scale + scale\n val movedByYPoint = getWGSPositionFromXY(startX, nextY)\n when (col) {\n firstCol -> {\n // Create correct intersection with west map\n val intersectPoint = intersect(\n zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, startY, startX, nextY\n )\n lineWithIntersection(intersectPoint, movedByYPoint)\n addLabel(startPoint, col, row, LABEL_TYPE_X_VALUE)\n }\n lastCol -> {\n // Create correct intersection with east map\n val intersectPoint = intersect(\n zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, startY, startX, nextY\n )\n lineWithIntersection(intersectPoint, startPoint)\n }\n else -> createLine(startPoint, movedByYPoint) // Main x lines (x lines in center of square)\n }\n }\n if (col != firstCol) {\n // Create y line\n val movedByXPoint = getWGSPositionFromXY(nextX, startY)\n when (row) {\n firstRow -> {\n // Create correct intersection with south map\n val intersectPoint = intersect(\n zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, startY, nextX, startY\n )\n lineWithIntersection(intersectPoint, movedByXPoint)\n addLabel(startPoint, col, row, LABEL_TYPE_Y_VALUE)\n }\n lastRow -> {\n // Create correct intersection with north map\n val intersectPoint = intersect(\n zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, startY, nextX, startY\n )\n lineWithIntersection(intersectPoint, startPoint)\n }\n else -> createLine(startPoint, movedByXPoint) // Main y lines (lines in center of square)\n }\n }\n }\n }\n }\n\n private fun createYLineThatIntersectCorners(firstCol: Int, firstRow: Int, lastRow: Int, lastCol: Int) {\n val firstY = firstCol * scale\n if (zoneExtremes.minXMinY.y < zoneExtremes.maxXMinY.y && zoneExtremes.minXMinY.y <= firstY) {\n // Create metric graticule y line that intersects west and south boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectWest = intersect(zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, firstY, lastX, firstY)\n val intersectSouth = intersect(zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, firstY, lastX, firstY)\n createLine(intersectSouth, intersectWest)\n } else if (zoneExtremes.maxXMinY.y < zoneExtremes.minXMinY.y && zoneExtremes.maxXMinY.y <= firstY) {\n // Create metric graticule y line that intersects west and north boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectWest = intersect(zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, firstY, lastX, firstY)\n val intersectNorth = intersect( zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, firstY, lastX, firstY)\n createLine(intersectWest, intersectNorth)\n }\n val lastY = lastCol * scale + scale\n if (zoneExtremes.maxXMaxY.y < zoneExtremes.minXMaxY.y && zoneExtremes.minXMaxY.y >= lastY) {\n // Create metric graticule y line that intersects east and south boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectEast = intersect(zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n val intersectSouth = intersect(zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, lastY, lastX, lastY)\n createLine(intersectSouth,intersectEast)\n } else if (zoneExtremes.minXMaxY.y < zoneExtremes.maxXMaxY.y && zoneExtremes.maxXMaxY.y >= lastY) {\n // Create metric graticule y line that intersects east and north boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectNorth = intersect(zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n val intersectEast = intersect(zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n createLine(intersectNorth, intersectEast)\n }\n }\n\n private fun addLabel(point: Position, col: Int, row:Int, labelType: String) {\n val label = if (labelType == LABEL_TYPE_Y_VALUE) labelBy(col) else labelBy(row)\n val text = layer.createTextRenderable(point, label, scale)\n text.attributes.textOffset = Offset.center()\n text.putUserProperty(LABEL_TYPE_KEY, labelType)\n text.putUserProperty(LABEL_SCALE_TYPE, scale.toInt())\n text.putUserProperty(LABEL_X_KEY, row * scale)\n text.putUserProperty(LABEL_Y_KEY, col * scale)\n gridElements.add(GridElement(sector, text, METRIC_LABEL))\n }\n\n private fun createLine(firstPosition: GKCoord?, nextPosition: GKCoord?) {\n if (firstPosition != null && nextPosition != null) {\n createLine(getWGSPositionFromXY(firstPosition), getWGSPositionFromXY(nextPosition))\n }\n }\n private fun lineWithIntersection(intersectPoint: GKCoord?, anotherPoint: Position) {\n if (intersectPoint != null) createLine(anotherPoint, getWGSPositionFromXY(intersectPoint))\n }\n\n private fun createLine(startPoint: Position, movedByXPoint: Position) {\n val lineX = layer.createLineRenderable(mutableListOf(startPoint, movedByXPoint), PathType.LINEAR)\n gridElements.add(GridElement(sector, lineX, getTypeLine(), sector.maxLongitude))\n }\n\n\n private fun intersect(point1: GKCoord, point2: GKCoord, x3: Double, y3: Double, x4: Double, y4: Double)=\n GKLayerHelper.intersect(point1.x, point1.y, point2.x, point2.y, x3, y3, x4, y4)\n\n private fun labelBy(rowOrCol: Int) = (\"0\" + abs(rowOrCol * scale / 1000).toInt()).takeLast(2)\n\n private fun getTypeLine() = if (scale == SCALE_1000) GK_METRIC_GRID_1000 else GK_METRIC_GRID_2000\n\n private fun getWGSPositionFromXY(x: Double, y:Double): Position{\n val point = GKCoord.fromXY(x,y)\n return layer.transformToWGS(Position(point.latitude, point.longitude, 0.0))\n }\n\n private fun getWGSPositionFromXY(point: GKCoord) = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0))\n\n private class ZoneExtremes(val minXMinY: GKCoord, val minXMaxY: GKCoord, val maxXMaxY:GKCoord, val maxXMinY:GKCoord)\n\n companion object {\n const val SCALE_1000 = 1000.0\n const val METRIC_LABEL = \"metric.label\"\n }\n}\n","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\n\nclass GKMetricLabels(private val layer: GKGraticuleLayer) {\n private val xLabels = mutableMapOf()\n private val yLabels = mutableMapOf()\n private val removeLabel = mutableListOf()\n\n fun selectRenderables(rc: RenderContext, scale: Int) {\n if (scale == 0 || xLabels.isEmpty() && yLabels.isEmpty()) return\n\n val (x, y) = labelLineIntersectionPoint(rc)\n\n for (label in xLabels) {\n if (shouldClean(rc, label.value ,scale)) removeLabel.add(label.key)\n else renderLabel(LABEL_TYPE_X_VALUE, label.value, x, y)\n }\n removeLabels(LABEL_TYPE_X_VALUE)\n\n for (label in yLabels) {\n if (shouldClean(rc, label.value ,scale)) removeLabel.add(label.key)\n else renderLabel(LABEL_TYPE_Y_VALUE, label.value, x, y)\n }\n removeLabels(LABEL_TYPE_Y_VALUE)\n }\n\n fun addLabel(label: Label) {\n val labelType = getLabelType(label) ?: return\n val id = getLabelId(label, labelType) ?: return\n\n if (labelType == LABEL_TYPE_X_VALUE) {\n if (!xLabels.contains(id)) xLabels[id] = label\n } else if (labelType == LABEL_TYPE_Y_VALUE) {\n if (!yLabels.contains(id)) yLabels[id] = label\n }\n }\n\n private fun getLabelType(label: Label) = label.getUserProperty(LABEL_TYPE_KEY)\n\n private fun removeLabels(labelType: String) {\n if (labelType == LABEL_TYPE_X_VALUE) removeLabel.forEach { labelId -> xLabels.remove(labelId) }\n if (labelType == LABEL_TYPE_Y_VALUE) removeLabel.forEach { labelId -> yLabels.remove(labelId) }\n removeLabel.clear()\n }\n\n private fun getLabelId(label: Label, labelType:String): String? {\n val scale = label.getUserProperty(LABEL_SCALE_TYPE) ?: return null\n val coord = when (labelType) {\n LABEL_TYPE_X_VALUE -> label.getUserProperty(LABEL_X_KEY)\n LABEL_TYPE_Y_VALUE -> label.getUserProperty(LABEL_Y_KEY)\n else -> null\n } ?: return null\n val ew = if (label.position.longitude.inDegrees >= 0.0) \"E\" else \"W\"\n val ns = if (label.position.latitude.inDegrees >= 0.0) \"N\" else \"S\"\n return \"$coord$ns$ew$scale\"\n }\n\n private fun renderLabel(labelType: String, label: Label, x: Double, y: Double) {\n val scale = label.getUserProperty(LABEL_SCALE_TYPE) ?: return\n if (labelType == LABEL_TYPE_Y_VALUE) {\n val yLabel = label.getUserProperty(LABEL_Y_KEY) ?: return\n val point = GKCoord.fromXY(x,yLabel)\n if (checkIfOutOfZone(point, yLabel)) return\n label.position = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0), label.position)\n } else if (labelType == LABEL_TYPE_X_VALUE) {\n val xLabel = label.getUserProperty(LABEL_X_KEY) ?: return\n val point = GKCoord.fromXY(xLabel,y)\n label.position = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0), label.position)\n }\n layer.addRenderable(label, getTypeBy(scale))\n }\n\n private fun checkIfOutOfZone(point: GKCoord, yLabel: Double) =\n (yLabel / 1E6).toInt() != GKLayerHelper.getZone(point.longitude)\n\n private fun labelLineIntersectionPoint(rc: RenderContext): Pair {\n val eastingOffset = rc.viewport.width * rc.pixelSize / 4\n val northOffset = rc.viewport.height * rc.pixelSize / 4\n val lookAtPosition = rc.lookAtPosition ?: rc.camera.position\n val centerGK = layer.transformFromWGS(\n Position(lookAtPosition.latitude, lookAtPosition.longitude, 0.0)\n )\n val centerXY = GKCoord.fromLatLon(centerGK.latitude, centerGK.longitude)\n return Pair(centerXY.x - northOffset, centerXY.y - eastingOffset)\n }\n\n private fun shouldClean(rc: RenderContext, label: Label, scale: Int) =\n isNotInScale(label, scale) || tooFar(rc, label.position, scale)\n\n private fun isNotInScale(label: Label, scale: Int) =\n scale == 0 || scale > (label.getUserProperty(LABEL_SCALE_TYPE) ?: 0)\n\n private fun tooFar(rc: RenderContext, position: Position, scale: Int) = rc.cameraPoint.distanceTo(\n rc.globe.geographicToCartesian(position.latitude, position.longitude, 0.0, Vec3())\n ) > getDistanceBy(scale)\n\n private fun getTypeBy(scale: Int) = if (scale == 1000) TYPE_LABEL_1000 else TYPE_LABEL_2000\n\n private fun getDistanceBy(scale: Int) = if (scale == 1000) layer.thresholdFor1kLabels else layer.thresholdFor2kLabels\n\n companion object {\n const val LABEL_TYPE_KEY = \"label.name\"\n const val LABEL_TYPE_X_VALUE = \"X\"\n const val LABEL_TYPE_Y_VALUE = \"Y\"\n const val LABEL_X_KEY = \"label.x\"\n const val LABEL_Y_KEY = \"label.y\"\n const val LABEL_SCALE_TYPE = \"label.scale.type\"\n const val TYPE_LABEL_1000 = \"label.1000\"\n const val TYPE_LABEL_2000 = \"label.2000\"\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Position.Companion.fromDegrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LATITUDE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LONGITUDE_LABEL\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.MILLION_COOL_NAME\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\n\ninternal class GKOverview(layer: GKGraticuleLayer): AbstractGraticuleTile(layer, Sector().setFullSphere()) {\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val labelPos = layer.computeLabelOffset(rc)\n for (ge in gridElements) {\n if (ge.isInView(rc)) {\n if (ge.renderable is Label) {\n val gt = ge.renderable\n if (labelPos.latitude.inDegrees < 72 || !\"*32*34*36*\".contains(\"*\" + gt.text + \"*\")) {\n // Adjust label position according to eye position\n val pos = gt.position\n if (ge.type == TYPE_LATITUDE_LABEL) gt.position = Position(pos.latitude, labelPos.longitude, pos.altitude)\n else if (ge.type == TYPE_LONGITUDE_LABEL) gt.position = Position(labelPos.latitude, pos.longitude, pos.altitude)\n }\n }\n layer.addRenderable(ge.renderable, GKGraticuleLayer.GRATICULE_GK_OVERVIEW)\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // Generate meridians and zone labels\n for (zoneNumber in 1 .. 60) {\n val longitude = -180.0 + zoneNumber * 6.0\n // Meridian\n positions.clear()\n positions.add(fromDegrees(-88.0, longitude, 0.0))\n positions.add(fromDegrees(-60.0, longitude, 0.0))\n positions.add(fromDegrees(-30.0, longitude, 0.0))\n positions.add(fromDegrees(0.0, longitude, 0.0))\n positions.add(fromDegrees(30.0, longitude, 0.0))\n positions.add(fromDegrees(60.0, longitude, 0.0))\n positions.add(fromDegrees(88.0, longitude, 0.0))\n val polyline = layer.createLineRenderable(positions.toList(), PathType.GREAT_CIRCLE)\n var sector = fromDegrees(-88.0, longitude, 176.0, 30.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n // Zone label\n val text = layer.createTextRenderable(\n fromDegrees(0.0, longitude - 3.0, 0.0), zoneNumber.toString(), 10e6\n )\n text.attributes.isOutlineEnabled = false\n sector = fromDegrees(-90.0, longitude - 3.0, 180.0, 0.0)\n gridElements.add(GridElement(sector, text, TYPE_LONGITUDE_LABEL))\n }\n\n // Generate parallels\n for (i in 0..45) {\n val latitude = -92.0 + i * 4.0\n // don't need parallel for firs and last\n if(i != 0 || i != 46 ) {\n for (j in 0..3) {\n // Each parallel is divided into four 90 degrees segments\n positions.clear()\n val longitude = -180.0 + j * 90.0\n positions.add(fromDegrees(latitude, longitude, 0.0))\n positions.add(fromDegrees(latitude, longitude + 30.0, 0.0))\n positions.add(fromDegrees(latitude, longitude + 60.0, 0.0))\n if(j == 3 ) positions.add(fromDegrees(latitude, 180.0, 0.0))\n else positions.add(fromDegrees(latitude, longitude + 90.0, 0.0))\n\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n val sector = fromDegrees(latitude, longitude, 3.0, 90.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n }\n // Latitude band label\n val text = layer.createTextRenderable(\n fromDegrees(latitude + 2, 0.0, 0.0), MILLION_COOL_NAME[i],10e6\n )\n text.attributes.isOutlineEnabled = false\n val sector = fromDegrees(latitude + 2, -180.0, 3.0, 360.0)\n gridElements.add(GridElement(sector, text, TYPE_LATITUDE_LABEL))\n }\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord.Companion.fromUPS\nimport earth.worldwind.geom.coords.UTMCoord.Companion.fromUTM\nimport earth.worldwind.layer.graticule.AbstractGraticuleLayer\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.ceil\nimport kotlin.math.floor\n\n/**\n * Displays the UTM graticule metric scale.\n */\nabstract class AbstractUTMGraticuleLayer(name: String, scaleModulo: Int, maxResolution: Double): AbstractGraticuleLayer(name) {\n private val metricScaleSupport = UTMMetricScaleSupport(this).apply {\n this.scaleModulo = scaleModulo\n this.maxResolution = maxResolution\n }\n\n override val orderedTypes = listOf(\n GRATICULE_UTM_100000M,\n GRATICULE_UTM_10000M,\n GRATICULE_UTM_1000M,\n GRATICULE_UTM_100M,\n GRATICULE_UTM_10M,\n GRATICULE_UTM_1M\n )\n\n override fun initRenderingParams() {\n // 100,000 meter graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n setRenderingParams(GRATICULE_UTM_100000M, params)\n // 10,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 102, 255)\n params[KEY_LABEL_COLOR] = Color(0, 102, 255)\n setRenderingParams(GRATICULE_UTM_10000M, params)\n // 1,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 255) // Cyan\n params[KEY_LABEL_COLOR] = Color(0, 255, 255) // Cyan\n setRenderingParams(GRATICULE_UTM_1000M, params)\n // 100 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 153, 153)\n params[KEY_LABEL_COLOR] = Color(0, 153, 153)\n setRenderingParams(GRATICULE_UTM_100M, params)\n // 10 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(102, 255, 204)\n params[KEY_LABEL_COLOR] = Color(102, 255, 204)\n setRenderingParams(GRATICULE_UTM_10M, params)\n // 1 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(153, 153, 255)\n params[KEY_LABEL_COLOR] = Color(153, 153, 255)\n setRenderingParams(GRATICULE_UTM_1M, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when {\n resolution >= 100000 -> GRATICULE_UTM_100000M\n resolution >= 10000 -> GRATICULE_UTM_10000M\n resolution >= 1000 -> GRATICULE_UTM_1000M\n resolution >= 100 -> GRATICULE_UTM_100M\n resolution >= 10 -> GRATICULE_UTM_10M\n resolution >= 1 -> GRATICULE_UTM_1M\n else -> GRATICULE_UTM_1M\n }\n\n override fun clear(rc: RenderContext) {\n super.clear(rc)\n metricScaleSupport.clear()\n metricScaleSupport.computeZone(rc)\n }\n\n override fun selectRenderables(rc: RenderContext) { metricScaleSupport.selectRenderables(rc) }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n metricScaleSupport.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n }\n\n fun computePosition(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n return if (zone > 0) computePositionFromUTM(zone, hemisphere, easting, northing)\n else computePositionFromUPS(hemisphere, easting, northing)\n }\n\n private fun computePositionFromUTM(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val utm = fromUTM(zone, hemisphere, easting, northing)\n return Position(utm.latitude.clampLatitude(), utm.longitude.clampLongitude(), 10e3)\n }\n\n private fun computePositionFromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val ups = fromUPS(hemisphere, easting, northing)\n return Position(ups.latitude.clampLatitude(), ups.longitude.clampLongitude(), 10e3)\n }\n\n fun createSquaresGrid(\n utmZone: Int, hemisphere: Hemisphere, utmZoneSector: Sector,\n minEasting: Double, maxEasting: Double, minNorthing: Double, maxNorthing: Double\n ): List {\n val squares = mutableListOf()\n val startEasting = floor(minEasting / ONEHT) * ONEHT\n val startNorthing = floor(minNorthing / ONEHT) * ONEHT\n val cols = ceil((maxEasting - startEasting) / ONEHT).toInt()\n val rows = ceil((maxNorthing - startNorthing) / ONEHT).toInt()\n val squaresArray = Array(rows) { arrayOfNulls(cols) }\n var col = 0\n var easting = startEasting\n while (easting < maxEasting) {\n var row = 0\n var northing = startNorthing\n while (northing < maxNorthing) {\n val sz = UTMSquareZone(this, utmZone, hemisphere, utmZoneSector, easting, northing, ONEHT)\n if (!sz.isOutsideGridZone) {\n squares.add(sz)\n squaresArray[row][col] = sz\n }\n row++\n northing += ONEHT\n }\n col++\n easting += ONEHT\n }\n\n // Keep track of neighbors\n for (c in 0 until cols) {\n for (r in 0 until rows) {\n val sz = squaresArray[r][c]\n if (sz != null) {\n sz.northNeighbor = if (r + 1 < rows) squaresArray[r + 1][c] else null\n sz.eastNeighbor = if (c + 1 < cols) squaresArray[r][c + 1] else null\n }\n }\n }\n return squares\n }\n\n companion object {\n const val UTM_MIN_LATITUDE = -80.0\n const val UTM_MAX_LATITUDE = 84.0\n\n /** Graticule for the 100,000 meter grid. */\n private const val GRATICULE_UTM_100000M = \"Graticule.UTM.100000m\"\n\n /** Graticule for the 10,000 meter grid. */\n private const val GRATICULE_UTM_10000M = \"Graticule.UTM.10000m\"\n\n /** Graticule for the 1,000 meter grid. */\n private const val GRATICULE_UTM_1000M = \"Graticule.UTM.1000m\"\n\n /** Graticule for the 100 meter grid. */\n private const val GRATICULE_UTM_100M = \"Graticule.UTM.100m\"\n\n /** Graticule for the 10 meter grid. */\n private const val GRATICULE_UTM_10M = \"Graticule.UTM.10m\"\n\n /** Graticule for the 1 meter grid. */\n private const val GRATICULE_UTM_1M = \"Graticule.UTM.1m\"\n private const val ONEHT = 100e3\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.floor\n\nopen class MGRSGraticuleLayer: AbstractUTMGraticuleLayer(\"MGRS Graticule\", 100000, 1e5) {\n private val gridZones = Array(20) { arrayOfNulls(60) } // row/col\n private val poleZones = arrayOfNulls(4) // North x2 + South x2\n private val overview = MGRSOverview(this)\n\n /**\n * The maximum resolution graticule that will be rendered, or null if no graticules will be rendered. By\n * default, all graticules are rendered, and this will return GRATICULE_1M.\n */\n var maximumGraticuleResolution: String?\n get() {\n var maxTypeDrawn: String? = null\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n val params = getRenderingParams(type)\n if (params.isDrawLines) maxTypeDrawn = type\n }\n return maxTypeDrawn\n }\n set(graticuleType) {\n var pastTarget = false\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n // Enable all graticulte BEFORE and INCLUDING the target.\n // Disable all graticules AFTER the target.\n val params = getRenderingParams(type)\n params.isDrawLines = !pastTarget\n params.isDrawLabels = !pastTarget\n if (!pastTarget && type == graticuleType) pastTarget = true\n }\n }\n\n override val orderedTypes = mutableListOf(GRATICULE_MGRS_OVERVIEW, GRATICULE_MGRS_GRID_ZONE).apply { addAll(super.orderedTypes) }\n\n override fun initRenderingParams() {\n super.initRenderingParams()\n // MGRS Overview graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(.8f, .8f, .8f, .5f)\n params[KEY_LABEL_COLOR] = Color(1f, 1f, 1f, .8f)\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n params[KEY_DRAW_LABELS] = true\n setRenderingParams(GRATICULE_MGRS_OVERVIEW, params)\n // MGRS GridZone graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 16)\n setRenderingParams(GRATICULE_MGRS_GRID_ZONE, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when (resolution) {\n MGRS_OVERVIEW_RESOLUTION -> GRATICULE_MGRS_OVERVIEW\n MGRS_GRID_ZONE_RESOLUTION -> GRATICULE_MGRS_GRID_ZONE\n else -> super.getTypeFor(resolution)\n }\n\n override fun selectRenderables(rc: RenderContext) {\n if (rc.camera.position.altitude <= GRID_ZONE_MAX_ALTITUDE) {\n selectMGRSRenderables(rc)\n super.selectRenderables(rc)\n } else {\n overview.selectRenderables(rc)\n }\n }\n\n private fun selectMGRSRenderables(rc: RenderContext) {\n val zoneList = getVisibleZones(rc)\n for (gz in zoneList) gz.selectRenderables(rc)\n }\n\n private fun getVisibleZones(rc: RenderContext): List {\n val zoneList = mutableListOf()\n val vs = rc.terrain.sector\n // UTM Grid\n val gridRectangle = getGridRectangleForSector(vs)\n if (gridRectangle != null) {\n for (row in gridRectangle.y..gridRectangle.height) {\n for (col in gridRectangle.x..gridRectangle.width) {\n if (row != 19 || col != 31 && col != 33 && col != 35) {\n // ignore X32, 34 and 36\n val zone = gridZones[row][col] ?: MGRSGridZone(this, getGridSector(row, col)).also { gridZones[row][col] = it }\n if (zone.isInView(rc)) zoneList.add(zone) else zone.clearRenderables()\n }\n }\n }\n }\n // Poles\n if (vs.maxLatitude.inDegrees > 84) {\n // North Pole\n if (poleZones[2] == null) poleZones[2] = MGRSGridZone(this, fromDegrees(84.0, -180.0, 6.0, 180.0)) // Y\n if (poleZones[3] == null) poleZones[3] = MGRSGridZone(this, fromDegrees(84.0, 0.0, 6.0, 180.0)) // Z\n zoneList.add(poleZones[2]!!)\n zoneList.add(poleZones[3]!!)\n }\n if (vs.minLatitude.inDegrees < -80) {\n // South Pole\n if (poleZones[0] == null) poleZones[0] = MGRSGridZone(this, fromDegrees(-90.0, -180.0, 10.0, 180.0)) // B\n if (poleZones[1] == null) poleZones[1] = MGRSGridZone(this, fromDegrees(-90.0, 0.0, 10.0, 180.0)) // A\n zoneList.add(poleZones[0]!!)\n zoneList.add(poleZones[1]!!)\n }\n return zoneList\n }\n\n private fun getGridRectangleForSector(sector: Sector): Viewport? {\n var rectangle: Viewport? = null\n if (sector.minLatitude.inDegrees < 84 && sector.maxLatitude.inDegrees > -80) {\n val minLat = sector.minLatitude.inDegrees.coerceAtLeast(-80.0)\n val maxLat = sector.maxLatitude.inDegrees.coerceAtMost(84.0)\n val gridSector = fromDegrees(\n minLat, sector.minLongitude.inDegrees, maxLat - minLat, sector.deltaLongitude.inDegrees\n )\n var x1 = getGridColumn(gridSector.minLongitude)\n var x2 = getGridColumn(gridSector.maxLongitude)\n val y1 = getGridRow(gridSector.minLatitude)\n val y2 = getGridRow(gridSector.maxLatitude)\n // Adjust rectangle to include special zones\n if (y1 <= 17 && y2 >= 17 && x2 == 30) x2 = 31 // 32V Norway\n if (y1 <= 19 && y2 >= 19) { // X band\n if (x1 == 31) x1 = 30 // 31X\n if (x2 == 31) x2 = 32 // 33X\n if (x1 == 33) x1 = 32 // 33X\n if (x2 == 33) x2 = 34 // 35X\n if (x1 == 35) x1 = 34 // 35X\n if (x2 == 35) x2 = 36 // 37X\n }\n rectangle = Viewport(x1, y1, x2, y2) // Viewport is used as simple integer rectangle\n }\n return rectangle\n }\n\n private fun getGridColumn(longitude: Angle) = floor((longitude.inDegrees + 180) / 6.0).toInt().coerceAtMost(59)\n\n private fun getGridRow(latitude: Angle) = floor((latitude.inDegrees + 80) / 8.0).toInt().coerceAtMost(19)\n\n private fun getGridSector(row: Int, col: Int): Sector {\n val minLat = -80 + row * 8\n val maxLat = minLat + if (minLat != 72) 8 else 12\n var minLon = -180 + col * 6\n var maxLon = minLon + 6\n // Special sectors\n if (row == 17 && col == 30) // 31V\n maxLon -= 3 else if (row == 17 && col == 31) // 32V\n minLon -= 3 else if (row == 19 && col == 30) // 31X\n maxLon += 3 else if (row == 19 && col == 31) { // 32X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 32) { // 33X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 33) { // 34X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 34) { // 35X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 35) { // 36X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 36) // 37X\n minLon -= 3\n return fromDegrees(minLat.toDouble(), minLon.toDouble(), (maxLat - minLat).toDouble(), (maxLon - minLon).toDouble())\n }\n\n companion object {\n const val MGRS_OVERVIEW_RESOLUTION = 1e6\n const val MGRS_GRID_ZONE_RESOLUTION = 5e5\n\n /** Graticule for the MGRS overview. */\n private const val GRATICULE_MGRS_OVERVIEW = \"Graticule.MGRS.Overview\"\n\n /** Graticule for the MGRS grid zone. */\n private const val GRATICULE_MGRS_GRID_ZONE = \"Graticule.MGRS.GridZone\"\n private const val GRID_ZONE_MAX_ALTITUDE = 5e6\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.MGRSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer.Companion.MGRS_GRID_ZONE_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a UTM zone / latitude band intersection\n */\nclass MGRSGridZone(layer: MGRSGraticuleLayer, sector: Sector) : AbstractGraticuleTile(layer, sector) {\n val isUPS = sector.maxLatitude.inDegrees > AbstractUTMGraticuleLayer.UTM_MAX_LATITUDE\n || sector.minLatitude.inDegrees < AbstractUTMGraticuleLayer.UTM_MIN_LATITUDE\n private var name: String\n private var hemisphere: Hemisphere\n private var zone: Int\n private var squares: List? = null\n override val layer get() = super.layer as MGRSGraticuleLayer\n\n init {\n val mgrs = MGRSCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n if (isUPS) {\n name = mgrs.toString().substring(2, 3)\n hemisphere = if (sector.minLatitude.inDegrees > 0) Hemisphere.N else Hemisphere.S\n zone = 0\n } else {\n name = mgrs.toString().substring(0, 3)\n val utm = UTMCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n hemisphere = utm.hemisphere\n zone = utm.zone\n }\n }\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(MGRS_GRID_ZONE_RESOLUTION)\n for (ge in gridElements) if (ge.isInView(rc)) {\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (rc.camera.position.altitude > SQUARE_MAX_ALTITUDE) return\n\n // Select 100km squares elements\n val squares = squares ?: (if (isUPS) createSquaresUPS() else createSquaresUTM()).also { squares = it }\n for (sz in squares) if (sz.isInView(rc)) sz.selectRenderables(rc) else sz.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n squares?.forEach { it.clearRenderables() }.also { squares = null }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf(\n Position(sector.minLatitude, sector.minLongitude, 10e3),\n Position(sector.maxLatitude, sector.minLongitude, 10e3)\n )\n var polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n var lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.minLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, GridElement.TYPE_LINE_WEST))\n if (!isUPS) {\n // right meridian segment\n if (name.startsWith(\"60\")) {\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.maxLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_EAST))\n }\n\n // bottom parallel segment\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.minLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH))\n\n // top parallel segment\n if (name.endsWith(\"X\")) {\n positions.clear()\n positions.add(Position(sector.maxLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.maxLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH))\n }\n }\n\n // Label\n val text = layer.createTextRenderable(\n Position(sector.centroidLatitude, sector.centroidLongitude, 0.0), name, 10e6\n )\n gridElements.add(GridElement(sector, text, GridElement.TYPE_GRIDZONE_LABEL))\n }\n\n private fun createSquaresUTM(): List {\n // Find grid zone easting and northing boundaries\n var utm = UTMCoord.fromLatLon(sector.minLatitude, sector.centroidLongitude)\n val minNorthing = utm.northing\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.centroidLongitude)\n var maxNorthing = utm.northing\n maxNorthing = if (maxNorthing == 0.0) 10e6 else maxNorthing\n utm = UTMCoord.fromLatLon(sector.minLatitude, sector.minLongitude)\n var minEasting = utm.easting\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.minLongitude)\n minEasting = utm.easting.coerceAtMost(minEasting)\n var maxEasting = 1e6 - minEasting\n\n // Compensate for some distorted zones\n if (name == \"32V\") maxNorthing += 20e3 // catch KS and LS in 32V\n if (name == \"31X\") maxEasting += ONEHT // catch GA and GV in 31X\n\n // Create squares\n return layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing).also {\n for (square in it) setSquareName(square)\n }\n }\n\n private fun createSquaresUPS(): List {\n val minEasting: Double\n val maxEasting: Double\n val minNorthing: Double\n val maxNorthing: Double\n if (Hemisphere.N == hemisphere) {\n minNorthing = TWOMIL - ONEHT * 7\n maxNorthing = TWOMIL + ONEHT * 7\n minEasting = if (name == \"Y\") TWOMIL - ONEHT * 7 else TWOMIL\n maxEasting = if (name == \"Y\") TWOMIL else TWOMIL + ONEHT * 7\n } else {\n minNorthing = TWOMIL - ONEHT * 12\n maxNorthing = TWOMIL + ONEHT * 12\n minEasting = if (name == \"A\") TWOMIL - ONEHT * 12 else TWOMIL\n maxEasting = if (name == \"A\") TWOMIL else TWOMIL + ONEHT * 12\n }\n\n // Create squares\n return layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing).also {\n for (square in it) setSquareName(square)\n }\n }\n\n private fun setSquareName(sz: UTMSquareZone) {\n // Find out MGRS 100Km square name\n val tenMeterDegree = toDegrees(10.0 / 6378137.0)\n var mgrs: MGRSCoord? = null\n when {\n sz.isPositionInside(Position(sz.centroid.latitude, sz.centroid.longitude, 0.0)) ->\n mgrs = MGRSCoord.fromLatLon(sz.centroid.latitude, sz.centroid.longitude)\n sz.isPositionInside(sz.sw) -> mgrs = MGRSCoord.fromLatLon(\n sz.sw.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.sw.longitude.plusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.se) -> mgrs = MGRSCoord.fromLatLon(\n sz.se.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.se.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.nw) -> mgrs = MGRSCoord.fromLatLon(\n sz.nw.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.nw.longitude.plusDegrees(tenMeterDegree).clampLongitude())\n sz.isPositionInside(sz.ne) -> mgrs = MGRSCoord.fromLatLon(\n sz.ne.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.ne.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n }\n // Set square zone name\n if (mgrs != null) sz.name = mgrs.toString().substring(3, 5)\n }\n\n companion object {\n private const val ONEHT = 100e3\n private const val TWOMIL = 2e6\n private const val SQUARE_MAX_ALTITUDE = 1e6\n }\n}",null,"package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Position.Companion.fromDegrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LATITUDE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LONGITUDE_LABEL\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer.Companion.MGRS_OVERVIEW_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\n\ninternal class MGRSOverview(layer: MGRSGraticuleLayer): AbstractGraticuleTile(layer, Sector()) {\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val labelPos = layer.computeLabelOffset(rc)\n for (ge in gridElements) {\n if (ge.isInView(rc)) {\n if (ge.renderable is Label) {\n val gt = ge.renderable\n if (labelPos.latitude.inDegrees < 72 || !\"*32*34*36*\".contains(\"*\" + gt.text + \"*\")) {\n // Adjust label position according to eye position\n var pos = gt.position\n if (ge.type == TYPE_LATITUDE_LABEL) pos = Position(pos.latitude, labelPos.longitude, pos.altitude)\n else if (ge.type == TYPE_LONGITUDE_LABEL) pos = Position(labelPos.latitude, pos.longitude, pos.altitude)\n gt.position = pos\n }\n }\n layer.addRenderable(ge.renderable, layer.getTypeFor(MGRS_OVERVIEW_RESOLUTION))\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // Generate meridians and zone labels\n for (zoneNumber in 1 .. 60) {\n val longitude = -180.0 + zoneNumber * 6.0\n // Meridian\n positions.clear()\n positions.add(fromDegrees(-80.0, longitude, 10e3))\n positions.add(fromDegrees(-60.0, longitude, 10e3))\n positions.add(fromDegrees(-30.0, longitude, 10e3))\n positions.add(fromDegrees(0.0, longitude, 10e3))\n positions.add(fromDegrees(30.0, longitude, 10e3))\n val maxLat = if (longitude < 6.0 || longitude > 36.0) {\n // 'regular' UTM meridians\n positions.add(fromDegrees(60.0, longitude, 10e3))\n 84.0\n } else {\n // Exceptions: shorter meridians around and north-east of Norway\n if (longitude == 6.0) {\n 56.0\n } else {\n positions.add(fromDegrees(60.0, longitude, 10e3))\n 72.0\n }\n }\n positions.add(fromDegrees(maxLat, longitude, 10e3))\n val polyline = layer.createLineRenderable(positions.toList(), PathType.GREAT_CIRCLE)\n var sector = fromDegrees(-80.0, longitude, maxLat + 80.0, 0.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n\n // Zone label\n val text = layer.createTextRenderable(\n fromDegrees(0.0, longitude - 3.0, 0.0),\n zoneNumber.toString(), 10e6\n )\n sector = fromDegrees(-90.0, longitude - 3.0, 180.0, 0.0)\n gridElements.add(GridElement(sector, text, TYPE_LONGITUDE_LABEL))\n }\n\n // Generate special meridian segments for exceptions around and north-east of Norway\n for (i in 0..4) {\n positions.clear()\n val longitude = SPECIAL_MERIDIANS[i][0].toDouble()\n val latitude1 = SPECIAL_MERIDIANS[i][1].toDouble()\n val latitude2 = SPECIAL_MERIDIANS[i][2].toDouble()\n positions.add(fromDegrees(latitude1, longitude, 10e3))\n positions.add(fromDegrees(latitude2, longitude, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val sector = fromDegrees(latitude1, longitude, latitude2 - latitude1, 0.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n\n // Generate parallels - no exceptions\n var latitude = -80.0\n for (i in 0..20) {\n for (j in 0..3) {\n // Each parallel is divided into four 90 degrees segments\n positions.clear()\n val longitude = -180.0 + j * 90.0\n positions.add(fromDegrees(latitude, longitude, 10e3))\n positions.add(fromDegrees(latitude, longitude + 30.0, 10e3))\n positions.add(fromDegrees(latitude, longitude + 60.0, 10e3))\n positions.add(fromDegrees(latitude, longitude + 90.0, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n val sector = fromDegrees(latitude, longitude, 0.0, 90.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n // Latitude band label\n if (i < 20) {\n val text = layer.createTextRenderable(\n fromDegrees(latitude + 4.0, 0.0, 0.0),\n LAT_BANDS[i].toString(), 10e6\n )\n val sector = fromDegrees(latitude + 4.0, -180.0, 0.0, 360.0)\n gridElements.add(GridElement(sector, text, TYPE_LATITUDE_LABEL))\n }\n\n // Increase latitude\n latitude += if (latitude < 72.0) 8.0 else 12.0\n }\n }\n\n companion object {\n // Exceptions for some meridians. Values: longitude, min latitude, max latitude\n private val SPECIAL_MERIDIANS = arrayOf(\n intArrayOf(3, 56, 64), intArrayOf(6, 64, 72), intArrayOf(9, 72, 84), intArrayOf(21, 72, 84), intArrayOf(33, 72, 84)\n )\n\n // Latitude bands letters - from south to north\n private const val LAT_BANDS = \"CDEFGHJKLMNPQRSTUVWX\"\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.layer.graticule.utm.AbstractUTMGraticuleLayer.Companion.UTM_MAX_LATITUDE\nimport earth.worldwind.layer.graticule.utm.AbstractUTMGraticuleLayer.Companion.UTM_MIN_LATITUDE\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.log10\nimport kotlin.math.pow\n\ninternal class UTMMetricScaleSupport(private val layer: AbstractUTMGraticuleLayer) {\n private class UTMExtremes {\n var minX = 1e6\n var maxX = 0.0\n var minY = 10e6\n var maxY = 0.0\n var minYHemisphere = Hemisphere.N\n var maxYHemisphere = Hemisphere.S\n }\n\n var scaleModulo = 10000000\n var maxResolution = 1e5\n set(value) {\n field = value\n clear()\n }\n var zone = 0\n private set\n\n // 5 levels 100km to 10m\n private lateinit var extremes: Array\n\n fun computeZone(rc: RenderContext) {\n try {\n rc.lookAtPosition?.let {\n zone = if (it.latitude.inDegrees in UTM_MIN_LATITUDE..UTM_MAX_LATITUDE) {\n val utm = UTMCoord.fromLatLon(it.latitude, it.longitude)\n utm.zone\n } else 0\n }\n } catch (ex: Exception) {\n zone = 0\n }\n }\n\n fun clear() {\n val numLevels = log10(maxResolution).toInt()\n extremes = Array(numLevels) { UTMExtremes() }\n }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n if (UTMZone != zone) return\n if (size < 1 || size > maxResolution) return\n val levelExtremes = extremes[log10(size).toInt() - 1]\n if (ge.type == TYPE_LINE_EASTING || ge.type == TYPE_LINE_EAST || ge.type == TYPE_LINE_WEST) {\n levelExtremes.minX = ge.value.inDegrees.coerceAtMost(levelExtremes.minX)\n levelExtremes.maxX = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxX)\n } else if (ge.type == TYPE_LINE_NORTHING || ge.type == TYPE_LINE_SOUTH || ge.type == TYPE_LINE_NORTH) {\n if (hemisphere == levelExtremes.minYHemisphere) {\n levelExtremes.minY = ge.value.inDegrees.coerceAtMost(levelExtremes.minY)\n } else if (hemisphere == Hemisphere.S) {\n levelExtremes.minY = ge.value.inDegrees\n levelExtremes.minYHemisphere = hemisphere\n }\n if (hemisphere == levelExtremes.maxYHemisphere) {\n levelExtremes.maxY = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxY)\n } else if (hemisphere == Hemisphere.N) {\n levelExtremes.maxY = ge.value.inDegrees\n levelExtremes.maxYHemisphere = hemisphere\n }\n }\n }\n\n fun selectRenderables(rc: RenderContext) {\n val lookAtPosition = rc.lookAtPosition ?: return\n\n // Compute easting and northing label offsets\n val eastingOffset = rc.viewport.width * rc.pixelSize * OFFSET_FACTOR_X / 2\n val northingOffset = rc.viewport.height * rc.pixelSize * OFFSET_FACTOR_Y / 2\n // Derive labels center pos from the view center\n val labelEasting: Double\n var labelNorthing: Double\n var labelHemisphere: Hemisphere\n if (zone > 0) {\n val utm = UTMCoord.fromLatLon(lookAtPosition.latitude, lookAtPosition.longitude)\n labelEasting = utm.easting + eastingOffset\n labelNorthing = utm.northing + northingOffset\n labelHemisphere = utm.hemisphere\n if (labelNorthing < 0) {\n labelNorthing += 10e6\n labelHemisphere = Hemisphere.S\n }\n } else {\n val ups = UPSCoord.fromLatLon(lookAtPosition.latitude, lookAtPosition.longitude)\n labelEasting = ups.easting + eastingOffset\n labelNorthing = ups.northing + northingOffset\n labelHemisphere = ups.hemisphere\n }\n val viewFrustum = rc.frustum\n var labelPos: Position?\n for (i in extremes.indices) {\n val levelExtremes = extremes[i]\n val gridStep = 10.0.pow(i.toDouble())\n val gridStepTimesTen = gridStep * 10\n val graticuleType = layer.getTypeFor(gridStep)\n if (levelExtremes.minX <= levelExtremes.maxX) {\n // Process easting scale labels for this level\n var easting = levelExtremes.minX\n while (easting <= levelExtremes.maxX) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || easting % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, labelHemisphere, easting, labelNorthing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text = (easting % scaleModulo / gridStep).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n gt.attributes.isOutlineEnabled = false\n layer.addRenderable(gt, graticuleType)\n }\n }\n easting += gridStep\n }\n }\n if (!(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)) {\n // Process northing scale labels for this level\n var currentHemisphere = levelExtremes.minYHemisphere\n var northing = levelExtremes.minY\n while (northing <= levelExtremes.maxY || currentHemisphere != levelExtremes.maxYHemisphere) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || northing % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, currentHemisphere, labelEasting, northing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text = (northing % scaleModulo / gridStep).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n gt.attributes.isOutlineEnabled = false\n layer.addRenderable(gt, graticuleType)\n }\n if (currentHemisphere != levelExtremes.maxYHemisphere && northing >= 10e6 - gridStep) {\n // Switch hemisphere\n currentHemisphere = levelExtremes.maxYHemisphere\n northing = -gridStep\n }\n }\n northing += gridStep\n }\n }\n }\n }\n\n private fun isPointInRange(rc: RenderContext, point: Vec3): Boolean {\n val altitudeAboveGround = layer.computeAltitudeAboveGround(rc)\n return rc.cameraPoint.distanceTo(point) < altitudeAboveGround * VISIBLE_DISTANCE_FACTOR\n }\n\n override fun toString(): String {\n val sb = StringBuilder()\n for (i in 0..4) {\n sb.append(\"level \")\n sb.append(i)\n sb.append(\" : \")\n val levelExtremes = extremes[i]\n if (levelExtremes.minX < levelExtremes.maxX ||\n !(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)\n ) {\n sb.append(levelExtremes.minX)\n sb.append(\", \")\n sb.append(levelExtremes.maxX)\n sb.append(\" - \")\n sb.append(levelExtremes.minY)\n sb.append(levelExtremes.minYHemisphere)\n sb.append(\", \")\n sb.append(levelExtremes.maxY)\n sb.append(levelExtremes.maxYHemisphere)\n } else {\n sb.append(\"empty\")\n }\n sb.append(\"\\n\")\n }\n return sb.toString()\n }\n\n companion object {\n private const val OFFSET_FACTOR_X = -.5\n private const val OFFSET_FACTOR_Y = -.5\n private const val VISIBLE_DISTANCE_FACTOR = 5.0\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a square 10x10 grid and recursive tree in easting/northing coordinates\n */\ninternal class UTMSquareGrid(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n private var subGrids: List? = null\n\n override fun isInView(rc: RenderContext) = super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS * 4\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(size / 10)\n for (ge in gridElements) if (ge.isInView(rc)) {\n layer.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 4 * 2) return\n\n // Select sub grids renderables\n val subGrids = subGrids ?: createSubGrids().also { subGrids = it }\n for (sg in subGrids) if (sg.isInView(rc)) sg.selectRenderables(rc) else sg.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n subGrids?.forEach { it.clearRenderables() }.also { subGrids = null }\n }\n\n private fun createSubGrids(): List {\n val subGrids = mutableListOf()\n val gridStep = size / 10\n for (i in 0..9) {\n val easting = SWEasting + gridStep * i\n for (j in 0..9) {\n val northing = SWNorthing + gridStep * j\n val sg = UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, easting, northing, gridStep)\n if (!sg.isOutsideGridZone) subGrids.add(sg)\n }\n }\n return subGrids\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val gridStep = size / 10\n val positions = mutableListOf()\n\n // South-North lines\n for (i in 1..9) {\n val easting = SWEasting + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing)\n var p2 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing + size)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(\n GridElement(lineSector, polyline, TYPE_LINE_EASTING, easting.degrees)\n )\n }\n }\n // West-East lines\n for (i in 1..9) {\n val northing = SWNorthing + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, SWEasting, northing)\n var p2 = layer.computePosition(UTMZone, hemisphere, SWEasting + size, northing)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTHING, northing.degrees))\n }\n }\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.sign\n\n/**\n * Represent a generic UTM/UPS square area\n */\nabstract class UTMSquareSector(\n layer: AbstractUTMGraticuleLayer, val UTMZone: Int, val hemisphere: Hemisphere,\n val UTMZoneSector: Sector, val SWEasting: Double, val SWNorthing: Double, val size: Double\n): AbstractGraticuleTile(layer, Sector()) {\n val squareCenter = layer.computePosition(UTMZone, hemisphere, SWEasting + size / 2, SWNorthing + size / 2)\n // Four corners position\n var sw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing)\n var se = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing)\n var nw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing + size)\n var ne = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing + size)\n var boundingSector = boundingSector(adjustDateLineCrossingPoints()).apply { if (!isInsideGridZone) intersect(UTMZoneSector) }.also { sector.copy(it) }\n var centroid = boundingSector.centroid(Location())\n val isTruncated = !isInsideGridZone\n override val layer get() = super.layer as AbstractUTMGraticuleLayer\n /**\n * Determines whether this square is fully inside its parent grid zone.\n */\n private val isInsideGridZone get() = isPositionInside(nw) && isPositionInside(ne) && isPositionInside(sw) && isPositionInside(se)\n /**\n * Determines whether this square is fully outside its parent grid zone.\n */\n val isOutsideGridZone = !isPositionInside(nw) && !isPositionInside(ne) && !isPositionInside(sw) && !isPositionInside(se)\n\n private fun adjustDateLineCrossingPoints(): Iterable {\n val corners = listOf(sw, se, nw, ne)\n if (!locationsCrossDateLine(corners)) return corners\n\n var lonSign = 0.0\n for (corner in corners) if (abs(corner.longitude.inDegrees) != 180.0) lonSign = sign(corner.longitude.inDegrees)\n if (lonSign == 0.0) return corners\n\n if (abs(sw.longitude.inDegrees) == 180.0 && sign(sw.longitude.inDegrees) != lonSign)\n sw = Position(sw.latitude, -sw.longitude, sw.altitude)\n if (abs(se.longitude.inDegrees) == 180.0 && sign(se.longitude.inDegrees) != lonSign)\n se = Position(se.latitude, -se.longitude, se.altitude)\n if (abs(nw.longitude.inDegrees) == 180.0 && sign(nw.longitude.inDegrees) != lonSign)\n nw = Position(nw.latitude, -nw.longitude, nw.altitude)\n if (abs(ne.longitude.inDegrees) == 180.0 && sign(ne.longitude.inDegrees) != lonSign)\n ne = Position(ne.latitude, -ne.longitude, ne.altitude)\n\n return listOf(sw, se, nw, ne)\n }\n\n private fun locationsCrossDateLine(locations: Iterable): Boolean {\n var pos: Location? = null\n for (posNext in locations) {\n if (pos != null) {\n // A segment cross the line if end pos have different longitude signs\n // and are more than 180 degrees longitude apart\n if (sign(pos.longitude.inDegrees) != sign(posNext.longitude.inDegrees)) {\n val delta = abs(pos.longitude.inDegrees - posNext.longitude.inDegrees)\n if (delta > 180 && delta < 360) return true\n }\n }\n pos = posNext\n }\n return false\n }\n\n private fun boundingSector(locations: Iterable): Sector {\n var minLat = POS90\n var minLon = POS180\n var maxLat = NEG90\n var maxLon = NEG180\n for (p in locations) {\n val lat = p.latitude\n if (lat.inDegrees < minLat.inDegrees) minLat = lat\n if (lat.inDegrees > maxLat.inDegrees) maxLat = lat\n val lon = p.longitude\n if (lon.inDegrees < minLon.inDegrees) minLon = lon\n if (lon.inDegrees > maxLon.inDegrees) maxLon = lon\n }\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun boundingSector(pA: Location, pB: Location): Sector {\n var minLat = pA.latitude\n var minLon = pA.longitude\n var maxLat = pA.latitude\n var maxLon = pA.longitude\n if (pB.latitude.inDegrees < minLat.inDegrees) minLat = pB.latitude\n else if (pB.latitude.inDegrees > maxLat.inDegrees) maxLat = pB.latitude\n if (pB.longitude.inDegrees < minLon.inDegrees) minLon = pB.longitude\n else if (pB.longitude.inDegrees > maxLon.inDegrees) maxLon = pB.longitude\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun isPositionInside(position: Location) = UTMZoneSector.contains(position)\n\n override fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, centroid.latitude, centroid.longitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n return size / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n companion object {\n const val MIN_CELL_SIZE_PIXELS = 100\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_GRIDZONE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\nimport kotlin.math.cos\n\n/**\n * Represent a 100km square zone inside an UTM zone.\n */\nclass UTMSquareZone(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n var name: String? = null\n var northNeighbor: UTMSquareZone? = null\n var eastNeighbor: UTMSquareZone? = null\n private var squareGrid: UTMSquareGrid? = null\n\n override fun isInView(rc: RenderContext) = super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(size)\n for (ge in gridElements) if (ge.isInView(rc)) {\n if (ge.type == TYPE_LINE_NORTH && isNorthNeighborInView(rc)) continue\n if (ge.type == TYPE_LINE_EAST && isEastNeighborInView(rc)) continue\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 2) return\n\n // Select grid renderables\n val squareGrid = squareGrid ?: UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size).also { squareGrid = it }\n if (squareGrid.isInView(rc)) squareGrid.selectRenderables(rc) else squareGrid.clearRenderables()\n }\n\n private fun isNorthNeighborInView(rc: RenderContext) = northNeighbor?.isInView(rc) == true\n\n private fun isEastNeighborInView(rc: RenderContext) = eastNeighbor?.isInView(rc) == true\n\n override fun clearRenderables() {\n super.clearRenderables()\n squareGrid?.clearRenderables()\n squareGrid = null\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // left segment\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, nw, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(nw)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_WEST, SWEasting.degrees))\n }\n\n // right segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(se, ne, UTMZoneSector, positions)\n } else {\n positions.add(se)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_EAST, (SWEasting + size).degrees))\n }\n\n // bottom segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, se, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(se)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH, SWNorthing.degrees))\n }\n\n // top segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(nw, ne, UTMZoneSector, positions)\n } else {\n positions.add(nw)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH, (SWNorthing + size).degrees))\n }\n\n // Label\n name?.let { name ->\n // Only add a label to squares above some dimension\n if (boundingSector.deltaLongitude.inDegrees * cos(centroid.latitude.inRadians) > .2\n && boundingSector.deltaLatitude.inDegrees > .2\n ) {\n val labelPos = if (UTMZone != 0) centroid // Not at poles\n else if (isPositionInside(Position(squareCenter.latitude, squareCenter.longitude, 0.0))) squareCenter\n else if (squareCenter.latitude.inDegrees <= UTMZoneSector.maxLatitude.inDegrees\n && squareCenter.latitude.inDegrees >= UTMZoneSector.minLatitude.inDegrees) centroid\n else null\n if (labelPos != null) {\n val text = layer.createTextRenderable(\n Position(labelPos.latitude, labelPos.longitude, 0.0), name, size * 10\n )\n gridElements.add(GridElement(boundingSector, text, TYPE_GRIDZONE_LABEL))\n }\n }\n }\n }\n}","package earth.worldwind.layer.heatmap\n\nimport earth.worldwind.draw.DrawableHeatmap\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\n\nopen class ElevationHeatmapLayer: AbstractLayer(\"Elevation Heatmap\") {\n override var isPickEnabled = false // Elevation Heatmap is not pickable\n override var opacity = 0.5f // Elevation Heatmap is semi-transparent by default\n /**\n * RGB colors for five thresholds of heatmap\n */\n val colors = arrayOf(\n Color(0.0f, 0.0f, 1.0f), // 0% - Blue\n Color(0.0f, 1.0f, 1.0f), // 25% - Cyan\n Color(0.0f, 1.0f, 0.0f), // 50% - Green\n Color(1.0f, 1.0f, 0.0f), // 75% - Yellow\n Color(1.0f, 0.0f, 0.0f) // 100% - Red\n )\n /**\n * Auto determines height limits from available terrain tiles. If false, then limits should be specified manually.\n */\n var autoHeightLimits = true\n /**\n * Configurable offset from maximal available terrain tile level to take into account when calculating height limits\n */\n var levelNumberDepth = 3\n /**\n * Last automatically calculated or manually specified min and max height limits\n */\n val heightLimits = FloatArray(2)\n\n override fun doRender(rc: RenderContext) {\n if (autoHeightLimits) rc.terrain.heightLimits(levelNumberDepth, heightLimits)\n\n val pool = rc.getDrawablePool()\n val drawable = DrawableHeatmap.obtain(pool)\n heightLimits.copyInto(drawable.heightLimits)\n drawable.colors.forEachIndexed { i, color -> color.copy(colors[i]) }\n drawable.opacity = opacity\n drawable.offset = rc.globe.offset\n drawable.program = rc.getShaderProgram { ElevationHeatmapProgram() }\n rc.offerSurfaceDrawable(drawable, 0.0)\n }\n}\n","package earth.worldwind.layer.heatmap\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n// TODO Try accumulating tile state (texCoordMatrix, texSampler), loading uniforms once, then loading a uniform index\n// TODO to select the state for a surface tile. This reduces the uniform calls when many surface tiles intersect\n// TODO one terrain tile.\n// TODO Try class representing transform with a specific scale+translate object that can be uploaded to a GLSL vec4\nopen class ElevationHeatmapProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform float scale;\n uniform float offset;\n\n attribute vec4 vertexPoint;\n attribute float vertexHeight;\n\n varying float height;\n\n void main() {\n height = vertexHeight * scale + offset;\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n #else\n precision mediump float;\n #endif\n\n uniform vec3 color0;\n uniform vec3 color1;\n uniform vec3 color2;\n uniform vec3 color3;\n uniform vec3 color4;\n uniform float opacity;\n\n varying float height;\n\n void main() {\n vec3 overlay;\n overlay = mix(color0, color1, clamp(height * 4.0, 0.0, 1.0));\n overlay = mix(overlay, color2, clamp(height * 4.0 - 1.0, 0.0, 1.0));\n overlay = mix(overlay, color3, clamp(height * 4.0 - 2.0, 0.0, 1.0));\n overlay = mix(overlay, color4, clamp(height * 4.0 - 3.0, 0.0, 1.0));\n gl_FragColor = vec4(overlay * opacity, opacity);\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n val mvpMatrix = Matrix4()\n protected var scaleId = KglUniformLocation.NONE\n protected var offsetId = KglUniformLocation.NONE\n protected var color0Id = KglUniformLocation.NONE\n protected var color1Id = KglUniformLocation.NONE\n protected var color2Id = KglUniformLocation.NONE\n protected var color3Id = KglUniformLocation.NONE\n protected var color4Id = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n private val mvpMatrixArray = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n scaleId = gl.getUniformLocation(program, \"scale\")\n gl.uniform1f(scaleId, 0f)\n offsetId = gl.getUniformLocation(program, \"offset\")\n gl.uniform1f(offsetId, 0f)\n color0Id = gl.getUniformLocation(program, \"color0\")\n gl.uniform3f(color0Id, 0f, 0f, 0f)\n color1Id = gl.getUniformLocation(program, \"color1\")\n gl.uniform3f(color1Id, 0f, 0f, 0f)\n color2Id = gl.getUniformLocation(program, \"color2\")\n gl.uniform3f(color2Id, 0f, 0f, 0f)\n color3Id = gl.getUniformLocation(program, \"color3\")\n gl.uniform3f(color3Id, 0f, 0f, 0f)\n color4Id = gl.getUniformLocation(program, \"color4\")\n gl.uniform3f(color4Id, 0f, 0f, 0f)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, 0f)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(mvpMatrixArray, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n\n fun setLimits(limits: FloatArray) {\n val delta = limits[1] - limits[0]\n gl.uniform1f(scaleId, if (delta != 0.0f) 1.0f / delta else 0.0f)\n gl.uniform1f(offsetId, if (delta != 0.0f) -limits[0] / delta else 0.0f)\n }\n\n fun setColors(colors: Array) {\n gl.uniform3f(color0Id, colors[0].red, colors[0].green, colors[0].blue)\n gl.uniform3f(color1Id, colors[1].red, colors[1].green, colors[1].blue)\n gl.uniform3f(color2Id, colors[2].red, colors[2].green, colors[2].blue)\n gl.uniform3f(color3Id, colors[3].red, colors[3].green, colors[3].blue)\n gl.uniform3f(color4Id, colors[4].red, colors[4].green, colors[4].blue)\n }\n\n fun setOpacity(opacity: Float) {\n gl.uniform1f(opacityId, opacity)\n }\n\n fun loadModelviewProjection() {\n mvpMatrix.transposeToArray(mvpMatrixArray, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.fromSector\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.TileFactory\nimport kotlin.jvm.JvmStatic\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nabstract class AbstractMercatorImageTile(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): ImageTile(sector, level, row, column) {\n companion object {\n /**\n * Creates all Mercator tiles for a specified level within a LevelSet.\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result a pre-allocated Collection in which to store the results\n */\n @JvmStatic\n fun assembleMercatorTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList): List {\n val sector = fromSector(level.parent.sector)\n val tileOrigin = level.parent.tileOrigin\n val dLat = level.tileDelta.latitude\n val dLon = level.tileDelta.longitude\n val firstRow = computeRow(dLat, sector.minLatitude, tileOrigin.minLatitude)\n val lastRow = computeLastRow(dLat, sector.maxLatitude, tileOrigin.minLatitude)\n val firstCol = computeColumn(dLon, sector.minLongitude, tileOrigin.minLongitude)\n val lastCol = computeLastColumn(dLon, sector.maxLongitude, tileOrigin.minLongitude)\n val dLatPercent = dLat.inDegrees / sector.deltaLatitude.inDegrees * (sector.maxLatPercent - sector.minLatPercent)\n val firstRowPercent = gudermannianInverse(tileOrigin.minLatitude) + firstRow * dLatPercent\n val firstColLon = tileOrigin.minLongitude.plusDegrees(firstCol * dLon.inDegrees)\n var d1 = firstRowPercent\n for (row in firstRow..lastRow) {\n val d2 = d1 + dLatPercent\n var t1 = firstColLon\n for (col in firstCol..lastCol) {\n val t2 = t1 + dLon\n result.add(tileFactory.createTile(MercatorSector(d1, d2, t1, t2), level, row, col))\n t1 = t2\n }\n d1 = d2\n }\n return result\n }\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its LevelSet.\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n override fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n val sector = sector as MercatorSector\n val d0 = sector.minLatPercent\n val d2 = sector.maxLatPercent\n val d1 = d0 + (d2 - d0) / 2.0\n val t0 = sector.minLongitude\n val t2 = sector.maxLongitude\n val t1 = average(t0, t2)\n val northRow = 2 * row\n val southRow = northRow + 1\n val westCol = 2 * column\n val eastCol = westCol + 1\n val child0 = tileFactory.createTile(MercatorSector(d0, d1, t0, t1), childLevel, northRow, westCol)\n val child1 = tileFactory.createTile(MercatorSector(d0, d1, t1, t2), childLevel, northRow, eastCol)\n val child2 = tileFactory.createTile(MercatorSector(d1, d2, t0, t1), childLevel, southRow, westCol)\n val child3 = tileFactory.createTile(MercatorSector(d1, d2, t1, t2), childLevel, southRow, eastCol)\n return arrayOf(child0, child1, child2, child3)\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Sector\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\nopen class MercatorSector(\n val minLatPercent: Double = -1.0, val maxLatPercent: Double = 1.0,\n minLongitude: Angle = Angle.NEG180, maxLongitude: Angle = Angle.POS180\n): Sector(gudermannian(minLatPercent), gudermannian(maxLatPercent), minLongitude, maxLongitude) {\n companion object {\n @JvmStatic\n fun fromDegrees(\n minLatPercent: Double, maxLatPercent: Double, minLonDegrees: Double, maxLonDegrees: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n\n @JvmStatic\n fun fromRadians(\n minLatPercent: Double, maxLatPercent: Double, minLonRadians: Double, maxLonRadians: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n\n @JvmStatic\n fun fromSector(sector: Sector) = MercatorSector(\n gudermannianInverse(sector.minLatitude), gudermannianInverse(sector.maxLatitude),\n sector.minLongitude, sector.maxLongitude\n )\n\n @JvmStatic\n fun gudermannianInverse(latitude: Angle) = ln(tan(PI / 4.0 + latitude.inRadians / 2.0)) / PI\n\n @JvmStatic\n fun gudermannian(percent: Double) = fromRadians(atan(sinh(percent * PI)))\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.util.LevelSet\n\nopen class MercatorTiledImageLayer(\n name: String? = null, tiledSurfaceImage: MercatorTiledSurfaceImage? = null\n): TiledImageLayer(name, tiledSurfaceImage) {\n override fun clone() = MercatorTiledImageLayer(displayName, tiledSurfaceImage?.clone() as MercatorTiledSurfaceImage)\n\n companion object {\n fun buildTiledSurfaceImage(\n tileFactory: MercatorTileFactory, numLevels: Int = 22, tileSize: Int = 256, transparent: Boolean = false, levelOffset: Int = 1\n ): MercatorTiledSurfaceImage {\n val sector = MercatorSector()\n val tileOrigin = MercatorSector()\n val firstLevelDelta = Location(tileOrigin.deltaLatitude, tileOrigin.deltaLongitude)\n // Skip 1 topmost level with bad resolution from processing\n val levelSet = LevelSet(sector, tileOrigin, firstLevelDelta, numLevels, tileSize, tileSize, levelOffset)\n return MercatorTiledSurfaceImage(tileFactory, levelSet).apply {\n // Reduce memory usage by using a 16-bit configuration with no alpha\n if (!transparent) imageOptions = ImageOptions(ImageConfig.RGB_565)\n }\n }\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.TileFactory\n\nopen class MercatorTiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet) : TiledSurfaceImage(tileFactory, levelSet) {\n override fun clone() = MercatorTiledSurfaceImage(tileFactory, levelSet).also {\n it.imageOptions = imageOptions\n }\n\n override fun createTopLevelTiles() =\n AbstractMercatorImageTile.assembleMercatorTilesForLevel(levelSet.firstLevel, tileFactory, topLevelTiles)\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.layer.WebImageLayer\nimport earth.worldwind.layer.mercator.MercatorTiledImageLayer.Companion.buildTiledSurfaceImage\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.locale.language\nimport kotlin.random.Random\n\nobject WebMercatorLayerFactory {\n const val SERVICE_TYPE = \"XYZ\"\n private const val OPEN_BRACKET = '{'\n private const val CLOSED_BRACKET = '}'\n private const val I_EXPRESSION = \"{i}\"\n private const val X_COORDINATE = \"{x}\"\n private const val Y_COORDINATE = \"{y}\"\n private const val Z_COORDINATE = \"{z}\"\n private const val LANGUAGE = \"{lang}\"\n private const val RAND_PREFIX = \"{rand=\"\n\n fun createLayer(\n urlTemplate: String, imageFormat: String = \"image/png\", transparent: Boolean = false,\n name: String? = null, numLevels: Int = 22, tileSize: Int = 256, levelOffset: Int = 1\n ): MercatorTiledImageLayer {\n val urlParts = parseUrl(urlTemplate)\n val randomValue = urlParts.find { it.startsWith(RAND_PREFIX) }\n val randomValues = randomValue?.removeSurrounding(RAND_PREFIX, \"}\")?.split(\",\")\n val tileFactory = object : MercatorTileFactory {\n override val contentType = \"Web Mercator\"\n\n override fun getImageSource(x: Int, y: Int, z: Int): ImageSource {\n val resultServerUrl = StringBuilder()\n urlParts.forEach {\n resultServerUrl.append(\n when (it) {\n X_COORDINATE -> x\n Y_COORDINATE -> y\n Z_COORDINATE -> z\n LANGUAGE -> language\n randomValue -> randomValues?.get(Random.nextInt(randomValues.size))\n I_EXPRESSION -> x % 4 + y % 4 * 4\n else -> it\n }\n )\n }\n return ImageSource.fromUrlString(resultServerUrl.toString())\n }\n }\n val tiledSurfaceImage = buildTiledSurfaceImage(tileFactory, numLevels, tileSize, transparent, levelOffset)\n return object : MercatorTiledImageLayer(name, tiledSurfaceImage), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n override val serviceAddress = urlTemplate\n override val imageFormat = imageFormat\n override val isTransparent = transparent\n }\n }\n\n private fun parseUrl(serverUrl: String): List {\n val result = mutableListOf()\n val builder = StringBuilder()\n serverUrl.toCharArray().forEachIndexed { index, char ->\n if (char == OPEN_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n builder.append(char)\n if (char == CLOSED_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n if (index == serverUrl.length - 1 && char != CLOSED_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n }\n return result\n }\n}","package earth.worldwind.layer.starfield\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.MR\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawableStarField\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n/**\n * Constructs a layer showing stars and the Sun around the Earth.\n * If used together with the AtmosphereLayer, the StarFieldLayer must be inserted before the AtmosphereLayer.\n *\n * If you want to use your own star data, the file provided must be .json\n * and the fields \"ra\", \"dec\" and \"vmag\" must be present in the metadata.\n * ra and dec must be expressed in degrees.\n *\n * This layer uses J2000.0 as the ref epoch.\n *\n * If the star data .json file is too big, consider enabling gzip compression on your web server.\n * For more info about enabling gzip compression consult the configuration for your web server.\n */\nopen class StarFieldLayer(starDataSource: FileResource = MR.files.stars_json): AbstractLayer(\"StarField\") {\n override var isPickEnabled = false // The StarField Layer is not pickable.\n /**\n * Resource for the stars data\n */\n var starDataSource = starDataSource\n set(value) {\n field = value\n invalidateStarData()\n }\n /**\n * Resource for the sun texture image.\n */\n var sunImageSource = ImageSource.fromResource(MR.images.sun_texture)\n /**\n * The size of the Sun in pixels.\n * This can not exceed the maximum allowed pointSize of the GPU.\n * A warning will be given if the size is too big and the allowed max size will be used.\n */\n var sunSize = 128f\n /**\n * Indicates weather to show or hide the Sun\n */\n var isShowSun = true\n /**\n * Display star field on a specified time point. If null, then current time will be used each frame.\n */\n var time : Instant? = null\n protected var starsPositionsVboCacheKey = nextCacheKey() //gpu cache key for the stars vbo.\n protected var numStars = 0\n protected var starData: StarData? = null\n protected var minMagnitude = Float.MAX_VALUE\n protected var maxMagnitude = Float.MIN_VALUE\n protected var sunBufferViewHashCode = 0\n /**\n * A flag to indicate the star data is currently being retrieved.\n */\n protected var loadStarted = false\n protected val minScale = 10e6\n protected var sunPositionsCacheKey = nextCacheKey()\n protected val sunBufferView = FloatArray(4)\n\n protected fun nextCacheKey() = Any()\n\n protected open fun invalidateStarData() {\n starData = null\n starsPositionsVboCacheKey = nextCacheKey()\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.globe.is2D) return // Star Field layer is not applicable for 2D globe\n\n loadStarData(rc)\n\n val starData = starData ?: return // Star data is not loaded yet\n val time = time ?: Clock.System.now()\n val pool = rc.getDrawablePool()\n val drawable = DrawableStarField.obtain(pool)\n\n // Render Star Field\n drawable.starsPositionsBuffer = rc.getBufferObject(starsPositionsVboCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, createStarsGeometry(starData, rc))\n }\n // Number of days since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n drawable.julianDate = SunPosition.computeJulianDate(time)\n drawable.minMagnitude = minMagnitude\n drawable.maxMagnitude = maxMagnitude\n drawable.numStars = numStars\n drawable.matrix.copy(rc.modelviewProjection)\n val scale = (rc.camera.position.altitude * 1.5).coerceAtLeast(minScale)\n drawable.matrix.multiplyByScale(scale, scale, scale)\n\n // Render The Sun\n drawable.isShowSun = isShowSun\n if (drawable.isShowSun) {\n drawable.sunTexture = rc.getTexture(sunImageSource, null)\n if (drawable.sunTexture != null) {\n drawable.sunSize = sunSize\n\n val sunCelestialLocation = SunPosition.getAsCelestialLocation(time)\n\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n sunBufferView[0] = sunCelestialLocation.declination.inDegrees.toFloat()\n sunBufferView[1] = sunCelestialLocation.rightAscension.inDegrees.toFloat()\n sunBufferView[2] = sunSize.coerceAtMost(DrawableStarField.maxGlPointSize)\n sunBufferView[3] = 1f\n\n val hashCode = sunBufferView.contentHashCode()\n if (sunBufferViewHashCode != hashCode) {\n sunBufferViewHashCode = hashCode\n sunPositionsCacheKey = nextCacheKey()\n }\n drawable.sunPositionsBuffer = rc.getBufferObject(sunPositionsCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, sunBufferView)\n }\n }\n }\n\n drawable.program = rc.getShaderProgram { StarFieldProgram() }\n rc.offerBackgroundDrawable(drawable)\n }\n\n protected open fun loadStarData(rc: RenderContext) {\n if (starData == null && !loadStarted) {\n loadStarted = true\n rc.renderResourceCache.retrieveTextFile(starDataSource) {\n starData = Json.decodeFromString(it)\n loadStarted = false\n WorldWind.requestRedraw()\n }\n }\n }\n\n protected open fun createStarsGeometry(starData: StarData, rc: RenderContext): FloatArray {\n val indexes = parseStarsMetadata(starData.metadata)\n require(indexes[0] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing ra field in star data.\")\n }\n require(indexes[1] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing dec field in star data.\")\n }\n require(indexes[2] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing vmag field in star data.\")\n }\n\n numStars = starData.data.size\n minMagnitude = Float.MAX_VALUE\n maxMagnitude = Float.MIN_VALUE\n\n val positions = FloatArray(numStars * 4)\n var positionIndex = 0\n for (i in starData.data.indices) {\n val starInfo = starData.data[i]\n val rightAscension = starInfo[indexes[0]] //for longitude\n val declination = starInfo[indexes[1]] //for latitude\n val magnitude = starInfo[indexes[2]]\n val pointSize = if (magnitude < 2) 2f else 1f\n\n positions[positionIndex++] = declination\n positions[positionIndex++] = rightAscension\n positions[positionIndex++] = pointSize * rc.densityFactor\n positions[positionIndex++] = magnitude\n\n minMagnitude = minMagnitude.coerceAtMost(magnitude)\n maxMagnitude = maxMagnitude.coerceAtLeast(magnitude)\n }\n\n return positions\n }\n\n protected open fun parseStarsMetadata(metadata: List): Array {\n var raIndex = -1\n var decIndex = -1\n var magIndex = -1\n for (i in metadata.indices) {\n val starMetaInfo = metadata[i]\n if (starMetaInfo.name == \"ra\") raIndex = i\n if (starMetaInfo.name == \"dec\") decIndex = i\n if (starMetaInfo.name == \"vmag\") magIndex = i\n }\n return arrayOf(raIndex, decIndex, magIndex)\n }\n\n @Serializable\n data class StarMetadata(\n val name: String, val description: String, val datatype: String,\n val arraysize: Int, val unit: String, val ucd: String\n )\n\n @Serializable\n data class StarData(val metadata: List, val data: List>)\n}\n","package earth.worldwind.layer.starfield\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n/**\n * StarFieldProgram is a GLSL program that draws points representing stars.\n */\nopen class StarFieldProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n attribute vec4 vertexPoint;\n\n uniform mat4 mvpMatrix;\n /* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\n uniform float numDays;\n uniform vec2 magnitudeRange;\n\n varying float magnitudeWeight;\n\n /* normalizes an angle between 0.0 and 359.0 */\n float normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n }\n\n /* transforms declination and right ascension in cartesian coordinates */\n vec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n }\n\n /* normalizes a value between 0.0 and 1.0 */\n float normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n }\n\n void main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform sampler2D textureSampler;\n uniform int textureEnabled;\n\n varying float magnitudeWeight;\n\n const vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\n const vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\n void main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n /* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var numDaysId = KglUniformLocation.NONE\n protected var magnitudeRangeId = KglUniformLocation.NONE\n protected var textureUnitId = KglUniformLocation.NONE\n protected var textureEnabledId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\");\n numDaysId = gl.getUniformLocation(program, \"numDays\");\n magnitudeRangeId = gl.getUniformLocation(program, \"magnitudeRange\");\n textureUnitId = gl.getUniformLocation(program, \"textureSampler\");\n textureEnabledId = gl.getUniformLocation(program, \"textureEnabled\");\n }\n\n /**\n * Loads the specified matrix as the value of this program's 'mvpMatrix' uniform variable.\n *\n * @param matrix The matrix to load.\n */\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n /**\n * Loads the specified number as the value of this program's 'numDays' uniform variable.\n *\n * @param numDays The number of days (positive or negative) since Greenwich noon, Terrestrial Time,\n * on 1 January 2000 (J2000.0)\n */\n fun loadNumDays(numDays: Float) = gl.uniform1f(numDaysId, numDays)\n\n /**\n * Loads the specified numbers as the value of this program's 'magnitudeRange' uniform variable.\n *\n * @param minMag Minimal magnitude\n * @param maxMag Maximal magnitude\n */\n fun loadMagnitudeRange(minMag: Float, maxMag: Float) = gl.uniform2f(magnitudeRangeId, minMag, maxMag)\n\n /**\n * Loads the specified number as the value of this program's 'textureSampler' uniform variable.\n *\n * @param unit The texture unit.\n */\n fun loadTextureUnit(unit: Int) = gl.uniform1i(textureUnitId, unit - GL_TEXTURE0);\n\n /**\n * Loads the specified boolean as the value of this program's 'textureEnabledLocation' uniform variable.\n *\n * @param value Texture enabled\n */\n fun loadTextureEnabled(value: Boolean) = gl.uniform1i(textureEnabledId, if (value) 1 else 0)\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.coverage.TiledElevationCoverage\nimport earth.worldwind.globe.elevation.coverage.WebElevationCoverage\n\n/**\n * Generates elevations from OGC Web Coverage Service (WCS) version 1.0.0.\n *

\n * Wcs100ElevationCoverage requires the WCS service address, coverage name, and coverage bounding sector. Get Coverage\n * requests generated for retrieving data use the WCS version 1.0.0 protocol and are limited to the EPSG:4326 coordinate\n * system. Wcs100ElevationCoverage does not perform version negotiation and assumes the service supports the format and\n * coordinate system parameters detailed here.\n */\nclass Wcs100ElevationCoverage(\n override val serviceAddress: String, override val coverageName: String, override val outputFormat: String,\n sector: Sector, resolution: Angle\n): TiledElevationCoverage(\n TileMatrixSet.fromTilePyramid(sector, if (sector.isFullSphere) 2 else 1, 1, 256, 256, resolution),\n Wcs100ElevationSourceFactory(serviceAddress, coverageName, outputFormat)\n), WebElevationCoverage {\n override val serviceType = SERVICE_TYPE\n\n companion object {\n const val SERVICE_TYPE = \"WCS 1.0.0\"\n }\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.globe.elevation.ElevationSource\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\n\n/**\n * Factory for constructing WCS version 1.0.0 URLs associated with WCS Get Coverage requests.\n */\nopen class Wcs100ElevationSourceFactory(\n /**\n * The WCS service address use to build Get Coverage URLs.\n */\n protected val serviceAddress: String,\n /**\n * The coverage name of the desired WCS coverage.\n */\n protected val coverageName: String,\n /**\n * Required WCS source output format\n */\n protected val outputFormat: String,\n /**\n * The coordinate reference system to use in Get Coverage URLs. Defaults to EPSG:4326.\n */\n protected val coordinateSystem: String = \"EPSG:4326\"\n): ElevationSourceFactory {\n override val contentType = \"WCS 1.0.0\"\n\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int): ElevationSource {\n val urlString = urlForTile(tileMatrix, row, column)\n return ElevationSource.fromUrlString(urlString)\n }\n\n protected open fun urlForTile(tileMatrix: TileMatrix, row: Int, col: Int) = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WCS\")\n .appendQueryParameter(\"REQUEST\", \"GetCoverage\")\n .appendQueryParameter(\"COVERAGE\", coverageName)\n .appendQueryParameter(\"CRS\", coordinateSystem)\n .appendQueryParameter(\"BBOX\", tileMatrix.tileSector(row, col).run {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n })\n .appendQueryParameter(\"WIDTH\", tileMatrix.tileWidth.toString())\n .appendQueryParameter(\"HEIGHT\", tileMatrix.tileHeight.toString())\n .appendQueryParameter(\"FORMAT\", outputFormat)\n .build().toString()\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSource\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.globe.elevation.coverage.TiledElevationCoverage\nimport earth.worldwind.globe.elevation.coverage.WebElevationCoverage\n\n/**\n * Generates elevations from OGC Web Map Service (WMS) version 1.3.0.\n *\n * @param serviceAddress OGC Web Map Service (WMS) server address\n * @param coverageName comma-separated coverage names\n * @param outputFormat required image format\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\nopen class WmsElevationCoverage(\n override val serviceAddress: String, override val coverageName: String, override val outputFormat: String,\n sector: Sector, resolution: Angle\n): TiledElevationCoverage(\n buildTileMatrixSet(sector, resolution), buildElevationSourceFactory(serviceAddress, coverageName, outputFormat)\n), WebElevationCoverage {\n override val serviceType = SERVICE_TYPE\n\n companion object {\n const val SERVICE_TYPE = \"WMS\"\n\n /**\n * 4x2 top level matrix equivalent to 90 degree top level tiles\n *\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\n private fun buildTileMatrixSet(sector: Sector, resolution: Angle) = TileMatrixSet.fromTilePyramid(\n sector, 4, 2, 256, 256, resolution\n )\n\n private fun buildElevationSourceFactory(serviceAddress: String, coverage: String, imageFormat: String): ElevationSourceFactory {\n val layerConfig = WmsLayerConfig(serviceAddress, coverage).apply { this.imageFormat = imageFormat }\n val wmsTileFactory = WmsTileFactory(layerConfig)\n return object : ElevationSourceFactory {\n override val contentType = \"WMS 1.3.0\"\n\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int): ElevationSource {\n val tileSector = tileMatrix.tileSector(row, column)\n val urlString = wmsTileFactory.urlForTile(tileSector, tileMatrix.tileWidth, tileMatrix.tileHeight)\n return ElevationSource.fromUrlString(urlString)\n }\n }\n }\n }\n}","package earth.worldwind.ogc\n\n/**\n * Configuration values for a WMS layer.\n */\nclass WmsLayerConfig(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String\n) {\n /**\n * The WMS protocol version. Defaults to 1.3.0.\n */\n var wmsVersion = \"1.3.0\"\n /**\n * The comma-separated list of WMS style names.\n */\n var styleNames: String? = null\n /**\n * The coordinate reference system to use when requesting layers. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map requests.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map requests should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map requests.\n */\n var timeString: String? = null\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Ellipsoid\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.layer.WebImageLayer\nimport earth.worldwind.ogc.wms.WmsCapabilities\nimport earth.worldwind.ogc.wms.WmsLayer\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.LevelSetConfig\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.serialization.XML\n\nobject WmsLayerFactory {\n\n const val SERVICE_TYPE = \"WMS\"\n private const val DEFAULT_WMS_NUM_LEVELS = 20\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n /**\n * Create tiled image layer based on WMS layer metadata retrieved from server capabilities or decoded from parameter\n *\n * @param serviceAddress WMS service address\n * @param layerNames Optional list of WMS layer names to be requested and combined into the resulting image layer\n * @param serviceMetadata Optional WMS capabilities XML string to avoid online capabilities request\n * @param displayName Optional layer display name\n */\n suspend fun createLayer(\n serviceAddress: String, layerNames: List, serviceMetadata: String? = null, displayName: String? = null\n ): TiledImageLayer {\n require(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerNames.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmsCapabilitiesText = serviceMetadata ?: retrieveWmsCapabilities(serviceAddress)\n val wmsCapabilities = decodeWmsCapabilities(wmsCapabilitiesText)\n val wmsLayers = wmsCapabilities.getNamedLayers(layerNames)\n require(wmsLayers.isNotEmpty()) {\n makeMessage(\"WmsLayerFactory\", \"createLayer\", \"Provided layer names did not match available layers\")\n }\n return createWmsImageLayer(serviceAddress, wmsCapabilitiesText, wmsLayers, displayName)\n }\n\n private suspend fun retrieveWmsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.3.0\")\n .appendQueryParameter(\"SERVICE\", \"WMS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }\n\n private suspend fun decodeWmsCapabilities(xmlText: String) = withContext(Dispatchers.Default) {\n xml.decodeFromString(xmlText)\n }\n\n private fun createWmsImageLayer(\n serviceAddress: String, serviceMetadata: String, wmsLayers: List, name: String?\n ): TiledImageLayer = object : TiledImageLayer(\n name ?: wmsLayers.joinToString(\",\") { lc -> lc.title }, createWmsSurfaceImage(wmsLayers)\n ), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n override val serviceAddress = serviceAddress\n override val serviceMetadata = serviceMetadata\n override val layerName = wmsLayers.mapNotNull { lc -> lc.name }.joinToString(\",\")\n override val imageFormat get() = (tiledSurfaceImage?.tileFactory as? WmsTileFactory)?.imageFormat ?: \"image/png\"\n override val isTransparent get() = (tiledSurfaceImage?.tileFactory as? WmsTileFactory)?.isTransparent ?: true\n }\n\n private fun createWmsSurfaceImage(wmsLayers: List): TiledSurfaceImage {\n // Check if the server supports multiple layer request\n val layerLimit = wmsLayers[0].capability?.capabilities?.service?.layerLimit\n require (layerLimit == null || layerLimit >= wmsLayers.size) {\n makeMessage(\n \"WmsLayerFactory\", \"createFromWmsAsync\",\n \"The number of layers specified exceeds the services limit\"\n )\n }\n val wmsLayerConfig = getLayerConfigFromWmsCapabilities(wmsLayers)\n val levelSetConfig = getLevelSetConfigFromWmsCapabilities(wmsLayers)\n return TiledSurfaceImage(WmsTileFactory(wmsLayerConfig), LevelSet(levelSetConfig))\n }\n\n internal fun getLayerConfigFromWmsCapabilities(wmsLayers: List): WmsLayerConfig {\n // Construct the WmsTiledImage renderable from the WMS Capabilities properties\n val wmsCapabilities = wmsLayers[0].capability?.capabilities\n val serviceAddress = wmsCapabilities?.capability?.request?.getMap?.getUrl ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Unable to resolve GetMap URL\")\n )\n var matchingCoordinateSystems: MutableSet? = null\n for (wmsLayer in wmsLayers) {\n val wmsLayerCoordinateSystems = wmsLayer.referenceSystems\n if (matchingCoordinateSystems == null) matchingCoordinateSystems = wmsLayerCoordinateSystems.toMutableSet()\n else matchingCoordinateSystems.retainAll(wmsLayerCoordinateSystems.toSet())\n }\n val wmsLayerConfig = WmsLayerConfig(serviceAddress, wmsLayers.joinToString(\",\") { l -> l.name ?: \"\" })\n when (val wmsVersion = wmsCapabilities.version) {\n \"1.3.0\" -> wmsLayerConfig.wmsVersion = wmsVersion\n else -> error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Version not compatible\")\n )\n }\n if (matchingCoordinateSystems?.contains(\"EPSG:4326\") == true) {\n wmsLayerConfig.coordinateSystem = \"EPSG:4326\"\n } else if (matchingCoordinateSystems?.contains(\"CRS:84\") == true) {\n wmsLayerConfig.coordinateSystem = \"CRS:84\"\n } else error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Coordinate systems not compatible\")\n )\n\n // Negotiate Image Formats\n val imageFormats = wmsCapabilities.capability.request.getMap.formats\n wmsLayerConfig.imageFormat = compatibleImageFormats.firstOrNull { format -> imageFormats.contains(format) } ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Image Formats Not Compatible\")\n )\n\n // Setup transparency. If at least one layer is opaque then transparency is disabled\n wmsLayerConfig.isTransparent = !wmsLayers.any { layer -> layer.isOpaque }\n\n return wmsLayerConfig\n }\n\n internal fun getLevelSetConfigFromWmsCapabilities(layerCapabilities: List): LevelSetConfig {\n val levelSetConfig = LevelSetConfig()\n var minScaleDenominator = Double.MAX_VALUE\n val sector = Sector()\n for (layerCapability in layerCapabilities) {\n layerCapability.minScaleDenominator?.let { minScaleDenominator = minScaleDenominator.coerceAtMost(it) }\n layerCapability.geographicBoundingBox?.let { sector.union(it) }\n }\n if (!sector.isEmpty) levelSetConfig.sector.copy(sector) else error(\n makeMessage(\n \"WmsLayerFactory\", \"getLevelSetConfigFromWmsCapabilities\", \"Geographic Bounding Box Not Defined\"\n )\n )\n levelSetConfig.numLevels = when {\n minScaleDenominator != Double.MAX_VALUE -> {\n // WMS 1.3.0 scale configuration. Based on the WMS 1.3.0 spec page 28. The hard coded value 0.00028 is\n // detailed in the spec as the common pixel size of 0.28mm x 0.28mm. Configures the maximum level not to\n // exceed the specified min scale denominator.\n val minMetersPerPixel = minScaleDenominator * 0.00028\n val minRadiansPerPixel = minMetersPerPixel / Ellipsoid.WGS84.semiMajorAxis\n levelSetConfig.numLevelsForMinResolution(minRadiansPerPixel)\n }\n else -> DEFAULT_WMS_NUM_LEVELS // Default scale configuration when no minimum scale denominator or scale hint is provided.\n }\n return levelSetConfig\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ln\nimport kotlin.math.roundToInt\n\n/**\n * Multi-resolution, hierarchical collection of tiles organized into levels of increasing resolution. Applications\n * typically do not interact with this class.\n */\nopen class LevelSet {\n /**\n * The sector spanned by this level set.\n */\n val sector: Sector\n /**\n * Tile origin for this level set\n */\n val tileOrigin: Sector\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of this level set.\n */\n val firstLevelDelta: Location\n /**\n * The width in pixels of images associated with tiles in this level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with this level set.\n */\n val tileWidth: Int\n /**\n * The height in pixels of images associated with tiles in this level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with this level set.\n */\n val tileHeight: Int\n /**\n * Determines how many levels to skip from retrieving tile data during tile pyramid subdivision.\n */\n val levelOffset: Int\n /**\n * The hierarchical levels, sorted from lowest to highest resolution.\n */\n protected val levels: Array\n /**\n * Returns the number of levels in this level set.\n */\n val numLevels get() = levels.size\n /**\n * Returns the first level (the lowest resolution) of this level set.\n */\n val firstLevel get() = levels.first()\n /**\n * Returns the last level (the highest resolution) of this level set.\n */\n val lastLevel get() = levels.last()\n\n /**\n * Constructs an empty level set with no levels. The methods `level`, `levelForResolution`,\n * `firstLevel` and `lastLevel` always return null.\n */\n constructor() {\n sector = Sector()\n tileOrigin = Sector()\n firstLevelDelta = Location()\n tileWidth = 0\n tileHeight = 0\n levelOffset = 0\n levels = emptyArray()\n }\n\n /**\n * Constructs a level set with specified parameters.\n *\n * @param sector the sector spanned by this level set\n * @param tileOrigin the origin for this level set\n * @param firstLevelDelta the geographic width and height of tiles in the first level (the lowest resolution)\n * of the level set\n * @param numLevels the number of levels in the level set\n * @param tileWidth the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the longitudinal direction of elevation tiles associate with this leve set\n * @param tileHeight the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the latitudinal direction of elevation tiles associate with this level set\n * @param levelOffset determines how many levels to skip from retrieving texture during tile pyramid subdivision\n *\n * @throws IllegalArgumentException If any dimension is zero\n */\n constructor(\n sector: Sector, tileOrigin: Sector, firstLevelDelta: Location, numLevels: Int, tileWidth: Int, tileHeight: Int, levelOffset: Int = 0\n ) {\n require(firstLevelDelta.latitude.inDegrees > 0.0 && firstLevelDelta.longitude.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidTileDelta\")\n }\n require(numLevels >= 0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidNumLevels\")\n }\n require(tileWidth >= 1 && tileHeight >= 1) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidWidthOrHeight\")\n }\n this.sector = sector\n this.tileOrigin = tileOrigin\n this.firstLevelDelta = firstLevelDelta\n this.tileWidth = tileWidth\n this.tileHeight = tileHeight\n this.levelOffset = levelOffset\n this.levels = Array(numLevels) {\n val divisor = 1 shl it\n Level(this, it, Location(firstLevelDelta.latitude / divisor, firstLevelDelta.longitude / divisor))\n }\n }\n\n /**\n * Constructs a level set with parameters from a specified configuration. The configuration's sector must be\n * non-null, its first level delta must be positive, its number of levels must be 1 or more, and its tile width and\n * tile height must be 1 or greater.\n *\n * @param config the configuration for this level set\n */\n constructor(config: LevelSetConfig): this(\n config.sector,\n config.tileOrigin,\n config.firstLevelDelta,\n config.numLevels,\n config.tileWidth,\n config.tileHeight,\n config.levelOffset\n )\n\n /**\n * Returns the [Level] for a specified level number.\n *\n * @param levelNumber the number of the desired level\n *\n * @return the requested level, or null if the level does not exist\n */\n fun level(levelNumber: Int) = if (levelNumber in levels.indices) levels[levelNumber] else null\n\n /**\n * Returns the level that most closely approximates the specified resolution.\n *\n * @param resolution the desired resolution in angular value of latitude per pixel.\n *\n * @return the level for the specified resolution, or null if this level set is empty\n *\n * @throws IllegalArgumentException If the resolution is not positive\n * @throws IllegalStateException If this level set is empty\n */\n fun levelForResolution(resolution: Angle): Level {\n require(resolution.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSetConfig\", \"levelForResolution\", \"invalidResolution\")\n }\n if (levels.isEmpty()) error(\"This level set is empty\")\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / resolution.inDegrees) / ln(2.0) // fractional level address\n val levelNumber = level.roundToInt() // nearest neighbor level\n return when {\n levelNumber < 0 -> levels[0] // unable to match the resolution; return the first level\n levelNumber < levels.size -> levels[levelNumber] // nearest neighbor level is in this level set\n else -> levels[levels.size - 1] // unable to match the resolution; return the last level\n }\n }\n\n /**\n * Determine the min relevant level for the sector of this level set\n *\n * @param maxLevel Maximum available level\n * @return Minimum relevant level number\n */\n fun minRelevantLevel(maxLevel: Level = lastLevel) = levels[sector.minLevelNumber(maxLevel.levelNumber)]\n}",null,"package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.TileFactory\n\n/**\n * Factory for constructing URLs associated with WMS Get Map requests.\n */\nopen class WmsTileFactory(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n\n /**\n * The WMS protocol version.\n */\n var wmsVersion: String,\n\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String,\n /**\n * The comma-separated list of WMS style names. May be null in which case the default style is assumed.\n */\n var styleNames: String?\n): TileFactory {\n /**\n * The coordinate reference system to use in Get Map URLs. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map URLs. May be null in which case a default format is assumed.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map URLs should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map URLs. May be null in which case no time parameter is included.\n */\n var timeString: String? = null\n\n /**\n * Constructs a level set with a specified configuration. The configuration's service address, WMS protocol version,\n * layer names and coordinate reference system must be non-null. The style names may be null, in which case the\n * default style is assumed. The time string may be null, in which case no time parameter is included.\n *\n * @param config the configuration for this URL builder\n */\n constructor(config: WmsLayerConfig): this(config.serviceAddress, config.wmsVersion, config.layerNames, config.styleNames) {\n coordinateSystem = config.coordinateSystem\n imageFormat = config.imageFormat\n isTransparent = config.isTransparent\n timeString = config.timeString\n }\n\n override val contentType = \"WMS 1.3.0\"\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(sector, level.tileWidth, level.tileHeight).let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this }\n }\n }\n\n fun urlForTile(sector: Sector, width: Int, height: Int) = Uri.parse(serviceAddress).buildUpon().apply {\n require(width >= 1 && height >= 1) {\n logMessage(ERROR, \"WmsTileFactory\", \"urlForTile\", \"invalidWidthOrHeight\")\n }\n appendQueryParameter(\"VERSION\", wmsVersion)\n appendQueryParameter(\"SERVICE\", \"WMS\")\n appendQueryParameter(\"REQUEST\", \"GetMap\")\n appendQueryParameter(\"LAYERS\", layerNames)\n appendQueryParameter(\"STYLES\", styleNames ?: \"\")\n appendQueryParameter(\"WIDTH\", width.toString())\n appendQueryParameter(\"HEIGHT\", height.toString())\n appendQueryParameter(\"FORMAT\", imageFormat ?: \"image/png\")\n appendQueryParameter(\"TRANSPARENT\", if (isTransparent) \"TRUE\" else \"FALSE\")\n if (wmsVersion == \"1.3.0\") {\n appendQueryParameter(\"CRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n if (coordinateSystem == \"CRS:84\") {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n } else {\n \"${minLatitude.inDegrees},${minLongitude.inDegrees},${maxLatitude.inDegrees},${maxLongitude.inDegrees}\"\n }\n })\n } else {\n appendQueryParameter(\"SRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n })\n }\n timeString?.let { appendQueryParameter(\"TIME\", it) }\n }.build().toString()\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Angle.Companion.toRadians\nimport earth.worldwind.geom.Ellipsoid\nimport earth.worldwind.geom.Location.Companion.fromDegrees\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.layer.WebImageLayer\nimport earth.worldwind.ogc.wmts.WmtsCapabilities\nimport earth.worldwind.ogc.wmts.WmtsLayer\nimport earth.worldwind.ogc.wmts.WmtsTileMatrixSet\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.TileFactory\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.serialization.XML\n\nobject WmtsLayerFactory {\n\n const val SERVICE_TYPE = \"WMTS\"\n private const val PIXEL_SIZE = 0.28E-3 // Standardized rendering pixel size (0.28mm)\n private const val STYLE_TEMPLATE = \"{style}\"\n private const val TILE_MATRIX_SET_TEMPLATE = \"{TileMatrixSet}\"\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n /**\n * Create tiled image layer based on WMTS layer metadata retrieved from server capabilities or decoded from parameter\n *\n * @param serviceAddress WMTS service address\n * @param layerName Optional WMTS layer name to be requested into the resulting image layer\n * @param serviceMetadata Optional WMTS capabilities XML string to avoid online capabilities request\n * @param displayName Optional layer display name\n */\n suspend fun createLayer(\n serviceAddress: String, layerName: String, serviceMetadata: String? = null, displayName: String? = null\n ): TiledImageLayer {\n\t\trequire(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerName.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmtsCapabilitiesText = serviceMetadata ?: retrieveWmtsCapabilities(serviceAddress)\n val wmtsCapabilities = decodeWmtsCapabilities(wmtsCapabilitiesText)\n val wmtsLayer = wmtsCapabilities.getLayer(layerName)\n requireNotNull(wmtsLayer) {\n makeMessage(\"WmtsLayerFactory\", \"createLayer\", \"Specified layer name was not found\")\n }\n return createWmtsImageLayer(serviceAddress, wmtsCapabilitiesText, wmtsLayer, displayName)\n }\n\n private suspend fun retrieveWmtsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }\n\n private suspend fun decodeWmtsCapabilities(xmlText: String) = withContext(Dispatchers.Default) {\n xml.decodeFromString(xmlText)\n }\n\n private fun createWmtsImageLayer(\n serviceAddress: String, serviceMetadata: String, wmtsLayer: WmtsLayer, name: String?\n ): TiledImageLayer = object : TiledImageLayer(name ?: wmtsLayer.title, createWmtsSurfaceImage(wmtsLayer)), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n override val serviceAddress = serviceAddress\n override val serviceMetadata = serviceMetadata\n override val layerName = wmtsLayer.identifier\n override val imageFormat get() = (tiledSurfaceImage?.tileFactory as? WmtsTileFactory)?.imageFormat ?: \"image/png\"\n override val isTransparent = true // WMTS has no transparency data available\n }\n\n private fun createWmtsSurfaceImage(wmtsLayer: WmtsLayer): TiledSurfaceImage {\n // Search the list of coordinate system compatible tile matrix sets for compatible tiling schemes\n val tileMatrixSet = determineCompatibleTileMatrixSet(wmtsLayer.layerSupportedTileMatrixSets) ?: error(\n makeMessage(\"WmtsLayerFactory\", \"createWmtsLayer\", \"Tile Schemes Not Compatible\")\n )\n val tileFactory = createWmtsTileFactory(wmtsLayer, tileMatrixSet)\n val levelSet = createWmtsLevelSet(wmtsLayer, tileMatrixSet)\n return TiledSurfaceImage(tileFactory, levelSet)\n }\n\n private fun createWmtsTileFactory(wmtsLayer: WmtsLayer, tileMatrixSet: TileMatrixSet): TileFactory {\n // First choice is a ResourceURL\n for (resourceUrl in wmtsLayer.resourceUrls) if (compatibleImageFormats.contains(resourceUrl.format)) {\n val template = resourceUrl.template\n .replace(STYLE_TEMPLATE, wmtsLayer.styles[0].identifier)\n .replace(TILE_MATRIX_SET_TEMPLATE, tileMatrixSet.identifier)\n return WmtsTileFactory(template, tileMatrixSet.tileMatrices, tileMatrixSet.matrixHeight, resourceUrl.format)\n }\n\n // Second choice is if the server supports KVP\n val baseUrl = determineKvpUrl(wmtsLayer)\n return if (baseUrl != null) {\n val imageFormat = compatibleImageFormats.firstOrNull { format -> wmtsLayer.formats.contains(format) } ?: error(\n makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"Image Formats Not Compatible\")\n )\n val styleIdentifier = wmtsLayer.styles[0].identifier\n val template = buildWmtsKvpTemplate(\n baseUrl, wmtsLayer.identifier, imageFormat, styleIdentifier, tileMatrixSet.identifier\n )\n WmtsTileFactory(template, tileMatrixSet.tileMatrices, tileMatrixSet.matrixHeight, imageFormat)\n } else error(makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"No KVP Get Support\"))\n }\n\n private fun createWmtsLevelSet(wmtsLayer: WmtsLayer, tileMatrixSet: TileMatrixSet) = with(tileMatrixSet) {\n val sector = wmtsLayer.wgs84BoundingBox?.sector ?: error(\n makeMessage(\n \"WmtsLayerFactory\", \"createWmtsLevelSet\",\n \"WGS84BoundingBox not defined for layer: \" + wmtsLayer.identifier\n )\n )\n val pixelSpan = scaleDenominator / toRadians(Ellipsoid.WGS84.semiMajorAxis) * PIXEL_SIZE\n val tileSpanX = tileWidth * pixelSpan\n val tileSpanY = tileHeight * pixelSpan\n val maxX = minX + tileSpanX * matrixWidth\n val minY = maxY - tileSpanY * matrixHeight\n val deltaX = maxX - minX\n val deltaY = maxY - minY\n LevelSet(\n sector, fromDegrees(minY, minX, deltaY, deltaX),\n fromDegrees(deltaY / matrixHeight, deltaX / matrixWidth),\n tileMatrices.size, tileWidth, tileHeight\n )\n }\n\n private fun buildWmtsKvpTemplate(\n kvpServiceAddress: String, layer: String, format: String, styleIdentifier: String, tileMatrixSet: String\n ) = Uri.parse(kvpServiceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetTile\")\n .appendQueryParameter(\"LAYER\", layer)\n .appendQueryParameter(\"STYLE\", styleIdentifier)\n .appendQueryParameter(\"FORMAT\", format)\n .appendQueryParameter(\"TILEMATRIXSET\", tileMatrixSet)\n .appendQueryParameter(\"TILEMATRIX\", WmtsTileFactory.TILE_MATRIX_TEMPLATE)\n .appendQueryParameter(\"TILEROW\", WmtsTileFactory.TILE_ROW_TEMPLATE)\n .appendQueryParameter(\"TILECOL\", WmtsTileFactory.TILE_COL_TEMPLATE)\n .build().toString()\n\n private fun determineCompatibleTileMatrixSet(tileMatrixSets: List): TileMatrixSet? {\n // Iterate through each provided tile matrix set\n for (tileMatrixSet in tileMatrixSets) {\n // Determine if there is a TileMatrixSet that matches our Coordinate System compatibility and tiling scheme\n val directAxisOrder = when (tileMatrixSet.supportedCrs) {\n \"urn:ogc:def:crs:OGC:1.3:CRS84\", \"http://www.opengis.net/def/crs/OGC/1.3/CRS84\" -> true\n \"urn:ogc:def:crs:EPSG::4326\" -> false\n else -> continue // The provided tile matrix set should adhere to either EPGS:4326 or CRS84\n }\n val tileMatrices = mutableListOf()\n var minX = 0.0\n var maxY = 0.0\n var scaleDenominator = 0.0\n var tileWidth = 0\n var tileHeight = 0\n var matrixWidth = 0\n var matrixHeight = 0\n var previousHeight = 0\n var previousWidth = 0\n var previousCorner: String? = null\n // Walk through the associated tile matrices and check for compatibility with WWA tiling scheme\n for (tileMatrix in tileMatrixSet.tileMatrices) {\n // Check and parse top left corner values\n if (previousCorner != null && tileMatrix.topLeftCorner != previousCorner) continue\n val topLeftCorner = tileMatrix.topLeftCorner.split(\"\\\\s+\".toRegex())\n if (topLeftCorner.size != 2) continue\n\n // Check tile size equals for all tile matrices\n if (tileWidth != 0 && tileWidth != tileMatrix.tileWidth) continue\n if (tileHeight != 0 && tileHeight != tileMatrix.tileHeight) continue\n\n // Ensure quad division behavior from previous tile matrix\n if (previousWidth != 0 && 2 * previousWidth != tileMatrix.matrixWidth) break\n if (previousHeight != 0 && 2 * previousHeight != tileMatrix.matrixHeight) break\n\n // Remember the first level parameters\n if (tileMatrices.isEmpty()) {\n try {\n if (directAxisOrder) {\n minX = topLeftCorner[0].toDouble()\n maxY = topLeftCorner[1].toDouble()\n } else {\n minX = topLeftCorner[1].toDouble()\n maxY = topLeftCorner[0].toDouble()\n }\n } catch (e: NumberFormatException) {\n logMessage(\n WARN, \"WmtsLayerFactory\", \"determineTileSchemeCompatibleTileMatrixSet\",\n \"Unable to parse TopLeftCorner values\"\n )\n continue\n }\n scaleDenominator = tileMatrix.scaleDenominator\n tileWidth = tileMatrix.tileWidth\n tileHeight = tileMatrix.tileWidth\n matrixWidth = tileMatrix.matrixWidth\n matrixHeight = tileMatrix.matrixHeight\n }\n\n // And add compatible tile matrix\n tileMatrices.add(tileMatrix.identifier)\n previousHeight = tileMatrix.matrixHeight\n previousWidth = tileMatrix.matrixWidth\n previousCorner = tileMatrix.topLeftCorner\n }\n\n // Return the first compatible tile matrix set\n if (tileMatrices.isNotEmpty()) return TileMatrixSet(\n tileMatrixSet.identifier, tileMatrices, scaleDenominator, minX, maxY,\n tileWidth, tileHeight, matrixWidth, matrixHeight\n )\n }\n return null\n }\n\n /**\n * Conducts a simple search through the [WmtsLayer]s distributed computing platform resources for a URL which\n * supports KVP queries to the WMTS. This method only looks at the first entry of every array of the layers 'GET'\n * retrieval methods.\n *\n * @param layer the [WmtsLayer] to search for KVP support\n *\n * @return the URL for the supported KVP or null if KVP or 'GET' method isn't provided by the layer\n */\n private fun determineKvpUrl(layer: WmtsLayer): String? {\n val capabilities = layer.capabilities\n val operationsMetadata = capabilities.operationsMetadata ?: return null\n val getTileOperation = operationsMetadata.getTile ?: return null\n val dcp = getTileOperation.dcps\n if (dcp.isEmpty()) return null\n val getMethods = dcp[0].getMethods\n if (getMethods.isEmpty()) return null\n val constraints = getMethods[0].constraints\n if (constraints.isEmpty()) return null\n val allowedValues = constraints[0].allowedValues\n return if (allowedValues.contains(\"KVP\")) getMethods[0].url else null\n }\n\n private class TileMatrixSet(\n val identifier: String,\n val tileMatrices: List,\n val scaleDenominator: Double,\n val minX: Double,\n val maxY: Double,\n val tileWidth: Int,\n val tileHeight: Int,\n val matrixWidth: Int,\n val matrixHeight: Int,\n )\n}",null,null,"package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.TileFactory\n\nopen class WmtsTileFactory(\n private val template: String,\n private val tileMatrixIdentifiers: List,\n private val firstLevelHeight: Int,\n val imageFormat: String\n): TileFactory {\n override val contentType = \"WMTS 1.0.0\"\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(level.levelNumber, row, column)?.let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this }\n }\n }\n\n fun urlForTile(level: Int, row: Int, column: Int): String? {\n if (level >= tileMatrixIdentifiers.size) {\n logMessage(\n Logger.WARN, \"WmtsTileFactory\", \"urlForTile\",\n \"invalid level for tileMatrixIdentifiers: $level\"\n )\n return null\n }\n\n // flip the row index\n val rowHeight = firstLevelHeight shl level\n val flipRow = rowHeight - row - 1\n return template.replace(TILE_MATRIX_TEMPLATE, tileMatrixIdentifiers[level])\n .replace(TILE_ROW_TEMPLATE, flipRow.toString()).replace(TILE_COL_TEMPLATE, column.toString())\n }\n\n companion object {\n const val TILE_MATRIX_TEMPLATE = \"{TileMatrix}\"\n const val TILE_ROW_TEMPLATE = \"{TileRow}\"\n const val TILE_COL_TEMPLATE = \"{TileCol}\"\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Attribution\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAttribution(\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String? = null,\n val onlineResource: WmsOnlineResource? = null,\n val logoURL: WmsLogoUrl? = null\n) {\n val url get() = onlineResource?.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"AuthorityURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAuthorityUrl(\n val name: String,\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsBoundingBox(\n val CRS: String,\n val minx: Double,\n val maxx: Double,\n val miny: Double,\n val maxy: Double,\n val resx: Double? = null,\n val resy: Double? = null,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"WMS_Capabilities\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapabilities(\n /**\n * Returns the document's version number.\n */\n val version: String = \"1.3.0\",\n /**\n * Returns the document's update sequence.\n */\n val updateSequence: String? = null,\n /**\n * Returns the document's service information.\n */\n val service: WmsService,\n val capability: WmsCapability\n) {\n /**\n * Returns all named layers in the capabilities document.\n */\n val namedLayers get() = capability.layers.flatMap { layer -> layer.namedLayers }\n\n init {\n capability.capabilities = this\n }\n\n fun getNamedLayer(name: String) = namedLayers.firstOrNull { layer -> layer.name == name }\n\n fun getNamedLayers(names: List) = namedLayers.filter { layer -> names.contains(layer.name) }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capability\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapability(\n val request: WmsRequest,\n val layers: List = emptyList(),\n /**\n * Object representation of an Exception element. Pre-allocated to prevent NPE in the event the server does not\n * include an Exception block.\n */\n val exception: WmsException = WmsException()\n) {\n @Transient\n lateinit var capabilities: WmsCapabilities\n\n init {\n layers.forEach { layer -> layer.capability = this }\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactAddress\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactAddress(\n @XmlElement(true)\n @XmlSerialName(\"AddressType\", WMS_NAMESPACE, WMS_PREFIX)\n val addressType: String,\n @XmlElement(true)\n @XmlSerialName(\"Address\", WMS_NAMESPACE, WMS_PREFIX)\n val address: String,\n @XmlElement(true)\n @XmlSerialName(\"City\", WMS_NAMESPACE, WMS_PREFIX)\n val city: String,\n @XmlElement(true)\n @XmlSerialName(\"StateOrProvince\", WMS_NAMESPACE, WMS_PREFIX)\n val stateOrProvince: String,\n @XmlElement(true)\n @XmlSerialName(\"PostCode\", WMS_NAMESPACE, WMS_PREFIX)\n val postCode: String,\n @XmlElement(true)\n @XmlSerialName(\"Country\", WMS_NAMESPACE, WMS_PREFIX)\n val country: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInformation\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactInformation(\n @XmlElement(true)\n @XmlSerialName(\"ContactPosition\", WMS_NAMESPACE, WMS_PREFIX)\n val position: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactVoiceTelephone\", WMS_NAMESPACE, WMS_PREFIX)\n val voiceTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactFacsimileNumber\", WMS_NAMESPACE, WMS_PREFIX)\n val facsimileTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactElectronicMailAddress\", WMS_NAMESPACE, WMS_PREFIX)\n val electronicMailAddress: String? = null,\n val contactAddress: WmsContactAddress? = null,\n val contactPersonPrimary: WmsContactPersonPrimary? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactPersonPrimary\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactPersonPrimary(\n @XmlElement(true)\n @XmlSerialName(\"ContactPerson\", WMS_NAMESPACE, WMS_PREFIX)\n val contactPerson: String,\n @XmlElement(true)\n @XmlSerialName(\"ContactOrganization\", WMS_NAMESPACE, WMS_PREFIX)\n val contactOrganization: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCPType\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDcpType(\n val http: WmsHttp\n) {\n val getHref get() = http.get.onlineResource.url\n val postHref get() = http.post?.onlineResource?.url\n\n @Serializable\n @XmlSerialName(\"HTTP\", WMS_NAMESPACE, WMS_PREFIX)\n data class WmsHttp(\n @XmlSerialName(\"Get\", WMS_NAMESPACE, WMS_PREFIX)\n val get: WmsHttpProtocol,\n @XmlSerialName(\"Post\", WMS_NAMESPACE, WMS_PREFIX)\n val post: WmsHttpProtocol? = null,\n )\n\n @Serializable\n data class WmsHttpProtocol(\n val onlineResource: WmsOnlineResource\n )\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDimension(\n val name: String,\n val units: String,\n val unitSymbol: String? = null,\n val default: String? = null,\n val multipleValues: Boolean? = null,\n val nearestValue: Boolean? = null,\n val current: Boolean? = null,\n @XmlValue(true)\n val value: String? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Exception\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsException(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList()\n)","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"EX_GeographicBoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsGeographicBoundingBox(\n @XmlElement(true)\n @XmlSerialName(\"northBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val north: Double,\n @XmlElement(true)\n @XmlSerialName(\"eastBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val east: Double,\n @XmlElement(true)\n @XmlSerialName(\"southBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val south: Double,\n @XmlElement(true)\n @XmlSerialName(\"westBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val west: Double\n) {\n val geographicBoundingBox get() = fromDegrees(south, west, north - south, east - west)\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Identifier\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsIdentifier(\n val authority: String,\n @XmlValue(true)\n val identifier: String,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsInfoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLayer(\n // Properties of the Layer element\n val layers: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = emptyList(),\n private val _styles: List = emptyList(),\n @XmlSerialName(\"CRS\", WMS_NAMESPACE, WMS_PREFIX)\n private val _referenceSystems: List = emptyList(),\n private val _geographicBoundingBox: WmsGeographicBoundingBox? = null,\n private val _boundingBoxes: List = emptyList(),\n private val _dimensions: List = emptyList(),\n private val _attribution: WmsAttribution? = null,\n private val _authorityUrls: List = emptyList(),\n val identifiers: List = emptyList(),\n val metadataUrls: List = emptyList(),\n @XmlSerialName(\"DataURL\", WMS_NAMESPACE, WMS_PREFIX)\n val dataUrls: List = emptyList(),\n @XmlSerialName(\"FeatureListURL\", WMS_NAMESPACE, WMS_PREFIX)\n val featureListUrls: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"MaxScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _maxScaleDenominator: Double? = null,\n @XmlElement(true)\n @XmlSerialName(\"MinScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _minScaleDenominator: Double? = null,\n // Properties of the Layer attributes\n @XmlSerialName(\"queryable\", WMS_NAMESPACE, WMS_PREFIX)\n val isQueryable: Boolean = false,\n @XmlSerialName(\"cascaded\", WMS_NAMESPACE, WMS_PREFIX)\n private val _cascaded: Int? = null,\n @XmlSerialName(\"opaque\", WMS_NAMESPACE, WMS_PREFIX)\n val isOpaque: Boolean = false,\n @XmlSerialName(\"noSubsets\", WMS_NAMESPACE, WMS_PREFIX)\n val isNoSubsets: Boolean = false,\n @XmlSerialName(\"fixedWidth\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedWidth: Int? = null,\n @XmlSerialName(\"fixedHeight\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedHeight: Int? = null,\n) {\n val namedLayers: List get() = (name?.let { listOf(this) } ?: emptyList()) + layers.flatMap { layer -> layer.namedLayers }\n val styles: List get() = _styles + (parent?.styles ?: emptyList())\n val referenceSystems: List get() = _referenceSystems + (parent?.referenceSystems ?: emptyList())\n val geographicBoundingBox: Sector? get() = _geographicBoundingBox?.geographicBoundingBox ?: parent?.geographicBoundingBox\n val boundingBoxes get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._boundingBoxes.forEach { bBox -> if (!result.containsKey(bBox.CRS)) result[bBox.CRS] = bBox }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val dimensions get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._dimensions.forEach { dimen -> if (!result.containsKey(dimen.name)) result[dimen.name] = dimen }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val attribution: WmsAttribution? get() = _attribution ?: parent?.attribution\n val authorityUrls: List get() = _authorityUrls + (parent?.authorityUrls ?: emptyList())\n val maxScaleDenominator: Double? get() = _maxScaleDenominator ?: parent?.maxScaleDenominator\n val minScaleDenominator: Double? get() = _minScaleDenominator ?: parent?.minScaleDenominator\n val cascaded: Int? get() = _cascaded ?: parent?.cascaded\n val fixedWidth: Int? get() = _fixedWidth ?: parent?.fixedWidth\n val fixedHeight: Int? get() = _fixedHeight ?: parent?.fixedHeight\n @Transient\n var capability: WmsCapability? = null\n get() = field ?: parent?.capability\n @Transient\n var parent: WmsLayer? = null\n\n init {\n layers.forEach { layer -> layer.parent = this }\n }\n\n fun getStyle(name: String) = styles.firstOrNull { style -> style.name == name }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LogoURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLogoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: Set = setOf(),\n val onlineResource: WmsOnlineResource,\n val width: Int? = null,\n val height: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"MetadataURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsMetadataUrl(\n val type: String,\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsOnlineResource(\n @XmlSerialName(\"type\", XLINK_NAMESPACE, XLINK_PREFIX)\n val type: String = \"simple\",\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Request\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsRequest(\n @XmlSerialName(\"GetCapabilities\", WMS_NAMESPACE, WMS_PREFIX)\n val getCapabilities: WmsRequestOperation,\n @XmlSerialName(\"GetMap\", WMS_NAMESPACE, WMS_PREFIX)\n val getMap: WmsRequestOperation,\n @XmlSerialName(\"GetFeatureInfo\", WMS_NAMESPACE, WMS_PREFIX)\n val getFeatureInfo: WmsRequestOperation? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsRequestOperation(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val dcpType: WmsDcpType\n) {\n val getUrl get() = dcpType.getHref\n val postUrl get() = dcpType.postHref\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Service\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsService(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Fees\", WMS_NAMESPACE, WMS_PREFIX)\n val fees: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AccessConstraints\", WMS_NAMESPACE, WMS_PREFIX)\n val accessConstraints: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = listOf(),\n val onlineResource: WmsOnlineResource,\n val contactInformation: WmsContactInformation? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxWidth\", WMS_NAMESPACE, WMS_PREFIX)\n val maxWidth: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxHeight\", WMS_NAMESPACE, WMS_PREFIX)\n val maxHeight: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"LayerLimit\", WMS_NAMESPACE, WMS_PREFIX)\n val layerLimit: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"LegendURL\", WMS_NAMESPACE, WMS_PREFIX)\n val legendUrls: List = emptyList(),\n @XmlSerialName(\"StyleSheetURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleSheetUrl: WmsInfoUrl? = null,\n @XmlSerialName(\"StyleURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleUrl: WmsInfoUrl? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Address\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsAddress(\n @XmlSerialName(\"DeliveryPoint\", OWS11_NAMESPACE, OWS11_PREFIX)\n val deliveryPoints: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"City\", OWS11_NAMESPACE, OWS11_PREFIX)\n val city: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AdministrativeArea\", OWS11_NAMESPACE, OWS11_PREFIX)\n val administrativeArea: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PostalCode\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postalCode: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Country\", OWS11_NAMESPACE, OWS11_PREFIX)\n val country: String? = null,\n @XmlSerialName(\"ElectronicMailAddress\", OWS11_NAMESPACE, OWS11_PREFIX)\n val electronicMailAddresses: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsBoundingBox(\n val crs: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"LowerCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val lowerCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"UpperCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val upperCorner: String\n) {\n val sector get() = try {\n val regex = \"\\\\s+\".toRegex()\n val lowerValues = lowerCorner.split(regex)\n val upperValues = upperCorner.split(regex)\n val minLon = lowerValues[0].toDouble()\n val minLat = lowerValues[1].toDouble()\n val maxLon = upperValues[0].toDouble()\n val maxLat = upperValues[1].toDouble()\n Sector.fromDegrees(minLat, minLon, maxLat - minLat, maxLon - minLon)\n } catch (ex: Exception) {\n Logger.logMessage(\n Logger.ERROR, \"OwsBoundingBox\", \"sector\",\n \"Error parsing bounding box corners, LowerCorner=$lowerCorner UpperCorner=$upperCorner\", ex\n )\n null\n }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlDefault\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Constraint\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsConstraint(\n val name: String,\n @XmlSerialName(\"AllowedValues\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Value\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlDefault(\"AnyValue\")\n val allowedValues: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInfo\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsContactInfo(\n val phone: OwsPhone? = null,\n val address: OwsAddress? = null,\n val onlineResource: OwsOnlineResource? = null,\n @XmlElement(true)\n @XmlSerialName(\"HoursOfService\", OWS11_NAMESPACE, OWS11_PREFIX)\n val hoursOfService: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactInstructions\", OWS11_NAMESPACE, OWS11_PREFIX)\n val contactInstructions: String? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsDcp(\n val http: OwsHttp\n) {\n val getMethods get() = http.getMethods\n val postMethods get() = http.postMethods\n}","package earth.worldwind.ogc.wmts\n\nabstract class OwsDescription {\n abstract val title: String?\n abstract val abstract: String?\n abstract val keywords: List\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"HTTP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsHttp(\n @XmlSerialName(\"Get\", OWS11_NAMESPACE, OWS11_PREFIX)\n val getMethods: List = emptyList(),\n @XmlSerialName(\"Post\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postMethods: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class OwsHttpMethod(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val constraints: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOnlineResource(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Operation\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperation(\n val name: String,\n val dcps: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OperationsMetadata\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperationsMetadata(\n val operations: List = emptyList()\n) {\n val getCapabilities get() = operations.firstOrNull { operation -> operation.name == \"GetCapabilities\" }\n val getTile get() = operations.firstOrNull { operation -> operation.name == \"GetTile\" }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Phone\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsPhone(\n @XmlElement(true)\n @XmlSerialName(\"Voice\", OWS11_NAMESPACE, OWS11_PREFIX)\n val voice: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Facsimile\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fax: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceContact\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceContact(\n @XmlElement(true)\n @XmlSerialName(\"IndividualName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val individualName: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PositionName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val positionName: String? = null,\n val contactInfo: OwsContactInfo? = null,\n @XmlElement(true)\n @XmlSerialName(\"Role\", OWS11_NAMESPACE, OWS11_PREFIX)\n val role: String? = null,\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceIdentification\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceIdentification(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"ServiceType\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceType: String,\n @XmlSerialName(\"ServiceTypeVersion\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceTypeVersions: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Fees\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fees: String? = null,\n @XmlSerialName(\"AccessConstraints\", OWS11_NAMESPACE, OWS11_PREFIX)\n val accessConstraints: List = emptyList(),\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceProvider\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceProvider(\n @XmlElement(true)\n @XmlSerialName(\"ProviderName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val providerName: String,\n @XmlSerialName(\"ProviderSite\", OWS11_NAMESPACE, OWS11_PREFIX)\n val onlineResource: OwsOnlineResource? = null,\n val serviceContact: OwsServiceContact\n) {\n val providerSiteUrl get() = onlineResource?.url\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capabilities\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsCapabilities(\n val version: String,\n val updateSequence: String? = null,\n val serviceIdentification: OwsServiceIdentification? = null,\n val serviceProvider: OwsServiceProvider? = null,\n val operationsMetadata: OwsOperationsMetadata? = null,\n val contents: WmtsContents,\n @XmlSerialName(\"Themes\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val themes: List = emptyList(),\n @XmlSerialName(\"ServiceMetadataURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val serviceMetadataUrls: List = emptyList()\n) {\n val layers get() = contents.layers\n val tileMatrixSets get() = contents.tileMatrixSets\n\n init {\n layers.forEach { layer -> layer.capabilities = this }\n }\n\n fun getLayer(identifier: String) = contents.layers.firstOrNull { layer -> layer.identifier == identifier }\n\n fun getTileMatrixSet(identifier: String) = contents.tileMatrixSets.firstOrNull { tms -> tms.identifier == identifier }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Contents\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsContents(\n val layers: List = emptyList(),\n val tileMatrixSets: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsDimension(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"UOM\", OWS11_NAMESPACE, OWS11_PREFIX)\n val unitOfMeasure: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"UnitSymbol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val unitSymbol: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Default\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val valueDefault: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Current\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val current: Boolean? = null,\n @XmlSerialName(\"Value\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val values: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLayer(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val boundingBoxes: List = emptyList(),\n @XmlSerialName(\"WGS84BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\n val wgs84BoundingBox: OwsBoundingBox? = null,\n @XmlSerialName(\"Metadata\", OWS11_NAMESPACE, OWS11_PREFIX)\n val metadata: List = emptyList(),\n val styles: List = emptyList(),\n @XmlSerialName(\"Format\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val formats: List = emptyList(),\n @XmlSerialName(\"InfoFormat\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val infoFormats: List = emptyList(),\n val tileMatrixSetLinks: List = emptyList(),\n val resourceUrls: List = emptyList(),\n val dimensions: List = emptyList(),\n): OwsDescription() {\n val layerSupportedTileMatrixSets get() = tileMatrixSetLinks.flatMap { link ->\n capabilities.tileMatrixSets.filter { set -> set.identifier == link.identifier }\n }\n @Transient\n lateinit var capabilities: WmtsCapabilities\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LegendURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLegendURL(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val format: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ResourceURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsResourceUrl(\n val format: String,\n val resourceType: String,\n val template: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val isDefault: Boolean = false,\n val legendUrls: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTheme(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val themes: List = emptyList(),\n @XmlSerialName(\"LayerRef\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val layerRefs: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrix(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"ScaleDenominator\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val scaleDenominator: Double,\n @XmlElement(true)\n @XmlSerialName(\"TopLeftCorner\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val topLeftCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"TileWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"TileHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileHeight: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixHeight: Int\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixLimits(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixIdentifier: String,\n @XmlElement(true)\n @XmlSerialName(\"MinTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MinTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileCol: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileCol: Int\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSet(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"SupportedCRS\", OWS11_NAMESPACE, OWS11_PREFIX)\n val supportedCrs: String,\n @XmlElement(true)\n @XmlSerialName(\"WellKnownScaleSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val wellKnownScaleSet: String? = null,\n val boundingBox: OwsBoundingBox? = null,\n val tileMatrices: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSetLink\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSetLink(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val identifier: String,\n @XmlSerialName(\"TileMatrixSetLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixSetLimits: List = emptyList()\n)","package earth.worldwind.render\n\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractRenderable @JvmOverloads constructor(override var displayName: String? = null): Renderable {\n override var isEnabled = true\n override var isPickEnabled = true\n override var pickDelegate: Any? = null\n private var userProperties: MutableMap? = null\n\n @Suppress(\"UNCHECKED_CAST\")\n override fun getUserProperty(key: Any) = userProperties?.get(key) as? T\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) { if (isEnabled && (isPickEnabled || !rc.isPickMode)) doRender(rc) }\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\n\nabstract class AbstractSurfaceRenderable(sector: Sector, displayName: String? = null) : AbstractRenderable(displayName) {\n var sector = Sector(sector)\n set(value) {\n field.copy(value)\n invalidateExtent()\n }\n protected val extent by lazy { BoundingBox() }\n protected val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n protected var extentGlobeState: Globe.State? = null\n protected var extentGlobeOffset: Globe.Offset? = null\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n if (globe.is2D) heightLimits.fill(0f) else calcHeightLimits(globe)\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightLimitsTimestamp || ve != extentExaggeration\n || state != extentGlobeState || offset != extentGlobeOffset ) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n extentGlobeState = state\n extentGlobeOffset = offset\n return extent\n }\n\n protected open fun calcHeightLimits(globe: Globe) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n\n protected open fun invalidateExtent() {\n heightLimitsTimestamp = 0L\n extentExaggeration = 0.0f\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.ceil\nimport kotlin.math.roundToInt\n\n/**\n * Color with red, green, blue and alpha components. Each RGB component is a number between 0.0 and 1.0 indicating the\n * component's intensity. The alpha component is a number between 0.0 (fully transparent) and 1.0 (fully opaque)\n * indicating the color's opacity.\n */\nopen class Color @JvmOverloads constructor(\n /**\n * The color's red component.\n */\n var red: Float,\n /**\n * The color's green component.\n */\n var green: Float,\n /**\n * The color's blue component.\n */\n var blue: Float,\n /**\n * The color's alpha component.\n */\n var alpha: Float = 1f\n) {\n /**\n * Constructs a color with red, green, blue and alpha all 1.0.\n */\n constructor(): this(red = 1f, green = 1f, blue = 1f, alpha = 1f)\n\n /**\n * Constructs a color from integer components\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n @JvmOverloads\n constructor(red: Int, green: Int, blue: Int, alpha: Int = 255): this(\n red = red / 255f,\n green = green / 255f,\n blue = blue / 255f,\n alpha = alpha / 255f\n )\n\n /**\n * Constructs a color with components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the components\n */\n constructor(colorInt: Int): this(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue = blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Constructs a color with the components of a specified color.\n *\n * @param color the color specifying the components\n */\n constructor(color: Color): this(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Sets this color to the specified components.\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n fun set(red: Float, green: Float, blue: Float, alpha: Float) = apply {\n this.red = red\n this.green = green\n this.blue = blue\n this.alpha = alpha\n }\n\n /**\n * Sets this color to the components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the new components\n *\n * @return this color with its components set to those of the specified color int\n */\n fun set(colorInt: Int) = set(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue= blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Sets this color to the components of a specified color.\n *\n * @param color the color specifying the new components\n *\n * @return this color with its components set to that of the specified color\n */\n fun copy(color: Color) = set(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Copies this color's components to the specified array. The result is compatible with GLSL uniform vectors, and\n * can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's components\n */\n fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"toArray\", \"missingArray\")\n }\n result[o++] = red\n result[o++] = green\n result[o++] = blue\n result[o] = alpha\n return result\n }\n\n /**\n * Returns this color's components as a color int. Color ints are stored as packed ints as follows: `(alpha <<\n * 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and 255 with 0\n * indicating the component's intensity.\n *\n * @return this color converted to a color int\n */\n fun toColorInt(): Int {\n val r8 = (red * 0xFF).roundToInt()\n val g8 = (green * 0xFF).roundToInt()\n val b8 = (blue * 0xFF).roundToInt()\n val a8 = (alpha * 0xFF).roundToInt()\n return argb(a8, r8, g8, b8)\n }\n\n /**\n * Convert the argb color to its HSV components.\n * hsv[0] is Hue [0 .. 360)\n * hsv[1] is Saturation [0...1]\n * hsv[2] is Value [0...1]\n * @param hsv 3 element array which holds the resulting HSV components.\n */\n fun toHSV(hsv: FloatArray) {\n val v = red.coerceAtLeast(green).coerceAtLeast(blue)\n val diff = v - red.coerceAtMost(green).coerceAtMost(blue)\n var h: Float\n val s: Float\n if (diff == 0f) {\n h = 0f\n s = 0f\n } else {\n s = diff / v\n val rr = (v - red) / 6f / diff + 1f / 2f\n val gg = (v - green) / 6f / diff + 1f / 2f\n val bb = (v - blue) / 6f / diff + 1f / 2f\n\n h = if (red == v) bb - gg\n else if (green == v) (1f / 3f) + rr - bb\n else if (blue == v) (2f / 3f) + gg - rr\n else 0f\n if (h < 0f) h += 1f else if (h > 1f) h -= 1f\n }\n hsv[0] = h * 360f\n hsv[1] = s\n hsv[2] = v\n }\n\n /**\n * Premultiplies this color in place. The RGB components are multiplied by the alpha component.\n *\n * @return this color with its RGB components multiplied by its alpha component\n */\n fun premultiply() = apply {\n red *= alpha\n green *= alpha\n blue *= alpha\n }\n\n /**\n * Premultiplies the specified color and stores the result in this color. This color's RGB components are set to the\n * product of the specified color's RGB components and its alpha component. This color's alpha component is set to\n * the specified color's alpha.\n *\n * @param color the color with components to premultiply and store in this color\n *\n * @return this color set to the premultiplied components of the specified color\n */\n fun premultiplyColor(color: Color) = apply {\n red = color.red * color.alpha\n green = color.green * color.alpha\n blue = color.blue * color.alpha\n alpha = color.alpha\n }\n\n /**\n * Copies this color's premultiplied components to the specified array. The result is compatible with GLSL uniform\n * vectors, and can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's premultiplied components\n */\n fun premultiplyToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"premultiplyToArray\", \"missingArray\")\n }\n result[o++] = red * alpha\n result[o++] = green * alpha\n result[o++] = blue * alpha\n result[o] = alpha\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Color) return false\n return red == other.red && green == other.green && blue == other.blue && alpha == other.alpha\n }\n\n override fun hashCode(): Int {\n var result = red.hashCode()\n result = 31 * result + green.hashCode()\n result = 31 * result + blue.hashCode()\n result = 31 * result + alpha.hashCode()\n return result\n }\n\n override fun toString() = \"Color(red=$red, green=$green, blue=$blue, alpha=$alpha)\"\n\n /**\n * Returns a string representation of this color, indicating the byte values corresponding to this color's\n * floating-point component values.\n *\n * @returns Byte string\n */\n fun toByteString(): String {\n val rb = (red * 255).roundToInt()\n val gb = (green * 255).roundToInt()\n val bb = (blue * 255).roundToInt()\n val ab = (alpha * 255).roundToInt()\n return \"($rb,$gb,$bb,$ab)\"\n }\n\n /**\n * Create a hex color string that CSS can use. Optionally, inhibit capturing alpha,\n * because some uses reject a four-component color specification.\n *\n * @param isUsingAlpha Enable the use of an alpha component.\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @returns A color string suitable for CSS.\n */\n fun toHexString(isUsingAlpha: Boolean = false, argb: Boolean = false): String {\n // Use Math.ceil() to get 0.75 to map to 0xc0. This is important if the display is dithering.\n val redHex = ceil(red * 255).toInt().toString(16)\n val greenHex = ceil(green * 255).toInt().toString(16)\n val blueHex = ceil(blue * 255).toInt().toString(16)\n val alphaHex = ceil(alpha * 255).toInt().toString(16)\n\n var result = \"#\"\n if (isUsingAlpha && argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n result += if (redHex.length < 2) (\"0$redHex\") else redHex\n result += if (greenHex.length < 2) (\"0$greenHex\") else greenHex\n result += if (blueHex.length < 2) (\"0$blueHex\") else blueHex\n if (isUsingAlpha && !argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n return result\n }\n\n /**\n * Create a rgba color string that conforms to CSS Color Module Level 3 specification.\n * @returns A color string suitable for CSS.\n */\n fun toCssColorString(): String {\n val red = (red * 255).roundToInt()\n val green = (green * 255).roundToInt()\n val blue = (blue * 255).roundToInt()\n\n // Per the CSS Color Module Level 3 specification, alpha is expressed as floating point value between 0 - 1\n return \"rgba($red, $green, $blue, $alpha)\"\n }\n\n companion object {\n /**\n * @param hexString representing hex value\n * (formatted \"0xRRGGBB\" i.e. \"0xFFFFFF\")\n * OR\n * formatted \"0xAARRGGBB\" i.e. \"0x00FFFFFF\" for a color with an alpha value\n * I will also put up with \"RRGGBB\" and \"AARRGGBB\" without the starting \"0x\"\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @return color represented by hex string\n */\n fun fromHexString(hexString: String, argb: Boolean = false): Color {\n val hexValue = when {\n hexString[0] == '#' -> hexString.substring(1)\n hexString.substring(0, 2).equals(\"0x\", true) -> hexString.substring(2)\n else -> hexString\n }.uppercase()\n\n val length = hexValue.length\n\n return if (length == 8 || length == 6) {\n val hexAlphabet = \"0123456789ABCDEF\"\n val value = intArrayOf(0, 0, 0, 0)\n for ((k, i) in (0 until length step 2).withIndex()) {\n val int1 = hexAlphabet.indexOf(hexValue[i])\n val int2 = hexAlphabet.indexOf(hexValue[i + 1])\n value[k] = int1 * 16 + int2\n }\n\n when (length) {\n 8 -> if (argb) Color(value[1],value[2],value[3],value[0]) else Color(value[0],value[1],value[2],value[3])\n 6 -> Color(value[0],value[1],value[2])\n else -> error(\"Bad hex value: $hexString\")\n }\n } else error(\"Bad hex value: $hexString\")\n }\n\n /**\n * Return the alpha component of a color int. This is the same as saying\n * color >>> 24\n */\n private fun alpha(color: Int) = color ushr 24\n\n /**\n * Return the red component of a color int. This is the same as saying\n * (color >> 16) & 0xFF\n */\n private fun red(color: Int) = color shr 16 and 0xFF\n\n /**\n * Return the green component of a color int. This is the same as saying\n * (color >> 8) & 0xFF\n */\n private fun green(color: Int) = color shr 8 and 0xFF\n\n /**\n * Return the blue component of a color int. This is the same as saying\n * color & 0xFF\n */\n private fun blue(color: Int) = color and 0xFF\n\n /**\n * Return a color-int from alpha, red, green, blue components.\n * These component values should be \\([0..255]\\), but there is no\n * range check performed, so if they are out of range, the\n * returned color is undefined.\n * @param alpha Alpha component \\([0..255]\\) of the color\n * @param red Red component \\([0..255]\\) of the color\n * @param green Green component \\([0..255]\\) of the color\n * @param blue Blue component \\([0..255]\\) of the color\n */\n private fun argb(alpha: Int, red: Int, green: Int, blue: Int) = alpha shl 24 or (red shl 16) or (green shl 8) or blue\n }\n}","package earth.worldwind.render\n\nenum class FontWeight { NORMAL, BOLD, ITALIC }","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.*\n\nopen class Framebuffer : RenderResource {\n protected var framebufferName = KglFramebuffer.NONE\n protected val attachedTextures = mutableMapOf()\n\n override fun release(dc: DrawContext) {\n if (framebufferName.isValid()) {\n deleteFramebuffer(dc)\n attachedTextures.clear()\n }\n }\n\n fun bindFramebuffer(dc: DrawContext): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) dc.bindFramebuffer(framebufferName)\n return framebufferName.isValid()\n }\n\n fun attachTexture(dc: DrawContext, texture: Texture, attachment: Int): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) {\n framebufferTexture(dc, texture, attachment)\n attachedTextures[attachment] = texture\n }\n return framebufferName.isValid()\n }\n\n fun getAttachedTexture(attachment: Int) = attachedTextures[attachment] ?: error(\"Invalid attachment type\")\n\n fun isFramebufferComplete(dc: DrawContext) = framebufferStatus(dc) == GL_FRAMEBUFFER_COMPLETE\n\n protected open fun createFramebuffer(dc: DrawContext) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Create the OpenGL framebuffer object.\n framebufferName = dc.gl.createFramebuffer()\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, framebufferName)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer)\n }\n }\n\n protected open fun deleteFramebuffer(dc: DrawContext) {\n dc.gl.deleteFramebuffer(framebufferName)\n framebufferName = KglFramebuffer.NONE\n }\n\n protected open fun framebufferTexture(dc: DrawContext, texture: Texture?, attachment: Int) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Attach the texture to the framebuffer object, or remove the attachment if the texture is null.\n val textureName = texture?.getTextureName(dc) ?: KglTexture.NONE\n dc.gl.framebufferTexture2D(GL_FRAMEBUFFER, attachment, GL_TEXTURE_2D, textureName, 0 /*level*/)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n\n protected open fun framebufferStatus(dc: DrawContext): Int {\n val currentFramebuffer = dc.currentFramebuffer\n return try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Get the OpenGL framebuffer object status code.\n dc.gl.checkFramebufferStatus(GL_FRAMEBUFFER)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableGroup\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.draw.DrawableTerrain\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.AltitudeMode.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.Terrain\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.shape.TextAttributes\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.SynchronizedPool\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.math.tan\n\nopen class RenderContext {\n companion object {\n private const val MAX_PICKED_OBJECT_ID = 0xFFFFFF\n }\n\n lateinit var globe: Globe\n lateinit var terrainTessellator: Tessellator\n lateinit var terrain: Terrain\n lateinit var layers: LayerList\n lateinit var currentLayer: Layer\n lateinit var camera: Camera\n lateinit var renderResourceCache: RenderResourceCache\n var densityFactor = 1f\n var verticalExaggeration = 1.0\n var horizonDistance = 0.0\n var atmosphereAltitude = 0.0\n var viewingDistance = 0.0\n var pixelSize = 0.0\n var lookAtPosition: Position? = null\n var globeState: Globe.State? = null\n var elevationModelTimestamp = 0L\n var cameraPoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n val frustum = Frustum()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n var isRedrawRequested = false\n protected set\n private var pickedObjectId = 0\n private var pixelSizeFactor = 0.0\n private val userProperties = mutableMapOf()\n val drawablePools = mutableMapOf>()\n private val textRenderer = TextRenderer(this)\n private val scratchTextCacheKey = TextCacheKey()\n private val scratchVector = Vec3()\n\n val tessellator: GLUtessellator by lazy { GLU.gluNewTess() }\n\n open fun reset() {\n densityFactor = 1f\n verticalExaggeration = 1.0\n horizonDistance = 0.0\n atmosphereAltitude = 0.0\n viewingDistance = 0.0\n pixelSize = 0.0\n lookAtPosition = null\n globeState = null\n elevationModelTimestamp = 0L\n cameraPoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n frustum.setToUnitFrustum()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pickedObjectId = 0\n isRedrawRequested = false\n pixelSizeFactor = 0.0\n userProperties.clear()\n }\n\n fun requestRedraw() { isRedrawRequested = true }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n fun pixelSizeAtDistance(distance: Double): Double {\n if (pixelSizeFactor == 0.0) { // cache the scaling factor used to convert distances to pixel sizes\n val fov = camera.fieldOfView\n val tanFov2 = tan(fov.inRadians * 0.5)\n pixelSizeFactor = 2 * tanFov2 / viewport.height\n }\n return distance * pixelSizeFactor\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. The resultant screen point is in OpenGL screen coordinates,\n * with the origin in the bottom-left corner and axes that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param modelPoint the Cartesian point to project\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(modelPoint: Vec3, result: Vec3): Boolean {\n // TODO consider consolidating this with Matrix4.project and moving projectWithDepth to Matrix4\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This\n // inverts the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelviewProjection.m\n var x = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n var y = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n var z = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val w = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates, applying an offset to the point's projected depth value. The\n * resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes that\n * extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *
\n * The depth offset may be any real number and is typically used to move the screenPoint slightly closer to the\n * user's eye in order to give it visual priority over nearby objects or terrain. An offset of zero has no effect.\n * An offset less than zero brings the screenPoint closer to the eye, while an offset greater than zero pushes the\n * projected screen point away from the eye.\n *
\n * Applying a non-zero depth offset has no effect on whether the model point is clipped by this method or by WebGL.\n * Clipping is performed on the original model point, ignoring the depth offset. The final depth value after\n * applying the offset is clamped to the range [0,1].\n *\n * @param modelPoint the Cartesian point to project\n * @param depthOffset the amount of depth offset to apply\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun projectWithDepth(modelPoint: Vec3, depthOffset: Double, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates. The eye coordinate and the clip\n // coordinate are transformed separately in order to reuse the eye coordinate below.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelview.m\n val ex = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n val ey = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n val ez = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val ew = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n\n // Transform the point from eye coordinates to clip coordinates.\n val p = projection.m\n var x = p[0] * ex + p[1] * ey + p[2] * ez + p[3] * ew\n var y = p[4] * ex + p[5] * ey + p[6] * ez + p[7] * ew\n var z = p[8] * ex + p[9] * ey + p[10] * ez + p[11] * ew\n val w = p[12] * ex + p[13] * ey + p[14] * ez + p[15] * ew\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Transform the Z eye coordinate to clip coordinates again, this time applying a depth offset. The depth\n // offset is applied only to the matrix element affecting the projected Z coordinate, so we inline the\n // computation here instead of re-computing X, Y, Z and W in order to improve performance. See\n // Matrix4.offsetProjectionDepth for more information on the effect of this offset.\n z = p[8] * ex + p[9] * ey + p[10] * ez * (1 + depthOffset) + p[11] * ew\n z /= w\n\n // Clamp the point to the near and far clip planes. We know the point's original Z value is contained within\n // the clip planes, so we limit its offset z value to the range [-1, 1] in order to ensure it is not clipped\n // by WebGL. In clip coordinates the near and far clip planes are perpendicular to the Z axis and are\n // located at -1 and 1, respectively.\n z = z.coerceIn(-1.0, 1.0)\n\n // Convert the point from clip coordinates to the range [0, 1]. This enables the XY coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range [0, 1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Converts a geographic [Position] to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param position the specified position\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n position: Position, altitudeMode: AltitudeMode, result: Vec3\n ) = geographicToCartesian(position.latitude, position.longitude, position.altitude, altitudeMode, result)\n\n /**\n * Converts a geographic position to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode, result: Vec3\n ): Vec3 {\n when (altitudeMode) {\n ABSOLUTE -> globe.geographicToCartesian(latitude, longitude, altitude * verticalExaggeration, result)\n CLAMP_TO_GROUND -> if (!terrain.surfacePoint(latitude, longitude, result)) globe.run {\n // Use elevation model height as a fallback\n val elevation = getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n RELATIVE_TO_GROUND -> if (terrain.surfacePoint(latitude, longitude, result)) {\n // Offset along the normal vector at the terrain surface point.\n if (altitude != 0.0) globe.geographicToCartesianNormal(latitude, longitude, scratchVector).also {\n result.add(scratchVector.multiply(altitude))\n }\n } else globe.run {\n // Use elevation model height as a fallback\n val elevation = altitude + getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n }\n return result\n }\n\n // TODO redesign ShaderProgram to operate as a resource accessible from DrawContext\n // TODO created automatically on OpenGL thread, unless the caller wants to explicitly create a program\n inline fun getShaderProgram(builder: () -> T): T {\n val key = T::class\n return renderResourceCache.run { get(key) ?: builder().also { put(key, it, it.programLength) } } as T\n }\n\n fun getTexture(imageSource: ImageSource, imageOptions: ImageOptions?, retrieve: Boolean = true) =\n renderResourceCache.run { get(imageSource) ?: if (retrieve) retrieveTexture(imageSource, imageOptions) else null } as Texture?\n\n inline fun getBufferObject(key: Any, builder: () -> T) =\n renderResourceCache.run { get(key) ?: builder().also { put(key, it, it.byteCount) } } as T\n\n fun getText(text: String?, attributes: TextAttributes, render: Boolean = true) = renderResourceCache.run {\n scratchTextCacheKey.text = text\n scratchTextCacheKey.attributes = attributes\n // Use scratch key on get operation to avoid unnecessary object creation on each text render on each frame\n get(scratchTextCacheKey) as Texture? ?: if (render) textRenderer.renderText(text, attributes)?.also {\n // Use new text cache key and copy attributes on put operation to avoid cache issues on attributes modification\n put(TextCacheKey(text, TextAttributes(attributes)), it, it.byteCount)\n } else null\n }\n\n fun offerBackgroundDrawable(drawable: Drawable) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.BACKGROUND, 0.0)\n }\n\n fun offerSurfaceDrawable(drawable: Drawable, zOrder: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SURFACE, zOrder)\n }\n\n fun offerShapeDrawable(drawable: Drawable, cameraDistance: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SHAPE, -cameraDistance) // order by descending distance to the viewer\n }\n\n fun offerDrawableTerrain(drawable: DrawableTerrain, sortOrder: Double) {\n drawableTerrain?.offerDrawable(drawable, DrawableGroup.SURFACE, sortOrder)\n }\n\n fun sortDrawables() {\n drawableQueue?.sortDrawables()\n drawableTerrain?.sortDrawables()\n }\n\n val drawableCount get() = drawableQueue?.count ?: 0\n\n @Suppress(\"UNCHECKED_CAST\")\n inline fun getDrawablePool(): Pool {\n val key = T::class\n // use SynchronizedPool; acquire and are release may be called in separate threads\n return drawablePools[key] as Pool? ?: SynchronizedPool().also { drawablePools[key] = it }\n }\n\n fun offerPickedObject(pickedObject: PickedObject) { pickedObjects?.offerPickedObject(pickedObject) }\n\n fun nextPickedObjectId(): Int {\n if (++pickedObjectId > MAX_PICKED_OBJECT_ID) pickedObjectId = 1\n return pickedObjectId\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun getUserProperty(key: Any) = userProperties[key] as? T\n\n fun putUserProperty(key: Any, value: Any) = userProperties.put(key, value)\n\n fun removeUserProperty(key: Any) = userProperties.remove(key)\n\n fun hasUserProperty(key: Any) = userProperties.containsKey(key)\n\n protected data class TextCacheKey(\n var text: String? = null,\n var attributes: TextAttributes? = null\n )\n}","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport earth.worldwind.util.math.powerOfTwoCeiling\n\nopen class Texture(val width: Int, val height: Int, protected val format: Int, protected val type: Int, protected val isRT: Boolean = false) : RenderResource {\n companion object {\n protected fun estimateByteCount(width: Int, height: Int, format: Int, type: Int, hasMipMap: Boolean): Int {\n require(width >= 0 && height >= 0) {\n logMessage(ERROR, \"Texture\", \"estimateByteCount\", \"invalidWidthOrHeight\")\n }\n // Compute the number of bytes per row of texture image level 0. Use a default of 32 bits per pixel when either\n // of the bitmap's type or internal format are unrecognized. Adjust the width to the next highest power-of-two\n // to better estimate the memory consumed by non-power-of-two images.\n val widthPow2 = powerOfTwoCeiling(width)\n val bytesPerRow = when (type) {\n GL_UNSIGNED_BYTE -> when (format) {\n GL_ALPHA, GL_LUMINANCE -> widthPow2 // 8 bits per pixel\n GL_LUMINANCE_ALPHA -> widthPow2 * 2 // 16 bits per pixel\n GL_RGB -> widthPow2 * 3 // 24 bits per pixel\n GL_RGBA -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n GL_UNSIGNED_SHORT, GL_UNSIGNED_SHORT_5_6_5,\n GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1 -> widthPow2 * 2 // 16 bits per pixel\n GL_UNSIGNED_INT -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n\n // Compute the number of bytes for the entire texture image level 0 (i.e. bytePerRow * numRows). Adjust the\n // height to the next highest power-of-two to better estimate the memory consumed by non power-of-two images.\n val heightPow2 = powerOfTwoCeiling(height)\n var byteCount = bytesPerRow * heightPow2\n\n // If the texture will have mipmaps, add 1/3 to account for the bytes used by texture image level 1 through\n // texture image level N.\n if (hasMipMap) byteCount += byteCount / 3\n return byteCount\n }\n }\n\n val coordTransform = Matrix3()\n val byteCount get() = estimateByteCount(width, height, format, type, hasMipMap)\n protected var name = KglTexture.NONE\n protected var parameters: MutableMap? = null\n protected open val hasMipMap = false\n private var pickMode = false\n\n fun getTexParameter(name: Int) = parameters?.get(name)?:0\n\n fun setTexParameter(name: Int, param: Int) {\n val parameters = parameters ?: mutableMapOf().also { parameters = it }\n parameters[name] = param\n }\n\n override fun release(dc: DrawContext) {\n if (name.isValid()) deleteTexture(dc)\n }\n\n fun getTextureName(dc: DrawContext): KglTexture {\n if (!name.isValid()) createTexture(dc)\n return name\n }\n\n fun bindTexture(dc: DrawContext): Boolean {\n if (!name.isValid()) createTexture(dc)\n if (name.isValid()) dc.bindTexture(name)\n if (name.isValid() && pickMode != dc.isPickMode) {\n setTexParameters(dc)\n pickMode = dc.isPickMode\n }\n return name.isValid()\n }\n\n protected open fun createTexture(dc: DrawContext) {\n val currentTexture = dc.currentTexture\n try {\n // Create the OpenGL texture 2D object.\n name = dc.gl.createTexture()\n dc.gl.bindTexture(GL_TEXTURE_2D, name)\n\n // Specify the texture object's image data\n allocTexImage(dc)\n\n // Configure the texture object's parameters.\n setTexParameters(dc)\n } finally {\n // Restore the current OpenGL texture object binding.\n dc.gl.bindTexture(GL_TEXTURE_2D, currentTexture)\n }\n }\n\n protected open fun deleteTexture(dc: DrawContext) {\n dc.gl.deleteTexture(name)\n name = KglTexture.NONE\n }\n\n protected open fun allocTexImage(dc: DrawContext) {\n // Following line of code is a dirty hack to disable AFBC compression on Mali GPU driver,\n // which cause huge memory leak during surface shapes drawing on terrain textures.\n if (isRT and dc.gl.hasMaliOOMBug) dc.gl.texImage2D(GL_TEXTURE_2D, 0, format, 1, 1, 0, format, type, null)\n\n // Allocate texture memory for the OpenGL texture 2D object. The texture memory is initialized with 0.\n dc.gl.texImage2D(\n GL_TEXTURE_2D, 0 /*level*/, format, width, height, 0 /*border*/, format, type, null /*pixels*/\n )\n }\n\n // TODO refactor setTexParameters to apply all configured tex parameters\n // TODO apply defaults only when no parameter is configured\n // TODO consider simplifying the defaults and requiring that layers/shapes specify what they want\n protected open fun setTexParameters(dc: DrawContext) {\n var param: Int\n\n // Configure the OpenGL texture minification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MIN_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, param)\n else -> dc.gl.texParameteri(\n GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, if (hasMipMap) GL_LINEAR_MIPMAP_LINEAR else GL_LINEAR\n )\n }\n\n // Configure the OpenGL texture magnification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MAG_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, param)\n else -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)\n }\n\n // Configure the OpenGL texture wrapping function for texture coordinate S. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_S).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)\n\n // Configure the OpenGL texture wrapping function for texture coordinate T. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_T).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Range\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.KglBuffer\n\nabstract class AbstractBufferObject(protected val target: Int, val byteCount: Int) : RenderResource {\n val ranges = mutableMapOf()\n protected var id = KglBuffer.NONE\n\n override fun release(dc: DrawContext) { deleteBufferObject(dc) }\n\n open fun bindBuffer(dc: DrawContext): Boolean {\n if (id.isValid()) dc.bindBuffer(target, id)\n return id.isValid()\n }\n\n protected open fun loadBuffer(dc: DrawContext) {\n val currentBuffer = dc.currentBuffer(target)\n try {\n // Create the OpenGL buffer object.\n if (!id.isValid()) createBufferObject(dc)\n // Make the OpenGL buffer object bound to the specified target.\n dc.bindBuffer(target, id)\n // Load the current NIO buffer as the OpenGL buffer object's data.\n loadBufferObjectData(dc)\n } catch (e: Exception) {\n // The NIO buffer could not be used as buffer data for an OpenGL buffer object. Delete the buffer object\n // to ensure that calls to bindBuffer fail.\n deleteBufferObject(dc)\n logMessage(\n ERROR, \"BufferObject\", \"loadBuffer\", \"Exception attempting to load buffer data\", e\n )\n } finally {\n // Restore the current OpenGL buffer object binding.\n dc.bindBuffer(target, currentBuffer)\n }\n }\n\n protected open fun createBufferObject(dc: DrawContext) { id = dc.gl.createBuffer() }\n\n protected open fun deleteBufferObject(dc: DrawContext) {\n if (id.isValid()) {\n dc.gl.deleteBuffer(id)\n id = KglBuffer.NONE\n }\n }\n\n protected abstract fun loadBufferObjectData(dc: DrawContext)\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.util.kgl.KglBuffer\nimport earth.worldwind.draw.DrawContext\n\nopen class BufferPool(\n protected val target: Int,\n protected val usage: Int,\n protected val blockSize: Int = DEFAULT_BLOCK_SIZE,\n protected val blockCount: Int = DEFAULT_BLOCK_COUNT\n) {\n protected val buffers = Array(blockCount) { KglBuffer.NONE }\n protected var index = 0\n protected var offset = 0\n\n fun reset() {\n index = 0\n offset = 0\n }\n\n fun contextLost() {\n reset()\n buffers.fill(KglBuffer.NONE)\n }\n\n open fun bindBuffer(dc: DrawContext, sourceData: FloatArray): Int {\n if (blockSize < sourceData.size * Float.SIZE_BYTES) return -1\n if (!buffers[index].isValid() && !appendBuffer(dc)) return -1\n\n if(!enoughSpace(sourceData)) {\n index = (index + 1) % blockCount;\n if(!appendBuffer(dc)) return -1\n }\n\n dc.gl.bindBuffer(target, buffers[index])\n\n return subAllocAndPopulate(dc, sourceData)\n }\n\n private fun enoughSpace(sourceData: FloatArray) = offset + sourceData.size * Float.SIZE_BYTES <= blockSize\n\n private fun appendBuffer(dc: DrawContext): Boolean {\n if(!buffers[index].isValid() && !allocNewBuffer(dc)) return false\n offset = 0\n return true\n }\n\n private fun allocNewBuffer(dc: DrawContext): Boolean {\n val id = dc.gl.createBuffer()\n if (!id.isValid()) return false\n dc.gl.bindBuffer(target, id)\n dc.gl.bufferData(target, blockSize, null as FloatArray?, usage) // Only reserve memory\n dc.gl.bindBuffer(target, KglBuffer.NONE)\n buffers[index] = id\n return id.isValid()\n }\n\n private fun subAllocAndPopulate(dc: DrawContext, sourceData: FloatArray): Int {\n val bufferSize = sourceData.size * Float.SIZE_BYTES\n if (offset + bufferSize > blockSize) return -1\n dc.gl.bufferSubData(target, offset, bufferSize, sourceData) // Update part of the buffer\n val result = offset\n offset += bufferSize\n return result\n }\n\n companion object {\n const val DEFAULT_BLOCK_SIZE = 64 * 1024 // 64 KB\n const val DEFAULT_BLOCK_COUNT = 64\n }\n}\n","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class FloatBufferObject(\n target: Int, array: FloatArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Float.SIZE_BYTES) {\n protected var array: FloatArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class IntBufferObject(\n target: Int, array: IntArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Int.SIZE_BYTES) {\n protected var array: IntArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class ShortBufferObject(\n target: Int, array: ShortArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Short.SIZE_BYTES) {\n protected var array: ShortArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.image\n\n/**\n * Image config indicates the in-memory representation for images displayed by WorldWind components. Images are\n * typically represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do\n * not require an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration.\n * Accepted values are [RGBA_8888] and [RGB_565].\n */\nenum class ImageConfig {\n /**\n * Indicating 32-bit RGBA_8888 image configuration.\n */\n RGBA_8888,\n /**\n * Indicating 16-bit RGBA_565 image configuration.\n */\n RGB_565;\n}","package earth.worldwind.render.image\n\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Options for images displayed by WorldWind components.\n */\nopen class ImageOptions @JvmOverloads constructor(\n /**\n * Indicates the in-memory configuration for images displayed by WorldWind components. By default, images are\n * represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do not require\n * an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration. Accepted values are\n * [ImageConfig.RGBA_8888] and [ImageConfig.RGB_565].\n */\n var imageConfig: ImageConfig = ImageConfig.RGBA_8888\n) {\n /**\n * Indicates the image sampling algorithm used by WorldWind to display images that appear larger or smaller on\n * screen than their native resolution. Accepted values are [ResamplingMode.BILINEAR] and [ResamplingMode.NEAREST_NEIGHBOR].\n */\n var resamplingMode = ResamplingMode.BILINEAR\n /**\n * Indicates how WorldWind displays the contents of an image when attempting to draw a region outside of the image\n * bounds. Accepted values are [WrapMode.CLAMP] and [WrapMode.REPEAT].\n */\n var wrapMode = WrapMode.CLAMP\n /**\n * Initial width for image that has no dimensions (e.g. SVG image)\n */\n var initialWidth = 0\n /**\n * Initial height for image that has no dimensions (e.g. SVG image)\n */\n var initialHeight = 0\n}","package earth.worldwind.render.image\n\n/**\n * Resampling mode indicates the image sampling algorithm used by WorldWind to display images that appear larger or\n * smaller on screen than their native resolution. Accepted values are [BILINEAR] and [NEAREST_NEIGHBOR].\n */\nenum class ResamplingMode {\n /**\n * Indicating bilinear image sampling.\n */\n BILINEAR,\n /**\n * Indicating nearest neighbor image sampling.\n */\n NEAREST_NEIGHBOR;\n}","package earth.worldwind.render.image\n\n/**\n * Wrap mode indicates how WorldWind displays the contents of an image when attempting to draw a region outside of\n * the image bounds. Accepted values are [CLAMP] and [REPEAT].\n */\nenum class WrapMode {\n /**\n * Indicating that the image's edge pixels should be displayed outside of the image bounds.\n */\n CLAMP,\n /**\n * Indicating that the image should display as a repeating pattern outside of the image bounds.\n */\n REPEAT;\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\n\n/**\n * Represents an OpenGL shading language (GLSL) shader program and provides methods for identifying and accessing shader\n * variables. Shader programs are configured by calling `setProgramSources` to specify the the GLSL vertex\n * shader and fragment shader source code, then made current by calling `useProgram`.\n */\nabstract class AbstractShaderProgram: RenderResource {\n companion object {\n protected const val VERTEX_SHADER = 0\n protected const val FRAGMENT_SHADER = 1\n }\n\n protected abstract var programSources: Array\n protected abstract val attribBindings: Array\n protected lateinit var gl : Kgl\n private set\n /**\n * Indicates the approximate size of the OpenGL resources referenced by this GPU program.\n */\n val programLength get() = programSources.sumOf{str -> str.length}\n\n /**\n * Indicates the OpenGL program object associated with this GPU program.\n */\n protected var program = KglProgram.NONE\n protected var mustBuildProgram = true\n\n override fun release(dc: DrawContext) = deleteProgram(dc)\n\n fun useProgram(dc: DrawContext): Boolean {\n if (mustBuildProgram) {\n // Clear the program's build dirty bit.\n mustBuildProgram = false\n\n // Remove any existing GLSL program.\n if (program.isValid()) deleteProgram(dc)\n\n // Compile and link the GLSL program sources.\n buildProgram(dc)\n\n // Free memory, occupied by program sources\n programSources = emptyArray()\n\n // Give subclasses an opportunity to initialize default GLSL uniform values.\n if (program.isValid()) {\n val currentProgram = dc.currentProgram\n try {\n dc.useProgram(program)\n initProgram(dc)\n } finally {\n dc.useProgram(currentProgram)\n }\n }\n }\n if (program.isValid()) dc.useProgram(program)\n return program.isValid()\n }\n\n protected open fun buildProgram(dc: DrawContext) {\n val vs = dc.gl.createShader(GL_VERTEX_SHADER)\n dc.gl.shaderSource(vs, programSources[VERTEX_SHADER])\n dc.gl.compileShader(vs)\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(vs)\n dc.gl.deleteShader(vs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL vertex shader \\n$msg\"\n )\n return\n }\n val fs = dc.gl.createShader(GL_FRAGMENT_SHADER)\n dc.gl.shaderSource(fs, programSources[FRAGMENT_SHADER])\n dc.gl.compileShader(fs)\n\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(fs)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL fragment shader \\n$msg\"\n )\n return\n }\n val program = dc.gl.createProgram()\n dc.gl.attachShader(program, vs)\n dc.gl.attachShader(program, fs)\n for (i in attribBindings.indices) dc.gl.bindAttribLocation(program, i, attribBindings[i])\n dc.gl.linkProgram(program)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n if (dc.gl.getProgramParameteri(program, GL_LINK_STATUS) != GL_TRUE) {\n val msg = dc.gl.getProgramInfoLog(program)\n dc.gl.deleteProgram(program)\n logMessage(ERROR, \"ShaderProgram\", \"buildProgram\", \"Error linking GL program \\n$msg\")\n return\n }\n this.program = program\n }\n\n protected open fun initProgram(dc: DrawContext) { gl = dc.gl }\n\n protected open fun deleteProgram(dc: DrawContext) {\n if (program.isValid()) {\n dc.gl.deleteProgram(program)\n program = KglProgram.NONE\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class BasicShaderProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrix. */\n if (enableTexture) {\n texCoord = (texCoordMatrix * vec3(vertexTexCoord, 1.0)).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n\n void main() {\n /* TODO consolidate pickMode and enableTexture into a single textureMode */\n /* TODO it's confusing that pickMode must be disabled during surface shape render-to-texture */\n if (enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's Alpha component (rounded to 0.0 or 1.0). */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask;\n } else if (!enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's RGBA color. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity;\n } else {\n /* Return the RGBA color as-is. */\n gl_FragColor = color * opacity;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n protected var enablePickMode = false\n protected var enableTexture = false\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val color = Color()\n protected var opacity = 1.0f\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, if (enablePickMode) 1 else 0)\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, if (enableTexture) 1 else 0)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n mvpMatrix.transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n texCoordMatrix.transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) {\n if (enablePickMode != enable) {\n enablePickMode = enable\n gl.uniform1i(enablePickModeId, if (enable) 1 else 0)\n }\n }\n\n fun enableTexture(enable: Boolean) {\n if (enableTexture != enable) {\n enableTexture = enable\n gl.uniform1i(enableTextureId, if (enable) 1 else 0)\n }\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n if (texCoordMatrix != matrix) {\n texCoordMatrix.copy(matrix)\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class SightlineProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform mat4 slpMatrix[2];\n\n attribute vec4 vertexPoint;\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex position by the sightline-projection matrix. */\n vec4 sightlineEyePosition = slpMatrix[1] * vertexPoint;\n sightlinePosition = slpMatrix[0] * sightlineEyePosition;\n sightlineDistance = length(sightlineEyePosition);\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n uniform highp sampler2D depthSampler;\n #else\n precision mediump float;\n uniform mediump sampler2D depthSampler;\n #endif\n\n uniform float range;\n uniform vec4 color[2];\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n const vec3 minusOne = vec3(-1.0, -1.0, -1.0);\n const vec3 plusOne = vec3(1.0, 1.0, 1.0);\n\n void main() {\n /* Compute a mask that's on when the position is inside the occlusion projection, and off otherwise. Transform the\n position to clip coordinates, where values between -1.0 and 1.0 are in the frustum. */\n vec3 clipCoord = sightlinePosition.xyz / sightlinePosition.w;\n vec3 clipCoordMask = step(minusOne, clipCoord) * step(clipCoord, plusOne);\n float clipMask = clipCoordMask.x * clipCoordMask.y * clipCoordMask.z;\n\n /* Compute a mask that's on when the position is inside the sightline's range, and off otherwise.*/\n float rangeMask = step(sightlineDistance, range);\n\n /* Compute a mask that's on when the object's depth is less than the sightline's depth. The depth texture contains\n the scene's minimum depth at each position, from the sightline's point of view. */\n vec3 sightlineCoord = clipCoord * 0.5 + 0.5;\n float sightlineDepth = texture2D(depthSampler, sightlineCoord.xy).r;\n float occludeMask = step(sightlineDepth, sightlineCoord.z);\n\n /* Modulate the RGBA color with the computed masks to display fragments according to the sightline's configuration. */\n gl_FragColor = mix(color[0], color[1], occludeMask) * clipMask * rangeMask;\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var slpMatrixId = KglUniformLocation.NONE\n protected var rangeId = KglUniformLocation.NONE\n protected var depthSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n private val array = FloatArray(32)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n slpMatrixId = gl.getUniformLocation(program, \"slpMatrix\")\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n rangeId = gl.getUniformLocation(program, \"range\")\n gl.uniform1f(rangeId, 0f)\n colorId = gl.getUniformLocation(program, \"color\")\n gl.uniform4f(colorId, 1f, 1f, 1f, 1f)\n depthSamplerId = gl.getUniformLocation(program, \"depthSampler\")\n gl.uniform1i(depthSamplerId, 0) // GL_TEXTURE0\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadSightlineProjection(projection: Matrix4, sightline: Matrix4) {\n projection.transposeToArray(array, 0)\n sightline.transposeToArray(array, 16)\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n }\n\n fun loadRange(range: Float) {\n gl.uniform1f(rangeId, range)\n }\n\n fun loadColor(visibleColor: Color, occludedColor: Color) {\n visibleColor.premultiplyToArray(array, 0)\n occludedColor.premultiplyToArray(array, 4)\n gl.uniform4fv(colorId, 2, array, 0)\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n// TODO Try accumulating surface tile state (texCoordMatrix, texSampler), loading uniforms once, then loading a uniform\n// TODO index to select the state for a surface tile. This reduces the uniform calls when many surface tiles intersect\n// TODO one terrain tile.\n// TODO Try class representing transform with a specific scale+translate object that can be uploaded to a GLSL vec4\nopen class SurfaceTextureProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix[2];\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrices. */\n if (enableTexture) {\n vec3 texCoord3 = vec3(vertexTexCoord, 1.0);\n texCoord = (texCoordMatrix[0] * texCoord3).st;\n tileCoord = (texCoordMatrix[1] * texCoord3).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n #else\n precision mediump float;\n #endif\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Using the second texture coordinate, compute a mask that's 1.0 when the fragment is inside the surface tile, and\n 0.0 otherwise. */\n float sMask = step(0.0, tileCoord.s) * step(0.0, 1.0 - tileCoord.s);\n float tMask = step(0.0, tileCoord.t) * step(0.0, 1.0 - tileCoord.t);\n float tileMask = sMask * tMask;\n\n if (enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's Alpha component (rounded to\n 0.0 or 1.0). Finally, modulate the result by the tile mask to suppress fragments outside the surface tile. */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask * tileMask;\n } else if (!enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's RGBA color. Finally,\n modulate by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity * tileMask;\n } else {\n /* Modulate the RGBA color by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * opacity * tileMask;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n val mvpMatrix = Matrix4()\n val texCoordMatrix = arrayOf(Matrix3(), Matrix3())\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val mvpMatrixArray = FloatArray(16)\n private val texCoordMatrixArray = FloatArray(9 * 2)\n private val color = Color()\n private var opacity = 1.0f\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, 0) // disable pick mode\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, 0) // disable texture\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(mvpMatrixArray, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(texCoordMatrixArray, 0) // 3 x 3 identity matrix\n Matrix3().transposeToArray(texCoordMatrixArray, 9) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n color.set(1f, 1f, 1f, 1f) // opaque white\n gl.uniform4f(colorId, color.red, color.green, color.blue, color.alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) { gl.uniform1i(enablePickModeId, if (enable) 1 else 0) }\n\n fun enableTexture(enable: Boolean) { gl.uniform1i(enableTextureId, if (enable) 1 else 0) }\n\n fun loadModelviewProjection() {\n mvpMatrix.transposeToArray(mvpMatrixArray, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n\n fun loadTexCoordMatrix() {\n texCoordMatrix[0].transposeToArray(texCoordMatrixArray, 0)\n texCoordMatrix[1].transposeToArray(texCoordMatrixArray, 9)\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport kotlin.math.sqrt\n\nabstract class AbstractShape(override var attributes: ShapeAttributes): AbstractRenderable(), Attributable, Highlightable {\n companion object {\n const val NEAR_ZERO_THRESHOLD = 1.0e-10\n }\n\n var altitudeMode = AltitudeMode.ABSOLUTE\n set(value) {\n field = value\n reset()\n }\n var pathType = PathType.GREAT_CIRCLE\n set(value) {\n field = value\n reset()\n }\n /**\n * Draw sides of the shape which extend from the defined position and altitude to the ground.\n */\n var isExtrude = false\n set(value) {\n field = value\n reset()\n }\n /**\n * Determines whether this shape's geometry follows the terrain surface or is fixed at a constant altitude.\n */\n var isFollowTerrain = false\n set(value) {\n field = value\n reset()\n }\n override var highlightAttributes: ShapeAttributes? = null\n override var isHighlighted = false\n var maximumIntermediatePoints = 10\n protected lateinit var activeAttributes: ShapeAttributes\n protected var isSurfaceShape = false\n protected var lastGlobeState: Globe.State? = null\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n protected val boundingSector = Sector()\n protected val boundingBox = BoundingBox()\n private val scratchPoint = Vec3()\n\n override fun doRender(rc: RenderContext) {\n checkGlobeState(rc)\n if (!isWithinProjectionLimits(rc)) return\n\n // Don't render anything if the shape is not visible.\n if (!intersectsFrustum(rc)) return\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this shape has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Determine whether the shape geometry must be assembled as Cartesian geometry or as geographic geometry.\n isSurfaceShape = rc.globe.is2D || altitudeMode == AltitudeMode.CLAMP_TO_GROUND && isFollowTerrain\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the shape's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n /**\n * Indicates whether this shape is within the current globe's projection limits. Subclasses may implement\n * this method to perform the test. The default implementation returns true.\n * @param rc The current render context.\n * @returns true if this shape is within or intersects the current globe's projection limits, otherwise false.\n */\n protected open fun isWithinProjectionLimits(rc: RenderContext) = true\n\n protected open fun intersectsFrustum(rc: RenderContext) = boundingBox.isUnitBox || boundingBox.intersectsFrustum(rc.frustum)\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun cameraDistanceGeographic(rc: RenderContext, boundingSector: Sector): Double {\n val lat = rc.camera.position.latitude.inDegrees.coerceIn(\n boundingSector.minLatitude.inDegrees,\n boundingSector.maxLatitude.inDegrees\n )\n val lon = rc.camera.position.longitude.inDegrees.coerceIn(\n boundingSector.minLongitude.inDegrees,\n boundingSector.maxLongitude.inDegrees\n )\n val point = rc.geographicToCartesian(lat.degrees, lon.degrees, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n return point.distanceTo(rc.cameraPoint)\n }\n\n protected open fun cameraDistanceCartesian(rc: RenderContext, array: FloatArray, count: Int, stride: Int, offset: Vec3): Double {\n val cx = rc.cameraPoint.x - offset.x\n val cy = rc.cameraPoint.y - offset.y\n val cz = rc.cameraPoint.z - offset.z\n var minDistance2 = Double.POSITIVE_INFINITY\n for (idx in 0 until count step stride) {\n val px = array[idx]\n val py = array[idx + 1]\n val pz = array[idx + 2]\n val dx = px - cx\n val dy = py - cy\n val dz = pz - cz\n val distance2 = dx * dx + dy * dy + dz * dz\n if (minDistance2 > distance2) minDistance2 = distance2\n }\n return sqrt(minDistance2)\n }\n\n protected open fun computeRepeatingTexCoordTransform(texture: Texture, metersPerPixel: Double, result: Matrix3): Matrix3 {\n val texCoordMatrix = result.setToIdentity()\n texCoordMatrix.setScale(1.0 / (texture.width * metersPerPixel), 1.0 / (texture.height * metersPerPixel))\n texCoordMatrix.multiplyByMatrix(texture.coordTransform)\n return texCoordMatrix\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n if (rc.globeState != lastGlobeState) {\n reset()\n lastGlobeState = rc.globeState\n }\n }\n\n protected open fun reset() {\n boundingBox.setToUnitBox()\n boundingSector.setEmpty()\n }\n\n protected abstract fun makeDrawable(rc: RenderContext)\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.*\n\n/**\n * Ellipse shape defined by a geographic center position and radii for the semi-major and semi-minor axes.\n *
\n *

Axes and Heading

\n *
\n * Ellipse axes, by default, are oriented such that the semi-major axis points East and the semi-minor axis points\n * North. Ellipse provides an optional heading, which when set to anything other than 0.0 rotates the semi-major and\n * semi-minor axes about the center position, while retaining the axes relative relationship to one another. Heading is\n * defined clockwise from North. Configuring ellipse with a heading of 45.0 results in the semi-major axis\n * pointing Southeast and the semi-minor axis pointing Northeast.\n *
\n *

Altitude Mode and Terrain Following

\n *
\n * Ellipse geometry displays at a constant altitude determined by the geographic center position and altitude mode. For\n * example, an ellipse with a center position altitude of 1km and altitude mode of ABSOLUTE displays at 1km above mean\n * sea level. The same ellipse with an altitude mode of RELATIVE_TO_GROUND displays at 1km above ground level, relative\n * to the ellipse's center location.\n *
\n * Surface ellipse geometry, where an ellipse appears draped across the terrain, may be achieved by enabling ellipse's\n * terrain following state and setting its altitude mode to CLAMP_TO_GROUND. See [isFollowTerrain] and\n * [altitudeMode].\n *
\n *

Display Granularity

\n *
\n * Ellipse's appearance on screen is composed of discrete segments which approximate the ellipse's geometry. This\n * approximation is chosen such that the display appears to be a continuous smooth ellipse. Applications can control the\n * maximum number of angular intervals used in this representation with [maximumIntervals].\n */\nopen class Ellipse @JvmOverloads constructor(\n center: Position, majorRadius: Double, minorRadius: Double, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n /**\n * The ellipse's geographic center position.\n */\n var center = Position(center)\n set(value) {\n field.copy(value)\n reset()\n }\n /**\n * The ellipse's radius perpendicular to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-major axis points East.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var majorRadius = majorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMajorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's radius parallel to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-minor axis points North.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var minorRadius = minorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMinorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's heading clockwise from North. When ellipse's heading is 0.0,\n * the semi-major axis points East and the semi-minor axis points North.\n * Headings other than 0.0 rotate the axes about the ellipse's center position,\n * while retaining the axes relative relationship to one another.\n */\n var heading = ZERO\n set(value) {\n field = value\n reset()\n }\n /**\n * The maximum pixels a single edge interval will span before the number of intervals is increased. Increasing this\n * value will make ellipses appear coarser.\n */\n var maximumPixelsPerInterval = 50.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"maximumPixelsPerInterval\", \"invalidPixelsPerInterval\")\n }\n field = value\n reset()\n }\n /**\n * Sets the maximum number of angular intervals that may be used to approximate this ellipse's on screen.\n *
\n * Ellipse may use a minimum number of intervals to ensure that its appearance on screen at least roughly\n * approximates the ellipse's shape. When the specified number of intervals is too small, it is clamped to an\n * implementation-defined minimum number of intervals.\n *
\n * Ellipse may require that the number of intervals is an even multiple of some integer. When the specified number\n * of intervals does not meet this criteria, the next smallest integer that meets ellipse's criteria is used\n * instead.\n *\n * @throws IllegalArgumentException If the number of intervals is negative\n */\n var maximumIntervals = 256\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMaximumIntervals\", \"invalidNumIntervals\")\n }\n field = value\n reset()\n }\n /**\n * The number of intervals used for generating geometry. Clamped between MIN_INTERVALS and maximumIntervals.\n * Will always be even.\n */\n protected var activeIntervals = 0\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n protected var vertexBufferKey = Any()\n protected val vertexOrigin = Vec3()\n protected var texCoord1d = 0.0\n protected val texCoord2d = Vec3()\n protected val texCoordMatrix = Matrix3()\n protected val modelToTexCoord = Matrix4()\n protected var cameraDistance = 0.0\n protected val prevPoint = Vec3()\n\n init {\n require(majorRadius >= 0 && minorRadius >= 0) {\n logMessage(ERROR, \"Ellipse\", \"constructor\", \"invalidRadius\")\n }\n }\n\n companion object {\n protected const val VERTEX_STRIDE = 6\n /**\n * The minimum number of intervals that will be used for geometry generation.\n */\n protected const val MIN_INTERVALS = 32\n /**\n * Key for Range object in the element buffer describing the top of the Ellipse.\n */\n protected const val TOP_RANGE = 0\n /**\n * Key for Range object in the element buffer describing the outline of the Ellipse.\n */\n protected const val OUTLINE_RANGE = 1\n /**\n * Key for Range object in the element buffer describing the extruded sides of the Ellipse.\n */\n protected const val SIDE_RANGE = 2\n\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n\n /**\n * Simple interval count based cache of the keys for element buffers. Element buffers are dependent only on the\n * number of intervals so the keys are cached here. The element buffer object itself is in the\n * RenderResourceCache and subject to the restrictions and behavior of that cache.\n */\n protected val elementBufferKeys = mutableMapOf()\n\n private val scratchPosition = Position()\n private val scratchPoint = Vec3()\n\n protected fun assembleElements(intervals: Int): ShortBufferObject {\n // Create temporary storage for elements\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n val elements = mutableListOf()\n\n // Generate the top element buffer with spine\n var idx = intervals.toShort()\n val offset = computeIndexOffset(intervals)\n\n // Add the anchor leg\n elements.add(0.toShort())\n elements.add(1.toShort())\n // Tessellate the interior\n for (i in 2 until intervals) {\n // Add the corresponding interior spine point if this isn't the vertex following the last vertex for the\n // negative major axis\n if (i != intervals / 2 + 1) if (i > intervals / 2) elements.add(--idx) else elements.add(idx++)\n // Add the degenerate triangle at the negative major axis in order to flip the triangle strip back towards\n // the positive axis\n if (i == intervals / 2) elements.add(i.toShort())\n // Add the exterior vertex\n elements.add(i.toShort())\n }\n // Complete the strip\n elements.add(--idx)\n elements.add(0.toShort())\n val topRange = Range(0, elements.size)\n\n // Generate the outline element buffer\n for (i in 0 until intervals) elements.add(i.toShort())\n val outlineRange = Range(topRange.upper, elements.size)\n\n // Generate the side element buffer\n for (i in 0 until intervals) {\n elements.add(i.toShort())\n elements.add(i.plus(offset).toShort())\n }\n elements.add(0.toShort())\n elements.add(offset.toShort())\n val sideRange = Range(outlineRange.upper, elements.size)\n\n // Generate a buffer for the element\n val elementBuffer = ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements.toShortArray())\n elementBuffer.ranges[TOP_RANGE] = topRange\n elementBuffer.ranges[OUTLINE_RANGE] = outlineRange\n elementBuffer.ranges[SIDE_RANGE] = sideRange\n return elementBuffer\n }\n\n protected fun computeNumberSpinePoints(intervals: Int) = intervals / 2 - 1 // intervals should be even\n\n protected fun computeIndexOffset(intervals: Int) = intervals + computeNumberSpinePoints(intervals)\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (majorRadius == 0.0 && minorRadius == 0.0) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = Any()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = boundingBox.distanceTo(rc.cameraPoint)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) { FloatBufferObject(GL_ARRAY_BUFFER, vertexArray) }\n\n // Get the attributes of the element buffer\n val elementBufferKey = elementBufferKeys[activeIntervals] ?: Any().also { elementBufferKeys[activeIntervals] = it }\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) { assembleElements(activeIntervals) }\n if (isSurfaceShape) {\n drawInterior(rc, drawState)\n drawOutline(rc, drawState)\n } else {\n drawOutline(rc, drawState)\n drawInterior(rc, drawState)\n }\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n val top = drawState.elementBuffer!!.ranges[TOP_RANGE]!!\n drawState.drawElements(GL_TRIANGLE_STRIP, top.length, GL_UNSIGNED_SHORT, top.lower * 2 /*offset*/)\n if (isExtrude) {\n val side = drawState.elementBuffer!!.ranges[SIDE_RANGE]!!\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLE_STRIP, side.length, GL_UNSIGNED_SHORT, side.lower * 2)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texCoordAttrib(1 /*size*/, 20 /*offset in bytes*/)\n val outline = drawState.elementBuffer!!.ranges[OUTLINE_RANGE]!!\n drawState.drawElements(GL_LINE_LOOP, outline.length, GL_UNSIGNED_SHORT, outline.lower * 2 /*offset*/)\n if (activeAttributes.isDrawVerticals && isExtrude && !isSurfaceShape) {\n val side = drawState.elementBuffer!!.ranges[SIDE_RANGE]!!\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(GL_LINES, side.length, GL_UNSIGNED_SHORT, side.lower * 2)\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext): Boolean {\n val calculatedIntervals = computeIntervals(rc)\n val sanitizedIntervals = sanitizeIntervals(calculatedIntervals)\n if (vertexArray.isEmpty() || sanitizedIntervals != activeIntervals) {\n activeIntervals = sanitizedIntervals\n return true\n }\n return false\n }\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n\n // Use the ellipse's center position as the local origin for vertex positions.\n if (isSurfaceShape) {\n vertexOrigin.set(center.longitude.inDegrees, center.latitude.inDegrees, center.altitude)\n } else {\n rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n vertexOrigin.set(scratchPoint.x, scratchPoint.y, scratchPoint.z)\n }\n\n // Determine the number of spine points\n val spineCount = computeNumberSpinePoints(activeIntervals) // activeIntervals must be even\n\n // Clear the shape's vertex array. The array will accumulate values as the shapes's geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray((activeIntervals * 2 + spineCount) * VERTEX_STRIDE)\n else FloatArray((activeIntervals + spineCount) * VERTEX_STRIDE)\n\n // Check if minor radius is less than major in which case we need to flip the definitions and change the phase\n val isStandardAxisOrientation = majorRadius > minorRadius\n val headingAdjustment = if (isStandardAxisOrientation) 90.0 else 0.0\n\n // Vertex generation begins on the positive major axis and works ccs around the ellipse. The spine points are\n // then appended from positive major axis to negative major axis.\n val deltaRadians = 2 * PI / activeIntervals\n val majorArcRadians: Double\n val minorArcRadians: Double\n val globeRadius = max(rc.globe.equatorialRadius, rc.globe.polarRadius)\n if (isStandardAxisOrientation) {\n majorArcRadians = majorRadius / globeRadius\n minorArcRadians = minorRadius / globeRadius\n } else {\n majorArcRadians = minorRadius / globeRadius\n minorArcRadians = majorRadius / globeRadius\n }\n\n // Determine the offset from the top and extruded vertices\n val arrayOffset = computeIndexOffset(activeIntervals) * VERTEX_STRIDE\n // Setup spine radius values\n var spineIdx = 0\n val spineRadius = DoubleArray(spineCount)\n\n // Iterate around the ellipse to add vertices\n for (i in 0 until activeIntervals) {\n val radians = deltaRadians * i\n val x = cos(radians) * majorArcRadians\n val y = sin(radians) * minorArcRadians\n val azimuthDegrees = toDegrees(-atan2(y, x))\n val arcRadius = sqrt(x * x + y * y)\n // Calculate the great circle location given this activeIntervals step (azimuthDegrees) a correction value to\n // start from an east-west aligned major axis (90.0) and the user specified user heading value\n val azimuth = heading.plusDegrees(azimuthDegrees + headingAdjustment)\n val loc = center.greatCircleLocation(azimuth, arcRadius, scratchPosition)\n addVertex(rc, loc.latitude, loc.longitude, center.altitude, arrayOffset, isExtrude)\n // Add the major arc radius for the spine points. Spine points are vertically coincident with exterior\n // points. The first and middle most point do not have corresponding spine points.\n if (i > 0 && i < activeIntervals / 2) spineRadius[spineIdx++] = x\n }\n\n // Add the interior spine point vertices\n for (i in 0 until spineCount) {\n center.greatCircleLocation(heading.plusDegrees(headingAdjustment), spineRadius[i], scratchPosition)\n addVertex(rc, scratchPosition.latitude, scratchPosition.longitude, center.altitude, arrayOffset, false)\n }\n\n // Compute the shape's bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty()\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, offset: Int, isExtrudedSkirt: Boolean\n ) {\n var offsetVertexIndex = vertexIndex + offset\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, scratchPoint)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n if (vertexIndex == 0) texCoord1d = 0.0\n else texCoord1d += point.distanceTo(prevPoint)\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n // reserved for future texture coordinate use\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (isExtrudedSkirt) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n vertexArray[offsetVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[offsetVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[offsetVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[offsetVertexIndex++] = 0f //unused\n vertexArray[offsetVertexIndex++] = 0f //unused\n vertexArray[offsetVertexIndex] = 0f //unused\n }\n }\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n val point = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n rc.globe.cartesianToLocalTransform(point.x, point.y, point.z, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n /**\n * Calculate the number of times to split the edges of the shape for geometry assembly.\n *\n * @param rc current RenderContext\n *\n * @return an even number of intervals\n */\n protected open fun computeIntervals(rc: RenderContext): Int {\n var intervals = MIN_INTERVALS\n if (intervals >= maximumIntervals) return intervals // use at least the minimum number of intervals\n val centerPoint = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n val maxRadius = max(majorRadius, minorRadius)\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint) - maxRadius\n if (cameraDistance <= 0) return maximumIntervals // use the maximum number of intervals when the camera is very close\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n val circumferencePixels = computeCircumference() / metersPerPixel\n val circumferenceIntervals = circumferencePixels / maximumPixelsPerInterval\n val subdivisions = ln(circumferenceIntervals / intervals) / ln(2.0)\n val subdivisionCount = ceil(subdivisions).toInt().coerceAtLeast(0)\n intervals = intervals shl subdivisionCount // subdivide the base intervals to achieve the desired number of intervals\n return intervals.coerceAtMost(maximumIntervals) // don't exceed the maximum number of intervals\n }\n\n protected open fun sanitizeIntervals(intervals: Int) = if (intervals % 2 == 0) intervals else intervals - 1\n\n open fun computeCircumference(): Double {\n val a = majorRadius\n val b = minorRadius\n return PI * (3 * (a + b) - sqrt((3 * a + b) * (a + 3 * b)))\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Represents a label at a geographic position. Labels display a single line of text according to specified [TextAttributes].\n */\nopen class Label @JvmOverloads constructor(\n /**\n * The label's geographic position.\n */\n position: Position,\n /**\n * Indicates the text displayed by this label. The returned string may be null, indicating that this label displays\n * nothing.\n */\n var text: String? = null,\n /**\n * Indicates this label's \"normal\" attributes, that is the attributes used when the label's highlighted flag is\n * false. If null and this label is not highlighted, this label displays nothing.\n */\n var attributes: TextAttributes = TextAttributes()\n) : AbstractRenderable(), Highlightable, Movable {\n /**\n * The label's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The label's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Indicates the rotation applied to this label. The rotation represents clockwise clockwise degrees relative to\n * this label's labelRotationMode.\n */\n var rotation = ZERO\n /**\n * Indicates the orientation mode used to interpret this label's rotation. Label rotation may be either relative to\n * the screen or relative to the globe, as indicated by the following allowable values:\n * `OrientationMode.RELATIVE_TO_SCREEN` - The label's orientation is fixed relative to the screen. Rotation indicates\n * clockwise degrees relative to the screen's vertical axis. This is the default mode.\n * `OrientationMode.RELATIVE_TO_GLOBE` - The label's orientation is fixed relative to the globe. Rotation indicates\n * clockwise degrees relative to North.\n */\n var rotationMode = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The attributes used when this label's highlighted flag is true. If null and the highlighted flag is true,\n * this label's normal attributes are used. If they, too, are null, this label displays nothing.\n */\n var highlightAttributes: TextAttributes? = null\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: TextAttributes\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Label, this is\n * simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n\n companion object {\n /**\n * The default amount of screen depth offset applied to the label's text during rendering. Values less than zero\n * bias depth values toward the viewer.\n */\n protected const val DEFAULT_DEPTH_OFFSET = -0.1\n\n /**\n * The label's properties associated with the current render pass.\n */\n private val renderData = RenderData()\n }\n\n /**\n * Moves the shape over the globe's surface. For a Label, this simply change its position.\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n if (text?.isEmpty() != false) return // no text to render\n\n // Filter out renderable outside projection limits.\n if (rc.globe.projectionLimits?.contains(position) == false) return\n\n // Compute the label's Cartesian model point.\n val altitudeMode = if (rc.globe.is2D) AltitudeMode.CLAMP_TO_GROUND else altitudeMode\n rc.geographicToCartesian(position, altitudeMode, renderData.placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the label drawable and\n // determining the amount of depth offset to apply.\n renderData.cameraDistance = if (isAlwaysOnTop) 0.0 else if (rc.globe.is2D) rc.viewingDistance else rc.cameraPoint.distanceTo(renderData.placePoint)\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n if (renderData.cameraDistance < rc.horizonDistance) depthOffset = DEFAULT_DEPTH_OFFSET\n\n // Project the label's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(renderData.placePoint, depthOffset, renderData.screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this label has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n renderData.pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(renderData.pickedObjectId, renderData.pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the label's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(renderData.pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n val texture = rc.getText(text, activeAttributes, rc.frustum.containsPoint(renderData.placePoint)) ?: return\n\n // Initialize the unit square transform to the identity matrix.\n renderData.unitSquareTransform.setToIdentity()\n\n // Apply the label's translation according to its text size and text offset. The text offset is defined with its\n // origin at the text's bottom-left corner and axes that extend up and to the right from the origin point.\n val w = texture.width.toDouble()\n val h = texture.height.toDouble()\n val s = activeAttributes.scale\n activeAttributes.textOffset.offsetForSize(w, h, renderData.offset)\n renderData.unitSquareTransform.setTranslation(\n renderData.screenPlacePoint.x - renderData.offset.x * s,\n renderData.screenPlacePoint.y - renderData.offset.y * s,\n renderData.screenPlacePoint.z\n )\n\n // Apply the label's rotation according to its rotation value and orientation mode. The rotation is applied\n // such that the text rotates around the text offset point.\n val actualRotation = if (rotationMode == OrientationMode.RELATIVE_TO_GLOBE)\n rc.camera.heading - rotation else -rotation\n if (actualRotation != ZERO) {\n renderData.unitSquareTransform.multiplyByTranslation(\n renderData.offset.x, renderData.offset.y, 0.0\n )\n renderData.unitSquareTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n renderData.unitSquareTransform.multiplyByTranslation(\n -renderData.offset.x, -renderData.offset.y, 0.0\n )\n }\n\n // Apply the label's translation and scale according to its text size.\n renderData.unitSquareTransform.multiplyByScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(renderData.unitSquareTransform, renderData.screenBounds)\n if (!rc.frustum.intersectsViewport(renderData.screenBounds)) return // the text is outside the viewport\n\n // Obtain a pooled drawable and configure it to draw the label's text.\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n\n // Use the basic GLSL program to draw the text.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the text's unit square transform matrix.\n drawable.unitSquareTransform.copy(renderData.unitSquareTransform)\n\n // Configure the drawable according to the active attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(renderData.pickColor)\n else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = texture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerShapeDrawable(drawable, renderData.cameraDistance)\n }\n\n /**\n * Properties associated with the label during a render pass.\n */\n protected open class RenderData {\n /**\n * The model coordinate point corresponding to the label's position.\n */\n val placePoint = Vec3()\n /**\n * The screen coordinate point corresponding to the label's position.\n */\n val screenPlacePoint = Vec3()\n /**\n * The screen coordinate offset corresponding to the active attributes.\n */\n val offset = Vec2()\n /**\n * The screen coordinate transform to apply to the drawable unit square.\n */\n val unitSquareTransform = Matrix4()\n /**\n * The screen viewport indicating the label's screen bounds.\n */\n val screenBounds = Viewport()\n /**\n * Unique identifier associated with the label during picking.\n */\n var pickedObjectId = 0\n /**\n * Unique color used to display the label during picking.\n */\n val pickColor = Color()\n /**\n * The distance from the camera position to the label position, in meters.\n */\n var cameraDistance = 0.0\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSightline\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.BoundingSphere\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays an omnidirectional sightline's visibility within the WorldWind scene. The sightline's placement and area of\n * potential visibility are represented by a Cartesian sphere with a center position and a range. Terrain features\n * within the sphere are considered visible if there is a direct line-of-sight between the center position and a given\n * terrain point.\n *
\n * OmnidirectionalSightline displays an overlay on the WorldWind terrain indicating which terrain features are visible,\n * and which are occluded. Visible terrain features, those having a direct line-of-sight to the center position, appear\n * in the sightline's normal attributes or its highlight attributes, depending on the highlight state. Occluded terrain\n * features appear in the sightline's occlude attributes, regardless of highlight state. Terrain features outside the\n * sightline's range are excluded from the overlay.\n *
\n *

Limitations and Planned Improvements

* OmnidirectionalSightline is currently limited to terrain-based\n * occlusion, and does not incorporate other 3D scene elements during visibility determination. Subsequent iterations\n * will support occlusion of both terrain and 3D polygons. * The visibility overlay is drawn in ShapeAttributes'\n * interior color only. Subsequent iterations will add an outline where the sightline's range intersects the scene, and\n * will display the sightline's geometry as an outline. * OmnidirectionalSightline requires OpenGL ES 2.0\n * extension [GL_OES_depth_texture](https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture.txt).\n * Subsequent iterations may relax this requirement.\n */\nopen class OmnidirectionalSightline @JvmOverloads constructor(\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n position: Position,\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n */\n range: Double,\n /**\n * Indicates this sightline's \"normal\" attributes. These attributes are used for the sightline's overlay when the\n * highlighted flag is false, and there is a direct line-of-sight from the sightline's center position to a terrain\n * feature. If null and this sightline is not highlighted, visible terrain features are excluded from\n * the overlay.\n */\n override var attributes: ShapeAttributes = ShapeAttributes()\n) : AbstractRenderable(), Attributable, Highlightable, Movable {\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n *\n * @throws IllegalArgumentException If the range is negative\n */\n var range = range\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"setRange\", \"invalidRange\")\n }\n field = value\n }\n /**\n * The sightline's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Determines whether the normal or highlighted attributes should be used for visible features.\n */\n override var isHighlighted = false\n /**\n * The attributes to use for visible features, when the sightline is highlighted.\n */\n override var highlightAttributes: ShapeAttributes? = null\n /**\n * The attributes to use for occluded features.\n */\n var occludeAttributes = ShapeAttributes().apply { interiorColor.copy(Color(1f, 0f, 0f, 1f)) }\n /**\n * A position associated with the object that indicates its aggregate geographic position. For an\n * OmnidirectionalSightline, this is simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * The attributes to use for visible features during the current render pass.\n */\n protected lateinit var activeAttributes: ShapeAttributes\n\n private val centerPoint = Vec3()\n private var pickedObjectId = 0\n private val pickColor = Color()\n private val boundingSphere = BoundingSphere()\n\n init {\n require(range >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"constructor\", \"invalidRange\")\n }\n }\n\n /**\n * Moves the sightline over the globe's surface.\n *\n * @param globe not used.\n * @param position the new position of the sightline's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n // Compute this sightline's center point in Cartesian coordinates.\n if (!determineCenterPoint(rc)) return\n\n // Don't render anything if the sightline's coverage area is not visible.\n if (!isVisible(rc)) return\n\n // Select the currently active attributes.\n determineActiveAttributes(rc)\n\n // Configure the pick color when rendering in pick mode.\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the sightline's drawables with its picked object ID.\n if (rc.isPickMode) rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n\n protected open fun determineCenterPoint(rc: RenderContext): Boolean {\n rc.geographicToCartesian(position, altitudeMode, centerPoint)\n return centerPoint.x != 0.0 && centerPoint.y != 0.0 && centerPoint.z != 0.0\n }\n\n protected open fun isVisible(rc: RenderContext): Boolean {\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint)\n val pixelSizeMeters = rc.pixelSizeAtDistance(cameraDistance)\n return if (range < pixelSizeMeters) false // The range is zero, or is less than one screen pixel\n else boundingSphere.set(centerPoint, range).intersectsFrustum(rc.frustum)\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Obtain a pooled drawable and configure it to draw the sightline's coverage.\n val pool = rc.getDrawablePool()\n val drawable = DrawableSightline.obtain(pool)\n\n // Compute the transform from sightline local coordinates to world coordinates.\n rc.globe.cartesianToLocalTransform(\n centerPoint.x, centerPoint.y, centerPoint.z, drawable.centerTransform\n )\n\n // Clamp range to max float value as OpenGL drawable operates with float range\n drawable.range = range.coerceIn(0.0, Float.MAX_VALUE.toDouble()).toFloat()\n\n // Configure the drawable colors according to the current attributes. When picking use a unique color associated\n // with the picked object ID. Null attributes indicate that nothing is drawn.\n drawable.visibleColor.copy(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawable.occludedColor.copy(if (rc.isPickMode) pickColor else occludeAttributes.interiorColor)\n\n // Use the sightline GLSL program to draw the coverage.\n drawable.program = rc.getShaderProgram { SightlineProgram() }\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n}","package earth.worldwind.shape\n\n/**\n * Orientation mode indicates how WorldWind interprets a renderable's orientation value, e.g., tilt and rotate\n * values. Accepted values are [RELATIVE_TO_GLOBE], and [RELATIVE_TO_SCREEN].\n */\nenum class OrientationMode {\n /**\n * Indicating that the related value is specified relative to the globe.\n */\n RELATIVE_TO_GLOBE,\n /**\n * Indicating that the related value is specified relative to the plane of the screen.\n */\n RELATIVE_TO_SCREEN;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Path @JvmOverloads constructor(\n positions: List, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n var positions = positions\n set(value) {\n field = value\n reset()\n }\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val interiorElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected lateinit var vertexBufferKey: Any\n protected lateinit var elementBufferKey: Any\n protected val vertexOrigin = Vec3()\n protected var texCoord1d = 0.0\n private val point = Vec3()\n private val prevPoint = Vec3()\n private val texCoordMatrix = Matrix3()\n private val intermediateLocation = Location()\n\n companion object {\n protected const val VERTEX_STRIDE = 4\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n wrapMode = WrapMode.REPEAT\n }\n\n protected fun nextCacheKey() = Any()\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (positions.isEmpty()) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool, and compute distance to the render camera.\n val drawable: Drawable\n val drawState: DrawShapeState\n val cameraDistance: Double\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexIndex, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexIndex)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, (interiorElements + outlineElements + verticalElements).toIntArray())\n }\n\n // Configure the drawable's vertex texture coordinate attribute.\n drawState.texCoordAttrib(1 /*size*/, 12 /*stride in bytes*/)\n\n // Configure the drawable to use the outline texture when drawing the outline.\n if (activeAttributes.isDrawOutline) {\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n }\n }\n\n // Configure the drawable to display the shape's outline. Increase surface shape line widths by 1/2 pixel. Lines\n // drawn indirectly offscreen framebuffer appear thinner when sampled as a texture.\n if (activeAttributes.isDrawOutline) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth + if (isSurfaceShape) 0.5f else 0f)\n drawState.drawElements(\n GL_LINE_STRIP, outlineElements.size,\n GL_UNSIGNED_INT, interiorElements.size * Int.SIZE_BYTES\n )\n }\n\n // Disable texturing for the remaining drawable primitives.\n drawState.texture(null)\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawOutline && activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.drawElements(\n GL_LINES, verticalElements.size,\n GL_UNSIGNED_INT, (interiorElements.size + outlineElements.size) * Int.SIZE_BYTES\n )\n }\n\n // Configure the drawable to display the shape's extruded interior.\n if (activeAttributes.isDrawInterior && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.drawElements(\n GL_TRIANGLE_STRIP, interiorElements.size,\n GL_UNSIGNED_INT, 0\n )\n }\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = false\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine the number of vertexes\n val vertexCount = if (maximumIntermediatePoints <= 0 || pathType == LINEAR) positions.size\n else if(positions.isNotEmpty()) positions.size + (positions.size - 1) * maximumIntermediatePoints else 0\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(vertexCount * 2 * VERTEX_STRIDE)\n else FloatArray(vertexCount * VERTEX_STRIDE)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n\n // Add the first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, false /*intermediate*/)\n\n // Add the remaining vertices, inserting vertices along each edge as indicated by the path's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, false /*intermediate*/)\n begin = end\n }\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*latitude*/, vertexOrigin.x /*longitude*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, true /*intermediate*/)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, intermediate: Boolean\n ): Int {\n val vertex = vertexIndex / VERTEX_STRIDE\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n if (vertex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude)\n else vertexOrigin.copy(point)\n texCoord1d = 0.0\n } else {\n texCoord1d += point.distanceTo(prevPoint)\n }\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n outlineElements.add(vertex)\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n outlineElements.add(vertex)\n if (isExtrude) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, altitudeMode, this.point)\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 0f /*unused*/\n interiorElements.add(vertex)\n interiorElements.add(vertex.inc())\n }\n if (isExtrude && !intermediate) {\n verticalElements.add(vertex)\n verticalElements.add(vertex.inc())\n }\n }\n return vertex\n }\n}","package earth.worldwind.shape\n\n/**\n * Path type indicates how WorldWind create a geographic path between two locations.\n * Accepted values are [GREAT_CIRCLE], [LINEAR] and [RHUMB_LINE].\n */\nenum class PathType {\n /**\n * Indicating a great circle arc between two locations.\n */\n GREAT_CIRCLE,\n /**\n * Indicating simple linear interpolation between two locations.\n */\n LINEAR,\n /**\n * Indicating a line of constant bearing between two locations.\n */\n RHUMB_LINE;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableLines\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.sin\n\n/**\n * Represents a Placemark shape. A placemark displays an image, a label and a leader connecting the placemark's\n * geographic position to the ground. All three of these items are optional. By default, the leader is not pickable. See\n * [Placemark.isLeaderPickingEnabled].\n *
\n * Placemarks may be drawn with either an image or as single-color square with a specified size. When the placemark\n * attributes indicate a valid image, the placemark's image is drawn as a rectangle in the image's original dimensions,\n * scaled by the image scale attribute. Otherwise, the placemark is drawn as a square with width and height equal to the\n * value of the image scale attribute, in pixels, and color equal to the image color attribute.\n */\nopen class Placemark @JvmOverloads constructor(\n /**\n * The placemark's geographic position.\n */\n position: Position,\n /**\n * The placemark's normal attributes.\n */\n var attributes: PlacemarkAttributes = PlacemarkAttributes(),\n /**\n * The placemark's display name.\n */\n name: String? = null\n) : AbstractRenderable(if (name?.isEmpty() != false) \"Placemark\" else name), Highlightable, Movable {\n /**\n * The placemark's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The placemark's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * The attributes to use when the placemark is highlighted.\n */\n var highlightAttributes: PlacemarkAttributes? = null\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The label text to draw near the placemark.\n */\n var label: String? = /*name*/null // Do not use display name as label by default\n /**\n * Sets the optional level-of-detail selector used to inject logic for selecting PlacemarkAttributes based on\n * the camera distance and highlighted attribute. If set to null, the normal and highlight attribute bundles used\n * respectfully for the normal and highlighted states.\n */\n var levelOfDetailSelector: LevelOfDetailSelector? = null\n /**\n * Enables or disables the eye distance scaling feature for this placemark. When enabled, the placemark's size is\n * reduced at higher eye distances. If true, this placemark's size is scaled inversely proportional to the eye\n * distance if the eye distance is greater than the value of the [Placemark.eyeDistanceScalingThreshold]\n * property. When the eye distance is below the threshold, this placemark is scaled only according to the [PlacemarkAttributes.imageScale].\n */\n var isEyeDistanceScaling = false\n /**\n * Sets the eye distance above which to reduce the size of this placemark, in meters.\n * If [isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as the eye\n * distance increases beyond this threshold.\n */\n var eyeDistanceScalingThreshold = DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Sets the eye altitude, in meters, above which this placemark's label is not displayed.\n */\n var eyeDistanceScalingLabelThreshold = 1.5 * DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Indicates whether this placemark's leader, if any, is pickable.\n */\n var isLeaderPickingEnabled = false\n /**\n * Enable additional altitude offset (billboarding) to prevent clipping Placamerk by terrain on tilt.\n */\n var isBillboardingEnabled = false\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n /**\n * The amount of rotation to apply to the image, measured clockwise and relative to this placemark's\n * [Placemark.imageRotationReference].\n */\n var imageRotation = ZERO\n /**eyeDistanceScaling\n * Sets the type of rotation to apply if the [Placemark.imageRotation] is not zero. This value indicates\n * whether to apply this placemark's image rotation relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is rotated in the plane of the screen and its\n * orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is rotated in a plane tangent to the globe at\n * this placemark's position and retains its orientation relative to the globe.\n */\n var imageRotationReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Sets the amount of tilt to apply to the image, measured away from the eye point and relative to this\n * placemark's [Placemark.imageTiltReference]. While any positive or negative number may be specified,\n * values outside the range [0. 90] cause some or all of the image to be clipped.\n */\n var imageTilt = ZERO\n /**\n * Sets the type tilt to apply when [Placemark.imageTilt] is non-zero. This value indicates whether to\n * apply this placemark's image tilt relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is tilted inwards (for positive tilts) relative\n * to the plane of the screen, and its orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is tilted towards the globe's surface, and retains its\n * orientation relative to the surface.\n */\n var imageTiltReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Placemark, this is\n * simply it's position property.\n *\n * @return [Placemark.position]\n */\n override val referencePosition get() = position\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: PlacemarkAttributes\n /**\n * The picked object ID associated with the placemark during the current render pass.\n */\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n /**\n * The distance from the camera to the placemark in meters.\n */\n protected var cameraDistance = 0.0\n\n /**\n * Presents an interfaced for dynamically determining the PlacemarkAttributes based on the distance between the\n * placemark and the camera.\n */\n interface LevelOfDetailSelector {\n /**\n * Gets the active attributes for the current distance to the camera and highlighted state.\n *\n * @param rc The current render context\n * @param placemark The placemark needing a level of detail selection\n * @param cameraDistance The distance from the placemark to the camera (meters)\n *\n * @return if placemark should display or skip its rendering\n */\n fun selectLevelOfDetail(rc: RenderContext, placemark: Placemark, cameraDistance: Double): Boolean\n }\n\n /**\n * Moves the shape over the globe's surface. For a Placemark, this simply set [Placemark.position].\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n /**\n * Performs the rendering; called by the public render method.\n *\n * @param rc the current render context\n */\n override fun doRender(rc: RenderContext) {\n // Filter out renderable outside projection limits.\n if (rc.globe.projectionLimits?.contains(position) == false) return\n\n // Compute the placemark's Cartesian model point and corresponding distance to the eye point. If the placemark's\n // position is terrain-dependent but off the terrain, then compute it ABSOLUTE so that we have a point for the\n // placemark and are thus able to draw it. Otherwise, its image and label portion that are potentially over the\n // terrain won't get drawn, and would disappear as soon as there is no terrain at the placemark's position. This\n // can occur at the window edges.\n val altitudeMode = if (rc.globe.is2D) AltitudeMode.CLAMP_TO_GROUND else altitudeMode\n rc.geographicToCartesian(position, altitudeMode, placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the placemark drawable\n // and determining the amount of depth offset to apply.\n cameraDistance = if (isAlwaysOnTop) 0.0 else if (rc.globe.is2D) rc.viewingDistance else rc.cameraPoint.distanceTo(placePoint)\n\n // Allow the placemark to adjust the level of detail based on distance to the camera\n if (levelOfDetailSelector?.selectLevelOfDetail(rc, this, cameraDistance) == false) return // skip rendering\n\n // Determine the attributes to use for the current render pass.\n determineActiveAttributes(rc)\n\n // Perform point based culling for placemarks who's textures haven't been loaded yet.\n // If the texture hasn't been loaded yet, then perform point-based culling to avoid\n // loading textures for placemarks that are 'probably' outside the viewing frustum.\n // There are cases where a placemark's texture would be partially visible if it at the\n // edge of the screen were loaded. In these cases the placemark will \"pop\" into view when\n // the placePoint enters the view frustum.\n val activeTexture = activeAttributes.imageSource?.let {\n rc.getTexture(it, null, rc.frustum.containsPoint(placePoint))\n }\n\n // Compute a camera-position proximity scaling factor, so that distant placemarks can be scaled smaller than\n // nearer placemarks.\n val visibilityScale = if (isEyeDistanceScaling)\n (eyeDistanceScalingThreshold / cameraDistance).coerceIn(activeAttributes.minimumImageScale, 1.0) else 1.0\n\n // Apply the icon's translation and scale according to the image size, image offset and image scale. The image\n // offset is defined with its origin at the image's bottom-left corner and axes that extend up and to the right\n // from the origin point. When the placemark has no active texture the image scale defines the image size and no\n // other scaling is applied.\n val offsetX: Double\n val offsetY: Double\n val scaleX: Double\n val scaleY: Double\n if (activeTexture != null) {\n val w = activeTexture.width.toDouble()\n val h = activeTexture.height.toDouble()\n val s = activeAttributes.imageScale * visibilityScale\n activeAttributes.imageOffset.offsetForSize(w, h, offset)\n offsetX = offset.x * s\n offsetY = offset.y * s\n scaleX = w * s\n scaleY = h * s\n } else {\n // This branch serves both non-textured attributes and also textures that haven't been loaded yet.\n // We set the size for non-loaded textures to the typical size of a contemporary \"small\" icon (24px)\n var size = if (activeAttributes.imageSource != null) 24.0 else activeAttributes.imageScale\n size *= visibilityScale\n activeAttributes.imageOffset.offsetForSize(size, size, offset)\n offsetX = offset.x\n offsetY = offset.y\n scaleY = size\n scaleX = scaleY\n }\n\n // Offset along the normal vector to avoid collision with terrain.\n if (isBillboardingEnabled && offsetY != 0.0) {\n rc.globe.geographicToCartesianNormal(position.latitude, position.longitude, scratchVector).also {\n // Use real camera distance in billboarding\n val distance = if (isAlwaysOnTop) rc.cameraPoint.distanceTo(placePoint) else cameraDistance\n val altitude = rc.pixelSizeAtDistance(distance) * sin(rc.camera.tilt.inRadians)\n placePoint.add(scratchVector.multiply(offsetY * altitude))\n }\n }\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n val absTilt = abs(rc.camera.tilt.inDegrees)\n if (cameraDistance < rc.horizonDistance && absTilt <= 90) {\n depthOffset = (1 - absTilt / 90) * DEFAULT_DEPTH_OFFSET\n }\n\n // Project the placemark's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(placePoint, depthOffset, screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Keep track of the drawable count to determine whether this placemark has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Prepare a drawable for the placemark's leader, if requested. Enqueue the leader drawable before the icon\n // drawable in order to give the icon visual priority over the leader.\n if (mustDrawLeader(rc)) {\n // Compute the placemark's Cartesian ground point.\n rc.geographicToCartesian(position, AltitudeMode.CLAMP_TO_GROUND, groundPoint)\n\n // If the leader is visible, enqueue a drawable leader for processing on the OpenGL thread.\n if (rc.frustum.intersectsSegment(groundPoint, placePoint)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableLines.obtain(pool)\n prepareDrawableLeader(rc, drawable)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n\n // Prepare image transformation matrix\n prepareImageTransform(rc.camera, offsetX, offsetY, scaleX, scaleY)\n\n // If the placemark's icon is visible, enqueue a drawable icon for processing on the OpenGL thread.\n boundingRectForUnitSquare(imageTransform, imageBounds)\n if (rc.frustum.intersectsViewport(imageBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableIcon(rc, drawable, activeTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n // If there's a label, perform these same operations for the label texture.\n if ((!isEyeDistanceScaling || cameraDistance <= eyeDistanceScalingLabelThreshold) && mustDrawLabel(rc)) {\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n rc.getText(label, activeAttributes.labelAttributes, rc.frustum.containsPoint(placePoint))?.let { labelTexture ->\n val w = labelTexture.width.toDouble()\n val h = labelTexture.height.toDouble()\n val s = activeAttributes.labelAttributes.scale * visibilityScale\n activeAttributes.labelAttributes.textOffset.offsetForSize(w, h, offset)\n labelTransform.setTranslation(\n screenPlacePoint.x - offset.x * s,\n screenPlacePoint.y - offset.y * s,\n screenPlacePoint.z\n )\n labelTransform.setScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(labelTransform, labelBounds)\n if (rc.frustum.intersectsViewport(labelBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableLabel(rc, drawable, labelTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n }\n\n // Enqueue a picked object that associates the placemark's icon and leader with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n /**\n * Determines the placemark attributes to use for the current render pass.\n *\n * @param rc the current render context\n */\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n /**\n * Prepare image transform matrix according to specified parameters\n *\n * @param camera current camera view\n * @param offsetX offset along X axis\n * @param offsetY offset along X axis\n * @param scaleX scaled width\n * @param scaleY scaled height\n */\n protected open fun prepareImageTransform(\n camera: Camera, offsetX: Double, offsetY: Double, scaleX: Double, scaleY: Double\n ) {\n // Initialize the unit square transform to the identity matrix.\n imageTransform.setToIdentity()\n\n // Position image on screen\n imageTransform.multiplyByTranslation(\n screenPlacePoint.x, screenPlacePoint.y, screenPlacePoint.z\n )\n\n // Divide Z by 2^24 to prevent texture clipping when tilting (where 24 is depth buffer bit size).\n // Doing so will limit depth range to (diagonal length)/2^24 and make its value within 0..1 range.\n imageTransform.multiplyByScale(1.0, 1.0, 1.0 / (1 shl 24))\n\n // Perform the tilt so that the image tilts back from its base into the view volume\n val actualTilt = if (imageTiltReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.tilt + imageTilt else imageTilt\n if (actualTilt.inDegrees != 0.0) imageTransform.multiplyByRotation(-1.0, 0.0, 0.0, actualTilt)\n\n // Perform image rotation\n val actualRotation = if (imageRotationReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.heading - imageRotation else -imageRotation\n if (actualRotation.inDegrees != 0.0) imageTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n\n // Apply pivot translation\n imageTransform.multiplyByTranslation(-offsetX, -offsetY, 0.0)\n\n // Apply scale\n imageTransform.multiplyByScale(scaleX, scaleY, 1.0)\n }\n\n /**\n * Prepares this placemark's icon or symbol for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableIcon(rc: RenderContext, drawable: DrawableScreenTexture, activeTexture: Texture?) {\n // Use the basic GLSL program to draw the placemark's icon.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the plaemark's unit square transform matrix.\n drawable.unitSquareTransform.copy(imageTransform)\n\n // Configure the drawable according to the placemark's active attributes. Use a color appropriate for the pick\n // mode. When picking use a unique color associated with the picked object ID. Use the texture associated with\n // the active attributes' image source and its associated tex coord transform. If the texture is not specified\n // or not available, draw a simple colored square.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.imageColor)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = activeTexture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n }\n\n /**\n * Prepares this placemark's label for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLabel(rc: RenderContext, drawable: DrawableScreenTexture, labelTexture: Texture) {\n // Use the basic GLSL program to draw the placemark's label.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the label's unit square transform matrix.\n drawable.unitSquareTransform.copy(labelTransform)\n\n // Configure the drawable according to the active label attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(pickColor) else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = labelTexture\n drawable.enableDepthTest = activeAttributes.labelAttributes.isDepthTest\n }\n\n /**\n * Prepares this placemark's leader for drawing in a subsequent drawing pass. Implementations must be careful not to\n * leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLeader(rc: RenderContext, drawable: DrawableLines) {\n // Use the basic GLSL program to draw the placemark's leader.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Compute the drawable's vertex points, in Cartesian coordinates relative to the placemark's ground point.\n drawable.vertexPoints[0] = 0f // groundPoint.x - groundPoint.x\n drawable.vertexPoints[1] = 0f // groundPoint.y - groundPoint.y\n drawable.vertexPoints[2] = 0f // groundPoint.z - groundPoint.z\n drawable.vertexPoints[3] = (placePoint.x - groundPoint.x).toFloat()\n drawable.vertexPoints[4] = (placePoint.y - groundPoint.y).toFloat()\n drawable.vertexPoints[5] = (placePoint.z - groundPoint.z).toFloat()\n\n // Compute the drawable's modelview-projection matrix, relative to the placemark's ground point.\n drawable.mvpMatrix.copy(rc.modelviewProjection)\n drawable.mvpMatrix.multiplyByTranslation(groundPoint.x, groundPoint.y, groundPoint.z)\n\n // Configure the drawable according to the placemark's active leader attributes. Use a color appropriate for the\n // pick mode. When picking use a unique color associated with the picked object ID.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.leaderAttributes.outlineColor)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.lineWidth = activeAttributes.leaderAttributes.outlineWidth\n drawable.enableDepthTest = activeAttributes.leaderAttributes.isDepthTest\n }\n\n /**\n * Determines if a label should and can be drawn.\n *\n * @return True if there is a valid label and label attributes.\n */\n protected open fun mustDrawLabel(rc: RenderContext) = activeAttributes.isDrawLabel && label?.isNotEmpty() == true\n\n /**\n * Determines if a leader-line should and can be drawn.\n *\n * @return True if leader-line directive is enabled and there are valid leader-line attributes.\n */\n protected open fun mustDrawLeader(rc: RenderContext) =\n activeAttributes.isDrawLeader && (isLeaderPickingEnabled || !rc.isPickMode) &&\n altitudeMode != AltitudeMode.CLAMP_TO_GROUND && !rc.globe.is2D\n\n companion object {\n /**\n * The default eye distance above which to reduce the size of this placemark, in meters.\n * If [Placemark.isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as\n * the eye distance increases beyond this threshold.\n */\n const val DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD = 4e5\n protected const val DEFAULT_DEPTH_OFFSET = -0.03\n private val placePoint = Vec3()\n private val scratchVector = Vec3()\n private val screenPlacePoint = Vec3()\n private val groundPoint = Vec3()\n private val offset = Vec2()\n private val imageTransform = Matrix4()\n private val labelTransform = Matrix4()\n private val imageBounds = Viewport()\n private val labelBounds = Viewport()\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws a simple square\n * centered on the supplied position with the given size and color.\n *\n * @param position The geographic position where the placemark is drawn.\n * @param color The color of the placemark.\n * @param pixelSize The width and height of the placemark.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithColorAndSize(position: Position, color: Color, pixelSize: Int) =\n Placemark(position, PlacemarkAttributes().apply {\n imageColor = color\n imageScale = pixelSize.toDouble()\n })\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws the given image\n * centered on the supplied position.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithImage(position: Position, imageSource: ImageSource) =\n Placemark(position, PlacemarkAttributes.createWithImage(imageSource))\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle (with TextAttributes) that\n * draws the given image centered on the supplied position with a nearby label.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n * @param label The text that is drawn near the image. This parameter becomes the placemark's displayName\n * property.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle containing TextAttributes.\n */\n @JvmStatic\n fun createWithImageAndLabel(\n position: Position, imageSource: ImageSource, label: String\n ) = Placemark(position, PlacemarkAttributes.createWithImage(imageSource), label)\n\n protected fun nextCacheKey() = Any()\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport kotlin.jvm.JvmStatic\n\n/**\n * Holds attributes applied to [Placemark] shapes.\n * The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\nopen class PlacemarkAttributes(\n /**\n * Returns the source of the placemark's image. If null, the placemark is drawn as a square whose width and height\n * are the value of this attribute object's [imageScale] property.\n */\n var imageSource: ImageSource?,\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n imageColor: Color,\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n imageOffset: Offset,\n /**\n * Returns the amount to scale the placemark's image. When this attribute bundle has a valid image path the scale is\n * applied to the image's dimensions. Otherwise, the scale indicates the dimensions in pixels of a square drawn at\n * the placemark's geographic position. A scale of 0 causes the placemark to disappear; however, the placemark's\n * label, if any, is still drawn.\n */\n var imageScale: Double,\n /**\n * Returns the minimum amount to scale the placemark's image. When a [Placemark.isEyeDistanceScaling] is true,\n * this value controls the minimum size of the rendered placemark. A value of 0 allows the placemark to disappear.\n */\n var minimumImageScale: Double,\n /**\n * Returns whether to draw a placemark's label text.\n */\n var isDrawLabel: Boolean,\n /**\n * Returns whether to draw a line from the placemark's geographic position to the ground.\n */\n var isDrawLeader: Boolean,\n /**\n * Returns whether the placemark should be depth-tested against other objects in the scene. If true, the placemark\n * may be occluded by terrain and other objects in certain viewing situations. If false, the placemark will not be\n * occluded by terrain and other objects. If this value is true, the placemark's label, if any, has an independent\n * depth-test control.\n */\n var isDepthTest: Boolean,\n /**\n * Returns the attributes to apply to the placemark's label\n */\n labelAttributes: TextAttributes,\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n leaderAttributes: ShapeAttributes\n) {\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n var imageColor = imageColor\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n var imageOffset = imageOffset\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the placemark's label\n */\n var labelAttributes = labelAttributes\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n var leaderAttributes = leaderAttributes\n set(value) {\n field.copy(value)\n }\n\n /**\n * Constructs a placemark attributes bundle. The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\n constructor(): this(\n imageSource = null,\n imageColor = Color(1f, 1f, 1f, 1f), // white\n imageOffset = Offset.center(),\n imageScale = 1.0,\n minimumImageScale = 0.0,\n isDrawLabel = true,\n isDrawLeader = false,\n isDepthTest = true,\n labelAttributes = TextAttributes(),\n leaderAttributes = ShapeAttributes()\n )\n\n /**\n * Constructs a placemark attribute bundle from the specified attributes. Performs a deep copy of the color, offset,\n * label attributes and leader-line attributes.\n *\n * @param attributes The attributes to be copied.\n */\n constructor(attributes: PlacemarkAttributes): this(\n attributes.imageSource,\n Color(attributes.imageColor),\n Offset(attributes.imageOffset),\n attributes.imageScale,\n attributes.minimumImageScale,\n attributes.isDrawLabel,\n attributes.isDrawLeader,\n attributes.isDepthTest,\n TextAttributes(attributes.labelAttributes),\n ShapeAttributes(attributes.leaderAttributes)\n )\n\n fun copy(attributes: PlacemarkAttributes) = apply {\n imageSource = attributes.imageSource\n imageColor.copy(attributes.imageColor)\n imageOffset.copy(attributes.imageOffset)\n imageScale = attributes.imageScale\n minimumImageScale = attributes.minimumImageScale\n isDrawLabel = attributes.isDrawLabel\n isDrawLeader = attributes.isDrawLeader\n isDepthTest = attributes.isDepthTest\n labelAttributes.copy(attributes.labelAttributes)\n leaderAttributes.copy(attributes.leaderAttributes)\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is PlacemarkAttributes) return false\n if (imageSource != other.imageSource) return false\n if (imageColor != other.imageColor) return false\n if (imageOffset != other.imageOffset) return false\n if (imageScale != other.imageScale) return false\n if (minimumImageScale != other.minimumImageScale) return false\n if (isDrawLabel != other.isDrawLabel) return false\n if (isDrawLeader != other.isDrawLeader) return false\n if (isDepthTest != other.isDepthTest) return false\n if (labelAttributes != other.labelAttributes) return false\n if (leaderAttributes != other.leaderAttributes) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = imageSource?.hashCode() ?: 0\n result = 31 * result + imageColor.hashCode()\n result = 31 * result + imageOffset.hashCode()\n result = 31 * result + imageScale.hashCode()\n result = 31 * result + minimumImageScale.hashCode()\n result = 31 * result + isDrawLabel.hashCode()\n result = 31 * result + isDrawLeader.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + labelAttributes.hashCode()\n result = 31 * result + leaderAttributes.hashCode()\n return result\n }\n\n companion object {\n @JvmStatic\n fun createWithImage(imageSource: ImageSource) = PlacemarkAttributes().apply { this.imageSource = imageSource }\n\n @JvmStatic\n fun createWithImageAndLeader(imageSource: ImageSource) = PlacemarkAttributes().apply {\n this.imageSource = imageSource\n isDrawLeader = true\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Polygon @JvmOverloads constructor(\n positions: List = emptyList(), attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n protected val boundaries = mutableListOf(positions)\n val boundaryCount get() = boundaries.size\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val topElements = mutableListOf()\n protected val sideElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected var vertexBufferKey = nextCacheKey()\n protected var elementBufferKey = nextCacheKey()\n protected val vertexOrigin = Vec3()\n protected var cameraDistance = 0.0\n protected var texCoord1d = 0.0\n protected val tessCallback = object : GLUtessellatorCallbackAdapter() {\n override fun combineData(\n coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any\n ) = tessCombine(polygonData as RenderContext, coords, data, weight, outData)\n\n override fun vertexData(vertexData: Any, polygonData: Any) = tessVertex(polygonData as RenderContext, vertexData)\n\n override fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) = tessEdgeFlag(polygonData as RenderContext, boundaryEdge)\n\n override fun errorData(errnum: Int, polygonData: Any) = tessError(polygonData as RenderContext, errnum)\n }\n private val point = Vec3()\n private val prevPoint = Vec3()\n private val texCoord2d = Vec3()\n private val texCoordMatrix = Matrix3()\n private val modelToTexCoord = Matrix4()\n private val intermediateLocation = Location()\n private val tessCoords = DoubleArray(3)\n private val tessVertices = IntArray(3)\n private val tessEdgeFlags = BooleanArray(3)\n private var tessEdgeFlag = true\n private var tessVertexCount = 0\n\n companion object {\n protected const val VERTEX_STRIDE = 6\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n protected const val VERTEX_ORIGINAL = 0\n protected const val VERTEX_INTERMEDIATE = 1\n protected const val VERTEX_COMBINED = 2\n protected fun nextCacheKey() = Any()\n }\n\n fun getBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"getBoundary\", \"invalidIndex\")\n }\n return boundaries[index]\n }\n\n fun setBoundary(index: Int, positions: List): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"setBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.set(index, positions)\n }\n\n fun addBoundary(positions: List): Boolean {\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.add(positions)\n }\n\n fun addBoundary(index: Int, positions: List) {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"addBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n boundaries.add(index, positions)\n }\n\n fun removeBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"removeBoundary\", \"invalidIndex\")\n }\n reset()\n return boundaries.removeAt(index)\n }\n\n fun clearBoundaries() {\n boundaries.clear()\n reset()\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n topElements.clear()\n sideElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (boundaries.isEmpty()) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexIndex, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexIndex)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n IntBufferObject(\n GL_ELEMENT_ARRAY_BUFFER, (topElements + sideElements + outlineElements + verticalElements).toIntArray()\n )\n }\n if (isSurfaceShape || activeAttributes.interiorColor.alpha >= 1.0) {\n drawInterior(rc, drawState)\n drawOutline(rc, drawState)\n } else {\n drawOutline(rc, drawState)\n drawInterior(rc, drawState)\n }\n\n // Configure the drawable according to the shape's attributes. Disable triangle backface culling when we're\n // displaying a polygon without extruded sides, so we want to draw the top and the bottom.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior top.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n drawState.drawElements(GL_TRIANGLES, topElements.size, GL_UNSIGNED_INT, 0 /*offset*/)\n\n // Configure the drawable to display the shape's interior sides.\n if (isExtrude) {\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLES, sideElements.size, GL_UNSIGNED_INT, topElements.size * Int.SIZE_BYTES /*offset*/)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texCoordAttrib(1 /*size*/, 20 /*offset in bytes*/)\n drawState.drawElements(\n GL_LINES, outlineElements.size,\n GL_UNSIGNED_INT, (topElements.size + sideElements.size) * Int.SIZE_BYTES /*offset*/\n )\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(\n GL_LINES, verticalElements.size,\n GL_UNSIGNED_INT, (topElements.size + sideElements.size + outlineElements.size) * Int.SIZE_BYTES /*offset*/\n )\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine the number of vertexes\n val noIntermediatePoints = maximumIntermediatePoints <= 0 || pathType == LINEAR\n val vertexCount = boundaries.sumOf { p ->\n if (noIntermediatePoints) p.size\n else if (p.isNotEmpty() && p[0] == p[p.size - 1]) p.size + (p.size - 1) * maximumIntermediatePoints\n else p.size + p.size * maximumIntermediatePoints\n }\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(vertexCount * 2 * VERTEX_STRIDE)\n else if (!isSurfaceShape) FloatArray(vertexCount * VERTEX_STRIDE)\n else FloatArray((vertexCount + boundaries.size) * VERTEX_STRIDE) // Reserve boundaries.size for combined vertexes\n topElements.clear()\n sideElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n val tess = rc.tessellator\n GLU.gluTessNormal(tess, 0.0, 0.0, 1.0)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, tessCallback)\n GLU.gluTessBeginPolygon(tess, rc)\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions to assemble\n GLU.gluTessBeginContour(tess)\n\n // Add the boundary's first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, VERTEX_ORIGINAL /*type*/)\n\n // Add the remaining boundary vertices, tessellating each edge as indicated by the polygon's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, VERTEX_ORIGINAL /*type*/)\n begin = end\n }\n\n // Tessellate the implicit closing edge if the boundary is not already closed.\n if (begin != positions[0]) addIntermediateVertices(rc, begin, positions[0])\n GLU.gluTessEndContour(tess)\n }\n GLU.gluTessEndPolygon(tess)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, null)\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, VERTEX_INTERMEDIATE /*type*/)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, type: Int): Int {\n val vertex = vertexIndex / VERTEX_STRIDE\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n if (type != VERTEX_COMBINED) {\n tessCoords[0] = longitude.inDegrees\n tessCoords[1] = latitude.inDegrees\n tessCoords[2] = altitude\n GLU.gluTessVertex(rc.tessellator, tessCoords, 0 /*coords_offset*/, vertex)\n }\n if (vertex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude) else vertexOrigin.copy(point)\n texCoord1d = 0.0\n } else {\n texCoord1d += point.distanceTo(prevPoint)\n }\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (isExtrude) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, this.point)\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 0f /*unused*/\n vertexArray[vertexIndex++] = 0f /*unused*/\n vertexArray[vertexIndex++] = 0f /*unused*/\n }\n if (isExtrude && type == VERTEX_ORIGINAL) {\n verticalElements.add(vertex)\n verticalElements.add(vertex.inc())\n }\n }\n return vertex\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var numPoints = 0.0\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions\n for (j in positions.indices) {\n val point = rc.geographicToCartesian(positions[j], AltitudeMode.ABSOLUTE, point)\n mx += point.x\n my += point.y\n mz += point.z\n numPoints++\n }\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n rc.globe.cartesianToLocalTransform(mx, my, mz, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n protected open fun tessCombine(rc: RenderContext, coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {\n ensureVertexArrayCapacity() // Increment array size to fit combined vertexes\n outData[0] = addVertex(rc, coords[1].degrees /*lat*/, coords[0].degrees /*lon*/, coords[2] /*alt*/, VERTEX_COMBINED /*type*/)\n }\n\n protected open fun tessVertex(rc: RenderContext, vertexData: Any) {\n tessVertices[tessVertexCount] = vertexData as Int\n tessEdgeFlags[tessVertexCount] = tessEdgeFlag\n if (tessVertexCount < 2) {\n tessVertexCount++ // increment the vertex count and wait for more vertices\n return\n } else {\n tessVertexCount = 0 // reset the vertex count and process one triangle\n }\n val v0 = tessVertices[0]\n val v1 = tessVertices[1]\n val v2 = tessVertices[2]\n topElements.add(v0)\n topElements.add(v1)\n topElements.add(v2)\n if (tessEdgeFlags[0] && isExtrude && !isSurfaceShape) {\n sideElements.add(v0)\n sideElements.add(v0.inc())\n sideElements.add(v1)\n sideElements.add(v1)\n sideElements.add(v0.inc())\n sideElements.add(v1.inc())\n }\n if (tessEdgeFlags[1] && isExtrude && !isSurfaceShape) {\n sideElements.add(v1)\n sideElements.add(v1.inc())\n sideElements.add(v2)\n sideElements.add(v2)\n sideElements.add(v1.inc())\n sideElements.add(v2.inc())\n }\n if (tessEdgeFlags[2] && isExtrude && !isSurfaceShape) {\n sideElements.add(v2)\n sideElements.add(v2.inc())\n sideElements.add(v0)\n sideElements.add(v0)\n sideElements.add(v2.inc())\n sideElements.add(v0.inc())\n }\n if (tessEdgeFlags[0]) {\n outlineElements.add(v0)\n outlineElements.add(v1)\n }\n if (tessEdgeFlags[1]) {\n outlineElements.add(v1)\n outlineElements.add(v2)\n }\n if (tessEdgeFlags[2]) {\n outlineElements.add(v2)\n outlineElements.add(v0)\n }\n }\n\n protected open fun tessEdgeFlag(rc: RenderContext, boundaryEdge: Boolean) { tessEdgeFlag = boundaryEdge }\n\n protected open fun tessError(rc: RenderContext, errNum: Int) {\n val errStr = GLU.gluErrorString(errNum)\n logMessage(\n WARN, \"Polygon\", \"assembleGeometry\", \"Error attempting to tessellate polygon '$errStr'\"\n )\n }\n\n protected open fun ensureVertexArrayCapacity() {\n val size = vertexArray.size\n if (size == vertexIndex) {\n val increment = (size shr 1).coerceAtLeast(12)\n val newArray = FloatArray(size + increment)\n vertexArray.copyInto(newArray)\n vertexArray = newArray\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\n\n/**\n * Holds attributes applied to geographic shapes.\n */\nopen class ShapeAttributes(\n /**\n * Indicates whether shape interiors are enabled.\n */\n var isDrawInterior: Boolean,\n /**\n * Indicates whether shape outlines are enabled.\n */\n var isDrawOutline: Boolean,\n /**\n * Indicates whether shape vertical outlines are enabled. Not all shapes display vertical outlines. Those that do\n * not ignore this property. When enabled, those that do display vertical lines extending from the shape's specified\n * positions to the ground.\n */\n var isDrawVerticals: Boolean,\n /**\n * Indicates whether shape depth-testing is enabled. When true, shapes may be occluded by terrain and other shapes\n * in certain viewing situations. When false, shapes will not be occluded by terrain and other shapes.\n */\n var isDepthTest: Boolean,\n /**\n * Indicates whether depth write enabled.\n */\n var isDepthWrite: Boolean,\n /**\n * Sets whether shape lighting is enabled. When true, the appearance of a shape's color and image source may be\n * modified by shading applied from a global light source.\n */\n var isLightingEnabled: Boolean,\n /**\n * Indicates the color and opacity of shape interiors.\n */\n interiorColor: Color,\n /**\n * Indicates the color and opacity of shape outlines.\n */\n outlineColor: Color,\n /**\n * Indicates the width of shape outlines.\n */\n var outlineWidth: Float,\n /**\n * Indicates the image source applied to shape interiors. When null, shape interiors are displayed in the interior\n * color. When non-null, image pixels appear in shape interiors, with each image pixel multiplied by the interior\n * RGBA color. Use a white interior color to display unmodified image pixels.\n *
\n * By default, interior image sources are displayed as a repeating pattern across shape interiors. The pattern\n * matches image pixels to screen pixels, such that the image appears to repeat in screen coordinates.\n */\n var interiorImageSource: ImageSource?,\n /**\n * Indicates the image source applied to shape outlines.\n */\n var outlineImageSource: ImageSource?\n) {\n /**\n * Indicates the color and opacity of shape interiors.\n */\n var interiorColor = interiorColor\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates the color and opacity of shape outlines.\n */\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n isDrawInterior = true,\n isDrawOutline = true,\n isDrawVerticals = false,\n isDepthTest = true,\n isDepthWrite = true,\n isLightingEnabled = false,\n interiorColor = Color(1f, 1f, 1f, 1f), // white\n outlineColor = Color(1f, 0f, 0f, 1f), // red\n outlineWidth = 1.0f,\n interiorImageSource = null,\n outlineImageSource = null\n )\n\n constructor(attributes: ShapeAttributes): this(\n attributes.isDrawInterior,\n attributes.isDrawOutline,\n attributes.isDrawVerticals,\n attributes.isDepthTest,\n attributes.isDepthWrite,\n attributes.isLightingEnabled,\n Color(attributes.interiorColor),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.interiorImageSource,\n attributes.outlineImageSource\n )\n\n fun copy(attributes: ShapeAttributes) = apply {\n isDrawInterior = attributes.isDrawInterior\n isDrawOutline = attributes.isDrawOutline\n isDrawVerticals = attributes.isDrawVerticals\n isDepthTest = attributes.isDepthTest\n isDepthWrite = attributes.isDepthWrite\n isLightingEnabled = attributes.isLightingEnabled\n interiorColor.copy(attributes.interiorColor)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n interiorImageSource = attributes.interiorImageSource\n outlineImageSource = attributes.outlineImageSource\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is ShapeAttributes) return false\n if (isDrawInterior != other.isDrawInterior) return false\n if (isDrawOutline != other.isDrawOutline) return false\n if (isDrawVerticals != other.isDrawVerticals) return false\n if (isDepthTest != other.isDepthTest) return false\n if (isDepthWrite != other.isDepthWrite) return false\n if (isLightingEnabled != other.isLightingEnabled) return false\n if (interiorColor != other.interiorColor) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (interiorImageSource != other.interiorImageSource) return false\n if (outlineImageSource != other.outlineImageSource) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = isDrawInterior.hashCode()\n result = 31 * result + isDrawOutline.hashCode()\n result = 31 * result + isDrawVerticals.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + isDepthWrite.hashCode()\n result = 31 * result + isLightingEnabled.hashCode()\n result = 31 * result + interiorColor.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + (interiorImageSource?.hashCode() ?: 0)\n result = 31 * result + (outlineImageSource?.hashCode() ?: 0)\n return result\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.AbstractSurfaceRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.SurfaceTextureProgram\n\nopen class SurfaceImage(sector: Sector, var imageSource: ImageSource): AbstractSurfaceRenderable(sector, \"Surface Image\") {\n var imageOptions: ImageOptions? = null\n protected val terrainSector = Sector()\n\n override fun doRender(rc: RenderContext) {\n terrainSector.copy(sector)\n if (terrainSector.isEmpty || !terrainSector.intersect(rc.terrain.sector) || !getExtent(rc).intersectsFrustum(rc.frustum)) return\n val texture = rc.getTexture(imageSource, imageOptions) ?: return // no texture to draw\n val opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n\n // Enqueue a drawable surface texture for processing on the OpenGL thread.\n val program = getShaderProgram(rc)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n program, sector, opacity, texture, texture.coordTransform, rc.globe.offset, terrainSector\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n\n // Enqueue a picked object that associates the drawable surface texture with this surface image.\n if (rc.isPickMode) {\n val pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, drawable.color)\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun getShaderProgram(rc: RenderContext) = rc.getShaderProgram { SurfaceTextureProgram() }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\n/**\n * Holds attributes applied to text shapes and [Placemark] labels.\n */\nopen class TextAttributes protected constructor(\n font: Font,\n textColor: Color,\n textOffset: Offset,\n outlineColor: Color,\n var outlineWidth: Float,\n var isOutlineEnabled: Boolean,\n var isDepthTest: Boolean,\n var scale: Double\n) {\n var font = font\n set(value) {\n field.copy(value)\n }\n var textColor = textColor\n set(value) {\n field.copy(value)\n }\n var textOffset = textOffset\n set(value) {\n field.copy(value)\n }\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n font = Font(),\n textColor = Color(1f, 1f, 1f, 1f),\n textOffset = Offset.bottomCenter(),\n outlineColor = Color(0f, 0f, 0f, 1f),\n outlineWidth = 3f,\n isOutlineEnabled = true,\n isDepthTest = true,\n scale = 1.0\n )\n\n constructor(attributes: TextAttributes): this(\n attributes.font,\n Color(attributes.textColor),\n Offset(attributes.textOffset),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.isOutlineEnabled,\n attributes.isDepthTest,\n attributes.scale\n )\n\n fun copy(attributes: TextAttributes) = apply {\n font.copy(attributes.font)\n textColor.copy(attributes.textColor)\n textOffset.copy(attributes.textOffset)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n isOutlineEnabled = attributes.isOutlineEnabled\n isDepthTest = attributes.isDepthTest\n scale = attributes.scale\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is TextAttributes) return false\n if (font != other.font) return false\n if (textColor != other.textColor) return false\n if (textOffset != other.textOffset) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (isOutlineEnabled != other.isOutlineEnabled) return false\n if (isDepthTest != other.isDepthTest) return false\n if (scale != other.scale) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = font.hashCode()\n result = 31 * result + textColor.hashCode()\n result = 31 * result + textOffset.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + isOutlineEnabled.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + scale.hashCode()\n return result\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.*\nimport kotlinx.coroutines.*\nimport kotlin.time.Duration.Companion.seconds\n\nopen class TiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet): AbstractRenderable(\"Tiled Surface Image\") {\n /**\n * Tile factory implementation.\n */\n var tileFactory = tileFactory\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Tile pyramid representation.\n */\n var levelSet = levelSet\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Additional image texture options.\n */\n var imageOptions: ImageOptions? = null\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Define imagery level of details. It controls tile pixel density on the screen.\n */\n var detailControl = 1.0\n /**\n * Retrieve top level tiles to avoid black holes when navigating and zooming out camera\n */\n var retrieveTopLevelTiles = true\n /**\n * Use ancestor tile texture as a fallback for descendants\n */\n var useAncestorTileTexture = true\n /**\n * Define cache tiles factory implementation.\n */\n var cacheTileFactory: CacheTileFactory? = null\n /**\n * Configures tiled surface image to retrieve only the cache source.\n */\n var isCacheOnly = false\n\n /**\n * Memory cache for this layer's subdivision tiles. Each entry contains an array of four image tiles corresponding\n * to the subdivision of the group's common parent tile. The cache is configured to hold 1200 groups, a number\n * empirically determined to be sufficient for storing the tiles needed to navigate a small region.\n */\n protected var tileCache = LruMemoryCache>(1200)\n protected var activeProgram: SurfaceTextureProgram? = null\n protected var ancestorTile: ImageTile? = null\n protected var ancestorTexture: Texture? = null\n protected val ancestorTexCoordMatrix = Matrix3()\n protected val topLevelTiles = mutableListOf()\n protected var lastGlobeState: Globe.State? = null\n\n /**\n * Makes a copy of this tiled surface image\n */\n open fun clone() = TiledSurfaceImage(tileFactory, levelSet).also {\n it.imageOptions = imageOptions\n }\n\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n checkGlobeState(rc)\n determineActiveProgram(rc)\n assembleTiles(rc)\n activeProgram = null // clear the active program to avoid leaking render resources\n ancestorTile = null // clear the ancestor tile and texture\n ancestorTexture = null\n }\n\n @Throws(IllegalStateException::class, IllegalArgumentException::class)\n open fun launchBulkRetrieval(\n scope: CoroutineScope, sector: Sector, resolution: ClosedRange, onProgress: ((Int, Int, Int) -> Unit)?,\n retrieveTile: suspend (imageSource: ImageSource, cacheSource: ImageSource, options: ImageOptions?) -> Boolean\n ): Job {\n val cacheTileFactory = cacheTileFactory ?: error(\"Cache not configured\")\n require(sector.intersect(levelSet.sector)) { \"Sector does not intersect tiled surface image sector\" }\n return scope.launch(Dispatchers.Default) {\n // Prepare a tile list for download, based on specified sector and resolution\n val processingList = assembleTilesList(sector, resolution)\n var downloaded = 0\n var skipped = 0\n // Try to download each tile in a list\n for (tile in processingList) {\n var attempt = 0\n // Retry download attempts till success or 404 not fond or job canceled\n while(true) {\n // Check if a job canceled\n ensureActive()\n // No image source indicates an empty level or an image missing from the tiled data store\n val imageSource = tile.imageSource ?: break\n // If cache tile factory is specified, then create a cache source and store it in tile\n val cacheSource = tile.cacheSource\n ?: (cacheTileFactory.createTile(tile.sector, tile.level, tile.row, tile.column) as ImageTile)\n .imageSource?.also { tile.cacheSource = it } ?: break\n // Attempt to download tile\n try {\n ++attempt\n if (retrieveTile(imageSource, cacheSource, imageOptions)) {\n // Tile successfully downloaded\n onProgress?.invoke(++downloaded, skipped, processingList.size)\n } else {\n // Received data cannot be decoded as image\n onProgress?.invoke(downloaded, ++skipped, processingList.size)\n }\n break // Continue downloading the next tile\n } catch (throwable: Throwable) {\n delay(if (attempt % makeLocalRetries == 0) makeLocalTimeoutLong else makeLocalTimeoutShort)\n }\n }\n }\n }\n }\n\n /**\n * Determine the list of tiles which fit the specified sector and maximum resolution.\n *\n * @param sector the bounding sector.\n * @param resolution the desired resolution range in angular value of latitude per pixel.\n * @return List of tiles which fit specified sector and maximum resolution.\n */\n protected open fun assembleTilesList(sector: Sector, resolution: ClosedRange): List {\n val result = mutableListOf()\n val firstLevelNumber = levelSet.levelForResolution(resolution.endInclusive).levelNumber\n val lastLevelNumber = levelSet.levelForResolution(resolution.start).levelNumber\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n topLevelTiles.forEach { addAndSubdivideTile(it as ImageTile, sector, firstLevelNumber..lastLevelNumber, result) }\n return result\n }\n\n protected open fun addAndSubdivideTile(\n tile: ImageTile, sector: Sector, levelRange: ClosedRange, result: MutableList\n ) {\n if (!tile.intersectsSector(sector)) return // Ignore tiles and its descendants outside the specified sector\n val levelNumber = tile.level.levelNumber\n // Skip tiles with level less than specified offset from the result list\n if (levelNumber >= levelRange.start && levelNumber >= levelSet.levelOffset) result.add(tile)\n // Do not subdivide if specified level or last available level reached\n if (levelNumber < levelRange.endInclusive && !tile.level.isLastLevel) {\n tile.subdivide(tileFactory).forEach { addAndSubdivideTile(it as ImageTile, sector, levelRange, result) }\n }\n }\n\n protected open fun determineActiveProgram(rc: RenderContext) {\n activeProgram = rc.getShaderProgram { SurfaceTextureProgram() }\n }\n\n protected open fun assembleTiles(rc: RenderContext) {\n // TODO\n // The need to create Tiles with a defined image source couples the need to determine a tile's visibility with\n // he need to know its image source. Decoupling the two would mean we only need to know the image source when\n // the texture is actually requested Could the tile-based operations done here be implicit on level/row/column,\n // or use transient pooled tile objects not tied to an image source?\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as ImageTile)\n }\n\n protected open fun createTopLevelTiles() = Tile.assembleTilesForLevel(levelSet.firstLevel, tileFactory, topLevelTiles)\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: ImageTile) {\n // ignore tiles which soes not fit projection limits\n if (rc.globe.projectionLimits?.let { tile.intersectsSector(it) } == false) return\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsSector(rc.terrain.sector) || !tile.intersectsFrustum(rc)) return\n val retrieveCurrentLevel = tile.level.levelNumber >= levelSet.levelOffset\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n if (retrieveCurrentLevel) addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val currentAncestorTile = ancestorTile\n val currentAncestorTexture = ancestorTexture\n getTexture(rc, tile, retrieveTopLevelTiles && retrieveCurrentLevel)?.let { tileTexture ->\n // tile has a texture; use it as a fallback tile for descendants\n if (useAncestorTileTexture) {\n ancestorTile = tile\n ancestorTexture = tileTexture\n }\n }\n // each tile has a cached size of 1, recursively process the tile's children\n val children = tile.subdivideToCache(tileFactory, tileCache, 4)\n for (i in children.indices) addTileOrDescendants(rc, children[i] as ImageTile)\n ancestorTile = currentAncestorTile // restore the last fallback tile, even if it was null\n ancestorTexture = currentAncestorTexture\n }\n\n protected open fun addTile(rc: RenderContext, tile: ImageTile) {\n val texture = getTexture(rc, tile)\n val ancestorTile = ancestorTile\n val ancestorTexture = ancestorTexture\n val opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n if (texture != null) { // use the tile's own texture\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n activeProgram, tile.sector, opacity, texture, texture.coordTransform, rc.globe.offset\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n } else if (ancestorTile != null && ancestorTexture != null) { // use the ancestor tile's texture, transformed to fill the tile sector\n ancestorTexCoordMatrix.copy(ancestorTexture.coordTransform)\n ancestorTexCoordMatrix.multiplyByTileTransform(tile.sector, ancestorTile.sector)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n activeProgram, tile.sector, opacity, ancestorTexture, ancestorTexCoordMatrix, rc.globe.offset\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n }\n\n // TODO If cache source retrieved but it is outdated, than try to retrieve original image source anyway to refresh cache\n protected open fun getTexture(rc: RenderContext, tile: ImageTile, retrieve: Boolean = true): Texture? {\n // No image source indicates an empty level or an image missing from the tiled data store\n val imageSource = tile.imageSource ?: return null\n // If cache tile factory is specified, then create a cache source and store it in tile\n val cacheSource = tile.cacheSource ?: cacheTileFactory?.run {\n (createTile(tile.sector, tile.level, tile.row, tile.column) as ImageTile).imageSource?.also { tile.cacheSource = it }\n }\n // Read cache only in case of tile factory and cache factory are the same\n val isCacheOnly = isCacheOnly || tileFactory == cacheTileFactory\n // If a cache source is not absent, then retrieve it instead of an original image source\n val isCacheAbsent = cacheSource == null || rc.renderResourceCache.absentResourceList.isResourceAbsent(cacheSource.hashCode())\n return rc.getTexture(\n if (isCacheAbsent) imageSource else cacheSource!!, imageOptions, retrieve && (!isCacheOnly || !isCacheAbsent)\n )\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n // Invalidate tiles cache when globe state changes\n if (rc.globeState != lastGlobeState) {\n invalidateTiles()\n lastGlobeState = rc.globeState\n }\n }\n\n protected open fun invalidateTiles() {\n topLevelTiles.clear()\n tileCache.clear()\n }\n\n companion object {\n /**\n * Number of reties of bulk tile retrieval before long timeout\n */\n var makeLocalRetries = 3\n /**\n * Short timeout on bulk tile retrieval failed\n */\n var makeLocalTimeoutShort = 5.seconds\n /**\n * Long timeout on bulk tile retrieval failed\n */\n var makeLocalTimeoutLong = 15.seconds\n }\n}","package earth.worldwind.util\n\nimport kotlinx.datetime.Clock\nimport kotlin.time.Duration\nimport kotlin.time.Duration.Companion.seconds\n\n/**\n * Provides a collection to keep track of resources whose retrieval failed and when retrieval may be tried again.\n */\nopen class AbsentResourceList(\n /**\n * The number of attempts to make before the resource is marked as absent.\n */\n private val maxTrys: Int,\n /**\n * The amount of time to wait between attempts, in milliseconds.\n */\n private val minCheckInterval: Duration\n) {\n /**\n * The amount of time, in milliseconds, beyond which retrieval attempts should again be allowed.\n * When this time has elapsed from the most recent failed attempt the number of try's attempted is\n * reset to 0. This prevents the resource from being permanently blocked.\n */\n var tryAgainInterval = 60.seconds\n\n private val possiblyAbsent = mutableMapOf()\n\n fun clear() { possiblyAbsent.clear() }\n\n /**\n * Indicates whether a specified resource is marked as absent.\n * @param resourceId The resource identifier.\n * @returns true if the resource is marked as absent, otherwise false.\n */\n fun isResourceAbsent(resourceId: T): Boolean {\n val entry = possiblyAbsent[resourceId] ?: return false\n if (entry.permanent) return true\n\n val timeSinceLastMark = Clock.System.now() - entry.timeOfLastMark\n\n if (timeSinceLastMark > tryAgainInterval) {\n possiblyAbsent.remove(resourceId)\n return false\n }\n\n return timeSinceLastMark < minCheckInterval || entry.numTrys > maxTrys\n }\n\n /**\n * Marks a resource attempt as having failed. This increments the number-of-tries counter and sets the time\n * of the last attempt. When this method has been called [AbsentResourceList.maxTrys] times the resource is marked\n * as absent until this absent resource list's [AbsentResourceList.tryAgainInterval] is reached.\n *\n * @param resourceId The resource identifier.\n * @param permanent Marks a resource attempt as having failed permanently. No attempt will ever again be made to retrieve the resource.\n */\n fun markResourceAbsent(resourceId: T, permanent: Boolean = false) {\n (possiblyAbsent[resourceId] ?: AbsentResourceEntry().also { possiblyAbsent[resourceId] = it }).makeTry(permanent)\n }\n\n /**\n * Removes the specified resource from this absent resource list. Call this method when retrieval attempt succeeded.\n * @param resourceId The resource identifier.\n */\n fun unmarkResourceAbsent(resourceId: T) { possiblyAbsent.remove(resourceId) }\n\n private inner class AbsentResourceEntry {\n var timeOfLastMark = Clock.System.now()\n private set\n var numTrys = 0\n private set\n var permanent = false\n private set\n\n fun makeTry(permanent: Boolean = false) {\n numTrys++\n timeOfLastMark = Clock.System.now()\n this.permanent = permanent\n }\n }\n}","package earth.worldwind.util\n\n/**\n * AbstractSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded resources.\n */\nabstract class AbstractSource protected constructor(protected val source: Any) {\n /**\n * Resource post-processing routine.\n */\n var postprocessor: ResourcePostprocessor? = null\n\n /**\n * @return generic image source as unrecognized object.\n */\n fun asUnrecognized() = source\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is AbstractSource) return false\n if (source != other.source) return false\n return true\n }\n\n override fun hashCode() = source.hashCode()\n\n override fun toString() = source.toString()\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.min\n\nabstract class AbstractTile(\n /**\n * The sector spanned by this tile.\n */\n val sector: Sector\n) {\n /**\n * The tile's Cartesian bounding box.\n */\n protected val extent by lazy { BoundingBox() }\n protected open val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n protected var extentGlobeState: Globe.State? = null\n protected var extentGlobeOffset: Globe.Offset? = null\n private val nearestPoint = Vec3()\n\n /**\n * Indicates whether this tile's Cartesian extent intersects a frustum.\n *\n * @param rc the current render context\n *\n * @return true if the frustum intersects this tile's extent, otherwise false\n */\n fun intersectsFrustum(rc: RenderContext) = getExtent(rc).intersectsFrustum(rc.frustum)\n\n /**\n * Indicates whether this tile intersects a specified sector.\n *\n * @param sector the sector of interest\n *\n * @return true if the specified sector intersects this tile's sector, otherwise false\n */\n fun intersectsSector(sector: Sector) = this.sector.intersects(sector)\n\n /**\n * Calculates the distance from this tile to the camera point which ensures front to back sorting.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the L1 distance in degrees\n */\n protected open fun drawSortOrder(rc: RenderContext): Double {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val latAbsDifference = abs(cameraPosition.latitude.inDegrees - sector.centroidLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonAbsDifference = abs(cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees)\n val lonAbsDifferenceCorrected = min(lonAbsDifference, 360.0 - lonAbsDifference)\n\n return latAbsDifference + lonAbsDifferenceCorrected // L1 distance on cylinder\n }\n\n /**\n * Calculates nearest point of this tile to the camera position associated with the specified render context.\n * Altitude value is based on the minimum height for the tile.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the nearest point\n */\n protected open fun nearestPoint(rc: RenderContext): Vec3 {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val nearestLat = cameraPosition.latitude.inDegrees.coerceIn(sector.minLatitude.inDegrees, sector.maxLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonDifference = cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees\n val nearestLon = when {\n lonDifference < -180.0 -> sector.maxLongitude.inDegrees\n lonDifference > 180.0 -> sector.minLongitude.inDegrees\n else -> cameraPosition.longitude.inDegrees.coerceIn(sector.minLongitude.inDegrees, sector.maxLongitude.inDegrees)\n }\n val minHeight = heightLimits[0] * rc.verticalExaggeration\n return rc.globe.geographicToCartesian(nearestLat.degrees, nearestLon.degrees, minHeight, nearestPoint)\n }\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n if (globe.is2D) heightLimits.fill(0f) else calcHeightLimits(globe)\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightLimitsTimestamp || ve != extentExaggeration\n || state != extentGlobeState || offset != extentGlobeOffset) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n extentGlobeState = state\n extentGlobeOffset = offset\n return extent\n }\n\n protected open fun calcHeightLimits(globe: Globe) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n}","package earth.worldwind.util\n\nimport kotlin.math.max\n\n@Suppress(\"UNCHECKED_CAST\")\nopen class BasicPool: Pool {\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n protected var size = 0\n protected var entries = arrayOfNulls(size)\n\n override fun acquire(): T? {\n if (size > 0) {\n val last = --size\n val instance = entries[last]\n entries[last] = null\n return instance as T?\n }\n return null\n }\n\n override fun release(instance: T?) {\n // TODO reduce the pool size when excess entries may not be needed\n // TODO use a keep alive time to indicate how long to keep stale instances\n if (instance != null) {\n val capacity = entries.size\n if (capacity == size) {\n // increase the pool size by the larger of 50% or the minimum increment\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries, 0, 0, capacity)\n entries = newEntries\n }\n entries[size++] = instance\n }\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport kotlin.math.ceil\nimport kotlin.math.roundToInt\n\n/**\n * Represents a level of a specific resolution in a [LevelSet].\n */\nopen class Level internal constructor(\n /**\n * The LevelSet that this level is a member of.\n */\n val parent: LevelSet,\n /**\n * The level's ordinal in its parent level set.\n */\n val levelNumber: Int,\n /**\n * The geographic width and height of tiles within this level.\n */\n val tileDelta: Location\n) {\n /**\n * The width in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the longitudinal direction of this level set.\n */\n val levelWidth = (parent.tileWidth * parent.sector.deltaLongitude.inDegrees / tileDelta.longitude.inDegrees).roundToInt()\n /**\n * The height in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the latitudinal direction of this level set.\n */\n val levelHeight = (parent.tileHeight * parent.sector.deltaLatitude.inDegrees / tileDelta.latitude.inDegrees).roundToInt()\n /**\n * The parent LevelSet's tileWidth.\n */\n val tileWidth = parent.tileWidth\n /**\n * The parent LevelSet's tileHeight.\n */\n val tileHeight = parent.tileHeight\n /**\n * The size of pixels or elevation cells within this level, in radians per pixel or per cell.\n */\n val texelSize = tileDelta.longitude.inRadians / parent.tileWidth\n /**\n * Indicates whether this level is the lowest resolution level (level 0) within the parent level set.\n */\n val isFirstLevel get() = levelNumber == 0\n /**\n * Indicates whether this level is the highest resolution level within the parent level set.\n */\n val isLastLevel get() = levelNumber == parent.numLevels - 1\n /**\n * Returns the level whose ordinal occurs immediately before this level's ordinal in the parent level set, or null\n * if this is the fist level.\n */\n val previousLevel get() = parent.level(levelNumber - 1)\n /**\n * Returns the level whose ordinal occurs immediately after this level's ordinal in the parent level set, or null if\n * this is the last level.\n */\n val nextLevel get() = parent.level(levelNumber + 1)\n\n /**\n * Calculates amount of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector): Int {\n val tilesPerLat = ceil(sector.deltaLatitude.inDegrees / tileDelta.latitude.inDegrees).toInt()\n val tilesPerLon = ceil(sector.deltaLongitude.inDegrees / tileDelta.longitude.inDegrees).toInt()\n return tilesPerLat * tilesPerLon\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.ln\n\n/**\n * Configuration values for a multi-resolution, hierarchical collection of tiles organized into levels of increasing\n * resolution.\n */\nopen class LevelSetConfig {\n /**\n * The sector spanned by the level set.\n */\n val sector = Sector().setFullSphere()\n /**\n * Tile origin for the level set\n */\n val tileOrigin = Sector().setFullSphere()\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of the level set.\n */\n var firstLevelDelta = Location(POS90, POS90)\n /**\n * The number of levels in the level set.\n */\n var numLevels = 1\n /**\n * Determines how many levels to skip from retrieving texture during tile pyramid subdivision.\n */\n var levelOffset = 0\n /**\n * The width in pixels of images associated with tiles in the level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with the level set.\n */\n var tileWidth = 256\n /**\n * The height in pixels of images associated with tiles in the level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with the level set.\n */\n var tileHeight = 256\n\n /**\n * Returns the number of levels necessary to achieve the specified resolution. The result is correct for this\n * configuration's current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = ceil(level).toInt() // ceiling captures the resolution\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n\n /**\n * Returns the number of levels closest to the specified resolution, but does not exceed it. May be used to\n * configure level sets where a not to exceed resolution is mandated. The result is correct for this configuration's\n * current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired not to exceed resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForMinResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForMinResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = floor(level).toInt() // floor prevents exceeding the min scale\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class LruMemoryCache @JvmOverloads constructor(\n val capacity: Long, protected val lowWater: Long = (capacity * 0.75).toLong()\n) {\n var usedCapacity = 0L\n protected set\n val entryCount get() = entries.size\n // sorts entries from least recently used to most recently used\n protected open val lruComparator = Comparator> { lhs, rhs -> lhs.lastUsed.compareTo(rhs.lastUsed) }\n protected val entries = mutableMapOf>()\n protected open var age = 0L\n get() = ++field // Auto increment cache age on each access to its entries\n\n protected open class Entry(val key: K, val value: V, val size: Int) { var lastUsed = 0L }\n\n init {\n require(capacity >= 1) {\n logMessage(ERROR, \"LruMemoryCache\", \"constructor\", \"invalidCapacity\")\n }\n require(lowWater in 0 until capacity) {\n logMessage(\n ERROR, \"LruMemoryCache\", \"constructor\",\n \"The specified low-water value is greater than or equal to the capacity, or less than 1\"\n )\n }\n }\n\n open operator fun get(key: K) = entries[key]?.run {\n lastUsed = age\n value\n }\n\n open fun put(key: K, value: V, size: Int): V? {\n if (usedCapacity + size > capacity) makeSpace(size)\n val newEntry = Entry(key, value, size)\n newEntry.lastUsed = age\n usedCapacity += newEntry.size\n val oldEntry = entries.put(key, newEntry)\n if (oldEntry != null) {\n usedCapacity -= oldEntry.size\n if (newEntry.value !== oldEntry.value) {\n entryRemoved(oldEntry.key, oldEntry.value, newEntry.value, false)\n return oldEntry.value\n }\n }\n return null\n }\n\n open fun remove(key: K) = entries.remove(key)?.run {\n usedCapacity -= size\n entryRemoved(key, value, null, false)\n value\n }\n\n open fun trimToAge(maxAge: Long): Int {\n var trimmedCapacity = 0\n\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the entry's age is within the specified maximum age.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (entry.lastUsed < maxAge) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n trimmedCapacity += entry.size\n entryRemoved(entry.key, entry.value, null, false)\n } else break\n }\n return trimmedCapacity\n }\n\n open fun containsKey(key: K) = entries.containsKey(key)\n\n open fun clear() {\n // NOTE Entities cleared without entryRemoved call\n // for (entry in entries.values) entryRemoved(entry.key, entry.value, null, false)\n entries.clear()\n usedCapacity = 0\n }\n\n protected open fun makeSpace(spaceRequired: Int) {\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the cache capacity reaches the low water and the cache has\n // enough free capacity for the required space.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (usedCapacity > lowWater || capacity - usedCapacity < spaceRequired) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n entryRemoved(entry.key, entry.value, null, true)\n } else break\n }\n }\n\n /*\n * Sort the entries from least recently used to most recently used.\n */\n protected open fun assembleSortedEntries() = entries.values.sortedWith(lruComparator)\n\n protected open fun entryRemoved(key: K, oldValue: V, newValue: V?, evicted: Boolean) {}\n}","package earth.worldwind.util\n\nval messageTable = mapOf(\n \"errorReadingProgramSource\" to \"Error reading program sources\",\n \"exceptionParsingText\" to \"Exception parsing text\",\n \"invalidBitmap\" to \"The bitmap is recycled\",\n \"invalidCapacity\" to \"The capacity is less than 1\",\n \"invalidCount\" to \"The count is invalid\",\n \"invalidClipDistance\" to \"The clip distance is invalid\",\n \"invalidFieldOfView\" to \"The field of view is invalid\",\n \"invalidHeight\" to \"The height is invalid\",\n \"invalidIndex\" to \"The index is invalid\",\n \"invalidNumIntervals\" to \"The number of intervals is invalid\",\n \"invalidNumLevels\" to \"The number of levels is invalid\",\n \"invalidRadius\" to \"The radius is invalid\",\n \"invalidRange\" to \"The range is invalid\",\n \"invalidResolution\" to \"The resolution is invalid\",\n \"invalidStride\" to \"The stride is invalid\",\n \"invalidTileDelta\" to \"The tile delta is invalid\",\n \"invalidWidth\" to \"The width is invalid\",\n \"invalidWidthOrHeight\" to \"The width or the height is invalid\",\n \"missingArray\" to \"The array insufficient length\",\n \"missingLayerNames\" to \"The layer names are empty\",\n \"singularMatrix\" to \"The matrix cannot be inverted\"\n)","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Location\nimport kotlinx.datetime.Instant\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.toLocalDateTime\nimport kotlin.math.*\n\n/**\n * Provides utilities for determining the Sun geographic and celestial location.\n */\nobject SunPosition {\n class CelestialLocation(val declination: Angle, val rightAscension: Angle)\n\n /**\n * Computes the geographic location of the sun for a given date\n * @param instant Input instant\n * @return the geographic location\n */\n fun getAsGeographicLocation(instant: Instant) = celestialToGeographic(getAsCelestialLocation(instant), instant)\n\n /**\n * Computes the celestial location of the sun for a given julianDate\n * @param instant Input instant\n * @return the celestial location\n */\n fun getAsCelestialLocation(instant: Instant): CelestialLocation {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n val meanLongitude = Angle.normalizeAngle360(280.460 + 0.9856474 * numDays)\n val meanAnomaly = Angle.toRadians(Angle.normalizeAngle360(357.528 + 0.9856003 * numDays))\n val eclipticLongitude = meanLongitude + 1.915 * sin(meanAnomaly) + 0.02 * sin(2 * meanAnomaly)\n val eclipticLongitudeRad = Angle.toRadians(eclipticLongitude)\n val obliquityOfTheEcliptic = Angle.toRadians(23.439 - 0.0000004 * numDays)\n val declination = asin(sin(obliquityOfTheEcliptic) * sin(eclipticLongitudeRad)).radians\n var rightAscension = atan(cos(obliquityOfTheEcliptic) * tan(eclipticLongitudeRad)).radians\n if (eclipticLongitude >= 90 && eclipticLongitude < 270) rightAscension += Angle.POS180\n return CelestialLocation(declination, rightAscension.normalize360())\n }\n\n /**\n * Converts from celestial coordinates (declination and right ascension) to geographic coordinates\n * (latitude, longitude) for a given julian date\n * @param celestialLocation Celestial location\n * @param instant Input instant\n * @return the geographic location\n */\n fun celestialToGeographic(celestialLocation: CelestialLocation, instant: Instant): Location {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n\n //Greenwich Mean Sidereal Time\n val GMST = Angle.normalizeAngle360(280.46061837 + 360.98564736629 * numDays)\n\n //Greenwich Hour Angle\n val GHA = Angle.normalizeAngle360(GMST - celestialLocation.rightAscension.inDegrees)\n\n val longitude = (-GHA).degrees.normalizeLongitude()\n\n return Location(celestialLocation.declination, longitude)\n }\n\n /**\n * Computes the julian date from a javascript date object\n * @param instant Input instant\n * @return the julian date\n */\n fun computeJulianDate(instant: Instant): Double {\n val date = instant.toLocalDateTime(TimeZone.UTC)\n var year = date.year\n var month = date.monthNumber + 1\n val day = date.dayOfMonth\n val hour = date.hour\n val minute = date.minute\n val second = date.second\n val dayFraction = (hour + minute / 60.0 + second / 3600.0) / 24.0\n if (month <= 2) {\n year -= 1\n month += 12\n }\n val a = floor(year / 100.0)\n val b = 2 - a + floor(a / 4.0)\n val JD0h = floor(365.25 * (year + 4716)) + floor(30.6001 * (month + 1)) + day + b - 1524.5\n return JD0h + dayFraction\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.ceil\nimport kotlin.math.cos\nimport kotlin.math.floor\n\n/**\n * Geographically rectangular tile within a [LevelSet], typically representing terrain or imagery. Provides a base\n * class for tiles used by tiled image layers and elevation models. Applications typically do not interact with this\n * class.\n */\nopen class Tile protected constructor(\n /**\n * The sector spanned by this tile.\n */\n sector: Sector,\n /**\n * The level at which this tile lies within a [LevelSet].\n */\n val level: Level,\n /**\n * The tile's row within its level.\n */\n val row: Int,\n /**\n * The tile's column within its level.\n */\n val column: Int\n) : AbstractTile(sector) {\n /**\n * A key that uniquely identifies this tile within a level set. Tile keys are not unique to a specific level set.\n */\n val tileKey = \"${level.levelNumber}.$row.$column\"\n private val scratchVector = Vec3()\n\n /**\n * Indicates whether this tile should be subdivided based on the current navigation state and a specified detail\n * factor.\n *\n * @param rc the current render context\n * @param detailFactor the detail factor to consider\n *\n * @return true if the tile should be subdivided, otherwise false\n */\n open fun mustSubdivide(rc: RenderContext, detailFactor: Double): Boolean {\n var texelSize = level.texelSize * rc.globe.equatorialRadius // Compute texel size in meters\n\n val pixelSize = if (rc.globe.is2D) rc.pixelSize else {\n // Consider that texels are laid out continuously on the arc of constant latitude connecting the tile's\n // east and west edges and passing through its centroid.\n texelSize *= cos(sector.centroidLatitude.inRadians)\n\n // Get distance from nearest tile point to camera\n val nearestPoint = nearestPoint(rc)\n val distanceToCamera = nearestPoint.distanceTo(rc.cameraPoint)\n\n // Accelerate the degradation of tile details depending on the viewing angle to tile normal\n if (isAccelerateDegradation && level.tileDelta.latitude.inDegrees <= 5.625) {\n val viewingVector = nearestPoint.subtract(rc.cameraPoint)\n val normalVector =\n rc.globe.geographicToCartesianNormal(sector.centroidLatitude, sector.centroidLongitude, scratchVector)\n val dot = viewingVector.dot(normalVector)\n texelSize *= abs(dot / (viewingVector.magnitude * normalVector.magnitude))\n }\n\n // Use individual pixel size based on tile distance to camera\n rc.pixelSizeAtDistance(distanceToCamera)\n }\n\n // Adjust the subdivision factory when the display density is low.\n return texelSize > pixelSize * detailFactor * rc.densityFactor\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its [LevelSet].\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n\n val latMin = sector.minLatitude\n val lonMin = sector.minLongitude\n val latMid = sector.centroidLatitude\n val lonMid = sector.centroidLongitude\n val latMax = sector.maxLatitude\n val lonMax = sector.maxLongitude\n\n var childRow = 2 * row\n var childCol = 2 * column\n var childSector = Sector(latMin, latMid, lonMin, lonMid)\n val child0 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southwest\n\n childRow = 2 * row\n childCol = 2 * column + 1\n childSector = Sector(latMin, latMid, lonMid, lonMax)\n val child1 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southeast\n\n childRow = 2 * row + 1\n childCol = 2 * column\n childSector = Sector(latMid, latMax, lonMin, lonMid)\n val child2 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northwest\n\n childRow = 2 * row + 1\n childCol = 2 * column + 1\n childSector = Sector(latMid, latMax, lonMid, lonMax)\n val child3 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northeast\n\n return arrayOf(child0, child1, child2, child3)\n }\n\n /**\n * Returns the four children formed by subdividing this tile, drawing those children from a specified cache. The\n * cache is checked for a child collection prior to subdividing. If one exists in the cache it is returned rather\n * than creating a new collection of children. If a new collection is created in the same manner as [subdivide] and added to the cache.\n *\n * @param tileFactory the tile factory to use to create the children\n * @param cache a memory cache that may contain pre-existing child tiles.\n * @param cacheSize the cached size of the four child tiles\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivideToCache(\n tileFactory: TileFactory, cache: LruMemoryCache>, cacheSize: Int\n ) = cache[tileKey] ?: subdivide(tileFactory).also { cache.put(tileKey, it, cacheSize) }\n\n companion object {\n /**\n * Accelerate the degradation of tile details depending on the viewing angle to tile normal.\n * This option dramatically increases performance, but degrades scene background level of details.\n */\n var isAccelerateDegradation = true\n\n /**\n * Computes a row number for a tile within a level given the tile's latitude.\n *\n * @param tileDelta the level's tile delta\n * @param latitude the tile's minimum latitude\n * @param origin the origin of the grid\n *\n * @return the computed row number\n */\n @JvmStatic\n fun computeRow(tileDelta: Angle, latitude: Angle, origin: Angle): Int {\n var row = floor((latitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees).toInt()\n // if latitude is at the end of the grid, subtract 1 from the computed row to return the last row\n if (latitude.inDegrees - origin.inDegrees == 180.0) row -= 1\n return row\n }\n\n /**\n * Computes a column number for a tile within a level given the tile's longitude.\n *\n * @param tileDelta the level's tile delta\n * @param longitude the tile's minimum longitude\n * @param origin the origin of the grid\n *\n * @return The computed column number\n */\n @JvmStatic\n fun computeColumn(tileDelta: Angle, longitude: Angle, origin: Angle): Int {\n var col = floor((longitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees).toInt()\n // if longitude is at the end of the grid, subtract 1 from the computed column to return the last column\n if (longitude.inDegrees - origin.inDegrees == 360.0) col -= 1\n return col\n }\n\n /**\n * Computes the last row number for a tile within a level given the tile's maximum latitude.\n *\n * @param tileDelta the level's tile delta\n * @param maxLatitude the tile's maximum latitude\n * @param origin the origin of the grid\n *\n * @return the computed row number\n */\n @JvmStatic\n fun computeLastRow(tileDelta: Angle, maxLatitude: Angle, origin: Angle): Int {\n var row = ceil((maxLatitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max latitude is in the first row, set the max row to 0\n if (maxLatitude.inDegrees - origin.inDegrees < tileDelta.inDegrees) row = 0\n return row\n }\n\n /**\n * Computes the last column number for a tile within a level given the tile's maximum longitude.\n *\n * @param tileDelta the level's tile delta\n * @param maxLongitude the tile's maximum longitude\n * @param origin the origin of the grid\n *\n * @return The computed column number\n */\n @JvmStatic\n fun computeLastColumn(tileDelta: Angle, maxLongitude: Angle, origin: Angle): Int {\n var col = ceil((maxLongitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max longitude is in the first column, set the max column to 0\n if (maxLongitude.inDegrees - origin.inDegrees < tileDelta.inDegrees) col = 0\n return col\n }\n\n /**\n * Creates all tiles for a specified level within a [LevelSet].\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result an pre-allocated Collection in which to store the results\n *\n * @return the result argument populated with the tiles for the specified level\n */\n @JvmStatic\n fun assembleTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList): List {\n val sector = level.parent.sector\n val tileOrigin = level.parent.tileOrigin\n val tileDelta = level.tileDelta\n val firstRow = computeRow(tileDelta.latitude, sector.minLatitude, tileOrigin.minLatitude)\n val lastRow = computeLastRow(tileDelta.latitude, sector.maxLatitude, tileOrigin.minLatitude)\n val firstCol = computeColumn(tileDelta.longitude, sector.minLongitude, tileOrigin.minLongitude)\n val lastCol = computeLastColumn(tileDelta.longitude, sector.maxLongitude, tileOrigin.minLongitude)\n val firstRowLat = tileOrigin.minLatitude.plusDegrees(firstRow * tileDelta.latitude.inDegrees)\n val firstColLon = tileOrigin.minLongitude.plusDegrees(firstCol * tileDelta.longitude.inDegrees)\n var minLat = firstRowLat\n for (row in firstRow..lastRow) {\n val maxLat = minLat + tileDelta.latitude\n var minLon = firstColLon\n for (col in firstCol..lastCol) {\n val maxLon = minLon + tileDelta.longitude\n val tileSector = Sector(minLat, maxLat, minLon, maxLon)\n result.add(tileFactory.createTile(tileSector, level, row, col))\n minLon = maxLon\n }\n minLat = maxLat\n }\n return result\n }\n }\n}","package earth.worldwind.util.format\n\nimport kotlin.math.*\n\nclass ExponentFormatter(val value: Double) {\n var mantissa: Double\n private set\n var exponent: Int = 0\n private set(value) {\n field = value\n strExponent = \"e$exponent\"\n }\n\n private val mstr: String\n private var strExponent: String\n\n init {\n val x = abs(value)\n exponent = log10(x).toInt()\n if (exponent < 0) exponent--\n mantissa = x / 10.0.pow(exponent)\n if (value < 0) mantissa = -mantissa\n mstr = mantissa.toString()\n strExponent = \"e$exponent\"\n }\n\n fun scientific(width: Int, fractionWidth: Int = -1): String {\n val minLength = if (mantissa < 0) 2 else 1\n\n // Get the desired part of mantissa with proper bounding and rounding\n // it works only for \"normalized\" mantissa that is always has d[.ddddd] form, e.g. integer\n // part is always 1 digit long\n //\n // ERROR: this rounding does not work with trailint (***9)8 - like variants\n //\n fun mpart(length: Int): String {\n var l = length\n if (l > mstr.length) l = mstr.length\n val result = StringBuilder(mstr.slice(0 until l))\n // exact value, no rounding:\n if (result.length == mstr.length) return result.toString()\n\n // next significant digit\n var nextDigit = mstr[result.length]\n if (nextDigit == '.') {\n if (result.length + 1 >= mstr.length) return result.toString()\n nextDigit = mstr[result.length + 1]\n }\n if (nextDigit in \"56789\") {\n val (m, ovf) = roundUp(result)\n if( !ovf ) return m\n // overflow: exponent should grow\n exponent++\n // and the point position should be fixed\n val pointPos = m.indexOf('.')\n val mb = StringBuilder(m)\n if( pointPos == -1 )\n return m // it was the last letter and was therefore removed by roundUp\n return mb.deleteAt(pointPos).insert(pointPos - 1, '.').toString()\n }\n return result.toString()\n }\n\n if (width == 0) return mstr + strExponent\n\n if (fractionWidth < 0 && width > 0) {\n var l = width - strExponent.length\n if (l < minLength) l = minLength\n return mpart(l) + strExponent\n }\n\n if (fractionWidth < 0 && width < 0) return mstr + strExponent\n\n // fractionWidth >= 0\n if (fractionWidth == 0) return \"${mstr[0]}$strExponent\"\n\n // fractionWidth > 0, +1 for decimal dot\n return mpart(minLength + 1 + fractionWidth) + strExponent\n }\n\n\n override fun toString() = \"${mantissa}e${exponent}\"\n}\n\ninternal fun scientificFormat(value: Double, width: Int, fractionPartLength: Int = -1) =\n ExponentFormatter(value).scientific(width, fractionPartLength)\n\ninternal fun fractionalFormat(_value: Double, width: Int, fractionPartLength: Int = -1): String {\n var value = _value\n val result = StringBuilder()\n\n if (abs(value) >= 1) {\n val i = if (fractionPartLength == 0) value.roundToLong() else value.toLong()\n result.append(i)\n value -= i\n } else result.append((if (value < 0) \"-0\" else \"0\"))\n\n var fl = if (fractionPartLength < 0) {\n if (width < 0) 6\n else width - result.length - 1\n } else fractionPartLength\n\n if (fl != 0) result.append('.')\n\n var rest = value * 10\n while (fl-- > 0) {\n val d = rest.toInt()\n result.append(abs(d))\n rest = (rest - d) * 10\n }\n // now we might need to round it up:\n return if( rest.toInt().absoluteValue < 5 ) result.toString() else roundUp(result, keepWidth = false).first\n}\n\n/**\n * Round up the mantissa part (call it with default arguments to start).\n * @return rounded mantissa and overflow flag (set when 9,99 -> 10,00 and like)\n */\nprivate fun roundUp(\n result: StringBuilder,\n length: Int = result.length,\n pos: Int = result.length - 1,\n keepWidth: Boolean = true\n): Pair {\n if (pos < 0) {\n // if we get there, it means the number of digits should grow, like \"9.99\" -> \"10.00\"\n // but we need to keep the length so \"10.0\":\n result.insert(0, '1')\n if (keepWidth) result.deleteAt(length)\n return result.toString() to true\n }\n // not the first digit: perform rounding:\n val d = result[pos]\n // it could be a decimal point we ignore and continue with rounding\n if (d == '.') return roundUp(result, length, pos - 1, keepWidth)\n\n // Small number add one \"0.19\" -> \"0.2\"\n // Simple case: alter only the current digit\n if (d != '9') {\n result[pos] = d + 1\n return result.toString() to false\n }\n // Complex case: 9->0 and propagate changes up.\n result[pos] = '0'\n return roundUp(result, length, pos - 1, keepWidth)\n}","package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal enum class Positioning { LEFT, RIGHT, CENTER; }\n\ninternal class Specification(val parent: StringFormat, var index: Int) {\n enum class Stage { FLAGS, LENGTH, FRACTION; }\n\n private var stage = Stage.FLAGS\n private var size: Int = -1\n private var fractionalPartSize: Int = -1\n private var positioninig = Positioning.RIGHT\n private var fillChar = ' '\n private var currentPart = StringBuilder()\n // private var pos = 0\n private var explicitPlus = false\n private var done = false\n private var indexIsOverride = false\n private val isScanningFlags: Boolean\n get() = stage == Stage.FLAGS\n\n internal fun scan() {\n while (!done) {\n when (val ch = parent.nextChar()) {\n '-', '^' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n positioninig = if (ch == '-') Positioning.LEFT else Positioning.CENTER\n }\n '+' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n explicitPlus = true\n }\n in \"*#_=\" -> {\n if (!isScanningFlags) invalidFormat(\"bad fill char $ch position\")\n fillChar = ch\n }\n '0' -> {\n if (isScanningFlags) fillChar = '0'\n else currentPart.append(ch)\n }\n in \"123456789\" -> {\n if (stage == Stage.FLAGS) stage = Stage.LENGTH\n currentPart.append(ch)\n }\n '$', '!' -> {\n if (stage != Stage.LENGTH) invalidFormat(\"unexpected $ch position\")\n if (indexIsOverride) invalidFormat(\"argument number '$ch' should occur only once\")\n indexIsOverride = true\n index = currentPart.toString().toInt() - 1\n parent.pushbackArgumentIndex()\n currentPart.clear()\n }\n 's' -> createStringField()\n 'd', 'i' -> createIntegerField()\n 'o' -> createOctalField()\n 'x' -> createHexField(false)\n 'X' -> createHexField(true)\n 'f', 'F' -> createFloat()\n 'E' -> createScientific(true)\n 'e' -> createScientific(false)\n 'g' -> createAutoFloat(true)\n 'G' -> createAutoFloat(false)\n 'c', 'C' -> createCharacter()\n 't' -> createTimeField(false)\n 'T' -> createTimeField(true)\n '.' -> {\n stage = when (stage) {\n Stage.FLAGS -> Stage.FRACTION\n Stage.LENGTH -> {\n endStage(false)\n Stage.FRACTION\n }\n else -> invalidFormat(\"can't parse specification: unexpected '.'\")\n }\n }\n else -> invalidFormat(\"unexpected character '$ch'\")\n }\n }\n }\n\n private fun invalidFormat(message: String): Nothing { parent.invalidFormat(message) }\n\n private val time get() = parent.getLocalDateTime(index)\n\n private fun createTimeField(upperCase: Boolean) {\n val ch = parent.nextChar()\n endStage()\n val result: String = when (ch) {\n 'H' -> \"%02d\".format(time.hour)\n 'k' -> \"%d\".format(time.hour)\n 'I', 'l' -> {\n var t = time.hour\n if (t > 12) t -= 12\n if (ch == 'I') \"%02d\".format(t)\n else t.toString()\n }\n 'M' -> \"%02d\".format(time.minute)\n 'S' -> \"%02d\".format(time.second)\n 'L' -> \"%03d\".format(time.nanosecond / 1_000_000)\n 'N' -> \"%09d\".format(time.nanosecond)\n 'p' -> {\n if (upperCase) if (time.hour > 12) \"PM\" else \"AM\"\n else if (time.hour > 12) \"pm\" else \"am\"\n }\n 'z' -> {\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString().replace(\":\", \"\")\n }\n 'Z' -> {\n // There us yet no abbreviations like 'CET', so we put there string representation like +01:00\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString()\n }\n 's' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).epochSeconds.toString()\n }\n 'Q' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).toEpochMilliseconds().toString()\n }\n // Date fields\n 'B' -> getMonthName(time.month.number)\n 'b', 'h' -> getAbbreviatedMonthName(time.month.number)\n 'e' -> time.dayOfMonth.toString()\n 'd' -> \"%02s\".format(time.dayOfMonth)\n 'm' -> \"%02s\".format(time.month.number)\n 'A' -> getWeekDayName(time.dayOfWeek)\n 'a' -> getAbbreviatedWeekDayName(time.dayOfWeek)\n 'y' -> time.year.toString().takeLast(2)\n 'Y' -> \"%04d\".format(time.year)\n 'j' -> \"%03d\".format(time.dayOfYear)\n // shortcuts\n 'R' -> \"%1!tH:%1!tM\".format(time)\n 'r' ->\n if (upperCase) \"%1!tI:%1!tM:%1!tS %1!Tp\".format(time)\n else \"%1!tI:%1!tM:%1!tS %1!tp\".format(time)\n 'T' -> \"%tH:%1!tM:%1!tS\".format(time)\n 'D' -> \"%tm/%1!td/%1!ty\".format(time)\n 'F' -> \"%tY-%1!tm-%1!td\".format(time)\n 'c' -> \"%ta %1!tb %1!td %1!tT %1!tZ %1!tY\".format(time)\n 'O' -> {\n val tz = TimeZone.currentSystemDefault()\n val offset = tz.offsetAt(time.toInstant(tz)).toString()\n \"%tFT%1!tT%s\".format(time, offset)\n }\n '#' -> \"%tY%1!tm%1!td%1!tH%1!tM%1!tS\".format(time.toInstant(TimeZone.UTC))\n else -> invalidFormat(\"unknown time field specificator: 't$ch'\")\n }\n insertField(result)\n }\n\n private fun createStringField() {\n endStage()\n insertField(parent.getText(index))\n }\n\n private fun createIntegerField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus && fillChar == '0' && number > 0) insertField(number.toString(), \"+\")\n else insertField(if (explicitPlus) \"+$number\" else \"$number\")\n }\n\n private fun createHexField(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with hex format\")\n val text = number.toString(16)\n insertField(if (upperCase) text.uppercase() else text.lowercase())\n }\n\n private fun createOctalField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with oct format\")\n insertField(number.toString(8))\n }\n\n private fun createCharacter() {\n endStage()\n insertField(parent.getCharacter(index).toString())\n }\n\n private fun endStage(setDone: Boolean = true) {\n if (setDone) done = true\n if (currentPart.isNotEmpty()) {\n when (stage) {\n Stage.LENGTH -> size = currentPart.toString().toInt()\n Stage.FRACTION -> fractionalPartSize = currentPart.toString().toInt()\n Stage.FLAGS -> invalidFormat(\"can't parse format specifier (error 7)\")\n }\n currentPart.clear()\n }\n }\n\n private fun insertField(text: String, prefix: String = \"\") {\n val l = text.length + prefix.length\n if (size < 0 || size < l) parent.specificationDone(prefix + text)\n else {\n var padStart = 0\n var padEnd = 0\n when (positioninig) {\n Positioning.LEFT -> padEnd = size - l\n Positioning.RIGHT -> padStart = size - l\n Positioning.CENTER -> {\n padStart = (size - l) / 2\n padEnd = size - padStart - l\n }\n }\n val result = StringBuilder(prefix)\n while (padStart-- > 0) result.append(fillChar)\n result.append(text)\n while (padEnd-- > 0) result.append(fillChar)\n parent.specificationDone(result.toString())\n }\n }\n\n private fun createFloat() {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = fractionalFormat(number, size, fractionalPartSize)\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createScientific(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = scientificFormat(number, size, fractionalPartSize).let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createAutoFloat(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index)\n val t = number.toString().let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number.toDouble() > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n companion object {\n private val englishMonthNames: List by lazy {\n \"January February March April May June July August September October November December\".split(' ')\n }\n private val englishWeekDayNames: List by lazy {\n \"Monday Tuesday Wednesday Thursday Friday Saturday Sunday\".split(' ')\n }\n\n fun getAbbreviatedMonthName(monthNumber: Int) = getMonthName(monthNumber).take(3)\n\n fun getMonthName(monthNumber: Int) = englishMonthNames[monthNumber - 1]\n\n fun getWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1]\n }\n\n fun getAbbreviatedWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1].take(3)\n }\n }\n}",null,"package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal class StringFormat(val format: String, val args: Array) {\n\n private var pos = 0\n private var specStart = -1\n private val result = StringBuilder()\n private var currentIndex = 0\n\n fun process(): StringFormat {\n while (pos < format.length) {\n val ch = format[pos++]\n if (ch == '%') {\n specStart = when {\n specStart == pos - 1 -> {\n result.append(ch)\n -1\n }\n specStart < 0 -> pos\n else -> invalidFormat(\"unexpected %\")\n }\n } else {\n if (specStart >= 0) {\n pos--\n Specification(this, currentIndex++).scan()\n } else result.append(ch)\n }\n }\n return this\n }\n\n internal fun nextChar(): Char {\n if (pos >= format.length) invalidFormat(\"unexpected end of string inside format specification\")\n return format[pos++]\n }\n\n internal fun invalidFormat(reason: String): Nothing {\n throw IllegalArgumentException(\"bad format: $reason at ofset ${pos - 1} of \\\"$format\\\"\")\n }\n\n override fun toString() = result.toString()\n\n internal fun getNumber(index: Int): Number = notNullArg(index)\n\n internal fun getText(index: Int) = args[index]!!.toString()\n\n internal fun getCharacter(index: Int): Char = notNullArg(index)\n\n internal fun specificationDone(text: String) {\n result.append(text)\n specStart = -1\n }\n\n fun getLocalDateTime(index: Int): LocalDateTime {\n val t = notNullArg(index)\n return when(t) {\n is Instant -> t.toLocalDateTime(TimeZone.currentSystemDefault())\n is LocalDateTime -> t\n is LocalDate -> t.atTime(0,0,0)\n else -> convertToInstant(t).toLocalDateTime(TimeZone.currentSystemDefault())\n }\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun notNullArg(index: Int) = args[index]!! as T\n\n fun pushbackArgumentIndex() { currentIndex-- }\n}\n\nfun String.format(vararg args: Any?): String = StringFormat(this, args).process().toString()\n\nexpect fun convertToInstant(t: Any): Instant","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\nimport earth.worldwind.util.glu.error.Error\nimport earth.worldwind.util.glu.tessellator.GLUtessellatorImpl\n\n/**\n * Provides access to the OpenGL Utility Library (GLU). This library\n * provides standard methods for setting up view volumes, building\n * mipmaps and performing other common operations. The GLU NURBS\n * routines are not currently exposed.\n *

\n * Notes from the Reference Implementation for this class:\n * Thanks to the contributions of many individuals, this class is a\n * pure Java port of SGI's original C sources. All of the projection,\n * mipmap, scaling, and tessellation routines that are exposed are\n * compatible with the GLU 1.3 specification. The GLU NURBS routines\n * are not currently exposed.\n */\nobject GLU {\n fun gluErrorString(errorCode: Int) = Error.gluErrorString(errorCode)\n /**\n * **gluNewTess** creates and returns a new tessellation object. This\n * object must be referred to when calling tesselation methods. A return\n * value of null means that there was not enough memeory to allocate the\n * object.\n *\n * @return A new tessellation object.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluDeleteTess gluDeleteTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluNewTess() = GLUtessellatorImpl.gluNewTess()\n\n /**\n * **gluDeleteTess** destroys the indicated tessellation object (which was\n * created with [gluNewTess][.gluNewTess]).\n *\n * @param tessellator\n * Specifies the tessellation object to destroy.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluDeleteTess(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluDeleteTess()\n }\n\n /**\n * **gluTessProperty** is used to control properites stored in a\n * tessellation object. These properties affect the way that the polygons are\n * interpreted and rendered. The legal value for *which* are as\n * follows:\n *
    \n *
  • **GLU_TESS_WINDING_RULE**\n *

    \n * Determines which parts of the polygon are on the \"interior\".\n * *value* may be set to one of\n *

    **GLU_TESS_WINDING_ODD**,\n *

    **GLU_TESS_WINDING_NONZERO**,\n *

    **GLU_TESS_WINDING_POSITIVE**, or\n *

    **GLU_TESS_WINDING_NEGATIVE**, or\n *

    **GLU_TESS_WINDING_ABS_GEQ_TWO**.\n *

    \n * To understand how the winding rule works, consider that the input\n * contours partition the plane into regions. The winding rule determines\n * which of these regions are inside the polygon.\n *

    \n * For a single contour C, the winding number of a point x is simply the\n * signed number of revolutions we make around x as we travel once around C\n * (where CCW is positive). When there are several contours, the individual\n * winding numbers are summed. This procedure associates a signed integer\n * value with each point x in the plane. Note that the winding number is\n * the same for all points in a single region.\n *

    \n * The winding rule classifies a region as \"inside\" if its winding number\n * belongs to the chosen category (odd, nonzero, positive, negative, or\n * absolute value of at least two). The previous GLU tessellator (prior to\n * GLU 1.2) used the \"odd\" rule. The \"nonzero\" rule is another common way\n * to define the interior. The other three rules are useful for polygon CSG\n * operations.\n
  • *\n *
  • **GLU_TESS_BOUNDARY_ONLY**\n *

    \n * Is a boolean value (\"value\" should be set to GL_TRUE or GL_FALSE). When\n * set to GL_TRUE, a set of closed contours separating the polygon interior\n * and exterior are returned instead of a tessellation. Exterior contours\n * are oriented CCW with respect to the normal; interior contours are\n * oriented CW. The **GLU_TESS_BEGIN** and **GLU_TESS_BEGIN_DATA**\n * callbacks use the type GL_LINE_LOOP for each contour.\n
  • *\n *
  • **GLU_TESS_TOLERANCE**\n *

    \n * Specifies a tolerance for merging features to reduce the size of the\n * output. For example, two vertices that are very close to each other\n * might be replaced by a single vertex. The tolerance is multiplied by the\n * largest coordinate magnitude of any input vertex; this specifies the\n * maximum distance that any feature can move as the result of a single\n * merge operation. If a single feature takes part in several merge\n * operations, the toal distance moved could be larger.\n *

    \n * Feature merging is completely optional; the tolerance is only a hint.\n * The implementation is free to merge in some cases and not in others, or\n * to never merge features at all. The initial tolerance is 0.\n *

    \n * The current implementation merges vertices only if they are exactly\n * coincident, regardless of the current tolerance. A vertex is spliced\n * into an edge only if the implementation is unable to distinguish which\n * side of the edge the vertex lies on. Two edges are merged only when both\n * endpoints are identical.\n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object created with\n * [gluNewTess][.gluNewTess]\n * @param which\n * Specifies the property to be set. Valid values are\n * **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARDY_ONLY**,\n * **GLU_TESS_TOLERANCE**.\n * @param value\n * Specifices the value of the indicated property.\n *\n * @see .gluGetTessProperty gluGetTessProperty\n *\n * @see .gluNewTess gluNewTess\n */\n fun gluTessProperty(tessellator: GLUtessellator, which: Int, value: Double) {\n (tessellator as GLUtessellatorImpl).gluTessProperty(which, value)\n }\n\n /**\n * **gluGetTessProperty** retrieves properties stored in a tessellation\n * object. These properties affect the way that tessellation objects are\n * interpreted and rendered. See the\n * [gluTessProperty][.gluTessProperty] reference\n * page for information about the properties and what they do.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the property whose value is to be fetched. Valid values\n * are **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARY_ONLY**,\n * and **GLU_TESS_TOLERANCES**.\n * @param value\n * Specifices an array into which the value of the named property is\n * written.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessProperty gluTessProperty\n */\n fun gluGetTessProperty(\n tessellator: GLUtessellator, which: Int, value: DoubleArray, value_offset: Int\n ) {\n (tessellator as GLUtessellatorImpl).gluGetTessProperty(which, value, value_offset)\n }\n\n /**\n * **gluTessNormal** describes a normal for a polygon that the program is\n * defining. All input data will be projected onto a plane perpendicular to\n * the one of the three coordinate axes before tessellation and all output\n * triangles will be oriented CCW with repsect to the normal (CW orientation\n * can be obtained by reversing the sign of the supplied normal). For\n * example, if you know that all polygons lie in the x-y plane, call\n * **gluTessNormal**(tess, 0.0, 0.0, 0.0) before rendering any polygons.\n *

\n * If the supplied normal is (0.0, 0.0, 0.0)(the initial value), the normal\n * is determined as follows. The direction of the normal, up to its sign, is\n * found by fitting a plane to the vertices, without regard to how the\n * vertices are connected. It is expected that the input data lies\n * approximately in the plane; otherwise, projection perpendicular to one of\n * the three coordinate axes may substantially change the geometry. The sign\n * of the normal is chosen so that the sum of the signed areas of all input\n * contours is nonnegative (where a CCW contour has positive area).\n *

\n * The supplied normal persists until it is changed by another call to\n * **gluTessNormal**.\n *\n * @param tessellator\n * Specifies the tessellation object (created by\n * [gluNewTess][.gluNewTess]).\n * @param x\n * Specifies the first component of the normal.\n * @param y\n * Specifies the second component of the normal.\n * @param z\n * Specifies the third component of the normal.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessNormal(tessellator: GLUtessellator, x: Double, y: Double, z: Double) {\n (tessellator as GLUtessellatorImpl).gluTessNormal(x, y, z)\n }\n\n /**\n * **gluTessCallback** is used to indicate a callback to be used by a\n * tessellation object. If the specified callback is already defined, then it\n * is replaced. If *aCallback* is null, then the existing callback\n * becomes undefined.\n *

\n * These callbacks are used by the tessellation object to describe how a\n * polygon specified by the user is broken into triangles. Note that there are\n * two versions of each callback: one with user-specified polygon data and one\n * without. If both versions of a particular callback are specified, then the\n * callback with user-specified polygon data will be used. Note that the\n * polygonData parameter used by some of the methods is a copy of the\n * reference that was specified when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The legal callbacks are as follows:\n *
    \n *
  • **GLU_TESS_BEGIN**\n *

    \n * The begin callback is invoked like\n * glBegin to indicate the start of a (triangle) primitive. The method\n * takes a single argument of type int. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_FALSE**, then\n * the argument is set to either **GL_TRIANGLE_FAN**,\n * **GL_TRIANGLE_STRIP**, or **GL_TRIANGLES**. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_TRUE**, then the\n * argument will be set to **GL_LINE_LOOP**. The method prototype for\n * this callback is:\n *
    void begin(int type);
    \n
  • *\n *
  • **GLU_TESS_BEGIN_DATA**\n *

    \n * The same as the **GLU_TESS_BEGIN** callback except\n * that it takes an additional reference argument. This reference is\n * identical to the opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void beginData(int type, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG**\n *

    \n * The edge flag callback is similar to\n * glEdgeFlag. The method takes\n * a single boolean boundaryEdge that indicates which edges lie on the\n * polygon boundary. If the boundaryEdge is **GL_TRUE**, then each vertex\n * that follows begins an edge that lies on the polygon boundary, that is,\n * an edge that separates an interior region from an exterior one. If the\n * boundaryEdge is **GL_FALSE**, then each vertex that follows begins an\n * edge that lies in the polygon interior. The edge flag callback (if\n * defined) is invoked before the first vertex callback.\n *

    \n * Since triangle fans and triangle strips do not support edge flags, the\n * begin callback is not called with **GL_TRIANGLE_FAN** or\n * **GL_TRIANGLE_STRIP** if a non-null edge flag callback is provided.\n * (If the callback is initialized to null, there is no impact on\n * performance). Instead, the fans and strips are converted to independent\n * triangles. The method prototype for this callback is:\n *
    void edgeFlag(boolean boundaryEdge);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG_DATA**\n *

    \n * The same as the **GLU_TESS_EDGE_FLAG** callback except that it takes\n * an additional reference argument. This reference is identical to the\n * opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void edgeFlagData(boolean boundaryEdge, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX**\n *

    \n * The vertex callback is invoked between the begin and end callbacks. It is\n * similar to glVertex3f, and it\n * defines the vertices of the triangles created by the tessellation\n * process. The method takes a reference as its only argument. This\n * reference is identical to the opaque reference provided by the user when\n * the vertex was described (see\n * [gluTessVertex][.gluTessVertex]). The method\n * prototype for this callback is:\n *
    void vertex(Object vertexData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX_DATA**\n *

    \n * The same as the **GLU_TESS_VERTEX** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void vertexData(Object vertexData, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_END**\n *

    \n * The end callback serves the same purpose as\n * glEnd. It indicates the end of a\n * primitive and it takes no arguments. The method prototype for this\n * callback is:\n *
    void end();
    \n
  • *\n *
  • **GLU_TESS_END_DATA**\n *

    \n * The same as the **GLU_TESS_END** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void endData(Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_COMBINE**\n *

    \n * The combine callback is called to create a new vertex when the\n * tessellation detects an intersection, or wishes to merge features. The\n * method takes four arguments: an array of three elements each of type\n * double, an array of four references, an array of four elements each of\n * type float, and a reference to a reference. The prototype is:\n *
    void combine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData);
    \n * The vertex is defined as a linear combination of up to four existing\n * vertices, stored in *data*. The coefficients of the linear\n * combination are given by *weight*; these weights always add up to 1.\n * All vertex pointers are valid even when some of the weights are 0.\n * *coords* gives the location of the new vertex.\n *

    \n * The user must allocate another vertex, interpolate parameters using\n * *data* and *weight*, and return the new vertex pointer\n * in *outData*. This handle is supplied during rendering callbacks.\n * The user is responsible for freeing the memory some time after\n * [gluTessEndPolygon][.gluTessEndPolygon] is\n * called.\n *

    \n * For example, if the polygon lies in an arbitrary plane in 3-space, and a\n * color is associated with each vertex, the **GLU_TESS_COMBINE**\n * callback might look like this:\n *
    \n     * void myCombine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData)\n     * {\n     * MyVertex newVertex = new MyVertex();\n     *\n     * newVertex.x = coords[0];\n     * newVertex.y = coords[1];\n     * newVertex.z = coords[2];\n     * newVertex.r = weight[0]*data[0].r +\n     * weight[1]*data[1].r +\n     * weight[2]*data[2].r +\n     * weight[3]*data[3].r;\n     * newVertex.g = weight[0]*data[0].g +\n     * weight[1]*data[1].g +\n     * weight[2]*data[2].g +\n     * weight[3]*data[3].g;\n     * newVertex.b = weight[0]*data[0].b +\n     * weight[1]*data[1].b +\n     * weight[2]*data[2].b +\n     * weight[3]*data[3].b;\n     * newVertex.a = weight[0]*data[0].a +\n     * weight[1]*data[1].a +\n     * weight[2]*data[2].a +\n     * weight[3]*data[3].a;\n     * outData = newVertex;\n     * }
    \n * If the tessellation detects an intersection, then the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback (see\n * below) must be defined, and it must write a non-null reference into\n * *outData*. Otherwise the **GLU_TESS_NEED_COMBINE_CALLBACK** error\n * occurs, and no output is generated.\n
  • *\n *
  • **GLU_TESS_COMBINE_DATA**\n *

    \n * The same as the **GLU_TESS_COMBINE** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void combineData(double[] coords, Object[] data,\n     * float[] weight, Object[] outData,\n     * Object polygonData);
    \n *\n
  • *\n *
  • **GLU_TESS_ERROR**\n *

    \n * The error callback is called when an error is encountered. The one\n * argument is of type int; it indicates the specific error that occurred\n * and will be set to one of **GLU_TESS_MISSING_BEGIN_POLYGON**,\n * **GLU_TESS_MISSING_END_POLYGON**,\n * **GLU_TESS_MISSING_BEGIN_CONTOUR**,\n * **GLU_TESS_MISSING_END_CONTOUR**, **GLU_TESS_COORD_TOO_LARGE**,\n * **GLU_TESS_NEED_COMBINE_CALLBACK** or **GLU_OUT_OF_MEMORY**.\n * Character strings describing these errors can be retrieved with the\n * [gluErrorString][.gluErrorString] call. The\n * method prototype for this callback is:\n *
    \n     * void error(int errnum);
    \n * The GLU library will recover from the first four errors by inserting the\n * missing call(s). **GLU_TESS_COORD_TOO_LARGE** indicates that some\n * vertex coordinate exceeded the predefined constant\n * **GLU_TESS_MAX_COORD** in absolute value, and that the value has been\n * clamped. (Coordinate values must be small enough so that two can be\n * multiplied together without overflow.)\n * **GLU_TESS_NEED_COMBINE_CALLBACK** indicates that the tessellation\n * detected an intersection between two edges in the input data, and the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback was not\n * provided. No output is generated. **GLU_OUT_OF_MEMORY** indicates that\n * there is not enough memory so no output is generated.\n
  • *\n *
  • **GLU_TESS_ERROR_DATA**\n *

    \n * The same as the GLU_TESS_ERROR callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void errorData(int errnum, Object polygonData);
    \n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the callback being defined. The following values are\n * valid: **GLU_TESS_BEGIN**, **GLU_TESS_BEGIN_DATA**,\n * **GLU_TESS_EDGE_FLAG**, **GLU_TESS_EDGE_FLAG_DATA**,\n * **GLU_TESS_VERTEX**, **GLU_TESS_VERTEX_DATA**,\n * **GLU_TESS_END**, **GLU_TESS_END_DATA**,\n * **GLU_TESS_COMBINE**, **GLU_TESS_COMBINE_DATA**,\n * **GLU_TESS_ERROR**, and **GLU_TESS_ERROR_DATA**.\n * @param aCallback\n * Specifies the callback object to be called.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluErrorString gluErrorString\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n */\n fun gluTessCallback(\n tessellator: GLUtessellator, which: Int, aCallback: GLUtessellatorCallback?\n ) {\n (tessellator as GLUtessellatorImpl).gluTessCallback(which, aCallback)\n }\n\n /**\n * **gluTessVertex** describes a vertex on a polygon that the program\n * defines. Successive **gluTessVertex** calls describe a closed contour.\n * For example, to describe a quadrilateral **gluTessVertex** should be\n * called four times. **gluTessVertex** can only be called between\n * [gluTessBeginContour][.gluTessBeginContour] and\n * [gluTessEndContour][.gluTessBeginContour].\n *

\n * **data** normally references to a structure containing the vertex\n * location, as well as other per-vertex attributes such as color and normal.\n * This reference is passed back to the user through the\n * **GLU_TESS_VERTEX** or **GLU_TESS_VERTEX_DATA** callback after\n * tessellation (see the [ gluTessCallback][.gluTessCallback] reference page).\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param coords\n * Specifies the coordinates of the vertex.\n * @param data\n * Specifies an opaque reference passed back to the program with the\n * vertex callback (as specified by\n * [gluTessCallback][.gluTessCallback]).\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessVertex(\n tessellator: GLUtessellator, coords: DoubleArray, coords_offset: Int, data: Any\n ) {\n (tessellator as GLUtessellatorImpl).gluTessVertex(coords, coords_offset, data)\n }\n\n /**\n * **gluTessBeginPolygon** and\n * [gluTessEndPolygon][.gluTessEndPolygon] delimit\n * the definition of a convex, concave or self-intersecting polygon. Within\n * each **gluTessBeginPolygon**\n * [gluTessEndPolygon][.gluTessEndPolygon] pair,\n * there must be one or more calls to\n * [gluTessBeginContour][.gluTessBeginContour]/\n * [gluTessEndContour][.gluTessEndContour]. Within\n * each contour, there are zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex], [ gluTessBeginContour][.gluTessBeginContour], and [ gluTessEndContour][.gluTessEndContour] reference pages for more details.\n *

\n * **data ** is a reference to a user-defined data structure. If the\n * appropriate callback(s) are specified (see\n * [gluTessCallback][.gluTessCallback]), then this\n * reference is returned to the callback method(s). Thus, it is a convenient\n * way to store per-polygon information.\n *

\n * Once [gluTessEndPolygon][.gluTessEndPolygon] is\n * called, the polygon is tessellated, and the resulting triangles are\n * described through callbacks. See\n * [gluTessCallback][.gluTessCallback] for\n * descriptions of the callback methods.\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n * @param data\n * Specifies a reference to user polygon data .\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginContour gluTessBeginContour\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginPolygon(tessellator: GLUtessellator, data: Any) {\n (tessellator as GLUtessellatorImpl).gluTessBeginPolygon(data)\n }\n\n /**\n * **gluTessBeginContour** and\n * [gluTessEndContour][.gluTessEndContour] delimit\n * the definition of a polygon contour. Within each\n * **gluTessBeginContour**\n * [gluTessEndContour][.gluTessEndContour] pair,\n * there can be zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex] reference page for more details. **gluTessBeginContour**\n * can only be called between\n * [gluTessBeginPolygon][.gluTessBeginPolygon] and\n * [gluTessEndPolygon][.gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessBeginContour()\n }\n\n /**\n * **gluTessEndContour** and\n * [gluTessBeginContour][gluTessBeginContour]\n * delimit the definition of a polygon contour. Within each\n * [gluTessBeginContour][gluTessBeginContour]/\n * **gluTessEndContour** pair, there can be zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex] reference page for more details.\n * [gluTessBeginContour][gluTessBeginContour] can\n * only be called between [ gluTessBeginPolygon][gluTessBeginPolygon] and\n * [gluTessEndPolygon][gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessEndContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndContour()\n }\n\n /**\n * **gluTessEndPolygon** and\n * [gluTessBeginPolygon][gluTessBeginPolygon]\n * delimit the definition of a convex, concave or self-intersecting polygon.\n * Within each [ gluTessBeginPolygon][gluTessBeginPolygon]/ **gluTessEndPolygon** pair, there must be one or\n * more calls to [ gluTessBeginContour][gluTessBeginContour]/[ gluTessEndContour][gluTessEndContour]. Within each contour, there are zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex], [ gluTessBeginContour][gluTessBeginContour] and [ gluTessEndContour][gluTessEndContour] reference pages for more details.\n *

\n * Once **gluTessEndPolygon** is called, the polygon is tessellated, and\n * the resulting triangles are described through callbacks. See\n * [gluTessCallback][gluTessCallback] for\n * descriptions of the callback functions.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n */\n fun gluTessEndPolygon(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndPolygon()\n }\n\n //----------------------------------------------------------------------\n // GLU constants\n // Boolean\n const val GLU_FALSE = 0\n const val GLU_TRUE = 1\n\n // String Name\n const val GLU_VERSION = 100800\n const val GLU_EXTENSIONS = 100801\n\n // Extensions\n const val versionString = \"1.3\"\n const val extensionString = \"GLU_EXT_object_space_tess \"\n\n // ErrorCode\n const val GLU_INVALID_ENUM = 100900\n const val GLU_INVALID_VALUE = 100901\n const val GLU_OUT_OF_MEMORY = 100902\n const val GLU_INVALID_OPERATION = 100904\n\n // TessCallback\n const val GLU_TESS_BEGIN = 100100\n const val GLU_TESS_VERTEX = 100101\n const val GLU_TESS_END = 100102\n const val GLU_TESS_ERROR = 100103\n const val GLU_TESS_EDGE_FLAG = 100104\n const val GLU_TESS_COMBINE = 100105\n const val GLU_TESS_BEGIN_DATA = 100106\n const val GLU_TESS_VERTEX_DATA = 100107\n const val GLU_TESS_END_DATA = 100108\n const val GLU_TESS_ERROR_DATA = 100109\n const val GLU_TESS_EDGE_FLAG_DATA = 100110\n const val GLU_TESS_COMBINE_DATA = 100111\n\n // TessContour\n const val GLU_CW = 100120\n const val GLU_CCW = 100121\n const val GLU_INTERIOR = 100122\n const val GLU_EXTERIOR = 100123\n const val GLU_UNKNOWN = 100124\n\n // TessProperty\n const val GLU_TESS_WINDING_RULE = 100140\n const val GLU_TESS_BOUNDARY_ONLY = 100141\n const val GLU_TESS_TOLERANCE = 100142\n\n // TessError\n const val GLU_TESS_ERROR1 = 100151\n const val GLU_TESS_ERROR2 = 100152\n const val GLU_TESS_ERROR3 = 100153\n const val GLU_TESS_ERROR4 = 100154\n const val GLU_TESS_ERROR5 = 100155\n const val GLU_TESS_ERROR6 = 100156\n const val GLU_TESS_ERROR7 = 100157\n const val GLU_TESS_ERROR8 = 100158\n const val GLU_TESS_MISSING_BEGIN_POLYGON = 100151\n const val GLU_TESS_MISSING_BEGIN_CONTOUR = 100152\n const val GLU_TESS_MISSING_END_POLYGON = 100153\n const val GLU_TESS_MISSING_END_CONTOUR = 100154\n const val GLU_TESS_COORD_TOO_LARGE = 100155\n const val GLU_TESS_NEED_COMBINE_CALLBACK = 100156\n\n // TessWinding\n const val GLU_TESS_WINDING_ODD = 100130\n const val GLU_TESS_WINDING_NONZERO = 100131\n const val GLU_TESS_WINDING_POSITIVE = 100132\n const val GLU_TESS_WINDING_NEGATIVE = 100133\n const val GLU_TESS_WINDING_ABS_GEQ_TWO = 100134\n const val GLU_TESS_MAX_COORD = 1.0e150\n}\n","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\n/**\n * The **GLUtessellatorCallbackAdapter** provides a default implementation of\n * [GLUtessellatorCallback]\n * with empty callback methods. This class can be extended to provide user\n * defined callback methods.\n *\n * @author Eric Veach, July 1994\n * @author Java Port: Pepijn Van Eechhoudt, July 2003\n * @author Java Port: Nathan Parker Burg, August 2003\n * @author Kotlin Port: Eugene Maksymenko, April 2022\n */\nopen class GLUtessellatorCallbackAdapter : GLUtessellatorCallback {\n\toverride fun begin(type: Int) {}\n\toverride fun edgeFlag(boundaryEdge: Boolean) {}\n\toverride fun vertex(vertexData: Any) {}\n\toverride fun end() {}\n\toverride fun error(errnum: Int) {}\n\toverride fun combine(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {}\n\n\toverride fun beginData(type: Int, polygonData: Any) {}\n\toverride fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) {}\n\n\toverride fun vertexData(vertexData: Any, polygonData: Any) {}\n\toverride fun endData(polygonData: Any) {}\n\toverride fun errorData(errnum: Int, polygonData: Any) {}\n\toverride fun combineData(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any) {}\n}","/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n * \n * http://oss.sgi.com/projects/FreeB\n * \n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n * \n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n * \n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n */\npackage earth.worldwind.util.glu.error\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.jvm.JvmStatic\n\nobject Error {\n\tprivate val gluErrorStrings = arrayOf(\n\t\t\"invalid enumerant\",\n\t\t\"invalid value\",\n\t\t\"out of memory\",\n\t\t\"\",\n\t\t\"invalid operation\"\n\t)\n\n\t@JvmStatic\n\tfun gluErrorString(errorCode: Int): String? {\n\t\tif (errorCode == 0) return \"no error\"\n\t\tif (errorCode >= GLU.GLU_INVALID_ENUM && errorCode <= GLU.GLU_INVALID_OPERATION)\n\t\t\treturn gluErrorStrings[errorCode - GLU.GLU_INVALID_ENUM]\n\t\treturn if (errorCode >= GLU.GLU_TESS_ERROR1 && errorCode <= GLU.GLU_TESS_ERROR8)\n\t\t\tgluErrorStrings[errorCode - (GLU.GLU_TESS_ERROR1 - 1)] else null\n\t}\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal class ActiveRegion(\n /**\n * upper edge, directed right to left\n */\n var eUp: GLUhalfEdge\n) {\n /**\n * dictionary node corresponding to eUp\n */\n var nodeUp: DictNode? = null\n /**\n * used to determine which regions are inside the polygon\n */\n var windingNumber = 0\n /**\n * is this region inside the polygon?\n */\n var inside = false\n /**\n * marks fake edges at t = +/-infinity\n */\n var sentinel = false\n /**\n * marks regions where the upper or lower\n * edge has changed, but we haven't checked\n * whether they intersect yet\n */\n var dirty = false\n /**\n * marks temporary edges introduced when\n * we process a \"right vertex\" (one without\n * any edges leaving to the right)\n */\n var fixUpperEdge = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass CachedVertex {\n val coords = DoubleArray(3)\n var data: Any? = null\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass Dict private constructor(\n var head: DictNode,\n var frame: Any,\n var leq: DictLeq\n) {\n\n interface DictLeq {\n fun leq(frame: Any, key1: Any?, key2: Any?): Boolean\n }\n\n companion object {\n fun dictNewDict(frame: Any, leq: DictLeq): Dict {\n return Dict(DictNode(), frame, leq)\n }\n\n @Suppress(\"UNUSED_PARAMETER\")\n fun dictDeleteDict(dict: Dict) {\n// Memory will clear automatically\n// dict.head = null\n// dict.frame = null\n// dict.leq = null\n }\n\n fun dictInsert(dict: Dict, key: Any?): DictNode {\n return dictInsertBefore(dict, dict.head, key)\n }\n\n fun dictInsertBefore(dict: Dict, node: DictNode, key: Any?): DictNode {\n var n = node\n do {\n n = n.prev\n } while (n.key != null && !dict.leq.leq(dict.frame, n.key, key))\n val newNode = DictNode(key).apply {\n prev = n\n next = n.next\n }\n n.next.prev = newNode\n n.next = newNode\n return newNode\n }\n\n fun dictKey(aNode: DictNode) = aNode.key\n\n fun dictSucc(aNode: DictNode) = aNode.next\n\n fun dictPred(aNode: DictNode) = aNode.prev\n\n fun dictMin(aDict: Dict) = aDict.head.next\n\n fun dictMax(aDict: Dict) = aDict.head.prev\n\n fun dictDelete(node: DictNode) {\n node.next.prev = node.prev\n node.prev.next = node.next\n }\n\n fun dictSearch(dict: Dict, key: Any?): DictNode {\n var node = dict.head\n do {\n node = node.next\n } while (node.key != null && !dict.leq.leq(dict.frame, key, node.key))\n return node\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass DictNode(\n var key: Any? = null,\n) {\n var next = this\n var prev = this\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUface {\n /**\n * next face (never NULL)\n */\n var next: GLUface? = null\n /**\n * previous face (never NULL)\n */\n var prev: GLUface? = null\n /**\n * a half edge with this left face\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * room for client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * \"stack\" for conversion to strips\n */\n var trail: GLUface? = null\n /**\n * flag for conversion to strips\n */\n var marked = false\n /**\n * this face is in the polygon interior\n */\n var inside = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUhalfEdge(val first: Boolean) {\n /**\n * doubly-linked list (prev==Sym->next)\n */\n var next: GLUhalfEdge? = null\n /**\n * same edge, opposite direction\n */\n var sym: GLUhalfEdge? = null\n /**\n * next edge CCW around origin\n */\n var oNext: GLUhalfEdge? = null\n /**\n * next edge CCW around left face\n */\n var lNext: GLUhalfEdge? = null\n /**\n * origin vertex (Overtex too long)\n */\n var org: GLUvertex? = null\n /**\n * left face\n */\n var lFace: GLUface? = null\n\n /* Internal data (keep hidden) */\n /**\n * a region with this upper edge (sweep.c)\n */\n internal var activeRegion: ActiveRegion? = null\n /**\n * change in winding number when crossing\n */\n var winding = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUmesh {\n /**\n * dummy header for vertex list\n */\n val vHead = GLUvertex()\n /**\n * dummy header for face list\n */\n val fHead = GLUface()\n /**\n * dummy header for edge list\n */\n internal val eHead = GLUhalfEdge(true)\n /**\n * and its symmetric counterpart\n */\n internal val eHeadSym = GLUhalfEdge(false)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport earth.worldwind.util.glu.GLUtessellatorCallback\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\n\nclass GLUtessellatorImpl private constructor() : GLUtessellator {\n /**\n * what begin/end calls have we seen?\n */\n private var state = TessState.T_DORMANT\n /**\n * lastEdge->Org is the most recent vertex\n */\n private var lastEdge: GLUhalfEdge? = null\n /**\n * stores the input contours, and eventually the tessellation itself\n */\n var mesh: GLUmesh? = null\n\n /*** state needed for projecting onto the sweep plane */\n /**\n * user-specified normal (if provided)\n */\n val normal = DoubleArray(3)\n /**\n * unit vector in s-direction (debugging)\n */\n val sUnit = DoubleArray(3)\n /**\n * unit vector in t-direction (debugging)\n */\n val tUnit = DoubleArray(3)\n\n /*** state needed for the line sweep */\n /**\n * tolerance for merging features\n */\n private var relTolerance = GLU_TESS_DEFAULT_TOLERANCE\n /**\n * rule for determining polygon interior\n */\n var windingRule = GLU.GLU_TESS_WINDING_ODD\n /**\n * fatal error: needed combine callback\n */\n var fatalError = false\n /**\n * edge dictionary for sweep line\n */\n var dict: Dict? = null\n /**\n * priority queue of vertex events\n */\n var pq: PriorityQ? = null\n /**\n * current sweep event being processed\n */\n var event: GLUvertex? = null\n\n /*** state needed for rendering callbacks (see render.c) */\n /**\n * mark boundary edges (use EdgeFlag)\n */\n var flagBoundary = false\n /**\n * Extract contours, not triangles\n */\n var boundaryOnly = false\n /**\n * list of triangles which could not be rendered as strips or fans\n */\n var lonelyTriList: GLUface? = null\n /*** state needed to cache single-contour polygons for renderCache() */\n /**\n * empty cache on next vertex() call\n */\n private var flushCacheOnNextVertex = false\n /**\n * number of cached vertices\n */\n var cacheCount = 0\n /**\n * the vertex data\n */\n val cache = Array(TESS_MAX_CACHE) { CachedVertex() }\n\n /*** rendering callbacks that also pass polygon data */\n /**\n * client data for current polygon\n */\n private var polygonData: Any? = null\n private var callBegin: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlag: GLUtessellatorCallback = NULL_CB\n private var callVertex: GLUtessellatorCallback = NULL_CB\n private var callEnd: GLUtessellatorCallback = NULL_CB\n\n //private var callMesh: GLUtessellatorCallback = NULL_CB\n private var callError: GLUtessellatorCallback = NULL_CB\n private var callCombine: GLUtessellatorCallback = NULL_CB\n private var callBeginData: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlagData: GLUtessellatorCallback = NULL_CB\n private var callVertexData: GLUtessellatorCallback = NULL_CB\n private var callEndData: GLUtessellatorCallback = NULL_CB\n\n //private GLUtessellatorCallback callMeshData;\n private var callErrorData: GLUtessellatorCallback = NULL_CB\n private var callCombineData: GLUtessellatorCallback = NULL_CB\n\n private fun makeDormant() {\n /**\n * Return the tessellator to its original dormant state.\n */\n mesh?.let { Mesh.glMeshDeleteMesh(it) }\n state = TessState.T_DORMANT\n lastEdge = null\n mesh = null\n }\n\n private fun requireState(newState: Int) {\n if (state != newState) gotoState(newState)\n }\n\n private fun gotoState(newState: Int) {\n while (state != newState) {\n /**\n * We change the current state one level at a time, to get to the desired state.\n */\n if (state < newState) {\n if (state == TessState.T_DORMANT) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_POLYGON)\n gluTessBeginPolygon(null)\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_CONTOUR)\n gluTessBeginContour()\n }\n } else {\n if (state == TessState.T_IN_CONTOUR) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_CONTOUR)\n gluTessEndContour()\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_POLYGON)\n /* gluTessEndPolygon( tess ) is too much work! */\n makeDormant()\n }\n }\n }\n }\n\n fun gluDeleteTess() {\n requireState(TessState.T_DORMANT)\n }\n\n fun gluTessProperty(which: Int, value: Double) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> {\n if (value < 0.0 || value > 1.0) callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n else relTolerance = value\n }\n GLU.GLU_TESS_WINDING_RULE -> {\n val windingRule = value.toInt()\n if (windingRule.toDouble() != value) {\n /* not an integer */\n callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n } else {\n when (windingRule) {\n GLU.GLU_TESS_WINDING_ODD,\n GLU.GLU_TESS_WINDING_NONZERO,\n GLU.GLU_TESS_WINDING_POSITIVE,\n GLU.GLU_TESS_WINDING_NEGATIVE,\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> this.windingRule = windingRule\n else -> callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n }\n }\n }\n GLU.GLU_TESS_BOUNDARY_ONLY -> boundaryOnly = value != 0.0\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n /**\n * Returns tessellator property\n */\n fun gluGetTessProperty(which: Int, value: DoubleArray, value_offset: Int) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> value[value_offset] = relTolerance\n GLU.GLU_TESS_WINDING_RULE -> value[value_offset] = windingRule.toDouble()\n GLU.GLU_TESS_BOUNDARY_ONLY -> value[value_offset] = if (boundaryOnly) 1.0 else 0.0\n else -> {\n value[value_offset] = 0.0\n callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n }\n\n fun gluTessNormal(x: Double, y: Double, z: Double) {\n normal[0] = x\n normal[1] = y\n normal[2] = z\n }\n\n fun gluTessCallback(which: Int, aCallback: GLUtessellatorCallback?) {\n when (which) {\n GLU.GLU_TESS_BEGIN -> callBegin = aCallback ?: NULL_CB\n GLU.GLU_TESS_BEGIN_DATA -> callBeginData = aCallback ?: NULL_CB\n GLU.GLU_TESS_EDGE_FLAG -> {\n callEdgeFlag = aCallback ?: NULL_CB\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_EDGE_FLAG_DATA -> {\n run {\n callBegin = aCallback ?: NULL_CB\n callEdgeFlagData = callBegin\n }\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_VERTEX -> callVertex = aCallback ?: NULL_CB\n GLU.GLU_TESS_VERTEX_DATA -> callVertexData = aCallback ?: NULL_CB\n GLU.GLU_TESS_END -> callEnd = aCallback ?: NULL_CB\n GLU.GLU_TESS_END_DATA -> callEndData = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR -> callError = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR_DATA -> callErrorData = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE -> callCombine = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE_DATA -> callCombineData = aCallback ?: NULL_CB\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n private fun addVertex(coords: DoubleArray, vertexData: Any?): Boolean {\n var e = lastEdge\n if (e == null) {\n /* Make a self-loop (one vertex, one edge). */\n e = Mesh.glMeshMakeEdge(mesh!!)\n if (!Mesh.glMeshSplice(e, e.sym!!)) return false\n } else {\n /**\n * Create a new vertex and edge which immediately follow e\n * in the ordering around the left face.\n */\n Mesh.glMeshSplitEdge(e)\n e = e.lNext!!\n }\n\n /* The new vertex is now e.Org. */\n e.org?.data = vertexData\n e.org!!.coords[0] = coords[0]\n e.org!!.coords[1] = coords[1]\n e.org!!.coords[2] = coords[2]\n\n /**\n * The winding of an edge says how the winding number changes as we\n * cross from the edge''s right face to its left face. We add the\n * vertices in such an order that a CCW contour will add +1 to\n * the winding number of the region inside the contour.\n */\n e.winding = 1\n e.sym?.winding = -1\n lastEdge = e\n return true\n }\n\n private fun cacheVertex(coords: DoubleArray, vertexData: Any?) {\n val v = cache[cacheCount]\n v.data = vertexData\n v.coords[0] = coords[0]\n v.coords[1] = coords[1]\n v.coords[2] = coords[2]\n ++cacheCount\n }\n\n private fun flushCache(): Boolean {\n mesh = Mesh.glMeshNewMesh()\n for (i in 0 until cacheCount) {\n val vertex = cache[i]\n if (!addVertex(vertex.coords, vertex.data)) return false\n }\n cacheCount = 0\n flushCacheOnNextVertex = false\n return true\n }\n\n fun gluTessVertex(coords: DoubleArray, coords_offset: Int, vertexData: Any?) {\n var tooLarge = false\n val clamped = DoubleArray(3)\n requireState(TessState.T_IN_CONTOUR)\n if (flushCacheOnNextVertex) {\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n lastEdge = null\n }\n var i = 0\n while (i < 3) {\n var x = coords[i + coords_offset]\n if (x < -GLU.GLU_TESS_MAX_COORD) {\n x = -GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n if (x > GLU.GLU_TESS_MAX_COORD) {\n x = GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n clamped[i] = x\n ++i\n }\n if (tooLarge) {\n callErrorOrErrorData(GLU.GLU_TESS_COORD_TOO_LARGE)\n }\n if (mesh == null) {\n if (cacheCount < TESS_MAX_CACHE) {\n cacheVertex(clamped, vertexData)\n return\n }\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n }\n if (!addVertex(clamped, vertexData)) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun gluTessBeginPolygon(data: Any?) {\n requireState(TessState.T_DORMANT)\n state = TessState.T_IN_POLYGON\n cacheCount = 0\n flushCacheOnNextVertex = false\n mesh = null\n polygonData = data\n }\n\n fun gluTessBeginContour() {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_IN_CONTOUR\n lastEdge = null\n if (cacheCount > 0) {\n /**\n * Just set a flag so we don't get confused by empty contours\n * -- these can be generated accidentally with the obsolete\n * NextContour() interface.\n */\n flushCacheOnNextVertex = true\n }\n }\n\n fun gluTessEndContour() {\n requireState(TessState.T_IN_CONTOUR)\n state = TessState.T_IN_POLYGON\n }\n\n fun gluTessEndPolygon() {\n try {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_DORMANT\n if (this.mesh == null) {\n if (!flagBoundary /*&& callMesh == NULL_CB*/) {\n /**\n * Try some special code to make the easy cases go quickly\n * (eg. convex polygons). This code does NOT handle multiple contours,\n * intersections, edge flags, and of course it does not generate\n * an explicit mesh either.\n */\n if (Render.glRenderCache(this)) {\n polygonData = null\n return\n }\n }\n if (!flushCache()) throw RuntimeException() /* could've used a label*/\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n Normal.glProjectPolygon(this)\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by windingRule.\n * Each interior region is guaranteed be monotone.\n */\n if (!Sweep.glComputeInterior(this)) {\n throw RuntimeException() /* could've used a label */\n }\n val mesh = this.mesh!!\n if (!fatalError) {\n /**\n * If the user wants only the boundary contours, we throw away all edges\n * except those which separate the interior from the exterior.\n * Otherwise we tessellate all the regions marked \"inside\".\n */\n val rc = if (boundaryOnly) {\n TessMono.glMeshSetWindingNumber(mesh, 1, true)\n } else {\n TessMono.glMeshTessellateInterior(mesh)\n }\n if (!rc) throw RuntimeException() /* could've used a label */\n Mesh.glMeshCheckMesh(mesh)\n if (callBegin !== NULL_CB || callEnd !== NULL_CB || callVertex !== NULL_CB || callEdgeFlag !== NULL_CB || callBeginData !== NULL_CB || callEndData !== NULL_CB || callVertexData !== NULL_CB || callEdgeFlagData !== NULL_CB) {\n if (boundaryOnly) {\n Render.glRenderBoundary(this, mesh) /* output boundary contours */\n } else {\n Render.glRenderMesh(this, mesh) /* output strips and fans */\n }\n }\n // if (callMesh != NULL_CB) {\n// /**\n// * Throw away the exterior faces, so that all faces are interior.\n// * This way the user doesn't have to check the \"inside\" flag,\n// * and we don't need to even reveal its existence. It also leaves\n// * the freedom for an implementation to not generate the exterior\n// * faces in the first place.\n// */\n// TessMono.__gl_meshDiscardExterior(mesh);\n// callMesh.mesh(mesh);\t\t/* user wants the mesh itself */\n// mesh = null;\n// polygonData = null;\n// return;\n// }\n }\n Mesh.glMeshDeleteMesh(mesh)\n polygonData = null\n } catch (e: Exception) {\n e.printStackTrace()\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun callBeginOrBeginData(a: Int) {\n if (callBeginData !== NULL_CB) callBeginData.beginData(a, polygonData!!) else callBegin.begin(a)\n }\n\n fun callVertexOrVertexData(a: Any) {\n if (callVertexData !== NULL_CB) callVertexData.vertexData(a, polygonData!!) else callVertex.vertex(a)\n }\n\n fun callEdgeFlagOrEdgeFlagData(a: Boolean) {\n if (callEdgeFlagData !== NULL_CB) callEdgeFlagData.edgeFlagData(a, polygonData!!) else callEdgeFlag.edgeFlag(a)\n }\n\n fun callEndOrEndData() {\n if (callEndData !== NULL_CB) callEndData.endData(polygonData!!) else callEnd.end()\n }\n\n fun callCombineOrCombineData(\n coords: DoubleArray,\n vertexData: Array,\n weights: FloatArray,\n outData: Array\n ) {\n if (callCombineData !== NULL_CB) callCombineData.combineData(coords, vertexData, weights, outData, polygonData!!)\n else callCombine.combine(coords, vertexData, weights, outData)\n }\n\n fun callErrorOrErrorData(a: Int) {\n if (callErrorData !== NULL_CB) callErrorData.errorData(a, polygonData!!) else callError.error(a)\n }\n\n companion object {\n const val TESS_MAX_CACHE = 100\n private const val GLU_TESS_DEFAULT_TOLERANCE = 0.0\n\n //private static final int GLU_TESS_MESH = 100112;\t/* void (*)(GLUmesh *mesh)\t */\n private val NULL_CB = GLUtessellatorCallbackAdapter()\n\n fun gluNewTess(): GLUtessellator = GLUtessellatorImpl()\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUvertex {\n /**\n * next vertex (never NULL)\n */\n var next: GLUvertex? = null\n /**\n * previous vertex (never NULL)\n */\n var prev: GLUvertex? = null\n /**\n * a half-edge with this origin\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * vertex location in 3D\n */\n val coords = DoubleArray(3)\n var s = 0.0\n /**\n * projection onto the sweep plane\n */\n var t = 0.0\n /**\n * to allow deletion from priority queue\n */\n var pqHandle = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Geom {\n /* Given three vertices u,v,w such that VertLeq(u,v) && VertLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->t - (uw)(v->s), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->t = 0 and\n * let r be the negated result (this evaluates (uw)(v->s)), then\n * r is guaranteed to satisfy MIN(u->t,w->t) <= r <= MAX(u->t,w->t).\n */\n fun edgeEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.t - u.t + (u.t - w.t) * (gapL / (gapL + gapR))\n else v.t - w.t + (w.t - u.t) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n fun edgeSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) (v.t - w.t) * gapL + (v.t - u.t) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * Define versions of EdgeSign, EdgeEval with s and t transposed.\n */\n fun transEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n /* Given three vertices u,v,w such that TransLeq(u,v) && TransLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->s - (uw)(v->t), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->s = 0 and\n * let r be the negated result (this evaluates (uw)(v->t)), then\n * r is guaranteed to satisfy MIN(u->s,w->s) <= r <= MAX(u->s,w->s).\n */\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.s - u.s + (u.s - w.s) * (gapL / (gapL + gapR))\n else v.s - w.s + (w.s - u.s) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n /**\n * Returns a number whose sign matches TransEval(u,v,w) but which\n * is cheaper to evaluate. Returns > 0, == 0 , or < 0\n * as v is above, on, or below the edge uw.\n */\n fun transSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) (v.s - w.s) * gapL + (v.s - u.s) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * For almost-degenerate situations, the results are not reliable.\n * Unless the floating-point arithmetic can be performed without\n * rounding errors, *any* implementation will give incorrect results\n * on some degenerate inputs, so the client must have some way to\n * handle this situation.\n */\n fun vertCCW(u: GLUvertex, v: GLUvertex, w: GLUvertex) =\n u.s * (v.t - w.t) + v.s * (w.t - u.t) + w.s * (u.t - v.t) >= 0\n\n /**\n * Given parameters a,x,b,y returns the value (b*x+a*y)/(a+b),\n * or (x+y)/2 if a==b==0. It requires that a,b >= 0, and enforces\n * this in the rare case that one argument is slightly negative.\n * The implementation is extremely stable numerically.\n * In particular it guarantees that the result r satisfies\n * MIN(x,y) <= r <= MAX(x,y), and the results are very accurate\n * even when a and b differ greatly in magnitude.\n */\n fun interpolate(a: Double, x: Double, b: Double, y: Double): Double {\n val a = if (a < 0) 0.0 else a\n val b = if (b < 0) 0.0 else b\n return if (a <= b) {\n if (b == 0.0) (x + y) / 2.0\n else x + (y - x) * (a / (a + b))\n } else y + (x - y) * (b / (a + b))\n }\n\n /**\n * Given edges (o1,d1) and (o2,d2), compute their point of intersection.\n * The computed point is guaranteed to lie in the intersection of the\n * bounding rectangles defined by each edge.\n */\n fun edgeIntersect(\n o1: GLUvertex, d1: GLUvertex, o2: GLUvertex, d2: GLUvertex, v: GLUvertex\n ) {\n var o1 = o1\n var d1 = d1\n var o2 = o2\n var d2 = d2\n\n /**\n * This is certainly not the most efficient way to find the intersection\n * of two line segments, but it is very numerically stable.\n *\n * Strategy: find the two middle vertices in the VertLeq ordering,\n * and interpolate the intersection s-value from these. Then repeat\n * using the TransLeq ordering to find the intersection t-value.\n */\n if (!vertLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!vertLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!vertLeq(o1, o2)) {\n var temp = o1\n o1 = o2\n o2 = temp\n temp = d1\n d1 = d2\n d2 = temp\n }\n if (!vertLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.s = (o2.s + d1.s) / 2.0\n } else if (vertLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = edgeEval(o1, o2, d1)\n var z2 = edgeEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d1.s)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = edgeSign(o1, o2, d1)\n var z2 = -edgeSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d2.s)\n }\n\n /* Now repeat the process for t */\n if (!transLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!transLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!transLeq(o1, o2)) {\n var temp = o2\n o2 = o1\n o1 = temp\n temp = d2\n d2 = d1\n d1 = temp\n }\n if (!transLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.t = (o2.t + d1.t) / 2.0\n } else if (transLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = transEval(o1, o2, d1)\n var z2 = transEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d1.t)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = transSign(o1, o2, d1)\n var z2 = -transSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d2.t)\n }\n }\n\n fun vertEq(u: GLUvertex, v: GLUvertex) = u.s == v.s && u.t == v.t\n\n fun vertLeq(u: GLUvertex, v: GLUvertex) = u.s < v.s || u.s == v.s && u.t <= v.t\n\n /* Versions of VertLeq, EdgeSign, EdgeEval with s and t transposed. */\n fun transLeq(u: GLUvertex, v: GLUvertex) = u.t < v.t || u.t == v.t && u.s <= v.s\n\n fun edgeGoesLeft(e: GLUhalfEdge) = vertLeq(e.sym?.org!!, e.org!!)\n\n fun edgeGoesRight(e: GLUhalfEdge) = vertLeq(e.org!!, e.sym?.org!!)\n\n fun vertL1dist(u: GLUvertex, v: GLUvertex) = abs(u.s - v.s) + abs(u.t - v.t)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object Mesh {\n /************************ Utility Routines */\n /**\n * MakeEdge creates a new pair of half-edges which form their own loop.\n * No vertex or face structures are allocated, but these must be assigned\n * before the current edge operation is completed.\n */\n fun makeEdge(eNext: GLUhalfEdge): GLUhalfEdge {\n var next = eNext\n val e = GLUhalfEdge(true)\n val eSym = GLUhalfEdge(false)\n\n /* Make sure eNext points to the first edge of the edge pair */\n if (!next.first) {\n next = next.sym!!\n }\n\n /**\n * Insert in circular doubly-linked list before eNext.\n * Note that the prev pointer is stored in Sym->next.\n */\n val ePrev = next.sym?.next!!\n eSym.next = ePrev\n ePrev.sym?.next = e\n e.next = next\n next.sym?.next = eSym\n e.sym = eSym\n e.oNext = e\n e.lNext = eSym\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.sym = e\n eSym.oNext = eSym\n eSym.lNext = e\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return e\n }\n\n /**\n * Splice( a, b ) is best described by the Guibas/Stolfi paper or the\n * CS348a notes (see mesh.h). Basically it modifies the mesh so that\n * a->Onext and b->Onext are exchanged. This can have various effects\n * depending on whether a and b belong to different face or vertex rings.\n * For more explanation see __gl_meshSplice() below.\n */\n fun splice(a: GLUhalfEdge, b: GLUhalfEdge) {\n val aONext = a.oNext!!\n val bONext = b.oNext!!\n aONext.sym?.lNext = b\n bONext.sym?.lNext = a\n a.oNext = bONext\n b.oNext = aONext\n }\n\n /**\n * MakeVertex( newVertex, eOrig, vNext ) attaches a new vertex and makes it the\n * origin of all edges in the vertex loop to which eOrig belongs. \"vNext\" gives\n * a place to insert the new vertex in the global vertex list. We insert\n * the new vertex *before* vNext so that algorithms which walk the vertex\n * list will not see the newly created vertices.\n */\n fun makeVertex(newVertex: GLUvertex, eOrig: GLUhalfEdge, vNext: GLUvertex) {\n /* insert in circular doubly-linked list before vNext */\n val vPrev = vNext.prev!!\n newVertex.prev = vPrev\n vPrev.next = newVertex\n newVertex.next = vNext\n vNext.prev = newVertex\n newVertex.anEdge = eOrig\n newVertex.data = null\n /* leave coords, s, t undefined */\n\n /* fix other edges on this vertex loop */\n var e = eOrig\n do {\n e.org = newVertex\n e = e.oNext!!\n } while (e !== eOrig)\n }\n\n /**\n * MakeFace( newFace, eOrig, fNext ) attaches a new face and makes it the left\n * face of all edges in the face loop to which eOrig belongs. \"fNext\" gives\n * a place to insert the new face in the global face list. We insert\n * the new face *before* fNext so that algorithms which walk the face\n * list will not see the newly created faces.\n */\n fun makeFace(newFace: GLUface, eOrig: GLUhalfEdge, fNext: GLUface) {\n /* insert in circular doubly-linked list before fNext */\n val fPrev = fNext.prev!!\n newFace.prev = fPrev\n fPrev.next = newFace\n newFace.next = fNext\n fNext.prev = newFace\n newFace.anEdge = eOrig\n newFace.data = null\n newFace.trail = null\n newFace.marked = false\n\n /**\n * The new face is marked \"inside\" if the old one was. This is a\n * convenience for the common case where a face has been split in two.\n */\n newFace.inside = fNext.inside\n\n /* fix other edges on this face loop */\n var e = eOrig\n do {\n e.lFace = newFace\n e = e.lNext!!\n } while (e !== eOrig)\n }\n\n /**\n * KillEdge( eDel ) destroys an edge (the half-edges eDel and eDel->Sym),\n * and removes from the global edge list.\n */\n fun killEdge(eDel: GLUhalfEdge) {\n var del = eDel\n\n /* Half-edges are allocated in pairs, see EdgePair above */\n if (!del.first) {\n del = del.sym!!\n }\n\n /* delete from circular doubly-linked list */\n val eNext = del.next!!\n val ePrev = del.sym?.next!!\n eNext.sym?.next = ePrev\n ePrev.sym?.next = eNext\n }\n\n /**\n * KillVertex( vDel ) destroys a vertex and removes it from the global\n * vertex list. It updates the vertex loop to point to a given new vertex.\n */\n fun killVertex(vDel: GLUvertex, newOrg: GLUvertex?) {\n val eStart = vDel.anEdge!!\n\n /* change the origin of all affected edges */\n var e = eStart\n do {\n e.org = newOrg\n e = e.oNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val vPrev = vDel.prev!!\n val vNext = vDel.next!!\n vNext.prev = vPrev\n vPrev.next = vNext\n }\n\n /**\n * KillFace( fDel ) destroys a face and removes it from the global face\n * list. It updates the face loop to point to a given new face.\n */\n fun killFace(fDel: GLUface, newLface: GLUface?) {\n val eStart = fDel.anEdge!!\n\n /* change the left face of all affected edges */\n var e = eStart\n do {\n e.lFace = newLface\n e = e.lNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fDel.prev!!\n val fNext = fDel.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /****************** Basic Edge Operations */\n /**\n * __gl_meshMakeEdge creates one edge, two vertices, and a loop (face).\n * The loop consists of the two new half-edges.\n */\n fun glMeshMakeEdge(mesh: GLUmesh): GLUhalfEdge {\n val newVertex1 = GLUvertex()\n val newVertex2 = GLUvertex()\n val newFace = GLUface()\n val e = makeEdge(mesh.eHead)\n makeVertex(newVertex1, e, mesh.vHead)\n makeVertex(newVertex2, e.sym!!, mesh.vHead)\n makeFace(newFace, e, mesh.fHead)\n return e\n }\n\n /**\n * __gl_meshSplice( eOrg, eDst ) is the basic operation for changing the\n * mesh connectivity and topology. It changes the mesh so that\n *\teOrg->Onext <- OLD( eDst->Onext )\n *\teDst->Onext <- OLD( eOrg->Onext )\n * where OLD(...) means the value before the meshSplice operation.\n *\n * This can have two effects on the vertex structure:\n * - if eOrg->Org != eDst->Org, the two vertices are merged together\n * - if eOrg->Org == eDst->Org, the origin is split into two vertices\n * In both cases, eDst->Org is changed and eOrg->Org is untouched.\n *\n * Similarly (and independently) for the face structure,\n * - if eOrg->Lface == eDst->Lface, one loop is split into two\n * - if eOrg->Lface != eDst->Lface, two distinct loops are joined into one\n * In both cases, eDst->Lface is changed and eOrg->Lface is unaffected.\n *\n * Some special cases:\n * If eDst == eOrg, the operation has no effect.\n * If eDst == eOrg->Lnext, the new face will have a single edge.\n * If eDst == eOrg->Lprev, the old face will have a single edge.\n * If eDst == eOrg->Onext, the new vertex will have a single edge.\n * If eDst == eOrg->Oprev, the old vertex will have a single edge.\n */\n fun glMeshSplice(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): Boolean {\n var joiningLoops = false\n var joiningVertices = false\n if (eOrg === eDst) return true\n if (eDst.org !== eOrg.org) {\n /* We are merging two disjoint vertices -- destroy eDst->Org */\n joiningVertices = true\n killVertex(eDst.org!!, eOrg.org)\n }\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Change the edge structure */\n splice(eDst, eOrg)\n if (!joiningVertices) {\n val newVertex = GLUvertex()\n\n /**\n * We split one vertex into two -- the new vertex is eDst.Org.\n * Make sure the old vertex points to a valid half-edge.\n */\n makeVertex(newVertex, eDst, eOrg.org!!)\n eOrg.org?.anEdge = eOrg\n }\n if (!joiningLoops) {\n val newFace = GLUface()\n\n /**\n * We split one loop into two -- the new loop is eDst.Lface.\n * Make sure the old face points to a valid half-edge.\n */\n makeFace(newFace, eDst, eOrg.lFace!!)\n eOrg.lFace?.anEdge = eOrg\n }\n return true\n }\n\n /**\n * __gl_meshDelete( eDel ) removes the edge eDel. There are several cases:\n * if (eDel.Lface != eDel.Rface), we join two loops into one; the loop\n * eDel.Lface is deleted. Otherwise, we are splitting one loop into two;\n * the newly created loop will contain eDel.Dst. If the deletion of eDel\n * would create isolated vertices, those are deleted as well.\n *\n * This function could be implemented as two calls to __gl_meshSplice\n * plus a few calls to memFree, but this would allocate and delete\n * unnecessary vertices and faces.\n */\n fun glMeshDelete(eDel: GLUhalfEdge): Boolean {\n val eDelSym = eDel.sym!!\n var joiningLoops = false\n\n /** First step: disconnect the origin vertex eDel.Org. We make all\n * changes to get a consistent mesh in this \"intermediate\" state.\n */\n if (eDel.lFace !== eDel.sym?.lFace) {\n /* We are joining two loops into one -- remove the left face */\n joiningLoops = true\n killFace(eDel.lFace!!, eDel.sym?.lFace)\n }\n if (eDel.oNext === eDel) {\n killVertex(eDel.org!!, null)\n } else {\n /* Make sure that eDel.Org and eDel.Sym.Lface point to valid half-edges */\n eDel.sym?.lFace?.anEdge = eDel.sym?.lNext\n eDel.org?.anEdge = eDel.oNext\n splice(eDel, eDel.sym?.lNext!!)\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We are splitting one loop into two -- create a new loop for eDel. */\n makeFace(newFace, eDel, eDel.lFace!!)\n }\n }\n\n /**\n * Claim: the mesh is now in a consistent state, except that eDel.Org\n * may have been deleted. Now we disconnect eDel.Dst.\n */\n if (eDelSym.oNext === eDelSym) {\n killVertex(eDelSym.org!!, null)\n killFace(eDelSym.lFace!!, null)\n } else {\n /* Make sure that eDel.Dst and eDel.Lface point to valid half-edges */\n eDel.lFace?.anEdge = eDelSym.sym?.lNext\n eDelSym.org?.anEdge = eDelSym.oNext\n splice(eDelSym, eDelSym.sym?.lNext!!)\n }\n\n /* Any isolated vertices or faces have already been freed. */\n killEdge(eDel)\n return true\n }\n\n /******************** Other Edge Operations */\n /**\n * All these routines can be implemented with the basic edge\n * operations above. They are provided for convenience and efficiency.\n */\n /**\n * __gl_meshAddEdgeVertex( eOrg ) creates a new edge eNew such that\n * eNew == eOrg.Lnext, and eNew.Dst is a newly created vertex.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshAddEdgeVertex(eOrg: GLUhalfEdge): GLUhalfEdge {\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n run {\n val newVertex = GLUvertex()\n makeVertex(newVertex, eNewSym, eNew.org!!)\n }\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n return eNew\n }\n\n /**\n * __gl_meshSplitEdge( eOrg ) splits eOrg into two edges eOrg and eNew,\n * such that eNew == eOrg.Lnext. The new vertex is eOrg.Sym.Org == eNew.Org.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshSplitEdge(eOrg: GLUhalfEdge): GLUhalfEdge {\n val tempHalfEdge = glMeshAddEdgeVertex(eOrg)\n val eNew = tempHalfEdge.sym!!\n\n /* Disconnect eOrg from eOrg.Sym.Org and connect it to eNew.Org */\n splice(eOrg.sym!!, eOrg.sym?.sym?.lNext!!)\n splice(eOrg.sym!!, eNew)\n\n /* Set the vertex and face information */\n eOrg.sym?.org = eNew.org\n eNew.sym?.org?.anEdge = eNew.sym /* may have pointed to eOrg.Sym */\n eNew.sym?.lFace = eOrg.sym?.lFace\n eNew.winding = eOrg.winding /* copy old winding information */\n eNew.sym?.winding = eOrg.sym!!.winding\n return eNew\n }\n\n /**\n * __gl_meshConnect( eOrg, eDst ) creates a new edge from eOrg.Sym.Org\n * to eDst.Org, and returns the corresponding half-edge eNew.\n * If eOrg.Lface == eDst.Lface, this splits one loop into two,\n * and the newly created loop is eNew.Lface. Otherwise, two disjoint\n * loops are merged into one, and the loop eDst.Lface is destroyed.\n *\n * If (eOrg == eDst), the new face will have only two edges.\n * If (eOrg.Lnext == eDst), the old face is reduced to a single edge.\n * If (eOrg.Lnext.Lnext == eDst), the old face is reduced to two edges.\n */\n fun glMeshConnect(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): GLUhalfEdge {\n var joiningLoops = false\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n splice(eNewSym, eDst)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n eNewSym.org = eDst.org\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n\n /* Make sure the old face points to a valid half-edge */\n eOrg.lFace?.anEdge = eNewSym\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We split one loop into two -- the new loop is eNew.Lface */\n makeFace(newFace, eNew, eOrg.lFace!!)\n }\n return eNew\n }\n\n /******************** Other Operations */\n /**\n * __gl_meshZapFace( fZap ) destroys a face and removes it from the\n * global face list. All edges of fZap will have a null pointer as their\n * left face. Any edges which also have a null pointer as their right face\n * are deleted entirely (along with any isolated vertices this produces).\n * An entire mesh can be deleted by zapping its faces, one at a time,\n * in any order. Zapped faces cannot be used in further mesh operations!\n */\n fun glMeshZapFace(fZap: GLUface) {\n val eStart = fZap.anEdge!!\n\n /* walk around face, deleting edges whose right face is also null */\n var eNext = eStart.lNext!!\n do {\n val e = eNext\n eNext = e.lNext!!\n e.lFace = null\n if (e.sym?.lFace == null) {\n /* delete the edge -- see __gl_MeshDelete above */\n if (e.oNext === e) {\n killVertex(e.org!!, null)\n } else {\n /* Make sure that e.Org points to a valid half-edge */\n e.org?.anEdge = e.oNext\n splice(e, e.sym?.lNext!!)\n }\n val eSym = e.sym!!\n if (eSym.oNext === eSym) {\n killVertex(eSym.org!!, null)\n } else {\n /* Make sure that eSym.Org points to a valid half-edge */\n eSym.org?.anEdge = eSym.oNext\n splice(eSym, eSym.sym?.lNext!!)\n }\n killEdge(e)\n }\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fZap.prev!!\n val fNext = fZap.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /**\n * __gl_meshNewMesh() creates a new mesh with no edges, no vertices,\n * and no loops (what we usually call a \"face\").\n */\n fun glMeshNewMesh(): GLUmesh {\n val mesh = GLUmesh()\n val v = mesh.vHead\n val f = mesh.fHead\n val e = mesh.eHead\n val eSym = mesh.eHeadSym\n v.prev = v\n v.next = v.prev\n v.anEdge = null\n v.data = null\n f.prev = f\n f.next = f.prev\n f.anEdge = null\n f.data = null\n f.trail = null\n f.marked = false\n f.inside = false\n e.next = e\n e.sym = eSym\n e.oNext = null\n e.lNext = null\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.next = eSym\n eSym.sym = e\n eSym.oNext = null\n eSym.lNext = null\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return mesh\n }\n\n /**\n * glMeshUnion( mesh1, mesh2 ) forms the union of all structures in\n * both meshes, and returns the new mesh (the old meshes are destroyed).\n */\n fun glMeshUnion(mesh1: GLUmesh, mesh2: GLUmesh): GLUmesh {\n val f1 = mesh1.fHead\n val v1 = mesh1.vHead\n val e1 = mesh1.eHead\n val f2 = mesh2.fHead\n val v2 = mesh2.vHead\n val e2 = mesh2.eHead\n\n /* Add the faces, vertices, and edges of mesh2 to those of mesh1 */\n if (f2.next !== f2) {\n f1.prev?.next = f2.next\n f2.next?.prev = f1.prev\n f2.prev?.next = f1\n f1.prev = f2.prev\n }\n if (v2.next !== v2) {\n v1.prev?.next = v2.next\n v2.next?.prev = v1.prev\n v2.prev?.next = v1\n v1.prev = v2.prev\n }\n if (e2.next !== e2) {\n e1.sym?.next?.sym?.next = e2.next\n e2.next?.sym?.next = e1.sym?.next\n e2.sym?.next?.sym?.next = e1\n e1.sym?.next = e2.sym?.next\n }\n return mesh1\n }\n\n /**\n * glMeshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMeshZap(mesh: GLUmesh) {\n val fHead = mesh.fHead\n while (fHead.next !== fHead) {\n glMeshZapFace(fHead.next!!)\n }\n }\n\n /**\n * __gl_meshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMesh(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n f = fNext\n }\n var v = mesh.vHead.next!!\n while (v !== mesh.vHead) {\n val vNext = v.next!!\n v = vNext\n }\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n /* One call frees both e and e.Sym (see EdgePair above) */\n val eNext = e.next!!\n e = eNext\n }\n }\n\n /**\n * __gl_meshCheckMesh( mesh ) checks a mesh for self-consistency.\n */\n fun glMeshCheckMesh(mesh: GLUmesh) {\n val fHead = mesh.fHead\n val vHead = mesh.vHead\n val eHead = mesh.eHead\n var fPrev = fHead\n while (true) {\n val f = fPrev.next!!\n if (f === fHead) break\n var e = f.anEdge!!\n do e = e.lNext!! while (e !== f.anEdge)\n fPrev = f\n }\n var vPrev = vHead\n while (true) {\n val v = vPrev.next!!\n if (v === vHead) break\n var e = v.anEdge!!\n do {\n e = e.oNext!!\n } while (e !== v.anEdge)\n vPrev = v\n }\n var ePrev = eHead\n while (true) {\n val e = ePrev.next!!\n if (e === eHead) break\n ePrev = e\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\ninternal object Normal {\n private const val SLANTED_SWEEP = false\n private var S_UNIT_X = 0.0 /* Pre-normalized */\n private var S_UNIT_Y = 0.0\n private const val TRUE_PROJECT = false\n\n init {\n if (SLANTED_SWEEP) {\n /**\n * The \"feature merging\" is not intended to be complete. There are\n * special cases where edges are nearly parallel to the sweep line\n * which are not implemented. The algorithm should still behave\n * robustly (ie. produce a reasonable tesselation) in the presence\n * of such edges, however it may miss features which could have been\n * merged. We could minimize this effect by choosing the sweep line\n * direction to be something unusual (ie. not parallel to one of the\n * coordinate axes).\n */\n S_UNIT_X = 0.5094153956495538 /* Pre-normalized */\n S_UNIT_Y = 0.8605207462201063\n } else {\n S_UNIT_X = 1.0\n S_UNIT_Y = 0.0\n }\n }\n\n private fun dot(u: DoubleArray, v: DoubleArray): Double {\n return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]\n }\n\n fun normalize(v: DoubleArray) {\n var len = v[0] * v[0] + v[1] * v[1] + v[2] * v[2]\n len = sqrt(len)\n v[0] /= len\n v[1] /= len\n v[2] /= len\n }\n\n fun longAxis(v: DoubleArray): Int {\n var i = 0\n if (abs(v[1]) > abs(v[0])) {\n i = 1\n }\n if (abs(v[2]) > abs(v[i])) {\n i = 2\n }\n return i\n }\n\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray) {\n val vHead = tess.mesh?.vHead!!\n val maxVal = DoubleArray(3)\n val minVal = DoubleArray(3)\n val minVert = arrayOfNulls(3)\n val maxVert = arrayOfNulls(3)\n val d1 = DoubleArray(3)\n val d2 = DoubleArray(3)\n val tNorm = DoubleArray(3)\n maxVal[2] = -2 * GLU.GLU_TESS_MAX_COORD\n maxVal[1] = maxVal[2]\n maxVal[0] = maxVal[1]\n minVal[2] = 2 * GLU.GLU_TESS_MAX_COORD\n minVal[1] = minVal[2]\n minVal[0] = minVal[1]\n var v = vHead.next!!\n while (v !== vHead) {\n var i = 0\n while (i < 3) {\n val c = v.coords[i]\n if (c < minVal[i]) {\n minVal[i] = c\n minVert[i] = v\n }\n if (c > maxVal[i]) {\n maxVal[i] = c\n maxVert[i] = v\n }\n ++i\n }\n v = v.next!!\n }\n\n /**\n * Find two vertices separated by at least 1/sqrt(3) of the maximum\n * distance between any two vertices\n */\n var i = 0\n if (maxVal[1] - minVal[1] > maxVal[0] - minVal[0]) {\n i = 1\n }\n if (maxVal[2] - minVal[2] > maxVal[i] - minVal[i]) {\n i = 2\n }\n if (minVal[i] >= maxVal[i]) {\n /* All vertices are the same -- normal doesn't matter */\n norm[0] = 0.0\n norm[1] = 0.0\n norm[2] = 1.0\n return\n }\n\n /**\n * Look for a third vertex which forms the triangle with maximum area\n * (Length of normal == twice the triangle area)\n */\n var maxLen2 = 0.0\n val v1 = minVert[i]!!\n val v2 = maxVert[i]!!\n d1[0] = v1.coords[0] - v2.coords[0]\n d1[1] = v1.coords[1] - v2.coords[1]\n d1[2] = v1.coords[2] - v2.coords[2]\n v = vHead.next!!\n while (v !== vHead) {\n d2[0] = v.coords[0] - v2.coords[0]\n d2[1] = v.coords[1] - v2.coords[1]\n d2[2] = v.coords[2] - v2.coords[2]\n tNorm[0] = d1[1] * d2[2] - d1[2] * d2[1]\n tNorm[1] = d1[2] * d2[0] - d1[0] * d2[2]\n tNorm[2] = d1[0] * d2[1] - d1[1] * d2[0]\n val tLen2 = tNorm[0] * tNorm[0] + tNorm[1] * tNorm[1] + tNorm[2] * tNorm[2]\n if (tLen2 > maxLen2) {\n maxLen2 = tLen2\n norm[0] = tNorm[0]\n norm[1] = tNorm[1]\n norm[2] = tNorm[2]\n }\n v = v.next!!\n }\n if (maxLen2 <= 0) {\n /* All points lie on a single line -- any decent normal will do */\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n norm[longAxis(d1)] = 1.0\n }\n }\n\n fun checkOrientation(tess: GLUtessellatorImpl) {\n val fHead = tess.mesh?.fHead!!\n val vHead = tess.mesh?.vHead!!\n\n /**\n * When we compute the normal automatically, we choose the orientation\n * so that the the sum of the signed areas of all contours is non-negative.\n */\n var area = 0.0\n var f = fHead.next!!\n while (f !== fHead) {\n var e = f.anEdge!!\n if (e.winding <= 0) {\n f = f.next!!\n continue\n }\n do {\n area += (e.org!!.s - e.sym!!.org!!.s) * (e.org!!.t + e.sym!!.org!!.t)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.next!!\n }\n if (area < 0) {\n /* Reverse the orientation by flipping all the t-coordinates */\n var v = vHead.next!!\n while (v !== vHead) {\n v.t = -v.t\n v = v.next!!\n }\n tess.tUnit[0] = -tess.tUnit[0]\n tess.tUnit[1] = -tess.tUnit[1]\n tess.tUnit[2] = -tess.tUnit[2]\n }\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n fun glProjectPolygon(tess: GLUtessellatorImpl) {\n val vHead = tess.mesh?.vHead!!\n val norm = DoubleArray(3)\n var computedNormal = false\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm)\n computedNormal = true\n }\n val sUnit = tess.sUnit\n val tUnit = tess.tUnit\n val i = longAxis(norm)\n if (TRUE_PROJECT) {\n /**\n * Choose the initial sUnit vector to be approximately perpendicular\n * to the normal.\n */\n normalize(norm)\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n\n /* Now make it exactly perpendicular */\n val w = dot(sUnit, norm)\n sUnit[0] -= w * norm[0]\n sUnit[1] -= w * norm[1]\n sUnit[2] -= w * norm[2]\n normalize(sUnit)\n\n /* Choose tUnit so that (sUnit,tUnit,norm) form a right-handed frame */\n tUnit[0] = norm[1] * sUnit[2] - norm[2] * sUnit[1]\n tUnit[1] = norm[2] * sUnit[0] - norm[0] * sUnit[2]\n tUnit[2] = norm[0] * sUnit[1] - norm[1] * sUnit[0]\n normalize(tUnit)\n } else {\n /* Project perpendicular to a coordinate axis -- better numerically */\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n tUnit[i] = 0.0\n tUnit[(i + 1) % 3] = if (norm[i] > 0) -S_UNIT_Y else S_UNIT_Y\n tUnit[(i + 2) % 3] = if (norm[i] > 0) S_UNIT_X else -S_UNIT_X\n }\n\n /* Project the vertices onto the sweep plane */\n var v = vHead.next!!\n while (v !== vHead) {\n v.s = dot(v.coords, sUnit)\n v.t = dot(v.coords, tUnit)\n v = v.next!!\n }\n if (computedNormal) {\n checkOrientation(tess)\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nabstract class PriorityQ {\n class PQnode {\n var handle = 0\n }\n\n class PQhandleElem {\n var key: Any? = null\n var node = 0\n }\n\n interface Leq {\n fun leq(key1: Any?, key2: Any?): Boolean\n }\n\n abstract fun pqDeletePriorityQ()\n abstract fun pqInit(): Boolean\n abstract fun pqInsert(keyNew: Any?): Int\n abstract fun pqExtractMin(): Any?\n abstract fun pqDelete(hCurr: Int)\n abstract fun pqMinimum(): Any?\n abstract fun pqIsEmpty(): Boolean // #endif\n\n companion object {\n const val INIT_SIZE = 32\n\n fun leq(x: Any, y: Any) = Geom.vertLeq(x as GLUvertex, y as GLUvertex)\n\n fun pqNewPriorityQ(): PriorityQ = PriorityQSort()\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal class PriorityQHeap : PriorityQ() {\n var nodes = Array(INIT_SIZE + 1) { PQnode() }\n var handles = Array(INIT_SIZE + 1) { PQhandleElem() }\n var size = 0\n var max = INIT_SIZE\n var freeList = 0\n var initialized = false\n\n init {\n nodes[1].handle = 1\n handles[1].key = null\n }\n\n /* really __gl_pqHeapDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n handles = emptyArray()\n nodes = emptyArray()\n }\n\n fun floatDown(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n var child = c shl 1\n if (child < size && leq(h[n[child + 1].handle].key!!, h[n[child].handle].key!!)) {\n ++child\n }\n val hChild = n[child].handle\n if (child > size || leq(h[hCurr].key!!, h[hChild].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hChild\n h[hChild].node = c\n c = child\n }\n }\n\n fun floatUp(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n val parent = c shr 1\n val hParent = n[parent].handle\n if (parent == 0 || leq(h[hParent].key!!, h[hCurr].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hParent\n h[hParent].node = c\n c = parent\n }\n }\n\n /* really __gl_pqHeapInit */\n override fun pqInit(): Boolean {\n /* This method of building a heap is O(n), rather than O(n lg n). */\n var i = size\n while (i >= 1) {\n floatDown(i)\n --i\n }\n initialized = true\n return true\n }\n\n /* really __gl_pqHeapInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n val free: Int\n val curr = ++size\n if (curr * 2 > max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n nodes = Array(max + 1) { if (it < nodes.size) nodes[it] else PQnode() }\n handles = Array(max + 1) { if (it < handles.size) handles[it] else PQhandleElem() }\n }\n if (freeList == 0) {\n free = curr\n } else {\n free = freeList\n freeList = handles[free].node\n }\n nodes[curr].handle = free\n handles[free].node = curr\n handles[free].key = keyNew\n if (initialized) {\n floatUp(curr)\n }\n return free\n }\n\n /* really __gl_pqHeapExtractMin */\n override fun pqExtractMin(): Any? {\n val n = nodes\n val h = handles\n val hMin = n[1].handle\n val min = h[hMin].key\n if (size > 0) {\n n[1].handle = n[size].handle\n h[n[1].handle].node = 1\n h[hMin].key = null\n h[hMin].node = freeList\n freeList = hMin\n if (--size > 0) {\n floatDown(1)\n }\n }\n return min\n }\n\n /* really __gl_pqHeapDelete */\n override fun pqDelete(hCurr: Int) {\n val n = nodes\n val h = handles\n val curr = h[hCurr].node\n n[curr].handle = n[size].handle\n h[n[curr].handle].node = curr\n if (curr <= --size) {\n if (curr <= 1 || leq(h[n[curr shr 1].handle].key!!, h[n[curr].handle].key!!)) {\n floatDown(curr)\n } else {\n floatUp(curr)\n }\n }\n h[hCurr].key = null\n h[hCurr].node = freeList\n freeList = hCurr\n }\n\n override fun pqMinimum(): Any? {\n return handles[nodes[1].handle].key\n }\n\n override fun pqIsEmpty(): Boolean {\n return size == 0\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\ninternal class PriorityQSort: PriorityQ() {\n val heap = PriorityQHeap()\n var keys: Array? = arrayOfNulls(INIT_SIZE)\n\n // JAVA: 'order' contains indices into the keys array.\n // This simulates the indirect pointers used in the original C code\n // (from Frank Suykens, Luciad.com).\n var order: IntArray? = null\n var size = 0\n var max = INIT_SIZE\n var initialized = false\n\n /* really __gl_pqSortDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n heap.pqDeletePriorityQ()\n order = null\n keys = null\n }\n\n private class Stack {\n var p = 0\n var r = 0\n }\n\n /* really __gl_pqSortInit */\n override fun pqInit(): Boolean {\n val stack = arrayOfNulls(50)\n for (k in stack.indices) {\n stack[k] = Stack()\n }\n var top = 0\n var seed = 2016473283\n\n /**\n * Create an array of indirect pointers to the keys, so that we\n * the handles we have returned are still valid.\n */\n order = IntArray(size + 1)\n /* the previous line is a patch to compensate for the fact that IBM */\n /* machines return a null on a malloc of zero bytes (unlike SGI), */\n /* so we have to put in this defense to guard against a memory */\n /* fault four lines down. from fossum@austin.ibm.com. */\n var p = 0\n var r = size - 1\n var piv = 0\n var i = p\n while (i <= r) {\n // indirect pointers: keep an index into the keys array, not a direct pointer to its contents\n order!![i] = piv\n ++piv\n ++i\n }\n\n /**\n * Sort the indirect pointers in descending order,\n * using randomized Quicksort\n */\n stack[top]?.p = p\n stack[top]?.r = r\n ++top\n while (--top >= 0) {\n p = stack[top]!!.p\n r = stack[top]!!.r\n while (r > p + 10) {\n seed = abs(seed * 1539415821 + 1)\n i = p + seed % (r - p + 1)\n piv = order!![i]\n order!![i] = order!![p]\n order!![p] = piv\n i = p - 1\n var j = r + 1\n do {\n do {\n ++i\n } while (gt(keys!![order!![i]]!!, keys!![piv]!!))\n do {\n --j\n } while (lt(keys!![order!![j]]!!, keys!![piv]!!))\n swap(order!!, i, j)\n } while (i < j)\n swap(order!!, i, j) /* Undo last swap */\n if (i - p < r - j) {\n stack[top]?.p = j + 1\n stack[top]?.r = r\n ++top\n r = i - 1\n } else {\n stack[top]?.p = p\n stack[top]?.r = i - 1\n ++top\n p = j + 1\n }\n }\n /* Insertion sort small lists */\n i = p + 1\n while (i <= r) {\n piv = order!![i]\n var j = i\n while (j > p && lt(keys!![order!![j - 1]]!!, keys!![piv]!!)) {\n order!![j] = order!![j - 1]\n --j\n }\n order!![j] = piv\n ++i\n }\n }\n max = size\n initialized = true\n heap.pqInit() /* always succeeds */\n\n/* #ifndef NDEBUG\n p = order;\n r = p + size - 1;\n for (i = p; i < r; ++i) {\n Assertion.doAssert(LEQ( * * (i + 1), **i ));\n }\n #endif*/\n return true\n }\n\n /* really __gl_pqSortInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n if (initialized) {\n return heap.pqInsert(keyNew)\n }\n val curr = size\n if (++size >= max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n // pq->keys = (PQHeapKey *)memRealloc( pq->keys,(size_t)(pq->max * sizeof( pq->keys[0] )));\n val pqKeys = arrayOfNulls(max)\n keys?.copyInto(pqKeys)\n keys = pqKeys\n }\n keys!![curr] = keyNew\n\n /* Negative handles index the sorted array. */\n return -(curr + 1)\n }\n\n /* really __gl_pqSortExtractMin */\n override fun pqExtractMin(): Any? {\n if (size == 0) {\n return heap.pqExtractMin()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heap.pqExtractMin()\n }\n }\n do {\n --size\n } while (size > 0 && keys!![order!![size - 1]] == null)\n return sortMin\n }\n\n /* really __gl_pqSortMinimum */\n override fun pqMinimum(): Any? {\n if (size == 0) {\n return heap.pqMinimum()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heapMin\n }\n }\n return sortMin\n }\n\n /* really __gl_pqSortIsEmpty */\n override fun pqIsEmpty(): Boolean {\n return size == 0 && heap.pqIsEmpty()\n }\n\n /* really __gl_pqSortDelete */\n override fun pqDelete(hCurr: Int) {\n var curr = hCurr\n if (curr >= 0) {\n heap.pqDelete(curr)\n return\n }\n curr = -(curr + 1)\n keys!![curr] = null\n while (size > 0 && keys!![order!![size - 1]] == null) {\n --size\n }\n }\n\n companion object {\n private fun lt(x: Any, y: Any): Boolean {\n return !leq(y, x)\n }\n\n private fun gt(x: Any, y: Any): Boolean {\n return !leq(x, y)\n }\n\n private fun swap(array: IntArray, a: Int, b: Int) {\n val tmp = array[a]\n array[a] = array[b]\n array[b] = tmp\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.kgl.GL_LINE_LOOP\nimport earth.worldwind.util.kgl.GL_TRIANGLES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_FAN\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Render {\n private const val USE_OPTIMIZED_CODE_PATH = false\n private val renderFan = RenderFan()\n private val renderStrip = RenderStrip()\n private val renderTriangle = RenderTriangle()\n\n /************************ Strips and Fans decomposition */\n /**\n * __gl_renderMesh( tess, mesh ) takes a mesh and breaks it into triangle\n * fans, strips, and separate triangles. A substantial effort is made\n * to use as few rendering primitives as possible (ie. to make the fans\n * and strips as large as possible).\n *\n * The rendering output is provided as callbacks (see the api).\n */\n fun glRenderMesh(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n /* Make a list of separate triangles so we can render them all at once */\n tess.lonelyTriList = null\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n f.marked = false\n f = f.next!!\n }\n f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /**\n * We examine all faces in an arbitrary order. Whenever we find\n * an unprocessed face F, we output a group of faces including F\n * whose size is maximum.\n */\n if (f.inside && !f.marked) {\n renderMaximumFaceGroup(tess, f)\n }\n f = f.next!!\n }\n if (tess.lonelyTriList != null) {\n renderLonelyTriangles(tess, tess.lonelyTriList)\n tess.lonelyTriList = null\n }\n }\n\n /**\n * We want to find the largest triangle fan or strip of unmarked faces\n * which includes the given face fOrig. There are 3 possible fans\n * passing through fOrig (one centered at each vertex), and 3 possible\n * strips (one for each CCW permutation of the vertices). Our strategy\n * is to try all of these, and take the primitive which uses the most\n * triangles (a greedy approach).\n */\n fun renderMaximumFaceGroup(tess: GLUtessellatorImpl, fOrig: GLUface) {\n val e = fOrig.anEdge!!\n var max = FaceCount()\n max.size = 1\n max.eStart = e\n max.render = renderTriangle\n if (!tess.flagBoundary) {\n var newFace = maximumFan(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n }\n max.render?.render(tess, max.eStart!!, max.size)\n }\n\n /* Macros which keep track of faces we have marked temporarily, and allow\n * us to backtrack when necessary. With triangle fans, this is not\n * really necessary, since the only awkward case is a loop of triangles\n * around a single origin vertex. However with strips the situation is\n * more complicated, and we need a general tracking method like the\n * one here.\n */\n private fun marked(f: GLUface): Boolean {\n return !f.inside || f.marked\n }\n\n private fun addToTrail(f: GLUface, t: GLUface?): GLUface {\n f.trail = t\n f.marked = true\n return f\n }\n\n private fun freeTrail(t: GLUface?) {\n var t = t\n while (t != null) {\n t.marked = false\n t = t.trail\n }\n }\n\n /**\n * eOrig.Lface is the face we want to render. We want to find the size\n * of a maximal fan around eOrig.Org. To do this we just walk around\n * the origin vertex as far as possible in both directions.\n */\n fun maximumFan(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderFan)\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++newFace.size\n e = e.oNext!!\n }\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++newFace.size\n e = e.sym?.lNext!!\n }\n newFace.eStart = e\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n private fun isEven(n: Long): Boolean {\n return n and 0x1L == 0L\n }\n\n /**\n * Here we are looking for a maximal strip that contains the vertices\n * eOrig.Org, eOrig.Dst, eOrig.Lnext.Dst (in that order or the\n * reverse, such that all triangles are oriented CCW).\n *\n * Again we walk forward and backward as far as possible. However for\n * strips there is a twist: to get CCW orientations, there must be\n * an *even* number of triangles in the strip on one side of eOrig.\n * We walk the strip starting on a side with an even number of triangles;\n * if both side have an odd number, we are forced to shorten one side.\n */\n fun maximumStrip(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderStrip)\n var headSize = 0L\n var tailSize = 0L\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.lNext?.sym!!\n if (marked(e.lFace!!)) break\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.oNext!!\n }\n val eTail = e\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.lNext!!\n if (marked(e.sym?.lFace!!)) break\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.oNext?.sym!!\n }\n val eHead = e\n newFace.size = tailSize + headSize\n when {\n isEven(tailSize) -> {\n newFace.eStart = eTail.sym\n }\n isEven(headSize) -> {\n newFace.eStart = eHead\n }\n else -> {\n /**\n * Both sides have odd length, we must shorten one of them. In fact,\n * we must start from eHead to guarantee inclusion of eOrig.Lface.\n */\n --newFace.size\n newFace.eStart = eHead.oNext\n }\n }\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n /**\n * Now we render all the separate triangles which could not be\n * grouped into a triangle fan or strip.\n */\n fun renderLonelyTriangles(tess: GLUtessellatorImpl, f: GLUface?) {\n var f = f\n var edgeState = -1 /* force edge state output for first vertex */\n tess.callBeginOrBeginData(GL_TRIANGLES)\n while (f != null) {\n /* Loop once for each edge (there will always be 3 edges) */\n var e = f.anEdge!!\n do {\n if (tess.flagBoundary) {\n /**\n * Set the \"edge state\" to true just before we output the\n * first vertex of each edge on the polygon boundary.\n */\n val newState = if (!e.sym!!.lFace!!.inside) 1 else 0\n if (edgeState != newState) {\n edgeState = newState\n tess.callEdgeFlagOrEdgeFlagData(edgeState != 0)\n }\n }\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.trail\n }\n tess.callEndOrEndData()\n }\n\n /************************ Boundary contour decomposition */\n /**\n * __gl_renderBoundary( tess, mesh ) takes a mesh, and outputs one\n * contour for each face marked \"inside\". The rendering output is\n * provided as callbacks (see the api).\n */\n fun glRenderBoundary(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n if (f.inside) {\n tess.callBeginOrBeginData(GL_LINE_LOOP)\n var e = f.anEdge!!\n do {\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n tess.callEndOrEndData()\n }\n f = f.next!!\n }\n }\n\n /************************ Quick-and-dirty decomposition */\n private const val SIGN_INCONSISTENT = 2\n /**\n * If check==false, we compute the polygon normal and place it in norm[].\n * If check==true, we check that each triangle in the fan from v0 has a\n * consistent orientation with respect to norm[]. If triangles are\n * consistently oriented CCW, return 1; if CW, return -1; if all triangles\n * are degenerate return 0; otherwise (no consistent orientation) return\n * SIGN_INCONSISTENT.\n */\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray, check: Boolean): Int {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val n = DoubleArray(3)\n var sign = 0\n\n /**\n * Find the polygon normal. It is important to get a reasonable\n * normal even when the polygon is self-intersecting (eg. a bowtie).\n * Otherwise, the computed normal could be very tiny, but perpendicular\n * to the true plane of the polygon due to numerical noise. Then all\n * the triangles would appear to be degenerate and we would incorrectly\n * decompose the polygon as a fan (or simply not render it at all).\n *\n * We use a sum-of-triangles normal algorithm rather than the more\n * efficient sum-of-trapezoids method (used in CheckOrientation()\n * in normal.c). This lets us explicitly reverse the signed area\n * of some triangles to get a reasonable normal in the self-intersecting\n * case.\n */\n if (!check) {\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n }\n var vc = 1\n var xc = v[vc].coords[0] - v[0].coords[0]\n var yc = v[vc].coords[1] - v[0].coords[1]\n var zc = v[vc].coords[2] - v[0].coords[2]\n while (++vc < vn) {\n val xp = xc\n val yp = yc\n val zp = zc\n xc = v[vc].coords[0] - v[0].coords[0]\n yc = v[vc].coords[1] - v[0].coords[1]\n zc = v[vc].coords[2] - v[0].coords[2]\n\n /* Compute (vp - v0) cross (vc - v0) */\n n[0] = yp * zc - zp * yc\n n[1] = zp * xc - xp * zc\n n[2] = xp * yc - yp * xc\n val dot = n[0] * norm[0] + n[1] * norm[1] + n[2] * norm[2]\n if (!check) {\n /**\n * Reverse the contribution of back-facing triangles to get\n * a reasonable normal for self-intersecting polygons (see above)\n */\n if (dot >= 0) {\n norm[0] += n[0]\n norm[1] += n[1]\n norm[2] += n[2]\n } else {\n norm[0] -= n[0]\n norm[1] -= n[1]\n norm[2] -= n[2]\n }\n } else if (dot != 0.0) {\n /* Check the new orientation for consistency with previous triangles */\n sign = if (dot > 0) {\n if (sign < 0) return SIGN_INCONSISTENT\n 1\n } else {\n if (sign > 0) return SIGN_INCONSISTENT\n -1\n }\n }\n }\n return sign\n }\n\n /**\n * __gl_renderCache( tess ) takes a single contour and tries to render it\n * as a triangle fan. This handles convex polygons, as well as some\n * non-convex polygons if we get lucky.\n *\n * Returns true if the polygon was successfully rendered. The rendering\n * output is provided as callbacks (see the api).\n */\n fun glRenderCache(tess: GLUtessellatorImpl): Boolean {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val norm = DoubleArray(3)\n if (tess.cacheCount < 3) {\n /* Degenerate contour -- no output */\n return true\n }\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm, false)\n }\n val sign = computeNormal(tess, norm, true)\n if (sign == SIGN_INCONSISTENT) {\n /* Fan triangles did not have a consistent orientation */\n return false\n }\n if (sign == 0) {\n /* All triangles were degenerate */\n return true\n }\n return if (!USE_OPTIMIZED_CODE_PATH) {\n false\n } else {\n /* Make sure we do the right thing for each winding rule */\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD, GLU.GLU_TESS_WINDING_NONZERO -> {}\n GLU.GLU_TESS_WINDING_POSITIVE -> if (sign < 0) return true\n GLU.GLU_TESS_WINDING_NEGATIVE -> if (sign > 0) return true\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return true\n }\n tess.callBeginOrBeginData(if (tess.boundaryOnly) GL_LINE_LOOP else if (tess.cacheCount > 3) GL_TRIANGLE_FAN else GL_TRIANGLES)\n tess.callVertexOrVertexData(v[0].data!!)\n if (sign > 0) {\n var vc = 1\n while (vc < vn) {\n tess.callVertexOrVertexData(v[vc].data!!)\n ++vc\n }\n } else {\n var vc = vn - 1\n while (vc > 0) {\n tess.callVertexOrVertexData(v[vc].data!!)\n --vc\n }\n }\n tess.callEndOrEndData()\n true\n }\n }\n\n /**\n * This structure remembers the information we need about a primitive\n * to be able to render it later, once we have determined which\n * primitive is able to use the most triangles.\n */\n internal class FaceCount {\n constructor()\n constructor(size: Long, eStart: GLUhalfEdge?, render: RenderCallBack?) {\n this.size = size\n this.eStart = eStart\n this.render = render\n }\n\n /**\n * number of triangles used\n */\n var size = 0L\n /**\n * edge where this primitive starts\n */\n var eStart: GLUhalfEdge? = null\n var render: RenderCallBack? = null\n }\n\n internal interface RenderCallBack {\n fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long)\n }\n\n private class RenderTriangle : RenderCallBack {\n /**\n * Just add the triangle to a triangle list, so we can render all\n * the separate triangles at once.\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n tess.lonelyTriList = addToTrail(e.lFace!!, tess.lonelyTriList)\n }\n }\n\n private class RenderFan : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a fan starting from\n * edge \"e\". The fan *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_FAN)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n\n private class RenderStrip : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a strip starting from\n * edge \"e\". The strip *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_STRIP)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.lNext?.sym!!\n tess.callVertexOrVertexData(e.org?.data!!)\n if (marked(e.lFace!!)) break\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.tessellator.Dict.DictLeq\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Sweep {\n // #ifdef FOR_TRITE_TEST_PROGRAM\n // extern void DebugEvent( GLUtessellator *tess );\n // #else\n @Suppress(\"UNUSED_PARAMETER\")\n private fun debugEvent(tess: GLUtessellatorImpl) {}\n\n // #endif\n /*\n * Invariants for the Edge Dictionary.\n * - each pair of adjacent edges e2=Succ(e1) satisfies EdgeLeq(e1,e2)\n * at any valid location of the sweep event\n * - if EdgeLeq(e2,e1) as well (at any valid sweep event), then e1 and e2\n * share a common endpoint\n * - for each e, e.Dst has been processed, but not e.Org\n * - each edge e satisfies VertLeq(e.Dst,event) && VertLeq(event,e.Org)\n * where \"event\" is the current sweep line event.\n * - no edge e has zero length\n *\n * Invariants for the Mesh (the processed portion).\n * - the portion of the mesh left of the sweep line is a planar graph,\n * ie. there is *some* way to embed it in the plane\n * - no processed edge has zero length\n * - no two processed vertices have identical coordinates\n * - each \"inside\" region is monotone, ie. can be broken into two chains\n * of monotonically increasing vertices according to VertLeq(v1,v2)\n * - a non-invariant: these chains may intersect (very slightly)\n *\n * Invariants for the Sweep.\n * - if none of the edges incident to the event vertex have an activeRegion\n * (ie. none of these edges are in the edge dictionary), then the vertex\n * has only right-going edges.\n * - if an edge is marked \"fixUpperEdge\" (it is a temporary edge introduced\n * by ConnectRightVertex), then it is the only right-going edge from\n * its associated vertex. (This says that these edges exist only\n * when it is necessary.)\n */\n /**\n * When we merge two edges into one, we need to compute the combined\n * winding of the new edge.\n */\n private fun addWinding(eDst: GLUhalfEdge, eSrc: GLUhalfEdge) {\n eDst.winding += eSrc.winding\n eDst.sym!!.winding += eSrc.sym!!.winding\n }\n\n private fun regionBelow(r: ActiveRegion): ActiveRegion {\n return Dict.dictKey(Dict.dictPred(r.nodeUp!!)) as ActiveRegion\n }\n\n private fun regionAbove(r: ActiveRegion): ActiveRegion? {\n return Dict.dictKey(Dict.dictSucc(r.nodeUp!!)) as ActiveRegion?\n }\n\n /**\n * Both edges must be directed from right to left (this is the canonical\n * direction for the upper edge of each region).\n *\n * The strategy is to evaluate a \"t\" value for each edge at the\n * current sweep line position, given by tess.event. The calculations\n * are designed to be very stable, but of course they are not perfect.\n *\n * Special case: if both edge destinations are at the sweep event,\n * we sort the edges by slope (they would otherwise compare equally).\n */\n fun edgeLeq(tess: GLUtessellatorImpl, reg1: ActiveRegion, reg2: ActiveRegion): Boolean {\n val event = tess.event!!\n val e1 = reg1.eUp\n val e2 = reg2.eUp\n if (e1.sym?.org === event) {\n return if (e2.sym?.org === event) {\n /**\n * Two edges right of the sweep line which meet at the sweep event.\n * Sort them by slope.\n */\n if (Geom.vertLeq(e1.org!!, e2.org!!)) {\n Geom.edgeSign(e2.sym?.org!!, e1.org!!, e2.org!!) <= 0\n } else Geom.edgeSign(e1.sym?.org!!, e2.org!!, e1.org!!) >= 0\n } else Geom.edgeSign(e2.sym?.org!!, event, e2.org!!) <= 0\n }\n if (e2.sym?.org === event) {\n return Geom.edgeSign(e1.sym?.org!!, event, e1.org!!) >= 0\n }\n\n /* General case - compute signed distance *from* e1, e2 to event */\n val t1 = Geom.edgeEval(e1.sym?.org!!, event, e1.org!!)\n val t2 = Geom.edgeEval(e2.sym?.org!!, event, e2.org!!)\n return t1 >= t2\n }\n\n fun deleteRegion(reg: ActiveRegion) {\n reg.eUp.activeRegion = null\n Dict.dictDelete(reg.nodeUp!!) /* __gl_dictListDelete */\n }\n\n /**\n * Replace an upper edge which needs fixing (see ConnectRightVertex).\n */\n fun fixUpperEdge(reg: ActiveRegion, newEdge: GLUhalfEdge): Boolean {\n if (!Mesh.glMeshDelete(reg.eUp)) return false\n reg.fixUpperEdge = false\n reg.eUp = newEdge\n newEdge.activeRegion = reg\n return true\n }\n\n fun topLeftRegion(reg: ActiveRegion): ActiveRegion? {\n var reg = reg\n val org = reg.eUp.org\n\n /* Find the region above the uppermost edge with the same origin */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.org === org)\n\n /**\n * If the edge above was a temporary edge introduced by ConnectRightVertex,\n * now is the time to fix it.\n */\n if (reg.fixUpperEdge) {\n val e = Mesh.glMeshConnect(regionBelow(reg).eUp.sym!!, reg.eUp.lNext!!)\n if (!fixUpperEdge(reg, e)) return null\n reg = regionAbove(reg)!!\n }\n return reg\n }\n\n fun topRightRegion(reg: ActiveRegion): ActiveRegion {\n var reg = reg\n val dst = reg.eUp.sym?.org\n\n /* Find the region above the uppermost edge with the same destination */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.sym?.org === dst)\n return reg\n }\n\n /**\n * Add a new active region to the sweep line, *somewhere* below \"regAbove\"\n * (according to where the new edge belongs in the sweep-line dictionary).\n * The upper edge of the new region will be \"eNewUp\".\n * Winding number and \"inside\" flag are not updated.\n */\n fun addRegionBelow(\n tess: GLUtessellatorImpl,\n regAbove: ActiveRegion,\n eNewUp: GLUhalfEdge\n ): ActiveRegion {\n val regNew = ActiveRegion(eNewUp)\n /* __gl_dictListInsertBefore */\n regNew.nodeUp = Dict.dictInsertBefore(tess.dict!!, regAbove.nodeUp!!, regNew)\n regNew.fixUpperEdge = false\n regNew.sentinel = false\n regNew.dirty = false\n eNewUp.activeRegion = regNew\n return regNew\n }\n\n fun isWindingInside(tess: GLUtessellatorImpl, n: Int): Boolean {\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD -> return n and 1 != 0\n GLU.GLU_TESS_WINDING_NONZERO -> return n != 0\n GLU.GLU_TESS_WINDING_POSITIVE -> return n > 0\n GLU.GLU_TESS_WINDING_NEGATIVE -> return n < 0\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return n >= 2 || n <= -2\n }\n throw RuntimeException()\n /*NOTREACHED*/\n }\n\n fun computeWinding(tess: GLUtessellatorImpl, reg: ActiveRegion) {\n reg.windingNumber = regionAbove(reg)!!.windingNumber + reg.eUp.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n }\n\n /**\n * Delete a region from the sweep line. This happens when the upper\n * and lower chains of a region meet (at a vertex on the sweep line).\n * The \"inside\" flag is copied to the appropriate mesh face (we could\n * not do this before -- since the structure of the mesh is always\n * changing, this face may not have even existed until now).\n */\n fun finishRegion(reg: ActiveRegion) {\n val e = reg.eUp\n val f = e.lFace!!\n f.inside = reg.inside\n f.anEdge = e /* optimization for __gl_meshTessellateMonoRegion() */\n deleteRegion(reg)\n }\n\n /**\n * We are given a vertex with one or more left-going edges. All affected\n * edges should be in the edge dictionary. Starting at regFirst.eUp,\n * we walk down deleting all regions where both edges have the same\n * origin vOrg. At the same time we copy the \"inside\" flag from the\n * active region to the face, since at this point each face will belong\n * to at most one region (this was not necessarily true until this point\n * in the sweep). The walk stops at the region above regLast; if regLast\n * is null we walk as far as possible. At the same time we relink the\n * mesh if necessary, so that the ordering of edges around vOrg is the\n * same as in the dictionary.\n */\n fun finishLeftRegions(regFirst: ActiveRegion, regLast: ActiveRegion?): GLUhalfEdge {\n var regPrev = regFirst\n var ePrev = regFirst.eUp\n while (regPrev !== regLast) {\n regPrev.fixUpperEdge = false /* placement was OK */\n val reg = regionBelow(regPrev)\n var e = reg.eUp\n if (e.org !== ePrev.org) {\n if (!reg.fixUpperEdge) {\n /**\n * Remove the last left-going edge. Even though there are no further\n * edges in the dictionary with this origin, there may be further\n * such edges in the mesh (if we are adding left edges to a vertex\n * that has already been processed). Thus it is important to call\n * FinishRegion rather than just DeleteRegion.\n */\n finishRegion(regPrev)\n break\n }\n /**\n * If the edge below was a temporary edge introduced by\n * ConnectRightVertex, now is the time to fix it.\n */\n e = Mesh.glMeshConnect(ePrev.oNext?.sym!!, e.sym!!)\n if (!fixUpperEdge(reg, e)) throw RuntimeException()\n }\n\n /* Relink edges so that ePrev.Onext == e */\n if (ePrev.oNext !== e) {\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev, e)) throw RuntimeException()\n }\n finishRegion(regPrev) /* may change reg.eUp */\n ePrev = reg.eUp\n regPrev = reg\n }\n return ePrev\n }\n\n /**\n * Purpose: insert right-going edges into the edge dictionary, and update\n * winding numbers and mesh connectivity appropriately. All right-going\n * edges share a common origin vOrg. Edges are inserted CCW starting at\n * eFirst; the last edge inserted is eLast.Sym.Lnext. If vOrg has any\n * left-going edges already processed, then eTopLeft must be the edge\n * such that an imaginary upward vertical segment from vOrg would be\n * contained between eTopLeft.Sym.Lnext and eTopLeft; otherwise eTopLeft\n * should be null.\n */\n fun addRightEdges(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eFirst: GLUhalfEdge, eLast: GLUhalfEdge?, eTopLeft: GLUhalfEdge?,\n cleanUp: Boolean\n ) {\n var eTopLeft = eTopLeft\n var firstTime = true\n\n /* Insert the new right-going edges in the dictionary */\n var e = eFirst\n do {\n addRegionBelow(tess, regUp, e.sym!!)\n e = e.oNext!!\n } while (e !== eLast)\n\n /**\n * Walk *all* right-going edges from e.Org, in the dictionary order,\n * updating the winding numbers of each region, and re-linking the mesh\n * edges to match the dictionary ordering (if necessary).\n */\n if (eTopLeft == null) {\n eTopLeft = regionBelow(regUp).eUp.sym?.oNext\n }\n var regPrev = regUp\n var ePrev = eTopLeft!!\n var reg: ActiveRegion\n while (true) {\n reg = regionBelow(regPrev)\n e = reg.eUp.sym!!\n if (e.org !== ePrev.org) break\n if (e.oNext !== ePrev) {\n /* Unlink e from its current position, and relink below ePrev */\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev.sym?.lNext!!, e)) throw RuntimeException()\n }\n /* Compute the winding number and \"inside\" flag for the new regions */\n reg.windingNumber = regPrev.windingNumber - e.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n\n /**\n * Check for two outgoing edges with same slope -- process these\n * before any intersection tests (see example in __gl_computeInterior).\n */\n regPrev.dirty = true\n if (!firstTime && checkForRightSplice(tess, regPrev)) {\n addWinding(e, ePrev)\n deleteRegion(regPrev)\n if (!Mesh.glMeshDelete(ePrev)) throw RuntimeException()\n }\n firstTime = false\n regPrev = reg\n ePrev = e\n }\n regPrev.dirty = true\n if (cleanUp) {\n /* Check for intersections between newly adjacent edges. */\n walkDirtyRegions(tess, regPrev)\n }\n }\n\n fun callCombine(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n data: Array, weights: FloatArray, needed: Boolean\n ) {\n val coords = DoubleArray(3)\n\n /* Copy coord data in case the callback changes it. */\n coords[0] = isect.coords[0]\n coords[1] = isect.coords[1]\n coords[2] = isect.coords[2]\n val outData = arrayOfNulls(1)\n tess.callCombineOrCombineData(coords, data, weights, outData)\n isect.data = outData[0]\n if (isect.data == null) {\n if (!needed) {\n isect.data = data[0]\n } else if (!tess.fatalError) {\n /**\n * The only way fatal error is when two edges are found to intersect,\n * but the user has not provided the callback necessary to handle\n * generated intersection points.\n */\n tess.callErrorOrErrorData(GLU.GLU_TESS_NEED_COMBINE_CALLBACK)\n tess.fatalError = true\n }\n }\n }\n\n /**\n * Two vertices with idential coordinates are combined into one.\n * e1.Org is kept, while e2.Org is discarded.\n */\n fun spliceMergeVertices(tess: GLUtessellatorImpl, e1: GLUhalfEdge, e2: GLUhalfEdge) {\n val data = arrayOfNulls(4)\n val weights = floatArrayOf(0.5f, 0.5f, 0.0f, 0.0f)\n data[0] = e1.org?.data\n data[1] = e2.org?.data\n callCombine(tess, e1.org!!, data, weights, false)\n if (!Mesh.glMeshSplice(e1, e2)) throw RuntimeException()\n }\n\n /**\n * Find some weights which describe how the intersection vertex is\n * a linear combination of \"org\" and \"dest\". Each of the two edges\n * which generated \"isect\" is allocated 50% of the weight; each edge\n * splits the weight between its org and dst according to the\n * relative distance to \"isect\".\n */\n fun vertexWeights(\n isect: GLUvertex, org: GLUvertex, dst: GLUvertex,\n weights: FloatArray\n ) {\n val t1 = Geom.vertL1dist(org, isect)\n val t2 = Geom.vertL1dist(dst, isect)\n weights[0] = (0.5 * t2 / (t1 + t2)).toFloat()\n weights[1] = (0.5 * t1 / (t1 + t2)).toFloat()\n isect.coords[0] += weights[0] * org.coords[0] + weights[1] * dst.coords[0]\n isect.coords[1] += weights[0] * org.coords[1] + weights[1] * dst.coords[1]\n isect.coords[2] += weights[0] * org.coords[2] + weights[1] * dst.coords[2]\n }\n\n /**\n * We've computed a new intersection point, now we need a \"data\" pointer\n * from the user so that we can refer to this new vertex in the\n * rendering callbacks.\n */\n fun getIntersectData(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n orgUp: GLUvertex, dstUp: GLUvertex,\n orgLo: GLUvertex, dstLo: GLUvertex\n ) {\n val data = arrayOfNulls(4)\n val weights = FloatArray(4)\n val weights1 = FloatArray(2)\n val weights2 = FloatArray(2)\n data[0] = orgUp.data\n data[1] = dstUp.data\n data[2] = orgLo.data\n data[3] = dstLo.data\n isect.coords[2] = 0.0\n isect.coords[1] = isect.coords[2]\n isect.coords[0] = isect.coords[1]\n vertexWeights(isect, orgUp, dstUp, weights1)\n vertexWeights(isect, orgLo, dstLo, weights2)\n weights1.copyInto(weights, 0)\n weights2.copyInto(weights, 2)\n callCombine(tess, isect, data, weights, true)\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Org is above eLo, or eLo.Org is below eUp (depending on which\n * origin is leftmost).\n *\n * The main purpose is to splice right-going edges with the same\n * dest vertex and nearly identical slopes (ie. we can't distinguish\n * the slopes numerically). However the splicing can also help us\n * to recover from numerical errors. For example, suppose at one\n * point we checked eUp and eLo, and decided that eUp.Org is barely\n * above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * our test so that now eUp.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants.\n *\n * One possibility is to check these edges for intersection again\n * (ie. CheckForIntersect). This is what we do if possible. However\n * CheckForIntersect requires that tess.event lies between eUp and eLo,\n * so that it has something to fall back on when the intersection\n * calculation gives us an unusable answer. So, for those cases where\n * we can't check for intersection, this routine fixes the problem\n * by just splicing the offending vertex into the other edge.\n * This is a guaranteed solution, no matter how degenerate things get.\n * Basically this is a combinatorial solution to a numerical problem.\n */\n fun checkForRightSplice(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.org!!, eLo.org!!)) {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Org appears to be below eLo */\n if (!Geom.vertEq(eUp.org!!, eLo.org!!)) {\n /* Splice eUp.Org into eLo */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n } else if (eUp.org !== eLo.org) {\n /* merge the two vertices, discarding eUp.Org */\n tess.pq?.pqDelete(eUp.org?.pqHandle!!) /* __gl_pqSortDelete */\n spliceMergeVertices(tess, eLo.sym?.lNext!!, eUp)\n }\n } else {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Org appears to be above eUp, so splice eLo.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n }\n return true\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Sym.Org is above eLo, or eLo.Sym.Org is below eUp (depending on which\n * destination is rightmost).\n *\n * Theoretically, this should always be true. However, splitting an edge\n * into two pieces can change the results of previous tests. For example,\n * suppose at one point we checked eUp and eLo, and decided that eUp.Sym.Org\n * is barely above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * the test so that now eUp.Sym.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants\n * (otherwise new edges might get inserted in the wrong place in the\n * dictionary, and bad stuff will happen).\n *\n * We fix the problem by just splicing the offending vertex into the\n * other edge.\n */\n fun checkForLeftSplice(regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.sym?.org!!, eLo.sym?.org!!)) {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.sym?.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Sym.Org is above eUp, so splice eLo.Sym.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n val e = Mesh.glMeshSplitEdge(eUp)\n if (!Mesh.glMeshSplice(eLo.sym!!, e)) throw RuntimeException()\n e.lFace?.inside = regUp.inside\n } else {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.sym?.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Sym.Org is below eLo, so splice eUp.Sym.Org into eLo */\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n val e = Mesh.glMeshSplitEdge(eLo)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym!!)) throw RuntimeException()\n e.sym?.lFace?.inside = regUp.inside\n }\n return true\n }\n\n /**\n * Check the upper and lower edges of the given region to see if\n * they intersect. If so, create the intersection and add it\n * to the data structures.\n *\n * Returns true if adding the new intersection resulted in a recursive\n * call to AddRightEdges(); in this case all \"dirty\" regions have been\n * checked for intersections, and possibly regUp has been deleted.\n */\n fun checkForIntersect(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n val orgUp = eUp.org!!\n val orgLo = eLo.org!!\n val dstUp = eUp.sym?.org!!\n val dstLo = eLo.sym?.org!!\n val isect = GLUvertex()\n if (orgUp === orgLo) return false /* right endpoints are the same */\n val tMinUp = orgUp.t.coerceAtMost(dstUp.t)\n val tMaxLo = orgLo.t.coerceAtLeast(dstLo.t)\n if (tMinUp > tMaxLo) return false /* t ranges do not overlap */\n if (Geom.vertLeq(orgUp, orgLo)) {\n if (Geom.edgeSign(dstLo, orgUp, orgLo) > 0) return false\n } else {\n if (Geom.edgeSign(dstUp, orgLo, orgUp) < 0) return false\n }\n\n /* At this point the edges intersect, at least marginally */\n debugEvent(tess)\n Geom.edgeIntersect(dstUp, orgUp, dstLo, orgLo, isect)\n if (Geom.vertLeq(isect, tess.event!!)) {\n /**\n * The intersection point lies slightly to the left of the sweep line,\n * so move it until it''s slightly to the right of the sweep line.\n * (If we had perfect numerical precision, this would never happen\n * in the first place). The easiest and safest thing to do is\n * replace the intersection by tess.event.\n */\n isect.s = tess.event!!.s\n isect.t = tess.event!!.t\n }\n /**\n * Similarly, if the computed intersection lies to the right of the\n * rightmost origin (which should rarely happen), it can cause\n * unbelievable inefficiency on sufficiently degenerate inputs.\n * (If you have the test program, try running test54.d with the\n * \"X zoom\" option turned on).\n */\n val orgMin = if (Geom.vertLeq(orgUp, orgLo)) orgUp else orgLo\n if (Geom.vertLeq(orgMin, isect)) {\n isect.s = orgMin.s\n isect.t = orgMin.t\n }\n if (Geom.vertEq(isect, orgUp) || Geom.vertEq(isect, orgLo)) {\n /* Easy case -- intersection at one of the right endpoints */\n checkForRightSplice(tess, regUp)\n return false\n }\n if ((!Geom.vertEq(dstUp, tess.event!!)\n && Geom.edgeSign(dstUp, tess.event!!, isect) >= 0)\n || (!Geom.vertEq(dstLo, tess.event!!)\n && Geom.edgeSign(dstLo, tess.event!!, isect) <= 0)\n ) {\n /**\n * Very unusual -- the new upper or lower edge would pass on the\n * wrong side of the sweep event, or through it. This can happen\n * due to very small numerical errors in the intersection calculation.\n */\n if (dstLo === tess.event) {\n /* Splice dstLo into eUp, and process the new region(s) */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eUp = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n addRightEdges(tess, regUp, eUp.sym?.lNext!!, eUp, eUp, true)\n return true\n }\n if (dstUp === tess.event) {\n /* Splice dstUp into eLo, and process the new region(s) */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo = regUp\n regUp = topRightRegion(regUp)\n val e = regionBelow(regUp).eUp.sym?.oNext\n regLo.eUp = eLo.sym?.lNext!!\n eLo = finishLeftRegions(regLo, null)\n addRightEdges(tess, regUp, eLo.oNext!!, eUp.sym?.oNext, e, true)\n return true\n }\n /**\n * Special case: called from ConnectRightVertex. If either\n * edge passes on the wrong side of tess.event, split it\n * (and wait for ConnectRightVertex to splice it appropriately).\n */\n if (Geom.edgeSign(dstUp, tess.event!!, isect) >= 0) {\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n eUp.org?.s = tess.event!!.s\n eUp.org?.t = tess.event!!.t\n }\n if (Geom.edgeSign(dstLo, tess.event!!, isect) <= 0) {\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n Mesh.glMeshSplitEdge(eLo.sym!!)\n eLo.org?.s = tess.event!!.s\n eLo.org?.t = tess.event!!.t\n }\n /* leave the rest for ConnectRightVertex */\n return false\n }\n\n /**\n * General case -- split both edges, splice into new vertex.\n * When we do the splice operation, the order of the arguments is\n * arbitrary as far as correctness goes. However, when the operation\n * creates a new face, the work done is proportional to the size of\n * the new face. We expect the faces in the processed part of\n * the mesh (ie. eUp.Lface) to be smaller than the faces in the\n * unprocessed original contours (which will be eLo.Sym.Lnext.Lface).\n */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n eUp.org?.s = isect.s\n eUp.org?.t = isect.t\n eUp.org?.pqHandle = tess.pq!!.pqInsert(eUp.org) /* __gl_pqSortInsert */\n getIntersectData(tess, eUp.org!!, orgUp, dstUp, orgLo, dstLo)\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n regionAbove(regUp)?.dirty = regUp.dirty\n return false\n }\n\n /**\n * When the upper or lower edge of any region changes, the region is\n * marked \"dirty\". This routine walks through all the dirty regions\n * and makes sure that the dictionary invariants are satisfied\n * (see the comments at the beginning of this file). Of course\n * new dirty regions can be created as we make changes to restore\n * the invariants.\n */\n fun walkDirtyRegions(tess: GLUtessellatorImpl, regUp: ActiveRegion) {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n while (true) {\n\n /* Find the lowest dirty region (we walk from the bottom up). */\n while (regLo.dirty) {\n regUp = regLo\n regLo = regionBelow(regLo)\n }\n if (!regUp.dirty) {\n regLo = regUp\n regUp = regionAbove(regUp) ?: return\n if (!regUp.dirty) return /* We've walked all the dirty regions */\n }\n regUp.dirty = false\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n if (eUp.sym?.org !== eLo.sym?.org) {\n /* Check that the edge ordering is obeyed at the Dst vertices. */\n if (checkForLeftSplice(regUp)) {\n\n /**\n * If the upper or lower edge was marked fixUpperEdge, then\n * we no longer need it (since these edges are needed only for\n * vertices which otherwise have no right-going edges).\n */\n if (regLo.fixUpperEdge) {\n deleteRegion(regLo)\n if (!Mesh.glMeshDelete(eLo)) throw RuntimeException()\n regLo = regionBelow(regUp)\n eLo = regLo.eUp\n } else if (regUp.fixUpperEdge) {\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n eUp = regUp.eUp\n }\n }\n }\n if (eUp.org !== eLo.org) {\n if (eUp.sym?.org !== eLo.sym?.org && !regUp.fixUpperEdge && !regLo.fixUpperEdge\n && (eUp.sym?.org === tess.event || eLo.sym?.org === tess.event)\n ) {\n /**\n * When all else fails in CheckForIntersect(), it uses tess.event\n * as the intersection location. To make this possible, it requires\n * that tess.event lie between the upper and lower edges, and also\n * that neither of these is marked fixUpperEdge (since in the worst\n * case it might splice one of these edges into tess.event, and\n * violate the invariant that fixable edges are the only right-going\n * edge from their associated vertex).\n */\n if (checkForIntersect(tess, regUp)) {\n /* WalkDirtyRegions() was called recursively; we're done */\n return\n }\n } else {\n /**\n * Even though we can't use CheckForIntersect(), the Org vertices\n * may violate the dictionary edge ordering. Check and correct this.\n */\n checkForRightSplice(tess, regUp)\n }\n }\n if (eUp.org === eLo.org && eUp.sym?.org === eLo.sym?.org) {\n /* A degenerate loop consisting of only two edges -- delete it. */\n addWinding(eLo, eUp)\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n }\n }\n }\n\n /**\n * Purpose: connect a \"right\" vertex vEvent (one where all edges go left)\n * to the unprocessed portion of the mesh. Since there are no right-going\n * edges, two regions (one above vEvent and one below) are being merged\n * into one. \"regUp\" is the upper of these two regions.\n *\n * There are two reasons for doing this (adding a right-going edge):\n * - if the two regions being merged are \"inside\", we must add an edge\n * to keep them separated (the combined region would not be monotone).\n * - in any case, we must leave some record of vEvent in the dictionary,\n * so that we can merge vEvent with features that we have not seen yet.\n * For example, maybe there is a vertical edge which passes just to\n * the right of vEvent; we would like to splice vEvent into this edge.\n *\n * However, we don't want to connect vEvent to just any vertex. We don''t\n * want the new edge to cross any other edges; otherwise we will create\n * intersection vertices even when the input data had no self-intersections.\n * (This is a bad thing; if the user's input data has no intersections,\n * we don't want to generate any false intersections ourselves.)\n *\n * Our eventual goal is to connect vEvent to the leftmost unprocessed\n * vertex of the combined region (the union of regUp and regLo).\n * But because of unseen vertices with all right-going edges, and also\n * new vertices which may be created by edge intersections, we don''t\n * know where that leftmost unprocessed vertex is. In the meantime, we\n * connect vEvent to the closest vertex of either chain, and mark the region\n * as \"fixUpperEdge\". This flag says to delete and reconnect this edge\n * to the next processed vertex on the boundary of the combined region.\n * Quite possibly the vertex we connected to will turn out to be the\n * closest one, in which case we won''t need to make any changes.\n */\n fun connectRightVertex(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eBottomLeft: GLUhalfEdge\n ) {\n var regUp = regUp\n var eBottomLeft = eBottomLeft\n var eTopLeft = eBottomLeft.oNext!!\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n var degenerate = false\n if (eUp.sym?.org !== eLo.sym?.org) {\n checkForIntersect(tess, regUp)\n }\n\n /**\n * Possible new degeneracies: upper or lower edge of regUp may pass\n * through vEvent, or may coincide with new intersection vertex\n */\n if (Geom.vertEq(eUp.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eTopLeft.sym?.lNext!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eTopLeft = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n degenerate = true\n }\n if (Geom.vertEq(eLo.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eBottomLeft, eLo.sym?.lNext!!)) throw RuntimeException()\n eBottomLeft = finishLeftRegions(regLo, null)\n degenerate = true\n }\n if (degenerate) {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n return\n }\n\n /**\n * Non-degenerate situation -- need to add a temporary, fixable edge.\n * Connect to the closer of eLo.Org, eUp.Org.\n */\n var eNew = if (Geom.vertLeq(eLo.org!!, eUp.org!!)) eLo.sym?.lNext!! else eUp\n eNew = Mesh.glMeshConnect(eBottomLeft.oNext?.sym!!, eNew)\n\n /**\n * Prevent cleanup, otherwise eNew might disappear before we've even\n * had a chance to mark it as a temporary edge.\n */\n addRightEdges(tess, regUp, eNew, eNew.oNext, eNew.oNext, false)\n eNew.sym?.activeRegion?.fixUpperEdge = true\n walkDirtyRegions(tess, regUp)\n }\n\n /**\n * Because vertices at exactly the same location are merged together\n * before we process the sweep event, some degenerate cases can't occur.\n * However if someone eventually makes the modifications required to\n * merge features which are close together, the cases below marked\n * TOLERANCE_NONZERO will be useful. They were debugged before the\n * code to merge identical vertices in the main loop was added.\n */\n private const val TOLERANCE_NONZERO = false\n /**\n * The event vertex lies exacty on an already-processed edge or vertex.\n * Adding the new vertex involves splicing it into the already-processed\n * part of the mesh.\n */\n fun connectLeftDegenerate(\n tess: GLUtessellatorImpl,\n regUp: ActiveRegion, vEvent: GLUvertex\n ) {\n var regUp = regUp\n val e = regUp.eUp\n if (Geom.vertEq(e.org!!, vEvent)) {\n /**\n * e.Org is an unprocessed vertex - just combine them, and wait\n * for e.Org to be pulled from the queue\n */\n spliceMergeVertices(tess, e, vEvent.anEdge!!)\n return\n }\n if (!Geom.vertEq(e.sym?.org!!, vEvent)) {\n /* General case -- splice vEvent into edge e which passes through it */\n Mesh.glMeshSplitEdge(e.sym!!)\n if (regUp.fixUpperEdge) {\n /* This edge was fixable -- delete unused portion of original edge */\n if (!Mesh.glMeshDelete(e.oNext!!)) throw RuntimeException()\n regUp.fixUpperEdge = false\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, e)) throw RuntimeException()\n sweepEvent(tess, vEvent) /* recurse */\n return\n }\n regUp = topRightRegion(regUp)\n val reg = regionBelow(regUp)\n var eTopRight = reg.eUp.sym!!\n val eLast = eTopRight.oNext\n var eTopLeft = eLast\n if (reg.fixUpperEdge) {\n /**\n * Here e.Sym.Org has only a single fixable edge going right.\n * We can delete it since now we have some real right-going edges.\n */\n deleteRegion(reg)\n if (!Mesh.glMeshDelete(eTopRight)) throw RuntimeException()\n eTopRight = eTopLeft?.sym?.lNext!!\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, eTopRight)) throw RuntimeException()\n if (!Geom.edgeGoesLeft(eTopLeft!!)) {\n /* e.Sym.Org had no left-going edges -- indicate this to AddRightEdges() */\n eTopLeft = null\n }\n addRightEdges(tess, regUp, eTopRight.oNext!!, eLast, eTopLeft, true)\n }\n\n /**\n * Purpose: connect a \"left\" vertex (one where both edges go right)\n * to the processed portion of the mesh. Let R be the active region\n * containing vEvent, and let U and L be the upper and lower edge\n * chains of R. There are two possibilities:\n *\n * - the normal case: split R into two regions, by connecting vEvent to\n * the rightmost vertex of U or L lying to the left of the sweep line\n *\n * - the degenerate case: if vEvent is close enough to U or L, we\n * merge vEvent into that edge chain. The subcases are:\n *\t- merging with the rightmost vertex of U or L\n *\t- merging with the active edge of U or L\n *\t- merging with an already-processed portion of U or L\n */\n fun connectLeftVertex(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n /* Get a pointer to the active region containing vEvent */\n val tmp = ActiveRegion(vEvent.anEdge?.sym!!)\n val regUp = Dict.dictKey(Dict.dictSearch(tess.dict!!, tmp)) as ActiveRegion\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n\n /* Try merging with U or L first */\n if (Geom.edgeSign(eUp.sym?.org!!, vEvent, eUp.org!!) == 0.0) {\n connectLeftDegenerate(tess, regUp, vEvent)\n return\n }\n\n /**\n * Connect vEvent to rightmost processed vertex of either chain.\n * e.Sym.Org is the vertex that we will connect to vEvent.\n */\n val reg = if (Geom.vertLeq(eLo.sym?.org!!, eUp.sym?.org!!)) regUp else regLo\n if (regUp.inside || reg.fixUpperEdge) {\n val eNew = if (reg === regUp) {\n Mesh.glMeshConnect(vEvent.anEdge?.sym!!, eUp.lNext!!)\n } else {\n val tempHalfEdge = Mesh.glMeshConnect(eLo.sym?.oNext?.sym!!, vEvent.anEdge!!)\n tempHalfEdge.sym!!\n }\n if (reg.fixUpperEdge) {\n if (!fixUpperEdge(reg, eNew)) throw RuntimeException()\n } else {\n computeWinding(tess, addRegionBelow(tess, regUp, eNew))\n }\n sweepEvent(tess, vEvent)\n } else {\n /**\n * The new vertex is in a region which does not belong to the polygon.\n * We don''t need to connect this vertex to the rest of the mesh.\n */\n addRightEdges(tess, regUp, vEvent.anEdge!!, vEvent.anEdge, null, true)\n }\n }\n\n /**\n * Does everything necessary when the sweep line crosses a vertex.\n * Updates the mesh and the edge dictionary.\n */\n fun sweepEvent(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n tess.event = vEvent /* for access in EdgeLeq() */\n debugEvent(tess)\n\n /**\n * Check if this vertex is the right endpoint of an edge that is\n * already in the dictionary. In this case we don't need to waste\n * time searching for the location to insert new edges.\n */\n var e = vEvent.anEdge!!\n while (e.activeRegion == null) {\n e = e.oNext!!\n if (e === vEvent.anEdge) {\n /* All edges go right -- not incident to any processed edges */\n connectLeftVertex(tess, vEvent)\n return\n }\n }\n\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n val regUp = topLeftRegion(e.activeRegion!!)!!\n val reg = regionBelow(regUp)\n val eTopLeft = reg.eUp\n val eBottomLeft = finishLeftRegions(reg, null)\n\n /**\n * Next we process all the right-going edges from vEvent. This\n * involves adding the edges to the dictionary, and creating the\n * associated \"active regions\" which record information about the\n * regions between adjacent dictionary edges.\n */\n if (eBottomLeft.oNext === eTopLeft) {\n /* No right-going edges -- add a temporary \"fixable\" edge */\n connectRightVertex(tess, regUp, eBottomLeft)\n } else {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n }\n }\n\n /**\n * Make the sentinel coordinates big enough that they will never be\n * merged with real input features. (Even with the largest possible\n * input contour and the maximum tolerance of 1.0, no merging will be\n * done with coordinates larger than 3 * GLU_TESS_MAX_COORD).\n */\n private const val SENTINEL_COORD = 4.0 * GLU.GLU_TESS_MAX_COORD\n /**\n * We add two sentinel edges above and below all other edges,\n * to avoid special cases at the top and bottom.\n */\n fun addSentinel(tess: GLUtessellatorImpl, t: Double) {\n val e = Mesh.glMeshMakeEdge(tess.mesh!!)\n e.org?.s = SENTINEL_COORD\n e.org?.t = t\n e.sym?.org?.s = -SENTINEL_COORD\n e.sym?.org?.t = t\n tess.event = e.sym?.org /* initialize it */\n val reg = ActiveRegion(e)\n reg.windingNumber = 0\n reg.inside = false\n reg.fixUpperEdge = false\n reg.sentinel = true\n reg.dirty = false\n reg.nodeUp = Dict.dictInsert(tess.dict!!, reg) /* __gl_dictListInsertBefore */\n }\n\n /**\n * We maintain an ordering of edge intersections with the sweep line.\n * This order is maintained in a dynamic dictionary.\n */\n fun initEdgeDict(tess: GLUtessellatorImpl) {\n /* __gl_dictListNewDict */\n tess.dict = Dict.dictNewDict(\n tess,\n object : DictLeq {\n override fun leq(frame: Any, key1: Any?, key2: Any?): Boolean {\n return edgeLeq(\n tess,\n key1 as ActiveRegion,\n key2 as ActiveRegion\n )\n }\n }\n )\n addSentinel(tess, -SENTINEL_COORD)\n addSentinel(tess, SENTINEL_COORD)\n }\n\n fun doneEdgeDict(tess: GLUtessellatorImpl) {\n while (true) {\n val reg = Dict.dictKey(Dict.dictMin(tess.dict!!)) as ActiveRegion? ?: break\n /**\n * At the end of all processing, the dictionary should contain\n * only the two sentinel edges, plus at most one \"fixable\" edge\n * created by ConnectRightVertex().\n */\n deleteRegion(reg)\n /* __gl_meshDelete( reg.eUp )*/\n }\n Dict.dictDeleteDict(tess.dict!!) /* __gl_dictListDeleteDict */\n }\n\n /**\n * Remove zero-length edges, and contours with fewer than 3 vertices.\n */\n fun removeDegenerateEdges(tess: GLUtessellatorImpl) {\n val eHead = tess.mesh?.eHead!!\n\n /*LINTED*/\n var e = eHead.next!!\n while (e !== eHead) {\n var eNext = e.next!!\n var eLnext = e.lNext!!\n if (Geom.vertEq(e.org!!, e.sym?.org!!) && e.lNext?.lNext !== e) {\n /* Zero-length edge, contour has at least 3 edges */\n spliceMergeVertices(tess, eLnext, e) /* deletes e.Org */\n if (!Mesh.glMeshDelete(e)) throw RuntimeException() /* e is a self-loop */\n e = eLnext\n eLnext = e.lNext!!\n }\n if (eLnext.lNext === e) {\n /* Degenerate contour (one or two edges) */\n if (eLnext !== e) {\n if (eLnext === eNext || eLnext === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(eLnext)) throw RuntimeException()\n }\n if (e === eNext || e === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(e)) throw RuntimeException()\n }\n e = eNext\n }\n }\n\n /**\n * Insert all vertices into the priority queue which determines the\n * order in which vertices cross the sweep line.\n */\n fun initPriorityQ(tess: GLUtessellatorImpl): Boolean {\n /* __gl_pqSortNewPriorityQ */\n tess.pq =\n PriorityQ.pqNewPriorityQ()\n val pq = tess.pq!!\n val vHead = tess.mesh?.vHead!!\n var v = vHead.next!!\n while (v !== vHead) {\n v.pqHandle = pq.pqInsert(v) /* __gl_pqSortInsert */\n v = v.next!!\n }\n if (!pq.pqInit()) { /* __gl_pqSortInit */\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n tess.pq = null\n return false\n }\n return true\n }\n\n fun donePriorityQ(tess: GLUtessellatorImpl) {\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n }\n\n /**\n * Delete any degenerate faces with only two edges. WalkDirtyRegions()\n * will catch almost all of these, but it won't catch degenerate faces\n * produced by splice operations on already-processed edges.\n * The two places this can happen are in FinishLeftRegions(), when\n * we splice in a \"temporary\" edge produced by ConnectRightVertex(),\n * and in CheckForLeftSplice(), where we splice already-processed\n * edges to ensure that our dictionary invariants are not violated\n * by numerical errors.\n *\n * In both these cases it is *very* dangerous to delete the offending\n * edge at the time, since one of the routines further up the stack\n * will sometimes be keeping a pointer to that edge.\n */\n fun removeDegenerateFaces(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n val e = f.anEdge!!\n if (e.lNext?.lNext === e) {\n /* A face with only two edges */\n addWinding(e.oNext!!, e)\n if (!Mesh.glMeshDelete(e)) return false\n }\n f = fNext\n }\n return true\n }\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by tess.windingRule.\n * Each interior region is guaranteed be monotone.\n */\n fun glComputeInterior(tess: GLUtessellatorImpl): Boolean {\n tess.fatalError = false\n\n /**\n * Each vertex defines an event for our sweep line. Start by inserting\n * all the vertices in a priority queue. Events are processed in\n * lexicographic order, ie.\n *\n *\te1 < e2 iff e1.x < e2.x || (e1.x == e2.x && e1.y < e2.y)\n */\n removeDegenerateEdges(tess)\n if (!initPriorityQ(tess)) return false /* if error */\n initEdgeDict(tess)\n\n /* __gl_pqSortExtractMin */\n while (true) {\n val v = tess.pq?.pqExtractMin() as GLUvertex? ?: break\n while (true) {\n var vNext = tess.pq?.pqMinimum() as GLUvertex? /* __gl_pqSortMinimum */\n if (vNext == null || !Geom.vertEq(vNext, v)) break\n\n /**\n * Merge together all vertices at exactly the same location.\n * This is more efficient than processing them one at a time,\n * simplifies the code (see ConnectLeftDegenerate), and is also\n * important for correct handling of certain degenerate cases.\n * For example, suppose there are two identical edges A and B\n * that belong to different contours (so without this code they would\n * be processed by separate sweep events). Suppose another edge C\n * crosses A and B from above. When A is processed, we split it\n * at its intersection point with C. However this also splits C,\n * so when we insert B we may compute a slightly different\n * intersection point. This might leave two edges with a small\n * gap between them. This kind of error is especially obvious\n * when using boundary extraction (GLU_TESS_BOUNDARY_ONLY).\n */\n vNext = tess.pq?.pqExtractMin() as GLUvertex /* __gl_pqSortExtractMin*/\n spliceMergeVertices(tess, v.anEdge!!, vNext.anEdge!!)\n }\n sweepEvent(tess, v)\n }\n\n /* Set tess.event for debugging purposes */\n /* __GL_DICTLISTKEY */\n /* __GL_DICTLISTMIN */\n tess.event = (Dict.dictKey(\n Dict.dictMin(\n tess.dict!!\n )\n ) as ActiveRegion).eUp.org\n debugEvent(tess)\n doneEdgeDict(tess)\n donePriorityQ(tess)\n if (!removeDegenerateFaces(tess.mesh!!)) return false\n Mesh.glMeshCheckMesh(tess.mesh!!)\n return true\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessMono {\n /**\n * __gl_meshTessellateMonoRegion( face ) tessellates a monotone region\n * (what else would it do??) The region must consist of a single\n * loop of half-edges (see mesh.h) oriented CCW. \"Monotone\" in this\n * case means that any vertical line intersects the interior of the\n * region in a single interval.\n *\n * Tessellation consists of adding interior edges (actually pairs of\n * half-edges), to split the region into non-overlapping triangles.\n *\n * The basic idea is explained in Preparata and Shamos (which I don''t\n * have handy right now), although their implementation is more\n * complicated than this one. The are two edge chains, an upper chain\n * and a lower chain. We process all vertices from both chains in order,\n * from right to left.\n *\n * The algorithm ensures that the following invariant holds after each\n * vertex is processed: the untessellated region consists of two\n * chains, where one chain (say the upper) is a single edge, and\n * the other chain is concave. The left vertex of the single edge\n * is always to the left of all vertices in the concave chain.\n *\n * Each step consists of adding the rightmost unprocessed vertex to one\n * of the two chains, and forming a fan of triangles from the rightmost\n * of two chain endpoints. Determining whether we can add each triangle\n * to the fan is a simple orientation test. By making the fan as large\n * as possible, we restore the invariant (check it yourself).\n */\n fun glMeshTessellateMonoRegion(face: GLUface) {\n /**\n * All edges are oriented CCW around the boundary of the region.\n * First, find the half-edge whose origin vertex is rightmost.\n * Since the sweep goes from left to right, face->anEdge should\n * be close to the edge we want.\n */\n var up = face.anEdge!!\n while (Geom.vertLeq(up.sym?.org!!, up.org!!)) {\n up = up.oNext?.sym!!\n }\n while (Geom.vertLeq(up.org!!, up.sym?.org!!)) {\n up = up.lNext!!\n }\n var lo = up.oNext?.sym!!\n while (up.lNext !== lo) {\n if (Geom.vertLeq(up.sym?.org!!, lo.org!!)) {\n /**\n * up.Sym.Org is on the left. It is safe to form triangles from lo.Org.\n * The EdgeGoesLeft test guarantees progress even when some triangles\n * are CW, given that the upper and lower chains are truly monotone.\n */\n while (lo.lNext !== up && (Geom.edgeGoesLeft(lo.lNext!!)\n || Geom.edgeSign(lo.org!!, lo.sym?.org!!, lo.lNext?.sym?.org!!) <= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n lo = lo.oNext?.sym!!\n } else {\n /* lo.Org is on the left. We can make CCW triangles from up.Sym.Org. */\n while (lo.lNext !== up && (Geom.edgeGoesRight(up.oNext?.sym!!)\n || Geom.edgeSign(up.sym?.org!!, up.org!!, up.oNext?.sym?.org!!) >= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(up, up.oNext?.sym!!)\n up = tempHalfEdge.sym!!\n }\n up = up.lNext!!\n }\n }\n while (lo.lNext?.lNext !== up) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n }\n\n /**\n * __gl_meshTessellateInterior( mesh ) tessellates each region of\n * the mesh which is marked \"inside\" the polygon. Each such region\n * must be monotone.\n */\n fun glMeshTessellateInterior(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Make sure we don''t try to tessellate the new triangles. */\n val next = f.next!!\n if (f.inside) {\n glMeshTessellateMonoRegion(f)\n }\n f = next\n }\n return true\n }\n\n /**\n * __gl_meshDiscardExterior( mesh ) zaps (ie. sets to NULL) all faces\n * which are not marked \"inside\" the polygon. Since further mesh operations\n * on NULL faces are not allowed, the main purpose is to clean up the\n * mesh so that exterior loops are not represented in the data structure.\n */\n fun glMeshDiscardExterior(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Since f will be destroyed, save its next pointer. */\n val next = f.next!!\n if (!f.inside) {\n Mesh.glMeshZapFace(f)\n }\n f = next\n }\n }\n\n /**\n * __gl_meshSetWindingNumber( mesh, value, keepOnlyBoundary ) resets the\n * winding numbers on all edges so that regions marked \"inside\" the\n * polygon have a winding number of \"value\", and regions outside\n * have a winding number of 0.\n *\n * If keepOnlyBoundary is TRUE, it also deletes all edges which do not\n * separate an interior region from an exterior one.\n */\n fun glMeshSetWindingNumber(mesh: GLUmesh, value: Int, keepOnlyBoundary: Boolean): Boolean {\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n val eNext = e.next!!\n if (e.sym?.lFace?.inside != e.lFace?.inside) {\n\n /* This is a boundary edge (one side is interior, one is exterior). */\n e.winding = if (e.lFace!!.inside) value else -value\n } else {\n\n /* Both regions are interior, or both are exterior. */\n if (!keepOnlyBoundary) {\n e.winding = 0\n } else {\n if (!Mesh.glMeshDelete(e)) return false\n }\n }\n e = eNext\n }\n return true\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessState {\n const val T_DORMANT = 0\n const val T_IN_POLYGON = 1\n const val T_IN_CONTOUR = 2\n}","package earth.worldwind.util.http\n\nimport io.ktor.client.*\nimport io.ktor.client.plugins.*\n\n/**\n * Returns new platform-dependent HTTP client instance configured by default.\n * In case some special configuration will be required on each platform, then make this function \"expected\".\n */\n@Suppress(\"FunctionName\")\nfun DefaultHttpClient(\n connectTimeout: Long = 3000L,\n requestTimeout: Long = 30000L,\n config: HttpClientConfig<*>.() -> Unit = {}\n) = HttpClient {\n config(this)\n\n install(HttpTimeout) {\n connectTimeoutMillis = connectTimeout\n requestTimeoutMillis = requestTimeout\n }\n}\n","package earth.worldwind.util.math\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Viewport\nimport kotlin.math.*\n\n/**\n * Restricts a value to the range [min, max] degrees, clamping values outside the range. Values less than min are\n * returned as min, and values greater than max are returned as max. Values within the range are returned\n * unmodified.\n *
\n * The result of this method is undefined if min is greater than max.\n *\n * @param value the values to clamp\n * @param min the minimum value\n * @param max the maximum value\n *\n * @return the specified values clamped to the range [min, max] degrees\n */\nfun clamp(value: Double, min: Double, max: Double) = value.coerceIn(min, max)\n\n/**\n * Returns the fractional part of a specified number\n *\n * @param value the number whose fractional part to compute\n *\n * @return The fractional part of the specified number: value - floor(value)\n */\nfun fract(value: Double) = value - floor(value)\n\n/**\n * Computes the linear interpolation of two values according to a specified fractional amount. The fractional amount\n * is interpreted as a relative proportion of the two values, where 0.0 indicates the first value, 0.5 indicates a\n * 50/50 mix of the two values, and 1.0 indicates the second value.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two values in the range [0, 1]\n * @param value1 the first value\n * @param value2 the second value\n *\n * @return the interpolated value\n */\nfun interpolate(amount: Double, value1: Double, value2: Double) = (1 - amount) * value1 + amount * value2\n\n/**\n * Returns the integer modulus of a specified number. This differs from the % operator in that the result is\n * always positive when the modulus is positive. For example -1 % 10 = -1, whereas mod(-1, 10) = 1.\n *\n * @param value the integer number whose modulus to compute\n * @param modulus the modulus\n *\n * @return the remainder after dividing the number by the modulus\n */\nfun mod(value: Int, modulus: Int) = (value % modulus + modulus) % modulus\n\n/**\n * Computes the bounding rectangle for a unit square after applying a transformation matrix to the square's four\n * corners.\n *\n * @param unitSquareTransform the matrix to apply to the unit square\n * @param result a pre-allocated Viewport in which to return the computed bounding rectangle\n *\n * @return the result argument set to the computed bounding rectangle\n */\nfun boundingRectForUnitSquare(unitSquareTransform: Matrix4, result: Viewport): Viewport {\n val m = unitSquareTransform.m\n\n // transform of (0, 0)\n val x1 = m[3]\n val y1 = m[7]\n\n // transform of (1, 0)\n val x2 = m[0] + m[3]\n val y2 = m[4] + m[7]\n\n // transform of (0, 1)\n val x3 = m[1] + m[3]\n val y3 = m[5] + m[7]\n\n // transform of (1, 1)\n val x4 = m[0] + m[1] + m[3]\n val y4 = m[4] + m[5] + m[7]\n val minX = min(min(x1, x2), min(x3, x4)).toInt()\n val maxX = max(max(x1, x2), max(x3, x4)).toInt()\n val minY = min(min(y1, y2), min(y3, y4)).toInt()\n val maxY = max(max(y1, y2), max(y3, y4)).toInt()\n return result.set(minX, minY, maxX - minX, maxY - minY)\n}\n\n/**\n * Indicates whether a specified value is a power of two.\n *\n * @param value the value to test\n *\n * @return true if the specified value is a power of two, false othwerwise\n */\nfun isPowerOfTwo(value: Int) = value != 0 && value and value - 1 == 0\n\n/**\n * Returns the value that is the nearest power of 2 greater than or equal to the given value.\n *\n * @param value the reference value. The power of 2 returned is greater than or equal to this value.\n *\n * @return the value that is the nearest power of 2 greater than or equal to the reference value\n */\nfun powerOfTwoCeiling(value: Int): Int {\n val pow = ceil(ln(value.toDouble()) / ln(2.0)).toInt()\n return 1 shl pow\n}","package earth.worldwind\n\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.gesture.*\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.WheelEvent\nimport kotlin.math.cos\nimport kotlin.math.max\nimport kotlin.math.sin\n\n/**\n * This class provides the default window controller for WorldWind for controlling the globe via user interaction.\n */\nopen class BasicWorldWindowController(wwd: WorldWindow): WorldWindowController(wwd) {\n val primaryDragRecognizer: GestureRecognizer = DragRecognizer(wwd.canvas).also { it.addListener(this) }\n val secondaryDragRecognizer: GestureRecognizer = DragRecognizer(wwd.canvas).also {\n it.addListener(this)\n it.button = 2 // secondary mouse button\n }\n val panRecognizer: GestureRecognizer = PanRecognizer(wwd.canvas).also { it.addListener(this) }\n val pinchRecognizer: GestureRecognizer = PinchRecognizer(wwd.canvas).also { it.addListener(this) }\n val rotationRecognizer: GestureRecognizer = RotationRecognizer(wwd.canvas).also { it.addListener(this) }\n val tiltRecognizer: GestureRecognizer = TiltRecognizer(wwd.canvas).also { it.addListener(this) }\n// val tapRecognizer: GestureRecognizer = TapRecognizer(wwd.canvas).also { it.addListener(this) }\n// val clickRecognizer: GestureRecognizer = ClickRecognizer(wwd.canvas).also { it.addListener(this) }\n /**\n * A copy of the viewing parameters at the start of a gesture as a look at view.\n */\n protected val beginLookAt = LookAt()\n protected val beginLookAtPoint = Vec3()\n /**\n * The current state of the viewing parameters during a gesture as a look at view.\n */\n protected val lookAt = LookAt()\n protected val lastPoint = Vec2()\n protected var lastRotation = 0.0\n protected var lastWheelEvent = 0\n protected var activeGestures = 0\n\n init {\n // Establish the dependencies between gesture recognizers. The pan, pinch and rotate gesture may recognize\n // simultaneously with each other.\n panRecognizer.recognizeSimultaneouslyWith(pinchRecognizer)\n panRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n pinchRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n\n // Since the tilt gesture is a subset of the pan gesture, pan will typically recognize before tilt,\n // effectively suppressing tilt. Establish a dependency between the other touch gestures and tilt to provide\n // tilt an opportunity to recognize.\n panRecognizer.requireRecognizerToFail(tiltRecognizer)\n pinchRecognizer.requireRecognizerToFail(tiltRecognizer)\n rotationRecognizer.requireRecognizerToFail(tiltRecognizer)\n }\n\n override fun handleEvent(event: Event) {\n super.handleEvent(event)\n if (!event.defaultPrevented) {\n if (event.type == \"wheel\") {\n event.preventDefault()\n handleWheelEvent(event as WheelEvent)\n } else GestureRecognizer.allRecognizers.forEach { r -> if (r.target == wwd.canvas) r.handleEvent(event) }\n }\n }\n\n override fun gestureStateChanged(recognizer: GestureRecognizer) {\n when(recognizer) {\n primaryDragRecognizer, panRecognizer -> handlePanOrDrag(recognizer)\n secondaryDragRecognizer -> handleSecondaryDrag(recognizer)\n pinchRecognizer -> handlePinch(recognizer)\n rotationRecognizer -> handleRotation(recognizer)\n tiltRecognizer -> handleTilt(recognizer)\n// clickRecognizer, tapRecognizer -> handleClickOrTap(recognizer)\n }\n }\n\n// protected open fun handleClickOrTap(recognizer: GestureRecognizer) {\n// if (recognizer.state == RECOGNIZED) {\n// val pickPoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n//\n// // Identify if the top picked object contains a URL for hyperlinking\n// val pickList = wwd.pick(pickPoint)\n// val userObject = pickList.topPickedObject?.userObject\n// // If the url object was appended, open the hyperlink\n// if (userObject is Renderable && userObject.hasUserProperty(\"url\")) {\n// window.open(userObject.getUserProperty(\"url\") as String, \"_blank\")\n// }\n// }\n// }\n\n protected open fun handlePanOrDrag(recognizer: GestureRecognizer) {\n if (wwd.engine.globe.is2D) handlePanOrDrag2D(recognizer) else handlePanOrDrag3D(recognizer)\n }\n\n protected open fun handlePanOrDrag3D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastPoint.set(0.0, 0.0)\n }\n CHANGED -> {\n // Convert the translation from screen coordinates to arc degrees. Use the view's range as a\n // metric for converting screen pixels to meters, and use the globe's radius for converting from meters\n // to arc degrees. Transform viewport pixel size to canvas client pixel size.\n val globe = wwd.engine.globe\n val globeRadius = max(globe.equatorialRadius, globe.polarRadius)\n val distance = max(1.0, lookAt.range)\n val metersPerPixel = wwd.engine.pixelSizeAtDistance(distance) * wwd.engine.densityFactor\n val forwardMeters = (ty - lastPoint.y) * metersPerPixel\n val sideMeters = -(tx - lastPoint.x) * metersPerPixel\n val forwardRadians = forwardMeters / globeRadius\n val sideRadians = sideMeters / globeRadius\n\n // Apply the change in latitude and longitude to the view, relative to the current heading.\n val sinHeading = sin(lookAt.heading.inRadians)\n val cosHeading = cos(lookAt.heading.inRadians)\n lookAt.position.apply {\n latitude = latitude.plusRadians(forwardRadians * cosHeading - sideRadians * sinHeading)\n longitude = longitude.plusRadians(forwardRadians * sinHeading + sideRadians * cosHeading)\n }\n lastPoint.set(tx, ty)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePanOrDrag2D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n wwd.engine.globe.geographicToCartesian(\n beginLookAt.position.latitude,\n beginLookAt.position.longitude,\n beginLookAt.position.altitude,\n beginLookAtPoint\n )\n }\n CHANGED -> {\n val metersPerPixel = wwd.engine.pixelSizeAtDistance(lookAt.range) * wwd.engine.densityFactor\n val forwardMeters = ty * metersPerPixel\n val sideMeters = - tx * metersPerPixel\n\n // Adjust the change in latitude and longitude based on observation point heading.\n val heading = lookAt.heading\n val sinHeading = sin(heading.inRadians)\n val cosHeading = cos(heading.inRadians)\n val x = beginLookAtPoint.x + forwardMeters * sinHeading + sideMeters * cosHeading\n val y = beginLookAtPoint.y + forwardMeters * cosHeading - sideMeters * sinHeading\n wwd.engine.globe.cartesianToGeographic(x, y, beginLookAtPoint.z, lookAt.position)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleSecondaryDrag(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the current translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the gesture translation to a fraction of an angle.\n val headingDegrees = 180.0 * tx / wwd.canvas.clientWidth\n val tiltDegrees = 90.0 * ty / wwd.canvas.clientHeight\n\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.heading = beginLookAt.heading.plusDegrees(headingDegrees)\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePinch(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val scale = (recognizer as PinchRecognizer).scaleWithOffset\n\n when(state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> if (scale != 0.0) {\n // Apply the change in pinch scale to this view's range, relative to the range when the gesture began.\n lookAt.range = beginLookAt.range / scale\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleRotation(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val rotation = (recognizer as RotationRecognizer).rotationWithOffset\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastRotation = 0.0\n }\n CHANGED -> {\n // Apply the change in gesture rotation to this view's current heading. We apply relative to the\n // current heading rather than the heading when the gesture began in order to work simultaneously with\n // pan operations that also modify the current heading.\n lookAt.heading = lookAt.heading.minusDegrees(rotation - lastRotation)\n lastRotation = rotation\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleTilt(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the gesture translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the translation to a fraction of an angle.\n val tiltDegrees = -90.0 * ty / wwd.canvas.clientHeight\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleWheelEvent(event: WheelEvent) {\n val timeStamp = event.timeStamp.toInt()\n if (timeStamp - lastWheelEvent > 500) {\n wwd.engine.cameraAsLookAt(lookAt)\n lastWheelEvent = timeStamp\n }\n\n // Normalize the wheel delta based on the wheel delta mode. This produces a roughly consistent delta across\n // browsers and input devices.\n val normalizedDelta = when(event.deltaMode) {\n WheelEvent.DOM_DELTA_PIXEL -> event.deltaY\n WheelEvent.DOM_DELTA_LINE -> event.deltaY * 20.0\n WheelEvent.DOM_DELTA_PAGE -> event.deltaY * 200.0\n else -> event.deltaY\n }\n\n // Compute a zoom scale factor by adding a fraction of the normalized delta to 1. When multiplied by the\n // view's range, this has the effect of zooming out or zooming in depending on whether the delta is\n // positive or negative, respectfully.\n val scale = 1.0 + (normalizedDelta / 1000.0)\n\n // Apply the scale to this view's properties.\n lookAt.range *= scale\n applyChanges()\n }\n\n protected open fun applyChanges() {\n // Update camera view\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n protected open fun gestureDidBegin() {\n if (activeGestures++ == 0) {\n wwd.engine.cameraAsLookAt(beginLookAt)\n lookAt.copy(beginLookAt)\n }\n }\n\n protected open fun gestureDidEnd() {\n // this should always be the case, but we check anyway\n if (activeGestures > 0) activeGestures--\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.LookAt\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.KeyboardEvent\n\n/**\n * The KeyboardControls module provides keyboard controls for the globe.\n * Note: the canvas must be focusable this can be accomplished by establishing the \"tabindex\"\n * on the canvas element.\n */\nopen class KeyboardControls(\n /**\n * The WorldWindow associated with these controls.\n */\n protected val wwd: WorldWindow\n) {\n /**\n * Enable/disable keyboard events processing\n */\n var isEnabled = true\n /**\n * The incremental amount to increase or decrease the eye distance (for zoom) each cycle.\n */\n var zoomIncrement = 0.01f\n /**\n * The scale factor governing the pan speed. Increased values cause faster panning.\n */\n var panIncrement = 0.0000000005f\n /**\n * The incremental amount to increase or decrease the tilt (in degrees) each cycle.\n */\n var tiltIncrement = 0.5\n /**\n * The current state of the viewing parameters during an operation as a look at view.\n */\n protected val lookAt = LookAt()\n /**\n * Is key down?\n */\n protected var isKeyDown = false\n /**\n * Controls the globe with the keyboard.\n */\n protected val handleKeyDown = EventListener { event ->\n if (!isEnabled || event !is KeyboardEvent) return@EventListener\n\n isKeyDown = true\n wwd.engine.cameraAsLookAt(lookAt)\n\n // TODO: find a way to make this code portable for different keyboard layouts\n when (event.keyCode) {\n 187, 61 -> { // + key || +/= key\n handleZoom(\"zoomIn\")\n event.preventDefault()\n }\n 189, 173 -> { // - key || _/- key\n handleZoom(\"zoomOut\")\n event.preventDefault()\n }\n 33 -> { // Page Up\n handleTilt(\"tiltUp\")\n event.preventDefault()\n }\n 34 -> { // Page down\n handleTilt(\"tiltDown\")\n event.preventDefault()\n }\n 37 -> { // Left arrow\n handlePan(\"panLeft\")\n event.preventDefault()\n }\n 38 -> { // Up arrow\n handlePan(\"panUp\")\n event.preventDefault()\n }\n 39 -> { // Right arrow\n handlePan(\"panRight\")\n event.preventDefault()\n }\n 40 -> { // Down arrow\n handlePan(\"panDown\")\n event.preventDefault()\n }\n 78 -> { // N key\n resetHeading()\n event.preventDefault()\n }\n 82 -> { // R key\n resetHeadingAndTilt()\n event.preventDefault()\n }\n }\n }\n /**\n * On keyboard event finished.\n */\n protected val handleKeyUp = EventListener { event->\n if (isKeyDown) {\n isKeyDown = false\n event.preventDefault()\n }\n }\n\n init {\n // The tabIndex must be set for the keyboard controls to work\n val tabIndex = wwd.canvas.tabIndex\n if (tabIndex < 0) wwd.canvas.tabIndex = 0\n // Add keyboard listeners\n wwd.addEventListener(\"keydown\", handleKeyDown)\n wwd.addEventListener(\"keyup\", handleKeyUp)\n // Ensure keyboard controls are operational by setting the focus to the canvas\n wwd.addEventListener(\"click\", EventListener { if (isEnabled) wwd.canvas.focus() })\n }\n\n /**\n * Reset the view to North up.\n */\n protected open fun resetHeading() {\n lookAt.heading = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * Reset the view to North up and nadir.\n */\n protected open fun resetHeadingAndTilt() {\n lookAt.heading = Angle.ZERO\n lookAt.tilt = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * This function is called by the timer to perform the Pan operation.\n */\n protected open fun handlePan(operation: String) {\n if (isKeyDown) {\n var heading = lookAt.heading\n val distance = panIncrement * lookAt.range\n when (operation) {\n \"panDown\" -> heading -= Angle.POS180\n \"panLeft\" -> heading -= Angle.POS90\n \"panRight\" -> heading += Angle.POS90\n }\n lookAt.position.greatCircleLocation(heading, distance, lookAt.position)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handlePan, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Range operation.\n */\n protected open fun handleZoom(operation: String) {\n if (isKeyDown) {\n if (operation == \"zoomIn\") lookAt.range *= (1 - zoomIncrement)\n else if (operation == \"zoomOut\") lookAt.range *= (1 + zoomIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleZoom, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Tilt operation.\n */\n protected open fun handleTilt(operation: String) {\n if (isKeyDown) {\n if (operation == \"tiltUp\") lookAt.tilt = lookAt.tilt.minusDegrees(tiltIncrement)\n else if (operation == \"tiltDown\") lookAt.tilt = lookAt.tilt.plusDegrees(tiltIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleTilt, 50, operation)\n }\n }\n}","package earth.worldwind\n\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.gesture.SelectDragDetector\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.WebKgl\nimport kotlinx.browser.window\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.WebGLContextAttributes\nimport org.khronos.webgl.WebGLContextEvent\nimport org.khronos.webgl.WebGLRenderingContext\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.roundToInt\n\n/**\n * Represents a WorldWind window for an HTML canvas.\n */\nopen class WorldWindow(\n /**\n * The HTML canvas associated with this WorldWindow.\n */\n val canvas: HTMLCanvasElement,\n /**\n * Render resource cache capacity in bytes\n */\n cacheCapacity: Long = RenderResourceCache.recommendedCapacity()\n) {\n /**\n * WebGL context associated with the HTML canvas.\n */\n protected val gl = createContext(canvas)\n /**\n * Main WorldWindow scope to execute jobs which should be cancelled on GL context lost\n */\n val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * Main WorldWind engine, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\n open val engine = WorldWind(WebKgl(gl), RenderResourceCache(cacheCapacity))\n /**\n * List of registered event listeners for the specified event type on this WorldWindow's canvas.\n */\n protected val eventListeners = mutableMapOf()\n /**\n * The controller used to manipulate the globe.\n */\n var controller: WorldWindowController = BasicWorldWindowController(this)\n /**\n * The controller used to manipulate the globe with the keyboard.\n */\n open val keyboardControls = KeyboardControls(this)\n /**\n * Renderable selection and drag gestures detector. Assign [SelectDragDetector.callback] to handle events.\n */\n open val selectDragDetector = SelectDragDetector(this)\n /**\n * The list of callbacks to call immediately before and immediately after performing a redrawn. The callbacks\n * have two arguments: this WorldWindow and the redraw stage, e.g., redrawCallback(worldWindow, stage);.\n * The stage will be either WorldWind.BEFORE_REDRAW or WorldWind.AFTER_REDRAW indicating whether the\n * callback has been called either immediately before or immediately after a redrawn, respectively.\n * Applications may add functions to this array or remove them.\n */\n val redrawCallbacks = mutableSetOf<(WorldWindow, RedrawStage)->Unit>()\n protected val frame = Frame()\n protected var redrawRequestId = 0\n protected var isRedrawRequested = false\n\n protected class EventListenerEntry(val callback: (Event) -> Unit) {\n val listeners = mutableListOf()\n }\n\n init {\n // Prevent the browser's default actions in response to mouse and touch events, which interfere with\n // navigation. Register these event listeners before any others to ensure that they're called last.\n val preventDefaultListener = EventListener { e -> e.preventDefault() }\n addEventListener(\"mousedown\", preventDefaultListener)\n addEventListener(\"touchstart\", preventDefaultListener)\n addEventListener(\"contextmenu\", preventDefaultListener)\n addEventListener(\"wheel\", preventDefaultListener)\n\n // Redirect various UI interactions to the appropriate handler.\n val onGestureEvent = EventListener { e -> controller.handleEvent(e) }\n if (window.navigator.maxTouchPoints == 0) {\n // Prevent the browser's default actions in response to pointer events which interfere with navigation.\n // This CSS style property is configured here to ensure that it's set for all applications.\n canvas.style.setProperty(\"touch-action\", \"none\")\n\n addEventListener(\"pointerdown\", onGestureEvent)\n window.addEventListener(\"pointermove\", onGestureEvent, false) // get pointermove events outside event target\n window.addEventListener(\"pointercancel\", onGestureEvent, false) // get pointercancel events outside event target\n window.addEventListener(\"pointerup\", onGestureEvent, false) // get pointerup events outside event target\n } else {\n addEventListener(\"mousedown\", onGestureEvent)\n window.addEventListener(\"mousemove\", onGestureEvent, false) // get mousemove events outside event target\n window.addEventListener(\"mouseup\", onGestureEvent, false) // get mouseup events outside event target\n addEventListener(\"touchstart\", onGestureEvent)\n addEventListener(\"touchmove\", onGestureEvent)\n addEventListener(\"touchend\", onGestureEvent)\n addEventListener(\"touchcancel\", onGestureEvent)\n }\n addEventListener(\"wheel\", onGestureEvent)\n\n // Set up to handle WebGL context events.\n canvas.addEventListener(\"webglcontextlost\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Inform WebGL that we handle context restoration, enabling the context restored event to be delivered.\n event.preventDefault()\n // Notify the draw context that the WebGL rendering context has been lost.\n contextLost()\n }, false)\n canvas.addEventListener(\"webglcontextrestored\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Notify the draw context that the WebGL rendering context has been restored.\n contextRestored()\n }, false)\n\n // Set up WebGL context and start rendering to the WebGL context in an animation frame loop.\n this.contextRestored()\n }\n\n /**\n * Registers an event listener for the specified event type on this WorldWindow's canvas. This function\n * delegates the processing of events to the WorldWindow's canvas. For details on this function and its\n * arguments, see the W3C [org.w3c.dom.events.EventTarget] documentation.\n * @see EventTarget\n *\n * When an event occurs, this calls the registered event listeners in order of reverse registration.\n *\n * @param type The event type to listen for.\n * @param listener The [EventListener] to call when the event occurs.\n */\n fun addEventListener(type: String, listener: EventListener) {\n var entry = eventListeners[type]\n if (entry == null) {\n entry = EventListenerEntry { event ->\n event.asDynamic().worldWindow = this@WorldWindow\n // calls listeners in reverse registration order\n entry?.listeners?.forEach{ l -> l.handleEvent(event) }\n }.also { eventListeners[type] = it }\n }\n\n if (!entry.listeners.contains(listener)) { // suppress duplicate listeners\n entry.listeners.add(0, listener) // insert the listener at the beginning of the list\n // first listener added, add the event listener callback\n if (entry.listeners.size == 1) canvas.addEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Removes an event listener for the specified event type from this WorldWindow's canvas. The listener must be\n * the same object passed to addEventListener. Calling removeEventListener with arguments that do not identify a\n * currently registered listener has no effect.\n *\n * @param type Indicates the event type the listener registered for.\n * @param listener The listener to remove.\n */\n fun removeEventListener(type: String, listener: EventListener) {\n val entry = eventListeners[type] ?: return // no entry for the specified type\n if (entry.listeners.remove(listener) && entry.listeners.isEmpty()) {\n canvas.removeEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Causes this WorldWindow to redraw itself at the next available opportunity. The redrawn occurs on the main\n * thread at a time of the browser's discretion. Applications should call redraw after changing the World\n * Window's state, but should not expect that change to be reflected on screen immediately after this function\n * returns. This is the preferred method for requesting a redrawn of the WorldWindow.\n */\n fun requestRedraw() { isRedrawRequested = true } // redraw during the next animation frame\n\n /**\n * Converts window coordinates to coordinates relative to this WorldWindow's canvas.\n * @param x The X coordinate to convert.\n * @param y The Y coordinate to convert.\n * @returns The converted coordinates.\n */\n fun canvasCoordinates(x: Number, y: Number): Vec2 {\n val bbox = canvas.getBoundingClientRect()\n val xc = x.toDouble() - (bbox.left + canvas.clientLeft) // * canvas.width / bbox.width\n val yc = y.toDouble() - (bbox.top + canvas.clientTop) // * canvas.height / bbox.height\n return Vec2(xc, yc)\n }\n\n /**\n * Requests the WorldWind objects displayed at a specified screen-coordinate point.\n *\n * If the point intersects the terrain, the returned list contains an object identifying the associated geographic\n * position. This returns an empty list when nothing in the WorldWind scene intersects the specified point.\n *\n * @param pickPoint The point to examine in this WorldWindow's screen coordinates.\n * @returns A list of picked WorldWind objects at the specified pick point.\n */\n fun pick(pickPoint: Vec2) = pickShapesInRegion(pickPoint.x, pickPoint.y)\n\n /**\n * Requests the WorldWind objects displayed within a specified screen-coordinate region. This returns all\n * objects that intersect the specified region, regardless of whether an object is actually visible, and\n * marks objects that are visible as on top.\n *\n * @param x the X coordinate relative to this WorldWindow's canvas.\n * @param y the Y coordinate relative to this WorldWindow's canvas.\n * @param width the width in canvas pixels\n * @param height the height in canvas pixels\n * @param pickCenter picks top shape and terrain in rectangle center as priority\n *\n * @returns A list of visible WorldWind objects within the specified region.\n */\n fun pickShapesInRegion(\n x: Double, y: Double, width: Double = 0.0, height: Double = 0.0, pickCenter: Boolean = true\n ): PickedObjectList {\n // Allocate a list in which to collect and return the picked objects.\n val pickedObjects = PickedObjectList()\n\n // Nothing can be picked if viewport is undefined.\n val viewport = engine.viewport\n if (viewport.isEmpty) return pickedObjects\n\n // Determine pick viewport\n val pickViewport = if (width != 0.0 && height != 0.0) Viewport(\n floor(x).toInt(), viewport.height - ceil(y + height).toInt(), ceil(width).toInt(), ceil(height).toInt()\n ) else Viewport(x.roundToInt() - 1, viewport.height - y.roundToInt() - 1, 3, 3)\n if (!pickViewport.intersect(viewport)) return pickedObjects\n\n // Prepare pick frame\n frame.pickedObjects = pickedObjects\n frame.pickViewport = pickViewport\n if (pickCenter) {\n // Compute the pick point in OpenGL screen coordinates, rounding to the nearest whole pixel. Nothing can be picked\n // if pick point is outside the WorldWindow's viewport.\n val px = pickViewport.x + pickViewport.width / 2.0\n val py = pickViewport.y + pickViewport.height / 2.0\n if(viewport.contains(px, py)) {\n val pickRay = Line()\n if (engine.rayThroughScreenPoint(px, viewport.height - py, pickRay)) {\n frame.pickPoint = Vec2(px, py)\n frame.pickRay = pickRay\n }\n }\n }\n frame.isPickMode = true\n redrawFrame()\n\n return pickedObjects\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been lost. This function removes all\n * cached WebGL resources and resets all properties tracking the current WebGL state.\n */\n protected open fun contextLost() {\n // Stop the rendering animation frame loop, resuming only if the WebGL context is restored.\n window.cancelAnimationFrame(redrawRequestId)\n\n // Cancel all async jobs but keep scope reusable\n mainScope.coroutineContext.cancelChildren()\n\n // Remove all cached WebGL resources, which are now invalid.\n engine.reset()\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been restored. This function prepares\n * this draw context to resume rendering.\n */\n protected open fun contextRestored() {\n // Remove all cached WebGL resources, which are now invalid.\n engine.renderResourceCache.clear()\n\n // Specify the default WorldWind OpenGL state.\n engine.setupDrawContext()\n\n // Store current screen density factor\n engine.densityFactor = window.devicePixelRatio.toFloat()\n\n // Enable WebGL depth texture extension to be able to use GL_DEPTH_COMPONENT texture format\n gl.getExtension(\"WEBGL_depth_texture\")\n\n // Enable WebGL support for gl.UNSIGNED_INT types to WebGLRenderingContext.drawElements()\n gl.getExtension(\"OES_element_index_uint\")\n\n // Subscribe on events from WorldWind's global event bus.\n mainScope.launch {\n WorldWind.events.collect {\n when (it) {\n is WorldWind.Event.RequestRedraw -> requestRedraw()\n is WorldWind.Event.UnmarkResourceAbsent -> {\n engine.renderResourceCache.absentResourceList.unmarkResourceAbsent(it.resourceId)\n }\n }\n }\n }\n\n // Request redraw at least once.\n requestRedraw()\n\n // Resume the rendering animation frame loop until the WebGL context is lost.\n animationFrameLoop()\n }\n\n protected open fun animationFrameLoop() {\n // Render to the WebGL context as needed.\n redrawIfNeeded()\n\n // Continue the animation frame loop until the WebGL context is lost.\n redrawRequestId = window.requestAnimationFrame { animationFrameLoop() }\n }\n\n protected open fun redrawIfNeeded() {\n // Check if the drawing buffer needs to resize to match its screen size, which requires a redrawn.\n resize()\n\n // Redraw the WebGL drawing buffer only when necessary.\n if (!isRedrawRequested) return\n isRedrawRequested = false\n redrawFrame()\n }\n\n protected open fun redrawFrame() {\n val isPickMode = frame.isPickMode\n try {\n // Prepare to redraw and notify redraw callbacks that a redrawn is about to occur.\n if(!isPickMode) callRedrawCallbacks(RedrawStage.BEFORE_REDRAW)\n // Render frame. Propagate redraw requests submitted during rendering.\n if (engine.renderFrame(frame) || isPickMode) requestRedraw()\n // Redraw the WebGL drawing buffer.\n engine.drawFrame(frame)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"WorldWindow\", \"drawFrame\", \"Exception occurred during redrawing.\\n$e\"\n )\n } finally {\n // Recycle each frame to be reused\n frame.recycle()\n // Notify redraw callbacks that a redrawn has completed.\n if(!isPickMode) callRedrawCallbacks(RedrawStage.AFTER_REDRAW)\n }\n }\n\n protected open fun resize() {\n // Check if canvas size is changed\n val width = (gl.canvas.clientWidth * engine.densityFactor).roundToInt()\n val height = (gl.canvas.clientHeight * engine.densityFactor).roundToInt()\n\n if (gl.canvas.width != width || gl.canvas.height != height || engine.viewport.isEmpty) {\n // Make the canvas drawing buffer size match its screen size.\n gl.canvas.width = width\n gl.canvas.height = height\n\n // Set the WebGL viewport to match the canvas drawing buffer size.\n engine.setupViewport(gl.drawingBufferWidth, gl.drawingBufferHeight)\n\n // Cause this WorldWindow to redraw with the new size.\n requestRedraw()\n }\n }\n\n protected open fun callRedrawCallbacks(stage: RedrawStage) = redrawCallbacks.forEach {\n try {\n it(this, stage)\n } catch (e: Exception) {\n // Keep going. Execute the rest of the callbacks.\n log(ERROR, \"Exception calling redraw callback.\\n$e\")\n }\n }\n\n companion object {\n /**\n * Create the WebGL context associated with the HTML canvas.\n */\n protected fun createContext(canvas: HTMLCanvasElement): WebGLRenderingContext {\n // Request a WebGL context with antialiasing is disabled. Antialiasing causes gaps to appear at the edges of\n // terrain tiles.\n val glAttrs = WebGLContextAttributes(antialias = false)\n val context = canvas.getContext(\"webgl\", glAttrs)\n ?: canvas.getContext(\"experimental-webgl\", glAttrs)\n require(context is WebGLRenderingContext) {\n logMessage(ERROR, \"WorldWindow\", \"createContext\", \"webglNotSupported\")\n }\n return context\n }\n }\n\n enum class RedrawStage {\n /**\n * Indicates that a redrawn callback has been called immediately after a redrawn.\n */\n AFTER_REDRAW,\n /**\n * Indicates that a redrawn callback has been called immediately before a redrawn.\n */\n BEFORE_REDRAW;\n }\n}","package earth.worldwind\n\nimport earth.worldwind.gesture.GestureListener\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\n\n/**\n * This class provides a base window controller with required properties and methods which subclasses may\n * inherit from to create custom window controllers for controlling the globe via user interaction.\n */\nabstract class WorldWindowController(\n /**\n * The WorldWindow associated with this controller.\n */\n protected val wwd: WorldWindow\n): EventListener, GestureListener {\n protected val gestureEventListeners = mutableListOf()\n\n override fun handleEvent(event: Event) {\n for (i in gestureEventListeners.indices) {\n gestureEventListeners[i].handleEvent(event)\n if (event.defaultPrevented) break\n }\n }\n\n /**\n * Registers a gesture event listener on this controller. Registering event listeners using this function\n * enables applications to prevent the controller's default behavior.\n *\n * When an event occurs, application event listeners are called before WorldWindowController event listeners.\n *\n * @param listener The function to call when the event occurs.\n */\n protected open fun addGestureListener(listener: EventListener) { gestureEventListeners += listener }\n\n /**\n * Removes a gesture event listener from this controller. The listener must be the same object passed to\n * addGestureListener. Calling removeGestureListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addGestureListener.\n */\n protected open fun removeGestureListener(listener: EventListener) { gestureEventListeners -= listener }\n}","package earth.worldwind.formats.geotiff\n\nobject GeoTiffConstants {\n const val MODEL_PIXEL_SCALE = 33550\n const val MODEL_TRANSFORMATION = 34264\n const val MODEL_TIEPOINT = 33922\n const val GEO_KEY_DIRECTORY = 34735\n const val GEO_DOUBLE_PARAMS = 34736\n const val GEO_ASCII_PARAMS = 34737\n\n // GDAL\n const val GDAL_NODATA = 42113\n const val GDAL_METADATA = 42112\n\n const val GT_MODEL_TYPE_GEO_KEY = 1024\n const val GT_RASTER_TYPE_GEO_KEY = 1025\n const val GT_CITATION_GEO_KEY = 1026\n\n // Geographic CS Parameter Keys\n const val GEOGRAPHIC_TYPE_GEO_KEY = 2048\n const val GEOG_CITATION_GEO_KEY = 2049\n const val GEOG_GEODETIC_DATUM_GEO_KEY = 2050\n const val GEOG_PRIME_MERIDIAN_GEO_KEY = 2051\n const val GEOG_LINEAR_UNITS_GEO_KEY = 2052\n const val GEOG_LINEAR_UNIT_SIZE_GEO_KEY = 2053\n const val GEOG_ANGULAR_UNITS_GEO_KEY = 2054\n const val GEOG_ANGULAR_UNIT_SIZE_GEO_KEY = 2055\n const val GEOG_ELLIPSOID_GEO_KEY = 2056\n const val GEOG_SEMI_MAJOR_AXIS_GEO_KEY = 2057\n const val GEOG_SEMI_MINOR_AXIS_GEO_KEY = 2058\n const val GEOG_INV_FLATTENING_GEO_KEY = 2059\n const val GEOG_AZIMUTH_UNITS_GEO_KEY = 2060\n const val GEOG_PRIME_MERIDIAN_LONG_GEO_KEY = 2061\n const val GEOG_TOWGS84_GEO_KEY = 2062\n\n // Projected CS Parameter Keys\n const val PROJECTED_CS_TYPE_GEO_KEY = 3072\n const val PCS_CITATION_GEO_KEY = 3073\n const val PROJECTION_GEO_KEY = 3074\n const val PROJ_COORD_TRANS_GEO_KEY = 3075\n const val PROJ_LINEAR_UNITS_GEO_KEY = 3076\n const val PROJ_LINEAR_UNIT_SIZE_GEO_KEY = 3077\n const val PROJ_STD_PARALLEL_1_GEO_KEY = 3078\n const val PROJ_STD_PARALLEL_2_GEO_KEY = 3079\n const val PROJ_NAT_ORIGIN_LONG_GEO_KEY = 3080\n const val PROJ_NAT_ORIGIN_LAT_GEO_KEY = 3081\n const val PROJ_FALSE_EASTING_GEO_KEY = 3082\n const val PROJ_FALSE_NORTHING_GEO_KEY = 3083\n const val PROJ_FALSE_ORIGIN_LONG_GEO_KEY = 3084\n const val PROJ_FALSE_ORIGIN_LAT_GEO_KEY = 3085\n const val PROJ_FALSE_ORIGIN_EASTING_GEO_KEY = 3086\n const val PROJ_FALSE_ORIGIN_NORTHING_GEO_KEY = 3087\n const val PROJ_CENTER_LONG_GEO_KEY = 3088\n const val PROJ_CENTER_LAT_GEO_KEY = 3089\n const val PROJ_CENTER_EASTING_GEO_KEY = 3090\n const val PROJ_CENTER_NORTHING_GEO_KEY = 3091\n const val PROJ_SCALE_AT_NAT_ORIGIN_GEO_KEY = 3092\n const val PROJ_SCALE_AT_CENTER_GEO_KEY = 3093\n const val PROJ_AZIMUTH_ANGLE_GEO_KEY = 3094\n const val PROJ_STRAIGHT_VERT_POLE_LONG_GEO_KEY = 3095\n\n // Vertical CS Keys\n const val VERTICAL_CS_TYPE_GEO_KEY = 4096\n const val VERTICAL_CITATION_GEO_KEY = 4097\n const val VERTICAL_DATUM_GEO_KEY = 4098\n const val VERTICAL_UNITS_GEO_KEY = 4099\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.formats.geotiff.GeoTiffConstants.GEO_ASCII_PARAMS\nimport earth.worldwind.formats.geotiff.GeoTiffConstants.GEO_DOUBLE_PARAMS\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nclass GeoTiffKeyEntry(\n keyId: Int,\n private val tiffTagLocation: Int,\n private val count: Int,\n private val valueOffset: Int\n) {\n init {\n require(keyId != 0) { logMessage(ERROR, \"GeoTiffKeyEntry\", \"constructor\", \"Missing key ID\") }\n }\n\n fun getGeoKeyValue(geoDoubleParamsValue: List): Number? = when (tiffTagLocation) {\n 0 -> valueOffset\n GEO_ASCII_PARAMS -> error(logMessage(ERROR, \"GeoTiffKeyEntry\", \"getGeoKeyValue\", \"Invalid key type\"))\n GEO_DOUBLE_PARAMS -> geoDoubleParamsValue[valueOffset]\n else -> null\n }\n\n fun getAsciiGeoKeyValue(geoAsciiParamsValue: String?): String? {\n require(tiffTagLocation == GEO_ASCII_PARAMS) {\n logMessage(ERROR, \"GeoTiffKeyEntry\", \"getAsciiGeoKeyValue\", \"Invalid key type\")\n }\n return geoAsciiParamsValue?.let {\n val keyValue = StringBuilder()\n for (i in valueOffset until count - 1) keyValue.append(it[i])\n if (it[count - 1] != '|') keyValue.append(it[count - 1])\n keyValue.toString()\n }\n }\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.geom.Sector\n\nclass GeoTiffMetadata {\n var bitsPerSample: List = mutableListOf()\n var colorMap: Array? = null\n var compression: Int = 0\n var extraSamples: Array? = null\n var imageDescription: String? = null\n var imageLength: Int = 0\n var imageWidth: Int = 0\n var maxSampleValue: Number? = null\n var minSampleValue: Number? = null\n var orientation: Int = 0\n var photometricInterpretation: Int = -1\n var planarConfiguration: Int = -1\n var resolutionUnit: Number? = null\n var rowsPerStrip: Int = 0\n var samplesPerPixel: Int = 0\n var sampleFormat: Int = TiffConstants.SampleFormat.UNSIGNED\n var software: Array? = null\n var stripByteCounts: List = mutableListOf()\n var stripOffsets: List = mutableListOf()\n var tileByteCounts: List = mutableListOf()\n var tileOffsets: List = mutableListOf()\n var tileLength: Int = 0\n var tileWidth: Int = 0\n var xResolution: Number? = null\n var yResolution: Number? = null\n var geoAsciiParams: String? = null\n var geoDoubleParams: List = mutableListOf()\n var geoKeyDirectory: List = mutableListOf()\n var modelPixelScale: List = mutableListOf()\n var modelTiePoint: List = mutableListOf()\n var modelTransformation: List = mutableListOf()\n var noData: Number? = null\n var metaData: String? = null\n var bbox: Sector? = null\n var gtModelTypeGeoKey: Number? = null\n var gtRasterTypeGeoKey: Number? = null\n var gtCitationGeoKey: String? = null\n var geographicTypeGeoKey: Number? = null\n var geogCitationGeoKey: String? = null\n var geogAngularUnitsGeoKey: Number? = null\n var geogAngularUnitSizeGeoKey: Number? = null\n var geogSemiMajorAxisGeoKey: Number? = null\n var geogInvFlatteningGeoKey: Number? = null\n var projectedCSType: Number? = null\n var projLinearUnits: Number? = null\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.*\nimport kotlin.math.ceil\n\nclass GeoTiffReader(arrayBuffer: ArrayBuffer) {\n private val imageFileDirectories = mutableListOf()\n private val geoTiffData = DataView(arrayBuffer)\n private val metadata = GeoTiffMetadata()\n private var isLittleEndian = false\n\n init {\n getEndianness()\n require(isTiffFileType()) { logMessage(ERROR, \"GeoTiffReader\", \"constructor\",\"Invalid file type\") }\n parseImageFileDirectory(GeoTiffUtil.getBytes(geoTiffData, 4, 4, isLittleEndian).toInt())\n getMetadataFromImageFileDirectory()\n parseGeoKeys()\n setBBox()\n }\n\n private fun getEndianness() {\n isLittleEndian = when (GeoTiffUtil.getBytes(geoTiffData, 0, 2, isLittleEndian)) {\n 0x4949 -> true\n 0x4D4D -> false\n else -> error(logMessage(ERROR, \"GeoTiffReader\", \"getEndianness\",\"Invalid Byte Order Value\"))\n }\n }\n\n private fun isTiffFileType() = GeoTiffUtil.getBytes(geoTiffData, 2, 2, isLittleEndian) == 42\n\n private fun isGeoTiff() = getIFDByTag(GeoTiffConstants.GEO_KEY_DIRECTORY) != null\n\n fun createTypedElevationArray(): ArrayBufferView {\n val elevations = mutableListOf()\n if (metadata.stripOffsets.isNotEmpty()) {\n elevations.addAll(parseStrips(true).flatten())\n } else if (metadata.tileOffsets.isNotEmpty()) {\n val tiles = parseTiles(true)\n val tilesAcross = (metadata.imageWidth + metadata.tileWidth - 1) / metadata.tileWidth\n\n for (y in 0 until metadata.imageLength) for (x in 0 until metadata.imageWidth) {\n val tileAcross = x / metadata.tileWidth\n val tileDown = y / metadata.tileLength\n val tileIndex = tileDown * tilesAcross + tileAcross\n val xInTile = x % metadata.tileWidth\n val yInTile = y % metadata.tileLength\n val sampleIndex = yInTile * metadata.tileWidth + xInTile\n val pixelSamples = tiles[tileIndex][sampleIndex]\n elevations.add(pixelSamples)\n }\n } else error(logMessage(ERROR, \"GeoTiffReader\", \"createTypedElevationArray\",\"Invalid metadata\"))\n\n return when(metadata.bitsPerSample[0]) {\n 8 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int8Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint8Array(elevations.toTypedArray().unsafeCast>())\n }\n 16 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int16Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint16Array(elevations.toTypedArray().unsafeCast>())\n }\n 32 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int32Array(elevations.toTypedArray().unsafeCast>())\n TiffConstants.SampleFormat.IEEE_FLOAT -> Float32Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint32Array(elevations.toTypedArray().unsafeCast>())\n }\n 64 -> Float64Array(elevations.toTypedArray().unsafeCast>())\n else -> error(logMessage(ERROR, \"GeoTiffReader\", \"createTypedElevationArray\",\"Invalid bits per sample\"))\n }\n }\n\n private fun parseStrips(returnElevation: Boolean): Array> {\n val bytesPerPixel = metadata.samplesPerPixel * metadata.bitsPerSample[0] / 8\n return Array(metadata.stripOffsets.size) {\n parseBlock(\n returnElevation, metadata.compression, bytesPerPixel, metadata.stripByteCounts[it],\n metadata.stripOffsets[it], metadata.bitsPerSample, metadata.sampleFormat\n )\n }\n }\n\n private fun parseBlock(\n returnElevation: Boolean, compression: Int, bytesPerPixel: Int, blockByteCount: Int, blockOffset: Int,\n bitsPerSample: List, sampleFormat: Int\n ) = when (compression) {\n TiffConstants.Compression.UNCOMPRESSED ->\n parseUncompressedBlock(blockByteCount, bitsPerSample, blockOffset, sampleFormat, returnElevation, bytesPerPixel)\n TiffConstants.Compression.PACK_BITS ->\n parsePackBitsCompressedBlocks(bytesPerPixel, blockByteCount, blockOffset, bitsPerSample, sampleFormat, returnElevation)\n TiffConstants.Compression.CCITT_1D -> {\n log(WARN, \"Compression type not yet implemented: CCITT_1D\")\n emptyArray()\n }\n TiffConstants.Compression.GROUP_3_FAX -> {\n log(WARN, \"Compression type not yet implemented: GROUP_3_FAX\")\n emptyArray()\n }\n TiffConstants.Compression.GROUP_4_FAX -> {\n log(WARN, \"Compression type not yet implemented: GROUP_4_FAX\")\n emptyArray()\n }\n TiffConstants.Compression.LZW -> {\n log(WARN, \"Compression type not yet implemented: LZW\")\n emptyArray()\n }\n TiffConstants.Compression.JPEG -> {\n log(WARN, \"Compression type not yet implemented: JPEG\")\n emptyArray()\n }\n else -> {\n log(WARN, \"Unsupported compression type $compression\")\n emptyArray()\n }\n }\n\n private fun parsePackBitsCompressedBlocks(\n bytesPerPixel: Int, blockByteCount: Int, blockOffset: Int, bitsPerSample: List, sampleFormat: Int,\n returnElevation: Boolean\n ): Array {\n val block = mutableListOf()\n val arrayBuffer = if (metadata.tileWidth != 0 && metadata.tileLength != 0) {\n Int8Array(metadata.tileWidth * metadata.tileLength * bytesPerPixel)\n } else {\n Int8Array(metadata.rowsPerStrip * metadata.imageWidth * bytesPerPixel)\n }\n val uncompressedDataView = DataView(arrayBuffer.buffer)\n var newBlock = true\n var blockLength = 0\n var numOfIterations = 0\n var uncompressedOffset = 0\n\n for (byteOffset in 0 until blockByteCount) {\n if (newBlock) {\n blockLength = 1\n numOfIterations = 1\n newBlock = false\n when (val nextSourceByte = geoTiffData.getInt8(blockOffset + byteOffset)) {\n in 0..127 -> blockLength = nextSourceByte + 1\n in -127..-1 -> numOfIterations = -nextSourceByte + 1\n else -> newBlock = true\n }\n } else {\n val currentByte = GeoTiffUtil.getBytes(geoTiffData, blockOffset + byteOffset, 1, isLittleEndian)\n for (currentIteration in 0 until numOfIterations) {\n uncompressedDataView.setInt8(uncompressedOffset, currentByte.toByte())\n uncompressedOffset++\n }\n blockLength--\n if (blockLength == 0) newBlock = true\n }\n }\n\n for (byteOffset in 0 until arrayBuffer.length step bytesPerPixel) {\n val pixel = mutableListOf()\n for ((i, sample) in bitsPerSample.withIndex()) {\n val bytesPerSample = sample / 8\n val sampleOffset = i * bytesPerSample\n pixel.add(GeoTiffUtil.getSampleBytes(\n uncompressedDataView, byteOffset + sampleOffset, bytesPerSample, sampleFormat, isLittleEndian\n ))\n }\n if (returnElevation) block.add(pixel[0]) else block.addAll(pixel)\n }\n return block.toTypedArray()\n }\n\n private fun parseUncompressedBlock(\n blockByteCount: Int, bitsPerSample: List, blockOffset: Int, sampleFormat: Int, returnElevation: Boolean,\n bytesPerPixel: Int\n ): Array {\n val block = mutableListOf()\n var byteOffset = 0\n while (byteOffset < blockByteCount) {\n val pixel = mutableListOf()\n for ((m, sample) in bitsPerSample.withIndex()) {\n val bytesPerSample = sample / 8\n val sampleOffset = m * bytesPerSample\n pixel.add(GeoTiffUtil.getSampleBytes(\n geoTiffData, blockOffset + byteOffset + sampleOffset, bytesPerSample, sampleFormat, isLittleEndian\n ))\n }\n if (returnElevation) block.add(pixel[0])\n else block.addAll(pixel.toList())\n byteOffset += bytesPerPixel\n }\n return block.toTypedArray()\n }\n\n private fun parseTiles(returnElevation: Boolean): Array> {\n val bytesPerPixel = metadata.samplesPerPixel * metadata.bitsPerSample[0] / 8\n val tilesAcross = ceil(metadata.imageWidth / metadata.tileWidth.toDouble()).toInt()\n val tilesDown = ceil(metadata.imageLength / metadata.tileLength.toDouble()).toInt()\n return Array(tilesDown * tilesAcross) {\n parseBlock(\n returnElevation, metadata.compression, bytesPerPixel, metadata.tileByteCounts[it],\n metadata.tileOffsets[it], metadata.bitsPerSample, metadata.sampleFormat\n )\n }\n }\n\n private fun geoTiffImageToPCS(xValue: Double, yValue: Double) = when {\n metadata.modelTiePoint.size > 6 && metadata.modelPixelScale.isEmpty() -> TODO()\n metadata.modelTransformation.size == 16 -> Location(\n Angle.fromDegrees(yValue * metadata.modelTransformation[4] + yValue * metadata.modelTransformation[5]\n + metadata.modelTransformation[7]),\n Angle.fromDegrees(xValue * metadata.modelTransformation[0] + yValue * metadata.modelTransformation[1]\n + metadata.modelTransformation[3])\n )\n metadata.modelPixelScale.size < 3 || metadata.modelTiePoint.size < 6 -> Location(Angle.fromDegrees(yValue), Angle.fromDegrees(xValue))\n else -> Location(\n Angle.fromDegrees((yValue - metadata.modelTiePoint[1]) * -1 * metadata.modelPixelScale[1] + metadata.modelTiePoint[4]),\n Angle.fromDegrees((xValue - metadata.modelTiePoint[0]) * metadata.modelPixelScale[0] + metadata.modelTiePoint[3])\n )\n }\n\n private fun setBBox() {\n val upperLeft = geoTiffImageToPCS(0.0, 0.0)\n val upperRight = geoTiffImageToPCS(metadata.imageWidth.toDouble(), 0.0)\n val lowerLeft = geoTiffImageToPCS(0.0, metadata.imageLength.toDouble())\n metadata.bbox = Sector(lowerLeft.latitude, upperLeft.latitude, upperLeft.longitude, upperRight.longitude)\n }\n\n private fun getMetadataFromImageFileDirectory() {\n for (ifd in imageFileDirectories) when (ifd.tag) {\n TiffConstants.IFDTag.BITS_PER_SAMPLE -> metadata.bitsPerSample = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.COLOR_MAP -> metadata.colorMap = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.COMPRESSION -> metadata.compression = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.EXTRA_SAMPLES -> metadata.extraSamples = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.IMAGE_DESCRIPTION -> metadata.imageDescription = ifd.getIFDEntryAsciiValue()\n TiffConstants.IFDTag.IMAGE_LENGTH -> metadata.imageLength = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.IMAGE_WIDTH -> metadata.imageWidth = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.MAX_SAMPLE_VALUE -> metadata.maxSampleValue = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.MIN_SAMPLE_VALUE -> metadata.minSampleValue = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.ORIENTATION -> metadata.orientation = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.PHOTOMETRIC_INTERPRETATION -> metadata.photometricInterpretation = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.PLANAR_CONFIGURATION -> metadata.planarConfiguration = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.ROWS_PER_STRIP -> metadata.rowsPerStrip = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.RESOLUTION_UNIT -> metadata.resolutionUnit = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.SAMPLES_PER_PIXEL -> metadata.samplesPerPixel = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.SAMPLE_FORMAT -> metadata.sampleFormat = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.SOFTWARE -> metadata.software = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.STRIP_BYTE_COUNTS -> metadata.stripByteCounts = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.STRIP_OFFSETS -> metadata.stripOffsets = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_BYTE_COUNTS -> metadata.tileByteCounts = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_OFFSETS -> metadata.tileOffsets = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_LENGTH -> metadata.tileLength = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.TILE_WIDTH -> metadata.tileWidth = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.X_RESOLUTION -> metadata.xResolution = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.Y_RESOLUTION -> metadata.yResolution = ifd.getIFDEntryValue()[0]\n GeoTiffConstants.GEO_ASCII_PARAMS -> metadata.geoAsciiParams = ifd.getIFDEntryAsciiValue()\n GeoTiffConstants.GEO_DOUBLE_PARAMS -> metadata.geoDoubleParams = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.GEO_KEY_DIRECTORY -> metadata.geoKeyDirectory = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.MODEL_PIXEL_SCALE -> metadata.modelPixelScale = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.MODEL_TIEPOINT -> metadata.modelTiePoint = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.GDAL_METADATA -> metadata.metaData = ifd.getIFDEntryAsciiValue()\n GeoTiffConstants.GDAL_NODATA -> metadata.noData = ifd.getIFDEntryValue()[0]\n else -> log(WARN, \"Ignored GeoTiff tag: ${ifd.tag}\")\n }\n }\n\n private fun parseGeoKeys() {\n require(isGeoTiff()) { logMessage(Logger.INFO, \"GeoTiffReader\", \"parse\", \"Invalid GeoTiff file\") }\n val geoKeyDirectory = metadata.geoKeyDirectory\n if (geoKeyDirectory.isNotEmpty()) {\n val numberOfKeys = geoKeyDirectory[3]\n\n for (i in 0 until numberOfKeys) {\n val keyId = geoKeyDirectory[4 + i * 4]\n val tiffTagLocation = geoKeyDirectory[5 + i * 4]\n val count = geoKeyDirectory[6 + i * 4]\n val valueOffset = geoKeyDirectory[7 + i * 4]\n\n when (keyId) {\n GeoTiffConstants.GT_MODEL_TYPE_GEO_KEY ->\n metadata.gtModelTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count,valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GT_RASTER_TYPE_GEO_KEY ->\n metadata.gtRasterTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GT_CITATION_GEO_KEY ->\n metadata.gtCitationGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getAsciiGeoKeyValue(metadata.geoAsciiParams)\n GeoTiffConstants.GEOGRAPHIC_TYPE_GEO_KEY ->\n metadata.geographicTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_CITATION_GEO_KEY ->\n metadata.geogCitationGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getAsciiGeoKeyValue(metadata.geoAsciiParams)\n GeoTiffConstants.GEOG_ANGULAR_UNITS_GEO_KEY ->\n metadata.geogAngularUnitsGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_ANGULAR_UNIT_SIZE_GEO_KEY ->\n metadata.geogAngularUnitSizeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset )\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_SEMI_MAJOR_AXIS_GEO_KEY ->\n metadata.geogSemiMajorAxisGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_INV_FLATTENING_GEO_KEY ->\n metadata.geogInvFlatteningGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.PROJECTED_CS_TYPE_GEO_KEY ->\n metadata.projectedCSType = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.PROJ_LINEAR_UNITS_GEO_KEY ->\n metadata.projLinearUnits = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n else -> log(WARN, \"Ignored GeoTiff key: $keyId\")\n }\n }\n } else error(logMessage(INFO, \"GeoTiffReader\", \"parseGeoKeys\", \"missingGeoKeyDirectoryTag\"))\n }\n\n private fun parseImageFileDirectory(offset: Int) {\n val noOfDirectoryEntries = GeoTiffUtil.getBytes(geoTiffData, offset, 2, isLittleEndian).toInt()\n val directoryEntries = mutableListOf()\n var i = offset + 2\n repeat(noOfDirectoryEntries) {\n val tag = GeoTiffUtil.getBytes(geoTiffData, i, 2, isLittleEndian).toInt()\n val type = GeoTiffUtil.getBytes(geoTiffData, i + 2, 2, isLittleEndian).toInt()\n val count = GeoTiffUtil.getBytes(geoTiffData, i + 4, 4, isLittleEndian).toInt()\n val valueOffset = GeoTiffUtil.getBytes(geoTiffData, i + 8, 4, isLittleEndian).toInt()\n directoryEntries.add(TiffIFDEntry(tag, type, count, valueOffset, geoTiffData, isLittleEndian))\n i += 12\n }\n imageFileDirectories.addAll(directoryEntries)\n val nextIfdOffset = GeoTiffUtil.getBytes(geoTiffData, i, 4, isLittleEndian).toInt()\n if (nextIfdOffset != 0) parseImageFileDirectory(nextIfdOffset)\n }\n\n // Get image file directory by tag value.\n private fun getIFDByTag(tag: Int) = imageFileDirectories.find { it.tag == tag }\n}",null,null,null,"package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.DataView\n\nobject GeoTiffUtil {\n\n fun getBytes(\n geoTiffData: DataView, byteOffset: Int, numOfBytes: Int, isLittleEndian: Boolean, isSigned: Boolean = false\n ): Number = when {\n numOfBytes <= 0 -> error(logMessage(ERROR, \"GeoTiffUtil\", \"getBytes\", \"No bytes requested\"))\n numOfBytes <= 1 -> if (isSigned) geoTiffData.getInt8(byteOffset) else geoTiffData.getUint8(byteOffset)\n numOfBytes <= 2 -> if (isSigned) geoTiffData.getInt16(byteOffset, isLittleEndian) else geoTiffData.getUint16(byteOffset, isLittleEndian)\n numOfBytes <= 3 -> if (isSigned) geoTiffData.getInt32(byteOffset, isLittleEndian) ushr 8 else geoTiffData.getUint32(byteOffset, isLittleEndian) ushr 8\n numOfBytes <= 4 -> if (isSigned) geoTiffData.getInt32(byteOffset, isLittleEndian) else geoTiffData.getUint32(byteOffset, isLittleEndian)\n numOfBytes <= 8 -> geoTiffData.getFloat64(byteOffset, isLittleEndian)\n else -> error(logMessage(ERROR, \"GeoTiffUtil\", \"getBytes\", \"Too many bytes requested\"))\n }\n\n fun getSampleBytes(\n geoTiffData: DataView, byteOffset: Int, numOfBytes: Int, sampleFormat: Int, isLittleEndian: Boolean\n ): Number = when (sampleFormat) {\n TiffConstants.SampleFormat.UNSIGNED -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, false)\n TiffConstants.SampleFormat.SIGNED -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, true)\n TiffConstants.SampleFormat.IEEE_FLOAT -> when (numOfBytes) {\n 3 -> geoTiffData.getFloat32(byteOffset, isLittleEndian).toInt() ushr 8\n 4 -> geoTiffData.getFloat32(byteOffset, isLittleEndian)\n 8 -> geoTiffData.getFloat64(byteOffset, isLittleEndian)\n else -> error(logMessage(\n ERROR, \"GeoTiffUtil\", \"getSampleBytes\",\n \"Do not attempt to parse the data not handled: $numOfBytes\"\n ))\n }\n else -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, false)\n }\n}","package earth.worldwind.formats.geotiff\n\nclass TiffConstants {\n object IFDTag {\n const val NEW_SUBFILE_TYPE = 254\n const val SUBFILE_TYPE = 255\n const val IMAGE_WIDTH = 256\n const val IMAGE_LENGTH = 257\n const val BITS_PER_SAMPLE = 258\n const val COMPRESSION = 259\n const val PHOTOMETRIC_INTERPRETATION = 262\n const val THRESHHOLDING = 263\n const val CELL_WIDTH = 264\n const val CELL_LENGTH = 265\n const val FILL_ORDER = 266\n const val DOCUMENT_NAME = 269\n const val IMAGE_DESCRIPTION = 270\n const val MAKE = 271\n const val MODEL = 272\n const val STRIP_OFFSETS = 273\n const val ORIENTATION = 274\n const val SAMPLES_PER_PIXEL = 277\n const val ROWS_PER_STRIP = 278\n const val STRIP_BYTE_COUNTS = 279\n const val MIN_SAMPLE_VALUE = 280\n const val MAX_SAMPLE_VALUE = 281\n const val X_RESOLUTION = 282\n const val Y_RESOLUTION = 283\n const val PLANAR_CONFIGURATION = 284\n const val PAGE_NAME = 285\n const val X_POSITION = 286\n const val Y_POSITION = 287\n const val FREE_OFFSETS = 288\n const val FREE_BYTE_COUNTS = 289\n const val GRAY_RESPONSE_UNIT = 290\n const val GRAY_RESPONSE_CURVE = 291\n const val T4_OPTIONS = 292\n const val T6_OPTIONS = 293\n const val RESOLUTION_UNIT = 296\n const val PAGE_NUMBER = 297\n const val TRANSFER_FUNCTION = 301\n const val SOFTWARE = 305\n const val DATE_TIME = 306\n const val ARTIST = 315\n const val HOST_COMPUTER = 316\n const val PREDICTOR = 317\n const val WHITE_POINT = 318\n const val PRIMARY_CHROMATICI_TIES = 319\n const val COLOR_MAP = 320\n const val HALFTONE_HINTS = 321\n const val TILE_WIDTH = 322\n const val TILE_LENGTH = 323\n const val TILE_OFFSETS = 324\n const val TILE_BYTE_COUNTS = 325\n const val INK_SET = 332\n const val INK_NAMES = 333\n const val NUMBER_OF_INKS = 334\n const val DOT_RANGE = 336\n const val TARGET_PRINTER = 337\n const val EXTRA_SAMPLES = 338\n const val SAMPLE_FORMAT = 339\n const val S_MIN_SAMPLE_VALUE = 340\n const val S_MAX_SAMPLE_VALUE = 341\n const val TRANSFER_RANGE = 342\n const val JPEG_PROC = 512\n const val JPEG_INTERCHANGE_FORMAT = 513\n const val JPEG_INTERCHANGE_FORMAT_LENGTH = 514\n const val JPEG_RESTART_INTERVAL = 515\n const val JPEG_LOSSLESS_PREDICTORS = 517\n const val JPEG_POINT_TRANSFORMS = 518\n const val JPEG_Q_TABLES = 519\n const val JPEG_DC_TABLES = 520\n const val JPEG_AC_TABLES = 521\n const val Y_CB_CR_COEFFICIENTS = 529\n const val Y_CB_CR_SUB_SAMPLING = 530\n const val Y_CB_CR_POSITIONING = 531\n const val REFERENCE_BLACK_WHITE = 532\n const val COPYRIGHT = 33432\n }\n\n object Compression {\n const val UNCOMPRESSED = 1\n const val CCITT_1D = 2\n const val GROUP_3_FAX = 3\n const val GROUP_4_FAX = 4\n const val LZW = 5\n const val JPEG = 6\n const val PACK_BITS = 32773\n }\n\n object Orientation {\n const val ROW0_IS_TOP_COL0_IS_LHS = 1\n const val ROW0_IS_TOP_COL0_IS_RHS = 2\n const val ROW0_IS_BOTTOM_COL0_IS_RHS = 3\n const val ROW0_IS_BOTTOM_COL0_IS_LHS = 4\n const val ROW0_IS_LHS_COL0_IS_TOP = 5\n const val ROW0_IS_RHS_COL0_IS_TOP = 6\n const val ROW0_IS_RHS_COL0_IS_BOTTOM = 7\n const val ROW0_IS_LHS_COL0_IS_BOTTOM = 8\n }\n\n object PhotometricInterpretation {\n const val WHITE_IS_ZERO = 0\n const val BLACK_IS_ZERO = 1\n const val RGB = 2\n const val RGB_PALETTE = 3\n const val TRANSPARENCY_MASK = 4\n const val CMYK = 5\n const val Y_CB_CR = 6\n const val CIE_LAB = 7\n }\n\n object PlanarConfiguration {\n const val CHUNKY = 1\n const val PLANAR = 2\n }\n\n object ResolutionUnit {\n const val NONE = 1\n const val INCH = 2\n const val CENTIMETER = 3\n }\n\n object SampleFormat {\n const val UNSIGNED = 1\n const val SIGNED = 2\n const val IEEE_FLOAT = 3\n const val UNDEFINED = 4\n }\n\n object Type {\n const val BYTE = 1\n const val ASCII = 2\n const val SHORT = 3\n const val LONG = 4\n const val RATIONAL = 5\n const val SBYTE = 6\n const val UNDEFINED = 7\n const val SSHORT = 8\n const val SLONG = 9\n const val SRATIONAL = 10\n const val FLOAT = 11\n const val DOUBLE = 12\n }\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.DataView\n\nclass TiffIFDEntry(\n val tag: Int,\n private val type: Int,\n private val count: Int,\n private val valueOffset: Int,\n private val geoTiffData: DataView,\n private val isLittleEndian: Boolean\n) {\n fun getIFDEntryValue(allowAscii: Boolean = false): List {\n require (allowAscii || type != TiffConstants.Type.ASCII) {\n logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\", \"Invalid Key Type - ASCII not allowed.\")\n }\n val length = getIFDTypeLength()\n return if (length * count <= 4) listOf(if (!isLittleEndian) valueOffset shr ((4 - length) * 8) else valueOffset)\n else getIFDEntryValueLongerThan4(length)\n }\n\n fun getIFDEntryAsciiValue(): String {\n require(type == TiffConstants.Type.ASCII) {\n logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\",\"Invalid Key Type - ASCII required.\")\n }\n return getIFDEntryValue(true).map { it.toInt().toChar() }.joinToString(\"\")\n }\n\n private fun getIFDTypeLength() = when (type) {\n TiffConstants.Type.BYTE, TiffConstants.Type.ASCII, TiffConstants.Type.SBYTE, TiffConstants.Type.UNDEFINED -> 1\n TiffConstants.Type.SHORT, TiffConstants.Type.SSHORT -> 2\n TiffConstants.Type.LONG, TiffConstants.Type.SLONG, TiffConstants.Type.FLOAT -> 4\n TiffConstants.Type.RATIONAL, TiffConstants.Type.SRATIONAL, TiffConstants.Type.DOUBLE -> 8\n else -> -1\n }\n\n private fun getIFDEntryValueLongerThan4(ifdTypeLength: Int): List {\n val ifdValues = mutableListOf()\n for (i in 0 until count) {\n val indexOffset = ifdTypeLength * i\n if (ifdTypeLength >= 8) when (type) {\n TiffConstants.Type.RATIONAL, TiffConstants.Type.SRATIONAL -> {\n ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, 4, isLittleEndian))\n ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset + 4, 4, isLittleEndian))\n }\n TiffConstants.Type.DOUBLE -> ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, 8, isLittleEndian))\n else -> error(logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\", \"Invalid Type of IFD\"))\n } else ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, ifdTypeLength, isLittleEndian))\n }\n return ifdValues\n }\n}\n","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple mouse clicks.\n */\nopen class ClickRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfClicks = 1\n var button: Short = 0\n var maxMouseMovement = 5\n var maxClickDuration = 500\n var maxClickInterval = 400\n protected val clicks = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n clicks.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (button != event.button) state = FAILED else {\n clicks.add(Click(clientX, clientY))\n failAfterDelay(maxClickDuration) // fail if the click is down too long\n }\n }\n\n override fun mouseMove(event: MouseEvent) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxMouseMovement * window.devicePixelRatio) state = FAILED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (mouseButtonMask != 0) return // wait until the last button is up\n if (clicks.size == numberOfClicks) {\n clientX = clicks[0].clientX\n clientY = clicks[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxClickInterval) // fail if the interval between clicks is too long\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() { timeout?.let { window.clearTimeout(it) }.also { timeout = null } }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for mouse drag gestures.\n */\nopen class DragRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var button: Short = 0\n var interpretDistance = 5\n\n override fun mouseMove(event: MouseEvent) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) {\n state = if (shouldRecognize()) {\n resetTranslation() // set translation to zero when the drag begins\n BEGAN\n } else {\n FAILED\n }\n }\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (mouseButtonMask == 0) { // last button up\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state == POSSIBLE) state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret mouse movement when the cursor moves far enough\n }\n\n /**\n * @return true when the specified button is the only button down\n */\n protected open fun shouldRecognize() = 1 shl button.toInt() == mouseButtonMask\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.util.Logger\nimport org.w3c.dom.Touch\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport org.w3c.dom.pointerevents.PointerEvent\n\n/**\n * Gesture recognizers translate user input event streams into higher level actions. A gesture\n * recognizer is associated with an event target, which dispatches mouse and keyboard events to the gesture\n * recognizer. When a gesture recognizer has received enough information from the event stream to interpret the\n * action, it calls its callback functions. Callback functions may be specified at construction or added to the\n * [gestureCallbacks] list after construction.\n */\nabstract class GestureRecognizer(\n /**\n * Indicates the document element this gesture recognizer observes for mouse and touch events.\n */\n val target: EventTarget,\n /**\n * An optional function to call when this gesture is recognized. If non-null, the\n * function is called when this gesture is recognized, and is passed a single argument: this gesture recognizer,\n * e.g., gestureCallback(recognizer).\n */\n callback: ((GestureRecognizer)->Unit)?\n): EventListener {\n /**\n * Indicates whether this gesture recognizer is enabled. When false, this gesture recognizer will ignore any events\n * dispatched by its target.\n */\n var isEnabled = true\n /**\n * Indicates this gesture's current state. Possible values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN],\n * [CHANGED], [CANCELLED] and [ENDED].\n */\n var state = POSSIBLE\n set(newState) {\n nextState = null // clear any pending state transition\n when (newState) {\n POSSIBLE -> field = newState\n FAILED -> {\n field = newState\n updateRecognizersWaitingForFailure()\n resetIfEventsEnded()\n }\n RECOGNIZED -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Recognized\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n BEGAN -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Began\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n }\n }\n CHANGED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n }\n CANCELLED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n ENDED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n }\n /**\n * Indicates the X coordinate of this gesture.\n */\n var clientX = 0\n /**\n * Returns the Y coordinate of this gesture.\n */\n var clientY = 0\n /**\n * Indicates this gesture's translation along the X axis since the gesture started.\n */\n var translationX = 0.0\n private set\n /**\n * Indicates this gesture's translation along the Y axis since the gesture started.\n */\n var translationY = 0.0\n private set\n /**\n * Indicates the currently pressed mouse buttons as a bitmask. A value of 0 indicates that no buttons are\n * pressed. A nonzero value indicates that one or more buttons are pressed as follows: bit 1 indicates the\n * primary button, bit 2 indicates the auxiliary button, bit 3 indicates the secondary button.\n */\n var mouseButtonMask = 0\n private set\n /**\n * Indicates the number of active touches.\n */\n val touchCount get() = touches.size\n /**\n * The list of functions to call when this gesture is recognized. The functions have a single argument:\n * this gesture recognizer, e.g., gestureCallback(recognizer). Applications may\n * add functions to this array or remove them.\n */\n val gestureCallbacks = mutableListOf<(GestureRecognizer)->Unit>()\n private var nextState: GestureState? = null\n private var clientStartX = 0\n private var clientStartY = 0\n private var translationWeight = 0.4\n private val touches = mutableListOf()\n private var touchCentroidShiftX = 0\n private var touchCentroidShiftY = 0\n private val canRecognizeWith = mutableSetOf()\n private val requiresFailureOf = mutableSetOf()\n private val requiredToFailBy = mutableSetOf()\n private val listenerList = mutableListOf()\n\n companion object {\n val allRecognizers = mutableListOf()\n }\n\n init {\n // Add the optional gesture callback.\n callback?.let { gestureCallbacks += it }\n\n // Add this recognizer to the list of all recognizers.\n allRecognizers += this\n }\n\n /**\n * Registers a gesture state listener on this GestureRecognizer. Registering state listeners using this function\n * enables applications to receive notifications of gesture recognition.\n *\n * @param listener The function to call when the event occurs.\n */\n fun addListener(listener: GestureListener) { listenerList += listener }\n\n /**\n * Removes a gesture state listener from this GestureRecognizer. The listener must be the same object passed to\n * addListener. Calling removeListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addListener.\n */\n fun removeListener(listener: GestureListener) { listenerList -= listener }\n\n fun touch(index: Int): TouchWrapper {\n require(index in touches.indices) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"touch\", \"indexOutOfRange\")\n }\n return touches[index]\n }\n\n fun recognizeSimultaneouslyWith(recognizer: GestureRecognizer) {\n canRecognizeWith.add(recognizer)\n recognizer.canRecognizeWith.add(this)\n }\n\n fun canRecognizeSimultaneouslyWith(recognizer: GestureRecognizer) = canRecognizeWith.contains(recognizer)\n\n fun requireRecognizerToFail(recognizer: GestureRecognizer) {\n requiresFailureOf.add(recognizer)\n recognizer.requiredToFailBy.add(this)\n }\n\n fun requiresRecognizerToFail(recognizer: GestureRecognizer) = requiresFailureOf.contains(recognizer)\n\n fun requiredToFailByRecognizer(recognizer: GestureRecognizer) = requiredToFailBy.contains(recognizer)\n\n open fun reset() {\n state = POSSIBLE\n nextState = null\n clientX = 0\n clientY = 0\n clientStartX = 0\n clientStartY = 0\n translationX = 0.0\n translationY = 0.0\n mouseButtonMask = 0\n touches.clear()\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun resetTranslation() {\n clientStartX = clientX\n clientStartY = clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun prepareToRecognize() {}\n\n protected open fun mouseDown(event: MouseEvent) {}\n protected open fun mouseMove(event: MouseEvent) {}\n protected open fun mouseUp(event: MouseEvent) {}\n\n protected open fun touchStart(touch: TouchWrapper) {}\n protected open fun touchMove(touch: TouchWrapper) {}\n protected open fun touchCancel(touch: TouchWrapper) {}\n protected open fun touchEnd(touch: TouchWrapper) {}\n \n protected open fun updateRecognizersWaitingForFailure() {\n // Transition gestures that are waiting for this gesture to transition to Failed.\n requiredToFailBy.forEach { r -> r.nextState?.let { r.state = it } }\n }\n\n protected open fun tryToRecognize(newState: GestureState): Boolean {\n // Transition to Failed if another gesture can prevent this gesture from recognizing.\n if (allRecognizers.any { r -> canBePreventedByRecognizer(r) }) {\n state = FAILED\n return false\n }\n\n // Delay the transition to Recognized/Began if this gesture is waiting for a gesture in the Possible state.\n if (allRecognizers.any { r -> isWaitingForRecognizerToFail(r) }) {\n nextState = newState\n return false\n }\n\n // Transition to Failed state all other gestures that can be prevented from recognizing by this gesture.\n allRecognizers.filter { r -> canPreventRecognizer(r) }.forEach { r -> r.state = FAILED }\n return true\n }\n\n protected open fun canPreventRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE &&\n (requiredToFailByRecognizer(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun canBePreventedByRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == RECOGNIZED &&\n (requiresRecognizerToFail(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun isWaitingForRecognizerToFail(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE && requiresRecognizerToFail(that)\n\n protected open fun notifyListeners() = listenerList.forEach { l -> l.gestureStateChanged(this) }\n\n protected open fun callGestureCallbacks() = gestureCallbacks.forEach { c -> c(this) }\n\n override fun handleEvent(event: Event) {\n if (!isEnabled) return\n\n if (event.defaultPrevented && state == POSSIBLE) return // ignore cancelled events while in the Possible state\n\n try {\n when {\n event.type == \"mousedown\" && event is MouseEvent -> handleMouseDown(event)\n event.type == \"mousemove\" && event is MouseEvent -> handleMouseMove(event)\n event.type == \"mouseup\" && event is MouseEvent -> handleMouseUp(event)\n event.type == \"touchstart\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchStart(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchmove\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchMove(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchcancel\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchCancel(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchend\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchEnd(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseDown(event)\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseMove(event)\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"mouse\" -> {\n // Intentionally left blank. The W3C Pointer Events specification is ambiguous on what cancel means\n // for mouse input, and there is no evidence that this event is actually generated (6/19/2015).\n }\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseUp(event)\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchStart(wrapPointer(event))\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchMove(wrapPointer(event))\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchCancel(wrapPointer(event))\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchEnd(wrapPointer(event))\n else -> Logger.logMessage(Logger.INFO, \"GestureRecognizer\", \"handleEvent\",\n \"Unrecognized event type: ${event.type}\")\n }\n } catch (e: Exception) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"handleEvent\", \"Error handling event.\\n$e\")\n }\n }\n\n protected open fun handleMouseDown(event: MouseEvent) {\n if (event.type == \"mousedown\" && touches.size > 0) return // ignore synthesized mouse down events on Android Chrome\n\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask != 0) return // ignore redundant mouse down events\n\n if (mouseButtonMask == 0) { // first button down\n clientX = event.clientX\n clientY = event.clientY\n clientStartX = event.clientX\n clientStartY = event.clientY\n translationX = 0.0\n translationY = 0.0\n }\n\n mouseButtonMask = mouseButtonMask or buttonBit\n mouseDown(event)\n }\n\n protected open fun handleMouseMove(event: MouseEvent) {\n if (mouseButtonMask == 0) return // ignore mouse move events when this recognizer does not consider any button to be down\n\n if (clientX == event.clientX && clientY == event.clientY) return // ignore redundant mouse move events\n\n val dx = event.clientX - clientStartX\n val dy = event.clientY - clientStartY\n val w = translationWeight\n clientX = event.clientX\n clientY = event.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n mouseMove(event)\n }\n\n protected open fun handleMouseUp(event: MouseEvent) {\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask == 0) return // ignore mouse up events for buttons this recognizer does not consider to be down\n\n mouseButtonMask = mouseButtonMask and buttonBit.inv()\n mouseUp(event)\n\n if (mouseButtonMask == 0) resetIfEventsEnded() // last button up\n }\n\n protected open fun handleTouchStart(touch: TouchWrapper) {\n touches.add(touch)\n\n if (touches.size == 1) { // first touch\n clientX = touch.clientX\n clientY = touch.clientY\n clientStartX = touch.clientX\n clientStartY = touch.clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n } else touchesAddedOrRemoved()\n\n touchStart(touch)\n }\n\n protected open fun handleTouchMove(nextTouch: TouchWrapper) {\n val touch = touchById(nextTouch.identifier) ?: return // ignore events for touches that did not start in this recognizer's target\n if (touch.clientX == nextTouch.clientX && touch.clientY == nextTouch.clientY) return // ignore redundant touch move events, which we've encountered on Android Chrome\n\n touch.clientX = nextTouch.clientX\n touch.clientY = nextTouch.clientY\n\n val centroid = touchCentroid()\n val dx = centroid.clientX - clientStartX + touchCentroidShiftX\n val dy = centroid.clientY - clientStartY + touchCentroidShiftY\n val w = translationWeight\n clientX = centroid.clientX\n clientY = centroid.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n\n touchMove(touch)\n }\n\n protected open fun handleTouchCancel(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchCancel(touch)\n resetIfEventsEnded()\n }\n\n protected open fun handleTouchEnd(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchEnd(touch)\n resetIfEventsEnded()\n }\n\n protected open fun resetIfEventsEnded() {\n if (state != POSSIBLE && mouseButtonMask == 0 && touches.size == 0) reset()\n }\n\n protected open fun touchesAddedOrRemoved() {\n touchCentroidShiftX += clientX\n touchCentroidShiftY += clientY\n val centroid = touchCentroid()\n clientX = centroid.clientX\n clientY = centroid.clientY\n touchCentroidShiftX -= clientX\n touchCentroidShiftY -= clientY\n }\n\n protected open fun touchCentroid(): Click {\n var x = 0\n var y = 0\n\n touches.forEach { touch ->\n x += touch.clientX / touches.size\n y += touch.clientY / touches.size\n }\n\n return Click(x, y)\n }\n\n protected open fun indexOfTouchWithId(identifier: Int) = touches.indexOfFirst { t -> t.identifier == identifier }\n\n protected open fun touchById(identifier: Int) = touches.firstOrNull { t -> t.identifier == identifier }\n\n protected open fun wrapTouch(event: Touch) = TouchWrapper(event.identifier, event.clientX, event.clientY)\n\n protected open fun wrapPointer(event: PointerEvent) = TouchWrapper(event.pointerId, event.clientX, event.clientY)\n\n protected class Click(\n /**\n * The X coordinate of the click point's location.\n */\n val clientX: Int,\n /**\n * The Y coordinate of the click point's location.\n */\n val clientY: Int\n )\n}",null,"package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for touch panning gestures.\n */\nopen class PanRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var minNumberOfTouches = 1\n var maxNumberOfTouches = Int.MAX_VALUE\n var interpretDistance = 20\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) state = if (shouldRecognize()) BEGAN else FAILED\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch cancelled\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n }\n\n override fun prepareToRecognize() {\n // set translation to zero when the pan begins\n resetTranslation()\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret touches when the touch centroid moves far enough\n }\n\n protected open fun shouldRecognize() = touchCount in minNumberOfTouches..maxNumberOfTouches\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger pinch gestures.\n */\nopen class PinchRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceDistance = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val scaleWithOffset get() = scale * offsetScale\n protected var scale = 1.0\n protected var offsetScale = 1.0\n protected val pinchTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n scale = 1.0\n offsetScale = 1.0\n referenceDistance = 0.0\n pinchTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (pinchTouches.size < 2) {\n pinchTouches.add(touch)\n if (pinchTouches.size == 2) {\n referenceDistance = currentPinchDistance()\n offsetScale *= scale\n scale = 1.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (pinchTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val distance = currentPinchDistance()\n val newScale = abs(distance / referenceDistance)\n val w = weight\n scale = scale * (1 - w) + newScale * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceDistance = currentPinchDistance()\n scale = 1.0\n }\n\n protected open fun shouldRecognize() =\n abs(currentPinchDistance() - referenceDistance) > interpretThreshold * window.devicePixelRatio\n\n protected open fun currentPinchDistance(): Double {\n val touch0 = pinchTouches[0]\n val touch1 = pinchTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return sqrt((dx * dx + dy * dy).toDouble())\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.atan2\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger rotation gestures.\n */\nopen class RotationRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceAngle = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val rotationWithOffset get() = rotation + offsetRotation\n protected var rotation = 0.0\n protected var offsetRotation = 0.0\n protected val rotationTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n rotation = 0.0\n offsetRotation = 0.0\n referenceAngle = 0.0\n rotationTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (rotationTouches.size < 2) {\n rotationTouches.add(touch)\n if (rotationTouches.size == 2) {\n referenceAngle = currentTouchAngle()\n offsetRotation += rotation\n rotation = 0.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (rotationTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val angle = currentTouchAngle()\n val newRotation = Angle.normalizeAngle180(angle - referenceAngle)\n val w = weight\n rotation = rotation * (1 - w) + newRotation * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0)\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceAngle = currentTouchAngle()\n rotation = 0.0\n }\n\n protected open fun shouldRecognize(): Boolean {\n rotation = Angle.normalizeAngle180(currentTouchAngle() - referenceAngle)\n return abs(rotation) > interpretThreshold\n }\n\n protected open fun currentTouchAngle(): Double {\n val touch0 = rotationTouches[0]\n val touch1 = rotationTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return Angle.toDegrees(atan2(dy.toDouble(), dx.toDouble()))\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.BasicWorldWindowController\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Highlightable\nimport earth.worldwind.shape.Movable\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.MouseEvent\n\nopen class SelectDragDetector(protected val wwd: WorldWindow) {\n /**\n * Main interface representing all interaction callbacks\n */\n var callback: SelectDragCallback? = null\n /**\n * Enable/disable mouse events processing.\n * If disabled, highlighting of Renderables and all callbacks will be switched off.\n */\n var isEnabled = true\n /**\n * Enable/disable dragging of flying objects using their terrain projection position\n */\n var isDragTerrainPosition = false\n protected var pickedPosition: Position? = null\n protected var pickedRenderable: Renderable? = null\n protected val oldHighlighted = mutableSetOf()\n protected val newHighlighted = mutableSetOf()\n protected var isDragging = false\n protected var isDraggingArmed = false\n private val dragRefPt = Vec2()\n private val lastTranslation = Vec2()\n\n protected val handlePick = EventListener { event ->\n // Do not pick new items if dragging is in progress or detector is disabled\n if (isDragging || !isEnabled) return@EventListener\n\n // Determine pick point from event\n var clientX = 0\n var clientY = 0\n when (event) {\n is MouseEvent -> {\n clientX = event.clientX\n clientY = event.clientY\n }\n is TouchEvent -> {\n event.changedTouches.item(0)?.let { touch ->\n clientX = touch.clientX\n clientY = touch.clientY\n } ?: return@EventListener\n }\n else -> return@EventListener\n }\n\n // Reset previous pick result\n pickedPosition = null\n pickedRenderable = null\n lastTranslation.set(0.0, 0.0)\n\n // Get pick point in canvas coordinates\n val pickPoint = wwd.canvasCoordinates(clientX, clientY)\n\n // Pick objects in selected point\n val pickList = wwd.pick(pickPoint)\n\n // Get picked position from terrain object, if user pressed inside the globe\n pickedPosition = pickList.terrainPickedObject?.terrainPosition\n\n// // NOTE Region selection use bounding box intersection with specified rectangle. Use highlighter path thickness instead.\n// if (!pickList.hasNonTerrainObjects) {\n// pickList = wwd.pickShapesInRegion(\n// Viewport(pickPoint.x - SLOPE / 2 , pickPoint.y - SLOPE / 2, SLOPE, SLOPE)\n// )\n// }\n\n // Redraw canvas in case we de-highlight old or highlight new renderables\n var redrawRequired = false\n\n // Put picked renderables into new highlighted set\n for (obj in pickList.objects) if (!obj.isTerrain && obj.userObject is Highlightable) newHighlighted.add(obj.userObject)\n\n // De-highlight any previously highlighted renderables which is not selected or picked\n for (highlighted in oldHighlighted)\n if (!newHighlighted.contains(highlighted)\n && highlighted is Renderable && highlighted.getUserProperty(HIGHLIGHT_LOCKED_KEY) != true) {\n highlighted.isHighlighted = false\n oldHighlighted.remove(highlighted)\n redrawRequired = true\n }\n\n // Highlight picked objects which was not highlighted yet\n for (highlighted in newHighlighted) if (!oldHighlighted.contains(highlighted)) {\n highlighted.isHighlighted = true\n oldHighlighted.add(highlighted)\n redrawRequired = true\n }\n\n // Clear new highlighted buffer until next frame\n newHighlighted.clear()\n\n // Update the window if we changed anything\n if (redrawRequired) wwd.requestRedraw()\n\n // Get top picked renderable to use it in listener callbacks\n val topPickedObject = pickList.topPickedObject?.userObject\n if (topPickedObject is Renderable) pickedRenderable = topPickedObject\n\n // Take reference position as a backup, if user pressed outside the globe\n if (topPickedObject is Movable && pickedPosition == null) pickedPosition = topPickedObject.referencePosition\n\n // Determine whether the dragging flag should be \"armed\".\n isDraggingArmed = topPickedObject is Renderable && callback?.canMoveRenderable(topPickedObject) == true\n }\n\n protected val handlePrimaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderablePicked(renderable, position) else callback.onTerrainPicked(position)\n } ?: callback.onNothingPicked()\n wwd.requestRedraw()\n }\n }\n\n protected val handleSecondaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderableContext(renderable, position) else callback.onTerrainContext(position)\n } ?: callback.onNothingContext()\n wwd.requestRedraw()\n }\n }\n\n protected val handleDrag: (GestureRecognizer) -> Unit = { recognizer ->\n when (recognizer.state) {\n BEGAN, CHANGED -> {\n val callback = callback\n val renderable = pickedRenderable\n // Reference position is a priority during movement\n val toPosition = if (renderable is Movable) renderable.referencePosition else pickedPosition\n if (toPosition != null && renderable != null && callback != null) {\n // Signal that dragging is in progress\n isDragging = true\n\n // First we compute the screen coordinates of the position's \"ground\" point. We'll apply the\n // screen X and Y drag distances to this point, from which we'll compute a new position,\n // wherein we restore the original position's altitude.\n val fromPosition = Position(toPosition)\n val clapToGround = isDragTerrainPosition || renderable !is Movable || renderable.altitudeMode == AltitudeMode.CLAMP_TO_GROUND\n val movePoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n if (clapToGround && wwd.engine.pickTerrainPosition(movePoint.x, movePoint.y, toPosition)\n || !clapToGround && wwd.engine.geographicToScreenPoint(fromPosition.latitude, fromPosition.longitude, 0.0, dragRefPt)\n && wwd.engine.screenPointToGroundPosition(\n dragRefPt.x + recognizer.translationX - lastTranslation.x,\n dragRefPt.y + recognizer.translationY - lastTranslation.y,\n toPosition\n )) {\n // Backup last translation\n lastTranslation.set(recognizer.translationX, recognizer.translationY)\n // Restore original altitude\n toPosition.altitude = fromPosition.altitude\n // Update movable position\n if (renderable is Movable) renderable.moveTo(wwd.engine.globe, toPosition)\n // Notify callback\n callback.onRenderableMoved(renderable, fromPosition, toPosition)\n // Reflect the change in position on the globe.\n wwd.requestRedraw()\n } else {\n // Probably clipped by near/far clipping plane or off the globe.\n // The position was not updated. Stop the drag.\n recognizer.state = CANCELLED\n }\n }\n }\n ENDED -> {\n val callback = callback\n val position = pickedPosition\n val renderable = pickedRenderable\n if (renderable != null && position != null && callback != null) {\n callback.onRenderableMovingFinished(renderable, position)\n wwd.requestRedraw()\n }\n cancelDragging()\n }\n CANCELLED -> cancelDragging()\n else -> {}\n }\n }\n\n protected val primaryClickRecognizer = ClickRecognizer(wwd.canvas, handlePrimaryClick)\n protected val tapRecognizer = TapRecognizer(wwd.canvas, handlePrimaryClick)\n protected val secondaryClickRecognizer = ClickRecognizer(wwd.canvas, handleSecondaryClick).apply { button = 2 } // Secondary mouse button\n protected val doubleTapRecognizer = TapRecognizer(wwd.canvas, handleSecondaryClick).apply { numberOfTaps = 2 } // Double tap\n protected val dragRecognizer = object : DragRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n protected val panRecognizer = object : PanRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n\n companion object {\n// const val SLOPE = 16\n const val HIGHLIGHT_LOCKED_KEY = \"highlight_locked\"\n }\n\n init {\n wwd.addEventListener(\"mousedown\", handlePick)\n wwd.addEventListener(\"mousemove\", handlePick)\n wwd.addEventListener(\"touchstart\", handlePick)\n wwd.addEventListener(\"touchmove\", handlePick)\n\n // Resolve conflict between item movement and globe rotation\n val controller = wwd.controller\n if (controller is BasicWorldWindowController) {\n controller.primaryDragRecognizer.requireRecognizerToFail(dragRecognizer)\n controller.panRecognizer.requireRecognizerToFail(panRecognizer)\n }\n }\n\n protected fun cancelDragging() {\n isDragging = false\n isDraggingArmed = false\n }\n}\n","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple taps.\n */\nopen class TapRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfTaps = 1\n var numberOfTouches = 1\n var maxTouchMovement = 20\n var maxTapDuration = 500\n var maxTapInterval = 400\n protected val taps = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n taps.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n\n if (touchCount > numberOfTouches) {\n state = FAILED\n } else if (touchCount == 1) { // first touch started\n taps.add(TouchWrapper(touchCount, clientX, clientY))\n failAfterDelay(maxTapDuration) // fail if the tap is down too long\n } else {\n val tap = taps[taps.size - 1]\n tap.identifier = touchCount // max number of simultaneous touches\n tap.clientX = clientX // touch centroid\n tap.clientY = clientY\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxTouchMovement * window.devicePixelRatio ) state = FAILED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n if (touchCount != 0) return // wait until the last touch ends\n val tapCount = taps.size\n val tap = taps[tapCount - 1]\n if (tap.identifier != numberOfTouches) {\n state = FAILED // wrong number of touches\n } else if (tapCount == numberOfTaps) {\n clientX = taps[0].clientX\n clientY = taps[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxTapInterval) // fail if the interval between taps is too long\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() = timeout?.let { window.clearTimeout(it) }.also { timeout = null }\n}","package earth.worldwind.gesture\n\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger tilt gestures.\n */\nopen class TiltRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : PanRecognizer(target, callback) {\n var maxTouchDistance = 300\n var maxTouchDivergence = 50\n\n companion object {\n const val LEFT = 1 shl 0\n const val RIGHT = 1 shl 1\n const val UP = 1 shl 2\n const val DOWN = 1 shl 3\n }\n\n override fun shouldInterpret(): Boolean {\n for (i in 0 until touchCount) {\n val touch = touch(i)\n val dx = touch.translationX\n val dy = touch.translationY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > interpretDistance) return true // interpret touches when any touch moves far enough\n }\n return false\n }\n\n override fun shouldRecognize(): Boolean {\n if (touchCount < 2) return false\n val touch0 = touch(0)\n val touch1 = touch(1)\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > maxTouchDistance * window.devicePixelRatio) return false // touches must be close together\n val tx = touch0.translationX - touch1.translationX\n val ty = touch0.translationY - touch1.translationY\n val divergence = sqrt((tx * tx + ty * ty).toDouble())\n if (divergence > maxTouchDivergence * window.devicePixelRatio) return false // touches must be moving in a mostly parallel direction\n\n val verticalMask = UP or DOWN\n val dirMask0 = touchDirection(touch0) and verticalMask\n val dirMask1 = touchDirection(touch1) and verticalMask\n return (dirMask0 and dirMask1) != 0 // touches must move in the same vertical direction\n }\n\n protected open fun touchDirection(touch: TouchWrapper): Int {\n val dx = touch.translationX\n val dy = touch.translationY\n var dirMask = 0\n if (abs(dx) > abs(dy)) {\n dirMask = dirMask or if (dx < 0) LEFT else 0\n dirMask = dirMask or if (dx > 0) RIGHT else 0\n } else {\n dirMask = dirMask or if (dy < 0) UP else 0\n dirMask = dirMask or if (dy > 0) DOWN else 0\n }\n return dirMask\n }\n}","package earth.worldwind.gesture\n\n/**\n * Represents a touch point.\n */\nopen class TouchWrapper(\n /**\n * A number uniquely identifying the touch point\n */\n var identifier: Int,\n /**\n * The X coordinate of the touch point's location.\n */\n var clientX: Int,\n /**\n * The Y coordinate of the touch point's location.\n */\n var clientY: Int\n) {\n /**\n * Indicates this touch point's translation along the X axis since the touch started.\n */\n var translationX: Int\n get() = clientX - clientStartX\n set(value) { clientStartX = clientX - value }\n /**\n * Indicates this touch point's translation along the Y axis since the touch started.\n */\n var translationY: Int\n get() = clientY - clientStartY\n set(value) { clientStartY = clientY - value }\n protected var clientStartX = clientX\n protected var clientStartY = clientY\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.w3c.dom.url.URL\n\n/**\n * Provides a mechanism for specifying elevations from a variety of sources.\n *
\n * ElevationSource supports following source types:\n * - Uniform Resource Locator [URL]\n *
\n * ElevationSource instances are intended to be used as a key into a cache or other data structure that enables sharing\n * of loaded elevation resources. File paths and URLs with the same string representation considered equals.\n */\nactual open class ElevationSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n /**\n * Constructs an elevation source with an [URL].\n *\n * @param url Uniform Resource Locator\n *\n * @return the new elevation source\n */\n fun fromUrl(url: URL) = ElevationSource(url.href)\n\n /**\n * Constructs an elevation source with a URL string.\n *\n * @param urlString complete URL string\n *\n * @return the new elevation source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ElevationSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an elevation source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ElevationSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new elevation source\n */\n actual fun fromUnrecognized(source: Any) = when(source) {\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ElevationSource(source)\n }\n }\n\n /**\n * Indicates whether this elevation source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when (source) {\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSource.Companion.fromUnrecognized\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.formats.geotiff.GeoTiffReader\nimport io.ktor.client.fetch.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.await\nimport kotlinx.coroutines.withContext\nimport org.khronos.webgl.*\nimport org.khronos.webgl.ArrayBuffer\nimport org.khronos.webgl.ArrayBufferView\nimport org.khronos.webgl.Uint8Array\nimport kotlin.math.roundToInt\n\nactual open class TiledElevationCoverage actual constructor(\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n) : AbstractTiledElevationCoverage(tileMatrixSet, elevationSourceFactory) {\n /**\n * This is a dummy workaround for asynchronously defined ElevationSourceFactory\n */\n actual constructor(): this(TileMatrixSet(), object : ElevationSourceFactory {\n override val contentType = \"Dummy\"\n\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int) = fromUnrecognized(Any())\n })\n\n /**\n * Makes a copy of this elevation coverage\n */\n actual open fun clone() = TiledElevationCoverage(tileMatrixSet, elevationSourceFactory).also {\n it.displayName = displayName\n }\n\n override suspend fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int) {\n val elevationSource = elevationSourceFactory.createElevationSource(tileMatrix, row, column)\n if (elevationSource.isUrl) {\n val url = elevationSource.asUrl()\n try {\n // Ktor JS Client cannot be used here, because it is not able to return ArrayBuffer directly.\n val response = fetch(url).await()\n if (response.ok) {\n val arrayBuffer = response.arrayBuffer().await()\n val contentType = response.headers.get(\"Content-Type\")\n var message: String? = null\n val buffer = when {\n contentType.equals(\"image/bil\", true) ||\n contentType.equals(\"application/bil\", true) ||\n contentType.equals(\"application/bil16\", true) -> Int16Array(arrayBuffer)\n contentType.equals(\"application/bil32\", true) -> Float32Array(arrayBuffer)\n contentType.equals(\"image/tiff\", true) -> decodeTiffImage(arrayBuffer)\n contentType.equals(\"text/xml\", true) -> {\n message = \"Elevations retrieval failed (${response.statusText}): $url.\\n\"\n +String.asDynamic().fromCharCode.apply(null, Uint8Array(arrayBuffer))\n null\n }\n else -> {\n message = \"Elevations retrieval failed (Unexpected content type $contentType): $url\"\n null\n }\n }?.let { elevationSource.postprocessor?.process(it) ?: it } // Apply buffer transformations\n decodeBuffer(buffer)?.let {\n retrievalSucceeded(key, it, \"Elevation retrieval succeeded: $url\")\n } ?: retrievalFailed(key, message ?: \"Elevations retrieval failed: $url\")\n } else {\n retrievalFailed(key, \"Elevations retrieval failed (${response.statusText}): $url\")\n }\n } catch (e: Throwable) {\n retrievalFailed(key, \"Elevations retrieval failed (${e.message}): $url\")\n }\n } else retrievalFailed(key, \"Unsupported elevation source type\")\n }\n\n private suspend fun decodeTiffImage(arrayBuffer: ArrayBuffer) = withContext(Dispatchers.Default) {\n GeoTiffReader(arrayBuffer).createTypedElevationArray()\n }\n\n protected open fun decodeBuffer(buffer: ArrayBufferView?) = when (buffer) {\n is Int16Array -> ShortArray(buffer.length) { buffer[it] }\n is Float32Array -> ShortArray(buffer.length) { buffer[it].roundToInt().toShort() }\n else -> null\n }\n\n protected open fun retrievalSucceeded(key: Long, value: ShortArray, message: String) {\n retrievalSucceeded(key, value)\n if (isLoggable(DEBUG)) log(DEBUG, message)\n }\n\n protected open fun retrievalFailed(key: Long, message: String) {\n retrievalFailed(key)\n log(WARN, message)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.shape.TiledSurfaceImage\n\nactual open class TiledImageLayer actual constructor(\n name: String?, tiledSurfaceImage: TiledSurfaceImage?\n): AbstractTiledImageLayer(name, tiledSurfaceImage) {\n /**\n * Makes a copy of this image layer\n */\n actual open fun clone() = TiledImageLayer(displayName, tiledSurfaceImage?.clone())\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.util.Level\nimport kotlinx.browser.document\nimport org.khronos.webgl.get\nimport org.khronos.webgl.set\nimport org.w3c.dom.CanvasRenderingContext2D\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.math.floor\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nactual open class MercatorImageTile actual constructor(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): AbstractMercatorImageTile(sector, level, row, column) {\n companion object {\n val srcCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val srcCtx = srcCanvas.getContext(\"2d\", js(\"{ willReadFrequently: true }\")) as CanvasRenderingContext2D\n val dstCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val dstCtx = dstCanvas.getContext(\"2d\") as CanvasRenderingContext2D\n }\n\n override suspend fun process(resource: Resource) = if (resource is Image) {\n val width = resource.width\n val height = resource.height\n val widthDouble = resource.width.toDouble()\n val heightDouble = resource.height.toDouble()\n\n // Get source image data\n srcCanvas.width = width\n srcCanvas.height = height\n srcCtx.drawImage(resource, 0.0, 0.0, widthDouble, heightDouble)\n val srcData = srcCtx.getImageData(0.0, 0.0, widthDouble, heightDouble)\n\n // Prepare destination image data\n dstCanvas.width = width\n dstCanvas.height = height\n val dstData = dstCtx.createImageData(widthDouble, heightDouble)\n\n // Re-project mercator tile to equirectangular projection\n val sector = sector as MercatorSector\n val miny = sector.minLatPercent\n val maxy = sector.maxLatPercent\n for (y in 0 until height) {\n val sy = 1.0 - y / (height - 1.0)\n val lat = sy * sector.deltaLatitude.inDegrees + sector.minLatitude.inDegrees\n val dy = (1.0 - (gudermannianInverse(lat.degrees) - miny) / (maxy - miny)).coerceIn(0.0, 1.0)\n val srcRow = floor(dy * (height - 1)).toInt()\n for (x in 0 until width) {\n val src = 4 * (x + srcRow * width)\n val dst = 4 * (x + y * width)\n dstData.data[dst] = srcData.data[src]\n dstData.data[dst + 1] = srcData.data[src + 1]\n dstData.data[dst + 2] = srcData.data[src + 2]\n dstData.data[dst + 3] = srcData.data[src + 3]\n }\n }\n\n // Replace image source with transformed canvas image data\n dstCtx.putImageData(dstData, 0.0, 0.0)\n //resource.src = dstCanvas.toDataURL() // This approach is performance ineffective thus replaced by toBlob()\n dstCanvas.toBlob({\n // Setting new src will call onLoad or onError in RenderResourceCache and continue image retrieval process\n if (it != null) resource.src = URL.createObjectURL(it)\n // Call image.onError in RenderResourceCache to fail retrieval and mark resource as absent\n else resource.onerror?.invoke(\"Error saving canvas to Blob\", \"\", 0, 0, null) as Unit\n })\n\n resource // Do not call super.process to prevent unnecessary onLoad event processing\n } else super.process(resource)\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.w3c.dom.CENTER\nimport org.w3c.dom.CanvasTextAlign\n\n/**\n * Holds attributes controlling the style, size and other attributes of [earth.worldwind.shape.Label] shapes and\n * the textual features of [earth.worldwind.shape.Placemark] and other shapes. The values used for these attributes are those\n * defined by the CSS Font property.\n */\nactual open class Font(\n /**\n * The font size.\n */\n var size: Int,\n /**\n * The font family.\n * @see CSS font-family for defined values.\n */\n var family: String = \"sans-serif\",\n /**\n * The font weight.\n * @see CSS font-weight for defined values.\n */\n var weight: String = \"normal\",\n /**\n * The font style.\n * @see CSS font-style for defined values.\n */\n var style: String = \"normal\",\n /**\n * The font variant.\n * @see CSS font-variant for defined values.\n */\n var variant: String = \"normal\",\n /**\n * The horizontal alignment of the font.\n * Recognized values are \"left\", \"center\" and \"right\".\n */\n var horizontalAlignment: CanvasTextAlign = CanvasTextAlign.CENTER\n) {\n actual constructor(): this(14)\n actual constructor(family: String, weight: FontWeight, size: Int): this(\n size, family,\n if(weight == FontWeight.BOLD) \"bold\" else \"normal\",\n if(weight == FontWeight.ITALIC) \"italic\" else \"normal\",\n )\n\n init {\n require(size > 0) {\n logMessage(ERROR, \"Font\", \"constructor\", \"invalidSize\");\n }\n }\n\n actual fun copy(font: Font) {\n size = font.size\n style = font.style\n variant = font.variant\n weight = font.weight\n family = font.family\n horizontalAlignment = font.horizontalAlignment\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Font) return false\n if (size != other.size) return false\n if (style != other.style) return false\n if (variant != other.variant) return false\n if (weight != other.weight) return false\n if (family != other.family) return false\n if (horizontalAlignment != other.horizontalAlignment) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = size\n result = 31 * result + style.hashCode()\n result = 31 * result + variant.hashCode()\n result = 31 * result + weight.hashCode()\n result = 31 * result + family.hashCode()\n result = 31 * result + horizontalAlignment.hashCode()\n return result\n }\n\n /**\n * A string representing this font's style, weight, size and family properties, suitable for\n * passing directly to a 2D canvas context.\n */\n override fun toString() = \"$style $variant $weight ${size}px $family\"\n}","package earth.worldwind.render\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.image.*\nimport earth.worldwind.util.AbsentResourceList\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.LruMemoryCache\nimport earth.worldwind.util.kgl.*\nimport kotlinx.browser.window\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.TexImageSource\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.HTMLImageElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.time.Duration.Companion.seconds\n\nactual open class RenderResourceCache(\n capacity: Long = recommendedCapacity(), lowWater: Long = (capacity * 0.75).toLong()\n) : LruMemoryCache(capacity, lowWater) {\n companion object {\n fun recommendedCapacity(): Long = (window.navigator.asDynamic().deviceMemory as? Number)\n ?.let { it.toLong() * 1024 * 1024 * 1024 / 16 * 3 } ?: (512L * 1024 * 1024) // 512 Mb as backup\n }\n\n override var age = 0L // Manually incrementable cache age\n var urlRetrievalQueueSize = 16\n /**\n * Main render resource retrieval scope\n */\n actual val mainScope = MainScope()\n /**\n * Identifies requested resources that whose retrieval failed.\n */\n actual val absentResourceList = AbsentResourceList(3, 60.seconds)\n /**\n * List of retrievals currently in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n\n override fun clear() {\n super.clear()\n currentRetrievals.clear()\n absentResourceList.clear()\n age = 0\n }\n\n actual fun incAge() { ++age }\n\n actual fun releaseEvictedResources(dc: DrawContext) {\n // TODO Implement evicted resources management\n }\n\n actual fun retrieveTexture(imageSource: ImageSource, options: ImageOptions?): Texture? {\n when {\n imageSource.isImage -> {\n // Following type of image sources is already in memory, so a texture may be created and put into the cache immediately.\n return createTexture(options, imageSource.asImage())?.also { put(imageSource, it, it.byteCount) }\n }\n imageSource.isImageFactory -> {\n val factory = imageSource.asImageFactory()\n if (factory.isRunBlocking) {\n // Image factory makes easy operations, so a texture may be created and put into the cache immediately.\n return factory.createImage()?.let { image ->\n createTexture(options, image)?.also { put(imageSource, it, it.byteCount) }\n }\n }\n }\n }\n\n // Ignore retrieval of already requested resources or marked as absent\n if (currentRetrievals.size >= urlRetrievalQueueSize || currentRetrievals.contains(imageSource)\n || absentResourceList.isResourceAbsent(imageSource.hashCode())) return null\n\n // Retrieve remote image source\n when {\n imageSource.isResource -> retrieveRemoteImage(imageSource, options, imageSource.asResource().fileUrl)\n imageSource.isUrl -> retrieveRemoteImage(imageSource, options, imageSource.asUrl())\n imageSource.isImageFactory -> {\n currentRetrievals += imageSource\n mainScope.launch {\n imageSource.asImageFactory().createImage()?.let {\n retrievalSucceeded(imageSource, options, it)\n } ?: retrievalFailed(imageSource)\n }\n }\n }\n\n return null\n }\n\n actual fun retrieveTextFile(fileResource: FileResource, result: (String) -> Unit) {\n mainScope.launch {\n try {\n result(fileResource.getText())\n } catch (e: Throwable) {\n log(ERROR, \"Resource retrieval failed ($fileResource): ${e.message}\")\n }\n }\n }\n\n protected open fun retrieveRemoteImage(imageSource: ImageSource, options: ImageOptions?, src: String) {\n val image = Image()\n var postprocessorExecuted = false\n image.onload = {\n // Check if image postprocessor is assigned and not yet executed.\n // OnLoad event can be called second time by reassigning image.src inside postprocessor.\n val postprocessor = imageSource.postprocessor\n if (postprocessor != null && !postprocessorExecuted) {\n postprocessorExecuted = true // Prevent cyclic processing due to src modification inside postprocessing.\n mainScope.launch { postprocessor.process(image) } // Apply image transformation.\n } else retrievalSucceeded(imageSource, options, image) // Consume original or processed image as retrieved\n if (postprocessor != null) URL.revokeObjectURL(image.src) // Revoke URL possibly created in postprocessor\n }\n image.onerror = { _, _, _, _, _ -> retrievalFailed(imageSource) }\n currentRetrievals += imageSource\n image.crossOrigin = \"anonymous\"\n image.src = src\n }\n\n protected open fun createTexture(options: ImageOptions?, image: TexImageSource): Texture? {\n var (width, height) = when (image) {\n is HTMLImageElement -> image.width to image.height\n is HTMLCanvasElement -> image.width to image.height\n else -> return null\n }\n\n // Process initialWidth and initialHeight if specified\n if (width == 0 || height == 0) {\n // If source image has dimensions, then resize it proportionally to fit initial size restrictions\n val ratioW = if (options != null && options.initialWidth > 0) width / options.initialWidth else 0\n val ratioH = if (options != null && options.initialHeight > 0) height / options.initialHeight else 0\n val ratio = if (ratioH > ratioW) ratioH else ratioW\n if (ratio > 0) {\n width /= ratio\n height /= ratio\n }\n } else if (options != null && options.initialWidth > 0 && options.initialHeight > 0) {\n // If source image has no dimensions (e.g. SVG image), then set initial size of image\n width = options.initialWidth\n height = options.initialHeight\n }\n\n // Create image texture and apply texture parameters\n val texture = ImageTexture(image, width, height)\n if (options?.resamplingMode == ResamplingMode.NEAREST_NEIGHBOR) {\n texture.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n texture.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n }\n if (options?.wrapMode == WrapMode.REPEAT) {\n texture.setTexParameter(GL_TEXTURE_WRAP_S, GL_REPEAT)\n texture.setTexParameter(GL_TEXTURE_WRAP_T, GL_REPEAT)\n }\n return texture\n }\n\n protected open fun retrievalSucceeded(source: ImageSource, options: ImageOptions?, image: TexImageSource) {\n // Create texture and put it into cache.\n createTexture(options, image)?.let { put(source, it, it.byteCount) }\n currentRetrievals -= source\n absentResourceList.unmarkResourceAbsent(source.hashCode())\n WorldWind.requestRedraw()\n if (isLoggable(DEBUG)) log(DEBUG, \"Image retrieval succeeded: $source\")\n }\n\n protected open fun retrievalFailed(source: ImageSource) {\n currentRetrievals -= source\n absentResourceList.markResourceAbsent(source.hashCode())\n log(WARN, \"Image retrieval failed: $source\")\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.render.image.ImageTexture\nimport earth.worldwind.shape.TextAttributes\nimport kotlinx.browser.document\nimport org.w3c.dom.*\nimport kotlin.math.ceil\n\nactual open class TextRenderer actual constructor(protected val rc: RenderContext) {\n private val lineSpacing = 0.15 // fraction of font size\n\n /**\n * Creates a texture for a specified text string and specified text attributes.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A texture for the specified text string.\n */\n actual fun renderText(text: String?, attributes: TextAttributes): Texture? =\n if (text?.isNotEmpty() == true) ImageTexture(drawText(text, attributes)) else null\n\n /**\n * Creates a 2D Canvas for a specified text string while considering current TextRenderer state regarding outline\n * usage and color, text color, typeface, and outline width.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A 2D Canvas for the specified text string.\n */\n protected open fun drawText(text: String, attributes: TextAttributes): HTMLCanvasElement {\n val canvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val ctx2D = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n\n val textSize = textSize(ctx2D, text, attributes)\n val lines = text.split(\"\\n\")\n val strokeOffset = if (attributes.isOutlineEnabled) attributes.outlineWidth / 2.0 else 0.0\n\n canvas.width = ceil(textSize.x * rc.densityFactor).toInt()\n canvas.height = ceil(textSize.y * rc.densityFactor).toInt()\n\n ctx2D.scale(rc.densityFactor.toDouble(), rc.densityFactor.toDouble())\n ctx2D.font = attributes.font.toString()\n ctx2D.textBaseline = CanvasTextBaseline.BOTTOM\n ctx2D.textAlign = attributes.font.horizontalAlignment\n ctx2D.fillStyle = attributes.textColor.toCssColorString()\n ctx2D.strokeStyle = attributes.outlineColor.toCssColorString()\n ctx2D.lineWidth = attributes.outlineWidth.toDouble()\n ctx2D.lineCap = CanvasLineCap.ROUND\n ctx2D.lineJoin = CanvasLineJoin.ROUND\n\n when (attributes.font.horizontalAlignment) {\n CanvasTextAlign.LEFT -> ctx2D.translate(strokeOffset, 0.0)\n CanvasTextAlign.RIGHT -> ctx2D.translate(textSize.x - strokeOffset, 0.0)\n else -> ctx2D.translate(textSize.x / 2.0, 0.0)\n }\n\n for (i in lines.indices) {\n val line = lines[i]\n ctx2D.translate(0.0, attributes.font.size * (1.0 + lineSpacing) + strokeOffset)\n if (attributes.isOutlineEnabled) ctx2D.strokeText(line, 0.0, 0.0)\n ctx2D.fillText(line, 0.0, 0.0)\n }\n\n return canvas\n }\n\n /**\n * Returns the width and height of a specified text string considering the current typeFace and outline usage.\n * @param ctx2D Canvas rendering context\n * @param text The text string.\n * @param textAttributes Text font, size, color etc.\n * @returns A vector indicating the text's width and height, respectively, in pixels.\n */\n protected open fun textSize(ctx2D: CanvasRenderingContext2D, text: String, textAttributes: TextAttributes): Vec2 {\n if (text.isEmpty()) Vec2()\n\n ctx2D.font = textAttributes.font.toString()\n\n val lines = text.split(\"\\n\")\n var height = lines.size * (textAttributes.font.size * (1.0 + lineSpacing))\n var maxWidth = 0.0\n for (i in lines.indices) maxWidth = maxWidth.coerceAtLeast(ctx2D.measureText(lines[i]).width)\n\n if (textAttributes.isOutlineEnabled) {\n maxWidth += textAttributes.outlineWidth\n height += textAttributes.outlineWidth\n }\n\n return Vec2(maxWidth, height)\n }\n}","package earth.worldwind.render.image\n\nimport dev.icerock.moko.resources.ImageResource\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlinx.browser.document\nimport org.khronos.webgl.TexImageSource\nimport org.w3c.dom.CanvasRenderingContext2D\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.collections.mutableMapOf\nimport kotlin.collections.set\n\n/**\n * Provides a mechanism for specifying images from a variety of sources. ImageSource retains the image source on behalf\n * of the caller, making this information available to WorldWind components that load images on the caller's behalf.\n *
\n * ImageSource supports following source types:\n * - Uniform Resource Locator [URL]\n * - [Image] object\n * - WorldWind [ImageSource.ImageFactory]\n * - Multi-platform resource identifier\n *
\n * ImageSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded images. Images are compared by reference. URLs with the same string representation considered equals.\n */\nactual open class ImageSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n protected val lineStippleFactories = mutableMapOf()\n /**\n * Constructs an image source with a multi-platform resource identifier.\n *\n * @param imageResource the multi-platform resource identifier\n *\n * @return the new image source\n */\n actual fun fromResource(imageResource: ImageResource) = ImageSource(imageResource)\n\n /**\n * Constructs an image source with an [Image]. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param image the [Image] to use as an image source\n *\n * @return the new image source\n */\n fun fromImage(image: Image) = ImageSource(image)\n\n /**\n * Constructs an image source with a [ImageFactory]. WorldWind shapes configured with an image factory image source\n * construct their images lazily, typically when the shape becomes visible on screen.\n *\n * @param factory the [ImageFactory] to use as an image source\n *\n * @return the new image source\n */\n fun fromImageFactory(factory: ImageFactory) = ImageSource(factory)\n\n /**\n * Constructs an image source with an [URL]. The image's dimensions should be no greater than 2048 x 2048.\n *\n * @param url Uniform Resource Locator\n *\n * @return the new image source\n */\n fun fromUrl(url: URL) = ImageSource(url.href)\n\n /**\n * Constructs an image source with a URL string. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param urlString complete URL string\n *\n * @return the new image source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ImageSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an image source with a line stipple pattern. The result is a one-dimensional image with pixels\n * representing the specified stipple factor and stipple pattern. Line stipple images can be used for displaying\n * dashed shape outlines. See [earth.worldwind.shape.ShapeAttributes.outlineImageSource].\n *\n * @param factor specifies the number of times each bit in the pattern is repeated before the next bit is used. For\n * example, if the factor is 3, each bit is repeated three times before using the next bit. The\n * specified factor must be either 0 or an integer greater than 0. A factor of 0 indicates no\n * stippling.\n * @param pattern specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and\n * which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16\n * pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is\n * repeated three times before using the next bit.\n *\n * @return the new image source\n */\n actual fun fromLineStipple(factor: Int, pattern: Short): ImageSource {\n val lFactor = factor.toLong() and 0xFFFFFFFFL\n val lPattern = pattern.toLong() and 0xFFFFL\n val key = lFactor shl 32 or lPattern\n val factory = lineStippleFactories[key] ?: LineStippleImageFactory(factor, pattern).also {\n lineStippleFactories[key] = it\n }\n return ImageSource(factory)\n }\n\n /**\n * Constructs an image source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ImageSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new image source\n */\n actual fun fromUnrecognized(source: Any) = when (source) {\n is ImageResource -> fromResource(source)\n is Image -> fromImage(source)\n is ImageFactory -> fromImageFactory(source)\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ImageSource(source)\n }\n }\n\n /**\n * Indicates whether this image source is a multi-platform resource.\n */\n val isResource get() = source is ImageResource\n /**\n * Indicates whether this image source is a [Image].\n */\n val isImage get() = source is Image\n /**\n * Indicates whether this image source is an image factory.\n */\n val isImageFactory get() = source is ImageFactory\n /**\n * Indicates whether this image source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source multi-platform resource identifier. Call isResource to determine whether the source is a\n * Multi-platform resource.\n */\n fun asResource() = source as ImageResource\n\n /**\n * @return the source [Image]. Call [isImage] to determine whether the source is a [Image].\n */\n fun asImage() = source as Image\n\n /**\n * @return the source [ImageFactory]. Call isImageFactory to determine whether the source is an image\n * factory.\n */\n fun asImageFactory() = source as ImageFactory\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when(source) {\n is ImageResource -> \"Resource: $source\"\n is Image -> \"Image: $source\"\n is ImageFactory -> \"ImageFactory: $source\"\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n\n /**\n * Factory for delegating construction of images. WorldWind shapes configured with a ImageFactory construct\n * their images lazily, typically when the shape becomes visible on screen.\n */\n interface ImageFactory {\n /**\n * Image factory runs asynchronously by default, but this behavior can be changed by overriding current attribute.\n */\n val isRunBlocking: Boolean get() = false\n\n /**\n * Returns the image associated with this factory. This method may be called more than once and may be called\n * from a non-UI thread. Each invocation must return an image with equivalent content, dimensions and\n * configuration. Any side effects applied to the WorldWind scene by the factory must be executed on the main\n * thread.\n *\n * @return the image associated with this factory\n */\n fun createImage(): TexImageSource?\n }\n\n protected open class LineStippleImageFactory(protected val factor: Int, protected val pattern: Short): ImageFactory {\n override fun createImage(): TexImageSource {\n val canvas = document.createElement(\"canvas\") as HTMLCanvasElement\n canvas.width = if (factor <= 0) 16 else factor * 16\n canvas.height = 1\n val ctx2D = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n ctx2D.strokeStyle = \"white\"\n ctx2D.beginPath()\n if (factor <= 0) {\n ctx2D.moveTo(0.0, 0.5)\n ctx2D.lineTo(canvas.width.toDouble(), 0.5)\n } else {\n var offset = 0\n for (bi in 0..15) {\n val bit = pattern.toInt() and (1 shl bi)\n if (bit != 0) {\n ctx2D.moveTo(offset.toDouble(), 0.5)\n ctx2D.lineTo((offset + factor).toDouble(), 0.5)\n }\n offset += factor\n }\n }\n ctx2D.stroke()\n return canvas\n }\n\n override fun toString() = \"LineStippleCanvasFactory factor=$factor, pattern=\" + (pattern.toInt() and 0xFFFF).toString(16).uppercase()\n }\n\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_RGBA\nimport earth.worldwind.util.kgl.GL_TEXTURE_2D\nimport earth.worldwind.util.kgl.GL_UNSIGNED_BYTE\nimport earth.worldwind.util.kgl.WebKgl\nimport earth.worldwind.util.math.isPowerOfTwo\nimport org.khronos.webgl.TexImageSource\nimport org.khronos.webgl.WebGLRenderingContext.Companion.UNPACK_PREMULTIPLY_ALPHA_WEBGL\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.HTMLImageElement\n\nopen class ImageTexture(image: TexImageSource, width: Int, height: Int) : Texture(width, height, GL_RGBA, GL_UNSIGNED_BYTE) {\n protected var image: TexImageSource? = image\n override val hasMipMap = isPowerOfTwo(width) && isPowerOfTwo(height)\n\n constructor(image: HTMLImageElement) : this(image, image.width, image.height)\n\n constructor(image: HTMLCanvasElement) : this(image, image.width, image.height)\n\n init {\n coordTransform.setToVerticalFlip()\n }\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n image = null // Image can be non-null if the texture has never been used\n }\n\n override fun allocTexImage(dc: DrawContext) {\n try {\n // Specify the OpenGL texture 2D object's base image data (level 0).\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1)\n (dc.gl as WebKgl).gl.texImage2D(GL_TEXTURE_2D, 0, format, format, type, image)\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0)\n\n // If the bitmap has power-of-two dimensions, generate the texture object's image data for image levels 1\n // through level N, and configure the texture object's filtering modes to use those image levels.\n if (hasMipMap) dc.gl.generateMipmap(GL_TEXTURE_2D)\n } catch (e: Exception) {\n // The Android utility was unable to load the texture image data.\n logMessage(\n ERROR, \"Texture\", \"loadTexImage\",\n \"Exception attempting to load texture image '$image'\", e\n )\n } finally {\n image = null\n }\n }\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.Tile\nimport org.w3c.dom.Image\nimport org.w3c.dom.events.Event\n\nactual open class ImageTile actual constructor(\n sector: Sector, level: Level, row: Int, column: Int\n): Tile(sector, level, row, column), ResourcePostprocessor {\n actual var imageSource: ImageSource? = null\n actual var cacheSource: ImageSource? = null\n\n /**\n * Repeat image.onLoad event defined in RenderResourceCache to continue retrieval of original unprocessed image\n */\n override suspend fun process(resource: Resource): Resource {\n if (resource is Image) {\n resource.onload?.invoke(Event(\"load\"))\n }\n return resource\n }\n}","package earth.worldwind.util\n\n/**\n * Logs selected message types to the console.\n */\nactual object Logger {\n actual val ERROR = 1\n actual val WARN = 2\n actual val INFO = 3\n actual val DEBUG = 4\n\n /**\n * Indicates the current logging level [ERROR], [WARN], [INFO] or [DEBUG].\n */\n var loggingLevel = ERROR\n\n actual fun isLoggable(priority: Int) = priority in ERROR until loggingLevel\n\n actual fun log(priority: Int, message: String, tr: Throwable?) {\n if (isLoggable(priority)) {\n val messageWithTrace = tr?.run { message + '\\n' + stackTraceToString() } ?: message\n when (priority) {\n ERROR -> console.error(messageWithTrace)\n WARN -> console.warn(messageWithTrace)\n INFO -> console.info(messageWithTrace)\n else -> console.log(messageWithTrace)\n }\n }\n }\n\n actual fun logMessage(level: Int, className: String, methodName: String, message: String, tr: Throwable?) =\n makeMessage(className, methodName, message).also { log(level, it, tr) }\n\n actual fun makeMessage(className: String, methodName: String, message: String) =\n \"$className.$methodName: ${messageTable[message] ?: message}\"\n}","package earth.worldwind.util\n\n/**\n * JS use BasicPool instead of SynchronizedPool\n */\nactual class SynchronizedPool: BasicPool()","package earth.worldwind.util.kgl\n\nimport org.khronos.webgl.*\n\nactual data class KglShader(val obj: WebGLShader? = null) {\n actual companion object{ actual val NONE = KglShader() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglProgram(val obj: WebGLProgram? = null) {\n actual companion object{ actual val NONE = KglProgram() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglUniformLocation(val obj: WebGLUniformLocation? = null) {\n actual companion object{ actual val NONE = KglUniformLocation() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglBuffer(val obj: WebGLBuffer? = null) {\n actual companion object{ actual val NONE = KglBuffer() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglTexture(val obj: WebGLTexture? = null) {\n actual companion object{ actual val NONE = KglTexture() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglFramebuffer(val obj: WebGLFramebuffer? = null) {\n actual companion object{ actual val NONE = KglFramebuffer() }\n actual fun isValid() = obj != null\n}\n\nclass WebKgl(val gl: WebGLRenderingContext) : Kgl {\n\n override val hasMaliOOMBug = false\n\n override fun getParameteri(pname: Int): Int = gl.getParameter(pname) as Int\n\n override fun getParameterf(pname: Int): Float = gl.getParameter(pname) as Float\n\n override fun getParameteriv(pname: Int): IntArray = gl.getParameter(pname) as IntArray\n\n override fun getParameterfv(pname: Int): FloatArray = gl.getParameter(pname) as FloatArray\n\n override fun createShader(type: Int) = KglShader(gl.createShader(type))\n\n override fun shaderSource(shader: KglShader, source: String) = gl.shaderSource(shader.obj, source)\n\n override fun compileShader(shader: KglShader) = gl.compileShader(shader.obj)\n\n override fun deleteShader(shader: KglShader) = gl.deleteShader(shader.obj)\n\n override fun getShaderParameteri(shader: KglShader, pname: Int): Int {\n val value = gl.getShaderParameter(shader.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getProgramInfoLog(program: KglProgram): String = gl.getProgramInfoLog(program.obj) ?: \"\"\n\n override fun getShaderInfoLog(shader: KglShader): String = gl.getShaderInfoLog(shader.obj) ?: \"\"\n\n override fun createProgram() = KglProgram(gl.createProgram())\n\n override fun deleteProgram(program: KglProgram) = gl.deleteProgram(program.obj)\n\n override fun attachShader(program: KglProgram, shader: KglShader) = gl.attachShader(program.obj, shader.obj)\n\n override fun linkProgram(program: KglProgram) = gl.linkProgram(program.obj)\n\n override fun useProgram(program: KglProgram) = gl.useProgram(program.obj)\n\n override fun getProgramParameteri(program: KglProgram, pname: Int): Int {\n val value = gl.getProgramParameter(program.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getUniformLocation(program: KglProgram, name: String) =\n KglUniformLocation(gl.getUniformLocation(program.obj, name))\n\n override fun bindAttribLocation(program: KglProgram, index: Int, name: String) =\n gl.bindAttribLocation(program.obj, index, name)\n\n override fun createBuffer() = KglBuffer(gl.createBuffer())\n\n override fun bindBuffer(target: Int, buffer: KglBuffer) = gl.bindBuffer(target, buffer.obj)\n\n override fun bufferData(target: Int, size: Int, sourceData: ShortArray?, usage: Int, offset: Int) {\n val len = size / 2\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: IntArray?, usage: Int, offset: Int) {\n val len = size / 4\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: FloatArray?, usage: Int, offset: Int) {\n val len = size / 4\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: ShortArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: IntArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: FloatArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun deleteBuffer(buffer: KglBuffer) = gl.deleteBuffer(buffer.obj)\n\n override fun vertexAttribPointer(\n location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int\n ) = gl.vertexAttribPointer(location, size, type, normalized, stride, offset)\n\n override fun enableVertexAttribArray(location: Int) = gl.enableVertexAttribArray(location)\n\n override fun disableVertexAttribArray(location: Int) = gl.disableVertexAttribArray(location)\n\n override fun enable(cap: Int) = gl.enable(cap)\n\n override fun disable(cap: Int) = gl.disable(cap)\n\n override fun uniform1f(location: KglUniformLocation, f: Float) =\n gl.uniform1f(location.obj, f)\n\n override fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 1\n gl.uniform1fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform1i(location: KglUniformLocation, i: Int) =\n gl.uniform1i(location.obj, i)\n\n override fun uniform2f(location: KglUniformLocation, x: Float, y: Float) =\n gl.uniform2f(location.obj, x, y)\n\n override fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 2\n gl.uniform2fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform2i(location: KglUniformLocation, x: Int, y: Int) =\n gl.uniform2i(location.obj, x, y)\n\n override fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float) =\n gl.uniform3f(location.obj, x, y, z)\n\n override fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 3\n gl.uniform3fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int) =\n gl.uniform3i(location.obj, x, y, z)\n\n override fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float) =\n gl.uniform4f(location.obj, x, y, z, w)\n\n override fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 4\n gl.uniform4fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int) = gl.uniform4i(location.obj, x, y, z, w)\n\n override fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 9\n gl.uniformMatrix3fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 16\n gl.uniformMatrix4fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun lineWidth(width: Float) = gl.lineWidth(width)\n\n override fun polygonOffset(factor: Float, units: Float) = gl.polygonOffset(factor, units)\n\n override fun cullFace(mode: Int) = gl.cullFace(mode)\n\n override fun frontFace(mode: Int) = gl.frontFace(mode)\n\n override fun depthFunc(func: Int) = gl.depthFunc(func)\n\n override fun depthMask(mask: Boolean) = gl.depthMask(mask)\n\n override fun blendFunc(sFactor: Int, dFactor: Int) = gl.blendFunc(sFactor, dFactor)\n\n override fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean) = gl.colorMask(r, g, b, a)\n\n override fun viewport(x: Int, y: Int, width: Int, height: Int) = gl.viewport(x, y, width, height)\n\n override fun clear(mask: Int) = gl.clear(mask)\n\n override fun clearColor(r: Float, g: Float, b: Float, a: Float) = gl.clearColor(r, g, b, a)\n\n override fun createTexture() = KglTexture(gl.createTexture())\n\n override fun deleteTexture(texture: KglTexture) = gl.deleteTexture(texture.obj)\n\n override fun texImage2D(\n target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?\n ) = gl.texImage2D(target, level, internalFormat, width, height, border, format, type, buffer?.unsafeCast())\n\n override fun activeTexture(texture: Int) = gl.activeTexture(texture)\n\n override fun bindTexture(target: Int, texture: KglTexture) = gl.bindTexture(target, texture.obj)\n\n override fun generateMipmap(target: Int) = gl.generateMipmap(target)\n\n override fun texParameteri(target: Int, pname: Int, value: Int) = gl.texParameteri(target, pname, value)\n\n override fun drawArrays(mode: Int, first: Int, count: Int) = gl.drawArrays(mode, first, count)\n\n override fun drawElements(mode: Int, count: Int, type: Int, offset: Int) = gl.drawElements(mode, count, type, offset)\n\n override fun getError() = gl.getError()\n\n override fun finish() = gl.finish()\n\n override fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer) = gl.bindFramebuffer(target, framebuffer.obj)\n\n override fun createFramebuffer() = KglFramebuffer(gl.createFramebuffer())\n\n override fun deleteFramebuffer(framebuffer: KglFramebuffer) = gl.deleteFramebuffer(framebuffer.obj)\n\n override fun checkFramebufferStatus(target: Int) = gl.checkFramebufferStatus(target)\n\n override fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int) =\n gl.framebufferTexture2D(target, attachment, textarget, texture.obj, level)\n\n override fun readPixels(\n x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray\n ) = gl.readPixels(x, y, width, height, format, type, Uint8Array(buffer.unsafeCast().buffer))\n\n override fun pixelStorei(pname: Int, param: Int) = gl.pixelStorei(pname, param)\n}\n","package earth.worldwind.util.locale\n\nimport kotlinx.browser.window\n\nactual val language = window.navigator.language.split('-')[0]\nactual val country = window.navigator.language.split('-')[1]",null,null,null,null,null,"package earth.worldwind.util.format\n\nimport kotlinx.datetime.Instant\n\nactual fun convertToInstant(t: Any) = when(t) {\n is kotlin.js.Date -> Instant.fromEpochMilliseconds(t.getTime().toLong())\n else -> throw IllegalArgumentException(\"Can't convert to LocalDateTime: $t\")\n}\n",null,"package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\n\n/**\n * Represents transformations between geographic coordinates and Cartesian coordinates. GeographicProjection specifies\n * the Cartesian coordinate system used by Globe and WorldWindow.\n */\ninterface GeographicProjection {\n /**\n * This projection's display name.\n */\n val displayName: String\n /**\n * Indicates whether this projection is a 2D projection.\n */\n val is2D: Boolean get() = false\n /**\n * Indicates whether this projection is continuous with itself horizontally.\n */\n val isContinuous: Boolean get() = false\n /**\n * Indicates the geographic limits of this projection.\n * May be null to indicate the full range of latitude and longitude.\n */\n val projectionLimits: Sector? get() = null // Sector().setFullSphere()\n\n /**\n * Converts a geographic position to Cartesian coordinates.\n *\n * @param globe the globe this projection is applied to\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param offset the horizontal offset in 2D projection\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3): Vec3\n\n fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3\n\n fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4\n\n fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?,\n verticalExaggeration: Float, origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray\n\n fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray\n\n /**\n * Converts a Cartesian point to a geographic position.\n *\n * @param globe Globe model\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's Y component\n * @param z the Cartesian point's Z component\n * @param offset the horizontal offset in 2D projection\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return the result argument, set to the computed geographic position\n */\n fun cartesianToGeographic(globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position): Position\n\n fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4): Matrix4\n\n /**\n * Computes the first intersection of a specified globe and line. The line is interpreted as a ray; intersection\n * points behind the line's origin are ignored.\n *\n * @param globe the globe this projection is applied to\n * @param line the line to intersect with the globe\n * @param result a pre-allocated [Vec3] in which to return the computed point\n *\n * @return true if the ray intersects the globe, otherwise false\n */\n fun intersect(globe: Globe, line: Line, result: Vec3): Boolean\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.TileFactory\n\ninterface MercatorTileFactory : TileFactory {\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) =\n MercatorImageTile(sector as MercatorSector, level, row, column).apply {\n imageSource = getImageSource(column, (1 shl level.levelNumber) - 1 - row, level.levelNumber)?.also {\n it.postprocessor = this\n }\n }\n\n fun getImageSource(x: Int, y: Int, z: Int): ImageSource?\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.render.Renderable\n\n/**\n * Interface for processing user input to interact with renderables.\n */\ninterface SelectDragCallback {\n /**\n * Nothing was picked due to picking point is outside the terrain.\n */\n fun onNothingPicked() {}\n\n /**\n * Nothing context was requested due to selected point is outside the terrain.\n */\n fun onNothingContext() {}\n\n /**\n * Terrain position was picked.\n *\n * @param position picked terrain position\n */\n fun onTerrainPicked(position: Position) {}\n\n /**\n * Terrain context at some position was requested.\n *\n * @param position picked terrain position\n */\n fun onTerrainContext(position: Position) {}\n\n /**\n * Check if renderable is pick-able.\n *\n * @param renderable some renderable intended to be picked\n * @return renderable is pick-able\n */\n fun canPickRenderable(renderable: Renderable) = false\n\n /**\n * Some renderable was picked.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderablePicked(renderable: Renderable, position: Position) {}\n\n /**\n * Some renderables context was requested.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderableContext(renderable: Renderable, position: Position) {}\n\n /**\n * Check if picked renderable is movable.\n *\n * @param renderable picked renderable\n * @return picked renderable is movable\n */\n fun canMoveRenderable(renderable: Renderable) = false\n\n /**\n * Renderable was moved from ane position to another.\n *\n * @param renderable picked renderable which is moving\n * @param fromPosition previous position\n * @param toPosition current position\n */\n fun onRenderableMoved(renderable: Renderable, fromPosition: Position, toPosition: Position) {}\n\n /**\n * Renderable movement was finished\n *\n * @param renderable renderable which was moved\n * @param position last position during movement\n */\n fun onRenderableMovingFinished(renderable: Renderable, position: Position) {}\n\n /**\n * Renderable was double-tapped or double-clicked\n *\n * @param renderable renderable which was double-tapped or double-clicked\n * @param position picked terrain or renderable center position\n */\n fun onRenderableDoubleTap(renderable: Renderable, position: Position) {}\n}",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(960);\n"],"names":["root","factory","exports","module","define","amd","this","createErrorType","name","init","superErrorClass","JsJodaException","message","Error","captureStackTrace","constructor","stack","apply","arguments","toString","prototype","Object","create","DateTimeException","cause","msg","DateTimeParseException","text","index","parsedString","errorIndex","UnsupportedTemporalTypeException","ArithmeticException","IllegalArgumentException","IllegalStateException","NullPointerException","_inheritsLoose","subClass","superClass","__proto__","_assertThisInitialized","self","ReferenceError","assert","assertion","error","requireNonNull","value","parameterName","requireInstance","_class","abstractMethodFail","methodName","TypeError","assert$1","freeze","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MathUtil","intDiv","x","y","r","roundDown","safeZero","intMod","Math","ceil","floor","floorDiv","floorMod","safeAdd","verifyInt","safeToInt","safeSubtract","safeMultiply","parseInt","_parseInt","_x","isNaN","compareNumbers","a","b","smi","int","hash","number","Infinity","result","hashCode","_len","length","numbers","Array","_key","_i","_numbers","n","Enum","_name","_proto","equals","other","toJSON","TemporalAmount","get","unit","units","addTo","temporal","subtractFrom","TemporalUnit","duration","isDurationEstimated","isDateBased","isTimeBased","isSupportedBy","dateTime","periodToAdd","between","temporal1","temporal2","Duration","_TemporalAmount","seconds","nanos","_this","call","_seconds","_nanos","ofDays","days","_create","LocalTime","SECONDS_PER_DAY","ofHours","hours","SECONDS_PER_HOUR","ofMinutes","minutes","SECONDS_PER_MINUTE","ofSeconds","nanoAdjustment","secs","NANOS_PER_SECOND","nos","ofMillis","millis","mos","ofNanos","of","amount","ZERO","plus","from","forEach","startInclusive","endExclusive","until","ChronoUnit","SECONDS","isSupported","ChronoField","NANO_OF_SECOND","startNos","getLong","adjustedEnd","with","e","parse","matches","RegExp","exec","negate","dayMatch","hourMatch","minuteMatch","secondMatch","fractionMatch","daysAsSecs","_parseNumber","hoursAsSecs","minsAsSecs","negativeSecs","charAt","_parseFraction","ex","parsed","multiplier","errorText","substring","parseFloat","_createSecondsNanos","_createNegateDaysHoursMinutesSecondsNanos","negated","NANOS","isZero","isNegative","nano","withSeconds","withNanos","nanoOfSecond","checkValidIntValue","plusDuration","durationOrNumber","unitOrNumber","plusAmountUnit","plusSecondsNanos","amountToAdd","DAYS","plusNanos","MICROS","MILLIS","plusMillis","plusSeconds","multipliedBy","plusDays","daysToAdd","plusHours","hoursToAdd","plusMinutes","minutesToAdd","secondsToAdd","millisToAdd","nanosToAdd","epochSec","minus","minusDuration","minusAmountUnit","secsToSubtract","nanosToSubtract","amountToSubtract","minusDays","daysToSubtract","minusHours","hoursToSubtract","minusMinutes","minutesToSubtract","minusSeconds","secondsToSubtract","minusMillis","millisToSubtract","minusNanos","multiplicand","dividedBy","divisor","secsMod","abs","toDays","toHours","toMinutes","toMillis","round","toNanos","totalNanos","compareTo","otherDuration","cmp","nanoString","rval","slice","YearConstants","_TemporalUnit","estimatedDuration","_duration","FOREVER","e2","TemporalField","baseUnit","rangeUnit","range","rangeRefinedBy","getFrom","adjustInto","newValue","displayName","ValueRange","minSmallest","minLargest","maxSmallest","maxLargest","_minSmallest","_minLargest","_maxLargest","_maxSmallest","isFixed","minimum","largestMinimum","maximum","smallestMaximum","isValidValue","checkValidValue","field","isValidIntValue","isIntValue","str","_TemporalField","_baseUnit","_rangeUnit","_range","byName","fieldName","prop","DAY_OF_WEEK","ALIGNED_DAY_OF_WEEK_IN_MONTH","ALIGNED_DAY_OF_WEEK_IN_YEAR","DAY_OF_MONTH","DAY_OF_YEAR","EPOCH_DAY","ALIGNED_WEEK_OF_MONTH","ALIGNED_WEEK_OF_YEAR","MONTH_OF_YEAR","YEAR_OF_ERA","YEAR","ERA","NANO_OF_DAY","MICRO_OF_SECOND","MICRO_OF_DAY","MILLI_OF_SECOND","MILLI_OF_DAY","SECOND_OF_MINUTE","SECOND_OF_DAY","MINUTE_OF_HOUR","MINUTE_OF_DAY","HOUR_OF_AMPM","CLOCK_HOUR_OF_AMPM","HOUR_OF_DAY","CLOCK_HOUR_OF_DAY","AMPM_OF_DAY","TemporalQueries","zoneId","ZONE_ID","chronology","CHRONO","precision","PRECISION","zone","ZONE","offset","OFFSET","localDate","LOCAL_DATE","localTime","LOCAL_TIME","TemporalAccessor","query","_query","queryFrom","TemporalQuery","_Enum","createTemporalQuery","queryFromFunction","ExtendedTemporalQuery","_TemporalQuery","ENUMS","MONTHS","DayOfWeek","_TemporalAccessor","ordinal","_ordinal","values","valueOf","dayOfWeek","style","locale","Month","_value","months","newMonthVal","leapYear","FEBRUARY","APRIL","JUNE","SEPTEMBER","NOVEMBER","minLength","maxLength","firstDayOfYear","leap","JANUARY","MARCH","MAY","JULY","AUGUST","OCTOBER","DECEMBER","firstMonthOfQuarter","IsoChronology","INSTANCE","month","PATTERN","Period","years","_years","_months","_days","ofYears","ofMonths","ofWeeks","weeks","i","unitAmount","YEARS","startDate","endDate","LocalDate","_parse","yearMatch","monthMatch","weekMatch","val","withYears","withMonths","withDays","plusYears","yearsToAdd","plusMonths","monthsToAdd","minusYears","yearsToSubtract","minusMonths","monthsToSubtract","scalar","normalized","totalMonths","toTotalMonths","splitYears","splitMonths","obj","buf","ParsePosition","_index","_errorIndex","getIndex","setIndex","getErrorIndex","setErrorIndex","EnumMap","_map","putAll","otherMap","key","containsKey","hasOwnProperty","undefined","put","set","retainAll","keyList","map","remove","keyName","keySet","clear","ResolverStyle","STRICT","SMART","LENIENT","TemporalAdjuster","Temporal","p1","p2","minusAmount","plusAmount","endTemporal","withAdjuster","withFieldValue","adjuster","DefaultInterfaceTemporal","_Temporal","ChronoLocalDate","_DefaultInterfaceTemp","fieldOrUnit","ofEpochDay","toEpochDay","format","formatter","DateTimeFormatter","StringUtil","startsWith","pattern","indexOf","len","charCodeAt","ZoneId","systemDefault","getAvailableZoneIds","ofOffset","prefix","id","rules","isFixedOffset","Instant","EPOCH","ZoneRules","Fixed","instantOrLocalDateTime","offsetOfInstant","offsetOfLocalDateTime","instant","offsetOfEpochMilli","epochMilli","localDateTime","validOffsets","transition","standardOffset","daylightSavings","isDaylightSavings","isValidOffset","nextTransition","previousTransition","transitions","transitionRules","_ZoneRules","_offset","_proto2","SECONDS_CACHE","ID_CACHE","ZoneOffset","_ZoneId","totalSeconds","_validateTotalSeconds","_totalSeconds","_rules","_id","_buildId","absTotalSeconds","absHours","absMinutes","MINUTES_PER_HOUR","absSeconds","MAX_SECONDS","_validate","offsetId","first","ofHoursMinutesSeconds","pos","precededByColon","ch1","ch2","ofHoursMinutes","ofTotalSeconds","ofTotalMinutes","totalMinutes","totalSecs","OFFSET_SECONDS","DateTimeBuilder","fieldValues","chrono","date","time","leapSecond","excessDays","dtb","_addFieldValue","getFieldValue0","old","_putFieldValue0","resolve","resolverStyle","resolverFields","_mergeDate","_mergeTime","_resolveTimeInferZeroes","_resolveInstant","_checkDate","resolveDate","_addObject","val1","val2","ch","_ch","ap","hap","nod","cod","lod","sod","mod","los","cos","_nos","_cos","_los","hod","moh","som","hodVal","mohVal","somVal","nosVal","_hodVal","ofNanoOfDay","_excessDays","ofSecondOfDay","_excessDays2","dateOrTime","offsetSecs","atTime","atZone","INSTANT_SECONDS","_instant","build","type","DateTimeParseContext","_constructorSelf","_constructorFormatter","_constructorParam","_caseSensitive","_strict","_parsed","Parsed","symbols","_locale","_symbols","_overrideChronology","decimalStyle","_overrideZone","copy","isStrict","setStrict","strict","setLocale","startOptional","push","currentParsed","endOptional","successful","splice","isCaseSensitive","setCaseSensitive","caseSensitive","subSequenceEquals","cs1","offset1","cs2","offset2","toLowerCase","charEquals","charEqualsIgnoreCase","c1","c2","setParsedField","errorPos","successPos","currentParsedFieldValues","setParsedZone","getParsed","toParsed","setParsedLeapSecond","getEffectiveChronology","dateTimeParseContext","cloned","toBuilder","builder","overrideZone","DateTimePrintContext","localeOrFormatter","_temporal","adjust","_optional","getValueQuery","getValue","setDateTime","IsoFields","QUARTER_DAYS","Field","_isIso","_getWeekRangeByLocalDate","wby","_getWeekBasedYear","_getWeekRangeByYear","THURSDAY","WEDNESDAY","isLeapYear","_getWeek","dow0","doy0","dayOfYear","doyThu0","firstMonDoy0","withDayOfYear","week","year","doy","_dow","DAY_OF_QUARTER_FIELD","_Field","QUARTER_YEARS","qoy","QUARTER_OF_YEAR","moy","curValue","partialTemporal","yearLong","qoyLong","doq","DAY_OF_QUARTER","_qoy","max","QUARTER_OF_YEAR_FIELD","_Field2","_proto3","WEEK_OF_WEEK_BASED_YEAR_FIELD","_Field3","_proto4","WEEKS","WEEK_BASED_YEARS","wbyLong","WEEK_BASED_YEAR","dowLong","wowby","WEEK_OF_WEEK_BASED_YEAR","dow","plusWeeks","_dow2","temp","WEEK_BASED_YEAR_FIELD","_Field4","_proto5","newWby","resolved","Unit","_proto6","added","DecimalStyle","zeroChar","positiveSignChar","negativeSignChar","decimalPointChar","_zeroDigit","_zeroDigitCharCode","_positiveSign","_negativeSign","_decimalSeparator","positiveSign","withPositiveSign","negativeSign","withNegativeSign","zeroDigit","withZeroDigit","decimalSeparator","withDecimalSeparator","convertToDigit","char","convertNumberToI18N","numericText","diff","convertedText","String","fromCharCode","availableLocales","STANDARD","SignStyle","positive","fixedWidth","NORMAL","ALWAYS","EXCEEDS_PAD","NEVER","NOT_NEGATIVE","TextStyle","isStandalone","FULL_STANDALONE","SHORT_STANDALONE","NARROW_STANDALONE","asStandalone","FULL","SHORT","NARROW","asNormal","CharLiteralPrinterParser","literal","_literal","print","context","append","position","CompositePrinterParser","printerParsers","optional","_printerParsers","withOptional","setLength","FractionPrinterParser","minWidth","maxWidth","decimalPoint","fraction","convertToFraction","outputScale","min","substr","effectiveMin","effectiveMax","minEndPos","maxEndPos","total","digit","moveLeft","scale","pow","convertFromFraction","_min","decimal","EXCEED_POINTS","NumberPrinterParser","signStyle","subsequentWidth","_field","_minWidth","_maxWidth","_signStyle","_subsequentWidth","withFixedWidth","withSubsequentWidth","_isFixedWidth","contextValue","_getValue","sign","negative","effMinWidth","effMaxWidth","pass","parseLen","_parseLen","_setValue","ReducedPrinterParser","_NumberPrinterParser","width","baseValue","baseDate","_baseValue","_baseDate","absValue","basePart","isFixedWidth","PATTERNS","OffsetIdPrinterParser","noOffsetText","_checkPattern","bufPos","output","appendChar","noOffsetLen","array","arrayIndex","parseText","required","converted","replace","INSTANCE_ID","PadPrinterParserDecorator","printerParser","padWidth","padChar","_printerParser","_padWidth","_padChar","preLen","insert","endPos","resultPos","SettingsParser","SENSITIVE","INSENSITIVE","PARSER","PARSER$1","PARSER$2","StringLiteralPrinterParser","ZoneRulesProvider","getRules","ZoneRegion","ofId","ZoneIdPrinterParser","description","nextChar","newContext","nextNextChar","_parsePrefixedOffset","UTC","availableZoneIds","zoneIdTree","size","ZoneIdTree","createTreeMap","maxParseLength","treeMap","parsedZoneId","parseLength","parsedSubZoneId","isLeaf","prefixPos","toUpperCase","sortedZoneIds","sort","ZoneIdTreeMap","add","_treeMap","idLength","subZoneId","subTreeMap","MAX_WIDTH$1","DateTimeFormatterBuilder","_active","_parent","_padNextWidth","_padNextChar","_valueParserIndex","_of","parent","dtFormatterBuilder","parseCaseSensitive","_appendInternalPrinterParser","parseCaseInsensitive","parseStrict","parseLenient","appendValue","_appendValue1","_appendValue2","_appendValue4","_appendValuePrinterParser","pp","appendValueReduced","_appendValueReducedFieldWidthMaxWidthBaseDate","_appendValueReducedFieldWidthMaxWidthBaseValue","activeValueParser","basePP","_appendInternal","appendFraction","appendInstant","fractionalDigits","InstantPrinterParser","appendOffsetId","appendOffset","appendZoneId","appendPattern","_parsePattern","appendZoneText","appendText","appendLocalizedOffset","appendWeekField","FIELD_MAP","cur","start","count","pad","padNext","_parseField","zero","_start","appendLiteral","optionalStart","optionalEnd","BASE_DATE","_padNext1","_padNext2","cpp","_toPrinterParser","toFormatter","SECONDS_PER_10000_YEARS","SECONDS_0000_TO_1970","inSecs","inNanos","inSec","inNano","zeroSecs","hi","lo","ldt","LocalDateTime","ofEpochSecond","second","_zeroSecs","_hi","_lo","_ldt","div","minDigits","maxDigits","ISO_LOCAL_DATE","instantSecs","yearParsed","day","hour","secVal","nanoVal","sec","toEpochSecond","StringBuilder","_str","end","_decimalStyle","_resolverStyle","_resolverFields","_chrono","_zone","parsedExcessDays","PARSED_EXCESS_DAYS","parsedLeapSecond","PARSED_LEAP_SECOND","ofPattern","withChronology","withLocale","withResolverStyle","_formatTo","appendable","parse1","parse2","_parseToBuilder","_createError","abbr","_parseUnresolved0","parseUnresolved","MonthDay","dayOfMonth","_month","_day","now","zoneIdOrClock","now0","nowZoneId","nowClock","Clock","systemDefaultZone","system","clock","monthOrNumber","ofMonthNumber","ofNumberNumber","parseString","parseStringFormatter","FROM","monthValue","isValidYear","Year","isLeap","withMonth","withDayOfMonth","atYear","isAfter","isBefore","YearMonth","_year","ofNumberMonth","isSupportedField","isSupportedUnit","PROLEPTIC_MONTH","DECADES","CENTURIES","MILLENNIA","ERAS","MAX_VALUE","_getProlepticMonth","isValidDay","lengthOfMonth","lengthOfYear","adjusterOrField","f","withYear","newYear","calcMonths","monthsUntil","atDay","atEndOfMonth","isoYear","parseTextFormatter","isValidMonthDay","monthDay","ofYearDay","atMonth","atMonthMonth","atMonthNumber","atMonthDay","yearsUntil","TemporalAdjusters","firstDayOfMonth","Impl","FIRST_DAY_OF_MONTH","lastDayOfMonth","LAST_DAY_OF_MONTH","firstDayOfNextMonth","FIRST_DAY_OF_NEXT_MONTH","FIRST_DAY_OF_YEAR","lastDayOfYear","LAST_DAY_OF_YEAR","firstDayOfNextYear","FIRST_DAY_OF_NEXT_YEAR","firstInMonth","DayOfWeekInMonth","lastInMonth","dayOfWeekInMonth","next","RelativeDayOfWeek","nextOrSame","previous","previousOrSame","_TemporalAdjuster","_TemporalAdjuster2","_this2","_dowValue","curDow","dowDiff","_temp","_curDow","daysDiff","_TemporalAdjuster3","relative","_this3","_relative","calDow","_daysDiff","prolepticYear","_updateResolveMap","current","prolepticMonth","yoeLong","era","dom","_y","_y2","_days2","aw","ad","_y3","_weeks","_days3","_aw","_date","OffsetTime","_time","OffsetDateTime","toOffsetTime","clockOrZone","_now","ofInstant","ofTimeAndOffset","ofNumbers","minute","secsOfDay","epochSecond","ISO_OFFSET_TIME","toNanoOfDay","atDate","_toEpochNano","isEqual","_withLocalTimeOffset","toLocalTime","truncatedTo","nanosUntil","MINUTES","NANOS_PER_MINUTE","HOURS","NANOS_PER_HOUR","HALF_DAYS","withHour","withMinute","withSecond","withNano","withOffsetSameInstant","difference","withOffsetSameLocal","compare","ChronoZonedDateTime","toLocalDate","toInstant","toSecondOfDay","toLocalDateTime","thisEpochSec","otherEpochSec","ZonedDateTime","_ChronoZonedDateTime","_dateTime","of2","of3","of8","ofLocal","dt","preferredOffset","trans","offsetAfter","some","validOffset","ofInstant2","ofInstant3","ofStrict","isGap","ofLenient","zdt","_from","__from","ISO_ZONED_DATE_TIME","_resolveLocal","newDateTime","_resolveOffset","withEarlierOffsetAtOverlap","isOverlap","earlierOffset","offsetBefore","withLaterOffsetAtOverlap","laterOffset","withZoneSameLocal","withZoneSameInstant","withFixedOffsetZone","minusWeeks","toOffsetDateTime","_","ofDateTime","ofDateAndTime","ISO_OFFSET_DATE_TIME","atZoneSameInstant","atZoneSimilarLocal","toZonedDateTime","_withDateTimeOffset","DAYS_PER_CYCLE","DAYS_0000_TO_1970","_ChronoLocalDate","epochDay","adjustCycles","doyEst","yearEst","zeroDay","marchDoy0","marchMonth0","_resolvePreviousValid","_get0","_prolepticMonth","m","newMonth","weeksToAdd","mjDay","weeksToSubtract","until1","until2","daysUntil","_monthsUntil","packed1","packed2","calcDate","atTime1","atTime4","_atTimeOffsetTime","atStartOfDay","atStartOfDayWithZone","MIDNIGHT","dateTimeAfter","_compareTo0","otherDate","yearValue","dayValue","ChronoLocalDateTime","_ChronoLocalDateTime","_ofEpochMillis","localSecond","localEpochDay","ISO_LOCAL_DATE_TIME","_withDateTime","newDate","newTime","MICROS_PER_DAY","MILLIS_PER_DAY","_plusWithOverflow","totDays","NANOS_PER_DAY","MINUTES_PER_DAY","HOURS_PER_DAY","totNanos","curNoD","newNoD","timeUntil","endTime","atOffset","_hour","_minute","_second","_nanoOfSecond","_nano","secondOfDay","nanoOfDay","ISO_LOCAL_TIME","ham","unitDur","dur","mofd","newMofd","sofd","newSofd","nofd","newNofd","hourValue","minuteValue","secondValue","nanoValue","NANOS_PER_MILLI","systemUTC","ofEpochMilli","ISO_INSTANT","MIN_SECONDS","nval","_nval","_plus","_nanosUntil","toEpochMilli","_secondsUntil","secsDiff","nanosDiff","otherInstant","SystemClock","fixed","fixedInstant","FixedClock","baseClock","OffsetClock","withZone","_Clock","Date","getTime","_Clock2","_zoneId","_Clock3","_baseClock","ZoneOffsetTransition","_transition","_offsetBefore","_offsetAfter","dateTimeBefore","durationSeconds","d","SystemDefaultZoneRules","offsetInMinutes","getTimezoneOffset","offsetInMinutesBeforePossibleTransition","offsetInMinutesAfterPossibleTransition","_throwNotSupported","SystemDefaultZoneId","ZoneIdFactory","SYSTEM_DEFAULT_ZONE_ID_INSTANCE","isInit","MIN_VALUE","MIN","MAX","NOON","_init$k","isoWeekOfWeekyear","isoWeekyear","MONDAY","TUESDAY","FRIDAY","SATURDAY","SUNDAY","EPOCH_0","SYSTEM","BASIC_ISO_DATE","ISO_OFFSET_DATE","ISO_ORDINAL_DATE","ISO_WEEK_DATE","ToNativeJsConverter","zonedDateTime","toDate","convert","NativeJsTemporal","_epochMilli","nativeJs","jsJoda","used","jsJodaExports","use","fn","isoDayNumber","","","ofZone","zoneOffset","DateTimeFormatException_init_$Init$","IllegalTimeZoneException_init_$Init$","DateTimeArithmeticException_init_$Init$","decoder","epochMilliseconds","isoString","fixOffsetRepresentation","epochSeconds","nanosecondAdjustment","q","sum","offsetString","nanosecond","monthNumber","timeZone","ResourcePlatformDetails","engine","AbstractTutorial","ElevationHeatmapLayer","Color","Ellipse","GKGraticuleLayer","MGRSGraticuleLayer","Path","listOf","Polygon","thickenLine","ShowTessellationLayer","SurfaceImage","Wcs100ElevationCoverage","scope","window","it","$currentTutorial","$tutorials","$actionsContainer","$wwd","document","getElementById","wwd","WorldWindow","tutorialSelect","projectionSelect","actionsContainer","tutorials","mapOf","BasicTutorial","CameraViewTutorial","LookAtViewTutorial","PlacemarksTutorial","PathsTutorial","PolygonsTutorial","EllipsesTutorial","ShapesDashAndFillTutorial","LabelsTutorial","SightlineTutorial","SurfaceImageTutorial","ShowTessellationTutorial","MGRSGraticuleTutorial","GKGraticuleTutorial","WmsLayerTutorial","WmtsLayerTutorial","WcsElevationTutorial","ElevationHeatmapTutorial","projections","Wgs84Projection","MercatorProjection","currentTutorial","BackgroundLayer","StarFieldLayer","AtmosphereLayer","BasicElevationCoverage","element","innerHTML","onchange","event","target","$projections","actionName","$actionName","onclick","tutorial","projectionName","setCameraAction","aircraft","airport","heading","distanceMeters","tilt","LookAt","setLookAtAction","altitude","Position","positionView","mtRainier","eye","distance","$this$launch","$completion","launch","renderable","FileResource","identifier","userObject","layer","terrainPosition","po","MutableSharedFlow","asSharedFlow","gl","renderResourceCache","globe","tessellator","frameController","frameMetrics","Globe","BasicTessellator","BasicFrameController","LayerList","Camera","GoToAnimator","RenderContext","DrawContext","initLocation","initAltitude","BufferPool","VertexAttrib","DrawElements","lhs","rhs","DrawShapeState","bindTexture","dc","BoundingBox","DrawableQueue","inDegrees","angle","degrees","radians","coerceIn","adjustExtremes","rExtremes","s","sExtremes","t","tExtremes","p","pdr","pds","pdt","swapAxes","aExtremes","bExtremes","tmp","intersectsAt","plane","effectiveRadius","dq1","bq1","bq2","z","Vec3","Ellipsoid","semiMajorAxis","inverseFlattening","Frustum_init_$Init$","Viewport","Line_init_$Init$","Location_init_$Init$","latitude","longitude","LookAt_init_$Init$","altitudeMode","roll","Matrix3_init_$Init$","Matrix4_init_$Init$","xUnits","yUnits","Position_init_$Init$","Location","Range_init_$Init$","lower","upper","Sector_init_$Init$","sector","minLatitude","maxLatitude","minLongitude","maxLongitude","matrixWidth","matrixHeight","tileWidth","tileHeight","TileMatrixSet_init_$Init$","emptyList","entries","Vec2_init_$Init$","Vec3_init_$Init$","Vec2","Viewport_init_$Init$","height","HelmertParameters","dX","dY","dZ","omegaX","omegaY","omegaZ","fromEllipsoid","toEllipsoid","MGRSString","convertUTMToMGRS","easting","northing","gridEasting","gridNorthing","east","north","letters","roundMGRS","getGridValues","setNumber","aaPattern","errorCode","getLatitudeLetter","latDeg","makeMGRSString","floorValue","intValue","j","iEast","sEast","iNorth","sNorth","hemisphere","PolarCoordConverter","ellipsoid","projection","ElevationModel","LruMemoryCache","$key","$tileMatrix","$row","$column","tileMatrixSet","elevationSourceFactory","AbstractElevationCoverage","AbsentResourceList","MainScope","WmsElevationCoverage","tiles","triStripElements","toList","level","row","column","$level","Tile","lazy","tiledSurfaceImage","RenderableLayer","imageSource","imageOptions","ImageOptions","surfaceImage","AbstractLayer","asInt","AbstractShaderProgram","AbstractAtmosphereProgram","greatCircleIntersectionAtLongitude","deltaLon","getDeltaLongitude","midPoint","greatCircleMidPoint","greatCircleIntersectionAtLatitude","azimuth","GraticuleSupport","AbstractTile","initRenderingParams","params","applyRenderingParams","opacity","o","color","applyOpacity","compArray","colorValue","path","getLineShapeAttributes","createLineShapeAttributes","attrs","lineWidth","getVisibleTiles","rc","tileList","vs","gridRectangle","getGridRectangleForSector","x1","x2","col","tile","callback","rows","cols","factor","toWgsParameters","fromWgsParameters","AbstractGraticuleLayer","GridTilesSupport","GKOverview","GKMetricLabels","renderLabel","appropriateType","label","shouldRenderLabel","shouldRenderSmallScale","shouldRenderMinimalScale","getTypeWithBiggerScale","generateMeridiansAndParallels","shouldGenerateMeridian","generateWestMeridian","minLon","minLat","latStep","positions","westLine","GridElement","shouldGenerateParallel","generateNorthParallel","lonStep","northLine","gkSector","tileType","previousName","countInParent","childNumber","AbstractGraticuleTile","getMillionNameByCoord","addLabel","point","labelType","labelBy","rowOrCol","takeLast","createLine","firstPosition","nextPosition","lineWithIntersection","intersectPoint","anotherPoint","startPoint","movedByXPoint","lineX","mutableListOf","getTypeLine","intersect","point1","point2","x3","y3","x4","y4","getWGSPositionFromXY","minXMinY","minXMaxY","maxXMaxY","maxXMinY","ZoneExtremes","removeLabels","yLabel","checkIfOutOfZone","xLabel","getTypeBy","shouldClean","isNotInScale","tooFar","getDistanceBy","scaleModulo","maxResolution","selectMGRSRenderables","getVisibleZones","zoneList","rectangle","coerceAtLeast","maxLat","gridSector","getGridColumn","y1","getGridRow","y2","MGRSGridZone","coerceAtMost","getGridSector","maxLon","AbstractUTMGraticuleLayer","MGRSOverview","setSquareName","sz","tenMeterDegree","mgrs","utm","","isPointInRange","altitudeAboveGround","UTMZone","UTMZoneSector","SWEasting","SWNorthing","UTMSquareSector","","adjustDateLineCrossingPoints","corners","locationsCrossDateLine","locations","posNext","delta","lonSign","corner","boundingSector","lat","lon","Sector","isNorthNeighborInView","isEastNeighborInView","ImageTile","minLatPercent","maxLatPercent","TiledImageLayer","tileFactory","levelSet","TiledSurfaceImage","$urlParts","$randomValue","$randomValues","$urlTemplate","$imageFormat","$transparent","$name","$tiledSurfaceImage","MercatorTiledImageLayer","seen1","datatype","arraysize","ucd","serializationConstructorMarker","metadata","data","starDataSource","serviceAddress","coverageName","outputFormat","resolution","TiledElevationCoverage","Wcs100ElevationSourceFactory","coordinateSystem","$wmsTileFactory","buildTileMatrixSet","buildElevationSourceFactory","coverage","imageFormat","layerNames","lc","decodeWmsCapabilities","xmlText","withContext","$this$withContext","createWmsImageLayer","serviceMetadata","wmsLayers","createWmsSurfaceImage","layerLimit","wmsLayerConfig","levelSetConfig","config","$this$$receiver","$xmlText","$serviceAddress","$serviceMetadata","$wmsLayers","joinToString","l","wmsVersion","styleNames","decodeWmtsCapabilities","createWmtsImageLayer","wmtsLayer","createWmtsSurfaceImage","determineCompatibleTileMatrixSet","tileMatrixSets","directAxisOrder","tileMatrices","minX","maxY","scaleDenominator","previousHeight","previousWidth","previousCorner","tileMatrix","topLeftCorner","toDouble","createWmtsTileFactory","w","resourceUrl","WmtsTileFactory","baseUrl","determineKvpUrl","dcp","getMethods","constraints","styleIdentifier","buildWmtsKvpTemplate","kvpServiceAddress","createWmtsLevelSet","pixelSpan","tileSpanX","tileSpanY","maxX","minY","deltaX","deltaY","$wmtsLayer","layerName","template","tileMatrixIdentifiers","firstLevelHeight","title","onlineResource","logoURL","CRS","minx","maxx","miny","maxy","resx","resy","version","updateSequence","service","capability","request","layers","exception","WmsException","addressType","address","city","stateOrProvince","postCode","country","voiceTelephone","facsimileTelephone","electronicMailAddress","contactAddress","contactPersonPrimary","contactPerson","contactOrganization","post","http","unitSymbol","default","multipleValues","nearestValue","formats","south","west","authority","abstract","keywordList","_styles","_referenceSystems","_geographicBoundingBox","_boundingBoxes","_dimensions","_attribution","_authorityUrls","identifiers","metadataUrls","dataUrls","featureListUrls","_maxScaleDenominator","_minScaleDenominator","isQueryable","_cascaded","isOpaque","isNoSubsets","_fixedWidth","_fixedHeight","url","getCapabilities","getMap","getFeatureInfo","dcpType","fees","accessConstraints","contactInformation","maxHeight","legendUrls","styleSheetUrl","styleUrl","deliveryPoints","administrativeArea","postalCode","electronicMailAddresses","crs","lowerCorner","upperCorner","allowedValues","phone","hoursOfService","contactInstructions","postMethods","dcps","operations","voice","fax","individualName","positionName","contactInfo","role","keywords","serviceType","serviceTypeVersions","providerName","serviceContact","serviceIdentification","serviceProvider","operationsMetadata","contents","themes","serviceMetadataUrls","unitOfMeasure","valueDefault","boundingBoxes","wgs84BoundingBox","styles","infoFormats","tileMatrixSetLinks","resourceUrls","dimensions","resourceType","isDefault","layerRefs","tileMatrixIdentifier","minTileRow","maxTileRow","minTileCol","maxTileCol","supportedCrs","wellKnownScaleSet","boundingBox","tileMatrixSetLimits","AbstractRenderable","Color_init_$Init$","red","green","blue","alpha","attributes","TextRenderer","TextCacheKey","isRT","byteCount","appendBuffer","allocNewBuffer","usage","blockSize","blockCount","AbstractBufferObject","imageConfig","center","majorRadius","minorRadius","AbstractShape","RenderData","BoundingSphere","PlacemarkAttributes_init_$Init$","imageColor","imageOffset","imageScale","minimumImageScale","isDrawLabel","isDrawLeader","isDepthTest","labelAttributes","leaderAttributes","GLUtessellatorCallbackAdapter","ShapeAttributes_init_$Init$","isDrawInterior","isDrawOutline","isDrawVerticals","isDepthWrite","isLightingEnabled","interiorColor","outlineColor","outlineWidth","interiorImageSource","outlineImageSource","AbstractSurfaceRenderable","TextAttributes_init_$Init$","font","textColor","textOffset","isOutlineEnabled","maxTrys","minCheckInterval","source","levelNumber","tileDelta","roundToInt","tileOrigin","firstLevelDelta","numLevels","levelOffset","Level","capacity","lowWater","declination","rightAscension","keepWidth","roundUp","","this$0","nextDigit","pointPos","mb","","receiver","","","invalidFormat","","createTimeField","upperCase","tz","offsetAt","createIntegerField","insertField","createHexField","createOctalField","createCharacter","endStage","setDone","toInt","endStage$default","padStart","padEnd","insertField$default","createFloat","fractionPartLength","roundToLong","fl","rest","fractionalFormat","createScientific","ExponentFormatter","createAutoFloat","args","StringFormat","eUp","head","frame","leq","GLUvertex","GLUface","GLUhalfEdge","makeDormant","requireState","newState","gotoState","addVertex","coords","vertexData","flushCache","vertex","CachedVertex","dot","u","v","PriorityQ","PQnode","PQhandleElem","lt","swap","PriorityQHeap","FaceCount_init_$Init$","eStart","render","marked","addToTrail","freeTrail","isEven","RenderFan","RenderStrip","RenderTriangle","addWinding","eDst","eSrc","regionBelow","regionAbove","$tess","connectTimeout","requestTimeout","HttpClient","$config","$connectTimeout","$requestTimeout","$this$HttpClient","$this$install","$this$null","unitSquareTransform","modulus","WorldWindowController","EventListener","keyCode","preventDefault","tabIndex","focus","canvas","cacheCapacity","WorldWind","WebKgl","RenderResourceCache","BasicWorldWindowController","KeyboardControls","SelectDragDetector","Frame","preventDefaultListener","onGestureEvent","navigator","maxTouchPoints","setProperty","addEventListener","statusMessage","keyId","tiffTagLocation","valueOffset","parseBlock","returnElevation","compression","bytesPerPixel","blockByteCount","blockOffset","bitsPerSample","sampleFormat","parseUncompressedBlock","block","byteOffset","pixel","bytesPerSample","sampleOffset","parsePackBitsCompressedBlocks","arrayBuffer","Int8Array","uncompressedDataView","DataView","buffer","newBlock","blockLength","numOfIterations","uncompressedOffset","nextSourceByte","getInt8","currentByte","setInt8","geoTiffImageToPCS","xValue","yValue","parseImageFileDirectory","noOfDirectoryEntries","directoryEntries","tag","TiffIFDEntry","nextIfdOffset","GeoTiffMetadata","getEndianness","isTiffFileType","getMetadataFromImageFileDirectory","ifd","parseGeoKeys","isGeoTiff","getIFDByTag","geoKeyDirectory","numberOfKeys","GeoTiffKeyEntry","setBBox","upperLeft","upperRight","lowerLeft","geoTiffData","isLittleEndian","GestureRecognizer","clientX","clientY","DragRecognizer","PanRecognizer","changedTouches","item","pickPoint","pickList","redrawRequired","highlighted","topPickedObject","recognizer","toPosition","fromPosition","clapToGround","movePoint","ClickRecognizer","TapRecognizer","controller","AbstractSource","decodeTiffImage","$arrayBuffer","AbstractTiledElevationCoverage","AbstractTiledImageLayer","createElement","getContext","willReadFrequently","$resource","URL","createObjectURL","onerror","resource","AbstractMercatorImageTile","Font_init_$Init$","family","weight","variant","horizontalAlignment","$imageSource","$options","$result","$fileResource","$postprocessor","$image","$postprocessorExecuted","postprocessor","revokeObjectURL","src","image","Texture","isPowerOfTwo","BasicPool","KglShader","KglProgram","KglUniformLocation","KglBuffer","KglTexture","KglFramebuffer","language","Plane_init_$Init$","TiledElevationCoverage_init_$Init$","LevelSet_init_$Init$","PickedObject","positionCopy","r8","g8","b8","pickedObject","lookAtPosition","cameraPosition","lookAt","elevation","sinFovY2","radius","pickMode","isRedrawRequested","modelview","eyeAltitude","far","maxDepthValue","near","distanceToSurface","tanHalfFov","maxNearDistance","pool","instance","BasicDrawableTerrain","","attribLocation","bufferBound","colorAttachment","depthAttachment","fill","framebuffer","program","textureUnit","texture","textureUnitIndex","pixelCount","pixelBuffer","packAlignment","resultSet","idx","matrix","mode","prim","DrawableHeatmap","terrain","terrainOrigin","DrawableLines","drawable","groupId","order","depth","increment","newEntries","entry","sortWith","DrawableScreenTexture","that","DrawableShape","DrawableSightline","depthTexture","DrawableStarField","sunBuffer","sunTexture","DrawableSurfaceColor","DrawableSurfaceShape","scratchList","terrainSector","shapeCount","shape","primIdx","DrawableSurfaceTexture","textureSector","texCoordMatrix","usingTerrainAttrs","DrawableTessellation","globeOffset","pickedObjectId","BasicShaderProgram","pickRay","pickedObjects","pickViewport","pickPointOnly","objectFound","topObjectId","topObject","terrainObject","normalizedLat","a1","a2","stride","rMin","rMax","sMin","sMax","tMin","tMax","rLen","sLen","tLen","rSum","sSum","tSum","cx","cy","cz","rx2","ry2","rz2","minHeight","heights","points","centroidLat","centroidLon","minDist2","dist2","frustum","coherentPlane","nr","viewport","subViewport","bln","blf","brn","brf","tln","tlf","trn","trf","left","right","bottom","top","mvpInv","va","vb","nl","nb","nt","nn","nf","pointA","pointB","elements","vx","vy","vz","sx","sy","epsilon","vert1x","vert1y","vert1z","vert2x","vert2y","vert2z","vert0x","vert0y","vert0z","edge1x","edge1y","edge1z","edge2x","edge2y","edge2z","px","py","pz","det","invDet","tx","ty","qx","qy","qz","latitudeDegrees","longitudeDegrees","offsetSec","offsetIn","offsetHours","latDegrees","lonDegrees","latitudeRadians","longitudeRadians","location","lat1","lon1","lat2","lon2","azimuthRadians","lat1Radians","lon1Radians","lat2Radians","lon2Radians","c","distanceRadians","latRadians","lonRadians","cosLat","sinLat","cosAzimuth","sinAzimuth","sinDistance","cosDistance","endLatRadians","endLonRadians","dLon","dPhi","dLat","xScale","yScale","dst","srcDeltaLat","srcDeltaLon","dstDeltaLat","dstDeltaLon","xs","ys","xt","yt","ma","ma0","ma1","ma2","contentEquals","contentHashCode","A","vv","big","k","dum","imax","ii","ip","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","zScale","viewportWidth","viewportHeight","vFieldOfView","nearDistance","farDistance","aspect","nearHeight","nearWidth","mx","my","mz","c11","c22","c33","c12","c13","c23","numPoints","dx","dy","dz","ma3","mr1","mr2","mr3","mr4","depthOffset","cr","sr","sh","ct","st","result1","result2","result3","u2","u2p1","i1","i2","i3","itemp","sw","nearResult","farResult","mw","nx","ny","nz","nw","fx","fy","fz","fw","Offset","vector","da","db","line","lDotV","magnitude","minLatDegrees","minLonDegrees","deltaLatDegrees","deltaLonDegrees","maxLatDegrees","maxLonDegrees","empty","deltaLatitudeDegrees","deltaLongitudeDegrees","lOrd","toLong","lRow","lCol","deltaLat","TileMatrix","TileMatrixSet","nearestIdx","nearestDelta2","delta2","converter","GKCoordConverter","GKCoord","suffix","nPow2","nPow3","e0","pLat","sinLatPow2","cosLatPow3","cosLatPow5","tanLat","tanLatPow2","tanLatPow4","n2","iii","iiia","iv","V","VI","l0","beta","cosBeta","cos2beta","bx","cosBx","cos2Bx","sinBx","sin2Bx","a22","a24","a26","a28","b13","b15","b17","b19","parameters","fromGlobe","toGlobe","fromCartesian","toCartesian","MGRSCoordConverter","err","MGRSCoord","ups","convertUPSToMGRS","falseEasting","falseNorthing","ltr2LowValue","invF","es2","sLat","esSin","powEs","cLat","onePlusEs","oneMinusEs","dLam","rho","Easting","Northing","tempPhi","minEasting","maxEasting","minNorthing","phi","sinPhi","aOrNull","fOrNull","originLatitude","centralMeridian","TMCoordConverter","TMCoord","scaleFactor","cm","tn","tn2","tn3","tn4","tn5","tempLong","tempOrigin","c3","c5","c7","tan2","tan4","tan6","eta","eta2","eta3","eta4","sn","tmd","t1","t2","t3","t4","t5","t6","t7","t8","t9","ftphi","t10","de","t11","t12","t13","t14","t15","t16","t17","UPSCoordConverter","UPSCoord","UTMCoordConverter","UTMCoord","tempZone","tm","State","ec2","numLat","numLon","verticalExaggeration","origin","rowOffset","rowStride","retrieve","maxTimestamp","timestamp","gridWidth","gridHeight","cancelChildren","targetIdx","x0","y0","xf","yf","targetPixelSpan","tileBlock","TileBlock","rasterWidth","rasterHeight","matrixMinLat","matrixMaxLat","matrixMinLon","matrixMaxLon","matrixDeltaLat","matrixDeltaLon","uIdx","i0","fract","col0","col1","vIdx","j0","row0","row1","tileArray","intersection","uMin","uMax","colMin","colMax","vMin","vMax","rowMin","rowMax","rIdx","hIdx","j1","wIdx","i0j0","i1j0","i0j1","i1j1","iMin","iMax","jMin","jMax","rowJMin","rowJMax","colIMin","colIMax","texel","ecc","vec","eqr","minLatLimit","maxLatLimit","minLonLimit","maxLonLimit","elevIndex","xOffset","yOffset","zOffset","rowIndex","latIndex","colIndex","lonIndex","resultIndex","skip","phiLast","lambda","cosLon","sinLon","rpm","eqr2","pol2","ux","uy","uz","ey","ez","hgt","h","zpx","zpxSqrt","ra2","e4","evoluteBorderTest","rad1","rad2","rad","rad3","aTan","dpySqrt","s2","m2","found","sf","tf","si","ti","tileRowStride","i00","i10","i01","i11","f00","f10","f01","f11","levelNumberDepth","iterator","maxValue","minLevelNumber","TerrainTile","BasicTerrain","childs","vertexTexCoords","lineElements","FloatBufferObject","ds","tIdx","sIdx","toShort","ve","state","borderHeight","invWavelength","g","kr","km","fragMode","direction","eyePoint","equatorialRadius","atmosphereAltitude","ar","lightLocation","SkyProgram","GroundProgram","altitudes","ShortBufferObject","DrawableGroundAtmosphere","nightTexture","textureBound","DrawableSkyAtmosphere","renderingParams","paramsKey","needsToUpdate","labelOffset","pathType","surfacePoint","p1In","p2In","outPoint","inPoint","sectors","viewingVector","normalVector","GraticuleRenderingParams","GKGraticuleTile","isZeroOrMinimalValue","distanceToTile","enableRenderingForChildTile","typeWithBiggerScale","ge","renderMetricGraticule","shouldCreateSubTile","createSubTiles","newType","subTiles","subTile","createLabels","labelPos","createMetricGraticule","squares","b1","b2","determinant","previousScaleName","get500kPrefix","rowFromTop","num","get200kPrefix","get100kPrefix","get50kPrefix","countOf100Maps","get25kPrefix","countOf50Maps","get10kPrefix","lineType","xMinZone","xMaxZone","yMinZone","yMaxZone","firstRow","lastRow","firstCol","lastCol","createLinesAndLabels","startX","nextX","startY","nextY","movedByYPoint","createYLineThatIntersectCorners","firstY","lastX","intersectWest","lastY","intersectEast","labelLineIntersectionPoint","eastingOffset","northOffset","centerGK","centerXY","Pair","getLabelType","getLabelId","coord","ew","gt","contains","zoneNumber","polyline","computePositionFromUTM","computePositionFromUPS","utmZone","utmZoneSector","maxNorthing","startEasting","startNorthing","squaresArray","UTMSquareZone","graticuleType","createSquaresUPS","createSquaresUTM","lineSector","endsWith","latitude1","latitude2","UTMExtremes","levelExtremes","labelEasting","labelNorthing","labelHemisphere","northingOffset","viewFrustum","gridStep","gridStepTimesTen","currentHemisphere","sb","createSubGrids","subGrids","sg","UTMSquareGrid","pA","pB","centerPoint","squareGrid","ElevationHeatmapProgram","limits","colors","dLatPercent","firstRowPercent","firstColLon","d1","d2","MercatorSector","childLevel","d0","t0","northRow","southRow","westCol","eastCol","percent","tileSize","transparent","resultServerUrl","urlTemplate","urlParts","parseUrl","serverUrl","randomValue","removeSurrounding","split","starData","sunCelestialLocation","StarFieldProgram","indexes","positionIndex","starInfo","pointSize","raIndex","decIndex","magIndex","starMetaInfo","numDays","minMag","maxMag","urlString","tileSector","retrieveWmsCapabilities","wmsCapabilities","DefaultHttpClient","bodyAsText","matchingCoordinateSystems","wmsLayerCoordinateSystems","toMutableSet","toSet","WmsLayerConfig","imageFormats","layerCapabilities","LevelSetConfig","minScaleDenominator","layerCapability","minRadiansPerPixel","retrieveWmtsCapabilities","wmtsCapabilities","flipRow","list","names","regex","lowerValues","upperValues","userProperties","hsv","rr","gg","bb","attachment","currentFramebuffer","textureName","tanFov2","modelPoint","zOrder","cameraDistance","sortOrder","hasMipMap","widthPow2","powerOfTwoCeiling","bytesPerRow","heightPow2","param","currentTexture","currentBuffer","sourceData","enoughSpace","subAllocAndPopulate","bufferSize","currentProgram","fs","enable","sightline","visibleColor","occludedColor","drawableCount","highlightAttributes","minDistance2","distance2","metersPerPixel","intervals","topRange","Range","outlineRange","sideRange","elementBuffer","toShortArray","drawState","elementBufferKey","side","outline","calculatedIntervals","sanitizedIntervals","spineCount","majorArcRadians","minorArcRadians","isStandardAxisOrientation","headingAdjustment","deltaRadians","globeRadius","arrayOffset","spineIdx","spineRadius","azimuthDegrees","arcRadius","loc","isExtrudedSkirt","offsetVertexIndex","texCoord2d","maxRadius","subdivisions","subdivisionCount","actualRotation","boundingRectForUnitSquare","pixelSizeMeters","SightlineProgram","IntBufferObject","toIntArray","vertexCount","begin","numSubsegments","deltaDist","deltaAlt","dist","alt","intermediate","pixelSize","Placemark","offsetX","offsetY","scaleX","scaleY","activeTexture","visibilityScale","absTilt","camera","actualTilt","labelTexture","outData","polygonData","boundaryEdge","errnum","noIntermediatePoints","tess","v0","v1","v2","errNum","errStr","newArray","SurfaceTextureProgram","retrieveCurrentLevel","currentAncestorTile","currentAncestorTexture","children","ancestorTile","ancestorTexture","cacheSource","isCacheOnly","isCacheAbsent","permanent","resourceId","timeSinceLastMark","latAbsDifference","lonAbsDifference","nearestLat","lonDifference","nearestLon","last","radiansPerPixel","degreesPerPixel","newEntry","oldEntry","spaceRequired","sortedEntries","sortedWith","oldValue","evicted","meanLongitude","meanAnomaly","eclipticLongitude","eclipticLongitudeRad","obliquityOfTheEcliptic","CelestialLocation","celestialLocation","GMST","dayFraction","firstRowLat","detailFactor","texelSize","nearestPoint","distanceToCamera","latMin","lonMin","latMid","lonMid","latMax","lonMax","childRow","childCol","childSector","child0","child1","child2","cache","cacheSize","fractionWidth","take","createStringField","Specification","reason","convertToInstant","which","aCallback","coords_offset","Dict","DictNode","dict","node","newNode","aNode","aDict","GLUtessellatorImpl","tooLarge","clamped","cacheVertex","mesh","printStackTrace","weights","gapL","gapR","o1","o2","z1","z2","eNext","eSym","ePrev","aONext","bONext","newVertex","eOrig","vNext","vPrev","newFace","fNext","fPrev","eDel","del","vDel","newOrg","fDel","newLface","newVertex1","newVertex2","eOrg","joiningLoops","joiningVertices","eDelSym","eNew","eNewSym","tempHalfEdge","GLUmesh","fHead","vHead","eHead","norm","maxVal","minVal","minVert","maxVert","tNorm","maxLen2","tLen2","area","computedNormal","sUnit","tUnit","PriorityQSort","curr","hCurr","child","hChild","hParent","keyNew","free","hMin","Stack","seed","piv","pqKeys","sortMin","heapMin","fOrig","trail","headSize","tailSize","eTail","edgeState","check","vn","vc","xc","yc","zc","xp","yp","zp","key1","key2","reg1","reg2","e1","reg","newEdge","org","regAbove","eNewUp","regNew","ActiveRegion","regFirst","regLast","regPrev","regUp","eFirst","eLast","eTopLeft","cleanUp","firstTime","isect","needed","orgUp","dstUp","orgLo","dstLo","weights1","weights2","regLo","eLo","orgMin","eBottomLeft","degenerate","vEvent","eTopRight","eLnext","pq","face","up","keepOnlyBoundary","defaultPrevented","forwardRadians","sideRadians","sinHeading","cosHeading","forwardMeters","sideMeters","headingDegrees","clientWidth","tiltDegrees","clientHeight","rotation","timeStamp","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","DOM_DELTA_PAGE","operation","setTimeout","KeyboardControls$handlePan$ref","KeyboardControls$handlePan$ref$lambda","KeyboardControls$handleZoom$ref","KeyboardControls$handleZoom$ref$lambda","KeyboardControls$handleTilt$ref","KeyboardControls$handleTilt$ref$lambda","glAttrs","listener","$entry","handleEvent","bbox","getBoundingClientRect","clientLeft","clientTop","pickCenter","PickedObjectList","cancelAnimationFrame","devicePixelRatio","getExtension","requestAnimationFrame","isPickMode","drawingBufferWidth","drawingBufferHeight","stage","geoDoubleParamsValue","geoAsciiParamsValue","keyValue","elevations","parseTiles","tilesAcross","tilesDown","tileAcross","tileDown","tileIndex","xInTile","yInTile","sampleIndex","pixelSamples","flatten","parseStrips","Uint8Array","Int16Array","Uint16Array","Int32Array","Float32Array","Uint32Array","Float64Array","numOfBytes","isSigned","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat64","getFloat32","allowAscii","getIFDEntryValueLongerThan4","ifdTypeLength","ifdValues","indexOffset","button","Click","touch","delay","pointerType","buttonBit","nextTouch","centroid","touchIdx","TouchWrapper","pointerId","newScale","touch0","touch1","newRotation","tap","tapCount","dirMask","ElevationSource","href","GeoTiffReader","fetch","ok","statusText","headers","widthDouble","heightDouble","drawImage","srcData","getImageData","dstData","createImageData","srcRow","putImageData","toBlob","deviceMemory","options","fileResource","Image","onload","crossOrigin","ratioW","ratioH","ratio","ImageTexture","ctx2D","textSize","lines","strokeOffset","textBaseline","textAlign","fillStyle","strokeStyle","lineCap","lineJoin","translate","strokeText","fillText","textAttributes","measureText","imageResource","ImageSource","lFactor","lPattern","beginPath","moveTo","lineTo","bi","stroke","UNPACK_PREMULTIPLY_ALPHA_WEBGL","texImage2D","Event","priority","tr","messageWithTrace","stackTraceToString","console","warn","info","log","className","pname","getParameter","createShader","shader","shaderSource","compileShader","deleteShader","getShaderParameter","getProgramInfoLog","getShaderInfoLog","createProgram","deleteProgram","attachShader","linkProgram","useProgram","getProgramParameter","getUniformLocation","bindAttribLocation","createBuffer","bindBuffer","subarray","bufferData","bufferSubData","deleteBuffer","vertexAttribPointer","enableVertexAttribArray","disableVertexAttribArray","cap","disable","uniform1f","uniform1i","uniform2f","uniform3f","arr","uniform3fv","uniform4f","uniform4fv","transpose","uniformMatrix3fv","uniformMatrix4fv","polygonOffset","frontFace","func","depthFunc","mask","depthMask","sFactor","dFactor","blendFunc","colorMask","createTexture","internalFormat","border","generateMipmap","texParameteri","drawArrays","drawElements","bindFramebuffer","createFramebuffer","textarget","framebufferTexture2D","readPixels","pixelStorei","LN2","O","relativeStart","relativeEnd","finalValue","TypedArray","taylor_2_bound","taylor_n_bound","asUint","searchString","subjectString","lastIndex","initial","collection","destination","pair","pairs","expectedSize","comparator","destinationOffset","startIndex","endIndex","rangeSize","subrange","fromIndex","toIndex","newSize","ArrayList_init_$Init$","initialCapacity","rangeCheck","comparison","$comparator","endInclusive","median","leftIndex","rightIndex","leftValue","rightValue","internalMap","HashMap_init_$Init$","loadFactor","original","backing","$entryIterator","backingMap","HashSet_init_$Init$","computeHashSize","computeShift","hashSize","InternalHashMap_init_$Init$","","","registerModification","ensureExtraCapacity","shouldCompact","extraCapacity","spareCapacity","gaps","ensureCapacity","minCapacity","newHashSize","allocateValuesArray","curValuesArray","newValuesArray","rehash","compact","valuesArray","putRehash","probesLeft","findKey","findValue","addKey","tentativeMaxProbeDistance","probeDistance","putIndex","removeKeyAt","removeHashAt","removedHash","hole","patchAttemptsLeft","putEntry","keysArray","presenceArray","hashArray","maxProbeDistance","LinkedHashMap_init_$Init$","LinkedHashSet_init_$Init$","seed1","seed2","jClass","givenSimpleName","isInstanceFunction","classifier","isMarkedNullable","jClasses","kClass","sequence","StringBuilder_init_$Init$","content","uppercase","code","radix","match","input","nextPattern","$match","$range","$nextPattern","$input","ignoreCase","n1","thisChar","otherChar","thisOffset","otherOffset","bytes","throwOnMalformed","byteIndex","stringBuilder","byte","high","low","string","byte1","byte2","byte3","byte4","indent","qualifier","shortInfo","hasSeen","stackStart","dropCommonFrames","commonFrames","lastBreak","preLastBreak","messageLines","suppressed","suppressedIndent","sourceUnit","targetUnit","sourceCompareTarget","separator","postfix","limit","truncated","transform","single","to","minimumValue","maximumValue","KotlinNothingValueException_init_$Init$","interfaces","maxSize","masks","currentSize","imask","iid","iidImask","numberIndex","intArray","numberWithSettledBit","activeBit","initValue","$array","ia","descriptor","obj1","obj2","typeOf","shiftNumber","MASK","bigNumber","signum","chunk","hashCodeMap","symbol","cachedHashCode","constructorFunction","proto","this_","errorInfo","srcLen","dstLen","defaultValue","thisNeg","otherNeg","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","b00","numBits","radixLong","rem","digitsPerTime","radixToPower","remDiv","digits","twoPwr32","defaultConstructor","associatedObjectKey","associatedObjects","suspendArity","kind","ctor","metadataConstructor","iface","possibleActiveBit","arity","jsClass","objType","klassMetadata","parentProto","propName","base64","fromBase64","resultLength","shift","sixBit","needle","middle","toBase64","releaseIntercepted","intercepted","resultContinuation","completion","$receiver","$completion$1","Exception_init_$Init$","IllegalArgumentException_init_$Init$","IndexOutOfBoundsException_init_$Init$","IllegalStateException_init_$Init$","UnsupportedOperationException_init_$Init$","RuntimeException_init_$Init$","NoSuchElementException_init_$Init$","Error_init_$Init$","ConcurrentModificationException_init_$Init$","NullPointerException_init_$Init$","NoWhenBranchMatchedException_init_$Init$","ClassCastException_init_$Init$","implFindEntry","ArrayDeque_init_$Init$","copyElements","newCapacity","newElements","positiveMod","incremented","decremented","isVarargs","iteratorFactory","exceptionalState","$block","transformer","calcNext","sendWhen","predicate","ensureItemIterator","nextItemIterator","getInitialValue","getNextValue","acc","removed","interceptor","baseKey","safeCast","step","addend","thisUpper","otherUpper","$indent","firstChar","limitForMaxRadix","limitBeforeMul","delimiters","chars","charAtIndex","delimiter","currentOffset","nextIndex","isLimited","$delimitersList","$ignoreCase","currentIndex","strings","indices","getNextMatch","rawValue","","isInNanos","isInMillis","normalValue","unitDiscriminator","addValuesMixedRanges","thisMillis","otherNanos","otherMillis","resultMillis","otherNanoRemainder","compareBits","","hasDays","hasHours","hasMinutes","hasSeconds","components","whole","fractional","fractionalSize","isoZeroes","fracString","nonZeroDigits","normalMillis","maxNsInUnit","valueInNs","normalNanos","isoChar","isTimeComponent","shortName","initializer","third","storage","base","quotient","ac","bc","uradix","beforeAdding","dividend","CancellationException_init_$Init$","CharacterCodingException_init_$Init$","AssertionError_init_$Init$","NumberFormatException_init_$Init$","ArithmeticException_init_$Init$","UninitializedPropertyAccessException_init_$Init$","modified","$elements","predicateResultToRemove","iter","insertionRangeCheck","increaseLength","putAllEntries","updated","removeKey","classifierName","nullable","$arity","toInsert","newLength","stringCsq","$startIndex","lastStart","advanceToNextCharacter","code1","code2","approx","res","approxDouble","approx2","log2","approxRes","approxRem","bitCount","currentResult","currentException","outcome","oldCapacity","otherIterator","ourValue","internalLastIndex","internalIndex","decrementedInternalIndex","decrementedHead","tail","copyCollectionElements","oldElement","reference","dest","collectionSize","nextNotReady","newLeft","containsAll","bits","rnd","rangeStart","rangeEnd","strictIso","infinityString","hasSign","prevUnit","component","dotIndex","afterFirst","allowSpaces","unitName","cont","annotationClass","size_local","reverseIndex","getter","setter","paramCount","superType","isPositive","Sequence$iterator$ref$lambda","Iterable$iterator$ref$lambda","throwOnInvalidSequence","charIndex","codePoint","lastTwoBits","threshold","oldChar","newChar","$delimiters","missingDelimiterValue","newIndent","minCommonIndent","marginPrefix","firstNonWhitespaceIndex","startFound","handler","trace","event1","event2","event3","event4","expect","update","onCancelling","invokeImmediately","parentContext","initParentJob","active","uCont","handle","delegate","","isReusable","callSegmentOnCancellation","segment","installParentHandle","invokeOnCancellationImpl","multipleHandlersError","dispatchResume","tryResume","undispatched","dispatcher","eventLoop","resumedState","proposedUpdate","resumeMode","onCancellation","idempotent","resumeImpl","resumeImpl$default","alreadyResumedError","detachChildIfNonResuable","cancelHandler","idempotentResume","cancelCause","handled","continuation","originalException","thrownException","unconfined","isActive","","","allocateList","finalizeFinishingState","wasCancelling","proposedException","exceptions","finalCause","getFinalRootCause","addSuppressedExceptions","rootCause","seenExceptions","unwrappedCause","unwrapped","finalException","finalState","completeStateFinalization","notifyCancelling","cancelParent","isCancellation","startInternal","addLastAtomic","promoteEmptyToNodeList","promoteSingleToNodeList","createCauseException","getOrPromoteCancellingList","tryMakeCancelling","cancelling","tryMakeCompleting","tryMakeCompletingSlowPath","finishing","notifyRootCause","firstChild","tryFinalizeSimpleState","tryWaitForChild","stateString","isCompleting","job","childJob","handlesException","parentJob","setElementLazy","prev","channel","pointers","onClosedHasNext","hasNextOnNoWaiterSuspend","cancellable","updCellResult","onClosedHasNextNoWaiterSuspend","","","updateCellSend","waiter","closed","updateCellSendSlow","bufferOrRendezvousSend","curSenders","updateCellReceive","senders","updateCellReceiveSlow","helpExpandBuffer","trySelectResult","expandBuffer","updateCellExpandBuffer","updateCellExpandBufferSlow","incCompletedExpandBufferAttempts","nAttempts","incCompletedExpandBufferAttempts$default","","completeCloseOrCancel","completeClose","sendersCur","lastSegment","closeLinkedList","lastBufferedCellGlobalIndex","markAllEmptyCellsAsClosed","globalIndex","cancelSuspendedReceiveRequests","sendersCounter","suspendedReceivers","completeCancel","removeUnprocessedElements","onUndeliveredElement","undeliveredElementException","suspendedSenders","sender","isClosed","sendersAndCloseStatusCur","isClosedForReceive","isCellNonEmpty","findSegmentSend","startFrom","updateSendersCounterIfLower","curCounter","findSegmentReceive","updateReceiversCounterIfLower","findSegmentBufferEnd","currentBufferEndCounter","moveSegmentBufferEndToSpecifiedOrLast","select","$element","$select","firstSegment","counter","pauseEB","closeStatus","createSegment$ref$lambda","holder","trySendImpl","isSendOp","trySendDropLatest","trySendDropOldest","onBufferOverflow","","","","","tryEmitLocked","tryEmitNoCollectorsLocked","","dropOldestLocked","newHead","correctCollectorIndexesOnDropOldest","enqueueLocked","curSize","curBuffer","growBuffer","newBuffer","updateBufferLocked","newReplayIndex","newMinCollectorIndex","newBufferEndIndex","newQueueEndIndex","cleanupTailLocked","tryTakeValue","slot","resumes","oldIndex","getPeekedValueLockedAt","resume","tryPeekLocked","awaitValue","findSlotsToResumeLocked","resumesIn","resumeCount","flow","replay","bufferCapacity","currentContext","collectElement","collectJob","emissionParentJob","","","","createNewSegment","newTail","$context","propertyName","minValue","fatalCompletion","findClause","clauseObject","trySelectInternalResult","token","combined","collector","collectContext","timeMillis","trySuspend","takenState","cancelLater","dispatched","cancellationCause","caller","upd","makeCancelHandler","tryResumeImpl","actualCompletion","task","queue","eh","continueCompleting","lastChild","waitChild","$this$sequence","makeNode","joinInternal","joinSuspend","cancelMakeCompleting","makeCancelling","causeExceptionCache","causeException","awaitSuspend","main","immediate","yieldContext","isSender","shouldSendSuspend","curSendersAndCloseStatus","globalCellIndex","ebCompleted","ebCompletedAndBit","pauseExpandBuffers","cancel","markCancellationStarted","closedByThisOperation","markCancelled","markClosed","invokeCloseHandler","closeHandler","minElem","cellState","cellStateString","cancelEmitter","emitter","emitted","emitSuspend","newBufferSize0","maxResumeCount","curEmitterIndex","newBufferSize1","subscriptionCount","curSlots","slots","fatalException","finallyException","internalResult","trySelectInternal","curState","clause","timeout","$continuation","await$lambda","addedContext","oldContext","coroutine","extraBufferCapacity","bufferCapacity0","deserializer","previousValue","$this$buildSerialDescriptor","baseClass","klassName","subClassName","missingFields","serialName","typeArguments","failOnMissingTypeArgSerializer","serializers","elementClassifierIfArray","keySerializer","valueSerializer","aSerializer","bSerializer","cSerializer","elementSerializer","rootClass","isNullable","$typeArguments","clazz","types","cachedSerializer","contextualSerializer","shouldBeNullable","$types","typeParameters","sdBuilder","builderAction","","elementsCount","elementDesc","keyDesc","valueDesc","elementDescriptor","keyDescriptor","valueDescriptor","primitive","eSerializer","kSerializer","vSerializer","primitiveSerializer","readIfAbsent","prepareHighMarksArray","slotsCount","elementsInLastSlot","highMarks","generatedSerializer","$primitiveSerializer","serializer","$serialName","objectInstance","","typeParams","elementDescriptors","accumulator","namesHash","kindHash","bufferWithData","tagBlock","$keySerializer","$valueSerializer","$this$buildClassSerialDescriptor","class2ContextualFactory","polyBase2Serializers","polyBase2DefaultSerializerProvider","polyBase2NamedSerializers","polyBase2DefaultDeserializerProvider","provider","concreteClass","assocObject","$factory","SerializationException_init_$Init$","another","elementName","annotations","isOptional","composite","decodeSequentially","compositeDecoder","eClass","checkIndex","vIndex","readSize","requiredCapacity","markHigh","offsetInSlot","nextUnmarkedHighIndex","slotOffset","slotMarks","indexInSlot","buildIndices","annotation","nestedName","parentName","childName","inlineDescriptor","currentTag","$deserializer","$previousValue","decodeStructure","typeArgumentsSerializers","serializedClassName","registered","kclass","serial","actualClass","actualSerializer","defaultSerializerProvider","defaultDeserializerProvider","forClass","allowOverwrite","concreteSerializer","answer","baseClassSerializers","previousSerializer","previousByName","simpleName","seen","goldenMask","missingFieldsBits","configuration","serializersModule","encodeDefaults","ignoreUnknownKeys","isLenient","allowStructuredMapKeys","prettyPrint","explicitNulls","prettyPrintIndent","coerceInputValues","useArrayPolymorphism","classDiscriminator","allowSpecialFloatingPointValues","useAlternativeNames","namingStrategy","decodeEnumsCaseInsensitive","allowTrailingComma","body","isString","coerceToInlineType","deferred","","$deferred","JsonElementMarker$readIfAbsent$ref","JsonElementMarker$readIfAbsent$ref$lambda","entity","json","$descriptor","useLowercaseEnums","strategyForClasses","nameToPut","$this_buildDeserializationNamesMap","resize","readArray","lastToken","readValue","readDeepRecursive","lexer","discriminator","jsonTree","discriminatorToSkip","coerceInputValue","handleUnknown","unknownKey","decodeStringKey","discriminatorHolder","lastPos","c4","unparsedPrimitive","absenceIsNull","polyDiscriminator","polyDescriptor","desc","keyKind","appendEscape","lastPosition","appendEsc","startPosition","currentPosition","currentChar","decodedString","takePeeked","appendHex","startPos","fromHexChar","character","consumeBooleanLiteral","literalSuffix","expected","actual","initC2ESC","esc","initC2TC","cl","initEscape","initCharToToken","typeParamsSerializers","sd","readObject","hint","checkLeadingComma","newMode","skipLeftoverElements","isMapKey","decodeListIndex","hasComma","decodeObjectIndex","isUnknown","decodeMapIndex","decodingKey","currentObject","currentElement","strategy","baseName","deserializationNamesMap","fallbackName","cpos","snapshot","expectedToken","wasConsumed","doConsume","usedAppend","wasUnquotedString","eof","allowLenientStrings","tokenStack","processed","lastIndexOf","hintMessage","hasQuotation","exponentAccumulator","isExponentPositive","hasExponent","hasChars","doubleAccumulator","consumeBoolean","tc","closingQuote","keyToMatch","positionSnapshot","client","userConfig","manageEngine","$this$intercept","engineFactory","$engine","$previousConfigBlock","$configure","$plugin","pluginData","requestData","responseData","response","responseBody","$this$writer","callContext","$client","$response","","executeWithinCallContext","checkExtensions","requestedExtension","$requestData","$this$async","unsafeRequestHeaders","callJob","cleanupHandler","createCallContext$lambda","$cleanupHandler","engineName","requestHeaders","$requestHeaders","$content","$this$buildHeaders","observableContentPhase","BodyProgress$handle$slambda","observableByteChannel","cachedResponseText","addDefaultResponseValidation$lambda$slambda","$this$HttpResponseValidator","$contentType","$body","$this_intercept","defaultTransformers$slambda","$responseJobHolder","container","validateResponse","processException","responseValidators","callExceptionHandlers","expectSuccess","$builder","plugin","wrapContent","requestContentType","contentType","charset","charsets","charsetQuality","sendCharset","responseCharsetFallback","withQuality","withoutQuality","quality","truncatedQuality","allowHttpsDowngrade","$scope","checkHttpMethod","requestJob","clientEngineJob","$requestJob","$handler","nextSender","maxSendCount","requestTimeoutMillis","connectTimeoutMillis","socketTimeoutMillis","checkTimeoutValue","$request","$executionContext","$killer","hasNotNullTimeouts","timeoutMillis","originCall","method","executionContext","statusCode","requestTime","developmentMode","fallbackCharset","expectedType","checkCapabilities","HttpStatement$execute$slambda","contentLength","$contentLength","$listener","createWebSocket","urlString_capturingHack","protocolHeaderNames","protocols","ws_capturingHack","headers_capturingHack","executeWebSocketRequest","$headers_capturingHack","eventListener","$this_buildHeaders","awaitConnection$lambda","$eventListener","clientConfig","$jsHeaders","$clientConfig","$bodyBytes","$this$buildObject","stream","$stream","readChunk$lambda","promise","$controller","commonFetch$lambda","$responseData","$this_writer","coroutineContext","websocket","installedFeatures","configure","previousConfigBlock","exceptionResponseText","BeforeReceive","actualCharset","sendResult","requestBuilder","killer","savedCall","rawResponse","status","session","bodyBytes","frameData","definition","spaceToPlus","encodeURLParameter$lambda","$spaceToPlus","encodeFull","$encodeFull","plusIsSpace","encodeSlash","symbolSize","release","prefixEnd","digit1","digit2","encodeURLPath$lambda","contentSubtype","existingContent","slashesCount","slashIndex","out","escapeValue","parametersOnly","items","valueEnd","paramEnd","$parameters","headerName","headerValue","header","major","minor","decode","nameIndex","equalIndex","spaceNameIndex","spaceEndIndex","spaceEqualIndex","spaceValueIndex","spaceIndex","applyOrigin","tmpLocation","protocol","host","port","user","password","pathSegments","fragment","trailingQuery","encodedPath","encodedUser","encodedQueryParameters","schemeLength","incorrectSchemePosition","scheme","slashCount","nextSlash","passwordIndex","pathEnd","rawPath","basePath","rawChunks","relativePath","fragmentStart","colonIndex","defaultPort","encodedPassword","specifiedPort","pathStartIndex","pathEndIndex","queryStart","queryEnd","pathStart","usernameStart","usernameEnd","passwordStart","passwordEnd","encodedParametersBuilder","slash","subtype","hasParameter","parameter","flushImpl","flushWrittenBytes","ensureNotFailed","closeable","$count","autoFlush","$attachJob","$channel","$dispatcher","charactersCopied","after","before","decodedText","bytesWritten","memory","readRemaining","writeRemaining","availableSpace","writeSize","newWritePosition","overrunSize","allocator","typedArray","view","remaining","","readASCII","atLeastMinCharactersRequire","minShouldBeLess","copied","utf8","codepoint","readUtf8","lastByteCount","prematureEndOfStreamChars","fixGapAfterReadFallback","overrun","fixGapAfterReadFallbackUnreserved","chunk1","chunk2","new","doFill","appendView","prepareReadLoop","minSize","desiredExtraBytes","minSizeIsTooBig","afterRead","dstOffset","appendNewChunk","appendChainImpl","chainedSizeDelta","_tail","tailPosition","writePacketMerging","foreignStolen","lastSize","nextSize","maxCopySize","appendSize","prependSize","writePacketSlowPrepend","readPosition","newReadPosition","_head","pre","bytesCount","inputLength","subView","inputRemaining","chunkSize","characters","parentPool","cp","dstLimit","lastCharIndex","resultLimit","resultPosition","index1","resultPosition1","stage1Limit","freeSpace","highValue","lowValue","_charset","i8","writeIndex","encoder","dstRemaining","numChars","dropLastChar","endIndexExclusive","array1","charactersDecoded","bytesConsumed","nativeDecoder","maxCharacters","sizeInBytes","encoding","fatal","requestedEncoding","readRemainingSuspend","","builderSize","builderHead","addBytesRead","atLeast","closeElement","addBytesWritten","ensureNotClosed","rewindRemaining","startGap","endGap","newLimit","writePosition","chain","discardAsMuchAsPossible","skipped","currentCount","currentSkipped","ensureNext","flushChain","oldTail","writeByteFallback","appendCharFallback","packet","chunkBuffer","headRemaining","positionBefore","positionAfter","appendNext","sleepCondition","bufferOffset","attachJob","convertTo","ensureListForKey","caseInsensitiveName","listForKey","newMap","interceptors","subject","phase","relation","","","createContext","debugMode","sharedInterceptorsList","cacheInterceptors","interceptorsQuantity","phases","phaseIndex","phaseContent","findPhase","phasesList","findPhaseIndex","hasPhase","notSharedInterceptorsList","setInterceptorsListFromPhase","relativeTo","loop","direct","resumeRootWith","blocks","reifiedType","kotlinType","concurrent","hasNodeApi","stringValues","proceedLoop","copyInterceptors","lastRelatedPhaseIndex","resetInterceptorsList","tryAddToPhaseFastPath","currentInterceptors","addContinuation","discardLastRootContinuation","kType","firstIndex","maxElem","controlFrame","opcode","fin","rsv1","rsv2","rsv3","frameType","disposableHandle","Close_init_$Init$","fileUrl","fileName","darkFileUrl","times","initialDelay","maxDelay","segments","","","isAllowed","allow","unexpectedCharacterException","uri","unexpected","getNextCharacter","hexCharToValue","internalReason","","","encoded","decoded","$decoded","$encoded","segmentBuilder","","findPortSeparator","userInfoSeparator","portSeparator","encodedHost","portString","","encodedAuthority","","makeSchemeSpecificPart","_authorityPart","_pathPart","_queryPart","_fragmentPart","","ssp","","","","","","","uriString","ssi","fsi","qsi","expanded","opaquePart","encodedParameter","oldQuery","hasSchemeOrAuthority","oldLength","nextToEncode","nextAllowed","toEncode","bytesLength","convertPlus","throwOnFailure","hexValue","nextC","newDigit","part","oldPart","oldPath","secondary","namespace","","","endOfElement","writeIndent","newDepth","indentSeq","writeIndent$default","addToPending","requireCurrent","isAppend","xmlDeclMode","stringSerializer","prefixMap","filler","namespaces","","removeFirstToCurrent","ns","locationInfo","eventType","localName","namespaceUri","namespaceContext","standalone","parentNamespaceContext","namespaceDecls","namespacePrefix","writer","localname","reader","missingNamespaces","namespaceAt","prefixAt","localNameAt","finishPartialStartTag","close","endOfTag","down","highSurogate","lowSurogate","writeEscapedText","triggerStartDocument","repeats","pending","ev","ensureNamespaceIfRepairing","rawWriteAttribute","$this_appendXmlCodepoint","isRepairNamespaces","xmlVersion","versionString","namespaceIndicesAt","startIdx","endIdx","arrayUseAtDepth","prefixArrayPos","pairPos","nsArrayPos","getPrefix","getNamespace","indentSequence","nodeList","seenPrefixes","namespaceURI","localPart","doc","frag","wrapperElement","$wrapperElement","startLocation","initialDepth","wrappedString","IOException_init_$Init$","lazyMessage","prefixes","extendNamespace","nscount","wrapperNamespaceContext","getDelegate","actualInput","rootElementName","SimpleNamespaceContext_init_$Init$","XmlException_init_$Init$","","nodeType","attr","nsUri","$text","ce","$target","$data","processInstr","textElems","qualifiedName","publicId","systemId","attrNs","attrPrefix","textEvent","originalNSContext","$namespaceURI","events","decl","verString","effectiveEncoding","appliedPrefix","setElementStack","esp","hlp","actualPrefix","lastWasHyphen","existingNamespaceForPrefix","enlargeNamespaceBuffer","nextPair","setPrefix","setNamespace","prefixStr","namespaceUriStr","commentPos","orig","namespaceForPrefix","useNameInfo","useOutputKind","overriddenSerializer","tagName","pedantic","autoPolymorphic","encodeDefault","unknownChildHandler","typeDiscriminatorName","throwOnRepeatedElement","verifyElementOrder","parentNamespace","nextNulledItemsIdx","childDesc","defaultOrList","$inputType","","","xmlDescriptor","polyInfo","attrIndex","stringValue","polyMap","nameMap","childDescriptor","$xmlDescriptor","inputKind","candidates","repairNamespaces","indentString","policy","nilAttribute","xmlName","annotatedName","isDefaultNamespace","Builder_init_$Init$","isStrictAttributeNames","isStrictBoolean","nameToIdx","$parentDescriptor","eq","isStrictNames","","$serializersModule","serializerParent","tagParent","$policy","$serializerParent","","xmlPolyChildren","polyAttrName","qName","polyChild","childInfo","childSerializerParent","canBeAttribute","overrideOutputKind","serialDescriptor","useName","isDocumentRoot","outputKind","elementUseNameInfo","","$tagParent","childrenNameAnnotation","preserveSpace","","","keyNameInfo","parentInfo","keyTagParent","valueNameInfo","valueTagParent","","$canBeAttribute","childUseNameInfo","useParentInfo","effectiveUseNameInfo","getElementDescriptors","initialChildReorderInfo","descriptors","createElementDescriptor","","originalOrderNodes","allNodes","members","finalToDeclMap","declToOrderMap","nextElemIdx","attrOrMembers","general","minIdx","nextIdx","successor","requestedOutputKind","valueChildIndex","valueChild","invalidIdx","xmlCData","polyChildSpecification","pkgPos","typeNameBase","currentPkg","parentTag","eqPos","prefPos","typename","realSerialName","elementTypeDescriptor","elementUseOutputKind","elementIdx","childCount","beforeAny","hasWildCard","afterAny","nodes","beforesToCheck","aftersToCheck","unseenSuccessors","$beforeAny","$afterAny","$parentNamespace","readCompactFragmentContent","deserialize","nextValue","deserializeInput","contentSerializer","nameSpace","rootName","xmlDecoderBase","rootNameInfo","realName","rootDescriptor","defaultOverEmpty","defaultString","descOutputKind","deser","serialValueDecoder","tagId","attrName","childXmlDescriptor","effectiveDeserializer","inputType","isNameOfAttr","normalizedName","containingNamespaceUri","emptyNsPrefix","valChildDesc","singleParsed","orderedBefore","orderedAfter","seenSiblingIndex","alreadySeenTrailingIndex","valueKind","lastAttrIndex","peek","fixedIndex","rawIndex","polyMode","sdec","typeQName","childSerialName","childQnames","isMixed","typeTag","parentType","useAnnotations","isValue","parentChildDesc","elementKind","typeDescriptor","serialKind","typeNameInfo","parentSerialKind","parentDescriptor","childIndex","orderConstraints","orderNodes","xmlBefore","xmlAfter","befores","afters","isListEluded","childAnnotation","mapParent","keyUseName","pseudoKeyParent","keyEffectiveOutputKind","prefixedName","cIndex","elementSerialDescriptor","effectiveSerializerParent","effectiveTagParent","overridenSerializer","fallback","typeName","xmlCodecBase","defaultDecoder","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","defineProperty","enumerable","globalThis","Function","Symbol","toStringTag","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"worldwind-tutorials.js","mappings":"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AAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,IxEvSwmU,KwEwS1qU,MAAE,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,IAAMic,EAAG,GAAKjc,EAAG,IxExSumU,KwEyS1qU,MAAE,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,IAAMic,EAAG,GAAKjc,EAAG,IxEzSumU,KwE0S1qU,MAAE,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IxE1SsmU,KwE2S1qU,MAAE,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IxE3SsmU,KwE4S1qU,MAAE,IAAMic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IAAMic,EAAG,IAAMjc,EAAG,IxE5SomU,KwE6S1qU,MAAE,IAAMic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,GAAKjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IAAMic,EAAG,IAAMjc,EAAG,IxE7SomU,KwE8S1qU,MAAE,IAAMic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IxE9SmmU,KwE+S1qU,MAAE,IAAMic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IxE/SmmU,KwEgT1qU,MAAE,IAAMic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,IAAMic,EAAG,IAAMjc,EAAG,IxEhTkmU,KwEiT1qU,MAAE,IAAMic,EAAG,IAAMjc,EAAG,GAAKic,EAAG,IAAMjc,EAAG,GAAKic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CX,wBzFp8BA,IyFg9BkB,SxEt1BqghC,KwEs1B9/gC,MxEt1B8/gC,KwEs1B3/gC,OzFh9BhB,KACR5E,EyFk9BI,UAAW,MAAQ,UAAW,eAAgB,kBzFj9BlD,MAAM,GAAiC,GAAR,GACnC,CyFk9BC,OxE31BshhC,IwE21BvhhC,4BAmCI0+C,ExE93Bg9jC,KwE83Bt8jC,MAAE,GxE93Bo8jC,KwE+3Bh9jC,MAAE,GxE/3B88jC,KwE+3Bz8jC,MAAE,GxE/3Bu8jC,KwEg4Bh9jC,MAAE,GAAKA,EAEPA,ExEl4Bg9jC,KwEk4B18jC,MAAE,GxEl4Bw8jC,KwEm4Bh9jC,MAAE,GxEn4B88jC,KwEm4Bz8jC,MAAE,GxEn4Bu8jC,KwEo4Bh9jC,MAAE,GAAKA,EAEPA,ExEt4Bg9jC,KwEs4B18jC,MAAE,GxEt4Bw8jC,KwEu4Bh9jC,MAAE,GxEv4B88jC,KwEu4Bz8jC,MAAE,GxEv4Bu8jC,KwEw4Bh9jC,MAAE,GAAKA,MAEP17C,ExE14Bg9jC,KwE04Bx8jC,MAAE,GACVC,ExE34Bg9jC,KwE24Bx8jC,MAAE,GACVg8C,ExE54Bg9jC,KwE44Bx8jC,MAAE,IAUb,OxEt5Bm9jC,KwE84Bh9jC,MAAE,IxE94B88jC,KwE84Bv8jC,MAAE,GAAKj8C,ExE94Bg8jC,KwE84B37jC,MAAE,GAAKC,ExE94Bo7jC,KwE84Bh7jC,MAAE,GAAKg8C,ExE94By6jC,KwE+4Bh9jC,MAAE,IxE/4B88jC,KwE+4Bv8jC,MAAE,GAAKj8C,ExE/4Bg8jC,KwE+4B37jC,MAAE,GAAKC,ExE/4Bo7jC,KwE+4Bh7jC,MAAE,GAAKg8C,ExE/4By6jC,KwEg5Bh9jC,MAAE,KxEh5B88jC,KwEg5Bt8jC,MAAE,GAAKj8C,ExEh5B+7jC,KwEg5B17jC,MAAE,GAAKC,ExEh5Bm7jC,KwEg5B/6jC,MAAE,IAAMg8C,ExEh5Bu6jC,KwEk5Bh9jC,MAAE,IAAM,ExEl5Bw8jC,KwEm5Bh9jC,MAAE,IAAM,ExEn5Bw8jC,KwEo5Bh9jC,MAAE,IAAM,ExEp5Bw8jC,KwEq5Bh9jC,MAAE,IAAM,ExEr5Bw8jC,IwEs5Bp9jC,sBAoE0B+iC,OAA+B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","sources":["webpack://worldwind-tutorials/webpack/universalModuleDefinition","webpack://worldwind-tutorials/../../node_modules/@js-joda/core/dist/js-joda.esm.js","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/Clock.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Preconditions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/internal/dateCalculations.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/InstantSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/LocalDateTimeSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/serializers/TimeZoneSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/DayOfWeek.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/Instant.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/JSJodaExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/LocalDateTime.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/Month.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Standard.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/UtcOffset.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/js/src/JSJodaExceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/dynamic.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/long.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Strings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/FloorDivMod.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/commonJs/src/internal/mathJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/time/Duration.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/LocalDate.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/8ebe0a8279b7bad8/core/common/src/TimeZone.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/build/generated/moko-resources/jsMain/src/earth/worldwind/tutorials/MR.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/AbstractTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/BasicTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/CameraViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ElevationHeatmapTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/EllipsesTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Angle.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/GKGraticuleTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LabelsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/LookAtViewTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/MGRSGraticuleTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PathsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PlacemarksTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/PolygonsTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ShapesDashAndFillTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/ShowTessellationTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SightlineTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/SurfaceImageTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WcsElevationTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/commonMain/kotlin/earth.worldwind.tutorials/WmtsLayerTutorial.kt","webpack://worldwind-tutorials/../../../../worldwind-tutorials/src/jsMain/kotlin/earth/worldwind/tutorials/Main.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Collections.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/math.kt","webpack://worldwind-tutorials/../../../../worldwind/build/generated/moko-resources/jsMain/src/earth/worldwind/MR.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/GoToAnimator.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/PickedObjectList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Maps.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/WorldWind.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/BasicDrawableTerrain.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawContext.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Library.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/kgl/Kgl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Collections.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawShapeState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableGroup.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableHeatmap.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableLines.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableQueue.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableScreenTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableStarField.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceColor.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableSurfaceTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/draw/DrawableTessellation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/BasicFrameController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/frame/Frame.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/AltitudeMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/BoundingSphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Camera.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Ellipsoid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Frustum.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Line.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Location.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/LookAt.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix3.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_ArraysJs.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Matrix4.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Offset.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/OffsetMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Plane.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Position.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Range.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Sector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/TileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec2.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Vec3.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/Viewport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/GKCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/GKCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/HelmertParameters.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/HelmertTransformation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/Hemisphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/MGRSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/PolarCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/TMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UPSCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoord.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/geom/coords/UTMCoordConverter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/GestureState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/Globe.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/ElevationModel.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/AbstractTiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Sets.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/elevation/coverage/BasicElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/MercatorProjection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/Wgs84Projection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTerrain.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/BasicTessellator.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/comparisons/Comparisons.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/terrain/TerrainTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/AbstractLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/AbstractTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/BackgroundLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/LayerList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/RenderableLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/ShowTessellationLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AbstractAtmosphereProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/AtmosphereLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableGroundAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/DrawableSkyAtmosphere.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/GroundProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/atmosphere/SkyProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/AbstractGraticuleTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleRenderingParams.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GraticuleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/LineStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GridElement.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/GridTilesSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKGraticuleTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKLayerHelper.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKMetricGrid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKMetricLabels.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/gk/GKOverview.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/AbstractUTMGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSGraticuleLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSGridZone.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/stringJs.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/MGRSOverview.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMMetricScaleSupport.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareGrid.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/graticule/utm/UTMSquareZone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/heatmap/ElevationHeatmapLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/heatmap/ElevationHeatmapProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/AbstractMercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorSector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/WebMercatorLayerFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/starfield/StarFieldProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/Wcs100ElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/Wcs100ElevationSourceFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsLayerFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSet.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsLayerFactory.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Strings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/regex/RegexExtensions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/WmtsTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAttribution.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsAuthorityUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsCapability.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactInformation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsContactPersonPrimary.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDcpType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsException.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsGeographicBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsIdentifier.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsInfoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsLogoUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsMetadataUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequest.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsRequestOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsService.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wms/WmsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsAddress.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsBoundingBox.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsConstraint.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsContactInfo.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDcp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsDescription.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttp.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsHttpMethod.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOnlineResource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperation.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsOperationsMetadata.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsPhone.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceContact.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceIdentification.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/OwsServiceProvider.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsCapabilities.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsContents.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsDimension.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsLegendURL.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsResourceUrl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsStyle.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTheme.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrix.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixLimits.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSet.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/ogc/wmts/WmtsTileMatrixSetLink.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/AbstractSurfaceRenderable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Color.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/FontWeight.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Framebuffer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/RenderContext.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/Texture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/AbstractBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/BufferPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/FloatBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/IntBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/buffer/ShortBufferObject.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ImageOptions.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/ResamplingMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/image/WrapMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/AbstractShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/BasicShaderProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SightlineProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/render/program/SurfaceTextureProgram.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/AbstractShape.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Ellipse.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Label.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OmnidirectionalSightline.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/OrientationMode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Path.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PathType.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Placemark.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/PlacemarkAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/Polygon.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/ShapeAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/SurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TextAttributes.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/shape/TiledSurfaceImage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbsentResourceList.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/AbstractTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/BasicPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Level.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LevelSetConfig.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/LruMemoryCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/MessageTable.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/SunPosition.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/Tile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/ExponentFormatter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/Specification.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Lazy.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/format/StringFormat.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLU.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/GLUtessellatorCallbackAdapter.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/error/Error.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/ActiveRegion.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/CachedVertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Dict.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/DictNode.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUface.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUhalfEdge.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUmesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUtessellatorImpl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/GLUvertex.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Geom.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Mesh.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Normal.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQ.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQHeap.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/PriorityQSort.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Render.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/Sweep.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessMono.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/glu/tessellator/TessState.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/http/DefaultHttpClient.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/util/math/WWMath.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/BasicWorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/KeyboardControls.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindow.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/WorldWindowController.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffConstants.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffKeyEntry.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffMetadata.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffReader.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collectionJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/kotlinHacks.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/GeoTiffUtil.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/TiffConstants.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/formats/geotiff/TiffIFDEntry.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/ClickRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/DragRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/GestureRecognizer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/MutableCollections.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PanRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/PinchRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/RotationRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/SelectDragDetector.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TapRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TiltRecognizer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/gesture/TouchWrapper.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/ElevationSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/globe/elevation/coverage/TiledElevationCoverage.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/TiledImageLayer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/layer/mercator/MercatorImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/Font.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/RenderResourceCache.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/TextRenderer.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageSource.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTexture.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/render/image/ImageTile.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/Logger.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/SynchronizedPool.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/kgl/WebKgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/locale/Locale.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_ComparisonsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/Serializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Platform.common.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/Json.kt","webpack://worldwind-tutorials/../../../../worldwind/src/jsMain/kotlin/earth/worldwind/util/format/ConvertToInstant.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/libraries/stdlib/js/src/org.w3c/org.khronos.webgl.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/globe/projection/GeographicProjection.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/layer/mercator/MercatorTileFactory.kt","webpack://worldwind-tutorials/../../../../worldwind/src/commonMain/kotlin/earth/worldwind/gesture/SelectDragCallback.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/js/math.polyfills.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/ArrayBuffer.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/js.arrays/fill.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/math.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/core/builtins/native/kotlin/Number.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/core/builtins/src/kotlin/Unit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/runtime/primitiveCompanionObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/NumbersJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/AbstractMutableSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArrayFunctions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArrayList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/ArraySorting.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalHashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMapEntry.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashMapEntryDefault.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/HashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/LinkedHashSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/coroutines/cancellation/CancellationException.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/random/PlatformRandom.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/random/Random.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/random/XorWowRandom.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KClassImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/primitives.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/reflection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/sequenceJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/CharacterCodingExceptionJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/StringBuilderJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/charJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_WhitespaceChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/CharCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_TitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/numberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_DigitChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/regex.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/stringsCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/text/utf8Encoding.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/throwableExtensions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/time/DurationUnitJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Sequences.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Iterables.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/kotlin/ExceptionsH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UShort.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/builtins/Enum.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/BitMask.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/noPackageHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/bitUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/runtimeForStdLib.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/charSequenceJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/collectionsHacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/compareTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/coreRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/hacks.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/longjs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/metadataUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/numberConversion.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/rangeTo.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/reflectRuntime.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/typeCheckUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_CharCategories.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_LetterChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_OtherLowercaseChars.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/coroutines_13/CoroutineImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/coroutines_13/IntrinsicsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/exceptions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/text/numberConversions_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractCollection.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractList.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/AbstractSet.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/ArrayDeque.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/IndexedValue.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Iterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/PrimitiveIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/SequenceBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/ContinuationInterceptor.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/CoroutineContextImpl.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/intrinsics/Intrinsics.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/enums/EnumEntries.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/internal/progressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/PrimitiveRanges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/ProgressionIterators.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/Progressions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Appendable.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Char.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/Indent.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/StringNumberConversions.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/text/StringBuilder.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/time/DurationUnit.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/DeepRecursive.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Result.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/Tuples.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UByte.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UByteArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UInt.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UIntArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UIntRange.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UProgressionUtil.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/ULong.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UnsignedUtils.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/ULongArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UShortArray.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/unsigned/src/kotlin/UStrings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/util/HashCode.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/regexp.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/coroutines/Continuation.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/collections/InternalMap.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/kotlin/MathH.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/KTypeHelpers.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/kotlin/reflection_js-ir.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Maps.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/Arrays.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/collections/MapWithDefault.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_Sets.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/src/generated/_CollectionsJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/JsClass.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/kotlin/ranges/Ranges.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_OneToManyTitlecaseMappings.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/libraries/stdlib/js/src/org.w3c/EventListener.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/AtomicFU.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/Trace.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsAndWasmSharedMain/kotlin/kotlinx/atomicfu/AtomicFU.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Job.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/AbstractCoroutine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Builders.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CompletionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedTask.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CancellableContinuationImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletableDeferred.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionState.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineExceptionHandler.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineName.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineScope.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CoroutineStart.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Delay.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/CoroutineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/EventLoop.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/ThreadLocal.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Exceptions.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/JobSupport.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/Concurrent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/LinkedList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/MainCoroutineDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Supervisor.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/Unconfined.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/BufferOverflow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/BufferedChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/ConcurrentLinkedList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/InlineList.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/Channels.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/channels/ConflatedBufferedChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/SharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/AbstractSharedFlow.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/internal/SafeCollector.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/flow/operators/Share.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/CoroutineExceptionHandlerImpl.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/CoroutineExceptionHandlerImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedContinuation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/ThreadContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/OnUndeliveredElement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Scopes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/Symbol.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/SystemProps.common.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/SystemProps.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Cancellable.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/intrinsics/Undispatched.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/selects/Select.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Window.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Debug.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/JSDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/internal/CoroutineExceptionHandlerImpl.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/Dispatchers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/EventLoop.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/Exceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/SchedulerTask.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/flow/internal/SafeCollector.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/JSDispatcher.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/jsAndWasmShared/src/internal/StackTraceRecovery.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/CompletionHandler.common.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/js-ir/runtime/coroutineInternalJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/js/src/Promise.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/Decoding.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginHelperInterfaces.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/PolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/ContextAware.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/AbstractPolymorphicSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializationExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/internal/Platform.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Primitives.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/builtins/BuiltinSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/SerializersCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/descriptors/SerialKinds.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/encoding/AbstractDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/BuiltInSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionDescriptors.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/CollectionSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/InlineClassDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NothingSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/NullableSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ObjectSerializer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginGeneratedSerialDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PrimitiveArraysSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tagged.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/Tuples.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/ValueClasses.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModule.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/modules/SerializersModuleBuilders.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/jsMain/src/kotlinx/serialization/SerializersJs.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/src/jsMainSources/libraries/stdlib/js/src/kotlin/reflect/AssociatedObjects.kt","webpack://worldwind-tutorials/../../../../../worldwind-tutorials/build/compileSync/js/main/productionExecutable/kotlin/common/src/generated/_UArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/JsonInternalDependencies.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/core/commonMain/src/kotlinx/serialization/internal/PluginExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonConfiguration.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElement.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StringOps.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementSerializers.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonElementMarker.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonExceptions.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/AbstractJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonNamesMap.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonPath.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/JsonTreeReader.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/Polymorphic.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/TreeJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/SchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/WriteMode.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/commonMain/src/kotlinx/serialization/json/internal/lexer/StringJsonLexer.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsWasmMain/src/kotlinx/serialization/json/JsonSchemaCache.kt","webpack://worldwind-tutorials/../../../../../../../../../opt/buildAgent/work/b2fef8360e1bcf3d/formats/json/jsWasmMain/src/kotlinx/serialization/json/internal/createMapForCache.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClient.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/HttpClientConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/HttpClientCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/SavedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/call/utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/content/ObservableContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineBase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineCapability.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/engine/HttpClientEngineConfig.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/BodyProgress.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultResponseValidation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/DefaultTransform.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpCallValidator.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpClientPlugin.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpPlainText.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRedirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpRequestLifecycle.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpSend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/HttpTimeout.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/observer/DelegatedCall.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/plugins/websocket/WebSockets.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/DefaultHttpRequest.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/HttpRequestPipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/request/RequestBody.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/DefaultHttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponse.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpResponsePipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/statement/HttpStatement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ByteChannelUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/ClientEvents.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/Content.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/common/src/io/ktor/client/utils/headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/HttpClientJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/HttpClientEngineBase.js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/Js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsClientEngine.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/JsUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/ReadableStream.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/browser/BrowserFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/compatibility/Utils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/engine/js/node/NodeFetch.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/DefaultTransformJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/plugins/websocket/JsWebSocketSession.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-client/ktor-client-core/js/src/io/ktor/client/utils/ExceptionUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-events/common/src/io/ktor/events/Events.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Codecs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Input.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/ContentTypes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HeaderValueWithParameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Headers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaderValueParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpHeaders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMethod.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpProtocolVersion.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpStatusCode.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Parameters.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Query.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/js/src/io/ktor/http/URLBuilderJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/UrlDecodedParametersBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLParser.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/URLProtocol.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/Url.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/OutgoingContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/content/TextContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Strings.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-http/common/src/io/ktor/http/HttpMessageProperties.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/Pool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelSequential.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/88b0986a7186d029/atomicfu/src/jsAndWasmSharedMain/kotlin/kotlinx/atomicfu/locks/Synchronized.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteWriteChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/CloseElement.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/Coroutines.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/charsets/Encoding.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/CharsetJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/BufferUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoders.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Decoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Output.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferAppend.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferFactory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BufferPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryFactoryJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/PrimiteArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Buffers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/BytePacketBuilder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/ByteReadPacket.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/UTF8.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/Memory.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputArrays.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/ChunkBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/EncodeResult.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/bits/ByteOrder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Unsafe.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/AwaitingSlot.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/internal/SequentialCopyTo.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/pool/ByteArrayPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteChannelJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ExceptionUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/ByteReadChannelJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/ISO88591.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/charsets/DecodeBuffer.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/PacketJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/errors/IOException.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/TextDecoderFallback.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/js/Win1252Table.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/pool/DefaultPool.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/internal/Numbers.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/PacketDirect.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/Builder.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteReadChannel.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/StringsJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/core/CloseableJS.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/InputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/js/src/io/ktor/utils/io/bits/MemoryPrimitivesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/core/OutputPrimitives.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-io/common/src/io/ktor/utils/io/ByteChannelCtor.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Attributes.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/ByteChannels.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CaseInsensitiveMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Collections.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/CoroutinesUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/DelegatingMutableSet.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/PlatformUtils.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/PlatformUtilsJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/StringValues.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Text.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/collections/CopyOnWriteHashMap.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/date/Date.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/DebugPipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PhaseContent.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/Pipeline.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelineContext.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/PipelineContext.js.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhase.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/PipelinePhaseRelation.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/SuspendFunctionGun.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/pipeline/StackTraceRecover.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/pipeline/StackTraceRecoverJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/reflect/Type.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/AttributesJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/date/DateJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/logging/KtorSimpleLoggerJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/logging/LoggerJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/js/src/io/ktor/util/reflect/TypeInfoJs.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-utils/common/src/io/ktor/util/Charset.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/CloseReason.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameCommon.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/common/src/io/ktor/websocket/FrameType.kt","webpack://worldwind-tutorials/../../../../../../../../../mnt/agent/work/8d547b974a7be21f/ktor-shared/ktor-websockets/js/src/io/ktor/websocket/FrameJs.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/FileResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/ImageResource.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/ResourcePlatformDetails.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/moko-resources/moko-resources/resources/src/jsMain/kotlin/dev/icerock/moko/resources/internal/ioUtil.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/Uri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/NotCachedHolder.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/PathSegments.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriCodec.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/UriSyntaxException.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/constants.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/AbstractPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/Part.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/parts/PathPart.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/AbstractHierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/HierarchicalUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/OpaqueUri.kt","webpack://worldwind-tutorials/../../../../../../../../../Users/runner/work/uri-kmp/uri-kmp/uri/src/commonMain/kotlin/com/eygraber/uri/uris/StringUri.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/NamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/util/commondomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/DomWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/EventType.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/Namespace.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/SimpleNamespaceContext.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XMLConstants.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlBufferedReaderBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlDelegatingReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlEvent.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/_IOException.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlUtil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/KtXmlWriter.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/XmlVersion.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/NamespaceHolder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/PlatformXmlWriterBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/core/impl/chars.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NamedNodeMap.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/Node.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/util/XmlBoolean.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/Attr.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/QName.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlReaderExt.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/XmlStreaming.js.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/core/impl/multiplatform/jsMultiplatform.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/JSCompactFragment.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/XMLFragmentStreamReader.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/util/impl/jsDomutil.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/Element.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/ProcessingInstruction.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/CharacterData.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/jsMain/kotlin/nl/adaptivity/xmlutil/dom/NodeList.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReaderNS.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/CompactFragmentSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/ElementSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/InputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/OutputKind.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/PolyBaseInfo.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XML.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlSerializationPolicy.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/defaultPlatformModule.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XMLDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlCodecBase.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/XmlExceptions.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/annotations.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/DummyDecoder.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/XmlQNameSerializer.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderNode.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlOrderConstraint.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/commonMain/kotlin/nl/adaptivity/xmlutil/serialization/structure/XmlTypeDescriptor.kt","webpack://worldwind-tutorials/../../../../../../../xmlutil/xmlutil/serialization/src/jsMain/kotlin/nl/adaptivity/xmlutil/serialization/impl/compat.js.kt","webpack://worldwind-tutorials/webpack/bootstrap","webpack://worldwind-tutorials/webpack/runtime/define property getters","webpack://worldwind-tutorials/webpack/runtime/global","webpack://worldwind-tutorials/webpack/runtime/hasOwnProperty shorthand","webpack://worldwind-tutorials/webpack/runtime/make namespace object","webpack://worldwind-tutorials/webpack/runtime/publicPath","webpack://worldwind-tutorials/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"worldwind-tutorials\"] = factory();\n\telse\n\t\troot[\"worldwind-tutorials\"] = factory();\n})(this, () => {\nreturn ","//! @version @js-joda/core - 3.2.0\n//! @copyright (c) 2015-present, Philipp Thürwächter, Pattrick Hüper & js-joda contributors\n//! @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n//! @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction createErrorType(name, init, superErrorClass) {\n if (superErrorClass === void 0) {\n superErrorClass = Error;\n }\n\n function JsJodaException(message) {\n if (!Error.captureStackTrace) {\n this.stack = new Error().stack;\n } else {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.message = message;\n init && init.apply(this, arguments);\n\n this.toString = function () {\n return this.name + \": \" + this.message;\n };\n }\n\n JsJodaException.prototype = Object.create(superErrorClass.prototype);\n JsJodaException.prototype.name = name;\n JsJodaException.prototype.constructor = JsJodaException;\n return JsJodaException;\n}\n\nvar DateTimeException = createErrorType('DateTimeException', messageWithCause);\nvar DateTimeParseException = createErrorType('DateTimeParseException', messageForDateTimeParseException);\nvar UnsupportedTemporalTypeException = createErrorType('UnsupportedTemporalTypeException', null, DateTimeException);\nvar ArithmeticException = createErrorType('ArithmeticException');\nvar IllegalArgumentException = createErrorType('IllegalArgumentException');\nvar IllegalStateException = createErrorType('IllegalStateException');\nvar NullPointerException = createErrorType('NullPointerException');\n\nfunction messageWithCause(message, cause) {\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n}\n\nfunction messageForDateTimeParseException(message, text, index, cause) {\n if (text === void 0) {\n text = '';\n }\n\n if (index === void 0) {\n index = 0;\n }\n\n if (cause === void 0) {\n cause = null;\n }\n\n var msg = message || this.name;\n msg += ': ' + text + ', at index: ' + index;\n\n if (cause !== null && cause instanceof Error) {\n msg += '\\n-------\\nCaused by: ' + cause.stack + '\\n-------\\n';\n }\n\n this.message = msg;\n\n this.parsedString = function () {\n return text;\n };\n\n this.errorIndex = function () {\n return index;\n };\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction assert(assertion, msg, error) {\n if (!assertion) {\n if (error) {\n throw new error(msg);\n } else {\n throw new Error(msg);\n }\n }\n}\nfunction requireNonNull(value, parameterName) {\n if (value == null) {\n throw new NullPointerException(parameterName + ' must not be null');\n }\n\n return value;\n}\nfunction requireInstance(value, _class, parameterName) {\n if (!(value instanceof _class)) {\n throw new IllegalArgumentException(parameterName + ' must be an instance of ' + (_class.name ? _class.name : _class) + (value && value.constructor && value.constructor.name ? ', but is ' + value.constructor.name : ''));\n }\n\n return value;\n}\nfunction abstractMethodFail(methodName) {\n throw new TypeError('abstract method \"' + methodName + '\" is not implemented');\n}\n\nvar assert$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n assert: assert,\n requireNonNull: requireNonNull,\n requireInstance: requireInstance,\n abstractMethodFail: abstractMethodFail\n});\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\nvar MIN_SAFE_INTEGER = -9007199254740991;\nvar MathUtil = function () {\n function MathUtil() {}\n\n MathUtil.intDiv = function intDiv(x, y) {\n var r = x / y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.intMod = function intMod(x, y) {\n var r = x - MathUtil.intDiv(x, y) * y;\n r = MathUtil.roundDown(r);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.roundDown = function roundDown(r) {\n if (r < 0) {\n return Math.ceil(r);\n } else {\n return Math.floor(r);\n }\n };\n\n MathUtil.floorDiv = function floorDiv(x, y) {\n var r = Math.floor(x / y);\n return MathUtil.safeZero(r);\n };\n\n MathUtil.floorMod = function floorMod(x, y) {\n var r = x - MathUtil.floorDiv(x, y) * y;\n return MathUtil.safeZero(r);\n };\n\n MathUtil.safeAdd = function safeAdd(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n var r = MathUtil.safeToInt(x + y);\n\n if (r === x || r === y) {\n throw new ArithmeticException('Invalid addition beyond MAX_SAFE_INTEGER!');\n }\n\n return r;\n };\n\n MathUtil.safeSubtract = function safeSubtract(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 0 && y === 0) {\n return 0;\n } else if (x === 0) {\n return MathUtil.safeZero(-1 * y);\n } else if (y === 0) {\n return MathUtil.safeZero(x);\n }\n\n return MathUtil.safeToInt(x - y);\n };\n\n MathUtil.safeMultiply = function safeMultiply(x, y) {\n MathUtil.verifyInt(x);\n MathUtil.verifyInt(y);\n\n if (x === 1) {\n return MathUtil.safeZero(y);\n }\n\n if (y === 1) {\n return MathUtil.safeZero(x);\n }\n\n if (x === 0 || y === 0) {\n return 0;\n }\n\n var r = MathUtil.safeToInt(x * y);\n\n if (r / y !== x || x === MIN_SAFE_INTEGER && y === -1 || y === MIN_SAFE_INTEGER && x === -1) {\n throw new ArithmeticException('Multiplication overflows: ' + x + ' * ' + y);\n }\n\n return r;\n };\n\n MathUtil.parseInt = function (_parseInt) {\n function parseInt(_x) {\n return _parseInt.apply(this, arguments);\n }\n\n parseInt.toString = function () {\n return _parseInt.toString();\n };\n\n return parseInt;\n }(function (value) {\n var r = parseInt(value);\n return MathUtil.safeToInt(r);\n });\n\n MathUtil.safeToInt = function safeToInt(value) {\n MathUtil.verifyInt(value);\n return MathUtil.safeZero(value);\n };\n\n MathUtil.verifyInt = function verifyInt(value) {\n if (value == null) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"', using null or undefined as argument\");\n }\n\n if (isNaN(value)) {\n throw new ArithmeticException('Invalid int value, using NaN as argument');\n }\n\n if (value % 1 !== 0) {\n throw new ArithmeticException(\"Invalid value: '\" + value + \"' is a float\");\n }\n\n if (value > MAX_SAFE_INTEGER || value < MIN_SAFE_INTEGER) {\n throw new ArithmeticException('Calculation overflows an int: ' + value);\n }\n };\n\n MathUtil.safeZero = function safeZero(value) {\n return value === 0 ? 0 : +value;\n };\n\n MathUtil.compareNumbers = function compareNumbers(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n };\n\n MathUtil.smi = function smi(int) {\n return int >>> 1 & 0x40000000 | int & 0xBFFFFFFF;\n };\n\n MathUtil.hash = function hash(number) {\n if (number !== number || number === Infinity) {\n return 0;\n }\n\n var result = number;\n\n while (number > 0xFFFFFFFF) {\n number /= 0xFFFFFFFF;\n result ^= number;\n }\n\n return MathUtil.smi(result);\n };\n\n MathUtil.hashCode = function hashCode() {\n var result = 17;\n\n for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n numbers[_key] = arguments[_key];\n }\n\n for (var _i = 0, _numbers = numbers; _i < _numbers.length; _i++) {\n var n = _numbers[_i];\n result = (result << 5) - result + MathUtil.hash(n);\n }\n\n return MathUtil.hash(result);\n };\n\n return MathUtil;\n}();\nMathUtil.MAX_SAFE_INTEGER = MAX_SAFE_INTEGER;\nMathUtil.MIN_SAFE_INTEGER = MIN_SAFE_INTEGER;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar Enum = function () {\n function Enum(name) {\n this._name = name;\n }\n\n var _proto = Enum.prototype;\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Enum;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAmount = function () {\n function TemporalAmount() {}\n\n var _proto = TemporalAmount.prototype;\n\n _proto.get = function get(unit) {\n abstractMethodFail('get');\n };\n\n _proto.units = function units() {\n abstractMethodFail('units');\n };\n\n _proto.addTo = function addTo(temporal) {\n abstractMethodFail('addTo');\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n abstractMethodFail('subtractFrom');\n };\n\n return TemporalAmount;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalUnit = function () {\n function TemporalUnit() {}\n\n var _proto = TemporalUnit.prototype;\n\n _proto.duration = function duration() {\n abstractMethodFail('duration');\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n abstractMethodFail('isDurationEstimated');\n };\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.addTo = function addTo(dateTime, periodToAdd) {\n abstractMethodFail('addTo');\n };\n\n _proto.between = function between(temporal1, temporal2) {\n abstractMethodFail('between');\n };\n\n return TemporalUnit;\n}();\n\nvar Duration = function (_TemporalAmount) {\n _inheritsLoose(Duration, _TemporalAmount);\n\n function Duration(seconds, nanos) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanos);\n return _this;\n }\n\n Duration.ofDays = function ofDays(days) {\n return Duration._create(MathUtil.safeMultiply(days, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n Duration.ofHours = function ofHours(hours) {\n return Duration._create(MathUtil.safeMultiply(hours, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n Duration.ofMinutes = function ofMinutes(minutes) {\n return Duration._create(MathUtil.safeMultiply(minutes, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n Duration.ofSeconds = function ofSeconds(seconds, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = MathUtil.safeAdd(seconds, MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND));\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Duration._create(secs, nos);\n };\n\n Duration.ofMillis = function ofMillis(millis) {\n var secs = MathUtil.intDiv(millis, 1000);\n var mos = MathUtil.intMod(millis, 1000);\n\n if (mos < 0) {\n mos += 1000;\n secs--;\n }\n\n return Duration._create(secs, mos * 1000000);\n };\n\n Duration.ofNanos = function ofNanos(nanos) {\n var secs = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_SECOND);\n\n if (nos < 0) {\n nos += LocalTime.NANOS_PER_SECOND;\n secs--;\n }\n\n return this._create(secs, nos);\n };\n\n Duration.of = function of(amount, unit) {\n return Duration.ZERO.plus(amount, unit);\n };\n\n Duration.from = function from(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount);\n var duration = Duration.ZERO;\n amount.units().forEach(function (unit) {\n duration = duration.plus(amount.get(unit), unit);\n });\n return duration;\n };\n\n Duration.between = function between(startInclusive, endExclusive) {\n requireNonNull(startInclusive, 'startInclusive');\n requireNonNull(endExclusive, 'endExclusive');\n var secs = startInclusive.until(endExclusive, ChronoUnit.SECONDS);\n var nanos = 0;\n\n if (startInclusive.isSupported(ChronoField.NANO_OF_SECOND) && endExclusive.isSupported(ChronoField.NANO_OF_SECOND)) {\n try {\n var startNos = startInclusive.getLong(ChronoField.NANO_OF_SECOND);\n nanos = endExclusive.getLong(ChronoField.NANO_OF_SECOND) - startNos;\n\n if (secs > 0 && nanos < 0) {\n nanos += LocalTime.NANOS_PER_SECOND;\n } else if (secs < 0 && nanos > 0) {\n nanos -= LocalTime.NANOS_PER_SECOND;\n } else if (secs === 0 && nanos !== 0) {\n var adjustedEnd = endExclusive.with(ChronoField.NANO_OF_SECOND, startNos);\n secs = startInclusive.until(adjustedEnd, ChronoUnit.SECONDS);\n }\n } catch (e) {}\n }\n\n return this.ofSeconds(secs, nanos);\n };\n\n Duration.parse = function parse(text) {\n requireNonNull(text, 'text');\n var PATTERN = new RegExp('([-+]?)P(?:([-+]?[0-9]+)D)?(T(?:([-+]?[0-9]+)H)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)(?:[.,]([0-9]{0,9}))?S)?)?', 'i');\n var matches = PATTERN.exec(text);\n\n if (matches !== null) {\n if ('T' === matches[3] === false) {\n var negate = '-' === matches[1];\n var dayMatch = matches[2];\n var hourMatch = matches[4];\n var minuteMatch = matches[5];\n var secondMatch = matches[6];\n var fractionMatch = matches[7];\n\n if (dayMatch != null || hourMatch != null || minuteMatch != null || secondMatch != null) {\n var daysAsSecs = Duration._parseNumber(text, dayMatch, LocalTime.SECONDS_PER_DAY, 'days');\n\n var hoursAsSecs = Duration._parseNumber(text, hourMatch, LocalTime.SECONDS_PER_HOUR, 'hours');\n\n var minsAsSecs = Duration._parseNumber(text, minuteMatch, LocalTime.SECONDS_PER_MINUTE, 'minutes');\n\n var seconds = Duration._parseNumber(text, secondMatch, 1, 'seconds');\n\n var negativeSecs = secondMatch != null && secondMatch.charAt(0) === '-';\n\n var nanos = Duration._parseFraction(text, fractionMatch, negativeSecs ? -1 : 1);\n\n try {\n return Duration._create(negate, daysAsSecs, hoursAsSecs, minsAsSecs, seconds, nanos);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: overflow', text, 0, ex);\n }\n }\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Duration', text, 0);\n };\n\n Duration._parseNumber = function _parseNumber(text, parsed, multiplier, errorText) {\n if (parsed == null) {\n return 0;\n }\n\n try {\n if (parsed[0] === '+') {\n parsed = parsed.substring(1);\n }\n\n return MathUtil.safeMultiply(parseFloat(parsed), multiplier);\n } catch (ex) {\n throw new DateTimeParseException('Text cannot be parsed to a Duration: ' + errorText, text, 0, ex);\n }\n };\n\n Duration._parseFraction = function _parseFraction(text, parsed, negate) {\n if (parsed == null || parsed.length === 0) {\n return 0;\n }\n\n parsed = (parsed + '000000000').substring(0, 9);\n return parseFloat(parsed) * negate;\n };\n\n Duration._create = function _create() {\n if (arguments.length <= 2) {\n return Duration._createSecondsNanos(arguments[0], arguments[1]);\n } else {\n return Duration._createNegateDaysHoursMinutesSecondsNanos(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);\n }\n };\n\n Duration._createNegateDaysHoursMinutesSecondsNanos = function _createNegateDaysHoursMinutesSecondsNanos(negate, daysAsSecs, hoursAsSecs, minsAsSecs, secs, nanos) {\n var seconds = MathUtil.safeAdd(daysAsSecs, MathUtil.safeAdd(hoursAsSecs, MathUtil.safeAdd(minsAsSecs, secs)));\n\n if (negate) {\n return Duration.ofSeconds(seconds, nanos).negated();\n }\n\n return Duration.ofSeconds(seconds, nanos);\n };\n\n Duration._createSecondsNanos = function _createSecondsNanos(seconds, nanoAdjustment) {\n if (seconds === void 0) {\n seconds = 0;\n }\n\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n if (seconds === 0 && nanoAdjustment === 0) {\n return Duration.ZERO;\n }\n\n return new Duration(seconds, nanoAdjustment);\n };\n\n var _proto = Duration.prototype;\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.SECONDS) {\n return this._seconds;\n } else if (unit === ChronoUnit.NANOS) {\n return this._nanos;\n } else {\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n };\n\n _proto.units = function units() {\n return [ChronoUnit.SECONDS, ChronoUnit.NANOS];\n };\n\n _proto.isZero = function isZero() {\n return this._seconds === 0 && this._nanos === 0;\n };\n\n _proto.isNegative = function isNegative() {\n return this._seconds < 0;\n };\n\n _proto.seconds = function seconds() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withSeconds = function withSeconds(seconds) {\n return Duration._create(seconds, this._nanos);\n };\n\n _proto.withNanos = function withNanos(nanoOfSecond) {\n ChronoField.NANO_OF_SECOND.checkValidIntValue(nanoOfSecond);\n return Duration._create(this._seconds, nanoOfSecond);\n };\n\n _proto.plusDuration = function plusDuration(duration) {\n requireNonNull(duration, 'duration');\n return this.plus(duration.seconds(), duration.nano());\n };\n\n _proto.plus = function plus(durationOrNumber, unitOrNumber) {\n if (arguments.length === 1) {\n return this.plusDuration(durationOrNumber);\n } else if (arguments.length === 2 && unitOrNumber instanceof TemporalUnit) {\n return this.plusAmountUnit(durationOrNumber, unitOrNumber);\n } else {\n return this.plusSecondsNanos(durationOrNumber, unitOrNumber);\n }\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.DAYS) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY), 0);\n }\n\n if (unit.isDurationEstimated()) {\n throw new UnsupportedTemporalTypeException('Unit must not have an estimated duration');\n }\n\n if (amountToAdd === 0) {\n return this;\n }\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusSecondsNanos(MathUtil.intDiv(amountToAdd, 1000000 * 1000) * 1000, MathUtil.intMod(amountToAdd, 1000000 * 1000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n }\n\n return this.plusSecondsNanos(MathUtil.safeMultiply(unit.duration().seconds(), amountToAdd), 0);\n }\n\n var duration = unit.duration().multipliedBy(amountToAdd);\n return this.plusSecondsNanos(duration.seconds(), duration.nano());\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(daysToAdd, LocalTime.SECONDS_PER_DAY), 0);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(hoursToAdd, LocalTime.SECONDS_PER_HOUR), 0);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n return this.plusSecondsNanos(MathUtil.safeMultiply(minutesToAdd, LocalTime.SECONDS_PER_MINUTE), 0);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this.plusSecondsNanos(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this.plusSecondsNanos(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * 1000000);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this.plusSecondsNanos(0, nanosToAdd);\n };\n\n _proto.plusSecondsNanos = function plusSecondsNanos(secondsToAdd, nanosToAdd) {\n requireNonNull(secondsToAdd, 'secondsToAdd');\n requireNonNull(nanosToAdd, 'nanosToAdd');\n\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = MathUtil.safeAdd(this._seconds, secondsToAdd);\n epochSec = MathUtil.safeAdd(epochSec, MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND));\n nanosToAdd = MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = MathUtil.safeAdd(this._nanos, nanosToAdd);\n return Duration.ofSeconds(epochSec, nanoAdjustment);\n };\n\n _proto.minus = function minus(durationOrNumber, unit) {\n if (arguments.length === 1) {\n return this.minusDuration(durationOrNumber);\n } else {\n return this.minusAmountUnit(durationOrNumber, unit);\n }\n };\n\n _proto.minusDuration = function minusDuration(duration) {\n requireNonNull(duration, 'duration');\n var secsToSubtract = duration.seconds();\n var nanosToSubtract = duration.nano();\n\n if (secsToSubtract === MIN_SAFE_INTEGER) {\n return this.plus(MAX_SAFE_INTEGER, -nanosToSubtract);\n }\n\n return this.plus(-secsToSubtract, -nanosToSubtract);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return daysToSubtract === MIN_SAFE_INTEGER ? this.plusDays(MAX_SAFE_INTEGER) : this.plusDays(-daysToSubtract);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return hoursToSubtract === MIN_SAFE_INTEGER ? this.plusHours(MAX_SAFE_INTEGER) : this.plusHours(-hoursToSubtract);\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return minutesToSubtract === MIN_SAFE_INTEGER ? this.plusMinutes(MAX_SAFE_INTEGER) : this.plusMinutes(-minutesToSubtract);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return secondsToSubtract === MIN_SAFE_INTEGER ? this.plusSeconds(MAX_SAFE_INTEGER) : this.plusSeconds(-secondsToSubtract);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return millisToSubtract === MIN_SAFE_INTEGER ? this.plusMillis(MAX_SAFE_INTEGER) : this.plusMillis(-millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return nanosToSubtract === MIN_SAFE_INTEGER ? this.plusNanos(MAX_SAFE_INTEGER) : this.plusNanos(-nanosToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(multiplicand) {\n if (multiplicand === 0) {\n return Duration.ZERO;\n }\n\n if (multiplicand === 1) {\n return this;\n }\n\n var secs = MathUtil.safeMultiply(this._seconds, multiplicand);\n var nos = MathUtil.safeMultiply(this._nanos, multiplicand);\n secs = secs + MathUtil.intDiv(nos, LocalTime.NANOS_PER_SECOND);\n nos = MathUtil.intMod(nos, LocalTime.NANOS_PER_SECOND);\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.dividedBy = function dividedBy(divisor) {\n if (divisor === 0) {\n throw new ArithmeticException('Cannot divide by zero');\n }\n\n if (divisor === 1) {\n return this;\n }\n\n var secs = MathUtil.intDiv(this._seconds, divisor);\n var secsMod = MathUtil.roundDown((this._seconds / divisor - secs) * LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.intDiv(this._nanos, divisor);\n nos = secsMod + nos;\n return Duration.ofSeconds(secs, nos);\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.abs = function abs() {\n return this.isNegative() ? this.negated() : this;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.plus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.plus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._seconds !== 0) {\n temporal = temporal.minus(this._seconds, ChronoUnit.SECONDS);\n }\n\n if (this._nanos !== 0) {\n temporal = temporal.minus(this._nanos, ChronoUnit.NANOS);\n }\n\n return temporal;\n };\n\n _proto.toDays = function toDays() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_DAY);\n };\n\n _proto.toHours = function toHours() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n };\n\n _proto.toMinutes = function toMinutes() {\n return MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n };\n\n _proto.toMillis = function toMillis() {\n var millis = Math.round(MathUtil.safeMultiply(this._seconds, 1000));\n millis = MathUtil.safeAdd(millis, MathUtil.intDiv(this._nanos, 1000000));\n return millis;\n };\n\n _proto.toNanos = function toNanos() {\n var totalNanos = MathUtil.safeMultiply(this._seconds, LocalTime.NANOS_PER_SECOND);\n totalNanos = MathUtil.safeAdd(totalNanos, this._nanos);\n return totalNanos;\n };\n\n _proto.compareTo = function compareTo(otherDuration) {\n requireNonNull(otherDuration, 'otherDuration');\n requireInstance(otherDuration, Duration, 'otherDuration');\n var cmp = MathUtil.compareNumbers(this._seconds, otherDuration.seconds());\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherDuration.nano();\n };\n\n _proto.equals = function equals(otherDuration) {\n if (this === otherDuration) {\n return true;\n }\n\n if (otherDuration instanceof Duration) {\n return this.seconds() === otherDuration.seconds() && this.nano() === otherDuration.nano();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n if (this === Duration.ZERO) {\n return 'PT0S';\n }\n\n var hours = MathUtil.intDiv(this._seconds, LocalTime.SECONDS_PER_HOUR);\n var minutes = MathUtil.intDiv(MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_HOUR), LocalTime.SECONDS_PER_MINUTE);\n var secs = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_MINUTE);\n var rval = 'PT';\n\n if (hours !== 0) {\n rval += hours + 'H';\n }\n\n if (minutes !== 0) {\n rval += minutes + 'M';\n }\n\n if (secs === 0 && this._nanos === 0 && rval.length > 2) {\n return rval;\n }\n\n if (secs < 0 && this._nanos > 0) {\n if (secs === -1) {\n rval += '-0';\n } else {\n rval += secs + 1;\n }\n } else {\n rval += secs;\n }\n\n if (this._nanos > 0) {\n rval += '.';\n var nanoString;\n\n if (secs < 0) {\n nanoString = '' + (2 * LocalTime.NANOS_PER_SECOND - this._nanos);\n } else {\n nanoString = '' + (LocalTime.NANOS_PER_SECOND + this._nanos);\n }\n\n nanoString = nanoString.slice(1, nanoString.length);\n rval += nanoString;\n\n while (rval.charAt(rval.length - 1) === '0') {\n rval = rval.slice(0, rval.length - 1);\n }\n }\n\n rval += 'S';\n return rval;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Duration;\n}(TemporalAmount);\nfunction _init() {\n Duration.ZERO = new Duration(0, 0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE.md in the root directory of this source tree)\n */\nvar YearConstants = function YearConstants() {};\nfunction _init$1() {\n YearConstants.MIN_VALUE = -999999;\n YearConstants.MAX_VALUE = 999999;\n}\n\nvar ChronoUnit = function (_TemporalUnit) {\n _inheritsLoose(ChronoUnit, _TemporalUnit);\n\n function ChronoUnit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto = ChronoUnit.prototype;\n\n _proto.duration = function duration() {\n return this._duration;\n };\n\n _proto.isDurationEstimated = function isDurationEstimated() {\n return this.isDateBased() || this === ChronoUnit.FOREVER;\n };\n\n _proto.isDateBased = function isDateBased() {\n return this.compareTo(ChronoUnit.DAYS) >= 0 && this !== ChronoUnit.FOREVER;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return this.compareTo(ChronoUnit.DAYS) < 0;\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n if (this === ChronoUnit.FOREVER) {\n return false;\n }\n\n try {\n temporal.plus(1, this);\n return true;\n } catch (e) {\n try {\n temporal.plus(-1, this);\n return true;\n } catch (e2) {\n return false;\n }\n }\n };\n\n _proto.addTo = function addTo(temporal, amount) {\n return temporal.plus(amount, this);\n };\n\n _proto.between = function between(temporal1, temporal2) {\n return temporal1.until(temporal2, this);\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n return this.duration().compareTo(other.duration());\n };\n\n return ChronoUnit;\n}(TemporalUnit);\nfunction _init$2() {\n ChronoUnit.NANOS = new ChronoUnit('Nanos', Duration.ofNanos(1));\n ChronoUnit.MICROS = new ChronoUnit('Micros', Duration.ofNanos(1000));\n ChronoUnit.MILLIS = new ChronoUnit('Millis', Duration.ofNanos(1000000));\n ChronoUnit.SECONDS = new ChronoUnit('Seconds', Duration.ofSeconds(1));\n ChronoUnit.MINUTES = new ChronoUnit('Minutes', Duration.ofSeconds(60));\n ChronoUnit.HOURS = new ChronoUnit('Hours', Duration.ofSeconds(3600));\n ChronoUnit.HALF_DAYS = new ChronoUnit('HalfDays', Duration.ofSeconds(43200));\n ChronoUnit.DAYS = new ChronoUnit('Days', Duration.ofSeconds(86400));\n ChronoUnit.WEEKS = new ChronoUnit('Weeks', Duration.ofSeconds(7 * 86400));\n ChronoUnit.MONTHS = new ChronoUnit('Months', Duration.ofSeconds(31556952 / 12));\n ChronoUnit.YEARS = new ChronoUnit('Years', Duration.ofSeconds(31556952));\n ChronoUnit.DECADES = new ChronoUnit('Decades', Duration.ofSeconds(31556952 * 10));\n ChronoUnit.CENTURIES = new ChronoUnit('Centuries', Duration.ofSeconds(31556952 * 100));\n ChronoUnit.MILLENNIA = new ChronoUnit('Millennia', Duration.ofSeconds(31556952 * 1000));\n ChronoUnit.ERAS = new ChronoUnit('Eras', Duration.ofSeconds(31556952 * (YearConstants.MAX_VALUE + 1)));\n ChronoUnit.FOREVER = new ChronoUnit('Forever', Duration.ofSeconds(MathUtil.MAX_SAFE_INTEGER, 999999999));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar TemporalField = function () {\n function TemporalField() {}\n\n var _proto = TemporalField.prototype;\n\n _proto.isDateBased = function isDateBased() {\n abstractMethodFail('isDateBased');\n };\n\n _proto.isTimeBased = function isTimeBased() {\n abstractMethodFail('isTimeBased');\n };\n\n _proto.baseUnit = function baseUnit() {\n abstractMethodFail('baseUnit');\n };\n\n _proto.rangeUnit = function rangeUnit() {\n abstractMethodFail('rangeUnit');\n };\n\n _proto.range = function range() {\n abstractMethodFail('range');\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n abstractMethodFail('rangeRefinedBy');\n };\n\n _proto.getFrom = function getFrom(temporal) {\n abstractMethodFail('getFrom');\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n abstractMethodFail('adjustInto');\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n abstractMethodFail('isSupportedBy');\n };\n\n _proto.displayName = function displayName() {\n abstractMethodFail('displayName');\n };\n\n _proto.equals = function equals(other) {\n abstractMethodFail('equals');\n };\n\n _proto.name = function name() {\n abstractMethodFail('name');\n };\n\n return TemporalField;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ValueRange = function () {\n function ValueRange(minSmallest, minLargest, maxSmallest, maxLargest) {\n assert(!(minSmallest > minLargest), 'Smallest minimum value \\'' + minSmallest + '\\' must be less than largest minimum value \\'' + minLargest + '\\'', IllegalArgumentException);\n assert(!(maxSmallest > maxLargest), 'Smallest maximum value \\'' + maxSmallest + '\\' must be less than largest maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n assert(!(minLargest > maxLargest), 'Minimum value \\'' + minLargest + '\\' must be less than maximum value \\'' + maxLargest + '\\'', IllegalArgumentException);\n this._minSmallest = minSmallest;\n this._minLargest = minLargest;\n this._maxLargest = maxLargest;\n this._maxSmallest = maxSmallest;\n }\n\n var _proto = ValueRange.prototype;\n\n _proto.isFixed = function isFixed() {\n return this._minSmallest === this._minLargest && this._maxSmallest === this._maxLargest;\n };\n\n _proto.minimum = function minimum() {\n return this._minSmallest;\n };\n\n _proto.largestMinimum = function largestMinimum() {\n return this._minLargest;\n };\n\n _proto.maximum = function maximum() {\n return this._maxLargest;\n };\n\n _proto.smallestMaximum = function smallestMaximum() {\n return this._maxSmallest;\n };\n\n _proto.isValidValue = function isValidValue(value) {\n return this.minimum() <= value && value <= this.maximum();\n };\n\n _proto.checkValidValue = function checkValidValue(value, field) {\n var msg;\n\n if (!this.isValidValue(value)) {\n if (field != null) {\n msg = 'Invalid value for ' + field + ' (valid values ' + this.toString() + '): ' + value;\n } else {\n msg = 'Invalid value (valid values ' + this.toString() + '): ' + value;\n }\n\n return assert(false, msg, DateTimeException);\n }\n\n return value;\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value, field) {\n if (this.isValidIntValue(value) === false) {\n throw new DateTimeException('Invalid int value for ' + field + ': ' + value);\n }\n\n return value;\n };\n\n _proto.isValidIntValue = function isValidIntValue(value) {\n return this.isIntValue() && this.isValidValue(value);\n };\n\n _proto.isIntValue = function isIntValue() {\n return this.minimum() >= MathUtil.MIN_SAFE_INTEGER && this.maximum() <= MathUtil.MAX_SAFE_INTEGER;\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ValueRange) {\n return this._minSmallest === other._minSmallest && this._minLargest === other._minLargest && this._maxSmallest === other._maxSmallest && this._maxLargest === other._maxLargest;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._minSmallest, this._minLargest, this._maxSmallest, this._maxLargest);\n };\n\n _proto.toString = function toString() {\n var str = this.minimum() + (this.minimum() !== this.largestMinimum() ? '/' + this.largestMinimum() : '');\n str += ' - ';\n str += this.smallestMaximum() + (this.smallestMaximum() !== this.maximum() ? '/' + this.maximum() : '');\n return str;\n };\n\n ValueRange.of = function of() {\n if (arguments.length === 2) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[1]);\n } else if (arguments.length === 3) {\n return new ValueRange(arguments[0], arguments[0], arguments[1], arguments[2]);\n } else if (arguments.length === 4) {\n return new ValueRange(arguments[0], arguments[1], arguments[2], arguments[3]);\n } else {\n return assert(false, 'Invalid number of arguments ' + arguments.length, IllegalArgumentException);\n }\n };\n\n return ValueRange;\n}();\n\nvar ChronoField = function (_TemporalField) {\n _inheritsLoose(ChronoField, _TemporalField);\n\n ChronoField.byName = function byName(fieldName) {\n for (var prop in ChronoField) {\n if (ChronoField[prop]) {\n if (ChronoField[prop] instanceof ChronoField && ChronoField[prop].name() === fieldName) {\n return ChronoField[prop];\n }\n }\n }\n };\n\n function ChronoField(name, baseUnit, rangeUnit, range) {\n var _this;\n\n _this = _TemporalField.call(this) || this;\n _this._name = name;\n _this._baseUnit = baseUnit;\n _this._rangeUnit = rangeUnit;\n _this._range = range;\n return _this;\n }\n\n var _proto = ChronoField.prototype;\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.baseUnit = function baseUnit() {\n return this._baseUnit;\n };\n\n _proto.rangeUnit = function rangeUnit() {\n return this._rangeUnit;\n };\n\n _proto.range = function range() {\n return this._range;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.checkValidValue = function checkValidValue(value) {\n return this.range().checkValidValue(value, this);\n };\n\n _proto.checkValidIntValue = function checkValidIntValue(value) {\n return this.range().checkValidIntValue(value, this);\n };\n\n _proto.isDateBased = function isDateBased() {\n var dateBased = this === ChronoField.DAY_OF_WEEK || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH || this === ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR || this === ChronoField.DAY_OF_MONTH || this === ChronoField.DAY_OF_YEAR || this === ChronoField.EPOCH_DAY || this === ChronoField.ALIGNED_WEEK_OF_MONTH || this === ChronoField.ALIGNED_WEEK_OF_YEAR || this === ChronoField.MONTH_OF_YEAR || this === ChronoField.YEAR_OF_ERA || this === ChronoField.YEAR || this === ChronoField.ERA;\n return dateBased;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n var timeBased = this === ChronoField.NANO_OF_SECOND || this === ChronoField.NANO_OF_DAY || this === ChronoField.MICRO_OF_SECOND || this === ChronoField.MICRO_OF_DAY || this === ChronoField.MILLI_OF_SECOND || this === ChronoField.MILLI_OF_DAY || this === ChronoField.SECOND_OF_MINUTE || this === ChronoField.SECOND_OF_DAY || this === ChronoField.MINUTE_OF_HOUR || this === ChronoField.MINUTE_OF_DAY || this === ChronoField.HOUR_OF_AMPM || this === ChronoField.CLOCK_HOUR_OF_AMPM || this === ChronoField.HOUR_OF_DAY || this === ChronoField.CLOCK_HOUR_OF_DAY || this === ChronoField.AMPM_OF_DAY;\n return timeBased;\n };\n\n _proto.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return temporal.range(this);\n };\n\n _proto.getFrom = function getFrom(temporal) {\n return temporal.getLong(this);\n };\n\n _proto.toString = function toString() {\n return this.name();\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.adjustInto = function adjustInto(temporal, newValue) {\n return temporal.with(this, newValue);\n };\n\n _proto.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(this);\n };\n\n return ChronoField;\n}(TemporalField);\nfunction _init$3() {\n ChronoField.NANO_OF_SECOND = new ChronoField('NanoOfSecond', ChronoUnit.NANOS, ChronoUnit.SECONDS, ValueRange.of(0, 999999999));\n ChronoField.NANO_OF_DAY = new ChronoField('NanoOfDay', ChronoUnit.NANOS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000000 - 1));\n ChronoField.MICRO_OF_SECOND = new ChronoField('MicroOfSecond', ChronoUnit.MICROS, ChronoUnit.SECONDS, ValueRange.of(0, 999999));\n ChronoField.MICRO_OF_DAY = new ChronoField('MicroOfDay', ChronoUnit.MICROS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000000 - 1));\n ChronoField.MILLI_OF_SECOND = new ChronoField('MilliOfSecond', ChronoUnit.MILLIS, ChronoUnit.SECONDS, ValueRange.of(0, 999));\n ChronoField.MILLI_OF_DAY = new ChronoField('MilliOfDay', ChronoUnit.MILLIS, ChronoUnit.DAYS, ValueRange.of(0, 86400 * 1000 - 1));\n ChronoField.SECOND_OF_MINUTE = new ChronoField('SecondOfMinute', ChronoUnit.SECONDS, ChronoUnit.MINUTES, ValueRange.of(0, 59));\n ChronoField.SECOND_OF_DAY = new ChronoField('SecondOfDay', ChronoUnit.SECONDS, ChronoUnit.DAYS, ValueRange.of(0, 86400 - 1));\n ChronoField.MINUTE_OF_HOUR = new ChronoField('MinuteOfHour', ChronoUnit.MINUTES, ChronoUnit.HOURS, ValueRange.of(0, 59));\n ChronoField.MINUTE_OF_DAY = new ChronoField('MinuteOfDay', ChronoUnit.MINUTES, ChronoUnit.DAYS, ValueRange.of(0, 24 * 60 - 1));\n ChronoField.HOUR_OF_AMPM = new ChronoField('HourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(0, 11));\n ChronoField.CLOCK_HOUR_OF_AMPM = new ChronoField('ClockHourOfAmPm', ChronoUnit.HOURS, ChronoUnit.HALF_DAYS, ValueRange.of(1, 12));\n ChronoField.HOUR_OF_DAY = new ChronoField('HourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(0, 23));\n ChronoField.CLOCK_HOUR_OF_DAY = new ChronoField('ClockHourOfDay', ChronoUnit.HOURS, ChronoUnit.DAYS, ValueRange.of(1, 24));\n ChronoField.AMPM_OF_DAY = new ChronoField('AmPmOfDay', ChronoUnit.HALF_DAYS, ChronoUnit.DAYS, ValueRange.of(0, 1));\n ChronoField.DAY_OF_WEEK = new ChronoField('DayOfWeek', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH = new ChronoField('AlignedDayOfWeekInMonth', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR = new ChronoField('AlignedDayOfWeekInYear', ChronoUnit.DAYS, ChronoUnit.WEEKS, ValueRange.of(1, 7));\n ChronoField.DAY_OF_MONTH = new ChronoField('DayOfMonth', ChronoUnit.DAYS, ChronoUnit.MONTHS, ValueRange.of(1, 28, 31), 'day');\n ChronoField.DAY_OF_YEAR = new ChronoField('DayOfYear', ChronoUnit.DAYS, ChronoUnit.YEARS, ValueRange.of(1, 365, 366));\n ChronoField.EPOCH_DAY = new ChronoField('EpochDay', ChronoUnit.DAYS, ChronoUnit.FOREVER, ValueRange.of(Math.floor(YearConstants.MIN_VALUE * 365.25), Math.floor(YearConstants.MAX_VALUE * 365.25)));\n ChronoField.ALIGNED_WEEK_OF_MONTH = new ChronoField('AlignedWeekOfMonth', ChronoUnit.WEEKS, ChronoUnit.MONTHS, ValueRange.of(1, 4, 5));\n ChronoField.ALIGNED_WEEK_OF_YEAR = new ChronoField('AlignedWeekOfYear', ChronoUnit.WEEKS, ChronoUnit.YEARS, ValueRange.of(1, 53));\n ChronoField.MONTH_OF_YEAR = new ChronoField('MonthOfYear', ChronoUnit.MONTHS, ChronoUnit.YEARS, ValueRange.of(1, 12), 'month');\n ChronoField.PROLEPTIC_MONTH = new ChronoField('ProlepticMonth', ChronoUnit.MONTHS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE * 12, YearConstants.MAX_VALUE * 12 + 11));\n ChronoField.YEAR_OF_ERA = new ChronoField('YearOfEra', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(1, YearConstants.MAX_VALUE, YearConstants.MAX_VALUE + 1));\n ChronoField.YEAR = new ChronoField('Year', ChronoUnit.YEARS, ChronoUnit.FOREVER, ValueRange.of(YearConstants.MIN_VALUE, YearConstants.MAX_VALUE), 'year');\n ChronoField.ERA = new ChronoField('Era', ChronoUnit.ERAS, ChronoUnit.FOREVER, ValueRange.of(0, 1));\n ChronoField.INSTANT_SECONDS = new ChronoField('InstantSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(MIN_SAFE_INTEGER, MAX_SAFE_INTEGER));\n ChronoField.OFFSET_SECONDS = new ChronoField('OffsetSeconds', ChronoUnit.SECONDS, ChronoUnit.FOREVER, ValueRange.of(-18 * 3600, 18 * 3600));\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalQueries = function () {\n function TemporalQueries() {}\n\n TemporalQueries.zoneId = function zoneId() {\n return TemporalQueries.ZONE_ID;\n };\n\n TemporalQueries.chronology = function chronology() {\n return TemporalQueries.CHRONO;\n };\n\n TemporalQueries.precision = function precision() {\n return TemporalQueries.PRECISION;\n };\n\n TemporalQueries.zone = function zone() {\n return TemporalQueries.ZONE;\n };\n\n TemporalQueries.offset = function offset() {\n return TemporalQueries.OFFSET;\n };\n\n TemporalQueries.localDate = function localDate() {\n return TemporalQueries.LOCAL_DATE;\n };\n\n TemporalQueries.localTime = function localTime() {\n return TemporalQueries.LOCAL_TIME;\n };\n\n return TemporalQueries;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAccessor = function () {\n function TemporalAccessor() {}\n\n var _proto = TemporalAccessor.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.chronology() || _query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (this.isSupported(field)) {\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n return TemporalAccessor;\n}();\n\nvar TemporalQuery = function (_Enum) {\n _inheritsLoose(TemporalQuery, _Enum);\n\n function TemporalQuery() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TemporalQuery.prototype;\n\n _proto.queryFrom = function queryFrom(temporal) {\n abstractMethodFail('queryFrom');\n };\n\n return TemporalQuery;\n}(Enum);\nfunction createTemporalQuery(name, queryFromFunction) {\n var ExtendedTemporalQuery = function (_TemporalQuery) {\n _inheritsLoose(ExtendedTemporalQuery, _TemporalQuery);\n\n function ExtendedTemporalQuery() {\n return _TemporalQuery.apply(this, arguments) || this;\n }\n\n return ExtendedTemporalQuery;\n }(TemporalQuery);\n\n ExtendedTemporalQuery.prototype.queryFrom = queryFromFunction;\n return new ExtendedTemporalQuery(name);\n}\n\nvar DayOfWeek = function (_TemporalAccessor) {\n _inheritsLoose(DayOfWeek, _TemporalAccessor);\n\n function DayOfWeek(ordinal, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._ordinal = ordinal;\n _this._name = name;\n return _this;\n }\n\n var _proto = DayOfWeek.prototype;\n\n _proto.ordinal = function ordinal() {\n return this._ordinal;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n DayOfWeek.values = function values() {\n return ENUMS.slice();\n };\n\n DayOfWeek.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < ENUMS.length; ordinal++) {\n if (ENUMS[ordinal].name() === name) {\n break;\n }\n }\n\n return DayOfWeek.of(ordinal + 1);\n };\n\n DayOfWeek.of = function of(dayOfWeek) {\n if (dayOfWeek < 1 || dayOfWeek > 7) {\n throw new DateTimeException('Invalid value for DayOfWeek: ' + dayOfWeek);\n }\n\n return ENUMS[dayOfWeek - 1];\n };\n\n DayOfWeek.from = function from(temporal) {\n assert(temporal != null, 'temporal', NullPointerException);\n\n if (temporal instanceof DayOfWeek) {\n return temporal;\n }\n\n try {\n return DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK));\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n throw new DateTimeException('Unable to obtain DayOfWeek from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''), ex);\n } else {\n throw ex;\n }\n }\n };\n\n _proto.value = function value() {\n return this._ordinal + 1;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.DAY_OF_WEEK;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.DAY_OF_WEEK) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(days) {\n var amount = MathUtil.floorMod(days, 7);\n return ENUMS[MathUtil.floorMod(this._ordinal + (amount + 7), 7)];\n };\n\n _proto.minus = function minus(days) {\n return this.plus(-1 * MathUtil.floorMod(days, 7));\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n assert(_query != null, 'query', NullPointerException);\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.DAY_OF_WEEK, this.value());\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n _proto.toString = function toString() {\n return this._name;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, DayOfWeek, 'other');\n return this._ordinal - other._ordinal;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return DayOfWeek;\n}(TemporalAccessor);\nvar ENUMS;\nfunction _init$4() {\n DayOfWeek.MONDAY = new DayOfWeek(0, 'MONDAY');\n DayOfWeek.TUESDAY = new DayOfWeek(1, 'TUESDAY');\n DayOfWeek.WEDNESDAY = new DayOfWeek(2, 'WEDNESDAY');\n DayOfWeek.THURSDAY = new DayOfWeek(3, 'THURSDAY');\n DayOfWeek.FRIDAY = new DayOfWeek(4, 'FRIDAY');\n DayOfWeek.SATURDAY = new DayOfWeek(5, 'SATURDAY');\n DayOfWeek.SUNDAY = new DayOfWeek(6, 'SUNDAY');\n DayOfWeek.FROM = createTemporalQuery('DayOfWeek.FROM', function (temporal) {\n return DayOfWeek.from(temporal);\n });\n ENUMS = [DayOfWeek.MONDAY, DayOfWeek.TUESDAY, DayOfWeek.WEDNESDAY, DayOfWeek.THURSDAY, DayOfWeek.FRIDAY, DayOfWeek.SATURDAY, DayOfWeek.SUNDAY];\n}\n\nvar Month = function (_TemporalAccessor) {\n _inheritsLoose(Month, _TemporalAccessor);\n\n function Month(value, name) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._value = MathUtil.safeToInt(value);\n _this._name = name;\n return _this;\n }\n\n var _proto = Month.prototype;\n\n _proto.value = function value() {\n return this._value;\n };\n\n _proto.ordinal = function ordinal() {\n return this._value - 1;\n };\n\n _proto.name = function name() {\n return this._name;\n };\n\n _proto.displayName = function displayName(style, locale) {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented yet!');\n };\n\n _proto.isSupported = function isSupported(field) {\n if (null === field) {\n return false;\n }\n\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n }\n\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return this.value();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.plus = function plus(months) {\n var amount = MathUtil.intMod(months, 12) + 12;\n var newMonthVal = MathUtil.intMod(this.value() + amount, 12);\n newMonthVal = newMonthVal === 0 ? 12 : newMonthVal;\n return Month.of(newMonthVal);\n };\n\n _proto.minus = function minus(months) {\n return this.plus(-1 * MathUtil.intMod(months, 12));\n };\n\n _proto.length = function length(leapYear) {\n switch (this) {\n case Month.FEBRUARY:\n return leapYear ? 29 : 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.minLength = function minLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 28;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.maxLength = function maxLength() {\n switch (this) {\n case Month.FEBRUARY:\n return 29;\n\n case Month.APRIL:\n case Month.JUNE:\n case Month.SEPTEMBER:\n case Month.NOVEMBER:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.firstDayOfYear = function firstDayOfYear(leapYear) {\n var leap = leapYear ? 1 : 0;\n\n switch (this) {\n case Month.JANUARY:\n return 1;\n\n case Month.FEBRUARY:\n return 32;\n\n case Month.MARCH:\n return 60 + leap;\n\n case Month.APRIL:\n return 91 + leap;\n\n case Month.MAY:\n return 121 + leap;\n\n case Month.JUNE:\n return 152 + leap;\n\n case Month.JULY:\n return 182 + leap;\n\n case Month.AUGUST:\n return 213 + leap;\n\n case Month.SEPTEMBER:\n return 244 + leap;\n\n case Month.OCTOBER:\n return 274 + leap;\n\n case Month.NOVEMBER:\n return 305 + leap;\n\n case Month.DECEMBER:\n default:\n return 335 + leap;\n }\n };\n\n _proto.firstMonthOfQuarter = function firstMonthOfQuarter() {\n switch (this) {\n case Month.JANUARY:\n case Month.FEBRUARY:\n case Month.MARCH:\n return Month.JANUARY;\n\n case Month.APRIL:\n case Month.MAY:\n case Month.JUNE:\n return Month.APRIL;\n\n case Month.JULY:\n case Month.AUGUST:\n case Month.SEPTEMBER:\n return Month.JULY;\n\n case Month.OCTOBER:\n case Month.NOVEMBER:\n case Month.DECEMBER:\n default:\n return Month.OCTOBER;\n }\n };\n\n _proto.query = function query(_query) {\n assert(_query != null, 'query() parameter must not be null', DateTimeException);\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case Month.JANUARY:\n return 'JANUARY';\n\n case Month.FEBRUARY:\n return 'FEBRUARY';\n\n case Month.MARCH:\n return 'MARCH';\n\n case Month.APRIL:\n return 'APRIL';\n\n case Month.MAY:\n return 'MAY';\n\n case Month.JUNE:\n return 'JUNE';\n\n case Month.JULY:\n return 'JULY';\n\n case Month.AUGUST:\n return 'AUGUST';\n\n case Month.SEPTEMBER:\n return 'SEPTEMBER';\n\n case Month.OCTOBER:\n return 'OCTOBER';\n\n case Month.NOVEMBER:\n return 'NOVEMBER';\n\n case Month.DECEMBER:\n return 'DECEMBER';\n\n default:\n return 'unknown Month, value: ' + this.value();\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.MONTH_OF_YEAR, this.value());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Month, 'other');\n return this._value - other._value;\n };\n\n _proto.equals = function equals(other) {\n return this === other;\n };\n\n Month.valueOf = function valueOf(name) {\n var ordinal = 0;\n\n for (ordinal; ordinal < MONTHS.length; ordinal++) {\n if (MONTHS[ordinal].name() === name) {\n break;\n }\n }\n\n return Month.of(ordinal + 1);\n };\n\n Month.values = function values() {\n return MONTHS.slice();\n };\n\n Month.of = function of(month) {\n if (month < 1 || month > 12) {\n assert(false, 'Invalid value for MonthOfYear: ' + month, DateTimeException);\n }\n\n return MONTHS[month - 1];\n };\n\n Month.from = function from(temporal) {\n if (temporal instanceof Month) {\n return temporal;\n }\n\n try {\n return Month.of(temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Month from TemporalAccessor: ' + temporal + ' of type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''), ex);\n }\n };\n\n return Month;\n}(TemporalAccessor);\nvar MONTHS;\nfunction _init$5() {\n Month.JANUARY = new Month(1, 'JANUARY');\n Month.FEBRUARY = new Month(2, 'FEBRUARY');\n Month.MARCH = new Month(3, 'MARCH');\n Month.APRIL = new Month(4, 'APRIL');\n Month.MAY = new Month(5, 'MAY');\n Month.JUNE = new Month(6, 'JUNE');\n Month.JULY = new Month(7, 'JULY');\n Month.AUGUST = new Month(8, 'AUGUST');\n Month.SEPTEMBER = new Month(9, 'SEPTEMBER');\n Month.OCTOBER = new Month(10, 'OCTOBER');\n Month.NOVEMBER = new Month(11, 'NOVEMBER');\n Month.DECEMBER = new Month(12, 'DECEMBER');\n MONTHS = [Month.JANUARY, Month.FEBRUARY, Month.MARCH, Month.APRIL, Month.MAY, Month.JUNE, Month.JULY, Month.AUGUST, Month.SEPTEMBER, Month.OCTOBER, Month.NOVEMBER, Month.DECEMBER];\n}\n\nvar PATTERN = /([-+]?)P(?:([-+]?[0-9]+)Y)?(?:([-+]?[0-9]+)M)?(?:([-+]?[0-9]+)W)?(?:([-+]?[0-9]+)D)?/;\nvar Period = function (_TemporalAmount) {\n _inheritsLoose(Period, _TemporalAmount);\n\n function Period(years, months, days) {\n var _this;\n\n _this = _TemporalAmount.call(this) || this;\n\n var _years = MathUtil.safeToInt(years);\n\n var _months = MathUtil.safeToInt(months);\n\n var _days = MathUtil.safeToInt(days);\n\n if (_years === 0 && _months === 0 && _days === 0) {\n if (!Period.ZERO) {\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n Period.ZERO = _assertThisInitialized(_this);\n }\n\n return Period.ZERO || _assertThisInitialized(_this);\n }\n\n _this._years = _years;\n _this._months = _months;\n _this._days = _days;\n return _this;\n }\n\n Period.ofYears = function ofYears(years) {\n return Period.create(years, 0, 0);\n };\n\n Period.ofMonths = function ofMonths(months) {\n return Period.create(0, months, 0);\n };\n\n Period.ofWeeks = function ofWeeks(weeks) {\n return Period.create(0, 0, MathUtil.safeMultiply(weeks, 7));\n };\n\n Period.ofDays = function ofDays(days) {\n return Period.create(0, 0, days);\n };\n\n Period.of = function of(years, months, days) {\n return Period.create(years, months, days);\n };\n\n Period.from = function from(amount) {\n if (amount instanceof Period) {\n return amount;\n }\n\n requireNonNull(amount, 'amount');\n var years = 0;\n var months = 0;\n var days = 0;\n var units = amount.units();\n\n for (var i = 0; i < units.length; i++) {\n var unit = units[i];\n var unitAmount = amount.get(unit);\n\n if (unit === ChronoUnit.YEARS) {\n years = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.MONTHS) {\n months = MathUtil.safeToInt(unitAmount);\n } else if (unit === ChronoUnit.DAYS) {\n days = MathUtil.safeToInt(unitAmount);\n } else {\n throw new DateTimeException('Unit must be Years, Months or Days, but was ' + unit);\n }\n }\n\n return Period.create(years, months, days);\n };\n\n Period.between = function between(startDate, endDate) {\n requireNonNull(startDate, 'startDate');\n requireNonNull(endDate, 'endDate');\n requireInstance(startDate, LocalDate, 'startDate');\n requireInstance(endDate, LocalDate, 'endDate');\n return startDate.until(endDate);\n };\n\n Period.parse = function parse(text) {\n requireNonNull(text, 'text');\n\n try {\n return Period._parse(text);\n } catch (ex) {\n if (ex instanceof ArithmeticException) {\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0, ex);\n } else {\n throw ex;\n }\n }\n };\n\n Period._parse = function _parse(text) {\n var matches = PATTERN.exec(text);\n\n if (matches != null) {\n var negate = '-' === matches[1] ? -1 : 1;\n var yearMatch = matches[2];\n var monthMatch = matches[3];\n var weekMatch = matches[4];\n var dayMatch = matches[5];\n\n if (yearMatch != null || monthMatch != null || weekMatch != null || dayMatch != null) {\n var years = Period._parseNumber(text, yearMatch, negate);\n\n var months = Period._parseNumber(text, monthMatch, negate);\n\n var weeks = Period._parseNumber(text, weekMatch, negate);\n\n var days = Period._parseNumber(text, dayMatch, negate);\n\n days = MathUtil.safeAdd(days, MathUtil.safeMultiply(weeks, 7));\n return Period.create(years, months, days);\n }\n }\n\n throw new DateTimeParseException('Text cannot be parsed to a Period', text, 0);\n };\n\n Period._parseNumber = function _parseNumber(text, str, negate) {\n if (str == null) {\n return 0;\n }\n\n var val = MathUtil.parseInt(str);\n return MathUtil.safeMultiply(val, negate);\n };\n\n Period.create = function create(years, months, days) {\n return new Period(years, months, days);\n };\n\n var _proto = Period.prototype;\n\n _proto.units = function units() {\n return [ChronoUnit.YEARS, ChronoUnit.MONTHS, ChronoUnit.DAYS];\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.get = function get(unit) {\n if (unit === ChronoUnit.YEARS) {\n return this._years;\n }\n\n if (unit === ChronoUnit.MONTHS) {\n return this._months;\n }\n\n if (unit === ChronoUnit.DAYS) {\n return this._days;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n };\n\n _proto.isZero = function isZero() {\n return this === Period.ZERO;\n };\n\n _proto.isNegative = function isNegative() {\n return this._years < 0 || this._months < 0 || this._days < 0;\n };\n\n _proto.years = function years() {\n return this._years;\n };\n\n _proto.months = function months() {\n return this._months;\n };\n\n _proto.days = function days() {\n return this._days;\n };\n\n _proto.withYears = function withYears(years) {\n if (years === this._years) {\n return this;\n }\n\n return Period.create(years, this._months, this._days);\n };\n\n _proto.withMonths = function withMonths(months) {\n if (months === this._months) {\n return this;\n }\n\n return Period.create(this._years, months, this._days);\n };\n\n _proto.withDays = function withDays(days) {\n if (days === this._days) {\n return this;\n }\n\n return Period.create(this._years, this._months, days);\n };\n\n _proto.plus = function plus(amountToAdd) {\n var amount = Period.from(amountToAdd);\n return Period.create(MathUtil.safeAdd(this._years, amount._years), MathUtil.safeAdd(this._months, amount._months), MathUtil.safeAdd(this._days, amount._days));\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(MathUtil.safeAdd(this._years, yearsToAdd)), this._months, this._days);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, MathUtil.safeToInt(MathUtil.safeAdd(this._months, monthsToAdd)), this._days);\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n return Period.create(this._years, this._months, MathUtil.safeToInt(MathUtil.safeAdd(this._days, daysToAdd)));\n };\n\n _proto.minus = function minus(amountToSubtract) {\n var amount = Period.from(amountToSubtract);\n return Period.create(MathUtil.safeSubtract(this._years, amount._years), MathUtil.safeSubtract(this._months, amount._months), MathUtil.safeSubtract(this._days, amount._days));\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(-1 * yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(-1 * monthsToSubtract);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(-1 * daysToSubtract);\n };\n\n _proto.multipliedBy = function multipliedBy(scalar) {\n if (this === Period.ZERO || scalar === 1) {\n return this;\n }\n\n return Period.create(MathUtil.safeMultiply(this._years, scalar), MathUtil.safeMultiply(this._months, scalar), MathUtil.safeMultiply(this._days, scalar));\n };\n\n _proto.negated = function negated() {\n return this.multipliedBy(-1);\n };\n\n _proto.normalized = function normalized() {\n var totalMonths = this.toTotalMonths();\n var splitYears = MathUtil.intDiv(totalMonths, 12);\n var splitMonths = MathUtil.intMod(totalMonths, 12);\n\n if (splitYears === this._years && splitMonths === this._months) {\n return this;\n }\n\n return Period.create(MathUtil.safeToInt(splitYears), splitMonths, this._days);\n };\n\n _proto.toTotalMonths = function toTotalMonths() {\n return this._years * 12 + this._months;\n };\n\n _proto.addTo = function addTo(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.plus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.plus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.plus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.plus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.subtractFrom = function subtractFrom(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (this._years !== 0) {\n if (this._months !== 0) {\n temporal = temporal.minus(this.toTotalMonths(), ChronoUnit.MONTHS);\n } else {\n temporal = temporal.minus(this._years, ChronoUnit.YEARS);\n }\n } else if (this._months !== 0) {\n temporal = temporal.minus(this._months, ChronoUnit.MONTHS);\n }\n\n if (this._days !== 0) {\n temporal = temporal.minus(this._days, ChronoUnit.DAYS);\n }\n\n return temporal;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof Period) {\n var other = obj;\n return this._years === other._years && this._months === other._months && this._days === other._days;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._years, this._months, this._days);\n };\n\n _proto.toString = function toString() {\n if (this === Period.ZERO) {\n return 'P0D';\n } else {\n var buf = 'P';\n\n if (this._years !== 0) {\n buf += '' + this._years + 'Y';\n }\n\n if (this._months !== 0) {\n buf += '' + this._months + 'M';\n }\n\n if (this._days !== 0) {\n buf += '' + this._days + 'D';\n }\n\n return buf;\n }\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Period;\n}(TemporalAmount);\nfunction _init$6() {\n Period.ofDays(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ParsePosition = function () {\n function ParsePosition(index) {\n this._index = index;\n this._errorIndex = -1;\n }\n\n var _proto = ParsePosition.prototype;\n\n _proto.getIndex = function getIndex() {\n return this._index;\n };\n\n _proto.setIndex = function setIndex(index) {\n this._index = index;\n };\n\n _proto.getErrorIndex = function getErrorIndex() {\n return this._errorIndex;\n };\n\n _proto.setErrorIndex = function setErrorIndex(errorIndex) {\n this._errorIndex = errorIndex;\n };\n\n return ParsePosition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar EnumMap = function () {\n function EnumMap() {\n this._map = {};\n }\n\n var _proto = EnumMap.prototype;\n\n _proto.putAll = function putAll(otherMap) {\n for (var key in otherMap._map) {\n this._map[key] = otherMap._map[key];\n }\n\n return this;\n };\n\n _proto.containsKey = function containsKey(key) {\n return this._map.hasOwnProperty(key.name()) && this.get(key) !== undefined;\n };\n\n _proto.get = function get(key) {\n return this._map[key.name()];\n };\n\n _proto.put = function put(key, val) {\n return this.set(key, val);\n };\n\n _proto.set = function set(key, val) {\n this._map[key.name()] = val;\n return this;\n };\n\n _proto.retainAll = function retainAll(keyList) {\n var map = {};\n\n for (var i = 0; i < keyList.length; i++) {\n var key = keyList[i].name();\n map[key] = this._map[key];\n }\n\n this._map = map;\n return this;\n };\n\n _proto.remove = function remove(key) {\n var keyName = key.name();\n var val = this._map[keyName];\n this._map[keyName] = undefined;\n return val;\n };\n\n _proto.keySet = function keySet() {\n return this._map;\n };\n\n _proto.clear = function clear() {\n this._map = {};\n };\n\n return EnumMap;\n}();\n\nvar ResolverStyle = function (_Enum) {\n _inheritsLoose(ResolverStyle, _Enum);\n\n function ResolverStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n return ResolverStyle;\n}(Enum);\nResolverStyle.STRICT = new ResolverStyle('STRICT');\nResolverStyle.SMART = new ResolverStyle('SMART');\nResolverStyle.LENIENT = new ResolverStyle('LENIENT');\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar TemporalAdjuster = function () {\n function TemporalAdjuster() {}\n\n var _proto = TemporalAdjuster.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n abstractMethodFail('adjustInto');\n };\n\n return TemporalAdjuster;\n}();\n\nvar Temporal = function (_TemporalAccessor) {\n _inheritsLoose(Temporal, _TemporalAccessor);\n\n function Temporal() {\n return _TemporalAccessor.apply(this, arguments) || this;\n }\n\n var _proto = Temporal.prototype;\n\n _proto.isSupported = function isSupported(unit) {\n abstractMethodFail('isSupported');\n };\n\n _proto.minus = function minus(p1, p2) {\n if (arguments.length < 2) {\n return this.minusAmount(p1);\n } else {\n return this.minusAmountUnit(p1, p2);\n }\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n abstractMethodFail('minusAmount');\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n abstractMethodFail('minusAmountUnit');\n };\n\n _proto.plus = function plus(p1, p2) {\n if (arguments.length < 2) {\n return this.plusAmount(p1);\n } else {\n return this.plusAmountUnit(p1, p2);\n }\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n abstractMethodFail('plusAmount');\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n abstractMethodFail('plusAmountUnit');\n };\n\n _proto.until = function until(endTemporal, unit) {\n abstractMethodFail('until');\n };\n\n _proto.with = function _with(p1, p2) {\n if (arguments.length < 2) {\n return this.withAdjuster(p1);\n } else {\n return this.withFieldValue(p1, p2);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n abstractMethodFail('withAdjuster');\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n abstractMethodFail('withFieldValue');\n };\n\n return Temporal;\n}(TemporalAccessor);\n\nvar DefaultInterfaceTemporal = function (_Temporal) {\n _inheritsLoose(DefaultInterfaceTemporal, _Temporal);\n\n function DefaultInterfaceTemporal() {\n return _Temporal.apply(this, arguments) || this;\n }\n\n var _proto = DefaultInterfaceTemporal.prototype;\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n requireInstance(adjuster, TemporalAdjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MIN_SAFE_INTEGER ? this.plusAmountUnit(MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmount(-amountToSubtract, unit);\n };\n\n return DefaultInterfaceTemporal;\n}(Temporal);\n\nvar ChronoLocalDate = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDate, _DefaultInterfaceTemp);\n\n function ChronoLocalDate() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDate.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.DAYS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toEpochDay());\n } else if (_query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toEpochDay());\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return ChronoLocalDate;\n}(DefaultInterfaceTemporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringUtil = function () {\n function StringUtil() {}\n\n StringUtil.startsWith = function startsWith(text, pattern) {\n return text.indexOf(pattern) === 0;\n };\n\n StringUtil.hashCode = function hashCode(text) {\n var len = text.length;\n\n if (len === 0) {\n return 0;\n }\n\n var hash = 0;\n\n for (var i = 0; i < len; i++) {\n var chr = text.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0;\n }\n\n return MathUtil.smi(hash);\n };\n\n return StringUtil;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneId = function () {\n function ZoneId() {}\n\n ZoneId.systemDefault = function systemDefault() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.getAvailableZoneIds = function getAvailableZoneIds() {\n throw new DateTimeException('not supported operation');\n };\n\n ZoneId.of = function of(zoneId) {\n throw new DateTimeException('not supported operation' + zoneId);\n };\n\n ZoneId.ofOffset = function ofOffset(prefix, offset) {\n throw new DateTimeException('not supported operation' + prefix + offset);\n };\n\n ZoneId.from = function from(temporal) {\n throw new DateTimeException('not supported operation' + temporal);\n };\n\n var _proto = ZoneId.prototype;\n\n _proto.id = function id() {\n abstractMethodFail('ZoneId.id');\n };\n\n _proto.rules = function rules() {\n abstractMethodFail('ZoneId.rules');\n };\n\n _proto.normalized = function normalized() {\n var rules = this.rules();\n\n if (rules.isFixedOffset()) {\n return rules.offset(Instant.EPOCH);\n }\n\n return this;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZoneId) {\n return this.id() === other.id();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return StringUtil.hashCode(this.id());\n };\n\n _proto.toString = function toString() {\n return this.id();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneId;\n}();\n\nvar ZoneRules = function () {\n function ZoneRules() {}\n\n ZoneRules.of = function of(offset) {\n requireNonNull(offset, 'offset');\n return new Fixed(offset);\n };\n\n var _proto = ZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n abstractMethodFail('ZoneRules.isFixedOffset');\n };\n\n _proto.offset = function offset(instantOrLocalDateTime) {\n if (instantOrLocalDateTime instanceof Instant) {\n return this.offsetOfInstant(instantOrLocalDateTime);\n } else {\n return this.offsetOfLocalDateTime(instantOrLocalDateTime);\n }\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n abstractMethodFail('ZoneRules.offsetInstant');\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n abstractMethodFail('ZoneRules.offsetOfEpochMilli');\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n abstractMethodFail('ZoneRules.offsetLocalDateTime');\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n abstractMethodFail('ZoneRules.validOffsets');\n };\n\n _proto.transition = function transition(localDateTime) {\n abstractMethodFail('ZoneRules.transition');\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n abstractMethodFail('ZoneRules.standardOffset');\n };\n\n _proto.daylightSavings = function daylightSavings(instant) {\n abstractMethodFail('ZoneRules.daylightSavings');\n };\n\n _proto.isDaylightSavings = function isDaylightSavings(instant) {\n abstractMethodFail('ZoneRules.isDaylightSavings');\n };\n\n _proto.isValidOffset = function isValidOffset(localDateTime, offset) {\n abstractMethodFail('ZoneRules.isValidOffset');\n };\n\n _proto.nextTransition = function nextTransition(instant) {\n abstractMethodFail('ZoneRules.nextTransition');\n };\n\n _proto.previousTransition = function previousTransition(instant) {\n abstractMethodFail('ZoneRules.previousTransition');\n };\n\n _proto.transitions = function transitions() {\n abstractMethodFail('ZoneRules.transitions');\n };\n\n _proto.transitionRules = function transitionRules() {\n abstractMethodFail('ZoneRules.transitionRules');\n };\n\n _proto.toString = function toString() {\n abstractMethodFail('ZoneRules.toString');\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return ZoneRules;\n}();\n\nvar Fixed = function (_ZoneRules) {\n _inheritsLoose(Fixed, _ZoneRules);\n\n function Fixed(offset) {\n var _this;\n\n _this = _ZoneRules.call(this) || this;\n _this._offset = offset;\n return _this;\n }\n\n var _proto2 = Fixed.prototype;\n\n _proto2.isFixedOffset = function isFixedOffset() {\n return true;\n };\n\n _proto2.offsetOfInstant = function offsetOfInstant() {\n return this._offset;\n };\n\n _proto2.offsetOfEpochMilli = function offsetOfEpochMilli() {\n return this._offset;\n };\n\n _proto2.offsetOfLocalDateTime = function offsetOfLocalDateTime() {\n return this._offset;\n };\n\n _proto2.validOffsets = function validOffsets() {\n return [this._offset];\n };\n\n _proto2.transition = function transition() {\n return null;\n };\n\n _proto2.standardOffset = function standardOffset() {\n return this._offset;\n };\n\n _proto2.daylightSavings = function daylightSavings() {\n return Duration.ZERO;\n };\n\n _proto2.isDaylightSavings = function isDaylightSavings() {\n return false;\n };\n\n _proto2.isValidOffset = function isValidOffset(localDateTime, offset) {\n return this._offset.equals(offset);\n };\n\n _proto2.nextTransition = function nextTransition() {\n return null;\n };\n\n _proto2.previousTransition = function previousTransition() {\n return null;\n };\n\n _proto2.transitions = function transitions() {\n return [];\n };\n\n _proto2.transitionRules = function transitionRules() {\n return [];\n };\n\n _proto2.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Fixed) {\n return this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto2.toString = function toString() {\n return 'FixedRules:' + this._offset.toString();\n };\n\n return Fixed;\n}(ZoneRules);\n\nvar SECONDS_CACHE = {};\nvar ID_CACHE = {};\nvar ZoneOffset = function (_ZoneId) {\n _inheritsLoose(ZoneOffset, _ZoneId);\n\n function ZoneOffset(totalSeconds) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n\n ZoneOffset._validateTotalSeconds(totalSeconds);\n\n _this._totalSeconds = MathUtil.safeToInt(totalSeconds);\n _this._rules = ZoneRules.of(_assertThisInitialized(_this));\n _this._id = ZoneOffset._buildId(totalSeconds);\n return _this;\n }\n\n var _proto = ZoneOffset.prototype;\n\n _proto.totalSeconds = function totalSeconds() {\n return this._totalSeconds;\n };\n\n _proto.id = function id() {\n return this._id;\n };\n\n ZoneOffset._buildId = function _buildId(totalSeconds) {\n if (totalSeconds === 0) {\n return 'Z';\n } else {\n var absTotalSeconds = Math.abs(totalSeconds);\n var absHours = MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_HOUR);\n var absMinutes = MathUtil.intMod(MathUtil.intDiv(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var buf = '' + (totalSeconds < 0 ? '-' : '+') + (absHours < 10 ? '0' : '') + absHours + (absMinutes < 10 ? ':0' : ':') + absMinutes;\n var absSeconds = MathUtil.intMod(absTotalSeconds, LocalTime.SECONDS_PER_MINUTE);\n\n if (absSeconds !== 0) {\n buf += (absSeconds < 10 ? ':0' : ':') + absSeconds;\n }\n\n return buf;\n }\n };\n\n ZoneOffset._validateTotalSeconds = function _validateTotalSeconds(totalSeconds) {\n if (Math.abs(totalSeconds) > ZoneOffset.MAX_SECONDS) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset._validate = function _validate(hours, minutes, seconds) {\n if (hours < -18 || hours > 18) {\n throw new DateTimeException('Zone offset hours not in valid range: value ' + hours + ' is not in the range -18 to 18');\n }\n\n if (hours > 0) {\n if (minutes < 0 || seconds < 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be positive because hours is positive');\n }\n } else if (hours < 0) {\n if (minutes > 0 || seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must be negative because hours is negative');\n }\n } else if (minutes > 0 && seconds < 0 || minutes < 0 && seconds > 0) {\n throw new DateTimeException('Zone offset minutes and seconds must have the same sign');\n }\n\n if (Math.abs(minutes) > 59) {\n throw new DateTimeException('Zone offset minutes not in valid range: abs(value) ' + Math.abs(minutes) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(seconds) > 59) {\n throw new DateTimeException('Zone offset seconds not in valid range: abs(value) ' + Math.abs(seconds) + ' is not in the range 0 to 59');\n }\n\n if (Math.abs(hours) === 18 && (Math.abs(minutes) > 0 || Math.abs(seconds) > 0)) {\n throw new DateTimeException('Zone offset not in valid range: -18:00 to +18:00');\n }\n };\n\n ZoneOffset.of = function of(offsetId) {\n requireNonNull(offsetId, 'offsetId');\n var offset = ID_CACHE[offsetId];\n\n if (offset != null) {\n return offset;\n }\n\n var hours, minutes, seconds;\n\n switch (offsetId.length) {\n case 2:\n offsetId = offsetId[0] + '0' + offsetId[1];\n\n case 3:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = 0;\n seconds = 0;\n break;\n\n case 5:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = 0;\n break;\n\n case 6:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = 0;\n break;\n\n case 7:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 3, false);\n seconds = ZoneOffset._parseNumber(offsetId, 5, false);\n break;\n\n case 9:\n hours = ZoneOffset._parseNumber(offsetId, 1, false);\n minutes = ZoneOffset._parseNumber(offsetId, 4, true);\n seconds = ZoneOffset._parseNumber(offsetId, 7, true);\n break;\n\n default:\n throw new DateTimeException('Invalid ID for ZoneOffset, invalid format: ' + offsetId);\n }\n\n var first = offsetId[0];\n\n if (first !== '+' && first !== '-') {\n throw new DateTimeException('Invalid ID for ZoneOffset, plus/minus not found when expected: ' + offsetId);\n }\n\n if (first === '-') {\n return ZoneOffset.ofHoursMinutesSeconds(-hours, -minutes, -seconds);\n } else {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, seconds);\n }\n };\n\n ZoneOffset._parseNumber = function _parseNumber(offsetId, pos, precededByColon) {\n if (precededByColon && offsetId[pos - 1] !== ':') {\n throw new DateTimeException('Invalid ID for ZoneOffset, colon not found when expected: ' + offsetId);\n }\n\n var ch1 = offsetId[pos];\n var ch2 = offsetId[pos + 1];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n throw new DateTimeException('Invalid ID for ZoneOffset, non numeric characters found: ' + offsetId);\n }\n\n return (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n };\n\n ZoneOffset.ofHours = function ofHours(hours) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, 0, 0);\n };\n\n ZoneOffset.ofHoursMinutes = function ofHoursMinutes(hours, minutes) {\n return ZoneOffset.ofHoursMinutesSeconds(hours, minutes, 0);\n };\n\n ZoneOffset.ofHoursMinutesSeconds = function ofHoursMinutesSeconds(hours, minutes, seconds) {\n ZoneOffset._validate(hours, minutes, seconds);\n\n var totalSeconds = hours * LocalTime.SECONDS_PER_HOUR + minutes * LocalTime.SECONDS_PER_MINUTE + seconds;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalMinutes = function ofTotalMinutes(totalMinutes) {\n var totalSeconds = totalMinutes * LocalTime.SECONDS_PER_MINUTE;\n return ZoneOffset.ofTotalSeconds(totalSeconds);\n };\n\n ZoneOffset.ofTotalSeconds = function ofTotalSeconds(totalSeconds) {\n if (totalSeconds % (15 * LocalTime.SECONDS_PER_MINUTE) === 0) {\n var totalSecs = totalSeconds;\n var result = SECONDS_CACHE[totalSecs];\n\n if (result == null) {\n result = new ZoneOffset(totalSeconds);\n SECONDS_CACHE[totalSecs] = result;\n ID_CACHE[result.id()] = result;\n }\n\n return result;\n } else {\n return new ZoneOffset(totalSeconds);\n }\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._totalSeconds;\n } else if (field instanceof ChronoField) {\n throw new DateTimeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.precision() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.OFFSET_SECONDS, this._totalSeconds);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n return other._totalSeconds - this._totalSeconds;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof ZoneOffset) {\n return this._totalSeconds === obj._totalSeconds;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._totalSeconds;\n };\n\n _proto.toString = function toString() {\n return this._id;\n };\n\n return ZoneOffset;\n}(ZoneId);\nfunction _init$7() {\n ZoneOffset.MAX_SECONDS = 18 * LocalTime.SECONDS_PER_HOUR;\n ZoneOffset.UTC = ZoneOffset.ofTotalSeconds(0);\n ZoneOffset.MIN = ZoneOffset.ofTotalSeconds(-ZoneOffset.MAX_SECONDS);\n ZoneOffset.MAX = ZoneOffset.ofTotalSeconds(ZoneOffset.MAX_SECONDS);\n}\n\nvar DateTimeBuilder = function (_TemporalAccessor) {\n _inheritsLoose(DateTimeBuilder, _TemporalAccessor);\n\n DateTimeBuilder.create = function create(field, value) {\n var dtb = new DateTimeBuilder();\n\n dtb._addFieldValue(field, value);\n\n return dtb;\n };\n\n function DateTimeBuilder() {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this.fieldValues = new EnumMap();\n _this.chrono = null;\n _this.zone = null;\n _this.date = null;\n _this.time = null;\n _this.leapSecond = false;\n _this.excessDays = null;\n return _this;\n }\n\n var _proto = DateTimeBuilder.prototype;\n\n _proto.getFieldValue0 = function getFieldValue0(field) {\n return this.fieldValues.get(field);\n };\n\n _proto._addFieldValue = function _addFieldValue(field, value) {\n requireNonNull(field, 'field');\n var old = this.getFieldValue0(field);\n\n if (old != null && old !== value) {\n throw new DateTimeException('Conflict found: ' + field + ' ' + old + ' differs from ' + field + ' ' + value + ': ' + this);\n }\n\n return this._putFieldValue0(field, value);\n };\n\n _proto._putFieldValue0 = function _putFieldValue0(field, value) {\n this.fieldValues.put(field, value);\n return this;\n };\n\n _proto.resolve = function resolve(resolverStyle, resolverFields) {\n if (resolverFields != null) {\n this.fieldValues.retainAll(resolverFields);\n }\n\n this._mergeDate(resolverStyle);\n\n this._mergeTime(resolverStyle);\n\n this._resolveTimeInferZeroes(resolverStyle);\n\n if (this.excessDays != null && this.excessDays.isZero() === false && this.date != null && this.time != null) {\n this.date = this.date.plus(this.excessDays);\n this.excessDays = Period.ZERO;\n }\n\n this._resolveInstant();\n\n return this;\n };\n\n _proto._mergeDate = function _mergeDate(resolverStyle) {\n this._checkDate(IsoChronology.INSTANCE.resolveDate(this.fieldValues, resolverStyle));\n };\n\n _proto._checkDate = function _checkDate(date) {\n if (date != null) {\n this._addObject(date);\n\n for (var fieldName in this.fieldValues.keySet()) {\n var field = ChronoField.byName(fieldName);\n\n if (field) {\n if (this.fieldValues.get(field) !== undefined) {\n if (field.isDateBased()) {\n var val1 = void 0;\n\n try {\n val1 = date.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException) {\n continue;\n } else {\n throw ex;\n }\n }\n\n var val2 = this.fieldValues.get(field);\n\n if (val1 !== val2) {\n throw new DateTimeException('Conflict found: Field ' + field + ' ' + val1 + ' differs from ' + field + ' ' + val2 + ' derived from ' + date);\n }\n }\n }\n }\n }\n }\n };\n\n _proto._mergeTime = function _mergeTime(resolverStyle) {\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_DAY)) {\n var ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_DAY.checkValidValue(ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ch === 24 ? 0 : ch);\n }\n\n if (this.fieldValues.containsKey(ChronoField.CLOCK_HOUR_OF_AMPM)) {\n var _ch = this.fieldValues.remove(ChronoField.CLOCK_HOUR_OF_AMPM);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (resolverStyle === ResolverStyle.SMART && _ch === 0) ; else {\n ChronoField.CLOCK_HOUR_OF_AMPM.checkValidValue(_ch);\n }\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_AMPM, _ch === 12 ? 0 : _ch);\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY)) {\n ChronoField.AMPM_OF_DAY.checkValidValue(this.fieldValues.get(ChronoField.AMPM_OF_DAY));\n }\n\n if (this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n ChronoField.HOUR_OF_AMPM.checkValidValue(this.fieldValues.get(ChronoField.HOUR_OF_AMPM));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.AMPM_OF_DAY) && this.fieldValues.containsKey(ChronoField.HOUR_OF_AMPM)) {\n var ap = this.fieldValues.remove(ChronoField.AMPM_OF_DAY);\n var hap = this.fieldValues.remove(ChronoField.HOUR_OF_AMPM);\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, ap * 12 + hap);\n }\n\n if (this.fieldValues.containsKey(ChronoField.NANO_OF_DAY)) {\n var nod = this.fieldValues.remove(ChronoField.NANO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.NANO_OF_DAY.checkValidValue(nod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(nod, 1000000000));\n\n this._addFieldValue(ChronoField.NANO_OF_SECOND, MathUtil.intMod(nod, 1000000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_DAY)) {\n var cod = this.fieldValues.remove(ChronoField.MICRO_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MICRO_OF_DAY.checkValidValue(cod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(cod, 1000000));\n\n this._addFieldValue(ChronoField.MICRO_OF_SECOND, MathUtil.intMod(cod, 1000000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_DAY)) {\n var lod = this.fieldValues.remove(ChronoField.MILLI_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MILLI_OF_DAY.checkValidValue(lod);\n }\n\n this._addFieldValue(ChronoField.SECOND_OF_DAY, MathUtil.intDiv(lod, 1000));\n\n this._addFieldValue(ChronoField.MILLI_OF_SECOND, MathUtil.intMod(lod, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.SECOND_OF_DAY)) {\n var sod = this.fieldValues.remove(ChronoField.SECOND_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.SECOND_OF_DAY.checkValidValue(sod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(sod, 3600));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(MathUtil.intDiv(sod, 60), 60));\n\n this._addFieldValue(ChronoField.SECOND_OF_MINUTE, MathUtil.intMod(sod, 60));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MINUTE_OF_DAY)) {\n var mod = this.fieldValues.remove(ChronoField.MINUTE_OF_DAY);\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.MINUTE_OF_DAY.checkValidValue(mod);\n }\n\n this._addFieldValue(ChronoField.HOUR_OF_DAY, MathUtil.intDiv(mod, 60));\n\n this._addFieldValue(ChronoField.MINUTE_OF_HOUR, MathUtil.intMod(mod, 60));\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n ChronoField.MILLI_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MILLI_OF_SECOND));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n ChronoField.MICRO_OF_SECOND.checkValidValue(this.fieldValues.get(ChronoField.MICRO_OF_SECOND));\n }\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n var cos = this.fieldValues.get(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, los * 1000 + MathUtil.intMod(cos, 1000));\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MICRO_OF_SECOND, MathUtil.intDiv(nos, 1000));\n\n this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND) && this.fieldValues.containsKey(ChronoField.NANO_OF_SECOND)) {\n var _nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.MILLI_OF_SECOND, MathUtil.intDiv(_nos, 1000000));\n\n this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n }\n\n if (this.fieldValues.containsKey(ChronoField.MICRO_OF_SECOND)) {\n var _cos = this.fieldValues.remove(ChronoField.MICRO_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _cos * 1000);\n } else if (this.fieldValues.containsKey(ChronoField.MILLI_OF_SECOND)) {\n var _los = this.fieldValues.remove(ChronoField.MILLI_OF_SECOND);\n\n this._putFieldValue0(ChronoField.NANO_OF_SECOND, _los * 1000000);\n }\n };\n\n _proto._resolveTimeInferZeroes = function _resolveTimeInferZeroes(resolverStyle) {\n var hod = this.fieldValues.get(ChronoField.HOUR_OF_DAY);\n var moh = this.fieldValues.get(ChronoField.MINUTE_OF_HOUR);\n var som = this.fieldValues.get(ChronoField.SECOND_OF_MINUTE);\n var nos = this.fieldValues.get(ChronoField.NANO_OF_SECOND);\n\n if (hod == null) {\n return;\n }\n\n if (moh == null && (som != null || nos != null)) {\n return;\n }\n\n if (moh != null && som == null && nos != null) {\n return;\n }\n\n if (resolverStyle !== ResolverStyle.LENIENT) {\n if (hod != null) {\n if (resolverStyle === ResolverStyle.SMART && hod === 24 && (moh == null || moh === 0) && (som == null || som === 0) && (nos == null || nos === 0)) {\n hod = 0;\n this.excessDays = Period.ofDays(1);\n }\n\n var hodVal = ChronoField.HOUR_OF_DAY.checkValidIntValue(hod);\n\n if (moh != null) {\n var mohVal = ChronoField.MINUTE_OF_HOUR.checkValidIntValue(moh);\n\n if (som != null) {\n var somVal = ChronoField.SECOND_OF_MINUTE.checkValidIntValue(som);\n\n if (nos != null) {\n var nosVal = ChronoField.NANO_OF_SECOND.checkValidIntValue(nos);\n\n this._addObject(LocalTime.of(hodVal, mohVal, somVal, nosVal));\n } else {\n this._addObject(LocalTime.of(hodVal, mohVal, somVal));\n }\n } else {\n if (nos == null) {\n this._addObject(LocalTime.of(hodVal, mohVal));\n }\n }\n } else {\n if (som == null && nos == null) {\n this._addObject(LocalTime.of(hodVal, 0));\n }\n }\n }\n } else {\n if (hod != null) {\n var _hodVal = hod;\n\n if (moh != null) {\n if (som != null) {\n if (nos == null) {\n nos = 0;\n }\n\n var totalNanos = MathUtil.safeMultiply(_hodVal, 3600000000000);\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(moh, 60000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, MathUtil.safeMultiply(som, 1000000000));\n totalNanos = MathUtil.safeAdd(totalNanos, nos);\n var excessDays = MathUtil.floorDiv(totalNanos, 86400000000000);\n var nod = MathUtil.floorMod(totalNanos, 86400000000000);\n\n this._addObject(LocalTime.ofNanoOfDay(nod));\n\n this.excessDays = Period.ofDays(excessDays);\n } else {\n var totalSecs = MathUtil.safeMultiply(_hodVal, 3600);\n totalSecs = MathUtil.safeAdd(totalSecs, MathUtil.safeMultiply(moh, 60));\n\n var _excessDays = MathUtil.floorDiv(totalSecs, 86400);\n\n var sod = MathUtil.floorMod(totalSecs, 86400);\n\n this._addObject(LocalTime.ofSecondOfDay(sod));\n\n this.excessDays = Period.ofDays(_excessDays);\n }\n } else {\n var _excessDays2 = MathUtil.safeToInt(MathUtil.floorDiv(_hodVal, 24));\n\n _hodVal = MathUtil.floorMod(_hodVal, 24);\n\n this._addObject(LocalTime.of(_hodVal, 0));\n\n this.excessDays = Period.ofDays(_excessDays2);\n }\n }\n }\n\n this.fieldValues.remove(ChronoField.HOUR_OF_DAY);\n this.fieldValues.remove(ChronoField.MINUTE_OF_HOUR);\n this.fieldValues.remove(ChronoField.SECOND_OF_MINUTE);\n this.fieldValues.remove(ChronoField.NANO_OF_SECOND);\n };\n\n _proto._addObject = function _addObject(dateOrTime) {\n if (dateOrTime instanceof ChronoLocalDate) {\n this.date = dateOrTime;\n } else if (dateOrTime instanceof LocalTime) {\n this.time = dateOrTime;\n }\n };\n\n _proto._resolveInstant = function _resolveInstant() {\n if (this.date != null && this.time != null) {\n var offsetSecs = this.fieldValues.get(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs != null) {\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n var instant = this.date.atTime(this.time).atZone(offset).getLong(ChronoField.INSTANT_SECONDS);\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, instant);\n } else if (this.zone != null) {\n var _instant = this.date.atTime(this.time).atZone(this.zone).getLong(ChronoField.INSTANT_SECONDS);\n\n this.fieldValues.put(ChronoField.INSTANT_SECONDS, _instant);\n }\n }\n };\n\n _proto.build = function build(type) {\n return type.queryFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field == null) {\n return false;\n }\n\n return this.fieldValues.containsKey(field) && this.fieldValues.get(field) !== undefined || this.date != null && this.date.isSupported(field) || this.time != null && this.time.isSupported(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n var value = this.getFieldValue0(field);\n\n if (value == null) {\n if (this.date != null && this.date.isSupported(field)) {\n return this.date.getLong(field);\n }\n\n if (this.time != null && this.time.isSupported(field)) {\n return this.time.getLong(field);\n }\n\n throw new DateTimeException('Field not found: ' + field);\n }\n\n return value;\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId()) {\n return this.zone;\n } else if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n } else if (_query === TemporalQueries.localDate()) {\n return this.date != null ? LocalDate.from(this.date) : null;\n } else if (_query === TemporalQueries.localTime()) {\n return this.time;\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return _query.queryFrom(this);\n } else if (_query === TemporalQueries.precision()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n return DateTimeBuilder;\n}(TemporalAccessor);\n\nvar DateTimeParseContext = function () {\n function DateTimeParseContext() {\n if (arguments.length === 1) {\n if (arguments[0] instanceof DateTimeParseContext) {\n this._constructorSelf.apply(this, arguments);\n\n return;\n } else {\n this._constructorFormatter.apply(this, arguments);\n }\n } else {\n this._constructorParam.apply(this, arguments);\n }\n\n this._caseSensitive = true;\n this._strict = true;\n this._parsed = [new Parsed(this)];\n }\n\n var _proto = DateTimeParseContext.prototype;\n\n _proto._constructorParam = function _constructorParam(locale, symbols, chronology) {\n this._locale = locale;\n this._symbols = symbols;\n this._overrideChronology = chronology;\n };\n\n _proto._constructorFormatter = function _constructorFormatter(formatter) {\n this._locale = formatter.locale();\n this._symbols = formatter.decimalStyle();\n this._overrideChronology = formatter.chronology();\n };\n\n _proto._constructorSelf = function _constructorSelf(other) {\n this._locale = other._locale;\n this._symbols = other._symbols;\n this._overrideChronology = other._overrideChronology;\n this._overrideZone = other._overrideZone;\n this._caseSensitive = other._caseSensitive;\n this._strict = other._strict;\n this._parsed = [new Parsed(this)];\n };\n\n _proto.copy = function copy() {\n return new DateTimeParseContext(this);\n };\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.isStrict = function isStrict() {\n return this._strict;\n };\n\n _proto.setStrict = function setStrict(strict) {\n this._strict = strict;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n _proto.startOptional = function startOptional() {\n this._parsed.push(this.currentParsed().copy());\n };\n\n _proto.endOptional = function endOptional(successful) {\n if (successful) {\n this._parsed.splice(this._parsed.length - 2, 1);\n } else {\n this._parsed.splice(this._parsed.length - 1, 1);\n }\n };\n\n _proto.isCaseSensitive = function isCaseSensitive() {\n return this._caseSensitive;\n };\n\n _proto.setCaseSensitive = function setCaseSensitive(caseSensitive) {\n this._caseSensitive = caseSensitive;\n };\n\n _proto.subSequenceEquals = function subSequenceEquals(cs1, offset1, cs2, offset2, length) {\n if (offset1 + length > cs1.length || offset2 + length > cs2.length) {\n return false;\n }\n\n if (!this.isCaseSensitive()) {\n cs1 = cs1.toLowerCase();\n cs2 = cs2.toLowerCase();\n }\n\n for (var i = 0; i < length; i++) {\n var ch1 = cs1[offset1 + i];\n var ch2 = cs2[offset2 + i];\n\n if (ch1 !== ch2) {\n return false;\n }\n }\n\n return true;\n };\n\n _proto.charEquals = function charEquals(ch1, ch2) {\n if (this.isCaseSensitive()) {\n return ch1 === ch2;\n }\n\n return this.charEqualsIgnoreCase(ch1, ch2);\n };\n\n _proto.charEqualsIgnoreCase = function charEqualsIgnoreCase(c1, c2) {\n return c1 === c2 || c1.toLowerCase() === c2.toLowerCase();\n };\n\n _proto.setParsedField = function setParsedField(field, value, errorPos, successPos) {\n var currentParsedFieldValues = this.currentParsed().fieldValues;\n var old = currentParsedFieldValues.get(field);\n currentParsedFieldValues.set(field, value);\n return old != null && old !== value ? ~errorPos : successPos;\n };\n\n _proto.setParsedZone = function setParsedZone(zone) {\n requireNonNull(zone, 'zone');\n this.currentParsed().zone = zone;\n };\n\n _proto.getParsed = function getParsed(field) {\n return this.currentParsed().fieldValues.get(field);\n };\n\n _proto.toParsed = function toParsed() {\n return this.currentParsed();\n };\n\n _proto.currentParsed = function currentParsed() {\n return this._parsed[this._parsed.length - 1];\n };\n\n _proto.setParsedLeapSecond = function setParsedLeapSecond() {\n this.currentParsed().leapSecond = true;\n };\n\n _proto.getEffectiveChronology = function getEffectiveChronology() {\n var chrono = this.currentParsed().chrono;\n\n if (chrono == null) {\n chrono = this._overrideChronology;\n\n if (chrono == null) {\n chrono = IsoChronology.INSTANCE;\n }\n }\n\n return chrono;\n };\n\n return DateTimeParseContext;\n}();\n\nvar Parsed = function (_Temporal) {\n _inheritsLoose(Parsed, _Temporal);\n\n function Parsed(dateTimeParseContext) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this.chrono = null;\n _this.zone = null;\n _this.fieldValues = new EnumMap();\n _this.leapSecond = false;\n _this.dateTimeParseContext = dateTimeParseContext;\n return _this;\n }\n\n var _proto2 = Parsed.prototype;\n\n _proto2.copy = function copy() {\n var cloned = new Parsed();\n cloned.chrono = this.chrono;\n cloned.zone = this.zone;\n cloned.fieldValues.putAll(this.fieldValues);\n cloned.leapSecond = this.leapSecond;\n cloned.dateTimeParseContext = this.dateTimeParseContext;\n return cloned;\n };\n\n _proto2.toString = function toString() {\n return this.fieldValues + \", \" + this.chrono + \", \" + this.zone;\n };\n\n _proto2.isSupported = function isSupported(field) {\n return this.fieldValues.containsKey(field);\n };\n\n _proto2.get = function get(field) {\n var val = this.fieldValues.get(field);\n assert(val != null);\n return val;\n };\n\n _proto2.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chrono;\n }\n\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto2.toBuilder = function toBuilder() {\n var builder = new DateTimeBuilder();\n builder.fieldValues.putAll(this.fieldValues);\n builder.chrono = this.dateTimeParseContext.getEffectiveChronology();\n\n if (this.zone != null) {\n builder.zone = this.zone;\n } else {\n builder.zone = this.overrideZone;\n }\n\n builder.leapSecond = this.leapSecond;\n builder.excessDays = this.excessDays;\n return builder;\n };\n\n return Parsed;\n}(Temporal);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimePrintContext = function () {\n function DateTimePrintContext(temporal, localeOrFormatter, symbols) {\n if (arguments.length === 2 && arguments[1] instanceof DateTimeFormatter) {\n this._temporal = DateTimePrintContext.adjust(temporal, localeOrFormatter);\n this._locale = localeOrFormatter.locale();\n this._symbols = localeOrFormatter.decimalStyle();\n } else {\n this._temporal = temporal;\n this._locale = localeOrFormatter;\n this._symbols = symbols;\n }\n\n this._optional = 0;\n }\n\n DateTimePrintContext.adjust = function adjust(temporal, formatter) {\n return temporal;\n };\n\n var _proto = DateTimePrintContext.prototype;\n\n _proto.symbols = function symbols() {\n return this._symbols;\n };\n\n _proto.startOptional = function startOptional() {\n this._optional++;\n };\n\n _proto.endOptional = function endOptional() {\n this._optional--;\n };\n\n _proto.getValueQuery = function getValueQuery(query) {\n var result = this._temporal.query(query);\n\n if (result == null && this._optional === 0) {\n throw new DateTimeException('Unable to extract value: ' + this._temporal);\n }\n\n return result;\n };\n\n _proto.getValue = function getValue(field) {\n try {\n return this._temporal.getLong(field);\n } catch (ex) {\n if (ex instanceof DateTimeException && this._optional > 0) {\n return null;\n }\n\n throw ex;\n }\n };\n\n _proto.temporal = function temporal() {\n return this._temporal;\n };\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.setDateTime = function setDateTime(temporal) {\n this._temporal = temporal;\n };\n\n _proto.setLocale = function setLocale(locale) {\n this._locale = locale;\n };\n\n return DateTimePrintContext;\n}();\n\nvar IsoFields = {};\nvar QUARTER_DAYS = [0, 90, 181, 273, 0, 91, 182, 274];\n\nvar Field = function (_TemporalField) {\n _inheritsLoose(Field, _TemporalField);\n\n function Field() {\n return _TemporalField.apply(this, arguments) || this;\n }\n\n var _proto = Field.prototype;\n\n _proto.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto._isIso = function _isIso() {\n return true;\n };\n\n Field._getWeekRangeByLocalDate = function _getWeekRangeByLocalDate(date) {\n var wby = Field._getWeekBasedYear(date);\n\n return ValueRange.of(1, Field._getWeekRangeByYear(wby));\n };\n\n Field._getWeekRangeByYear = function _getWeekRangeByYear(wby) {\n var date = LocalDate.of(wby, 1, 1);\n\n if (date.dayOfWeek() === DayOfWeek.THURSDAY || date.dayOfWeek() === DayOfWeek.WEDNESDAY && date.isLeapYear()) {\n return 53;\n }\n\n return 52;\n };\n\n Field._getWeek = function _getWeek(date) {\n var dow0 = date.dayOfWeek().ordinal();\n var doy0 = date.dayOfYear() - 1;\n var doyThu0 = doy0 + (3 - dow0);\n var alignedWeek = MathUtil.intDiv(doyThu0, 7);\n var firstThuDoy0 = doyThu0 - alignedWeek * 7;\n var firstMonDoy0 = firstThuDoy0 - 3;\n\n if (firstMonDoy0 < -3) {\n firstMonDoy0 += 7;\n }\n\n if (doy0 < firstMonDoy0) {\n return Field._getWeekRangeByLocalDate(date.withDayOfYear(180).minusYears(1)).maximum();\n }\n\n var week = MathUtil.intDiv(doy0 - firstMonDoy0, 7) + 1;\n\n if (week === 53) {\n if ((firstMonDoy0 === -3 || firstMonDoy0 === -2 && date.isLeapYear()) === false) {\n week = 1;\n }\n }\n\n return week;\n };\n\n Field._getWeekBasedYear = function _getWeekBasedYear(date) {\n var year = date.year();\n var doy = date.dayOfYear();\n\n if (doy <= 3) {\n var dow = date.dayOfWeek().ordinal();\n\n if (doy - dow < -2) {\n year--;\n }\n } else if (doy >= 363) {\n var _dow = date.dayOfWeek().ordinal();\n\n doy = doy - 363 - (date.isLeapYear() ? 1 : 0);\n\n if (doy - _dow >= 0) {\n year++;\n }\n }\n\n return year;\n };\n\n _proto.displayName = function displayName() {\n return this.toString();\n };\n\n _proto.resolve = function resolve() {\n return null;\n };\n\n _proto.name = function name() {\n return this.toString();\n };\n\n return Field;\n}(TemporalField);\n\nvar DAY_OF_QUARTER_FIELD = function (_Field) {\n _inheritsLoose(DAY_OF_QUARTER_FIELD, _Field);\n\n function DAY_OF_QUARTER_FIELD() {\n return _Field.apply(this, arguments) || this;\n }\n\n var _proto2 = DAY_OF_QUARTER_FIELD.prototype;\n\n _proto2.toString = function toString() {\n return 'DayOfQuarter';\n };\n\n _proto2.baseUnit = function baseUnit() {\n return ChronoUnit.DAYS;\n };\n\n _proto2.rangeUnit = function rangeUnit() {\n return QUARTER_YEARS;\n };\n\n _proto2.range = function range() {\n return ValueRange.of(1, 90, 92);\n };\n\n _proto2.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.DAY_OF_YEAR) && temporal.isSupported(ChronoField.MONTH_OF_YEAR) && temporal.isSupported(ChronoField.YEAR) && this._isIso(temporal);\n };\n\n _proto2.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var qoy = temporal.getLong(QUARTER_OF_YEAR);\n\n if (qoy === 1) {\n var year = temporal.getLong(ChronoField.YEAR);\n return IsoChronology.isLeapYear(year) ? ValueRange.of(1, 91) : ValueRange.of(1, 90);\n } else if (qoy === 2) {\n return ValueRange.of(1, 91);\n } else if (qoy === 3 || qoy === 4) {\n return ValueRange.of(1, 92);\n }\n\n return this.range();\n };\n\n _proto2.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: DayOfQuarter');\n }\n\n var doy = temporal.get(ChronoField.DAY_OF_YEAR);\n var moy = temporal.get(ChronoField.MONTH_OF_YEAR);\n var year = temporal.getLong(ChronoField.YEAR);\n return doy - QUARTER_DAYS[MathUtil.intDiv(moy - 1, 3) + (IsoChronology.isLeapYear(year) ? 4 : 0)];\n };\n\n _proto2.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.getLong(ChronoField.DAY_OF_YEAR) + (newValue - curValue));\n };\n\n _proto2.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var yearLong = fieldValues.get(ChronoField.YEAR);\n var qoyLong = fieldValues.get(QUARTER_OF_YEAR);\n\n if (yearLong == null || qoyLong == null) {\n return null;\n }\n\n var y = ChronoField.YEAR.checkValidIntValue(yearLong);\n var doq = fieldValues.get(DAY_OF_QUARTER);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var qoy = qoyLong;\n date = LocalDate.of(y, 1, 1);\n date = date.plusMonths(MathUtil.safeMultiply(MathUtil.safeSubtract(qoy, 1), 3));\n date = date.plusDays(MathUtil.safeSubtract(doq, 1));\n } else {\n var _qoy = QUARTER_OF_YEAR.range().checkValidIntValue(qoyLong, QUARTER_OF_YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var max = 92;\n\n if (_qoy === 1) {\n max = IsoChronology.isLeapYear(y) ? 91 : 90;\n } else if (_qoy === 2) {\n max = 91;\n }\n\n ValueRange.of(1, max).checkValidValue(doq, this);\n } else {\n this.range().checkValidValue(doq, this);\n }\n\n date = LocalDate.of(y, (_qoy - 1) * 3 + 1, 1).plusDays(doq - 1);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(ChronoField.YEAR);\n fieldValues.remove(QUARTER_OF_YEAR);\n return date;\n };\n\n return DAY_OF_QUARTER_FIELD;\n}(Field);\n\nvar QUARTER_OF_YEAR_FIELD = function (_Field2) {\n _inheritsLoose(QUARTER_OF_YEAR_FIELD, _Field2);\n\n function QUARTER_OF_YEAR_FIELD() {\n return _Field2.apply(this, arguments) || this;\n }\n\n var _proto3 = QUARTER_OF_YEAR_FIELD.prototype;\n\n _proto3.toString = function toString() {\n return 'QuarterOfYear';\n };\n\n _proto3.baseUnit = function baseUnit() {\n return QUARTER_YEARS;\n };\n\n _proto3.rangeUnit = function rangeUnit() {\n return ChronoUnit.YEARS;\n };\n\n _proto3.range = function range() {\n return ValueRange.of(1, 4);\n };\n\n _proto3.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.MONTH_OF_YEAR) && this._isIso(temporal);\n };\n\n _proto3.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return this.range();\n };\n\n _proto3.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: QuarterOfYear');\n }\n\n var moy = temporal.getLong(ChronoField.MONTH_OF_YEAR);\n return MathUtil.intDiv(moy + 2, 3);\n };\n\n _proto3.adjustInto = function adjustInto(temporal, newValue) {\n var curValue = this.getFrom(temporal);\n this.range().checkValidValue(newValue, this);\n return temporal.with(ChronoField.MONTH_OF_YEAR, temporal.getLong(ChronoField.MONTH_OF_YEAR) + (newValue - curValue) * 3);\n };\n\n return QUARTER_OF_YEAR_FIELD;\n}(Field);\n\nvar WEEK_OF_WEEK_BASED_YEAR_FIELD = function (_Field3) {\n _inheritsLoose(WEEK_OF_WEEK_BASED_YEAR_FIELD, _Field3);\n\n function WEEK_OF_WEEK_BASED_YEAR_FIELD() {\n return _Field3.apply(this, arguments) || this;\n }\n\n var _proto4 = WEEK_OF_WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto4.toString = function toString() {\n return 'WeekOfWeekBasedYear';\n };\n\n _proto4.baseUnit = function baseUnit() {\n return ChronoUnit.WEEKS;\n };\n\n _proto4.rangeUnit = function rangeUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto4.range = function range() {\n return ValueRange.of(1, 52, 53);\n };\n\n _proto4.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto4.rangeRefinedBy = function rangeRefinedBy(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeekRangeByLocalDate(LocalDate.from(temporal));\n };\n\n _proto4.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekOfWeekBasedYear');\n }\n\n return Field._getWeek(LocalDate.from(temporal));\n };\n\n _proto4.adjustInto = function adjustInto(temporal, newValue) {\n this.range().checkValidValue(newValue, this);\n return temporal.plus(MathUtil.safeSubtract(newValue, this.getFrom(temporal)), ChronoUnit.WEEKS);\n };\n\n _proto4.resolve = function resolve(fieldValues, partialTemporal, resolverStyle) {\n var wbyLong = fieldValues.get(WEEK_BASED_YEAR);\n var dowLong = fieldValues.get(ChronoField.DAY_OF_WEEK);\n\n if (wbyLong == null || dowLong == null) {\n return null;\n }\n\n var wby = WEEK_BASED_YEAR.range().checkValidIntValue(wbyLong, WEEK_BASED_YEAR);\n var wowby = fieldValues.get(WEEK_OF_WEEK_BASED_YEAR);\n var date;\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var dow = dowLong;\n var weeks = 0;\n\n if (dow > 7) {\n weeks = MathUtil.intDiv(dow - 1, 7);\n dow = MathUtil.intMod(dow - 1, 7) + 1;\n } else if (dow < 1) {\n weeks = MathUtil.intDiv(dow, 7) - 1;\n dow = MathUtil.intMod(dow, 7) + 7;\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).plusWeeks(weeks).with(ChronoField.DAY_OF_WEEK, dow);\n } else {\n var _dow2 = ChronoField.DAY_OF_WEEK.checkValidIntValue(dowLong);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n var temp = LocalDate.of(wby, 1, 4);\n\n var range = Field._getWeekRangeByLocalDate(temp);\n\n range.checkValidValue(wowby, this);\n } else {\n this.range().checkValidValue(wowby, this);\n }\n\n date = LocalDate.of(wby, 1, 4).plusWeeks(wowby - 1).with(ChronoField.DAY_OF_WEEK, _dow2);\n }\n\n fieldValues.remove(this);\n fieldValues.remove(WEEK_BASED_YEAR);\n fieldValues.remove(ChronoField.DAY_OF_WEEK);\n return date;\n };\n\n _proto4.displayName = function displayName() {\n return 'Week';\n };\n\n return WEEK_OF_WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar WEEK_BASED_YEAR_FIELD = function (_Field4) {\n _inheritsLoose(WEEK_BASED_YEAR_FIELD, _Field4);\n\n function WEEK_BASED_YEAR_FIELD() {\n return _Field4.apply(this, arguments) || this;\n }\n\n var _proto5 = WEEK_BASED_YEAR_FIELD.prototype;\n\n _proto5.toString = function toString() {\n return 'WeekBasedYear';\n };\n\n _proto5.baseUnit = function baseUnit() {\n return WEEK_BASED_YEARS;\n };\n\n _proto5.rangeUnit = function rangeUnit() {\n return ChronoUnit.FOREVER;\n };\n\n _proto5.range = function range() {\n return ChronoField.YEAR.range();\n };\n\n _proto5.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY) && this._isIso(temporal);\n };\n\n _proto5.rangeRefinedBy = function rangeRefinedBy(temporal) {\n return ChronoField.YEAR.range();\n };\n\n _proto5.getFrom = function getFrom(temporal) {\n if (temporal.isSupported(this) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n return Field._getWeekBasedYear(LocalDate.from(temporal));\n };\n\n _proto5.adjustInto = function adjustInto(temporal, newValue) {\n if (this.isSupportedBy(temporal) === false) {\n throw new UnsupportedTemporalTypeException('Unsupported field: WeekBasedYear');\n }\n\n var newWby = this.range().checkValidIntValue(newValue, WEEK_BASED_YEAR);\n var date = LocalDate.from(temporal);\n var dow = date.get(ChronoField.DAY_OF_WEEK);\n\n var week = Field._getWeek(date);\n\n if (week === 53 && Field._getWeekRangeByYear(newWby) === 52) {\n week = 52;\n }\n\n var resolved = LocalDate.of(newWby, 1, 4);\n var days = dow - resolved.get(ChronoField.DAY_OF_WEEK) + (week - 1) * 7;\n resolved = resolved.plusDays(days);\n return temporal.with(resolved);\n };\n\n return WEEK_BASED_YEAR_FIELD;\n}(Field);\n\nvar Unit = function (_TemporalUnit) {\n _inheritsLoose(Unit, _TemporalUnit);\n\n function Unit(name, estimatedDuration) {\n var _this;\n\n _this = _TemporalUnit.call(this) || this;\n _this._name = name;\n _this._duration = estimatedDuration;\n return _this;\n }\n\n var _proto6 = Unit.prototype;\n\n _proto6.duration = function duration() {\n return this._duration;\n };\n\n _proto6.isDurationEstimated = function isDurationEstimated() {\n return true;\n };\n\n _proto6.isDateBased = function isDateBased() {\n return true;\n };\n\n _proto6.isTimeBased = function isTimeBased() {\n return false;\n };\n\n _proto6.isSupportedBy = function isSupportedBy(temporal) {\n return temporal.isSupported(ChronoField.EPOCH_DAY);\n };\n\n _proto6.addTo = function addTo(temporal, periodToAdd) {\n switch (this) {\n case WEEK_BASED_YEARS:\n {\n var added = MathUtil.safeAdd(temporal.get(WEEK_BASED_YEAR), periodToAdd);\n return temporal.with(WEEK_BASED_YEAR, added);\n }\n\n case QUARTER_YEARS:\n return temporal.plus(MathUtil.intDiv(periodToAdd, 256), ChronoUnit.YEARS).plus(MathUtil.intMod(periodToAdd, 256) * 3, ChronoUnit.MONTHS);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.between = function between(temporal1, temporal2) {\n switch (this) {\n case WEEK_BASED_YEARS:\n return MathUtil.safeSubtract(temporal2.getLong(WEEK_BASED_YEAR), temporal1.getLong(WEEK_BASED_YEAR));\n\n case QUARTER_YEARS:\n return MathUtil.intDiv(temporal1.until(temporal2, ChronoUnit.MONTHS), 3);\n\n default:\n throw new IllegalStateException('Unreachable');\n }\n };\n\n _proto6.toString = function toString() {\n return name;\n };\n\n return Unit;\n}(TemporalUnit);\n\nvar DAY_OF_QUARTER = null;\nvar QUARTER_OF_YEAR = null;\nvar WEEK_OF_WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEAR = null;\nvar WEEK_BASED_YEARS = null;\nvar QUARTER_YEARS = null;\nfunction _init$8() {\n DAY_OF_QUARTER = new DAY_OF_QUARTER_FIELD();\n QUARTER_OF_YEAR = new QUARTER_OF_YEAR_FIELD();\n WEEK_OF_WEEK_BASED_YEAR = new WEEK_OF_WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEAR = new WEEK_BASED_YEAR_FIELD();\n WEEK_BASED_YEARS = new Unit('WeekBasedYears', Duration.ofSeconds(31556952));\n QUARTER_YEARS = new Unit('QuarterYears', Duration.ofSeconds(31556952 / 4));\n IsoFields.DAY_OF_QUARTER = DAY_OF_QUARTER;\n IsoFields.QUARTER_OF_YEAR = QUARTER_OF_YEAR;\n IsoFields.WEEK_OF_WEEK_BASED_YEAR = WEEK_OF_WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEAR = WEEK_BASED_YEAR;\n IsoFields.WEEK_BASED_YEARS = WEEK_BASED_YEARS;\n IsoFields.QUARTER_YEARS = QUARTER_YEARS;\n\n LocalDate.prototype.isoWeekOfWeekyear = function () {\n return this.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);\n };\n\n LocalDate.prototype.isoWeekyear = function () {\n return this.get(IsoFields.WEEK_BASED_YEAR);\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DecimalStyle = function () {\n function DecimalStyle(zeroChar, positiveSignChar, negativeSignChar, decimalPointChar) {\n this._zeroDigit = zeroChar;\n this._zeroDigitCharCode = zeroChar.charCodeAt(0);\n this._positiveSign = positiveSignChar;\n this._negativeSign = negativeSignChar;\n this._decimalSeparator = decimalPointChar;\n }\n\n var _proto = DecimalStyle.prototype;\n\n _proto.positiveSign = function positiveSign() {\n return this._positiveSign;\n };\n\n _proto.withPositiveSign = function withPositiveSign(positiveSign) {\n if (positiveSign === this._positiveSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.negativeSign = function negativeSign() {\n return this._negativeSign;\n };\n\n _proto.withNegativeSign = function withNegativeSign(negativeSign) {\n if (negativeSign === this._negativeSign) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, negativeSign, this._decimalSeparator);\n };\n\n _proto.zeroDigit = function zeroDigit() {\n return this._zeroDigit;\n };\n\n _proto.withZeroDigit = function withZeroDigit(zeroDigit) {\n if (zeroDigit === this._zeroDigit) {\n return this;\n }\n\n return new DecimalStyle(zeroDigit, this._positiveSign, this._negativeSign, this._decimalSeparator);\n };\n\n _proto.decimalSeparator = function decimalSeparator() {\n return this._decimalSeparator;\n };\n\n _proto.withDecimalSeparator = function withDecimalSeparator(decimalSeparator) {\n if (decimalSeparator === this._decimalSeparator) {\n return this;\n }\n\n return new DecimalStyle(this._zeroDigit, this._positiveSign, this._negativeSign, decimalSeparator);\n };\n\n _proto.convertToDigit = function convertToDigit(char) {\n var val = char.charCodeAt(0) - this._zeroDigitCharCode;\n\n return val >= 0 && val <= 9 ? val : -1;\n };\n\n _proto.convertNumberToI18N = function convertNumberToI18N(numericText) {\n if (this._zeroDigit === '0') {\n return numericText;\n }\n\n var diff = this._zeroDigitCharCode - '0'.charCodeAt(0);\n var convertedText = '';\n\n for (var i = 0; i < numericText.length; i++) {\n convertedText += String.fromCharCode(numericText.charCodeAt(i) + diff);\n }\n\n return convertedText;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof DecimalStyle) {\n return this._zeroDigit === other._zeroDigit && this._positiveSign === other._positiveSign && this._negativeSign === other._negativeSign && this._decimalSeparator === other._decimalSeparator;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator;\n };\n\n _proto.toString = function toString() {\n return 'DecimalStyle[' + this._zeroDigit + this._positiveSign + this._negativeSign + this._decimalSeparator + ']';\n };\n\n DecimalStyle.of = function of() {\n throw new Error('not yet supported');\n };\n\n DecimalStyle.availableLocales = function availableLocales() {\n throw new Error('not yet supported');\n };\n\n return DecimalStyle;\n}();\nDecimalStyle.STANDARD = new DecimalStyle('0', '+', '-', '.');\n\nvar SignStyle = function (_Enum) {\n _inheritsLoose(SignStyle, _Enum);\n\n function SignStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SignStyle.prototype;\n\n _proto.parse = function parse(positive, strict, fixedWidth) {\n switch (this) {\n case SignStyle.NORMAL:\n return !positive || !strict;\n\n case SignStyle.ALWAYS:\n case SignStyle.EXCEEDS_PAD:\n return true;\n\n default:\n return !strict && !fixedWidth;\n }\n };\n\n return SignStyle;\n}(Enum);\nSignStyle.NORMAL = new SignStyle('NORMAL');\nSignStyle.NEVER = new SignStyle('NEVER');\nSignStyle.ALWAYS = new SignStyle('ALWAYS');\nSignStyle.EXCEEDS_PAD = new SignStyle('EXCEEDS_PAD');\nSignStyle.NOT_NEGATIVE = new SignStyle('NOT_NEGATIVE');\n\nvar TextStyle = function (_Enum) {\n _inheritsLoose(TextStyle, _Enum);\n\n function TextStyle() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = TextStyle.prototype;\n\n _proto.isStandalone = function isStandalone() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n case TextStyle.SHORT_STANDALONE:\n case TextStyle.NARROW_STANDALONE:\n return true;\n\n default:\n return false;\n }\n };\n\n _proto.asStandalone = function asStandalone() {\n switch (this) {\n case TextStyle.FULL:\n return TextStyle.FULL_STANDALONE;\n\n case TextStyle.SHORT:\n return TextStyle.SHORT_STANDALONE;\n\n case TextStyle.NARROW:\n return TextStyle.NARROW_STANDALONE;\n\n default:\n return this;\n }\n };\n\n _proto.asNormal = function asNormal() {\n switch (this) {\n case TextStyle.FULL_STANDALONE:\n return TextStyle.FULL;\n\n case TextStyle.SHORT_STANDALONE:\n return TextStyle.SHORT;\n\n case TextStyle.NARROW_STANDALONE:\n return TextStyle.NARROW;\n\n default:\n return this;\n }\n };\n\n return TextStyle;\n}(Enum);\nTextStyle.FULL = new TextStyle('FULL');\nTextStyle.FULL_STANDALONE = new TextStyle('FULL_STANDALONE');\nTextStyle.SHORT = new TextStyle('SHORT');\nTextStyle.SHORT_STANDALONE = new TextStyle('SHORT_STANDALONE');\nTextStyle.NARROW = new TextStyle('NARROW');\nTextStyle.NARROW_STANDALONE = new TextStyle('NARROW_STANDALONE');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CharLiteralPrinterParser = function () {\n function CharLiteralPrinterParser(literal) {\n if (literal.length > 1) {\n throw new IllegalArgumentException('invalid literal, too long: \"' + literal + '\"');\n }\n\n this._literal = literal;\n }\n\n var _proto = CharLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n var ch = text.charAt(position);\n\n if (context.charEquals(this._literal, ch) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n if (this._literal === '\\'') {\n return \"''\";\n }\n\n return \"'\" + this._literal + \"'\";\n };\n\n return CharLiteralPrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar CompositePrinterParser = function () {\n function CompositePrinterParser(printerParsers, optional) {\n this._printerParsers = printerParsers;\n this._optional = optional;\n }\n\n var _proto = CompositePrinterParser.prototype;\n\n _proto.withOptional = function withOptional(optional) {\n if (optional === this._optional) {\n return this;\n }\n\n return new CompositePrinterParser(this._printerParsers, optional);\n };\n\n _proto.print = function print(context, buf) {\n var length = buf.length();\n\n if (this._optional) {\n context.startOptional();\n }\n\n try {\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n\n if (pp.print(context, buf) === false) {\n buf.setLength(length);\n return true;\n }\n }\n } finally {\n if (this._optional) {\n context.endOptional();\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n if (this._optional) {\n context.startOptional();\n var pos = position;\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n pos = pp.parse(context, text, pos);\n\n if (pos < 0) {\n context.endOptional(false);\n return position;\n }\n }\n\n context.endOptional(true);\n return pos;\n } else {\n for (var _i = 0; _i < this._printerParsers.length; _i++) {\n var _pp = this._printerParsers[_i];\n position = _pp.parse(context, text, position);\n\n if (position < 0) {\n break;\n }\n }\n\n return position;\n }\n };\n\n _proto.toString = function toString() {\n var buf = '';\n\n if (this._printerParsers != null) {\n buf += this._optional ? '[' : '(';\n\n for (var i = 0; i < this._printerParsers.length; i++) {\n var pp = this._printerParsers[i];\n buf += pp.toString();\n }\n\n buf += this._optional ? ']' : ')';\n }\n\n return buf;\n };\n\n return CompositePrinterParser;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar FractionPrinterParser = function () {\n function FractionPrinterParser(field, minWidth, maxWidth, decimalPoint) {\n requireNonNull(field, 'field');\n\n if (field.range().isFixed() === false) {\n throw new IllegalArgumentException('Field must have a fixed set of values: ' + field);\n }\n\n if (minWidth < 0 || minWidth > 9) {\n throw new IllegalArgumentException('Minimum width must be from 0 to 9 inclusive but was ' + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > 9) {\n throw new IllegalArgumentException('Maximum width must be from 1 to 9 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException('Maximum width must exceed or equal the minimum width but ' + maxWidth + ' < ' + minWidth);\n }\n\n this.field = field;\n this.minWidth = minWidth;\n this.maxWidth = maxWidth;\n this.decimalPoint = decimalPoint;\n }\n\n var _proto = FractionPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var value = context.getValue(this.field);\n\n if (value === null) {\n return false;\n }\n\n var symbols = context.symbols();\n\n if (value === 0) {\n if (this.minWidth > 0) {\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n for (var i = 0; i < this.minWidth; i++) {\n buf.append(symbols.zeroDigit());\n }\n }\n } else {\n var fraction = this.convertToFraction(value, symbols.zeroDigit());\n var outputScale = Math.min(Math.max(fraction.length, this.minWidth), this.maxWidth);\n fraction = fraction.substr(0, outputScale);\n\n if (fraction * 1 > 0) {\n while (fraction.length > this.minWidth && fraction[fraction.length - 1] === '0') {\n fraction = fraction.substr(0, fraction.length - 1);\n }\n }\n\n var str = fraction;\n str = symbols.convertNumberToI18N(str);\n\n if (this.decimalPoint) {\n buf.append(symbols.decimalSeparator());\n }\n\n buf.append(str);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var effectiveMin = context.isStrict() ? this.minWidth : 0;\n var effectiveMax = context.isStrict() ? this.maxWidth : 9;\n var length = text.length;\n\n if (position === length) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n if (this.decimalPoint) {\n if (text[position] !== context.symbols().decimalSeparator()) {\n return effectiveMin > 0 ? ~position : position;\n }\n\n position++;\n }\n\n var minEndPos = position + effectiveMin;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var maxEndPos = Math.min(position + effectiveMax, length);\n var total = 0;\n var pos = position;\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n if (pos < minEndPos) {\n return ~position;\n }\n\n pos--;\n break;\n }\n\n total = total * 10 + digit;\n }\n\n var moveLeft = pos - position;\n var scale = Math.pow(10, moveLeft);\n var value = this.convertFromFraction(total, scale);\n return context.setParsedField(this.field, value, position, pos);\n };\n\n _proto.convertToFraction = function convertToFraction(value, zeroDigit) {\n var range = this.field.range();\n range.checkValidValue(value, this.field);\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = value - _min;\n\n var _scaled = MathUtil.intDiv(_value * 1000000000, _range);\n\n var fraction = '' + _scaled;\n\n while (fraction.length < 9) {\n fraction = zeroDigit + fraction;\n }\n\n return fraction;\n };\n\n _proto.convertFromFraction = function convertFromFraction(total, scale) {\n var range = this.field.range();\n\n var _min = range.minimum();\n\n var _range = range.maximum() - _min + 1;\n\n var _value = MathUtil.intDiv(total * _range, scale);\n\n return _value;\n };\n\n _proto.toString = function toString() {\n var decimal = this.decimalPoint ? ',DecimalPoint' : '';\n return 'Fraction(' + this.field + ',' + this.minWidth + ',' + this.maxWidth + decimal + ')';\n };\n\n return FractionPrinterParser;\n}();\n\nvar MAX_WIDTH = 15;\nvar EXCEED_POINTS = [0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000];\nvar NumberPrinterParser = function () {\n function NumberPrinterParser(field, minWidth, maxWidth, signStyle, subsequentWidth) {\n if (subsequentWidth === void 0) {\n subsequentWidth = 0;\n }\n\n this._field = field;\n this._minWidth = minWidth;\n this._maxWidth = maxWidth;\n this._signStyle = signStyle;\n this._subsequentWidth = subsequentWidth;\n }\n\n var _proto = NumberPrinterParser.prototype;\n\n _proto.field = function field() {\n return this._field;\n };\n\n _proto.minWidth = function minWidth() {\n return this._minWidth;\n };\n\n _proto.maxWidth = function maxWidth() {\n return this._maxWidth;\n };\n\n _proto.signStyle = function signStyle() {\n return this._signStyle;\n };\n\n _proto.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, -1);\n };\n\n _proto.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new NumberPrinterParser(this._field, this._minWidth, this._maxWidth, this._signStyle, this._subsequentWidth + subsequentWidth);\n };\n\n _proto._isFixedWidth = function _isFixedWidth() {\n return this._subsequentWidth === -1 || this._subsequentWidth > 0 && this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE;\n };\n\n _proto.print = function print(context, buf) {\n var contextValue = context.getValue(this._field);\n\n if (contextValue == null) {\n return false;\n }\n\n var value = this._getValue(context, contextValue);\n\n var symbols = context.symbols();\n var str = '' + Math.abs(value);\n\n if (str.length > this._maxWidth) {\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' exceeds the maximum print width of ' + this._maxWidth);\n }\n\n str = symbols.convertNumberToI18N(str);\n\n if (value >= 0) {\n switch (this._signStyle) {\n case SignStyle.EXCEEDS_PAD:\n if (this._minWidth < MAX_WIDTH && value >= EXCEED_POINTS[this._minWidth]) {\n buf.append(symbols.positiveSign());\n }\n\n break;\n\n case SignStyle.ALWAYS:\n buf.append(symbols.positiveSign());\n break;\n }\n } else {\n switch (this._signStyle) {\n case SignStyle.NORMAL:\n case SignStyle.EXCEEDS_PAD:\n case SignStyle.ALWAYS:\n buf.append(symbols.negativeSign());\n break;\n\n case SignStyle.NOT_NEGATIVE:\n throw new DateTimeException('Field ' + this._field + ' cannot be printed as the value ' + value + ' cannot be negative according to the SignStyle');\n }\n }\n\n for (var i = 0; i < this._minWidth - str.length; i++) {\n buf.append(symbols.zeroDigit());\n }\n\n buf.append(str);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position === length) {\n return ~position;\n }\n\n assert(position >= 0 && position < length);\n var sign = text.charAt(position);\n var negative = false;\n var positive = false;\n\n if (sign === context.symbols().positiveSign()) {\n if (this._signStyle.parse(true, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n positive = true;\n position++;\n } else if (sign === context.symbols().negativeSign()) {\n if (this._signStyle.parse(false, context.isStrict(), this._minWidth === this._maxWidth) === false) {\n return ~position;\n }\n\n negative = true;\n position++;\n } else {\n if (this._signStyle === SignStyle.ALWAYS && context.isStrict()) {\n return ~position;\n }\n }\n\n var effMinWidth = context.isStrict() || this._isFixedWidth() ? this._minWidth : 1;\n var minEndPos = position + effMinWidth;\n\n if (minEndPos > length) {\n return ~position;\n }\n\n var effMaxWidth = (context.isStrict() || this._isFixedWidth() ? this._maxWidth : 9) + Math.max(this._subsequentWidth, 0);\n var total = 0;\n var pos = position;\n\n for (var pass = 0; pass < 2; pass++) {\n var maxEndPos = Math.min(pos + effMaxWidth, length);\n\n while (pos < maxEndPos) {\n var ch = text.charAt(pos++);\n var digit = context.symbols().convertToDigit(ch);\n\n if (digit < 0) {\n pos--;\n\n if (pos < minEndPos) {\n return ~position;\n }\n\n break;\n }\n\n if (pos - position > MAX_WIDTH) {\n throw new ArithmeticException('number text exceeds length');\n } else {\n total = total * 10 + digit;\n }\n }\n\n if (this._subsequentWidth > 0 && pass === 0) {\n var parseLen = pos - position;\n effMaxWidth = Math.max(effMinWidth, parseLen - this._subsequentWidth);\n pos = position;\n total = 0;\n } else {\n break;\n }\n }\n\n if (negative) {\n if (total === 0 && context.isStrict()) {\n return ~(position - 1);\n }\n\n if (total !== 0) {\n total = -total;\n }\n } else if (this._signStyle === SignStyle.EXCEEDS_PAD && context.isStrict()) {\n var _parseLen = pos - position;\n\n if (positive) {\n if (_parseLen <= this._minWidth) {\n return ~(position - 1);\n }\n } else {\n if (_parseLen > this._minWidth) {\n return ~position;\n }\n }\n }\n\n return this._setValue(context, total, position, pos);\n };\n\n _proto._getValue = function _getValue(context, value) {\n return value;\n };\n\n _proto._setValue = function _setValue(context, value, errorPos, successPos) {\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto.toString = function toString() {\n if (this._minWidth === 1 && this._maxWidth === MAX_WIDTH && this._signStyle === SignStyle.NORMAL) {\n return 'Value(' + this._field + ')';\n }\n\n if (this._minWidth === this._maxWidth && this._signStyle === SignStyle.NOT_NEGATIVE) {\n return 'Value(' + this._field + ',' + this._minWidth + ')';\n }\n\n return 'Value(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + this._signStyle + ')';\n };\n\n return NumberPrinterParser;\n}();\nvar ReducedPrinterParser = function (_NumberPrinterParser) {\n _inheritsLoose(ReducedPrinterParser, _NumberPrinterParser);\n\n function ReducedPrinterParser(field, width, maxWidth, baseValue, baseDate) {\n var _this;\n\n _this = _NumberPrinterParser.call(this, field, width, maxWidth, SignStyle.NOT_NEGATIVE) || this;\n\n if (width < 1 || width > 10) {\n throw new IllegalArgumentException('The width must be from 1 to 10 inclusive but was ' + width);\n }\n\n if (maxWidth < 1 || maxWidth > 10) {\n throw new IllegalArgumentException('The maxWidth must be from 1 to 10 inclusive but was ' + maxWidth);\n }\n\n if (maxWidth < width) {\n throw new IllegalArgumentException('The maxWidth must be greater than the width');\n }\n\n if (baseDate === null) {\n if (field.range().isValidValue(baseValue) === false) {\n throw new IllegalArgumentException('The base value must be within the range of the field');\n }\n\n if (baseValue + EXCEED_POINTS[width] > MathUtil.MAX_SAFE_INTEGER) {\n throw new DateTimeException('Unable to add printer-parser as the range exceeds the capacity of an int');\n }\n }\n\n _this._baseValue = baseValue;\n _this._baseDate = baseDate;\n return _this;\n }\n\n var _proto2 = ReducedPrinterParser.prototype;\n\n _proto2._getValue = function _getValue(context, value) {\n var absValue = Math.abs(value);\n var baseValue = this._baseValue;\n\n if (this._baseDate !== null) {\n context.temporal();\n var chrono = IsoChronology.INSTANCE;\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n if (value >= baseValue && value < baseValue + EXCEED_POINTS[this._minWidth]) {\n return absValue % EXCEED_POINTS[this._minWidth];\n }\n\n return absValue % EXCEED_POINTS[this._maxWidth];\n };\n\n _proto2._setValue = function _setValue(context, value, errorPos, successPos) {\n var baseValue = this._baseValue;\n\n if (this._baseDate != null) {\n var chrono = context.getEffectiveChronology();\n baseValue = chrono.date(this._baseDate).get(this._field);\n }\n\n var parseLen = successPos - errorPos;\n\n if (parseLen === this._minWidth && value >= 0) {\n var range = EXCEED_POINTS[this._minWidth];\n var lastPart = baseValue % range;\n var basePart = baseValue - lastPart;\n\n if (baseValue > 0) {\n value = basePart + value;\n } else {\n value = basePart - value;\n }\n\n if (value < baseValue) {\n value += range;\n }\n }\n\n return context.setParsedField(this._field, value, errorPos, successPos);\n };\n\n _proto2.withFixedWidth = function withFixedWidth() {\n if (this._subsequentWidth === -1) {\n return this;\n }\n\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, -1);\n };\n\n _proto2.withSubsequentWidth = function withSubsequentWidth(subsequentWidth) {\n return new ReducedPrinterParser(this._field, this._minWidth, this._maxWidth, this._baseValue, this._baseDate, this._subsequentWidth + subsequentWidth);\n };\n\n _proto2.isFixedWidth = function isFixedWidth(context) {\n if (context.isStrict() === false) {\n return false;\n }\n\n return _NumberPrinterParser.prototype.isFixedWidth.call(this, context);\n };\n\n _proto2.toString = function toString() {\n return 'ReducedValue(' + this._field + ',' + this._minWidth + ',' + this._maxWidth + ',' + (this._baseDate != null ? this._baseDate : this._baseValue) + ')';\n };\n\n return ReducedPrinterParser;\n}(NumberPrinterParser);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PATTERNS = ['+HH', '+HHmm', '+HH:mm', '+HHMM', '+HH:MM', '+HHMMss', '+HH:MM:ss', '+HHMMSS', '+HH:MM:SS'];\nvar OffsetIdPrinterParser = function () {\n function OffsetIdPrinterParser(noOffsetText, pattern) {\n requireNonNull(noOffsetText, 'noOffsetText');\n requireNonNull(pattern, 'pattern');\n this.noOffsetText = noOffsetText;\n this.type = this._checkPattern(pattern);\n }\n\n var _proto = OffsetIdPrinterParser.prototype;\n\n _proto._checkPattern = function _checkPattern(pattern) {\n for (var i = 0; i < PATTERNS.length; i++) {\n if (PATTERNS[i] === pattern) {\n return i;\n }\n }\n\n throw new IllegalArgumentException('Invalid zone offset pattern: ' + pattern);\n };\n\n _proto.print = function print(context, buf) {\n var offsetSecs = context.getValue(ChronoField.OFFSET_SECONDS);\n\n if (offsetSecs == null) {\n return false;\n }\n\n var totalSecs = MathUtil.safeToInt(offsetSecs);\n\n if (totalSecs === 0) {\n buf.append(this.noOffsetText);\n } else {\n var absHours = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 3600), 100));\n var absMinutes = Math.abs(MathUtil.intMod(MathUtil.intDiv(totalSecs, 60), 60));\n var absSeconds = Math.abs(MathUtil.intMod(totalSecs, 60));\n var bufPos = buf.length();\n var output = absHours;\n buf.append(totalSecs < 0 ? '-' : '+').appendChar(MathUtil.intDiv(absHours, 10) + '0').appendChar(MathUtil.intMod(absHours, 10) + '0');\n\n if (this.type >= 3 || this.type >= 1 && absMinutes > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absMinutes, 10) + '0').appendChar(absMinutes % 10 + '0');\n output += absMinutes;\n\n if (this.type >= 7 || this.type >= 5 && absSeconds > 0) {\n buf.append(this.type % 2 === 0 ? ':' : '').appendChar(MathUtil.intDiv(absSeconds, 10) + '0').appendChar(absSeconds % 10 + '0');\n output += absSeconds;\n }\n }\n\n if (output === 0) {\n buf.setLength(bufPos);\n buf.append(this.noOffsetText);\n }\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n var noOffsetLen = this.noOffsetText.length;\n\n if (noOffsetLen === 0) {\n if (position === length) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position);\n }\n } else {\n if (position === length) {\n return ~position;\n }\n\n if (context.subSequenceEquals(text, position, this.noOffsetText, 0, noOffsetLen)) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n }\n\n var sign = text[position];\n\n if (sign === '+' || sign === '-') {\n var negative = sign === '-' ? -1 : 1;\n var array = [0, 0, 0, 0];\n array[0] = position + 1;\n\n if ((this._parseNumber(array, 1, text, true) || this._parseNumber(array, 2, text, this.type >= 3) || this._parseNumber(array, 3, text, false)) === false) {\n var offsetSecs = MathUtil.safeZero(negative * (array[1] * 3600 + array[2] * 60 + array[3]));\n return context.setParsedField(ChronoField.OFFSET_SECONDS, offsetSecs, position, array[0]);\n }\n }\n\n if (noOffsetLen === 0) {\n return context.setParsedField(ChronoField.OFFSET_SECONDS, 0, position, position + noOffsetLen);\n }\n\n return ~position;\n };\n\n _proto._parseNumber = function _parseNumber(array, arrayIndex, parseText, required) {\n if ((this.type + 3) / 2 < arrayIndex) {\n return false;\n }\n\n var pos = array[0];\n\n if (this.type % 2 === 0 && arrayIndex > 1) {\n if (pos + 1 > parseText.length || parseText[pos] !== ':') {\n return required;\n }\n\n pos++;\n }\n\n if (pos + 2 > parseText.length) {\n return required;\n }\n\n var ch1 = parseText[pos++];\n var ch2 = parseText[pos++];\n\n if (ch1 < '0' || ch1 > '9' || ch2 < '0' || ch2 > '9') {\n return required;\n }\n\n var value = (ch1.charCodeAt(0) - 48) * 10 + (ch2.charCodeAt(0) - 48);\n\n if (value < 0 || value > 59) {\n return required;\n }\n\n array[arrayIndex] = value;\n array[0] = pos;\n return false;\n };\n\n _proto.toString = function toString() {\n var converted = this.noOffsetText.replace('\\'', '\\'\\'');\n return 'Offset(' + PATTERNS[this.type] + ',\\'' + converted + '\\')';\n };\n\n return OffsetIdPrinterParser;\n}();\nOffsetIdPrinterParser.INSTANCE_ID = new OffsetIdPrinterParser('Z', '+HH:MM:ss');\nOffsetIdPrinterParser.PATTERNS = PATTERNS;\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar PadPrinterParserDecorator = function () {\n function PadPrinterParserDecorator(printerParser, padWidth, padChar) {\n this._printerParser = printerParser;\n this._padWidth = padWidth;\n this._padChar = padChar;\n }\n\n var _proto = PadPrinterParserDecorator.prototype;\n\n _proto.print = function print(context, buf) {\n var preLen = buf.length();\n\n if (this._printerParser.print(context, buf) === false) {\n return false;\n }\n\n var len = buf.length() - preLen;\n\n if (len > this._padWidth) {\n throw new DateTimeException(\"Cannot print as output of \" + len + \" characters exceeds pad width of \" + this._padWidth);\n }\n\n for (var i = 0; i < this._padWidth - len; i++) {\n buf.insert(preLen, this._padChar);\n }\n\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var strict = context.isStrict();\n var caseSensitive = context.isCaseSensitive();\n assert(!(position > text.length));\n assert(position >= 0);\n\n if (position === text.length) {\n return ~position;\n }\n\n var endPos = position + this._padWidth;\n\n if (endPos > text.length) {\n if (strict) {\n return ~position;\n }\n\n endPos = text.length;\n }\n\n var pos = position;\n\n while (pos < endPos && (caseSensitive ? text[pos] === this._padChar : context.charEquals(text[pos], this._padChar))) {\n pos++;\n }\n\n text = text.substring(0, endPos);\n\n var resultPos = this._printerParser.parse(context, text, pos);\n\n if (resultPos !== endPos && strict) {\n return ~(position + pos);\n }\n\n return resultPos;\n };\n\n _proto.toString = function toString() {\n return \"Pad(\" + this._printerParser + \",\" + this._padWidth + (this._padChar === ' ' ? ')' : ',\\'' + this._padChar + '\\')');\n };\n\n return PadPrinterParserDecorator;\n}();\n\nvar SettingsParser = function (_Enum) {\n _inheritsLoose(SettingsParser, _Enum);\n\n function SettingsParser() {\n return _Enum.apply(this, arguments) || this;\n }\n\n var _proto = SettingsParser.prototype;\n\n _proto.print = function print() {\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n switch (this) {\n case SettingsParser.SENSITIVE:\n context.setCaseSensitive(true);\n break;\n\n case SettingsParser.INSENSITIVE:\n context.setCaseSensitive(false);\n break;\n\n case SettingsParser.STRICT:\n context.setStrict(true);\n break;\n\n case SettingsParser.LENIENT:\n context.setStrict(false);\n break;\n }\n\n return position;\n };\n\n _proto.toString = function toString() {\n switch (this) {\n case SettingsParser.SENSITIVE:\n return 'ParseCaseSensitive(true)';\n\n case SettingsParser.INSENSITIVE:\n return 'ParseCaseSensitive(false)';\n\n case SettingsParser.STRICT:\n return 'ParseStrict(true)';\n\n case SettingsParser.LENIENT:\n return 'ParseStrict(false)';\n }\n };\n\n return SettingsParser;\n}(Enum);\nSettingsParser.SENSITIVE = new SettingsParser('SENSITIVE');\nSettingsParser.INSENSITIVE = new SettingsParser('INSENSITIVE');\nSettingsParser.STRICT = new SettingsParser('STRICT');\nSettingsParser.LENIENT = new SettingsParser('LENIENT');\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringLiteralPrinterParser = function () {\n function StringLiteralPrinterParser(literal) {\n this._literal = literal;\n }\n\n var _proto = StringLiteralPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n buf.append(this._literal);\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n assert(!(position > length || position < 0));\n\n if (context.subSequenceEquals(text, position, this._literal, 0, this._literal.length) === false) {\n return ~position;\n }\n\n return position + this._literal.length;\n };\n\n _proto.toString = function toString() {\n var converted = this._literal.replace(\"'\", \"''\");\n\n return '\\'' + converted + '\\'';\n };\n\n return StringLiteralPrinterParser;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter, Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneRulesProvider = function () {\n function ZoneRulesProvider() {}\n\n ZoneRulesProvider.getRules = function getRules(zoneId) {\n throw new DateTimeException('unsupported ZoneId:' + zoneId);\n };\n\n ZoneRulesProvider.getAvailableZoneIds = function getAvailableZoneIds() {\n return [];\n };\n\n return ZoneRulesProvider;\n}();\n\nvar ZoneRegion = function (_ZoneId) {\n _inheritsLoose(ZoneRegion, _ZoneId);\n\n ZoneRegion.ofId = function ofId(zoneId) {\n var rules = ZoneRulesProvider.getRules(zoneId);\n return new ZoneRegion(zoneId, rules);\n };\n\n function ZoneRegion(id, rules) {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._id = id;\n _this._rules = rules;\n return _this;\n }\n\n var _proto = ZoneRegion.prototype;\n\n _proto.id = function id() {\n return this._id;\n };\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n return ZoneRegion;\n}(ZoneId);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdPrinterParser = function () {\n function ZoneIdPrinterParser(query, description) {\n this.query = query;\n this.description = description;\n }\n\n var _proto = ZoneIdPrinterParser.prototype;\n\n _proto.print = function print(context, buf) {\n var zone = context.getValueQuery(this.query);\n\n if (zone == null) {\n return false;\n }\n\n buf.append(zone.id());\n return true;\n };\n\n _proto.parse = function parse(context, text, position) {\n var length = text.length;\n\n if (position > length) {\n return ~position;\n }\n\n if (position === length) {\n return ~position;\n }\n\n var nextChar = text.charAt(position);\n\n if (nextChar === '+' || nextChar === '-') {\n var newContext = context.copy();\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n return endPos;\n }\n\n var offset = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var zone = ZoneOffset.ofTotalSeconds(offset);\n context.setParsedZone(zone);\n return endPos;\n } else if (length >= position + 2) {\n var nextNextChar = text.charAt(position + 1);\n\n if (context.charEquals(nextChar, 'U') && context.charEquals(nextNextChar, 'T')) {\n if (length >= position + 3 && context.charEquals(text.charAt(position + 2), 'C')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n\n return this._parsePrefixedOffset(context, text, position, position + 2);\n } else if (context.charEquals(nextChar, 'G') && length >= position + 3 && context.charEquals(nextNextChar, 'M') && context.charEquals(text.charAt(position + 2), 'T')) {\n return this._parsePrefixedOffset(context, text, position, position + 3);\n }\n }\n\n if (text.substr(position, 6) === 'SYSTEM') {\n context.setParsedZone(ZoneId.systemDefault());\n return position + 6;\n }\n\n if (context.charEquals(nextChar, 'Z')) {\n context.setParsedZone(ZoneOffset.UTC);\n return position + 1;\n }\n\n var availableZoneIds = ZoneRulesProvider.getAvailableZoneIds();\n\n if (zoneIdTree.size !== availableZoneIds.length) {\n zoneIdTree = ZoneIdTree.createTreeMap(availableZoneIds);\n }\n\n var maxParseLength = length - position;\n var treeMap = zoneIdTree.treeMap;\n var parsedZoneId = null;\n var parseLength = 0;\n\n while (treeMap != null) {\n var parsedSubZoneId = text.substr(position, Math.min(treeMap.length, maxParseLength));\n treeMap = treeMap.get(parsedSubZoneId);\n\n if (treeMap != null && treeMap.isLeaf) {\n parsedZoneId = parsedSubZoneId;\n parseLength = treeMap.length;\n }\n }\n\n if (parsedZoneId != null) {\n context.setParsedZone(ZoneRegion.ofId(parsedZoneId));\n return position + parseLength;\n }\n\n return ~position;\n };\n\n _proto._parsePrefixedOffset = function _parsePrefixedOffset(context, text, prefixPos, position) {\n var prefix = text.substring(prefixPos, position).toUpperCase();\n var newContext = context.copy();\n\n if (position < text.length && context.charEquals(text.charAt(position), 'Z')) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var endPos = OffsetIdPrinterParser.INSTANCE_ID.parse(newContext, text, position);\n\n if (endPos < 0) {\n context.setParsedZone(ZoneId.ofOffset(prefix, ZoneOffset.UTC));\n return position;\n }\n\n var offsetSecs = newContext.getParsed(ChronoField.OFFSET_SECONDS);\n var offset = ZoneOffset.ofTotalSeconds(offsetSecs);\n context.setParsedZone(ZoneId.ofOffset(prefix, offset));\n return endPos;\n };\n\n _proto.toString = function toString() {\n return this.description;\n };\n\n return ZoneIdPrinterParser;\n}();\n\nvar ZoneIdTree = function () {\n ZoneIdTree.createTreeMap = function createTreeMap(availableZoneIds) {\n var sortedZoneIds = availableZoneIds.sort(function (a, b) {\n return a.length - b.length;\n });\n var treeMap = new ZoneIdTreeMap(sortedZoneIds[0].length, false);\n\n for (var i = 0; i < sortedZoneIds.length; i++) {\n treeMap.add(sortedZoneIds[i]);\n }\n\n return new ZoneIdTree(sortedZoneIds.length, treeMap);\n };\n\n function ZoneIdTree(size, treeMap) {\n this.size = size;\n this.treeMap = treeMap;\n }\n\n return ZoneIdTree;\n}();\n\nvar ZoneIdTreeMap = function () {\n function ZoneIdTreeMap(length, isLeaf) {\n if (length === void 0) {\n length = 0;\n }\n\n if (isLeaf === void 0) {\n isLeaf = false;\n }\n\n this.length = length;\n this.isLeaf = isLeaf;\n this._treeMap = {};\n }\n\n var _proto2 = ZoneIdTreeMap.prototype;\n\n _proto2.add = function add(zoneId) {\n var idLength = zoneId.length;\n\n if (idLength === this.length) {\n this._treeMap[zoneId] = new ZoneIdTreeMap(idLength, true);\n } else if (idLength > this.length) {\n var subZoneId = zoneId.substr(0, this.length);\n var subTreeMap = this._treeMap[subZoneId];\n\n if (subTreeMap == null) {\n subTreeMap = new ZoneIdTreeMap(idLength, false);\n this._treeMap[subZoneId] = subTreeMap;\n }\n\n subTreeMap.add(zoneId);\n }\n };\n\n _proto2.get = function get(zoneId) {\n return this._treeMap[zoneId];\n };\n\n return ZoneIdTreeMap;\n}();\n\nvar zoneIdTree = new ZoneIdTree([]);\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar MAX_WIDTH$1 = 15;\nvar DateTimeFormatterBuilder = function () {\n function DateTimeFormatterBuilder() {\n this._active = this;\n this._parent = null;\n this._printerParsers = [];\n this._optional = false;\n this._padNextWidth = 0;\n this._padNextChar = null;\n this._valueParserIndex = -1;\n }\n\n DateTimeFormatterBuilder._of = function _of(parent, optional) {\n requireNonNull(parent, 'parent');\n requireNonNull(optional, 'optional');\n var dtFormatterBuilder = new DateTimeFormatterBuilder();\n dtFormatterBuilder._parent = parent;\n dtFormatterBuilder._optional = optional;\n return dtFormatterBuilder;\n };\n\n var _proto = DateTimeFormatterBuilder.prototype;\n\n _proto.parseCaseSensitive = function parseCaseSensitive() {\n this._appendInternalPrinterParser(SettingsParser.SENSITIVE);\n\n return this;\n };\n\n _proto.parseCaseInsensitive = function parseCaseInsensitive() {\n this._appendInternalPrinterParser(SettingsParser.INSENSITIVE);\n\n return this;\n };\n\n _proto.parseStrict = function parseStrict() {\n this._appendInternalPrinterParser(SettingsParser.STRICT);\n\n return this;\n };\n\n _proto.parseLenient = function parseLenient() {\n this._appendInternalPrinterParser(SettingsParser.LENIENT);\n\n return this;\n };\n\n _proto.appendValue = function appendValue() {\n if (arguments.length === 1) {\n return this._appendValue1.apply(this, arguments);\n } else if (arguments.length === 2) {\n return this._appendValue2.apply(this, arguments);\n } else {\n return this._appendValue4.apply(this, arguments);\n }\n };\n\n _proto._appendValue1 = function _appendValue1(field) {\n requireNonNull(field);\n\n this._appendValuePrinterParser(new NumberPrinterParser(field, 1, MAX_WIDTH$1, SignStyle.NORMAL));\n\n return this;\n };\n\n _proto._appendValue2 = function _appendValue2(field, width) {\n requireNonNull(field);\n\n if (width < 1 || width > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + width);\n }\n\n var pp = new NumberPrinterParser(field, width, width, SignStyle.NOT_NEGATIVE);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValue4 = function _appendValue4(field, minWidth, maxWidth, signStyle) {\n requireNonNull(field);\n requireNonNull(signStyle);\n\n if (minWidth === maxWidth && signStyle === SignStyle.NOT_NEGATIVE) {\n return this._appendValue2(field, maxWidth);\n }\n\n if (minWidth < 1 || minWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + minWidth);\n }\n\n if (maxWidth < 1 || maxWidth > MAX_WIDTH$1) {\n throw new IllegalArgumentException(\"The minimum width must be from 1 to \" + MAX_WIDTH$1 + \" inclusive but was \" + maxWidth);\n }\n\n if (maxWidth < minWidth) {\n throw new IllegalArgumentException(\"The maximum width must exceed or equal the minimum width but \" + maxWidth + \" < \" + minWidth);\n }\n\n var pp = new NumberPrinterParser(field, minWidth, maxWidth, signStyle);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto.appendValueReduced = function appendValueReduced() {\n if (arguments.length === 4 && arguments[3] instanceof ChronoLocalDate) {\n return this._appendValueReducedFieldWidthMaxWidthBaseDate.apply(this, arguments);\n } else {\n return this._appendValueReducedFieldWidthMaxWidthBaseValue.apply(this, arguments);\n }\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseValue = function _appendValueReducedFieldWidthMaxWidthBaseValue(field, width, maxWidth, baseValue) {\n requireNonNull(field, 'field');\n var pp = new ReducedPrinterParser(field, width, maxWidth, baseValue, null);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValueReducedFieldWidthMaxWidthBaseDate = function _appendValueReducedFieldWidthMaxWidthBaseDate(field, width, maxWidth, baseDate) {\n requireNonNull(field, 'field');\n requireNonNull(baseDate, 'baseDate');\n requireInstance(baseDate, ChronoLocalDate, 'baseDate');\n var pp = new ReducedPrinterParser(field, width, maxWidth, 0, baseDate);\n\n this._appendValuePrinterParser(pp);\n\n return this;\n };\n\n _proto._appendValuePrinterParser = function _appendValuePrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._valueParserIndex >= 0 && this._active._printerParsers[this._active._valueParserIndex] instanceof NumberPrinterParser) {\n var activeValueParser = this._active._valueParserIndex;\n var basePP = this._active._printerParsers[activeValueParser];\n\n if (pp.minWidth() === pp.maxWidth() && pp.signStyle() === SignStyle.NOT_NEGATIVE) {\n basePP = basePP.withSubsequentWidth(pp.maxWidth());\n\n this._appendInternal(pp.withFixedWidth());\n\n this._active._valueParserIndex = activeValueParser;\n } else {\n basePP = basePP.withFixedWidth();\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n this._active._printerParsers[activeValueParser] = basePP;\n } else {\n this._active._valueParserIndex = this._appendInternal(pp);\n }\n\n return this;\n };\n\n _proto.appendFraction = function appendFraction(field, minWidth, maxWidth, decimalPoint) {\n this._appendInternal(new FractionPrinterParser(field, minWidth, maxWidth, decimalPoint));\n\n return this;\n };\n\n _proto.appendInstant = function appendInstant(fractionalDigits) {\n if (fractionalDigits === void 0) {\n fractionalDigits = -2;\n }\n\n if (fractionalDigits < -2 || fractionalDigits > 9) {\n throw new IllegalArgumentException('Invalid fractional digits: ' + fractionalDigits);\n }\n\n this._appendInternal(new InstantPrinterParser(fractionalDigits));\n\n return this;\n };\n\n _proto.appendOffsetId = function appendOffsetId() {\n this._appendInternal(OffsetIdPrinterParser.INSTANCE_ID);\n\n return this;\n };\n\n _proto.appendOffset = function appendOffset(pattern, noOffsetText) {\n this._appendInternalPrinterParser(new OffsetIdPrinterParser(noOffsetText, pattern));\n\n return this;\n };\n\n _proto.appendZoneId = function appendZoneId() {\n this._appendInternal(new ZoneIdPrinterParser(TemporalQueries.zoneId(), 'ZoneId()'));\n\n return this;\n };\n\n _proto.appendPattern = function appendPattern(pattern) {\n requireNonNull(pattern, 'pattern');\n\n this._parsePattern(pattern);\n\n return this;\n };\n\n _proto.appendZoneText = function appendZoneText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendText = function appendText() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendLocalizedOffset = function appendLocalizedOffset() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto.appendWeekField = function appendWeekField() {\n throw new IllegalArgumentException('Pattern using (localized) text not implemented, use js-joda-locale plugin!');\n };\n\n _proto._parsePattern = function _parsePattern(pattern) {\n var FIELD_MAP = {\n 'G': ChronoField.ERA,\n 'y': ChronoField.YEAR_OF_ERA,\n 'u': ChronoField.YEAR,\n 'Q': IsoFields.QUARTER_OF_YEAR,\n 'q': IsoFields.QUARTER_OF_YEAR,\n 'M': ChronoField.MONTH_OF_YEAR,\n 'L': ChronoField.MONTH_OF_YEAR,\n 'D': ChronoField.DAY_OF_YEAR,\n 'd': ChronoField.DAY_OF_MONTH,\n 'F': ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH,\n 'E': ChronoField.DAY_OF_WEEK,\n 'c': ChronoField.DAY_OF_WEEK,\n 'e': ChronoField.DAY_OF_WEEK,\n 'a': ChronoField.AMPM_OF_DAY,\n 'H': ChronoField.HOUR_OF_DAY,\n 'k': ChronoField.CLOCK_HOUR_OF_DAY,\n 'K': ChronoField.HOUR_OF_AMPM,\n 'h': ChronoField.CLOCK_HOUR_OF_AMPM,\n 'm': ChronoField.MINUTE_OF_HOUR,\n 's': ChronoField.SECOND_OF_MINUTE,\n 'S': ChronoField.NANO_OF_SECOND,\n 'A': ChronoField.MILLI_OF_DAY,\n 'n': ChronoField.NANO_OF_SECOND,\n 'N': ChronoField.NANO_OF_DAY\n };\n\n for (var pos = 0; pos < pattern.length; pos++) {\n var cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n var start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n var count = pos - start;\n\n if (cur === 'p') {\n var pad = 0;\n\n if (pos < pattern.length) {\n cur = pattern.charAt(pos);\n\n if (cur >= 'A' && cur <= 'Z' || cur >= 'a' && cur <= 'z') {\n pad = count;\n start = pos++;\n\n for (; pos < pattern.length && pattern.charAt(pos) === cur; pos++) {\n }\n\n count = pos - start;\n }\n }\n\n if (pad === 0) {\n throw new IllegalArgumentException('Pad letter \\'p\\' must be followed by valid pad pattern: ' + pattern);\n }\n\n this.padNext(pad);\n }\n\n var field = FIELD_MAP[cur];\n\n if (field != null) {\n this._parseField(cur, count, field);\n } else if (cur === 'z') {\n if (count > 4) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n } else if (count === 4) {\n this.appendZoneText(TextStyle.FULL);\n } else {\n this.appendZoneText(TextStyle.SHORT);\n }\n } else if (cur === 'V') {\n if (count !== 2) {\n throw new IllegalArgumentException('Pattern letter count must be 2: ' + cur);\n }\n\n this.appendZoneId();\n } else if (cur === 'Z') {\n if (count < 4) {\n this.appendOffset('+HHMM', '+0000');\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else if (count === 5) {\n this.appendOffset('+HH:MM:ss', 'Z');\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n } else if (cur === 'O') {\n if (count === 1) {\n this.appendLocalizedOffset(TextStyle.SHORT);\n } else if (count === 4) {\n this.appendLocalizedOffset(TextStyle.FULL);\n } else {\n throw new IllegalArgumentException('Pattern letter count must be 1 or 4: ' + cur);\n }\n } else if (cur === 'X') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], 'Z');\n } else if (cur === 'x') {\n if (count > 5) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n var zero = count === 1 ? '+00' : count % 2 === 0 ? '+0000' : '+00:00';\n this.appendOffset(OffsetIdPrinterParser.PATTERNS[count + (count === 1 ? 0 : 1)], zero);\n } else if (cur === 'W') {\n if (count > 1) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('W', count);\n } else if (cur === 'w') {\n if (count > 2) {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n this.appendWeekField('w', count);\n } else if (cur === 'Y') {\n this.appendWeekField('Y', count);\n } else {\n throw new IllegalArgumentException('Unknown pattern letter: ' + cur);\n }\n\n pos--;\n } else if (cur === '\\'') {\n var _start = pos++;\n\n for (; pos < pattern.length; pos++) {\n if (pattern.charAt(pos) === '\\'') {\n if (pos + 1 < pattern.length && pattern.charAt(pos + 1) === '\\'') {\n pos++;\n } else {\n break;\n }\n }\n }\n\n if (pos >= pattern.length) {\n throw new IllegalArgumentException('Pattern ends with an incomplete string literal: ' + pattern);\n }\n\n var str = pattern.substring(_start + 1, pos);\n\n if (str.length === 0) {\n this.appendLiteral('\\'');\n } else {\n this.appendLiteral(str.replace('\\'\\'', '\\''));\n }\n } else if (cur === '[') {\n this.optionalStart();\n } else if (cur === ']') {\n if (this._active._parent === null) {\n throw new IllegalArgumentException('Pattern invalid as it contains ] without previous [');\n }\n\n this.optionalEnd();\n } else if (cur === '{' || cur === '}' || cur === '#') {\n throw new IllegalArgumentException('Pattern includes reserved character: \\'' + cur + '\\'');\n } else {\n this.appendLiteral(cur);\n }\n }\n };\n\n _proto._parseField = function _parseField(cur, count, field) {\n switch (cur) {\n case 'u':\n case 'y':\n if (count === 2) {\n this.appendValueReduced(field, 2, 2, ReducedPrinterParser.BASE_DATE);\n } else if (count < 4) {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.NORMAL);\n } else {\n this.appendValue(field, count, MAX_WIDTH$1, SignStyle.EXCEEDS_PAD);\n }\n\n break;\n\n case 'M':\n case 'Q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'L':\n case 'q':\n switch (count) {\n case 1:\n this.appendValue(field);\n break;\n\n case 2:\n this.appendValue(field, 2);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'e':\n switch (count) {\n case 1:\n case 2:\n this.appendWeekField('e', count);\n break;\n\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'c':\n switch (count) {\n case 1:\n this.appendWeekField('c', count);\n break;\n\n case 2:\n throw new IllegalArgumentException('Invalid number of pattern letters: ' + cur);\n\n case 3:\n this.appendText(field, TextStyle.SHORT_STANDALONE);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL_STANDALONE);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW_STANDALONE);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'a':\n if (count === 1) {\n this.appendText(field, TextStyle.SHORT);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'E':\n case 'G':\n switch (count) {\n case 1:\n case 2:\n case 3:\n this.appendText(field, TextStyle.SHORT);\n break;\n\n case 4:\n this.appendText(field, TextStyle.FULL);\n break;\n\n case 5:\n this.appendText(field, TextStyle.NARROW);\n break;\n\n default:\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'S':\n this.appendFraction(ChronoField.NANO_OF_SECOND, count, count, false);\n break;\n\n case 'F':\n if (count === 1) {\n this.appendValue(field);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'd':\n case 'h':\n case 'H':\n case 'k':\n case 'K':\n case 'm':\n case 's':\n if (count === 1) {\n this.appendValue(field);\n } else if (count === 2) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n case 'D':\n if (count === 1) {\n this.appendValue(field);\n } else if (count <= 3) {\n this.appendValue(field, count);\n } else {\n throw new IllegalArgumentException('Too many pattern letters: ' + cur);\n }\n\n break;\n\n default:\n if (count === 1) {\n this.appendValue(field);\n } else {\n this.appendValue(field, count);\n }\n\n break;\n }\n };\n\n _proto.padNext = function padNext() {\n if (arguments.length === 1) {\n return this._padNext1.apply(this, arguments);\n } else {\n return this._padNext2.apply(this, arguments);\n }\n };\n\n _proto._padNext1 = function _padNext1(padWidth) {\n return this._padNext2(padWidth, ' ');\n };\n\n _proto._padNext2 = function _padNext2(padWidth, padChar) {\n if (padWidth < 1) {\n throw new IllegalArgumentException('The pad width must be at least one but was ' + padWidth);\n }\n\n this._active._padNextWidth = padWidth;\n this._active._padNextChar = padChar;\n this._active._valueParserIndex = -1;\n return this;\n };\n\n _proto.optionalStart = function optionalStart() {\n this._active._valueParserIndex = -1;\n this._active = DateTimeFormatterBuilder._of(this._active, true);\n return this;\n };\n\n _proto.optionalEnd = function optionalEnd() {\n if (this._active._parent == null) {\n throw new IllegalStateException('Cannot call optionalEnd() as there was no previous call to optionalStart()');\n }\n\n if (this._active._printerParsers.length > 0) {\n var cpp = new CompositePrinterParser(this._active._printerParsers, this._active._optional);\n this._active = this._active._parent;\n\n this._appendInternal(cpp);\n } else {\n this._active = this._active._parent;\n }\n\n return this;\n };\n\n _proto._appendInternal = function _appendInternal(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.appendLiteral = function appendLiteral(literal) {\n assert(literal != null);\n\n if (literal.length > 0) {\n if (literal.length === 1) {\n this._appendInternalPrinterParser(new CharLiteralPrinterParser(literal.charAt(0)));\n } else {\n this._appendInternalPrinterParser(new StringLiteralPrinterParser(literal));\n }\n }\n\n return this;\n };\n\n _proto._appendInternalPrinterParser = function _appendInternalPrinterParser(pp) {\n assert(pp != null);\n\n if (this._active._padNextWidth > 0) {\n if (pp != null) {\n pp = new PadPrinterParserDecorator(pp, this._active._padNextWidth, this._active._padNextChar);\n }\n\n this._active._padNextWidth = 0;\n this._active._padNextChar = 0;\n }\n\n this._active._printerParsers.push(pp);\n\n this._active._valueParserIndex = -1;\n return this._active._printerParsers.length - 1;\n };\n\n _proto.append = function append(formatter) {\n requireNonNull(formatter, 'formatter');\n\n this._appendInternal(formatter._toPrinterParser(false));\n\n return this;\n };\n\n _proto.toFormatter = function toFormatter(resolverStyle) {\n if (resolverStyle === void 0) {\n resolverStyle = ResolverStyle.SMART;\n }\n\n while (this._active._parent != null) {\n this.optionalEnd();\n }\n\n var pp = new CompositePrinterParser(this._printerParsers, false);\n return new DateTimeFormatter(pp, null, DecimalStyle.STANDARD, resolverStyle, null, null, null);\n };\n\n return DateTimeFormatterBuilder;\n}();\nvar SECONDS_PER_10000_YEARS = 146097 * 25 * 86400;\nvar SECONDS_0000_TO_1970 = (146097 * 5 - (30 * 365 + 7)) * 86400;\n\nvar InstantPrinterParser = function () {\n function InstantPrinterParser(fractionalDigits) {\n this.fractionalDigits = fractionalDigits;\n }\n\n var _proto2 = InstantPrinterParser.prototype;\n\n _proto2.print = function print(context, buf) {\n var inSecs = context.getValue(ChronoField.INSTANT_SECONDS);\n var inNanos = 0;\n\n if (context.temporal().isSupported(ChronoField.NANO_OF_SECOND)) {\n inNanos = context.temporal().getLong(ChronoField.NANO_OF_SECOND);\n }\n\n if (inSecs == null) {\n return false;\n }\n\n var inSec = inSecs;\n var inNano = ChronoField.NANO_OF_SECOND.checkValidIntValue(inNanos);\n\n if (inSec >= -SECONDS_0000_TO_1970) {\n var zeroSecs = inSec - SECONDS_PER_10000_YEARS + SECONDS_0000_TO_1970;\n var hi = MathUtil.floorDiv(zeroSecs, SECONDS_PER_10000_YEARS) + 1;\n var lo = MathUtil.floorMod(zeroSecs, SECONDS_PER_10000_YEARS);\n var ldt = LocalDateTime.ofEpochSecond(lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n if (hi > 0) {\n buf.append('+').append(hi);\n }\n\n buf.append(ldt);\n\n if (ldt.second() === 0) {\n buf.append(':00');\n }\n } else {\n var _zeroSecs = inSec + SECONDS_0000_TO_1970;\n\n var _hi = MathUtil.intDiv(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _lo = MathUtil.intMod(_zeroSecs, SECONDS_PER_10000_YEARS);\n\n var _ldt = LocalDateTime.ofEpochSecond(_lo - SECONDS_0000_TO_1970, 0, ZoneOffset.UTC);\n\n var pos = buf.length();\n buf.append(_ldt);\n\n if (_ldt.second() === 0) {\n buf.append(':00');\n }\n\n if (_hi < 0) {\n if (_ldt.year() === -10000) {\n buf.replace(pos, pos + 2, '' + (_hi - 1));\n } else if (_lo === 0) {\n buf.insert(pos, _hi);\n } else {\n buf.insert(pos + 1, Math.abs(_hi));\n }\n }\n }\n\n if (this.fractionalDigits === -2) {\n if (inNano !== 0) {\n buf.append('.');\n\n if (MathUtil.intMod(inNano, 1000000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000000) + 1000)).substring(1));\n } else if (MathUtil.intMod(inNano, 1000) === 0) {\n buf.append(('' + (MathUtil.intDiv(inNano, 1000) + 1000000)).substring(1));\n } else {\n buf.append(('' + (inNano + 1000000000)).substring(1));\n }\n }\n } else if (this.fractionalDigits > 0 || this.fractionalDigits === -1 && inNano > 0) {\n buf.append('.');\n var div = 100000000;\n\n for (var i = 0; this.fractionalDigits === -1 && inNano > 0 || i < this.fractionalDigits; i++) {\n var digit = MathUtil.intDiv(inNano, div);\n buf.append(digit);\n inNano = inNano - digit * div;\n div = MathUtil.intDiv(div, 10);\n }\n }\n\n buf.append('Z');\n return true;\n };\n\n _proto2.parse = function parse(context, text, position) {\n var newContext = context.copy();\n var minDigits = this.fractionalDigits < 0 ? 0 : this.fractionalDigits;\n var maxDigits = this.fractionalDigits < 0 ? 9 : this.fractionalDigits;\n\n var parser = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).appendFraction(ChronoField.NANO_OF_SECOND, minDigits, maxDigits, true).appendLiteral('Z').toFormatter()._toPrinterParser(false);\n\n var pos = parser.parse(newContext, text, position);\n\n if (pos < 0) {\n return pos;\n }\n\n var yearParsed = newContext.getParsed(ChronoField.YEAR);\n var month = newContext.getParsed(ChronoField.MONTH_OF_YEAR);\n var day = newContext.getParsed(ChronoField.DAY_OF_MONTH);\n var hour = newContext.getParsed(ChronoField.HOUR_OF_DAY);\n var min = newContext.getParsed(ChronoField.MINUTE_OF_HOUR);\n var secVal = newContext.getParsed(ChronoField.SECOND_OF_MINUTE);\n var nanoVal = newContext.getParsed(ChronoField.NANO_OF_SECOND);\n var sec = secVal != null ? secVal : 0;\n var nano = nanoVal != null ? nanoVal : 0;\n var year = MathUtil.intMod(yearParsed, 10000);\n var days = 0;\n\n if (hour === 24 && min === 0 && sec === 0 && nano === 0) {\n hour = 0;\n days = 1;\n } else if (hour === 23 && min === 59 && sec === 60) {\n context.setParsedLeapSecond();\n sec = 59;\n }\n\n var instantSecs;\n\n try {\n var ldt = LocalDateTime.of(year, month, day, hour, min, sec, 0).plusDays(days);\n instantSecs = ldt.toEpochSecond(ZoneOffset.UTC);\n instantSecs += MathUtil.safeMultiply(MathUtil.intDiv(yearParsed, 10000), SECONDS_PER_10000_YEARS);\n } catch (ex) {\n return ~position;\n }\n\n var successPos = pos;\n successPos = context.setParsedField(ChronoField.INSTANT_SECONDS, instantSecs, position, successPos);\n return context.setParsedField(ChronoField.NANO_OF_SECOND, nano, position, successPos);\n };\n\n _proto2.toString = function toString() {\n return 'Instant()';\n };\n\n return InstantPrinterParser;\n}();\n\nfunction _init$9() {\n ReducedPrinterParser.BASE_DATE = LocalDate.of(2000, 1, 1);\n DateTimeFormatterBuilder.CompositePrinterParser = CompositePrinterParser;\n DateTimeFormatterBuilder.PadPrinterParserDecorator = PadPrinterParserDecorator;\n DateTimeFormatterBuilder.SettingsParser = SettingsParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.StringLiteralPrinterParser = StringLiteralPrinterParser;\n DateTimeFormatterBuilder.CharLiteralPrinterParser = CharLiteralPrinterParser;\n DateTimeFormatterBuilder.NumberPrinterParser = NumberPrinterParser;\n DateTimeFormatterBuilder.ReducedPrinterParser = ReducedPrinterParser;\n DateTimeFormatterBuilder.FractionPrinterParser = FractionPrinterParser;\n DateTimeFormatterBuilder.OffsetIdPrinterParser = OffsetIdPrinterParser;\n DateTimeFormatterBuilder.ZoneIdPrinterParser = ZoneIdPrinterParser;\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar StringBuilder = function () {\n function StringBuilder() {\n this._str = '';\n }\n\n var _proto = StringBuilder.prototype;\n\n _proto.append = function append(str) {\n this._str += str;\n return this;\n };\n\n _proto.appendChar = function appendChar(str) {\n this._str += str[0];\n return this;\n };\n\n _proto.insert = function insert(offset, str) {\n this._str = this._str.slice(0, offset) + str + this._str.slice(offset);\n return this;\n };\n\n _proto.replace = function replace(start, end, str) {\n this._str = this._str.slice(0, start) + str + this._str.slice(end);\n return this;\n };\n\n _proto.length = function length() {\n return this._str.length;\n };\n\n _proto.setLength = function setLength(length) {\n this._str = this._str.slice(0, length);\n return this;\n };\n\n _proto.toString = function toString() {\n return this._str;\n };\n\n return StringBuilder;\n}();\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar DateTimeFormatter = function () {\n DateTimeFormatter.parsedExcessDays = function parsedExcessDays() {\n return DateTimeFormatter.PARSED_EXCESS_DAYS;\n };\n\n DateTimeFormatter.parsedLeapSecond = function parsedLeapSecond() {\n return DateTimeFormatter.PARSED_LEAP_SECOND;\n };\n\n DateTimeFormatter.ofPattern = function ofPattern(pattern) {\n return new DateTimeFormatterBuilder().appendPattern(pattern).toFormatter();\n };\n\n function DateTimeFormatter(printerParser, locale, decimalStyle, resolverStyle, resolverFields, chrono, zone) {\n if (chrono === void 0) {\n chrono = IsoChronology.INSTANCE;\n }\n\n assert(printerParser != null);\n assert(decimalStyle != null);\n assert(resolverStyle != null);\n this._printerParser = printerParser;\n this._locale = locale;\n this._decimalStyle = decimalStyle;\n this._resolverStyle = resolverStyle;\n this._resolverFields = resolverFields;\n this._chrono = chrono;\n this._zone = zone;\n }\n\n var _proto = DateTimeFormatter.prototype;\n\n _proto.locale = function locale() {\n return this._locale;\n };\n\n _proto.decimalStyle = function decimalStyle() {\n return this._decimalStyle;\n };\n\n _proto.chronology = function chronology() {\n return this._chrono;\n };\n\n _proto.withChronology = function withChronology(chrono) {\n if (this._chrono != null && this._chrono.equals(chrono)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, this._resolverStyle, this._resolverFields, chrono, this._zone);\n };\n\n _proto.withLocale = function withLocale() {\n return this;\n };\n\n _proto.withResolverStyle = function withResolverStyle(resolverStyle) {\n requireNonNull(resolverStyle, 'resolverStyle');\n\n if (resolverStyle.equals(this._resolverStyle)) {\n return this;\n }\n\n return new DateTimeFormatter(this._printerParser, this._locale, this._decimalStyle, resolverStyle, this._resolverFields, this._chrono, this._zone);\n };\n\n _proto.format = function format(temporal) {\n var buf = new StringBuilder(32);\n\n this._formatTo(temporal, buf);\n\n return buf.toString();\n };\n\n _proto._formatTo = function _formatTo(temporal, appendable) {\n requireNonNull(temporal, 'temporal');\n requireNonNull(appendable, 'appendable');\n var context = new DateTimePrintContext(temporal, this);\n\n this._printerParser.print(context, appendable);\n };\n\n _proto.parse = function parse(text, type) {\n if (arguments.length === 1) {\n return this.parse1(text);\n } else {\n return this.parse2(text, type);\n }\n };\n\n _proto.parse1 = function parse1(text) {\n requireNonNull(text, 'text');\n\n try {\n return this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto.parse2 = function parse2(text, type) {\n requireNonNull(text, 'text');\n requireNonNull(type, 'type');\n\n try {\n var builder = this._parseToBuilder(text, null).resolve(this._resolverStyle, this._resolverFields);\n\n return builder.build(type);\n } catch (ex) {\n if (ex instanceof DateTimeParseException) {\n throw ex;\n } else {\n throw this._createError(text, ex);\n }\n }\n };\n\n _proto._createError = function _createError(text, ex) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substring(0, 64) + '...';\n } else {\n abbr = text;\n }\n\n return new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed: ' + ex.message, text, 0, ex);\n };\n\n _proto._parseToBuilder = function _parseToBuilder(text, position) {\n var pos = position != null ? position : new ParsePosition(0);\n\n var result = this._parseUnresolved0(text, pos);\n\n if (result == null || pos.getErrorIndex() >= 0 || position == null && pos.getIndex() < text.length) {\n var abbr = '';\n\n if (text.length > 64) {\n abbr = text.substr(0, 64).toString() + '...';\n } else {\n abbr = text;\n }\n\n if (pos.getErrorIndex() >= 0) {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed at index ' + pos.getErrorIndex(), text, pos.getErrorIndex());\n } else {\n throw new DateTimeParseException('Text \\'' + abbr + '\\' could not be parsed, unparsed text found at index ' + pos.getIndex(), text, pos.getIndex());\n }\n }\n\n return result.toBuilder();\n };\n\n _proto.parseUnresolved = function parseUnresolved(text, position) {\n return this._parseUnresolved0(text, position);\n };\n\n _proto._parseUnresolved0 = function _parseUnresolved0(text, position) {\n assert(text != null, 'text', NullPointerException);\n assert(position != null, 'position', NullPointerException);\n var context = new DateTimeParseContext(this);\n var pos = position.getIndex();\n pos = this._printerParser.parse(context, text, pos);\n\n if (pos < 0) {\n position.setErrorIndex(~pos);\n return null;\n }\n\n position.setIndex(pos);\n return context.toParsed();\n };\n\n _proto._toPrinterParser = function _toPrinterParser(optional) {\n return this._printerParser.withOptional(optional);\n };\n\n _proto.toString = function toString() {\n var pattern = this._printerParser.toString();\n\n return pattern.indexOf('[') === 0 ? pattern : pattern.substring(1, pattern.length - 1);\n };\n\n return DateTimeFormatter;\n}();\nfunction _init$a() {\n DateTimeFormatter.ISO_LOCAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_LOCAL_TIME = new DateTimeFormatterBuilder().appendValue(ChronoField.HOUR_OF_DAY, 2).appendLiteral(':').appendValue(ChronoField.MINUTE_OF_HOUR, 2).optionalStart().appendLiteral(':').appendValue(ChronoField.SECOND_OF_MINUTE, 2).optionalStart().appendFraction(ChronoField.NANO_OF_SECOND, 0, 9, true).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_LOCAL_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendLiteral('T').append(DateTimeFormatter.ISO_LOCAL_TIME).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_INSTANT = new DateTimeFormatterBuilder().parseCaseInsensitive().appendInstant().toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_OFFSET_DATE_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ZONED_DATE_TIME = new DateTimeFormatterBuilder().append(DateTimeFormatter.ISO_OFFSET_DATE_TIME).optionalStart().appendLiteral('[').parseCaseSensitive().appendZoneId().appendLiteral(']').toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.BASIC_ISO_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendValue(ChronoField.MONTH_OF_YEAR, 2).appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_DATE = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_DATE).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_OFFSET_TIME = new DateTimeFormatterBuilder().parseCaseInsensitive().append(DateTimeFormatter.ISO_LOCAL_TIME).appendOffsetId().toFormatter(ResolverStyle.STRICT).withChronology(IsoChronology.INSTANCE);\n DateTimeFormatter.ISO_ORDINAL_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.DAY_OF_YEAR).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.ISO_WEEK_DATE = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-W').appendValue(ChronoField.ALIGNED_WEEK_OF_YEAR).appendLiteral('-').appendValue(ChronoField.DAY_OF_WEEK).toFormatter(ResolverStyle.STRICT);\n DateTimeFormatter.PARSED_EXCESS_DAYS = createTemporalQuery('PARSED_EXCESS_DAYS', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.excessDays;\n } else {\n return Period.ZERO;\n }\n });\n DateTimeFormatter.PARSED_LEAP_SECOND = createTemporalQuery('PARSED_LEAP_SECOND', function (temporal) {\n if (temporal instanceof DateTimeBuilder) {\n return temporal.leapSecond;\n } else {\n return false;\n }\n });\n}\n\nvar MonthDay = function (_TemporalAccessor) {\n _inheritsLoose(MonthDay, _TemporalAccessor);\n\n MonthDay.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return MonthDay.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return MonthDay.nowZoneId(zoneIdOrClock);\n } else {\n return MonthDay.nowClock(zoneIdOrClock);\n }\n };\n\n MonthDay.now0 = function now0() {\n return this.nowClock(Clock.systemDefaultZone());\n };\n\n MonthDay.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n return this.nowClock(Clock.system(zone));\n };\n\n MonthDay.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n var now = LocalDate.now(clock);\n return MonthDay.of(now.month(), now.dayOfMonth());\n };\n\n MonthDay.of = function of(monthOrNumber, number) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return MonthDay.ofMonthNumber(monthOrNumber, number);\n } else {\n return MonthDay.ofNumberNumber(monthOrNumber, number);\n }\n };\n\n MonthDay.ofMonthNumber = function ofMonthNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > month.maxLength()) {\n throw new DateTimeException('Illegal value for DayOfMonth field, value ' + dayOfMonth + ' is not valid for month ' + month.toString());\n }\n\n return new MonthDay(month.value(), dayOfMonth);\n };\n\n MonthDay.ofNumberNumber = function ofNumberNumber(month, dayOfMonth) {\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n return MonthDay.of(Month.of(month), dayOfMonth);\n };\n\n MonthDay.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof MonthDay) {\n return temporal;\n }\n\n try {\n return MonthDay.of(temporal.get(ChronoField.MONTH_OF_YEAR), temporal.get(ChronoField.DAY_OF_MONTH));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain MonthDay from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n MonthDay.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return MonthDay.parseString(text);\n } else {\n return MonthDay.parseStringFormatter(text, formatter);\n }\n };\n\n MonthDay.parseString = function parseString(text) {\n return MonthDay.parseStringFormatter(text, PARSER);\n };\n\n MonthDay.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, MonthDay.FROM);\n };\n\n function MonthDay(month, dayOfMonth) {\n var _this;\n\n _this = _TemporalAccessor.call(this) || this;\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n return _this;\n }\n\n var _proto = MonthDay.prototype;\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.isSupported = function isSupported(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.MONTH_OF_YEAR || field === ChronoField.DAY_OF_MONTH;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.MONTH_OF_YEAR) {\n return field.range();\n } else if (field === ChronoField.DAY_OF_MONTH) {\n return ValueRange.of(1, this.month().minLength(), this.month().maxLength());\n }\n\n return _TemporalAccessor.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isValidYear = function isValidYear(year) {\n return (this._day === 29 && this._month === 2 && Year.isLeap(year) === false) === false;\n };\n\n _proto.withMonth = function withMonth(month) {\n return this.with(Month.of(month));\n };\n\n _proto.with = function _with(month) {\n requireNonNull(month, 'month');\n\n if (month.value() === this._month) {\n return this;\n }\n\n var day = Math.min(this._day, month.maxLength());\n return new MonthDay(month.value(), day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (dayOfMonth === this._day) {\n return this;\n }\n\n return MonthDay.of(this._month, dayOfMonth);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n temporal = temporal.with(ChronoField.MONTH_OF_YEAR, this._month);\n return temporal.with(ChronoField.DAY_OF_MONTH, Math.min(temporal.range(ChronoField.DAY_OF_MONTH).maximum(), this._day));\n };\n\n _proto.atYear = function atYear(year) {\n return LocalDate.of(year, this._month, this.isValidYear(year) ? this._day : 28);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n var cmp = this._month - other.monthValue();\n\n if (cmp === 0) {\n cmp = this._day - other.dayOfMonth();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, MonthDay, 'other');\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof MonthDay) {\n var other = obj;\n return this.monthValue() === other.monthValue() && this.dayOfMonth() === other.dayOfMonth();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '--' + (this._month < 10 ? '0' : '') + this._month + (this._day < 10 ? '-0' : '-') + this._day;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n return MonthDay;\n}(TemporalAccessor);\nvar PARSER;\nfunction _init$b() {\n PARSER = new DateTimeFormatterBuilder().appendLiteral('--').appendValue(ChronoField.MONTH_OF_YEAR, 2).appendLiteral('-').appendValue(ChronoField.DAY_OF_MONTH, 2).toFormatter();\n MonthDay.FROM = createTemporalQuery('MonthDay.FROM', function (temporal) {\n return MonthDay.from(temporal);\n });\n}\n\nvar YearMonth = function (_Temporal) {\n _inheritsLoose(YearMonth, _Temporal);\n\n YearMonth.now = function now(zoneIdOrClock) {\n if (arguments.length === 0) {\n return YearMonth.now0();\n } else if (arguments.length === 1 && zoneIdOrClock instanceof ZoneId) {\n return YearMonth.nowZoneId(zoneIdOrClock);\n } else {\n return YearMonth.nowClock(zoneIdOrClock);\n }\n };\n\n YearMonth.now0 = function now0() {\n return YearMonth.nowClock(Clock.systemDefaultZone());\n };\n\n YearMonth.nowZoneId = function nowZoneId(zone) {\n return YearMonth.nowClock(Clock.system(zone));\n };\n\n YearMonth.nowClock = function nowClock(clock) {\n var now = LocalDate.now(clock);\n return YearMonth.of(now.year(), now.month());\n };\n\n YearMonth.of = function of(year, monthOrNumber) {\n if (arguments.length === 2 && monthOrNumber instanceof Month) {\n return YearMonth.ofNumberMonth(year, monthOrNumber);\n } else {\n return YearMonth.ofNumberNumber(year, monthOrNumber);\n }\n };\n\n YearMonth.ofNumberMonth = function ofNumberMonth(year, month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.ofNumberNumber(year, month.value());\n };\n\n YearMonth.ofNumberNumber = function ofNumberNumber(year, month) {\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(year, month);\n };\n\n YearMonth.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof YearMonth) {\n return temporal;\n }\n\n try {\n return YearMonth.of(temporal.get(ChronoField.YEAR), temporal.get(ChronoField.MONTH_OF_YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain YearMonth from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n YearMonth.parse = function parse(text, formatter) {\n if (arguments.length === 1) {\n return YearMonth.parseString(text);\n } else {\n return YearMonth.parseStringFormatter(text, formatter);\n }\n };\n\n YearMonth.parseString = function parseString(text) {\n return YearMonth.parseStringFormatter(text, PARSER$1);\n };\n\n YearMonth.parseStringFormatter = function parseStringFormatter(text, formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, YearMonth.FROM);\n };\n\n function YearMonth(year, month) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n return _this;\n }\n\n var _proto = YearMonth.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.MONTH_OF_YEAR || field === ChronoField.PROLEPTIC_MONTH || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.MONTHS || unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field === ChronoField.YEAR_OF_ERA) {\n return this.year() <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._getProlepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._getProlepticMonth = function _getProlepticMonth() {\n return MathUtil.safeAdd(MathUtil.safeMultiply(this._year, 12), this._month - 1);\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.isValidDay = function isValidDay(dayOfMonth) {\n return dayOfMonth >= 1 && dayOfMonth <= this.lengthOfMonth();\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n return this.month().length(this.isLeapYear());\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.with = function _with(adjusterOrField, value) {\n if (arguments.length === 1) {\n return this.withAdjuster(adjusterOrField);\n } else {\n return this.withFieldValue(adjusterOrField, value);\n }\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n ChronoField.YEAR.checkValidValue(year);\n return new YearMonth(year, this._month);\n };\n\n _proto.withMonth = function withMonth(month) {\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n return new YearMonth(this._year, month);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return this.withYear(newYear);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return new YearMonth(newYear, newMonth);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusAmountUnit(MathUtil.MAX_SAFE_INTEGER, unit).plusAmountUnit(1, unit) : this.plusAmountUnit(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MIN_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return monthsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusMonths(Math.MAX_SAFE_INTEGER).plusMonths(1) : this.plusMonths(-monthsToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n requireInstance(_query, TemporalQuery, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.MONTHS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, Temporal, 'temporal');\n return temporal.with(ChronoField.PROLEPTIC_MONTH, this._getProlepticMonth());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n requireInstance(endExclusive, Temporal, 'endExclusive');\n requireInstance(unit, TemporalUnit, 'unit');\n var end = YearMonth.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var monthsUntil = end._getProlepticMonth() - this._getProlepticMonth();\n\n switch (unit) {\n case ChronoUnit.MONTHS:\n return monthsUntil;\n\n case ChronoUnit.YEARS:\n return monthsUntil / 12;\n\n case ChronoUnit.DECADES:\n return monthsUntil / 120;\n\n case ChronoUnit.CENTURIES:\n return monthsUntil / 1200;\n\n case ChronoUnit.MILLENNIA:\n return monthsUntil / 12000;\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDay = function atDay(dayOfMonth) {\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.atEndOfMonth = function atEndOfMonth() {\n return LocalDate.of(this._year, this._month, this.lengthOfMonth());\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, YearMonth, 'other');\n var cmp = this._year - other.year();\n\n if (cmp === 0) {\n cmp = this._month - other.monthValue();\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(obj) {\n if (this === obj) {\n return true;\n }\n\n if (obj instanceof YearMonth) {\n var other = obj;\n return this.year() === other.year() && this.monthValue() === other.monthValue();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return PARSER$1.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return YearMonth;\n}(Temporal);\nvar PARSER$1;\nfunction _init$c() {\n PARSER$1 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).appendLiteral('-').appendValue(ChronoField.MONTH_OF_YEAR, 2).toFormatter();\n YearMonth.FROM = createTemporalQuery('YearMonth.FROM', function (temporal) {\n return YearMonth.from(temporal);\n });\n}\n\nvar Year = function (_Temporal) {\n _inheritsLoose(Year, _Temporal);\n\n function Year(value) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n _this._year = MathUtil.safeToInt(value);\n return _this;\n }\n\n var _proto = Year.prototype;\n\n _proto.value = function value() {\n return this._year;\n };\n\n Year.now = function now(zoneIdOrClock) {\n if (zoneIdOrClock === void 0) {\n zoneIdOrClock = undefined;\n }\n\n if (zoneIdOrClock === undefined) {\n return Year.now0();\n } else if (zoneIdOrClock instanceof ZoneId) {\n return Year.nowZoneId(zoneIdOrClock);\n } else {\n return Year.nowClock(zoneIdOrClock);\n }\n };\n\n Year.now0 = function now0() {\n return Year.nowClock(Clock.systemDefaultZone());\n };\n\n Year.nowZoneId = function nowZoneId(zone) {\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n return Year.nowClock(Clock.system(zone));\n };\n\n Year.nowClock = function nowClock(clock) {\n requireNonNull(clock, 'clock');\n requireInstance(clock, Clock, 'clock');\n var now = LocalDate.now(clock);\n return Year.of(now.year());\n };\n\n Year.of = function of(isoYear) {\n requireNonNull(isoYear, 'isoYear');\n ChronoField.YEAR.checkValidValue(isoYear);\n return new Year(isoYear);\n };\n\n Year.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n requireInstance(temporal, TemporalAccessor, 'temporal');\n\n if (temporal instanceof Year) {\n return temporal;\n }\n\n try {\n return Year.of(temporal.get(ChronoField.YEAR));\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Year from TemporalAccessor: ' + temporal + ', type ' + (temporal && temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n Year.parse = function parse(text, formatter) {\n if (arguments.length <= 1) {\n return Year.parseText(text);\n } else {\n return Year.parseTextFormatter(text, formatter);\n }\n };\n\n Year.parseText = function parseText(text) {\n requireNonNull(text, 'text');\n return Year.parse(text, PARSER$2);\n };\n\n Year.parseTextFormatter = function parseTextFormatter(text, formatter) {\n if (formatter === void 0) {\n formatter = PARSER$2;\n }\n\n requireNonNull(text, 'text');\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.parse(text, Year.FROM);\n };\n\n Year.isLeap = function isLeap(year) {\n return MathUtil.intMod(year, 4) === 0 && (MathUtil.intMod(year, 100) !== 0 || MathUtil.intMod(year, 400) === 0);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (arguments.length === 1 && fieldOrUnit instanceof TemporalField) {\n return this.isSupportedField(fieldOrUnit);\n } else {\n return this.isSupportedUnit(fieldOrUnit);\n }\n };\n\n _proto.isSupportedField = function isSupportedField(field) {\n if (field instanceof ChronoField) {\n return field === ChronoField.YEAR || field === ChronoField.YEAR_OF_ERA || field === ChronoField.ERA;\n }\n\n return field != null && field.isSupportedBy(this);\n };\n\n _proto.isSupportedUnit = function isSupportedUnit(unit) {\n if (unit instanceof ChronoUnit) {\n return unit === ChronoUnit.YEARS || unit === ChronoUnit.DECADES || unit === ChronoUnit.CENTURIES || unit === ChronoUnit.MILLENNIA || unit === ChronoUnit.ERAS;\n }\n\n return unit != null && unit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (this.isSupported(field)) {\n return field.range();\n } else if (field instanceof ChronoField) {\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.range(field).checkValidIntValue(this.getLong(field), field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return this._year < 1 ? 1 - this._year : this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year < 1 ? 0 : 1;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isLeap = function isLeap() {\n return Year.isLeap(this._year);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.YEAR_OF_ERA:\n return Year.of(this._year < 1 ? 1 - newValue : newValue);\n\n case ChronoField.YEAR:\n return Year.of(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : Year.of(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n return Year.of(ChronoField.YEAR.checkValidIntValue(MathUtil.safeAdd(this._year, yearsToAdd)));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n requireInstance(amount, TemporalAmount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit, 'unit');\n return amountToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plus(MathUtil.MAX_SAFE_INTEGER, unit).plus(1, unit) : this.plus(-amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return yearsToSubtract === MathUtil.MIN_SAFE_INTEGER ? this.plusYears(MathUtil.MAX_SAFE_INTEGER).plusYears(1) : this.plusYears(-yearsToSubtract);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.YEAR, this._year);\n };\n\n _proto.isValidMonthDay = function isValidMonthDay(monthDay) {\n return monthDay != null && monthDay.isValidYear(this._year);\n };\n\n _proto.length = function length() {\n return this.isLeap() ? 366 : 365;\n };\n\n _proto.atDay = function atDay(dayOfYear) {\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.atMonth = function atMonth(monthOrNumber) {\n if (arguments.length === 1 && monthOrNumber instanceof Month) {\n return this.atMonthMonth(monthOrNumber);\n } else {\n return this.atMonthNumber(monthOrNumber);\n }\n };\n\n _proto.atMonthMonth = function atMonthMonth(month) {\n requireNonNull(month, 'month');\n requireInstance(month, Month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthNumber = function atMonthNumber(month) {\n requireNonNull(month, 'month');\n return YearMonth.of(this._year, month);\n };\n\n _proto.atMonthDay = function atMonthDay(monthDay) {\n requireNonNull(monthDay, 'monthDay');\n requireInstance(monthDay, MonthDay, 'monthDay');\n return monthDay.atYear(this._year);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query()');\n requireInstance(_query, TemporalQuery, 'query()');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.YEARS;\n } else if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _Temporal.prototype.query.call(this, _query);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year - other._year;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year > other._year;\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n requireInstance(other, Year, 'other');\n return this._year < other._year;\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Year) {\n return this.value() === other.value();\n }\n\n return false;\n };\n\n _proto.toString = function toString() {\n return '' + this._year;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = Year.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var yearsUntil = end.value() - this.value();\n\n switch (unit) {\n case ChronoUnit.YEARS:\n return yearsUntil;\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(yearsUntil, 10);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(yearsUntil, 100);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(yearsUntil, 1000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n return Year;\n}(Temporal);\nvar PARSER$2;\nfunction _init$d() {\n Year.MIN_VALUE = YearConstants.MIN_VALUE;\n Year.MAX_VALUE = YearConstants.MAX_VALUE;\n PARSER$2 = new DateTimeFormatterBuilder().appendValue(ChronoField.YEAR, 4, 10, SignStyle.EXCEEDS_PAD).toFormatter();\n Year.FROM = createTemporalQuery('Year.FROM', function (temporal) {\n return Year.from(temporal);\n });\n}\n\nvar TemporalAdjusters = function () {\n function TemporalAdjusters() {}\n\n TemporalAdjusters.firstDayOfMonth = function firstDayOfMonth() {\n return Impl.FIRST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.lastDayOfMonth = function lastDayOfMonth() {\n return Impl.LAST_DAY_OF_MONTH;\n };\n\n TemporalAdjusters.firstDayOfNextMonth = function firstDayOfNextMonth() {\n return Impl.FIRST_DAY_OF_NEXT_MONTH;\n };\n\n TemporalAdjusters.firstDayOfYear = function firstDayOfYear() {\n return Impl.FIRST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.lastDayOfYear = function lastDayOfYear() {\n return Impl.LAST_DAY_OF_YEAR;\n };\n\n TemporalAdjusters.firstDayOfNextYear = function firstDayOfNextYear() {\n return Impl.FIRST_DAY_OF_NEXT_YEAR;\n };\n\n TemporalAdjusters.firstInMonth = function firstInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(1, dayOfWeek);\n };\n\n TemporalAdjusters.lastInMonth = function lastInMonth(dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(-1, dayOfWeek);\n };\n\n TemporalAdjusters.dayOfWeekInMonth = function dayOfWeekInMonth(ordinal, dayOfWeek) {\n requireNonNull(dayOfWeek, 'dayOfWeek');\n return new DayOfWeekInMonth(ordinal, dayOfWeek);\n };\n\n TemporalAdjusters.next = function next(dayOfWeek) {\n return new RelativeDayOfWeek(2, dayOfWeek);\n };\n\n TemporalAdjusters.nextOrSame = function nextOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(0, dayOfWeek);\n };\n\n TemporalAdjusters.previous = function previous(dayOfWeek) {\n return new RelativeDayOfWeek(3, dayOfWeek);\n };\n\n TemporalAdjusters.previousOrSame = function previousOrSame(dayOfWeek) {\n return new RelativeDayOfWeek(1, dayOfWeek);\n };\n\n return TemporalAdjusters;\n}();\n\nvar Impl = function (_TemporalAdjuster) {\n _inheritsLoose(Impl, _TemporalAdjuster);\n\n function Impl(ordinal) {\n var _this;\n\n _this = _TemporalAdjuster.call(this) || this;\n _this._ordinal = ordinal;\n return _this;\n }\n\n var _proto = Impl.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n switch (this._ordinal) {\n case 0:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1);\n\n case 1:\n return temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n case 2:\n return temporal.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS);\n\n case 3:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1);\n\n case 4:\n return temporal.with(ChronoField.DAY_OF_YEAR, temporal.range(ChronoField.DAY_OF_YEAR).maximum());\n\n case 5:\n return temporal.with(ChronoField.DAY_OF_YEAR, 1).plus(1, ChronoUnit.YEARS);\n }\n\n throw new IllegalStateException('Unreachable');\n };\n\n return Impl;\n}(TemporalAdjuster);\n\nImpl.FIRST_DAY_OF_MONTH = new Impl(0);\nImpl.LAST_DAY_OF_MONTH = new Impl(1);\nImpl.FIRST_DAY_OF_NEXT_MONTH = new Impl(2);\nImpl.FIRST_DAY_OF_YEAR = new Impl(3);\nImpl.LAST_DAY_OF_YEAR = new Impl(4);\nImpl.FIRST_DAY_OF_NEXT_YEAR = new Impl(5);\n\nvar DayOfWeekInMonth = function (_TemporalAdjuster2) {\n _inheritsLoose(DayOfWeekInMonth, _TemporalAdjuster2);\n\n function DayOfWeekInMonth(ordinal, dow) {\n var _this2;\n\n _this2 = _TemporalAdjuster2.call(this) || this;\n _this2._ordinal = ordinal;\n _this2._dowValue = dow.value();\n return _this2;\n }\n\n var _proto2 = DayOfWeekInMonth.prototype;\n\n _proto2.adjustInto = function adjustInto(temporal) {\n if (this._ordinal >= 0) {\n var temp = temporal.with(ChronoField.DAY_OF_MONTH, 1);\n var curDow = temp.get(ChronoField.DAY_OF_WEEK);\n var dowDiff = MathUtil.intMod(this._dowValue - curDow + 7, 7);\n dowDiff += (this._ordinal - 1) * 7;\n return temp.plus(dowDiff, ChronoUnit.DAYS);\n } else {\n var _temp = temporal.with(ChronoField.DAY_OF_MONTH, temporal.range(ChronoField.DAY_OF_MONTH).maximum());\n\n var _curDow = _temp.get(ChronoField.DAY_OF_WEEK);\n\n var daysDiff = this._dowValue - _curDow;\n daysDiff = daysDiff === 0 ? 0 : daysDiff > 0 ? daysDiff - 7 : daysDiff;\n daysDiff -= (-this._ordinal - 1) * 7;\n return _temp.plus(daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return DayOfWeekInMonth;\n}(TemporalAdjuster);\n\nvar RelativeDayOfWeek = function (_TemporalAdjuster3) {\n _inheritsLoose(RelativeDayOfWeek, _TemporalAdjuster3);\n\n function RelativeDayOfWeek(relative, dayOfWeek) {\n var _this3;\n\n _this3 = _TemporalAdjuster3.call(this) || this;\n requireNonNull(dayOfWeek, 'dayOfWeek');\n _this3._relative = relative;\n _this3._dowValue = dayOfWeek.value();\n return _this3;\n }\n\n var _proto3 = RelativeDayOfWeek.prototype;\n\n _proto3.adjustInto = function adjustInto(temporal) {\n var calDow = temporal.get(ChronoField.DAY_OF_WEEK);\n\n if (this._relative < 2 && calDow === this._dowValue) {\n return temporal;\n }\n\n if ((this._relative & 1) === 0) {\n var daysDiff = calDow - this._dowValue;\n return temporal.plus(daysDiff >= 0 ? 7 - daysDiff : -daysDiff, ChronoUnit.DAYS);\n } else {\n var _daysDiff = this._dowValue - calDow;\n\n return temporal.minus(_daysDiff >= 0 ? 7 - _daysDiff : -_daysDiff, ChronoUnit.DAYS);\n }\n };\n\n return RelativeDayOfWeek;\n}(TemporalAdjuster);\n\nvar IsoChronology = function (_Enum) {\n _inheritsLoose(IsoChronology, _Enum);\n\n function IsoChronology() {\n return _Enum.apply(this, arguments) || this;\n }\n\n IsoChronology.isLeapYear = function isLeapYear(prolepticYear) {\n return (prolepticYear & 3) === 0 && (prolepticYear % 100 !== 0 || prolepticYear % 400 === 0);\n };\n\n var _proto = IsoChronology.prototype;\n\n _proto._updateResolveMap = function _updateResolveMap(fieldValues, field, value) {\n requireNonNull(fieldValues, 'fieldValues');\n requireNonNull(field, 'field');\n var current = fieldValues.get(field);\n\n if (current != null && current !== value) {\n throw new DateTimeException('Invalid state, field: ' + field + ' ' + current + ' conflicts with ' + field + ' ' + value);\n }\n\n fieldValues.put(field, value);\n };\n\n _proto.resolveDate = function resolveDate(fieldValues, resolverStyle) {\n if (fieldValues.containsKey(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(fieldValues.remove(ChronoField.EPOCH_DAY));\n }\n\n var prolepticMonth = fieldValues.remove(ChronoField.PROLEPTIC_MONTH);\n\n if (prolepticMonth != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.PROLEPTIC_MONTH.checkValidValue(prolepticMonth);\n }\n\n this._updateResolveMap(fieldValues, ChronoField.MONTH_OF_YEAR, MathUtil.floorMod(prolepticMonth, 12) + 1);\n\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.floorDiv(prolepticMonth, 12));\n }\n\n var yoeLong = fieldValues.remove(ChronoField.YEAR_OF_ERA);\n\n if (yoeLong != null) {\n if (resolverStyle !== ResolverStyle.LENIENT) {\n ChronoField.YEAR_OF_ERA.checkValidValue(yoeLong);\n }\n\n var era = fieldValues.remove(ChronoField.ERA);\n\n if (era == null) {\n var year = fieldValues.get(ChronoField.YEAR);\n\n if (resolverStyle === ResolverStyle.STRICT) {\n if (year != null) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n } else {\n fieldValues.put(ChronoField.YEAR_OF_ERA, yoeLong);\n }\n } else {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, year == null || year > 0 ? yoeLong : MathUtil.safeSubtract(1, yoeLong));\n }\n } else if (era === 1) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, yoeLong);\n } else if (era === 0) {\n this._updateResolveMap(fieldValues, ChronoField.YEAR, MathUtil.safeSubtract(1, yoeLong));\n } else {\n throw new DateTimeException('Invalid value for era: ' + era);\n }\n } else if (fieldValues.containsKey(ChronoField.ERA)) {\n ChronoField.ERA.checkValidValue(fieldValues.get(ChronoField.ERA));\n }\n\n if (fieldValues.containsKey(ChronoField.YEAR)) {\n if (fieldValues.containsKey(ChronoField.MONTH_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.DAY_OF_MONTH)) {\n var y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n var moy = fieldValues.remove(ChronoField.MONTH_OF_YEAR);\n var dom = fieldValues.remove(ChronoField.DAY_OF_MONTH);\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var months = moy - 1;\n var days = dom - 1;\n return LocalDate.of(y, 1, 1).plusMonths(months).plusDays(days);\n } else if (resolverStyle === ResolverStyle.SMART) {\n ChronoField.DAY_OF_MONTH.checkValidValue(dom);\n\n if (moy === 4 || moy === 6 || moy === 9 || moy === 11) {\n dom = Math.min(dom, 30);\n } else if (moy === 2) {\n dom = Math.min(dom, Month.FEBRUARY.length(Year.isLeap(y)));\n }\n\n return LocalDate.of(y, moy, dom);\n } else {\n return LocalDate.of(y, moy, dom);\n }\n }\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_YEAR)) {\n var _y = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _days = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_YEAR), 1);\n\n return LocalDate.ofYearDay(_y, 1).plusDays(_days);\n }\n\n var doy = ChronoField.DAY_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_YEAR));\n return LocalDate.ofYearDay(_y, doy);\n }\n\n if (fieldValues.containsKey(ChronoField.ALIGNED_WEEK_OF_YEAR)) {\n if (fieldValues.containsKey(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR)) {\n var _y2 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days2 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR), 1);\n\n return LocalDate.of(_y2, 1, 1).plusWeeks(weeks).plusDays(_days2);\n }\n\n var aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n var ad = ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n var date = LocalDate.of(_y2, 1, 1).plusDays((aw - 1) * 7 + (ad - 1));\n\n if (resolverStyle === ResolverStyle.STRICT && date.get(ChronoField.YEAR) !== _y2) {\n throw new DateTimeException('Strict mode rejected date parsed to a different year');\n }\n\n return date;\n }\n\n if (fieldValues.containsKey(ChronoField.DAY_OF_WEEK)) {\n var _y3 = ChronoField.YEAR.checkValidIntValue(fieldValues.remove(ChronoField.YEAR));\n\n if (resolverStyle === ResolverStyle.LENIENT) {\n var _weeks = MathUtil.safeSubtract(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR), 1);\n\n var _days3 = MathUtil.safeSubtract(fieldValues.remove(ChronoField.DAY_OF_WEEK), 1);\n\n return LocalDate.of(_y3, 1, 1).plusWeeks(_weeks).plusDays(_days3);\n }\n\n var _aw = ChronoField.ALIGNED_WEEK_OF_YEAR.checkValidIntValue(fieldValues.remove(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n var dow = ChronoField.DAY_OF_WEEK.checkValidIntValue(fieldValues.remove(ChronoField.DAY_OF_WEEK));\n\n var _date = LocalDate.of(_y3, 1, 1).plusWeeks(_aw - 1).with(TemporalAdjusters.nextOrSame(DayOfWeek.of(dow)));\n\n if (resolverStyle === ResolverStyle.STRICT && _date.get(ChronoField.YEAR) !== _y3) {\n throw new DateTimeException('Strict mode rejected date parsed to a different month');\n }\n\n return _date;\n }\n }\n }\n\n return null;\n };\n\n _proto.date = function date(temporal) {\n return LocalDate.from(temporal);\n };\n\n return IsoChronology;\n}(Enum);\nfunction _init$e() {\n IsoChronology.INSTANCE = new IsoChronology('IsoChronology');\n}\n\nvar OffsetTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetTime, _DefaultInterfaceTemp);\n\n OffsetTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetTime) {\n return temporal;\n } else if (temporal instanceof OffsetDateTime) {\n return temporal.toOffsetTime();\n }\n\n try {\n var time = LocalTime.from(temporal);\n var offset = ZoneOffset.from(temporal);\n return new OffsetTime(time, offset);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return OffsetTime._now(clockOrZone);\n } else {\n return OffsetTime._now(Clock.system(clockOrZone));\n }\n };\n\n OffsetTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n var now = clock.instant();\n return OffsetTime.ofInstant(now, clock.zone().rules().offset(now));\n };\n\n OffsetTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetTime.ofTimeAndOffset.apply(this, arguments);\n } else {\n return OffsetTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetTime.ofNumbers = function ofNumbers(hour, minute, second, nanoOfSecond, offset) {\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofTimeAndOffset = function ofTimeAndOffset(time, offset) {\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n requireInstance(zone, ZoneId, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var secsOfDay = instant.epochSecond() % LocalTime.SECONDS_PER_DAY;\n secsOfDay = (secsOfDay + offset.totalSeconds()) % LocalTime.SECONDS_PER_DAY;\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n var time = LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n return new OffsetTime(time, offset);\n };\n\n OffsetTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetTime.FROM);\n };\n\n function OffsetTime(time, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(time, 'time');\n requireInstance(time, LocalTime, 'time');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._time = time;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.NANO_OF_DAY, this._time.toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.atDate = function atDate(date) {\n return OffsetDateTime.of(date, this._time, this._offset);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this, OffsetTime.FROM);\n };\n\n _proto.get = function get(field) {\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._offset.totalSeconds();\n }\n\n return this._time.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() > other._toEpochNano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() < other._toEpochNano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this._toEpochNano() === other._toEpochNano();\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoField.OFFSET_SECONDS;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withLocalTimeOffset(this._time.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.minusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withLocalTimeOffset(this._time.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withLocalTimeOffset(this._time.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withLocalTimeOffset(this._time.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withLocalTimeOffset(this._time.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withLocalTimeOffset(this._time.plusNanos(nanos), this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localTime()) {\n return this._time;\n } else if (_query === TemporalQueries.chronology() || _query === TemporalQueries.localDate() || _query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._time.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withLocalTimeOffset(this._time.truncatedTo(unit), this._offset);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = OffsetTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end._toEpochNano() - this._toEpochNano();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return Math.floor(nanosUntil / 1000);\n\n case ChronoUnit.MILLIS:\n return Math.floor(nanosUntil / 1000000);\n\n case ChronoUnit.SECONDS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return Math.floor(nanosUntil / LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return Math.floor(nanosUntil / (12 * LocalTime.NANOS_PER_HOUR));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withLocalTimeOffset(this._time.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withLocalTimeOffset(this._time.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withLocalTimeOffset(this._time.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nano) {\n return this._withLocalTimeOffset(this._time.withNano(nano), this._offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._time.plusSeconds(difference);\n\n return new OffsetTime(adjusted, offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n return offset != null && offset.equals(this._offset) ? this : new OffsetTime(this._time, offset);\n };\n\n _proto._toEpochNano = function _toEpochNano() {\n var nod = this._time.toNanoOfDay();\n\n var offsetNanos = this._offset.totalSeconds() * LocalTime.NANOS_PER_SECOND;\n return nod - offsetNanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return this._withLocalTimeOffset(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withLocalTimeOffset(this._time, adjuster);\n } else if (adjuster instanceof OffsetTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field === ChronoField.OFFSET_SECONDS) {\n return this._withLocalTimeOffset(this._time, ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue)));\n }\n\n return this._withLocalTimeOffset(this._time.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withLocalTimeOffset = function _withLocalTimeOffset(time, offset) {\n if (this._time === time && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetTime(time, offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetTime, 'other');\n\n if (this._offset.equals(other._offset)) {\n return this._time.compareTo(other._time);\n }\n\n var compare = MathUtil.compareNumbers(this._toEpochNano(), other._toEpochNano());\n\n if (compare === 0) {\n return this._time.compareTo(other._time);\n }\n\n return compare;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetTime) {\n return this._time.equals(other._time) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._time.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._time.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return OffsetTime;\n}(DefaultInterfaceTemporal);\nfunction _init$f() {\n OffsetTime.MIN = OffsetTime.ofNumbers(0, 0, 0, 0, ZoneOffset.MAX);\n OffsetTime.MAX = OffsetTime.ofNumbers(23, 59, 59, 999999999, ZoneOffset.MIN);\n OffsetTime.FROM = createTemporalQuery('OffsetTime.FROM', function (temporal) {\n return OffsetTime.from(temporal);\n });\n}\n\nvar ChronoZonedDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoZonedDateTime, _DefaultInterfaceTemp);\n\n function ChronoZonedDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoZonedDateTime.prototype;\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.zoneId() || _query === TemporalQueries.zone()) {\n return this.zone();\n } else if (_query === TemporalQueries.chronology()) {\n return this.toLocalDate().chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n _proto.toInstant = function toInstant() {\n return Instant.ofEpochSecond(this.toEpochSecond(), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= this.offset().totalSeconds();\n return secs;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n\n if (cmp === 0) {\n cmp = strcmp(this.zone().id(), other.zone().id());\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ChronoZonedDateTime) {\n return this.compareTo(other) === 0;\n }\n\n return false;\n };\n\n return ChronoZonedDateTime;\n}(DefaultInterfaceTemporal);\n\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n\n if (a > b) {\n return 1;\n }\n\n return 0;\n}\n\nvar ZonedDateTime = function (_ChronoZonedDateTime) {\n _inheritsLoose(ZonedDateTime, _ChronoZonedDateTime);\n\n ZonedDateTime.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone == null ? Clock.systemDefaultZone() : clockOrZone;\n }\n\n return ZonedDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n ZonedDateTime.of = function of() {\n if (arguments.length <= 2) {\n return ZonedDateTime.of2.apply(this, arguments);\n } else if (arguments.length === 3 && arguments[0] instanceof LocalDate) {\n return ZonedDateTime.of3.apply(this, arguments);\n } else {\n return ZonedDateTime.of8.apply(this, arguments);\n }\n };\n\n ZonedDateTime.of3 = function of3(date, time, zone) {\n return ZonedDateTime.of2(LocalDateTime.of(date, time), zone);\n };\n\n ZonedDateTime.of2 = function of2(localDateTime, zone) {\n return ZonedDateTime.ofLocal(localDateTime, zone, null);\n };\n\n ZonedDateTime.of8 = function of8(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, zone) {\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return ZonedDateTime.ofLocal(dt, zone, null);\n };\n\n ZonedDateTime.ofLocal = function ofLocal(localDateTime, zone, preferredOffset) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset) {\n return new ZonedDateTime(localDateTime, zone, zone);\n }\n\n var offset = null;\n var rules = zone.rules();\n var validOffsets = rules.validOffsets(localDateTime);\n\n if (validOffsets.length === 1) {\n offset = validOffsets[0];\n } else if (validOffsets.length === 0) {\n var trans = rules.transition(localDateTime);\n localDateTime = localDateTime.plusSeconds(trans.duration().seconds());\n offset = trans.offsetAfter();\n } else {\n if (preferredOffset != null && validOffsets.some(function (validOffset) {\n return validOffset.equals(preferredOffset);\n })) {\n offset = preferredOffset;\n } else {\n offset = requireNonNull(validOffsets[0], 'offset');\n }\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofInstant = function ofInstant() {\n if (arguments.length === 2) {\n return ZonedDateTime.ofInstant2.apply(this, arguments);\n } else {\n return ZonedDateTime.ofInstant3.apply(this, arguments);\n }\n };\n\n ZonedDateTime.ofInstant2 = function ofInstant2(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), zone);\n };\n\n ZonedDateTime.ofInstant3 = function ofInstant3(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n return ZonedDateTime._create(localDateTime.toEpochSecond(offset), localDateTime.nano(), zone);\n };\n\n ZonedDateTime._create = function _create(epochSecond, nanoOfSecond, zone) {\n var rules = zone.rules();\n var instant = Instant.ofEpochSecond(epochSecond, nanoOfSecond);\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(epochSecond, nanoOfSecond, offset);\n return new ZonedDateTime(ldt, offset, zone);\n };\n\n ZonedDateTime.ofStrict = function ofStrict(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n\n if (rules.isValidOffset(localDateTime, offset) === false) {\n var trans = rules.transition(localDateTime);\n\n if (trans != null && trans.isGap()) {\n throw new DateTimeException('LocalDateTime ' + localDateTime + ' does not exist in zone ' + zone + ' due to a gap in the local time-line, typically caused by daylight savings');\n }\n\n throw new DateTimeException('ZoneOffset \"' + offset + '\" is not valid for LocalDateTime \"' + localDateTime + '\" in zone \"' + zone + '\"');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.ofLenient = function ofLenient(localDateTime, offset, zone) {\n requireNonNull(localDateTime, 'localDateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n\n if (zone instanceof ZoneOffset && offset.equals(zone) === false) {\n throw new IllegalArgumentException('ZoneId must match ZoneOffset');\n }\n\n return new ZonedDateTime(localDateTime, offset, zone);\n };\n\n ZonedDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof ZonedDateTime) {\n return temporal;\n }\n\n var zone = ZoneId.from(temporal);\n\n if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {\n var zdt = ZonedDateTime._from(temporal, zone);\n\n if (zdt != null) return zdt;\n }\n\n var ldt = LocalDateTime.from(temporal);\n return ZonedDateTime.of2(ldt, zone);\n };\n\n ZonedDateTime._from = function _from(temporal, zone) {\n try {\n return ZonedDateTime.__from(temporal, zone);\n } catch (ex) {\n if (!(ex instanceof DateTimeException)) throw ex;\n }\n };\n\n ZonedDateTime.__from = function __from(temporal, zone) {\n var epochSecond = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return ZonedDateTime._create(epochSecond, nanoOfSecond, zone);\n };\n\n ZonedDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, ZonedDateTime.FROM);\n };\n\n function ZonedDateTime(dateTime, offset, zone) {\n var _this;\n\n requireNonNull(dateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireNonNull(zone, 'zone');\n _this = _ChronoZonedDateTime.call(this) || this;\n _this._dateTime = dateTime;\n _this._offset = offset;\n _this._zone = zone;\n return _this;\n }\n\n var _proto = ZonedDateTime.prototype;\n\n _proto._resolveLocal = function _resolveLocal(newDateTime) {\n requireNonNull(newDateTime, 'newDateTime');\n return ZonedDateTime.ofLocal(newDateTime, this._zone, this._offset);\n };\n\n _proto._resolveInstant = function _resolveInstant(newDateTime) {\n return ZonedDateTime.ofInstant3(newDateTime, this._offset, this._zone);\n };\n\n _proto._resolveOffset = function _resolveOffset(offset) {\n if (offset.equals(this._offset) === false && this._zone.rules().isValidOffset(this._dateTime, offset)) {\n return new ZonedDateTime(this._dateTime, offset, this._zone);\n }\n\n return this;\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return true;\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this._offset.totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n requireNonNull(field, 'field');\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.withEarlierOffsetAtOverlap = function withEarlierOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this._dateTime);\n\n if (trans != null && trans.isOverlap()) {\n var earlierOffset = trans.offsetBefore();\n\n if (earlierOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, earlierOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.withLaterOffsetAtOverlap = function withLaterOffsetAtOverlap() {\n var trans = this._zone.rules().transition(this.toLocalDateTime());\n\n if (trans != null) {\n var laterOffset = trans.offsetAfter();\n\n if (laterOffset.equals(this._offset) === false) {\n return new ZonedDateTime(this._dateTime, laterOffset, this._zone);\n }\n }\n\n return this;\n };\n\n _proto.zone = function zone() {\n return this._zone;\n };\n\n _proto.withZoneSameLocal = function withZoneSameLocal(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.withZoneSameInstant = function withZoneSameInstant(zone) {\n requireNonNull(zone, 'zone');\n return this._zone.equals(zone) ? this : ZonedDateTime._create(this._dateTime.toEpochSecond(this._offset), this._dateTime.nano(), zone);\n };\n\n _proto.withFixedOffsetZone = function withFixedOffsetZone() {\n return this._zone.equals(this._offset) ? this : new ZonedDateTime(this._dateTime, this._offset, this._offset);\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n if (adjuster instanceof LocalDate) {\n return this._resolveLocal(LocalDateTime.of(adjuster, this._dateTime.toLocalTime()));\n } else if (adjuster instanceof LocalTime) {\n return this._resolveLocal(LocalDateTime.of(this._dateTime.toLocalDate(), adjuster));\n } else if (adjuster instanceof LocalDateTime) {\n return this._resolveLocal(adjuster);\n } else if (adjuster instanceof Instant) {\n var instant = adjuster;\n return ZonedDateTime._create(instant.epochSecond(), instant.nano(), this._zone);\n } else if (adjuster instanceof ZoneOffset) {\n return this._resolveOffset(adjuster);\n }\n\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return ZonedDateTime._create(newValue, this.nano(), this._zone);\n\n case ChronoField.OFFSET_SECONDS:\n {\n var offset = ZoneOffset.ofTotalSeconds(field.checkValidIntValue(newValue));\n return this._resolveOffset(offset);\n }\n }\n\n return this._resolveLocal(this._dateTime.with(field, newValue));\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._resolveLocal(this._dateTime.withYear(year));\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._resolveLocal(this._dateTime.withMonth(month));\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._resolveLocal(this._dateTime.withDayOfMonth(dayOfMonth));\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._resolveLocal(this._dateTime.withDayOfYear(dayOfYear));\n };\n\n _proto.withHour = function withHour(hour) {\n return this._resolveLocal(this._dateTime.withHour(hour));\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._resolveLocal(this._dateTime.withMinute(minute));\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._resolveLocal(this._dateTime.withSecond(second));\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._resolveLocal(this._dateTime.withNano(nanoOfSecond));\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._resolveLocal(this._dateTime.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount);\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n if (unit.isDateBased()) {\n return this._resolveLocal(this._dateTime.plus(amountToAdd, unit));\n } else {\n return this._resolveInstant(this._dateTime.plus(amountToAdd, unit));\n }\n }\n\n requireNonNull(unit, 'unit');\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._resolveLocal(this._dateTime.plusYears(years));\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._resolveLocal(this._dateTime.plusMonths(months));\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._resolveLocal(this._dateTime.plusWeeks(weeks));\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._resolveLocal(this._dateTime.plusDays(days));\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._resolveInstant(this._dateTime.plusHours(hours));\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._resolveInstant(this._dateTime.plusMinutes(minutes));\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._resolveInstant(this._dateTime.plusSeconds(seconds));\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._resolveInstant(this._dateTime.plusNanos(nanos));\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this.plusHours(-1 * hours);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this.plusMinutes(-1 * minutes);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this.plusSeconds(-1 * seconds);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this.plusNanos(-1 * nanos);\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n requireNonNull(_query, 'query');\n return _ChronoZonedDateTime.prototype.query.call(this, _query);\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = ZonedDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withZoneSameInstant(this._zone);\n\n if (unit.isDateBased()) {\n return this._dateTime.until(end._dateTime, unit);\n } else {\n var difference = this._offset.totalSeconds() - end._offset.totalSeconds();\n\n var adjustedEnd = end._dateTime.plusSeconds(difference);\n\n return this._dateTime.until(adjustedEnd, unit);\n }\n }\n\n return unit.between(this, end);\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetDateTime = function toOffsetDateTime() {\n return OffsetDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof ZonedDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset) && this._zone.equals(other._zone);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._dateTime.hashCode(), this._offset.hashCode(), this._zone.hashCode());\n };\n\n _proto.toString = function toString() {\n var str = this._dateTime.toString() + this._offset.toString();\n\n if (this._offset !== this._zone) {\n str += '[' + this._zone.toString() + ']';\n }\n\n return str;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n return _ChronoZonedDateTime.prototype.format.call(this, formatter);\n };\n\n return ZonedDateTime;\n}(ChronoZonedDateTime);\nfunction _init$g() {\n ZonedDateTime.FROM = createTemporalQuery('ZonedDateTime.FROM', function (temporal) {\n return ZonedDateTime.from(temporal);\n });\n}\n\nvar OffsetDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(OffsetDateTime, _DefaultInterfaceTemp);\n\n OffsetDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof OffsetDateTime) {\n return temporal;\n }\n\n try {\n var offset = ZoneOffset.from(temporal);\n\n try {\n var ldt = LocalDateTime.from(temporal);\n return OffsetDateTime.of(ldt, offset);\n } catch (_) {\n var instant = Instant.from(temporal);\n return OffsetDateTime.ofInstant(instant, offset);\n }\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain OffsetDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n OffsetDateTime.now = function now(clockOrZone) {\n if (arguments.length === 0) {\n return OffsetDateTime.now(Clock.systemDefaultZone());\n } else {\n requireNonNull(clockOrZone, 'clockOrZone');\n\n if (clockOrZone instanceof ZoneId) {\n return OffsetDateTime.now(Clock.system(clockOrZone));\n } else if (clockOrZone instanceof Clock) {\n var now = clockOrZone.instant();\n return OffsetDateTime.ofInstant(now, clockOrZone.zone().rules().offset(now));\n } else {\n throw new IllegalArgumentException('clockOrZone must be an instance of ZoneId or Clock');\n }\n }\n };\n\n OffsetDateTime.of = function of() {\n if (arguments.length <= 2) {\n return OffsetDateTime.ofDateTime.apply(this, arguments);\n } else if (arguments.length === 3) {\n return OffsetDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return OffsetDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n OffsetDateTime.ofDateTime = function ofDateTime(dateTime, offset) {\n return new OffsetDateTime(dateTime, offset);\n };\n\n OffsetDateTime.ofDateAndTime = function ofDateAndTime(date, time, offset) {\n var dt = LocalDateTime.of(date, time);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond, offset) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var dt = LocalDateTime.of(year, month, dayOfMonth, hour, minute, second, nanoOfSecond);\n return new OffsetDateTime(dt, offset);\n };\n\n OffsetDateTime.ofInstant = function ofInstant(instant, zone) {\n requireNonNull(instant, 'instant');\n requireNonNull(zone, 'zone');\n var rules = zone.rules();\n var offset = rules.offset(instant);\n var ldt = LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n return new OffsetDateTime(ldt, offset);\n };\n\n OffsetDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, OffsetDateTime.FROM);\n };\n\n function OffsetDateTime(dateTime, offset) {\n var _this;\n\n _this = _DefaultInterfaceTemp.call(this) || this;\n requireNonNull(dateTime, 'dateTime');\n requireInstance(dateTime, LocalDateTime, 'dateTime');\n requireNonNull(offset, 'offset');\n requireInstance(offset, ZoneOffset, 'offset');\n _this._dateTime = dateTime;\n _this._offset = offset;\n return _this;\n }\n\n var _proto = OffsetDateTime.prototype;\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay()).with(ChronoField.OFFSET_SECONDS, this.offset().totalSeconds());\n };\n\n _proto.until = function until(endExclusive, unit) {\n var end = OffsetDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n end = end.withOffsetSameInstant(this._offset);\n return this._dateTime.until(end._dateTime, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atZoneSameInstant = function atZoneSameInstant(zone) {\n return ZonedDateTime.ofInstant(this._dateTime, this._offset, zone);\n };\n\n _proto.atZoneSimilarLocal = function atZoneSimilarLocal(zone) {\n return ZonedDateTime.ofLocal(this._dateTime, zone, this._offset);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.chronology()) {\n return IsoChronology.INSTANCE;\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.offset() || _query === TemporalQueries.zone()) {\n return this.offset();\n } else if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zoneId()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n throw new DateTimeException('Field too large for an int: ' + field);\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.get(field);\n }\n\n return _DefaultInterfaceTemp.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.INSTANT_SECONDS:\n return this.toEpochSecond();\n\n case ChronoField.OFFSET_SECONDS:\n return this.offset().totalSeconds();\n }\n\n return this._dateTime.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.offset = function offset() {\n return this._offset;\n };\n\n _proto.year = function year() {\n return this._dateTime.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._dateTime.monthValue();\n };\n\n _proto.month = function month() {\n return this._dateTime.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._dateTime.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._dateTime.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._dateTime.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._dateTime.hour();\n };\n\n _proto.minute = function minute() {\n return this._dateTime.minute();\n };\n\n _proto.second = function second() {\n return this._dateTime.second();\n };\n\n _proto.nano = function nano() {\n return this._dateTime.nano();\n };\n\n _proto.toLocalDateTime = function toLocalDateTime() {\n return this._dateTime;\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._dateTime.toLocalDate();\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._dateTime.toLocalTime();\n };\n\n _proto.toOffsetTime = function toOffsetTime() {\n return OffsetTime.of(this._dateTime.toLocalTime(), this._offset);\n };\n\n _proto.toZonedDateTime = function toZonedDateTime() {\n return ZonedDateTime.of(this._dateTime, this._offset);\n };\n\n _proto.toInstant = function toInstant() {\n return this._dateTime.toInstant(this._offset);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._dateTime.toEpochSecond(this._offset);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field === ChronoField.INSTANT_SECONDS || field === ChronoField.OFFSET_SECONDS) {\n return field.range();\n }\n\n return this._dateTime.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster);\n\n if (adjuster instanceof LocalDate || adjuster instanceof LocalTime || adjuster instanceof LocalDateTime) {\n return this._withDateTimeOffset(this._dateTime.with(adjuster), this._offset);\n } else if (adjuster instanceof Instant) {\n return OffsetDateTime.ofInstant(adjuster, this._offset);\n } else if (adjuster instanceof ZoneOffset) {\n return this._withDateTimeOffset(this._dateTime, adjuster);\n } else if (adjuster instanceof OffsetDateTime) {\n return adjuster;\n }\n\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field);\n\n if (field instanceof ChronoField) {\n var f = field;\n\n switch (f) {\n case ChronoField.INSTANT_SECONDS:\n return OffsetDateTime.ofInstant(Instant.ofEpochSecond(newValue, this.nano()), this._offset);\n\n case ChronoField.OFFSET_SECONDS:\n {\n return this._withDateTimeOffset(this._dateTime, ZoneOffset.ofTotalSeconds(f.checkValidIntValue(newValue)));\n }\n }\n\n return this._withDateTimeOffset(this._dateTime.with(field, newValue), this._offset);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto._withDateTimeOffset = function _withDateTimeOffset(dateTime, offset) {\n if (this._dateTime === dateTime && this._offset.equals(offset)) {\n return this;\n }\n\n return new OffsetDateTime(dateTime, offset);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTimeOffset(this._dateTime.withYear(year), this._offset);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTimeOffset(this._dateTime.withMonth(month), this._offset);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTimeOffset(this._dateTime.withDayOfMonth(dayOfMonth), this._offset);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTimeOffset(this._dateTime.withDayOfYear(dayOfYear), this._offset);\n };\n\n _proto.withHour = function withHour(hour) {\n return this._withDateTimeOffset(this._dateTime.withHour(hour), this._offset);\n };\n\n _proto.withMinute = function withMinute(minute) {\n return this._withDateTimeOffset(this._dateTime.withMinute(minute), this._offset);\n };\n\n _proto.withSecond = function withSecond(second) {\n return this._withDateTimeOffset(this._dateTime.withSecond(second), this._offset);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n return this._withDateTimeOffset(this._dateTime.withNano(nanoOfSecond), this._offset);\n };\n\n _proto.withOffsetSameLocal = function withOffsetSameLocal(offset) {\n requireNonNull(offset, 'offset');\n return this._withDateTimeOffset(this._dateTime, offset);\n };\n\n _proto.withOffsetSameInstant = function withOffsetSameInstant(offset) {\n requireNonNull(offset, 'offset');\n\n if (offset.equals(this._offset)) {\n return this;\n }\n\n var difference = offset.totalSeconds() - this._offset.totalSeconds();\n\n var adjusted = this._dateTime.plusSeconds(difference);\n\n return new OffsetDateTime(adjusted, offset);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTimeOffset(this._dateTime.truncatedTo(unit), this._offset);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n if (unit instanceof ChronoUnit) {\n return this._withDateTimeOffset(this._dateTime.plus(amountToAdd, unit), this._offset);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n return this._withDateTimeOffset(this._dateTime.plusYears(years), this._offset);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.plusMonths(months), this._offset);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.plusWeeks(weeks), this._offset);\n };\n\n _proto.plusDays = function plusDays(days) {\n return this._withDateTimeOffset(this._dateTime.plusDays(days), this._offset);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.plusHours(hours), this._offset);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.plusMinutes(minutes), this._offset);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.plusSeconds(seconds), this._offset);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.plusNanos(nanos), this._offset);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount);\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plus(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this._withDateTimeOffset(this._dateTime.minusYears(years), this._offset);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this._withDateTimeOffset(this._dateTime.minusMonths(months), this._offset);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this._withDateTimeOffset(this._dateTime.minusWeeks(weeks), this._offset);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this._withDateTimeOffset(this._dateTime.minusDays(days), this._offset);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._withDateTimeOffset(this._dateTime.minusHours(hours), this._offset);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._withDateTimeOffset(this._dateTime.minusMinutes(minutes), this._offset);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._withDateTimeOffset(this._dateTime.minusSeconds(seconds), this._offset);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._withDateTimeOffset(this._dateTime.minusNanos(nanos), this._offset);\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, OffsetDateTime, 'other');\n\n if (this.offset().equals(other.offset())) {\n return this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n\n var cmp = MathUtil.compareNumbers(this.toEpochSecond(), other.toEpochSecond());\n\n if (cmp === 0) {\n cmp = this.toLocalTime().nano() - other.toLocalTime().nano();\n\n if (cmp === 0) {\n cmp = this.toLocalDateTime().compareTo(other.toLocalDateTime());\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec > otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() > other.toLocalTime().nano();\n };\n\n _proto.isBefore = function isBefore(other) {\n requireNonNull(other, 'other');\n var thisEpochSec = this.toEpochSecond();\n var otherEpochSec = other.toEpochSecond();\n return thisEpochSec < otherEpochSec || thisEpochSec === otherEpochSec && this.toLocalTime().nano() < other.toLocalTime().nano();\n };\n\n _proto.isEqual = function isEqual(other) {\n requireNonNull(other, 'other');\n return this.toEpochSecond() === other.toEpochSecond() && this.toLocalTime().nano() === other.toLocalTime().nano();\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof OffsetDateTime) {\n return this._dateTime.equals(other._dateTime) && this._offset.equals(other._offset);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._dateTime.hashCode() ^ this._offset.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._dateTime.toString() + this._offset.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return OffsetDateTime;\n}(DefaultInterfaceTemporal);\nfunction _init$h() {\n OffsetDateTime.MIN = LocalDateTime.MIN.atOffset(ZoneOffset.MAX);\n OffsetDateTime.MAX = LocalDateTime.MAX.atOffset(ZoneOffset.MIN);\n OffsetDateTime.FROM = createTemporalQuery('OffsetDateTime.FROM', function (temporal) {\n return OffsetDateTime.from(temporal);\n });\n}\n\nvar DAYS_PER_CYCLE = 146097;\nvar DAYS_0000_TO_1970 = DAYS_PER_CYCLE * 5 - (30 * 365 + 7);\nvar LocalDate = function (_ChronoLocalDate) {\n _inheritsLoose(LocalDate, _ChronoLocalDate);\n\n LocalDate.now = function now(clockOrZone) {\n var clock;\n\n if (clockOrZone == null) {\n clock = Clock.systemDefaultZone();\n } else if (clockOrZone instanceof ZoneId) {\n clock = Clock.system(clockOrZone);\n } else {\n clock = clockOrZone;\n }\n\n return LocalDate.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDate.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n var offset = zone.rules().offset(instant);\n var epochSec = instant.epochSecond() + offset.totalSeconds();\n var epochDay = MathUtil.floorDiv(epochSec, LocalTime.SECONDS_PER_DAY);\n return LocalDate.ofEpochDay(epochDay);\n };\n\n LocalDate.of = function of(year, month, dayOfMonth) {\n return new LocalDate(year, month, dayOfMonth);\n };\n\n LocalDate.ofYearDay = function ofYearDay(year, dayOfYear) {\n ChronoField.YEAR.checkValidValue(year);\n var leap = IsoChronology.isLeapYear(year);\n\n if (dayOfYear === 366 && leap === false) {\n assert(false, 'Invalid date \\'DayOfYear 366\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n }\n\n var moy = Month.of(Math.floor((dayOfYear - 1) / 31 + 1));\n var monthEnd = moy.firstDayOfYear(leap) + moy.length(leap) - 1;\n\n if (dayOfYear > monthEnd) {\n moy = moy.plus(1);\n }\n\n var dom = dayOfYear - moy.firstDayOfYear(leap) + 1;\n return new LocalDate(year, moy.value(), dom);\n };\n\n LocalDate.ofEpochDay = function ofEpochDay(epochDay) {\n if (epochDay === void 0) {\n epochDay = 0;\n }\n\n var adjust, adjustCycles, doyEst, yearEst, zeroDay;\n zeroDay = epochDay + DAYS_0000_TO_1970;\n zeroDay -= 60;\n adjust = 0;\n\n if (zeroDay < 0) {\n adjustCycles = MathUtil.intDiv(zeroDay + 1, DAYS_PER_CYCLE) - 1;\n adjust = adjustCycles * 400;\n zeroDay += -adjustCycles * DAYS_PER_CYCLE;\n }\n\n yearEst = MathUtil.intDiv(400 * zeroDay + 591, DAYS_PER_CYCLE);\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n\n if (doyEst < 0) {\n yearEst--;\n doyEst = zeroDay - (365 * yearEst + MathUtil.intDiv(yearEst, 4) - MathUtil.intDiv(yearEst, 100) + MathUtil.intDiv(yearEst, 400));\n }\n\n yearEst += adjust;\n var marchDoy0 = doyEst;\n var marchMonth0 = MathUtil.intDiv(marchDoy0 * 5 + 2, 153);\n var month = (marchMonth0 + 2) % 12 + 1;\n var dom = marchDoy0 - MathUtil.intDiv(marchMonth0 * 306 + 5, 10) + 1;\n yearEst += MathUtil.intDiv(marchMonth0, 10);\n var year = yearEst;\n return new LocalDate(year, month, dom);\n };\n\n LocalDate.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var date = temporal.query(TemporalQueries.localDate());\n\n if (date == null) {\n throw new DateTimeException(\"Unable to obtain LocalDate from TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return date;\n };\n\n LocalDate.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE;\n }\n\n assert(formatter != null, 'formatter', NullPointerException);\n return formatter.parse(text, LocalDate.FROM);\n };\n\n LocalDate._resolvePreviousValid = function _resolvePreviousValid(year, month, day) {\n switch (month) {\n case 2:\n day = Math.min(day, IsoChronology.isLeapYear(year) ? 29 : 28);\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n day = Math.min(day, 30);\n break;\n }\n\n return LocalDate.of(year, month, day);\n };\n\n function LocalDate(year, month, dayOfMonth) {\n var _this;\n\n _this = _ChronoLocalDate.call(this) || this;\n requireNonNull(year, 'year');\n requireNonNull(month, 'month');\n requireNonNull(dayOfMonth, 'dayOfMonth');\n\n if (month instanceof Month) {\n month = month.value();\n }\n\n _this._year = MathUtil.safeToInt(year);\n _this._month = MathUtil.safeToInt(month);\n _this._day = MathUtil.safeToInt(dayOfMonth);\n\n LocalDate._validate(_this._year, _this._month, _this._day);\n\n return _this;\n }\n\n LocalDate._validate = function _validate(year, month, dayOfMonth) {\n var dom;\n ChronoField.YEAR.checkValidValue(year);\n ChronoField.MONTH_OF_YEAR.checkValidValue(month);\n ChronoField.DAY_OF_MONTH.checkValidValue(dayOfMonth);\n\n if (dayOfMonth > 28) {\n dom = 31;\n\n switch (month) {\n case 2:\n dom = IsoChronology.isLeapYear(year) ? 29 : 28;\n break;\n\n case 4:\n case 6:\n case 9:\n case 11:\n dom = 30;\n }\n\n if (dayOfMonth > dom) {\n if (dayOfMonth === 29) {\n assert(false, 'Invalid date \\'February 29\\' as \\'' + year + '\\' is not a leap year', DateTimeException);\n } else {\n assert(false, 'Invalid date \\'' + year + '\\' \\'' + month + '\\' \\'' + dayOfMonth + '\\'', DateTimeException);\n }\n }\n }\n };\n\n var _proto = LocalDate.prototype;\n\n _proto.isSupported = function isSupported(field) {\n return _ChronoLocalDate.prototype.isSupported.call(this, field);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n if (field.isDateBased()) {\n switch (field) {\n case ChronoField.DAY_OF_MONTH:\n return ValueRange.of(1, this.lengthOfMonth());\n\n case ChronoField.DAY_OF_YEAR:\n return ValueRange.of(1, this.lengthOfYear());\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return ValueRange.of(1, this.month() === Month.FEBRUARY && this.isLeapYear() === false ? 4 : 5);\n\n case ChronoField.YEAR_OF_ERA:\n return this._year <= 0 ? ValueRange.of(1, Year.MAX_VALUE + 1) : ValueRange.of(1, Year.MAX_VALUE);\n }\n\n return field.range();\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n assert(field != null, '', NullPointerException);\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.DAY_OF_WEEK:\n return this.dayOfWeek().value();\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return MathUtil.intMod(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return MathUtil.intMod(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.DAY_OF_MONTH:\n return this._day;\n\n case ChronoField.DAY_OF_YEAR:\n return this.dayOfYear();\n\n case ChronoField.EPOCH_DAY:\n return this.toEpochDay();\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return MathUtil.intDiv(this._day - 1, 7) + 1;\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return MathUtil.intDiv(this.dayOfYear() - 1, 7) + 1;\n\n case ChronoField.MONTH_OF_YEAR:\n return this._month;\n\n case ChronoField.PROLEPTIC_MONTH:\n return this._prolepticMonth();\n\n case ChronoField.YEAR_OF_ERA:\n return this._year >= 1 ? this._year : 1 - this._year;\n\n case ChronoField.YEAR:\n return this._year;\n\n case ChronoField.ERA:\n return this._year >= 1 ? 1 : 0;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto._prolepticMonth = function _prolepticMonth() {\n return this._year * 12 + (this._month - 1);\n };\n\n _proto.chronology = function chronology() {\n return IsoChronology.INSTANCE;\n };\n\n _proto.year = function year() {\n return this._year;\n };\n\n _proto.monthValue = function monthValue() {\n return this._month;\n };\n\n _proto.month = function month() {\n return Month.of(this._month);\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._day;\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this.month().firstDayOfYear(this.isLeapYear()) + this._day - 1;\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n var dow0 = MathUtil.floorMod(this.toEpochDay() + 3, 7);\n return DayOfWeek.of(dow0 + 1);\n };\n\n _proto.isLeapYear = function isLeapYear() {\n return IsoChronology.isLeapYear(this._year);\n };\n\n _proto.lengthOfMonth = function lengthOfMonth() {\n switch (this._month) {\n case 2:\n return this.isLeapYear() ? 29 : 28;\n\n case 4:\n case 6:\n case 9:\n case 11:\n return 30;\n\n default:\n return 31;\n }\n };\n\n _proto.lengthOfYear = function lengthOfYear() {\n return this.isLeapYear() ? 366 : 365;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n assert(field != null, 'field', NullPointerException);\n\n if (field instanceof ChronoField) {\n var f = field;\n f.checkValidValue(newValue);\n\n switch (f) {\n case ChronoField.DAY_OF_WEEK:\n return this.plusDays(newValue - this.dayOfWeek().value());\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_MONTH));\n\n case ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR:\n return this.plusDays(newValue - this.getLong(ChronoField.ALIGNED_DAY_OF_WEEK_IN_YEAR));\n\n case ChronoField.DAY_OF_MONTH:\n return this.withDayOfMonth(newValue);\n\n case ChronoField.DAY_OF_YEAR:\n return this.withDayOfYear(newValue);\n\n case ChronoField.EPOCH_DAY:\n return LocalDate.ofEpochDay(newValue);\n\n case ChronoField.ALIGNED_WEEK_OF_MONTH:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_MONTH));\n\n case ChronoField.ALIGNED_WEEK_OF_YEAR:\n return this.plusWeeks(newValue - this.getLong(ChronoField.ALIGNED_WEEK_OF_YEAR));\n\n case ChronoField.MONTH_OF_YEAR:\n return this.withMonth(newValue);\n\n case ChronoField.PROLEPTIC_MONTH:\n return this.plusMonths(newValue - this.getLong(ChronoField.PROLEPTIC_MONTH));\n\n case ChronoField.YEAR_OF_ERA:\n return this.withYear(this._year >= 1 ? newValue : 1 - newValue);\n\n case ChronoField.YEAR:\n return this.withYear(newValue);\n\n case ChronoField.ERA:\n return this.getLong(ChronoField.ERA) === newValue ? this : this.withYear(1 - this._year);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n if (this._year === year) {\n return this;\n }\n\n ChronoField.YEAR.checkValidValue(year);\n return LocalDate._resolvePreviousValid(year, this._month, this._day);\n };\n\n _proto.withMonth = function withMonth(month) {\n var m = month instanceof Month ? month.value() : month;\n\n if (this._month === m) {\n return this;\n }\n\n ChronoField.MONTH_OF_YEAR.checkValidValue(m);\n return LocalDate._resolvePreviousValid(this._year, m, this._day);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n if (this._day === dayOfMonth) {\n return this;\n }\n\n return LocalDate.of(this._year, this._month, dayOfMonth);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n if (this.dayOfYear() === dayOfYear) {\n return this;\n }\n\n return LocalDate.ofYearDay(this._year, dayOfYear);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.plusDays(amountToAdd);\n\n case ChronoUnit.WEEKS:\n return this.plusWeeks(amountToAdd);\n\n case ChronoUnit.MONTHS:\n return this.plusMonths(amountToAdd);\n\n case ChronoUnit.YEARS:\n return this.plusYears(amountToAdd);\n\n case ChronoUnit.DECADES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 10));\n\n case ChronoUnit.CENTURIES:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 100));\n\n case ChronoUnit.MILLENNIA:\n return this.plusYears(MathUtil.safeMultiply(amountToAdd, 1000));\n\n case ChronoUnit.ERAS:\n return this.with(ChronoField.ERA, MathUtil.safeAdd(this.getLong(ChronoField.ERA), amountToAdd));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(yearsToAdd) {\n if (yearsToAdd === 0) {\n return this;\n }\n\n var newYear = ChronoField.YEAR.checkValidIntValue(this._year + yearsToAdd);\n return LocalDate._resolvePreviousValid(newYear, this._month, this._day);\n };\n\n _proto.plusMonths = function plusMonths(monthsToAdd) {\n if (monthsToAdd === 0) {\n return this;\n }\n\n var monthCount = this._year * 12 + (this._month - 1);\n var calcMonths = monthCount + monthsToAdd;\n var newYear = ChronoField.YEAR.checkValidIntValue(MathUtil.floorDiv(calcMonths, 12));\n var newMonth = MathUtil.floorMod(calcMonths, 12) + 1;\n return LocalDate._resolvePreviousValid(newYear, newMonth, this._day);\n };\n\n _proto.plusWeeks = function plusWeeks(weeksToAdd) {\n return this.plusDays(MathUtil.safeMultiply(weeksToAdd, 7));\n };\n\n _proto.plusDays = function plusDays(daysToAdd) {\n if (daysToAdd === 0) {\n return this;\n }\n\n var mjDay = MathUtil.safeAdd(this.toEpochDay(), daysToAdd);\n return LocalDate.ofEpochDay(mjDay);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(amountToSubtract, 'amountToSubtract');\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(yearsToSubtract) {\n return this.plusYears(yearsToSubtract * -1);\n };\n\n _proto.minusMonths = function minusMonths(monthsToSubtract) {\n return this.plusMonths(monthsToSubtract * -1);\n };\n\n _proto.minusWeeks = function minusWeeks(weeksToSubtract) {\n return this.plusWeeks(weeksToSubtract * -1);\n };\n\n _proto.minusDays = function minusDays(daysToSubtract) {\n return this.plusDays(daysToSubtract * -1);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this;\n }\n\n return _ChronoLocalDate.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDate.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(p1, p2) {\n if (arguments.length < 2) {\n return this.until1(p1);\n } else {\n return this.until2(p1, p2);\n }\n };\n\n _proto.until2 = function until2(endExclusive, unit) {\n var end = LocalDate.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.DAYS:\n return this.daysUntil(end);\n\n case ChronoUnit.WEEKS:\n return MathUtil.intDiv(this.daysUntil(end), 7);\n\n case ChronoUnit.MONTHS:\n return this._monthsUntil(end);\n\n case ChronoUnit.YEARS:\n return MathUtil.intDiv(this._monthsUntil(end), 12);\n\n case ChronoUnit.DECADES:\n return MathUtil.intDiv(this._monthsUntil(end), 120);\n\n case ChronoUnit.CENTURIES:\n return MathUtil.intDiv(this._monthsUntil(end), 1200);\n\n case ChronoUnit.MILLENNIA:\n return MathUtil.intDiv(this._monthsUntil(end), 12000);\n\n case ChronoUnit.ERAS:\n return end.getLong(ChronoField.ERA) - this.getLong(ChronoField.ERA);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.daysUntil = function daysUntil(end) {\n return end.toEpochDay() - this.toEpochDay();\n };\n\n _proto._monthsUntil = function _monthsUntil(end) {\n var packed1 = this._prolepticMonth() * 32 + this.dayOfMonth();\n var packed2 = end._prolepticMonth() * 32 + end.dayOfMonth();\n return MathUtil.intDiv(packed2 - packed1, 32);\n };\n\n _proto.until1 = function until1(endDate) {\n var end = LocalDate.from(endDate);\n\n var totalMonths = end._prolepticMonth() - this._prolepticMonth();\n\n var days = end._day - this._day;\n\n if (totalMonths > 0 && days < 0) {\n totalMonths--;\n var calcDate = this.plusMonths(totalMonths);\n days = end.toEpochDay() - calcDate.toEpochDay();\n } else if (totalMonths < 0 && days > 0) {\n totalMonths++;\n days -= end.lengthOfMonth();\n }\n\n var years = MathUtil.intDiv(totalMonths, 12);\n var months = MathUtil.intMod(totalMonths, 12);\n return Period.of(years, months, days);\n };\n\n _proto.atTime = function atTime() {\n if (arguments.length === 1) {\n return this.atTime1.apply(this, arguments);\n } else {\n return this.atTime4.apply(this, arguments);\n }\n };\n\n _proto.atTime1 = function atTime1(time) {\n requireNonNull(time, 'time');\n\n if (time instanceof LocalTime) {\n return LocalDateTime.of(this, time);\n } else if (time instanceof OffsetTime) {\n return this._atTimeOffsetTime(time);\n } else {\n throw new IllegalArgumentException('time must be an instance of LocalTime or OffsetTime' + (time && time.constructor && time.constructor.name ? ', but is ' + time.constructor.name : ''));\n }\n };\n\n _proto.atTime4 = function atTime4(hour, minute, second, nanoOfSecond) {\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n return this.atTime1(LocalTime.of(hour, minute, second, nanoOfSecond));\n };\n\n _proto._atTimeOffsetTime = function _atTimeOffsetTime(time) {\n return OffsetDateTime.of(LocalDateTime.of(this, time.toLocalTime()), time.offset());\n };\n\n _proto.atStartOfDay = function atStartOfDay(zone) {\n if (zone != null) {\n return this.atStartOfDayWithZone(zone);\n } else {\n return LocalDateTime.of(this, LocalTime.MIDNIGHT);\n }\n };\n\n _proto.atStartOfDayWithZone = function atStartOfDayWithZone(zone) {\n requireNonNull(zone, 'zone');\n var ldt = this.atTime(LocalTime.MIDNIGHT);\n\n if (zone instanceof ZoneOffset === false) {\n var trans = zone.rules().transition(ldt);\n\n if (trans != null && trans.isGap()) {\n ldt = trans.dateTimeAfter();\n }\n }\n\n return ZonedDateTime.of(ldt, zone);\n };\n\n _proto.toEpochDay = function toEpochDay() {\n var y = this._year;\n var m = this._month;\n var total = 0;\n total += 365 * y;\n\n if (y >= 0) {\n total += MathUtil.intDiv(y + 3, 4) - MathUtil.intDiv(y + 99, 100) + MathUtil.intDiv(y + 399, 400);\n } else {\n total -= MathUtil.intDiv(y, -4) - MathUtil.intDiv(y, -100) + MathUtil.intDiv(y, -400);\n }\n\n total += MathUtil.intDiv(367 * m - 362, 12);\n total += this.dayOfMonth() - 1;\n\n if (m > 2) {\n total--;\n\n if (!IsoChronology.isLeapYear(y)) {\n total--;\n }\n }\n\n return total - DAYS_0000_TO_1970;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDate, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(otherDate) {\n var cmp = this._year - otherDate._year;\n\n if (cmp === 0) {\n cmp = this._month - otherDate._month;\n\n if (cmp === 0) {\n cmp = this._day - otherDate._day;\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDate) {\n return this._compareTo0(other) === 0;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n return MathUtil.hash(yearValue & 0xFFFFF800 ^ (yearValue << 11) + (monthValue << 6) + dayValue);\n };\n\n _proto.toString = function toString() {\n var dayString, monthString, yearString;\n var yearValue = this._year;\n var monthValue = this._month;\n var dayValue = this._day;\n var absYear = Math.abs(yearValue);\n\n if (absYear < 1000) {\n if (yearValue < 0) {\n yearString = '-' + ('' + (yearValue - 10000)).slice(-4);\n } else {\n yearString = ('' + (yearValue + 10000)).slice(-4);\n }\n } else {\n if (yearValue > 9999) {\n yearString = '+' + yearValue;\n } else {\n yearString = '' + yearValue;\n }\n }\n\n if (monthValue < 10) {\n monthString = '-0' + monthValue;\n } else {\n monthString = '-' + monthValue;\n }\n\n if (dayValue < 10) {\n dayString = '-0' + dayValue;\n } else {\n dayString = '-' + dayValue;\n }\n\n return yearString + monthString + dayString;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n requireInstance(formatter, DateTimeFormatter, 'formatter');\n return _ChronoLocalDate.prototype.format.call(this, formatter);\n };\n\n return LocalDate;\n}(ChronoLocalDate);\nfunction _init$i() {\n LocalDate.MIN = LocalDate.of(YearConstants.MIN_VALUE, 1, 1);\n LocalDate.MAX = LocalDate.of(YearConstants.MAX_VALUE, 12, 31);\n LocalDate.EPOCH_0 = LocalDate.ofEpochDay(0);\n LocalDate.FROM = createTemporalQuery('LocalDate.FROM', function (temporal) {\n return LocalDate.from(temporal);\n });\n}\n\nvar ChronoLocalDateTime = function (_DefaultInterfaceTemp) {\n _inheritsLoose(ChronoLocalDateTime, _DefaultInterfaceTemp);\n\n function ChronoLocalDateTime() {\n return _DefaultInterfaceTemp.apply(this, arguments) || this;\n }\n\n var _proto = ChronoLocalDateTime.prototype;\n\n _proto.chronology = function chronology() {\n return this.toLocalDate().chronology();\n };\n\n _proto.query = function query(_query) {\n if (_query === TemporalQueries.chronology()) {\n return this.chronology();\n } else if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofEpochDay(this.toLocalDate().toEpochDay());\n } else if (_query === TemporalQueries.localTime()) {\n return this.toLocalTime();\n } else if (_query === TemporalQueries.zone() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _DefaultInterfaceTemp.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(ChronoField.EPOCH_DAY, this.toLocalDate().toEpochDay()).with(ChronoField.NANO_OF_DAY, this.toLocalTime().toNanoOfDay());\n };\n\n _proto.toInstant = function toInstant(offset) {\n requireInstance(offset, ZoneOffset, 'zoneId');\n return Instant.ofEpochSecond(this.toEpochSecond(offset), this.toLocalTime().nano());\n };\n\n _proto.toEpochSecond = function toEpochSecond(offset) {\n requireNonNull(offset, 'offset');\n var epochDay = this.toLocalDate().toEpochDay();\n var secs = epochDay * 86400 + this.toLocalTime().toSecondOfDay();\n secs -= offset.totalSeconds();\n return MathUtil.safeToInt(secs);\n };\n\n return ChronoLocalDateTime;\n}(DefaultInterfaceTemporal);\n\nvar LocalDateTime = function (_ChronoLocalDateTime) {\n _inheritsLoose(LocalDateTime, _ChronoLocalDateTime);\n\n LocalDateTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalDateTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalDateTime._now(clockOrZone);\n } else {\n return LocalDateTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalDateTime._now = function _now(clock) {\n requireNonNull(clock, 'clock');\n return LocalDateTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalDateTime._ofEpochMillis = function _ofEpochMillis(epochMilli, offset) {\n var localSecond = MathUtil.floorDiv(epochMilli, 1000) + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var nanoOfSecond = MathUtil.floorMod(epochMilli, 1000) * 1000000;\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.of = function of() {\n if (arguments.length <= 2) {\n return LocalDateTime.ofDateAndTime.apply(this, arguments);\n } else {\n return LocalDateTime.ofNumbers.apply(this, arguments);\n }\n };\n\n LocalDateTime.ofNumbers = function ofNumbers(year, month, dayOfMonth, hour, minute, second, nanoOfSecond) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n var date = LocalDate.of(year, month, dayOfMonth);\n var time = LocalTime.of(hour, minute, second, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofDateAndTime = function ofDateAndTime(date, time) {\n requireNonNull(date, 'date');\n requireNonNull(time, 'time');\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n requireNonNull(instant, 'instant');\n requireInstance(instant, Instant, 'instant');\n requireNonNull(zone, 'zone');\n var offset = zone.rules().offset(instant);\n return LocalDateTime.ofEpochSecond(instant.epochSecond(), instant.nano(), offset);\n };\n\n LocalDateTime.ofEpochSecond = function ofEpochSecond(epochSecond, nanoOfSecond, offset) {\n if (epochSecond === void 0) {\n epochSecond = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (arguments.length === 2 && nanoOfSecond instanceof ZoneOffset) {\n offset = nanoOfSecond;\n nanoOfSecond = 0;\n }\n\n requireNonNull(offset, 'offset');\n var localSecond = epochSecond + offset.totalSeconds();\n var localEpochDay = MathUtil.floorDiv(localSecond, LocalTime.SECONDS_PER_DAY);\n var secsOfDay = MathUtil.floorMod(localSecond, LocalTime.SECONDS_PER_DAY);\n var date = LocalDate.ofEpochDay(localEpochDay);\n var time = LocalTime.ofSecondOfDay(secsOfDay, nanoOfSecond);\n return new LocalDateTime(date, time);\n };\n\n LocalDateTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n\n if (temporal instanceof LocalDateTime) {\n return temporal;\n } else if (temporal instanceof ZonedDateTime) {\n return temporal.toLocalDateTime();\n }\n\n try {\n var date = LocalDate.from(temporal);\n var time = LocalTime.from(temporal);\n return new LocalDateTime(date, time);\n } catch (ex) {\n throw new DateTimeException(\"Unable to obtain LocalDateTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n };\n\n LocalDateTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalDateTime.FROM);\n };\n\n function LocalDateTime(date, time) {\n var _this;\n\n _this = _ChronoLocalDateTime.call(this) || this;\n requireInstance(date, LocalDate, 'date');\n requireInstance(time, LocalTime, 'time');\n _this._date = date;\n _this._time = time;\n return _this;\n }\n\n var _proto = LocalDateTime.prototype;\n\n _proto._withDateTime = function _withDateTime(newDate, newTime) {\n if (this._date.equals(newDate) && this._time.equals(newTime)) {\n return this;\n }\n\n return new LocalDateTime(newDate, newTime);\n };\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isDateBased() || fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.range(field) : this._date.range(field);\n }\n\n return field.rangeRefinedBy(this);\n };\n\n _proto.get = function get(field) {\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.get(field) : this._date.get(field);\n }\n\n return _ChronoLocalDateTime.prototype.get.call(this, field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return field.isTimeBased() ? this._time.getLong(field) : this._date.getLong(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.year = function year() {\n return this._date.year();\n };\n\n _proto.monthValue = function monthValue() {\n return this._date.monthValue();\n };\n\n _proto.month = function month() {\n return this._date.month();\n };\n\n _proto.dayOfMonth = function dayOfMonth() {\n return this._date.dayOfMonth();\n };\n\n _proto.dayOfYear = function dayOfYear() {\n return this._date.dayOfYear();\n };\n\n _proto.dayOfWeek = function dayOfWeek() {\n return this._date.dayOfWeek();\n };\n\n _proto.hour = function hour() {\n return this._time.hour();\n };\n\n _proto.minute = function minute() {\n return this._time.minute();\n };\n\n _proto.second = function second() {\n return this._time.second();\n };\n\n _proto.nano = function nano() {\n return this._time.nano();\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalDate) {\n return this._withDateTime(adjuster, this._time);\n } else if (adjuster instanceof LocalTime) {\n return this._withDateTime(this._date, adjuster);\n } else if (adjuster instanceof LocalDateTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n if (field.isTimeBased()) {\n return this._withDateTime(this._date, this._time.with(field, newValue));\n } else {\n return this._withDateTime(this._date.with(field, newValue), this._time);\n }\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withYear = function withYear(year) {\n return this._withDateTime(this._date.withYear(year), this._time);\n };\n\n _proto.withMonth = function withMonth(month) {\n return this._withDateTime(this._date.withMonth(month), this._time);\n };\n\n _proto.withDayOfMonth = function withDayOfMonth(dayOfMonth) {\n return this._withDateTime(this._date.withDayOfMonth(dayOfMonth), this._time);\n };\n\n _proto.withDayOfYear = function withDayOfYear(dayOfYear) {\n return this._withDateTime(this._date.withDayOfYear(dayOfYear), this._time);\n };\n\n _proto.withHour = function withHour(hour) {\n var newTime = this._time.withHour(hour);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withMinute = function withMinute(minute) {\n var newTime = this._time.withMinute(minute);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withSecond = function withSecond(second) {\n var newTime = this._time.withSecond(second);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n var newTime = this._time.withNano(nanoOfSecond);\n\n return this._withDateTime(this._date, newTime);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n return this._withDateTime(this._date, this._time.truncatedTo(unit));\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MICROS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, LocalTime.MILLIS_PER_DAY)).plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusDays(MathUtil.intDiv(amountToAdd, 256)).plusHours(MathUtil.intMod(amountToAdd, 256) * 12);\n }\n\n return this._withDateTime(this._date.plus(amountToAdd, unit), this._time);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusYears = function plusYears(years) {\n var newDate = this._date.plusYears(years);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusMonths = function plusMonths(months) {\n var newDate = this._date.plusMonths(months);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusWeeks = function plusWeeks(weeks) {\n var newDate = this._date.plusWeeks(weeks);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusDays = function plusDays(days) {\n var newDate = this._date.plusDays(days);\n\n return this._withDateTime(newDate, this._time);\n };\n\n _proto.plusHours = function plusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, 1);\n };\n\n _proto.plusMinutes = function plusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, 1);\n };\n\n _proto.plusSeconds = function plusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, 1);\n };\n\n _proto.plusNanos = function plusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, 1);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusYears = function minusYears(years) {\n return this.plusYears(-1 * years);\n };\n\n _proto.minusMonths = function minusMonths(months) {\n return this.plusMonths(-1 * months);\n };\n\n _proto.minusWeeks = function minusWeeks(weeks) {\n return this.plusWeeks(-1 * weeks);\n };\n\n _proto.minusDays = function minusDays(days) {\n return this.plusDays(-1 * days);\n };\n\n _proto.minusHours = function minusHours(hours) {\n return this._plusWithOverflow(this._date, hours, 0, 0, 0, -1);\n };\n\n _proto.minusMinutes = function minusMinutes(minutes) {\n return this._plusWithOverflow(this._date, 0, minutes, 0, 0, -1);\n };\n\n _proto.minusSeconds = function minusSeconds(seconds) {\n return this._plusWithOverflow(this._date, 0, 0, seconds, 0, -1);\n };\n\n _proto.minusNanos = function minusNanos(nanos) {\n return this._plusWithOverflow(this._date, 0, 0, 0, nanos, -1);\n };\n\n _proto._plusWithOverflow = function _plusWithOverflow(newDate, hours, minutes, seconds, nanos, sign) {\n if (hours === 0 && minutes === 0 && seconds === 0 && nanos === 0) {\n return this._withDateTime(newDate, this._time);\n }\n\n var totDays = MathUtil.intDiv(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intDiv(seconds, LocalTime.SECONDS_PER_DAY) + MathUtil.intDiv(minutes, LocalTime.MINUTES_PER_DAY) + MathUtil.intDiv(hours, LocalTime.HOURS_PER_DAY);\n totDays *= sign;\n var totNanos = MathUtil.intMod(nanos, LocalTime.NANOS_PER_DAY) + MathUtil.intMod(seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + MathUtil.intMod(minutes, LocalTime.MINUTES_PER_DAY) * LocalTime.NANOS_PER_MINUTE + MathUtil.intMod(hours, LocalTime.HOURS_PER_DAY) * LocalTime.NANOS_PER_HOUR;\n\n var curNoD = this._time.toNanoOfDay();\n\n totNanos = totNanos * sign + curNoD;\n totDays += MathUtil.floorDiv(totNanos, LocalTime.NANOS_PER_DAY);\n var newNoD = MathUtil.floorMod(totNanos, LocalTime.NANOS_PER_DAY);\n var newTime = newNoD === curNoD ? this._time : LocalTime.ofNanoOfDay(newNoD);\n return this._withDateTime(newDate.plusDays(totDays), newTime);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return this.toLocalDate();\n }\n\n return _ChronoLocalDateTime.prototype.query.call(this, _query);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return _ChronoLocalDateTime.prototype.adjustInto.call(this, temporal);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalDateTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n if (unit.isTimeBased()) {\n var daysUntil = this._date.daysUntil(end._date);\n\n var timeUntil = end._time.toNanoOfDay() - this._time.toNanoOfDay();\n\n if (daysUntil > 0 && timeUntil < 0) {\n daysUntil--;\n timeUntil += LocalTime.NANOS_PER_DAY;\n } else if (daysUntil < 0 && timeUntil > 0) {\n daysUntil++;\n timeUntil -= LocalTime.NANOS_PER_DAY;\n }\n\n var amount = daysUntil;\n\n switch (unit) {\n case ChronoUnit.NANOS:\n amount = MathUtil.safeMultiply(amount, LocalTime.NANOS_PER_DAY);\n return MathUtil.safeAdd(amount, timeUntil);\n\n case ChronoUnit.MICROS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MICROS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000));\n\n case ChronoUnit.MILLIS:\n amount = MathUtil.safeMultiply(amount, LocalTime.MILLIS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, 1000000));\n\n case ChronoUnit.SECONDS:\n amount = MathUtil.safeMultiply(amount, LocalTime.SECONDS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_SECOND));\n\n case ChronoUnit.MINUTES:\n amount = MathUtil.safeMultiply(amount, LocalTime.MINUTES_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n amount = MathUtil.safeMultiply(amount, LocalTime.HOURS_PER_DAY);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n amount = MathUtil.safeMultiply(amount, 2);\n return MathUtil.safeAdd(amount, MathUtil.intDiv(timeUntil, LocalTime.NANOS_PER_HOUR * 12));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n var endDate = end._date;\n var endTime = end._time;\n\n if (endDate.isAfter(this._date) && endTime.isBefore(this._time)) {\n endDate = endDate.minusDays(1);\n } else if (endDate.isBefore(this._date) && endTime.isAfter(this._time)) {\n endDate = endDate.plusDays(1);\n }\n\n return this._date.until(endDate, unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.of(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.of(this, zone);\n };\n\n _proto.toLocalDate = function toLocalDate() {\n return this._date;\n };\n\n _proto.toLocalTime = function toLocalTime() {\n return this._time;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalDateTime, 'other');\n return this._compareTo0(other);\n };\n\n _proto._compareTo0 = function _compareTo0(other) {\n var cmp = this._date.compareTo(other.toLocalDate());\n\n if (cmp === 0) {\n cmp = this._time.compareTo(other.toLocalTime());\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.isEqual = function isEqual(other) {\n return this.compareTo(other) === 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalDateTime) {\n return this._date.equals(other._date) && this._time.equals(other._time);\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._date.hashCode() ^ this._time.hashCode();\n };\n\n _proto.toString = function toString() {\n return this._date.toString() + 'T' + this._time.toString();\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalDateTime;\n}(ChronoLocalDateTime);\nfunction _init$j() {\n LocalDateTime.MIN = LocalDateTime.of(LocalDate.MIN, LocalTime.MIN);\n LocalDateTime.MAX = LocalDateTime.of(LocalDate.MAX, LocalTime.MAX);\n LocalDateTime.FROM = createTemporalQuery('LocalDateTime.FROM', function (temporal) {\n return LocalDateTime.from(temporal);\n });\n}\n\nvar LocalTime = function (_Temporal) {\n _inheritsLoose(LocalTime, _Temporal);\n\n LocalTime.now = function now(clockOrZone) {\n if (clockOrZone == null) {\n return LocalTime._now(Clock.systemDefaultZone());\n } else if (clockOrZone instanceof Clock) {\n return LocalTime._now(clockOrZone);\n } else {\n return LocalTime._now(Clock.system(clockOrZone));\n }\n };\n\n LocalTime._now = function _now(clock) {\n if (clock === void 0) {\n clock = Clock.systemDefaultZone();\n }\n\n requireNonNull(clock, 'clock');\n return LocalTime.ofInstant(clock.instant(), clock.zone());\n };\n\n LocalTime.ofInstant = function ofInstant(instant, zone) {\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n var offset = zone.rules().offset(instant);\n var secsOfDay = MathUtil.intMod(instant.epochSecond(), LocalTime.SECONDS_PER_DAY);\n secsOfDay = MathUtil.intMod(secsOfDay + offset.totalSeconds(), LocalTime.SECONDS_PER_DAY);\n\n if (secsOfDay < 0) {\n secsOfDay += LocalTime.SECONDS_PER_DAY;\n }\n\n return LocalTime.ofSecondOfDay(secsOfDay, instant.nano());\n };\n\n LocalTime.of = function of(hour, minute, second, nanoOfSecond) {\n return new LocalTime(hour, minute, second, nanoOfSecond);\n };\n\n LocalTime.ofSecondOfDay = function ofSecondOfDay(secondOfDay, nanoOfSecond) {\n if (secondOfDay === void 0) {\n secondOfDay = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n ChronoField.SECOND_OF_DAY.checkValidValue(secondOfDay);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n var hours = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_HOUR);\n secondOfDay -= hours * LocalTime.SECONDS_PER_HOUR;\n var minutes = MathUtil.intDiv(secondOfDay, LocalTime.SECONDS_PER_MINUTE);\n secondOfDay -= minutes * LocalTime.SECONDS_PER_MINUTE;\n return new LocalTime(hours, minutes, secondOfDay, nanoOfSecond);\n };\n\n LocalTime.ofNanoOfDay = function ofNanoOfDay(nanoOfDay) {\n if (nanoOfDay === void 0) {\n nanoOfDay = 0;\n }\n\n ChronoField.NANO_OF_DAY.checkValidValue(nanoOfDay);\n var hours = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_HOUR);\n nanoOfDay -= hours * LocalTime.NANOS_PER_HOUR;\n var minutes = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_MINUTE);\n nanoOfDay -= minutes * LocalTime.NANOS_PER_MINUTE;\n var seconds = MathUtil.intDiv(nanoOfDay, LocalTime.NANOS_PER_SECOND);\n nanoOfDay -= seconds * LocalTime.NANOS_PER_SECOND;\n return new LocalTime(hours, minutes, seconds, nanoOfDay);\n };\n\n LocalTime.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var time = temporal.query(TemporalQueries.localTime());\n\n if (time == null) {\n throw new DateTimeException(\"Unable to obtain LocalTime TemporalAccessor: \" + temporal + \", type \" + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return time;\n };\n\n LocalTime.parse = function parse(text, formatter) {\n if (formatter === void 0) {\n formatter = DateTimeFormatter.ISO_LOCAL_TIME;\n }\n\n requireNonNull(formatter, 'formatter');\n return formatter.parse(text, LocalTime.FROM);\n };\n\n function LocalTime(hour, minute, second, nanoOfSecond) {\n var _this;\n\n if (hour === void 0) {\n hour = 0;\n }\n\n if (minute === void 0) {\n minute = 0;\n }\n\n if (second === void 0) {\n second = 0;\n }\n\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n _this = _Temporal.call(this) || this;\n\n var _hour = MathUtil.safeToInt(hour);\n\n var _minute = MathUtil.safeToInt(minute);\n\n var _second = MathUtil.safeToInt(second);\n\n var _nanoOfSecond = MathUtil.safeToInt(nanoOfSecond);\n\n LocalTime._validate(_hour, _minute, _second, _nanoOfSecond);\n\n if (_minute === 0 && _second === 0 && _nanoOfSecond === 0) {\n if (!LocalTime.HOURS[_hour]) {\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n LocalTime.HOURS[_hour] = _assertThisInitialized(_this);\n }\n\n return LocalTime.HOURS[_hour] || _assertThisInitialized(_this);\n }\n\n _this._hour = _hour;\n _this._minute = _minute;\n _this._second = _second;\n _this._nano = _nanoOfSecond;\n return _this;\n }\n\n LocalTime._validate = function _validate(hour, minute, second, nanoOfSecond) {\n ChronoField.HOUR_OF_DAY.checkValidValue(hour);\n ChronoField.MINUTE_OF_HOUR.checkValidValue(minute);\n ChronoField.SECOND_OF_MINUTE.checkValidValue(second);\n ChronoField.NANO_OF_SECOND.checkValidValue(nanoOfSecond);\n };\n\n var _proto = LocalTime.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit.isTimeBased();\n } else if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased();\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n requireNonNull(field);\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n return this._get0(field);\n }\n\n return field.getFrom(this);\n };\n\n _proto._get0 = function _get0(field) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nano;\n\n case ChronoField.NANO_OF_DAY:\n return this.toNanoOfDay();\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nano, 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return MathUtil.intDiv(this.toNanoOfDay(), 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this._second;\n\n case ChronoField.SECOND_OF_DAY:\n return this.toSecondOfDay();\n\n case ChronoField.MINUTE_OF_HOUR:\n return this._minute;\n\n case ChronoField.MINUTE_OF_DAY:\n return this._hour * 60 + this._minute;\n\n case ChronoField.HOUR_OF_AMPM:\n return MathUtil.intMod(this._hour, 12);\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n {\n var ham = MathUtil.intMod(this._hour, 12);\n return ham % 12 === 0 ? 12 : ham;\n }\n\n case ChronoField.HOUR_OF_DAY:\n return this._hour;\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this._hour === 0 ? 24 : this._hour;\n\n case ChronoField.AMPM_OF_DAY:\n return MathUtil.intDiv(this._hour, 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n };\n\n _proto.hour = function hour() {\n return this._hour;\n };\n\n _proto.minute = function minute() {\n return this._minute;\n };\n\n _proto.second = function second() {\n return this._second;\n };\n\n _proto.nano = function nano() {\n return this._nano;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n\n if (adjuster instanceof LocalTime) {\n return adjuster;\n }\n\n assert(typeof adjuster.adjustInto === 'function', 'adjuster', IllegalArgumentException);\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n requireInstance(field, TemporalField, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this.withNano(newValue);\n\n case ChronoField.NANO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue);\n\n case ChronoField.MICRO_OF_SECOND:\n return this.withNano(newValue * 1000);\n\n case ChronoField.MICRO_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return this.withNano(newValue * 1000000);\n\n case ChronoField.MILLI_OF_DAY:\n return LocalTime.ofNanoOfDay(newValue * 1000000);\n\n case ChronoField.SECOND_OF_MINUTE:\n return this.withSecond(newValue);\n\n case ChronoField.SECOND_OF_DAY:\n return this.plusSeconds(newValue - this.toSecondOfDay());\n\n case ChronoField.MINUTE_OF_HOUR:\n return this.withMinute(newValue);\n\n case ChronoField.MINUTE_OF_DAY:\n return this.plusMinutes(newValue - (this._hour * 60 + this._minute));\n\n case ChronoField.HOUR_OF_AMPM:\n return this.plusHours(newValue - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.CLOCK_HOUR_OF_AMPM:\n return this.plusHours((newValue === 12 ? 0 : newValue) - MathUtil.intMod(this._hour, 12));\n\n case ChronoField.HOUR_OF_DAY:\n return this.withHour(newValue);\n\n case ChronoField.CLOCK_HOUR_OF_DAY:\n return this.withHour(newValue === 24 ? 0 : newValue);\n\n case ChronoField.AMPM_OF_DAY:\n return this.plusHours((newValue - MathUtil.intDiv(this._hour, 12)) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.withHour = function withHour(hour) {\n if (hour === void 0) {\n hour = 0;\n }\n\n if (this._hour === hour) {\n return this;\n }\n\n return new LocalTime(hour, this._minute, this._second, this._nano);\n };\n\n _proto.withMinute = function withMinute(minute) {\n if (minute === void 0) {\n minute = 0;\n }\n\n if (this._minute === minute) {\n return this;\n }\n\n return new LocalTime(this._hour, minute, this._second, this._nano);\n };\n\n _proto.withSecond = function withSecond(second) {\n if (second === void 0) {\n second = 0;\n }\n\n if (this._second === second) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, second, this._nano);\n };\n\n _proto.withNano = function withNano(nanoOfSecond) {\n if (nanoOfSecond === void 0) {\n nanoOfSecond = 0;\n }\n\n if (this._nano === nanoOfSecond) {\n return this;\n }\n\n return new LocalTime(this._hour, this._minute, this._second, nanoOfSecond);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = this.toNanoOfDay();\n return LocalTime.ofNanoOfDay(MathUtil.intDiv(nod, dur) * dur);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(unit, 'unit');\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MICROS_PER_DAY) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusNanos(MathUtil.intMod(amountToAdd, LocalTime.MILLIS_PER_DAY) * 1000000);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusMinutes(amountToAdd);\n\n case ChronoUnit.HOURS:\n return this.plusHours(amountToAdd);\n\n case ChronoUnit.HALF_DAYS:\n return this.plusHours(MathUtil.intMod(amountToAdd, 2) * 12);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusHours = function plusHours(hoursToAdd) {\n if (hoursToAdd === 0) {\n return this;\n }\n\n var newHour = MathUtil.intMod(MathUtil.intMod(hoursToAdd, LocalTime.HOURS_PER_DAY) + this._hour + LocalTime.HOURS_PER_DAY, LocalTime.HOURS_PER_DAY);\n return new LocalTime(newHour, this._minute, this._second, this._nano);\n };\n\n _proto.plusMinutes = function plusMinutes(minutesToAdd) {\n if (minutesToAdd === 0) {\n return this;\n }\n\n var mofd = this._hour * LocalTime.MINUTES_PER_HOUR + this._minute;\n var newMofd = MathUtil.intMod(MathUtil.intMod(minutesToAdd, LocalTime.MINUTES_PER_DAY) + mofd + LocalTime.MINUTES_PER_DAY, LocalTime.MINUTES_PER_DAY);\n\n if (mofd === newMofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newMofd, LocalTime.MINUTES_PER_HOUR);\n var newMinute = MathUtil.intMod(newMofd, LocalTime.MINUTES_PER_HOUR);\n return new LocalTime(newHour, newMinute, this._second, this._nano);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n if (secondsToAdd === 0) {\n return this;\n }\n\n var sofd = this._hour * LocalTime.SECONDS_PER_HOUR + this._minute * LocalTime.SECONDS_PER_MINUTE + this._second;\n var newSofd = MathUtil.intMod(MathUtil.intMod(secondsToAdd, LocalTime.SECONDS_PER_DAY) + sofd + LocalTime.SECONDS_PER_DAY, LocalTime.SECONDS_PER_DAY);\n\n if (sofd === newSofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newSofd, LocalTime.SECONDS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(newSofd, LocalTime.SECONDS_PER_MINUTE);\n return new LocalTime(newHour, newMinute, newSecond, this._nano);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n if (nanosToAdd === 0) {\n return this;\n }\n\n var nofd = this.toNanoOfDay();\n var newNofd = MathUtil.intMod(MathUtil.intMod(nanosToAdd, LocalTime.NANOS_PER_DAY) + nofd + LocalTime.NANOS_PER_DAY, LocalTime.NANOS_PER_DAY);\n\n if (nofd === newNofd) {\n return this;\n }\n\n var newHour = MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_HOUR);\n var newMinute = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_MINUTE), LocalTime.MINUTES_PER_HOUR);\n var newSecond = MathUtil.intMod(MathUtil.intDiv(newNofd, LocalTime.NANOS_PER_SECOND), LocalTime.SECONDS_PER_MINUTE);\n var newNano = MathUtil.intMod(newNofd, LocalTime.NANOS_PER_SECOND);\n return new LocalTime(newHour, newMinute, newSecond, newNano);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n requireNonNull(unit, 'unit');\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusHours = function minusHours(hoursToSubtract) {\n return this.plusHours(-1 * MathUtil.intMod(hoursToSubtract, LocalTime.HOURS_PER_DAY));\n };\n\n _proto.minusMinutes = function minusMinutes(minutesToSubtract) {\n return this.plusMinutes(-1 * MathUtil.intMod(minutesToSubtract, LocalTime.MINUTES_PER_DAY));\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(-1 * MathUtil.intMod(secondsToSubtract, LocalTime.SECONDS_PER_DAY));\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * MathUtil.intMod(nanosToSubtract, LocalTime.NANOS_PER_DAY));\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n } else if (_query === TemporalQueries.localTime()) {\n return this;\n }\n\n if (_query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset() || _query === TemporalQueries.localDate()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n return temporal.with(LocalTime.NANO_OF_DAY, this.toNanoOfDay());\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = LocalTime.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n var nanosUntil = end.toNanoOfDay() - this.toNanoOfDay();\n\n switch (unit) {\n case ChronoUnit.NANOS:\n return nanosUntil;\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(nanosUntil, 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.intDiv(nanosUntil, 1000000);\n\n case ChronoUnit.SECONDS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_SECOND);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(nanosUntil, LocalTime.NANOS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(nanosUntil, 12 * LocalTime.NANOS_PER_HOUR);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto.atDate = function atDate(date) {\n return LocalDateTime.of(date, this);\n };\n\n _proto.toSecondOfDay = function toSecondOfDay() {\n var total = this._hour * LocalTime.SECONDS_PER_HOUR;\n total += this._minute * LocalTime.SECONDS_PER_MINUTE;\n total += this._second;\n return total;\n };\n\n _proto.toNanoOfDay = function toNanoOfDay() {\n var total = this._hour * LocalTime.NANOS_PER_HOUR;\n total += this._minute * LocalTime.NANOS_PER_MINUTE;\n total += this._second * LocalTime.NANOS_PER_SECOND;\n total += this._nano;\n return total;\n };\n\n _proto.compareTo = function compareTo(other) {\n requireNonNull(other, 'other');\n requireInstance(other, LocalTime, 'other');\n var cmp = MathUtil.compareNumbers(this._hour, other._hour);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._minute, other._minute);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._second, other._second);\n\n if (cmp === 0) {\n cmp = MathUtil.compareNumbers(this._nano, other._nano);\n }\n }\n }\n\n return cmp;\n };\n\n _proto.isAfter = function isAfter(other) {\n return this.compareTo(other) > 0;\n };\n\n _proto.isBefore = function isBefore(other) {\n return this.compareTo(other) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof LocalTime) {\n return this._hour === other._hour && this._minute === other._minute && this._second === other._second && this._nano === other._nano;\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n var nod = this.toNanoOfDay();\n return MathUtil.hash(nod);\n };\n\n _proto.toString = function toString() {\n var buf = '';\n var hourValue = this._hour;\n var minuteValue = this._minute;\n var secondValue = this._second;\n var nanoValue = this._nano;\n buf += hourValue < 10 ? '0' : '';\n buf += hourValue;\n buf += minuteValue < 10 ? ':0' : ':';\n buf += minuteValue;\n\n if (secondValue > 0 || nanoValue > 0) {\n buf += secondValue < 10 ? ':0' : ':';\n buf += secondValue;\n\n if (nanoValue > 0) {\n buf += '.';\n\n if (MathUtil.intMod(nanoValue, 1000000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000000) + 1000)).substring(1);\n } else if (MathUtil.intMod(nanoValue, 1000) === 0) {\n buf += ('' + (MathUtil.intDiv(nanoValue, 1000) + 1000000)).substring(1);\n } else {\n buf += ('' + (nanoValue + 1000000000)).substring(1);\n }\n }\n }\n\n return buf;\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n _proto.format = function format(formatter) {\n requireNonNull(formatter, 'formatter');\n return formatter.format(this);\n };\n\n return LocalTime;\n}(Temporal);\nfunction _init$k() {\n LocalTime.HOURS = [];\n\n for (var hour = 0; hour < 24; hour++) {\n LocalTime.of(hour, 0, 0, 0);\n }\n\n LocalTime.MIN = LocalTime.HOURS[0];\n LocalTime.MAX = new LocalTime(23, 59, 59, 999999999);\n LocalTime.MIDNIGHT = LocalTime.HOURS[0];\n LocalTime.NOON = LocalTime.HOURS[12];\n LocalTime.FROM = createTemporalQuery('LocalTime.FROM', function (temporal) {\n return LocalTime.from(temporal);\n });\n}\nLocalTime.HOURS_PER_DAY = 24;\nLocalTime.MINUTES_PER_HOUR = 60;\nLocalTime.MINUTES_PER_DAY = LocalTime.MINUTES_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.SECONDS_PER_MINUTE = 60;\nLocalTime.SECONDS_PER_HOUR = LocalTime.SECONDS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.SECONDS_PER_DAY = LocalTime.SECONDS_PER_HOUR * LocalTime.HOURS_PER_DAY;\nLocalTime.MILLIS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000;\nLocalTime.MICROS_PER_DAY = LocalTime.SECONDS_PER_DAY * 1000000;\nLocalTime.NANOS_PER_SECOND = 1000000000;\nLocalTime.NANOS_PER_MINUTE = LocalTime.NANOS_PER_SECOND * LocalTime.SECONDS_PER_MINUTE;\nLocalTime.NANOS_PER_HOUR = LocalTime.NANOS_PER_MINUTE * LocalTime.MINUTES_PER_HOUR;\nLocalTime.NANOS_PER_DAY = LocalTime.NANOS_PER_HOUR * LocalTime.HOURS_PER_DAY;\n\nvar NANOS_PER_MILLI = 1000000;\nvar Instant = function (_Temporal) {\n _inheritsLoose(Instant, _Temporal);\n\n Instant.now = function now(clock) {\n if (clock === void 0) {\n clock = Clock.systemUTC();\n }\n\n return clock.instant();\n };\n\n Instant.ofEpochSecond = function ofEpochSecond(epochSecond, nanoAdjustment) {\n if (nanoAdjustment === void 0) {\n nanoAdjustment = 0;\n }\n\n var secs = epochSecond + MathUtil.floorDiv(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n var nos = MathUtil.floorMod(nanoAdjustment, LocalTime.NANOS_PER_SECOND);\n return Instant._create(secs, nos);\n };\n\n Instant.ofEpochMilli = function ofEpochMilli(epochMilli) {\n var secs = MathUtil.floorDiv(epochMilli, 1000);\n var mos = MathUtil.floorMod(epochMilli, 1000);\n return Instant._create(secs, mos * 1000000);\n };\n\n Instant.from = function from(temporal) {\n try {\n var instantSecs = temporal.getLong(ChronoField.INSTANT_SECONDS);\n var nanoOfSecond = temporal.get(ChronoField.NANO_OF_SECOND);\n return Instant.ofEpochSecond(instantSecs, nanoOfSecond);\n } catch (ex) {\n throw new DateTimeException('Unable to obtain Instant from TemporalAccessor: ' + temporal + ', type ' + typeof temporal, ex);\n }\n };\n\n Instant.parse = function parse(text) {\n return DateTimeFormatter.ISO_INSTANT.parse(text, Instant.FROM);\n };\n\n Instant._create = function _create(seconds, nanoOfSecond) {\n if (seconds === 0 && nanoOfSecond === 0) {\n return Instant.EPOCH;\n }\n\n return new Instant(seconds, nanoOfSecond);\n };\n\n Instant._validate = function _validate(seconds, nanoOfSecond) {\n if (seconds < Instant.MIN_SECONDS || seconds > Instant.MAX_SECONDS) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n\n if (nanoOfSecond < 0 || nanoOfSecond > LocalTime.NANOS_PER_SECOND) {\n throw new DateTimeException('Instant exceeds minimum or maximum instant');\n }\n };\n\n function Instant(seconds, nanoOfSecond) {\n var _this;\n\n _this = _Temporal.call(this) || this;\n\n Instant._validate(seconds, nanoOfSecond);\n\n _this._seconds = MathUtil.safeToInt(seconds);\n _this._nanos = MathUtil.safeToInt(nanoOfSecond);\n return _this;\n }\n\n var _proto = Instant.prototype;\n\n _proto.isSupported = function isSupported(fieldOrUnit) {\n if (fieldOrUnit instanceof ChronoField) {\n return fieldOrUnit === ChronoField.INSTANT_SECONDS || fieldOrUnit === ChronoField.NANO_OF_SECOND || fieldOrUnit === ChronoField.MICRO_OF_SECOND || fieldOrUnit === ChronoField.MILLI_OF_SECOND;\n }\n\n if (fieldOrUnit instanceof ChronoUnit) {\n return fieldOrUnit.isTimeBased() || fieldOrUnit === ChronoUnit.DAYS;\n }\n\n return fieldOrUnit != null && fieldOrUnit.isSupportedBy(this);\n };\n\n _proto.range = function range(field) {\n return _Temporal.prototype.range.call(this, field);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return this._nanos;\n\n case ChronoField.MICRO_OF_SECOND:\n return MathUtil.intDiv(this._nanos, 1000);\n\n case ChronoField.MILLI_OF_SECOND:\n return MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n\n case ChronoField.INSTANT_SECONDS:\n return this._seconds;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.epochSecond = function epochSecond() {\n return this._seconds;\n };\n\n _proto.nano = function nano() {\n return this._nanos;\n };\n\n _proto.withAdjuster = function withAdjuster(adjuster) {\n requireNonNull(adjuster, 'adjuster');\n return adjuster.adjustInto(this);\n };\n\n _proto.withFieldValue = function withFieldValue(field, newValue) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n field.checkValidValue(newValue);\n\n switch (field) {\n case ChronoField.MILLI_OF_SECOND:\n {\n var nval = newValue * NANOS_PER_MILLI;\n return nval !== this._nanos ? Instant._create(this._seconds, nval) : this;\n }\n\n case ChronoField.MICRO_OF_SECOND:\n {\n var _nval = newValue * 1000;\n\n return _nval !== this._nanos ? Instant._create(this._seconds, _nval) : this;\n }\n\n case ChronoField.NANO_OF_SECOND:\n return newValue !== this._nanos ? Instant._create(this._seconds, newValue) : this;\n\n case ChronoField.INSTANT_SECONDS:\n return newValue !== this._seconds ? Instant._create(newValue, this._nanos) : this;\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.adjustInto(this, newValue);\n };\n\n _proto.truncatedTo = function truncatedTo(unit) {\n requireNonNull(unit, 'unit');\n\n if (unit === ChronoUnit.NANOS) {\n return this;\n }\n\n var unitDur = unit.duration();\n\n if (unitDur.seconds() > LocalTime.SECONDS_PER_DAY) {\n throw new DateTimeException('Unit is too large to be used for truncation');\n }\n\n var dur = unitDur.toNanos();\n\n if (MathUtil.intMod(LocalTime.NANOS_PER_DAY, dur) !== 0) {\n throw new DateTimeException('Unit must divide into a standard day without remainder');\n }\n\n var nod = MathUtil.intMod(this._seconds, LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + this._nanos;\n\n var result = MathUtil.intDiv(nod, dur) * dur;\n return this.plusNanos(result - nod);\n };\n\n _proto.plusAmount = function plusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.addTo(this);\n };\n\n _proto.plusAmountUnit = function plusAmountUnit(amountToAdd, unit) {\n requireNonNull(amountToAdd, 'amountToAdd');\n requireNonNull(unit, 'unit');\n requireInstance(unit, TemporalUnit);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this.plusNanos(amountToAdd);\n\n case ChronoUnit.MICROS:\n return this._plus(MathUtil.intDiv(amountToAdd, 1000000), MathUtil.intMod(amountToAdd, 1000000) * 1000);\n\n case ChronoUnit.MILLIS:\n return this.plusMillis(amountToAdd);\n\n case ChronoUnit.SECONDS:\n return this.plusSeconds(amountToAdd);\n\n case ChronoUnit.MINUTES:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_MINUTE));\n\n case ChronoUnit.HOURS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_HOUR));\n\n case ChronoUnit.HALF_DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY / 2));\n\n case ChronoUnit.DAYS:\n return this.plusSeconds(MathUtil.safeMultiply(amountToAdd, LocalTime.SECONDS_PER_DAY));\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.addTo(this, amountToAdd);\n };\n\n _proto.plusSeconds = function plusSeconds(secondsToAdd) {\n return this._plus(secondsToAdd, 0);\n };\n\n _proto.plusMillis = function plusMillis(millisToAdd) {\n return this._plus(MathUtil.intDiv(millisToAdd, 1000), MathUtil.intMod(millisToAdd, 1000) * NANOS_PER_MILLI);\n };\n\n _proto.plusNanos = function plusNanos(nanosToAdd) {\n return this._plus(0, nanosToAdd);\n };\n\n _proto._plus = function _plus(secondsToAdd, nanosToAdd) {\n if (secondsToAdd === 0 && nanosToAdd === 0) {\n return this;\n }\n\n var epochSec = this._seconds + secondsToAdd;\n epochSec = epochSec + MathUtil.intDiv(nanosToAdd, LocalTime.NANOS_PER_SECOND);\n var nanoAdjustment = this._nanos + nanosToAdd % LocalTime.NANOS_PER_SECOND;\n return Instant.ofEpochSecond(epochSec, nanoAdjustment);\n };\n\n _proto.minusAmount = function minusAmount(amount) {\n requireNonNull(amount, 'amount');\n return amount.subtractFrom(this);\n };\n\n _proto.minusAmountUnit = function minusAmountUnit(amountToSubtract, unit) {\n return this.plusAmountUnit(-1 * amountToSubtract, unit);\n };\n\n _proto.minusSeconds = function minusSeconds(secondsToSubtract) {\n return this.plusSeconds(secondsToSubtract * -1);\n };\n\n _proto.minusMillis = function minusMillis(millisToSubtract) {\n return this.plusMillis(-1 * millisToSubtract);\n };\n\n _proto.minusNanos = function minusNanos(nanosToSubtract) {\n return this.plusNanos(-1 * nanosToSubtract);\n };\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.precision()) {\n return ChronoUnit.NANOS;\n }\n\n if (_query === TemporalQueries.localDate() || _query === TemporalQueries.localTime() || _query === TemporalQueries.chronology() || _query === TemporalQueries.zoneId() || _query === TemporalQueries.zone() || _query === TemporalQueries.offset()) {\n return null;\n }\n\n return _query.queryFrom(this);\n };\n\n _proto.adjustInto = function adjustInto(temporal) {\n requireNonNull(temporal, 'temporal');\n return temporal.with(ChronoField.INSTANT_SECONDS, this._seconds).with(ChronoField.NANO_OF_SECOND, this._nanos);\n };\n\n _proto.until = function until(endExclusive, unit) {\n requireNonNull(endExclusive, 'endExclusive');\n requireNonNull(unit, 'unit');\n var end = Instant.from(endExclusive);\n\n if (unit instanceof ChronoUnit) {\n switch (unit) {\n case ChronoUnit.NANOS:\n return this._nanosUntil(end);\n\n case ChronoUnit.MICROS:\n return MathUtil.intDiv(this._nanosUntil(end), 1000);\n\n case ChronoUnit.MILLIS:\n return MathUtil.safeSubtract(end.toEpochMilli(), this.toEpochMilli());\n\n case ChronoUnit.SECONDS:\n return this._secondsUntil(end);\n\n case ChronoUnit.MINUTES:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_MINUTE);\n\n case ChronoUnit.HOURS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.HALF_DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), 12 * LocalTime.SECONDS_PER_HOUR);\n\n case ChronoUnit.DAYS:\n return MathUtil.intDiv(this._secondsUntil(end), LocalTime.SECONDS_PER_DAY);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported unit: ' + unit);\n }\n\n return unit.between(this, end);\n };\n\n _proto._nanosUntil = function _nanosUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var totalNanos = MathUtil.safeMultiply(secsDiff, LocalTime.NANOS_PER_SECOND);\n return MathUtil.safeAdd(totalNanos, end.nano() - this.nano());\n };\n\n _proto._secondsUntil = function _secondsUntil(end) {\n var secsDiff = MathUtil.safeSubtract(end.epochSecond(), this.epochSecond());\n var nanosDiff = end.nano() - this.nano();\n\n if (secsDiff > 0 && nanosDiff < 0) {\n secsDiff--;\n } else if (secsDiff < 0 && nanosDiff > 0) {\n secsDiff++;\n }\n\n return secsDiff;\n };\n\n _proto.atOffset = function atOffset(offset) {\n return OffsetDateTime.ofInstant(this, offset);\n };\n\n _proto.atZone = function atZone(zone) {\n return ZonedDateTime.ofInstant(this, zone);\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n var millis = MathUtil.safeMultiply(this._seconds, 1000);\n return millis + MathUtil.intDiv(this._nanos, NANOS_PER_MILLI);\n };\n\n _proto.compareTo = function compareTo(otherInstant) {\n requireNonNull(otherInstant, 'otherInstant');\n requireInstance(otherInstant, Instant, 'otherInstant');\n var cmp = MathUtil.compareNumbers(this._seconds, otherInstant._seconds);\n\n if (cmp !== 0) {\n return cmp;\n }\n\n return this._nanos - otherInstant._nanos;\n };\n\n _proto.isAfter = function isAfter(otherInstant) {\n return this.compareTo(otherInstant) > 0;\n };\n\n _proto.isBefore = function isBefore(otherInstant) {\n return this.compareTo(otherInstant) < 0;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n if (other instanceof Instant) {\n return this.epochSecond() === other.epochSecond() && this.nano() === other.nano();\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return MathUtil.hashCode(this._seconds, this._nanos);\n };\n\n _proto.toString = function toString() {\n return DateTimeFormatter.ISO_INSTANT.format(this);\n };\n\n _proto.toJSON = function toJSON() {\n return this.toString();\n };\n\n return Instant;\n}(Temporal);\nfunction _init$l() {\n Instant.MIN_SECONDS = -31619119219200;\n Instant.MAX_SECONDS = 31494816403199;\n Instant.EPOCH = new Instant(0, 0);\n Instant.MIN = Instant.ofEpochSecond(Instant.MIN_SECONDS, 0);\n Instant.MAX = Instant.ofEpochSecond(Instant.MAX_SECONDS, 999999999);\n Instant.FROM = createTemporalQuery('Instant.FROM', function (temporal) {\n return Instant.from(temporal);\n });\n}\n\nvar Clock = function () {\n function Clock() {}\n\n Clock.systemUTC = function systemUTC() {\n return new SystemClock(ZoneOffset.UTC);\n };\n\n Clock.systemDefaultZone = function systemDefaultZone() {\n return new SystemClock(ZoneId.systemDefault());\n };\n\n Clock.system = function system(zone) {\n return new SystemClock(zone);\n };\n\n Clock.fixed = function fixed(fixedInstant, zoneId) {\n return new FixedClock(fixedInstant, zoneId);\n };\n\n Clock.offset = function offset(baseClock, duration) {\n return new OffsetClock(baseClock, duration);\n };\n\n var _proto = Clock.prototype;\n\n _proto.millis = function millis() {\n abstractMethodFail('Clock.millis');\n };\n\n _proto.instant = function instant() {\n abstractMethodFail('Clock.instant');\n };\n\n _proto.zone = function zone() {\n abstractMethodFail('Clock.zone');\n };\n\n _proto.withZone = function withZone() {\n abstractMethodFail('Clock.withZone');\n };\n\n return Clock;\n}();\n\nvar SystemClock = function (_Clock) {\n _inheritsLoose(SystemClock, _Clock);\n\n function SystemClock(zone) {\n var _this;\n\n requireNonNull(zone, 'zone');\n _this = _Clock.call(this) || this;\n _this._zone = zone;\n return _this;\n }\n\n var _proto2 = SystemClock.prototype;\n\n _proto2.zone = function zone() {\n return this._zone;\n };\n\n _proto2.millis = function millis() {\n return new Date().getTime();\n };\n\n _proto2.instant = function instant() {\n return Instant.ofEpochMilli(this.millis());\n };\n\n _proto2.equals = function equals(obj) {\n if (obj instanceof SystemClock) {\n return this._zone.equals(obj._zone);\n }\n\n return false;\n };\n\n _proto2.withZone = function withZone(zone) {\n if (zone.equals(this._zone)) {\n return this;\n }\n\n return new SystemClock(zone);\n };\n\n _proto2.toString = function toString() {\n return 'SystemClock[' + this._zone.toString() + ']';\n };\n\n return SystemClock;\n}(Clock);\n\nvar FixedClock = function (_Clock2) {\n _inheritsLoose(FixedClock, _Clock2);\n\n function FixedClock(fixedInstant, zoneId) {\n var _this2;\n\n _this2 = _Clock2.call(this) || this;\n _this2._instant = fixedInstant;\n _this2._zoneId = zoneId;\n return _this2;\n }\n\n var _proto3 = FixedClock.prototype;\n\n _proto3.instant = function instant() {\n return this._instant;\n };\n\n _proto3.millis = function millis() {\n return this._instant.toEpochMilli();\n };\n\n _proto3.zone = function zone() {\n return this._zoneId;\n };\n\n _proto3.toString = function toString() {\n return 'FixedClock[]';\n };\n\n _proto3.equals = function equals(obj) {\n if (obj instanceof FixedClock) {\n return this._instant.equals(obj._instant) && this._zoneId.equals(obj._zoneId);\n }\n\n return false;\n };\n\n _proto3.withZone = function withZone(zone) {\n if (zone.equals(this._zoneId)) {\n return this;\n }\n\n return new FixedClock(this._instant, zone);\n };\n\n return FixedClock;\n}(Clock);\n\nvar OffsetClock = function (_Clock3) {\n _inheritsLoose(OffsetClock, _Clock3);\n\n function OffsetClock(baseClock, offset) {\n var _this3;\n\n _this3 = _Clock3.call(this) || this;\n _this3._baseClock = baseClock;\n _this3._offset = offset;\n return _this3;\n }\n\n var _proto4 = OffsetClock.prototype;\n\n _proto4.zone = function zone() {\n return this._baseClock.zone();\n };\n\n _proto4.withZone = function withZone(zone) {\n if (zone.equals(this._baseClock.zone())) {\n return this;\n }\n\n return new OffsetClock(this._baseClock.withZone(zone), this._offset);\n };\n\n _proto4.millis = function millis() {\n return this._baseClock.millis() + this._offset.toMillis();\n };\n\n _proto4.instant = function instant() {\n return this._baseClock.instant().plus(this._offset);\n };\n\n _proto4.equals = function equals(obj) {\n if (obj instanceof OffsetClock) {\n return this._baseClock.equals(obj._baseClock) && this._offset.equals(obj._offset);\n }\n\n return false;\n };\n\n _proto4.toString = function toString() {\n return 'OffsetClock[' + this._baseClock + ',' + this._offset + ']';\n };\n\n return OffsetClock;\n}(Clock);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneOffsetTransition = function () {\n ZoneOffsetTransition.of = function of(transition, offsetBefore, offsetAfter) {\n return new ZoneOffsetTransition(transition, offsetBefore, offsetAfter);\n };\n\n function ZoneOffsetTransition(transition, offsetBefore, offsetAfter) {\n requireNonNull(transition, 'transition');\n requireNonNull(offsetBefore, 'offsetBefore');\n requireNonNull(offsetAfter, 'offsetAfter');\n\n if (offsetBefore.equals(offsetAfter)) {\n throw new IllegalArgumentException('Offsets must not be equal');\n }\n\n if (transition.nano() !== 0) {\n throw new IllegalArgumentException('Nano-of-second must be zero');\n }\n\n if (transition instanceof LocalDateTime) {\n this._transition = transition;\n } else {\n this._transition = LocalDateTime.ofEpochSecond(transition, 0, offsetBefore);\n }\n\n this._offsetBefore = offsetBefore;\n this._offsetAfter = offsetAfter;\n }\n\n var _proto = ZoneOffsetTransition.prototype;\n\n _proto.instant = function instant() {\n return this._transition.toInstant(this._offsetBefore);\n };\n\n _proto.toEpochSecond = function toEpochSecond() {\n return this._transition.toEpochSecond(this._offsetBefore);\n };\n\n _proto.dateTimeBefore = function dateTimeBefore() {\n return this._transition;\n };\n\n _proto.dateTimeAfter = function dateTimeAfter() {\n return this._transition.plusSeconds(this.durationSeconds());\n };\n\n _proto.offsetBefore = function offsetBefore() {\n return this._offsetBefore;\n };\n\n _proto.offsetAfter = function offsetAfter() {\n return this._offsetAfter;\n };\n\n _proto.duration = function duration() {\n return Duration.ofSeconds(this.durationSeconds());\n };\n\n _proto.durationSeconds = function durationSeconds() {\n return this._offsetAfter.totalSeconds() - this._offsetBefore.totalSeconds();\n };\n\n _proto.isGap = function isGap() {\n return this._offsetAfter.totalSeconds() > this._offsetBefore.totalSeconds();\n };\n\n _proto.isOverlap = function isOverlap() {\n return this._offsetAfter.totalSeconds() < this._offsetBefore.totalSeconds();\n };\n\n _proto.isValidOffset = function isValidOffset(offset) {\n return this.isGap() ? false : this._offsetBefore.equals(offset) || this._offsetAfter.equals(offset);\n };\n\n _proto.validOffsets = function validOffsets() {\n if (this.isGap()) {\n return [];\n } else {\n return [this._offsetBefore, this._offsetAfter];\n }\n };\n\n _proto.compareTo = function compareTo(transition) {\n return this.instant().compareTo(transition.instant());\n };\n\n _proto.equals = function equals(other) {\n if (other === this) {\n return true;\n }\n\n if (other instanceof ZoneOffsetTransition) {\n var d = other;\n return this._transition.equals(d._transition) && this._offsetBefore.equals(d.offsetBefore()) && this._offsetAfter.equals(d.offsetAfter());\n }\n\n return false;\n };\n\n _proto.hashCode = function hashCode() {\n return this._transition.hashCode() ^ this._offsetBefore.hashCode() ^ this._offsetAfter.hashCode() >>> 16;\n };\n\n _proto.toString = function toString() {\n return 'Transition[' + (this.isGap() ? 'Gap' : 'Overlap') + ' at ' + this._transition.toString() + this._offsetBefore.toString() + ' to ' + this._offsetAfter + ']';\n };\n\n return ZoneOffsetTransition;\n}();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nfunction _init$m() {\n TemporalQueries.ZONE_ID = createTemporalQuery('ZONE_ID', function (temporal) {\n return temporal.query(TemporalQueries.ZONE_ID);\n });\n TemporalQueries.CHRONO = createTemporalQuery('CHRONO', function (temporal) {\n return temporal.query(TemporalQueries.CHRONO);\n });\n TemporalQueries.PRECISION = createTemporalQuery('PRECISION', function (temporal) {\n return temporal.query(TemporalQueries.PRECISION);\n });\n TemporalQueries.OFFSET = createTemporalQuery('OFFSET', function (temporal) {\n if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {\n return ZoneOffset.ofTotalSeconds(temporal.get(ChronoField.OFFSET_SECONDS));\n }\n\n return null;\n });\n TemporalQueries.ZONE = createTemporalQuery('ZONE', function (temporal) {\n var zone = temporal.query(TemporalQueries.ZONE_ID);\n return zone != null ? zone : temporal.query(TemporalQueries.OFFSET);\n });\n TemporalQueries.LOCAL_DATE = createTemporalQuery('LOCAL_DATE', function (temporal) {\n if (temporal.isSupported(ChronoField.EPOCH_DAY)) {\n return LocalDate.ofEpochDay(temporal.getLong(ChronoField.EPOCH_DAY));\n }\n\n return null;\n });\n TemporalQueries.LOCAL_TIME = createTemporalQuery('LOCAL_TIME', function (temporal) {\n if (temporal.isSupported(ChronoField.NANO_OF_DAY)) {\n return LocalTime.ofNanoOfDay(temporal.getLong(ChronoField.NANO_OF_DAY));\n }\n\n return null;\n });\n}\n\nvar SystemDefaultZoneRules = function (_ZoneRules) {\n _inheritsLoose(SystemDefaultZoneRules, _ZoneRules);\n\n function SystemDefaultZoneRules() {\n return _ZoneRules.apply(this, arguments) || this;\n }\n\n var _proto = SystemDefaultZoneRules.prototype;\n\n _proto.isFixedOffset = function isFixedOffset() {\n return false;\n };\n\n _proto.offsetOfInstant = function offsetOfInstant(instant) {\n var offsetInMinutes = new Date(instant.toEpochMilli()).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfEpochMilli = function offsetOfEpochMilli(epochMilli) {\n var offsetInMinutes = new Date(epochMilli).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutes * -1);\n };\n\n _proto.offsetOfLocalDateTime = function offsetOfLocalDateTime(localDateTime) {\n var epochMilli = localDateTime.toEpochSecond(ZoneOffset.UTC) * 1000;\n var offsetInMinutesBeforePossibleTransition = new Date(epochMilli).getTimezoneOffset();\n var epochMilliSystemZone = epochMilli + offsetInMinutesBeforePossibleTransition * 60000;\n var offsetInMinutesAfterPossibleTransition = new Date(epochMilliSystemZone).getTimezoneOffset();\n return ZoneOffset.ofTotalMinutes(offsetInMinutesAfterPossibleTransition * -1);\n };\n\n _proto.validOffsets = function validOffsets(localDateTime) {\n return [this.offsetOfLocalDateTime(localDateTime)];\n };\n\n _proto.transition = function transition() {\n return null;\n };\n\n _proto.standardOffset = function standardOffset(instant) {\n return this.offsetOfInstant(instant);\n };\n\n _proto.daylightSavings = function daylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isDaylightSavings = function isDaylightSavings() {\n this._throwNotSupported();\n };\n\n _proto.isValidOffset = function isValidOffset(dateTime, offset) {\n return this.offsetOfLocalDateTime(dateTime).equals(offset);\n };\n\n _proto.nextTransition = function nextTransition() {\n this._throwNotSupported();\n };\n\n _proto.previousTransition = function previousTransition() {\n this._throwNotSupported();\n };\n\n _proto.transitions = function transitions() {\n this._throwNotSupported();\n };\n\n _proto.transitionRules = function transitionRules() {\n this._throwNotSupported();\n };\n\n _proto._throwNotSupported = function _throwNotSupported() {\n throw new DateTimeException('not supported operation');\n };\n\n _proto.equals = function equals(other) {\n if (this === other || other instanceof SystemDefaultZoneRules) {\n return true;\n } else {\n return false;\n }\n };\n\n _proto.toString = function toString() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneRules;\n}(ZoneRules);\n\nvar SystemDefaultZoneId = function (_ZoneId) {\n _inheritsLoose(SystemDefaultZoneId, _ZoneId);\n\n function SystemDefaultZoneId() {\n var _this;\n\n _this = _ZoneId.call(this) || this;\n _this._rules = new SystemDefaultZoneRules();\n return _this;\n }\n\n var _proto = SystemDefaultZoneId.prototype;\n\n _proto.rules = function rules() {\n return this._rules;\n };\n\n _proto.equals = function equals(other) {\n if (this === other) {\n return true;\n }\n\n return false;\n };\n\n _proto.id = function id() {\n return 'SYSTEM';\n };\n\n return SystemDefaultZoneId;\n}(ZoneId);\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar ZoneIdFactory = function () {\n function ZoneIdFactory() {}\n\n ZoneIdFactory.systemDefault = function systemDefault() {\n return SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n };\n\n ZoneIdFactory.getAvailableZoneIds = function getAvailableZoneIds() {\n return ZoneRulesProvider.getAvailableZoneIds();\n };\n\n ZoneIdFactory.of = function of(zoneId) {\n requireNonNull(zoneId, 'zoneId');\n\n if (zoneId === 'Z') {\n return ZoneOffset.UTC;\n }\n\n if (zoneId.length === 1) {\n throw new DateTimeException('Invalid zone: ' + zoneId);\n }\n\n if (StringUtil.startsWith(zoneId, '+') || StringUtil.startsWith(zoneId, '-')) {\n return ZoneOffset.of(zoneId);\n }\n\n if (zoneId === 'UTC' || zoneId === 'GMT' || zoneId === 'GMT0' || zoneId === 'UT') {\n return new ZoneRegion(zoneId, ZoneOffset.UTC.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UTC+') || StringUtil.startsWith(zoneId, 'GMT+') || StringUtil.startsWith(zoneId, 'UTC-') || StringUtil.startsWith(zoneId, 'GMT-')) {\n var offset = ZoneOffset.of(zoneId.substring(3));\n\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(zoneId.substring(0, 3), offset.rules());\n }\n\n return new ZoneRegion(zoneId.substring(0, 3) + offset.id(), offset.rules());\n }\n\n if (StringUtil.startsWith(zoneId, 'UT+') || StringUtil.startsWith(zoneId, 'UT-')) {\n var _offset = ZoneOffset.of(zoneId.substring(2));\n\n if (_offset.totalSeconds() === 0) {\n return new ZoneRegion('UT', _offset.rules());\n }\n\n return new ZoneRegion('UT' + _offset.id(), _offset.rules());\n }\n\n if (zoneId === 'SYSTEM') {\n return ZoneId.systemDefault();\n }\n\n return ZoneRegion.ofId(zoneId);\n };\n\n ZoneIdFactory.ofOffset = function ofOffset(prefix, offset) {\n requireNonNull(prefix, 'prefix');\n requireNonNull(offset, 'offset');\n\n if (prefix.length === 0) {\n return offset;\n }\n\n if (prefix === 'GMT' || prefix === 'UTC' || prefix === 'UT') {\n if (offset.totalSeconds() === 0) {\n return new ZoneRegion(prefix, offset.rules());\n }\n\n return new ZoneRegion(prefix + offset.id(), offset.rules());\n }\n\n throw new IllegalArgumentException('Invalid prefix, must be GMT, UTC or UT: ' + prefix);\n };\n\n ZoneIdFactory.from = function from(temporal) {\n requireNonNull(temporal, 'temporal');\n var obj = temporal.query(TemporalQueries.zone());\n\n if (obj == null) {\n throw new DateTimeException('Unable to obtain ZoneId from TemporalAccessor: ' + temporal + ', type ' + (temporal.constructor != null ? temporal.constructor.name : ''));\n }\n\n return obj;\n };\n\n return ZoneIdFactory;\n}();\nvar SYSTEM_DEFAULT_ZONE_ID_INSTANCE = null;\nfunction _init$n() {\n SYSTEM_DEFAULT_ZONE_ID_INSTANCE = new SystemDefaultZoneId();\n ZoneId.systemDefault = ZoneIdFactory.systemDefault;\n ZoneId.getAvailableZoneIds = ZoneIdFactory.getAvailableZoneIds;\n ZoneId.of = ZoneIdFactory.of;\n ZoneId.ofOffset = ZoneIdFactory.ofOffset;\n ZoneId.from = ZoneIdFactory.from;\n ZoneOffset.from = ZoneIdFactory.from;\n ZoneId.SYSTEM = SYSTEM_DEFAULT_ZONE_ID_INSTANCE;\n ZoneId.UTC = ZoneOffset.ofTotalSeconds(0);\n}\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar isInit = false;\n\nfunction init() {\n if (isInit) {\n return;\n }\n\n isInit = true;\n _init$1();\n _init();\n _init$2();\n _init$3();\n _init$k();\n _init$8();\n _init$m();\n _init$4();\n _init$l();\n _init$i();\n _init$j();\n _init$d();\n _init$5();\n _init$c();\n _init$b();\n _init$6();\n _init$7();\n _init$g();\n _init$n();\n _init$e();\n _init$a();\n _init$9();\n _init$h();\n _init$f();\n}\n\ninit();\n\n/*\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\n\nvar ToNativeJsConverter = function () {\n function ToNativeJsConverter(temporal, zone) {\n var zonedDateTime;\n\n if (temporal instanceof LocalDate) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atStartOfDay(zone);\n } else if (temporal instanceof LocalDateTime) {\n zone = zone == null ? ZoneId.systemDefault() : zone;\n zonedDateTime = temporal.atZone(zone);\n } else if (temporal instanceof ZonedDateTime) {\n if (zone == null) {\n zonedDateTime = temporal;\n } else {\n zonedDateTime = temporal.withZoneSameInstant(zone);\n }\n } else {\n throw new IllegalArgumentException('unsupported instance for convert operation:' + temporal);\n }\n\n this.instant = zonedDateTime.toInstant();\n }\n\n var _proto = ToNativeJsConverter.prototype;\n\n _proto.toDate = function toDate() {\n return new Date(this.instant.toEpochMilli());\n };\n\n _proto.toEpochMilli = function toEpochMilli() {\n return this.instant.toEpochMilli();\n };\n\n return ToNativeJsConverter;\n}();\n\nfunction convert(temporal, zone) {\n return new ToNativeJsConverter(temporal, zone);\n}\n\nvar NativeJsTemporal = function (_TemporalAccessor) {\n _inheritsLoose(NativeJsTemporal, _TemporalAccessor);\n\n function NativeJsTemporal(date, zone) {\n var _this;\n\n if (zone === void 0) {\n zone = ZoneId.systemDefault();\n }\n\n _this = _TemporalAccessor.call(this) || this;\n _this._zone = zone;\n\n if (date instanceof Date) {\n _this._epochMilli = date.getTime();\n return _assertThisInitialized(_this);\n } else if (typeof date.toDate === 'function' && date.toDate() instanceof Date) {\n _this._epochMilli = date.toDate().getTime();\n return _assertThisInitialized(_this);\n }\n\n assert(false, 'date must be either a javascript date or a moment');\n return _this;\n }\n\n var _proto = NativeJsTemporal.prototype;\n\n _proto.query = function query(_query) {\n requireNonNull(_query, 'query');\n\n if (_query === TemporalQueries.localDate()) {\n return LocalDate.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.localTime()) {\n return LocalTime.ofInstant(Instant.ofEpochMilli(this._epochMilli), this._zone);\n } else if (_query === TemporalQueries.zone()) {\n return this._zone;\n }\n\n return _TemporalAccessor.prototype.query.call(this, _query);\n };\n\n _proto.get = function get(field) {\n return this.getLong(field);\n };\n\n _proto.getLong = function getLong(field) {\n requireNonNull(field, 'field');\n\n if (field instanceof ChronoField) {\n switch (field) {\n case ChronoField.NANO_OF_SECOND:\n return MathUtil.floorMod(this._epochMilli, 1000) * 1000000;\n\n case ChronoField.INSTANT_SECONDS:\n return MathUtil.floorDiv(this._epochMilli, 1000);\n }\n\n throw new UnsupportedTemporalTypeException('Unsupported field: ' + field);\n }\n\n return field.getFrom(this);\n };\n\n _proto.isSupported = function isSupported(field) {\n return field === ChronoField.INSTANT_SECONDS || field === ChronoField.NANO_OF_SECOND;\n };\n\n return NativeJsTemporal;\n}(TemporalAccessor);\n\nfunction nativeJs(date, zone) {\n return new NativeJsTemporal(date, zone);\n}\n\nfunction bindUse(jsJoda) {\n var used = [];\n return function use(fn) {\n if (!~used.indexOf(fn)) {\n fn(jsJoda);\n used.push(fn);\n }\n\n return jsJoda;\n };\n}\n\n/**\n * @copyright (c) 2016, Philipp Thürwächter & Pattrick Hüper\n * @license BSD-3-Clause (see LICENSE in the root directory of this source tree)\n */\nvar _ = {\n assert: assert$1,\n DateTimeBuilder: DateTimeBuilder,\n DateTimeParseContext: DateTimeParseContext,\n DateTimePrintContext: DateTimePrintContext,\n MathUtil: MathUtil,\n StringUtil: StringUtil,\n StringBuilder: StringBuilder\n};\nvar jsJodaExports = {\n _: _,\n convert: convert,\n nativeJs: nativeJs,\n ArithmeticException: ArithmeticException,\n DateTimeException: DateTimeException,\n DateTimeParseException: DateTimeParseException,\n IllegalArgumentException: IllegalArgumentException,\n IllegalStateException: IllegalStateException,\n UnsupportedTemporalTypeException: UnsupportedTemporalTypeException,\n NullPointerException: NullPointerException,\n Clock: Clock,\n DayOfWeek: DayOfWeek,\n Duration: Duration,\n Instant: Instant,\n LocalDate: LocalDate,\n LocalTime: LocalTime,\n LocalDateTime: LocalDateTime,\n OffsetTime: OffsetTime,\n OffsetDateTime: OffsetDateTime,\n Month: Month,\n MonthDay: MonthDay,\n Period: Period,\n Year: Year,\n YearConstants: YearConstants,\n YearMonth: YearMonth,\n ZonedDateTime: ZonedDateTime,\n ZoneOffset: ZoneOffset,\n ZoneId: ZoneId,\n ZoneRegion: ZoneRegion,\n ZoneOffsetTransition: ZoneOffsetTransition,\n ZoneRules: ZoneRules,\n ZoneRulesProvider: ZoneRulesProvider,\n ChronoLocalDate: ChronoLocalDate,\n ChronoLocalDateTime: ChronoLocalDateTime,\n ChronoZonedDateTime: ChronoZonedDateTime,\n IsoChronology: IsoChronology,\n ChronoField: ChronoField,\n ChronoUnit: ChronoUnit,\n IsoFields: IsoFields,\n Temporal: Temporal,\n TemporalAccessor: TemporalAccessor,\n TemporalAdjuster: TemporalAdjuster,\n TemporalAdjusters: TemporalAdjusters,\n TemporalAmount: TemporalAmount,\n TemporalField: TemporalField,\n TemporalQueries: TemporalQueries,\n TemporalQuery: TemporalQuery,\n TemporalUnit: TemporalUnit,\n ValueRange: ValueRange,\n DateTimeFormatter: DateTimeFormatter,\n DateTimeFormatterBuilder: DateTimeFormatterBuilder,\n DecimalStyle: DecimalStyle,\n ResolverStyle: ResolverStyle,\n SignStyle: SignStyle,\n TextStyle: TextStyle\n};\nvar use = bindUse(jsJodaExports);\njsJodaExports.use = use;\n\nexport { ArithmeticException, ChronoField, ChronoLocalDate, ChronoLocalDateTime, ChronoUnit, ChronoZonedDateTime, Clock, DateTimeException, DateTimeFormatter, DateTimeFormatterBuilder, DateTimeParseException, DayOfWeek, DecimalStyle, Duration, IllegalArgumentException, IllegalStateException, Instant, IsoChronology, IsoFields, LocalDate, LocalDateTime, LocalTime, Month, MonthDay, NullPointerException, OffsetDateTime, OffsetTime, Period, ResolverStyle, SignStyle, Temporal, TemporalAccessor, TemporalAdjuster, TemporalAdjusters, TemporalAmount, TemporalField, TemporalQueries, TemporalQuery, TemporalUnit, TextStyle, UnsupportedTemporalTypeException, ValueRange, Year, YearConstants, YearMonth, ZoneId, ZoneOffset, ZoneOffsetTransition, ZoneRegion, ZoneRules, ZoneRulesProvider, ZonedDateTime, _, convert, nativeJs, use };\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"package earth.worldwind.tutorials\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.ResourcePlatformDetails\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"b2b6bf999bb7eb17beafe2c2594b9e31\"\n\n public actual object images : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val aircraft_fighter: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fighter.png\\\")\") as String, fileName = \"aircraft_fighter.png\")\n\n public actual val worldwind_logo: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_logo.png\\\")\") as String, fileName = \"worldwind_logo.png\")\n\n public actual val aircraft_fixwing: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/aircraft_fixwing.png\\\")\") as String, fileName = \"aircraft_fixwing.png\")\n\n public actual val ehipcc: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/ehipcc.png\\\")\") as String, fileName = \"ehipcc.png\")\n\n public actual val pattern_sample_houndstooth: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/pattern_sample_houndstooth.png\\\")\") as String, fileName =\n \"pattern_sample_houndstooth.png\")\n\n public actual val airport_terminal: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/airport_terminal.png\\\")\") as String, fileName = \"airport_terminal.png\")\n\n public actual override fun values(): List = listOf(aircraft_fighter,\n worldwind_logo, aircraft_fixwing, ehipcc, pattern_sample_houndstooth, airport_terminal)\n }\n}\n","package earth.worldwind.tutorials\n\nabstract class AbstractTutorial {\n\n /**\n * Defines a list of custom actions\n */\n open val actions: ArrayList? = null\n\n /**\n * Runs any of custom actions listed in [actions]\n */\n open fun runAction(actionName: String) {}\n\n /**\n * Runs after switching to this example\n */\n open fun start() {}\n\n /**\n * Runs before switching to another example\n */\n open fun stop() {}\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport kotlinx.datetime.Clock\n\nclass BasicTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n var starFieldLayer: StarFieldLayer? = null\n var atmosphereLayer: AtmosphereLayer? = null\n\n override fun start() {\n super.start()\n engine.layers.run {\n val time = Clock.System.now()\n starFieldLayer = (getLayer(indexOfLayerNamed(\"StarField\")) as StarFieldLayer).apply { this.time = time }\n atmosphereLayer = (getLayer(indexOfLayerNamed(\"Atmosphere\")) as AtmosphereLayer).apply { this.time = time }\n }\n }\n\n override fun stop() {\n super.stop()\n starFieldLayer?.time = null\n atmosphereLayer?.time = null\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\n\nclass CameraViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setCameraAction()\n }\n\n private fun setCameraAction() {\n // Create a view of Point Mugu airport as seen from an aircraft above Oxnard, CA.\n val aircraft = Position.fromDegrees(34.2, -119.2, 3000.0) // Above Oxnard CA, altitude in meters\n val airport = Position.fromDegrees(34.1192744, -119.1195850, 4.0) // KNTD airport, Point Mugu CA, altitude MSL\n\n // Compute heading and tilt angles from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply the camera view\n engine.camera.set(\n aircraft.latitude, aircraft.longitude, aircraft.altitude, AltitudeMode.ABSOLUTE, heading, tilt, roll = Angle.ZERO\n )\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.heatmap.ElevationHeatmapLayer\n\nclass ElevationHeatmapTutorial(private val engine: WorldWind) : AbstractTutorial() {\n var elevationHeatmapLayer = ElevationHeatmapLayer();\n\n override fun start() {\n super.start()\n engine.layers.addLayer(elevationHeatmapLayer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position.fromDegrees(50.4501 , 30.5234 , 0.0), // Kyiv\n altitudeMode = AltitudeMode.ABSOLUTE, range = 1e4,\n heading = Angle.ZERO, tilt = 0.0.degrees, roll = Angle.ZERO\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(elevationHeatmapLayer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Ellipse\n\nclass EllipsesTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Ellipses\").apply {\n // Create a surface ellipse with the default attributes, a 500km major-radius and a 300km minor-radius. Surface\n // ellipses are configured with a CLAMP_TO_GROUND altitudeMode and followTerrain set to true.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with custom attributes that make the interior 50% transparent and increase the\n // outline width.\n addRenderable(\n Ellipse(Position.fromDegrees(45.0, -100.0, 0.0), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create a surface ellipse with a heading of 45 degrees, causing the semi-major axis to point Northeast and the\n // semi-minor axis to point Southeast.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -120.0, 0.0), 500000.0, 300000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n heading = 45.0.degrees\n }\n )\n\n // Create a surface circle with the default attributes and 400km radius.\n addRenderable(\n Ellipse(Position.fromDegrees(35.0, -100.0, 0.0), 400000.0, 400000.0).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the ellipse's center position to the terrain surface\n isFollowTerrain = true // cause the ellipse geometry to follow the terrain surface\n }\n )\n\n // Create an ellipse with the default attributes, an altitude of 200 km, and a 500km major-radius and a 300km\n // minor-radius.\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -120.0, 200e3), 500000.0, 300000.0)\n )\n\n // Create an ellipse with custom attributes that make the interior 50% transparent and an extruded outline with\n // vertical lines\n addRenderable(\n Ellipse(Position.fromDegrees(25.0, -100.0, 200e3), 500000.0, 300000.0).apply {\n attributes.apply {\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n isDrawVerticals = true\n }\n isExtrude = true\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-110.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.format.format\nimport kotlin.jvm.JvmInline\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n@JvmInline\nvalue class Angle private constructor(\n /**\n * Size of this angle in degrees.\n */\n val inDegrees: Double\n): Comparable {\n /**\n * Size of this angle in radians. This may be useful for functions, which\n * generally take radians as trigonometric arguments.\n */\n val inRadians get() = toRadians(inDegrees)\n /**\n * Size of this angle in minutes.\n */\n val inMinutes get() = toMinutes(inDegrees)\n /**\n * Size of this angle in seconds.\n */\n val inSeconds get() = toSeconds(inDegrees)\n /**\n * Size of this angle in milliradians.\n */\n val inMrad get() = toMrad(inDegrees)\n /**\n * Size of this angle in mil NATO.\n */\n val inMilNATO get() = toMilNATO(inDegrees)\n /**\n * Size of this angle in mil Warsaw Pact.\n */\n val inMilWP get() = toMilWP(inDegrees)\n /**\n * Size of this angle in Streck.\n */\n val inStreck get() = toStreck(inDegrees)\n /**\n * Size of this angle in minute of angle (MOA).\n */\n val inMOA get() = toMOA(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of latitude, [-90, 90].\n */\n val isValidLatitude get() = isValidLatitude(inDegrees)\n /**\n * Indicates whether this angle is within the normal range of longitude, [-180, 180].\n */\n val isValidLongitude get() = isValidLongitude(inDegrees)\n /**\n * Return North or South notation depends on sign\n */\n val latitudeLetter get() = if (inDegrees < 0.0) \"S\" else \"N\"\n /**\n * Return West or East notation depends on sign\n */\n val longitudeLetter get() = if (inDegrees < 0.0) \"W\" else \"E\"\n /**\n * Relative latitude (from wiki.openstreetmap.org)\n */\n val relativeLatitude get() = (1 - ln(tan(inRadians) + 1 / cos(inRadians)) / PI) / 2\n /**\n * Relative longitude (from wiki.openstreetmap.org)\n */\n val relativeLongitude get() = (inDegrees + 180.0) / 360.0\n\n companion object {\n /** Represents an angle of zero degrees */\n @JvmStatic val ZERO = 0.0.degrees\n /** Represents a right angle of positive 90 degrees */\n @JvmStatic val POS90 = 90.0.degrees\n /** Represents a right angle of negative 90 degrees */\n @JvmStatic val NEG90 = (-90.0).degrees\n /** Represents an angle of positive 180 degrees */\n @JvmStatic val POS180 = 180.0.degrees\n /** Represents an angle of negative 180 degrees */\n @JvmStatic val NEG180 = (-180.0).degrees\n /** Represents an angle of positive 360 degrees */\n @JvmStatic val POS360 = 360.0.degrees\n /** Represents an angle of negative 360 degrees */\n @JvmStatic val NEG360 = (-360.0).degrees\n /** Represents an angle of 1 minute */\n @JvmStatic val MINUTE = (1.0 / 60.0).degrees\n /** Represents an angle of 1 second */\n @JvmStatic val SECOND = (1.0 / 3600.0).degrees\n /**\n * Conversion factor for degrees to radians.\n */\n const val DEGREES_TO_RADIANS = PI / 180.0\n /**\n * Conversion factor for radians to degrees.\n */\n const val RADIANS_TO_DEGREES = 180.0 / PI\n /**\n * Conversion factor for degrees to minutes.\n */\n const val DEGREES_TO_MINUTES = 60.0\n /**\n * Conversion factor for minutes to degrees.\n */\n const val MINUTES_TO_DEGREES = 1.0 / 60.0\n /**\n * Conversion factor for degrees to seconds.\n */\n const val DEGREES_TO_SECONDS = 3600.0\n /**\n * Conversion factor for seconds to degrees.\n */\n const val SECONDS_TO_DEGREES = 1.0 / 3600.0\n /**\n * Conversion factor for degrees to milliradians.\n */\n const val DEGREES_TO_MRAD = PI * 2.0 / 360.0\n /**\n * Conversion factor for milliradians to degrees.\n */\n const val MRAD_TO_DEGREES = 360.0 / PI / 2.0\n /**\n * Conversion factor for degrees to milliradians (NATO).\n */\n const val DEGREES_TO_MIL_NATO = 6400.0 / 360.0\n /**\n * Conversion factor for milliradians (NATO) to degrees.\n */\n const val MIL_NATO_TO_DEGREES = 360.0 / 6400.0\n /**\n * Conversion factor for degrees to milliradians (Warsaw Pact).\n */\n const val DEGREES_TO_MIL_WP = 6000.0 / 360.0\n /**\n * Conversion factor for milliradians (Warsaw Pact) to degrees.\n */\n const val MIL_WP_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to milliradians (Sweden).\n */\n const val DEGREES_TO_STRECK = 6300.0 / 360.0\n /**\n * Conversion factor for milliradians (Sweden) to degrees.\n */\n const val STRECK_TO_DEGREES = 360.0 / 6000.0\n /**\n * Conversion factor for degrees to minute of angle (MOA).\n */\n const val DEGREES_TO_MOA = 21600.0 / 360.0\n /**\n * Conversion factor for minute of angle (MOA) to degrees.\n */\n const val MOA_TO_DEGREES = 360.0 / 21600.0\n\n /**\n * Returns an Angle equal to this Double number in degrees.\n */\n inline val Double.degrees get() = fromDegrees(this)\n\n /**\n * Returns an Angle equal to this Double number in radians.\n */\n inline val Double.radians get() = fromRadians(this)\n\n /**\n * Returns an Angle equal to this Double number in minutes.\n */\n inline val Double.minutes get() = fromMinutes(this)\n\n /**\n * Returns an Angle equal to this Double number in seconds.\n */\n inline val Double.seconds get() = fromSeconds(this)\n\n /**\n * Returns an Angle equal to this Double number in milliradians.\n */\n inline val Double.mrad get() = fromMrad(this)\n\n /**\n * Returns an Angle equal to this Double number in mil NATO.\n */\n inline val Double.milNATO get() = fromMilNATO(this)\n\n /**\n * Returns an Angle equal to this Double number in mil Warsaw Pact.\n */\n inline val Double.milWP get() = fromMilWP(this)\n\n /**\n * Returns an Angle equal to this Double number in Streck.\n */\n inline val Double.streck get() = fromStreck(this)\n\n /**\n * Returns an Angle equal to this Double number in minute of angle (MOA).\n */\n inline val Double.MOA get() = fromMOA(this)\n\n /**\n * Convert radians to degrees\n *\n * @param radians value in radians\n *\n * @return value in degrees\n */\n @JvmStatic fun toDegrees(radians: Double) = radians * RADIANS_TO_DEGREES\n\n /**\n * Convert degrees to radians\n *\n * @param degrees value in degrees\n *\n * @return value in radians\n */\n @JvmStatic fun toRadians(degrees: Double) = degrees * DEGREES_TO_RADIANS\n\n /**\n * Convert degrees to minutes\n *\n * @param degrees value in degrees\n *\n * @return value in minutes\n */\n @JvmStatic fun toMinutes(degrees: Double) = degrees * DEGREES_TO_MINUTES\n\n /**\n * Convert degrees to seconds\n *\n * @param degrees value in degrees\n *\n * @return value in seconds\n */\n @JvmStatic fun toSeconds(degrees: Double) = degrees * DEGREES_TO_SECONDS\n\n /**\n * Convert degrees to milliradians\n *\n * @param degrees value in degrees\n *\n * @return value in milliradians\n */\n @JvmStatic fun toMrad(degrees: Double) = degrees * DEGREES_TO_MRAD\n\n /**\n * Convert degrees to mil NATO\n *\n * @param degrees value in degrees\n *\n * @return value in mil NATO\n */\n @JvmStatic fun toMilNATO(degrees: Double) = degrees * DEGREES_TO_MIL_NATO\n\n /**\n * Convert degrees to mil Warsaw Pact\n *\n * @param degrees value in degrees\n *\n * @return value in mil Warsaw Pact\n */\n @JvmStatic fun toMilWP(degrees: Double) = degrees * DEGREES_TO_MIL_WP\n\n /**\n * Convert degrees to Streck\n *\n * @param degrees value in degrees\n *\n * @return value in mil Streck\n */\n @JvmStatic fun toStreck(degrees: Double) = degrees * DEGREES_TO_STRECK\n\n /**\n * Convert degrees to minute of angle (MOA)\n *\n * @param degrees value in degrees\n *\n * @return value in minute of angle (MOA)\n */\n @JvmStatic fun toMOA(degrees: Double) = degrees * DEGREES_TO_MOA\n\n /**\n * Obtains an angle from a specified number of degrees.\n *\n * @param degrees the size in degrees of the angle to be obtained\n *\n * @return a new angle, whose size in degrees is given by [degrees]\n */\n @JvmStatic fun fromDegrees(degrees: Double) = Angle(degrees)\n\n /**\n * Obtains an angle from a specified number of radians.\n *\n * @param radians the size in radians of the angle to be obtained.\n *\n * @return a new angle, whose size in radians is given by [radians].\n */\n @JvmStatic fun fromRadians(radians: Double) = Angle(radians * RADIANS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minutes.\n *\n * @param minutes the size in minutes of the angle to be obtained.\n *\n * @return a new angle, whose size in minutes is given by [minutes].\n */\n @JvmStatic fun fromMinutes(minutes: Double) = Angle(minutes * MINUTES_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of seconds.\n *\n * @param seconds the size in seconds of the angle to be obtained.\n *\n * @return a new angle, whose size in seconds is given by [seconds].\n */\n @JvmStatic fun fromSeconds(seconds: Double) = Angle(seconds * SECONDS_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of milliradians.\n *\n * @param mrad the size in milliradians of the angle to be obtained.\n *\n * @return a new angle, whose size in milliradians is given by [mrad].\n */\n @JvmStatic fun fromMrad(mrad: Double) = Angle(mrad * MRAD_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil NATO.\n *\n * @param milNATO the size in mil NATO of the angle to be obtained.\n *\n * @return a new angle, whose size in mil NATO is given by [milNATO].\n */\n @JvmStatic fun fromMilNATO(milNATO: Double) = Angle(milNATO * MIL_NATO_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of mil Warsaw Pact.\n *\n * @param milWP the size in mil WP of the angle to be obtained.\n *\n * @return a new angle, whose size in mil WP is given by [milWP].\n */\n @JvmStatic fun fromMilWP(milWP: Double) = Angle(milWP * MIL_WP_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of Streck.\n *\n * @param streck the size in Streck of the angle to be obtained.\n *\n * @return a new angle, whose size in Streck is given by [streck].\n */\n @JvmStatic fun fromStreck(streck: Double) = Angle(streck * STRECK_TO_DEGREES)\n\n /**\n * Obtains an angle from a specified number of minute of angle (MOA).\n *\n * @param moa the size in MOA of the angle to be obtained.\n *\n * @return a new angle, whose size in MOA is given by [moa].\n */\n @JvmStatic fun fromMOA(moa: Double) = Angle(moa * MOA_TO_DEGREES)\n\n /**\n * Obtains an angle from rectangular coordinates.\n *\n * @param x the abscissa coordinate.\n * @param y the ordinate coordinate.\n *\n * @return a new angle, whose size is determined from `x` and `y`.\n */\n @JvmStatic fun fromXY(x: Double, y: Double) = atan2(y, x).radians\n\n /**\n * Obtain an angle from a given number of positive degrees, minutes and seconds.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes integer number of minutes, positive only between 0 and 60.\n * @param seconds integer number of seconds, positive only between 0 and 60.\n *\n * @return a new angle whose size in degrees is given by `degrees`, `minutes` and `seconds`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDMS(degrees: Int, minutes: Int, seconds: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidDegrees\")\n }\n require(minutes in 0 until 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidMinutes\")\n }\n require(seconds >= 0 && seconds < 60) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidSeconds\")\n }\n return fromDegrees(degrees + minutes / 60.0 + seconds / 3600.0)\n }\n\n /**\n * Obtain an angle from a given number of positive degrees and decimal minutes.\n *\n * @param degrees integer number of degrees, positive.\n * @param minutes double representing the decimal representation of minutes and seconds.\n *\n * @return a new angle whose size in degrees is given by `degrees` and decimal `minutes`.\n *\n * @throws IllegalArgumentException if minutes or seconds are outside the 0-60 range or the degrees is negative.\n */\n @JvmStatic\n fun fromDM(degrees: Int, minutes: Double): Angle {\n require(degrees >= 0) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidDegrees\")\n }\n require(minutes >= 0 && minutes < 60) {\n logMessage(ERROR, \"Angle\", \"fromDM\", \"invalidMinutes\")\n }\n return fromDegrees(degrees + minutes / 60.0)\n }\n\n /**\n * Obtain an angle from a degrees, minute and seconds character string.\n *\n * eg:
\n         * 123 34 42\n         * -123* 34' 42\" (where * stands for the degree symbol)\n         * +45* 12' 30\" (where * stands for the degree symbol)\n         * 45 12 30 S\n         * 45 12 30 N\n         * 
\n * For a string containing both a sign and compass direction, the compass direction will take precedence.\n *\n * @param dmsString the degrees, minute and second character string.\n *\n * @return the corresponding angle.\n *\n * @throws IllegalArgumentException if dmsString is not properly formatted.\n */\n @JvmStatic\n fun fromDMS(dmsString: String): Angle {\n var dms = dmsString\n // Check for string format validity\n val regex = Regex(\"([-+]?\\\\d{1,3}[dD°\\\\s](\\\\s*\\\\d{1,2}['’\\\\s])?(\\\\s*\\\\d{1,2}[\\\"”\\\\s])?\\\\s*([NnSsEeWw])?\\\\s?)\")\n require(regex.matches(\"$dms \")) {\n logMessage(ERROR, \"Angle\", \"fromDMS\", \"invalidFormat\")\n }\n // Replace degree, min and sec signs with space\n dms = dms.replace(\"[Dd°'’\\\"”]\".toRegex(), \" \")\n // Replace multiple spaces with single ones\n dms = dms.replace(\"\\\\s+\".toRegex(), \" \")\n dms = dms.trim { it <= ' ' }\n\n // Check for sign prefix and suffix\n var sign = 1\n val suffix = dms.uppercase()[dms.length - 1]\n val prefix = dms[0]\n if (!suffix.isDigit()) {\n sign = if (suffix == 'S' || suffix == 'W') -1 else 1\n dms = dms.substring(0, dms.length - 1)\n dms = dms.trim { it <= ' ' }\n\n // check and trim the prefix if it is erroneously included\n if (!prefix.isDigit()) {\n dms = dms.substring(1, dms.length)\n dms = dms.trim { it <= ' ' }\n }\n } else if (!prefix.isDigit()) {\n sign *= if (prefix == '-') -1 else 1\n dms = dms.substring(1, dms.length)\n }\n\n // Extract degrees, minutes and seconds\n val dmsArray = dms.split(\" \").toTypedArray()\n val d = dmsArray[0].toInt()\n val m = if (dmsArray.size > 1) dmsArray[1].toInt() else 0\n val s = if (dmsArray.size > 2) dmsArray[2].toDouble() else 0.0\n return fromDMS(d, m, s) * sign.toDouble()\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than -180 wrap back to +180, while angles greater than\n * +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeAngle180(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle > 180) angle - 360 else if (angle < -180) 360 + angle else angle\n }\n\n /**\n * Restricts an angle to the range [0, 360] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing the edge of a unit circle; angles less than 0 wrap back to 360, while angles greater than 360\n * wrap back to 0.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to [0, 360] degrees\n */\n @JvmStatic\n fun normalizeAngle360(degrees: Double): Double {\n val angle = degrees % 360\n return if (angle >= 0) angle else 360 + angle\n }\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, wrapping angles outside the range. Wrapping takes place along\n * a line of constant longitude which may pass through the poles. In which case, 135 degrees normalizes to 45\n * degrees; 181 degrees normalizes to -1 degree.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun normalizeLatitude(degrees: Double): Double {\n val lat = degrees % 180\n val normalizedLat = if (lat > 90) 180 - lat else if (lat < -90) -180 - lat else lat\n // Determine whether the latitude is in the north or south hemisphere\n val numEquatorCrosses = (degrees / 180).toInt()\n return if (numEquatorCrosses % 2 == 0) normalizedLat else -normalizedLat\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, wrapping angles outside the range. Wrapping takes place as\n * though traversing a line of constant latitude which may pass through the antimeridian; angles less than -180 wrap\n * back to +180, while angles greater than +180 wrap back to -180.\n *\n * @param degrees the angle to wrap in degrees\n *\n * @return the specified angle wrapped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun normalizeLongitude(degrees: Double): Double {\n val lon = degrees % 360\n return if (lon > 180) lon - 360 else if (lon < -180) 360 + lon else lon\n }\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as -180, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampAngle180(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Restricts an angle to the range [0, 360] degrees, clamping angles outside the range. Angles less than 0 are\n * returned as 0, and angles greater than 360 are returned as 360. Angles within the range are returned unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [0, 360] degrees\n */\n @JvmStatic\n fun clampAngle360(degrees: Double) = degrees.coerceIn(0.0, 360.0)\n\n /**\n * Restricts an angle to the range [-90, +90] degrees, clamping angles outside the range. Angles less than -90 are\n * returned as -90, and angles greater than +90 are returned as +90. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-90, +90] degrees\n */\n @JvmStatic\n fun clampLatitude(degrees: Double) = degrees.coerceIn(-90.0, 90.0)\n\n /**\n * Restricts an angle to the range [-180, +180] degrees, clamping angles outside the range. Angles less than -180\n * are returned as 0, and angles greater than +180 are returned as +180. Angles within the range are returned\n * unmodified.\n *\n * @param degrees the angle to clamp in degrees\n *\n * @return the specified angle clamped to the range [-180, +180] degrees\n */\n @JvmStatic\n fun clampLongitude(degrees: Double) = degrees.coerceIn(-180.0, 180.0)\n\n /**\n * Computes the linear interpolation of two angles in the range [-180, +180] degrees according to a specified\n * fractional amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0\n * indicates the first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second\n * angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle in degrees\n * @param angle2 the second angle in degrees\n *\n * @return the interpolated angle in the range [-180, +180] degrees\n */\n @JvmStatic\n fun interpolateAngle180(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle180(angle).degrees\n }\n\n /**\n * Computes the linear interpolation of two angles in the range [0, 360] degrees according to a specified fractional\n * amount. The fractional amount is interpreted as a relative proportion of the two angles, where 0.0 indicates the\n * first angle, 0.5 indicates an angle half way between the two angles, and 1.0 indicates the second angle.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two angles in the range [0, 1]\n * @param angle1 the first angle\n * @param angle2 the second angle\n *\n * @return the interpolated angle in the range [0, 360] degrees\n */\n @JvmStatic\n fun interpolateAngle360(amount: Double, angle1: Angle, angle2: Angle): Angle {\n // Normalize the two angles to the range [-180, +180].\n var normalizedAngle1 = normalizeAngle180(angle1.inDegrees)\n var normalizedAngle2 = normalizeAngle180(angle2.inDegrees)\n\n // If the shortest arc between the two angles crosses the -180/+180 degree boundary, add 360 degrees to the\n // smaller of the two angles then interpolate.\n if (normalizedAngle1 - normalizedAngle2 > 180) normalizedAngle2 += 360.0\n else if (normalizedAngle1 - normalizedAngle2 < -180) normalizedAngle1 += 360.0\n\n // Linearly interpolate between the two angles then normalize the interpolated result. Normalizing the result is\n // necessary when we have added 360 degrees to either angle in order to interpolate along the shortest arc.\n val angle = (1 - amount) * normalizedAngle1 + amount * normalizedAngle2\n return normalizeAngle360(angle).degrees\n }\n\n /**\n * Obtains the average of two angles. This method is commutative, so `midAngle(m, n)` and\n * `midAngle(n, m)` are equivalent.\n *\n * @param a1 the first angle.\n * @param a2 the second angle.\n *\n * @return the average of `a1` and `a2`\n */\n @JvmStatic\n fun average(a1: Angle, a2: Angle) = fromDegrees(0.5 * (a1.inDegrees + a2.inDegrees))\n\n @JvmStatic\n fun max(a: Angle, b: Angle) = if (a.inDegrees >= b.inDegrees) a else b\n\n @JvmStatic\n fun min(a: Angle, b: Angle) = if (a.inDegrees <= b.inDegrees) a else b\n\n /**\n * Indicates whether a specified value is within the normal range of latitude, [-90, 90].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of latitude, otherwise false.\n */\n @JvmStatic\n fun isValidLatitude(degrees: Double) = degrees >= -90 && degrees <= 90\n\n /**\n * Indicates whether a specified value is within the normal range of longitude, [-180, 180].\n * @param degrees The value to test, in degrees.\n * @returns true if the value is within the normal range of longitude, otherwise false.\n */\n @JvmStatic\n fun isValidLongitude(degrees: Double) = degrees >= -180 && degrees <= 180\n }\n\n init {\n // NaN value is not suppoted due to unpredictable `compareTo(NaN)` behavior\n require(!inDegrees.isNaN()) {\n logMessage(ERROR, \"Angle\", \"init\", \"NaN is not supported!\")\n }\n }\n\n /**\n * Obtains the sum of these two angles.\n * This method is commutative, so `a.add(b)` and `b.add(a)` are equivalent.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to add to this one.\n *\n * @return an angle whose size is the total of these angles and angles size.\n */\n operator fun plus(angle: Angle) = fromDegrees(inDegrees + angle.inDegrees)\n fun plusDegrees(degrees: Double) = fromDegrees(this.inDegrees + degrees)\n fun plusRadians(radians: Double) = fromRadians(this.inRadians + radians)\n\n /**\n * Obtains the difference of these two angles. This method is not commutative.\n * Neither this angle nor angle is changed, instead the result is returned as a new angle.\n *\n * @param angle the angle to subtract from this angle.\n *\n * @return a new angle corresponding to this angle's size minus angle's size.\n */\n operator fun minus(angle: Angle) = fromDegrees(inDegrees - angle.inDegrees)\n fun minusDegrees(degrees: Double) = fromDegrees(this.inDegrees - degrees)\n fun minusRadians(radians: Double) = fromRadians(this.inRadians - radians)\n\n /**\n * Multiplies this angle by another angle.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to multiply.\n *\n * @return a new angle whose size equals this angle's size multiplied by angle's size.\n */\n operator fun times(angle: Angle) = this * angle.inDegrees\n\n /**\n * Multiplies this angle by `multiplier`.\n * This method is commutative, so `a.multiply(b)` and `b.multiply(a)` are equivalent.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param multiplier a scalar by which this angle is multiplied.\n *\n * @return a new angle whose size equals this angle's size multiplied by `multiplier`.\n */\n operator fun times(multiplier: Number) = fromDegrees(inDegrees * multiplier.toDouble())\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param angle the angle by which to divide.\n *\n * @return this angle's degrees divided by angle's degrees.\n */\n operator fun div(angle: Angle) = this / angle.inDegrees\n\n /**\n * Divides this angle by another angle.\n * This angle remains unchanged. The result is returned as a new angle.\n *\n * @param divisor a scalar by which to divide.\n *\n * @return this angle's degrees divided by divisor.\n */\n operator fun div(divisor: Number): Angle {\n require(divisor != 0.0) {\n logMessage(ERROR, \"Angle\", \"div\", \"divideByZero\")\n }\n return fromDegrees(inDegrees / divisor.toDouble())\n }\n\n /**\n * Returns new angle with opposite sign.\n */\n operator fun unaryMinus() = Angle(-inDegrees)\n\n /**\n * Computes the shortest distance between this and angle, as an angle.\n *\n * @param angle the angle to measure angular distance to.\n *\n * @return the angular distance between this and `value`.\n */\n fun distanceTo(angle: Angle): Angle {\n var distance = angle.inDegrees - inDegrees\n if (distance < -180) distance += 360.0 else if (distance > 180) distance -= 360.0\n return abs(distance).degrees\n }\n\n fun normalize180() = if (inDegrees in -180.0..180.0) this else normalizeAngle180(inDegrees).degrees\n\n fun normalize360() = if (inDegrees in 0.0..360.0) this else normalizeAngle360(inDegrees).degrees\n\n fun normalizeLatitude() = if (inDegrees in -90.0..90.0) this else normalizeLatitude(inDegrees).degrees\n\n fun normalizeLongitude() = if (inDegrees in -180.0..180.0) this else normalizeLongitude(inDegrees).degrees\n\n fun clampAngle180() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun clampAngle360() = inDegrees.coerceIn(0.0, 360.0).degrees\n\n fun clampLatitude() = inDegrees.coerceIn(-90.0, 90.0).degrees\n\n fun clampLongitude() = inDegrees.coerceIn(-180.0, 180.0).degrees\n\n fun toDMS(): DoubleArray {\n var angle = inDegrees\n val sign = sign(angle)\n angle *= sign\n var d = floor(angle)\n angle = (angle - d) * 60.0\n var m = floor(angle)\n angle = (angle - m) * 60.0\n var s = round(angle * 100) / 100 // keep two decimals for seconds\n if (s == 60.0) {\n m++\n s = 0.0\n }\n if (m == 60.0) {\n d++\n m = 0.0\n }\n return doubleArrayOf(sign, d, m, s)\n }\n\n /**\n * Forms a decimal degrees [String] representation of this [Angle].\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in decimal degrees as a string with the specified number of digits beyond the\n * decimal point. The string is padded with trailing zeros to fill the number of post-decimal point\n * positions requested.\n */\n fun toDDString(digits: Int = 6): String {\n require(digits in 0..15) {\n logMessage(ERROR, \"Angle\", \"toDecimalDegreesString\", \"outOfRange\")\n }\n return \"%.${digits}f°\".format(inDegrees)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees and decimal minutes.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees and decimal minutes as a string.\n */\n fun toDMString(digits: Int = 3): String {\n val dms = toDMS()\n val mf = if (dms[3] == 0.0) dms[2] else dms[2] + dms[3] / 60.0\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2.${digits}f’\".format(dms[1], mf)\n }\n\n /**\n * Obtains a [String] representation of this [Angle] formatted as degrees, minutes and seconds.\n *\n * @param digits the number of digits past the decimal point to include in the string.\n *\n * @return the value of this angle in degrees, minutes and seconds as a string.\n */\n fun toDMSString(digits: Int = 1): String {\n val dms = toDMS()\n return \"${if (dms[0] < 0) \"-\" else \"\"}%d° %2d’ %2.${digits}f”\".format(dms[1], dms[2], dms[3])\n }\n\n /**\n * Compares this [Angle] with another. Returns a negative integer if this is the smaller angle, a positive\n * integer if this is the larger, and zero if both angles are equal.\n *\n * @param other the angle to compare against.\n *\n * @return -1 if this angle is smaller, 0 if both are equal and +1 if this angle is larger.\n */\n override operator fun compareTo(other: Angle) = inDegrees.compareTo(other.inDegrees)\n\n override fun toString() = \"$inDegrees°\"\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer\n\nclass GKGraticuleTutorial(private val engine: WorldWind) : AbstractTutorial() {\n private val layer = GKGraticuleLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.OrientationMode\n\nclass LabelsTutorial(private val engine: WorldWind): AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Labels\").apply {\n // Create a basic label with the default attributes, including the default text color (white), the default text\n // size (24 pixels), the system default font, and the default alignment (bottom center).\n addRenderable(\n Label(Position.fromDegrees(38.8977, -77.0365, 0.0), \"The White House\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create a label with a black text color, the default text size, the system default font, the default\n // alignment, and a thick white text outline.\n addRenderable(\n Label(Position.fromDegrees(38.881389, -77.036944, 0.0), \"Thomas Jefferson Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply {\n textColor = Color(0f, 0f, 0f, 1f) // black text via r,g,b,a\n outlineColor = Color(1f, 1f, 1f, 1f) // white outline via r,g,b,a\n outlineWidth = 5f // thicken the white outline\n }\n }\n )\n\n // Create a right-aligned label using a bottom-right offset.\n addRenderable(\n Label(Position.fromDegrees(38.8893, -77.050111, 0.0), \"Lincoln Memorial\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomRight() }\n }\n )\n\n // Create a left-aligned label using a bottom-left offset.\n addRenderable(\n Label(Position.fromDegrees(38.889803, -77.009114, 0.0), \"United States Capitol\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { textOffset = Offset.bottomLeft() }\n }\n )\n\n // Create a label with a 48 pixel text size and a bold font.\n addRenderable(\n Label(Position.fromDegrees(38.907192, -77.036871, 0.0), \"Washington\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes.apply { font = Font(\"arial\", FontWeight.BOLD, 28) }\n }\n )\n\n // Create a label with its orientation fixed relative to the globe.\n addRenderable(\n Label(Position.fromDegrees(38.89, -77.023611, 0.0), \"National Mall\").apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n rotationMode = OrientationMode.RELATIVE_TO_GLOBE\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 38.89.degrees, (-77.023611).degrees, 10e3,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport kotlin.math.atan\nimport kotlin.math.sqrt\n\nclass LookAtViewTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n override fun start() {\n super.start()\n setLookAtAction()\n }\n\n private fun setLookAtAction() {\n // Create a view of LAX airport as seen from an aircraft above Santa Monica, CA.\n val aircraft = Position.fromDegrees(34.0158333, -118.4513056, 2500.0)\n // Aircraft above Santa Monica airport, altitude in meters\n val airport = Position.fromDegrees(33.9424368, -118.4081222, 38.7)\n\n // Compute heading and distance from aircraft to airport\n val heading = aircraft.greatCircleAzimuth(airport)\n val distanceRadians = aircraft.greatCircleDistance(airport)\n val distanceMeters = distanceRadians * engine.globe.getRadiusAt(aircraft.latitude, aircraft.longitude)\n\n // Compute camera settings\n val altitude = aircraft.altitude - airport.altitude\n val range = sqrt(altitude * altitude + distanceMeters * distanceMeters)\n val tilt = atan(distanceMeters / aircraft.altitude).radians\n\n // Apply new \"look at\" view\n engine.cameraFromLookAt(LookAt(airport, AltitudeMode.ABSOLUTE, range, heading, tilt, roll = Angle.ZERO))\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer\n\nclass MGRSGraticuleTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = MGRSGraticuleLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Path\n\nclass PathsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Paths\").apply {\n // Create a basic path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(50.0, -180.0, 1e5),\n Position.fromDegrees(30.0, -100.0, 1e6),\n Position.fromDegrees(50.0, -40.0, 1e5)\n )\n )\n )\n\n // Create a terrain following path with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(40.0, -180.0, 0.0),\n Position.fromDegrees(20.0, -100.0, 0.0),\n Position.fromDegrees(40.0, -40.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the path vertices to the ground\n isFollowTerrain = true // follow the ground between path vertices\n }\n )\n\n // Create an extruded path with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(30.0, -180.0, 1e5),\n Position.fromDegrees(10.0, -100.0, 1e6),\n Position.fromDegrees(30.0, -40.0, 1e5)\n )\n ).apply {\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n\n // Create an extruded path with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the path line with.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(20.0, -180.0, 1e5),\n Position.fromDegrees(0.0, -100.0, 1e6),\n Position.fromDegrees(20.0, -40.0, 1e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the path from the ground to each path position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-100.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Placemark\nimport earth.worldwind.shape.PlacemarkAttributes\n\nclass PlacemarksTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Placemarks\").apply {\n // Create a simple placemark at downtown Ventura, CA. This placemark is a 20x20 cyan square centered on the\n // geographic position. This placemark demonstrates the creation with a convenient factory method.\n addRenderable(\n Placemark.createWithColorAndSize(\n Position.fromDegrees(34.281, -119.293, 0.0), Color(0f, 1f, 1f, 1f), 20\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n }\n )\n\n // Create an image-based placemark of an aircraft above the ground with a leader-line to the surface.\n // This placemark demonstrates creation via a constructor and a convenient PlacemarkAttributes factory method.\n // The image is scaled to 1.5 times its original size.\n addRenderable(\n Placemark(Position.fromDegrees(34.260, -119.2, 5000.0)).apply {\n attributes = PlacemarkAttributes.createWithImageAndLeader(ImageSource.fromResource(MR.images.aircraft_fixwing)).apply {\n imageScale = 1.5\n }\n }\n )\n\n // Create an image-based placemark with a label at Oxnard Airport, CA. This placemark demonstrates creation\n // with a constructor and a convenient PlacemarkAttributes factory method. The image is scaled to 2x\n // its original size, with the bottom center of the image anchored at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.200, -119.208, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.airport_terminal)).apply {\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n }\n displayName = \"Oxnard Airport\"\n }\n )\n\n // Create an image-based placemark from a bitmap. This placemark demonstrates creation with a\n // constructor and a convenient PlacemarkAttributes factory method. First, a 64x64 bitmap is loaded,\n // and then it is passed into the placemark attributes. The bottom center of the image anchored\n // at the geographic position.\n addRenderable(\n Placemark(Position.fromDegrees(34.300, -119.25, 0.0)).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n attributes = PlacemarkAttributes.createWithImage(ImageSource.fromResource(MR.images.ehipcc)).apply {\n imageOffset = Offset.bottomCenter()\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position.fromDegrees(34.200, -119.208, 0.0),\n altitudeMode = AltitudeMode.ABSOLUTE, range = 1e4,\n heading = Angle.ZERO, tilt = 80.0.degrees, roll = Angle.ZERO\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.Polygon\n\nclass PolygonsTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Polygons\").apply {\n // Create a basic polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -135.0, 5.0e5),\n Position.fromDegrees(45.0, -140.0, 7.0e5),\n Position.fromDegrees(50.0, -130.0, 9.0e5),\n Position.fromDegrees(45.0, -120.0, 7.0e5),\n Position.fromDegrees(40.0, -125.0, 5.0e5)\n )\n )\n )\n\n // Create a terrain following polygon with the default attributes, and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(40.0, -105.0, 0.0),\n Position.fromDegrees(45.0, -110.0, 0.0),\n Position.fromDegrees(50.0, -100.0, 0.0),\n Position.fromDegrees(45.0, -90.0, 0.0),\n Position.fromDegrees(40.0, -95.0, 0.0)\n )\n ).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND // clamp the polygon vertices to the ground\n isFollowTerrain = true // follow the ground between polygon vertices\n }\n )\n\n // Create an extruded polygon with the default attributes, the default altitude mode (ABSOLUTE),\n // and the default path type (GREAT_CIRCLE).\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -135.0, 5.0e5),\n Position.fromDegrees(25.0, -140.0, 7.0e5),\n Position.fromDegrees(30.0, -130.0, 9.0e5),\n Position.fromDegrees(25.0, -120.0, 7.0e5),\n Position.fromDegrees(20.0, -125.0, 5.0e5)\n )\n ).apply {\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create an extruded polygon with custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(20.0, -105.0, 5.0e5),\n Position.fromDegrees(25.0, -110.0, 7.0e5),\n Position.fromDegrees(30.0, -100.0, 9.0e5),\n Position.fromDegrees(25.0, -90.0, 7.0e5),\n Position.fromDegrees(20.0, -95.0, 5.0e5)\n )\n ).apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n\n // Create a polygon with an inner hole by specifying multiple polygon boundaries\n addRenderable(\n Polygon().apply {\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -135.0, 5.0e5),\n Position.fromDegrees(5.0, -140.0, 7.0e5),\n Position.fromDegrees(10.0, -130.0, 9.0e5),\n Position.fromDegrees(5.0, -120.0, 7.0e5),\n Position.fromDegrees(0.0, -125.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -130.0, 6.0e5),\n Position.fromDegrees(5.0, -135.0, 7.0e5),\n Position.fromDegrees(7.5, -130.0, 8.0e5),\n Position.fromDegrees(5.0, -125.0, 7.0e5)\n )\n )\n }\n )\n\n // Create an extruded polygon with an inner hole and custom attributes that display the extruded vertical lines,\n // make the extruded interior 50% transparent, and increase the polygon line with.\n addRenderable(\n Polygon().apply {\n attributes.apply {\n isDrawVerticals = true // display the extruded verticals\n interiorColor = Color(1f, 1f, 1f, 0.5f) // 50% transparent white\n outlineWidth = 3f\n }\n addBoundary(\n listOf(\n Position.fromDegrees(0.0, -105.0, 5.0e5),\n Position.fromDegrees(5.0, -110.0, 7.0e5),\n Position.fromDegrees(10.0, -100.0, 9.0e5),\n Position.fromDegrees(5.0, -90.0, 7.0e5),\n Position.fromDegrees(0.0, -95.0, 5.0e5)\n )\n )\n addBoundary(\n listOf(\n Position.fromDegrees(2.5, -100.0, 6.0e5),\n Position.fromDegrees(5.0, -105.0, 7.0e5),\n Position.fromDegrees(7.5, -100.0, 8.0e5),\n Position.fromDegrees(5.0, -95.0, 7.0e5)\n )\n )\n isExtrude = true // extrude the polygon from the ground to each polygon position's altitude\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-115.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Ellipse\nimport earth.worldwind.shape.Path\nimport earth.worldwind.shape.Polygon\nimport earth.worldwind.shape.ShapeAttributes\n\nclass ShapesDashAndFillTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Dash and fill\").apply {\n // Thicken all lines used in the tutorial.\n val thickenLine = ShapeAttributes().apply { outlineWidth = 4f }\n\n // Create a path with a simple dashed pattern generated from the ImageSource factory. The\n // ImageSource.fromLineStipple function generates a texture based on the provided factor and pattern, similar to\n // stipple parameters of OpenGL 2. The binary representation of the pattern value will be the pattern displayed,\n // where positions with a 1 appearing as opaque and a 0 as transparent.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -100.0, 1e5),\n Position.fromDegrees(30.0, -120.0, 1e5),\n Position.fromDegrees(0.0, -100.0, 1e5)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 2, pattern = 0xF0F0.toShort())\n }\n }\n )\n\n // Modify the factor of the pattern for comparison to first path. Only the factor is modified, not the pattern.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -90.0, 5e4),\n Position.fromDegrees(30.0, -110.0, 5e4),\n Position.fromDegrees(0.0, -90.0, 5e4)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 4, pattern = 0xF0F0.toShort())\n }\n }\n )\n\n // Create a path conforming to the terrain with a different pattern from the first two Paths.\n addRenderable(\n Path(\n listOf(\n Position.fromDegrees(60.0, -80.0, 0.0),\n Position.fromDegrees(30.0, -100.0, 0.0),\n Position.fromDegrees(0.0, -80.0, 0.0)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n outlineImageSource = ImageSource.fromLineStipple(factor = 8, pattern = 0xDFF6.toShort())\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n )\n\n // Create an Ellipse using an image as a repeating fill pattern\n addRenderable(\n Ellipse(Position.fromDegrees(40.0, -70.0, 1e5), 1.5e6, 800e3).apply {\n attributes.copy(thickenLine).apply {\n interiorImageSource = ImageSource.fromResource(MR.images.pattern_sample_houndstooth)\n }\n }\n )\n\n // Create a surface polygon using an image as a repeating fill pattern and a dash pattern for the outline\n // of the polygon.\n addRenderable(\n Polygon(\n listOf(\n Position.fromDegrees(25.0, -85.0, 0.0),\n Position.fromDegrees(10.0, -80.0, 0.0),\n Position.fromDegrees(10.0, -60.0, 0.0),\n Position.fromDegrees(25.0, -55.0, 0.0)\n )\n ).apply {\n attributes.copy(thickenLine).apply {\n interiorImageSource = ImageSource.fromResource(MR.images.pattern_sample_houndstooth)\n outlineImageSource = ImageSource.fromLineStipple(8, 0xDFF6.toShort())\n }\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 30.0.degrees, (-85.0).degrees, engine.distanceToViewGlobeExtents * 1.1,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.layer.ShowTessellationLayer\n\nclass ShowTessellationTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create a layer that displays the globe's tessellation geometry.\n private val layer = ShowTessellationLayer()\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.shape.OmnidirectionalSightline\nimport earth.worldwind.shape.Placemark\n\nclass SightlineTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Sightline\").apply {\n // Specify the sightline position, which is the origin of the line of sight calculation\n val position = Position.fromDegrees(46.230, -122.190, 2500.0)\n // Create the sightline, specifying the range of the sightline (meters)\n addRenderable(\n OmnidirectionalSightline(position, 10000.0).apply {\n // Create attributes for the visible terrain\n attributes.apply { interiorColor = Color(0f, 1f, 0f, 0.5f) }\n // Create attributes for the occluded terrain\n occludeAttributes.apply { interiorColor = Color(0.1f, 0.1f, 0.1f, 0.8f) }\n }\n )\n // Create a Placemark to visualize the position of the sightline\n addRenderable(\n Placemark(position).apply {\n attributes.apply {\n imageSource = earth.worldwind.render.image.ImageSource.fromResource(MR.images.aircraft_fixwing)\n imageOffset = Offset.bottomCenter()\n imageScale = 2.0\n isDrawLeader = true\n }\n }\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.cameraFromLookAt(\n LookAt(\n position = Position(46.230.degrees, (-122.190).degrees, 500.0), altitudeMode = AltitudeMode.ABSOLUTE,\n range = 1.5e4, heading = 45.0.degrees, tilt = 70.0.degrees, roll = 0.0.degrees\n )\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.RenderableLayer\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\n\nclass SurfaceImageTutorial(private val engine: WorldWind) : AbstractTutorial() {\n\n private val layer = RenderableLayer(\"Surface image\").apply {\n // Configure a Surface Image to display an Android resource showing the WorldWindEarth logo.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46, 15.5, 0.5, 0.6),\n ImageSource.fromResource(MR.images.worldwind_logo)\n )\n )\n\n // Configure a Surface Image to display a remote image showing Mount Etna erupting on July 13th, 2001.\n addRenderable(\n SurfaceImage(\n Sector.fromDegrees(37.46543388598137, 14.60128369746704, 0.45360804083528, 0.75704283995502),\n ImageSource.fromUrlString(\"https://worldwind.arc.nasa.gov/android/tutorials/data/etna.jpg\")\n )\n )\n }\n\n override fun start() {\n super.start()\n engine.layers.addLayer(layer)\n engine.camera.set(\n 37.46543388598137.degrees, 14.97980511744455.degrees, 4.0e5,\n AltitudeMode.ABSOLUTE, heading = Angle.ZERO, tilt = Angle.ZERO, roll = Angle.ZERO\n )\n }\n\n override fun stop() {\n super.stop()\n engine.layers.removeLayer(layer)\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.ogc.Wcs100ElevationCoverage\nimport kotlin.math.atan\n\nclass WcsElevationTutorial(private val engine: WorldWind) : AbstractTutorial() {\n // Create an elevation coverage from a version 1.0.0 WCS\n private val wcsElevationCoverage = Wcs100ElevationCoverage(\n // Specify the version 1.0.0 WCS address\n serviceAddress = \"https://elevation.nationalmap.gov/arcgis/services/3DEPElevation/ImageServer/WCSServer\",\n // Specify the coverage name\n coverageName = \"DEP3Elevation\",\n // Specify the output format\n outputFormat = \"geotiff\",\n // Specify the bounding sector - provided by the WCS\n sector = Sector.fromDegrees(25.0, -125.0, 25.0, 60.0),\n // Specify the data resolution of 10m (1/3 arc-second)\n resolution = Angle.fromSeconds(1.0 / 3.0)\n )\n\n override fun start() {\n super.start()\n engine.globe.elevationModel.apply {\n forEach { coverage -> coverage.isEnabled = false }\n addCoverage(wcsElevationCoverage)\n }\n positionView()\n }\n\n override fun stop() {\n super.stop()\n engine.globe.elevationModel.apply {\n removeCoverage(wcsElevationCoverage)\n forEach { coverage -> coverage.isEnabled = true }\n }\n }\n\n private fun positionView() {\n val mtRainier = Position.fromDegrees(46.852886, -121.760374, 4392.0)\n val eye = Position.fromDegrees(46.912, -121.527, 2000.0)\n\n // Compute heading and distance from peak to eye\n val heading = eye.greatCircleAzimuth(mtRainier)\n val distanceRadians = mtRainier.greatCircleDistance(eye)\n val distance = distanceRadians * engine.globe.getRadiusAt(mtRainier.latitude, mtRainier.longitude)\n\n // Compute camera settings\n val tilt = atan(distance / eye.altitude).radians\n\n // Apply the new view\n engine.camera.set(\n eye.latitude, eye.longitude, eye.altitude, AltitudeMode.ABSOLUTE, heading, tilt, roll = Angle.ZERO\n )\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Service (WMS) layer to display the\n // surface temperature layer from NASA's Near Earth Observations WMS.\n WmsLayerFactory.createLayer(\"https://neo.gsfc.nasa.gov/wms/wms\", listOf(\"MOD_LSTD_CLIM_M\")).also {\n if (isActive) {\n wmsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMS layer creation succeeded\")\n } catch (e: Throwable) {\n Logger.log(Logger.ERROR, \"WMS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmsLayer?.let { engine.layers.removeLayer(it) }.also { wmsLayer = null }\n }\n\n}","package earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.ogc.WmtsLayerFactory\nimport earth.worldwind.util.Logger\nimport kotlinx.coroutines.CoroutineScope\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\n\nclass WmtsLayerTutorial(private val engine: WorldWind, private val scope: CoroutineScope) : AbstractTutorial() {\n\n private var wmtsLayer: TiledImageLayer? = null\n private var job: Job? = null\n\n override fun start() {\n super.start()\n job = scope.launch {\n try {\n // Create an OGC Web Map Tile Service (WMTS) layer to display Global Hillshade based on GMTED2010\n WmtsLayerFactory.createLayer(\"https://tiles.geoservice.dlr.de/service/wmts\", \"hillshade\").also {\n if (isActive) {\n wmtsLayer = it\n engine.layers.addLayer(it)\n WorldWind.requestRedraw()\n }\n }\n Logger.log(Logger.INFO, \"WMTS layer creation succeeded\")\n } catch (e: Throwable) {\n Logger.log(Logger.ERROR, \"WMTS layer creation failed\", e)\n }\n }\n engine.camera.apply {\n position.altitude = engine.distanceToViewGlobeExtents * 1.1\n heading = Angle.ZERO\n tilt = Angle.ZERO\n roll = Angle.ZERO\n }\n }\n\n override fun stop() {\n super.stop()\n job?.cancel()\n wmtsLayer?.let { engine.layers.removeLayer(it) }.also { wmtsLayer = null }\n }\n\n}","@file:JsExport\n@file:Suppress(\"OPT_IN_USAGE\", \"NON_EXPORTABLE_TYPE\")\n\npackage earth.worldwind.tutorials\n\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.gesture.SelectDragCallback\nimport earth.worldwind.globe.elevation.coverage.BasicElevationCoverage\nimport earth.worldwind.globe.projection.MercatorProjection\nimport earth.worldwind.globe.projection.Wgs84Projection\nimport earth.worldwind.layer.BackgroundLayer\nimport earth.worldwind.layer.atmosphere.AtmosphereLayer\nimport earth.worldwind.layer.mercator.WebMercatorLayerFactory\nimport earth.worldwind.layer.starfield.StarFieldLayer\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Movable\nimport kotlinx.browser.document\nimport kotlinx.browser.window\nimport org.w3c.dom.*\n\nfun main() {\n // Register an event listener to be called when the page is loaded.\n window.onload = {\n // Create a WorldWindow for the canvas.\n val wwd = WorldWindow(document.getElementById(\"WorldWindow\") as HTMLCanvasElement)\n val tutorialSelect = document.getElementById(\"Tutorials\") as HTMLSelectElement\n val projectionSelect = document.getElementById(\"Projections\") as HTMLSelectElement\n val actionsContainer = document.getElementById(\"Actions\") as HTMLDivElement\n val tutorials = mapOf (\n \"Basic globe\" to BasicTutorial(wwd.engine),\n \"Set camera view\" to CameraViewTutorial(wwd.engine),\n \"Set \\\"look at\\\" view\" to LookAtViewTutorial(wwd.engine),\n \"Placemarks\" to PlacemarksTutorial(wwd.engine),\n \"Paths\" to PathsTutorial(wwd.engine),\n \"Polygons\" to PolygonsTutorial(wwd.engine),\n \"Ellipses\" to EllipsesTutorial(wwd.engine),\n \"Dash and fill\" to ShapesDashAndFillTutorial(wwd.engine),\n \"Labels\" to LabelsTutorial(wwd.engine),\n \"Sight line\" to SightlineTutorial(wwd.engine),\n \"Surface image\" to SurfaceImageTutorial(wwd.engine),\n \"Show tessellation\" to ShowTessellationTutorial(wwd.engine),\n \"MGRS Graticule\" to MGRSGraticuleTutorial(wwd.engine),\n \"Gauss-Kruger Graticule\" to GKGraticuleTutorial(wwd.engine),\n \"WMS Layer\" to WmsLayerTutorial(wwd.engine, wwd.mainScope),\n \"WMTS Layer\" to WmtsLayerTutorial(wwd.engine, wwd.mainScope),\n \"WCS Elevation\" to WcsElevationTutorial(wwd.engine),\n \"Elevation Heatmap\" to ElevationHeatmapTutorial(wwd.engine),\n )\n val projections = mapOf (\n \"WGS84 Projection\" to Wgs84Projection(),\n \"Mercator Projection\" to MercatorProjection()\n )\n var currentTutorial: String? = null\n\n // Add some image layers to the WorldWindow's globe.\n wwd.engine.layers.apply {\n addLayer(BackgroundLayer())\n addLayer(WebMercatorLayerFactory.createLayer(\n urlTemplate = \"https://mt.google.com/vt/lyrs=s&x={x}&y={y}&z={z}&hl={lang}\",\n imageFormat = \"image/jpeg\",\n name = \"Google Satellite\"\n ))\n addLayer(StarFieldLayer())\n addLayer(AtmosphereLayer())\n }\n\n // Add elevation coverage source\n wwd.engine.globe.elevationModel.addCoverage(BasicElevationCoverage())\n\n // Allow pick and move any movable object\n wwd.selectDragDetector.callback = object : SelectDragCallback {\n override fun canPickRenderable(renderable: Renderable) = renderable is Movable\n override fun canMoveRenderable(renderable: Renderable) = renderable is Movable\n }\n\n fun callAction(actionName: String) { currentTutorial?.let { tutorials[it]?.runAction(actionName) } }\n\n fun createAction(actionName: String) {\n (document.createElement(\"button\") as HTMLButtonElement).apply {\n innerHTML = actionName\n actionsContainer.append(this)\n onclick = { callAction(actionName) }\n }\n }\n\n fun selectTutorial(tutorial: String) {\n currentTutorial?.let { tutorials[it]?.stop() }\n currentTutorial = tutorial\n tutorials[tutorial]?.run {\n start()\n //TODO actions\n actionsContainer.innerHTML = \"\"\n actions?.forEach { action -> createAction(action) }\n actionsContainer.hidden = actions?.isEmpty() != false\n }\n wwd.requestRedraw()\n }\n\n fun selectProjection(projectionName: String) {\n wwd.engine.globe.projection = projections[projectionName]!!\n wwd.requestRedraw()\n }\n\n tutorials.keys.forEach {\n (document.createElement(\"option\") as HTMLOptionElement).apply {\n value = it\n innerHTML = it\n tutorialSelect.append(this)\n }\n }\n projections.keys.forEach {\n (document.createElement(\"option\") as HTMLOptionElement).apply {\n value = it\n innerHTML = it\n projectionSelect.append(this)\n }\n }\n tutorialSelect.onchange = { event -> selectTutorial((event.target as HTMLSelectElement).value) }\n projectionSelect.onchange = { event -> selectProjection((event.target as HTMLSelectElement).value)}\n selectTutorial(tutorials.keys.first())\n selectProjection(projections.keys.first())\n }\n}",null,null,"package earth.worldwind\n\nimport dev.icerock.moko.graphics.Color\nimport dev.icerock.moko.resources.FileResource\nimport dev.icerock.moko.resources.ImageResource\nimport dev.icerock.moko.resources.ResourceContainer\nimport dev.icerock.moko.resources.ResourcePlatformDetails\nimport kotlin.String\nimport kotlin.collections.List\n\npublic actual object MR {\n private val contentHash: String = \"9b24c64f544c9d9ebb21130e2d2e72f5\"\n\n public actual object images : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val sun_texture: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/sun_texture.png\\\")\") as String, fileName = \"sun_texture.png\")\n\n public actual val dnb_land_ocean_ice_2012: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/dnb_land_ocean_ice_2012.png\\\")\") as String, fileName =\n \"dnb_land_ocean_ice_2012.png\")\n\n public actual val worldwind_worldtopobathy2004053: ImageResource = ImageResource(fileUrl =\n js(\"require(\\\"images/worldwind_worldtopobathy2004053.png\\\")\") as String, fileName =\n \"worldwind_worldtopobathy2004053.png\")\n\n public actual override fun values(): List = listOf(sun_texture,\n dnb_land_ocean_ice_2012, worldwind_worldtopobathy2004053)\n }\n\n public actual object files : ResourceContainer {\n public actual override val __platformDetails: ResourcePlatformDetails =\n ResourcePlatformDetails()\n\n public actual val stars_json: FileResource = FileResource(fileUrl =\n js(\"require(\\\"files/stars.json\\\")\") as String)\n\n public actual override fun values(): List = listOf(stars_json)\n }\n}\n","package earth.worldwind\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport kotlinx.coroutines.Job\nimport kotlinx.coroutines.delay\nimport kotlinx.coroutines.isActive\nimport kotlinx.coroutines.launch\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlin.math.abs\nimport kotlin.math.max\nimport kotlin.math.min\nimport kotlin.math.roundToInt\n\n/**\n * Incrementally and smoothly moves the Camera to a specified position.\n */\nopen class GoToAnimator(\n /**\n * The [WorldWind] engine associated with this animator.\n */\n protected val engine: WorldWind\n) {\n /**\n * The frequency in milliseconds at which to animate the position change.\n */\n var animationFrequency = 20L\n /**\n * The animation's duration, in milliseconds. When the distance is short, less than twice the viewport\n * size, the travel time is reduced proportionally to the distance to travel. It therefore takes less\n * time to move shorter distances.\n */\n var travelTime = 3000\n /**\n * Main scope to launch animation\n */\n protected val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * A temp variable used to hold the current view as a look at during calculations. Using an object level temp\n * property negates the need for ad-hoc allocations and reduces load on the garbage collector.\n */\n protected val lookAt = LookAt()\n protected var animationJob: Job? = null\n protected var completionCallback: ((GoToAnimator) -> Unit)? = null\n protected var targetPosition: Position? = null\n protected var startPosition: Position? = null\n protected var startTime = Instant.DISTANT_PAST\n protected var maxAltitude = 0.0\n protected var maxAltitudeReachedTime = Instant.DISTANT_PAST\n protected var panVelocity = 0.0\n protected var rangeVelocity = 0.0\n\n /**\n * Stop the current animation.\n */\n fun cancel() { animationJob?.cancel() }\n\n /**\n * Moves the camera to a specified look at location or position.\n *\n * @param position The [Location] or [Position] to move the camera to. If this\n * argument contains an \"altitude\" property, as [Position] does, the end point of the navigation is\n * at the specified altitude. Otherwise, the end point is at the current altitude of the camera.\n * @param completionCallback If not null, specifies a function to call when the animation completes.\n * The completion callback is called with a single argument, this animator.\n */\n open fun goTo(position: Location, completionCallback: ((GoToAnimator) -> Unit)? = null) {\n if (engine.viewport.isEmpty) return\n\n this.completionCallback = completionCallback\n\n engine.cameraAsLookAt(lookAt)\n // Capture the target position and determine its altitude.\n val targetPosition = Position(\n position.latitude, position.longitude, if(position is Position) position.altitude else lookAt.range\n ).also { targetPosition = it }\n\n // Capture the start position and start time.\n val startPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range).also { startPosition = it }\n startTime = Clock.System.now()\n\n // Determination of the pan and range velocities requires the distance to be travelled.\n var animationDuration = travelTime\n val panDistance = startPosition.greatCircleDistance(targetPosition)\n\n // Determine how high we need to go to give the user context. The max altitude computed is approximately\n // that needed to fit the start and end positions in the same viewport assuming a 45 degree field of view.\n val pA = engine.globe.geographicToCartesian(startPosition.latitude, startPosition.longitude, 0.0, Vec3())\n val pB = engine.globe.geographicToCartesian(targetPosition.latitude, targetPosition.longitude, 0.0, Vec3())\n maxAltitude = pA.distanceTo(pB)\n\n // Determine an approximate viewport size in radians in order to determine whether we actually change\n // the range as we pan to the new location. We don't want to change the range if the distance between\n // the start and target positions is small relative to the current viewport.\n val viewportSize = engine.pixelSizeAtDistance(startPosition.altitude) *\n engine.viewport.width / engine.globe.equatorialRadius\n\n // Start and target positions are close, so don't back out.\n if (panDistance <= 2 * viewportSize) maxAltitude = startPosition.altitude\n\n // We need to capture the time the max altitude is reached in order to begin decreasing the range\n // midway through the animation. If we're already above the max altitude, then that time is now since\n // we don't back out if the current altitude is above the computed max altitude.\n maxAltitudeReachedTime = if (maxAltitude <= lookAt.range) Clock.System.now() else Instant.DISTANT_PAST\n\n // Compute the total range to travel since we need that to compute the range velocity.\n // Note that the range velocity and pan velocity are computed so that the respective animations, which\n // operate independently, finish at the same time.\n val rangeDistance = if (maxAltitude > startPosition.altitude) {\n max(0.0, maxAltitude - startPosition.altitude) + abs(targetPosition.altitude - maxAltitude)\n } else {\n abs(targetPosition.altitude - startPosition.altitude)\n }\n\n // Determine which distance governs the animation duration.\n val animationDistance = max(panDistance, rangeDistance / engine.globe.equatorialRadius)\n if (animationDistance == 0.0) return // current and target positions are the same\n\n if (animationDistance < 2 * viewportSize) {\n // Start and target positions are close, so reduce the travel time based on the\n // distance to travel relative to the viewport size.\n animationDuration = min(((animationDistance / viewportSize) * travelTime).roundToInt(), travelTime)\n }\n\n // Don't let the animation duration go to 0.\n animationDuration = max(1, animationDuration)\n\n // Determine the pan velocity, in radians per millisecond.\n panVelocity = panDistance / animationDuration\n\n // Determine the range velocity, in meters per millisecond.\n rangeVelocity = rangeDistance / animationDuration // meters per millisecond\n\n // Set up the animation timer.\n setUpAnimationTimer()\n }\n\n protected open fun setUpAnimationTimer() {\n animationJob?.cancel()\n animationJob = mainScope.launch {\n delay(animationFrequency)\n if (!isActive || !update()) completionCallback?.invoke(this@GoToAnimator) else setUpAnimationTimer()\n }\n }\n\n /**\n * This is the timer callback function. It invokes the range animator and the pan animator.\n */\n protected open fun update(): Boolean {\n val currentPosition = Position(lookAt.position.latitude, lookAt.position.longitude, lookAt.range)\n val continueUpdateRange = updateRange(currentPosition)\n val continueUpdateLocation = updateLocation(currentPosition)\n WorldWind.requestRedraw()\n return continueUpdateRange || continueUpdateLocation\n }\n\n /**\n * This function animates the range.\n */\n protected open fun updateRange(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n\n // If we haven't reached the maximum altitude, then step-wise increase it. Otherwise, step-wise change\n // the range towards the target altitude.\n val continueAnimation = if (maxAltitudeReachedTime == Instant.DISTANT_PAST) {\n val elapsedTime = Clock.System.now() - startTime\n val nextRange = min(startPosition.altitude + rangeVelocity * elapsedTime.inWholeMilliseconds, maxAltitude)\n // We're done if we get withing 1 meter of the desired range.\n if (abs(lookAt.range - nextRange) < 1) maxAltitudeReachedTime = Clock.System.now()\n lookAt.range = nextRange\n true\n } else {\n val elapsedTime = Clock.System.now() - maxAltitudeReachedTime\n val nextRange = if (maxAltitude > targetPosition.altitude) {\n max(maxAltitude - (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n } else {\n min(maxAltitude + (rangeVelocity * elapsedTime.inWholeMilliseconds), targetPosition.altitude)\n }\n lookAt.range = nextRange\n // We're done if we get withing 1 meter of the desired range.\n abs(lookAt.range - targetPosition.altitude) > 1\n }\n\n engine.cameraFromLookAt(lookAt)\n\n return continueAnimation\n }\n\n /**\n * This function animates the pan to the desired location.\n */\n protected open fun updateLocation(currentPosition: Position): Boolean {\n val startPosition = startPosition ?: return false\n val targetPosition = targetPosition ?: return false\n val elapsedTime = Clock.System.now() - startTime\n val distanceTravelled = startPosition.greatCircleDistance(currentPosition)\n val distanceRemaining = currentPosition.greatCircleDistance(targetPosition)\n val azimuthToTarget = currentPosition.greatCircleAzimuth(targetPosition)\n val distanceForNow = panVelocity * elapsedTime.inWholeMilliseconds\n val nextDistance = min(distanceForNow - distanceTravelled, distanceRemaining)\n val nextLocation = currentPosition.greatCircleLocation(azimuthToTarget, nextDistance, Location())\n var locationReached = false\n\n lookAt.position.latitude = nextLocation.latitude\n lookAt.position.longitude = nextLocation.longitude\n engine.cameraFromLookAt(lookAt)\n\n // We're done if we're within a meter of the desired location.\n if (nextDistance < 1.0 / engine.globe.equatorialRadius) locationReached = true\n\n return !locationReached\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Renderable\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.roundToInt\n\nopen class PickedObject protected constructor(\n val identifier: Int, val userObject: Any, val layer: Layer? = null, val terrainPosition: Position? = null\n) {\n var isOnTop = false\n protected set\n val isTerrain get() = terrainPosition != null\n\n companion object {\n @JvmStatic\n fun fromRenderable(identifier: Int, renderable: Renderable, layer: Layer) =\n PickedObject(identifier, renderable.pickDelegate ?: renderable, layer)\n\n @JvmStatic\n fun fromTerrain(identifier: Int, position: Position): PickedObject {\n val positionCopy = Position(position)\n return PickedObject(identifier, positionCopy, terrainPosition = positionCopy)\n }\n\n @JvmStatic\n fun identifierToUniqueColor(identifier: Int, result: Color): Color {\n val r8 = identifier shr 16 and 0xFF\n val g8 = identifier shr 8 and 0xFF\n val b8 = identifier and 0xFF\n result.red = r8 / 0xFF.toFloat()\n result.green = g8 / 0xFF.toFloat()\n result.blue = b8 / 0xFF.toFloat()\n result.alpha = 1f\n return result\n }\n\n @JvmStatic\n fun uniqueColorToIdentifier(color: Color): Int {\n val r8 = (color.red * 0xFF).roundToInt()\n val g8 = (color.green * 0xFF).roundToInt()\n val b8 = (color.blue * 0xFF).roundToInt()\n return r8 shl 16 or (g8 shl 8) or b8\n }\n }\n\n internal fun markOnTop() { isOnTop = true }\n\n override fun toString() = \"PickedObject(isOnTop=$isOnTop, identifier=$identifier, userObject=$userObject, layer=$layer, terrainPosition=$terrainPosition)\"\n}","package earth.worldwind\n\nopen class PickedObjectList {\n protected val objectsById = mutableMapOf()\n val objects get() = objectsById.values\n val count get() = objectsById.size\n val topPickedObject get() = objects.firstOrNull { po -> po.isOnTop }\n val terrainPickedObject get() = objects.firstOrNull { po -> po.isTerrain }\n val hasNonTerrainObjects get() = objects.firstOrNull { po -> !po.isTerrain } != null\n\n fun offerPickedObject(pickedObject: PickedObject) { objectsById[pickedObject.identifier] = pickedObject }\n\n fun pickedObjectWithId(identifier: Int) = objectsById[identifier]\n\n fun clearPickedObjects() = objectsById.clear()\n\n fun keepTopAndTerrainObjects() = objectsById.entries.removeAll { e -> !e.value.isOnTop && !e.value.isTerrain }\n\n override fun toString() = objects.joinToString(\", \", \"PickedObjectList{\", \"}\") { po -> po.toString() }\n}",null,"package earth.worldwind\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.frame.BasicFrameController\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.frame.FrameController\nimport earth.worldwind.frame.FrameMetrics\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.BasicTessellator\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.kgl.*\nimport kotlinx.coroutines.flow.MutableSharedFlow\nimport kotlinx.coroutines.flow.asSharedFlow\nimport kotlinx.datetime.TimeZone\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Main WorldWind model, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\nopen class WorldWind @JvmOverloads constructor(\n /**\n * Platform-dependent OpenGL implementation\n */\n gl: Kgl,\n /**\n * Platform-dependent GPU resource cache manager.\n */\n var renderResourceCache: RenderResourceCache,\n /**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models.\n */\n var globe: Globe = Globe(),\n /**\n * Terrain model tessellator.\n */\n var tessellator: Tessellator = BasicTessellator(),\n /**\n * Frame rendering and drawing logic implementation.\n */\n var frameController: FrameController = BasicFrameController(),\n /**\n * Helper class implementing [FrameMetrics] to measure performance.\n */\n var frameMetrics: FrameMetrics? = null\n) {\n /**\n * List of renderable object layers to be displayed by this WorldWind.\n */\n var layers = LayerList()\n /**\n * Current user view point parameters: location, altitude, orientation and field of view.\n */\n var camera = Camera()\n /**\n * The [GoToAnimator] used by this WorldWindow to respond to its goTo method.\n */\n val goToAnimator = GoToAnimator(this)\n /**\n * Screen area occupied by this WorldWind.\n */\n val viewport = Viewport()\n /**\n * Keep pixel scale when changing the height of viewport by adapting field of view\n */\n var isKeepScale = true\n /**\n * Scale of logical pixel size to hardware display pixel size. Used to adopt general level of details to screen density.\n */\n var densityFactor = 1f\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setDensityFactor\", \"invalidDensityFactor\"\n )\n }\n field = value\n }\n /**\n * Vertical exaggeration (VE) is a scale that is used to emphasize vertical features, which might be too small\n * to identify relative to the horizontal scale.\n */\n var verticalExaggeration = 1.0\n set(value) {\n require(value > 0) {\n Logger.logMessage(\n Logger.ERROR, \"WorldWind\", \"setVerticalExaggeration\", \"invalidVerticalExaggeration\"\n )\n }\n field = value\n }\n /**\n * Atmosphere altitude above ellipsoid. Used to control when objects are clipped by the far plain behind the globe.\n */\n var atmosphereAltitude = 160000.0\n /**\n * Context related to frame rendering phase\n */\n protected val rc = RenderContext()\n /**\n * Context related to frame drawing phase\n */\n protected val dc = DrawContext(gl)\n /**\n * The number of bits in the depth buffer associated with this WorldWind.\n */\n protected var depthBits = 0\n private val scratchModelview = Matrix4()\n private val scratchProjection = Matrix4()\n private val scratchPoint = Vec3()\n private val scratchRay = Line()\n\n init {\n // Initialize default camera location based on user time zone\n val initLocation = Location.fromTimeZone(TimeZone.currentSystemDefault())\n // Fit globe to screen vertically with 10% margin.\n val initAltitude = distanceToViewGlobeExtents * 1.1\n camera.position.set(initLocation.latitude, initLocation.longitude, initAltitude)\n }\n\n /**\n * Reset internal WorldWind state to initial values.\n */\n open fun reset() {\n // Clear the render resource cache; it's entries are now invalid.\n renderResourceCache.clear()\n\n // Invalidate elevation model.\n globe.elevationModel.invalidate()\n\n // Clear the viewport dimensions.\n viewport.setEmpty()\n\n // Reset screen density factor.\n densityFactor = 1f\n }\n\n /**\n * Specify the default WorldWind OpenGL state.\n */\n open fun setupDrawContext() {\n dc.gl.enable(GL_BLEND)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.enableVertexAttribArray(0)\n dc.gl.disable(GL_DITHER)\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.depthFunc(GL_LEQUAL)\n\n // Clear any cached OpenGL resources and state, which are now invalid.\n dc.contextLost()\n\n // Set the WorldWindow's depth bits.\n depthBits = dc.gl.getParameteri(GL_DEPTH_BITS)\n }\n\n /**\n * Apply new viewport dimensions.\n */\n open fun setupViewport(width: Int, height: Int) {\n dc.gl.viewport(0, 0, width, height)\n\n // Keep pixel scale by adapting field of view on view port resize\n if (isKeepScale && viewport.height != 0) {\n try {\n camera.fieldOfView *= height / viewport.height.toDouble()\n } catch (ignore: IllegalArgumentException) {\n // Keep original field of view in case new one does not fit requirements\n }\n }\n\n viewport.set(0, 0, width, height)\n }\n\n /**\n * Get look at orientation and range based on current camera position and specified geographic position\n *\n * @param result Pre-allocated look at object\n * @param lookAtPosition Custom \"look at\" position. Terrain position on viewport center will be used by default.\n * @return Look at orientation and range based on current camera position and specified geographic position\n */\n open fun cameraAsLookAt(result: LookAt, lookAtPosition: Position? = null): LookAt {\n if (lookAtPosition != null) {\n cameraToViewingTransform(scratchModelview)\n globe.geographicToCartesian(lookAtPosition.latitude, lookAtPosition.longitude, lookAtPosition.altitude, scratchPoint)\n result.position.copy(lookAtPosition)\n } else if (viewport.isEmpty || !pickTerrainPosition(viewport.width / 2.0, viewport.height / 2.0, result.position)) {\n // Use point on horizon as a backup\n cameraToViewingTransform(scratchModelview)\n scratchModelview.extractEyePoint(scratchRay.origin)\n scratchModelview.extractForwardVector(scratchRay.direction)\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n scratchRay.pointAt(globe.horizonDistance(cameraPosition.altitude), scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result.position)\n }\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n result.range = -scratchModelview.m[11]\n result.heading = scratchModelview.extractHeading(camera.roll) // disambiguate heading and roll\n result.tilt = scratchModelview.extractTilt()\n result.roll = camera.roll // roll passes straight through\n return result\n }\n\n /**\n * Set camera position and orientation, based on look at position, orientation and range\n *\n * @param lookAt Look at position, orientation and range\n */\n open fun cameraFromLookAt(lookAt: LookAt) {\n applyLookAtLimits(lookAt)\n lookAtToViewingTransform(lookAt, scratchModelview)\n scratchModelview.extractEyePoint(scratchPoint)\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, camera.position)\n globe.cartesianToLocalTransform(scratchPoint.x, scratchPoint.y, scratchPoint.z, scratchProjection)\n scratchModelview.multiplyByMatrix(scratchProjection)\n camera.altitudeMode = AltitudeMode.ABSOLUTE // Calculated position is absolute\n camera.heading = scratchModelview.extractHeading(lookAt.roll) // disambiguate heading and roll\n camera.tilt = scratchModelview.extractTilt()\n camera.roll = lookAt.roll // roll passes straight through\n\n // Check if camera altitude is not under the surface\n val position = camera.position\n val elevation = if (globe.is2D) COLLISION_THRESHOLD else globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration + COLLISION_THRESHOLD\n if (elevation > position.altitude) {\n // Set camera altitude above the surface\n position.altitude = elevation\n // Compute new camera point\n globe.geographicToCartesian(position.latitude, position.longitude, position.altitude, scratchPoint)\n // Compute look at point\n globe.geographicToCartesian(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude, scratchRay.origin\n )\n // Compute normal to globe in look at point\n globe.geographicToCartesianNormal(lookAt.position.latitude, lookAt.position.longitude, scratchRay.direction)\n // Calculate tilt angle between new camera point and look at point\n scratchPoint.subtract(scratchRay.origin).normalize()\n val dot = scratchRay.direction.dot(scratchPoint)\n if (dot >= -1 && dot <= 1) camera.tilt = acos(dot).radians\n }\n }\n\n /**\n * More efficient way to determine terrain position at screen point using terrain from last rendered frame.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return true if the screen point could be converted; false if the screen point is not on the terrain\n */\n open fun pickTerrainPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && frameController.lastTerrains.values.any {\n it.intersect(scratchRay, scratchPoint)\n }) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param point the Cartesian point in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun cartesianToScreenPoint(point: Vec3, result: Vec2) = cartesianToScreenPoint(point.x, point.y, point.z, result)\n\n /**\n * Transforms a Cartesian coordinate point to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either the WorldWindow's near\n * clipping plane or far clipping plane.\n *\n * @param x the Cartesian point's x component in meters\n * @param y the Cartesian point's y component in meters\n * @param z the Cartesian point's z component in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun cartesianToScreenPoint(x: Double, y: Double, z: Double, result: Vec2): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the WorldWindow's modelview-projection matrix.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview)\n\n // Transform the Cartesian point to OpenGL screen coordinates. Complete the transformation by converting to\n // viewport coordinates and discarding the screen Z component.\n if (scratchProjection.project(x, y, z, viewport, scratchPoint)) {\n result.x = scratchPoint.x\n result.y = viewport.height - scratchPoint.y\n return true\n }\n return false\n }\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param position the geographic position\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun geographicToScreenPoint(position: Position, result: Vec2) =\n geographicToScreenPoint(position.latitude, position.longitude, position.altitude, result)\n\n /**\n * Transforms a geographic position to viewport coordinates.\n *
\n * This stores the converted point in the result argument, and returns a boolean value indicating whether the\n * converted is successful. This returns false if the Cartesian point is clipped by either of the WorldWindow's\n * near clipping plane or far clipping plane.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec2] in which to return the screen point\n *\n * @return true if the transformation is successful, otherwise false\n */\n open fun geographicToScreenPoint(\n latitude: Angle, longitude: Angle, altitude: Double, result: Vec2\n ): Boolean {\n // Convert the position from geographic coordinates to Cartesian coordinates.\n globe.geographicToCartesian(latitude, longitude, altitude, scratchPoint)\n\n // Convert the position from Cartesian coordinates to screen coordinates.\n return cartesianToScreenPoint(scratchPoint, result)\n }\n\n /**\n * Converts a screen point to the geographic coordinates on the globe ellipsoid, ignoring terrain altitude.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result Pre-allocated Position receives the geographic coordinates\n *\n * @return true if the screen point could be converted; false if the screen point is not on the globe\n */\n open fun screenPointToGroundPosition(x: Double, y: Double, result: Position) =\n if (rayThroughScreenPoint(x, y, scratchRay) && globe.intersect(scratchRay, scratchPoint)) {\n globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, result)\n true\n } else false\n\n /**\n * Computes a Cartesian coordinate ray that passes through a screen point.\n *\n * @param x the screen point's X coordinate\n * @param y the screen point's Y coordinate\n * @param result a pre-allocated Line in which to return the computed ray\n *\n * @return the result set to the computed ray in Cartesian coordinates\n */\n open fun rayThroughScreenPoint(x: Double, y: Double, result: Line): Boolean {\n if (viewport.isEmpty) return false\n\n // Compute the inverse modelview-projection matrix corresponding to the WorldWindow's current Camera state.\n computeViewingTransform(scratchProjection, scratchModelview)\n scratchProjection.multiplyByMatrix(scratchModelview).invert()\n\n // Convert from viewport coordinates to OpenGL screen coordinates by inverting the Y axis.\n // Transform the screen point to Cartesian coordinates at the near and far clip planes, store the result in the\n // ray's origin and direction, respectively. Complete the ray direction by subtracting the near point from the\n // far point and normalizing.\n if (scratchProjection.unProject(x, viewport.height - y, viewport, result.origin, result.direction)) {\n result.direction.subtract(result.origin).normalize()\n return true\n }\n return false\n }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n open fun pixelSizeAtDistance(distance: Double): Double {\n val tanFovY2 = tan(camera.fieldOfView.inRadians * 0.5)\n val frustumHeight = 2 * distance * tanFovY2\n return frustumHeight / viewport.height\n }\n\n /**\n * Returns the minimum distance from the globe's surface necessary to make the globe's extents visible in this World\n * Window.\n */\n val distanceToViewGlobeExtents get(): Double {\n val sinFovY2 = sin(camera.fieldOfView.inRadians * 0.5)\n val radius = globe.equatorialRadius\n return radius / sinFovY2 - radius\n }\n\n open fun renderFrame(frame: Frame): Boolean {\n // Mark the beginning of a frame render.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginRendering(rc)\n\n // Restrict camera tilt and roll in 2D\n if (globe.is2D) {\n camera.tilt = ZERO\n camera.roll = ZERO\n }\n\n // Set up the render context according to the WorldWindow's current state.\n rc.globe = globe\n rc.terrainTessellator = tessellator\n rc.layers = layers\n rc.camera = camera\n val cameraPosition = globe.getAbsolutePosition(camera.position, camera.altitudeMode)\n rc.horizonDistance = globe.horizonDistance(cameraPosition.altitude)\n globe.geographicToCartesian(\n cameraPosition.latitude, cameraPosition.longitude, cameraPosition.altitude, rc.cameraPoint\n )\n rc.renderResourceCache = renderResourceCache\n rc.verticalExaggeration = verticalExaggeration\n rc.densityFactor = densityFactor\n rc.atmosphereAltitude = atmosphereAltitude\n rc.globeState = globe.state\n rc.elevationModelTimestamp = globe.elevationModel.timestamp\n\n // Configure the frame's Cartesian modelview matrix and eye coordinate projection matrix.\n computeViewingTransform(frame.projection, frame.modelview)\n frame.viewport.copy(viewport)\n// frame.infiniteProjection.setToInfiniteProjection(viewport.width, viewport.height, camera.fieldOfView, 1.0)\n// frame.infiniteProjection.multiplyByMatrix(frame.modelview)\n rc.viewport.copy(frame.viewport)\n rc.projection.copy(frame.projection)\n rc.modelview.copy(frame.modelview)\n rc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n if (pickMode) rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport, frame.pickViewport!!)\n else rc.frustum.setToModelviewProjection(frame.projection, frame.modelview, frame.viewport)\n\n // Compute viewing distance and pixel size (for 3D view it will be done after terrain tessellation)\n if (globe.is2D) {\n scratchRay.origin.copy(rc.cameraPoint)\n rc.modelview.extractForwardVector(scratchRay.direction)\n rc.viewingDistance = if (globe.intersect(scratchRay, scratchPoint)) {\n rc.lookAtPosition = globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, Position())\n scratchPoint.distanceTo(rc.cameraPoint)\n } else rc.horizonDistance\n rc.pixelSize = rc.pixelSizeAtDistance(rc.viewingDistance)\n }\n\n // Accumulate the Drawables in the frame's drawable queue and drawable terrain data structures.\n rc.drawableQueue = frame.drawableQueue\n rc.drawableTerrain = frame.drawableTerrain\n rc.pickedObjects = frame.pickedObjects\n rc.pickDeferred = frame.pickDeferred\n rc.pickViewport = frame.pickViewport\n rc.pickPoint = frame.pickPoint\n rc.pickRay = frame.pickRay\n rc.isPickMode = frame.isPickMode\n\n // Let the frame controller render the WorldWindow's current state.\n frameController.renderFrame(rc)\n\n // Propagate redraw requests submitted during rendering.\n val isRedrawRequested = !pickMode && rc.isRedrawRequested\n\n // Mark the end of a frame render.\n if (!pickMode) frameMetrics?.endRendering(rc)\n\n // Reset the render context's state in preparation for the next frame.\n rc.reset()\n\n return isRedrawRequested\n }\n\n open fun drawFrame(frame: Frame) {\n // Mark the beginning of a frame draw.\n val pickMode = frame.isPickMode\n if (!pickMode) frameMetrics?.beginDrawing(dc)\n\n // Set up the draw context according to the frame's current state.\n dc.eyePoint.copy(frame.modelview.extractEyePoint(dc.eyePoint))\n dc.viewport.copy(frame.viewport)\n dc.projection.copy(frame.projection)\n dc.modelview.copy(frame.modelview)\n dc.modelviewProjection.setToMultiply(frame.projection, frame.modelview)\n// dc.infiniteProjection.copy(frame.infiniteProjection)\n dc.screenProjection.setToScreenProjection(\n frame.viewport.width.toDouble(), frame.viewport.height.toDouble()\n )\n\n // Process the drawables in the frame's drawable queue and drawable terrain data structures.\n dc.drawableQueue = frame.drawableQueue\n dc.drawableTerrain = frame.drawableTerrain\n dc.pickedObjects = frame.pickedObjects\n dc.pickViewport = frame.pickViewport\n dc.pickPoint = frame.pickPoint\n dc.isPickMode = frame.isPickMode\n\n // Let the frame controller draw the frame.\n frameController.drawFrame(dc)\n\n // Increment render resource cache age on each frame\n renderResourceCache.incAge()\n\n // Release resources evicted during the previous frame.\n renderResourceCache.releaseEvictedResources(dc)\n\n // Mark the end of a frame draw.\n if (!pickMode) frameMetrics?.endDrawing(dc)\n\n // Reset the draw context's state in preparation for the next frame.\n dc.reset()\n }\n\n protected open fun computeViewingTransform(projection: Matrix4, modelview: Matrix4) {\n // Compute the clip plane distances. The near distance is set to a large value that does not clip the globe's\n // surface. The far distance is set to the smallest value that does not clip the atmosphere.\n val eyeAltitude = globe.getAbsolutePosition(camera.position, camera.altitudeMode).altitude\n val eyeHorizon = globe.horizonDistance(eyeAltitude)\n val atmosphereHorizon = globe.horizonDistance(atmosphereAltitude)\n\n // The far distance is set to the smallest value that does not clip the atmosphere.\n var far = eyeHorizon + atmosphereHorizon\n if (far < 1e3) far = 1e3\n\n //The near distance is set to a large value that does not clip the globe's surface.\n val maxDepthValue = (1 shl depthBits) - 1\n val farResolution = 10.0\n var near = far / (maxDepthValue / (1 - farResolution / far) - maxDepthValue + 1)\n\n // Prevent the near clip plane from intersecting the terrain.\n val distanceToSurface = if (globe.is2D) eyeAltitude else eyeAltitude - globe.getElevation(\n camera.position.latitude, camera.position.longitude\n ) * verticalExaggeration\n if (distanceToSurface > 0) {\n val tanHalfFov = tan(0.5 * camera.fieldOfView.inRadians)\n val maxNearDistance = distanceToSurface / (2 * sqrt(2 * tanHalfFov * tanHalfFov + 1))\n if (near > maxNearDistance) near = maxNearDistance\n }\n if (near < 1) near = 1.0\n\n // Compute a perspective projection matrix given the WorldWindow's viewport, field of view, and clip distances.\n projection.setToPerspectiveProjection(viewport.width, viewport.height, camera.fieldOfView, near, far)\n\n // Compute a Cartesian transform matrix from the Camera.\n cameraToViewingTransform(modelview)\n }\n\n protected open fun cameraToViewingTransform(result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the camera's position.\n geographicToCartesianTransform(camera.position, camera.altitudeMode, result)\n\n // Transform by the heading, tilt and roll.\n result.multiplyByRotation(0.0, 0.0, 1.0, -camera.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, camera.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, camera.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun lookAtToViewingTransform(lookAt: LookAt, result: Matrix4): Matrix4 {\n // Transform by the local cartesian transform at the look-at's position.\n geographicToCartesianTransform(lookAt.position, lookAt.altitudeMode, result)\n\n // Transform by the heading and tilt.\n result.multiplyByRotation(0.0, 0.0, 1.0, -lookAt.heading) // rotate clockwise about the Z axis\n result.multiplyByRotation(1.0, 0.0, 0.0, lookAt.tilt) // rotate counter-clockwise about the X axis\n result.multiplyByRotation(0.0, 0.0, 1.0, lookAt.roll) // rotate counter-clockwise about the Z axis (again)\n\n // Transform by the range.\n result.multiplyByTranslation(0.0, 0.0, lookAt.range)\n\n // Make the transform a viewing matrix.\n result.invertOrthonormal()\n return result\n }\n\n protected open fun geographicToCartesianTransform(position: Position, altitudeMode: AltitudeMode, result: Matrix4): Matrix4 {\n when (altitudeMode) {\n AltitudeMode.ABSOLUTE -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, position.altitude, result\n )\n AltitudeMode.CLAMP_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, globe.getElevation(\n position.latitude, position.longitude\n ) * verticalExaggeration, result\n )\n AltitudeMode.RELATIVE_TO_GROUND -> globe.geographicToCartesianTransform(\n position.latitude, position.longitude, (position.altitude + globe.getElevation(\n position.latitude, position.longitude\n )) * verticalExaggeration, result\n )\n }\n return result\n }\n\n protected open fun applyLookAtLimits(lookAt: LookAt) {\n // Clamp latitude to between -90 and +90, and normalize longitude to between -180 and +180.\n lookAt.position.latitude = lookAt.position.latitude.clampLatitude()\n lookAt.position.longitude = lookAt.position.longitude.normalizeLongitude()\n\n // Clamp range to values greater than 1 in order to prevent degenerating to a first-person lookAt when\n // range is zero.\n lookAt.range = lookAt.range.coerceIn(10.0, distanceToViewGlobeExtents * 2)\n\n // Normalize heading to between -180 and +180.\n lookAt.heading = lookAt.heading.normalize180()\n\n // Clamp tilt to between 0 and +90 to prevent the viewer from going upside down.\n lookAt.tilt = lookAt.tilt.inDegrees.coerceIn(0.0, 90.0).degrees\n\n // Normalize heading to between -180 and +180.\n lookAt.roll = lookAt.roll.normalize180()\n\n // Apply 2D limits when the globe is 2D.\n if (globe.is2D) {\n // Clamp range to prevent more than 360 degrees of visible longitude. Assumes a 45 degree horizontal\n // field of view.\n lookAt.range = lookAt.range.coerceIn(1.0, 2.0 * PI * globe.equatorialRadius)\n\n // Force tilt to 0 when in 2D mode to keep the viewer looking straight down.\n lookAt.tilt = ZERO\n lookAt.roll = ZERO\n }\n }\n\n companion object {\n protected const val COLLISION_THRESHOLD = 10.0 // 10m above surface\n\n private val _events = MutableSharedFlow(extraBufferCapacity = 1)\n\n /**\n * Provides a global mechanism for broadcasting notifications within the WorldWind library.\n */\n @JvmStatic\n val events = _events.asSharedFlow()\n\n /**\n * Requests that all WorldWindow instances update their display. Internally, this dispatches a REQUEST_REDRAW\n * message to the WorldWind message center.\n */\n @JvmStatic\n fun requestRedraw() { _events.tryEmit(Event.RequestRedraw) }\n\n /**\n * Requests render resource cache to remove specified resource ID from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n @JvmStatic\n suspend fun unmarkResourceAbsent(resourceId: Int) { _events.emit(Event.UnmarkResourceAbsent(resourceId)) }\n }\n\n sealed interface Event {\n /**\n * Event requesting WorldWindow instances to update their display.\n */\n object RequestRedraw : Event\n /**\n * Event requesting RenderResourceCache to un-mark resource from absent list\n *\n * @param resourceId resource ID to be removed from absent list\n */\n data class UnmarkResourceAbsent(val resourceId: Int) : Event\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_LINES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport earth.worldwind.util.kgl.GL_UNSIGNED_SHORT\nimport kotlin.jvm.JvmStatic\n\nopen class BasicDrawableTerrain protected constructor(): DrawableTerrain {\n override var offset = Globe.Offset.Center\n override val sector = Sector()\n override val vertexOrigin = Vec3()\n val lineElementRange = Range()\n val triStripElementRange = Range()\n var vertexPoints: FloatBufferObject? = null\n var vertexHeights: FloatBufferObject? = null\n var vertexTexCoords: FloatBufferObject? = null\n var elements: ShortBufferObject? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): BasicDrawableTerrain {\n val instance = pool.acquire() ?: BasicDrawableTerrain()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n vertexPoints = null\n vertexHeights = null\n vertexTexCoords = null\n elements = null\n pool?.release(this)\n pool = null\n }\n\n override fun useVertexPointAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexPoints?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 3, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun useVertexHeightsAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexHeights?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 1, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun useVertexTexCoordAttrib(dc: DrawContext, attribLocation: Int): Boolean {\n val bufferBound = vertexTexCoords?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.vertexAttribPointer(attribLocation, 2, GL_FLOAT, false, 0, 0)\n return bufferBound\n }\n\n override fun drawLines(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.drawElements(\n GL_LINES, lineElementRange.length,\n GL_UNSIGNED_SHORT, lineElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun drawTriangles(dc: DrawContext): Boolean {\n val bufferBound = elements?.bindBuffer(dc) ?: false\n if (bufferBound) dc.gl.drawElements(\n GL_TRIANGLE_STRIP, triStripElementRange.length,\n GL_UNSIGNED_SHORT, triStripElementRange.lower * 2\n )\n return bufferBound\n }\n\n override fun draw(dc: DrawContext) {\n drawTriangles(dc)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Framebuffer\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.BufferPool\nimport earth.worldwind.util.kgl.*\n\nopen class DrawContext(val gl: Kgl) {\n val eyePoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n// val infiniteProjection = Matrix4()\n val screenProjection = Matrix4()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var isPickMode = false\n private var framebuffer = KglFramebuffer.NONE\n private var program = KglProgram.NONE\n private var textureUnit = GL_TEXTURE0\n private val textures = Array(32) { KglTexture.NONE }\n private var arrayBuffer = KglBuffer.NONE\n private var elementArrayBuffer = KglBuffer.NONE\n private var scratchFramebufferCache: Framebuffer? = null\n private var unitSquareBufferCache: FloatBufferObject? = null\n private var scratchBuffer = ByteArray(4)\n private val pixelArray = ByteArray(4)\n private var bufferPool = BufferPool(GL_ARRAY_BUFFER, GL_DYNAMIC_DRAW)\n /**\n * Returns count of terrain drawables in queue\n */\n val drawableTerrainCount get() = drawableTerrain?.count?:0\n /**\n * Returns the name of the OpenGL framebuffer object that is currently active.\n */\n val currentFramebuffer get() = framebuffer\n /**\n * Returns the name of the OpenGL program object that is currently active.\n */\n val currentProgram get() = program\n /**\n * Returns the OpenGL multitexture unit that is currently active. Returns a value from the GL_TEXTUREi enumeration,\n * where i ranges from 0 to 32.\n */\n val currentTextureUnit get() = textureUnit\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the active multitexture unit. The active\n * multitexture unit may be determined by calling currentTextureUnit.\n */\n val currentTexture get() = currentTexture(textureUnit)\n /**\n * Returns an OpenGL framebuffer object suitable for offscreen drawing. The framebuffer has a 32-bit color buffer\n * and a 32-bit depth buffer, both attached as OpenGL texture 2D objects.\n *
\n * The framebuffer may be used by any drawable and for any purpose. However, the draw context makes no guarantees\n * about the framebuffer's contents. Drawables must clear the framebuffer before use, and must assume its contents\n * may be modified by another drawable, either during the current frame or in a subsequent frame.\n *
\n * The OpenGL framebuffer object is created on first use and cached. Subsequent calls to this method return the\n * cached buffer object.\n */\n val scratchFramebuffer get() = scratchFramebufferCache ?: Framebuffer().apply {\n val colorAttachment = Texture(1024, 1024, GL_RGBA, GL_UNSIGNED_BYTE, true)\n val depthAttachment = Texture(1024, 1024, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, true)\n // TODO consider modifying Texture's tex parameter behavior in order to make this unnecessary\n depthAttachment.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n depthAttachment.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n attachTexture(this@DrawContext, colorAttachment, GL_COLOR_ATTACHMENT0)\n attachTexture(this@DrawContext, depthAttachment, GL_DEPTH_ATTACHMENT)\n }.also { scratchFramebufferCache = it }\n /**\n * Returns an OpenGL buffer object containing a unit square expressed as four vertices at (0, 1), (0, 0), (1, 1) and\n * (1, 0). Each vertex is stored as two 32-bit floating point coordinates. The four vertices are in the order\n * required by a triangle strip.\n *
\n * The OpenGL buffer object is created on first use and cached. Subsequent calls to this method return the cached\n * buffer object.\n */\n val unitSquareBuffer get() = unitSquareBufferCache ?: FloatBufferObject(\n GL_ARRAY_BUFFER, floatArrayOf(0f, 1f, 0f, 0f, 1f, 1f, 1f, 0f)\n ).also { unitSquareBufferCache = it }\n /**\n * Returns a scratch list suitable for accumulating entries during drawing. The list is cleared before each frame,\n * otherwise its contents are undefined.\n */\n val scratchList = mutableListOf()\n\n fun reset() {\n eyePoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n screenProjection.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickViewport = null\n pickPoint = null\n isPickMode = false\n scratchBuffer.fill(0)\n scratchList.clear()\n bufferPool.reset()\n }\n\n fun contextLost() {\n // Clear objects and values associated with the current OpenGL context.\n framebuffer = KglFramebuffer.NONE\n program = KglProgram.NONE\n textureUnit = GL_TEXTURE0\n arrayBuffer = KglBuffer.NONE\n elementArrayBuffer = KglBuffer.NONE\n scratchFramebufferCache = null\n unitSquareBufferCache = null\n textures.fill(KglTexture.NONE)\n bufferPool.contextLost()\n }\n\n fun peekDrawable() = drawableQueue?.peekDrawable()\n\n fun pollDrawable() = drawableQueue?.pollDrawable()\n\n fun rewindDrawables() { drawableQueue?.rewindDrawables() }\n\n fun getDrawableTerrain(index: Int) = drawableTerrain?.getDrawable(index) as DrawableTerrain? ?: error(\"Invalid index\")\n\n /**\n * Makes an OpenGL framebuffer object active. The active framebuffer becomes the target of all OpenGL commands that\n * render to the framebuffer or read from the framebuffer. This has no effect if the specified framebuffer object is\n * already active. The default is framebuffer 0, indicating that the default framebuffer provided by the windowing\n * system is active.\n *\n * @param framebuffer the name of the OpenGL framebuffer object to make active, or 0 to make the default\n * framebuffer provided by the windowing system active\n */\n fun bindFramebuffer(framebuffer: KglFramebuffer) {\n if (this.framebuffer != framebuffer) {\n this.framebuffer = framebuffer\n gl.bindFramebuffer(GL_FRAMEBUFFER, framebuffer)\n }\n }\n\n /**\n * Makes an OpenGL program object active as part of current rendering state. This has no effect if the specified\n * program object is already active. The default is program 0, indicating that no program is active.\n *\n * @param program the name of the OpenGL program object to make active, or 0 to make no program active\n */\n fun useProgram(program: KglProgram) {\n if (this.program != program) {\n this.program = program\n gl.useProgram(program)\n }\n }\n\n /**\n * Specifies the OpenGL multitexture unit to make active. This has no effect if the specified multitexture unit is\n * already active. The default is GL_TEXTURE0.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n */\n fun activeTextureUnit(textureUnit: Int) {\n if (this.textureUnit != textureUnit) {\n this.textureUnit = textureUnit\n gl.activeTexture(textureUnit)\n }\n }\n\n /**\n * Returns the name of the OpenGL texture 2D object currently bound to the specified multitexture unit.\n *\n * @param textureUnit the multitexture unit, one of GL_TEXTUREi, where i ranges from 0 to 32.\n *\n * @return the currently bound texture 2D object, or 0 if no texture object is bound\n */\n fun currentTexture(textureUnit: Int) = textures[textureUnit - GL_TEXTURE0]\n\n /**\n * Makes an OpenGL texture 2D object bound to the current multitexture unit. This has no effect if the specified\n * texture object is already bound. The default is texture 0, indicating that no texture is bound.\n *\n * @param texture the name of the OpenGL texture 2D object to make active, or 0 to make no texture active\n */\n fun bindTexture(texture: KglTexture) {\n val textureUnitIndex = textureUnit - GL_TEXTURE0\n if (textures[textureUnitIndex] != texture) {\n textures[textureUnitIndex] = texture\n gl.bindTexture(GL_TEXTURE_2D, texture)\n }\n }\n\n /**\n * Returns the name of the OpenGL buffer object bound to the specified target buffer.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n *\n * @return the currently bound buffer object, or 0 if no buffer object is bound\n */\n fun currentBuffer(target: Int): KglBuffer {\n return when (target) {\n GL_ARRAY_BUFFER -> arrayBuffer\n GL_ELEMENT_ARRAY_BUFFER -> elementArrayBuffer\n else -> KglBuffer.NONE\n }\n }\n\n /**\n * Makes an OpenGL buffer object bound to a specified target buffer. This has no effect if the specified buffer\n * object is already bound. The default is buffer 0, indicating that no buffer object is bound.\n *\n * @param target the target buffer, either GL_ARRAY_BUFFER or GL_ELEMENT_ARRAY_BUFFER\n * @param buffer the name of the OpenGL buffer object to make active\n */\n fun bindBuffer(target: Int, buffer: KglBuffer) {\n if (target == GL_ARRAY_BUFFER && arrayBuffer != buffer) {\n arrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else if (target == GL_ELEMENT_ARRAY_BUFFER && elementArrayBuffer != buffer) {\n elementArrayBuffer = buffer\n gl.bindBuffer(target, buffer)\n } else {\n gl.bindBuffer(target, buffer)\n }\n }\n\n /**\n * Puts dynamic vertex data into the buffer pool and returns offset.\n *\n * @param vertexData dynamic vertex data to be added in the buffer pool\n * @return offset in the buffer pool\n */\n fun bindBufferPool(vertexData: FloatArray) = bufferPool.bindBuffer(this, vertexData)\n\n /**\n * Reads the fragment color at a screen point in the currently active OpenGL frame buffer. The X and Y components\n * indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param result an optional pre-allocated Color in which to return the fragment color, or null to return a new\n * color\n *\n * @return the result argument set to the fragment color, or a new color if the result is null\n */\n fun readPixelColor(x: Int, y: Int, result: Color): Color {\n // Read the fragment pixel as an RGBA 8888 color.\n gl.readPixels(x, y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, pixelArray)\n\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelArray[0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelArray[1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelArray[2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelArray[3].toInt() and 0xFF) / 0xFF.toFloat()\n return result\n }\n\n /**\n * Reads the unique fragment colors within a screen rectangle in the currently active OpenGL frame buffer. The\n * components indicate OpenGL screen coordinates, which originate in the frame buffer's lower left corner.\n *\n * @param x the screen rectangle's X component\n * @param y the screen rectangle's Y component\n * @param width the screen rectangle's width\n * @param height the screen rectangle's height\n *\n * @return a set containing the unique fragment colors\n */\n fun readPixelColors(x: Int, y: Int, width: Int, height: Int): Set {\n // Read the fragment pixels as a tightly packed array of RGBA 8888 colors.\n val pixelCount = width * height\n val pixelBuffer = scratchBuffer(pixelCount * 4)\n val packAlignment = gl.getParameteri(GL_PACK_ALIGNMENT)\n gl.pixelStorei(GL_PACK_ALIGNMENT, 1) // read byte aligned\n gl.readPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, pixelBuffer)\n gl.pixelStorei(GL_PACK_ALIGNMENT, packAlignment) // restore the pack alignment\n val resultSet = mutableSetOf()\n var result = Color()\n for (i in 0 until pixelCount) {\n val idx = i * 4\n\n // Convert the RGBA 8888 color to a WorldWind color.\n result.red = (pixelBuffer[idx + 0].toInt() and 0xFF) / 0xFF.toFloat()\n result.green = (pixelBuffer[idx + 1].toInt() and 0xFF) / 0xFF.toFloat()\n result.blue = (pixelBuffer[idx + 2].toInt() and 0xFF) / 0xFF.toFloat()\n result.alpha = (pixelBuffer[idx + 3].toInt() and 0xFF) / 0xFF.toFloat()\n\n // Accumulate the unique colors in a set.\n if (resultSet.add(result)) result = Color()\n }\n return resultSet\n }\n\n /**\n * Returns a scratch NIO buffer suitable for use during drawing. The returned buffer has capacity at least equal to\n * the specified capacity. The buffer is cleared before each frame, otherwise its contents, position, limit and mark\n * are undefined.\n *\n * @param capacity the buffer's minimum capacity in bytes\n *\n * @return the draw context's scratch buffer\n */\n fun scratchBuffer(capacity: Int): ByteArray {\n if (scratchBuffer.size < capacity) scratchBuffer = ByteArray(capacity)\n return scratchBuffer\n }\n}",null,"package earth.worldwind.util.kgl\n\nexpect class KglShader {\n companion object{ val NONE: KglShader }\n fun isValid(): Boolean\n}\nexpect class KglProgram {\n companion object{ val NONE: KglProgram }\n fun isValid(): Boolean\n}\nexpect class KglUniformLocation {\n companion object{ val NONE: KglUniformLocation }\n fun isValid(): Boolean\n}\nexpect class KglBuffer {\n companion object{ val NONE: KglBuffer }\n fun isValid(): Boolean\n}\nexpect class KglTexture {\n companion object{ val NONE: KglTexture }\n fun isValid(): Boolean\n}\nexpect class KglFramebuffer {\n companion object{ val NONE: KglFramebuffer }\n fun isValid(): Boolean\n}\n\nconst val GL_ACTIVE_TEXTURE = 0x84E0\nconst val GL_DEPTH_BUFFER_BIT = 0x00000100\nconst val GL_STENCIL_BUFFER_BIT = 0x00000400\nconst val GL_COLOR_BUFFER_BIT = 0x00004000\nconst val GL_FALSE = 0\nconst val GL_TRUE = 1\nconst val GL_POINTS = 0x0000\nconst val GL_LINES = 0x0001\nconst val GL_LINE_LOOP = 0x0002\nconst val GL_LINE_STRIP = 0x0003\nconst val GL_TRIANGLES = 0x0004\nconst val GL_TRIANGLE_STRIP = 0x0005\nconst val GL_TRIANGLE_FAN = 0x0006\nconst val GL_ZERO = 0\nconst val GL_ONE = 1\nconst val GL_SRC_COLOR = 0x0300\nconst val GL_ONE_MINUS_SRC_COLOR = 0x0301\nconst val GL_SRC_ALPHA = 0x0302\nconst val GL_ONE_MINUS_SRC_ALPHA = 0x0303\nconst val GL_DST_ALPHA = 0x0304\nconst val GL_ONE_MINUS_DST_ALPHA = 0x0305\nconst val GL_DST_COLOR = 0x0306\nconst val GL_ONE_MINUS_DST_COLOR = 0x0307\nconst val GL_SRC_ALPHA_SATURATE = 0x0308\nconst val GL_FUNC_ADD = 0x8006\nconst val GL_BLEND_EQUATION = 0x8009\nconst val GL_BLEND_EQUATION_RGB = 0x8009\nconst val GL_BLEND_EQUATION_ALPHA = 0x883D\nconst val GL_FUNC_SUBTRACT = 0x800A\nconst val GL_FUNC_REVERSE_SUBTRACT = 0x800B\nconst val GL_BLEND_DST_RGB = 0x80C8\nconst val GL_BLEND_SRC_RGB = 0x80C9\nconst val GL_BLEND_DST_ALPHA = 0x80CA\nconst val GL_BLEND_SRC_ALPHA = 0x80CB\nconst val GL_CONSTANT_COLOR = 0x8001\nconst val GL_ONE_MINUS_CONSTANT_COLOR = 0x8002\nconst val GL_CONSTANT_ALPHA = 0x8003\nconst val GL_ONE_MINUS_CONSTANT_ALPHA = 0x8004\nconst val GL_BLEND_COLOR = 0x8005\nconst val GL_ARRAY_BUFFER = 0x8892\nconst val GL_ELEMENT_ARRAY_BUFFER = 0x8893\nconst val GL_ARRAY_BUFFER_BINDING = 0x8894\nconst val GL_ELEMENT_ARRAY_BUFFER_BINDING = 0x8895\nconst val GL_STREAM_DRAW = 0x88E0\nconst val GL_STATIC_DRAW = 0x88E4\nconst val GL_DYNAMIC_DRAW = 0x88E8\nconst val GL_BUFFER_SIZE = 0x8764\nconst val GL_BUFFER_USAGE = 0x8765\nconst val GL_CURRENT_VERTEX_ATTRIB = 0x8626\nconst val GL_FRONT = 0x0404\nconst val GL_BACK = 0x0405\nconst val GL_FRONT_AND_BACK = 0x0408\nconst val GL_TEXTURE_2D = 0x0DE1\nconst val GL_CULL_FACE = 0x0B44\nconst val GL_BLEND = 0x0BE2\nconst val GL_DITHER = 0x0BD0\nconst val GL_STENCIL_TEST = 0x0B90\nconst val GL_DEPTH_TEST = 0x0B71\nconst val GL_SCISSOR_TEST = 0x0C11\nconst val GL_POLYGON_OFFSET_FILL = 0x8037\nconst val GL_SAMPLE_ALPHA_TO_COVERAGE = 0x809E\nconst val GL_SAMPLE_COVERAGE = 0x80A0\nconst val GL_NO_ERROR = 0\nconst val GL_INVALID_ENUM = 0x0500\nconst val GL_INVALID_VALUE = 0x0501\nconst val GL_INVALID_OPERATION = 0x0502\nconst val GL_OUT_OF_MEMORY = 0x0505\nconst val GL_INVALID_FRAMEBUFFER_OPERATION = 0x506\nconst val GL_CW = 0x0900\nconst val GL_CCW = 0x0901\nconst val GL_LINE_WIDTH = 0x0B21\nconst val GL_ALIASED_POINT_SIZE_RANGE = 0x846D\nconst val GL_ALIASED_LINE_WIDTH_RANGE = 0x846E\nconst val GL_CULL_FACE_MODE = 0x0B45\nconst val GL_FRONT_FACE = 0x0B46\nconst val GL_DEPTH_RANGE = 0x0B70\nconst val GL_DEPTH_WRITEMASK = 0x0B72\nconst val GL_DEPTH_CLEAR_VALUE = 0x0B73\nconst val GL_DEPTH_FUNC = 0x0B74\nconst val GL_STENCIL_CLEAR_VALUE = 0x0B91\nconst val GL_STENCIL_FUNC = 0x0B92\nconst val GL_STENCIL_FAIL = 0x0B94\nconst val GL_STENCIL_PASS_DEPTH_FAIL = 0x0B95\nconst val GL_STENCIL_PASS_DEPTH_PASS = 0x0B96\nconst val GL_STENCIL_REF = 0x0B97\nconst val GL_STENCIL_VALUE_MASK = 0x0B93\nconst val GL_STENCIL_WRITEMASK = 0x0B98\nconst val GL_STENCIL_BACK_FUNC = 0x8800\nconst val GL_STENCIL_BACK_FAIL = 0x8801\nconst val GL_STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802\nconst val GL_STENCIL_BACK_PASS_DEPTH_PASS = 0x8803\nconst val GL_STENCIL_BACK_REF = 0x8CA3\nconst val GL_STENCIL_BACK_VALUE_MASK = 0x8CA4\nconst val GL_STENCIL_BACK_WRITEMASK = 0x8CA5\nconst val GL_VIEWPORT = 0x0BA2\nconst val GL_SCISSOR_BOX = 0x0C10\nconst val GL_COLOR_CLEAR_VALUE = 0x0C22\nconst val GL_COLOR_WRITEMASK = 0x0C23\nconst val GL_UNPACK_ALIGNMENT = 0x0CF5\nconst val GL_PACK_ALIGNMENT = 0x0D05\nconst val GL_MAX_TEXTURE_SIZE = 0x0D33\nconst val GL_MAX_VIEWPORT_DIMS = 0x0D3A\nconst val GL_SUBPIXEL_BITS = 0x0D50\nconst val GL_RED_BITS = 0x0D52\nconst val GL_GREEN_BITS = 0x0D53\nconst val GL_BLUE_BITS = 0x0D54\nconst val GL_ALPHA_BITS = 0x0D55\nconst val GL_DEPTH_BITS = 0x0D56\nconst val GL_STENCIL_BITS = 0x0D57\nconst val GL_POLYGON_OFFSET_UNITS = 0x2A00\nconst val GL_POLYGON_OFFSET_FACTOR = 0x8038\nconst val GL_TEXTURE_BINDING_2D = 0x8069\nconst val GL_SAMPLE_BUFFERS = 0x80A8\nconst val GL_SAMPLES = 0x80A9\nconst val GL_SAMPLE_COVERAGE_VALUE = 0x80AA\nconst val GL_SAMPLE_COVERAGE_INVERT = 0x80AB\nconst val GL_NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2\nconst val GL_COMPRESSED_TEXTURE_FORMATS = 0x86A3\nconst val GL_DONT_CARE = 0x1100\nconst val GL_FASTEST = 0x1101\nconst val GL_NICEST = 0x1102\nconst val GL_GENERATE_MIPMAP_HINT = 0x8192\nconst val GL_BYTE = 0x1400\nconst val GL_UNSIGNED_BYTE = 0x1401\nconst val GL_SHORT = 0x1402\nconst val GL_UNSIGNED_SHORT = 0x1403\nconst val GL_INT = 0x1404\nconst val GL_UNSIGNED_INT = 0x1405\nconst val GL_FLOAT = 0x1406\nconst val GL_FIXED = 0x140C\nconst val GL_STENCIL_INDEX = 0x1901\nconst val GL_DEPTH_COMPONENT = 0x1902\nconst val GL_RED = 0x1903\nconst val GL_GREEN = 0x1904\nconst val GL_BLUE = 0x1905\nconst val GL_ALPHA = 0x1906\nconst val GL_RGB = 0x1907\nconst val GL_RGBA = 0x1908\nconst val GL_LUMINANCE = 0x1909\nconst val GL_LUMINANCE_ALPHA = 0x190A\nconst val GL_UNSIGNED_SHORT_4_4_4_4 = 0x8033\nconst val GL_UNSIGNED_SHORT_5_5_5_1 = 0x8034\nconst val GL_UNSIGNED_SHORT_5_6_5 = 0x8363\nconst val GL_FRAGMENT_SHADER = 0x8B30\nconst val GL_VERTEX_SHADER = 0x8B31\nconst val GL_MAX_VERTEX_ATTRIBS = 0x8869\nconst val GL_MAX_VERTEX_UNIFORM_VECTORS = 0x8DFB\nconst val GL_MAX_VARYING_VECTORS = 0x8DFC\nconst val GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D\nconst val GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C\nconst val GL_MAX_TEXTURE_IMAGE_UNITS = 0x8872\nconst val GL_MAX_FRAGMENT_UNIFORM_VECTORS = 0x8DFD\nconst val GL_SHADER_TYPE = 0x8B4F\nconst val GL_DELETE_STATUS = 0x8B80\nconst val GL_LINK_STATUS = 0x8B82\nconst val GL_VALIDATE_STATUS = 0x8B83\nconst val GL_ATTACHED_SHADERS = 0x8B85\nconst val GL_ACTIVE_UNIFORMS = 0x8B86\nconst val GL_ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87\nconst val GL_ACTIVE_ATTRIBUTES = 0x8B89\nconst val GL_ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A\nconst val GL_SHADING_LANGUAGE_VERSION = 0x8B8C\nconst val GL_CURRENT_PROGRAM = 0x8B8D\nconst val GL_NEVER = 0x0200\nconst val GL_LESS = 0x0201\nconst val GL_EQUAL = 0x0202\nconst val GL_LEQUAL = 0x0203\nconst val GL_GREATER = 0x0204\nconst val GL_NOTEQUAL = 0x0205\nconst val GL_GEQUAL = 0x0206\nconst val GL_ALWAYS = 0x0207\nconst val GL_KEEP = 0x1E00\nconst val GL_REPLACE = 0x1E01\nconst val GL_INCR = 0x1E02\nconst val GL_DECR = 0x1E03\nconst val GL_INVERT = 0x150A\nconst val GL_INCR_WRAP = 0x8507\nconst val GL_DECR_WRAP = 0x8508\nconst val GL_VENDOR = 0x1F00\nconst val GL_RENDERER = 0x1F01\nconst val GL_VERSION = 0x1F02\nconst val GL_EXTENSIONS = 0x1F03\nconst val GL_NEAREST = 0x2600\nconst val GL_LINEAR = 0x2601\nconst val GL_NEAREST_MIPMAP_NEAREST = 0x2700\nconst val GL_LINEAR_MIPMAP_NEAREST = 0x2701\nconst val GL_NEAREST_MIPMAP_LINEAR = 0x2702\nconst val GL_LINEAR_MIPMAP_LINEAR = 0x2703\nconst val GL_TEXTURE_MAG_FILTER = 0x2800\nconst val GL_TEXTURE_MIN_FILTER = 0x2801\nconst val GL_TEXTURE_WRAP_S = 0x2802\nconst val GL_TEXTURE_WRAP_T = 0x2803\nconst val GL_TEXTURE = 0x1702\nconst val GL_TEXTURE_CUBE_MAP = 0x8513\nconst val GL_TEXTURE_BINDING_CUBE_MAP = 0x8514\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518\nconst val GL_TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519\nconst val GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A\nconst val GL_MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C\nconst val GL_TEXTURE0 = 0x84C0\nconst val GL_TEXTURE1 = 0x84C1\nconst val GL_TEXTURE2 = 0x84C2\nconst val GL_TEXTURE3 = 0x84C3\nconst val GL_TEXTURE4 = 0x84C4\nconst val GL_TEXTURE5 = 0x84C5\nconst val GL_TEXTURE6 = 0x84C6\nconst val GL_TEXTURE7 = 0x84C7\nconst val GL_TEXTURE8 = 0x84C8\nconst val GL_TEXTURE9 = 0x84C9\nconst val GL_TEXTURE10 = 0x84CA\nconst val GL_TEXTURE11 = 0x84CB\nconst val GL_TEXTURE12 = 0x84CC\nconst val GL_TEXTURE13 = 0x84CD\nconst val GL_TEXTURE14 = 0x84CE\nconst val GL_TEXTURE15 = 0x84CF\nconst val GL_TEXTURE16 = 0x84D0\nconst val GL_TEXTURE17 = 0x84D1\nconst val GL_TEXTURE18 = 0x84D2\nconst val GL_TEXTURE19 = 0x84D3\nconst val GL_TEXTURE20 = 0x84D4\nconst val GL_TEXTURE21 = 0x84D5\nconst val GL_TEXTURE22 = 0x84D6\nconst val GL_TEXTURE23 = 0x84D7\nconst val GL_TEXTURE24 = 0x84D8\nconst val GL_TEXTURE25 = 0x84D9\nconst val GL_TEXTURE26 = 0x84DA\nconst val GL_TEXTURE27 = 0x84DB\nconst val GL_TEXTURE28 = 0x84DC\nconst val GL_TEXTURE29 = 0x84DD\nconst val GL_TEXTURE30 = 0x84DE\nconst val GL_TEXTURE31 = 0x84DF\nconst val GL_REPEAT = 0x2901\nconst val GL_CLAMP_TO_EDGE = 0x812F\nconst val GL_MIRRORED_REPEAT = 0x8370\nconst val GL_FLOAT_VEC2 = 0x8B50\nconst val GL_FLOAT_VEC3 = 0x8B51\nconst val GL_FLOAT_VEC4 = 0x8B52\nconst val GL_INT_VEC2 = 0x8B53\nconst val GL_INT_VEC3 = 0x8B54\nconst val GL_INT_VEC4 = 0x8B55\nconst val GL_BOOL = 0x8B56\nconst val GL_BOOL_VEC2 = 0x8B57\nconst val GL_BOOL_VEC3 = 0x8B58\nconst val GL_BOOL_VEC4 = 0x8B59\nconst val GL_FLOAT_MAT2 = 0x8B5A\nconst val GL_FLOAT_MAT3 = 0x8B5B\nconst val GL_FLOAT_MAT4 = 0x8B5C\nconst val GL_SAMPLER_2D = 0x8B5E\nconst val GL_SAMPLER_CUBE = 0x8B60\nconst val GL_VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622\nconst val GL_VERTEX_ATTRIB_ARRAY_SIZE = 0x8623\nconst val GL_VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624\nconst val GL_VERTEX_ATTRIB_ARRAY_TYPE = 0x8625\nconst val GL_VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A\nconst val GL_VERTEX_ATTRIB_ARRAY_POINTER = 0x8645\nconst val GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F\nconst val GL_IMPLEMENTATION_COLOR_READ_TYPE = 0x8B9A\nconst val GL_IMPLEMENTATION_COLOR_READ_FORMAT = 0x8B9B\nconst val GL_COMPILE_STATUS = 0x8B81\nconst val GL_INFO_LOG_LENGTH = 0x8B84\nconst val GL_SHADER_SOURCE_LENGTH = 0x8B88\nconst val GL_SHADER_COMPILER = 0x8DFA\nconst val GL_SHADER_BINARY_FORMATS = 0x8DF8\nconst val GL_NUM_SHADER_BINARY_FORMATS = 0x8DF9\nconst val GL_LOW_FLOAT = 0x8DF0\nconst val GL_MEDIUM_FLOAT = 0x8DF1\nconst val GL_HIGH_FLOAT = 0x8DF2\nconst val GL_LOW_INT = 0x8DF3\nconst val GL_MEDIUM_INT = 0x8DF4\nconst val GL_HIGH_INT = 0x8DF5\nconst val GL_FRAMEBUFFER = 0x8D40\nconst val GL_RENDERBUFFER = 0x8D41\nconst val GL_RGBA4 = 0x8056\nconst val GL_RGBA8 = 0x8058\nconst val GL_BGR = 0x80e0\nconst val GL_BGRA = 0x80e1\nconst val GL_RGB5_A1 = 0x8057\nconst val GL_RGB565 = 0x8D62\nconst val GL_DEPTH_COMPONENT16 = 0x81A5\nconst val GL_FRAMEBUFFER_COMPLETE = 0x8CD5\nconst val GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6\nconst val GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7\nconst val GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB\nconst val GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC\nconst val GL_FRAMEBUFFER_UNSUPPORTED = 0x8CDD\nconst val GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56\nconst val GL_FRAMEBUFFER_UNDEFINED = 0x8219\nconst val GL_COLOR_ATTACHMENT0 = 0x8CE0\nconst val GL_COLOR_ATTACHMENT1 = 0x8CE1\nconst val GL_COLOR_ATTACHMENT2 = 0x8CE2\nconst val GL_COLOR_ATTACHMENT3 = 0x8CE3\nconst val GL_COLOR_ATTACHMENT4 = 0x8CE4\nconst val GL_COLOR_ATTACHMENT5 = 0x8CE5\nconst val GL_COLOR_ATTACHMENT6 = 0x8CE6\nconst val GL_COLOR_ATTACHMENT7 = 0x8CE7\nconst val GL_COLOR_ATTACHMENT8 = 0x8CE8\nconst val GL_COLOR_ATTACHMENT9 = 0x8CE9\nconst val GL_COLOR_ATTACHMENT10 = 0x8CEA\nconst val GL_COLOR_ATTACHMENT11 = 0x8CEB\nconst val GL_COLOR_ATTACHMENT12 = 0x8CEC\nconst val GL_COLOR_ATTACHMENT13 = 0x8CED\nconst val GL_COLOR_ATTACHMENT14 = 0x8CEE\nconst val GL_COLOR_ATTACHMENT15 = 0x8CEF\nconst val GL_COLOR_ATTACHMENT16 = 0x8CF0\nconst val GL_COLOR_ATTACHMENT17 = 0x8CF1\nconst val GL_COLOR_ATTACHMENT18 = 0x8CF2\nconst val GL_COLOR_ATTACHMENT19 = 0x8CF3\nconst val GL_COLOR_ATTACHMENT20 = 0x8CF4\nconst val GL_COLOR_ATTACHMENT21 = 0x8CF5\nconst val GL_COLOR_ATTACHMENT22 = 0x8CF6\nconst val GL_COLOR_ATTACHMENT23 = 0x8CF7\nconst val GL_COLOR_ATTACHMENT24 = 0x8CF8\nconst val GL_COLOR_ATTACHMENT25 = 0x8CF9\nconst val GL_COLOR_ATTACHMENT26 = 0x8CFA\nconst val GL_COLOR_ATTACHMENT27 = 0x8CFB\nconst val GL_COLOR_ATTACHMENT28 = 0x8CFC\nconst val GL_COLOR_ATTACHMENT29 = 0x8CFD\nconst val GL_COLOR_ATTACHMENT30 = 0x8CFE\nconst val GL_COLOR_ATTACHMENT31 = 0x8CFF\nconst val GL_DEPTH_ATTACHMENT = 0x8D00\nconst val GL_STENCIL_ATTACHMENT = 0x8D20\nconst val GL_DEPTH_STENCIL_ATTACHMENT = 0x821A\nconst val GL_R8 = 0x8229\nconst val GL_R16 = 0x822A\nconst val GL_RG8 = 0x822B\nconst val GL_RG16 = 0x822C\nconst val GL_R16F = 0x822D\nconst val GL_R32F = 0x822E\nconst val GL_RG16F = 0x822F\nconst val GL_RG32F = 0x8230\nconst val GL_R8I = 0x8231\nconst val GL_R8UI = 0x8232\nconst val GL_R16I = 0x8233\nconst val GL_R16UI = 0x8234\nconst val GL_R32I = 0x8235\nconst val GL_R32UI = 0x8236\nconst val GL_RG8I = 0x8237\nconst val GL_RG8UI = 0x8238\nconst val GL_RG16I = 0x8239\nconst val GL_RG16UI = 0x823A\nconst val GL_RG32I = 0x823B\nconst val GL_RG32UI = 0x823C\nconst val GL_RG = 0x8227\nconst val GL_COMPRESSED_RED = 0x8225\nconst val GL_COMPRESSED_RG = 0x8226\n\ninterface Kgl {\n abstract val hasMaliOOMBug: Boolean\n \n fun createShader(type: Int): KglShader\n fun shaderSource(shader: KglShader, source: String)\n fun compileShader(shader: KglShader)\n fun deleteShader(shader: KglShader)\n\n fun getShaderParameteri(shader: KglShader, pname: Int): Int\n\n fun getProgramInfoLog(program: KglProgram) : String\n fun getShaderInfoLog(shader: KglShader) : String\n\n fun createProgram(): KglProgram\n fun attachShader(program: KglProgram, shader: KglShader)\n fun linkProgram(program: KglProgram)\n fun useProgram(program: KglProgram)\n fun deleteProgram(program: KglProgram)\n\n fun getProgramParameteri(program: KglProgram, pname: Int): Int\n\n fun getUniformLocation(program: KglProgram, name: String): KglUniformLocation\n fun bindAttribLocation(program: KglProgram, index: Int, name: String)\n\n fun enable(cap: Int)\n fun disable(cap: Int)\n\n fun enableVertexAttribArray(location: Int)\n fun disableVertexAttribArray(location: Int)\n\n fun getParameteri(pname: Int): Int\n fun getParameterf(pname: Int): Float\n fun getParameteriv(pname: Int): IntArray\n fun getParameterfv(pname: Int): FloatArray\n\n fun createBuffer(): KglBuffer\n fun bindBuffer(target: Int, buffer: KglBuffer)\n fun bufferData(target: Int, size: Int, sourceData: ShortArray?, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: IntArray?, usage: Int, offset: Int = 0)\n fun bufferData(target: Int, size: Int, sourceData: FloatArray?, usage: Int, offset: Int = 0)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: ShortArray)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: IntArray)\n fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: FloatArray)\n fun deleteBuffer(buffer: KglBuffer)\n\n fun vertexAttribPointer(location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int)\n\n fun uniform1f(location: KglUniformLocation, f: Float)\n fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform1i(location: KglUniformLocation, i: Int)\n\n fun uniform2f(location: KglUniformLocation, x: Float, y: Float)\n fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform2i(location: KglUniformLocation, x: Int, y: Int)\n\n fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float)\n fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int)\n\n fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float)\n fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int)\n fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int)\n\n fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int)\n\n fun cullFace(mode: Int)\n fun frontFace (mode: Int)\n\n fun polygonOffset(factor: Float, units: Float)\n\n fun depthFunc(func: Int)\n fun depthMask(mask: Boolean)\n\n fun blendFunc(sFactor: Int, dFactor: Int)\n\n fun viewport(x: Int, y: Int, width: Int, height: Int)\n fun clearColor(r: Float, g: Float, b: Float, a: Float)\n fun clear(mask: Int)\n\n fun createTexture(): KglTexture\n fun deleteTexture(texture: KglTexture)\n fun texImage2D(target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?)\n fun activeTexture(texture: Int)\n fun bindTexture(target: Int, texture: KglTexture)\n fun generateMipmap(target: Int)\n fun texParameteri(target: Int, pname: Int, value: Int)\n\n fun drawArrays(mode: Int, first: Int, count: Int)\n fun drawElements(mode: Int, count: Int, type: Int, offset: Int)\n\n fun getError(): Int\n fun finish()\n\n fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer)\n fun createFramebuffer(): KglFramebuffer\n fun deleteFramebuffer(framebuffer: KglFramebuffer)\n fun checkFramebufferStatus(target: Int): Int\n fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int)\n\n fun readPixels(x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray)\n fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean)\n fun lineWidth(width: Float)\n fun pixelStorei(pname: Int, param: Int)\n}\n",null,"package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.program.BasicShaderProgram\n\nopen class DrawShapeState internal constructor() {\n companion object {\n const val MAX_DRAW_ELEMENTS = 4\n }\n\n var program: BasicShaderProgram? = null\n var vertexBuffer: FloatBufferObject? = null\n var elementBuffer: AbstractBufferObject? = null\n val vertexOrigin = Vec3()\n var vertexStride = 0\n var enableCullFace = true\n var enableDepthTest = true\n var enableDepthWrite = true\n var depthOffset = 0.0\n protected val color = Color()\n protected var opacity = 1.0f\n protected var lineWidth = 1f\n protected var texture: Texture? = null\n protected val texCoordMatrix = Matrix3()\n private val texCoordAttrib = VertexAttrib()\n internal var primCount = 0\n internal val prims = Array(MAX_DRAW_ELEMENTS) { DrawElements() }\n\n open fun reset() {\n program = null\n vertexBuffer = null\n elementBuffer = null\n vertexOrigin.set(0.0, 0.0, 0.0)\n vertexStride = 0\n enableCullFace = true\n enableDepthTest = true\n depthOffset = 0.0\n color.set(1f, 1f, 1f, 1f)\n opacity = 1.0f\n lineWidth = 1f\n texture = null\n texCoordMatrix.setToIdentity()\n texCoordAttrib.size = 0\n texCoordAttrib.offset = 0\n primCount = 0\n for (idx in 0 until MAX_DRAW_ELEMENTS) prims[idx].texture = null\n }\n\n fun color(color: Color) = apply { this.color.copy(color) }\n\n fun opacity(opacity: Float) = apply { this.opacity = opacity }\n\n fun lineWidth(width: Float) = apply { lineWidth = width }\n\n fun texture(texture: Texture?) = apply { this.texture = texture }\n\n fun texCoordMatrix(matrix: Matrix3) = apply { texCoordMatrix.copy(matrix) }\n\n fun texCoordAttrib(size: Int, offset: Int) = apply {\n texCoordAttrib.size = size\n texCoordAttrib.offset = offset\n }\n\n open fun drawElements(mode: Int, count: Int, type: Int, offset: Int) {\n val prim = prims[primCount++]\n prim.mode = mode\n prim.count = count\n prim.type = type\n prim.offset = offset\n prim.color.copy(color)\n prim.opacity = opacity\n prim.lineWidth = lineWidth\n prim.texture = texture\n prim.texCoordMatrix.copy(texCoordMatrix)\n prim.texCoordAttrib.size = texCoordAttrib.size\n prim.texCoordAttrib.offset = texCoordAttrib.offset\n }\n\n internal open class DrawElements {\n var mode = 0\n var count = 0\n var type = 0\n var offset = 0\n val color = Color()\n var opacity = 1.0f\n var lineWidth = 0f\n var texture: Texture? = null\n val texCoordMatrix = Matrix3()\n val texCoordAttrib = VertexAttrib()\n }\n\n internal open class VertexAttrib {\n var size = 0\n var offset = 0\n }\n}","package earth.worldwind.draw\n\n/**\n * Drawable group provides a standard set of group IDs for organizing WorldWindow drawing into four phases:\n * background, surface, shape, and screen.\n * Accepted values are [BACKGROUND], [SURFACE], [SHAPE] and [SCREEN].\n */\nenum class DrawableGroup {\n /**\n * Indicating drawables displayed before everything else. This group is typically\n * used to display atmosphere and stars before all other drawables.\n */\n BACKGROUND,\n /**\n * Indicating drawables displayed on the globe's surface. Surface drawables are\n * displayed beneath shapes and screen drawables.\n */\n SURFACE,\n /**\n * Indicating shape drawables, such as placemarks, polygons and polylines. Shape\n * drawables are displayed on top of surface drawables, but beneath screen drawables.\n */\n SHAPE,\n /**\n * Indicating drawables displayed in the plane of the screen. Screen drawables are\n * displayed on top of everything else.\n */\n SCREEN;\n}","package earth.worldwind.draw\n\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.layer.heatmap.ElevationHeatmapProgram\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableHeatmap protected constructor(): Drawable {\n val heightLimits = FloatArray(2)\n val colors = Array(5) { Color() }\n var opacity = 1.0f\n var offset = Globe.Offset.Center\n var program: ElevationHeatmapProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableHeatmap {\n val instance = pool.acquire() ?: DrawableHeatmap()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n try {\n dc.gl.enableVertexAttribArray(1)\n\n program.setLimits(heightLimits)\n program.setColors(colors)\n program.setOpacity(opacity)\n\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n if (terrain.offset != offset) continue\n\n // Get the terrain's attributes, and keep a flag to ensure we apply the terrain's attributes at most once.\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (\n terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) &&\n terrain.useVertexHeightsAttrib(dc, 1 /*vertexHeights*/)\n ) {\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n program.mvpMatrix.copy(dc.modelviewProjection)\n program.mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection()\n } else continue // terrain vertex attribute failed to bind\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n dc.gl.disableVertexAttribArray(1)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_LINES\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableLines protected constructor(): Drawable {\n /**\n * Leader line vertex array. Initially sized to store two xyz points.\n */\n var vertexPoints = FloatArray(6)\n val mvpMatrix = Matrix4()\n val color = Color()\n var opacity = 1.0f\n var lineWidth = 1f\n var enableDepthTest = true\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableLines {\n val instance = pool.acquire() ?: DrawableLines()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n /**\n * Performs the actual rendering of the Placemark.\n *\n * @param dc The current draw context.\n */\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n val offset = dc.bindBufferPool(vertexPoints)\n if (offset < 0) return // vertex buffer unspecified or failed to bind\n\n // Disable texturing.\n program.enableTexture(false)\n\n // Use the leader's color.\n program.loadColor(color)\n\n // Use the leader's opacity.\n program.loadOpacity(opacity)\n\n // Use the leader's modelview-projection matrix.\n program.loadModelviewProjection(mvpMatrix)\n\n // Disable depth testing if requested.\n if (!enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Apply the leader's line width in screen pixels.\n dc.gl.lineWidth(lineWidth)\n\n // Use the leader line as the vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, 0, offset)\n\n // Draw the leader line.\n dc.gl.drawArrays(GL_LINES, 0 /*first*/, 2 /*count*/)\n\n // Restore the default WorldWind OpenGL state.\n if (!enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n\n dc.gl.lineWidth(1f)\n }\n}","package earth.worldwind.draw\n\nimport kotlin.math.max\n\nopen class DrawableQueue internal constructor(){\n protected var size = 0\n protected var position = 0\n protected var entries = arrayOfNulls(size)\n val count get() = size\n /**\n * Sorts drawables by ascending group ID, then ascending order, then by ascending ordinal.\n */\n protected open val sortComparator = Comparator { lhs, rhs ->\n // Comparator accepts only non-null Entries\n var result = lhs!!.groupId.compareTo(rhs!!.groupId)\n if (result == 0) result = lhs.order.compareTo(rhs.order)\n if (result == 0) result = lhs.ordinal.compareTo(rhs.ordinal)\n result\n }\n\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n fun offerDrawable(drawable: Drawable, groupId: DrawableGroup, depth: Double) {\n val capacity = entries.size\n if (capacity == size) {\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries)\n entries = newEntries\n }\n val entry = entries[size] ?: Entry().also { entries[size] = it }\n entry.set(drawable, groupId, depth, size++)\n }\n\n fun getDrawable(index: Int) = if (index < size) entries[index]?.drawable else null\n\n fun peekDrawable() = getDrawable(position)\n\n fun pollDrawable() = getDrawable(position++)\n\n fun rewindDrawables() { position = 0 }\n\n fun sortDrawables() {\n // Limit sort to non-null Entries only\n entries.sortWith(sortComparator, 0, size)\n position = 0\n }\n\n fun clearDrawables() {\n for (idx in 0 until size) {\n entries[idx]?.recycle()\n }\n size = 0\n position = 0\n }\n\n protected open class Entry {\n var drawable: Drawable? = null\n var groupId = DrawableGroup.BACKGROUND\n var order = 0.0\n var ordinal = 0\n\n fun set(drawable: Drawable, groupId: DrawableGroup, order: Double, ordinal: Int) {\n this.drawable = drawable\n this.groupId = groupId\n this.order = order\n this.ordinal = ordinal\n }\n\n fun recycle() {\n drawable?.recycle()\n drawable = null\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableScreenTexture protected constructor(): Drawable {\n val unitSquareTransform = Matrix4()\n val color = Color()\n var opacity = 1.0f\n var enableDepthTest = true\n var program: BasicShaderProgram? = null\n var texture: Texture? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableScreenTexture {\n val instance = pool.acquire() ?: DrawableScreenTexture()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n texture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (!dc.unitSquareBuffer.bindBuffer(dc)) return // vertex buffer failed to bind\n\n // Use the draw context's pick mode and use the drawable's color.\n program.enablePickMode(dc.isPickMode)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Disable writing to the depth buffer.\n dc.gl.depthMask(false)\n\n // Use a unit square as the vertex point and vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 2, GL_FLOAT, false, 0, 0)\n dc.gl.vertexAttribPointer(1 /*vertexTexCoord*/, 2, GL_FLOAT, false, 0, 0)\n\n // Draw this DrawableScreenTextures.\n doDraw(dc, this)\n\n // Draw all DrawableScreenTextures adjacent in the queue that share the same GLSL program.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n val drawable = dc.pollDrawable() as DrawableScreenTexture // take it off the queue\n doDraw(dc, drawable)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n }\n\n protected open fun doDraw(dc: DrawContext, drawable: DrawableScreenTexture) {\n val program = drawable.program ?: return\n\n // Use the drawable's color.\n program.loadColor(drawable.color)\n program.loadOpacity(drawable.opacity)\n\n // Attempt to bind the drawable's texture, configuring the shader program appropriately if there is no texture\n // or if the texture failed to bind.\n val texture = drawable.texture\n if (texture?.bindTexture(dc) == true) {\n program.enableTexture(true)\n program.loadTexCoordMatrix(texture.coordTransform)\n } else {\n program.enableTexture(false)\n }\n\n // Use a modelview-projection matrix that transforms the unit square to screen coordinates.\n drawable.mvpMatrix.setToMultiply(dc.screenProjection, drawable.unitSquareTransform)\n program.loadModelviewProjection(drawable.mvpMatrix)\n\n // Disable depth testing if requested.\n if (!drawable.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Draw the unit square as triangles.\n dc.gl.drawArrays(GL_TRIANGLE_STRIP, 0, 4)\n\n // Restore the default WorldWind OpenGL state.\n if (!drawable.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableScreenTexture && program === that.program\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_CULL_FACE\nimport earth.worldwind.util.kgl.GL_DEPTH_TEST\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableShape protected constructor(): Drawable {\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableShape {\n val instance = pool.acquire() ?: DrawableShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n // TODO shape batching\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (drawState.vertexBuffer?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n if (drawState.elementBuffer?.bindBuffer(dc) != true) return // element buffer unspecified or failed to bind\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Use the draw context's modelview projection matrix, transformed to shape local coordinates.\n if (drawState.depthOffset != 0.0) {\n mvpMatrix.copy(dc.projection).offsetProjectionDepth(drawState.depthOffset)\n mvpMatrix.multiplyByMatrix(dc.modelview)\n } else {\n mvpMatrix.copy(dc.modelviewProjection)\n }\n mvpMatrix.multiplyByTranslation(\n drawState.vertexOrigin.x,\n drawState.vertexOrigin.y,\n drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n\n // Disable triangle back face culling if requested.\n if (!drawState.enableCullFace) dc.gl.disable(GL_CULL_FACE)\n\n // Disable depth testing if requested.\n if (!drawState.enableDepthTest) dc.gl.disable(GL_DEPTH_TEST)\n\n // Disable depth writing if requested.\n if (!drawState.enableDepthWrite) dc.gl.depthMask(false)\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Use the shape's vertex point attribute and vertex texture coordinate attribute.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/)\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, drawState.vertexStride, 0 /*offset*/)\n\n // Draw the specified primitives.\n for (idx in 0 until drawState.primCount) {\n val prim = drawState.prims[idx]\n program.loadColor(prim.color)\n program.loadOpacity(prim.opacity)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n dc.gl.vertexAttribPointer(\n 1 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Restore the default WorldWind OpenGL state.\n if (!drawState.enableCullFace) dc.gl.enable(GL_CULL_FACE)\n if (!drawState.enableDepthTest) dc.gl.enable(GL_DEPTH_TEST)\n if (!drawState.enableDepthWrite) dc.gl.depthMask(true)\n dc.gl.lineWidth(1f)\n dc.gl.enable(GL_CULL_FACE)\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSightline protected constructor(): Drawable {\n val centerTransform = Matrix4()\n var range = 0f\n val visibleColor = Color(0f, 0f, 0f, 0f)\n val occludedColor = Color(0f, 0f, 0f, 0f)\n var program: SightlineProgram? = null\n private var pool: Pool? = null\n private val sightlineView = Matrix4()\n private val matrix = Matrix4()\n private val cubeMapProjection = Matrix4()\n private val cubeMapFace = arrayOf(\n Matrix4().setToRotation(0.0, 0.0, 1.0, NEG90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // positive X\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS90).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative X\n Matrix4().setToRotation(1.0, 0.0, 0.0, POS90), // positive Y\n Matrix4().setToRotation(0.0, 0.0, 1.0, POS180).multiplyByRotation(1.0, 0.0, 0.0, POS90), // negative Y\n /*Matrix4().setToRotation(1.0, 0.0, 0.0, POS180),*/ // positive Z, intentionally omitted as terrain is never visible when looking up\n Matrix4() // negative Z\n )\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSightline {\n val instance = pool.acquire() ?: DrawableSightline()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n visibleColor.set(0f, 0f, 0f, 0f)\n occludedColor.set(0f, 0f, 0f, 0f)\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the drawable's color.\n program.loadRange(range)\n program.loadColor(visibleColor, occludedColor)\n\n // Configure the cube map projection matrix to capture one face of the cube map as far as the sightline's range.\n cubeMapProjection.setToPerspectiveProjection(1, 1, POS90, 1.0, range.toDouble())\n\n // TODO accumulate only the visible terrain, which can be used in both passes\n // TODO give terrain a bounding box, test with a frustum set using depthviewProjection\n for (i in cubeMapFace.indices) {\n sightlineView.copy(centerTransform)\n sightlineView.multiplyByMatrix(cubeMapFace[i])\n sightlineView.invertOrthonormal()\n if (drawSceneDepth(dc)) drawSceneOcclusion(dc)\n }\n }\n\n protected open fun drawSceneDepth(dc: DrawContext): Boolean {\n val program = program ?: return false\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return false // framebuffer failed to bind\n\n // Clear the framebuffer.\n val depthTexture = framebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n dc.gl.viewport(0, 0, depthTexture.width, depthTexture.height)\n dc.gl.clear(GL_DEPTH_BUFFER_BIT)\n\n // Draw only depth values offset slightly away from the viewer.\n dc.gl.colorMask(r = false, g = false, b = false, a = false)\n dc.gl.enable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(4f, 4f)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Draw the terrain onto one face of the cube map, from the sightline's point of view.\n matrix.setToMultiply(cubeMapProjection, sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Restore the default World Wind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.colorMask(r = true, g = true, b = true, a = true)\n dc.gl.disable(GL_POLYGON_OFFSET_FILL)\n dc.gl.polygonOffset(0f, 0f)\n }\n return true\n }\n\n protected open fun drawSceneOcclusion(dc: DrawContext) {\n val program = program ?: return\n try {\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n val depthTexture = dc.scratchFramebuffer.getAttachedTexture(GL_DEPTH_ATTACHMENT)\n if (!depthTexture.bindTexture(dc)) return // framebuffer texture failed to bind\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n val terrainOrigin = terrain.vertexOrigin\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n matrix.copy(dc.modelviewProjection)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(matrix)\n\n // Map the terrain into one face of the cube map, from the sightline's point of view.\n matrix.copy(sightlineView)\n matrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadSightlineProjection(cubeMapProjection, matrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n } finally {\n // Unbind depth attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.layer.starfield.StarFieldProgram\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_ALIASED_POINT_SIZE_RANGE\nimport earth.worldwind.util.kgl.GL_FLOAT\nimport earth.worldwind.util.kgl.GL_POINTS\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableStarField protected constructor(): Drawable {\n val matrix = Matrix4()\n var julianDate = 0.0\n var minMagnitude = 0.0f\n var maxMagnitude = 0.0f\n var numStars = 0\n var isShowSun = false\n var sunSize = 0.0f\n var sunTexture: Texture? = null\n var starsPositionsBuffer: FloatBufferObject? = null\n var sunPositionsBuffer: FloatBufferObject? = null\n var program: StarFieldProgram? = null\n private var pool: Pool? = null\n\n companion object {\n var maxGlPointSize = 0f\n\n @JvmStatic\n fun obtain(pool: Pool): DrawableStarField {\n val instance = pool.acquire() ?: DrawableStarField()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n starsPositionsBuffer = null\n sunPositionsBuffer = null\n sunTexture = null\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n try {\n dc.gl.depthMask(false)\n drawStars(dc, program, starsPositionsBuffer)\n if (isShowSun) drawSun(dc, program, sunPositionsBuffer, sunTexture)\n } finally {\n dc.gl.depthMask(true)\n }\n }\n\n protected open fun drawStars(dc: DrawContext, program: StarFieldProgram, buffer: FloatBufferObject?) {\n if (buffer?.bindBuffer(dc) != true) return\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n // This subtraction does not work properly on the GPU due to precision loss. It must be done on the CPU.\n program.loadModelviewProjection(matrix)\n program.loadNumDays((julianDate - 2451545.0).toFloat())\n program.loadMagnitudeRange(minMagnitude, maxMagnitude)\n program.loadTextureEnabled(false)\n dc.gl.drawArrays(GL_POINTS, 0, numStars)\n }\n\n protected open fun drawSun(\n dc: DrawContext, program: StarFieldProgram, sunBuffer: FloatBufferObject?, sunTexture: Texture?\n ) {\n if (maxGlPointSize == 0f) maxGlPointSize = dc.gl.getParameterfv(GL_ALIASED_POINT_SIZE_RANGE)[1]\n\n if (sunSize > maxGlPointSize) {\n Logger.log(Logger.WARN, \"StarFieldLayer - sunSize is to big, max size allowed is: $maxGlPointSize\")\n }\n\n if (sunBuffer?.bindBuffer(dc) != true) return\n if (sunTexture?.bindTexture(dc) != true) return\n dc.gl.vertexAttribPointer(0, 4, GL_FLOAT, false, 0, 0)\n program.loadTextureEnabled(true)\n dc.gl.drawArrays(GL_POINTS, 0, 1)\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceColor protected constructor(): Drawable {\n val color = Color()\n var opacity = 1.0f\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceColor {\n val instance = pool.acquire() ?: DrawableSurfaceColor()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n program.loadOpacity(opacity)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceShape protected constructor(): Drawable {\n var offset = Globe.Offset.Center\n val sector = Sector()\n val drawState = DrawShapeState()\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val textureMvpMatrix = Matrix4()\n private val identityMatrix3 = Matrix3()\n private val color = Color()\n private var opacity = 1.0f\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceShape {\n val instance = pool.acquire() ?: DrawableSurfaceShape()\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n drawState.reset()\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = drawState.program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Make multi-texture unit 0 active.\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n\n // Accumulate shapes in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this shape.\n scratchList.add(this)\n\n // Add all shapes that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (next !is DrawableSurfaceShape) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated shapes on each drawable terrain.\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n // Draw the accumulated surface shapes to a texture representing the terrain's sector.\n if (drawShapesToTexture(dc, terrain) > 0) {\n // Draw the texture containing the rasterized shapes onto the terrain geometry.\n drawTextureToTerrain(dc, terrain)\n }\n }\n } finally {\n // Clear the accumulated shapes.\n scratchList.clear()\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1 /*vertexTexCoord*/) // only vertexPoint is enabled by default\n }\n }\n\n protected open fun drawShapesToTexture(dc: DrawContext, terrain: DrawableTerrain): Int {\n // Shapes have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n\n // The terrain's sector defines the geographic region in which to draw.\n val terrainSector = terrain.sector\n\n // Keep track of the number of shapes drawn into the texture.\n var shapeCount = 0\n val program = drawState.program ?: return 0\n try {\n val framebuffer = dc.scratchFramebuffer\n if (!framebuffer.bindFramebuffer(dc)) return 0 // framebuffer failed to bind\n\n // Clear the framebuffer and disable the depth test.\n val colorAttachment = framebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n dc.gl.viewport(0, 0, colorAttachment.width, colorAttachment.height)\n dc.gl.clear(GL_COLOR_BUFFER_BIT)\n dc.gl.disable(GL_DEPTH_TEST)\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Compute the tile common matrix that transforms geographic coordinates to texture fragments appropriate\n // for the terrain sector.\n // TODO capture this in a method on Matrix4\n textureMvpMatrix.setToIdentity()\n textureMvpMatrix.multiplyByTranslation(-1.0, -1.0, 0.0)\n textureMvpMatrix.multiplyByScale(\n 2.0 / terrainSector.deltaLongitude.inDegrees,\n 2.0 / terrainSector.deltaLatitude.inDegrees,\n 0.0\n )\n textureMvpMatrix.multiplyByTranslation(\n -terrainSector.minLongitude.inDegrees,\n -terrainSector.minLatitude.inDegrees,\n 0.0\n )\n for (element in scratchList) {\n // Get the shape.\n val shape = element as DrawableSurfaceShape\n if (shape.offset != terrain.offset || !shape.sector.intersectsOrNextTo(terrainSector)) continue\n if (shape.drawState.vertexBuffer?.bindBuffer(dc) != true) continue // vertex buffer unspecified or failed to bind\n if (shape.drawState.elementBuffer?.bindBuffer(dc) != true) continue // element buffer unspecified or failed to bind\n\n // Transform local shape coordinates to texture fragments appropriate for the terrain sector.\n mvpMatrix.copy(textureMvpMatrix)\n mvpMatrix.multiplyByTranslation(\n shape.drawState.vertexOrigin.x,\n shape.drawState.vertexOrigin.y,\n shape.drawState.vertexOrigin.z\n )\n program.loadModelviewProjection(mvpMatrix)\n\n // Use the shape's vertex point attribute.\n dc.gl.vertexAttribPointer(\n 0 /*vertexPoint*/, 3, GL_FLOAT, false, shape.drawState.vertexStride, 0\n )\n\n // Draw the specified primitives to the framebuffer texture.\n for (primIdx in 0 until shape.drawState.primCount) {\n val prim = shape.drawState.prims[primIdx]\n program.loadColor(prim.color)\n program.loadOpacity(prim.opacity)\n if (prim.texture?.bindTexture(dc) == true) {\n program.loadTexCoordMatrix(prim.texCoordMatrix)\n program.enableTexture(true)\n } else {\n program.enableTexture(false)\n }\n dc.gl.vertexAttribPointer(\n 1 /*vertexTexCoord*/,\n prim.texCoordAttrib.size,\n GL_FLOAT,\n false,\n shape.drawState.vertexStride,\n prim.texCoordAttrib.offset\n )\n dc.gl.lineWidth(prim.lineWidth)\n dc.gl.drawElements(prim.mode, prim.count, prim.type, prim.offset)\n }\n\n // Accumulate the number of shapes drawn into the texture.\n shapeCount++\n }\n } finally {\n // Restore the default WorldWind OpenGL state.\n dc.bindFramebuffer(KglFramebuffer.NONE)\n dc.gl.viewport(dc.viewport.x, dc.viewport.y, dc.viewport.width, dc.viewport.height)\n dc.gl.enable(GL_DEPTH_TEST)\n dc.gl.lineWidth(1f)\n }\n return shapeCount\n }\n\n protected open fun drawTextureToTerrain(dc: DrawContext, terrain: DrawableTerrain) {\n val program = drawState.program ?: return\n try {\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) return // terrain vertex attribute failed to bind\n if (!terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)) return // terrain vertex attribute failed to bind\n val colorAttachment = dc.scratchFramebuffer.getAttachedTexture(GL_COLOR_ATTACHMENT0)\n if (!colorAttachment.bindTexture(dc)) return // framebuffer texture failed to bind\n\n // Configure the program to draw texture fragments unmodified and aligned with the terrain.\n // TODO consolidate pickMode and enableTexture into a single textureMode\n // TODO it's confusing that pickMode must be disabled during surface shape render-to-texture\n program.enablePickMode(false)\n program.enableTexture(true)\n program.loadTexCoordMatrix(identityMatrix3)\n program.loadColor(color)\n program.loadOpacity(opacity)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n } finally {\n // Unbind color attachment texture to avoid feedback loop\n dc.bindTexture(KglTexture.NONE)\n }\n }\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableSurfaceTexture protected constructor(): Drawable {\n var offset = Globe.Offset.Center\n val textureSector = Sector()\n val terrainSector = Sector()\n val color = Color()\n var opacity = 1.0f\n val texCoordMatrix = Matrix3()\n var texture: Texture? = null\n var program: SurfaceTextureProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSurfaceTexture {\n val instance = pool.acquire() ?: DrawableSurfaceTexture()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(\n program: SurfaceTextureProgram?, textureSector: Sector, opacity: Float, texture: Texture,\n texCoordMatrix: Matrix3, offset: Globe.Offset, terrainSector: Sector = textureSector\n ) = apply {\n this.offset = offset\n this.textureSector.copy(textureSector)\n this.terrainSector.copy(terrainSector)\n this.color.set(1f, 1f, 1f, 1f)\n this.opacity = opacity\n this.texCoordMatrix.copy(texCoordMatrix)\n this.texture = texture\n this.program = program\n }\n\n override fun recycle() {\n texture = null\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Accumulate surface textures in the draw context's scratch list.\n // TODO accumulate in a geospatial quadtree\n val scratchList = dc.scratchList\n try {\n // Add this surface texture.\n scratchList.add(this)\n\n // Add all surface textures that are contiguous in the drawable queue.\n while (true) {\n val next = dc.peekDrawable() ?: break\n if (!canBatchWith(next)) break // check if the drawable at the front of the queue can be batched\n dc.pollDrawable() // take it off the queue\n scratchList.add(next)\n }\n\n // Draw the accumulated surface textures.\n drawSurfaceTextures(dc)\n } finally {\n // Clear the accumulated surface textures.\n scratchList.clear()\n }\n }\n\n protected open fun drawSurfaceTextures(dc: DrawContext) {\n val program = program ?: return // program unspecified\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Enable the program to display surface textures from multi-texture unit 0.\n program.enableTexture(true)\n dc.activeTextureUnit(GL_TEXTURE0)\n\n // Set up to use vertex tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Surface textures have been accumulated in the draw context's scratch list.\n val scratchList = dc.scratchList.toTypedArray()\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Get the terrain's attributes, and keep a flag to ensure we apply the terrain's attributes at most once.\n val terrainSector = terrain.sector\n val terrainOrigin = terrain.vertexOrigin\n var usingTerrainAttrs = false\n for (element in scratchList) {\n // Get the surface texture and its sector.\n val texture = element as DrawableSurfaceTexture\n val textureSector = texture.textureSector\n if (texture.offset != terrain.offset || !texture.terrainSector.intersects(terrainSector)) continue\n if (!texture.bindTexture(dc)) continue // texture failed to bind\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!usingTerrainAttrs &&\n terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) &&\n terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) {\n // Suppress subsequent tile state application until the next terrain.\n usingTerrainAttrs = true\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n program.mvpMatrix.copy(dc.modelviewProjection)\n program.mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection()\n }\n if (!usingTerrainAttrs) continue // terrain vertex attribute failed to bind\n\n // Use tex coord matrices that register the surface texture correctly and mask terrain fragments that\n // fall outside the surface texture's sector.\n program.texCoordMatrix[0].copy(texture.texCoordMatrix)\n program.texCoordMatrix[0].multiplyByTileTransform(terrainSector, textureSector)\n program.texCoordMatrix[1].setToTileTransform(terrainSector, textureSector)\n program.loadTexCoordMatrix()\n\n // Use the surface texture's RGBA color.\n program.loadColor(texture.color)\n\n // Use the surface texture's opacity.\n program.loadOpacity(texture.opacity)\n\n // Draw the terrain as triangles.\n terrain.drawTriangles(dc)\n }\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.disableVertexAttribArray(1)\n }\n\n protected open fun canBatchWith(that: Drawable) = that is DrawableSurfaceTexture && program === that.program\n\n private fun bindTexture(dc: DrawContext) = texture?.bindTexture(dc) == true\n}","package earth.worldwind.draw\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Pool\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableTessellation protected constructor(): Drawable {\n val color = Color()\n var opacity = 1.0f\n var program: BasicShaderProgram? = null\n private var pool: Pool? = null\n private val mvpMatrix = Matrix4()\n private val offsetMvpMatrix = Matrix4()\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableTessellation {\n val instance = pool.acquire() ?: DrawableTessellation()\n instance.pool = pool\n return instance\n }\n }\n\n fun set(program: BasicShaderProgram, color: Color, opacity: Float) = apply {\n this.program = program\n this.color.copy(color)\n this.opacity = opacity\n }\n\n override fun recycle() {\n program = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the draw context's pick mode.\n program.enablePickMode(dc.isPickMode)\n\n // Configure the program to draw the specified color.\n program.enableTexture(false)\n program.loadColor(color)\n program.loadOpacity(opacity)\n\n // Suppress writes to the OpenGL depth buffer.\n dc.gl.depthMask(false)\n\n // Compute the portion of the modelview projection matrix that remains constant for each tile.\n offsetMvpMatrix.copy(dc.projection)\n offsetMvpMatrix.offsetProjectionDepth(-1.0e-3) // offset this layer's depth values toward the eye\n offsetMvpMatrix.multiplyByMatrix(dc.modelview)\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/)) continue // vertex buffer failed to bind\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n val terrainOrigin = terrain.vertexOrigin\n mvpMatrix.copy(offsetMvpMatrix)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Draw the terrain as lines.\n terrain.drawLines(dc)\n }\n\n // Restore default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObject.Companion.fromTerrain\nimport earth.worldwind.PickedObject.Companion.identifierToUniqueColor\nimport earth.worldwind.PickedObject.Companion.uniqueColorToIdentifier\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.DrawableSurfaceColor\nimport earth.worldwind.draw.DrawableSurfaceColor.Companion.obtain\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.Terrain\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_COLOR_BUFFER_BIT\nimport earth.worldwind.util.kgl.GL_DEPTH_BUFFER_BIT\nimport kotlin.math.roundToInt\n\nopen class BasicFrameController: FrameController {\n override val lastTerrains = mutableMapOf()\n private val pickColor = Color()\n private val pickPoint = Vec3()\n private val pickPos = Position()\n private val boundingBox = BoundingBox()\n private val fullSphere = Sector().setFullSphere()\n private val scratchPoint = Vec3()\n private val scratchRay = Line()\n\n override fun renderFrame(rc: RenderContext) {\n if (!rc.isPickMode) lastTerrains.clear()\n if (rc.globe.is2D && rc.globe.isContinuous) {\n // Tessellate and render all visible globe offsets of 2D continuous terrain\n renderGlobeOffset(rc, Globe.Offset.Center)\n renderGlobeOffset(rc, Globe.Offset.Right)\n renderGlobeOffset(rc, Globe.Offset.Left)\n // Reset globe offset for correct projection calculations after frame rendered\n rc.globe.offset = Globe.Offset.Center\n } else {\n // Tessellate and render single 3D terrain\n renderGlobeOffset(rc, Globe.Offset.Center)\n }\n rc.sortDrawables()\n }\n\n protected open fun renderGlobeOffset(rc: RenderContext, globeOffset: Globe.Offset) {\n rc.globe.offset = globeOffset\n\n // Check if 2D globe offset intersects current frustum\n if (rc.globe.is2D && !boundingBox.setToSector(fullSphere, rc.globe, 0f, 0f).intersectsFrustum(rc.frustum)) return\n\n // Prepare terrain for specified globe offset\n rc.terrain = rc.terrainTessellator.tessellate(rc)\n\n // Compute viewing distance and pixel size based on available terrain\n if (!rc.globe.is2D) adjustViewingParameters(rc)\n\n // Render the terrain picked object or remember the last terrain for future intersect operations\n if (rc.isPickMode) renderTerrainPickedObject(rc) else lastTerrains[globeOffset] = rc.terrain\n\n // Render all layers on specified globe offset\n rc.layers.render(rc)\n }\n\n protected open fun adjustViewingParameters(rc: RenderContext) {\n scratchRay.origin.copy(rc.cameraPoint)\n rc.modelview.extractForwardVector(scratchRay.direction)\n rc.viewingDistance = if (rc.terrain.intersect(scratchRay, scratchPoint)) {\n rc.lookAtPosition = rc.globe.cartesianToGeographic(scratchPoint.x, scratchPoint.y, scratchPoint.z, Position())\n scratchPoint.distanceTo(rc.cameraPoint)\n } else rc.horizonDistance\n rc.pixelSize = rc.pixelSizeAtDistance(rc.viewingDistance)\n }\n\n protected open fun renderTerrainPickedObject(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to pick\n\n // Acquire a unique picked object ID for terrain.\n val pickedObjectId = rc.nextPickedObjectId()\n\n // Enqueue a drawable for processing on the OpenGL thread that displays terrain in the unique pick color.\n val pool = rc.getDrawablePool()\n val drawable = obtain(pool)\n identifierToUniqueColor(pickedObjectId, drawable.color)\n drawable.opacity = 1.0f // Just to be sure to reset opacity\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n rc.offerSurfaceDrawable(drawable, Double.NEGATIVE_INFINITY)\n\n // If the pick ray intersects the terrain, enqueue a picked object that associates the terrain drawable with its\n // picked object ID and the intersection position.\n val pickRay = rc.pickRay\n if (pickRay != null && rc.terrain.intersect(pickRay, pickPoint)) {\n rc.globe.cartesianToGeographic(pickPoint.x, pickPoint.y, pickPoint.z, pickPos)\n rc.offerPickedObject(fromTerrain(pickedObjectId, pickPos))\n }\n }\n\n override fun drawFrame(dc: DrawContext) {\n clearFrame(dc)\n drawDrawables(dc)\n if (dc.isPickMode) resolvePick(dc)\n }\n\n protected open fun clearFrame(dc: DrawContext) {\n dc.gl.clear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT)\n }\n\n protected open fun drawDrawables(dc: DrawContext) {\n dc.rewindDrawables()\n while (true) {\n val next = dc.pollDrawable() ?: break\n try {\n next.draw(dc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"BasicFrameController\", \"drawDrawables\",\n \"Exception while drawing '$next'\", e\n )\n // Keep going. Draw the remaining drawables.\n }\n }\n }\n\n protected open fun resolvePick(dc: DrawContext) {\n val pickedObjects = dc.pickedObjects ?: return\n if (pickedObjects.count == 0) return // no eligible objects; avoid expensive calls to glReadPixels\n val pickViewport = dc.pickViewport ?: return\n val pickPointOnly = dc.pickPoint != null && pickViewport.width <= 3 && pickViewport.height <= 3\n var objectFound = false\n\n dc.pickPoint?.let { pickPoint ->\n // Read the fragment color at the pick point.\n dc.readPixelColor(pickPoint.x.roundToInt(), pickPoint.y.roundToInt(), pickColor)\n\n // Convert the fragment color to a picked object ID. It returns zero if the color cannot indicate a picked\n // object ID, in which case no objects have been drawn at the pick point.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject != null) {\n if (!topObject.isTerrain) objectFound = true // Non-terrain object found in pick point\n if (pickPointOnly || objectFound) {\n topObject.markOnTop()\n // Remove picked objects except top and terrain in case of object found or point only mode\n // Using clearPickedObjects and two offerPickedObject is faster than keepTopAndTerrainObjects\n val terrainObject = pickedObjects.terrainPickedObject\n pickedObjects.clearPickedObjects()\n pickedObjects.offerPickedObject(topObject)\n // handles null objects and duplicate objects\n if (terrainObject != null) pickedObjects.offerPickedObject(terrainObject)\n }\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no eligible objects drawn at the pick point\n } else if (pickPointOnly) pickedObjects.clearPickedObjects() // no objects drawn at the pick point\n }\n\n if (!pickPointOnly && !objectFound) {\n // Read the unique fragment colors in the pick rectangle.\n dc.readPixelColors(pickViewport.x, pickViewport.y, pickViewport.width, pickViewport.height).forEach { pickColor ->\n // Convert the fragment color to a picked object ID. This returns zero if the color cannot indicate a picked\n // object ID.\n val topObjectId = uniqueColorToIdentifier(pickColor)\n if (topObjectId != 0) {\n val topObject = pickedObjects.pickedObjectWithId(topObjectId)\n if (topObject?.isTerrain == false) topObject.markOnTop()\n }\n }\n }\n }\n}","package earth.worldwind.frame\n\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.util.Pool\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.jvm.JvmStatic\n\nopen class Frame {\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n// val infiniteProjection = Matrix4()\n val drawableQueue = DrawableQueue()\n val drawableTerrain = DrawableQueue()\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): Frame {\n val instance = pool.acquire() ?: Frame() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n open fun recycle() {\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n// infiniteProjection.setToIdentity()\n drawableQueue.clearDrawables()\n drawableTerrain.clearDrawables()\n pickedObjects?.let { pickDeferred?.complete(it) } // Complete deferred pick if available\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pool?.release(this) // return this instance to the pool\n pool = null\n }\n}","package earth.worldwind.geom\n\n/**\n * Altitude mode indicates how WorldWind interprets a position's altitude component.\n * Accepted values are [ABSOLUTE], [CLAMP_TO_GROUND] and [RELATIVE_TO_GROUND].\n */\nenum class AltitudeMode {\n /**\n * Indicating an altitude relative to the globe's ellipsoid. Ignores the elevation of\n * the terrain directly beneath the position's latitude and longitude.\n */\n ABSOLUTE,\n /**\n * Indicating an altitude on the terrain. Ignores a position's specified altitude, and\n * always places the position on the terrain.\n */\n CLAMP_TO_GROUND,\n /**\n * Indicating an altitude relative to the terrain. The altitude indicates height above\n * the terrain directly beneath the position's latitude and longitude.\n */\n RELATIVE_TO_GROUND;\n}","package earth.worldwind.geom\n\nimport earth.worldwind.globe.Globe\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * Represents a bounding box in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingBox {\n /**\n * The box's center point.\n */\n internal val center = Vec3(0.0, 0.0, 0.0)\n /**\n * The center point of the box's bottom. (The origin of the R axis.)\n */\n protected val bottomCenter = Vec3(-0.5, 0.0, 0.0)\n /**\n * The center point of the box's top. (The end of the R axis.)\n */\n protected val topCenter = Vec3(0.5, 0.0, 0.0)\n /**\n * The box's R axis, its longest axis.\n */\n protected val r = Vec3(1.0, 0.0, 0.0)\n /**\n * The box's S axis, its mid-length axis.\n */\n protected val s = Vec3(0.0, 1.0, 0.0)\n /**\n * The box's T axis, its shortest axis.\n */\n protected val t = Vec3(0.0, 0.0, 1.0)\n /**\n * The box's radius. (The half-length of its diagonal.)\n */\n protected var radius = sqrt(3.0)\n\n private val endPoint1 = Vec3()\n private val endPoint2 = Vec3()\n private val scratchHeights = FloatArray(NUM_LAT * NUM_LON)\n private val scratchPoints = FloatArray(NUM_LAT * NUM_LON * 3)\n private var coherentPlaneIdx = -1\n\n /**\n * Indicates whether this bounding box is a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return true if this bounding box is a unit box, otherwise false\n */\n val isUnitBox get() = center.x == 0.0 && center.y == 0.0 && center.z == 0.0 && radius == sqrt(3.0)\n\n /**\n * Sets this bounding box to a unit box centered at the Cartesian origin (0, 0, 0).\n *\n * @return This bounding box set to a unit box\n */\n fun setToUnitBox() = apply {\n center.set(0.0, 0.0, 0.0)\n bottomCenter.set(-0.5, 0.0, 0.0)\n topCenter.set(0.5, 0.0, 0.0)\n\n r.set(1.0, 0.0, 0.0)\n s.set(0.0, 1.0, 0.0)\n t.set(0.0, 0.0, 1.0)\n\n radius = sqrt(3.0)\n }\n\n /**\n * Sets this bounding box such that it minimally encloses a specified array of points.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return This bounding box set to contain the specified array of points.\n */\n fun setToPoints(array: FloatArray, count: Int, stride: Int) = apply {\n // Compute this box's axes by performing a principal component analysis on the array of points.\n val matrix = Matrix4()\n matrix.setToCovarianceOfPoints(array, count, stride)\n matrix.extractEigenvectors(r, s, t)\n r.normalize()\n s.normalize()\n t.normalize()\n\n // Find the extremes along each axis.\n var rMin = Double.POSITIVE_INFINITY\n var rMax = Double.NEGATIVE_INFINITY\n var sMin = Double.POSITIVE_INFINITY\n var sMax = Double.NEGATIVE_INFINITY\n var tMin = Double.POSITIVE_INFINITY\n var tMax = Double.NEGATIVE_INFINITY\n\n val p = Vec3()\n for (idx in 0 until count step stride) {\n p.set(array[idx].toDouble(), array[idx + 1].toDouble(), array[idx + 2].toDouble())\n\n val pdr = p.dot(r)\n if (rMin > pdr) rMin = pdr\n if (rMax < pdr) rMax = pdr\n\n val pds = p.dot(s)\n if (sMin > pds) sMin = pds\n if (sMax < pds) sMax = pds\n\n val pdt = p.dot(t)\n if (tMin > pdt) tMin = pdt\n if (tMax < pdt) tMax = pdt\n }\n\n // Ensure that the extremes along each axis have nonzero separation.\n if (rMax == rMin) rMax = rMin + 1\n if (sMax == sMin) sMax = sMin + 1\n if (tMax == tMin) tMax = tMin + 1\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rMax - rMin\n val sLen = sMax - sMin\n val tLen = tMax - tMin\n\n val rSum = rMax + rMin\n val sSum = sMax + sMin\n val tSum = tMax + tMin\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Sets this bounding box such that it contains a specified sector on a specified globe with min and max terrain\n * height.\n *
\n * To create a bounding box that contains the sector at mean sea level, specify zero for the minimum and maximum\n * height. To create a bounding box that contains the terrain surface in this sector, specify the actual minimum and\n * maximum height values associated with the terrain in the sector, multiplied by the scene's vertical\n * exaggeration.\n *
\n *\n * @param sector the sector for which to create the bounding box\n * @param globe the globe associated with the sector\n * @param minHeight the minimum terrain height within the sector\n * @param maxHeight the maximum terrain height within the sector\n *\n * @return this bounding box set to contain the specified sector\n */\n fun setToSector(sector: Sector, globe: Globe, minHeight: Float, maxHeight: Float) = apply {\n // Compute the cartesian points for a 3x3 geographic grid. This grid captures enough detail to bound the\n // sector. Use minimum elevation at the corners and max elevation everywhere else.\n val heights = scratchHeights\n heights.fill(maxHeight)\n heights[0] = minHeight\n heights[2] = minHeight\n heights[6] = minHeight\n heights[8] = minHeight\n val points = scratchPoints\n globe.geographicToCartesianGrid(sector, NUM_LAT, NUM_LON, heights, 1.0f, null, points)\n\n // Compute the local coordinate axes. Since we know this box is bounding a geographic sector, we use the\n // local coordinate axes at its centroid as the box axes. Using these axes results in a box that has +-10%\n // the volume of a box with axes derived from a principal component analysis, but is faster to compute.\n val centroidLat = sector.centroidLatitude\n val centroidLon = sector.centroidLongitude\n val matrix = globe.geographicToCartesianTransform(centroidLat, centroidLon, 0.0, Matrix4())\n val m = matrix.m\n r.set(m[0], m[4], m[8])\n s.set(m[1], m[5], m[9])\n t.set(m[2], m[6], m[10])\n\n // Find the extremes along each axis.\n val rExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val sExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n val tExtremes = doubleArrayOf(Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY)\n\n val p = Vec3()\n for (idx in points.indices step 3) {\n p.set(points[idx].toDouble(), points[idx + 1].toDouble(), points[idx + 2].toDouble())\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, p)\n }\n\n // If the sector encompasses more than one hemisphere, the 3x3 grid does not capture enough detail to bound\n // the sector. The antipodal points along the parallel through the sector's centroid represent its extremes\n // in longitude. Incorporate those antipodal points into the extremes along each axis.\n if (sector.deltaLongitude.inDegrees > 180.0) {\n val altitude = maxHeight.toDouble()\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.plusDegrees(90.0), altitude, endPoint1)\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude.minusDegrees(90.0), altitude, endPoint2)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint1)\n adjustExtremes(r, rExtremes, s, sExtremes, t, tExtremes, endPoint2)\n }\n\n // Sort the axes from most prominent to least prominent. The frustum intersection methods assume that the axes\n // are defined in this way.\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n if (sExtremes[1] - sExtremes[0] < tExtremes[1] - tExtremes[0]) swapAxes(s, sExtremes, t, tExtremes)\n if (rExtremes[1] - rExtremes[0] < sExtremes[1] - sExtremes[0]) swapAxes(r, rExtremes, s, sExtremes)\n\n // Compute the box properties from its unit axes and the extremes along each axis.\n val rLen = rExtremes[1] - rExtremes[0]\n val sLen = sExtremes[1] - sExtremes[0]\n val tLen = tExtremes[1] - tExtremes[0]\n\n val rSum = rExtremes[1] + rExtremes[0]\n val sSum = sExtremes[1] + sExtremes[0]\n val tSum = tExtremes[1] + tExtremes[0]\n\n val cx = 0.5 * (r.x * rSum + s.x * sSum + t.x * tSum)\n val cy = 0.5 * (r.y * rSum + s.y * sSum + t.y * tSum)\n val cz = 0.5 * (r.z * rSum + s.z * sSum + t.z * tSum)\n\n val rx2 = 0.5 * r.x * rLen\n val ry2 = 0.5 * r.y * rLen\n val rz2 = 0.5 * r.z * rLen\n\n center.set(cx, cy, cz)\n topCenter.set(cx + rx2, cy + ry2, cz + rz2)\n bottomCenter.set(cx - rx2, cy - ry2, cz - rz2)\n\n r.multiply(rLen)\n s.multiply(sLen)\n t.multiply(tLen)\n\n radius = 0.5 * sqrt(rLen * rLen + sLen * sLen + tLen * tLen)\n }\n\n /**\n * Translates this bounding box by specified components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this bounding box translated by the specified components\n */\n fun translate(x: Double, y: Double, z: Double) = apply {\n center.x += x\n center.y += y\n center.z += z\n\n bottomCenter.x += x\n bottomCenter.y += y\n bottomCenter.z += z\n\n topCenter.x += x\n topCenter.y += y\n topCenter.z += z\n }\n\n fun distanceTo(point: Vec3): Double {\n var minDist2 = Double.POSITIVE_INFINITY\n\n // Start with distance to the center of the box.\n var dist2 = center.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the R axis.\n dist2 = bottomCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the R axis.\n dist2 = topCenter.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the bottom of the S axis.\n endPoint1.x = center.x - 0.5 * s.x\n endPoint1.y = center.y - 0.5 * s.y\n endPoint1.z = center.z - 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n\n // Test distance to the top of the S axis.\n endPoint1.x = center.x + 0.5 * s.x\n endPoint1.y = center.y + 0.5 * s.y\n endPoint1.z = center.z + 0.5 * s.z\n dist2 = endPoint1.distanceToSquared(point)\n if (minDist2 > dist2) minDist2 = dist2\n return sqrt(minDist2)\n }\n\n /**\n * Indicates whether this bounding box intersects a specified frustum.\n *\n * @param frustum The frustum of interest.\n *\n * @return true if the specified frustum intersects this bounding box, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n endPoint1.copy(bottomCenter)\n endPoint2.copy(topCenter)\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { intersectsAt(it) >= 0 } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || intersectsAt(plane) >= 0).also { if (!it) coherentPlaneIdx = idx }\n }\n }\n\n private fun intersectsAt(plane: Plane): Double {\n val n = plane.normal\n val effectiveRadius = 0.5 * (abs(s.dot(n)) + abs(t.dot(n)))\n\n // Test the distance from the first end-point.\n val dq1 = plane.dot(endPoint1)\n val bq1 = dq1 <= -effectiveRadius\n\n // Test the distance from the second end-point.\n val dq2 = plane.dot(endPoint2)\n val bq2 = dq2 <= -effectiveRadius\n if (bq1 && bq2) return -1.0 // endpoints more distant from plane than effective radius; box is on neg. side of plane\n if (bq1 == bq2) return 0.0 // endpoints less distant from plane than effective radius; can't draw any conclusions\n\n // Compute and return the endpoints of the box on the positive side of the plane\n val dot = n.x * (endPoint1.x - endPoint2.x) + n.y * (endPoint1.y - endPoint2.y) + n.z * (endPoint1.z - endPoint2.z)\n val t = (effectiveRadius + dq1) / dot\n\n // Truncate the line to only that in the positive half-space, e.g., inside the frustum.\n val x = (endPoint2.x - endPoint1.x) * t + endPoint1.x\n val y = (endPoint2.y - endPoint1.y) * t + endPoint1.y\n val z = (endPoint2.z - endPoint1.z) * t + endPoint1.z\n if (bq1) endPoint1.set(x, y, z) else endPoint2.set(x, y, z)\n return t\n }\n\n override fun toString() = \"BoundingBox(center=$center, bottomCenter=$bottomCenter, topCenter=$topCenter, r=$r, s=$s, t=$t, radius=$radius)\"\n\n companion object {\n private const val NUM_LAT = 3\n private const val NUM_LON = 3\n\n private fun adjustExtremes(\n r: Vec3, rExtremes: DoubleArray, s: Vec3, sExtremes: DoubleArray, t: Vec3, tExtremes: DoubleArray, p: Vec3\n ) {\n val pdr = p.dot(r)\n if (rExtremes[0] > pdr) rExtremes[0] = pdr\n if (rExtremes[1] < pdr) rExtremes[1] = pdr\n\n val pds = p.dot(s)\n if (sExtremes[0] > pds) sExtremes[0] = pds\n if (sExtremes[1] < pds) sExtremes[1] = pds\n\n val pdt = p.dot(t)\n if (tExtremes[0] > pdt) tExtremes[0] = pdt\n if (tExtremes[1] < pdt) tExtremes[1] = pdt\n }\n\n private fun swapAxes(a: Vec3, aExtremes: DoubleArray, b: Vec3, bExtremes: DoubleArray) {\n a.swap(b)\n\n var tmp = aExtremes[0]\n aExtremes[0] = bExtremes[0]\n bExtremes[0] = tmp\n\n tmp = aExtremes[1]\n aExtremes[1] = bExtremes[1]\n bExtremes[1] = tmp\n }\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a bounding sphere in Cartesian coordinates. Typically used as a bounding volume.\n */\nopen class BoundingSphere {\n /**\n * The sphere's center point.\n */\n val center = Vec3()\n /**\n * The sphere's radius.\n */\n var radius = 1.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"BoundingSphere\", \"setRadius\", \"invalidRadius\")\n }\n field = value\n }\n private var coherentPlaneIdx = -1\n\n /**\n * Sets this bounding sphere to the specified center point and radius.\n *\n * @param center the new center point\n * @param radius the new radius\n *\n * @return This bounding sphere with its center point and radius set to the specified values\n */\n fun set(center: Vec3, radius: Double) = apply {\n this.center.copy(center)\n this.radius = radius\n }\n\n /**\n * Indicates whether this bounding sphere intersects a specified frustum.\n *\n * @param frustum the frustum of interest\n *\n * @return true if the specified frustum intersects this bounding sphere, otherwise false.\n */\n fun intersectsFrustum(frustum: Frustum): Boolean {\n // See if the extent's bounding sphere is within or intersects the frustum. The dot product of the extent's\n // center point with each plane's vector provides a distance to each plane. If this distance is less than\n // -radius, the extent is completely clipped by that plane and therefore does not intersect the space enclosed\n // by this Frustum.\n val nr = -radius\n // There is a high probability that the node is outside the same coherent plane as last frame.\n // Start testing against that plane hoping for fast rejection.\n val coherentPlane = if (coherentPlaneIdx >= 0) frustum.planes[coherentPlaneIdx] else null\n var idx = -1\n return coherentPlane?.let { it.distanceToPoint(center) > nr } != false && frustum.planes.all { plane ->\n (++idx == coherentPlaneIdx || plane.distanceToPoint(center) > nr).also { if (!it) coherentPlaneIdx = idx }\n }\n\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is BoundingSphere) return false\n return center == other.center && radius == other.radius\n }\n\n override fun hashCode(): Int {\n var result = center.hashCode()\n result = 31 * result + radius.hashCode()\n return result\n }\n\n override fun toString() = \"BoundingSphere(center=$center, radius=$radius)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.AltitudeMode.ABSOLUTE\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class Camera {\n val position = Position()\n var altitudeMode = ABSOLUTE\n var heading = ZERO\n var tilt = ZERO\n var roll = ZERO\n var fieldOfView = 45.0.degrees\n set(value) {\n require(value.inDegrees > 0.0 && value.inDegrees < 180.0) {\n logMessage(ERROR, \"Camera\", \"setFieldOfView\", \"invalidFieldOfView\")\n }\n field = value\n }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle, fieldOfView: Angle\n ) = set(latitude, longitude, altitude, altitudeMode, heading, tilt, roll).apply { this.fieldOfView = fieldOfView }\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(camera: Camera) = set(\n camera.position.latitude,\n camera.position.longitude,\n camera.position.altitude,\n camera.altitudeMode,\n camera.heading,\n camera.tilt,\n camera.roll,\n camera.fieldOfView\n )\n\n override fun toString() = \"Camera(position=$position, altitudeMode=$altitudeMode, heading=$heading, tilt=$tilt, roll=$roll, fieldOfView=$fieldOfView)\"\n}","package earth.worldwind.geom\n\nimport kotlin.jvm.JvmStatic\n\n/**\n * Oblate ellipsoid with semi-major axis and inverse flattening.\n */\ndata class Ellipsoid(\n /**\n * One half of the ellipsoid's major axis length in meters, which runs through the center to opposite points on the\n * equator.\n */\n val semiMajorAxis: Double,\n /**\n * Measure of the ellipsoid's compression. Indicates how much the ellipsoid's semi-minor axis is compressed relative\n * to the semi-major axis. Expressed as `1/f`, where `f = (a - b) / a`, given the semi-major axis `a` and the semi-minor axis `b`.\n */\n val inverseFlattening: Double\n) {\n /**\n * Computes this ellipsoid's semi-minor length axis in meters. The semi-minor axis is one half of the ellipsoid's\n * minor axis, which runs through the center to opposite points on the poles.\n */\n val semiMinorAxis: Double get() {\n val f = 1 / inverseFlattening\n return semiMajorAxis * (1 - f)\n }\n /**\n * Computes this ellipsoid's eccentricity squared. The returned value is equivalent to `2*f - f*f`,\n * where `f` is this ellipsoid's flattening.\n */\n val eccentricitySquared: Double get() {\n val f = 1 / inverseFlattening\n return 2 * f - f * f\n }\n\n companion object {\n /**\n * WGS 84 reference ellipsoid for Earth. The ellipsoid's semi-major axis and inverse flattening factor are\n * configured according to the WGS 84 reference system (aka WGS 1984, EPSG:4326). WGS 84 reference values taken from\n * [here](http://earth-info.nga.mil/GandG/publications/NGA_STND_0036_1_0_0_WGS84/NGA.STND.0036_1.0.0_WGS84.pdf).\n */\n @JvmStatic val WGS84 = Ellipsoid(6378137.0, 298.257223563)\n /**\n * Krasovsky 1940 reference ellipsoid for Earth.\n */\n @JvmStatic val Krasovsky = Ellipsoid(6378245.0, 298.3)\n }\n}","package earth.worldwind.geom\n\n/**\n * Represents a six-sided view frustum in Cartesian coordinates with a corresponding viewport in screen coordinates.\n */\nopen class Frustum {\n internal val left = Plane(1.0, 0.0, 0.0, 1.0)\n internal val right = Plane(-1.0, 0.0, 0.0, 1.0)\n internal val bottom = Plane(0.0, 1.0, 0.0, 1.0)\n internal val top = Plane(0.0, -1.0, 0.0, 1.0)\n internal val near = Plane(0.0, 0.0, -1.0, 1.0)\n internal val far = Plane(0.0, 0.0, 1.0, 1.0)\n internal val viewport = Viewport(0, 0, 1, 1)\n internal val planes = arrayOf(near, far, left, right, top, bottom)\n private val scratchMatrix = Matrix4()\n\n /**\n * Constructs a new unit frustum with each of its planes 1 meter from the center and a viewport with width and\n * height both 1.\n */\n constructor()\n\n /**\n * Constructs a frustum from planes.\n *\n * @param left the frustum's left plane\n * @param right the frustum's right plane\n * @param bottom the frustum's bottom plane\n * @param top the frustum's top plane\n * @param near the frustum's near plane\n * @param far the frustum's far plane\n * @param viewport the frustum's viewport\n */\n constructor(left: Plane, right: Plane, bottom: Plane, top: Plane, near: Plane, far: Plane, viewport: Viewport): this() {\n this.left.copy(left)\n this.right.copy(right)\n this.bottom.copy(bottom)\n this.top.copy(top)\n this.near.copy(near)\n this.far.copy(far)\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to a unit frustum with each of its planes 1 meter from the center a viewport with width and\n * height both 1.\n *\n * @return this frustum, set to a unit frustum\n */\n fun setToUnitFrustum() = apply {\n left.set(1.0, 0.0, 0.0, 1.0)\n right.set(-1.0, 0.0, 0.0, 1.0)\n bottom.set(0.0, 1.0, 0.0, 1.0)\n top.set(0.0, -1.0, 0.0, 1.0)\n near.set(0.0, 0.0, -1.0, 1.0)\n far.set(0.0, 0.0, 1.0, 1.0)\n viewport.set(0, 0, 1, 1)\n }\n\n /**\n * Sets this frustum to one appropriate for a modelview-projection matrix. A modelview-projection matrix's view\n * frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport) = apply {\n // Compute the transpose of the modelview matrix.\n scratchMatrix.transposeMatrix(modelview)\n\n // Get the components of the projection matrix.\n val m = projection.m\n\n // Left Plane = row 4 + row 1:\n var x = m[12] + m[0]\n var y = m[13] + m[1]\n var z = m[14] + m[2]\n var w = m[15] + m[3]\n left.set(x, y, z, w) // normalizes the plane's coordinates\n left.transformByMatrix(scratchMatrix)\n\n // Right Plane = row 4 - row 1:\n x = m[12] - m[0]\n y = m[13] - m[1]\n z = m[14] - m[2]\n w = m[15] - m[3]\n right.set(x, y, z, w) // normalizes the plane's coordinates\n right.transformByMatrix(scratchMatrix)\n\n // Bottom Plane = row 4 + row 2:\n x = m[12] + m[4]\n y = m[13] + m[5]\n z = m[14] + m[6]\n w = m[15] + m[7]\n bottom.set(x, y, z, w) // normalizes the plane's coordinates\n bottom.transformByMatrix(scratchMatrix)\n\n // Top Plane = row 4 - row 2:\n x = m[12] - m[4]\n y = m[13] - m[5]\n z = m[14] - m[6]\n w = m[15] - m[7]\n top.set(x, y, z, w) // normalizes the plane's coordinates\n top.transformByMatrix(scratchMatrix)\n\n // Near Plane = row 4 + row 3:\n x = m[12] + m[8]\n y = m[13] + m[9]\n z = m[14] + m[10]\n w = m[15] + m[11]\n near.set(x, y, z, w) // normalizes the plane's coordinates\n near.transformByMatrix(scratchMatrix)\n\n // Far Plane = row 4 - row 3:\n x = m[12] - m[8]\n y = m[13] - m[9]\n z = m[14] - m[10]\n w = m[15] - m[11]\n far.set(x, y, z, w) // normalizes the plane's coordinates\n far.transformByMatrix(scratchMatrix)\n\n // Copy the specified viewport.\n this.viewport.copy(viewport)\n }\n\n /**\n * Sets this frustum to one appropriate for a subset of a modelview-projection matrix. A modelview-projection\n * matrix's view frustum is a Cartesian volume that contains everything visible in a scene displayed using that\n * modelview-projection matrix. The subset is defined by the region within the original viewport that the frustum\n * contains.\n *
\n * This method assumes that the specified matrices represents a projection matrix and a modelview matrix\n * respectively. If this is not the case the results are undefined.\n *\n * @param projection the projection matrix to extract the frustum from\n * @param modelview the modelview matrix defining the frustum's position and orientation in Cartesian coordinates\n * @param viewport the screen coordinate viewport corresponding to the projection matrix\n * @param subViewport the screen coordinate region the frustum should contain\n *\n * @return this frustum, with its planes set to the modelview-projection matrix's view frustum, in Cartesian\n * coordinates\n */\n fun setToModelviewProjection(projection: Matrix4, modelview: Matrix4, viewport: Viewport, subViewport: Viewport) = apply {\n // Compute the sub-viewport's four edges in screen coordinates.\n val left = subViewport.x.toDouble()\n val right = (subViewport.x + subViewport.width).toDouble()\n val bottom = subViewport.y.toDouble()\n val top = (subViewport.y + subViewport.height).toDouble()\n\n // Transform the sub-viewport's four edges from screen coordinates to Cartesian coordinates.\n var bln: Vec3\n var blf: Vec3\n var brn: Vec3\n var brf: Vec3\n var tln: Vec3\n var tlf: Vec3\n var trn: Vec3\n var trf: Vec3\n val mvpInv = scratchMatrix.setToMultiply(projection, modelview).invert()\n mvpInv.unProject(left, bottom, viewport, Vec3().also { bln = it }, Vec3().also { blf = it })\n mvpInv.unProject(right, bottom, viewport, Vec3().also { brn = it }, Vec3().also { brf = it })\n mvpInv.unProject(left, top, viewport, Vec3().also { tln = it }, Vec3().also { tlf = it })\n mvpInv.unProject(right, top, viewport, Vec3().also { trn = it }, Vec3().also { trf = it })\n\n val va = Vec3(tlf.x - bln.x, tlf.y - bln.y, tlf.z - bln.z)\n val vb = Vec3(tln.x - blf.x, tln.y - blf.y, tln.z - blf.z)\n\n val nl = va.cross(vb)\n this.left.set(nl.x, nl.y, nl.z, -nl.dot(bln))\n va.set(trn.x - brf.x, trn.y - brf.y, trn.z - brf.z)\n vb.set(trf.x - brn.x, trf.y - brn.y, trf.z - brn.z)\n\n val nr = va.cross(vb)\n this.right.set(nr.x, nr.y, nr.z, -nr.dot(brn))\n va.set(brf.x - bln.x, brf.y - bln.y, brf.z - bln.z)\n vb.set(blf.x - brn.x, blf.y - brn.y, blf.z - brn.z)\n\n val nb = va.cross(vb)\n this.bottom.set(nb.x, nb.y, nb.z, -nb.dot(brn))\n va.set(tlf.x - trn.x, tlf.y - trn.y, tlf.z - trn.z)\n vb.set(trf.x - tln.x, trf.y - tln.y, trf.z - tln.z)\n\n val nt = va.cross(vb)\n this.top.set(nt.x, nt.y, nt.z, -nt.dot(tln))\n va.set(tln.x - brn.x, tln.y - brn.y, tln.z - brn.z)\n vb.set(trn.x - bln.x, trn.y - bln.y, trn.z - bln.z)\n\n val nn = va.cross(vb)\n this.near.set(nn.x, nn.y, nn.z, -nn.dot(bln))\n va.set(trf.x - blf.x, trf.y - blf.y, trf.z - blf.z)\n vb.set(tlf.x - brf.x, tlf.y - brf.y, tlf.z - brf.z)\n\n val nf = va.cross(vb)\n this.far.set(nf.x, nf.y, nf.z, -nf.dot(blf))\n\n // Copy the specified sub-viewport.\n this.viewport.copy(subViewport)\n }\n\n /**\n * See if the point is entirely within the frustum. The dot product of the point with each plane's vector\n * provides a distance to each plane. If this distance is less than 0, the point is clipped by that plane and\n * neither intersects nor is contained by the space enclosed by this Frustum.\n *\n * @param point Vector to check\n *\n * @return true if point contains in frustum\n */\n fun containsPoint(point: Vec3) = far.dot(point) > 0 && left.dot(point) > 0 && right.dot(point) > 0\n && top.dot(point) > 0 && bottom.dot(point) > 0 && near.dot(point) > 0\n\n /**\n * Determines whether a line segment intersects this frustum.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return true if the segment intersects or is contained in this frustum, otherwise false\n */\n fun intersectsSegment(pointA: Vec3, pointB: Vec3): Boolean {\n // First do a trivial accept test.\n if (containsPoint(pointA) || containsPoint(pointB)) return true\n if (pointA == pointB) return false\n for (i in planes.indices) {\n val plane = planes[i]\n // See if both points are behind the plane and therefore not in the frustum.\n if (plane.onSameSide(pointA, pointB) < 0) return false\n // See if the segment intersects the plane.\n if (plane.clip(pointA, pointB) != null) return true\n }\n return false // segment does not intersect frustum\n }\n\n /**\n * Determines whether a screen coordinate viewport intersects this frustum.\n *\n * @param viewport the viewport to test\n *\n * @return true if the viewport intersects or is contained in this frustum, otherwise false\n */\n fun intersectsViewport(viewport: Viewport) = this.viewport.intersects(viewport)\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\n/**\n * Represents a line in Cartesian coordinates.\n */\nopen class Line {\n /**\n * This line's origin.\n */\n val origin = Vec3()\n /**\n * This line's direction.\n */\n val direction = Vec3()\n\n /**\n * Constructs a line with origin and direction both zero.\n */\n constructor()\n\n /**\n * Constructs a line with a specified origin and direction.\n *\n * @param origin the line's origin\n * @param direction the line's direction\n */\n constructor(origin: Vec3, direction: Vec3): this() { set(origin, direction) }\n\n /**\n * Constructs a line with the origin and direction from a specified line.\n *\n * @param line the line specifying origin and direction\n */\n constructor(line: Line): this(line.origin, line.direction)\n\n /**\n * Sets this line to a specified origin and direction.\n *\n * @param origin the line's new origin\n * @param direction the line's new direction\n *\n * @return this line, set to the new origin and direction\n */\n fun set(origin: Vec3, direction: Vec3) = apply {\n this.origin.copy(origin)\n this.direction.copy(direction)\n }\n\n /**\n * Sets this line to the specified segment. This line has its origin at the first endpoint and its direction\n * extending from the first endpoint to the second.\n *\n * @param pointA the segment's first endpoint\n * @param pointB the segment's second endpoint\n *\n * @return this line, set to the specified segment\n */\n fun setToSegment(pointA: Vec3, pointB: Vec3) = apply {\n origin.copy(pointA)\n direction.set(pointB.x - pointA.x, pointB.y - pointA.y, pointB.z - pointA.z)\n }\n\n /**\n * Computes a Cartesian point a specified distance along this line.\n *\n * @param distance The distance from this line's origin at which to compute the point.\n * @param result A pre-allocated [Vec3] instance in which to return the computed point.\n *\n * @return The specified result argument containing the computed point.\n */\n fun pointAt(distance: Double, result: Vec3): Vec3 {\n result.x = origin.x + direction.x * distance\n result.y = origin.y + direction.y * distance\n result.z = origin.z + direction.z * distance\n return result\n }\n\n /**\n * Computes the first intersection of a triangle strip with this line. This line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *
\n * The triangle strip is specified by a list of vertex points and a list of elements indicating the triangle strip\n * tessellation of those vertices. The triangle strip elements are interpreted in the same manner as OpenGL, where\n * each index indicates a vertex position rather than an actual index into the points array (e.g. a triangle strip\n * index of 1 indicates the XYZ tuple starting at array index 3).\n *\n * @param points an array of points containing XYZ tuples\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n * @param elements an array of indices into the points defining the triangle strip organization\n * @param count the number of indices to consider\n * @param result a pre-allocated Vec3 in which to return the nearest intersection point, if any\n *\n * @return true if this line intersects the triangle strip, otherwise false\n *\n * @throws IllegalArgumentException If array is empty, if the stride is less than 3,\n * if the count is less than 0\n */\n fun triStripIntersection(points: FloatArray, stride: Int, elements: ShortArray, count: Int, result: Vec3): Boolean {\n require(points.size >= stride) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidStride\")\n }\n require(elements.isNotEmpty()) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Line\", \"triStripIntersection\", \"invalidCount\")\n }\n\n // Taken from Moller and Trumbore\n // http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/papers/Acceleration/Fast%20MinimumStorage%20RayTriangle%20Intersection.pdf\n\n // Adapted from the original ray-triangle intersection algorithm to optimize for ray-triangle strip\n // intersection. We optimize by reusing constant terms, replacing use of Vec3 with inline primitives, and\n // exploiting the triangle strip organization to reuse computations common to adjacent triangles. These\n // optimizations reduced worst-case terrain picking performance for Web WorldWind by approximately 50% in\n // Chrome on a 2010 iMac and a Nexus 9.\n val vx = direction.x\n val vy = direction.y\n val vz = direction.z\n val sx = origin.x\n val sy = origin.y\n val sz = origin.z\n var tMin = Double.POSITIVE_INFINITY\n val epsilon = 0.00001\n\n // Get the triangle strip's first vertex.\n var vertex = elements[0] * stride\n var vert1x = points[vertex++]\n var vert1y = points[vertex++]\n var vert1z = points[vertex]\n\n // Get the triangle strip's second vertex.\n vertex = elements[1] * stride\n var vert2x = points[vertex++]\n var vert2y = points[vertex++]\n var vert2z = points[vertex]\n\n // Compute the intersection of each triangle with the specified ray.\n for (idx in 2 until count) {\n // Move the last two vertices into the first two vertices. This takes advantage of the triangle strip's\n // structure and avoids redundant reads from points and elements. During the first iteration this places the\n // triangle strip's first three vertices in vert0, vert1 and vert2, respectively.\n val vert0x = vert1x\n val vert0y = vert1y\n val vert0z = vert1z\n vert1x = vert2x\n vert1y = vert2y\n vert1z = vert2z\n\n // Get the triangle strip's next vertex.\n vertex = elements[idx] * stride\n vert2x = points[vertex++]\n vert2y = points[vertex++]\n vert2z = points[vertex]\n\n // find vectors for two edges sharing point a: vert1 - vert0 and vert2 - vert0\n val edge1x = vert1x - vert0x\n val edge1y = vert1y - vert0y\n val edge1z = vert1z - vert0z\n val edge2x = vert2x - vert0x\n val edge2y = vert2y - vert0y\n val edge2z = vert2z - vert0z\n\n // Compute cross product of line direction and edge2\n val px = vy * edge2z - vz * edge2y\n val py = vz * edge2x - vx * edge2z\n val pz = vx * edge2y - vy * edge2x\n\n // Get determinant\n val det = edge1x * px + edge1y * py + edge1z * pz // edge1 dot p\n // if det is near zero then ray lies in plane of triangle\n if (det > -epsilon && det < epsilon) continue\n\n val invDet = 1.0 / det\n\n // Compute distance for vertex A to ray origin: origin - vert0\n val tx = sx - vert0x\n val ty = sy - vert0y\n val tz = sz - vert0z\n\n // Calculate u parameter and test bounds: 1/det * t dot p\n val u = invDet * (tx * px + ty * py + tz * pz)\n if (u < -epsilon || u > 1 + epsilon) continue\n\n // Prepare to test v parameter: tvec cross edge1\n val qx = ty * edge1z - tz * edge1y\n val qy = tz * edge1x - tx * edge1z\n val qz = tx * edge1y - ty * edge1x\n\n // Calculate v parameter and test bounds: 1/det * dir dot q\n val v = invDet * (vx * qx + vy * qy + vz * qz)\n if (v < -epsilon || u + v > 1 + epsilon) continue\n\n // Calculate the point of intersection on the line: t = 1/det * edge2 dot q\n val t = invDet * (edge2x * qx + edge2y * qy + edge2z * qz)\n if (t >= 0 && t < tMin) tMin = t\n }\n if (tMin != Double.POSITIVE_INFINITY) result.set(sx + vx * tMin, sy + vy * tMin, sz + vz * tMin)\n return tMin != Double.POSITIVE_INFINITY\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Line) return false\n return origin == other.origin && direction == other.direction\n }\n\n override fun hashCode(): Int {\n var result = origin.hashCode()\n result = 31 * result + direction.hashCode()\n return result\n }\n\n override fun toString() = \"Line(origin=$origin, direction=$direction)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.normalizeLongitude\nimport earth.worldwind.shape.PathType\nimport earth.worldwind.shape.PathType.GREAT_CIRCLE\nimport earth.worldwind.shape.PathType.RHUMB_LINE\nimport earth.worldwind.util.format.format\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.offsetIn\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\n/**\n * Geographic location with a latitude and longitude.\n */\nopen class Location(\n /**\n * The location's latitude.\n */\n var latitude: Angle,\n /**\n * The location's longitude.\n */\n var longitude: Angle\n) {\n /**\n * Constructs a location with latitude and longitude both 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO)\n\n /**\n * Constructs a location with the latitude and longitude of a specified location.\n *\n * @param location the location specifying the coordinates\n */\n constructor(location: Location): this(location.latitude, location.longitude)\n\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-15\n protected val timeZoneLatitudes = mapOf(\n -12 to -45, // GMT-12\n -11 to -30, // GMT-11\n -10 to 20, // GMT-10\n -9 to 45, // GMT-9\n -8 to 40, // GMT-8\n -7 to 35, // GMT-7\n -6 to 30, // GMT-6\n -5 to 25, // GMT-5\n -4 to -15, // GMT-4\n -3 to 0, // GMT-3\n -2 to 45, // GMT-2\n -1 to 30, // GMT-1\n 0 to 30, // GMT+0\n 1 to 20, // GMT+1\n 2 to 20, // GMT+2\n 3 to 25, // GMT+3\n 4 to 30, // GMT+4\n 5 to 35, // GMT+5\n 6 to 30, // GMT+6\n 7 to 25, // GMT+7\n 8 to -30, // GMT+8\n 9 to -30, // GMT+9\n 10 to -30, // GMT+10\n 11 to -45, // GMT+11\n 12 to -45 // GMT+12\n )\n\n /**\n * Constructs a location with a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n *\n * @return the new location\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n Location(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Constructs a location with a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n *\n * @return the new location\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double) =\n Location(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Constructs an approximate location for a specified time zone. Used when selecting an initial camera position\n * based on the device's current time zone.\n *\n * @param timeZone the time zone in question\n *\n * @return the new location\n */\n @JvmStatic\n fun fromTimeZone(timeZone: TimeZone): Location {\n val secPerHour = 3.6e3\n val offsetSec = Clock.System.now().offsetIn(timeZone).totalSeconds\n val offsetHours = (offsetSec / secPerHour).toInt()\n // use a pre-determined latitude or 0 if none is available\n val latDegrees = (timeZoneLatitudes[offsetHours]?:0).toDouble()\n val lonDegrees = 180.0 * offsetHours / 12 // center on the time zone's average longitude\n return Location(fromDegrees(latDegrees), fromDegrees(lonDegrees))\n }\n\n /**\n * Determines whether a list of locations crosses the antimeridian.\n *\n * @param locations the locations to test\n *\n * @return true if the antimeridian is crossed, false otherwise\n */\n @JvmStatic\n fun locationsCrossAntimeridian(locations: List): Boolean {\n // Check the list's length. A list with fewer than two locations does not cross the antimeridan.\n val len = locations.size\n if (len < 2) return false\n\n // Compute the longitude attributes associated with the first location.\n var lon1 = normalizeLongitude(locations[0].longitude.inDegrees)\n var sig1 = sign(lon1)\n\n // Iterate over the segments in the list. A segment crosses the antimeridian if its endpoint longitudes have\n // different signs and are more than 180 degrees apart (but not 360, which indicates the longitudes are the same).\n for (idx in 1 until len) {\n val lon2 = normalizeLongitude(locations[idx].longitude.inDegrees)\n val sig2 = sign(lon2)\n if (sig1 != sig2) {\n val delta = abs(lon1 - lon2)\n if (delta > 180 && delta < 360) return true\n }\n lon1 = lon2\n sig1 = sig2\n }\n return false\n }\n\n @JvmStatic\n fun fromString(coordinates: String): Location {\n val tokens = coordinates.replace(\"[*'\\\"NSEW;°′″,]\".toRegex(), \" \").trim { it <= ' ' }\n .split(\"\\\\s+\".toRegex()).toTypedArray()\n // Lat\n var lat = 0.0\n var exponent = 0\n var i = 0\n while (i < tokens.size / 2) {\n lat += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n // Lon\n var lon = 0.0\n exponent = 0\n while (i < tokens.size) {\n lon += tokens[i].toDouble() / 60.0.pow(exponent++.toDouble())\n i++\n }\n return fromDegrees(if (coordinates.contains(\"S\")) -lat else lat, if (coordinates.contains(\"W\")) -lon else lon)\n }\n }\n\n /**\n * Sets this location to a specified latitude and longitude.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle) = apply {\n this.latitude = latitude\n this.longitude = longitude\n }\n\n /**\n * Sets this location to a specified latitude and longitude in degrees.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double) =\n set(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees))\n\n /**\n * Sets this location to a specified latitude and longitude in radians.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n *\n * @return this location with its latitude and longitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double) =\n set(fromRadians(latitudeRadians), fromRadians(longitudeRadians))\n\n /**\n * Sets this location to the latitude and longitude of a specified location.\n *\n * @param location the location specifying the new coordinates\n *\n * @return this location with its latitude and longitude set to that of the specified location\n */\n fun copy(location: Location) = set(location.latitude, location.longitude)\n\n /**\n * Compute a location along a path between two locations. The amount indicates the fraction of the path at which to\n * compute a location. This value is typically between 0 and 1, where 0 indicates the begin location (this location)\n * and 1 indicates the end location.\n *\n * @param endLocation the path's end location\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a location\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun interpolateAlongPath(endLocation: Location, pathType: PathType, amount: Double, result: Location): Location {\n return if (this == endLocation) {\n result.latitude = latitude\n result.longitude = longitude\n result\n } else when (pathType) {\n GREAT_CIRCLE -> {\n val azimuth = greatCircleAzimuth(endLocation)\n val distanceRadians = greatCircleDistance(endLocation) * amount\n greatCircleLocation(azimuth, distanceRadians, result)\n }\n RHUMB_LINE -> {\n val azimuth = rhumbAzimuth(endLocation)\n val distanceRadians = rhumbDistance(endLocation) * amount\n rhumbLocation(azimuth, distanceRadians, result)\n }\n else -> {\n val azimuth = linearAzimuth(endLocation)\n val distanceRadians = linearDistance(endLocation) * amount\n linearLocation(azimuth, distanceRadians, result)\n }\n }\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the great circle path between this location and a specified\n * location. This angle can be used as the starting azimuth for a great circle path beginning at this location, and\n * passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed azimuth\n */\n fun greatCircleAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n if (lon1 == lon2) return if (lat1 > lat2) POS180 else ZERO\n\n // Taken from \"Map Projections - A Working Manual\", page 30, equation 5-4b.\n // The atan2() function is used in place of the traditional atan(y/x) to simplify the case when x == 0.\n val y = cos(lat2) * sin(lon2 - lon1)\n val x = cos(lat1) * sin(lat2) - sin(lat1) * cos(lat2) * cos(lon2 - lon1)\n val azimuthRadians = atan2(y, x)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the great circle path between this location and a specified location. In\n * radians, this angle is the arc length of the segment between the two locations. To compute a distance in meters\n * from this value, multiply the return value by the radius of the globe. This function uses a spherical model, not\n * elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun greatCircleDistance(location: Location): Double {\n val lat1Radians = latitude.inRadians\n val lon1Radians = longitude.inRadians\n val lat2Radians = location.latitude.inRadians\n val lon2Radians = location.longitude.inRadians\n if (lat1Radians == lat2Radians && lon1Radians == lon2Radians) return 0.0\n\n // \"Haversine formula,\" taken from http://en.wikipedia.org/wiki/Great-circle_distance#Formul.C3.A6\n val a = sin((lat2Radians - lat1Radians) / 2.0)\n val b = sin((lon2Radians - lon1Radians) / 2.0)\n val c = a * a + cos(lat1Radians) * cos(lat2Radians) * b * b\n val distanceRadians = 2.0 * asin(sqrt(c))\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the great circle path starting at this location and traversing with the specified\n * azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun greatCircleLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n val cosLat = cos(latRadians)\n val sinLat = sin(latRadians)\n val cosAzimuth = cos(azimuthRadians)\n val sinAzimuth = sin(azimuthRadians)\n val sinDistance = sin(distanceRadians)\n val cosDistance = cos(distanceRadians)\n\n // Taken from \"Map Projections - A Working Manual\", page 31, equation 5-5 and 5-6.\n val endLatRadians = asin(sinLat * cosDistance + cosLat * sinDistance * cosAzimuth)\n val endLonRadians = lonRadians + atan2(\n sinDistance * sinAzimuth, cosLat * cosDistance - sinLat * sinDistance * cosAzimuth\n )\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the rhumb path (line of constant azimuth) between this\n * location and a specified location. This angle can be used as the starting azimuth for a rhumb path beginning at\n * this location, and passing through the specified location. This function uses a spherical model, not elliptical.\n *\n * @param location the rhumb path's ending location\n *\n * @return the computed azimuth\n */\n fun rhumbAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the rhumb path (line of constant azimuth) between this location and a specified\n * location. In radians, this angle is the arc length of the segment between the two locations. To compute a\n * distance in meters from this value, multiply the return value by the radius of the globe. This function uses a\n * spherical model, not elliptical.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun rhumbDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(lat1)\n else {\n val dPhi = ln(tan(lat2 / 2.0 + PI / 4) / tan(lat1 / 2.0 + PI / 4))\n dLat / dPhi\n }\n\n // If lonChange over 180 take shorter rhumb across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + q * q * dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on a rhumb path (line of constant azimuth) starting at this location and traversing with\n * the specified azimuth and angular distance. This function uses a spherical model, not elliptical.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun rhumbLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n val dLat = endLatRadians - latRadians\n // Avoid indeterminates along E/W courses when lat end points are \"nearly\" identical\n val q = if (abs(dLat) < NEAR_ZERO_THRESHOLD) cos(latRadians)\n else {\n val dPhi = ln(tan(endLatRadians / 2 + PI / 4) / tan(latRadians / 2 + PI / 4))\n dLat / dPhi\n }\n val dLon = distanceRadians * sin(azimuthRadians) / q\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + dLon + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n /**\n * Computes the azimuth angle (clockwise from North) for the linear path between this location and a specified\n * location. This angle can be used as the starting azimuth for a linear path beginning at this location, and\n * passing through the specified location. This function uses a flat-earth approximation proximal to this location.\n *\n * @param location the linear path's ending location\n *\n * @return the computed azimuth\n */\n fun linearAzimuth(location: Location): Angle {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return ZERO\n var dLon = lon2 - lon1\n val dPhi = lat2 - lat1\n\n // If longitude change is over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val azimuthRadians = atan2(dLon, dPhi)\n return if (azimuthRadians.isNaN()) ZERO else fromRadians(azimuthRadians)\n }\n\n /**\n * Computes the angular distance of the linear path between this location and a specified location. In radians, this\n * angle is the arc length of the segment between the two locations. To compute a distance in meters from this\n * value, multiply the return value by the radius of the globe. This function uses a flat-earth approximation\n * proximal to this location.\n *\n * @param location the great circle path's ending location\n *\n * @return the computed angular distance in radians\n */\n fun linearDistance(location: Location): Double {\n val lat1 = latitude.inRadians\n val lon1 = longitude.inRadians\n val lat2 = location.latitude.inRadians\n val lon2 = location.longitude.inRadians\n if (lat1 == lat2 && lon1 == lon2) return 0.0\n val dLat = lat2 - lat1\n var dLon = lon2 - lon1\n\n // If lonChange over 180 take shorter path across 180 meridian.\n if (abs(dLon) > PI) dLon = if (dLon > 0) -(2 * PI - dLon) else 2 * PI + dLon\n val distanceRadians = sqrt(dLat * dLat + dLon * dLon)\n return if (distanceRadians.isNaN()) 0.0 else distanceRadians\n }\n\n /**\n * Computes the location on the linear path starting at this location and traversing with the specified azimuth and\n * angular distance. This function uses a flat-earth approximation proximal to this location.\n *\n * @param azimuth the starting azimuth\n * @param distanceRadians the angular distance along the path in radians\n * @param result a pre-allocated Location in which to return the computed location\n *\n * @return the result argument set to the computed location\n */\n fun linearLocation(azimuth: Angle, distanceRadians: Double, result: Location): Location {\n if (distanceRadians == 0.0) {\n result.latitude = latitude\n result.longitude = longitude\n return result\n }\n val latRadians = latitude.inRadians\n val lonRadians = longitude.inRadians\n val azimuthRadians = azimuth.inRadians\n var endLatRadians = latRadians + distanceRadians * cos(azimuthRadians)\n\n // Handle latitude passing over either pole.\n if (abs(endLatRadians) > PI / 2) endLatRadians = if (endLatRadians > 0) PI - endLatRadians else -PI - endLatRadians\n val endLonRadians = (lonRadians + distanceRadians * sin(azimuthRadians) + PI) % (2 * PI) - PI\n if (endLatRadians.isNaN() || endLonRadians.isNaN()) {\n result.latitude = latitude\n result.longitude = longitude\n } else {\n result.latitude = fromRadians(endLatRadians).normalizeLatitude()\n result.longitude = fromRadians(endLonRadians).normalizeLongitude()\n }\n return result\n }\n\n fun equals(other: Location, tolerance: Double): Boolean {\n if (this === other) return true\n return abs(latitude.inDegrees - other.latitude.inDegrees) < tolerance\n && abs(longitude.inDegrees - other.longitude.inDegrees) < tolerance\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Location) return false\n return latitude.inDegrees == other.latitude.inDegrees && longitude.inDegrees == other.longitude.inDegrees\n }\n\n override fun hashCode(): Int {\n var result = latitude.hashCode()\n result = 31 * result + longitude.hashCode()\n return result\n }\n\n override fun toString() = \"Location(latitude=$latitude, longitude=$longitude)\"\n\n fun toDDString() = \"%s%09.6f°, %s%010.6f°\"\n .format(latitude.latitudeLetter, abs(latitude.inDegrees), longitude.longitudeLetter, abs(longitude.inDegrees))\n\n fun toDMString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%06.3f′, %s%03d°%06.3f′\".format(\n latitude.latitudeLetter, lat[1], lat[2] + lat[3] / 60.0,\n longitude.longitudeLetter, lon[1], lon[2] + lon[3] / 60.0\n )\n }\n\n fun toDMSString(): String {\n val lat = latitude.toDMS()\n val lon = longitude.toDMS()\n return \"%s%02d°%02d′%04.1f″, %s%03d°%02d′%04.1f″\".format(\n latitude.latitudeLetter, lat[1], lat[2], lat[3],\n longitude.longitudeLetter, lon[1], lon[2], lon[3]\n )\n }\n\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\n\nopen class LookAt(\n val position: Position, var altitudeMode: AltitudeMode, var range: Double, var heading: Angle, var tilt: Angle, var roll: Angle,\n) {\n constructor(): this(\n position = Position(),\n altitudeMode = AltitudeMode.ABSOLUTE,\n range = 0.0,\n heading = ZERO,\n tilt = ZERO,\n roll = ZERO)\n\n constructor(lookAt: LookAt): this(\n Position(lookAt.position),\n lookAt.altitudeMode,\n lookAt.range,\n lookAt.heading,\n lookAt.tilt,\n lookAt.roll\n )\n\n fun set(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode,\n range: Double, heading: Angle, tilt: Angle, roll: Angle\n ) = apply {\n this.position.set(latitude, longitude, altitude)\n this.altitudeMode = altitudeMode\n this.range = range\n this.heading = heading\n this.tilt = tilt\n this.roll = roll\n }\n\n fun copy(lookAt: LookAt) = set(\n lookAt.position.latitude, lookAt.position.longitude, lookAt.position.altitude,\n lookAt.altitudeMode, lookAt.range, lookAt.heading, lookAt.tilt, lookAt.roll\n )\n\n override fun toString() = \"LookAt(position=$position, altitudeMode=$altitudeMode, range=$range, heading=$heading, tilt=$tilt, roll=$roll)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.cos\nimport kotlin.math.sin\n\n/**\n * 3 x 3 matrix in row-major order.\n */\nopen class Matrix3 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n /**\n * The components for the 3 x 3 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0\n )\n }\n\n /**\n * Constructs a 3 x 3 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 3 x 3 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n */\n constructor(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ): this(doubleArrayOf(m11, m12, m13, m21, m22, m23, m31, m32, m33))\n\n /**\n * Constructs a 3 x 3 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix3): this(matrix.m.copyOf())\n\n /**\n * Sets this 3 x 3 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m21\n m[4] = m22\n m[5] = m23\n m[6] = m31\n m[7] = m32\n m[8] = m33\n }\n\n /**\n * Sets this 3 x 3 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix3) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double) = apply {\n m[2] = x\n m[5] = y\n }\n\n /**\n * Sets the rotation components of this matrix to a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[3] = s\n m[4] = c\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[4] = yScale\n }\n\n /**\n * Sets this matrix to the 3 x 3 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = x\n m[3] = 0.0\n m[4] = 1.0\n m[5] = y\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c\n m[1] = -s\n m[2] = 0.0\n m[3] = s\n m[4] = c\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = yScale\n m[5] = 0.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that flips and shifts the y-axis. The resultant matrix maps Y=0 to Y=1 and Y=1 to Y=0.\n * All existing values are overwritten. This matrix is usually used to change the coordinate origin from an upper\n * left coordinate origin to a lower left coordinate origin.\n *
\n * This matrix is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix set to values described above\n */\n fun setToVerticalFlip() = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = -1.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to one that transforms normalized coordinates from a source sector to a destination sector.\n * Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner and (1, 1)\n * indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its corresponding\n * normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix set to values described above\n */\n fun setToTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n m[0] = xs\n m[1] = 0.0\n m[2] = xt\n m[3] = 0.0\n m[4] = ys\n m[5] = yt\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix3, b: Matrix3) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[3] + ma[2] * mb[6]\n m[1] = ma[0] * mb[1] + ma[1] * mb[4] + ma[2] * mb[7]\n m[2] = ma[0] * mb[2] + ma[1] * mb[5] + ma[2] * mb[8]\n m[3] = ma[3] * mb[0] + ma[4] * mb[3] + ma[5] * mb[6]\n m[4] = ma[3] * mb[1] + ma[4] * mb[4] + ma[5] * mb[7]\n m[5] = ma[3] * mb[2] + ma[4] * mb[5] + ma[5] * mb[8]\n m[6] = ma[6] * mb[0] + ma[7] * mb[3] + ma[8] * mb[6]\n m[7] = ma[6] * mb[1] + ma[7] * mb[4] + ma[8] * mb[7]\n m[8] = ma[6] * mb[2] + ma[7] * mb[5] + ma[8] * mb[8]\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double) = apply {\n multiplyByMatrix(1.0, 0.0, x, 0.0, 1.0, y, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation.\n *\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(c, -s, 0.0, s, c, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double) = apply {\n multiplyByMatrix(xScale, 0.0, 0.0, 0.0, yScale, 0.0, 0.0, 0.0, 1.0)\n }\n\n /**\n * Multiplies this matrix by a matrix that flips and shifts the y-axis. The vertical flip matrix maps Y=0 to Y=1 and\n * Y=1 to Y=0. This matrix is usually used to change the coordinate origin from an upper left coordinate origin to a\n * lower left coordinate origin.\n *
\n * This is typically necessary to align the coordinate system of images (top-left origin) with that of OpenGL\n * (bottom-left origin).\n *\n * @return this matrix multiplied by a vertical flip matrix implied by values described above\n */\n fun multiplyByVerticalFlip() = apply {\n m[2] += m[1]\n m[5] += m[4]\n m[8] += m[7]\n m[1] = -m[1]\n m[4] = -m[4]\n m[7] = -m[7]\n }\n\n /**\n * Multiplies this matrix by a matrix that transforms normalized coordinates from a source sector to a destination\n * sector. Normalized coordinates within a sector range from 0 to 1, with (0, 0) indicating the lower left corner\n * and (1, 1) indicating the upper right. The resultant matrix maps a normalized source coordinate (X, Y) to its\n * corresponding normalized destination coordinate (X', Y').\n *
\n * This matrix typically necessary to transform texture coordinates from one geographic region to another. For\n * example, the texture coordinates for a terrain tile spanning one region must be transformed to coordinates\n * appropriate for an image tile spanning a potentially different region.\n *\n * @param src the source sector\n * @param dst the destination sector\n *\n * @return this matrix multiplied by the transform matrix implied by values described above\n */\n fun multiplyByTileTransform(src: Sector, dst: Sector) = apply {\n val srcDeltaLat = src.deltaLatitude.inDegrees\n val srcDeltaLon = src.deltaLongitude.inDegrees\n val dstDeltaLat = dst.deltaLatitude.inDegrees\n val dstDeltaLon = dst.deltaLongitude.inDegrees\n val xs = srcDeltaLon / dstDeltaLon\n val ys = srcDeltaLat / dstDeltaLat\n val xt = (src.minLongitude.inDegrees - dst.minLongitude.inDegrees) / dstDeltaLon\n val yt = (src.minLatitude.inDegrees - dst.minLatitude.inDegrees) / dstDeltaLat\n\n m[2] += m[0] * xt + m[1] * yt\n m[5] += m[3] * xt + m[4] * yt\n m[8] += m[6] * xt + m[6] * yt\n m[0] *= xs\n m[1] *= ys\n m[3] *= xs\n m[4] *= ys\n m[6] *= xs\n m[7] *= ys\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n ma[0] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[1] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[2] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[3]\n ma1 = ma[4]\n ma2 = ma[5]\n ma[3] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[4] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[5] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n ma0 = ma[6]\n ma1 = ma[7]\n ma2 = ma[8]\n ma[6] = ma0 * mb[0] + ma1 * mb[3] + ma2 * mb[6]\n ma[7] = ma0 * mb[1] + ma1 * mb[4] + ma2 * mb[7]\n ma[8] = ma0 * mb[2] + ma1 * mb[5] + ma2 * mb[8]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double,\n m21: Double, m22: Double, m23: Double,\n m31: Double, m32: Double, m33: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[3]\n mr2 = m[4]\n mr3 = m[5]\n m[3] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[4] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[5] = mr1 * m13 + mr2 * m23 + mr3 * m33\n mr1 = m[6]\n mr2 = m[7]\n mr3 = m[8]\n m[6] = mr1 * m11 + mr2 * m21 + mr3 * m31\n m[7] = mr1 * m12 + mr2 * m22 + mr3 * m32\n m[8] = mr1 * m13 + mr2 * m23 + mr3 * m33\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[3]\n m[3] = tmp\n\n tmp = m[2]\n m[2] = m[6]\n m[6] = tmp\n\n tmp = m[5]\n m[5] = m[7]\n m[7] = tmp\n }\n\n /**\n * Transposes the specified matrix and stores the result in this matrix.\n *\n * @param matrix the matrix whose transpose is computed\n *\n * @return this matrix set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix3) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[3]\n m[2] = matrix.m[6]\n m[3] = matrix.m[1]\n m[4] = matrix.m[4]\n m[5] = matrix.m[7]\n m[6] = matrix.m[2]\n m[7] = matrix.m[5]\n m[8] = matrix.m[8]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix3fv.\n *\n * @param result a pre-allocated array of length 9 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 9) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[5].toFloat()\n result[o] = m[8].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert(): Matrix3 {\n throw UnsupportedOperationException(\"Matrix3.invert is not implemented\") // TODO\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n @Suppress(\"UNUSED_PARAMETER\")\n fun invertMatrix(matrix: Matrix3): Matrix3 {\n TODO(\"Matrix3.invertMatrix is not implemented\")\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix3) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix3([${m[0]}, ${m[1]}, ${m[2]}], [${m[3]}, ${m[4]}, ${m[5]}], [${m[6]}, ${m[7]}, ${m[8]}])\"\n}",null,"package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/**\n * 4 x 4 matrix in row-major order.\n */\nopen class Matrix4 private constructor(\n /**\n * The matrix's components, stored in row-major order.\n */\n val m: DoubleArray\n){\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1.0e-8\n protected const val TINY = 1.0e-20\n protected const val EPSILON = 1.0e-10\n protected const val MAX_SWEEPS = 32\n\n /**\n * The components for the 4 x 4 identity matrix, stored in row-major order.\n */\n internal val identity = doubleArrayOf(\n 1.0, 0.0, 0.0, 0.0,\n 0.0, 1.0, 0.0, 0.0,\n 0.0, 0.0, 1.0, 0.0,\n 0.0, 0.0, 0.0, 1.0\n )\n\n /**\n * Inverts a 4 x 4 matrix, storing the result in a destination argument. The source and destination arguments\n * represent a 4 x 4 matrix with a one-dimensional array in row-major order. The source and destination may\n * reference the same array.\n *\n * @param src the matrix components to invert in row-major order\n * @param dst the inverted components in row-major order\n *\n * @return true if the matrix was successfully inverted, false otherwise\n */\n protected fun invert(src: DoubleArray, dst: DoubleArray): Boolean {\n // Copy the specified matrix into a mutable two-dimensional array.\n val a = Array(4) { DoubleArray(4) }\n a[0][0] = src[0]\n a[0][1] = src[1]\n a[0][2] = src[2]\n a[0][3] = src[3]\n a[1][0] = src[4]\n a[1][1] = src[5]\n a[1][2] = src[6]\n a[1][3] = src[7]\n a[2][0] = src[8]\n a[2][1] = src[9]\n a[2][2] = src[10]\n a[2][3] = src[11]\n a[3][0] = src[12]\n a[3][1] = src[13]\n a[3][2] = src[14]\n a[3][3] = src[15]\n\n val index = IntArray(4)\n var d = ludcmp(a, index)\n\n // Compute the matrix's determinant.\n for (i in 0..3) d *= a[i][i]\n\n // The matrix is singular if its determinant is zero or very close to zero.\n if (abs(d) < NEAR_ZERO_THRESHOLD) return false\n\n val y = Array(4) { DoubleArray(4) }\n val col = DoubleArray(4)\n for (j in 0..3) {\n for (i in 0..3) col[i] = 0.0\n col[j] = 1.0\n lubksb(a, index, col)\n for (i in 0..3) y[i][j] = col[i]\n }\n dst[0] = y[0][0]\n dst[1] = y[0][1]\n dst[2] = y[0][2]\n dst[3] = y[0][3]\n dst[4] = y[1][0]\n dst[5] = y[1][1]\n dst[6] = y[1][2]\n dst[7] = y[1][3]\n dst[8] = y[2][0]\n dst[9] = y[2][1]\n dst[10] = y[2][2]\n dst[11] = y[2][3]\n dst[12] = y[3][0]\n dst[13] = y[3][1]\n dst[14] = y[3][2]\n dst[15] = y[3][3]\n return true\n }\n\n /**\n * Utility method to perform an LU factorization of a matrix. Algorithm derived from \"Numerical Recipes in C\", Press\n * et al., 1988.\n *\n * @param A matrix to be factored\n * @param index permutation vector\n *\n * @return condition number of matrix\n */\n protected fun ludcmp(A: Array, index: IntArray): Double {\n val vv = DoubleArray(4)\n var d = 1.0\n var temp: Double\n for (i in 0..3) {\n var big = 0.0\n for (j in 0..3) if (abs(A[i][j]).also { temp = it } > big) big = temp\n if (big == 0.0) return 0.0 // Matrix is singular if the entire row contains zero.\n else vv[i] = 1 / big\n }\n for (j in 0..3) {\n for (i in 0 until j) {\n var sum = A[i][j]\n for (k in 0 until i) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n }\n var big = 0.0\n var imax = -1\n var dum: Double\n for (i in j..3) {\n var sum = A[i][j]\n for (k in 0 until j) sum -= A[i][k] * A[k][j]\n A[i][j] = sum\n if (vv[i] * abs(sum).also { dum = it } >= big) {\n big = dum\n imax = i\n }\n }\n if (j != imax) {\n for (k in 0..3) {\n dum = A[imax][k]\n A[imax][k] = A[j][k]\n A[j][k] = dum\n }\n d = -d\n vv[imax] = vv[j]\n }\n index[j] = imax\n if (A[j][j] == 0.0) A[j][j] = TINY\n if (j != 3) {\n dum = 1.0 / A[j][j]\n for (i in (j + 1)..3) {\n A[i][j] *= dum\n }\n }\n }\n return d\n }\n\n /**\n * Utility method to solve a linear system with an LU factorization of a matrix. Solves Ax=b, where A is in LU\n * factorized form. Algorithm derived from \"Numerical Recipes in C\", Press et al., 1988\n *\n * @param A an LU factorization of a matrix\n * @param index permutation vector of that LU factorization\n * @param b vector to be solved\n */\n protected fun lubksb(A: Array, index: IntArray, b: DoubleArray) {\n var ii = -1\n for (i in 0..3) {\n val ip = index[i]\n var sum = b[ip]\n b[ip] = b[i]\n if (ii != -1) for (j in ii until i) sum -= A[i][j] * b[j]\n else if (sum != 0.0) ii = i\n b[i] = sum\n }\n for (i in 3 downTo 0) {\n var sum = b[i]\n for (j in (i + 1)..3) sum -= A[i][j] * b[j]\n b[i] = sum / A[i][i]\n }\n }\n }\n\n /**\n * Constructs a 4 x 4 identity matrix.\n */\n constructor(): this(identity.copyOf())\n\n /**\n * Constructs a 4 x 4 matrix with specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n */\n constructor(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ): this(doubleArrayOf(m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, m41, m42, m43, m44))\n\n /**\n * Constructs a 4 x 4 matrix with the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n */\n constructor(matrix: Matrix4): this(matrix.m.copyOf())\n\n /**\n * Sets this 4 x 4 matrix to specified components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix set to the specified components\n */\n fun set(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n m[0] = m11\n m[1] = m12\n m[2] = m13\n m[3] = m14\n m[4] = m21\n m[5] = m22\n m[6] = m23\n m[7] = m24\n m[8] = m31\n m[9] = m32\n m[10] = m33\n m[11] = m34\n m[12] = m41\n m[13] = m42\n m[14] = m43\n m[15] = m44\n }\n\n /**\n * Sets this 4 x 4 matrix to the components of a specified matrix.\n *\n * @param matrix the matrix specifying the new components\n *\n * @return this matrix with its components set to that of the specified matrix\n */\n fun copy(matrix: Matrix4) = apply { matrix.m.copyInto(m) }\n\n /**\n * Sets the translation components of this matrix to specified values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to the specified values and all other components\n * unmodified\n */\n fun setTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] = x\n m[7] = y\n m[11] = z\n }\n\n /**\n * Sets the rotation components of this matrix to a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to the specified values and all other components unmodified\n */\n fun setRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n }\n\n /**\n * Sets the scale components of this matrix to specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to the specified values and all other components unmodified\n */\n fun setScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[5] = yScale\n m[10] = zScale\n }\n\n /**\n * Sets this matrix to the 4 x 4 identity matrix.\n *\n * @return this matrix, set to the identity matrix\n */\n fun setToIdentity() = apply { identity.copyInto(m) }\n\n /**\n * Sets this matrix to a translation matrix with specified translation components.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix with its translation components set to those specified and all other components set to that\n * of an identity matrix\n */\n fun setToTranslation(x: Double, y: Double, z: Double) = apply {\n m[0] = 1.0\n m[1] = 0.0\n m[2] = 0.0\n m[3] = x\n m[4] = 0.0\n m[5] = 1.0\n m[6] = 0.0\n m[7] = y\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 1.0\n m[11] = z\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a rotation matrix with a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis when viewed when viewed from the positive end of the axis, looking\n * toward the negative end of the axis.\n *
\n * The result of this method is undefined if the axis components are not a unit vector.\n *\n * @param x the X component of the rotation axis unit vector\n * @param y the Y component of the rotation axis unit vector\n * @param z the Z component of the rotation axis unit vector\n * @param angle the angle of rotation\n *\n * @return this matrix with its rotation components set to those specified and all other components set to that of\n * an identity matrix\n */\n fun setToRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n m[0] = c + (1 - c) * x * x\n m[1] = (1 - c) * x * y - s * z\n m[2] = (1 - c) * x * z + s * y\n m[3] = 0.0\n m[4] = (1 - c) * x * y + s * z\n m[5] = c + (1 - c) * y * y\n m[6] = (1 - c) * y * z - s * x\n m[7] = 0.0\n m[8] = (1 - c) * x * z - s * y\n m[9] = (1 - c) * y * z + s * x\n m[10] = c + (1 - c) * z * z\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to a scale matrix with specified scale components.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix with its scale components set to those specified and all other components set to that of an\n * identity matrix\n */\n fun setToScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] = xScale\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = yScale\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = zScale\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the matrix product of two specified matrices.\n *\n * @param a the first matrix multiplicand\n * @param b The second matrix multiplicand\n *\n * @return this matrix set to the product of a x b\n */\n fun setToMultiply(a: Matrix4, b: Matrix4) = apply {\n val ma = a.m\n val mb = b.m\n m[0] = ma[0] * mb[0] + ma[1] * mb[4] + ma[2] * mb[8] + ma[3] * mb[12]\n m[1] = ma[0] * mb[1] + ma[1] * mb[5] + ma[2] * mb[9] + ma[3] * mb[13]\n m[2] = ma[0] * mb[2] + ma[1] * mb[6] + ma[2] * mb[10] + ma[3] * mb[14]\n m[3] = ma[0] * mb[3] + ma[1] * mb[7] + ma[2] * mb[11] + ma[3] * mb[15]\n m[4] = ma[4] * mb[0] + ma[5] * mb[4] + ma[6] * mb[8] + ma[7] * mb[12]\n m[5] = ma[4] * mb[1] + ma[5] * mb[5] + ma[6] * mb[9] + ma[7] * mb[13]\n m[6] = ma[4] * mb[2] + ma[5] * mb[6] + ma[6] * mb[10] + ma[7] * mb[14]\n m[7] = ma[4] * mb[3] + ma[5] * mb[7] + ma[6] * mb[11] + ma[7] * mb[15]\n m[8] = ma[8] * mb[0] + ma[9] * mb[4] + ma[10] * mb[8] + ma[11] * mb[12]\n m[9] = ma[8] * mb[1] + ma[9] * mb[5] + ma[10] * mb[9] + ma[11] * mb[13]\n m[10] = ma[8] * mb[2] + ma[9] * mb[6] + ma[10] * mb[10] + ma[11] * mb[14]\n m[11] = ma[8] * mb[3] + ma[9] * mb[7] + ma[10] * mb[11] + ma[11] * mb[15]\n m[12] = ma[12] * mb[0] + ma[13] * mb[4] + ma[14] * mb[8] + ma[15] * mb[12]\n m[13] = ma[12] * mb[1] + ma[13] * mb[5] + ma[14] * mb[9] + ma[15] * mb[13]\n m[14] = ma[12] * mb[2] + ma[13] * mb[6] + ma[14] * mb[10] + ma[15] * mb[14]\n m[15] = ma[12] * mb[3] + ma[13] * mb[7] + ma[14] * mb[11] + ma[15] * mb[15]\n }\n\n /**\n * Sets this matrix to an infinite perspective projection matrix for the specified viewport dimensions, vertical\n * field of view and near clip distance.\n *
\n * An infinite perspective projection matrix maps points in a manner similar to a standard projection matrix, but is\n * not bounded by depth. Objects at any depth greater than or equal to the near distance may be rendered. In\n * addition, this matrix interprets vertices with a w-coordinate of 0 as infinitely far from the camera in the\n * direction indicated by the point's coordinates.\n *
\n * The field of view must be positive and less than 180. The near distance must be positive.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near distance is\n * less than or equal to zero\n */\n fun setToInfiniteProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToInfiniteProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -1.0\n m[11] = -2 * nearDistance\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a perspective projection matrix for the specified viewport dimensions, vertical field of view\n * and clip distances.\n *
\n * A perspective projection matrix maps points in eye coordinates into clip coordinates in a way that causes distant\n * objects to appear smaller, and preserves the appropriate depth information for each point. In model coordinates,\n * a perspective projection is defined by frustum originating at the eye position and extending outward in the\n * viewer's direction. The near distance and the far distance identify the minimum and maximum distance,\n * respectively, at which an object in the scene is visible.\n *
\n * The field of view must be positive and less than 180. Near and far distances must be positive and must not be\n * equal to one another.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n * @param vFieldOfView the vertical field of view\n * @param nearDistance the near clip plane distance in model coordinates\n * @param farDistance the far clip plane distance in model coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero, if the field of\n * view is less than or equal to zero or greater than 180, if the near and far\n * distances are equal, or if either the near or far distance are less than or\n * equal to zero\n */\n fun setToPerspectiveProjection(\n viewportWidth: Int, viewportHeight: Int, vFieldOfView: Angle, nearDistance: Double, farDistance: Double\n ) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidHeight\")\n }\n require(vFieldOfView.inDegrees > 0.0 && vFieldOfView.inDegrees < 180.0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidFieldOfView\")\n }\n require(nearDistance != farDistance) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n require(nearDistance > 0 && farDistance > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToPerspectiveProjection\", \"invalidClipDistance\")\n }\n\n // Compute the dimensions of the near rectangle given the specified parameters.\n val aspect = viewportWidth / viewportHeight.toDouble()\n val tanFov2 = tan(vFieldOfView.inRadians * 0.5)\n val nearHeight = 2 * nearDistance * tanFov2\n val nearWidth = nearHeight * aspect\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.52.\n m[0] = 2 * nearDistance / nearWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = 0.0\n m[4] = 0.0\n m[5] = 2 * nearDistance / nearHeight\n m[6] = 0.0\n m[7] = 0.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = -(farDistance + nearDistance) / (farDistance - nearDistance)\n m[11] = -(2 * nearDistance * farDistance) / (farDistance - nearDistance)\n m[12] = 0.0\n m[13] = 0.0\n m[14] = -1.0\n m[15] = 0.0\n }\n\n /**\n * Sets this matrix to a screen projection matrix for the specified viewport dimensions.\n *
\n * A screen projection matrix is an orthographic projection that interprets points in model coordinates as\n * representing a screen XY and a Z depth. Screen projection matrices therefore map coordinates directly into screen\n * coordinates without modification. A point's XY coordinates are interpreted as literal screen coordinates and must\n * be in the viewport to be visible. A point's Z coordinate is interpreted as a depth value that ranges from 0 to 1.\n * Additionally, the screen projection matrix preserves the depth value returned by\n * `RenderContext.project`.\n *\n * @param viewportWidth the viewport width in screen coordinates\n * @param viewportHeight the viewport height in screen coordinates\n *\n * @throws IllegalArgumentException If either the width or the height is less than or equal to zero\n */\n fun setToScreenProjection(viewportWidth: Double, viewportHeight: Double) = apply {\n require(viewportWidth > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidWidth\")\n }\n require(viewportHeight > 0) {\n logMessage(ERROR, \"Matrix4\", \"setToScreenProjection\", \"invalidHeight\")\n }\n\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition, equation 4.57.\n // Simplified to assume that the viewport origin is (0, 0).\n //\n // The third row of this projection matrix is configured so that points with z coordinates representing\n // depth values ranging from 0 to 1 are not modified after transformation into window coordinates. This\n // projection matrix maps z values in the range [0, 1] to the range [-1, 1] by applying the following\n // function to incoming z coordinates:\n //\n // zp = z0 * 2 - 1\n //\n // Where 'z0' is the point's z coordinate and 'zp' is the projected z coordinate. The GPU then maps the\n // projected z coordinate into window coordinates in the range [0, 1] by applying the following function:\n //\n // zw = zp * 0.5 + 0.5\n //\n // The result is that a point's z coordinate is effectively passed to the GPU without modification.\n m[0] = 2 / viewportWidth\n m[1] = 0.0\n m[2] = 0.0\n m[3] = -1.0\n m[4] = 0.0\n m[5] = 2 / viewportHeight\n m[6] = 0.0\n m[7] = -1.0\n m[8] = 0.0\n m[9] = 0.0\n m[10] = 2.0\n m[11] = -1.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Sets this matrix to the symmetric covariance Matrix computed from an array of points.\n *
\n * The computed covariance matrix represents the correlation between each pair of x-, y-, and z-coordinates as\n * they're distributed about the point array's arithmetic mean. Its layout is as follows:\n *
\n * ` C(x, x) C(x, y) C(x, z)
C(x, y) C(y, y) C(y, z)
C(x, z) C(y, z) C(z, z) `\n *
\n * C(i, j) is the covariance of coordinates i and j, where i or j are a coordinate's dispersion about its mean\n * value. If any entry is zero, then there's no correlation between the two coordinates defining that entry. If the\n * returned matrix is diagonal, then all three coordinates are uncorrelated, and the specified point is distributed\n * evenly about its mean point.\n *\n * @param array the array of points to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent points - must be at least 3\n *\n * @return this matrix set to the covariance matrix for the specified array of points\n *\n * @throws IllegalArgumentException If the array is null or empty, if the count is less than 0, or if the stride is\n * less than 3\n */\n fun setToCovarianceOfPoints(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidCount\")\n }\n require(stride >= 3) {\n logMessage(ERROR, \"Matrix4\", \"setToCovarianceOfPoints\", \"invalidStride\")\n }\n\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var c11 = 0.0\n var c22 = 0.0\n var c33 = 0.0\n var c12 = 0.0\n var c13 = 0.0\n var c23 = 0.0\n var numPoints = 0.0\n for (idx in 0 until count step stride) {\n mx += array[idx]\n my += array[idx + 1]\n mz += array[idx + 2]\n numPoints++\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n for (idx in 0 until count step stride) {\n val dx = array[idx] - mx\n val dy = array[idx + 1] - my\n val dz = array[idx + 2] - mz\n c11 += dx * dx\n c22 += dy * dy\n c33 += dz * dz\n c12 += dx * dy // c12 = c21\n c13 += dx * dz // c13 = c31\n c23 += dy * dz // c23 = c32\n }\n m[0] = c11 / numPoints\n m[1] = c12 / numPoints\n m[2] = c13 / numPoints\n m[3] = 0.0\n m[4] = c12 / numPoints\n m[5] = c22 / numPoints\n m[6] = c23 / numPoints\n m[7] = 0.0\n m[8] = c13 / numPoints\n m[9] = c23 / numPoints\n m[10] = c33 / numPoints\n m[11] = 0.0\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 0.0\n }\n\n /**\n * Multiplies this matrix by a translation matrix with specified translation values.\n *\n * @param x the X translation component\n * @param y the Y translation component\n * @param z the Z translation component\n *\n * @return this matrix multiplied by the translation matrix implied by the specified values\n */\n fun multiplyByTranslation(x: Double, y: Double, z: Double) = apply {\n m[3] += m[0] * x + m[1] * y + m[2] * z\n m[7] += m[4] * x + m[5] * y + m[6] * z\n m[11] += m[8] * x + m[9] * y + m[10] * z\n m[15] += m[12] * x + m[13] * y + m[14] * z\n }\n\n /**\n * Multiplies this matrix by a rotation matrix about a specified axis and angle. Positive angles are interpreted as\n * counter-clockwise rotation about the axis.\n *\n * @param x the X component of the rotation axis\n * @param y the Y component of the rotation axis\n * @param z the Z component of the rotation axis\n * @param angle the angle of rotation\n *\n * @return this matrix multiplied by the rotation matrix implied by the specified values\n */\n fun multiplyByRotation(x: Double, y: Double, z: Double, angle: Angle) = apply {\n val c = cos(angle.inRadians)\n val s = sin(angle.inRadians)\n multiplyByMatrix(\n c + (1 - c) * x * x,\n (1 - c) * x * y - s * z,\n (1 - c) * x * z + s * y,\n 0.0,\n (1 - c) * x * y + s * z,\n c + (1 - c) * y * y,\n (1 - c) * y * z - s * x,\n 0.0,\n (1 - c) * x * z - s * y,\n (1 - c) * y * z + s * x,\n c + (1 - c) * z * z,\n 0.0,\n 0.0,\n 0.0,\n 0.0,\n 1.0\n )\n }\n\n /**\n * Multiplies this matrix by a scale matrix with specified values.\n *\n * @param xScale the X scale component\n * @param yScale the Y scale component\n * @param zScale the Z scale component\n *\n * @return this matrix multiplied by the scale matrix implied by the specified values\n */\n fun multiplyByScale(xScale: Double, yScale: Double, zScale: Double) = apply {\n m[0] *= xScale\n m[4] *= xScale\n m[8] *= xScale\n m[12] *= xScale\n m[1] *= yScale\n m[5] *= yScale\n m[9] *= yScale\n m[13] *= yScale\n m[2] *= zScale\n m[6] *= zScale\n m[10] *= zScale\n m[14] *= zScale\n }\n\n /**\n * Multiplies this matrix by a specified matrix.\n *\n * @param matrix the matrix to multiply with this matrix\n *\n * @return this matrix after multiplying it by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val ma = m\n val mb = matrix.m\n var ma0 = ma[0]\n var ma1 = ma[1]\n var ma2 = ma[2]\n var ma3 = ma[3]\n ma[0] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[1] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[2] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[3] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[4]\n ma1 = ma[5]\n ma2 = ma[6]\n ma3 = ma[7]\n ma[4] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[5] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[6] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[7] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[8]\n ma1 = ma[9]\n ma2 = ma[10]\n ma3 = ma[11]\n ma[8] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[9] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[10] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[11] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n ma0 = ma[12]\n ma1 = ma[13]\n ma2 = ma[14]\n ma3 = ma[15]\n ma[12] = ma0 * mb[0] + ma1 * mb[4] + ma2 * mb[8] + ma3 * mb[12]\n ma[13] = ma0 * mb[1] + ma1 * mb[5] + ma2 * mb[9] + ma3 * mb[13]\n ma[14] = ma0 * mb[2] + ma1 * mb[6] + ma2 * mb[10] + ma3 * mb[14]\n ma[15] = ma0 * mb[3] + ma1 * mb[7] + ma2 * mb[11] + ma3 * mb[15]\n }\n\n /**\n * Multiplies this matrix by a matrix specified by individual components.\n *\n * @param m11 matrix element at row 1, column 1\n * @param m12 matrix element at row 1, column 2\n * @param m13 matrix element at row 1, column 3\n * @param m14 matrix element at row 1, column 4\n * @param m21 matrix element at row 2, column 1\n * @param m22 matrix element at row 2, column 2\n * @param m23 matrix element at row 2, column 3\n * @param m24 matrix element at row 2, column 4\n * @param m31 matrix element at row 3, column 1\n * @param m32 matrix element at row 3, column 2\n * @param m33 matrix element at row 3, column 3\n * @param m34 matrix element at row 3, column 4\n * @param m41 matrix element at row 4, column 1\n * @param m42 matrix element at row 4, column 2\n * @param m43 matrix element at row 4, column 3\n * @param m44 matrix element at row 4, column 4\n *\n * @return this matrix with its components multiplied by the specified values\n */\n fun multiplyByMatrix(\n m11: Double, m12: Double, m13: Double, m14: Double,\n m21: Double, m22: Double, m23: Double, m24: Double,\n m31: Double, m32: Double, m33: Double, m34: Double,\n m41: Double, m42: Double, m43: Double, m44: Double\n ) = apply {\n var mr1 = m[0]\n var mr2 = m[1]\n var mr3 = m[2]\n var mr4 = m[3]\n m[0] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[1] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[2] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[3] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[4]\n mr2 = m[5]\n mr3 = m[6]\n mr4 = m[7]\n m[4] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[5] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[6] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[7] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[8]\n mr2 = m[9]\n mr3 = m[10]\n mr4 = m[11]\n m[8] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[9] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[10] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[11] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n mr1 = m[12]\n mr2 = m[13]\n mr3 = m[14]\n mr4 = m[15]\n m[12] = mr1 * m11 + mr2 * m21 + mr3 * m31 + mr4 * m41\n m[13] = mr1 * m12 + mr2 * m22 + mr3 * m32 + mr4 * m42\n m[14] = mr1 * m13 + mr2 * m23 + mr3 * m33 + mr4 * m43\n m[15] = mr1 * m14 + mr2 * m24 + mr3 * m34 + mr4 * m44\n }\n\n /**\n * Transposes this matrix in place.\n *\n * @return this matrix, transposed.\n */\n fun transpose() = apply {\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[3]\n m[3] = m[12]\n m[12] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n tmp = m[7]\n m[7] = m[13]\n m[13] = tmp\n\n tmp = m[11]\n m[11] = m[14]\n m[14] = tmp\n }\n\n /**\n * Sets this matrix to the transpose of a specified matrix.\n *\n * @param matrix the matrix whose transpose is to be computed\n *\n * @return this matrix with its values set to the transpose of the specified matrix\n */\n fun transposeMatrix(matrix: Matrix4) = apply {\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = matrix.m[12]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = matrix.m[13]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = matrix.m[14]\n m[12] = matrix.m[3]\n m[13] = matrix.m[7]\n m[14] = matrix.m[11]\n m[15] = matrix.m[15]\n }\n\n /**\n * Transposes this matrix, storing the result in the specified single precision array. The result is compatible with\n * GLSL uniform matrices, and can be passed to the function glUniformMatrix4fv.\n *\n * @param result a pre-allocated array of length 16 in which to return the transposed components\n *\n * @return the result argument set to the transposed components\n */\n fun transposeToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 16) {\n logMessage(ERROR, \"Matrix4\", \"transposeToArray\", \"missingArray\")\n }\n result[o++] = m[0].toFloat()\n result[o++] = m[4].toFloat()\n result[o++] = m[8].toFloat()\n result[o++] = m[12].toFloat()\n result[o++] = m[1].toFloat()\n result[o++] = m[5].toFloat()\n result[o++] = m[9].toFloat()\n result[o++] = m[13].toFloat()\n result[o++] = m[2].toFloat()\n result[o++] = m[6].toFloat()\n result[o++] = m[10].toFloat()\n result[o++] = m[14].toFloat()\n result[o++] = m[3].toFloat()\n result[o++] = m[7].toFloat()\n result[o++] = m[11].toFloat()\n result[o] = m[15].toFloat()\n return result\n }\n\n /**\n * Inverts this matrix in place.\n *
\n * This throws an exception if this matrix is singular.\n *\n * @return this matrix, inverted\n *\n * @throws IllegalArgumentException If this matrix cannot be inverted\n */\n fun invert() = apply {\n val success = invert(m, m) // passing the same array as src and dst is supported\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts the specified matrix and stores the result in this matrix.\n *
\n * This throws an exception if the specified matrix is singular.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert.\n *\n * @param matrix the matrix whose inverse is computed\n *\n * @return this matrix set to the inverse of the specified matrix\n *\n * @throws IllegalArgumentException If the matrix cannot be inverted\n */\n fun invertMatrix(matrix: Matrix4) = apply {\n val success = invert(matrix.m, m) // store inverse of matrix in this matrix\n require(success) {\n // the matrix is singular\n logMessage(ERROR, \"Matrix4\", \"invertMatrix\", \"singularMatrix\")\n }\n }\n\n /**\n * Inverts this orthonormal transform matrix in place. This matrix's upper 3x3 is transposed, then its fourth column\n * is transformed by the transposed upper 3x3 and negated.\n *
\n * The result of this method is undefined if this matrix's values are not consistent with those of an orthonormal\n * transform.\n *\n * @return this matrix, inverted\n */\n fun invertOrthonormal() = apply {\n // This is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n var tmp = m[1]\n m[1] = m[4]\n m[4] = tmp\n\n tmp = m[2]\n m[2] = m[8]\n m[8] = tmp\n\n tmp = m[6]\n m[6] = m[9]\n m[9] = tmp\n\n val x = m[3]\n val y = m[7]\n val z = m[11]\n\n m[3] = -(m[0] * x) - m[1] * y - m[2] * z\n m[7] = -(m[4] * x) - m[5] * y - m[6] * z\n m[11] = -(m[8] * x) - m[9] * y - m[10] * z\n\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Inverts the specified orthonormal transform matrix and stores the result in 'this' matrix. The specified matrix's\n * upper 3x3 is transposed, then its fourth column is transformed by the transposed upper 3x3 and negated. The\n * result is stored in 'this' matrix.\n *
\n * The result of this method is undefined if this matrix is passed in as the matrix to invert, or if the matrix's\n * values are not consistent with those of an orthonormal transform.\n *\n * @param matrix the matrix whose inverse is computed. The matrix is assumed to represent an orthonormal transform\n * matrix.\n *\n * @return this matrix set to the inverse of the specified matrix\n */\n fun invertOrthonormalMatrix(matrix: Matrix4) = apply {\n // The matrix is assumed to contain matrix 3D transformation matrix. The upper 3x3 is transposed, the translation\n // components are multiplied by the transposed-upper-3x3 and negated.\n m[0] = matrix.m[0]\n m[1] = matrix.m[4]\n m[2] = matrix.m[8]\n m[3] = -(matrix.m[0] * matrix.m[3]) - matrix.m[4] * matrix.m[7] - matrix.m[8] * matrix.m[11]\n m[4] = matrix.m[1]\n m[5] = matrix.m[5]\n m[6] = matrix.m[9]\n m[7] = -(matrix.m[1] * matrix.m[3]) - matrix.m[5] * matrix.m[7] - matrix.m[9] * matrix.m[11]\n m[8] = matrix.m[2]\n m[9] = matrix.m[6]\n m[10] = matrix.m[10]\n m[11] = -(matrix.m[2] * matrix.m[3]) - matrix.m[6] * matrix.m[7] - matrix.m[10] * matrix.m[11]\n m[12] = 0.0\n m[13] = 0.0\n m[14] = 0.0\n m[15] = 1.0\n }\n\n /**\n * Applies a specified depth offset to this projection matrix. The depth offset may be any real number and is\n * typically used to draw geometry slightly closer to the user's eye in order to give those shapes visual priority\n * over nearby or geometry. An offset of zero has no effect. An offset less than zero brings depth values closer to\n * the eye, while an offset greater than zero pushes depth values away from the eye.\n *
\n * The result of this method is undefined if this matrix is not a projection matrix. Projection matrices can be\n * created by calling `setToPerspectiveProjection` or `setToScreenProjection`\n *
\n * Depth offset may be applied to both perspective and screen projection matrices. The effect on each type is\n * outlined here:\n *
\n * **Perspective Projection**\n *
\n * The effect of depth offset on a perspective projection increases exponentially with distance from the eye. This\n * has the effect of adjusting the offset for the loss in depth precision with geometry drawn further from the eye.\n * Distant geometry requires a greater offset to differentiate itself from nearby geometry, while close geometry\n * does not.\n *
\n * **Screen Projection**\n *
\n * The effect of depth offset on an screen projection increases linearly with distance from the eye. While it is\n * reasonable to apply a depth offset to an screen projection, the effect is most appropriate when applied to the\n * projection used to draw the scene. For example, when an object's coordinates are projected by a perspective\n * projection into screen coordinates then drawn using a screen projection, it is best to apply the offset to the\n * original perspective projection. The method `RenderContext.project` performs the correct behavior for\n * the projection type used to draw the scene.\n *\n * @param depthOffset the amount of offset to apply\n *\n * @return this matrix with its components adjusted to account for the specified depth offset\n */\n fun offsetProjectionDepth(depthOffset: Double) = apply { m[10] *= 1 + depthOffset }\n\n /**\n * Returns this viewing matrix's eye point. In model coordinates, a viewing matrix's eye point is the point the\n * viewer is looking from and maps to the center of the screen.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's eye point\n */\n fun extractEyePoint(result: Vec3): Vec3 {\n // The eye point of a modelview matrix is computed by transforming the origin (0, 0, 0, 1) by the matrix's\n // inverse. This is equivalent to transforming the inverse of this matrix's translation components in the\n // rightmost column by the transpose of its upper 3x3 components.\n result.x = -(m[0] * m[3]) - m[4] * m[7] - m[8] * m[11]\n result.y = -(m[1] * m[3]) - m[5] * m[7] - m[9] * m[11]\n result.z = -(m[2] * m[3]) - m[6] * m[7] - m[10] * m[11]\n return result\n }\n\n /**\n * Returns this viewing matrix's forward vector.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param result a pre-allocated `Vec3` in which to return the extracted value\n *\n * @return the specified result argument containing the viewing matrix's forward vector\n */\n fun extractForwardVector(result: Vec3): Vec3 {\n // The forward vector of a modelview matrix is computed by transforming the negative Z axis (0, 0, -1, 0) by the\n // matrix's inverse. We have pre-computed the result inline here to simplify this computation.\n result.x = -m[8]\n result.y = -m[9]\n result.z = -m[10]\n return result\n }\n\n /**\n * Returns this viewing matrix's heading angle. The roll argument enables the caller to disambiguate\n * heading and roll when the two rotation axes for heading and roll are parallel, causing gimbal lock.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @param roll the viewing matrix's roll angle, or 0 if the roll angle is unknown\n *\n * @return the extracted heading angle\n */\n fun extractHeading(roll: Angle): Angle {\n val cr = cos(roll.inRadians)\n val sr = sin(roll.inRadians)\n val ch = cr * m[0] - sr * m[4]\n val sh = sr * m[5] - cr * m[1]\n return atan2(sh, ch).radians\n }\n\n /**\n * Returns this viewing matrix's tilt angle.\n *
\n * The result of this method is undefined if this matrix is not a viewing matrix.\n *\n * @return the extracted heading angle\n */\n fun extractTilt(): Angle {\n val ct = m[10]\n val st = sqrt(m[2] * m[2] + m[6] * m[6])\n return atan2(st, ct).radians\n }\n\n /**\n * Returns this symmetric matrix's eigenvectors. The eigenvectors are returned in the specified result arguments in\n * order of descending magnitude (most prominent to least prominent). Each eigenvector has length equal to its\n * corresponding eigenvalue.\n *
\n * This method returns false if this matrix is not a symmetric matrix.\n *\n * @param result1 a pre-allocated Vec3 in which to return the most prominent eigenvector\n * @param result2 a pre-allocated Vec3 in which to return the second most prominent eigenvector\n * @param result3 a pre-allocated Vec3 in which to return the least prominent eigenvector\n *\n * @return true if this matrix is symmetric and its eigenvectors can be determined, otherwise false\n */\n fun extractEigenvectors(result1: Vec3, result2: Vec3, result3: Vec3): Boolean {\n // Taken from Mathematics for 3D Game Programming and Computer Graphics, Second Edition,\n // listing 14.6.\n if (m[1] != m[4] || m[2] != m[8] || m[6] != m[9]) return false // matrix is not symmetric\n\n // Since the matrix is symmetric m12=m21, m13=m31 and m23=m32, therefore we can ignore the values m21,\n // m32 and m32.\n var m11 = m[0]\n var m12 = m[1]\n var m13 = m[2]\n var m22 = m[5]\n var m23 = m[6]\n var m33 = m[10]\n val r = Array(3) { DoubleArray(3) }\n r[2][2] = 1.0\n r[1][1] = r[2][2]\n r[0][0] = r[1][1]\n for (a in 0 until MAX_SWEEPS) {\n // Exit if off-diagonal entries small enough\n if (abs(m12) < EPSILON && abs(m13) < EPSILON && abs(m23) < EPSILON) break\n\n // Annihilate (1,2) entry.\n if (m12 != 0.0) {\n val u = (m22 - m11) * 0.5 / m12\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m12\n m22 += t * m12\n m12 = 0.0\n var temp = c * m13 - s * m23\n m23 = s * m13 + c * m23\n m13 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][1]\n r[i][1] = s * r[i][0] + c * r[i][1]\n r[i][0] = temp\n }\n }\n\n // Annihilate (1,3) entry.\n if (m13 != 0.0) {\n val u = (m33 - m11) * 0.5 / m13\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m11 -= t * m13\n m33 += t * m13\n m13 = 0.0\n var temp = c * m12 - s * m23\n m23 = s * m12 + c * m23\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][0] - s * r[i][2]\n r[i][2] = s * r[i][0] + c * r[i][2]\n r[i][0] = temp\n }\n }\n\n // Annihilate (2,3) entry.\n if (m23 != 0.0) {\n val u = (m33 - m22) * 0.5 / m23\n val u2 = u * u\n val u2p1 = u2 + 1\n val t = if (u2p1 != u2) (if (u < 0) -1 else 1) * (sqrt(u2p1) - abs(u)) else 0.5 / u\n val c = 1 / sqrt(t * t + 1)\n val s = c * t\n m22 -= t * m23\n m33 += t * m23\n m23 = 0.0\n var temp = c * m12 - s * m13\n m13 = s * m12 + c * m13\n m12 = temp\n for (i in 0..2) {\n temp = c * r[i][1] - s * r[i][2]\n r[i][2] = s * r[i][1] + c * r[i][2]\n r[i][1] = temp\n }\n }\n }\n\n // Sort the eigenvectors by descending magnitude.\n var i1 = 0\n var i2 = 1\n var i3 = 2\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n if (m22 < m33) {\n val temp = m22\n m22 = m33\n m33 = temp\n val itemp = i2\n i2 = i3\n i3 = itemp\n }\n if (m11 < m22) {\n val temp = m11\n m11 = m22\n m22 = temp\n val itemp = i1\n i1 = i2\n i2 = itemp\n }\n result1.set(r[0][i1], r[1][i1], r[2][i1])\n result2.set(r[0][i2], r[1][i2], r[2][i2])\n result3.set(r[0][i3], r[1][i3], r[2][i3])\n result1.normalize()\n result2.normalize()\n result3.normalize()\n result1.multiply(m11)\n result2.multiply(m22)\n result3.multiply(m33)\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. This method assumes this matrix represents an inverse\n * modelview-projection matrix. The result of this method is undefined if this matrix is not an inverse\n * modelview-projection matrix.\n *
\n * The resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes\n * that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's y component\n * @param z the Cartesian point's z component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(x: Double, y: Double, z: Double, viewport: Viewport, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This inverts\n // the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n var sx = m[0] * x + m[1] * y + m[2] * z + m[3]\n var sy = m[4] * x + m[5] * y + m[6] * z + m[7]\n var sz = m[8] * x + m[9] * y + m[10] * z + m[11]\n val sw = m[12] * x + m[13] * y + m[14] * z + m[15]\n if (sw == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n sx /= sw\n sy /= sw\n sz /= sw\n\n // Clip the point against the near and far clip planes.\n if (sz < -1 || sz > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n sx = sx * 0.5 + 0.5\n sy = sy * 0.5 + 0.5\n sz = sz * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n sx = sx * viewport.width + viewport.x\n sy = sy * viewport.height + viewport.y\n result.x = sx\n result.y = sy\n result.z = sz\n return true\n }\n\n /**\n * Un-projects a screen coordinate point to Cartesian coordinates at the near clip plane and the far clip plane.\n * This method assumes this matrix represents an inverse modelview-projection matrix. The result of this method is\n * undefined if this matrix is not an inverse modelview-projection matrix.\n *
\n * The screen point is understood to be in OpenGL screen coordinates, with the origin in the bottom-left corner and\n * axes that extend up and to the right from the origin.\n *
\n * This function stores the un-projected points in the result argument, and a boolean value indicating whether the\n * un-projection is successful.\n *\n * @param x the screen point's X component\n * @param y the screen point's Y component\n * @param viewport the viewport defining the screen point's coordinate system\n * @param nearResult a pre-allocated [Vec3] in which to return the un-projected near clip plane point\n * @param farResult a pre-allocated [Vec3] in which to return the un-projected far clip plane point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun unProject(x: Double, y: Double, viewport: Viewport, nearResult: Vec3, farResult: Vec3): Boolean {\n // Convert the XY screen coordinates to coordinates in the range [0, 1]. This enables the XY coordinates to\n // be converted to clip coordinates.\n var sx = (x - viewport.x) / viewport.width\n var sy = (y - viewport.y) / viewport.height\n\n // Convert from coordinates in the range [0, 1] to clip coordinates in the range [-1, 1].\n sx = sx * 2 - 1\n sy = sy * 2 - 1\n\n // Transform the screen point from clip coordinates to model coordinates. This is a partial transformation that\n // factors out the contribution from the screen point's X and Y components. The contribution from the Z\n // component, which is both -1 and +1, is included next.\n val mx = m[0] * sx + m[1] * sy + m[3]\n val my = m[4] * sx + m[5] * sy + m[7]\n val mz = m[8] * sx + m[9] * sy + m[11]\n val mw = m[12] * sx + m[13] * sy + m[15]\n\n // Transform the screen point at the near clip plane (z = -1) to model coordinates.\n val nx = mx - m[2]\n val ny = my - m[6]\n val nz = mz - m[10]\n val nw = mw - m[14]\n\n // Transform the screen point at the far clip plane (z = +1) to model coordinates.\n val fx = mx + m[2]\n val fy = my + m[6]\n val fz = mz + m[10]\n val fw = mw + m[14]\n if (nw == 0.0 || fw == 0.0) return false\n\n // Complete the conversion from near clip coordinates to model coordinates by dividing by the W component.\n nearResult.x = nx / nw\n nearResult.y = ny / nw\n nearResult.z = nz / nw\n\n // Complete the conversion from far clip coordinates to model coordinates by dividing by the W component.\n farResult.x = fx / fw\n farResult.y = fy / fw\n farResult.z = fz / fw\n return true\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Matrix4) return false\n return m.contentEquals(other.m)\n }\n\n override fun hashCode() = m.contentHashCode()\n\n override fun toString() =\n \"Matrix4([${m[0]}, ${m[1]}, ${m[2]}, ${m[3]}], [${m[4]}, ${m[5]}, ${m[6]}, ${m[7]}], [${m[8]}, ${m[9]}, ${m[10]}, ${m[11]}], [${m[12]}, ${m[13]}, ${m[14]}, ${m[15]}])\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.OffsetMode.FRACTION\nimport earth.worldwind.geom.OffsetMode.INSET_PIXELS\nimport kotlin.jvm.JvmStatic\n\n/**\n * Specifies an offset relative to a rectangle. Used by renderable shapes.\n */\ndata class Offset(\n /**\n * The units of this instance's X offset. See this class' constructor description for a list of the possible\n * values.\n */\n var xUnits: OffsetMode,\n /**\n * The offset in the X dimension, interpreted according to this instance's xUnits argument.\n */\n var x: Double,\n /**\n * The units of this instance's Y offset. See this class' constructor description for a list of the possible\n * values.\n */\n var yUnits: OffsetMode,\n /**\n * The offset in the Y dimension, interpreted according to this instance's yUnits argument.\n */\n var y: Double\n) {\n /**\n * Creates a new offset of this offset with identical property values.\n */\n constructor(offset: Offset): this(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n companion object {\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its center.\n */\n @JvmStatic fun center() = Offset(FRACTION, 0.5, FRACTION, 0.5)\n /**\n * This factory method returns a new offset used for anchoring a rectangle to its bottom-left corner.\n */\n @JvmStatic fun bottomLeft() = Offset(FRACTION, 0.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its center of its bottom edge.\n */\n @JvmStatic fun bottomCenter() = Offset(FRACTION, 0.5, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its bottom-right corner.\n */\n @JvmStatic fun bottomRight() = Offset(FRACTION, 1.0, FRACTION, 0.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle its top-left corner.\n */\n @JvmStatic fun topLeft() = Offset(FRACTION, 0.0, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to the center of its top edge.\n */\n @JvmStatic fun topCenter() = Offset(FRACTION, 0.5, FRACTION, 1.0)\n /**\n * This factory method returns a new offset for anchoring a rectangle to its top-right corner.\n */\n @JvmStatic fun topRight() = Offset(FRACTION, 1.0, FRACTION, 1.0)\n }\n\n /**\n * Sets this offset to specified property values.\n */\n fun set(xUnits: OffsetMode, x: Double, yUnits: OffsetMode, y: Double) = apply {\n this.xUnits = xUnits\n this.x = x\n this.yUnits = yUnits\n this.y = y\n }\n\n /**\n * Sets this offset to identical property values of the specified offset.\n */\n fun copy(offset: Offset) = set(offset.xUnits, offset.x, offset.yUnits, offset.y)\n\n /**\n * Returns this offset's absolute X and Y coordinates in pixels for a rectangle of a specified size in pixels. The\n * returned offset is in pixels relative to the rectangle's origin, and is defined in the coordinate system used by\n * the caller.\n *\n * @param width the rectangle's width in pixels\n * @param height the rectangles height in pixels\n * @param result a pre-allocated Vec2 in which to return the computed offset relative to the rectangle's origin\n *\n * @return the result argument set to the computed offset\n */\n fun offsetForSize(width: Double, height: Double, result: Vec2): Vec2 {\n val x = when (xUnits) {\n FRACTION -> width * x\n INSET_PIXELS -> width - x\n else -> x // default to OFFSET_PIXELS\n }\n val y = when (yUnits) {\n FRACTION -> height * y\n INSET_PIXELS -> height - y\n else -> y // default to OFFSET_PIXELS\n }\n return result.set(x, y)\n }\n}","package earth.worldwind.geom\n\n/**\n * Offset mode indicates how WorldWind interprets an offset's x and y values.\n * Accepted values are [FRACTION], [INSET_PIXELS] and [PIXELS].\n */\nenum class OffsetMode {\n /**\n * Indicating that the associated parameters are fractional values of the virtual\n * rectangle's width or height in the range [0, 1], where 0 indicates the rectangle's origin and 1 indicates the\n * corner opposite its origin.\n */\n FRACTION,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's corner opposite its origin corner.\n */\n INSET_PIXELS,\n /**\n * Indicating that the associated parameters are in units of pixels relative to the\n * virtual rectangle's origin.\n */\n PIXELS;\n}","package earth.worldwind.geom\n\n/**\n * Represents a plane in Cartesian coordinates. The plane's X, Y and Z components indicate the plane's normal vector.\n * The distance component indicates the plane's distance from the origin relative to its unit normal.\n */\nopen class Plane {\n companion object {\n protected const val NEAR_ZERO_THRESHOLD = 1e-10\n }\n\n /**\n * The normal vector to the plane.\n */\n val normal = Vec3(0.0, 0.0, 1.0)\n /**\n * The plane's distance from the origin.\n */\n var distance = 0.0\n\n /**\n * Constructs a plane in the X-Y plane with its unit normal pointing along the Z axis.\n */\n constructor()\n\n /**\n * Constructs a plane with specified normal vector components and distance from the origin.\n * This constructor normalizes the components, ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n */\n constructor(x: Double, y: Double, z: Double, distance: Double) { set(x, y, z, distance) }\n\n /**\n * Constructs a plane with the normal vector and distance from a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n */\n constructor(plane: Plane): this() { copy(plane) }\n\n /**\n * Computes the distance between this plane and a point.\n *\n * @param point the point whose distance to compute\n *\n * @return the computed distance\n */\n fun distanceToPoint(point: Vec3) = dot(point)\n\n /**\n * Sets this plane's specified normal vector and distance to specified values. This normalizes the components,\n * ensuring that the plane has a unit normal vector.\n *\n * @param x the X component of the plane's normal vector\n * @param y the Y component of the plane's normal vector\n * @param z the Z component of the plane's normal vector\n * @param distance the plane's distance from the origin\n *\n * @return this plane with its normal vector and distance set to specified values\n */\n fun set(x: Double, y: Double, z: Double, distance: Double) = apply {\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Sets this plane's normal vector and distance to that of a specified plane.\n *\n * @param plane the plane specifying the normal vector and distance\n *\n * @return this plane with its normal vector and distance set to those of the specified plane\n */\n fun copy(plane: Plane) = apply {\n // Assumes the specified plane's parameters are normalized.\n normal.copy(plane.normal)\n distance = plane.distance\n }\n\n /**\n * Transforms this plane by a specified matrix.\n *\n * @param matrix the matrix to apply to this plane\n *\n * @return this plane transformed by the specified matrix\n */\n fun transformByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * normal.x + m[1] * normal.y + m[2] * normal.z + m[3] * distance\n val y = m[4] * normal.x + m[5] * normal.y + m[6] * normal.z + m[7] * distance\n val z = m[8] * normal.x + m[9] * normal.y + m[10] * normal.z + m[11] * distance\n val distance = m[12] * normal.x + m[13] * normal.y + m[14] * normal.z + m[15] * distance\n normal.x = x\n normal.y = y\n normal.z = z\n this.distance = distance\n normalizeIfNeeded()\n }\n\n /**\n * Computes the dot product of this plane's components with a specified vector. Since the plane was defined with a\n * unit normal vector, this function returns the distance of the vector from the plane.\n *\n * @param vector the vector to dot with this plane's components\n *\n * @return the computed dot product\n */\n fun dot(vector: Vec3) = normal.dot(vector) + distance\n\n /**\n * Determines whether a specified line segment intersects this plane.\n *\n * @param endPoint1 the line segment's first end point\n * @param endPoint2 the line segment's second end point\n *\n * @return true if the line segment intersects this plane, otherwise false\n */\n fun intersectsSegment(endPoint1: Vec3, endPoint2: Vec3): Boolean {\n val distance1 = dot(endPoint1)\n val distance2 = dot(endPoint2)\n return distance1 * distance2 <= 0\n }\n\n /**\n * Determines whether two points are on the same side of this plane.\n *\n * @param pointA the first point\n * @param pointB the second point\n *\n * @return -1 if both points are on the negative side of this plane, +1 if both points are on the positive side of\n * this plane, 0 if the points are on opposite sides of this plane\n */\n fun onSameSide(pointA: Vec3, pointB: Vec3): Int {\n val da = distanceToPoint(pointA)\n val db = distanceToPoint(pointB)\n if (da < 0 && db < 0) return -1\n return if (da > 0 && db > 0) 1 else 0\n }\n\n /**\n * Clips a line segment to this plane, returning an two-point array indicating the clipped segment. If the direction\n * of the line formed by the two points is positive with respect to this plane's normal vector, the first point in\n * the array will be the intersection point on the plane, and the second point will be the original segment end\n * point. If the direction of the line is negative with respect to this plane's normal vector, the first point in\n * the array will be the original segment's begin point, and the second point will be the intersection point on the\n * plane. If the segment does not intersect the plane, null is returned. If the segment is coincident with the\n * plane, the input points are returned, in their input order.\n *\n * @param pointA the first line segment endpoint\n * @param pointB the second line segment endpoint\n *\n * @return an array of two points both on the positive side of the plane, or null if the segment does not intersect\n * this plane\n */\n fun clip(pointA: Vec3, pointB: Vec3): Array? {\n if (pointA == pointB) return null\n\n // Get the projection of the segment onto the plane.\n val line = Line().setToSegment(pointA, pointB)\n val lDotV = normal.dot(line.direction)\n\n // Are the line and plane parallel?\n if (lDotV == 0.0) { // line and plane are parallel and may be coincident.\n val lDotS = dot(line.origin)\n return if (lDotS == 0.0) arrayOf(pointA, pointB) // line is coincident with the plane\n else null // line is not coincident with the plane.\n }\n\n // Not parallel so the line intersects. But does the segment intersect?\n val t = -dot(line.origin) / lDotV // lDotS / lDotV\n if (t < 0 || t > 1) return null // segment does not intersect\n val p = line.pointAt(t, Vec3())\n return if (lDotV > 0) arrayOf(p, pointB) else arrayOf(pointA, p)\n }\n\n protected open fun normalizeIfNeeded() {\n // Compute the plane normal's magnitude in order to determine whether or not the plane needs normalization.\n val magnitude = normal.magnitude\n\n // Don't normalize a zero vector; the result is NaN when it should be 0.0.\n if (magnitude == 0.0) return\n\n // Don't normalize a unit vector, this indicates that the caller has already normalized the vector, but floating\n // point round-off results in a length not exactly 1.0. Since we're normalizing on the caller's behalf, we want\n // to avoid unnecessary any normalization that modifies the specified values.\n if (magnitude >= 1 - NEAR_ZERO_THRESHOLD && magnitude <= 1 + NEAR_ZERO_THRESHOLD) return\n\n // Normalize the caller-specified plane coordinates.\n normal.x /= magnitude\n normal.y /= magnitude\n normal.z /= magnitude\n distance /= magnitude\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Plane) return false\n return normal == other.normal && distance == other.distance\n }\n\n override fun hashCode(): Int {\n var result = normal.hashCode()\n result = 31 * result + distance.hashCode()\n return result\n }\n\n override fun toString() = \"Plane(normal=$normal, distance=$distance)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.shape.PathType\nimport kotlin.jvm.JvmStatic\n\n/**\n * Geographic position with a latitude and longitude and altitude in meters.\n */\nopen class Position(\n /**\n * The position's latitude.\n */\n latitude: Angle,\n /**\n * The position's longitude.\n */\n longitude: Angle,\n /**\n * The position's altitude in meters.\n */\n var altitude: Double\n): Location(latitude, longitude) {\n /**\n * Constructs a position with latitude, longitude and altitude all 0.\n */\n constructor(): this(latitude = ZERO, longitude = ZERO, altitude = 0.0)\n\n /**\n * Constructs a position with the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the coordinates\n */\n constructor(position: Position): this(position.latitude, position.longitude, position.altitude)\n\n companion object {\n /**\n * Constructs a position with a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the latitude in degrees\n * @param longitudeDegrees the longitude in degrees\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) =\n Position(fromDegrees(latitudeDegrees), fromDegrees(longitudeDegrees), altitude)\n\n /**\n * Constructs a position with a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the latitude in radians\n * @param longitudeRadians the longitude in radians\n * @param altitude the altitude in meters\n *\n * @return the new position\n */\n @JvmStatic\n fun fromRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) =\n Position(fromRadians(latitudeRadians), fromRadians(longitudeRadians), altitude)\n }\n\n /**\n * Sets this position to a specified latitude and longitude and altitude in meters.\n *\n * @param latitude the new latitude\n * @param longitude the new longitude\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun set(latitude: Angle, longitude: Angle, altitude: Double) = apply {\n set(latitude, longitude)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in degrees and altitude in meters.\n *\n * @param latitudeDegrees the new latitude in degrees\n * @param longitudeDegrees the new longitude in degrees\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setDegrees(latitudeDegrees: Double, longitudeDegrees: Double, altitude: Double) = apply {\n setDegrees(latitudeDegrees, longitudeDegrees)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to a specified latitude and longitude in radians and altitude in meters.\n *\n * @param latitudeRadians the new latitude in radians\n * @param longitudeRadians the new longitude in radians\n * @param altitude the new altitude in meters\n *\n * @return this position with its latitude, longitude and altitude set to the specified values\n */\n fun setRadians(latitudeRadians: Double, longitudeRadians: Double, altitude: Double) = apply {\n setRadians(latitudeRadians, longitudeRadians)\n this.altitude = altitude\n }\n\n /**\n * Sets this position to the latitude, longitude and altitude of a specified position.\n *\n * @param position the position specifying the new coordinates\n *\n * @return this position with its latitude, longitude and altitude set to that of the specified position\n */\n fun copy(position: Position) = set(position.latitude, position.longitude, position.altitude)\n\n /**\n * Compute a position along a path between two positions. The amount indicates the fraction of the path at which to\n * compute a position. This value is typically between 0 and 1, where 0 indicates the begin position (this position)\n * and 1 indicates the end position.\n *\n * @param endPosition the path's end position\n * @param pathType [PathType] indicating type of path to assume\n * @param amount the fraction of the path at which to compute a position\n * @param result a pre-allocated Position in which to return the computed result\n *\n * @return the result argument set to the computed position\n */\n fun interpolateAlongPath(endPosition: Position, pathType: PathType, amount: Double, result: Position): Position {\n // Interpolate latitude and longitude.\n super.interpolateAlongPath(endPosition, pathType, amount, result)\n // Interpolate altitude.\n result.altitude = (1 - amount) * altitude + amount * endPosition.altitude\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Position) return false\n if (!super.equals(other)) return false\n return altitude == other.altitude\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + altitude.hashCode()\n return result\n }\n\n override fun toString() = \"Position(latitude=$latitude, longitude=$longitude, altitude=$altitude)\"\n}","package earth.worldwind.geom\n\n/**\n * Continuous interval in a one-dimensional coordinate system expressed as a lower bound an an upper bound, inclusive.\n */\nopen class Range(\n /**\n * The range's lower bound, inclusive.\n */\n var lower: Int,\n /**\n * The range's upper bound, inclusive.\n */\n var upper: Int\n) {\n /**\n * Constructs an empty range with lower and upper both zero.\n */\n constructor(): this(lower = 0, upper = 0)\n\n /**\n * Constructs a range with the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the values\n */\n constructor(range: Range) : this(range.lower, range.upper)\n\n /**\n * Returns the length of the interval between this range's lower bound and upper bound, or 0 if this range is empty.\n */\n val length get() = if (upper > lower) upper - lower else 0\n\n /**\n * Indicates whether or not this range is empty. An range is empty when its lower bound is greater than or equal to\n * its upper bound.\n *\n * @return true if this range is empty, false otherwise\n */\n val isEmpty get() = lower >= upper\n\n /**\n * Sets this range to an empty range.\n *\n * @return this range with its lower bound and upper bound both set to zero\n */\n fun setEmpty() = set(0, 0)\n\n /**\n * Sets this range to the specified lower bound and upper bound.\n *\n * @param lower the new lower bound, inclusive\n * @param upper the new upper bound, inclusive\n *\n * @return this range set to the specified values\n */\n fun set(lower: Int, upper: Int) = apply {\n this.lower = lower\n this.upper = upper\n }\n\n /**\n * Sets this range to the lower bound and upper bound of a specified range.\n *\n * @param range the range specifying the new values\n *\n * @return this range with its lower bound and upper bound set to that of the specified range\n */\n fun copy(range: Range) = set(range.lower, range.upper)\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Range) return false\n return lower == other.lower && upper == other.upper\n }\n\n override fun hashCode(): Int {\n var result = lower\n result = 31 * result + upper\n return result\n }\n\n override fun toString() = \"Range(lower=$lower, upper=$upper)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.geom.Angle.Companion.clampLatitude\nimport earth.worldwind.geom.Angle.Companion.clampLongitude\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Angle.Companion.max\nimport earth.worldwind.geom.Angle.Companion.min\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\n\n/**\n * Geographic rectangular region.\n */\nopen class Sector(\n /**\n * The sector's minimum latitude.\n */\n var minLatitude: Angle,\n /**\n * The sector's maximum latitude.\n */\n var maxLatitude: Angle,\n /**\n * The sector's minimum longitude.\n */\n var minLongitude: Angle,\n /**\n * The sector's maximum longitude.\n */\n var maxLongitude: Angle\n) {\n /**\n * Indicates whether this sector has no dimensions.\n */\n val isEmpty get() = minLatitude == ZERO && maxLatitude == ZERO && minLongitude == ZERO && maxLongitude == ZERO\n /**\n * Indicates whether this sector contains the full range of latitude [90 to +90] and longitude [-180 to +180].\n */\n val isFullSphere get() = minLatitude == NEG90 && maxLatitude == POS90 && minLongitude == NEG180 && maxLongitude == POS180\n /**\n * Returns the angle between this sector's minimum and maximum latitudes.\n */\n val deltaLatitude get() = maxLatitude - minLatitude\n /**\n * Returns the angle between this sector's minimum and maximum longitudes.\n */\n val deltaLongitude get() = maxLongitude - minLongitude\n /**\n * Returns the angle midway between this sector's minimum and maximum latitudes.\n */\n val centroidLatitude get() = average(minLatitude, maxLatitude)\n /**\n * Returns the angle midway between this sector's minimum and maximum longitudes.\n */\n val centroidLongitude get() = average(minLongitude, maxLongitude)\n\n /**\n * Constructs an empty sector with minimum and maximum latitudes and longitudes all 0.\n */\n constructor(): this(minLatitude = ZERO, maxLatitude = ZERO, minLongitude = ZERO, maxLongitude = ZERO)\n\n /**\n * Constructs a sector with the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the coordinates\n */\n constructor(sector: Sector): this(sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude)\n\n companion object {\n @JvmStatic\n fun fromDegrees(minLatDegrees: Double, minLonDegrees: Double, deltaLatDegrees: Double, deltaLonDegrees: Double): Sector {\n val maxLatDegrees = if (deltaLatDegrees > 0)\n clampLatitude(minLatDegrees + deltaLatDegrees) else minLatDegrees\n val maxLonDegrees = if (deltaLonDegrees > 0)\n clampLongitude(minLonDegrees + deltaLonDegrees) else minLonDegrees\n return Sector(\n fromDegrees(minLatDegrees), fromDegrees(maxLatDegrees),\n fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n }\n\n @JvmStatic\n fun fromRadians(minLatRadians: Double, minLonRadians: Double, deltaLatRadians: Double, deltaLonRadians: Double): Sector {\n val maxLatRadians = if (deltaLatRadians > 0)\n clampLatitude(minLatRadians + deltaLatRadians) else minLatRadians\n val maxLonRadians = if (deltaLonRadians > 0)\n clampLongitude(minLonRadians + deltaLonRadians) else minLonRadians\n return Sector(\n fromRadians(minLatRadians), fromRadians(maxLatRadians),\n fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n }\n }\n\n /**\n * Computes the location of the angular center of this sector, which is the mid-angle of each of this sector's\n * latitude and longitude dimensions.\n *\n * @param result a pre-allocated [Location] in which to return the computed centroid\n *\n * @return the specified result argument containing the computed centroid\n */\n fun centroid(result: Location): Location {\n result.latitude = centroidLatitude\n result.longitude = centroidLongitude\n return result\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension.\n *\n * @param minLatitude the minimum latitude, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun set(minLatitude: Angle, minLongitude: Angle, deltaLatitude: Angle, deltaLongitude: Angle) = apply {\n this.minLatitude = minLatitude\n this.minLongitude = minLongitude\n maxLatitude = if (deltaLatitude.inDegrees > 0.0) (minLatitude + deltaLatitude).clampLatitude() else minLatitude\n maxLongitude = if (deltaLongitude.inDegrees > 0.0) (minLongitude + deltaLongitude).clampLongitude() else minLongitude\n }\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in degrees.\n *\n * @param minLatitude the minimum latitude in degrees, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in degrees, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in degrees; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in degrees; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setDegrees(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromDegrees(minLatitude), fromDegrees(minLongitude),\n fromDegrees(deltaLatitude), fromDegrees(deltaLongitude),\n )\n\n /**\n * Sets this sector to the specified latitude, longitude and dimension in radians.\n *\n * @param minLatitude the minimum latitude in radians, i.e., the latitude at the southwest corner of the sector.\n * @param minLongitude the minimum longitude in radians, i.e., the longitude at the southwest corner of the sector.\n * @param deltaLatitude the width of the sector in radians; must equal to or greater than zero.\n * @param deltaLongitude the height of the sector in radians; must equal to or greater than zero.\n *\n * @return this sector with its coordinates set to the specified values\n */\n fun setRadians(minLatitude: Double, minLongitude: Double, deltaLatitude: Double, deltaLongitude: Double) = set(\n fromRadians(minLatitude), fromRadians(minLongitude),\n fromRadians(deltaLatitude), fromRadians(deltaLongitude),\n )\n\n /**\n * Sets this sector to the minimum and maximum latitudes and longitudes of a specified sector.\n *\n * @param sector the sector specifying the new coordinates\n *\n * @return this sector with its coordinates set to that of the specified sector\n */\n fun copy(sector: Sector) = apply {\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n\n /**\n * Sets this sector to an empty sector.\n *\n * @return this sector with its coordinates set to an empty sector\n */\n fun setEmpty() = apply {\n minLatitude = ZERO\n maxLatitude = ZERO\n minLongitude = ZERO\n maxLongitude = ZERO\n }\n\n /**\n * Sets this sector to the full range of latitude [90 to +90] and longitude [-180 to +180].\n *\n * @return this sector with its coordinates set to the full range of latitude and longitude\n */\n fun setFullSphere() = apply {\n minLatitude = NEG90\n maxLatitude = POS90\n minLongitude = NEG180\n maxLongitude = POS180\n }\n\n /**\n * Indicates whether this sector intersects a specified sector. Two sectors intersect when both the latitude\n * boundaries and the longitude boundaries overlap by a non-zero amount. An empty sector never intersects another\n * sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersections this sector, false otherwise\n */\n fun intersects(sector: Sector) = minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n\n /**\n * Indicates if this sector is next to, or intersects, a specified sector. Two sectors intersect when the conditions\n * of the [Sector.intersects] methods have been met, and if the boundary or corner is shared with the\n * specified sector. This is a temporary implementation and will be deprecated in future releases.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test intersection with\n *\n * @return true if the specified sector intersects or is next to this sector, false otherwise\n */\n fun intersectsOrNextTo(sector: Sector) = minLatitude.inDegrees <= sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.minLatitude.inDegrees\n && minLongitude.inDegrees <= sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.minLongitude.inDegrees\n\n /**\n * Computes the intersection of this sector and a specified sector, storing the result in this sector and returning\n * whether or not the sectors intersect. Two sectors intersect when both the latitude boundaries and the longitude\n * boundaries overlap by a non-zero amount. An empty sector never intersects another sector. When there is no\n * intersection, this returns false and leaves this sector unchanged.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to intersect with\n *\n * @return this true if this sector intersects the specified sector, false otherwise\n */\n fun intersect(sector: Sector): Boolean {\n if (minLatitude.inDegrees < sector.maxLatitude.inDegrees\n && maxLatitude.inDegrees > sector.minLatitude.inDegrees\n && minLongitude.inDegrees < sector.maxLongitude.inDegrees\n && maxLongitude.inDegrees > sector.minLongitude.inDegrees\n ) {\n if (minLatitude.inDegrees < sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees > sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees < sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees > sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n return true\n }\n return false // the two sectors do not intersect\n }\n\n /**\n * Indicates whether this sector contains a specified geographic location.\n * An empty sector never contains a location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(latitude: Angle, longitude: Angle) = latitude.inDegrees in minLatitude.inDegrees..maxLatitude.inDegrees\n && longitude.inDegrees in minLongitude.inDegrees..maxLongitude.inDegrees\n\n /**\n * Indicates whether this sector contains a specified geographic location. An empty sector never contains a\n * location.\n *\n * @param location the location\n *\n * @return true if this sector contains the location, false otherwise\n */\n fun contains(location: Location) = contains(location.latitude, location.longitude)\n\n /**\n * Indicates whether this sector fully contains a specified sector. This sector contains the specified sector when\n * the specified sector's boundaries are completely contained within this sector's boundaries, or are equal to this\n * sector's boundaries. An empty sector never contains another sector.\n *
\n * The sectors are assumed to have normalized angles (angles within the range [-90, +90] latitude and [-180, +180]\n * longitude).\n *\n * @param sector the sector to test containment with\n *\n * @return true if the specified sector contains this sector, false otherwise\n */\n fun contains(sector: Sector) = minLatitude.inDegrees <= sector.minLatitude.inDegrees\n && maxLatitude.inDegrees >= sector.maxLatitude.inDegrees\n && minLongitude.inDegrees <= sector.minLongitude.inDegrees\n && maxLongitude.inDegrees >= sector.maxLongitude.inDegrees\n\n /**\n * Sets this sector to the union of itself and a specified location.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(latitude: Angle, longitude: Angle) = apply {\n if (!isEmpty) {\n minLatitude = min(minLatitude, latitude)\n maxLatitude = max(maxLatitude, latitude)\n minLongitude = min(minLongitude, longitude)\n maxLongitude = max(maxLongitude, longitude)\n } else {\n minLatitude = latitude\n maxLatitude = latitude\n minLongitude = longitude\n maxLongitude = longitude\n }\n }\n\n /**\n * Sets this sector to the union of itself and a specified location.\n *\n * @param location the location\n *\n * @return this sector, set to its union with the specified location\n */\n fun union(location: Location) = union(location.latitude, location.longitude)\n\n /**\n * Sets this sector to the union of itself and an array of specified locations. If this sector is empty, it bounds\n * the specified locations. The array is understood to contain location of at least two coordinates organized as\n * (longitude, latitude, ...), where stride indicates the number of coordinates between longitude values.\n *\n * @param array the array of locations to consider\n * @param count the number of array elements to consider\n * @param stride the number of coordinates between the first coordinate of adjacent locations - must be at least 2\n *\n * @return This bounding box set to contain the specified array of locations.\n *\n * @throws IllegalArgumentException If the array is empty, if the count is less than 0, or if the stride is\n * less than 2\n */\n fun union(array: FloatArray, count: Int, stride: Int) = apply {\n require(array.size >= stride) {\n logMessage(ERROR, \"Sector\", \"union\", \"missingArray\")\n }\n require(count >= 0) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidCount\")\n }\n require(stride >= 2) {\n logMessage(ERROR, \"Sector\", \"union\", \"invalidStride\")\n }\n val empty = isEmpty\n var minLat = if (empty) Double.MAX_VALUE else minLatitude.inDegrees\n var maxLat = if (empty) -Double.MAX_VALUE else maxLatitude.inDegrees\n var minLon = if (empty) Double.MAX_VALUE else minLongitude.inDegrees\n var maxLon = if (empty) -Double.MAX_VALUE else maxLongitude.inDegrees\n for (idx in 0 until count step stride) {\n val lon = array[idx].toDouble()\n val lat = array[idx + 1].toDouble()\n if (maxLat < lat) maxLat = lat\n if (minLat > lat) minLat = lat\n if (maxLon < lon) maxLon = lon\n if (minLon > lon) minLon = lon\n }\n if (minLat < Double.MAX_VALUE) minLatitude = fromDegrees(minLat)\n if (maxLat > -Double.MAX_VALUE) maxLatitude = fromDegrees(maxLat)\n if (minLon < Double.MAX_VALUE) minLongitude = fromDegrees(minLon)\n if (maxLon > -Double.MAX_VALUE) maxLongitude = fromDegrees(maxLon)\n }\n\n /**\n * Sets this sector to the union of itself and a specified sector.\n * This has no effect if the specified sector is empty.\n * If this sector is empty, it is set to the specified sector.\n * Assumes normalized angles: [-90, +90], [-180, +180]\n *\n * @param sector the sector to union with\n *\n * @return this sector, set to its union with the specified sector\n */\n fun union(sector: Sector) = apply {\n if (!sector.isEmpty) {\n // specified sector not empty\n if (!isEmpty) {\n // this sector not empty, make a union\n if (minLatitude.inDegrees > sector.minLatitude.inDegrees) minLatitude = sector.minLatitude\n if (maxLatitude.inDegrees < sector.maxLatitude.inDegrees) maxLatitude = sector.maxLatitude\n if (minLongitude.inDegrees > sector.minLongitude.inDegrees) minLongitude = sector.minLongitude\n if (maxLongitude.inDegrees < sector.maxLongitude.inDegrees) maxLongitude = sector.maxLongitude\n } else {\n // this sector is empty, set to the specified sector\n minLatitude = sector.minLatitude\n maxLatitude = sector.maxLatitude\n minLongitude = sector.minLongitude\n maxLongitude = sector.maxLongitude\n }\n }\n }\n\n /**\n * Translates this sector by a specified geographic increment.\n *
\n * The translated sector is assumed to have normalized angles (angles within the range [-90, +90] latitude and\n * [-180, +180] longitude).\n *\n * @param deltaLatitudeDegrees the translation's latitude increment in degrees\n * @param deltaLongitudeDegrees the translation's longitude increment in degrees\n *\n * @return this sector, translated by the specified increment\n */\n fun translate(deltaLatitudeDegrees: Double, deltaLongitudeDegrees: Double) = apply {\n minLatitude = minLatitude.plusDegrees(deltaLatitudeDegrees)\n maxLatitude = maxLatitude.plusDegrees(deltaLatitudeDegrees)\n minLongitude = minLongitude.plusDegrees(deltaLongitudeDegrees)\n maxLongitude = maxLongitude.plusDegrees(deltaLongitudeDegrees)\n }\n\n /**\n * Determines minimal level number relevant for sector of the specified size\n * @param maxLevelNumber Maximum available level number\n * @return Minimal relevant level number for sector\n */\n fun minLevelNumber(maxLevelNumber: Int): Int {\n val relWidth = abs(maxLongitude.relativeLongitude - minLongitude.relativeLongitude)\n val relHeight = abs(maxLatitude.relativeLatitude - minLatitude.relativeLatitude)\n val delta = 0.00001\n\n for (minLevelNumber in 0 until maxLevelNumber) {\n val tileSize = 1.0 / (1 shl (minLevelNumber + 1))\n if (relWidth - delta > tileSize && relHeight - delta > tileSize) return minLevelNumber\n }\n\n return maxLevelNumber\n }\n\n fun equals(other: Sector, tolerance: Double): Boolean {\n // if (this === other) return true // Empty sector is not equal self\n if (isEmpty && other.isEmpty) return false // Two empty sectors are not equal\n return abs(minLatitude.inDegrees - other.minLatitude.inDegrees) < tolerance\n && abs(maxLatitude.inDegrees - other.maxLatitude.inDegrees) < tolerance\n && abs(minLongitude.inDegrees - other.minLongitude.inDegrees) < tolerance\n && abs(maxLongitude.inDegrees - other.maxLongitude.inDegrees) < tolerance\n }\n\n override fun equals(other: Any?): Boolean {\n // if (this === other) return true // Empty sector is not equal self\n if (other !is Sector) return false\n if (isEmpty && other.isEmpty) return false // Two empty sectors are not equal\n return minLatitude == other.minLatitude && maxLatitude == other.maxLatitude\n && minLongitude == other.minLongitude && maxLongitude == other.maxLongitude\n }\n\n override fun hashCode(): Int {\n var result = minLatitude.hashCode()\n result = 31 * result + maxLatitude.hashCode()\n result = 31 * result + minLongitude.hashCode()\n result = 31 * result + maxLongitude.hashCode()\n return result\n }\n\n override fun toString() = \"Sector(minLatitude=$minLatitude, maxLatitude=$maxLatitude, minLongitude=$minLongitude, maxLongitude=$maxLongitude)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport kotlin.math.ceil\n\nopen class TileMatrix internal constructor(\n val sector: Sector, val ordinal: Int, val matrixWidth: Int, val matrixHeight: Int, val tileWidth: Int, val tileHeight: Int\n) {\n val resolution get() = sector.deltaLatitude.div(matrixHeight * tileHeight)\n\n fun tileKey(row: Int, column: Int): Long {\n val lOrd = (ordinal and 0xFF).toLong() // 8 bits\n val lRow = (row and 0xFFFFFFF).toLong() // 28 bits\n val lCol = (column and 0xFFFFFFF).toLong() // 28 bits\n return lOrd.shl(56) or lRow.shl(28) or lCol\n }\n\n fun tileSector(row: Int, column: Int): Sector {\n val deltaLat = sector.deltaLatitude.inDegrees / matrixHeight\n val deltaLon = sector.deltaLongitude.inDegrees / matrixWidth\n val minLat = sector.maxLatitude.inDegrees - deltaLat * (row + 1)\n val minLon = sector.minLongitude.inDegrees + deltaLon * column\n return fromDegrees(minLat, minLon, deltaLat, deltaLon)\n }\n\n /**\n * Calculates amount of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector): Int {\n val deltaLat = this.sector.deltaLatitude.inDegrees / matrixHeight\n val deltaLon = this.sector.deltaLongitude.inDegrees / matrixWidth\n val tilesPerLat = ceil(sector.deltaLatitude.inDegrees / deltaLat).toInt()\n val tilesPerLon = ceil(sector.deltaLongitude.inDegrees / deltaLon).toInt()\n return tilesPerLat * tilesPerLon\n }\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.makeMessage\nimport kotlin.jvm.JvmStatic\n\nopen class TileMatrixSet(val sector: Sector, val entries: List) {\n /**\n * Construct empty tile matrix set.\n */\n constructor(): this(Sector(), emptyList())\n\n companion object {\n @JvmStatic\n fun fromTilePyramid(\n sector: Sector, matrixWidth: Int, matrixHeight: Int, tileWidth: Int, tileHeight: Int, resolution: Angle\n ): TileMatrixSet {\n require(resolution.inDegrees > 0.0) {\n makeMessage(\"TileMatrixSet\", \"fromTilePyramid\", \"invalidResolution\")\n }\n var idx = 0\n var width = matrixWidth\n var height = matrixHeight\n val tileMatrices = mutableListOf()\n do {\n val matrix = TileMatrix(sector, idx++, width, height, tileWidth, tileHeight)\n tileMatrices.add(matrix)\n width *= 2\n height *= 2\n } while (matrix.resolution.inDegrees > resolution.inDegrees)\n return TileMatrixSet(sector, tileMatrices)\n }\n }\n\n val maxResolution get() = entries[entries.size - 1].resolution // entries.maxOf { it.resolution }\n\n fun indexOfMatrixNearest(resolution: Angle): Int {\n var nearestIdx = -1\n var nearestDelta2 = Double.POSITIVE_INFINITY\n for (idx in entries.indices) {\n val delta = entries[idx].resolution - resolution\n val delta2 = delta.inDegrees * delta.inDegrees\n if (nearestDelta2 > delta2) {\n nearestDelta2 = delta2\n nearestIdx = idx\n }\n }\n return nearestIdx\n }\n\n /**\n * Determine the min relevant index of matrix for the sector of this matrix set\n *\n * @param maxIndex Maximum available index\n * @return Minimum relevant index\n */\n fun minRelevantIndexOfMatrix(maxIndex: Int = entries.size - 1) = sector.minLevelNumber(maxIndex)\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Two-component vector with X and Y coordinates.\n */\nopen class Vec2(\n /**\n * The vector's X component.\n */\n var x: Double,\n /**\n * The vector's Y component.\n */\n var y: Double\n) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n *\n * @return the squared magnitude of this vector\n */\n open val magnitudeSquared get() = x * x + y * y\n /**\n * Computes the magnitude of this vector.\n *\n * @return the magnitude of this vector\n */\n val magnitude get() = sqrt(magnitudeSquared)\n\n /**\n * Constructs a two-component vector with X and Y both 0.\n */\n constructor(): this(x = 0.0, y = 0.0)\n\n /**\n * Constructs a two-component vector with the X and Y of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec2): this(vector.x, vector.y)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform2fv.\n *\n * @param result a pre-allocated array of length 2 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n open fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 2) {\n logMessage(ERROR, \"Vec2\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o] = y.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec2) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec2): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n return dx * dx + dy * dy\n }\n\n /**\n * Sets this vector to the specified X and Y.\n *\n * @param x the new X component\n * @param y the new Y component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double) = apply {\n this.x = x\n this.y = y\n }\n\n /**\n * Sets this vector to the X and Y of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X and Y set to that of the specified vector\n */\n fun copy(vector: Vec2) = set(vector.x, vector.y)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec2) = apply {\n var tmp = x\n x = vector.x\n vector.x = tmp\n\n tmp = y\n y = vector.y\n vector.y = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec2) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec2) = Vec2(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec2) {\n x += vector.x\n y += vector.y\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec2) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec2) = Vec2(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec2) {\n x -= vector.x\n y -= vector.y\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n open fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n open operator fun times(scalar: Double) = Vec2(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n open operator fun timesAssign(scalar: Double) {\n x *= scalar\n y *= scalar\n }\n\n /**\n * Multiplies this vector by a 3x3 matrix. The multiplication is performed with an implicit Z component of 1. The\n * resultant Z component of the product is then divided through the X and Y components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix3) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2]\n val y = m[3] * this.x + m[4] * y + m[5]\n val z = m[6] * this.x + m[7] * this.y + m[8]\n this.x = x / z\n this.y = y / z\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n open fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n open operator fun div(divisor: Double) = Vec2(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n open operator fun divAssign(divisor: Double) {\n x /= divisor\n y /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n open operator fun unaryMinus() = Vec2(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n open fun negate() = apply {\n x = -x\n y = -y\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n open fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec2) = x * vector.x + y * vector.y\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec2, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec2) return false\n return x == other.x && y == other.y\n }\n\n override fun hashCode(): Int {\n var result = x.hashCode()\n result = 31 * result + y.hashCode()\n return result\n }\n\n override fun toString() = \"Vec2(x=$x, y=$y)\"\n}","package earth.worldwind.geom\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.sqrt\n\n/**\n * Three-component vector with X, Y and Z coordinates.\n */\nopen class Vec3(\n /**\n * The vector's X component.\n */\n x: Double,\n /**\n * The vector's Y component.\n */\n y: Double,\n /**\n * The vector's Z component.\n */\n var z: Double\n): Vec2(x, y) {\n /**\n * Computes the squared magnitude of this vector. This is equivalent to squaring the result of\n * `magnitude` but is potentially much more efficient.\n */\n override val magnitudeSquared get() = super.magnitudeSquared + z * z\n\n /**\n * Constructs a three-component vector with X, Y and Z all 0.\n */\n constructor(): this(x = 0.0, y = 0.0, z = 0.0)\n\n /**\n * Constructs a three-component vector with the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the components\n */\n constructor(vector: Vec3): this(vector.x, vector.y, vector.z)\n\n /**\n * Copies this vector's components to the specified single precision array. The result is compatible with GLSL\n * uniform vectors, and can be passed to the function glUniform3fv.\n *\n * @param result a pre-allocated array of length 3 in which to return the components\n *\n * @return the result argument set to this vector's components\n */\n override fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 3) {\n logMessage(ERROR, \"Vec3\", \"toArray\", \"missingArray\")\n }\n result[o++] = x.toFloat()\n result[o++] = y.toFloat()\n result[o] = z.toFloat()\n return result\n }\n\n /**\n * Computes the distance from this vector to another vector.\n *\n * @param vector The vector to compute the distance to\n *\n * @return the distance between the vectors\n */\n fun distanceTo(vector: Vec3) = sqrt(distanceToSquared(vector))\n\n /**\n * Computes the squared distance from this vector to a specified vector. This is equivalent to squaring the result\n * of `distanceTo` but is potentially much more efficient.\n *\n * @param vector the vector to compute the distance to\n *\n * @return the squared distance between the vectors\n */\n fun distanceToSquared(vector: Vec3): Double {\n val dx = x - vector.x\n val dy = y - vector.y\n val dz = z - vector.z\n return dx * dx + dy * dy + dz * dz\n }\n\n /**\n * Sets this vector to the specified X, Y and Z.\n *\n * @param x the new X component\n * @param y the new Y component\n * @param z the new Z component\n *\n * @return this vector set to the specified values\n */\n fun set(x: Double, y: Double, z: Double) = apply {\n set(x, y)\n this.z = z\n }\n\n /**\n * Sets this vector to the X, Y and Z of a specified vector.\n *\n * @param vector the vector specifying the new components\n *\n * @return this vector with its X, Y and Z set to that of the specified vector\n */\n fun copy(vector: Vec3) = set(vector.x, vector.y, vector.z)\n\n /**\n * Swaps this vector with the specified vector. This vector's components are set to the values of the specified\n * vector's components, and the specified vector's components are set to the values of this vector's components.\n *\n * @param vector the vector to swap with this vector\n *\n * @return this vector set to the values of the specified vector\n */\n fun swap(vector: Vec3) = apply {\n super.swap(vector)\n val tmp = z\n z = vector.z\n vector.z = tmp\n }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n *\n * @return this vector after adding the specified vector to it\n */\n fun add(vector: Vec3) = apply { plusAssign(vector) }\n\n /**\n * Creates new vector containing sum of this and specified vectors.\n *\n * @param vector the vector to add\n *\n * @return new vector containing sum of this and specified vectors.\n */\n operator fun plus(vector: Vec3) = Vec3(this).apply { plusAssign(vector) }\n\n /**\n * Adds a specified vector to this vector.\n *\n * @param vector the vector to add\n */\n operator fun plusAssign(vector: Vec3) {\n super.plusAssign(vector)\n z += vector.z\n }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n *\n * @return this vector after subtracting the specified vector from it\n */\n fun subtract(vector: Vec3) = apply { minusAssign(vector) }\n\n /**\n * Creates new vector containing difference of this and specified vectors.\n *\n * @param vector the vector to subtract\n *\n * @return new vector containing difference of this and specified vectors.\n */\n operator fun minus(vector: Vec3) = Vec3(this).apply { minusAssign(vector) }\n\n /**\n * Subtracts a specified vector from this vector.\n *\n * @param vector the vector to subtract\n */\n operator fun minusAssign(vector: Vec3) {\n super.minusAssign(vector)\n z -= vector.z\n }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return this vector multiplied by the specified scalar\n */\n override fun multiply(scalar: Double) = apply { timesAssign(scalar) }\n\n /**\n * Creates new vector containing this vector multiplied by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n *\n * @return new vector containing this vector multiplied by a scalar.\n */\n override fun times(scalar: Double) = Vec3(this).apply { timesAssign(scalar) }\n\n /**\n * Multiplies this vector by a scalar.\n *\n * @param scalar the scalar to multiply this vector by\n */\n override fun timesAssign(scalar: Double) {\n super.timesAssign(scalar)\n z *= scalar\n }\n\n /**\n * Multiplies this vector by a 4x4 matrix. The multiplication is performed with an implicit W component of 1. The\n * resultant W component of the product is then divided through the X, Y, and Z components.\n *\n * @param matrix the matrix to multiply this vector by\n *\n * @return this vector multiplied by the specified matrix\n */\n fun multiplyByMatrix(matrix: Matrix4) = apply {\n val m = matrix.m\n val x = m[0] * x + m[1] * y + m[2] * z + m[3]\n val y = m[4] * this.x + m[5] * y + m[6] * z + m[7]\n val z = m[8] * this.x + m[9] * this.y + m[10] * z + m[11]\n val w = m[12] * this.x + m[13] * this.y + m[14] * this.z + m[15]\n this.x = x / w\n this.y = y / w\n this.z = z / w\n }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return this vector divided by the specified scalar\n */\n override fun divide(divisor: Double) = apply { divAssign(divisor) }\n\n /**\n * Creates new vector containing this vector divided by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n *\n * @return new vector containing this vector divided by a scalar\n */\n override fun div(divisor: Double) = Vec3(this).apply { divAssign(divisor) }\n\n /**\n * Divides this vector by a scalar.\n *\n * @param divisor the scalar to divide this vector by\n */\n override fun divAssign(divisor: Double) {\n super.divAssign(divisor)\n z /= divisor\n }\n\n /**\n * Creates new vector which has components with opposite sign to the vector.\n *\n * @return new vector, which has components with opposite sign to the vector\n */\n override fun unaryMinus() = Vec3(this).negate()\n\n /**\n * Negates the components of this vector.\n *\n * @return this vector, negated\n */\n override fun negate() = apply {\n super.negate()\n z = -z\n }\n\n /**\n * Normalizes this vector to a unit vector.\n *\n * @return this vector, normalized\n */\n override fun normalize() = apply {\n val magnitude = magnitude\n if (magnitude != 0.0) {\n x /= magnitude\n y /= magnitude\n z /= magnitude\n }\n }\n\n /**\n * Computes the scalar dot product of this vector and a specified vector.\n *\n * @param vector the vector to multiply\n *\n * @return the dot product of the two vectors\n */\n fun dot(vector: Vec3) = super.dot(vector) + z * vector.z\n\n /**\n * Computes the cross product of this vector and a specified vector, modifying this vector.\n *\n * @param vector the vector to cross with this vector\n *\n * @return this vector set to the cross product of itself and the specified vector\n */\n fun cross(vector: Vec3) = apply {\n val x = y * vector.z - z * vector.y\n val y = z * vector.x - this.x * vector.z\n val z = this.x * vector.y - this.y * vector.x\n this.x = x\n this.y = y\n this.z = z\n }\n\n /**\n * Computes the cross product of two vectors, setting this vector to the result.\n *\n * @param a the first vector\n * @param b the second vector\n *\n * @return this vector set to the cross product of the two specified vectors\n */\n fun cross(a: Vec3, b: Vec3) = apply {\n x = a.y * b.z - a.z * b.y\n y = a.z * b.x - a.x * b.z\n z = a.x * b.y - a.y * b.x\n }\n\n /**\n * Mixes (interpolates) a specified vector with this vector, modifying this vector.\n *\n * @param vector The vector to mix with this one\n * @param weight The relative weight of this vector, typically in the range [0,1]\n *\n * @return this vector modified to the mix of itself and the specified vector\n */\n fun mix(vector: Vec3, weight: Double) = apply {\n val w0 = 1 - weight\n x = x * w0 + vector.x * weight\n y = y * w0 + vector.y * weight\n z = z * w0 + vector.z * weight\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Vec3) return false\n if (!super.equals(other)) return false\n return z == other.z\n }\n\n override fun hashCode(): Int {\n var result = super.hashCode()\n result = 31 * result + z.hashCode()\n return result\n }\n\n override fun toString() = \"Vec3(x=$x, y=$y, z=$z)\"\n}","package earth.worldwind.geom\n\n/**\n * Rectangular region in a two-dimensional coordinate system expressed as an origin and dimensions extending from the\n * origin.\n */\nopen class Viewport(\n /**\n * The X component of the viewport's origin.\n */\n var x: Int,\n /**\n * The Y component of the viewport's origin.\n */\n var y: Int,\n /**\n * The viewport's width.\n */\n var width: Int,\n /**\n * The viewport's height.\n */\n var height: Int\n) {\n /**\n * Constructs an empty viewport width X, Y, width and height all zero.\n */\n constructor(): this(x = 0, y = 0, width = 0, height = 0)\n\n /**\n * Constructs a viewport with the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the values\n */\n constructor(viewport: Viewport): this(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport is empty. A viewport is empty when either its width or its height are\n * zero (or negative).\n *\n * @return true if this viewport is empty, false otherwise\n */\n val isEmpty get() = width <= 0 || height <= 0\n\n /**\n * Sets this viewport to an empty viewport.\n *\n * @return this viewport with its width and height both set to zero\n */\n fun setEmpty() = apply {\n width = 0\n height = 0\n }\n\n /**\n * Sets this viewport to the specified origin and dimensions.\n *\n * @param x the new X component of the viewport's lower left corner\n * @param y the new Y component of the viewport's lower left corner\n * @param width the viewport's new width\n * @param height the viewport's new height\n *\n * @return this viewport set to the specified values\n */\n fun set(x: Int, y: Int, width: Int, height: Int) = apply {\n this.x = x\n this.y = y\n this.width = width\n this.height = height\n }\n\n /**\n * Sets this viewport to the origin and dimensions of a specified viewport.\n *\n * @param viewport the viewport specifying the new values\n *\n * @return this viewport with its origin and dimensions set to that of the specified viewport\n */\n fun copy(viewport: Viewport) = set(viewport.x, viewport.y, viewport.width, viewport.height)\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param x the X component of the viewport to test intersection with\n * @param y the Y component of the viewport to test intersection with\n * @param width the viewport width to test intersection with\n * @param height the viewport height to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(x: Int, y: Int, width: Int, height: Int) =\n this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height\n\n /**\n * Indicates whether this viewport intersects a specified viewport. Two viewport intersect when both overlap by a\n * non-zero amount. An empty viewport never intersects another viewport.\n *\n * @param viewport the viewport to test intersection with\n *\n * @return true if the specified viewport intersections this viewport, false otherwise\n */\n fun intersects(viewport: Viewport) =\n width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param x the X component of the viewport to intersect with\n * @param y the Y component of the viewport to intersect with\n * @param width the viewport width to intersect with\n * @param height the viewport height to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(x: Int, y: Int, width: Int, height: Int): Boolean {\n if (this.width > 0 && this.height > 0 && width > 0 && height > 0\n && this.x < x + width && x < this.x + this.width\n && this.y < y + height && y < this.y + this.height) {\n if (this.x < x) {\n this.width -= x - this.x\n this.x = x\n }\n if (this.y < y) {\n this.height -= y - this.y\n this.y = y\n }\n if (this.x + this.width > x + width) this.width = x + width - this.x\n if (this.y + this.height > y + height) this.height = y + height - this.y\n return true\n }\n return false\n }\n\n /**\n * Computes the intersection of this viewport and a specified viewport, storing the result in this viewport and\n * returning whether the viewport intersects. Two viewport intersect when both overlap by a non-zero amount.\n * An empty viewport never intersects another viewport.\n *
\n * When there is no intersection, this returns false and leaves this viewport unchanged. To test for intersection\n * without modifying this viewport, use [intersects].\n *\n * @param viewport the viewport to intersect with\n *\n * @return true if this viewport intersects the specified viewport, false otherwise\n */\n fun intersect(viewport: Viewport): Boolean {\n if (width > 0 && height > 0 && viewport.width > 0 && viewport.height > 0\n && x < viewport.x + viewport.width && viewport.x < x + width\n && y < viewport.y + viewport.height && viewport.y < y + height) {\n if (x < viewport.x) {\n width -= viewport.x - x\n x = viewport.x\n }\n if (y < viewport.y) {\n height -= viewport.y - y\n y = viewport.y\n }\n if (x + width > viewport.x + viewport.width) width = viewport.x + viewport.width - x\n if (y + height > viewport.y + viewport.height) height = viewport.y + viewport.height - y\n return true\n }\n return false\n }\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param point the point\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(point: Vec2) = contains(point.x, point.y)\n\n /**\n * Indicates whether this viewport contains a specified point. An empty viewport never contains a point.\n *\n * @param x the point's X component\n * @param y the point's Y component\n *\n * @return true if this viewport contains the point, false otherwise\n */\n fun contains(x: Number, y: Number) = x.toDouble() >= this.x && x.toDouble() < this.x + width\n && y.toDouble() >= this.y && y.toDouble() < this.y + height\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Viewport) return false\n return x == other.x && y == other.y && width == other.width && height == other.height\n }\n\n override fun hashCode(): Int {\n var result = x\n result = 31 * result + y\n result = 31 * result + width\n result = 31 * result + height\n return result\n }\n\n override fun toString() = \"Viewport(x=$x, y=$y, width=$width, height=$height)\"\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Location\nimport earth.worldwind.util.format.format\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.roundToInt\n\nclass GKCoord private constructor(val latitude: Angle, val longitude: Angle, val x: Double, val y: Double) {\n companion object {\n /**\n * Create a set of Gauss-Kruger coordinates from a pair of latitude and longitude.\n *\n * @param latitude the latitude.\n * @param longitude the longitude.\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to GK coordinates fails.\n */\n @JvmStatic\n fun fromLatLon(latitude: Angle, longitude: Angle) = fromLatLon(latitude, longitude, 0)\n\n /**\n * Create a set of Gauss-Kruger coordinates from a pair of latitude and longitude.\n *\n * @param latitude the latitude.\n * @param longitude the longitude.\n * @param zone optional zone to force coordinates conversion in it.\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to GK coordinates fails.\n */\n @JvmStatic\n fun fromLatLon(latitude: Angle, longitude: Angle, zone: Int): GKCoord {\n val converter = GKCoordConverter()\n val err = converter.convertGeodeticToGK(latitude.inRadians, longitude.inRadians, zone)\n require(err == GKCoordConverter.NO_ERROR) { \"Gauss-Kruger Conversion Error\" }\n return GKCoord(latitude, longitude, converter.northing, converter.easting)\n }\n\n /**\n * Create a set of Gauss-Kruger coordinates.\n *\n * @param x the northing distance (X) in meters.\n * @param y the easting distance (Y) in meters\n *\n * @return the corresponding [GKCoord].\n *\n * @throws IllegalArgumentException if the conversion to Gauss-Kruger coordinates fails.\n */\n @JvmStatic\n fun fromXY(x: Double, y: Double): GKCoord {\n val converter = GKCoordConverter()\n val err = converter.convertGKToGeodetic(y, x)\n require(err == GKCoordConverter.NO_ERROR) { \"Gauss-Kruger Conversion Error\" }\n return GKCoord(converter.latitude.radians, converter.longitude.radians, x, y)\n }\n\n /**\n * Create a Gauss-Kruger rectangular coordinate from a standard XY coordinate text string.\n *\n * @param xyString the XY coordinate text string.\n * @return the corresponding [GKCoord].\n * @throws IllegalArgumentException if the [xyString] is empty or the conversion to geodetic coordinates fails.\n */\n @JvmStatic\n fun fromString(xyString: String): GKCoord {\n val tokens = xyString.replace(\"[-.,;]\".toRegex(), \"\").trim { it <= ' ' }\n .split(\"\\\\s+\".toRegex()).toTypedArray()\n require(tokens.size >= 2 && tokens[1].length > 6) { \"Gauss-Kruger Conversion Error\" }\n val x = tokens[0].toDouble()\n val y = tokens[1].toDouble()\n val north = xyString.count { it == '-' }.mod(2) == 0\n return fromXY(if (north) x else -x, y)\n }\n }\n\n fun toLocation() = Location(latitude, longitude)\n\n override fun toString(): String {\n val x = x.roundToInt()\n val y = y.roundToInt()\n val suffix = 100000\n return \"%02d-%05d, %02d-%05d\".format(x / suffix, abs(x % suffix), y / suffix, abs(y % suffix))\n }\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Ellipsoid\nimport kotlin.math.*\n\n/**\n * Converter used to translate Gauss-Kruger rectangular coordinates to and from geodetic latitude and longitude.\n */\ninternal class GKCoordConverter {\n companion object {\n const val NO_ERROR = 0x0000\n }\n\n private val ellipsoid = Ellipsoid.Krasovsky\n\n /** Easting (Y) in meters */\n var easting = 0.0\n private set\n /** Northing (X) in meters */\n var northing = 0.0\n private set\n /** Latitude in radians. */\n var latitude = 0.0\n private set\n /** Longitude in radians.*/\n var longitude = 0.0\n private set\n\n /**\n * The function Convert_Geodetic_To_GK converts geodetic (latitude and longitude) coordinates to Gauss-Kruger\n * projection (easting and northing) coordinates according to the Krasovsky ellipsoid.\n *\n * @param lat Latitude in radians\n * @param lon Longitude in radians\n * @param zone optional zone to force coordinates conversion in it\n *\n * @return error code\n */\n @Suppress(\"NAME_SHADOWING\")\n fun convertGeodeticToGK(lat: Double, lon: Double, zone: Int = 0): Int {\n val lon = if (lon < 0.0) lon + 2.0 * PI else lon\n val zone = if (zone != 0) zone else (lon * 180.0 / PI).toInt() / 6 + 1\n val a = ellipsoid.semiMajorAxis\n val b = ellipsoid.semiMinorAxis\n val e2 = (a * a - b * b) / (a * a)\n val n = (a - b) / (a + b)\n val nPow2 = n * n\n val nPow3 = n * n * n\n\n val f = 1.0\n val lat0 = 0.0\n val lon0 = (zone * 6 - 3) * PI / 180.0\n val n0 = 0.0\n val e0 = zone * 1e6 + 500000.0\n\n val dLon = lon - lon0\n val dLat = lat - lat0\n val pLat = lat + lat0\n\n val sinLat = sin(lat)\n val sinLatPow2 = sinLat * sinLat\n val cosLat = cos(lat)\n val cosLatPow3 = cosLat * cosLat * cosLat\n val cosLatPow5 = cosLat * cosLat * cosLat * cosLat * cosLat\n val tanLat = tan(lat)\n val tanLatPow2 = tanLat * tanLat\n val tanLatPow4 = tanLatPow2 * tanLatPow2\n\n val v = a * f * (1.0 - e2 * sinLatPow2).pow(-0.5)\n val p = a * f * (1.0 - e2) * (1 - e2 * sinLatPow2).pow(-1.5)\n val n2 = v / p - 1.0\n val m1 = (1.0 + n + 5.0 / 4.0 * nPow2 + 5.0 / 4.0 * nPow3) * dLat\n val m2 = (3.0 * n + 3.0 * nPow2 + 21.0 / 8.0 * nPow3) * sin(dLat) * cos(pLat)\n val m3 = (15.0 / 8.0 * nPow2 + 15.0 / 8.0 * nPow3) * sin(2.0 * dLat) * cos(2 * pLat)\n val m4 = 35.0 / 24.0 * nPow3 * sin(3 * dLat) * cos(3.0 * pLat)\n val m = b * f * (m1 - m2 + m3 - m4)\n val i = m + n0\n val ii = v / 2.0 * sinLat * cosLat\n val iii = v / 24.0 * sinLat * cosLatPow3 * (5.0 - tanLatPow2 + 9.0 * n2)\n val iiia = v / 720.0 * sinLat * cosLatPow5 * (61.0 - 58.0 * tanLatPow2 + tanLatPow4)\n val iv = v * cosLat\n val V = v / 6.0 * cosLatPow3 * (v / p - tanLatPow2)\n val VI = v / 120.0 * cosLatPow5 * (5.0 - 18.0 * tanLatPow2 + tanLatPow4 + 14 * n2 - 58 * tanLatPow2 * n2)\n\n easting = e0 + iv * dLon + V * dLon * dLon * dLon + VI * dLon * dLon * dLon * dLon * dLon\n northing = i + ii * dLon * dLon + iii * dLon * dLon * dLon * dLon + iiia * dLon * dLon * dLon * dLon * dLon * dLon\n\n return NO_ERROR\n }\n\n fun convertGKToGeodetic(easting: Double, northing: Double): Int {\n val zone = (easting / 1e6).toInt()\n val l0 = (6 * (if (zone <= 30) zone else zone - 60) - 3) * PI / 180.0\n val x = northing\n val y = easting - (zone * 1e6 + 500000.0)\n val beta = x / 6367558.497\n val cosBeta = cos(beta)\n val cos2beta = cosBeta * cosBeta\n val bx = ((2382 * cos2beta + 293609) * cos2beta + 50221747) * sin(beta) * cos(beta) * 1e-10 + beta\n val cosBx = cos(bx)\n val cos2Bx = cosBx * cosBx\n val sinBx = sin(bx)\n val sin2Bx = sinBx * sinBx\n val a22 = (0.003369263 * cos2Bx + 0.5) * sinBx * cosBx\n val a24 = ((0.0056154 - 0.0000151 * cos2Bx) * cos2Bx + 0.1616128) * cos2Bx + 0.25\n val a26 = ((0.00389 * cos2Bx + 0.04310) * cos2Bx - 0.00168) * cos2Bx + 0.125\n val a28 = ((0.013 * cos2Bx + 0.008) * cos2Bx - 0.031) * cos2Bx + 0.078\n val b13 = (1 / 6.0 - 0.00112309 * cos2Bx) * cos2Bx - 1 / 3.0\n val b15 = ((0.008783 - 0.000112 * cos2Bx) * cos2Bx - 1 / 6.0) * cos2Bx + 0.2\n val b17 = (1 / 6.0 - 0.0361 * cos2Bx) * cos2Bx - 0.1429\n val b19 = ((0.064 - 0.004 * cos2Bx) * cos2Bx - 1 / 6.0) * cos2Bx + 1 / 9.0\n val nx = ((0.605 * sin2Bx + 107.155) * sin2Bx + 21346.142) * sin2Bx + ellipsoid.semiMajorAxis\n val z = y / (nx * cosBx)\n\n latitude = bx + (((a28 * z * z - a26) * z * z + a24) * z * z - 1) * z * z * a22\n longitude = l0 + ((((b19 * z * z + b17) * z * z + b15) * z * z + b13) * z * z + 1) * z\n\n return NO_ERROR\n }\n\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Ellipsoid\nimport kotlin.jvm.JvmStatic\n\ndata class HelmertParameters(\n // Linear transformation elements, in metres\n val dX: Double,\n val dY: Double,\n val dZ: Double,\n\n // Angular transformation elements, in arc-seconds\n val omegaX: Double,\n val omegaY: Double,\n val omegaZ: Double,\n\n // Scale differential\n val m: Double,\n\n // Ellipsoid\n val fromEllipsoid: Ellipsoid,\n val toEllipsoid: Ellipsoid\n) {\n companion object {\n @JvmStatic val UCS2000_WGS84 = HelmertParameters(\n 24.3234, -121.3708, -75.8275,\n 0.0, 0.0, 0.0,\n -1.74e-9, Ellipsoid.Krasovsky, Ellipsoid.WGS84\n )\n @JvmStatic val WGS84_UCS2000 = HelmertParameters(\n -24.3234, 121.3708, 75.8275,\n 0.0, 0.0, 0.0,\n 1.74e-9, Ellipsoid.WGS84, Ellipsoid.Krasovsky\n )\n @JvmStatic val SK42_WGS84 = HelmertParameters(\n 23.92, -141.27, -80.9,\n 0.0, 0.0, 0.0,\n 0.0, Ellipsoid.Krasovsky, Ellipsoid.WGS84\n )\n @JvmStatic val WGS84_SK42 = HelmertParameters(\n -23.92, 141.27, 80.9,\n 0.0, 0.0, 0.0,\n 0.0, Ellipsoid.WGS84, Ellipsoid.Krasovsky\n )\n }\n}","package earth.worldwind.geom.coords\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.projection.Wgs84Projection\n\nobject HelmertTransformation {\n\n fun transform(position: Position, parameters: HelmertParameters, result: Position = Position()) =\n transform(position.latitude, position.longitude, position.altitude, parameters, result)\n\n fun transform(latitude: Angle, longitude: Angle, altitude: Double, parameters: HelmertParameters, result: Position = Position()): Position {\n val projection = Wgs84Projection()\n val fromGlobe = Globe(parameters.fromEllipsoid, projection)\n val toGlobe = Globe(parameters.toEllipsoid, projection)\n val fromCartesian = fromGlobe.geographicToCartesian(latitude, longitude, altitude, Vec3())\n val toCartesian = transform(fromCartesian, parameters)\n return toGlobe.cartesianToGeographic(toCartesian.x, toCartesian.y, toCartesian.z, result)\n }\n\n fun transform(point: Vec3, parameters: HelmertParameters, result: Vec3 = Vec3()) =\n transform(point.x, point.y, point.z, parameters, result)\n\n fun transform(x: Double, y: Double, z: Double, parameters: HelmertParameters, result: Vec3 = Vec3()) = result.set(\n x + -parameters.omegaZ * z + parameters.m * x + parameters.omegaX * y + parameters.dY,\n y + parameters.omegaY * z + -parameters.omegaX * x + parameters.m * y + parameters.dZ,\n z + parameters.m * z + parameters.omegaZ * x + -parameters.omegaY * y + parameters.dX\n )\n\n}","package earth.worldwind.geom.coords\n\nenum class Hemisphere { N, S; }","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds an immutable MGRS coordinate string along with\r\n * the corresponding latitude and longitude.\r\n */\r\nclass MGRSCoord private constructor(val latitude: Angle, val longitude: Angle, private val MGRSString: String) {\r\n companion object {\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the maximum precision of five digits (one meter).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle) = fromLatLon(latitude, longitude, 5)\r\n\r\n /**\r\n * Create a MGRS coordinate from a pair of latitude and longitude [Angle]\r\n * with the given precision or number of digits (1 to 5).\r\n *\r\n * @param latitude the latitude [Angle].\r\n * @param longitude the longitude [Angle].\r\n * @param precision the number of digits used for easting and northing (1 to 5).\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the conversion to MGRS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle, precision: Int): MGRSCoord {\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertGeodeticToMGRS(latitude.inRadians, longitude.inRadians, precision)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(latitude, longitude, converter.mgrsString)\r\n }\r\n\r\n /**\r\n * Create a MGRS coordinate from a standard MGRS coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * Valid examples:
\r\n * 32TLP5626635418
\r\n * 32 T LP 56266 35418
\r\n * 11S KU 528 111
\r\n *\r\n * @param MGRSString the MGRS coordinate text string.\r\n * @return the corresponding [MGRSCoord].\r\n * @throws IllegalArgumentException if the [MGRSString] is empty,\r\n * the [Globe] is null, or the conversion to geodetic coordinates fails (invalid coordinate string).\r\n */\r\n @JvmStatic\r\n fun fromString(MGRSString: String): MGRSCoord {\r\n var str = MGRSString\r\n str = str.uppercase().replace(\" \", \"\")\r\n val converter = MGRSCoordConverter()\r\n val err = converter.convertMGRSToGeodetic(str)\r\n require(err == MGRSCoordConverter.NO_ERROR) { \"MGRS Conversion Error\" }\r\n return MGRSCoord(converter.latitude.radians, converter.longitude.radians, str)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = MGRSString\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.util.format.format\r\nimport kotlin.math.PI\r\nimport kotlin.math.floor\r\nimport kotlin.math.pow\r\n\r\n/*\r\n * Converter used to translate MGRS coordinate strings to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans mgrs.c and mgrs.h code. Contains routines to convert from Geodetic to MGRS and\r\n * the other direction.\r\n */\r\ninternal class MGRSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val STRING_ERROR = 0x0004\r\n const val PRECISION_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0040\r\n const val NORTHING_ERROR = 0x0080\r\n const val HEMISPHERE_ERROR = 0x0200\r\n const val LAT_WARNING = 0x0400\r\n const val UTM_ERROR = 0x1000\r\n const val UPS_ERROR = 0x2000\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val MAX_PRECISION = 5\r\n private const val MIN_UTM_LAT = -80 * PI / 180.0 // -80 degrees in radians\r\n private const val MAX_UTM_LAT = 84 * PI / 180.0 // 84 degrees in radians\r\n private const val DEG_TO_RAD = 0.017453292519943295 // PI/180\r\n private const val RAD_TO_DEG = 57.29577951308232 // 180/PI\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n private const val TWO_MIL = 2000000.0\r\n private const val ONE_HT = 100000.0\r\n private const val CLARKE_1866 = \"CC\"\r\n private const val CLARKE_1880 = \"CD\"\r\n private const val BESSEL_1841 = \"BR\"\r\n private const val BESSEL_1841_NAMIBIA = \"BN\"\r\n private const val LETTER_A = 0 /* ARRAY INDEX FOR LETTER A */\r\n private const val LETTER_B = 1 /* ARRAY INDEX FOR LETTER B */\r\n private const val LETTER_C = 2 /* ARRAY INDEX FOR LETTER C */\r\n private const val LETTER_D = 3 /* ARRAY INDEX FOR LETTER D */\r\n private const val LETTER_E = 4 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_F = 5 /* ARRAY INDEX FOR LETTER E */\r\n private const val LETTER_G = 6 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_H = 7 /* ARRAY INDEX FOR LETTER H */\r\n private const val LETTER_I = 8 /* ARRAY INDEX FOR LETTER I */\r\n private const val LETTER_J = 9 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_K = 10 /* ARRAY INDEX FOR LETTER J */\r\n private const val LETTER_L = 11 /* ARRAY INDEX FOR LETTER L */\r\n private const val LETTER_M = 12 /* ARRAY INDEX FOR LETTER M */\r\n private const val LETTER_N = 13 /* ARRAY INDEX FOR LETTER N */\r\n private const val LETTER_O = 14 /* ARRAY INDEX FOR LETTER O */\r\n private const val LETTER_P = 15 /* ARRAY INDEX FOR LETTER P */\r\n private const val LETTER_Q = 16 /* ARRAY INDEX FOR LETTER Q */\r\n private const val LETTER_R = 17 /* ARRAY INDEX FOR LETTER R */\r\n private const val LETTER_S = 18 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_T = 19 /* ARRAY INDEX FOR LETTER S */\r\n private const val LETTER_U = 20 /* ARRAY INDEX FOR LETTER U */\r\n private const val LETTER_V = 21 /* ARRAY INDEX FOR LETTER V */\r\n private const val LETTER_W = 22 /* ARRAY INDEX FOR LETTER W */\r\n private const val LETTER_X = 23 /* ARRAY INDEX FOR LETTER X */\r\n private const val LETTER_Y = 24 /* ARRAY INDEX FOR LETTER Y */\r\n private const val LETTER_Z = 25 /* ARRAY INDEX FOR LETTER Z */\r\n private const val MGRS_LETTERS = 3 /* NUMBER OF LETTERS IN MGRS */\r\n private const val alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\r\n\r\n // UPS Constants are in the following order:\r\n // letter representing latitude band\r\n // 2nd letter range - high number\r\n // 2nd letter range - low number\r\n // 3rd letter range - high number (UPS)\r\n // False easting based on 2nd letter\r\n // False northing based on 3rd letter\r\n private val upsConstants = arrayOf(\r\n intArrayOf(LETTER_A, LETTER_J, LETTER_Z, LETTER_Z, 800000, 800000),\r\n intArrayOf(LETTER_B, LETTER_A, LETTER_R, LETTER_Z, 2000000, 800000),\r\n intArrayOf(LETTER_Y, LETTER_J, LETTER_Z, LETTER_P, 800000, 1300000),\r\n intArrayOf(LETTER_Z, LETTER_A, LETTER_J, LETTER_P, 2000000, 1300000)\r\n )\r\n\r\n // Latitude Band Constants are in the following order:\r\n // letter representing latitude band\r\n // minimum northing for latitude band\r\n // upper latitude for latitude band\r\n // lower latitude for latitude band\r\n private val latitudeBandConstants = arrayOf(\r\n doubleArrayOf(LETTER_C.toDouble(), 1100000.0, -72.0, -80.5, 0.0),\r\n doubleArrayOf(LETTER_D.toDouble(), 2000000.0, -64.0, -72.0, 2000000.0),\r\n doubleArrayOf(LETTER_E.toDouble(), 2800000.0, -56.0, -64.0, 2000000.0),\r\n doubleArrayOf(LETTER_F.toDouble(), 3700000.0, -48.0, -56.0, 2000000.0),\r\n doubleArrayOf(LETTER_G.toDouble(), 4600000.0, -40.0, -48.0, 4000000.0),\r\n doubleArrayOf(LETTER_H.toDouble(), 5500000.0, -32.0, -40.0, 4000000.0),\r\n doubleArrayOf(LETTER_J.toDouble(), 6400000.0, -24.0, -32.0, 6000000.0),\r\n doubleArrayOf(LETTER_K.toDouble(), 7300000.0, -16.0, -24.0, 6000000.0),\r\n doubleArrayOf(LETTER_L.toDouble(), 8200000.0, -8.0, -16.0, 8000000.0),\r\n doubleArrayOf(LETTER_M.toDouble(), 9100000.0, 0.0, -8.0, 8000000.0),\r\n doubleArrayOf(LETTER_N.toDouble(), 0.0, 8.0, 0.0, 0.0),\r\n doubleArrayOf(LETTER_P.toDouble(), 800000.0, 16.0, 8.0, 0.0),\r\n doubleArrayOf(LETTER_Q.toDouble(), 1700000.0, 24.0, 16.0, 0.0),\r\n doubleArrayOf(LETTER_R.toDouble(), 2600000.0, 32.0, 24.0, 2000000.0),\r\n doubleArrayOf(LETTER_S.toDouble(), 3500000.0, 40.0, 32.0, 2000000.0),\r\n doubleArrayOf(LETTER_T.toDouble(), 4400000.0, 48.0, 40.0, 4000000.0),\r\n doubleArrayOf(LETTER_U.toDouble(), 5300000.0, 56.0, 48.0, 4000000.0),\r\n doubleArrayOf(LETTER_V.toDouble(), 6200000.0, 64.0, 56.0, 6000000.0),\r\n doubleArrayOf(LETTER_W.toDouble(), 7000000.0, 72.0, 64.0, 6000000.0),\r\n doubleArrayOf(LETTER_X.toDouble(), 7900000.0, 84.5, 72.0, 6000000.0)\r\n )\r\n }\r\n\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n var mgrsString = \"\"\r\n private set\r\n private var ltr2LowValue = 0\r\n private var ltr2HighValue = 0 // this is only used for doing MGRS to xxx conversions.\r\n private var falseNorthing = 0.0\r\n private var lastLetter = 0\r\n private var lastError = NO_ERROR\r\n private var north = 0.0\r\n private var south = 0.0\r\n private var minNorthing = 0.0\r\n private var northingOffset = 0.0\r\n private val mgrsEllipsoidCode = \"WE\"\r\n\r\n private class MGRSComponents(\r\n val zone: Int, val latitudeBand: Int, val squareLetter1: Int, val squareLetter2: Int,\r\n val easting: Double, val northing: Double, val precision: Int\r\n ) {\r\n override fun toString() = \"MGRS: \" + zone + \" \" + alphabet[latitudeBand] + \" \" +\r\n alphabet[squareLetter1] + alphabet[squareLetter2] + \" \" +\r\n easting + \" \" + northing + \" \" + \"(\" + precision + \")\"\r\n }\r\n\r\n /**\r\n * The function ConvertMGRSToGeodetic converts an MGRS coordinate string to Geodetic (latitude and longitude)\r\n * coordinates according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param MGRSString MGRS coordinate string.\r\n *\r\n * @return the error code.\r\n */\r\n fun convertMGRSToGeodetic(MGRSString: String): Int {\r\n latitude = 0.0\r\n longitude = 0.0\r\n val mgrs = breakMGRSString(MGRSString) ?: return lastError\r\n var errorCode = NO_ERROR\r\n if (mgrs.zone != 0) {\r\n val utm = convertMGRSToUTM(MGRSString)\r\n if (utm != null) {\r\n latitude = utm.latitude.inRadians\r\n longitude = utm.longitude.inRadians\r\n } else errorCode = UTM_ERROR\r\n } else {\r\n val ups = convertMGRSToUPS(MGRSString)\r\n if (ups != null) {\r\n latitude = ups.latitude.inRadians\r\n longitude = ups.longitude.inRadians\r\n } else errorCode = UPS_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Break_MGRS_String breaks down an MGRS coordinate string into its component parts. Updates\r\n * last_error.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [MGRSComponents] or null.\r\n */\r\n private fun breakMGRSString(MGRSString: String): MGRSComponents? {\r\n var str = MGRSString\r\n var i = 0\r\n var errorCode = NO_ERROR\r\n var zone = 0\r\n val letters = IntArray(3)\r\n var easting = 0L\r\n var northing = 0L\r\n var precision = 0\r\n str = str.uppercase().replace(\"\\\\s\", \"\")\r\n var j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n var numDigits = i - j\r\n if (numDigits <= 2) {\r\n if (numDigits > 0) {\r\n /* get zone */\r\n zone = str.substring(j, i).toInt()\r\n if (zone < 1 || zone > 60) errorCode = errorCode or STRING_ERROR\r\n }\r\n }\r\n j = i\r\n while (i < str.length && str[i].isLetter()) i++\r\n val numLetters = i - j\r\n if (numLetters == 3) {\r\n /* get letters */\r\n letters[0] = alphabet.indexOf(str[j].uppercaseChar())\r\n if (letters[0] == LETTER_I || letters[0] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[1] = alphabet.indexOf(str[j + 1].uppercaseChar())\r\n if (letters[1] == LETTER_I || letters[1] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n letters[2] = alphabet.indexOf(str[j + 2].uppercaseChar())\r\n if (letters[2] == LETTER_I || letters[2] == LETTER_O) errorCode = errorCode or STRING_ERROR\r\n } else errorCode = errorCode or STRING_ERROR\r\n j = i\r\n while (i < str.length && str[i].isDigit()) i++\r\n numDigits = i - j\r\n if (numDigits <= 10 && numDigits % 2 == 0) {\r\n /* get easting, northing and precision */\r\n /* get easting & northing */\r\n val n = numDigits / 2\r\n precision = n\r\n if (n > 0) {\r\n easting = str.substring(j, j + n).toLong()\r\n northing = str.substring(j + n, j + n + n).toLong()\r\n val multiplier = 10.0.pow(5 - n).toLong()\r\n easting *= multiplier\r\n northing *= multiplier\r\n } else {\r\n easting = 0\r\n northing = 0\r\n }\r\n } else errorCode = errorCode or STRING_ERROR\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR) MGRSComponents(\r\n zone, letters[0], letters[1], letters[2],\r\n easting.toDouble(), northing.toDouble(), precision\r\n ) else null\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Band_Min_Northing receives a latitude band letter and uses the Latitude_Band_Table to\r\n * determine the minimum northing for that latitude band letter. Updates min_northing.\r\n *\r\n * @param letter Latitude band letter.\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeBandMinNorthing(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n minNorthing = latitudeBandConstants[letter - 2][1]\r\n northingOffset = latitudeBandConstants[letter - 2][4]\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n minNorthing = latitudeBandConstants[letter - 3][1]\r\n northingOffset = latitudeBandConstants[letter - 3][4]\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n minNorthing = latitudeBandConstants[letter - 4][1]\r\n northingOffset = latitudeBandConstants[letter - 4][4]\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Latitude_Range receives a latitude band letter and uses the Latitude_Band_Table to determine the\r\n * latitude band boundaries for that latitude band letter. Updates north and south.\r\n *\r\n * @param letter the Latitude band letter\r\n *\r\n * @return the error code.\r\n */\r\n private fun getLatitudeRange(letter: Int): Int {\r\n var errorCode = NO_ERROR\r\n when (letter) {\r\n in LETTER_C..LETTER_H -> {\r\n north = latitudeBandConstants[letter - 2][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 2][3] * DEG_TO_RAD\r\n }\r\n in LETTER_J..LETTER_N -> {\r\n north = latitudeBandConstants[letter - 3][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 3][3] * DEG_TO_RAD\r\n }\r\n in LETTER_P..LETTER_X -> {\r\n north = latitudeBandConstants[letter - 4][2] * DEG_TO_RAD\r\n south = latitudeBandConstants[letter - 4][3] * DEG_TO_RAD\r\n }\r\n else -> errorCode = errorCode or STRING_ERROR\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function convertMGRSToUTM converts an MGRS coordinate string to UTM projection (zone, hemisphere, easting and\r\n * northing) coordinates according to the current ellipsoid parameters. Updates last_error if any errors occurred.\r\n *\r\n * @param MGRSString the MGRS coordinate string\r\n *\r\n * @return the corresponding [UTMCoord] or null.\r\n */\r\n private fun convertMGRSToUTM(MGRSString: String): UTMCoord? {\r\n var errorCode = NO_ERROR\r\n var utm: UTMCoord? = null\r\n val mgrs = breakMGRSString(MGRSString)\r\n if (mgrs == null) errorCode = errorCode or STRING_ERROR else {\r\n if (mgrs.latitudeBand == LETTER_X && (mgrs.zone == 32 || mgrs.zone == 34 || mgrs.zone == 36))\r\n errorCode = errorCode or STRING_ERROR\r\n else {\r\n val hemisphere = if (mgrs.latitudeBand < LETTER_N) Hemisphere.S else Hemisphere.N\r\n getGridValues(mgrs.zone)\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter2 > LETTER_V) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n var gridNorthing = mgrs.squareLetter2 * ONE_HT\r\n var gridEasting = (mgrs.squareLetter1 - ltr2LowValue + 1) * ONE_HT\r\n if (ltr2LowValue == LETTER_J && mgrs.squareLetter1 > LETTER_O) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n errorCode = getLatitudeBandMinNorthing(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing -= falseNorthing\r\n if (gridNorthing < 0.0) gridNorthing += TWO_MIL\r\n gridNorthing += northingOffset\r\n if (gridNorthing < minNorthing) gridNorthing += TWO_MIL\r\n val easting = gridEasting + mgrs.easting\r\n val northing = gridNorthing + mgrs.northing\r\n try {\r\n utm = UTMCoord.fromUTM(mgrs.zone, hemisphere, easting, northing)\r\n latitude = utm.latitude.inRadians\r\n val divisor = 10.0.pow(mgrs.precision)\r\n errorCode = getLatitudeRange(mgrs.latitudeBand)\r\n if (errorCode == NO_ERROR) {\r\n if (!(south - DEG_TO_RAD / divisor <= latitude\r\n && latitude <= north + DEG_TO_RAD / divisor)\r\n ) errorCode = errorCode or LAT_WARNING\r\n }\r\n } catch (e: Exception) {\r\n errorCode = UTM_ERROR\r\n }\r\n }\r\n }\r\n }\r\n }\r\n lastError = errorCode\r\n return if (errorCode == NO_ERROR || errorCode == LAT_WARNING) utm else null\r\n }\r\n\r\n /**\r\n * The function convertGeodeticToMGRS converts Geodetic (latitude and longitude) coordinates to an MGRS coordinate\r\n * string, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned by\r\n * the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radian\r\n * @param precision Precision level of MGRS string\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToMGRS(latitude: Double, longitude: Double, precision: Int): Int {\r\n mgrsString = \"\"\r\n var errorCode = NO_ERROR\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = LAT_ERROR\r\n if (longitude < -PI || longitude > 2 * PI) errorCode = LON_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n errorCode = if (latitude < MIN_UTM_LAT || latitude > MAX_UTM_LAT) {\r\n try {\r\n val ups = UPSCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUPSToMGRS(ups.hemisphere, ups.easting, ups.northing, precision)\r\n } catch (e: Exception) {\r\n UPS_ERROR\r\n }\r\n } else {\r\n try {\r\n val utm = UTMCoord.fromLatLon(latitude.radians, longitude.radians)\r\n errorCode or convertUTMToMGRS(utm.zone, latitude, utm.easting, utm.northing, precision)\r\n } catch (e: Exception) {\r\n UTM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_MGRS converts UPS (hemisphere, easting, and northing) coordinates to an MGRS\r\n * coordinate string according to the current ellipsoid parameters. If any errors occur, the error code(s) are\r\n * returned by the function, otherwise MGRS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n * @param precision precision level of MGRS string\r\n *\r\n * @return error value\r\n */\r\n private fun convertUPSToMGRS(hemisphere: Hemisphere, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* northing used to derive 3rd letter of MGRS */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (east < MIN_EAST_NORTH || east > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (north < MIN_EAST_NORTH || north > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (precision < 0 || precision > MAX_PRECISION) errorCode = errorCode or PRECISION_ERROR\r\n if (errorCode == NO_ERROR) {\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n if (Hemisphere.N == hemisphere) {\r\n if (east >= TWO_MIL) letters[0] = LETTER_Z else letters[0] = LETTER_Y\r\n val index = letters[0] - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n if (east >= TWO_MIL) letters[0] = LETTER_B else letters[0] = LETTER_A\r\n ltr2LowValue = upsConstants[letters[0]][1]\r\n falseEasting = upsConstants[letters[0]][4].toDouble()\r\n falseNorthing = upsConstants[letters[0]][5].toDouble()\r\n }\r\n gridNorthing = north\r\n gridNorthing -= falseNorthing\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n gridEasting -= falseEasting\r\n letters[1] = ltr2LowValue + (gridEasting / ONE_HT).toInt()\r\n if (east < TWO_MIL) {\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n if (letters[1] > LETTER_U) letters[1] = letters[1] + 2\r\n } else {\r\n if (letters[1] > LETTER_C) letters[1] = letters[1] + 2\r\n if (letters[1] > LETTER_H) letters[1] = letters[1] + 1\r\n if (letters[1] > LETTER_L) letters[1] = letters[1] + 3\r\n }\r\n makeMGRSString(0, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function UTM_To_MGRS calculates an MGRS coordinate string based on the zone, latitude, easting and northing.\r\n *\r\n * @param zone Zone number\r\n * @param latitude Latitude in radians\r\n * @param easting Easting\r\n * @param northing Northing\r\n * @param precision Precision\r\n *\r\n * @return error code\r\n */\r\n private fun convertUTMToMGRS(zone: Int, latitude: Double, easting: Double, northing: Double, precision: Int): Int {\r\n var east = easting\r\n var north = northing\r\n var gridEasting: Double /* Easting used to derive 2nd letter of MGRS */\r\n var gridNorthing: Double /* Northing used to derive 3rd letter of MGRS */\r\n val letters = IntArray(MGRS_LETTERS) /* Number location of 3 letters in alphabet */\r\n\r\n /* Round easting and northing values */\r\n val divisor = 10.0.pow(5 - precision)\r\n east = roundMGRS(east / divisor) * divisor\r\n north = roundMGRS(north / divisor) * divisor\r\n getGridValues(zone)\r\n val errorCode = getLatitudeLetter(latitude)\r\n letters[0] = lastLetter\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = north\r\n if (gridNorthing == 1e7) gridNorthing -= 1.0\r\n while (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n gridNorthing += falseNorthing\r\n if (gridNorthing >= TWO_MIL) gridNorthing -= TWO_MIL\r\n letters[2] = (gridNorthing / ONE_HT).toInt()\r\n if (letters[2] > LETTER_H) letters[2] = letters[2] + 1\r\n if (letters[2] > LETTER_N) letters[2] = letters[2] + 1\r\n gridEasting = east\r\n if (letters[0] == LETTER_V && zone == 31 && gridEasting == 500000.0) gridEasting -= 1.0 /* SUBTRACT 1 METER */\r\n letters[1] = ltr2LowValue + ((gridEasting / ONE_HT).toInt() - 1)\r\n if (ltr2LowValue == LETTER_J && letters[1] > LETTER_N) letters[1] = letters[1] + 1\r\n makeMGRSString(zone, letters, east, north, precision)\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Get_Grid_Values sets the letter range used for the 2nd letter in the MGRS coordinate string, based\r\n * on the set number of the utm zone. It also sets the false northing using a value of A for the second letter of\r\n * the grid square, based on the grid pattern and set number of the utm zone.\r\n *
\r\n * Key values that are set in this function include: ltr2_low_value, ltr2_high_value, and false_northing.\r\n *\r\n * @param zone Zone number\r\n */\r\n private fun getGridValues(zone: Int) {\r\n var setNumber = zone % 6 /* Set number (1-6) based on UTM zone number */\r\n if (setNumber == 0) setNumber = 6\r\n val aaPattern = if (mgrsEllipsoidCode.compareTo(CLARKE_1866) == 0\r\n || mgrsEllipsoidCode.compareTo(CLARKE_1880) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841) == 0\r\n || mgrsEllipsoidCode.compareTo(BESSEL_1841_NAMIBIA) == 0\r\n ) 0 else 1 /* Pattern based on ellipsoid code */\r\n if (setNumber == 1 || setNumber == 4) {\r\n ltr2LowValue = LETTER_A\r\n ltr2HighValue = LETTER_H\r\n } else if (setNumber == 2 || setNumber == 5) {\r\n ltr2LowValue = LETTER_J\r\n ltr2HighValue = LETTER_R\r\n } else if (setNumber == 3 || setNumber == 6) {\r\n ltr2LowValue = LETTER_S\r\n ltr2HighValue = LETTER_Z\r\n }\r\n\r\n /* False northing at A for second letter of grid square */\r\n falseNorthing = if (aaPattern == 1) {\r\n if (setNumber % 2 == 0) 500000.0\r\n else 0.0\r\n } else {\r\n if (setNumber % 2 == 0) 1500000.0\r\n else 1000000.00\r\n }\r\n }\r\n\r\n /**\r\n * The function receives a latitude value and uses the Latitude_Band_Table to determine the\r\n * latitude band letter for that latitude.\r\n *\r\n * @param latitude latitude to turn into code\r\n *\r\n * @return error code\r\n */\r\n private fun getLatitudeLetter(latitude: Double): Int {\r\n var errorCode = NO_ERROR\r\n val latDeg = latitude * RAD_TO_DEG\r\n if (latDeg >= 72 && latDeg < 84.5) lastLetter = LETTER_X\r\n else if (latDeg > -80.5 && latDeg < 72) {\r\n val temp = (latitude + 80.0 * DEG_TO_RAD) / (8.0 * DEG_TO_RAD) + 1.0e-12\r\n lastLetter = latitudeBandConstants[temp.toInt()][0].toInt()\r\n } else errorCode = errorCode or LAT_ERROR\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Round_MGRS rounds the input value to the nearest integer, using the standard engineering rule. The\r\n * rounded integer value is then returned.\r\n *\r\n * @param value Value to be rounded\r\n *\r\n * @return rounded double value\r\n */\r\n private fun roundMGRS(value: Double): Double {\r\n val floorValue = floor(value)\r\n val fraction = value - floorValue\r\n var intValue = floorValue.toLong()\r\n if (fraction > 0.5 || fraction == 0.5 && intValue % 2 == 1L) intValue++\r\n return intValue.toDouble()\r\n }\r\n\r\n /**\r\n * The function Make_MGRS_String constructs an MGRS string from its component parts.\r\n *\r\n * @param zone UTM Zone\r\n * @param letters MGRS coordinate string letters\r\n * @param easting Easting value\r\n * @param northing Northing value\r\n * @param precision Precision level of MGRS string\r\n */\r\n private fun makeMGRSString(zone: Int, letters: IntArray, easting: Double, northing: Double, precision: Int) {\r\n var east = easting\r\n var north = northing\r\n mgrsString = if (zone != 0) \"%02d\".format(zone) else \" \"\r\n for (j in 0..2) {\r\n if (letters[j] < 0 || letters[j] > 26) return\r\n mgrsString += alphabet[letters[j]]\r\n }\r\n val divisor = 10.0.pow(5 - precision)\r\n east %= 100000.0\r\n if (east >= 99999.5) east = 99999.0\r\n\r\n // Here we need to only use the number requesting in the precision\r\n val iEast = (east / divisor).toInt()\r\n var sEast = StringBuilder(iEast.toString())\r\n if (sEast.length > precision) sEast = StringBuilder(sEast.substring(0, precision - 1))\r\n else for (i in 0 until precision - sEast.length) sEast.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sEast\"\r\n north %= 100000.0\r\n if (north >= 99999.5) north = 99999.0\r\n val iNorth = (north / divisor).toInt()\r\n var sNorth = StringBuilder(iNorth.toString())\r\n if (sNorth.length > precision) sNorth = StringBuilder(sNorth.substring(0, precision - 1))\r\n else for (i in 0 until precision - sNorth.length) sNorth.insert(0, \"0\")\r\n mgrsString = \"$mgrsString $sNorth\"\r\n }\r\n\r\n /**\r\n * The function Convert_MGRS_To_UPS converts an MGRS coordinate string to UPS (hemisphere, easting, and northing)\r\n * coordinates, according to the current ellipsoid parameters. If any errors occur, the error code(s) are returned\r\n * by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param MGRS the MGRS coordinate string.\r\n *\r\n * @return a corresponding [UPSCoord] instance.\r\n */\r\n private fun convertMGRSToUPS(MGRS: String): UPSCoord? {\r\n val ltr2HighValue: Int /* 2nd letter range - high number */\r\n val ltr3HighValue: Int /* 3rd letter range - high number (UPS) */\r\n val ltr2LowValue: Int /* 2nd letter range - low number */\r\n val falseEasting: Double /* False easting for 2nd letter */\r\n val falseNorthing: Double /* False northing for 3rd letter */\r\n var gridEasting: Double /* easting for 100,000 meter grid square */\r\n var gridNorthing: Double /* northing for 100,000 meter grid square */\r\n var errorCode = NO_ERROR\r\n val hemisphere: Hemisphere\r\n var easting: Double\r\n var northing: Double\r\n val mgrs = breakMGRSString(MGRS)\r\n if (mgrs != null) {\r\n if (mgrs.zone > 0) errorCode = errorCode or STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n easting = mgrs.easting\r\n northing = mgrs.northing\r\n if (mgrs.latitudeBand >= LETTER_Y) {\r\n hemisphere = Hemisphere.N\r\n val index = mgrs.latitudeBand - 22\r\n ltr2LowValue = upsConstants[index][1]\r\n ltr2HighValue = upsConstants[index][2]\r\n ltr3HighValue = upsConstants[index][3]\r\n falseEasting = upsConstants[index][4].toDouble()\r\n falseNorthing = upsConstants[index][5].toDouble()\r\n } else {\r\n hemisphere = Hemisphere.S\r\n ltr2LowValue = upsConstants[mgrs.latitudeBand][1]\r\n ltr2HighValue = upsConstants[mgrs.latitudeBand][2]\r\n ltr3HighValue = upsConstants[mgrs.latitudeBand][3]\r\n falseEasting = upsConstants[mgrs.latitudeBand][4].toDouble()\r\n falseNorthing = upsConstants[mgrs.latitudeBand][5].toDouble()\r\n }\r\n\r\n // Check that the second letter of the MGRS string is within\r\n // the range of valid second letter values\r\n // Also check that the third letter is valid\r\n if (mgrs.squareLetter1 < ltr2LowValue || mgrs.squareLetter1 > ltr2HighValue ||\r\n mgrs.squareLetter1 == LETTER_D || mgrs.squareLetter1 == LETTER_E ||\r\n mgrs.squareLetter1 == LETTER_M || mgrs.squareLetter1 == LETTER_N ||\r\n mgrs.squareLetter1 == LETTER_V || mgrs.squareLetter1 == LETTER_W ||\r\n mgrs.squareLetter2 > ltr3HighValue) errorCode = STRING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n gridNorthing = mgrs.squareLetter2 * ONE_HT + falseNorthing\r\n if (mgrs.squareLetter2 > LETTER_I) gridNorthing -= ONE_HT\r\n if (mgrs.squareLetter2 > LETTER_O) gridNorthing -= ONE_HT\r\n gridEasting = (mgrs.squareLetter1 - ltr2LowValue) * ONE_HT + falseEasting\r\n if (ltr2LowValue != LETTER_A) {\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n if (mgrs.squareLetter1 > LETTER_U) gridEasting -= 200000.0\r\n } else {\r\n if (mgrs.squareLetter1 > LETTER_C) gridEasting -= 200000.0\r\n if (mgrs.squareLetter1 > LETTER_I) gridEasting -= ONE_HT\r\n if (mgrs.squareLetter1 > LETTER_L) gridEasting -= 300000.0\r\n }\r\n easting += gridEasting\r\n northing += gridNorthing\r\n return UPSCoord.fromUPS(hemisphere, easting, northing)\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans polarst.c and polarst.h code.\r\n */\r\ninternal class PolarCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val ORIGIN_LAT_ERROR = 0x0004\r\n const val ORIGIN_LON_ERROR = 0x0008\r\n const val EASTING_ERROR = 0x0010\r\n const val NORTHING_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val RADIUS_ERROR = 0x0100\r\n private const val PI_OVER_2 = PI / 2.0\r\n private const val PI_Over_4 = PI / 4.0\r\n private const val TWO_PI = 2.0 * PI\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private var es = 0.08181919084262188000 /* Eccentricity of ellipsoid */\r\n private var esOver2 = .040909595421311 /* es / 2.0 */\r\n private var southernHemisphere = 0.0 /* Flag variable */\r\n private var mc = 1.0\r\n private var tc = 1.0\r\n private var e4 = 1.0033565552493\r\n private var amc = 6378137.0 /* Polar_a * mc */\r\n private var twoA = 12756274.0 /* 2.0 * Polar_a */\r\n\r\n /* Polar Stereographic projection Parameters */\r\n private var originLat = PI * 90.0 / 180.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 12713601.0\r\n private var deltaNorthing = 12713601.0\r\n\r\n var easting = 0.0\r\n private set\r\n var northing = 0.0\r\n private set\r\n var latitude = 0.0\r\n private set\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function setPolarStereographicParameters receives the ellipsoid parameters and Polar Stereographic projection\r\n * parameters as inputs, and sets the corresponding state variables. If any errors occur, error code(s) are\r\n * returned by the function, otherwise POLAR_NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude of true scale, in radians\r\n * @param longitude Longitude down from pole, in radians\r\n * @param easting Easting (X) at center of projection, in meters\r\n * @param northing Northing (Y) at center of projection, in meters\r\n * @return error code\r\n */\r\n fun setPolarStereographicParameters(\r\n a: Double, f: Double, latitude: Double, longitude: Double, easting: Double, northing: Double\r\n ): Int {\r\n var lon = longitude\r\n val invF = 1 / f\r\n val epsilon = 1.0e-2\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* Origin Latitude out of range */\r\n if (latitude < -PI_OVER_2 || latitude > PI_OVER_2) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* Origin Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or ORIGIN_LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n twoA = 2.0 * this.a\r\n this.f = f\r\n if (lon > PI) lon -= TWO_PI\r\n if (latitude < 0) {\r\n southernHemisphere = 1.0\r\n originLat = -latitude\r\n originLong = -lon\r\n } else {\r\n southernHemisphere = 0.0\r\n originLat = latitude\r\n originLong = lon\r\n }\r\n falseEasting = easting\r\n falseNorthing = northing\r\n val es2 = 2 * this.f - this.f * this.f\r\n es = sqrt(es2)\r\n esOver2 = es / 2.0\r\n if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) {\r\n val sLat = sin(originLat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val cLat = cos(originLat)\r\n mc = cLat / sqrt(1.0 - esSin * esSin)\r\n amc = this.a * mc\r\n tc = tan(PI_Over_4 - originLat / 2.0) / powEs\r\n } else {\r\n val onePlusEs = 1.0 + es\r\n val oneMinusEs = 1.0 - es\r\n e4 = sqrt(onePlusEs.pow(onePlusEs) * oneMinusEs.pow(oneMinusEs))\r\n }\r\n }\r\n\r\n /* Calculate Radius */\r\n convertGeodeticToPolarStereographic(0.0, originLong)\r\n deltaNorthing = this.northing * 2 // Increased range for accepted easting and northing values\r\n deltaNorthing = abs(deltaNorthing) + epsilon\r\n deltaEasting = deltaNorthing\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Polar_Stereographic converts geodetic coordinates (latitude and longitude) to\r\n * Polar Stereographic coordinates (easting and northing), according to the current ellipsoid and Polar\r\n * Stereographic projection parameters. If any errors occur, error code(s) are returned by the function, otherwise\r\n * POLAR_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude, in radians\r\n * @param longitude Longitude, in radians\r\n * @return error code\r\n */\r\n fun convertGeodeticToPolarStereographic(latitude: Double, longitude: Double): Int {\r\n var lat = latitude\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (lat < -PI_OVER_2 || lat > PI_OVER_2) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat < 0 && southernHemisphere == 0.0) errorCode = errorCode or LAT_ERROR\r\n /* Latitude and Origin Latitude in different hemispheres */\r\n if (lat > 0 && southernHemisphere == 1.0) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > TWO_PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (abs(abs(lat) - PI_OVER_2) < 1.0e-10) {\r\n easting = 0.0\r\n northing = 0.0\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n lon *= -1.0\r\n lat *= -1.0\r\n }\r\n var dLam = lon - originLong\r\n if (dLam > PI) dLam -= TWO_PI\r\n if (dLam < -PI) dLam += TWO_PI\r\n val sLat = sin(lat)\r\n val esSin = es * sLat\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n val t = tan(PI_Over_4 - lat / 2.0) / powEs\r\n val rho = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) amc * t / tc else twoA * t / e4\r\n if (southernHemisphere != 0.0) {\r\n easting = -(rho * sin(dLam) - falseEasting)\r\n northing = rho * cos(dLam) + falseNorthing\r\n } else easting = rho * sin(dLam) + falseEasting\r\n northing = -rho * cos(dLam) + falseNorthing\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Polar_Stereographic_To_Geodetic converts Polar\r\n * Stereographic coordinates (easting and northing) to geodetic\r\n * coordinates (latitude and longitude) according to the current ellipsoid\r\n * and Polar Stereographic projection Parameters. If any errors occur, the\r\n * code(s) are returned by the function, otherwise POLAR_NO_ERROR\r\n * is returned.\r\n *\r\n * @param Easting Easting (X), in meters\r\n * @param Northing Northing (Y), in meters\r\n * @return error code\r\n */\r\n fun convertPolarStereographicToGeodetic(Easting: Double, Northing: Double): Int {\r\n var dy = 0.0\r\n var dx = 0.0\r\n var rho = 0.0\r\n var tempPhi = 0.0\r\n var errorCode = NO_ERROR\r\n val minEasting = falseEasting - deltaEasting\r\n val maxEasting = falseEasting + deltaEasting\r\n val minNorthing = falseNorthing - deltaNorthing\r\n val maxNorthing = falseNorthing + deltaNorthing\r\n /* Easting out of range */\r\n if (Easting > maxEasting || Easting < minEasting) errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (Northing > maxNorthing || Northing < minNorthing) errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n dy = Northing - falseNorthing\r\n dx = Easting - falseEasting\r\n /* Radius of point with origin of false easting, false northing */\r\n rho = sqrt(dx * dx + dy * dy)\r\n val deltaRadius = sqrt(deltaEasting * deltaEasting + deltaNorthing * deltaNorthing)\r\n /* Point is outside of projection area */\r\n if (rho > deltaRadius) errorCode = errorCode or RADIUS_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (dy == 0.0 && dx == 0.0) {\r\n latitude = PI_OVER_2\r\n longitude = originLong\r\n } else {\r\n if (southernHemisphere != 0.0) {\r\n dy *= -1.0\r\n dx *= -1.0\r\n }\r\n val t = if (abs(abs(originLat) - PI_OVER_2) > 1.0e-10) rho * tc / amc else rho * e4 / twoA\r\n var phi = PI_OVER_2 - 2.0 * atan(t)\r\n while (abs(phi - tempPhi) > 1.0e-10) {\r\n tempPhi = phi\r\n val sinPhi = sin(phi)\r\n val esSin = es * sinPhi\r\n val powEs = ((1.0 - esSin) / (1.0 + esSin)).pow(esOver2)\r\n phi = PI_OVER_2 - 2.0 * atan(t * powEs)\r\n }\r\n latitude = phi\r\n longitude = originLong + atan2(dx, -dy)\r\n if (longitude > PI) longitude -= TWO_PI\r\n else if (longitude < -PI) longitude += TWO_PI\r\n /* force distorted values to 90, -90 degrees */\r\n if (latitude > PI_OVER_2) latitude = PI_OVER_2\r\n else if (latitude < -PI_OVER_2) latitude = -PI_OVER_2\r\n /* force distorted values to 180, -180 degrees */\r\n if (longitude > PI) longitude = PI else if (longitude < -PI) longitude = -PI\r\n }\r\n if (southernHemisphere != 0.0) {\r\n latitude *= -1.0\r\n longitude *= -1.0\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This class holds a set of Transverse Mercator coordinates along with the\r\n * corresponding latitude and longitude.\r\n */\r\nclass TMCoord private constructor(val latitude: Angle, val longitude: Angle, val easting: Double, val northing: Double) {\r\n companion object {\r\n /**\r\n * Create a set of Transverse Mercator coordinates from a pair of latitude and longitude,\r\n * for the given [Globe] and projection parameters.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n * @param aOrNull semi-major ellipsoid radius. If this and argument f are non-null and globe is null, will use the specified a and f.\r\n * @param fOrNull ellipsoid flattening. If this and argument a are non-null and globe is null, will use the specified a and f.\r\n * @param originLatitude the origin latitude.\r\n * @param centralMeridian the central meridian longitude.\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * or the conversion to TM coordinates fails. If the globe is null conversion will default\r\n * to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(\r\n latitude: Angle, longitude: Angle, aOrNull: Double?, fOrNull: Double?,\r\n originLatitude: Angle, centralMeridian: Angle, falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n var a = aOrNull\r\n var f = fOrNull\r\n val converter = TMCoordConverter()\r\n if (a == null || f == null) {\r\n a = converter.a\r\n f = converter.f\r\n }\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertGeodeticToTransverseMercator(latitude.inRadians, longitude.inRadians)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(latitude, longitude, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of Transverse Mercator coordinates for the given [Globe],\r\n * easting, northing and projection parameters.\r\n *\r\n * @param easting the easting distance value in meters.\r\n * @param northing the northing distance value in meters.\r\n * @param originLatitude the origin latitude [Angle].\r\n * @param centralMeridian the central meridian longitude [Angle].\r\n * @param falseEasting easting value at the center of the projection in meters.\r\n * @param falseNorthing northing value at the center of the projection in meters.\r\n * @param scale scaling factor.\r\n * @return the corresponding [TMCoord].\r\n * @throws IllegalArgumentException if the conversion to geodetic coordinates fails.\r\n * If the globe is null conversion will default to using WGS84.\r\n */\r\n @JvmStatic\r\n fun fromTM(\r\n easting: Double, northing: Double, originLatitude: Angle, centralMeridian: Angle,\r\n falseEasting: Double, falseNorthing: Double, scale: Double\r\n ): TMCoord {\r\n val converter = TMCoordConverter()\r\n val a = converter.a\r\n val f = converter.f\r\n var err = converter.setTransverseMercatorParameters(\r\n a, f, originLatitude.inRadians, centralMeridian.inRadians, falseEasting, falseNorthing, scale\r\n )\r\n if (err == TMCoordConverter.NO_ERROR) err = converter.convertTransverseMercatorToGeodetic(easting, northing)\r\n require(err == TMCoordConverter.NO_ERROR || err == TMCoordConverter.LON_WARNING) { \"TM Conversion Error\" }\r\n return TMCoord(converter.latitude.radians, converter.longitude.radians, easting, northing)\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.*\r\n\r\n/*\r\n * Converter used to translate Transverse Mercator coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans code tranmerc.c and tranmerc.h\r\n */\r\ninternal class TMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ORIGIN_LAT_ERROR = 0x0010\r\n const val CENT_MER_ERROR = 0x0020\r\n const val A_ERROR = 0x0040\r\n const val INV_F_ERROR = 0x0080\r\n const val SCALE_FACTOR_ERROR = 0x0100\r\n const val LON_WARNING = 0x0200\r\n private const val MAX_LAT = PI * 89.99 / 180.0 /* 90 degrees in radians */\r\n private const val MAX_DELTA_LONG = PI * 90 / 180.0 /* 90 degrees in radians */\r\n private const val MIN_SCALE_FACTOR = 0.3\r\n private const val MAX_SCALE_FACTOR = 3.0\r\n }\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n var a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid i meters */\r\n private set\r\n var f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private set\r\n private var es = 0.0066943799901413800 /* Eccentricity (0.08181919084262188000) squared */\r\n private var ebs = 0.0067394967565869 /* Second Eccentricity squared */\r\n\r\n /* Transverse_Mercator projection Parameters */\r\n private var originLat = 0.0 /* Latitude of origin in radians */\r\n private var originLong = 0.0 /* Longitude of origin in radians */\r\n private var falseNorthing = 0.0 /* False northing in meters */\r\n private var falseEasting = 0.0 /* False easting in meters */\r\n private var scaleFactor = 1.0 /* Scale factor */\r\n\r\n /* Isometric to geodetic latitude parameters, default to WGS 84 */\r\n private var ap = 6367449.1458008\r\n private var bp = 16038.508696861\r\n private var cp = 16.832613334334\r\n private var dp = 0.021984404273757\r\n private var ep = 3.1148371319283e-005\r\n\r\n /* Maximum variance for easting and northing values for WGS 84. */\r\n private var deltaEasting = 40000000.0\r\n private var deltaNorthing = 40000000.0\r\n\r\n /** Easting/X at the center of the projection */\r\n var easting = 0.0\r\n private set\r\n /** Northing/Y at the center of the projection */\r\n var northing = 0.0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians. */\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function receives the ellipsoid parameters and Transverse Mercator\r\n * projection parameters as inputs, and sets the corresponding state variables. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise NO_ERROR is returned.\r\n *\r\n * @param a Semi-major axis of ellipsoid, in meters\r\n * @param f Flattening of ellipsoid\r\n * @param latitude Latitude in radians at the origin of the projection\r\n * @param centralMeridian Longitude in radians at the center of the projection\r\n * @param easting Easting/X at the center of the projection\r\n * @param northing Northing/Y at the center of the projection\r\n * @param scaleFactor Projection scale factor\r\n *\r\n * @return error code\r\n */\r\n fun setTransverseMercatorParameters(\r\n a: Double, f: Double, latitude: Double, centralMeridian: Double, easting: Double, northing: Double, scaleFactor: Double\r\n ): Int {\r\n var cm = centralMeridian\r\n val invF = 1 / f\r\n var errorCode = NO_ERROR\r\n /* Semi-major axis must be greater than zero */\r\n if (a <= 0.0) errorCode = errorCode or A_ERROR\r\n /* Inverse flattening must be between 250 and 350 */\r\n if (invF < 250 || invF > 350) errorCode = errorCode or INV_F_ERROR\r\n /* origin latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or ORIGIN_LAT_ERROR\r\n /* origin longitude out of range */\r\n if (cm < -PI || cm > 2 * PI) errorCode = errorCode or CENT_MER_ERROR\r\n if (scaleFactor < MIN_SCALE_FACTOR || scaleFactor > MAX_SCALE_FACTOR) {\r\n errorCode = errorCode or SCALE_FACTOR_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n this.a = a\r\n this.f = f\r\n originLat = 0.0\r\n originLong = 0.0\r\n falseNorthing = 0.0\r\n falseEasting = 0.0\r\n this.scaleFactor = 1.0\r\n\r\n /* Eccentricity Squared */\r\n es = 2 * this.f - this.f * this.f\r\n /* Second Eccentricity Squared */\r\n ebs = 1 / (1 - es) - 1\r\n val b = this.a * (1 - this.f)\r\n /*True meridional constants */\r\n val tn = (this.a - b) / (this.a + b)\r\n val tn2 = tn * tn\r\n val tn3 = tn2 * tn\r\n val tn4 = tn3 * tn\r\n val tn5 = tn4 * tn\r\n ap = this.a * (1e0 - tn + 5e0 * (tn2 - tn3) / 4e0 + 81e0 * (tn4 - tn5) / 64e0)\r\n bp = 3e0 * this.a * (tn - tn2 + (7e0 * (tn3 - tn4) / 8e0) + 55e0 * tn5 / 64e0) / 2e0\r\n cp = 15e0 * this.a * (tn2 - tn3 + 3e0 * (tn4 - tn5) / 4e0) / 16.0\r\n dp = 35e0 * this.a * (tn3 - tn4 + 11e0 * tn5 / 16e0) / 48e0\r\n ep = 315e0 * this.a * (tn4 - tn5) / 512e0\r\n convertGeodeticToTransverseMercator(MAX_LAT, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n deltaNorthing = this.northing\r\n convertGeodeticToTransverseMercator(0.0, MAX_DELTA_LONG)\r\n deltaEasting = this.easting\r\n originLat = latitude\r\n if (cm > PI) cm -= 2 * PI\r\n originLong = cm\r\n falseNorthing = northing\r\n falseEasting = easting\r\n this.scaleFactor = scaleFactor\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Geodetic_To_Transverse_Mercator converts geodetic (latitude and longitude) coordinates to\r\n * Transverse Mercator projection (easting and northing) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection coordinates. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToTransverseMercator(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n /* Latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n if (lon > PI) lon -= 2 * PI\r\n if (lon < originLong - MAX_DELTA_LONG || lon > originLong + MAX_DELTA_LONG) {\r\n val tempLong = if (lon < 0) lon + 2 * PI else lon\r\n val tempOrigin = if (originLong < 0) originLong + 2 * PI else originLong\r\n if (tempLong < tempOrigin - MAX_DELTA_LONG || tempLong > tempOrigin + MAX_DELTA_LONG)\r\n errorCode = errorCode or LON_ERROR\r\n }\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n /*\r\n * Delta Longitude\r\n */\r\n var dLam = lon - originLong\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian */\r\n if (abs(dLam) > 9.0 * PI / 180) errorCode = errorCode or LON_WARNING\r\n if (dLam > PI) dLam -= 2 * PI\r\n if (dLam < -PI) dLam += 2 * PI\r\n if (abs(dLam) < 2e-10) dLam = 0.0\r\n val s = sin(latitude)\r\n val c = cos(latitude)\r\n val c2 = c * c\r\n val c3 = c2 * c\r\n val c5 = c3 * c2\r\n val c7 = c5 * c2\r\n val t = tan(latitude)\r\n val tan2 = t * t\r\n val tan3 = tan2 * t\r\n val tan4 = tan3 * t\r\n val tan5 = tan4 * t\r\n val tan6 = tan5 * t\r\n val eta = ebs * c2\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n\r\n /* radius of curvature in prime vertical */\r\n val sn = a / sqrt(1 - es * sin(latitude).pow(2))\r\n\r\n /* True Meridional Distances */\r\n val tmd = (ap * latitude\r\n - bp * sin(2.0 * latitude)\r\n + cp * sin(4.0 * latitude)\r\n - dp * sin(6.0 * latitude)\r\n + ep * sin(8.0 * latitude))\r\n\r\n /* Origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* northing */\r\n val t1 = (tmd - tmdO) * scaleFactor\r\n val t2 = sn * s * c * scaleFactor / 2e0\r\n val t3 = sn * s * c3 * scaleFactor * (5e0 - tan2 + 9e0 * eta + 4e0 * eta2) / 24e0\r\n val t4 = sn * s * c5 * scaleFactor * (61e0 - 58e0 * tan2 + tan4 + 270e0 * eta - 330e0 * tan2 * eta + 445e0 * eta2 + 324e0 * eta3 - 680e0 * tan2 * eta2 + 88e0 * eta4 - 600e0 * tan2 * eta3 - 192e0 * tan2 * eta4) / 720e0\r\n val t5 = sn * s * c7 * scaleFactor * (1385e0 - 3111e0 * tan2 + 543e0 * tan4 - tan6) / 40320e0\r\n northing = falseNorthing + t1 + dLam.pow(2e0) * t2 + dLam.pow(4e0) * t3 + dLam.pow(6e0) * t4 + dLam.pow(8e0) * t5\r\n\r\n /* Easting */\r\n val t6 = sn * c * scaleFactor\r\n val t7 = sn * c3 * scaleFactor * (1e0 - tan2 + eta) / 6e0\r\n val t8 = sn * c5 * scaleFactor * ((5e0 - 18e0 * tan2 + tan4 + 14e0 * eta) - 58e0 * tan2 * eta + 13e0 * eta2 + 4e0 * eta3 - 64e0 * tan2 * eta2 - 24e0 * tan2 * eta3) / 120e0\r\n val t9 = sn * c7 * scaleFactor * (61e0 - 479e0 * tan2 + 179e0 * tan4 - tan6) / 5040e0\r\n easting = falseEasting + dLam * t6 + dLam.pow(3e0) * t7 + dLam.pow(5e0) * t8 + dLam.pow(7e0) * t9\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_Transverse_Mercator_To_Geodetic converts Transverse Mercator projection (easting and\r\n * northing) coordinates to geodetic (latitude and longitude) coordinates, according to the current ellipsoid and\r\n * Transverse Mercator projection parameters. If any errors occur, the error code(s) are returned by the function,\r\n * otherwise NO_ERROR is returned.\r\n *\r\n * @param easting Easting/X in meters\r\n * @param northing Northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertTransverseMercatorToGeodetic(easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n /* Easting out of range */\r\n if (easting < falseEasting - deltaEasting || easting > falseEasting + deltaEasting)\r\n errorCode = errorCode or EASTING_ERROR\r\n /* Northing out of range */\r\n if (northing < falseNorthing - deltaNorthing || northing > falseNorthing + deltaNorthing)\r\n errorCode = errorCode or NORTHING_ERROR\r\n if (errorCode == NO_ERROR) {\r\n /* True Meridional Distances for latitude of origin */\r\n val tmdO = (ap * originLat\r\n - bp * sin(2.0 * originLat)\r\n + cp * sin(4.0 * originLat)\r\n - dp * sin(6.0 * originLat)\r\n + ep * sin(8.0 * originLat))\r\n\r\n /* Origin */\r\n val tmd = tmdO + (northing - falseNorthing) / scaleFactor\r\n\r\n /* First Estimate */\r\n var sr = a * (1e0 - es) / sqrt(1e0 - es * sin(0e0).pow(2)).pow(3)\r\n var ftphi = tmd / sr\r\n for (i in 0..4) {\r\n val t10 = (ap * ftphi\r\n - bp * sin(2.0 * ftphi)\r\n + cp * sin(4.0 * ftphi)\r\n - dp * sin(6.0 * ftphi)\r\n + ep * sin(8.0 * ftphi))\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n ftphi += (tmd - t10) / sr\r\n }\r\n\r\n /* Radius of Curvature in the meridian */\r\n sr = a * (1e0 - es) / sqrt(1e0 - es * sin(ftphi).pow(2)).pow(3)\r\n\r\n /* Radius of Curvature in the meridian */\r\n val sn = a / sqrt(1e0 - es * sin(ftphi).pow(2))\r\n\r\n /* Sine Cosine terms */\r\n val c = cos(ftphi)\r\n\r\n /* Tangent Value */\r\n val t = tan(ftphi)\r\n val tan2 = t * t\r\n val tan4 = tan2 * tan2\r\n val eta = ebs * c.pow(2)\r\n val eta2 = eta * eta\r\n val eta3 = eta2 * eta\r\n val eta4 = eta3 * eta\r\n var de = easting - falseEasting\r\n if (abs(de) < 0.0001) de = 0.0\r\n\r\n /* Latitude */\r\n val t10 = t / (2e0 * sr * sn * scaleFactor.pow(2))\r\n val t11 = t * (5e0 + 3e0 * tan2 + eta - 4e0 * eta.pow(2) - 9e0 * tan2 * eta) / (24e0 * sr * sn.pow(3) * scaleFactor.pow(4))\r\n val t12 = (t * ((61e0 + 90e0 * tan2 + 46e0 * eta + 45e0 * tan4 - 252e0 * tan2 * eta - 3e0 * eta2 + 100e0\r\n * eta3) - 66e0 * tan2 * eta2 - (90e0 * tan4\r\n * eta) + 88e0 * eta4 + 225e0 * tan4 * eta2 + 84e0 * tan2 * eta3 - 192e0 * tan2 * eta4)\r\n / (720e0 * sr * sn.pow(5) * scaleFactor.pow(6)))\r\n val t13 = t * (1385e0 + 3633e0 * tan2 + 4095e0 * tan4 + (1575e0 * t.pow(6))) / (40320e0 * sr * sn.pow(7) * scaleFactor.pow(8))\r\n latitude = (ftphi - de.pow(2) * t10 + de.pow(4) * t11 - de.pow(6) * t12 + de.pow(8) * t13)\r\n val t14 = 1e0 / (sn * c * scaleFactor)\r\n val t15 = (1e0 + 2e0 * tan2 + eta) / (6e0 * sn.pow(3) * c * scaleFactor.pow(3))\r\n val t16 = ((5e0 + 6e0 * eta + 28e0 * tan2 - 3e0 * eta2 + 8e0 * tan2 * eta + 24e0 * tan4 - 4e0\r\n * eta3) + 4e0 * tan2 * eta2 + (24e0 * tan2 * eta3)) / (120e0 * sn.pow(5) * c * scaleFactor.pow(5))\r\n val t17 = (61e0 + 662e0 * tan2 + 1320e0 * tan4 + (720e0 * t.pow(6))) / (5040e0 * sn.pow(7) * c * scaleFactor.pow(7))\r\n\r\n /* Difference in Longitude */\r\n val dLam = de * t14 - de.pow(3) * t15 + de.pow(5) * t16 - de.pow(7) * t17\r\n\r\n /* Longitude */\r\n longitude = originLong + dLam\r\n if (abs(latitude) > 90.0 * PI / 180.0) errorCode = errorCode or NORTHING_ERROR\r\n if (longitude > PI) {\r\n longitude -= 2 * PI\r\n if (abs(longitude) > PI) errorCode = errorCode or EASTING_ERROR\r\n }\r\n if (abs(dLam) > 9.0 * PI / 180 * cos(latitude)) {\r\n /* Distortion will result if Longitude is more than 9 degrees from the Central Meridian at the equator */\r\n /* and decreases to 0 degrees at the poles */\r\n /* As you move towards the poles, distortion will become more significant */\r\n errorCode = errorCode or LON_WARNING\r\n }\r\n if (latitude > 1.0e10) errorCode = errorCode or LON_WARNING\r\n }\r\n return errorCode\r\n }\r\n}\r\n","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\n\r\n/**\r\n * This immutable class holds a set of UPS coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UPSCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UPS coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertGeodeticToUPS(latitude.inRadians, longitude.inRadians)\r\n require(err == UPSCoordConverter.NO_ERROR) { \"UPS Conversion Error\" }\r\n return UPSCoord(latitude, longitude, converter.hemisphere, converter.easting, converter.northing)\r\n }\r\n\r\n /**\r\n * Create a set of UPS coordinates for the given [Globe].\r\n *\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UPSCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UPS coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): UPSCoord {\r\n val converter = UPSCoordConverter()\r\n val err = converter.convertUPSToGeodetic(hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UPSCoord(\r\n converter.latitude.radians, converter.longitude.radians, hemisphere, easting, northing\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = hemisphere.toString() + \" \" + easting + \"E\" + \" \" + northing + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/**\r\n * Ported to Kotlin from the NGA GeoTrans ups.c and ups.h code\r\n */\r\ninternal class UPSCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val HEMISPHERE_ERROR = 0x0004\r\n const val EASTING_ERROR = 0x0008\r\n const val NORTHING_ERROR = 0x0010\r\n private const val MAX_LAT = PI * 90 / 180.0 // 90 degrees in radians\r\n\r\n // Min and max latitude values accepted\r\n private const val MIN_NORTH_LAT = 72 * PI / 180.0 // 83.5\r\n private const val MIN_SOUTH_LAT = -72 * PI / 180.0 // -79.5\r\n private const val MAX_ORIGIN_LAT = 81.114528 * PI / 180.0\r\n private const val MIN_EAST_NORTH = 0.0\r\n private const val MAX_EAST_NORTH = 4000000.0\r\n }\r\n\r\n private var originLatitude = MAX_ORIGIN_LAT /*set default = North hemisphere */\r\n private val originLongitude = 0.0\r\n\r\n /* Ellipsoid Parameters, default to WGS 84 */\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val falseEasting = 2000000.0\r\n private val falseNorthing = 2000000.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** easting/X in meters */\r\n var easting = 0.0\r\n private set\r\n /** northing/Y in meters */\r\n var northing = 0.0\r\n private set\r\n /** latitude in radians.*/\r\n var latitude = 0.0\r\n private set\r\n /** longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n private val polarConverter = PolarCoordConverter()\r\n\r\n /**\r\n * The function convertGeodeticToUPS converts geodetic (latitude and longitude) coordinates to UPS (hemisphere,\r\n * easting, and northing) coordinates, according to the current ellipsoid parameters. If any errors occur, the error\r\n * code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param latitude latitude in radians\r\n * @param longitude longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUPS(latitude: Double, longitude: Double): Int {\r\n /* latitude out of range */\r\n if (latitude < -MAX_LAT || latitude > MAX_LAT) return LAT_ERROR\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) return LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) return LAT_ERROR\r\n /* slam out of range */\r\n if (longitude < -PI || longitude > 2 * PI) return LON_ERROR\r\n if (latitude < 0) {\r\n originLatitude = -MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.S\r\n } else {\r\n originLatitude = MAX_ORIGIN_LAT\r\n hemisphere = Hemisphere.N\r\n }\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, 0.0, 0.0)\r\n polarConverter.convertGeodeticToPolarStereographic(latitude, longitude)\r\n easting = falseEasting + polarConverter.easting\r\n northing = falseNorthing + if (Hemisphere.S == hemisphere) - polarConverter.northing else polarConverter.northing\r\n return NO_ERROR\r\n }\r\n\r\n /**\r\n * The function Convert_UPS_To_Geodetic converts UPS (hemisphere, easting, and northing) coordinates to geodetic\r\n * (latitude and longitude) coordinates according to the current ellipsoid parameters. If any errors occur, the\r\n * error code(s) are returned by the function, otherwise UPS_NO_ERROR is returned.\r\n *\r\n * @param hemisphere hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting/X in meters\r\n * @param northing northing/Y in meters\r\n *\r\n * @return error code\r\n */\r\n fun convertUPSToGeodetic(hemisphere: Hemisphere?, easting: Double, northing: Double): Int{\r\n var errorCode = NO_ERROR\r\n if (Hemisphere.N != hemisphere && Hemisphere.S != hemisphere) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (easting < MIN_EAST_NORTH || easting > MAX_EAST_NORTH) errorCode = errorCode or EASTING_ERROR\r\n if (northing < MIN_EAST_NORTH || northing > MAX_EAST_NORTH) errorCode = errorCode or NORTHING_ERROR\r\n if (Hemisphere.N == hemisphere) originLatitude = MAX_ORIGIN_LAT\r\n if (Hemisphere.S == hemisphere) originLatitude = -MAX_ORIGIN_LAT\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n polarConverter.setPolarStereographicParameters(a, f, originLatitude, originLongitude, falseEasting, falseNorthing)\r\n polarConverter.convertPolarStereographicToGeodetic(easting, northing)\r\n latitude = polarConverter.latitude\r\n longitude = polarConverter.longitude\r\n if (latitude < 0 && latitude > MIN_SOUTH_LAT) errorCode = errorCode or LAT_ERROR\r\n if (latitude >= 0 && latitude < MIN_NORTH_LAT) errorCode = errorCode or LAT_ERROR\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Location\r\nimport kotlin.jvm.JvmStatic\r\nimport kotlin.math.roundToInt\r\n\r\n/**\r\n * This immutable class holds a set of UTM coordinates along with it's corresponding latitude and longitude.\r\n */\r\nclass UTMCoord private constructor(\r\n val latitude: Angle, val longitude: Angle, val zone: Int, val hemisphere: Hemisphere, val easting: Double, val northing: Double\r\n) {\r\n companion object {\r\n /**\r\n * Create a set of UTM coordinates from a pair of latitude and longitude for the given `Globe`.\r\n *\r\n * @param latitude the latitude.\r\n * @param longitude the longitude.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromLatLon(latitude: Angle, longitude: Angle): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertGeodeticToUTM(latitude.inRadians, longitude.inRadians)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n latitude, longitude, converter.zone, converter.hemisphere, converter.easting, converter.northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a set of UTM coordinates for the given [Globe].\r\n *\r\n * @param zone the UTM zone - 1 to 60.\r\n * @param hemisphere the hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting the easting distance in meters\r\n * @param northing the northing distance in meters.\r\n *\r\n * @return the corresponding [UTMCoord].\r\n *\r\n * @throws IllegalArgumentException if the conversion to UTM coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromUTM(\r\n zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double\r\n ): UTMCoord {\r\n val converter = UTMCoordConverter()\r\n val err = converter.convertUTMToGeodetic(zone, hemisphere, easting, northing)\r\n require(err == UTMCoordConverter.NO_ERROR) { \"UTM Conversion Error\" }\r\n return UTMCoord(\r\n converter.latitude.radians, converter.longitude.radians, zone, hemisphere, easting, northing\r\n )\r\n }\r\n\r\n /**\r\n * Create a UTM coordinate from a standard UTM coordinate text string.\r\n *\r\n * The string will be converted to uppercase and stripped of all spaces before being evaluated.\r\n *\r\n * @param UTMString the UTM coordinate text string.\r\n * @return the corresponding [UTMCoord].\r\n * @throws IllegalArgumentException if the [UTMString] is empty, or the conversion to geodetic coordinates fails.\r\n */\r\n @JvmStatic\r\n fun fromString(UTMString: String): UTMCoord {\r\n val separated = UTMString.trim { it <= ' ' }.replace(\" +\".toRegex(), \" \")\r\n .split(\" \").toTypedArray()\r\n return fromUTM(\r\n separated[0].toInt(),\r\n if (separated[1] == \"S\") Hemisphere.S else Hemisphere.N, //Hemisphere.valueOf(separated[1]),\r\n separated[2].substring(0, separated[2].length - 1).toDouble(),\r\n separated[3].substring(0, separated[3].length - 1).toDouble()\r\n )\r\n }\r\n }\r\n\r\n fun toLocation() = Location(latitude, longitude)\r\n\r\n override fun toString() = zone.toString() + \" \" + hemisphere + \" \" + easting.roundToInt() + \"E\" + \" \" + northing.roundToInt() + \"N\"\r\n}","package earth.worldwind.geom.coords\r\n\r\nimport earth.worldwind.geom.Angle.Companion.radians\r\nimport earth.worldwind.geom.Ellipsoid\r\nimport kotlin.math.PI\r\n\r\n/*\r\n * Converter used to translate UTM coordinates to and from geodetic latitude and longitude.\r\n * Ported to Kotlin from the NGA GeoTrans utm.c and utm.h\r\n */\r\ninternal class UTMCoordConverter {\r\n companion object {\r\n const val NO_ERROR = 0x0000\r\n const val LAT_ERROR = 0x0001\r\n const val LON_ERROR = 0x0002\r\n const val EASTING_ERROR = 0x0004\r\n const val NORTHING_ERROR = 0x0008\r\n const val ZONE_ERROR = 0x0010\r\n const val HEMISPHERE_ERROR = 0x0020\r\n const val ZONE_OVERRIDE_ERROR = 0x0040\r\n const val TM_ERROR = 0x0200\r\n private const val MIN_LAT = -82 * PI / 180.0 /* -82 degrees in radians */\r\n private const val MAX_LAT = 86 * PI / 180.0 /* 86 degrees in radians */\r\n private const val MIN_EASTING = 100000\r\n private const val MAX_EASTING = 900000\r\n private const val MIN_NORTHING = 0\r\n private const val MAX_NORTHING = 10000000\r\n }\r\n\r\n private val ellipsoid = Ellipsoid.WGS84\r\n private val a = ellipsoid.semiMajorAxis /* Semi-major axis of ellipsoid in meters */\r\n private val f = 1 / ellipsoid.inverseFlattening /* Flattening of ellipsoid */\r\n private val override = 0 /* Zone override flag */\r\n private var centralMeridian = 0.0\r\n\r\n var hemisphere = Hemisphere.N\r\n private set\r\n /** Easting (X) in meters */\r\n var easting = 0.0\r\n private set\r\n /** Northing (Y) in meters */\r\n var northing = 0.0\r\n private set\r\n /** UTM zone */\r\n var zone = 0\r\n private set\r\n /** Latitude in radians. */\r\n var latitude = 0.0\r\n private set\r\n /** Longitude in radians.*/\r\n var longitude = 0.0\r\n private set\r\n\r\n /**\r\n * The function Convert_Geodetic_To_UTM converts geodetic (latitude and longitude) coordinates to UTM projection\r\n * (zone, hemisphere, easting and northing) coordinates according to the current ellipsoid and UTM zone override\r\n * parameters. If any errors occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is\r\n * returned.\r\n *\r\n * @param latitude Latitude in radians\r\n * @param longitude Longitude in radians\r\n *\r\n * @return error code\r\n */\r\n fun convertGeodeticToUTM(latitude: Double, longitude: Double): Int {\r\n var lon = longitude\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or LAT_ERROR\r\n /* Longitude out of range */\r\n if (lon < -PI || lon > 2 * PI) errorCode = errorCode or LON_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n if (lon < 0) lon += 2 * PI + 1.0e-10\r\n val latDegrees = (latitude * 180.0 / PI).toInt()\r\n val lonDegrees = (lon * 180.0 / PI).toInt()\r\n var tempZone = (if (lon < PI) 31 + lon * 180.0 / PI / 6.0 else lon * 180.0 / PI / 6.0 - 29).toInt()\r\n if (tempZone > 60) tempZone = 1\r\n /* UTM special cases */\r\n if (latDegrees in 56..63 && lonDegrees > -1 && lonDegrees < 3) tempZone = 31\r\n if (latDegrees in 56..63 && lonDegrees > 2 && lonDegrees < 12) tempZone = 32\r\n if (latDegrees > 71 && lonDegrees > -1 && lonDegrees < 9) tempZone = 31\r\n if (latDegrees > 71 && lonDegrees > 8 && lonDegrees < 21) tempZone = 33\r\n if (latDegrees > 71 && lonDegrees > 20 && lonDegrees < 33) tempZone = 35\r\n if (latDegrees > 71 && lonDegrees > 32 && lonDegrees < 42) tempZone = 37\r\n if (override != 0) {\r\n if (tempZone == 1 && override == 60) tempZone = override\r\n else if (tempZone == 60 && override == 1) tempZone = override\r\n else if (tempZone - 1 <= override && override <= tempZone + 1) tempZone = override\r\n else errorCode = ZONE_OVERRIDE_ERROR\r\n }\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (tempZone >= 31) (6 * tempZone - 183) * PI / 180.0 else (6 * tempZone + 177) * PI / 180.0\r\n zone = tempZone\r\n if (latitude < 0) {\r\n falseNorthing = 10000000.0\r\n hemisphere = Hemisphere.S\r\n } else hemisphere = Hemisphere.N\r\n try {\r\n val tm = TMCoord.fromLatLon(\r\n latitude.radians, lon.radians, a, f, originLatitude.radians,\r\n centralMeridian.radians, falseEasting, falseNorthing, scale\r\n )\r\n easting = tm.easting\r\n northing = tm.northing\r\n if (easting < MIN_EASTING || easting > MAX_EASTING) errorCode = EASTING_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n }\r\n return errorCode\r\n }\r\n\r\n /**\r\n * The function Convert_UTM_To_Geodetic converts UTM projection (zone, hemisphere, easting and northing) coordinates\r\n * to geodetic(latitude and longitude) coordinates, according to the current ellipsoid parameters. If any errors\r\n * occur, the error code(s) are returned by the function, otherwise UTM_NO_ERROR is returned.\r\n *\r\n * @param zone UTM zone.\r\n * @param hemisphere The coordinate hemisphere, either [Hemisphere.N] of [Hemisphere.S].\r\n * @param easting easting (X) in meters.\r\n * @param northing Northing (Y) in meters.\r\n *\r\n * @return error code.\r\n */\r\n fun convertUTMToGeodetic(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Int {\r\n var errorCode = NO_ERROR\r\n val originLatitude = 0.0\r\n val falseEasting = 500000.0\r\n var falseNorthing = 0.0\r\n val scale = 0.9996\r\n if (zone < 1 || zone > 60) errorCode = errorCode or ZONE_ERROR\r\n if (hemisphere != Hemisphere.S && hemisphere != Hemisphere.N) errorCode = errorCode or HEMISPHERE_ERROR\r\n if (northing < MIN_NORTHING || northing > MAX_NORTHING) errorCode = errorCode or NORTHING_ERROR\r\n /* no errors */\r\n if (errorCode == NO_ERROR) {\r\n centralMeridian = if (zone >= 31) (6 * zone - 183) * PI / 180.0 else (6 * zone + 177) * PI / 180.0\r\n if (hemisphere == Hemisphere.S) falseNorthing = 10000000.0\r\n try {\r\n val tm = TMCoord.fromTM(\r\n easting, northing,\r\n originLatitude.radians, centralMeridian.radians,\r\n falseEasting, falseNorthing, scale\r\n )\r\n latitude = tm.latitude.inRadians\r\n longitude = tm.longitude.inRadians\r\n /* Latitude out of range */\r\n if (latitude < MIN_LAT || latitude > MAX_LAT) errorCode = errorCode or NORTHING_ERROR\r\n } catch (e: Exception) {\r\n errorCode = TM_ERROR\r\n }\r\n }\r\n return errorCode\r\n }\r\n}","package earth.worldwind.gesture\n\n/**\n * Gesture state indicates a GestureRecognizer's current state.\n * Accepted values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN], [CHANGED], [CANCELLED], and [ENDED].\n */\nenum class GestureState {\n /**\n * POSSIBLE gesture recognizer state. Gesture recognizers in this state are\n * idle when there is no input event to evaluate, or are evaluating input events to determine whether or not to\n * transition into another state.\n */\n POSSIBLE,\n /**\n * FAILED gesture recognizer state. Gesture recognizers transition to this\n * state from the POSSIBLE state when the gesture cannot be recognized given the current input.\n */\n FAILED,\n /**\n * RECOGNIZED gesture recognizer state. Discrete gesture recognizers\n * transition to this state from the POSSIBLE state when the gesture is recognized.\n */\n RECOGNIZED,\n /**\n * BEGAN gesture recognizer state. Continuous gesture recognizers transition\n * to this state from the POSSIBLE state when the gesture is first recognized.\n */\n BEGAN,\n /**\n * CHANGED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from the BEGAN state or the CHANGED state, whenever an input event indicates a change in\n * the gesture.\n */\n CHANGED,\n /**\n * CANCELLED gesture recognizer state. Continuous gesture recognizers may\n * transition to this state from the BEGAN state or the CHANGED state when the touch events are cancelled.\n */\n CANCELLED,\n /**\n * ENDED gesture recognizer state. Continuous gesture recognizers\n * transition to this state from either the BEGAN state or the CHANGED state when the current input no longer\n * represents the gesture.\n */\n ENDED;\n}","package earth.worldwind.globe\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.elevation.ElevationModel\nimport earth.worldwind.globe.projection.GeographicProjection\nimport earth.worldwind.globe.projection.Wgs84Projection\nimport kotlin.math.PI\nimport kotlin.math.sin\nimport kotlin.math.sqrt\n\n/**\n * Planet or celestial object approximated by a reference ellipsoid and elevation models. Globe expresses its\n * ellipsoidal parameters and elevation values in meters.\n */\nopen class Globe(\n /**\n * The globe's reference ellipsoid defining the globe's equatorial radius and polar radius.\n */\n var ellipsoid: Ellipsoid = Ellipsoid.WGS84,\n /**\n * Indicates the geographic projection used by this globe. The projection specifies this globe's Cartesian\n * coordinate system.\n */\n var projection: GeographicProjection = Wgs84Projection()\n) {\n /**\n * Represents the elevations for an area, often but not necessarily the whole globe.\n */\n var elevationModel = ElevationModel()\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the equator.\n */\n val equatorialRadius get() = ellipsoid.semiMajorAxis\n /**\n * Indicates the radius in meters of the globe's ellipsoid at the poles.\n */\n val polarRadius get() = ellipsoid.semiMinorAxis\n /**\n * Indicates the eccentricity squared parameter of the globe's ellipsoid. This is equivalent to `2*f -\n * f*f`, where `f` is the ellipsoid's flattening parameter.\n */\n val eccentricitySquared get() = ellipsoid.eccentricitySquared\n /**\n * Indicates whether this is a 2D globe.\n */\n val is2D get() = projection.is2D\n /**\n * Indicates whether this projection is continuous with itself horizontally.\n */\n val isContinuous get() = projection.isContinuous\n /**\n * Indicates the geographic limits of this projection.\n */\n val projectionLimits get() = projection.projectionLimits\n /**\n * Current globe state.\n */\n val state get() = State(ellipsoid, projection.displayName)\n /**\n * The globe offset in 2D continuous projection. Center is the default for 3D.\n */\n var offset = Offset.Center\n set (value) {\n field = value\n // Calculate horizontal projection offset in meters\n offsetValue = when (value) {\n Offset.Center -> 0.0\n Offset.Right -> 2.0 * PI * equatorialRadius\n Offset.Left -> -2.0 * PI * equatorialRadius\n }\n }\n protected var offsetValue = 0.0\n\n /**\n * An offset to apply to this globe when translating between Geographic positions and Cartesian points.\n * Used during scrolling to position points appropriately.\n */\n enum class Offset { Center, Right, Left }\n\n /**\n * Used to compare states during rendering to determine whether globe-state dependent cached values must be updated.\n */\n data class State(private val ellipsoid: Ellipsoid, private val projectionName: String)\n\n /**\n * Indicates the radius in meters of the globe's ellipsoid at a specified location.\n *\n * @param latitude the location's latitude\n * @param longitude the location's longitude\n *\n * @return the radius in meters of the globe's ellipsoid at the specified location\n */\n @Suppress(\"UNUSED_PARAMETER\")\n fun getRadiusAt(latitude: Angle, longitude: Angle): Double {\n // The radius for an ellipsoidal globe is a function of its latitude. The following solution was derived by\n // observing that the length of the ellipsoidal point at the specified latitude and longitude indicates the\n // radius at that location. The formula for the length of the ellipsoidal point was then converted into the\n // simplified form below.\n val sinLat = sin(latitude.inRadians)\n val ec2 = ellipsoid.eccentricitySquared\n val rpm = ellipsoid.semiMajorAxis / sqrt(1 - ec2 * sinLat * sinLat)\n return rpm * sqrt(1 + (ec2 * ec2 - 2 * ec2) * sinLat * sinLat)\n }\n\n /**\n * Converts a geographic position to Cartesian coordinates. This globe's projection specifies the Cartesian\n * coordinate system.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(latitude: Angle, longitude: Angle, altitude: Double, result: Vec3) =\n projection.geographicToCartesian(this, latitude, longitude, altitude, offsetValue, result)\n\n fun geographicToCartesianNormal(latitude: Angle, longitude: Angle, result: Vec3) =\n projection.geographicToCartesianNormal(this, latitude, longitude, result)\n\n fun geographicToCartesianTransform(latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4) =\n projection.geographicToCartesianTransform(this, latitude, longitude, altitude, result)\n\n fun geographicToCartesianGrid(\n sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, result: FloatArray, rowOffset: Int = 0, rowStride: Int = 0\n ) = projection.geographicToCartesianGrid(\n this, sector, numLat, numLon, height, verticalExaggeration,\n origin, offsetValue, result, rowOffset, rowStride\n )\n\n fun geographicToCartesianBorder(\n sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3, result: FloatArray\n ) = projection.geographicToCartesianBorder(this, sector, numLat, numLon, height, origin, offsetValue, result)\n\n /**\n * Converts a Cartesian point to a geographic position. This globe's projection specifies the Cartesian coordinate\n * system.\n *\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's Y component\n * @param z the Cartesian point's Z component\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return the result argument, set to the computed geographic position\n */\n fun cartesianToGeographic(x: Double, y: Double, z: Double, result: Position) =\n projection.cartesianToGeographic(this, x, y, z, offsetValue, result).also {\n if (is2D) result.longitude = result.longitude.normalize180()\n }\n\n fun cartesianToLocalTransform(x: Double, y: Double, z: Double, result: Matrix4) =\n projection.cartesianToLocalTransform(this, x, y, z, result)\n\n /**\n * Indicates the distance to the globe's horizon from a specified height above the globe's ellipsoid. The result of\n * this method is undefined if the height is negative.\n *\n * @param height the viewer's height above the globe's ellipsoid in meters\n *\n * @return the horizon distance in meters\n */\n fun horizonDistance(height: Double) = if (height > 0.0) sqrt(height * (2 * ellipsoid.semiMajorAxis + height)) else 0.0\n\n /**\n * Computes the first intersection of this globe with a specified line. The line is interpreted as a ray;\n * intersection points behind the line's origin are ignored.\n *\n * @param line the line to intersect with this globe\n * @param result a pre-allocated [Vec3] in which to return the computed point\n *\n * @return true if the ray intersects the globe, otherwise false\n */\n fun intersect(line: Line, result: Vec3) = projection.intersect(this, line, result)\n\n /**\n * Determine terrain altitude in specified geographic point from elevation model\n *\n * @param latitude location latitude\n * @param longitude location longitude\n * @param retrieve retrieve the most detailed elevation data instead of using first available cached value\n *\n * @return Elevation in meters in specified location\n */\n fun getElevation(latitude: Angle, longitude: Angle, retrieve: Boolean = false) =\n elevationModel.getHeight(latitude, longitude, retrieve).toDouble()\n\n /**\n * Get absolute position with terrain elevation at specified coordinates\n *\n * @param latitude Specified latitude\n * @param longitude Specified longitude\n *\n * @return Absolute position with terrain elevation\n */\n fun getAbsolutePosition(latitude: Angle, longitude: Angle) =\n Position(latitude, longitude, getElevation(latitude, longitude, retrieve = true))\n\n /**\n * Get absolute position for specified position and specified altitude mode\n *\n * @param position Specified position\n * @param altitudeMode Specified altitude mode\n *\n * @return Absolute position for specified altitude mode\n */\n fun getAbsolutePosition(position: Position, altitudeMode: AltitudeMode) = when (altitudeMode) {\n AltitudeMode.CLAMP_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude)\n AltitudeMode.RELATIVE_TO_GROUND -> getAbsolutePosition(position.latitude, position.longitude).apply {\n altitude += position.altitude\n }\n else -> Position(position)\n }\n\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.elevation.coverage.ElevationCoverage\n\nopen class ElevationModel(): Iterable {\n protected val coverages = mutableListOf()\n val timestamp: Long get() {\n var maxTimestamp = 0L\n for (i in coverages.indices) {\n val timestamp = coverages[i].timestamp\n if (maxTimestamp < timestamp) maxTimestamp = timestamp\n }\n return maxTimestamp\n }\n val count get() = coverages.size\n\n constructor(model: ElevationModel): this() { addAllCoverages(model) }\n\n constructor(iterable: Iterable): this() { for (coverage in iterable) addCoverage(coverage) }\n\n fun invalidate() = coverages.forEach { coverage -> coverage.clear() }\n\n fun getCoverageNamed(name: String) = coverages.firstOrNull { coverage -> coverage.displayName == name }\n\n fun getCoverageWithProperty(key: Any, value: Any) = coverages.firstOrNull { coverage ->\n coverage.hasUserProperty(key) && coverage.getUserProperty(key) == value\n }\n\n fun addCoverage(coverage: ElevationCoverage) = !coverages.contains(coverage) && coverages.add(coverage)\n\n fun addAllCoverages(model: ElevationModel): Boolean {\n val thatList = model.coverages\n //coverages.ensureCapacity(thatList.size)\n var changed = false\n for (thatCoverage in thatList) changed = changed or addCoverage(thatCoverage)\n return changed\n }\n\n fun removeCoverage(coverage: ElevationCoverage) = coverages.remove(coverage)\n\n fun removeAllCoverages(model: ElevationModel) = coverages.removeAll(model.coverages)\n\n fun clearCoverages() = coverages.clear()\n\n override fun iterator() = coverages.iterator()\n\n fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float {\n // coverages composite from fine to coarse\n for (i in coverages.indices.reversed()) {\n val height = coverages[i].getHeight(latitude, longitude, retrieve)\n if (height != null) return height\n }\n return 0f\n }\n\n fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n // coverages composite from coarse to fine\n for (i in coverages.indices) coverages[i].getHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n\n fun getHeightLimits(sector: Sector, result: FloatArray) {\n // coverage order is irrelevant\n for (i in coverages.indices) coverages[i].getHeightLimits(sector, result)\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.LruMemoryCache\nimport kotlinx.datetime.Clock\n\nabstract class AbstractElevationCoverage: ElevationCoverage {\n final override val sector = Sector().setFullSphere() // Real data availability sector can be smaller than TMS sector\n override var displayName: String? = null\n override var isEnabled = true\n set(value) {\n field = value\n updateTimestamp()\n }\n override var timestamp = Clock.System.now().toEpochMilliseconds()\n protected set\n private var userProperties: MutableMap? = null\n private val heightCache = LruMemoryCache(50000)\n\n protected fun updateTimestamp() {\n timestamp = Clock.System.now().toEpochMilliseconds()\n heightCache.clear() // Invalidate cache if elevation coverage changed\n }\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun getHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n return if (isEnabled) {\n val key = 31 * latitude.inDegrees.hashCode() + longitude.inDegrees.hashCode()\n heightCache[key] ?: doGetHeight(latitude, longitude, retrieve)?.also {\n heightCache.put(key, it, 1)\n }\n } else null\n }\n\n override fun getHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (isEnabled) doGetHeightGrid(gridSector, gridWidth, gridHeight, result)\n }\n\n override fun getHeightLimits(sector: Sector, result: FloatArray) {\n if (isEnabled) doGetHeightLimits(sector, result)\n }\n\n protected abstract fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float?\n\n protected abstract fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray)\n\n protected abstract fun doGetHeightLimits(sector: Sector, result: FloatArray)\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.WorldWind\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.util.*\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.format.format\nimport earth.worldwind.util.math.fract\nimport earth.worldwind.util.math.mod\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.time.Duration.Companion.seconds\n\nabstract class AbstractTiledElevationCoverage(\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n): AbstractElevationCoverage() {\n companion object {\n protected const val GET_HEIGHT_LIMIT_SAMPLES = 32\n }\n\n var tileMatrixSet = tileMatrixSet\n set(value) {\n field = value\n sector.copy(value.sector) // Use TMS sector as bounding sector by default\n clear()\n }\n var elevationSourceFactory = elevationSourceFactory\n set(value) {\n field = value\n clear()\n }\n /**\n * Unique identifier of the coverage type, defined by elevation source factory content type\n */\n val type get() = elevationSourceFactory.contentType\n /**\n * Controls how many concurrent tile requests are allowed for this coverage.\n */\n var retrievalQueueSize = 4\n /**\n * The list of elevation retrievals in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n protected var coverageCache = LruMemoryCache(1024 * 1024 * 64)\n protected var isRetrievalEnabled = false\n protected val absentResourceList = AbsentResourceList(3, 5.seconds)\n protected val mainScope = MainScope()\n\n init {\n sector.copy(tileMatrixSet.sector) // Use TMS sector as bounding sector by default\n log(INFO, \"Coverage cache initialized %.0f KB\".format(coverageCache.capacity / 1024.0))\n }\n\n /**\n * Setup custom coverage cache size according to device capabilities and user needs.\n */\n fun setupCoverageCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n coverageCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun clear() {\n mainScope.coroutineContext.cancelChildren() // Cancel all async jobs but keep scope reusable\n currentRetrievals.clear()\n coverageCache.clear()\n absentResourceList.clear()\n updateTimestamp()\n }\n\n override fun doGetHeight(latitude: Angle, longitude: Angle, retrieve: Boolean): Float? {\n if (!tileMatrixSet.sector.contains(latitude, longitude)) return null // no coverage in the specified location\n val targetIdx = tileMatrixSet.entries.size - 1 // retrieve height from last available matrix\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the last and the first matrix\n isRetrievalEnabled = retrieve && (idx == targetIdx || idx == 0)\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val row = floor((tileMatrix.sector.maxLatitude.inDegrees - latitude.inDegrees) / deltaLat).toInt()\n val col = floor((longitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n fetchTileArray(tileMatrix, row, col)?.let {\n val maxLat = tileMatrix.sector.maxLatitude.inDegrees - deltaLat * row\n val minLon = tileMatrix.sector.minLongitude.inDegrees + deltaLon * col\n val maxX = tileMatrix.tileWidth - 1\n val maxY = tileMatrix.tileHeight - 1\n val x = (maxX * (longitude.inDegrees - minLon) / deltaLon).toFloat()\n val y = (maxY * (maxLat - latitude.inDegrees) / deltaLat).toFloat()\n val x0 = floor(x).toInt().coerceIn(0, maxX)\n val x1 = (x0 + 1).coerceIn(0, maxX)\n val y0 = floor(y).toInt().coerceIn(0, maxY)\n val y1 = (y0 + 1).coerceIn(0, maxY)\n val x0y0 = it[x0 + y0 * tileMatrix.tileWidth]\n val x1y0 = it[x1 + y0 * tileMatrix.tileWidth]\n val x0y1 = it[x0 + y1 * tileMatrix.tileWidth]\n val x1y1 = it[x1 + y1 * tileMatrix.tileWidth]\n val xf = x - x0\n val yf = y - y0\n return (1 - xf) * (1 - yf) * x0y0 + xf * (1 - yf) * x1y0 + (1 - xf) * yf * x0y1 + xf * yf * x1y1\n }\n }\n return null // did not find a tile\n }\n\n override fun doGetHeightGrid(gridSector: Sector, gridWidth: Int, gridHeight: Int, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(gridSector)) return // no coverage in the specified sector\n val targetPixelSpan = gridSector.deltaLatitude.div(gridHeight)\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(gridSector, gridWidth, gridHeight, tileMatrix, tileBlock)) {\n readHeightGrid(gridSector, gridWidth, gridHeight, tileBlock, result)\n return\n }\n }\n }\n\n override fun doGetHeightLimits(sector: Sector, result: FloatArray) {\n if (!tileMatrixSet.sector.intersects(sector)) return // no coverage in the specified sector\n val targetPixelSpan = sector.deltaLatitude.div(GET_HEIGHT_LIMIT_SAMPLES)\n val targetIdx = tileMatrixSet.indexOfMatrixNearest(targetPixelSpan)\n val tileBlock = TileBlock()\n for (idx in targetIdx downTo 0) {\n // enable retrieval of the target matrix and the first matrix\n isRetrievalEnabled = idx == targetIdx || idx == 0\n val tileMatrix = tileMatrixSet.entries[idx]\n if (fetchTileBlock(sector, tileMatrix, tileBlock)) {\n scanHeightLimits(sector, tileBlock, result)\n return\n }\n }\n }\n\n protected open fun fetchTileBlock(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileMatrix: TileMatrix, result: TileBlock\n ): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n result.tileMatrix = tileMatrix\n result.clear()\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var uIdx = 0\n while (uIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (uIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n if (lon in matrixMinLon..matrixMaxLon) {\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n result.cols[col0] = 0\n result.cols[col1] = 0\n }\n uIdx++\n lon += deltaLon\n }\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var vIdx = 0\n while (vIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (vIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n if (lat in matrixMinLat..matrixMaxLat) {\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n result.rows[row0] = 0\n result.rows[row1] = 0\n }\n vIdx++\n lat += deltaLat\n }\n for (row in result.rows.keys) {\n for (col in result.cols.keys) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) result.putTileArray(row, col, tileArray) else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileBlock(sector: Sector, tileMatrix: TileMatrix, result: TileBlock): Boolean {\n val tileWidth = tileMatrix.tileWidth\n val tileHeight = tileMatrix.tileHeight\n val rasterWidth = tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val colMin = iMin / tileWidth\n val colMax = iMax / tileWidth\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n val rowMin = jMin / tileHeight\n val rowMax = jMax / tileHeight\n result.tileMatrix = tileMatrix\n result.clear()\n for (row in rowMin..rowMax) {\n for (col in colMin..colMax) {\n val tileArray = fetchTileArray(tileMatrix, row, col)\n if (tileArray != null) {\n result.rows[row] = 0\n result.cols[col] = 0\n result.putTileArray(row, col, tileArray)\n } else return false\n }\n }\n return true\n }\n\n protected open fun fetchTileArray(tileMatrix: TileMatrix, row: Int, column: Int): ShortArray? {\n val key = tileMatrix.tileKey(row, column)\n return coverageCache[key] ?: run {\n // Ignore retrieval of already requested or marked as absent tiles\n if (isRetrievalEnabled && currentRetrievals.size < retrievalQueueSize && !currentRetrievals.contains(key)\n && !absentResourceList.isResourceAbsent(key)) {\n currentRetrievals += key\n mainScope.launch { retrieveTileArray(key, tileMatrix, row, column) }\n }\n null\n }\n }\n\n protected abstract suspend fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int)\n\n protected fun retrievalSucceeded(key: Long, value: ShortArray) {\n coverageCache.put(key, value, value.size * 2)\n absentResourceList.unmarkResourceAbsent(key)\n currentRetrievals -= key\n updateTimestamp()\n WorldWind.requestRedraw()\n }\n\n protected fun retrievalFailed(key: Long) {\n absentResourceList.markResourceAbsent(key)\n currentRetrievals -= key\n }\n\n protected open fun readHeightGrid(\n gridSector: Sector, gridWidth: Int, gridHeight: Int, tileBlock: TileBlock, result: FloatArray\n ) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMinLat = tileBlock.tileMatrix.sector.minLatitude.inDegrees\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixMaxLon = tileBlock.tileMatrix.sector.maxLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val sMin = 1.0 / (2.0 * rasterWidth)\n val sMax = 1.0 - sMin\n val tMin = 1.0 / (2.0 * rasterHeight)\n val tMax = 1.0 - tMin\n var rIdx = 0\n var lat = gridSector.minLatitude.inDegrees\n val deltaLat = gridSector.deltaLatitude.inDegrees / (gridHeight - 1)\n var hIdx = 0\n while (hIdx < gridHeight) {\n // explicitly set the last lat to the max latitude to ensure alignment\n if (hIdx == gridHeight - 1) lat = gridSector.maxLatitude.inDegrees\n val t = (matrixMaxLat - lat) / matrixDeltaLat\n val v = rasterHeight * t.coerceIn(tMin, tMax) // clamp the vertical coordinate to the raster edge\n val b = fract(v - 0.5).toFloat()\n val j0 = floor(v - 0.5).toInt().coerceIn(0, rasterHeight - 1)\n val j1 = (j0 + 1).coerceIn(0, rasterHeight - 1)\n val row0 = j0 / tileHeight\n val row1 = j1 / tileHeight\n var lon = gridSector.minLongitude.inDegrees\n val deltaLon = gridSector.deltaLongitude.inDegrees / (gridWidth - 1)\n var wIdx = 0\n while (wIdx < gridWidth) {\n // explicitly set the last lon to the max longitude to ensure alignment\n if (wIdx == gridWidth - 1) lon = gridSector.maxLongitude.inDegrees\n val s = (lon - matrixMinLon) / matrixDeltaLon\n var u: Double\n var i0: Int\n var i1: Int\n if (tileBlock.tileMatrix.sector.isFullSphere) {\n u = rasterWidth * fract(s) // wrap the horizontal coordinate\n i0 = mod(floor(u - 0.5).toInt(), rasterWidth)\n i1 = mod(i0 + 1, rasterWidth)\n } else {\n u = rasterWidth * s.coerceIn(sMin, sMax) // clamp the horizontal coordinate\n i0 = floor(u - 0.5).toInt().coerceIn(0, rasterWidth - 1)\n i1 = (i0 + 1).coerceIn(0, rasterWidth - 1)\n }\n val a = fract(u - 0.5).toFloat()\n val col0 = i0 / tileWidth\n val col1 = i1 / tileWidth\n if (lat in matrixMinLat..matrixMaxLat && lon in matrixMinLon..matrixMaxLon) {\n val i0j0 = tileBlock.readTexel(row0, col0, i0 % tileWidth, j0 % tileHeight)\n val i1j0 = tileBlock.readTexel(row0, col1, i1 % tileWidth, j0 % tileHeight)\n val i0j1 = tileBlock.readTexel(row1, col0, i0 % tileWidth, j1 % tileHeight)\n val i1j1 = tileBlock.readTexel(row1, col1, i1 % tileWidth, j1 % tileHeight)\n result[rIdx] = (1 - a) * (1 - b) * i0j0 + a * (1 - b) * i1j0 + (1 - a) * b * i0j1 + a * b * i1j1\n }\n rIdx++\n wIdx++\n lon += deltaLon\n }\n hIdx++\n lat += deltaLat\n }\n }\n\n protected open fun scanHeightLimits(sector: Sector, tileBlock: TileBlock, result: FloatArray) {\n val tileWidth = tileBlock.tileMatrix.tileWidth\n val tileHeight = tileBlock.tileMatrix.tileHeight\n val rasterWidth = tileBlock.tileMatrix.matrixWidth * tileWidth\n val rasterHeight = tileBlock.tileMatrix.matrixHeight * tileHeight\n val matrixMaxLat = tileBlock.tileMatrix.sector.maxLatitude.inDegrees\n val matrixMinLon = tileBlock.tileMatrix.sector.minLongitude.inDegrees\n val matrixDeltaLat = tileBlock.tileMatrix.sector.deltaLatitude.inDegrees\n val matrixDeltaLon = tileBlock.tileMatrix.sector.deltaLongitude.inDegrees\n val intersection = Sector(tileBlock.tileMatrix.sector)\n intersection.intersect(sector)\n val sMin = (intersection.minLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val sMax = (intersection.maxLongitude.inDegrees - matrixMinLon) / matrixDeltaLon\n val uMin = floor(rasterWidth * sMin).toInt()\n val uMax = ceil(rasterWidth * sMax).toInt()\n val iMin = uMin.coerceIn(0, rasterWidth - 1)\n val iMax = uMax.coerceIn(0, rasterWidth - 1)\n val tMin = (matrixMaxLat - intersection.maxLatitude.inDegrees) / matrixDeltaLat\n val tMax = (matrixMaxLat - intersection.minLatitude.inDegrees) / matrixDeltaLat\n val vMin = floor(rasterHeight * tMin).toInt()\n val vMax = ceil(rasterHeight * tMax).toInt()\n val jMin = vMin.coerceIn(0, rasterHeight - 1)\n val jMax = vMax.coerceIn(0, rasterHeight - 1)\n for (row in tileBlock.rows.keys) {\n val rowJMin = row * tileHeight\n val rowJMax = rowJMin + tileHeight - 1\n val j0 = jMin.coerceIn(rowJMin, rowJMax) % tileHeight\n val j1 = jMax.coerceIn(rowJMin, rowJMax) % tileHeight\n for (col in tileBlock.cols.keys) {\n val colIMin = col * tileWidth\n val colIMax = colIMin + tileWidth - 1\n val i0 = iMin.coerceIn(colIMin, colIMax) % tileWidth\n val i1 = iMax.coerceIn(colIMin, colIMax) % tileWidth\n tileBlock.getTileArray(row, col)?.let { tileArray ->\n // TODO how often do we read all of tileArray?\n for (j in j0..j1) for (i in i0..i1) {\n val pos = i + j * tileWidth\n val texel = tileArray[pos]\n if (result[0] > texel) result[0] = texel.toFloat()\n if (result[1] < texel) result[1] = texel.toFloat()\n }\n }\n }\n }\n }\n\n protected open fun assembleTilesList(sector: Sector, resolution: ClosedRange): List {\n val result = mutableListOf()\n val startIdx = tileMatrixSet.indexOfMatrixNearest(resolution.endInclusive)\n val endIdx = tileMatrixSet.indexOfMatrixNearest(resolution.start)\n for (idx in startIdx..endIdx) {\n val tileMatrix = tileMatrixSet.entries[idx]\n val deltaLat = tileMatrix.sector.deltaLatitude.inDegrees / tileMatrix.matrixHeight\n val deltaLon = tileMatrix.sector.deltaLongitude.inDegrees / tileMatrix.matrixWidth\n val minRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.maxLatitude.inDegrees) / deltaLat).toInt()\n val maxRow = floor((tileMatrix.sector.maxLatitude.inDegrees - sector.minLatitude.inDegrees) / deltaLat).toInt()\n val minCol = floor((sector.minLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n val maxCol = floor((sector.maxLongitude.inDegrees - tileMatrix.sector.minLongitude.inDegrees) / deltaLon).toInt()\n for (row in minRow..maxRow) for (col in minCol..maxCol) result.add(Tile(tileMatrix, row, col))\n }\n return result\n }\n\n protected data class Tile(val tileMatrix: TileMatrix, val row: Int, val col: Int)\n\n protected open class TileBlock {\n lateinit var tileMatrix: TileMatrix\n val rows = mutableMapOf()\n val cols = mutableMapOf()\n private val arrays = mutableMapOf()\n private var texelRow = -1\n private var texelCol = -1\n private var texelArray: ShortArray? = null\n\n open fun clear() {\n rows.clear()\n cols.clear()\n arrays.clear()\n texelRow = -1\n texelCol = -1\n texelArray = null\n }\n\n fun putTileArray(row: Int, column: Int, array: ShortArray) {\n val key = tileMatrix.tileKey(row, column)\n arrays[key] = array\n }\n\n fun getTileArray(row: Int, column: Int): ShortArray? {\n if (texelRow != row || texelCol != column) {\n texelRow = row\n texelCol = column\n texelArray = arrays[tileMatrix.tileKey(row, column)]\n }\n return texelArray\n }\n\n fun readTexel(row: Int, column: Int, i: Int, j: Int) =\n getTileArray(row, column)?.get(i + j * tileMatrix.tileWidth) ?: 0\n }\n}",null,"package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.ogc.WmsElevationCoverage\n\n/**\n * Displays NASA's global elevation coverage at 30m (1 arc-second) resolution.\n * By default, BasicElevationCoverage is configured to retrieve elevation coverage from the WMS at\n * [&https://wms.worldwind.earth/elev](https://wms.worldwind.earth/elev?SERVICE=WMS&REQUEST=GetCapabilities).\n */\nclass BasicElevationCoverage : WmsElevationCoverage(\n \"https://wms.worldwind.earth/elev\", \"NASADEM\", \"application/bil16\",\n Sector().setFullSphere(), Angle.fromSeconds(1.0)\n)","package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.util.Logger\nimport kotlin.math.*\n\nopen class MercatorProjection : GeographicProjection {\n override val displayName = \"Mercator\"\n override val is2D = true\n override val isContinuous = true\n override val projectionLimits = fromDegrees(-78.0, -180.0, 156.0, 360.0)\n private val scratchVec = Vec3()\n\n override fun geographicToCartesian(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3\n ): Vec3 {\n val lat = latitude.coerceIn(projectionLimits.minLatitude, projectionLimits.maxLatitude)\n val lon = longitude.coerceIn(projectionLimits.minLongitude, projectionLimits.maxLongitude)\n\n // See \"Map Projections: A Working Manual\", page 44 for the source of the below formulas.\n val ecc = sqrt(globe.eccentricitySquared)\n val sinPhi = sin(lat.inRadians)\n val s = (1 + sinPhi) / (1 - sinPhi) * ((1 - ecc * sinPhi) / (1 + ecc * sinPhi)).pow(ecc)\n result.x = globe.equatorialRadius * lon.inRadians + offset\n result.y = 0.5 * globe.equatorialRadius * ln(s)\n result.z = altitude\n return result\n }\n\n override fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3 {\n return result.set(0.0, 0.0, 1.0)\n }\n\n override fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4 {\n val vec = geographicToCartesian(globe, latitude, longitude, altitude, 0.0, scratchVec)\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return cartesianToLocalTransform(globe, vec.x, vec.y, vec.z, result)\n }\n\n override fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n Logger.logMessage(\n Logger.ERROR, \"MercatorProjection\", \"geographicToCartesianGrid\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n require(height == null || height.size >= numLat * numLon) {\n Logger.logMessage(Logger.ERROR, \"MercatorProjection\", \"geographicToCartesianGrid\", \"missingArray\")\n }\n\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 1 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 1 else 1\n val minLatLimit = projectionLimits.minLatitude.inRadians\n val maxLatLimit = projectionLimits.maxLatitude.inRadians\n val minLonLimit = projectionLimits.minLongitude.inRadians\n val maxLonLimit = projectionLimits.maxLongitude.inRadians\n var elevIndex = 0\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian point\n // corresponding to each latitude and longitude.\n var rowIndex = rowOffset\n val stride = if (rowStride == 0) numLon * 3 else rowStride\n var lat = minLat\n for (latIndex in 0 until numLat) {\n if (latIndex == numLat - 1) lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val sinLat = sin(lat.coerceIn(minLatLimit, maxLatLimit))\n val s = (1 + sinLat) / (1 - sinLat) * ((1 - ecc * sinLat) / (1 + ecc * sinLat)).pow(ecc)\n val y = eqr * ln(s) * 0.5 - yOffset\n\n var lon = minLon\n var colIndex = rowIndex\n for (lonIndex in 0 until numLon) {\n if (lonIndex == numLon - 1) lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n result[colIndex++] = (eqr * lon.coerceIn(minLonLimit, maxLonLimit) - xOffset + offset).toFloat()\n result[colIndex++] = y.toFloat()\n result[colIndex++] = if (height != null) (height[elevIndex++] * verticalExaggeration - zOffset).toFloat() else 0f\n lon += deltaLon\n }\n rowIndex += stride\n lat += deltaLat\n }\n\n return result\n }\n\n override fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float,\n origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray {\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / (if (numLat > 1) numLat - 3 else 1)\n val deltaLon = (maxLon - minLon) / (if (numLon > 1) numLon - 3 else 1)\n val minLatLimit = projectionLimits.minLatitude.inRadians\n val maxLatLimit = projectionLimits.maxLatitude.inRadians\n val minLonLimit = projectionLimits.minLongitude.inRadians\n val maxLonLimit = projectionLimits.maxLongitude.inRadians\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian point\n // corresponding to each latitude and longitude.\n var resultIndex = 0\n var lat = minLat\n var lon = minLon\n for (latIndex in 0 until numLat) {\n when {\n latIndex < 2 -> lat = minLat // explicitly set the first lat to the min latitude to ensure alignment\n latIndex < numLat - 2 -> lat += deltaLat\n else -> lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n }\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val sinLat = sin(lat.coerceIn(minLatLimit, maxLatLimit))\n val s = ((1 + sinLat) / (1 - sinLat)) * ((1 - ecc * sinLat) / (1 + ecc * sinLat)).pow(ecc)\n val y = eqr * ln(s) * 0.5 - yOffset\n\n var lonIndex = 0\n while (lonIndex < numLon) {\n when {\n lonIndex < 2 -> lon = minLon\n lonIndex < numLon - 2 -> lon += deltaLon\n else -> lon = maxLon\n }\n result[resultIndex++] = (eqr * lon.coerceIn(minLonLimit, maxLonLimit) - xOffset + offset).toFloat()\n result[resultIndex++] = y.toFloat()\n result[resultIndex++] = height - zOffset.toFloat()\n if (lonIndex == 0 && latIndex != 0 && latIndex != numLat - 1) {\n val skip = numLon - 2\n lonIndex += skip\n resultIndex += skip * 3\n }\n lonIndex++\n }\n }\n\n return result\n }\n\n override fun cartesianToGeographic(\n globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position\n ): Position {\n // See \"Map Projections: A Working Manual\", pages 44-45 for the source of the below formulas.\n val eqr = globe.equatorialRadius\n val ecc = sqrt(globe.eccentricitySquared)\n val t = exp(-y / globe.equatorialRadius) // eq (7-10)\n\n // Inverse projection requires converging series\n var phi = PI / 2 - 2 * atan(t) // eq (7-11) [first trial]\n var phiLast = 0.0\n while (abs(phi - phiLast) > CONVERGENCE_FACTOR) {\n phiLast = phi\n phi = PI / 2.0 - 2.0 * atan(t * ((1 - ecc * sin(phi)) / (1 + ecc * sin(phi))).pow(ecc / 2.0)) // eq (7-9)\n }\n\n val lambda = (x - offset) / eqr // eq (7-12)\n\n return result.setRadians(phi, lambda, z)\n }\n\n override fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4) = result.set(\n 1.0, 0.0, 0.0, x,\n 0.0, 1.0, 0.0, y,\n 0.0, 0.0, 1.0, z,\n 0.0, 0.0, 0.0, 1.0\n )\n\n override fun intersect(globe: Globe, line: Line, result: Vec3): Boolean {\n // Taken from \"Mathematics for 3D Game Programming and Computer Graphics, Third Edition\", Section 6.2.3.\n // Note that the parameter n from in equations 6.70 and 6.71 is omitted here. For an ellipsoidal globe this\n // parameter is always 1, so its square and its product with any other value simplifies to the identity.\n val vx = line.direction.x\n val vy = line.direction.y\n val vz = line.direction.z\n val sx = line.origin.x\n val sy = line.origin.y\n val sz = line.origin.z\n\n if (vz == 0.0 && sz != 0.0) return false // ray is parallel to and not coincident with the XY plane\n\n val t = -sz / vz // intersection distance, simplified for the XY plane\n if (t < 0) return false // intersection is behind the ray's origin\n\n result.x = sx + vx * t\n result.y = sy + vy * t\n result.z = sz + vz * t\n\n return true\n }\n\n companion object {\n private const val CONVERGENCE_FACTOR = 0.000001\n }\n}","package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.*\n\n/*\n * GeographicProjection implementing coordinate transformations based on the WGS-84 reference system (aka WGS 1984,\n * EPSG:4326).\n *\n * The WGS 84 projection defines a Cartesian coordinate system whose origin is at the globe's center. It's Y axis points\n * to the North Pole, the Z axis points to the intersection of the prime meridian and the equator, and the X axis\n * completes a right-handed coordinate system, is in the equatorial plane and 90 degrees East of the Z axis.\n */\nopen class Wgs84Projection: GeographicProjection {\n override val displayName = \"WGS84\"\n private val scratchPos = Position()\n\n override fun geographicToCartesian(globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n return result.set(\n (altitude + rpm) * cosLat * sinLon,\n (altitude + rpm * (1.0 - ec2)) * sinLat,\n (altitude + rpm) * cosLat * cosLon\n )\n }\n\n override fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n return result.set(\n cosLat * sinLon / eqr2,\n (1 - globe.eccentricitySquared) * sinLat / pol2,\n cosLat * cosLon / eqr2\n ).normalize()\n }\n\n override fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4 {\n val cosLat = cos(latitude.inRadians)\n val sinLat = sin(latitude.inRadians)\n val cosLon = cos(longitude.inRadians)\n val sinLon = sin(longitude.inRadians)\n val ec2 = globe.eccentricitySquared\n val rpm = globe.equatorialRadius / sqrt(1.0 - ec2 * sinLat * sinLat)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Convert the geographic position to Cartesian coordinates. This is equivalent to calling geographicToCartesian\n // but is much more efficient as an inline computation, as the results of cosLat/sinLat/etc. can be computed\n // once and reused.\n val px = (rpm + altitude) * cosLat * sinLon\n val py = (rpm * (1.0 - ec2) + altitude) * sinLat\n val pz = (rpm + altitude) * cosLat * cosLon\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, px,\n ey, ny, uy, py,\n ez, nz, uz, pz,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?, verticalExaggeration: Float,\n origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n require(height == null || height.size >= numLat * numLon) {\n logMessage(ERROR, \"Wgs84Projection\", \"geographicToCartesianGrid\", \"missingArray\")\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 1 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 1 else 1\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val cosLon = DoubleArray(numLon)\n val sinLon = DoubleArray(numLon)\n var elevIndex = 0\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n\n // Compute and save values that are a function of each unique longitude value in the specified sector. This\n // eliminates the need to re-compute these values for each column of constant longitude.\n var lon = minLon\n for (lonIndex in 0 until numLon) {\n if (lonIndex == numLon - 1) lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n cosLon[lonIndex] = cos(lon)\n sinLon[lonIndex] = sin(lon)\n lon += deltaLon\n }\n\n // Iterate over the latitude and longitude coordinates in the specified sector, computing the Cartesian\n // point corresponding to each latitude and longitude.\n var rowIndex = rowOffset\n val stride = if (rowStride == 0) numLon * 3 else rowStride\n var lat = minLat\n for (latIndex in 0 until numLat) {\n if (latIndex == numLat - 1) lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var colIndex = rowIndex\n for (lonIndex in 0 until numLon) {\n val hgt = if (height != null) (height[elevIndex++] * verticalExaggeration).toDouble() else 0.0\n result[colIndex++] = ((hgt + rpm) * cosLat * sinLon[lonIndex] - xOffset).toFloat()\n result[colIndex++] = ((hgt + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[colIndex++] = ((hgt + rpm) * cosLat * cosLon[lonIndex] - zOffset).toFloat()\n }\n rowIndex += stride\n lat += deltaLat\n }\n return result\n }\n\n override fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray {\n require(numLat >= 1 && numLon >= 1) {\n logMessage(\n ERROR, \"Wgs84Projection\", \"geographicToCartesianBorder\",\n \"Number of latitude or longitude locations is less than one\"\n )\n }\n val minLat = sector.minLatitude.inRadians\n val maxLat = sector.maxLatitude.inRadians\n val minLon = sector.minLongitude.inRadians\n val maxLon = sector.maxLongitude.inRadians\n val deltaLat = (maxLat - minLat) / if (numLat > 1) numLat - 3 else 1\n val deltaLon = (maxLon - minLon) / if (numLon > 1) numLon - 3 else 1\n var lat = minLat\n var lon = minLon\n val eqr = globe.equatorialRadius\n val ec2 = globe.eccentricitySquared\n val xOffset = origin?.x ?: 0.0\n val yOffset = origin?.y ?: 0.0\n val zOffset = origin?.z ?: 0.0\n var resultIndex = 0\n\n // Iterate over the edges of the specified sector, computing the Cartesian point at designated latitude and\n // longitude around the border.\n for (latIndex in 0 until numLat) {\n when {\n latIndex < 2 -> lat = minLat // explicitly set the first lat to the min latitude to ensure alignment\n latIndex < numLat - 2 -> lat += deltaLat\n else -> lat = maxLat // explicitly set the last lat to the max latitude to ensure alignment\n }\n\n // Latitude is constant for each row. Values that are a function of latitude can be computed once per row.\n val cosLat = cos(lat)\n val sinLat = sin(lat)\n val rpm = eqr / sqrt(1.0 - ec2 * sinLat * sinLat)\n var lonIndex = 0\n while (lonIndex < numLon) {\n when {\n lonIndex < 2 -> lon = minLon // explicitly set the first lon to the min longitude to ensure alignment\n lonIndex < numLon - 2 -> lon += deltaLon\n else -> lon = maxLon // explicitly set the last lon to the max longitude to ensure alignment\n }\n val cosLon = cos(lon)\n val sinLon = sin(lon)\n result[resultIndex++] = ((height + rpm) * cosLat * sinLon - xOffset).toFloat()\n result[resultIndex++] = ((height + rpm * (1.0 - ec2)) * sinLat - yOffset).toFloat()\n result[resultIndex++] = ((height + rpm) * cosLat * cosLon - zOffset).toFloat()\n if (lonIndex == 0 && latIndex != 0 && latIndex != numLat - 1) {\n val skip = numLon - 2\n lonIndex += skip\n resultIndex += skip * 3\n }\n lonIndex++\n }\n }\n return result\n }\n\n override fun cartesianToGeographic(globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position): Position {\n // According to H. Vermeille,\n // \"An analytical method to transform geocentric into geodetic coordinates\"\n // http://www.springerlink.com/content/3t6837t27t351227/fulltext.pdf\n // Journal of Geodesy, accepted 10/2010, not yet published\n val zpx = z * z + x * x\n val zpxSqrt = sqrt(zpx)\n val a = globe.equatorialRadius\n val ra2 = 1 / (a * a)\n val e2 = globe.eccentricitySquared\n val e4 = e2 * e2\n\n // Step 1\n val p = zpx * ra2\n val q = y * y * (1 - e2) * ra2\n val r = (p + q - e4) / 6\n val h: Double\n val phi: Double\n val evoluteBorderTest = 8 * r * r * r + e4 * p * q\n if (evoluteBorderTest > 0 || q != 0.0) {\n val u: Double\n if (evoluteBorderTest > 0) {\n // Step 2: general case\n val rad1 = sqrt(evoluteBorderTest)\n val rad2 = sqrt(e4 * p * q)\n\n // 10*e2 is my arbitrary decision of what Vermeille means by \"near... the cusps of the evolute\".\n val rad = ((rad1 + rad2) * (rad1 + rad2)).pow(1/3.0)\n u = if (evoluteBorderTest > 10 * e2) r + 0.5 * rad + 2 * r * r / rad\n else r + 0.5 * rad + 0.5 * ((rad1 - rad2) * (rad1 - rad2)).pow(1/3.0)\n } else {\n // Step 3: near evolute\n val rad1 = sqrt(-evoluteBorderTest)\n val rad2 = sqrt(-8 * r * r * r)\n val rad3 = sqrt(e4 * p * q)\n val aTan = 2 * atan2(rad3, rad1 + rad2) / 3\n u = -4 * r * sin(aTan) * cos(PI / 6 + aTan)\n }\n val v = sqrt(u * u + e4 * q)\n val w = e2 * (u + v - q) / (2 * v)\n val k = (u + v) / (sqrt(w * w + u + v) + w)\n val d = k * zpxSqrt / (k + e2)\n val dpySqrt = sqrt(d * d + y * y)\n h = (k + e2 - 1) * dpySqrt / k\n phi = 2 * atan2(y, dpySqrt + d)\n } else {\n // Step 4: singular disk\n val rad1 = sqrt(1 - e2)\n val rad2 = sqrt(e2 - p)\n val e = sqrt(e2)\n h = -a * rad1 * rad2 / e\n phi = rad2 / (e * rad2 + rad1 * sqrt(p))\n }\n\n // Compute lambda\n val s2 = sqrt(2.0)\n val lambda = when {\n (s2 - 1) * x < zpxSqrt + z -> 2 * atan2(x, zpxSqrt + z) // case 1 - -135deg < lambda < 135deg\n zpxSqrt + x < (s2 + 1) * z -> -PI * 0.5 + 2 * atan2(z, zpxSqrt - x) // case 2 - -225deg < lambda < 45deg\n else -> PI * 0.5 - 2 * atan2(z, zpxSqrt + x) // case 3: - -45deg < lambda < 225deg\n }\n return result.setRadians(phi, lambda, h)\n }\n\n override fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4): Matrix4 {\n val pos = cartesianToGeographic(globe, x, y, z, 0.0, scratchPos)\n val cosLat = cos(pos.latitude.inRadians)\n val sinLat = sin(pos.latitude.inRadians)\n val cosLon = cos(pos.longitude.inRadians)\n val sinLon = sin(pos.longitude.inRadians)\n val eqr2 = globe.equatorialRadius * globe.equatorialRadius\n val pol2 = globe.polarRadius * globe.polarRadius\n\n // Compute the surface normal at the geographic position. This is equivalent to calling\n // geographicToCartesianNormal but is much more efficient as an inline computation.\n var ux = cosLat * sinLon / eqr2\n var uy = (1 - globe.eccentricitySquared) * sinLat / pol2\n var uz = cosLat * cosLon / eqr2\n var len = sqrt(ux * ux + uy * uy + uz * uz)\n ux /= len\n uy /= len\n uz /= len\n\n // Compute the north pointing tangent at the geographic position. This computation could be encoded in its own\n // method, but is much more efficient as an inline computation. The north-pointing tangent is derived by\n // rotating the vector (0, 1, 0) about the Y-axis by longitude degrees, then rotating it about the X-axis by\n // -latitude degrees. The latitude angle must be inverted because latitude is a clockwise rotation about the\n // X-axis, and standard rotation matrices assume counter-clockwise rotation. The combined rotation can be\n // represented by a combining two rotation matrices Rlat, and Rlon, then transforming the vector (0, 1, 0) by\n // the combined transform: NorthTangent = (Rlon * Rlat) * (0, 1, 0)\n //\n // Additionally, this computation can be simplified by making two observations:\n // - The vector's X and Z coordinates are always 0, and its Y coordinate is always 1.\n // - Inverting the latitude rotation angle is equivalent to inverting sinLat. We know this by the\n // trigonometric identities cos(-x) = cos(x), and sin(-x) = -sin(x).\n var nx = -sinLat * sinLon\n var ny = cosLat\n var nz = -sinLat * cosLon\n len = sqrt(nx * nx + ny * ny + nz * nz)\n nx /= len\n ny /= len\n nz /= len\n\n // Compute the east pointing tangent as the cross product of the north and up axes. This is much more efficient\n // as an inline computation.\n val ex = ny * uz - nz * uy\n val ey = nz * ux - nx * uz\n val ez = nx * uy - ny * ux\n\n // Ensure the normal, north and east vectors represent an orthonormal basis by ensuring that the north vector is\n // perpendicular to normal and east vectors. This should already be the case, but rounding errors can be\n // introduced when working with Earth sized coordinates.\n nx = uy * ez - uz * ey\n ny = uz * ex - ux * ez\n nz = ux * ey - uy * ex\n\n // Set the result to an orthonormal basis with the East, North, and Up vectors forming the X, Y and Z axes,\n // respectively, and the Cartesian point indicating the coordinate system's origin.\n return result.set(\n ex, nx, ux, x,\n ey, ny, uy, y,\n ez, nz, uz, z,\n 0.0, 0.0, 0.0, 1.0\n )\n }\n\n override fun intersect(globe: Globe, line: Line, result: Vec3): Boolean {\n // Taken from \"Mathematics for 3D Game Programming and Computer Graphics, Third Edition\", Section 6.2.3.\n // Note that the parameter n from in equations 6.70 and 6.71 is omitted here. For an ellipsoidal globe this\n // parameter is always 1, so its square and its product with any other value simplifies to the identity.\n val vx = line.direction.x\n val vy = line.direction.y\n val vz = line.direction.z\n val sx = line.origin.x\n val sy = line.origin.y\n val sz = line.origin.z\n val eqr = globe.equatorialRadius\n val eqr2 = eqr * eqr // nominal radius squared\n val m = eqr / globe.polarRadius // ratio of the x semi-axis length to the y semi-axis length\n val m2 = m * m\n val a = vx * vx + m2 * vy * vy + vz * vz\n val b = 2 * (sx * vx + m2 * sy * vy + sz * vz)\n val c = sx * sx + m2 * sy * sy + sz * sz - eqr2\n val d = b * b - 4 * a * c // discriminant\n if (d < 0) return false\n var t = (-b - sqrt(d)) / (2 * a)\n // check if the nearest intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n t = (-b + sqrt(d)) / (2 * a)\n // check if the second intersection point is in front of the origin of the ray\n if (t > 0) {\n result.set(sx + vx * t, sy + vy * t, sz + vz * t)\n return true\n }\n\n // the intersection points were behind the origin of the provided line\n return false\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.util.math.fract\nimport kotlin.math.max\nimport kotlin.math.min\n\nopen class BasicTerrain(\n tiles: List, sector: Sector, protected val triStripElements: ShortArray?\n): Terrain {\n protected val tiles = tiles.toList()\n override val sector = Sector(sector)\n private val intersectPoint = Vec3()\n\n override fun intersect(line: Line, result: Vec3): Boolean {\n var found = false\n val triStripElements = triStripElements ?: return found\n\n // Tiles considered as sorted by L1 distance on cylinder from camera\n for (i in tiles.indices) {\n val tile = tiles[i]\n // Translate the line to the terrain tile's local coordinate system.\n line.origin.subtract(tile.origin)\n\n // Compute the first intersection of the terrain tile with the line. The line is interpreted as a ray;\n // intersection points behind the line's origin are ignored. Store the nearest intersection found so far\n // in the result argument.\n if (line.triStripIntersection(tile.points, 3, triStripElements, triStripElements.size, intersectPoint)) {\n result.copy(intersectPoint).add(tile.origin)\n found = true\n }\n\n // Restore the line's origin to its previous coordinate system.\n line.origin.add(tile.origin)\n\n // Do not analyze other tiles as they are sorted by distance from camera\n if (found) break\n }\n return found\n }\n\n override fun surfacePoint(latitude: Angle, longitude: Angle, result: Vec3): Boolean {\n for (i in tiles.indices) {\n val tile = tiles[i]\n val sector = tile.sector\n\n // Find the first tile that contains the specified location.\n if (sector.contains(latitude, longitude)) {\n // Compute the location's parameterized coordinates (s, t) within the tile grid, along with the\n // fractional component (sf, tf) and integral component (si, ti).\n val tileWidth = tile.level.tileWidth\n val tileHeight = tile.level.tileHeight\n val s = (longitude.inDegrees - sector.minLongitude.inDegrees) / sector.deltaLongitude.inDegrees * (tileWidth - 1)\n val t = (latitude.inDegrees - sector.minLatitude.inDegrees) / sector.deltaLatitude.inDegrees * (tileHeight - 1)\n val sf = if (s < tileWidth - 1) fract(s) else 1.0\n val tf = if (t < tileHeight - 1) fract(t) else 1.0\n val si = if (s < tileWidth - 1) (s + 1).toInt() else tileWidth - 1\n val ti = if (t < tileHeight - 1) (t + 1).toInt() else tileHeight - 1\n\n // Compute the location in the tile's local coordinate system. Perform a bilinear interpolation of\n // the cell's four points based on the fractional portion of the location's parameterized coordinates.\n // Tile coordinates are organized in the points array in row major order, starting at the tile's\n // Southwest corner. Account for the tile's border vertices, which are embedded in the points array but\n // must be ignored for this computation.\n val tileRowStride = tileWidth + 2\n val i00 = (si + ti * tileRowStride) * 3 // lower left coordinate\n val i10 = i00 + 3 // lower right coordinate\n val i01 = (si + (ti + 1) * tileRowStride) * 3 // upper left coordinate\n val i11 = i01 + 3 // upper right coordinate\n val f00 = (1 - sf) * (1 - tf)\n val f10 = sf * (1 - tf)\n val f01 = (1 - sf) * tf\n val f11 = sf * tf\n val points = tile.points\n result.x = points[i00] * f00 + points[i10] * f10 + points[i01] * f01 + points[i11] * f11\n result.y = points[i00 + 1] * f00 + points[i10 + 1] * f10 + points[i01 + 1] * f01 + points[i11 + 1] * f11\n result.z = points[i00 + 2] * f00 + points[i10 + 2] * f10 + points[i01 + 2] * f01 + points[i11 + 2] * f11\n\n // Translate the surface point from the tile's local coordinate system to Cartesian coordinates.\n result.x += tile.origin.x\n result.y += tile.origin.y\n result.z += tile.origin.z\n return true\n }\n }\n\n // No tile was found that contains the location.\n return false\n }\n\n override fun heightLimits(levelNumberDepth: Int, result: FloatArray) {\n result[0] = Float.MAX_VALUE\n result[1] = -Float.MAX_VALUE\n val maxLevelNumber = tiles.maxOf { it.level.levelNumber }\n val minLevelNumber = maxLevelNumber - levelNumberDepth\n for (tile in tiles) if (tile.level.levelNumber >= minLevelNumber) {\n result[0] = min(result[0], tile.heightLimits[0])\n result[1] = max(result[1], tile.heightLimits[1])\n }\n if (result[0] > result[1]) result.fill(0f)\n }\n}","package earth.worldwind.globe.terrain\n\nimport earth.worldwind.draw.BasicDrawableTerrain\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Range\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.*\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\n\nopen class BasicTessellator: Tessellator, TileFactory {\n override val contentType = \"Tessellator\"\n /**\n * Default level set is configured to ~0.6 meter resolution\n */\n var levelSet = LevelSet(Sector().setFullSphere(), Sector().setFullSphere(), Location(POS90, POS90), 20, 32, 32)\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Detail control determines how much times terrain texel is greater than screen pixel.\n */\n var detailControl = 20.0\n /**\n * Memory cache for this tessellator's subdivision tiles. Each entry contains an array of four terrain tiles\n * corresponding to the subdivision of the group's common parent tile. The cache is configured to hold 300 groups, a\n * number tuned to store the tiles needed to navigate a small region, given the tessellator's first level tile delta\n * of 90 degrees, tile dimensions of 32x32 and detail control of 20.\n */\n protected var tileCache = LruMemoryCache>(300)\n protected val topLevelTiles = mutableListOf()\n protected val currentTiles = mutableListOf()\n protected val currentSector = Sector()\n protected var levelSetVertexTexCoords: FloatArray? = null\n protected var levelSetLineElements: ShortArray? = null\n protected var levelSetTriStripElements: ShortArray? = null\n protected val levelSetLineElementRange = Range()\n protected val levelSetTriStripElementRange = Range()\n protected var levelSetVertexTexCoordBuffer: FloatBufferObject? = null\n protected var levelSetElementBuffer: ShortBufferObject? = null\n protected var levelSetVertexTexCoordKey = this::class.simpleName + \".vertexTexCoordKey\"\n protected var levelSetElementKey = this::class.simpleName + \".elementKey\"\n protected var lastGlobeState: Globe.State? = null\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun tessellate(rc: RenderContext): Terrain {\n checkGlobeState(rc)\n return assembleTerrain(rc)\n }\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = TerrainTile(sector, level, row, column)\n\n protected open fun assembleTerrain(rc: RenderContext): Terrain {\n // Clear previous terrain tiles\n currentTiles.clear()\n currentSector.setEmpty()\n\n // Assemble the terrain buffers and OpenGL buffer objects associated with the level set.\n assembleLevelSetBuffers(rc)\n\n // Assemble the tessellator's top level terrain tiles, which we keep permanent references to.\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n\n // Subdivide the top level tiles until the desired resolution is achieved in each part of the scene.\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as TerrainTile)\n\n // Sort terrain tiles by L1 distance on cylinder from camera\n currentTiles.sortBy { it.sortOrder }\n\n // Release references to render resources acquired while assembling tiles.\n levelSetVertexTexCoordBuffer = null\n levelSetElementBuffer = null\n\n return BasicTerrain(currentTiles, currentSector, levelSetTriStripElements)\n }\n\n protected open fun createTopLevelTiles() = Tile.assembleTilesForLevel(levelSet.firstLevel, this, topLevelTiles)\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: TerrainTile) {\n // ignore tiles which soes not fit projection limits\n if (rc.globe.projectionLimits?.let { tile.intersectsSector(it) } == false) return\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsFrustum(rc)) return\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val childs = tile.subdivideToCache(this, tileCache, 4) // each tile has a cached size of 1\n for (i in childs.indices) addTileOrDescendants(rc, childs[i] as TerrainTile) // recursively process the tile's children\n }\n\n protected open fun addTile(rc: RenderContext, tile: TerrainTile) {\n // Prepare the terrain tile and add it.\n tile.prepare(rc)\n currentTiles.add(tile)\n currentSector.union(tile.sector)\n\n // Prepare a drawable for the terrain tile for processing on the OpenGL thread.\n val pool = rc.getDrawablePool()\n val drawable = BasicDrawableTerrain.obtain(pool)\n prepareDrawableTerrain(rc, tile, drawable)\n rc.offerDrawableTerrain(drawable, tile.sortOrder)\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n // Invalidate tiles cache when globe state changes\n if (rc.globeState != lastGlobeState) {\n invalidateTiles()\n lastGlobeState = rc.globeState\n }\n }\n\n protected open fun invalidateTiles() {\n topLevelTiles.clear()\n currentTiles.clear()\n currentSector.setEmpty()\n tileCache.clear()\n levelSetVertexTexCoords = null\n levelSetLineElements = null\n levelSetTriStripElements = null\n }\n\n protected open fun prepareDrawableTerrain(rc: RenderContext, tile: TerrainTile, drawable: BasicDrawableTerrain) {\n // Remember globe offset to be able to identify own surface drawables.\n drawable.offset = rc.globe.offset\n\n // Assemble the drawable's geographic sector and Cartesian vertex origin.\n drawable.sector.copy(tile.sector)\n drawable.vertexOrigin.copy(tile.origin)\n\n // Assemble the drawable's element buffer ranges.\n drawable.lineElementRange.copy(levelSetLineElementRange)\n drawable.triStripElementRange.copy(levelSetTriStripElementRange)\n\n // Assemble the drawable's OpenGL buffer objects.\n drawable.vertexPoints = tile.getPointBuffer(rc)\n drawable.vertexHeights = tile.getHeightBuffer(rc)\n drawable.vertexTexCoords = levelSetVertexTexCoordBuffer\n drawable.elements = levelSetElementBuffer\n }\n\n protected open fun assembleLevelSetBuffers(rc: RenderContext) {\n val numLat = levelSet.tileHeight + 2\n val numLon = levelSet.tileWidth + 2\n\n // Assemble the level set's vertex tex coords.\n val vertexTexCoords = levelSetVertexTexCoords ?: FloatArray(numLat * numLon * 2).also {\n levelSetVertexTexCoords = it\n assembleVertexTexCoords(numLat, numLon, it)\n }\n\n // Assemble the level set's line elements.\n val lineElements = levelSetLineElements ?: assembleLineElements(numLat, numLon).also { levelSetLineElements = it }\n\n // Assemble the level set's triangle strip elements.\n val triStripElements = levelSetTriStripElements ?: assembleTriStripElements(numLat, numLon).also { levelSetTriStripElements = it }\n\n // Retrieve or create the level set's OpenGL vertex tex coord buffer object.\n levelSetVertexTexCoordBuffer = rc.getBufferObject(levelSetVertexTexCoordKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexTexCoords)\n }\n\n // Retrieve or create the level set's OpenGL element buffer object.\n levelSetElementBuffer = rc.getBufferObject(levelSetElementKey) {\n ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, lineElements + triStripElements).also {\n levelSetLineElementRange.upper = lineElements.size\n levelSetTriStripElementRange.lower = lineElements.size\n levelSetTriStripElementRange.upper = lineElements.size + triStripElements.size\n }\n }\n }\n\n protected open fun assembleVertexTexCoords(numLat: Int, numLon: Int, result: FloatArray): FloatArray {\n val ds = 1f / if (numLon > 1) numLon - 3 else 1\n val dt = 1f / if (numLat > 1) numLat - 3 else 1\n var s = 0f\n var t = 0f\n var rIdx = 0\n\n // Iterate over the number of latitude and longitude vertices, computing the parameterized S and T coordinates\n // corresponding to each vertex.\n for (tIdx in 0 until numLat) {\n when {\n tIdx < 2 -> t = 0f // explicitly set the first T coordinate to 0 to ensure alignment\n tIdx < numLat - 2 -> t += dt\n else -> t = 1f // explicitly set the last T coordinate to 1 to ensure alignment\n }\n for (sIdx in 0 until numLon) {\n when {\n sIdx < 2 -> s = 0f // explicitly set the first S coordinate to 0 to ensure alignment\n sIdx < numLon - 2 -> s += ds\n else -> s = 1f // explicitly set the last S coordinate to 1 to ensure alignment\n }\n result[rIdx++] = s\n result[rIdx++] = t\n }\n }\n return result\n }\n\n protected open fun assembleLineElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = (numLat * (numLon - 1) + numLon * (numLat - 1)) * 2\n val result = ShortArray(count)\n var pos = 0\n\n // Add a line between each row to define the horizontal cell outlines.\n for (latIndex in 1 until numLat-1) {\n for (lonIndex in 1 until numLon - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + 1).toShort()\n }\n }\n\n // Add a line between each column to define the vertical cell outlines.\n for (lonIndex in 1 until numLon - 1) {\n for (latIndex in 1 until numLat - 2) {\n val vertex = lonIndex + latIndex * numLon\n result[pos++] = vertex.toShort()\n result[pos++] = (vertex + numLon).toShort()\n }\n }\n return result\n }\n\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortArray {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val result = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n result[pos++] = (vertex + numLon).toShort()\n result[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n result[pos++] = vertex.toShort()\n result[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return result\n }\n}",null,"package earth.worldwind.globe.terrain\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\n\n/**\n * Represents a portion of a globe's terrain. Applications typically do not interact directly with this class.\n */\nopen class TerrainTile(sector: Sector, level: Level, row: Int, column: Int): Tile(sector, level, row, column) {\n val origin = Vec3()\n val points by lazy { FloatArray((level.tileWidth + 2) * (level.tileHeight + 2) * 3) }\n protected val heights by lazy { FloatArray( (level.tileWidth + 2) * (level.tileHeight + 2)) }\n protected val heightGrid by lazy { FloatArray( level.tileWidth * level.tileHeight) }\n /**\n * Minimum elevation value used by the BasicTessellator to determine the terrain mesh edge extension depth (skirt).\n * This value is scaled by the vertical exaggeration when the terrain is generated.\n */\n protected val minTerrainElevation = -Short.MAX_VALUE.toFloat()\n protected var heightTimestamp = 0L\n protected var verticalExaggeration = 0.0f\n protected var globeState: Globe.State? = null\n protected var globeOffset: Globe.Offset? = null\n var sortOrder = 0.0\n protected set\n private var pointBufferKey = this::class.simpleName + \".points.default\" // This key will be replaced on prepare of each tile\n private var heightBufferKey = this::class.simpleName + \".heights.default\" // Use the same height buffer for all tiles by default\n\n public override val heightLimits get() = super.heightLimits\n\n open fun prepare(rc: RenderContext) {\n val globe = rc.globe\n val tileWidth = level.tileWidth\n val tileHeight = level.tileHeight\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightTimestamp) {\n heightGrid.fill(0f)\n globe.elevationModel.getHeightGrid(sector, tileWidth, tileHeight, heightGrid)\n // Calculate height vertex buffer from height grid\n for (r in 0 until level.tileHeight) for (c in 0 until level.tileWidth) {\n heights[(r + 1) * (level.tileWidth + 2) + c + 1] = heightGrid[r * level.tileWidth + c]\n }\n if (rc.globe.is2D) {\n heightGrid.fill(0f) // Do not show terrain in 2D, but keep height values in vertex for heatmap\n calcHeightLimits(globe) // Force calculate height limits for heatmap\n }\n updateHeightBufferKey()\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightTimestamp || ve != verticalExaggeration || state != globeState || offset != globeOffset) {\n val borderHeight = minTerrainElevation * ve\n val rowStride = (tileWidth + 2) * 3\n globe.geographicToCartesian(sector.centroidLatitude, sector.centroidLongitude, 0.0, origin)\n globe.geographicToCartesianGrid(\n sector, tileWidth, tileHeight, heightGrid, ve, origin, points, rowStride + 3, rowStride\n )\n globe.geographicToCartesianBorder(\n sector, tileWidth + 2, tileHeight + 2, borderHeight, origin, points\n )\n updatePointBufferKey()\n }\n heightTimestamp = timestamp\n verticalExaggeration = ve\n globeState = state\n globeOffset = offset\n sortOrder = drawSortOrder(rc)\n }\n\n fun getHeightBuffer(rc: RenderContext) = rc.getBufferObject(heightBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, heights)\n }\n\n fun getPointBuffer(rc: RenderContext) = rc.getBufferObject(pointBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n protected fun updateHeightBufferKey() {\n heightBufferKey = this::class.simpleName + \".heights.$tileKey.${bufferSequence++}\"\n }\n\n protected fun updatePointBufferKey() {\n pointBufferKey = this::class.simpleName + \".points.$tileKey.${bufferSequence++}\"\n }\n\n companion object {\n private var bufferSequence = 0L // Must be static to avoid cache collisions when a tile instance is re-created\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractLayer @JvmOverloads constructor(override var displayName: String? = null): Layer {\n override var isEnabled = true\n override var isPickEnabled = true\n override var opacity = 1f\n override var minActiveAltitude = Double.NEGATIVE_INFINITY\n override var maxActiveAltitude = Double.POSITIVE_INFINITY\n private var userProperties: MutableMap? = null\n\n override fun getUserProperty(key: Any) = userProperties?.get(key)\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) {\n if (isEnabled && (isPickEnabled || !rc.isPickMode) && isWithinActiveAltitudes(rc)) doRender(rc)\n }\n\n override fun isWithinActiveAltitudes(rc: RenderContext) = rc.camera.position.altitude in minActiveAltitude..maxActiveAltitude\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.layer\n\nimport earth.worldwind.shape.TiledSurfaceImage\n\nabstract class AbstractTiledImageLayer(name: String?, tiledSurfaceImage: TiledSurfaceImage?): RenderableLayer(name) {\n override var isPickEnabled = false // Image layer is not pick able\n\n var tiledSurfaceImage = tiledSurfaceImage?.also { addRenderable(it) }\n protected set(value) {\n field?.let { removeRenderable(it) }\n value?.let { addRenderable(it) }\n field = value\n }\n\n /**\n * Unique identifier of the layer type, defined by tiled surface image tile factory content type\n */\n val type get() = tiledSurfaceImage?.tileFactory?.contentType\n}","package earth.worldwind.layer\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.SurfaceImage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays a single image spanning the globe. By default, BackgroundLayer is configured to display NASA's Blue Marble\n * next generation image at 40km resolution from the built-in WorldWind library resource\n * res/drawable/worldwind_worldtopobathy2004053.\n */\nclass BackgroundLayer @JvmOverloads constructor(\n imageSource: ImageSource = ImageSource.fromResource(MR.images.worldwind_worldtopobathy2004053),\n imageOptions: ImageOptions = ImageOptions(ImageConfig.RGB_565)\n) : RenderableLayer(\"Background\") {\n // Disable picking for the layer because it covers the full sphere and will override a terrain pick.\n override var isPickEnabled = false\n\n init {\n // Delegate display to the SurfaceImage shape.\n val surfaceImage = SurfaceImage(Sector().setFullSphere(), imageSource)\n surfaceImage.imageOptions = imageOptions\n addRenderable(surfaceImage)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nopen class LayerList() : Iterable {\n protected val layers = mutableListOf()\n\n constructor(layerList: LayerList): this() { addAllLayers(layerList) }\n\n constructor(layers: Iterable): this() { addAllLayers(layers) }\n\n fun getLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"getLayer\", \"invalidIndex\")\n }\n return layers[index]\n }\n\n fun setLayer(index: Int, layer: Layer): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"setLayer\", \"invalidIndex\")\n }\n return layers.set(index, layer)\n }\n\n fun indexOfLayer(layer: Layer) = layers.indexOf(layer)\n\n fun indexOfLayerNamed(name: String): Int {\n for (idx in layers.indices) if ( name == layers[idx].displayName) return idx\n return -1\n }\n\n fun indexOfLayerWithProperty(key: Any, value: Any): Int {\n for (idx in layers.indices) {\n val layer = layers[idx]\n if (layer.hasUserProperty(key) && value == layer.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addLayer(layer: Layer) { layers.add(layer) }\n\n fun addLayer(index: Int, layer: Layer) {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"addLayer\", \"invalidIndex\")\n }\n layers.add(index, layer)\n }\n\n fun addAllLayers(list: LayerList) {\n //layers.ensureCapacity(list.layers.size)\n for (layer in list.layers) layers.add(layer) // we know the contents of layerList.layers is valid\n }\n\n fun addAllLayers(iterable: Iterable) { for (layer in iterable) layers.add(layer) }\n\n fun removeLayer(layer: Layer): Boolean { return layers.remove(layer) }\n\n fun removeLayer(index: Int): Layer {\n require(index in layers.indices) {\n logMessage(ERROR, \"LayerList\", \"removeLayer\", \"invalidIndex\")\n }\n return layers.removeAt(index)\n }\n\n fun removeAllLayers(layers: Iterable): Boolean {\n var removed = false\n for (layer in layers) removed = removed or this.layers.remove(layer)\n return removed\n }\n\n fun clearLayers() { layers.clear() }\n\n override fun iterator() = layers.iterator()\n\n fun render(rc: RenderContext) {\n for (i in layers.indices) {\n val layer = layers[i]\n rc.currentLayer = layer\n try {\n layer.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"LayerList\", \"render\",\n \"Exception while rendering layer '${layer.displayName}'\", e\n )\n // Keep going. Draw the remaining layers.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class RenderableLayer @JvmOverloads constructor(displayName: String? = null): AbstractLayer(displayName), Iterable {\n protected val renderables = mutableListOf()\n val count get() = renderables.size\n\n constructor(layer: RenderableLayer): this(layer.displayName) { addAllRenderables(layer) }\n\n constructor(renderables: Iterable): this() { addAllRenderables(renderables) }\n\n fun isEmpty() = renderables.isEmpty()\n\n fun getRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"getRenderable\", \"invalidIndex\")\n }\n return renderables[index]\n }\n\n fun setRenderable(index: Int, renderable: Renderable): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"setRenderable\", \"invalidIndex\")\n }\n return renderables.set(index, renderable)\n }\n\n fun indexOfRenderable(renderable: Renderable) = renderables.indexOf(renderable)\n\n fun indexOfRenderableNamed(name: String): Int {\n for (idx in renderables.indices) if (name == renderables[idx].displayName) return idx\n return -1\n }\n\n fun indexOfRenderableWithProperty(key: Any, value: Any): Int {\n for (idx in renderables.indices) {\n val renderable = renderables[idx]\n if (renderable.hasUserProperty(key) && value == renderable.getUserProperty(key)) return idx\n }\n return -1\n }\n\n fun addRenderable(renderable: Renderable) { renderables.add(renderable) }\n\n fun addRenderable(index: Int, renderable: Renderable) {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"addRenderable\", \"invalidIndex\")\n }\n renderables.add(index, renderable)\n }\n\n fun addAllRenderables(layer: RenderableLayer) {\n //renderables.ensureCapacity(layer.renderables.size)\n for (renderable in layer.renderables) renderables.add(renderable) // we know the contents of layer.renderables is valid\n }\n\n fun addAllRenderables(iterable: Iterable) { for (renderable in iterable) renderables.add(renderable) }\n\n fun removeRenderable(renderable: Renderable) = renderables.remove(renderable)\n\n fun removeRenderable(index: Int): Renderable {\n require(index in renderables.indices) {\n logMessage(ERROR, \"RenderableLayer\", \"removeRenderable\", \"invalidIndex\")\n }\n return renderables.removeAt(index)\n }\n\n fun removeAllRenderables(renderables: Iterable): Boolean {\n var removed = false\n for (renderable in renderables) removed = removed or this.renderables.remove(renderable)\n return removed\n }\n\n fun clearRenderables() { renderables.clear() }\n\n override fun iterator() = renderables.iterator()\n\n override fun doRender(rc: RenderContext) {\n for (i in renderables.indices) {\n val renderable = renderables[i]\n try {\n renderable.render(rc)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"RenderableLayer\", \"doRender\",\n \"Exception while rendering shape '${renderable.displayName}'\", e\n )\n // Keep going. Draw the remaining renderables.\n }\n }\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.draw.DrawableTessellation\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\n\nclass ShowTessellationLayer: AbstractLayer(\"Terrain Tessellation\") {\n override var isPickEnabled = false\n var color = Color()\n set(value) {\n field.copy(value)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain to render\n\n // Use WorldWind's basic GLSL program.\n val program = rc.getShaderProgram { BasicShaderProgram() }\n val pool = rc.getDrawablePool()\n val drawable = DrawableTessellation.obtain(pool).set(program, color, opacity)\n rc.offerSurfaceDrawable(drawable, 1.0 /*z-order after surface textures*/)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.KglUniformLocation\nimport kotlin.math.PI\nimport kotlin.math.pow\n\n// TODO Correctly compute the atmosphere color for eye positions beneath the atmosphere\n// TODO Test the effect of working in local coordinates (reference point) on the GLSL atmosphere programs\nabstract class AbstractAtmosphereProgram: AbstractShaderProgram() {\n protected var fragModeId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var vertexOriginId = KglUniformLocation.NONE\n protected var eyePointId = KglUniformLocation.NONE\n protected var eyeMagnitudeId = KglUniformLocation.NONE\n protected var eyeMagnitude2Id = KglUniformLocation.NONE\n protected var lightDirectionId = KglUniformLocation.NONE\n protected var invWavelengthId = KglUniformLocation.NONE\n protected var atmosphereRadiusId = KglUniformLocation.NONE\n protected var atmosphereRadius2Id = KglUniformLocation.NONE\n protected var globeRadiusId = KglUniformLocation.NONE\n protected var krESunId = KglUniformLocation.NONE\n protected var kmESunId = KglUniformLocation.NONE\n protected var kr4PIId = KglUniformLocation.NONE\n protected var km4PIId = KglUniformLocation.NONE\n protected var scaleId = KglUniformLocation.NONE\n protected var scaleDepthId = KglUniformLocation.NONE\n protected var scaleOverScaleDepthId = KglUniformLocation.NONE\n protected var gId = KglUniformLocation.NONE\n protected var g2Id = KglUniformLocation.NONE\n protected var exposureId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n /**\n * Frag color indicates the atmospheric scattering color components written to the fragment color. Accepted values\n * are [FRAGMODE_PRIMARY], [FRAGMODE_SECONDARY] and [FRAGMODE_PRIMARY_TEX_BLEND].\n */\n enum class FragMode(val asInt : Int) {\n PRIMARY(1),\n SECONDARY(2),\n PRIMARY_TEX_BLEND(3)\n }\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n val invWavelength = Vec3(\n 1 / 0.650.pow(4.0), // 650 nm for red\n 1 / 0.570.pow(4.0), // 570 nm for green\n 1 / 0.475.pow(4.0) // 475 nm for blue\n )\n val kr = 0.0025 // Rayleigh scattering constant\n val km = 0.0010 // Mie scattering constant\n val eSun = 20.0 // Sun brightness constant\n val g = -0.990 // The Mie phase asymmetry factor\n val exposure = 2.0\n fragModeId = gl.getUniformLocation(program, \"fragMode\")\n gl.uniform1i(fragModeId, FragMode.PRIMARY.asInt)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n vertexOriginId = gl.getUniformLocation(program, \"vertexOrigin\")\n array.fill(0f)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n eyePointId = gl.getUniformLocation(program, \"eyePoint\")\n array.fill(0f)\n gl.uniform3fv(eyePointId, 1, array, 0)\n eyeMagnitudeId = gl.getUniformLocation(program, \"eyeMagnitude\")\n gl.uniform1f(eyeMagnitudeId, 0f)\n eyeMagnitude2Id = gl.getUniformLocation(program, \"eyeMagnitude2\")\n gl.uniform1f(eyeMagnitude2Id, 0f)\n lightDirectionId = gl.getUniformLocation(program, \"lightDirection\")\n array.fill(0f)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n invWavelengthId = gl.getUniformLocation(program, \"invWavelength\")\n invWavelength.toArray(array, 0)\n gl.uniform3fv(invWavelengthId, 1, array, 0)\n atmosphereRadiusId = gl.getUniformLocation(program, \"atmosphereRadius\")\n atmosphereRadius2Id = gl.getUniformLocation(program, \"atmosphereRadius2\")\n globeRadiusId = gl.getUniformLocation(program, \"globeRadius\")\n krESunId = gl.getUniformLocation(program, \"KrESun\")\n gl.uniform1f(krESunId, (kr * eSun).toFloat())\n kmESunId = gl.getUniformLocation(program, \"KmESun\")\n gl.uniform1f(kmESunId, (km * eSun).toFloat())\n kr4PIId = gl.getUniformLocation(program, \"Kr4PI\")\n gl.uniform1f(kr4PIId, (kr * 4 * PI).toFloat())\n km4PIId = gl.getUniformLocation(program, \"Km4PI\")\n gl.uniform1f(km4PIId, (km * 4 * PI).toFloat())\n scaleId = gl.getUniformLocation(program, \"scale\")\n scaleDepthId = gl.getUniformLocation(program, \"scaleDepth\")\n scaleOverScaleDepthId = gl.getUniformLocation(program, \"scaleOverScaleDepth\")\n gId = gl.getUniformLocation(program, \"g\")\n gl.uniform1f(gId, g.toFloat())\n g2Id = gl.getUniformLocation(program, \"g2\")\n gl.uniform1f(g2Id, (g * g).toFloat())\n exposureId = gl.getUniformLocation(program, \"exposure\")\n gl.uniform1f(exposureId, exposure.toFloat())\n }\n\n fun loadFragMode(fragMode: FragMode) { gl.uniform1i(fragModeId, fragMode.asInt) }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n\n fun loadVertexOrigin(origin: Vec3) {\n origin.toArray(array, 0)\n gl.uniform3fv(vertexOriginId, 1, array, 0)\n }\n\n fun loadVertexOrigin(x: Double, y: Double, z: Double) {\n gl.uniform3f(vertexOriginId, x.toFloat(), y.toFloat(), z.toFloat())\n }\n\n fun loadLightDirection(direction: Vec3) {\n direction.toArray(array, 0)\n gl.uniform3fv(lightDirectionId, 1, array, 0)\n }\n\n fun loadEyePoint(eyePoint: Vec3) {\n eyePoint.toArray(array, 0)\n gl.uniform3fv(eyePointId, 1, array, 0)\n gl.uniform1f(eyeMagnitudeId, eyePoint.magnitude.toFloat())\n gl.uniform1f(eyeMagnitude2Id, eyePoint.magnitudeSquared.toFloat())\n }\n\n fun loadAtmosphereParams(equatorialRadius: Double, atmosphereAltitude: Double) {\n val rayleighScaleDepth = 0.25\n val ar = equatorialRadius + atmosphereAltitude\n gl.uniform1f(globeRadiusId, equatorialRadius.toFloat())\n gl.uniform1f(atmosphereRadiusId, ar.toFloat())\n gl.uniform1f(atmosphereRadius2Id, (ar * ar).toFloat())\n gl.uniform1f(scaleId, (1 / atmosphereAltitude).toFloat())\n gl.uniform1f(scaleDepthId, rayleighScaleDepth.toFloat())\n gl.uniform1f(scaleOverScaleDepthId, (1 / atmosphereAltitude / rayleighScaleDepth).toFloat())\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.MR\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource.Companion.fromResource\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.kgl.GL_ELEMENT_ARRAY_BUFFER\nimport kotlinx.datetime.Instant\n\nopen class AtmosphereLayer: AbstractLayer(\"Atmosphere\") {\n override var isPickEnabled = false\n var nightImageSource = fromResource(MR.images.dnb_land_ocean_ice_2012)\n var nightImageOptions = ImageOptions(ImageConfig.RGB_565)\n /**\n * Display light location on a specified time point. If null, then light is located at camera position.\n */\n var time : Instant? = null\n protected val activeLightDirection = Vec3()\n private val fullSphereSector = Sector().setFullSphere()\n\n companion object {\n private val VERTEX_POINTS_KEY = AtmosphereLayer::class.simpleName + \".points\"\n private val TRI_STRIP_ELEMENTS_KEY = AtmosphereLayer::class.simpleName + \".triStripElements\"\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.globe.is2D) return // Atmosphere layer is not applicable for 2D globe\n\n // Compute the currently active light direction.\n determineLightDirection(rc)\n\n // Render the sky portion of the atmosphere.\n renderSky(rc)\n\n // Render the ground portion of the atmosphere.\n renderGround(rc)\n }\n\n protected open fun determineLightDirection(rc: RenderContext) {\n // TODO Make light/sun direction an optional property of the WorldWindow and attach it to the RenderContext each frame\n // TODO RenderContext property defaults to the eye lat/lon like we have below\n time?.let {\n val lightLocation = SunPosition.getAsGeographicLocation(it)\n rc.globe.geographicToCartesianNormal(\n lightLocation.latitude, lightLocation.longitude, activeLightDirection\n )\n } ?: rc.globe.geographicToCartesianNormal(\n rc.camera.position.latitude, rc.camera.position.longitude, activeLightDirection\n )\n }\n\n protected open fun renderSky(rc: RenderContext) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableSkyAtmosphere.obtain(pool)\n val size = 128\n drawable.program = rc.getShaderProgram { SkyProgram() }\n drawable.vertexPoints = rc.getBufferObject(VERTEX_POINTS_KEY) {\n assembleVertexPoints(rc, size, size, rc.atmosphereAltitude.toFloat())\n }\n drawable.triStripElements = rc.getBufferObject(TRI_STRIP_ELEMENTS_KEY) { assembleTriStripElements(size, size) }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun renderGround(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n val pool = rc.getDrawablePool()\n val drawable = DrawableGroundAtmosphere.obtain(pool)\n drawable.program = rc.getShaderProgram { GroundProgram() }\n drawable.lightDirection.copy(activeLightDirection)\n drawable.globeRadius = rc.globe.equatorialRadius\n drawable.atmosphereAltitude = rc.atmosphereAltitude\n\n // Use this layer's night image when the light location is different from the eye location.\n drawable.nightTexture = time?.run { rc.getTexture(nightImageSource, nightImageOptions) }\n rc.offerSurfaceDrawable(drawable, Double.POSITIVE_INFINITY)\n }\n\n protected open fun assembleVertexPoints(rc: RenderContext, numLat: Int, numLon: Int, altitude: Float): FloatBufferObject {\n val count = numLat * numLon\n val altitudes = FloatArray(count)\n altitudes.fill(altitude)\n val points = FloatArray(count * 3)\n rc.globe.geographicToCartesianGrid(\n fullSphereSector, numLat, numLon, altitudes, 1.0f, null, points\n )\n return FloatBufferObject(GL_ARRAY_BUFFER, points)\n }\n\n // TODO move this into a basic tessellator implementation in WorldWind\n // TODO tessellator and atmosphere needs the TriStripIndices - could we add these to BasicGlobe (needs to be on a static context)\n // TODO may need to switch the tessellation method anyway - geographic grid may produce artifacts at the poles\n protected open fun assembleTriStripElements(numLat: Int, numLon: Int): ShortBufferObject {\n // Allocate a buffer to hold the indices.\n val count = ((numLat - 1) * numLon + (numLat - 2)) * 2\n val elements = ShortArray(count)\n var pos = 0\n var vertex = 0\n for (latIndex in 0 until numLat - 1) {\n // Create a triangle strip joining each adjacent column of vertices, starting in the bottom left corner and\n // proceeding to the right. The first vertex starts with the left row of vertices and moves right to create\n // a counterclockwise winding order.\n for (lonIndex in 0 until numLon) {\n vertex = lonIndex + latIndex * numLon\n elements[pos++] = (vertex + numLon).toShort()\n elements[pos++] = vertex.toShort()\n }\n\n // Insert indices to create 2 degenerate triangles:\n // - one for the end of the current row, and\n // - one for the beginning of the next row\n if (latIndex < numLat - 2) {\n elements[pos++] = vertex.toShort()\n elements[pos++] = ((latIndex + 2) * numLon).toShort()\n }\n }\n return ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.layer.atmosphere.AbstractAtmosphereProgram.FragMode.*\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nopen class DrawableGroundAtmosphere : Drawable {\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: GroundProgram? = null\n var nightTexture: Texture? = null\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val fullSphereSector = Sector().setFullSphere()\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableGroundAtmosphere {\n val instance = pool.acquire() ?: DrawableGroundAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n nightTexture = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Set up to use the shared tile tex coord attributes.\n dc.gl.enableVertexAttribArray(1)\n\n // Attempt to bind the night side texture to multi-texture unit 0.\n dc.activeTextureUnit(GL_TEXTURE0)\n val nightTexture = nightTexture\n val textureBound = nightTexture?.bindTexture(dc) == true\n for (idx in 0 until dc.drawableTerrainCount) {\n // Get the drawable terrain associated with the draw context.\n val terrain = dc.getDrawableTerrain(idx)\n\n // Use the terrain's vertex point attribute and vertex tex coord attribute.\n if (!terrain.useVertexPointAttrib(dc, 0 /*vertexPoint*/) ||\n !terrain.useVertexTexCoordAttrib(dc, 1 /*vertexTexCoord*/)\n ) continue // vertex buffer failed to bind\n\n // Use the vertex origin for the terrain.\n val terrainOrigin = terrain.vertexOrigin\n program.loadVertexOrigin(terrainOrigin)\n\n // Use the draw context's modelview projection matrix, transformed to terrain local coordinates.\n mvpMatrix.copy(dc.modelviewProjection)\n mvpMatrix.multiplyByTranslation(terrainOrigin.x, terrainOrigin.y, terrainOrigin.z)\n program.loadModelviewProjection(mvpMatrix)\n\n // Use a tex coord matrix that registers the night texture correctly on each terrain.\n if (textureBound && nightTexture != null) {\n texCoordMatrix.copy(nightTexture.coordTransform)\n texCoordMatrix.multiplyByTileTransform(terrain.sector, fullSphereSector)\n program.loadTexCoordMatrix(texCoordMatrix)\n }\n\n // Draw the terrain as triangles, multiplying the current fragment color by the program's secondary color.\n program.loadFragMode(SECONDARY)\n dc.gl.blendFunc(GL_DST_COLOR, GL_ZERO)\n terrain.drawTriangles(dc)\n\n // Draw the terrain as triangles, adding the current fragment color to the program's primary color.\n program.loadFragMode(if (textureBound) PRIMARY_TEX_BLEND else PRIMARY)\n dc.gl.blendFunc(GL_ONE, GL_ONE)\n terrain.drawTriangles(dc)\n }\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.blendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)\n dc.gl.disableVertexAttribArray(1)\n }\n}","package earth.worldwind.layer.atmosphere\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmStatic\n\nclass DrawableSkyAtmosphere : Drawable {\n var vertexPoints: FloatBufferObject? = null\n var triStripElements: ShortBufferObject? = null\n val lightDirection = Vec3()\n var globeRadius = 0.0\n var atmosphereAltitude = 0.0\n var program: SkyProgram? = null\n private var pool: Pool? = null\n\n companion object {\n @JvmStatic\n fun obtain(pool: Pool): DrawableSkyAtmosphere {\n val instance = pool.acquire() ?: DrawableSkyAtmosphere() // get an instance from the pool\n instance.pool = pool\n return instance\n }\n }\n\n override fun recycle() {\n program = null\n vertexPoints = null\n triStripElements = null\n pool?.release(this)\n pool = null\n }\n\n override fun draw(dc: DrawContext) {\n val program = program ?: return // program unspecified\n if (!program.useProgram(dc)) return // program failed to build\n if (vertexPoints?.bindBuffer(dc) != true) return // vertex buffer unspecified or failed to bind\n val triStripElements = triStripElements ?: return // element buffer unspecified\n if (!triStripElements.bindBuffer(dc)) return // element buffer failed to bind\n\n // Use the render context's globe radius and atmosphere altitude.\n program.loadAtmosphereParams(globeRadius, atmosphereAltitude)\n\n // Use the draw context's eye point.\n program.loadEyePoint(dc.eyePoint)\n\n // Use this layer's light direction.\n program.loadLightDirection(lightDirection)\n\n // Use the vertex origin for the sky ellipsoid.\n program.loadVertexOrigin(0.0, 0.0, 0.0)\n\n // Use the draw context's modelview projection matrix.\n program.loadModelviewProjection(dc.modelviewProjection)\n\n // Use the sky's vertex point attribute.\n dc.gl.vertexAttribPointer(0 /*vertexPoint*/, 3, GL_FLOAT, false, 0, 0)\n\n // Draw the inside of the sky without writing to the depth buffer.\n dc.gl.depthMask(false)\n dc.gl.frontFace(GL_CW)\n dc.gl.drawElements(GL_TRIANGLE_STRIP, triStripElements.byteCount / 2, GL_UNSIGNED_SHORT, 0)\n\n // Restore the default WorldWind OpenGL state.\n dc.gl.depthMask(true)\n dc.gl.frontFace(GL_CCW)\n }\n}","package earth.worldwind.layer.atmosphere\n\nopen class GroundProgram: AbstractAtmosphereProgram() {\n override var programSources = arrayOf(\n \"\"\"\n precision mediump int; /* fragMode is used in both shaders, so we must use a common precision */\n\n const int FRAGMODE_PRIMARY = 1;\n const int FRAGMODE_SECONDARY = 2;\n const int FRAGMODE_PRIMARY_TEX_BLEND = 3;\n\n const int SAMPLE_COUNT = 2;\n const float SAMPLES = 2.0;\n\n uniform int fragMode;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n uniform vec3 vertexOrigin;\n uniform vec3 eyePoint;\n uniform float eyeMagnitude;\t /* The eye point's magnitude */\n uniform float eyeMagnitude2;\t /* eyeMagnitude^2 */\n uniform vec3 lightDirection;\t /* The direction vector to the light source */\n uniform vec3 invWavelength;\t /* 1 / pow(wavelength, 4) for the red, green, and blue channels */\n uniform float atmosphereRadius; /* The outer (atmosphere) radius */\n uniform float atmosphereRadius2; /* atmosphereRadius^2 */\n uniform float globeRadius;\t\t /* The inner (planetary) radius */\n uniform float KrESun;\t\t\t /* Kr * ESun */\n uniform float KmESun;\t\t\t /* Km * ESun */\n uniform float Kr4PI;\t\t\t /* Kr * 4 * PI */\n uniform float Km4PI;\t\t\t /* Km * 4 * PI */\n uniform float scale;\t\t\t /* 1 / (atmosphereRadius - globeRadius) */\n uniform float scaleDepth;\t\t /* The scale depth (i.e. the altitude at which the atmosphere's average density is found) */\n uniform float scaleOverScaleDepth;\t/* fScale / fScaleDepth */\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec3 primaryColor;\n varying vec3 secondaryColor;\n varying vec3 direction;\n varying vec2 texCoord;\n\n float scaleFunc(float cos) {\n float x = 1.0 - cos;\n return scaleDepth * exp(-0.00287 + x*(0.459 + x*(3.83 + x*(-6.80 + x*5.25))));\n }\n\n void main() {\n /* Get the ray from the camera to the vertex and its length (which is the far point of the ray passing through the\n atmosphere) */\n vec3 point = vertexPoint.xyz + vertexOrigin;\n vec3 ray = point - eyePoint;\n float far = length(ray);\n ray /= far;\n\n vec3 start;\n if (eyeMagnitude < atmosphereRadius) {\n start = eyePoint;\n } else {\n /* Calculate the closest intersection of the ray with the outer atmosphere (which is the near point of the ray\n passing through the atmosphere) */\n float B = 2.0 * dot(eyePoint, ray);\n float C = eyeMagnitude2 - atmosphereRadius2;\n float det = max(0.0, B*B - 4.0 * C);\n float near = 0.5 * (-B - sqrt(det));\n\n /* Calculate the ray's starting point, then calculate its scattering offset */\n start = eyePoint + ray * near;\n far -= near;\n }\n\n float depth = exp((globeRadius - atmosphereRadius) / scaleDepth);\n float eyeAngle = dot(-ray, point) / length(point);\n float lightAngle = dot(lightDirection, point) / length(point);\n float eyeScale = scaleFunc(eyeAngle);\n float lightScale = scaleFunc(lightAngle);\n float eyeOffset = depth*eyeScale;\n float temp = (lightScale + eyeScale);\n\n /* Initialize the scattering loop variables */\n float sampleLength = far / SAMPLES;\n float scaledLength = sampleLength * scale;\n vec3 sampleRay = ray * sampleLength;\n vec3 samplePoint = start + sampleRay * 0.5;\n\n /* Now loop through the sample rays */\n vec3 frontColor = vec3(0.0, 0.0, 0.0);\n vec3 attenuate = vec3(0.0, 0.0, 0.0);\n for(int i=0; i\n abstract fun getTypeFor(resolution: Double): String\n\n /**\n * Determines whether the grid should be updated. It returns true if: * the eye has moved more than 1% of its\n * altitude above ground * the view FOV, heading or pitch have changed more than 1 degree * vertical\n * exaggeration has changed `RenderContext`.\n *\n * @return true if the graticule should be updated.\n */\n private fun needsToUpdate(rc: RenderContext): Boolean {\n if (lastVerticalExaggeration != rc.verticalExaggeration) return true\n if (abs(lastCameraHeading - rc.camera.heading.inDegrees) > 1) return true\n if (abs(lastCameraTilt - rc.camera.tilt.inDegrees) > 1) return true\n if (abs(lastFOV - rc.camera.fieldOfView.inDegrees) > 1) return true\n if (rc.cameraPoint.distanceTo(lastCameraPoint) > computeAltitudeAboveGround(rc) / 100) return true\n if (rc.globeState != lastGlobeState) return true\n return false\n }\n\n protected open fun clear(rc: RenderContext) {\n removeAllRenderables()\n lastCameraPoint.copy(rc.cameraPoint)\n lastFOV = rc.camera.fieldOfView.inDegrees\n lastCameraHeading = rc.camera.heading.inDegrees\n lastCameraTilt = rc.camera.tilt.inDegrees\n lastVerticalExaggeration = rc.verticalExaggeration\n lastGlobeState = rc.globeState\n }\n\n fun computeLabelOffset(rc: RenderContext): Location {\n return rc.lookAtPosition?.let {\n val labelOffset = toDegrees(rc.pixelSize / rc.globe.equatorialRadius * rc.viewport.width / 4)\n Location(\n it.latitude.minusDegrees(labelOffset).normalizeLatitude().coerceIn(MIN_LAT, MAX_LAT),\n it.longitude.minusDegrees(labelOffset).normalizeLongitude()\n )\n } ?: rc.camera.position\n }\n\n fun createLineRenderable(positions: List, pathType: PathType) = Path(positions).apply {\n this.pathType = pathType\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n isFollowTerrain = true\n }\n\n @Suppress(\"UNUSED_PARAMETER\")\n fun createTextRenderable(position: Position, label: String, resolution: Double) = Label(position, label).apply {\n altitudeMode = AltitudeMode.CLAMP_TO_GROUND\n // priority = resolution * 1e6 // TODO Implement priority\n }\n\n fun getSurfacePoint(rc: RenderContext, latitude: Angle, longitude: Angle): Vec3 {\n if (!rc.terrain.surfacePoint(latitude, longitude, surfacePoint))\n rc.globe.geographicToCartesian(\n latitude, longitude, rc.globe.getElevation(latitude, longitude)\n * rc.verticalExaggeration, surfacePoint\n )\n return surfacePoint\n }\n\n fun computeAltitudeAboveGround(rc: RenderContext): Double {\n val surfacePoint = getSurfacePoint(rc, rc.camera.position.latitude, rc.camera.position.longitude)\n return rc.cameraPoint.distanceTo(surfacePoint)\n }\n\n fun computeTruncatedSegment(p1: Position, p2: Position, sector: Sector, positions: MutableList) {\n val p1In = sector.contains(p1.latitude, p1.longitude)\n val p2In = sector.contains(p2.latitude, p2.longitude)\n if (!p1In && !p2In) return // the whole segment is (likely) outside\n if (p1In && p2In) {\n // the whole segment is (likely) inside\n positions.add(p1)\n positions.add(p2)\n } else {\n // segment does cross the boundary\n var outPoint = if (!p1In) p1 else p2\n val inPoint = if (p1In) p1 else p2\n for (i in 1..2) {\n // there may be two intersections\n var intersection: Location? = null\n if (outPoint.longitude.inDegrees > sector.maxLongitude.inDegrees\n || sector.maxLongitude.inDegrees == 180.0 && outPoint.longitude.inDegrees < 0.0) {\n // intersect with east meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.maxLongitude\n )\n } else if (outPoint.longitude.inDegrees < sector.minLongitude.inDegrees\n || sector.minLongitude.inDegrees == -180.0 && outPoint.longitude.inDegrees > 0.0) {\n // intersect with west meridian\n intersection = greatCircleIntersectionAtLongitude(\n inPoint, outPoint, sector.minLongitude\n )\n } else if (outPoint.latitude.inDegrees > sector.maxLatitude.inDegrees) {\n // intersect with top parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.maxLatitude\n )\n } else if (outPoint.latitude.inDegrees < sector.minLatitude.inDegrees) {\n // intersect with bottom parallel\n intersection = greatCircleIntersectionAtLatitude(\n inPoint, outPoint, sector.minLatitude\n )\n }\n outPoint = if (intersection != null) Position(\n intersection.latitude,\n intersection.longitude,\n outPoint.altitude\n ) else break\n }\n positions.add(inPoint)\n positions.add(outPoint)\n }\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a meridian.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param longitude the meridian longitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLongitude(p1: Location, p2: Location, longitude: Angle): Location? {\n if (p1.longitude == longitude) return p1\n if (p2.longitude == longitude) return p2\n var pos: Location? = null\n val deltaLon = getDeltaLongitude(p1, p2.longitude)\n if (getDeltaLongitude(p1, longitude) < deltaLon && getDeltaLongitude(p2, longitude) < deltaLon) {\n var count = 0\n val precision = 1.0 / Ellipsoid.WGS84.semiMajorAxis // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (toRadians(getDeltaLongitude(midPoint, longitude)) > precision && count <= 20) {\n count++\n if (getDeltaLongitude(a, longitude) < getDeltaLongitude(b, longitude)) b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final longitude for an exact match\n if (pos != null) pos = Location(pos.latitude, longitude)\n return pos\n }\n\n /**\n * Computes the intersection point position between a great circle segment and a parallel.\n *\n * @param p1 the great circle segment start position.\n * @param p2 the great circle segment end position.\n * @param latitude the parallel latitude `Angle`\n *\n * @return the intersection `Position` or null if there was no intersection found.\n */\n private fun greatCircleIntersectionAtLatitude(p1: Location, p2: Location, latitude: Angle): Location? {\n var pos: Location? = null\n if (sign(p1.latitude.inDegrees - latitude.inDegrees) != sign(p2.latitude.inDegrees - latitude.inDegrees)) {\n var count = 0\n val precision = 1.0 / Ellipsoid.WGS84.semiMajorAxis // 1m angle in radians\n var a = p1\n var b = p2\n var midPoint = greatCircleMidPoint(a, b)\n while (abs(midPoint.latitude.inRadians - latitude.inRadians) > precision && count <= 20) {\n count++\n if (sign(a.latitude.inDegrees - latitude.inDegrees) != sign(midPoint.latitude.inDegrees - latitude.inDegrees))\n b = midPoint else a = midPoint\n midPoint = greatCircleMidPoint(a, b)\n }\n pos = midPoint\n }\n // Adjust final latitude for an exact match\n if (pos != null) pos = Location(latitude, pos.longitude)\n return pos\n }\n\n private fun greatCircleMidPoint(p1: Location, p2: Location): Location {\n val azimuth = p1.greatCircleAzimuth(p2)\n val distance = p1.greatCircleDistance(p2)\n return p1.greatCircleLocation(azimuth, distance / 2, Location())\n }\n\n private fun getDeltaLongitude(p1: Location, longitude: Angle): Double {\n val deltaLon = abs(p1.longitude.inDegrees - longitude.inDegrees)\n return if (deltaLon < 180) deltaLon else 360 - deltaLon\n }\n\n companion object {\n private val MIN_LAT = (-70.0).degrees\n private val MAX_LAT = 70.0.degrees\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.util.AbstractTile\n\nabstract class AbstractGraticuleTile(open val layer: AbstractGraticuleLayer, sector: Sector) : AbstractTile(sector) {\n val gridElements = mutableListOf()\n /**\n * Flag to avoid recursive renderables creation if tile should not have elements by design\n */\n private var shouldCreateRenderables = true\n private val scratchVector = Vec3()\n\n open fun isInView(rc: RenderContext) = rc.globe.projectionLimits?.let { intersectsSector(it) } != false &&\n intersectsSector(rc.terrain.sector) && intersectsFrustum(rc) && isFacingCamera(rc)\n\n open fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, sector.centroidLatitude, sector.centroidLongitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n val tileSizeMeter = sector.deltaLatitude.inRadians * rc.globe.equatorialRadius\n return tileSizeMeter / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n open fun selectRenderables(rc: RenderContext) {\n if (shouldCreateRenderables && gridElements.isEmpty()) createRenderables()\n }\n\n open fun clearRenderables() {\n gridElements.clear()\n shouldCreateRenderables = true\n }\n\n open fun createRenderables() {\n shouldCreateRenderables = false\n }\n\n fun subdivide(div: Int, sector: Sector = this.sector): List {\n val dLat = sector.deltaLatitude.inDegrees / div\n val dLon = sector.deltaLongitude.inDegrees / div\n val sectors = mutableListOf()\n for (row in 0 until div) {\n for (col in 0 until div) {\n sectors += fromDegrees(\n sector.minLatitude.inDegrees + dLat * row,\n sector.minLongitude.inDegrees + dLon * col, dLat, dLon\n )\n }\n }\n return sectors\n }\n\n protected open fun isFacingCamera(rc: RenderContext) = if (rc.globe.is2D) true else {\n val viewingVector = nearestPoint(rc).subtract(rc.cameraPoint)\n val normalVector = rc.globe.geographicToCartesianNormal(sector.centroidLatitude, sector.centroidLongitude, scratchVector)\n val dot = viewingVector.dot(normalVector)\n dot / (viewingVector.magnitude * normalVector.magnitude) < 0.0\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\nclass GraticuleRenderingParams: MutableMap by HashMap() {\n var isDrawLines: Boolean\n get() = get(KEY_DRAW_LINES) as? Boolean ?: false\n set(drawLines) { put(KEY_DRAW_LINES, drawLines) }\n var lineColor: Color?\n get() = get(KEY_LINE_COLOR) as? Color\n set(color) { put(KEY_LINE_COLOR, color) }\n var lineWidth: Float\n get() = get(KEY_LINE_WIDTH) as? Float ?: 0.0f\n set(lineWidth) { put(KEY_LINE_WIDTH, lineWidth) }\n var lineStyle: LineStyle\n get() = get(KEY_LINE_STYLE) as? LineStyle ?: LineStyle.SOLID\n set(lineStyle) { put(KEY_LINE_STYLE, lineStyle) }\n var isDrawLabels: Boolean\n get() = get(KEY_DRAW_LABELS) as? Boolean ?: false\n set(drawLabels) { put(KEY_DRAW_LABELS, drawLabels) }\n var labelColor: Color?\n get() = get(KEY_LABEL_COLOR) as? Color\n set(color) { put(KEY_LABEL_COLOR, color) }\n var labelFont: Font?\n get() = get(KEY_LABEL_FONT) as? Font\n set(font) { put(KEY_LABEL_FONT, font) }\n\n companion object {\n const val KEY_DRAW_LINES = \"DrawGraticule\"\n const val KEY_LINE_COLOR = \"GraticuleLineColor\"\n const val KEY_LINE_WIDTH = \"GraticuleLineWidth\"\n const val KEY_LINE_STYLE = \"GraticuleLineStyle\";\n const val KEY_DRAW_LABELS = \"DrawLabels\"\n const val KEY_LABEL_COLOR = \"LabelColor\"\n const val KEY_LABEL_FONT = \"LabelFont\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LINES\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_STYLE\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_WIDTH\nimport earth.worldwind.render.*\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.Path\nimport earth.worldwind.shape.ShapeAttributes\nimport kotlin.jvm.JvmOverloads\n\ninternal class GraticuleSupport {\n private val renderables = mutableMapOf()\n private val namedParams = mutableMapOf()\n private val namedShapeAttributes = mutableMapOf()\n var defaultParams: GraticuleRenderingParams? = null\n\n fun addRenderable(renderable: Renderable, paramsKey: String) { renderables[renderable] = paramsKey }\n\n fun removeAllRenderables() { renderables.clear() }\n\n @JvmOverloads\n fun render(rc: RenderContext, opacity: Float = 1f) {\n namedShapeAttributes.clear()\n\n // Render lines and collect text labels\n for ((renderable, paramsKey) in renderables) {\n val renderingParams = namedParams[paramsKey]\n if (renderable is Path) {\n if (renderingParams?.isDrawLines != false) {\n applyRenderingParams(paramsKey, renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n } else if (renderable is Label) {\n if (renderingParams?.isDrawLabels != false) {\n applyRenderingParams(renderingParams, renderable, opacity)\n renderable.render(rc)\n }\n }\n }\n }\n\n fun getRenderingParams(key: String): GraticuleRenderingParams {\n return namedParams[key] ?: GraticuleRenderingParams().also { params ->\n initRenderingParams(params)\n defaultParams?.let { params.putAll(it) }\n namedParams[key] = params\n }\n }\n\n fun setRenderingParams(key: String, renderingParams: GraticuleRenderingParams) {\n initRenderingParams(renderingParams)\n namedParams[key] = renderingParams\n }\n\n private fun initRenderingParams(params: GraticuleRenderingParams) {\n if (params[KEY_DRAW_LINES] == null) params[KEY_DRAW_LINES] = true\n if (params[KEY_LINE_COLOR] == null) params[KEY_LINE_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LINE_WIDTH] == null) params[KEY_LINE_WIDTH] = .5f\n if (params[KEY_LINE_STYLE] == null) params[KEY_LINE_STYLE] = LineStyle.SOLID\n if (params[KEY_DRAW_LABELS] == null) params[KEY_DRAW_LABELS] = true\n if (params[KEY_LABEL_COLOR] == null) params[KEY_LABEL_COLOR] = Color(255, 255, 255) // White\n if (params[KEY_LABEL_FONT] == null) params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 12)\n }\n\n private fun applyRenderingParams(params: GraticuleRenderingParams?, text: Label, opacity: Float) {\n if (params != null) {\n // Apply \"label\" properties to the Label.\n var o = params[KEY_LABEL_COLOR]\n if (o is Color) {\n val color = applyOpacity(o, opacity)\n val compArray = FloatArray(3)\n color.toHSV(compArray)\n val colorValue = if (compArray[2] < .5f) 1f else 0f\n text.attributes.textColor = color\n text.attributes.outlineColor = Color(colorValue, colorValue, colorValue, color.alpha)\n }\n o = params[KEY_LABEL_FONT]\n if (o is Font) text.attributes.font = o\n }\n }\n\n private fun applyRenderingParams(key: String, params: GraticuleRenderingParams?, path: Path, opacity: Float) {\n if (params != null) {\n path.attributes = getLineShapeAttributes(key, params, opacity)\n }\n }\n\n private fun getLineShapeAttributes(key: String, params: GraticuleRenderingParams, opacity: Float) =\n namedShapeAttributes[key] ?: createLineShapeAttributes(params, opacity).also { namedShapeAttributes[key] = it }\n\n private fun createLineShapeAttributes(params: GraticuleRenderingParams, opacity: Float): ShapeAttributes {\n val attrs = ShapeAttributes()\n attrs.isDrawInterior = false\n attrs.isDrawOutline = true\n\n // Apply \"line\" properties.\n val color = params[KEY_LINE_COLOR]\n if (color is Color) attrs.outlineColor = applyOpacity(color, opacity)\n val lineWidth = params[KEY_LINE_WIDTH]\n if (lineWidth is Float) attrs.outlineWidth = lineWidth\n val style = params[KEY_LINE_STYLE]\n if (style is LineStyle && style.factor > 0) {\n attrs.outlineImageSource = ImageSource.fromLineStipple(style.factor, style.pattern)\n }\n return attrs\n }\n\n private fun applyOpacity(color: Color, opacity: Float) =\n if (opacity >= 1) color else Color(color.red, color.green, color.blue, color.alpha * opacity)\n}","package earth.worldwind.layer.graticule\n\n/**\n * A line stipple pattern.\n *\n * @param factor specifies the number of times each bit in the pattern is repeated before the next bit is used. For\n * example, if the factor is 3, each bit is repeated three times before using the next bit. The\n * specified factor must be either zero or an integer greater than 0. A factor of 0 indicates no\n * stippling.\n * @param pattern specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and\n * which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16\n * pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is\n * repeated three times before using the next bit.\n */\nenum class LineStyle(val factor: Int, val pattern: Short) {\n SOLID(0, 0x0000),\n DASHED(1, 0xFFE0.toShort()),\n DOTTED(2, 0xCCCC.toShort()),\n DASH_DOTTED(2, 0xFFCC.toShort())\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Renderable\n\nclass GridElement(val sector: Sector, val renderable: Renderable, val type: String, val value: Angle) {\n constructor(sector: Sector, renderable: Renderable, type: String): this(sector, renderable, type, ZERO)\n\n fun isInView(rc: RenderContext) = sector.intersectsOrNextTo(rc.terrain.sector)\n\n companion object {\n const val TYPE_LINE = \"GridElement_Line\"\n const val TYPE_LINE_NORTH = \"GridElement_LineNorth\"\n const val TYPE_LINE_SOUTH = \"GridElement_LineSouth\"\n const val TYPE_LINE_WEST = \"GridElement_LineWest\"\n const val TYPE_LINE_EAST = \"GridElement_LineEast\"\n const val TYPE_LINE_NORTHING = \"GridElement_LineNorthing\"\n const val TYPE_LINE_EASTING = \"GridElement_LineEasting\"\n const val TYPE_GRIDZONE_LABEL = \"GridElement_GridZoneLabel\"\n const val TYPE_LONGITUDE_LABEL = \"GridElement_LongitudeLabel\"\n const val TYPE_LATITUDE_LABEL = \"GridElement_LatitudeLabel\"\n }\n}","package earth.worldwind.layer.graticule\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.render.RenderContext\n\ninternal class GridTilesSupport(private val callback: Callback, private val rows: Int, private val cols: Int) {\n internal interface Callback {\n fun createGridTile(sector: Sector): AbstractGraticuleTile\n fun getGridSector(row: Int, col: Int): Sector\n fun getGridColumn(longitude: Angle): Int\n fun getGridRow(latitude: Angle): Int\n fun getProjectedSector(sector: Sector) = sector\n }\n\n private val gridTiles = Array(rows) { arrayOfNulls(cols) }\n\n fun clearTiles() {\n for (row in 0 until rows) for (col in 0 until cols) {\n gridTiles[row][col]?.clearRenderables()\n gridTiles[row][col] = null\n }\n }\n\n /**\n * Select the visible grid elements\n *\n * @param rc the current `RenderContext`.\n */\n fun selectRenderables(rc: RenderContext) {\n val tileList = getVisibleTiles(rc)\n // Select tile visible elements\n for (gt in tileList) gt.selectRenderables(rc)\n }\n\n private fun getVisibleTiles(rc: RenderContext): List {\n val tileList = mutableListOf()\n val vs = callback.getProjectedSector(rc.terrain.sector)\n val gridRectangle = getGridRectangleForSector(vs)\n for (row in gridRectangle.y..gridRectangle.height) {\n for (col in gridRectangle.x..gridRectangle.width) {\n val tile = gridTiles[row][col] ?: callback.createGridTile(callback.getGridSector(row, col)).also {\n gridTiles[row][col] = it\n }\n if (tile.isInView(rc)) tileList.add(tile) else tile.clearRenderables()\n }\n }\n return tileList\n }\n\n private fun getGridRectangleForSector(sector: Sector): Viewport {\n val x1 = callback.getGridColumn(sector.minLongitude)\n val x2 = callback.getGridColumn(sector.maxLongitude)\n val y1 = callback.getGridRow(sector.minLatitude)\n val y2 = callback.getGridRow(sector.maxLatitude)\n return Viewport(x1, y1, x2, y2) // Viewport is used as simple integer rectangle\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.HelmertParameters\nimport earth.worldwind.geom.coords.HelmertTransformation\nimport earth.worldwind.layer.graticule.AbstractGraticuleLayer\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GridTilesSupport\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport kotlin.math.floor\n\nclass GKGraticuleLayer(\n private val toWgsParameters: HelmertParameters = HelmertParameters.SK42_WGS84,\n private val fromWgsParameters: HelmertParameters = HelmertParameters.WGS84_SK42\n) : AbstractGraticuleLayer(\"Gauss-Kruger Graticule\"), GridTilesSupport.Callback {\n /**\n * Show 25k and 10k sheets when metric graticule becomes visible\n */\n var showDetailedSheets = false\n /**\n * Maximal visibility distance for 1km grid labels\n */\n var thresholdFor1kLabels = GK_MAX_RESOLUTION_25_000 * 2.0\n /**\n * Maximal visibility distance for 2km grid labels\n */\n var thresholdFor2kLabels = GK_MAX_RESOLUTION_50_000 * 2.0\n\n private val gridTilesSupport = GridTilesSupport(this, 46, 60)\n private val overview = GKOverview(this)\n private val metricLabels = GKMetricLabels(this )\n private var metricLabelScale = 0\n\n override val orderedTypes = listOf(\n GRATICULE_GK_OVERVIEW,\n GRATICULE_GK_1_000_000,\n GRATICULE_GK_500_000,\n GRATICULE_GK_200_000,\n GRATICULE_GK_100_000,\n GRATICULE_GK_50_000,\n GRATICULE_GK_25_000,\n GRATICULE_GK_10_000\n )\n\n override fun initRenderingParams() {\n var params = GraticuleRenderingParams()\n params[GraticuleRenderingParams.KEY_LINE_COLOR] = Color(0, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_COLOR] = Color(0, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_FONT] = Font(\"arial\", FontWeight.NORMAL, 11)\n setRenderingParams(GK_METRIC_GRID_2000, params)\n setRenderingParams(GK_METRIC_GRID_1000, params)\n\n params = GraticuleRenderingParams()\n params[GraticuleRenderingParams.KEY_LINE_COLOR] = Color(255, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_COLOR] = Color(255, 0, 0)\n params[GraticuleRenderingParams.KEY_LABEL_FONT] = Font(\"arial\", FontWeight.NORMAL, 13)\n setRenderingParams(GRATICULE_GK_OVERVIEW, params)\n setRenderingParams(GRATICULE_GK_1_000_000, params)\n setRenderingParams(GRATICULE_GK_500_000, params)\n setRenderingParams(GRATICULE_GK_200_000, params)\n setRenderingParams(GRATICULE_GK_100_000, params)\n setRenderingParams(GRATICULE_GK_50_000, params)\n setRenderingParams(GRATICULE_GK_25_000, params)\n setRenderingParams(GRATICULE_GK_10_000, params)\n }\n\n override fun selectRenderables(rc: RenderContext) {\n metricLabelScale = 0\n if (rc.camera.position.altitude < GK_MAX_RESOLUTION_OVERVIEW) {\n gridTilesSupport.selectRenderables(rc)\n metricLabels.selectRenderables(rc, metricLabelScale)\n } else {\n overview.selectRenderables(rc)\n }\n }\n\n override fun getGridSector(row: Int, col: Int): Sector {\n var minLat = -92.0 + row * 4\n var maxLat = minLat + 4\n if (row == 0) {\n minLat = -90.0\n maxLat = -88.0\n } else if (row == 45) {\n maxLat = 90.0\n minLat = 88.0\n }\n val minLon = -180.0 + col * 6\n val maxLon = minLon + 6\n return Sector.fromDegrees(minLat, minLon, maxLat - minLat, maxLon - minLon)\n }\n\n override fun getGridColumn(longitude: Angle) = floor((longitude.inDegrees + 180) / 6.0).toInt().coerceAtMost(59)\n\n override fun getProjectedSector(sector: Sector) = Sector().apply {\n union(transformFromWGS(Position(sector.minLatitude, sector.minLongitude, 0.0)))\n union(transformFromWGS(Position(sector.minLatitude, sector.maxLongitude, 0.0)))\n union(transformFromWGS(Position(sector.maxLatitude, sector.minLongitude, 0.0)))\n union(transformFromWGS(Position(sector.maxLatitude, sector.maxLongitude, 0.0)))\n }\n\n fun getUnprojectedSector(sector: Sector) = Sector().apply {\n union(transformToWGS(Position(sector.minLatitude, sector.minLongitude, 0.0)))\n union(transformToWGS(Position(sector.minLatitude, sector.maxLongitude, 0.0)))\n union(transformToWGS(Position(sector.maxLatitude, sector.minLongitude, 0.0)))\n union(transformToWGS(Position(sector.maxLatitude, sector.maxLongitude, 0.0)))\n }\n\n fun transformFromWGS(position: Position, result: Position = Position()) : Position {\n //TODO Fix the the problem with coordinates conversion around the end of WGS84 coordinate system\n position.latitude.inDegrees.coerceIn(-88.0, 88.0).also { position.latitude = it.degrees }\n position.longitude.inDegrees.coerceAtLeast(-179.8).also { position.longitude = it.degrees }\n return HelmertTransformation.transform(position, fromWgsParameters, result)\n }\n\n fun transformToWGS(position: Position, result: Position = Position()) =\n HelmertTransformation.transform(position, toWgsParameters, result)\n\n override fun getGridRow(latitude: Angle) = when {\n latitude.inDegrees < - 88.0 -> 0\n latitude.inDegrees > 88.0 -> 45\n else -> floor(((latitude.inDegrees + 88.0) / 4.0) + 1.0).toInt().coerceAtMost(45)\n }\n\n override fun getTypeFor(resolution: Double) = when {\n resolution >= GK_MAX_RESOLUTION_1_000_000 -> GRATICULE_GK_1_000_000\n resolution >= GK_MAX_RESOLUTION_500_000 -> GRATICULE_GK_500_000\n resolution >= GK_MAX_RESOLUTION_200_000 -> GRATICULE_GK_200_000\n resolution >= GK_MAX_RESOLUTION_100_000 -> GRATICULE_GK_100_000\n resolution >= GK_MAX_RESOLUTION_50_000 -> GRATICULE_GK_50_000\n resolution >= GK_MAX_RESOLUTION_25_000 -> GRATICULE_GK_25_000\n else -> GRATICULE_GK_10_000\n }\n\n fun getDistanceFor(type: String) = when(type) {\n GRATICULE_GK_1_000_000 -> GK_MAX_RESOLUTION_1_000_000\n GRATICULE_GK_500_000 -> GK_MAX_RESOLUTION_500_000\n GRATICULE_GK_200_000 -> GK_MAX_RESOLUTION_200_000\n GRATICULE_GK_100_000 -> GK_MAX_RESOLUTION_100_000\n GRATICULE_GK_50_000 -> GK_MAX_RESOLUTION_50_000\n GRATICULE_GK_25_000 -> GK_MAX_RESOLUTION_25_000\n else -> GK_MAX_RESOLUTION_10_000\n }\n\n override fun createGridTile(sector: Sector) = GKGraticuleTile(this, sector, GRATICULE_GK_1_000_000)\n\n fun addMetricLabel(label: Label) = metricLabels.addLabel(label)\n\n fun setMetricLabelScale(value: Int) {\n if (isZeroOrMinimalValue(value)) metricLabelScale = value\n }\n\n private fun isZeroOrMinimalValue(value: Int) =\n value == 0 || (value > 0 && metricLabelScale == 0) || (metricLabelScale != 0 && value < metricLabelScale)\n\n companion object {\n const val GRATICULE_GK_OVERVIEW = \"Graticule.GK.Overview\"\n const val GK_MAX_RESOLUTION_OVERVIEW = 15e5\n const val GRATICULE_GK_1_000_000 = \"Graticule.GK.1_000_000\"\n const val GK_MAX_RESOLUTION_1_000_000 = 1e6\n const val GRATICULE_GK_500_000 = \"Graticule.GK.500_000\"\n const val GK_MAX_RESOLUTION_500_000 = 5e5\n const val GRATICULE_GK_200_000 = \"Graticule.GK.200_000\"\n const val GK_MAX_RESOLUTION_200_000 = 2e5\n const val GRATICULE_GK_100_000 = \"Graticule.GK.100_000\"\n const val GK_MAX_RESOLUTION_100_000 = 1e5\n const val GRATICULE_GK_50_000 = \"Graticule.GK.50_000\"\n const val GK_MAX_RESOLUTION_50_000 = 35e3\n const val GRATICULE_GK_25_000 = \"Graticule.GK.25_000\"\n const val GK_MAX_RESOLUTION_25_000 = 15e3\n const val GRATICULE_GK_10_000 = \"Graticule.GK.10_000\"\n const val GK_MAX_RESOLUTION_10_000 = 8e3\n const val GK_METRIC_GRID_1000 = \"GK.Metric.Grid.1000x1000\"\n const val GK_METRIC_GRID_2000 = \"GK.Metric.Grid.2000x2000\"\n\n val MILLION_COOL_NAME = arrayOf(\"SZ\", \"SV\", \"SU\", \"ST\", \"SS\", \"SR\", \"SQ\", \"SP\", \"SO\", \"SN\",\n \"SM\", \"SL\", \"SK\", \"SJ\", \"SI\", \"SH\", \"SG\", \"SF\", \"SE\", \"SD\", \"SC\", \"SB\", \"SA\",\"A\", \"B\", \"C\", \"D\",\n \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"Z\")\n\n val ENDING_200_000_MAP = arrayOf(\"І\", \"ІІ\", \"ІІІ\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\", \"X\",\n \"XI\", \"XII\", \"XIII\", \"XIV\", \"XV\", \"XVI\", \"XVII\", \"XVIII\", \"XIX\", \"XX\",\n \"XXI\", \"XXII\", \"XXIII\", \"XXIV\", \"XXV\", \"XXVI\", \"XXVII\", \"XXVIII\", \"XXIX\", \"XXX\",\n \"XXXI\", \"XXXII\", \"XXXIII\", \"XXXIV\", \"XXXV\", \"XXXVI\")\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_1000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_2000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_10_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_25_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_500_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_50_000\nimport earth.worldwind.layer.graticule.gk.GKLayerHelper.getNameByCoord\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\nprivate const val POINTS_IN_LINE = 3\n\nclass GKGraticuleTile(\n layer: GKGraticuleLayer, private val gkSector: Sector, private val tileType: String, previousName: String = \"\",\n private val countInParent: Int = 0, private val childNumber: Int = 0\n) : AbstractGraticuleTile(layer, layer.getUnprojectedSector(gkSector)) {\n private val name = getNameByCoord(gkSector.centroidLatitude, gkSector.centroidLongitude, tileType, previousName)\n private var subTiles: List? = null\n private var metricSquares: GKMetricGrid? = null\n private var renderWithNeighbors = true\n\n override val layer get() = super.layer as GKGraticuleLayer\n\n override fun selectRenderables(rc: RenderContext) {\n // TODO Remove workaround and add logic for 30th zone after fix of Path drawing at -179 to +179 longitude\n if (GKLayerHelper.getZone(gkSector.centroidLongitude) == 30) return\n\n super.selectRenderables(rc)\n val distanceToTile = if (rc.globe.is2D) rc.viewingDistance else nearestPoint(rc).distanceTo(rc.cameraPoint)\n val appropriateType = layer.getTypeFor(distanceToTile)\n enableRenderingForChildTile(appropriateType, distanceToTile)\n for (ge in gridElements) {\n if (ge.type == GridElement.TYPE_GRIDZONE_LABEL) renderLabel(appropriateType, rc, ge)\n else if (ge.isInView(rc)) layer.addRenderable(ge.renderable, tileType)\n }\n renderMetricGraticule()\n if (shouldCreateSubTile(distanceToTile)) {\n val subTiles = subTiles ?: createSubTiles().also { subTiles = it }\n for (subTile in subTiles) {\n if (subTile.isInView(rc)) subTile.selectRenderables(rc) //else subTile.clearRenderables()\n }\n }\n }\n\n private fun renderLabel(appropriateType: String, rc: RenderContext, label: GridElement) {\n if (shouldRenderLabel(appropriateType, rc)) layer.addRenderable(label.renderable, tileType)\n }\n\n private fun shouldRenderLabel(type: String, rc: RenderContext) =\n (((type == tileType || renderWithNeighbors) && shouldRenderSmallScale()) || shouldRenderMinimalScale()) && isInView(rc)\n\n private fun shouldRenderMinimalScale() = !layer.showDetailedSheets && tileType == GRATICULE_GK_50_000\n\n private fun shouldRenderSmallScale() =\n !(!layer.showDetailedSheets && (tileType == GRATICULE_GK_25_000 || tileType == GRATICULE_GK_10_000))\n\n private fun renderMetricGraticule() {\n if (tileType == GRATICULE_GK_25_000) {\n layer.setMetricLabelScale(2000)\n metricSquares?.selectRenderables(GK_METRIC_GRID_2000)\n } else if (tileType == GRATICULE_GK_10_000) {\n layer.setMetricLabelScale(1000)\n metricSquares?.selectRenderables(GK_METRIC_GRID_1000)\n }\n }\n\n private fun enableRenderingForChildTile(type: String, distanceToTile: Double) {\n val typeWithBiggerScale = getTypeWithBiggerScale()\n if (type == typeWithBiggerScale) {\n renderWithNeighbors = false\n subTiles?.forEach { it.renderWithNeighbors = true }\n } else if ( distanceToTile < layer.getDistanceFor(typeWithBiggerScale)) {\n renderWithNeighbors = false\n }\n }\n\n private fun shouldCreateSubTile(distanceToTile: Double) =\n distanceToTile <= layer.getDistanceFor(tileType) && tileType != GRATICULE_GK_10_000\n\n override fun clearRenderables() {\n super.clearRenderables()\n metricSquares?.clearRenderables()\n subTiles?.forEach { it.clearRenderables() }.also { subTiles = null }\n }\n\n private fun createSubTiles(): List {\n val newType = getTypeWithBiggerScale()\n val div = if (tileType == GRATICULE_GK_500_000) 3 else 2\n var count = 1\n return subdivide(div, gkSector).map { GKGraticuleTile(layer, it, newType, name, div*div, count++) }\n }\n\n private fun getTypeWithBiggerScale() = layer.getTypeFor(layer.getDistanceFor(tileType) * 0.8)\n\n override fun createRenderables() {\n super.createRenderables()\n\n if(!name.startsWith(\"Z\") && !name.startsWith(\"SZ\")){\n // TODO Fix problem with Z zone and add logic for maps under 60 parallels\n // TODO Fix problem related with transformation near the end of graticule zones\n if (shouldRenderSmallScale()) {\n generateMeridiansAndParallels()\n createLabels()\n }\n createMetricGraticule()\n }\n }\n\n private fun generateMeridiansAndParallels() {\n if (shouldGenerateMeridian()) generateWestMeridian()\n if (shouldGenerateParallel()) generateNorthParallel()\n }\n\n private fun shouldGenerateMeridian() = countInParent == 0 ||\n countInParent == 4 && (childNumber == 2 || childNumber == 4) ||\n countInParent == 9 && (childNumber == 2 || childNumber == 3 ||\n childNumber == 5 || childNumber == 6 || childNumber == 8 || childNumber == 9)\n\n private fun shouldGenerateParallel() =\n countInParent == 0 || countInParent == 4 && childNumber >= 3 || countInParent == 9 && childNumber >= 4\n\n private fun generateWestMeridian() {\n val minLon = gkSector.minLongitude\n val minLat = gkSector.minLatitude\n val latStep = gkSector.deltaLatitude.inDegrees / POINTS_IN_LINE\n val positions = mutableListOf()\n for (i in 0..POINTS_IN_LINE) positions.add(\n layer.transformToWGS(Position(minLat.plusDegrees(i * latStep), minLon, 0.0)))\n val westLine = layer.createLineRenderable(positions, PathType.LINEAR)\n gridElements.add(GridElement(sector, westLine, GridElement.TYPE_LINE_WEST, minLon))\n }\n\n private fun generateNorthParallel() {\n val minLon = gkSector.minLongitude\n val minLat = gkSector.minLatitude\n val positions = mutableListOf()\n val lonStep = gkSector.deltaLongitude.inDegrees / POINTS_IN_LINE\n for (i in 0..POINTS_IN_LINE) positions.add(\n layer.transformToWGS(Position(minLat, minLon.plusDegrees(i * lonStep), 0.0)))\n val northLine = layer.createLineRenderable(positions, PathType.LINEAR)\n gridElements.add(GridElement(sector, northLine, GridElement.TYPE_LINE_NORTH, minLat))\n }\n\n private fun createLabels() {\n val labelPos = Position(sector.centroidLatitude, sector.centroidLongitude, 0.0)\n val text = layer.createTextRenderable(labelPos, name, layer.getDistanceFor(tileType))\n text.attributes.isOutlineEnabled = false\n gridElements.add(GridElement(sector, text, GridElement.TYPE_GRIDZONE_LABEL))\n }\n\n private fun createMetricGraticule() {\n when (tileType) {\n GRATICULE_GK_25_000 -> {\n val squares = metricSquares ?: GKMetricGrid(layer, sector, gkSector, 2000.0).also { metricSquares = it }\n squares.createRenderables()\n }\n GRATICULE_GK_10_000 -> {\n val squares = metricSquares ?: GKMetricGrid(layer, sector, gkSector, 1000.0).also { metricSquares = it }\n squares.createRenderables()\n }\n }\n }\n}\n","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_100_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_1_000_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_200_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_25_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_500_000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GRATICULE_GK_50_000\nimport kotlin.jvm.JvmStatic\n\nobject GKLayerHelper {\n private const val Z_ZONE_LATITUDE = 88\n private const val MAX_LONGITUDE = 180\n private const val LATITUDE_1M_MAP = 4\n private const val LONGITUDE_1M_MAP = 6\n private const val LATITUDE_200K_MAP = 0.4 / 60.0 * 100.0 // 40 minutes\n private const val LATITUDE_100K_MAP = 0.2 / 60.0 * 100.0 // 20 minutes\n private const val LATITUDE_50K_MAP = 0.1 / 60.0 * 100.0 // 10 minutes\n private const val LATITUDE_25K_MAP = 0.05 / 60.0 * 100.0 // 10 minutes\n private const val LATITUDE_10K_MAP = 0.025 / 60.0 * 100.0 // 10 minutes\n\n /**\n * Get zone number by Gauss-Kruger longitude\n *\n * @param longitude Gauss-Kruger longitude\n * @return Corresponding zone number\n */\n @JvmStatic\n fun getZone(longitude: Angle) = if (longitude.inDegrees >= 0) longitude.inDegrees.toInt() / 6 + 1\n else (longitude.inDegrees + 180.0).toInt() / 6 + 31\n\n /**\n * The method returns coordinates of intersection lines.\n * The method doesn't check that the lines have an intersection\n * and will work incorrectly if the intersection is absent.\n *\n * The method returns GKCoordinate of intersection the lines or if\n * lines are parallel the method returns null\n */\n @JvmStatic\n fun intersect(\n x1: Double, y1: Double, x2: Double, y2: Double, x3: Double, y3: Double, x4: Double, y4: Double\n ): GKCoord? {\n val a1 = y2 - y1\n val b1 = x1 - x2\n val c1 = a1 * x1 + b1 * y1\n\n val a2 = y4 - y3\n val b2 = x3 - x4\n val c2 = a2 * x3 + b2 * y3\n\n val determinant = a1 * b2 - a2 * b1\n\n return if (determinant != 0.0) {\n val x = (b2 * c1 - b1 * c2) / determinant\n val y = (a1 * c2 - a2 * c1) / determinant\n GKCoord.fromXY(x, y)\n } else null // The lines are parallel.\n }\n\n @JvmStatic\n fun getNameByCoord(\n latitude: Angle, longitude: Angle, type: String = GRATICULE_GK_1_000_000, previousScaleName: String = \"\"\n ): String = when(type) {\n GRATICULE_GK_1_000_000 -> getMillionNameByCoord(latitude, longitude)\n GRATICULE_GK_500_000 -> previousScaleName.ifEmpty { getMillionNameByCoord (latitude, longitude) } +\n get500kPrefix(latitude, longitude)\n GRATICULE_GK_200_000 -> getMillionNameByCoord(latitude, longitude) + get200kPrefix(latitude, longitude)\n GRATICULE_GK_100_000 -> getMillionNameByCoord(latitude, longitude) + get100kPrefix(latitude, longitude)\n GRATICULE_GK_50_000 -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_100_000) } +\n get50kPrefix(latitude, longitude)\n GRATICULE_GK_25_000 -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_50_000) } +\n get25kPrefix(latitude, longitude)\n else -> previousScaleName.ifEmpty { getNameByCoord (latitude, longitude, GRATICULE_GK_25_000) } +\n get10kPrefix(latitude, longitude)\n }\n\n @JvmStatic\n private fun get500kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 1 -((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / 2).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP / 3 ).toInt()\n val num = rowFromTop * 2 + col\n return when (num) {\n 0 -> \"-A\"\n 1 -> \"-Б\"\n 2 -> \"-В\"\n else -> \"-Г\"\n }\n }\n\n @JvmStatic\n private fun get200kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 5 -((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / LATITUDE_200K_MAP).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP).toInt()\n val num = rowFromTop * LONGITUDE_1M_MAP + col\n val romaNumber = GKGraticuleLayer.ENDING_200_000_MAP[num]\n return \"-$romaNumber\"\n }\n\n @JvmStatic\n private fun get100kPrefix(latitude: Angle, longitude: Angle): String {\n val rowFromTop = 11 - ((latitude.inDegrees + Z_ZONE_LATITUDE) % LATITUDE_1M_MAP / LATITUDE_100K_MAP).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) % LONGITUDE_1M_MAP) / 0.5).toInt() + 1\n val num = rowFromTop * 12 + col\n return \"-$num\"\n }\n\n @JvmStatic\n private fun get50kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf100Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_100K_MAP).toInt()\n val rowFromTop = 1 -((latitude.inDegrees + Z_ZONE_LATITUDE - countOf100Maps * LATITUDE_100K_MAP)/ LATITUDE_50K_MAP).toInt()\n countOf100Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.5).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) - countOf100Maps * 0.5) / 0.25).toInt()\n val num = rowFromTop * 2 + col\n return when(num) {\n 0 -> \"-A\"\n 1 -> \"-Б\"\n 2 -> \"-В\"\n else -> \"-Г\"\n }\n }\n\n @JvmStatic\n private fun get25kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf50Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_50K_MAP).toInt()\n val rowFromTop = 1 -(((latitude.inDegrees + Z_ZONE_LATITUDE) - countOf50Maps * LATITUDE_50K_MAP)/ LATITUDE_25K_MAP).toInt()\n countOf50Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.25).toInt()\n val col = (((longitude.inDegrees + MAX_LONGITUDE) - countOf50Maps * 0.25) / 0.125).toInt()\n val num = rowFromTop * 2 + col\n return when(num) {\n 0 -> \"-a\"\n 1 -> \"-б\"\n 2 -> \"-в\"\n else -> \"-г\"\n }\n }\n\n @JvmStatic\n private fun get10kPrefix(latitude: Angle, longitude: Angle): String {\n var countOf50Maps = ((latitude.inDegrees + Z_ZONE_LATITUDE)/ LATITUDE_25K_MAP).toInt()\n val rowFromTop = 1 - ((latitude.inDegrees + Z_ZONE_LATITUDE - countOf50Maps * LATITUDE_25K_MAP) / LATITUDE_10K_MAP).toInt()\n countOf50Maps = ((longitude.inDegrees + MAX_LONGITUDE) / 0.125).toInt()\n val col = ((longitude.inDegrees + MAX_LONGITUDE - countOf50Maps * 0.125) / 0.0625).toInt() + 1\n val num = rowFromTop * 2 + col\n return \"-$num\"\n }\n\n @JvmStatic\n private fun getMillionNameByCoord(latitude: Angle, longitude: Angle): String {\n if(latitude.inDegrees >= Z_ZONE_LATITUDE) return GKGraticuleLayer.MILLION_COOL_NAME[45]\n if(latitude.inDegrees < -Z_ZONE_LATITUDE) return GKGraticuleLayer.MILLION_COOL_NAME[0]\n //TODO Add for 12 and 24 grade zone.\n val col = getMillionColumnIndex(longitude.inDegrees)\n return GKGraticuleLayer.MILLION_COOL_NAME[getMillionRowIndex(latitude.inDegrees)] + \"-\" +\n if (col< 9) \"0\" + (col + 1) else (col + 1)\n }\n\n @JvmStatic\n fun getMillionRowIndex(latitude: Double) = ((latitude + Z_ZONE_LATITUDE + LATITUDE_1M_MAP) / LATITUDE_1M_MAP).toInt()\n\n @JvmStatic\n fun getMillionColumnIndex(longitude: Double) =\n ((longitude + MAX_LONGITUDE) / LONGITUDE_1M_MAP).toInt().coerceAtMost(59)\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_1000\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.GK_METRIC_GRID_2000\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_SCALE_TYPE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_KEY\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_X_VALUE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_TYPE_Y_VALUE\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_X_KEY\nimport earth.worldwind.layer.graticule.gk.GKMetricLabels.Companion.LABEL_Y_KEY\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\nimport kotlin.math.abs\n\nprivate const val SMALL_VALUE_TO_BEE_IN_ZONE = 0.000000000001\n\nclass GKMetricGrid(\n layer: GKGraticuleLayer, sector: Sector, gkSector: Sector, private val scale: Double\n): AbstractGraticuleTile(layer, sector) {\n private val zone = GKLayerHelper.getZone(gkSector.centroidLongitude)\n private var zoneExtremes = ZoneExtremes(\n GKCoord.fromLatLon(gkSector.minLatitude, gkSector.minLongitude, zone),\n GKCoord.fromLatLon(gkSector.minLatitude, if (zone != 60) gkSector.maxLongitude else gkSector.maxLongitude.minusDegrees(SMALL_VALUE_TO_BEE_IN_ZONE), zone),\n GKCoord.fromLatLon(gkSector.maxLatitude, if (zone != 60) gkSector.maxLongitude else gkSector.maxLongitude.minusDegrees(SMALL_VALUE_TO_BEE_IN_ZONE), zone),\n GKCoord.fromLatLon(gkSector.maxLatitude, gkSector.minLongitude, zone)\n )\n\n override val layer get() = super.layer as GKGraticuleLayer\n\n fun selectRenderables(lineType :String) = gridElements.forEach {\n if (it.type == lineType) {\n layer.addRenderable(it.renderable, lineType)\n } else if (it.type == METRIC_LABEL && it.renderable is Label) {\n layer.addMetricLabel(it.renderable)\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val xMinZone = minOf(zoneExtremes.minXMinY.x, zoneExtremes.minXMaxY.x)\n val xMaxZone = maxOf(zoneExtremes.maxXMinY.x, zoneExtremes.maxXMaxY.x)\n val yMinZone = maxOf(zoneExtremes.minXMinY.y, zoneExtremes.maxXMinY.y)\n val yMaxZone = minOf(zoneExtremes.maxXMaxY.y, zoneExtremes.minXMaxY.y)\n\n val firstRow = (xMinZone / scale).toInt()\n val lastRow = (xMaxZone / scale).toInt()\n val firstCol = (yMinZone / scale).toInt()\n val lastCol = (yMaxZone / scale).toInt()\n\n createLinesAndLabels(firstRow, lastRow, firstCol, lastCol)\n createYLineThatIntersectCorners(firstCol, firstRow, lastRow, lastCol)\n }\n\n private fun createLinesAndLabels(firstRow: Int, lastRow: Int, firstCol: Int, lastCol: Int) {\n for (row in firstRow..lastRow) {\n val startX = row.toDouble() * scale\n val nextX = row.toDouble() * scale + scale\n\n for (col in firstCol..lastCol) {\n val startY = col * scale\n val startPoint = getWGSPositionFromXY(startX, startY)\n\n if (row != firstRow) {\n // Creat x line\n val nextY = col * scale + scale\n val movedByYPoint = getWGSPositionFromXY(startX, nextY)\n when (col) {\n firstCol -> {\n // Create correct intersection with west map\n val intersectPoint = intersect(\n zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, startY, startX, nextY\n )\n lineWithIntersection(intersectPoint, movedByYPoint)\n addLabel(startPoint, col, row, LABEL_TYPE_X_VALUE)\n }\n lastCol -> {\n // Create correct intersection with east map\n val intersectPoint = intersect(\n zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, startY, startX, nextY\n )\n lineWithIntersection(intersectPoint, startPoint)\n }\n else -> createLine(startPoint, movedByYPoint) // Main x lines (x lines in center of square)\n }\n }\n if (col != firstCol) {\n // Create y line\n val movedByXPoint = getWGSPositionFromXY(nextX, startY)\n when (row) {\n firstRow -> {\n // Create correct intersection with south map\n val intersectPoint = intersect(\n zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, startY, nextX, startY\n )\n lineWithIntersection(intersectPoint, movedByXPoint)\n addLabel(startPoint, col, row, LABEL_TYPE_Y_VALUE)\n }\n lastRow -> {\n // Create correct intersection with north map\n val intersectPoint = intersect(\n zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, startY, nextX, startY\n )\n lineWithIntersection(intersectPoint, startPoint)\n }\n else -> createLine(startPoint, movedByXPoint) // Main y lines (lines in center of square)\n }\n }\n }\n }\n }\n\n private fun createYLineThatIntersectCorners(firstCol: Int, firstRow: Int, lastRow: Int, lastCol: Int) {\n val firstY = firstCol * scale\n if (zoneExtremes.minXMinY.y < zoneExtremes.maxXMinY.y && zoneExtremes.minXMinY.y <= firstY) {\n // Create metric graticule y line that intersects west and south boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectWest = intersect(zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, firstY, lastX, firstY)\n val intersectSouth = intersect(zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, firstY, lastX, firstY)\n createLine(intersectSouth, intersectWest)\n } else if (zoneExtremes.maxXMinY.y < zoneExtremes.minXMinY.y && zoneExtremes.maxXMinY.y <= firstY) {\n // Create metric graticule y line that intersects west and north boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectWest = intersect(zoneExtremes.minXMinY, zoneExtremes.maxXMinY, startX, firstY, lastX, firstY)\n val intersectNorth = intersect( zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, firstY, lastX, firstY)\n createLine(intersectWest, intersectNorth)\n }\n val lastY = lastCol * scale + scale\n if (zoneExtremes.maxXMaxY.y < zoneExtremes.minXMaxY.y && zoneExtremes.minXMaxY.y >= lastY) {\n // Create metric graticule y line that intersects east and south boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectEast = intersect(zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n val intersectSouth = intersect(zoneExtremes.minXMinY, zoneExtremes.minXMaxY, startX, lastY, lastX, lastY)\n createLine(intersectSouth,intersectEast)\n } else if (zoneExtremes.minXMaxY.y < zoneExtremes.maxXMaxY.y && zoneExtremes.maxXMaxY.y >= lastY) {\n // Create metric graticule y line that intersects east and north boundary of the map sheet\n val startX = firstRow * scale\n val lastX = lastRow * scale\n val intersectNorth = intersect(zoneExtremes.maxXMinY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n val intersectEast = intersect(zoneExtremes.minXMaxY, zoneExtremes.maxXMaxY, startX, lastY, lastX, lastY)\n createLine(intersectNorth, intersectEast)\n }\n }\n\n private fun addLabel(point: Position, col: Int, row:Int, labelType: String) {\n val label = if (labelType == LABEL_TYPE_Y_VALUE) labelBy(col) else labelBy(row)\n val text = layer.createTextRenderable(point, label, scale)\n text.attributes.textOffset = Offset.center()\n text.putUserProperty(LABEL_TYPE_KEY, labelType)\n text.putUserProperty(LABEL_SCALE_TYPE, scale.toInt())\n text.putUserProperty(LABEL_X_KEY, row * scale)\n text.putUserProperty(LABEL_Y_KEY, col * scale)\n gridElements.add(GridElement(sector, text, METRIC_LABEL))\n }\n\n private fun createLine(firstPosition: GKCoord?, nextPosition: GKCoord?) {\n if (firstPosition != null && nextPosition != null) {\n createLine(getWGSPositionFromXY(firstPosition), getWGSPositionFromXY(nextPosition))\n }\n }\n private fun lineWithIntersection(intersectPoint: GKCoord?, anotherPoint: Position) {\n if (intersectPoint != null) createLine(anotherPoint, getWGSPositionFromXY(intersectPoint))\n }\n\n private fun createLine(startPoint: Position, movedByXPoint: Position) {\n val lineX = layer.createLineRenderable(mutableListOf(startPoint, movedByXPoint), PathType.LINEAR)\n gridElements.add(GridElement(sector, lineX, getTypeLine(), sector.maxLongitude))\n }\n\n\n private fun intersect(point1: GKCoord, point2: GKCoord, x3: Double, y3: Double, x4: Double, y4: Double)=\n GKLayerHelper.intersect(point1.x, point1.y, point2.x, point2.y, x3, y3, x4, y4)\n\n private fun labelBy(rowOrCol: Int) = (\"0\" + abs(rowOrCol * scale / 1000).toInt()).takeLast(2)\n\n private fun getTypeLine() = if (scale == SCALE_1000) GK_METRIC_GRID_1000 else GK_METRIC_GRID_2000\n\n private fun getWGSPositionFromXY(x: Double, y:Double): Position{\n val point = GKCoord.fromXY(x,y)\n return layer.transformToWGS(Position(point.latitude, point.longitude, 0.0))\n }\n\n private fun getWGSPositionFromXY(point: GKCoord) = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0))\n\n private class ZoneExtremes(val minXMinY: GKCoord, val minXMaxY: GKCoord, val maxXMaxY:GKCoord, val maxXMinY:GKCoord)\n\n companion object {\n const val SCALE_1000 = 1000.0\n const val METRIC_LABEL = \"metric.label\"\n }\n}\n","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.coords.GKCoord\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\n\nclass GKMetricLabels(private val layer: GKGraticuleLayer) {\n private val xLabels = mutableMapOf()\n private val yLabels = mutableMapOf()\n private val removeLabel = mutableListOf()\n\n fun selectRenderables(rc: RenderContext, scale: Int) {\n if (scale == 0 || xLabels.isEmpty() && yLabels.isEmpty()) return\n\n val (x, y) = labelLineIntersectionPoint(rc)\n\n for (label in xLabels) {\n if (shouldClean(rc, label.value ,scale)) removeLabel.add(label.key)\n else renderLabel(LABEL_TYPE_X_VALUE, label.value, x, y)\n }\n removeLabels(LABEL_TYPE_X_VALUE)\n\n for (label in yLabels) {\n if (shouldClean(rc, label.value ,scale)) removeLabel.add(label.key)\n else renderLabel(LABEL_TYPE_Y_VALUE, label.value, x, y)\n }\n removeLabels(LABEL_TYPE_Y_VALUE)\n }\n\n fun addLabel(label: Label) {\n val labelType = getLabelType(label) ?: return\n val id = getLabelId(label, labelType) ?: return\n\n if (labelType == LABEL_TYPE_X_VALUE) {\n if (!xLabels.contains(id)) xLabels[id] = label\n } else if (labelType == LABEL_TYPE_Y_VALUE) {\n if (!yLabels.contains(id)) yLabels[id] = label\n }\n }\n\n private fun getLabelType(label: Label) = label.getUserProperty(LABEL_TYPE_KEY)\n\n private fun removeLabels(labelType: String) {\n if (labelType == LABEL_TYPE_X_VALUE) removeLabel.forEach { labelId -> xLabels.remove(labelId) }\n if (labelType == LABEL_TYPE_Y_VALUE) removeLabel.forEach { labelId -> yLabels.remove(labelId) }\n removeLabel.clear()\n }\n\n private fun getLabelId(label: Label, labelType:String): String? {\n val scale = label.getUserProperty(LABEL_SCALE_TYPE) ?: return null\n val coord = when (labelType) {\n LABEL_TYPE_X_VALUE -> label.getUserProperty(LABEL_X_KEY)\n LABEL_TYPE_Y_VALUE -> label.getUserProperty(LABEL_Y_KEY)\n else -> null\n } ?: return null\n val ew = if (label.position.longitude.inDegrees >= 0.0) \"E\" else \"W\"\n val ns = if (label.position.latitude.inDegrees >= 0.0) \"N\" else \"S\"\n return \"$coord$ns$ew$scale\"\n }\n\n private fun renderLabel(labelType: String, label: Label, x: Double, y: Double) {\n val scale = label.getUserProperty(LABEL_SCALE_TYPE) ?: return\n if (labelType == LABEL_TYPE_Y_VALUE) {\n val yLabel = label.getUserProperty(LABEL_Y_KEY) ?: return\n val point = GKCoord.fromXY(x,yLabel)\n if (checkIfOutOfZone(point, yLabel)) return\n label.position = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0), label.position)\n } else if (labelType == LABEL_TYPE_X_VALUE) {\n val xLabel = label.getUserProperty(LABEL_X_KEY) ?: return\n val point = GKCoord.fromXY(xLabel,y)\n label.position = layer.transformToWGS(Position(point.latitude, point.longitude, 0.0), label.position)\n }\n layer.addRenderable(label, getTypeBy(scale))\n }\n\n private fun checkIfOutOfZone(point: GKCoord, yLabel: Double) =\n (yLabel / 1E6).toInt() != GKLayerHelper.getZone(point.longitude)\n\n private fun labelLineIntersectionPoint(rc: RenderContext): Pair {\n val eastingOffset = rc.viewport.width * rc.pixelSize / 4\n val northOffset = rc.viewport.height * rc.pixelSize / 4\n val lookAtPosition = rc.lookAtPosition ?: rc.camera.position\n val centerGK = layer.transformFromWGS(\n Position(lookAtPosition.latitude, lookAtPosition.longitude, 0.0)\n )\n val centerXY = GKCoord.fromLatLon(centerGK.latitude, centerGK.longitude)\n return Pair(centerXY.x - northOffset, centerXY.y - eastingOffset)\n }\n\n private fun shouldClean(rc: RenderContext, label: Label, scale: Int) =\n isNotInScale(label, scale) || tooFar(rc, label.position, scale)\n\n private fun isNotInScale(label: Label, scale: Int) =\n scale == 0 || scale > (label.getUserProperty(LABEL_SCALE_TYPE) ?: 0)\n\n private fun tooFar(rc: RenderContext, position: Position, scale: Int) = rc.cameraPoint.distanceTo(\n rc.globe.geographicToCartesian(position.latitude, position.longitude, 0.0, Vec3())\n ) > getDistanceBy(scale)\n\n private fun getTypeBy(scale: Int) = if (scale == 1000) TYPE_LABEL_1000 else TYPE_LABEL_2000\n\n private fun getDistanceBy(scale: Int) = if (scale == 1000) layer.thresholdFor1kLabels else layer.thresholdFor2kLabels\n\n companion object {\n const val LABEL_TYPE_KEY = \"label.name\"\n const val LABEL_TYPE_X_VALUE = \"X\"\n const val LABEL_TYPE_Y_VALUE = \"Y\"\n const val LABEL_X_KEY = \"label.x\"\n const val LABEL_Y_KEY = \"label.y\"\n const val LABEL_SCALE_TYPE = \"label.scale.type\"\n const val TYPE_LABEL_1000 = \"label.1000\"\n const val TYPE_LABEL_2000 = \"label.2000\"\n }\n}","package earth.worldwind.layer.graticule.gk\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Position.Companion.fromDegrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LATITUDE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LONGITUDE_LABEL\nimport earth.worldwind.layer.graticule.gk.GKGraticuleLayer.Companion.MILLION_COOL_NAME\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\n\ninternal class GKOverview(layer: GKGraticuleLayer): AbstractGraticuleTile(layer, Sector().setFullSphere()) {\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val labelPos = layer.computeLabelOffset(rc)\n for (ge in gridElements) {\n if (ge.isInView(rc)) {\n if (ge.renderable is Label) {\n val gt = ge.renderable\n if (labelPos.latitude.inDegrees < 72 || !\"*32*34*36*\".contains(\"*\" + gt.text + \"*\")) {\n // Adjust label position according to eye position\n val pos = gt.position\n if (ge.type == TYPE_LATITUDE_LABEL) gt.position = Position(pos.latitude, labelPos.longitude, pos.altitude)\n else if (ge.type == TYPE_LONGITUDE_LABEL) gt.position = Position(labelPos.latitude, pos.longitude, pos.altitude)\n }\n }\n layer.addRenderable(ge.renderable, GKGraticuleLayer.GRATICULE_GK_OVERVIEW)\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // Generate meridians and zone labels\n for (zoneNumber in 1 .. 60) {\n val longitude = -180.0 + zoneNumber * 6.0\n // Meridian\n positions.clear()\n positions.add(fromDegrees(-88.0, longitude, 0.0))\n positions.add(fromDegrees(-60.0, longitude, 0.0))\n positions.add(fromDegrees(-30.0, longitude, 0.0))\n positions.add(fromDegrees(0.0, longitude, 0.0))\n positions.add(fromDegrees(30.0, longitude, 0.0))\n positions.add(fromDegrees(60.0, longitude, 0.0))\n positions.add(fromDegrees(88.0, longitude, 0.0))\n val polyline = layer.createLineRenderable(positions.toList(), PathType.GREAT_CIRCLE)\n var sector = fromDegrees(-88.0, longitude, 176.0, 30.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n // Zone label\n val text = layer.createTextRenderable(\n fromDegrees(0.0, longitude - 3.0, 0.0), zoneNumber.toString(), 10e6\n )\n text.attributes.isOutlineEnabled = false\n sector = fromDegrees(-90.0, longitude - 3.0, 180.0, 0.0)\n gridElements.add(GridElement(sector, text, TYPE_LONGITUDE_LABEL))\n }\n\n // Generate parallels\n for (i in 0..45) {\n val latitude = -92.0 + i * 4.0\n // don't need parallel for firs and last\n if(i != 0 || i != 46 ) {\n for (j in 0..3) {\n // Each parallel is divided into four 90 degrees segments\n positions.clear()\n val longitude = -180.0 + j * 90.0\n positions.add(fromDegrees(latitude, longitude, 0.0))\n positions.add(fromDegrees(latitude, longitude + 30.0, 0.0))\n positions.add(fromDegrees(latitude, longitude + 60.0, 0.0))\n if(j == 3 ) positions.add(fromDegrees(latitude, 180.0, 0.0))\n else positions.add(fromDegrees(latitude, longitude + 90.0, 0.0))\n\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n val sector = fromDegrees(latitude, longitude, 3.0, 90.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n }\n // Latitude band label\n val text = layer.createTextRenderable(\n fromDegrees(latitude + 2, 0.0, 0.0), MILLION_COOL_NAME[i],10e6\n )\n text.attributes.isOutlineEnabled = false\n val sector = fromDegrees(latitude + 2, -180.0, 3.0, 360.0)\n gridElements.add(GridElement(sector, text, TYPE_LATITUDE_LABEL))\n }\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord.Companion.fromUPS\nimport earth.worldwind.geom.coords.UTMCoord.Companion.fromUTM\nimport earth.worldwind.layer.graticule.AbstractGraticuleLayer\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.ceil\nimport kotlin.math.floor\n\n/**\n * Displays the UTM graticule metric scale.\n */\nabstract class AbstractUTMGraticuleLayer(name: String, scaleModulo: Int, maxResolution: Double): AbstractGraticuleLayer(name) {\n private val metricScaleSupport = UTMMetricScaleSupport(this).apply {\n this.scaleModulo = scaleModulo\n this.maxResolution = maxResolution\n }\n\n override val orderedTypes = listOf(\n GRATICULE_UTM_100000M,\n GRATICULE_UTM_10000M,\n GRATICULE_UTM_1000M,\n GRATICULE_UTM_100M,\n GRATICULE_UTM_10M,\n GRATICULE_UTM_1M\n )\n\n override fun initRenderingParams() {\n // 100,000 meter graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_COLOR] = Color(0, 255, 0) // Green\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n setRenderingParams(GRATICULE_UTM_100000M, params)\n // 10,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 102, 255)\n params[KEY_LABEL_COLOR] = Color(0, 102, 255)\n setRenderingParams(GRATICULE_UTM_10000M, params)\n // 1,000 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 255, 255) // Cyan\n params[KEY_LABEL_COLOR] = Color(0, 255, 255) // Cyan\n setRenderingParams(GRATICULE_UTM_1000M, params)\n // 100 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(0, 153, 153)\n params[KEY_LABEL_COLOR] = Color(0, 153, 153)\n setRenderingParams(GRATICULE_UTM_100M, params)\n // 10 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(102, 255, 204)\n params[KEY_LABEL_COLOR] = Color(102, 255, 204)\n setRenderingParams(GRATICULE_UTM_10M, params)\n // 1 meter graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(153, 153, 255)\n params[KEY_LABEL_COLOR] = Color(153, 153, 255)\n setRenderingParams(GRATICULE_UTM_1M, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when {\n resolution >= 100000 -> GRATICULE_UTM_100000M\n resolution >= 10000 -> GRATICULE_UTM_10000M\n resolution >= 1000 -> GRATICULE_UTM_1000M\n resolution >= 100 -> GRATICULE_UTM_100M\n resolution >= 10 -> GRATICULE_UTM_10M\n resolution >= 1 -> GRATICULE_UTM_1M\n else -> GRATICULE_UTM_1M\n }\n\n override fun clear(rc: RenderContext) {\n super.clear(rc)\n metricScaleSupport.clear()\n metricScaleSupport.computeZone(rc)\n }\n\n override fun selectRenderables(rc: RenderContext) { metricScaleSupport.selectRenderables(rc) }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n metricScaleSupport.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n }\n\n fun computePosition(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n return if (zone > 0) computePositionFromUTM(zone, hemisphere, easting, northing)\n else computePositionFromUPS(hemisphere, easting, northing)\n }\n\n private fun computePositionFromUTM(zone: Int, hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val utm = fromUTM(zone, hemisphere, easting, northing)\n return Position(utm.latitude.clampLatitude(), utm.longitude.clampLongitude(), 10e3)\n }\n\n private fun computePositionFromUPS(hemisphere: Hemisphere, easting: Double, northing: Double): Position {\n val ups = fromUPS(hemisphere, easting, northing)\n return Position(ups.latitude.clampLatitude(), ups.longitude.clampLongitude(), 10e3)\n }\n\n fun createSquaresGrid(\n utmZone: Int, hemisphere: Hemisphere, utmZoneSector: Sector,\n minEasting: Double, maxEasting: Double, minNorthing: Double, maxNorthing: Double\n ): List {\n val squares = mutableListOf()\n val startEasting = floor(minEasting / ONEHT) * ONEHT\n val startNorthing = floor(minNorthing / ONEHT) * ONEHT\n val cols = ceil((maxEasting - startEasting) / ONEHT).toInt()\n val rows = ceil((maxNorthing - startNorthing) / ONEHT).toInt()\n val squaresArray = Array(rows) { arrayOfNulls(cols) }\n var col = 0\n var easting = startEasting\n while (easting < maxEasting) {\n var row = 0\n var northing = startNorthing\n while (northing < maxNorthing) {\n val sz = UTMSquareZone(this, utmZone, hemisphere, utmZoneSector, easting, northing, ONEHT)\n if (!sz.isOutsideGridZone) {\n squares.add(sz)\n squaresArray[row][col] = sz\n }\n row++\n northing += ONEHT\n }\n col++\n easting += ONEHT\n }\n\n // Keep track of neighbors\n for (c in 0 until cols) {\n for (r in 0 until rows) {\n val sz = squaresArray[r][c]\n if (sz != null) {\n sz.northNeighbor = if (r + 1 < rows) squaresArray[r + 1][c] else null\n sz.eastNeighbor = if (c + 1 < cols) squaresArray[r][c + 1] else null\n }\n }\n }\n return squares\n }\n\n companion object {\n const val UTM_MIN_LATITUDE = -80.0\n const val UTM_MAX_LATITUDE = 84.0\n\n /** Graticule for the 100,000 meter grid. */\n private const val GRATICULE_UTM_100000M = \"Graticule.UTM.100000m\"\n\n /** Graticule for the 10,000 meter grid. */\n private const val GRATICULE_UTM_10000M = \"Graticule.UTM.10000m\"\n\n /** Graticule for the 1,000 meter grid. */\n private const val GRATICULE_UTM_1000M = \"Graticule.UTM.1000m\"\n\n /** Graticule for the 100 meter grid. */\n private const val GRATICULE_UTM_100M = \"Graticule.UTM.100m\"\n\n /** Graticule for the 10 meter grid. */\n private const val GRATICULE_UTM_10M = \"Graticule.UTM.10m\"\n\n /** Graticule for the 1 meter grid. */\n private const val GRATICULE_UTM_1M = \"Graticule.UTM.1m\"\n private const val ONEHT = 100e3\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_DRAW_LABELS\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_COLOR\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LABEL_FONT\nimport earth.worldwind.layer.graticule.GraticuleRenderingParams.Companion.KEY_LINE_COLOR\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\nimport earth.worldwind.render.FontWeight\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.floor\n\nopen class MGRSGraticuleLayer: AbstractUTMGraticuleLayer(\"MGRS Graticule\", 100000, 1e5) {\n private val gridZones = Array(20) { arrayOfNulls(60) } // row/col\n private val poleZones = arrayOfNulls(4) // North x2 + South x2\n private val overview = MGRSOverview(this)\n\n /**\n * The maximum resolution graticule that will be rendered, or null if no graticules will be rendered. By\n * default, all graticules are rendered, and this will return GRATICULE_1M.\n */\n var maximumGraticuleResolution: String?\n get() {\n var maxTypeDrawn: String? = null\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n val params = getRenderingParams(type)\n if (params.isDrawLines) maxTypeDrawn = type\n }\n return maxTypeDrawn\n }\n set(graticuleType) {\n var pastTarget = false\n for (i in orderedTypes.indices) {\n val type = orderedTypes[i]\n // Enable all graticulte BEFORE and INCLUDING the target.\n // Disable all graticules AFTER the target.\n val params = getRenderingParams(type)\n params.isDrawLines = !pastTarget\n params.isDrawLabels = !pastTarget\n if (!pastTarget && type == graticuleType) pastTarget = true\n }\n }\n\n override val orderedTypes = mutableListOf(GRATICULE_MGRS_OVERVIEW, GRATICULE_MGRS_GRID_ZONE).apply { addAll(super.orderedTypes) }\n\n override fun initRenderingParams() {\n super.initRenderingParams()\n // MGRS Overview graticule\n var params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(.8f, .8f, .8f, .5f)\n params[KEY_LABEL_COLOR] = Color(1f, 1f, 1f, .8f)\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 14)\n params[KEY_DRAW_LABELS] = true\n setRenderingParams(GRATICULE_MGRS_OVERVIEW, params)\n // MGRS GridZone graticule\n params = GraticuleRenderingParams()\n params[KEY_LINE_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_COLOR] = Color(255, 255, 0) // Yellow\n params[KEY_LABEL_FONT] = Font(\"arial\", FontWeight.BOLD, 16)\n setRenderingParams(GRATICULE_MGRS_GRID_ZONE, params)\n }\n\n override fun getTypeFor(resolution: Double) =\n when (resolution) {\n MGRS_OVERVIEW_RESOLUTION -> GRATICULE_MGRS_OVERVIEW\n MGRS_GRID_ZONE_RESOLUTION -> GRATICULE_MGRS_GRID_ZONE\n else -> super.getTypeFor(resolution)\n }\n\n override fun selectRenderables(rc: RenderContext) {\n if (rc.camera.position.altitude <= GRID_ZONE_MAX_ALTITUDE) {\n selectMGRSRenderables(rc)\n super.selectRenderables(rc)\n } else {\n overview.selectRenderables(rc)\n }\n }\n\n private fun selectMGRSRenderables(rc: RenderContext) {\n val zoneList = getVisibleZones(rc)\n for (gz in zoneList) gz.selectRenderables(rc)\n }\n\n private fun getVisibleZones(rc: RenderContext): List {\n val zoneList = mutableListOf()\n val vs = rc.terrain.sector\n // UTM Grid\n val gridRectangle = getGridRectangleForSector(vs)\n if (gridRectangle != null) {\n for (row in gridRectangle.y..gridRectangle.height) {\n for (col in gridRectangle.x..gridRectangle.width) {\n if (row != 19 || col != 31 && col != 33 && col != 35) {\n // ignore X32, 34 and 36\n val zone = gridZones[row][col] ?: MGRSGridZone(this, getGridSector(row, col)).also { gridZones[row][col] = it }\n if (zone.isInView(rc)) zoneList.add(zone) else zone.clearRenderables()\n }\n }\n }\n }\n // Poles\n if (vs.maxLatitude.inDegrees > 84) {\n // North Pole\n if (poleZones[2] == null) poleZones[2] = MGRSGridZone(this, fromDegrees(84.0, -180.0, 6.0, 180.0)) // Y\n if (poleZones[3] == null) poleZones[3] = MGRSGridZone(this, fromDegrees(84.0, 0.0, 6.0, 180.0)) // Z\n zoneList.add(poleZones[2]!!)\n zoneList.add(poleZones[3]!!)\n }\n if (vs.minLatitude.inDegrees < -80) {\n // South Pole\n if (poleZones[0] == null) poleZones[0] = MGRSGridZone(this, fromDegrees(-90.0, -180.0, 10.0, 180.0)) // B\n if (poleZones[1] == null) poleZones[1] = MGRSGridZone(this, fromDegrees(-90.0, 0.0, 10.0, 180.0)) // A\n zoneList.add(poleZones[0]!!)\n zoneList.add(poleZones[1]!!)\n }\n return zoneList\n }\n\n private fun getGridRectangleForSector(sector: Sector): Viewport? {\n var rectangle: Viewport? = null\n if (sector.minLatitude.inDegrees < 84 && sector.maxLatitude.inDegrees > -80) {\n val minLat = sector.minLatitude.inDegrees.coerceAtLeast(-80.0)\n val maxLat = sector.maxLatitude.inDegrees.coerceAtMost(84.0)\n val gridSector = fromDegrees(\n minLat, sector.minLongitude.inDegrees, maxLat - minLat, sector.deltaLongitude.inDegrees\n )\n var x1 = getGridColumn(gridSector.minLongitude)\n var x2 = getGridColumn(gridSector.maxLongitude)\n val y1 = getGridRow(gridSector.minLatitude)\n val y2 = getGridRow(gridSector.maxLatitude)\n // Adjust rectangle to include special zones\n if (y1 <= 17 && y2 >= 17 && x2 == 30) x2 = 31 // 32V Norway\n if (y1 <= 19 && y2 >= 19) { // X band\n if (x1 == 31) x1 = 30 // 31X\n if (x2 == 31) x2 = 32 // 33X\n if (x1 == 33) x1 = 32 // 33X\n if (x2 == 33) x2 = 34 // 35X\n if (x1 == 35) x1 = 34 // 35X\n if (x2 == 35) x2 = 36 // 37X\n }\n rectangle = Viewport(x1, y1, x2, y2) // Viewport is used as simple integer rectangle\n }\n return rectangle\n }\n\n private fun getGridColumn(longitude: Angle) = floor((longitude.inDegrees + 180) / 6.0).toInt().coerceAtMost(59)\n\n private fun getGridRow(latitude: Angle) = floor((latitude.inDegrees + 80) / 8.0).toInt().coerceAtMost(19)\n\n private fun getGridSector(row: Int, col: Int): Sector {\n val minLat = -80 + row * 8\n val maxLat = minLat + if (minLat != 72) 8 else 12\n var minLon = -180 + col * 6\n var maxLon = minLon + 6\n // Special sectors\n if (row == 17 && col == 30) // 31V\n maxLon -= 3 else if (row == 17 && col == 31) // 32V\n minLon -= 3 else if (row == 19 && col == 30) // 31X\n maxLon += 3 else if (row == 19 && col == 31) { // 32X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 32) { // 33X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 33) { // 34X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 34) { // 35X\n minLon -= 3\n maxLon += 3\n } else if (row == 19 && col == 35) { // 36X does not exist\n minLon += 3\n maxLon -= 3\n } else if (row == 19 && col == 36) // 37X\n minLon -= 3\n return fromDegrees(minLat.toDouble(), minLon.toDouble(), (maxLat - minLat).toDouble(), (maxLon - minLon).toDouble())\n }\n\n companion object {\n const val MGRS_OVERVIEW_RESOLUTION = 1e6\n const val MGRS_GRID_ZONE_RESOLUTION = 5e5\n\n /** Graticule for the MGRS overview. */\n private const val GRATICULE_MGRS_OVERVIEW = \"Graticule.MGRS.Overview\"\n\n /** Graticule for the MGRS grid zone. */\n private const val GRATICULE_MGRS_GRID_ZONE = \"Graticule.MGRS.GridZone\"\n private const val GRID_ZONE_MAX_ALTITUDE = 5e6\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.MGRSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer.Companion.MGRS_GRID_ZONE_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a UTM zone / latitude band intersection\n */\nclass MGRSGridZone(layer: MGRSGraticuleLayer, sector: Sector) : AbstractGraticuleTile(layer, sector) {\n val isUPS = sector.maxLatitude.inDegrees > AbstractUTMGraticuleLayer.UTM_MAX_LATITUDE\n || sector.minLatitude.inDegrees < AbstractUTMGraticuleLayer.UTM_MIN_LATITUDE\n private var name: String\n private var hemisphere: Hemisphere\n private var zone: Int\n private var squares: List? = null\n override val layer get() = super.layer as MGRSGraticuleLayer\n\n init {\n val mgrs = MGRSCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n if (isUPS) {\n name = mgrs.toString().substring(2, 3)\n hemisphere = if (sector.minLatitude.inDegrees > 0) Hemisphere.N else Hemisphere.S\n zone = 0\n } else {\n name = mgrs.toString().substring(0, 3)\n val utm = UTMCoord.fromLatLon(sector.centroidLatitude, sector.centroidLongitude)\n hemisphere = utm.hemisphere\n zone = utm.zone\n }\n }\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(MGRS_GRID_ZONE_RESOLUTION)\n for (ge in gridElements) if (ge.isInView(rc)) {\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (rc.camera.position.altitude > SQUARE_MAX_ALTITUDE) return\n\n // Select 100km squares elements\n val squares = squares ?: (if (isUPS) createSquaresUPS() else createSquaresUTM()).also { squares = it }\n for (sz in squares) if (sz.isInView(rc)) sz.selectRenderables(rc) else sz.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n squares?.forEach { it.clearRenderables() }.also { squares = null }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf(\n Position(sector.minLatitude, sector.minLongitude, 10e3),\n Position(sector.maxLatitude, sector.minLongitude, 10e3)\n )\n var polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n var lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.minLongitude, sector.minLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, GridElement.TYPE_LINE_WEST))\n if (!isUPS) {\n // right meridian segment\n if (name.startsWith(\"60\")) {\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.maxLatitude, sector.maxLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_EAST))\n }\n\n // bottom parallel segment\n positions.clear()\n positions.add(Position(sector.minLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.minLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.minLatitude, sector.minLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH))\n\n // top parallel segment\n if (name.endsWith(\"X\")) {\n positions.clear()\n positions.add(Position(sector.maxLatitude, sector.minLongitude, 10e3))\n positions.add(Position(sector.maxLatitude, sector.maxLongitude, 10e3))\n polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n lineSector = Sector(\n sector.maxLatitude, sector.maxLatitude, sector.minLongitude, sector.maxLongitude\n )\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH))\n }\n }\n\n // Label\n val text = layer.createTextRenderable(\n Position(sector.centroidLatitude, sector.centroidLongitude, 0.0), name, 10e6\n )\n gridElements.add(GridElement(sector, text, GridElement.TYPE_GRIDZONE_LABEL))\n }\n\n private fun createSquaresUTM(): List {\n // Find grid zone easting and northing boundaries\n var utm = UTMCoord.fromLatLon(sector.minLatitude, sector.centroidLongitude)\n val minNorthing = utm.northing\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.centroidLongitude)\n var maxNorthing = utm.northing\n maxNorthing = if (maxNorthing == 0.0) 10e6 else maxNorthing\n utm = UTMCoord.fromLatLon(sector.minLatitude, sector.minLongitude)\n var minEasting = utm.easting\n utm = UTMCoord.fromLatLon(sector.maxLatitude, sector.minLongitude)\n minEasting = utm.easting.coerceAtMost(minEasting)\n var maxEasting = 1e6 - minEasting\n\n // Compensate for some distorted zones\n if (name == \"32V\") maxNorthing += 20e3 // catch KS and LS in 32V\n if (name == \"31X\") maxEasting += ONEHT // catch GA and GV in 31X\n\n // Create squares\n return layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing).also {\n for (square in it) setSquareName(square)\n }\n }\n\n private fun createSquaresUPS(): List {\n val minEasting: Double\n val maxEasting: Double\n val minNorthing: Double\n val maxNorthing: Double\n if (Hemisphere.N == hemisphere) {\n minNorthing = TWOMIL - ONEHT * 7\n maxNorthing = TWOMIL + ONEHT * 7\n minEasting = if (name == \"Y\") TWOMIL - ONEHT * 7 else TWOMIL\n maxEasting = if (name == \"Y\") TWOMIL else TWOMIL + ONEHT * 7\n } else {\n minNorthing = TWOMIL - ONEHT * 12\n maxNorthing = TWOMIL + ONEHT * 12\n minEasting = if (name == \"A\") TWOMIL - ONEHT * 12 else TWOMIL\n maxEasting = if (name == \"A\") TWOMIL else TWOMIL + ONEHT * 12\n }\n\n // Create squares\n return layer.createSquaresGrid(zone, hemisphere, sector, minEasting, maxEasting, minNorthing, maxNorthing).also {\n for (square in it) setSquareName(square)\n }\n }\n\n private fun setSquareName(sz: UTMSquareZone) {\n // Find out MGRS 100Km square name\n val tenMeterDegree = toDegrees(10.0 / 6378137.0)\n var mgrs: MGRSCoord? = null\n when {\n sz.isPositionInside(Position(sz.centroid.latitude, sz.centroid.longitude, 0.0)) ->\n mgrs = MGRSCoord.fromLatLon(sz.centroid.latitude, sz.centroid.longitude)\n sz.isPositionInside(sz.sw) -> mgrs = MGRSCoord.fromLatLon(\n sz.sw.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.sw.longitude.plusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.se) -> mgrs = MGRSCoord.fromLatLon(\n sz.se.latitude.plusDegrees(tenMeterDegree).clampLatitude(),\n sz.se.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n sz.isPositionInside(sz.nw) -> mgrs = MGRSCoord.fromLatLon(\n sz.nw.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.nw.longitude.plusDegrees(tenMeterDegree).clampLongitude())\n sz.isPositionInside(sz.ne) -> mgrs = MGRSCoord.fromLatLon(\n sz.ne.latitude.minusDegrees(tenMeterDegree).clampLatitude(),\n sz.ne.longitude.minusDegrees(tenMeterDegree).clampLongitude()\n )\n }\n // Set square zone name\n if (mgrs != null) sz.name = mgrs.toString().substring(3, 5)\n }\n\n companion object {\n private const val ONEHT = 100e3\n private const val TWOMIL = 2e6\n private const val SQUARE_MAX_ALTITUDE = 1e6\n }\n}",null,"package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Position.Companion.fromDegrees\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LATITUDE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LONGITUDE_LABEL\nimport earth.worldwind.layer.graticule.utm.MGRSGraticuleLayer.Companion.MGRS_OVERVIEW_RESOLUTION\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.Label\nimport earth.worldwind.shape.PathType\n\ninternal class MGRSOverview(layer: MGRSGraticuleLayer): AbstractGraticuleTile(layer, Sector()) {\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val labelPos = layer.computeLabelOffset(rc)\n for (ge in gridElements) {\n if (ge.isInView(rc)) {\n if (ge.renderable is Label) {\n val gt = ge.renderable\n if (labelPos.latitude.inDegrees < 72 || !\"*32*34*36*\".contains(\"*\" + gt.text + \"*\")) {\n // Adjust label position according to eye position\n var pos = gt.position\n if (ge.type == TYPE_LATITUDE_LABEL) pos = Position(pos.latitude, labelPos.longitude, pos.altitude)\n else if (ge.type == TYPE_LONGITUDE_LABEL) pos = Position(labelPos.latitude, pos.longitude, pos.altitude)\n gt.position = pos\n }\n }\n layer.addRenderable(ge.renderable, layer.getTypeFor(MGRS_OVERVIEW_RESOLUTION))\n }\n }\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // Generate meridians and zone labels\n for (zoneNumber in 1 .. 60) {\n val longitude = -180.0 + zoneNumber * 6.0\n // Meridian\n positions.clear()\n positions.add(fromDegrees(-80.0, longitude, 10e3))\n positions.add(fromDegrees(-60.0, longitude, 10e3))\n positions.add(fromDegrees(-30.0, longitude, 10e3))\n positions.add(fromDegrees(0.0, longitude, 10e3))\n positions.add(fromDegrees(30.0, longitude, 10e3))\n val maxLat = if (longitude < 6.0 || longitude > 36.0) {\n // 'regular' UTM meridians\n positions.add(fromDegrees(60.0, longitude, 10e3))\n 84.0\n } else {\n // Exceptions: shorter meridians around and north-east of Norway\n if (longitude == 6.0) {\n 56.0\n } else {\n positions.add(fromDegrees(60.0, longitude, 10e3))\n 72.0\n }\n }\n positions.add(fromDegrees(maxLat, longitude, 10e3))\n val polyline = layer.createLineRenderable(positions.toList(), PathType.GREAT_CIRCLE)\n var sector = fromDegrees(-80.0, longitude, maxLat + 80.0, 0.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n\n // Zone label\n val text = layer.createTextRenderable(\n fromDegrees(0.0, longitude - 3.0, 0.0),\n zoneNumber.toString(), 10e6\n )\n sector = fromDegrees(-90.0, longitude - 3.0, 180.0, 0.0)\n gridElements.add(GridElement(sector, text, TYPE_LONGITUDE_LABEL))\n }\n\n // Generate special meridian segments for exceptions around and north-east of Norway\n for (i in 0..4) {\n positions.clear()\n val longitude = SPECIAL_MERIDIANS[i][0].toDouble()\n val latitude1 = SPECIAL_MERIDIANS[i][1].toDouble()\n val latitude2 = SPECIAL_MERIDIANS[i][2].toDouble()\n positions.add(fromDegrees(latitude1, longitude, 10e3))\n positions.add(fromDegrees(latitude2, longitude, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val sector = fromDegrees(latitude1, longitude, latitude2 - latitude1, 0.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n\n // Generate parallels - no exceptions\n var latitude = -80.0\n for (i in 0..20) {\n for (j in 0..3) {\n // Each parallel is divided into four 90 degrees segments\n positions.clear()\n val longitude = -180.0 + j * 90.0\n positions.add(fromDegrees(latitude, longitude, 10e3))\n positions.add(fromDegrees(latitude, longitude + 30.0, 10e3))\n positions.add(fromDegrees(latitude, longitude + 60.0, 10e3))\n positions.add(fromDegrees(latitude, longitude + 90.0, 10e3))\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.LINEAR)\n val sector = fromDegrees(latitude, longitude, 0.0, 90.0)\n gridElements.add(GridElement(sector, polyline, TYPE_LINE))\n }\n // Latitude band label\n if (i < 20) {\n val text = layer.createTextRenderable(\n fromDegrees(latitude + 4.0, 0.0, 0.0),\n LAT_BANDS[i].toString(), 10e6\n )\n val sector = fromDegrees(latitude + 4.0, -180.0, 0.0, 360.0)\n gridElements.add(GridElement(sector, text, TYPE_LATITUDE_LABEL))\n }\n\n // Increase latitude\n latitude += if (latitude < 72.0) 8.0 else 12.0\n }\n }\n\n companion object {\n // Exceptions for some meridians. Values: longitude, min latitude, max latitude\n private val SPECIAL_MERIDIANS = arrayOf(\n intArrayOf(3, 56, 64), intArrayOf(6, 64, 72), intArrayOf(9, 72, 84), intArrayOf(21, 72, 84), intArrayOf(33, 72, 84)\n )\n\n // Latitude bands letters - from south to north\n private const val LAT_BANDS = \"CDEFGHJKLMNPQRSTUVWX\"\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.geom.coords.UPSCoord\nimport earth.worldwind.geom.coords.UTMCoord\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.layer.graticule.utm.AbstractUTMGraticuleLayer.Companion.UTM_MAX_LATITUDE\nimport earth.worldwind.layer.graticule.utm.AbstractUTMGraticuleLayer.Companion.UTM_MIN_LATITUDE\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.log10\nimport kotlin.math.pow\n\ninternal class UTMMetricScaleSupport(private val layer: AbstractUTMGraticuleLayer) {\n private class UTMExtremes {\n var minX = 1e6\n var maxX = 0.0\n var minY = 10e6\n var maxY = 0.0\n var minYHemisphere = Hemisphere.N\n var maxYHemisphere = Hemisphere.S\n }\n\n var scaleModulo = 10000000\n var maxResolution = 1e5\n set(value) {\n field = value\n clear()\n }\n var zone = 0\n private set\n\n // 5 levels 100km to 10m\n private lateinit var extremes: Array\n\n fun computeZone(rc: RenderContext) {\n try {\n rc.lookAtPosition?.let {\n zone = if (it.latitude.inDegrees in UTM_MIN_LATITUDE..UTM_MAX_LATITUDE) {\n val utm = UTMCoord.fromLatLon(it.latitude, it.longitude)\n utm.zone\n } else 0\n }\n } catch (ex: Exception) {\n zone = 0\n }\n }\n\n fun clear() {\n val numLevels = log10(maxResolution).toInt()\n extremes = Array(numLevels) { UTMExtremes() }\n }\n\n fun computeMetricScaleExtremes(UTMZone: Int, hemisphere: Hemisphere, ge: GridElement, size: Double) {\n if (UTMZone != zone) return\n if (size < 1 || size > maxResolution) return\n val levelExtremes = extremes[log10(size).toInt() - 1]\n if (ge.type == TYPE_LINE_EASTING || ge.type == TYPE_LINE_EAST || ge.type == TYPE_LINE_WEST) {\n levelExtremes.minX = ge.value.inDegrees.coerceAtMost(levelExtremes.minX)\n levelExtremes.maxX = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxX)\n } else if (ge.type == TYPE_LINE_NORTHING || ge.type == TYPE_LINE_SOUTH || ge.type == TYPE_LINE_NORTH) {\n if (hemisphere == levelExtremes.minYHemisphere) {\n levelExtremes.minY = ge.value.inDegrees.coerceAtMost(levelExtremes.minY)\n } else if (hemisphere == Hemisphere.S) {\n levelExtremes.minY = ge.value.inDegrees\n levelExtremes.minYHemisphere = hemisphere\n }\n if (hemisphere == levelExtremes.maxYHemisphere) {\n levelExtremes.maxY = ge.value.inDegrees.coerceAtLeast(levelExtremes.maxY)\n } else if (hemisphere == Hemisphere.N) {\n levelExtremes.maxY = ge.value.inDegrees\n levelExtremes.maxYHemisphere = hemisphere\n }\n }\n }\n\n fun selectRenderables(rc: RenderContext) {\n val lookAtPosition = rc.lookAtPosition ?: return\n\n // Compute easting and northing label offsets\n val eastingOffset = rc.viewport.width * rc.pixelSize * OFFSET_FACTOR_X / 2\n val northingOffset = rc.viewport.height * rc.pixelSize * OFFSET_FACTOR_Y / 2\n // Derive labels center pos from the view center\n val labelEasting: Double\n var labelNorthing: Double\n var labelHemisphere: Hemisphere\n if (zone > 0) {\n val utm = UTMCoord.fromLatLon(lookAtPosition.latitude, lookAtPosition.longitude)\n labelEasting = utm.easting + eastingOffset\n labelNorthing = utm.northing + northingOffset\n labelHemisphere = utm.hemisphere\n if (labelNorthing < 0) {\n labelNorthing += 10e6\n labelHemisphere = Hemisphere.S\n }\n } else {\n val ups = UPSCoord.fromLatLon(lookAtPosition.latitude, lookAtPosition.longitude)\n labelEasting = ups.easting + eastingOffset\n labelNorthing = ups.northing + northingOffset\n labelHemisphere = ups.hemisphere\n }\n val viewFrustum = rc.frustum\n var labelPos: Position?\n for (i in extremes.indices) {\n val levelExtremes = extremes[i]\n val gridStep = 10.0.pow(i.toDouble())\n val gridStepTimesTen = gridStep * 10\n val graticuleType = layer.getTypeFor(gridStep)\n if (levelExtremes.minX <= levelExtremes.maxX) {\n // Process easting scale labels for this level\n var easting = levelExtremes.minX\n while (easting <= levelExtremes.maxX) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || easting % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, labelHemisphere, easting, labelNorthing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text = (easting % scaleModulo / gridStep).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n gt.attributes.isOutlineEnabled = false\n layer.addRenderable(gt, graticuleType)\n }\n }\n easting += gridStep\n }\n }\n if (!(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)) {\n // Process northing scale labels for this level\n var currentHemisphere = levelExtremes.minYHemisphere\n var northing = levelExtremes.minY\n while (northing <= levelExtremes.maxY || currentHemisphere != levelExtremes.maxYHemisphere) {\n // Skip multiples of ten grid steps except for last (higher) level\n if (i == extremes.size - 1 || northing % gridStepTimesTen != 0.0) {\n labelPos = layer.computePosition(zone, currentHemisphere, labelEasting, northing)\n val lat = labelPos.latitude\n val lon = labelPos.longitude\n val surfacePoint = layer.getSurfacePoint(rc, lat, lon)\n if (viewFrustum.containsPoint(surfacePoint) && isPointInRange(rc, surfacePoint)) {\n val text = (northing % scaleModulo / gridStep).toInt().toString()\n val gt = layer.createTextRenderable(\n Position(lat, lon, 0.0), text, gridStepTimesTen\n )\n gt.attributes.isOutlineEnabled = false\n layer.addRenderable(gt, graticuleType)\n }\n if (currentHemisphere != levelExtremes.maxYHemisphere && northing >= 10e6 - gridStep) {\n // Switch hemisphere\n currentHemisphere = levelExtremes.maxYHemisphere\n northing = -gridStep\n }\n }\n northing += gridStep\n }\n }\n }\n }\n\n private fun isPointInRange(rc: RenderContext, point: Vec3): Boolean {\n val altitudeAboveGround = layer.computeAltitudeAboveGround(rc)\n return rc.cameraPoint.distanceTo(point) < altitudeAboveGround * VISIBLE_DISTANCE_FACTOR\n }\n\n override fun toString(): String {\n val sb = StringBuilder()\n for (i in 0..4) {\n sb.append(\"level \")\n sb.append(i)\n sb.append(\" : \")\n val levelExtremes = extremes[i]\n if (levelExtremes.minX < levelExtremes.maxX ||\n !(levelExtremes.maxYHemisphere == Hemisphere.S && levelExtremes.maxY == 0.0)\n ) {\n sb.append(levelExtremes.minX)\n sb.append(\", \")\n sb.append(levelExtremes.maxX)\n sb.append(\" - \")\n sb.append(levelExtremes.minY)\n sb.append(levelExtremes.minYHemisphere)\n sb.append(\", \")\n sb.append(levelExtremes.maxY)\n sb.append(levelExtremes.maxYHemisphere)\n } else {\n sb.append(\"empty\")\n }\n sb.append(\"\\n\")\n }\n return sb.toString()\n }\n\n companion object {\n private const val OFFSET_FACTOR_X = -.5\n private const val OFFSET_FACTOR_Y = -.5\n private const val VISIBLE_DISTANCE_FACTOR = 5.0\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EASTING\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTHING\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\n\n/**\n * Represent a square 10x10 grid and recursive tree in easting/northing coordinates\n */\ninternal class UTMSquareGrid(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n private var subGrids: List? = null\n\n override fun isInView(rc: RenderContext) = super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS * 4\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(size / 10)\n for (ge in gridElements) if (ge.isInView(rc)) {\n layer.computeMetricScaleExtremes(UTMZone, hemisphere, ge, size)\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 4 * 2) return\n\n // Select sub grids renderables\n val subGrids = subGrids ?: createSubGrids().also { subGrids = it }\n for (sg in subGrids) if (sg.isInView(rc)) sg.selectRenderables(rc) else sg.clearRenderables()\n }\n\n override fun clearRenderables() {\n super.clearRenderables()\n subGrids?.forEach { it.clearRenderables() }.also { subGrids = null }\n }\n\n private fun createSubGrids(): List {\n val subGrids = mutableListOf()\n val gridStep = size / 10\n for (i in 0..9) {\n val easting = SWEasting + gridStep * i\n for (j in 0..9) {\n val northing = SWNorthing + gridStep * j\n val sg = UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, easting, northing, gridStep)\n if (!sg.isOutsideGridZone) subGrids.add(sg)\n }\n }\n return subGrids\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val gridStep = size / 10\n val positions = mutableListOf()\n\n // South-North lines\n for (i in 1..9) {\n val easting = SWEasting + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing)\n var p2 = layer.computePosition(UTMZone, hemisphere, easting, SWNorthing + size)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(\n GridElement(lineSector, polyline, TYPE_LINE_EASTING, easting.degrees)\n )\n }\n }\n // West-East lines\n for (i in 1..9) {\n val northing = SWNorthing + gridStep * i\n positions.clear()\n var p1 = layer.computePosition(UTMZone, hemisphere, SWEasting, northing)\n var p2 = layer.computePosition(UTMZone, hemisphere, SWEasting + size, northing)\n if (isTruncated) {\n layer.computeTruncatedSegment(p1, p2, UTMZoneSector, positions)\n } else {\n positions.add(p1)\n positions.add(p2)\n }\n if (positions.size > 0) {\n p1 = positions[0]\n p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTHING, northing.degrees))\n }\n }\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.NEG180\nimport earth.worldwind.geom.Angle.Companion.NEG90\nimport earth.worldwind.geom.Angle.Companion.POS180\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.AbstractGraticuleTile\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.sign\n\n/**\n * Represent a generic UTM/UPS square area\n */\nabstract class UTMSquareSector(\n layer: AbstractUTMGraticuleLayer, val UTMZone: Int, val hemisphere: Hemisphere,\n val UTMZoneSector: Sector, val SWEasting: Double, val SWNorthing: Double, val size: Double\n): AbstractGraticuleTile(layer, Sector()) {\n val squareCenter = layer.computePosition(UTMZone, hemisphere, SWEasting + size / 2, SWNorthing + size / 2)\n // Four corners position\n var sw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing)\n var se = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing)\n var nw = layer.computePosition(UTMZone, hemisphere, SWEasting, SWNorthing + size)\n var ne = layer.computePosition(UTMZone, hemisphere, SWEasting + size, SWNorthing + size)\n var boundingSector = boundingSector(adjustDateLineCrossingPoints()).apply { if (!isInsideGridZone) intersect(UTMZoneSector) }.also { sector.copy(it) }\n var centroid = boundingSector.centroid(Location())\n val isTruncated = !isInsideGridZone\n override val layer get() = super.layer as AbstractUTMGraticuleLayer\n /**\n * Determines whether this square is fully inside its parent grid zone.\n */\n private val isInsideGridZone get() = isPositionInside(nw) && isPositionInside(ne) && isPositionInside(sw) && isPositionInside(se)\n /**\n * Determines whether this square is fully outside its parent grid zone.\n */\n val isOutsideGridZone = !isPositionInside(nw) && !isPositionInside(ne) && !isPositionInside(sw) && !isPositionInside(se)\n\n private fun adjustDateLineCrossingPoints(): Iterable {\n val corners = listOf(sw, se, nw, ne)\n if (!locationsCrossDateLine(corners)) return corners\n\n var lonSign = 0.0\n for (corner in corners) if (abs(corner.longitude.inDegrees) != 180.0) lonSign = sign(corner.longitude.inDegrees)\n if (lonSign == 0.0) return corners\n\n if (abs(sw.longitude.inDegrees) == 180.0 && sign(sw.longitude.inDegrees) != lonSign)\n sw = Position(sw.latitude, -sw.longitude, sw.altitude)\n if (abs(se.longitude.inDegrees) == 180.0 && sign(se.longitude.inDegrees) != lonSign)\n se = Position(se.latitude, -se.longitude, se.altitude)\n if (abs(nw.longitude.inDegrees) == 180.0 && sign(nw.longitude.inDegrees) != lonSign)\n nw = Position(nw.latitude, -nw.longitude, nw.altitude)\n if (abs(ne.longitude.inDegrees) == 180.0 && sign(ne.longitude.inDegrees) != lonSign)\n ne = Position(ne.latitude, -ne.longitude, ne.altitude)\n\n return listOf(sw, se, nw, ne)\n }\n\n private fun locationsCrossDateLine(locations: Iterable): Boolean {\n var pos: Location? = null\n for (posNext in locations) {\n if (pos != null) {\n // A segment cross the line if end pos have different longitude signs\n // and are more than 180 degrees longitude apart\n if (sign(pos.longitude.inDegrees) != sign(posNext.longitude.inDegrees)) {\n val delta = abs(pos.longitude.inDegrees - posNext.longitude.inDegrees)\n if (delta > 180 && delta < 360) return true\n }\n }\n pos = posNext\n }\n return false\n }\n\n private fun boundingSector(locations: Iterable): Sector {\n var minLat = POS90\n var minLon = POS180\n var maxLat = NEG90\n var maxLon = NEG180\n for (p in locations) {\n val lat = p.latitude\n if (lat.inDegrees < minLat.inDegrees) minLat = lat\n if (lat.inDegrees > maxLat.inDegrees) maxLat = lat\n val lon = p.longitude\n if (lon.inDegrees < minLon.inDegrees) minLon = lon\n if (lon.inDegrees > maxLon.inDegrees) maxLon = lon\n }\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun boundingSector(pA: Location, pB: Location): Sector {\n var minLat = pA.latitude\n var minLon = pA.longitude\n var maxLat = pA.latitude\n var maxLon = pA.longitude\n if (pB.latitude.inDegrees < minLat.inDegrees) minLat = pB.latitude\n else if (pB.latitude.inDegrees > maxLat.inDegrees) maxLat = pB.latitude\n if (pB.longitude.inDegrees < minLon.inDegrees) minLon = pB.longitude\n else if (pB.longitude.inDegrees > maxLon.inDegrees) maxLon = pB.longitude\n return Sector(minLat, maxLat, minLon, maxLon)\n }\n\n fun isPositionInside(position: Location) = UTMZoneSector.contains(position)\n\n override fun getSizeInPixels(rc: RenderContext): Double {\n val centerPoint = layer.getSurfacePoint(rc, centroid.latitude, centroid.longitude)\n val distance = rc.cameraPoint.distanceTo(centerPoint)\n return size / rc.pixelSizeAtDistance(distance) / rc.densityFactor\n }\n\n companion object {\n const val MIN_CELL_SIZE_PIXELS = 100\n }\n}","package earth.worldwind.layer.graticule.utm\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.coords.Hemisphere\nimport earth.worldwind.layer.graticule.GridElement\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_GRIDZONE_LABEL\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_EAST\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_NORTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_SOUTH\nimport earth.worldwind.layer.graticule.GridElement.Companion.TYPE_LINE_WEST\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.shape.PathType\nimport kotlin.math.cos\n\n/**\n * Represent a 100km square zone inside an UTM zone.\n */\nclass UTMSquareZone(\n layer: AbstractUTMGraticuleLayer, UTMZone: Int, hemisphere: Hemisphere, UTMZoneSector: Sector,\n SWEasting: Double, SWNorthing: Double, size: Double\n): UTMSquareSector(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size) {\n var name: String? = null\n var northNeighbor: UTMSquareZone? = null\n var eastNeighbor: UTMSquareZone? = null\n private var squareGrid: UTMSquareGrid? = null\n\n override fun isInView(rc: RenderContext) = super.isInView(rc) && getSizeInPixels(rc) > MIN_CELL_SIZE_PIXELS\n\n override fun selectRenderables(rc: RenderContext) {\n super.selectRenderables(rc)\n val graticuleType = layer.getTypeFor(size)\n for (ge in gridElements) if (ge.isInView(rc)) {\n if (ge.type == TYPE_LINE_NORTH && isNorthNeighborInView(rc)) continue\n if (ge.type == TYPE_LINE_EAST && isEastNeighborInView(rc)) continue\n layer.addRenderable(ge.renderable, graticuleType)\n }\n if (getSizeInPixels(rc) <= MIN_CELL_SIZE_PIXELS * 2) return\n\n // Select grid renderables\n val squareGrid = squareGrid ?: UTMSquareGrid(layer, UTMZone, hemisphere, UTMZoneSector, SWEasting, SWNorthing, size).also { squareGrid = it }\n if (squareGrid.isInView(rc)) squareGrid.selectRenderables(rc) else squareGrid.clearRenderables()\n }\n\n private fun isNorthNeighborInView(rc: RenderContext) = northNeighbor?.isInView(rc) == true\n\n private fun isEastNeighborInView(rc: RenderContext) = eastNeighbor?.isInView(rc) == true\n\n override fun clearRenderables() {\n super.clearRenderables()\n squareGrid?.clearRenderables()\n squareGrid = null\n }\n\n override fun createRenderables() {\n super.createRenderables()\n val positions = mutableListOf()\n\n // left segment\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, nw, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(nw)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_WEST, SWEasting.degrees))\n }\n\n // right segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(se, ne, UTMZoneSector, positions)\n } else {\n positions.add(se)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_EAST, (SWEasting + size).degrees))\n }\n\n // bottom segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(sw, se, UTMZoneSector, positions)\n } else {\n positions.add(sw)\n positions.add(se)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_SOUTH, SWNorthing.degrees))\n }\n\n // top segment\n positions.clear()\n if (isTruncated) {\n layer.computeTruncatedSegment(nw, ne, UTMZoneSector, positions)\n } else {\n positions.add(nw)\n positions.add(ne)\n }\n if (positions.size > 0) {\n val p1 = positions[0]\n val p2 = positions[1]\n val polyline = layer.createLineRenderable(ArrayList(positions), PathType.GREAT_CIRCLE)\n val lineSector = boundingSector(p1, p2)\n gridElements.add(GridElement(lineSector, polyline, TYPE_LINE_NORTH, (SWNorthing + size).degrees))\n }\n\n // Label\n name?.let { name ->\n // Only add a label to squares above some dimension\n if (boundingSector.deltaLongitude.inDegrees * cos(centroid.latitude.inRadians) > .2\n && boundingSector.deltaLatitude.inDegrees > .2\n ) {\n val labelPos = if (UTMZone != 0) centroid // Not at poles\n else if (isPositionInside(Position(squareCenter.latitude, squareCenter.longitude, 0.0))) squareCenter\n else if (squareCenter.latitude.inDegrees <= UTMZoneSector.maxLatitude.inDegrees\n && squareCenter.latitude.inDegrees >= UTMZoneSector.minLatitude.inDegrees) centroid\n else null\n if (labelPos != null) {\n val text = layer.createTextRenderable(\n Position(labelPos.latitude, labelPos.longitude, 0.0), name, size * 10\n )\n gridElements.add(GridElement(boundingSector, text, TYPE_GRIDZONE_LABEL))\n }\n }\n }\n }\n}","package earth.worldwind.layer.heatmap\n\nimport earth.worldwind.draw.DrawableHeatmap\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\n\nopen class ElevationHeatmapLayer: AbstractLayer(\"Elevation Heatmap\") {\n override var isPickEnabled = false // Elevation Heatmap is not pickable\n override var opacity = 0.5f // Elevation Heatmap is semi-transparent by default\n /**\n * RGB colors for five thresholds of heatmap\n */\n val colors = arrayOf(\n Color(0.0f, 0.0f, 1.0f), // 0% - Blue\n Color(0.0f, 1.0f, 1.0f), // 25% - Cyan\n Color(0.0f, 1.0f, 0.0f), // 50% - Green\n Color(1.0f, 1.0f, 0.0f), // 75% - Yellow\n Color(1.0f, 0.0f, 0.0f) // 100% - Red\n )\n /**\n * Auto determines height limits from available terrain tiles. If false, then limits should be specified manually.\n */\n var autoHeightLimits = true\n /**\n * Configurable offset from maximal available terrain tile level to take into account when calculating height limits\n */\n var levelNumberDepth = 3\n /**\n * Last automatically calculated or manually specified min and max height limits\n */\n val heightLimits = FloatArray(2)\n\n override fun doRender(rc: RenderContext) {\n if (autoHeightLimits) rc.terrain.heightLimits(levelNumberDepth, heightLimits)\n\n val pool = rc.getDrawablePool()\n val drawable = DrawableHeatmap.obtain(pool)\n heightLimits.copyInto(drawable.heightLimits)\n drawable.colors.forEachIndexed { i, color -> color.copy(colors[i]) }\n drawable.opacity = opacity\n drawable.offset = rc.globe.offset\n drawable.program = rc.getShaderProgram { ElevationHeatmapProgram() }\n rc.offerSurfaceDrawable(drawable, 0.0)\n }\n}\n","package earth.worldwind.layer.heatmap\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n// TODO Try accumulating tile state (texCoordMatrix, texSampler), loading uniforms once, then loading a uniform index\n// TODO to select the state for a surface tile. This reduces the uniform calls when many surface tiles intersect\n// TODO one terrain tile.\n// TODO Try class representing transform with a specific scale+translate object that can be uploaded to a GLSL vec4\nopen class ElevationHeatmapProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform float scale;\n uniform float offset;\n\n attribute vec4 vertexPoint;\n attribute float vertexHeight;\n\n varying float height;\n\n void main() {\n height = vertexHeight * scale + offset;\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n #else\n precision mediump float;\n #endif\n\n uniform vec3 color0;\n uniform vec3 color1;\n uniform vec3 color2;\n uniform vec3 color3;\n uniform vec3 color4;\n uniform float opacity;\n\n varying float height;\n\n void main() {\n vec3 overlay;\n overlay = mix(color0, color1, clamp(height * 4.0, 0.0, 1.0));\n overlay = mix(overlay, color2, clamp(height * 4.0 - 1.0, 0.0, 1.0));\n overlay = mix(overlay, color3, clamp(height * 4.0 - 2.0, 0.0, 1.0));\n overlay = mix(overlay, color4, clamp(height * 4.0 - 3.0, 0.0, 1.0));\n gl_FragColor = vec4(overlay * opacity, opacity);\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n val mvpMatrix = Matrix4()\n protected var scaleId = KglUniformLocation.NONE\n protected var offsetId = KglUniformLocation.NONE\n protected var color0Id = KglUniformLocation.NONE\n protected var color1Id = KglUniformLocation.NONE\n protected var color2Id = KglUniformLocation.NONE\n protected var color3Id = KglUniformLocation.NONE\n protected var color4Id = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n private val mvpMatrixArray = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n scaleId = gl.getUniformLocation(program, \"scale\")\n gl.uniform1f(scaleId, 0f)\n offsetId = gl.getUniformLocation(program, \"offset\")\n gl.uniform1f(offsetId, 0f)\n color0Id = gl.getUniformLocation(program, \"color0\")\n gl.uniform3f(color0Id, 0f, 0f, 0f)\n color1Id = gl.getUniformLocation(program, \"color1\")\n gl.uniform3f(color1Id, 0f, 0f, 0f)\n color2Id = gl.getUniformLocation(program, \"color2\")\n gl.uniform3f(color2Id, 0f, 0f, 0f)\n color3Id = gl.getUniformLocation(program, \"color3\")\n gl.uniform3f(color3Id, 0f, 0f, 0f)\n color4Id = gl.getUniformLocation(program, \"color4\")\n gl.uniform3f(color4Id, 0f, 0f, 0f)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, 0f)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(mvpMatrixArray, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n\n fun setLimits(limits: FloatArray) {\n val delta = limits[1] - limits[0]\n gl.uniform1f(scaleId, if (delta != 0.0f) 1.0f / delta else 0.0f)\n gl.uniform1f(offsetId, if (delta != 0.0f) -limits[0] / delta else 0.0f)\n }\n\n fun setColors(colors: Array) {\n gl.uniform3f(color0Id, colors[0].red, colors[0].green, colors[0].blue)\n gl.uniform3f(color1Id, colors[1].red, colors[1].green, colors[1].blue)\n gl.uniform3f(color2Id, colors[2].red, colors[2].green, colors[2].blue)\n gl.uniform3f(color3Id, colors[3].red, colors[3].green, colors[3].blue)\n gl.uniform3f(color4Id, colors[4].red, colors[4].green, colors[4].blue)\n }\n\n fun setOpacity(opacity: Float) {\n gl.uniform1f(opacityId, opacity)\n }\n\n fun loadModelviewProjection() {\n mvpMatrix.transposeToArray(mvpMatrixArray, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.average\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.fromSector\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Tile\nimport earth.worldwind.util.TileFactory\nimport kotlin.jvm.JvmStatic\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nabstract class AbstractMercatorImageTile(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): ImageTile(sector, level, row, column) {\n companion object {\n /**\n * Creates all Mercator tiles for a specified level within a LevelSet.\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result a pre-allocated Collection in which to store the results\n */\n @JvmStatic\n fun assembleMercatorTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList): List {\n val sector = fromSector(level.parent.sector)\n val tileOrigin = level.parent.tileOrigin\n val dLat = level.tileDelta.latitude\n val dLon = level.tileDelta.longitude\n val firstRow = computeRow(dLat, sector.minLatitude, tileOrigin.minLatitude)\n val lastRow = computeLastRow(dLat, sector.maxLatitude, tileOrigin.minLatitude)\n val firstCol = computeColumn(dLon, sector.minLongitude, tileOrigin.minLongitude)\n val lastCol = computeLastColumn(dLon, sector.maxLongitude, tileOrigin.minLongitude)\n val dLatPercent = dLat.inDegrees / sector.deltaLatitude.inDegrees * (sector.maxLatPercent - sector.minLatPercent)\n val firstRowPercent = gudermannianInverse(tileOrigin.minLatitude) + firstRow * dLatPercent\n val firstColLon = tileOrigin.minLongitude.plusDegrees(firstCol * dLon.inDegrees)\n var d1 = firstRowPercent\n for (row in firstRow..lastRow) {\n val d2 = d1 + dLatPercent\n var t1 = firstColLon\n for (col in firstCol..lastCol) {\n val t2 = t1 + dLon\n result.add(tileFactory.createTile(MercatorSector(d1, d2, t1, t2), level, row, col))\n t1 = t2\n }\n d1 = d2\n }\n return result\n }\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its LevelSet.\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n override fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n val sector = sector as MercatorSector\n val d0 = sector.minLatPercent\n val d2 = sector.maxLatPercent\n val d1 = d0 + (d2 - d0) / 2.0\n val t0 = sector.minLongitude\n val t2 = sector.maxLongitude\n val t1 = average(t0, t2)\n val northRow = 2 * row\n val southRow = northRow + 1\n val westCol = 2 * column\n val eastCol = westCol + 1\n val child0 = tileFactory.createTile(MercatorSector(d0, d1, t0, t1), childLevel, northRow, westCol)\n val child1 = tileFactory.createTile(MercatorSector(d0, d1, t1, t2), childLevel, northRow, eastCol)\n val child2 = tileFactory.createTile(MercatorSector(d1, d2, t0, t1), childLevel, southRow, westCol)\n val child3 = tileFactory.createTile(MercatorSector(d1, d2, t1, t2), childLevel, southRow, eastCol)\n return arrayOf(child0, child1, child2, child3)\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.fromDegrees\nimport earth.worldwind.geom.Angle.Companion.fromRadians\nimport earth.worldwind.geom.Sector\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.*\n\nopen class MercatorSector(\n val minLatPercent: Double = -1.0, val maxLatPercent: Double = 1.0,\n minLongitude: Angle = Angle.NEG180, maxLongitude: Angle = Angle.POS180\n): Sector(gudermannian(minLatPercent), gudermannian(maxLatPercent), minLongitude, maxLongitude) {\n companion object {\n @JvmStatic\n fun fromDegrees(\n minLatPercent: Double, maxLatPercent: Double, minLonDegrees: Double, maxLonDegrees: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromDegrees(minLonDegrees), fromDegrees(maxLonDegrees)\n )\n\n @JvmStatic\n fun fromRadians(\n minLatPercent: Double, maxLatPercent: Double, minLonRadians: Double, maxLonRadians: Double\n ) = MercatorSector(\n minLatPercent, maxLatPercent, fromRadians(minLonRadians), fromRadians(maxLonRadians)\n )\n\n @JvmStatic\n fun fromSector(sector: Sector) = MercatorSector(\n gudermannianInverse(sector.minLatitude), gudermannianInverse(sector.maxLatitude),\n sector.minLongitude, sector.maxLongitude\n )\n\n @JvmStatic\n fun gudermannianInverse(latitude: Angle) = ln(tan(PI / 4.0 + latitude.inRadians / 2.0)) / PI\n\n @JvmStatic\n fun gudermannian(percent: Double) = fromRadians(atan(sinh(percent * PI)))\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.render.image.ImageConfig\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.util.LevelSet\n\nopen class MercatorTiledImageLayer(\n name: String? = null, tiledSurfaceImage: MercatorTiledSurfaceImage? = null\n): TiledImageLayer(name, tiledSurfaceImage) {\n override fun clone() = MercatorTiledImageLayer(displayName, tiledSurfaceImage?.clone() as MercatorTiledSurfaceImage)\n\n companion object {\n fun buildTiledSurfaceImage(\n tileFactory: MercatorTileFactory, numLevels: Int = 22, tileSize: Int = 256, transparent: Boolean = false, levelOffset: Int = 1\n ): MercatorTiledSurfaceImage {\n val sector = MercatorSector()\n val tileOrigin = MercatorSector()\n val firstLevelDelta = Location(tileOrigin.deltaLatitude, tileOrigin.deltaLongitude)\n // Skip 1 topmost level with bad resolution from processing\n val levelSet = LevelSet(sector, tileOrigin, firstLevelDelta, numLevels, tileSize, tileSize, levelOffset)\n return MercatorTiledSurfaceImage(tileFactory, levelSet).apply {\n // Reduce memory usage by using a 16-bit configuration with no alpha\n if (!transparent) imageOptions = ImageOptions(ImageConfig.RGB_565)\n }\n }\n }\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.TileFactory\n\nopen class MercatorTiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet) : TiledSurfaceImage(tileFactory, levelSet) {\n override fun clone() = MercatorTiledSurfaceImage(tileFactory, levelSet).also {\n it.imageOptions = imageOptions\n }\n\n override fun createTopLevelTiles() =\n AbstractMercatorImageTile.assembleMercatorTilesForLevel(levelSet.firstLevel, tileFactory, topLevelTiles)\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.layer.WebImageLayer\nimport earth.worldwind.layer.mercator.MercatorTiledImageLayer.Companion.buildTiledSurfaceImage\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.locale.language\nimport kotlin.random.Random\n\nobject WebMercatorLayerFactory {\n const val SERVICE_TYPE = \"XYZ\"\n private const val OPEN_BRACKET = '{'\n private const val CLOSED_BRACKET = '}'\n private const val I_EXPRESSION = \"{i}\"\n private const val X_COORDINATE = \"{x}\"\n private const val Y_COORDINATE = \"{y}\"\n private const val Z_COORDINATE = \"{z}\"\n private const val LANGUAGE = \"{lang}\"\n private const val RAND_PREFIX = \"{rand=\"\n\n fun createLayer(\n urlTemplate: String, imageFormat: String = \"image/png\", transparent: Boolean = false,\n name: String? = null, numLevels: Int = 22, tileSize: Int = 256, levelOffset: Int = 1\n ): MercatorTiledImageLayer {\n val urlParts = parseUrl(urlTemplate)\n val randomValue = urlParts.find { it.startsWith(RAND_PREFIX) }\n val randomValues = randomValue?.removeSurrounding(RAND_PREFIX, \"}\")?.split(\",\")\n val tileFactory = object : MercatorTileFactory {\n override val contentType = \"Web Mercator\"\n\n override fun getImageSource(x: Int, y: Int, z: Int): ImageSource {\n val resultServerUrl = StringBuilder()\n urlParts.forEach {\n resultServerUrl.append(\n when (it) {\n X_COORDINATE -> x\n Y_COORDINATE -> y\n Z_COORDINATE -> z\n LANGUAGE -> language\n randomValue -> randomValues?.get(Random.nextInt(randomValues.size))\n I_EXPRESSION -> x % 4 + y % 4 * 4\n else -> it\n }\n )\n }\n return ImageSource.fromUrlString(resultServerUrl.toString())\n }\n }\n val tiledSurfaceImage = buildTiledSurfaceImage(tileFactory, numLevels, tileSize, transparent, levelOffset)\n return object : MercatorTiledImageLayer(name, tiledSurfaceImage), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n override val serviceAddress = urlTemplate\n override val imageFormat = imageFormat\n override val isTransparent = transparent\n }\n }\n\n private fun parseUrl(serverUrl: String): List {\n val result = mutableListOf()\n val builder = StringBuilder()\n serverUrl.toCharArray().forEachIndexed { index, char ->\n if (char == OPEN_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n builder.append(char)\n if (char == CLOSED_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n if (index == serverUrl.length - 1 && char != CLOSED_BRACKET) {\n result.add(builder.toString())\n builder.clear()\n }\n }\n return result\n }\n}","package earth.worldwind.layer.starfield\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.MR\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawableStarField\nimport earth.worldwind.layer.AbstractLayer\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.SunPosition\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport kotlinx.datetime.Clock\nimport kotlinx.datetime.Instant\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.json.Json\n\n/**\n * Constructs a layer showing stars and the Sun around the Earth.\n * If used together with the AtmosphereLayer, the StarFieldLayer must be inserted before the AtmosphereLayer.\n *\n * If you want to use your own star data, the file provided must be .json\n * and the fields \"ra\", \"dec\" and \"vmag\" must be present in the metadata.\n * ra and dec must be expressed in degrees.\n *\n * This layer uses J2000.0 as the ref epoch.\n *\n * If the star data .json file is too big, consider enabling gzip compression on your web server.\n * For more info about enabling gzip compression consult the configuration for your web server.\n */\nopen class StarFieldLayer(starDataSource: FileResource = MR.files.stars_json): AbstractLayer(\"StarField\") {\n override var isPickEnabled = false // The StarField Layer is not pickable.\n /**\n * Resource for the stars data\n */\n var starDataSource = starDataSource\n set(value) {\n field = value\n invalidateStarData()\n }\n /**\n * Resource for the sun texture image.\n */\n var sunImageSource = ImageSource.fromResource(MR.images.sun_texture)\n /**\n * The size of the Sun in pixels.\n * This can not exceed the maximum allowed pointSize of the GPU.\n * A warning will be given if the size is too big and the allowed max size will be used.\n */\n var sunSize = 128f\n /**\n * Indicates weather to show or hide the Sun\n */\n var isShowSun = true\n /**\n * Display star field on a specified time point. If null, then current time will be used each frame.\n */\n var time : Instant? = null\n protected var starsPositionsVboCacheKey = nextCacheKey() //gpu cache key for the stars vbo.\n protected var numStars = 0\n protected var starData: StarData? = null\n protected var minMagnitude = Float.MAX_VALUE\n protected var maxMagnitude = Float.MIN_VALUE\n protected var sunBufferViewHashCode = 0\n /**\n * A flag to indicate the star data is currently being retrieved.\n */\n protected var loadStarted = false\n protected val minScale = 10e6\n protected var sunPositionsCacheKey = nextCacheKey()\n protected val sunBufferView = FloatArray(4)\n\n protected fun nextCacheKey() = Any()\n\n protected open fun invalidateStarData() {\n starData = null\n starsPositionsVboCacheKey = nextCacheKey()\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.globe.is2D) return // Star Field layer is not applicable for 2D globe\n\n loadStarData(rc)\n\n val starData = starData ?: return // Star data is not loaded yet\n val time = time ?: Clock.System.now()\n val pool = rc.getDrawablePool()\n val drawable = DrawableStarField.obtain(pool)\n\n // Render Star Field\n drawable.starsPositionsBuffer = rc.getBufferObject(starsPositionsVboCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, createStarsGeometry(starData, rc))\n }\n // Number of days since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n drawable.julianDate = SunPosition.computeJulianDate(time)\n drawable.minMagnitude = minMagnitude\n drawable.maxMagnitude = maxMagnitude\n drawable.numStars = numStars\n drawable.matrix.copy(rc.modelviewProjection)\n val scale = (rc.camera.position.altitude * 1.5).coerceAtLeast(minScale)\n drawable.matrix.multiplyByScale(scale, scale, scale)\n\n // Render The Sun\n drawable.isShowSun = isShowSun\n if (drawable.isShowSun) {\n drawable.sunTexture = rc.getTexture(sunImageSource, null)\n if (drawable.sunTexture != null) {\n drawable.sunSize = sunSize\n\n val sunCelestialLocation = SunPosition.getAsCelestialLocation(time)\n\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n sunBufferView[0] = sunCelestialLocation.declination.inDegrees.toFloat()\n sunBufferView[1] = sunCelestialLocation.rightAscension.inDegrees.toFloat()\n sunBufferView[2] = sunSize.coerceAtMost(DrawableStarField.maxGlPointSize)\n sunBufferView[3] = 1f\n\n val hashCode = sunBufferView.contentHashCode()\n if (sunBufferViewHashCode != hashCode) {\n sunBufferViewHashCode = hashCode\n sunPositionsCacheKey = nextCacheKey()\n }\n drawable.sunPositionsBuffer = rc.getBufferObject(sunPositionsCacheKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, sunBufferView)\n }\n }\n }\n\n drawable.program = rc.getShaderProgram { StarFieldProgram() }\n rc.offerBackgroundDrawable(drawable)\n }\n\n protected open fun loadStarData(rc: RenderContext) {\n if (starData == null && !loadStarted) {\n loadStarted = true\n rc.renderResourceCache.retrieveTextFile(starDataSource) {\n starData = Json.decodeFromString(it)\n loadStarted = false\n WorldWind.requestRedraw()\n }\n }\n }\n\n protected open fun createStarsGeometry(starData: StarData, rc: RenderContext): FloatArray {\n val indexes = parseStarsMetadata(starData.metadata)\n require(indexes[0] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing ra field in star data.\")\n }\n require(indexes[1] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing dec field in star data.\")\n }\n require(indexes[2] != -1) {\n logMessage(ERROR, \"StarFieldLayer\", \"createStarsGeometry\", \"Missing vmag field in star data.\")\n }\n\n numStars = starData.data.size\n minMagnitude = Float.MAX_VALUE\n maxMagnitude = Float.MIN_VALUE\n\n val positions = FloatArray(numStars * 4)\n var positionIndex = 0\n for (i in starData.data.indices) {\n val starInfo = starData.data[i]\n val rightAscension = starInfo[indexes[0]] //for longitude\n val declination = starInfo[indexes[1]] //for latitude\n val magnitude = starInfo[indexes[2]]\n val pointSize = if (magnitude < 2) 2f else 1f\n\n positions[positionIndex++] = declination\n positions[positionIndex++] = rightAscension\n positions[positionIndex++] = pointSize * rc.densityFactor\n positions[positionIndex++] = magnitude\n\n minMagnitude = minMagnitude.coerceAtMost(magnitude)\n maxMagnitude = maxMagnitude.coerceAtLeast(magnitude)\n }\n\n return positions\n }\n\n protected open fun parseStarsMetadata(metadata: List): Array {\n var raIndex = -1\n var decIndex = -1\n var magIndex = -1\n for (i in metadata.indices) {\n val starMetaInfo = metadata[i]\n if (starMetaInfo.name == \"ra\") raIndex = i\n if (starMetaInfo.name == \"dec\") decIndex = i\n if (starMetaInfo.name == \"vmag\") magIndex = i\n }\n return arrayOf(raIndex, decIndex, magIndex)\n }\n\n @Serializable\n data class StarMetadata(\n val name: String, val description: String, val datatype: String,\n val arraysize: Int, val unit: String, val ucd: String\n )\n\n @Serializable\n data class StarData(val metadata: List, val data: List>)\n}\n","package earth.worldwind.layer.starfield\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.util.kgl.GL_TEXTURE0\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n/**\n * StarFieldProgram is a GLSL program that draws points representing stars.\n */\nopen class StarFieldProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n //.x = declination\n //.y = right ascension\n //.z = point size\n //.w = magnitude\n attribute vec4 vertexPoint;\n\n uniform mat4 mvpMatrix;\n /* number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0) */\n uniform float numDays;\n uniform vec2 magnitudeRange;\n\n varying float magnitudeWeight;\n\n /* normalizes an angle between 0.0 and 359.0 */\n float normalizeAngle(float angle) {\n float angleDivisions = angle / 360.0;\n return 360.0 * (angleDivisions - floor(angleDivisions));\n }\n\n /* transforms declination and right ascension in cartesian coordinates */\n vec3 computePosition(float dec, float ra) {\n float GMST = normalizeAngle(280.46061837 + 360.98564736629 * numDays);\n float GHA = normalizeAngle(GMST - ra);\n float lon = -GHA + 360.0 * step(180.0, GHA);\n float latRad = radians(dec);\n float lonRad = radians(lon);\n float radCosLat = cos(latRad);\n return vec3(radCosLat * sin(lonRad), sin(latRad), radCosLat * cos(lonRad));\n }\n\n /* normalizes a value between 0.0 and 1.0 */\n float normalizeScalar(float value, float minValue, float maxValue){\n return (value - minValue) / (maxValue - minValue);\n }\n\n void main() {\n vec3 vertexPosition = computePosition(vertexPoint.x, vertexPoint.y);\n gl_Position = mvpMatrix * vec4(vertexPosition.xyz, 1.0);\n gl_Position.z = gl_Position.w - 0.00001;\n gl_PointSize = vertexPoint.z;\n magnitudeWeight = normalizeScalar(vertexPoint.w, magnitudeRange.x, magnitudeRange.y);\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform sampler2D textureSampler;\n uniform int textureEnabled;\n\n varying float magnitudeWeight;\n\n const vec4 white = vec4(1.0, 1.0, 1.0, 1.0);\n const vec4 grey = vec4(0.5, 0.5, 0.5, 1.0);\n\n void main() {\n if (textureEnabled == 1) {\n gl_FragColor = texture2D(textureSampler, gl_PointCoord);\n }\n else {\n /* paint the starts in shades of grey, where the brightest star is white and the dimmest star is grey */\n gl_FragColor = mix(white, grey, magnitudeWeight);\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var numDaysId = KglUniformLocation.NONE\n protected var magnitudeRangeId = KglUniformLocation.NONE\n protected var textureUnitId = KglUniformLocation.NONE\n protected var textureEnabledId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\");\n numDaysId = gl.getUniformLocation(program, \"numDays\");\n magnitudeRangeId = gl.getUniformLocation(program, \"magnitudeRange\");\n textureUnitId = gl.getUniformLocation(program, \"textureSampler\");\n textureEnabledId = gl.getUniformLocation(program, \"textureEnabled\");\n }\n\n /**\n * Loads the specified matrix as the value of this program's 'mvpMatrix' uniform variable.\n *\n * @param matrix The matrix to load.\n */\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n /**\n * Loads the specified number as the value of this program's 'numDays' uniform variable.\n *\n * @param numDays The number of days (positive or negative) since Greenwich noon, Terrestrial Time,\n * on 1 January 2000 (J2000.0)\n */\n fun loadNumDays(numDays: Float) = gl.uniform1f(numDaysId, numDays)\n\n /**\n * Loads the specified numbers as the value of this program's 'magnitudeRange' uniform variable.\n *\n * @param minMag Minimal magnitude\n * @param maxMag Maximal magnitude\n */\n fun loadMagnitudeRange(minMag: Float, maxMag: Float) = gl.uniform2f(magnitudeRangeId, minMag, maxMag)\n\n /**\n * Loads the specified number as the value of this program's 'textureSampler' uniform variable.\n *\n * @param unit The texture unit.\n */\n fun loadTextureUnit(unit: Int) = gl.uniform1i(textureUnitId, unit - GL_TEXTURE0);\n\n /**\n * Loads the specified boolean as the value of this program's 'textureEnabledLocation' uniform variable.\n *\n * @param value Texture enabled\n */\n fun loadTextureEnabled(value: Boolean) = gl.uniform1i(textureEnabledId, if (value) 1 else 0)\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.coverage.TiledElevationCoverage\nimport earth.worldwind.globe.elevation.coverage.WebElevationCoverage\n\n/**\n * Generates elevations from OGC Web Coverage Service (WCS) version 1.0.0.\n *

\n * Wcs100ElevationCoverage requires the WCS service address, coverage name, and coverage bounding sector. Get Coverage\n * requests generated for retrieving data use the WCS version 1.0.0 protocol and are limited to the EPSG:4326 coordinate\n * system. Wcs100ElevationCoverage does not perform version negotiation and assumes the service supports the format and\n * coordinate system parameters detailed here.\n */\nclass Wcs100ElevationCoverage(\n override val serviceAddress: String, override val coverageName: String, override val outputFormat: String,\n sector: Sector, resolution: Angle\n): TiledElevationCoverage(\n TileMatrixSet.fromTilePyramid(sector, if (sector.isFullSphere) 2 else 1, 1, 256, 256, resolution),\n Wcs100ElevationSourceFactory(serviceAddress, coverageName, outputFormat)\n), WebElevationCoverage {\n override val serviceType = SERVICE_TYPE\n\n companion object {\n const val SERVICE_TYPE = \"WCS 1.0.0\"\n }\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.globe.elevation.ElevationSource\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\n\n/**\n * Factory for constructing WCS version 1.0.0 URLs associated with WCS Get Coverage requests.\n */\nopen class Wcs100ElevationSourceFactory(\n /**\n * The WCS service address use to build Get Coverage URLs.\n */\n protected val serviceAddress: String,\n /**\n * The coverage name of the desired WCS coverage.\n */\n protected val coverageName: String,\n /**\n * Required WCS source output format\n */\n protected val outputFormat: String,\n /**\n * The coordinate reference system to use in Get Coverage URLs. Defaults to EPSG:4326.\n */\n protected val coordinateSystem: String = \"EPSG:4326\"\n): ElevationSourceFactory {\n override val contentType = \"WCS 1.0.0\"\n\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int): ElevationSource {\n val urlString = urlForTile(tileMatrix, row, column)\n return ElevationSource.fromUrlString(urlString)\n }\n\n protected open fun urlForTile(tileMatrix: TileMatrix, row: Int, col: Int) = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WCS\")\n .appendQueryParameter(\"REQUEST\", \"GetCoverage\")\n .appendQueryParameter(\"COVERAGE\", coverageName)\n .appendQueryParameter(\"CRS\", coordinateSystem)\n .appendQueryParameter(\"BBOX\", tileMatrix.tileSector(row, col).run {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n })\n .appendQueryParameter(\"WIDTH\", tileMatrix.tileWidth.toString())\n .appendQueryParameter(\"HEIGHT\", tileMatrix.tileHeight.toString())\n .appendQueryParameter(\"FORMAT\", outputFormat)\n .build().toString()\n}","package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSource\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.globe.elevation.coverage.TiledElevationCoverage\nimport earth.worldwind.globe.elevation.coverage.WebElevationCoverage\n\n/**\n * Generates elevations from OGC Web Map Service (WMS) version 1.3.0.\n *\n * @param serviceAddress OGC Web Map Service (WMS) server address\n * @param coverageName comma-separated coverage names\n * @param outputFormat required image format\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\nopen class WmsElevationCoverage(\n override val serviceAddress: String, override val coverageName: String, override val outputFormat: String,\n sector: Sector, resolution: Angle\n): TiledElevationCoverage(\n buildTileMatrixSet(sector, resolution), buildElevationSourceFactory(serviceAddress, coverageName, outputFormat)\n), WebElevationCoverage {\n override val serviceType = SERVICE_TYPE\n\n companion object {\n const val SERVICE_TYPE = \"WMS\"\n\n /**\n * 4x2 top level matrix equivalent to 90 degree top level tiles\n *\n * @param sector bounding sector\n * @param resolution the target resolution in angular value of latitude per texel\n */\n private fun buildTileMatrixSet(sector: Sector, resolution: Angle) = TileMatrixSet.fromTilePyramid(\n sector, 4, 2, 256, 256, resolution\n )\n\n private fun buildElevationSourceFactory(serviceAddress: String, coverage: String, imageFormat: String): ElevationSourceFactory {\n val layerConfig = WmsLayerConfig(serviceAddress, coverage).apply { this.imageFormat = imageFormat }\n val wmsTileFactory = WmsTileFactory(layerConfig)\n return object : ElevationSourceFactory {\n override val contentType = \"WMS 1.3.0\"\n\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int): ElevationSource {\n val tileSector = tileMatrix.tileSector(row, column)\n val urlString = wmsTileFactory.urlForTile(tileSector, tileMatrix.tileWidth, tileMatrix.tileHeight)\n return ElevationSource.fromUrlString(urlString)\n }\n }\n }\n }\n}","package earth.worldwind.ogc\n\n/**\n * Configuration values for a WMS layer.\n */\nclass WmsLayerConfig(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String\n) {\n /**\n * The WMS protocol version. Defaults to 1.3.0.\n */\n var wmsVersion = \"1.3.0\"\n /**\n * The comma-separated list of WMS style names.\n */\n var styleNames: String? = null\n /**\n * The coordinate reference system to use when requesting layers. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map requests.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map requests should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map requests.\n */\n var timeString: String? = null\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Ellipsoid\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.layer.WebImageLayer\nimport earth.worldwind.ogc.wms.WmsCapabilities\nimport earth.worldwind.ogc.wms.WmsLayer\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.LevelSetConfig\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.serialization.XML\n\nobject WmsLayerFactory {\n\n const val SERVICE_TYPE = \"WMS\"\n private const val DEFAULT_WMS_NUM_LEVELS = 20\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n /**\n * Create tiled image layer based on WMS layer metadata retrieved from server capabilities or decoded from parameter\n *\n * @param serviceAddress WMS service address\n * @param layerNames Optional list of WMS layer names to be requested and combined into the resulting image layer\n * @param serviceMetadata Optional WMS capabilities XML string to avoid online capabilities request\n * @param displayName Optional layer display name\n */\n suspend fun createLayer(\n serviceAddress: String, layerNames: List, serviceMetadata: String? = null, displayName: String? = null\n ): TiledImageLayer {\n require(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerNames.isNotEmpty()) {\n logMessage(ERROR, \"WmsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmsCapabilitiesText = serviceMetadata ?: retrieveWmsCapabilities(serviceAddress)\n val wmsCapabilities = decodeWmsCapabilities(wmsCapabilitiesText)\n val wmsLayers = wmsCapabilities.getNamedLayers(layerNames)\n require(wmsLayers.isNotEmpty()) {\n makeMessage(\"WmsLayerFactory\", \"createLayer\", \"Provided layer names did not match available layers\")\n }\n return createWmsImageLayer(serviceAddress, wmsCapabilitiesText, wmsLayers, displayName)\n }\n\n private suspend fun retrieveWmsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.3.0\")\n .appendQueryParameter(\"SERVICE\", \"WMS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }\n\n private suspend fun decodeWmsCapabilities(xmlText: String) = withContext(Dispatchers.Default) {\n xml.decodeFromString(xmlText)\n }\n\n private fun createWmsImageLayer(\n serviceAddress: String, serviceMetadata: String, wmsLayers: List, name: String?\n ): TiledImageLayer = object : TiledImageLayer(\n name ?: wmsLayers.joinToString(\",\") { lc -> lc.title }, createWmsSurfaceImage(wmsLayers)\n ), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n override val serviceAddress = serviceAddress\n override val serviceMetadata = serviceMetadata\n override val layerName = wmsLayers.mapNotNull { lc -> lc.name }.joinToString(\",\")\n override val imageFormat get() = (tiledSurfaceImage?.tileFactory as? WmsTileFactory)?.imageFormat ?: \"image/png\"\n override val isTransparent get() = (tiledSurfaceImage?.tileFactory as? WmsTileFactory)?.isTransparent ?: true\n }\n\n private fun createWmsSurfaceImage(wmsLayers: List): TiledSurfaceImage {\n // Check if the server supports multiple layer request\n val layerLimit = wmsLayers[0].capability?.capabilities?.service?.layerLimit\n require (layerLimit == null || layerLimit >= wmsLayers.size) {\n makeMessage(\n \"WmsLayerFactory\", \"createFromWmsAsync\",\n \"The number of layers specified exceeds the services limit\"\n )\n }\n val wmsLayerConfig = getLayerConfigFromWmsCapabilities(wmsLayers)\n val levelSetConfig = getLevelSetConfigFromWmsCapabilities(wmsLayers)\n return TiledSurfaceImage(WmsTileFactory(wmsLayerConfig), LevelSet(levelSetConfig))\n }\n\n internal fun getLayerConfigFromWmsCapabilities(wmsLayers: List): WmsLayerConfig {\n // Construct the WmsTiledImage renderable from the WMS Capabilities properties\n val wmsCapabilities = wmsLayers[0].capability?.capabilities\n val serviceAddress = wmsCapabilities?.capability?.request?.getMap?.getUrl ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Unable to resolve GetMap URL\")\n )\n var matchingCoordinateSystems: MutableSet? = null\n for (wmsLayer in wmsLayers) {\n val wmsLayerCoordinateSystems = wmsLayer.referenceSystems\n if (matchingCoordinateSystems == null) matchingCoordinateSystems = wmsLayerCoordinateSystems.toMutableSet()\n else matchingCoordinateSystems.retainAll(wmsLayerCoordinateSystems.toSet())\n }\n val wmsLayerConfig = WmsLayerConfig(serviceAddress, wmsLayers.joinToString(\",\") { l -> l.name ?: \"\" })\n when (val wmsVersion = wmsCapabilities.version) {\n \"1.3.0\" -> wmsLayerConfig.wmsVersion = wmsVersion\n else -> error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Version not compatible\")\n )\n }\n if (matchingCoordinateSystems?.contains(\"EPSG:4326\") == true) {\n wmsLayerConfig.coordinateSystem = \"EPSG:4326\"\n } else if (matchingCoordinateSystems?.contains(\"CRS:84\") == true) {\n wmsLayerConfig.coordinateSystem = \"CRS:84\"\n } else error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Coordinate systems not compatible\")\n )\n\n // Negotiate Image Formats\n val imageFormats = wmsCapabilities.capability.request.getMap.formats\n wmsLayerConfig.imageFormat = compatibleImageFormats.firstOrNull { format -> imageFormats.contains(format) } ?: error(\n makeMessage(\"WmsLayerFactory\", \"getLayerConfigFromWmsCapabilities\", \"Image Formats Not Compatible\")\n )\n\n // Setup transparency. If at least one layer is opaque then transparency is disabled\n wmsLayerConfig.isTransparent = !wmsLayers.any { layer -> layer.isOpaque }\n\n return wmsLayerConfig\n }\n\n internal fun getLevelSetConfigFromWmsCapabilities(layerCapabilities: List): LevelSetConfig {\n val levelSetConfig = LevelSetConfig()\n var minScaleDenominator = Double.MAX_VALUE\n val sector = Sector()\n for (layerCapability in layerCapabilities) {\n layerCapability.minScaleDenominator?.let { minScaleDenominator = minScaleDenominator.coerceAtMost(it) }\n layerCapability.geographicBoundingBox?.let { sector.union(it) }\n }\n if (!sector.isEmpty) levelSetConfig.sector.copy(sector) else error(\n makeMessage(\n \"WmsLayerFactory\", \"getLevelSetConfigFromWmsCapabilities\", \"Geographic Bounding Box Not Defined\"\n )\n )\n levelSetConfig.numLevels = when {\n minScaleDenominator != Double.MAX_VALUE -> {\n // WMS 1.3.0 scale configuration. Based on the WMS 1.3.0 spec page 28. The hard coded value 0.00028 is\n // detailed in the spec as the common pixel size of 0.28mm x 0.28mm. Configures the maximum level not to\n // exceed the specified min scale denominator.\n val minMetersPerPixel = minScaleDenominator * 0.00028\n val minRadiansPerPixel = minMetersPerPixel / Ellipsoid.WGS84.semiMajorAxis\n levelSetConfig.numLevelsForMinResolution(minRadiansPerPixel)\n }\n else -> DEFAULT_WMS_NUM_LEVELS // Default scale configuration when no minimum scale denominator or scale hint is provided.\n }\n return levelSetConfig\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ln\nimport kotlin.math.roundToInt\n\n/**\n * Multi-resolution, hierarchical collection of tiles organized into levels of increasing resolution. Applications\n * typically do not interact with this class.\n */\nopen class LevelSet {\n /**\n * The sector spanned by this level set.\n */\n val sector: Sector\n /**\n * Tile origin for this level set\n */\n val tileOrigin: Sector\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of this level set.\n */\n val firstLevelDelta: Location\n /**\n * The width in pixels of images associated with tiles in this level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with this level set.\n */\n val tileWidth: Int\n /**\n * The height in pixels of images associated with tiles in this level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with this level set.\n */\n val tileHeight: Int\n /**\n * Determines how many levels to skip from retrieving tile data during tile pyramid subdivision.\n */\n val levelOffset: Int\n /**\n * The hierarchical levels, sorted from lowest to highest resolution.\n */\n protected val levels: Array\n /**\n * Returns the number of levels in this level set.\n */\n val numLevels get() = levels.size\n /**\n * Returns the first level (the lowest resolution) of this level set.\n */\n val firstLevel get() = levels.first()\n /**\n * Returns the last level (the highest resolution) of this level set.\n */\n val lastLevel get() = levels.last()\n\n /**\n * Constructs an empty level set with no levels. The methods `level`, `levelForResolution`,\n * `firstLevel` and `lastLevel` always return null.\n */\n constructor() {\n sector = Sector()\n tileOrigin = Sector()\n firstLevelDelta = Location()\n tileWidth = 0\n tileHeight = 0\n levelOffset = 0\n levels = emptyArray()\n }\n\n /**\n * Constructs a level set with specified parameters.\n *\n * @param sector the sector spanned by this level set\n * @param tileOrigin the origin for this level set\n * @param firstLevelDelta the geographic width and height of tiles in the first level (the lowest resolution)\n * of the level set\n * @param numLevels the number of levels in the level set\n * @param tileWidth the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the longitudinal direction of elevation tiles associate with this leve set\n * @param tileHeight the height in pixels of images associated with tiles in this level set, or the number of\n * sample points in the latitudinal direction of elevation tiles associate with this level set\n * @param levelOffset determines how many levels to skip from retrieving texture during tile pyramid subdivision\n *\n * @throws IllegalArgumentException If any dimension is zero\n */\n constructor(\n sector: Sector, tileOrigin: Sector, firstLevelDelta: Location, numLevels: Int, tileWidth: Int, tileHeight: Int, levelOffset: Int = 0\n ) {\n require(firstLevelDelta.latitude.inDegrees > 0.0 && firstLevelDelta.longitude.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidTileDelta\")\n }\n require(numLevels >= 0) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidNumLevels\")\n }\n require(tileWidth >= 1 && tileHeight >= 1) {\n logMessage(ERROR, \"LevelSet\", \"constructor\", \"invalidWidthOrHeight\")\n }\n this.sector = sector\n this.tileOrigin = tileOrigin\n this.firstLevelDelta = firstLevelDelta\n this.tileWidth = tileWidth\n this.tileHeight = tileHeight\n this.levelOffset = levelOffset\n this.levels = Array(numLevels) {\n val divisor = 1 shl it\n Level(this, it, Location(firstLevelDelta.latitude / divisor, firstLevelDelta.longitude / divisor))\n }\n }\n\n /**\n * Constructs a level set with parameters from a specified configuration. The configuration's sector must be\n * non-null, its first level delta must be positive, its number of levels must be 1 or more, and its tile width and\n * tile height must be 1 or greater.\n *\n * @param config the configuration for this level set\n */\n constructor(config: LevelSetConfig): this(\n config.sector,\n config.tileOrigin,\n config.firstLevelDelta,\n config.numLevels,\n config.tileWidth,\n config.tileHeight,\n config.levelOffset\n )\n\n /**\n * Returns the [Level] for a specified level number.\n *\n * @param levelNumber the number of the desired level\n *\n * @return the requested level, or null if the level does not exist\n */\n fun level(levelNumber: Int) = if (levelNumber in levels.indices) levels[levelNumber] else null\n\n /**\n * Returns the level that most closely approximates the specified resolution.\n *\n * @param resolution the desired resolution in angular value of latitude per pixel.\n *\n * @return the level for the specified resolution, or null if this level set is empty\n *\n * @throws IllegalArgumentException If the resolution is not positive\n * @throws IllegalStateException If this level set is empty\n */\n fun levelForResolution(resolution: Angle): Level {\n require(resolution.inDegrees > 0.0) {\n logMessage(ERROR, \"LevelSetConfig\", \"levelForResolution\", \"invalidResolution\")\n }\n if (levels.isEmpty()) error(\"This level set is empty\")\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / resolution.inDegrees) / ln(2.0) // fractional level address\n val levelNumber = level.roundToInt() // nearest neighbor level\n return when {\n levelNumber < 0 -> levels[0] // unable to match the resolution; return the first level\n levelNumber < levels.size -> levels[levelNumber] // nearest neighbor level is in this level set\n else -> levels[levels.size - 1] // unable to match the resolution; return the last level\n }\n }\n\n /**\n * Determine the min relevant level for the sector of this level set\n *\n * @param maxLevel Maximum available level\n * @return Minimum relevant level number\n */\n fun minRelevantLevel(maxLevel: Level = lastLevel) = levels[sector.minLevelNumber(maxLevel.levelNumber)]\n}",null,"package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.TileFactory\n\n/**\n * Factory for constructing URLs associated with WMS Get Map requests.\n */\nopen class WmsTileFactory(\n /**\n * The WMS service address used to build Get Map URLs.\n */\n var serviceAddress: String,\n\n /**\n * The WMS protocol version.\n */\n var wmsVersion: String,\n\n /**\n * The comma-separated list of WMS layer names.\n */\n var layerNames: String,\n /**\n * The comma-separated list of WMS style names. May be null in which case the default style is assumed.\n */\n var styleNames: String?\n): TileFactory {\n /**\n * The coordinate reference system to use in Get Map URLs. Defaults to EPSG:4326.\n */\n var coordinateSystem = \"EPSG:4326\"\n /**\n * The image content type to use in Get Map URLs. May be null in which case a default format is assumed.\n */\n var imageFormat: String? = null\n /**\n * Indicates whether Get Map URLs should include transparency.\n */\n var isTransparent = true\n /**\n * The time parameter to include in Get Map URLs. May be null in which case no time parameter is included.\n */\n var timeString: String? = null\n\n /**\n * Constructs a level set with a specified configuration. The configuration's service address, WMS protocol version,\n * layer names and coordinate reference system must be non-null. The style names may be null, in which case the\n * default style is assumed. The time string may be null, in which case no time parameter is included.\n *\n * @param config the configuration for this URL builder\n */\n constructor(config: WmsLayerConfig): this(config.serviceAddress, config.wmsVersion, config.layerNames, config.styleNames) {\n coordinateSystem = config.coordinateSystem\n imageFormat = config.imageFormat\n isTransparent = config.isTransparent\n timeString = config.timeString\n }\n\n override val contentType = \"WMS 1.3.0\"\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(sector, level.tileWidth, level.tileHeight).let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this }\n }\n }\n\n fun urlForTile(sector: Sector, width: Int, height: Int) = Uri.parse(serviceAddress).buildUpon().apply {\n require(width >= 1 && height >= 1) {\n logMessage(ERROR, \"WmsTileFactory\", \"urlForTile\", \"invalidWidthOrHeight\")\n }\n appendQueryParameter(\"VERSION\", wmsVersion)\n appendQueryParameter(\"SERVICE\", \"WMS\")\n appendQueryParameter(\"REQUEST\", \"GetMap\")\n appendQueryParameter(\"LAYERS\", layerNames)\n appendQueryParameter(\"STYLES\", styleNames ?: \"\")\n appendQueryParameter(\"WIDTH\", width.toString())\n appendQueryParameter(\"HEIGHT\", height.toString())\n appendQueryParameter(\"FORMAT\", imageFormat ?: \"image/png\")\n appendQueryParameter(\"TRANSPARENT\", if (isTransparent) \"TRUE\" else \"FALSE\")\n if (wmsVersion == \"1.3.0\") {\n appendQueryParameter(\"CRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n if (coordinateSystem == \"CRS:84\") {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n } else {\n \"${minLatitude.inDegrees},${minLongitude.inDegrees},${maxLatitude.inDegrees},${maxLongitude.inDegrees}\"\n }\n })\n } else {\n appendQueryParameter(\"SRS\", coordinateSystem)\n appendQueryParameter(\"BBOX\", sector.run {\n \"${minLongitude.inDegrees},${minLatitude.inDegrees},${maxLongitude.inDegrees},${maxLatitude.inDegrees}\"\n })\n }\n timeString?.let { appendQueryParameter(\"TIME\", it) }\n }.build().toString()\n}","package earth.worldwind.ogc\n\nimport com.eygraber.uri.Uri\nimport earth.worldwind.geom.Angle.Companion.toRadians\nimport earth.worldwind.geom.Ellipsoid\nimport earth.worldwind.geom.Location.Companion.fromDegrees\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport earth.worldwind.layer.TiledImageLayer\nimport earth.worldwind.layer.WebImageLayer\nimport earth.worldwind.ogc.wmts.WmtsCapabilities\nimport earth.worldwind.ogc.wmts.WmtsLayer\nimport earth.worldwind.ogc.wmts.WmtsTileMatrixSet\nimport earth.worldwind.shape.TiledSurfaceImage\nimport earth.worldwind.util.LevelSet\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.Logger.makeMessage\nimport earth.worldwind.util.TileFactory\nimport earth.worldwind.util.http.DefaultHttpClient\nimport io.ktor.client.plugins.*\nimport io.ktor.client.request.*\nimport io.ktor.client.statement.*\nimport io.ktor.utils.io.core.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.withContext\nimport kotlinx.serialization.decodeFromString\nimport nl.adaptivity.xmlutil.serialization.XML\n\nobject WmtsLayerFactory {\n\n const val SERVICE_TYPE = \"WMTS\"\n private const val PIXEL_SIZE = 0.28E-3 // Standardized rendering pixel size (0.28mm)\n private const val STYLE_TEMPLATE = \"{style}\"\n private const val TILE_MATRIX_SET_TEMPLATE = \"{TileMatrixSet}\"\n private val compatibleImageFormats = listOf(\"image/png\", \"image/jpg\", \"image/jpeg\", \"image/gif\", \"image/bmp\")\n private val xml = XML { defaultPolicy { ignoreUnknownChildren() } }\n\n /**\n * Create tiled image layer based on WMTS layer metadata retrieved from server capabilities or decoded from parameter\n *\n * @param serviceAddress WMTS service address\n * @param layerName Optional WMTS layer name to be requested into the resulting image layer\n * @param serviceMetadata Optional WMTS capabilities XML string to avoid online capabilities request\n * @param displayName Optional layer display name\n */\n suspend fun createLayer(\n serviceAddress: String, layerName: String, serviceMetadata: String? = null, displayName: String? = null\n ): TiledImageLayer {\n\t\trequire(serviceAddress.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingServiceAddress\")\n }\n require(layerName.isNotEmpty()) {\n logMessage(ERROR, \"WmtsLayerFactory\", \"createLayer\", \"missingLayerNames\")\n }\n val wmtsCapabilitiesText = serviceMetadata ?: retrieveWmtsCapabilities(serviceAddress)\n val wmtsCapabilities = decodeWmtsCapabilities(wmtsCapabilitiesText)\n val wmtsLayer = wmtsCapabilities.getLayer(layerName)\n requireNotNull(wmtsLayer) {\n makeMessage(\"WmtsLayerFactory\", \"createLayer\", \"Specified layer name was not found\")\n }\n return createWmtsImageLayer(serviceAddress, wmtsCapabilitiesText, wmtsLayer, displayName)\n }\n\n private suspend fun retrieveWmtsCapabilities(serviceAddress: String) = DefaultHttpClient().use { httpClient ->\n val serviceUri = Uri.parse(serviceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetCapabilities\")\n .build()\n httpClient.get(serviceUri.toString()) { expectSuccess = true }.bodyAsText()\n }\n\n private suspend fun decodeWmtsCapabilities(xmlText: String) = withContext(Dispatchers.Default) {\n xml.decodeFromString(xmlText)\n }\n\n private fun createWmtsImageLayer(\n serviceAddress: String, serviceMetadata: String, wmtsLayer: WmtsLayer, name: String?\n ): TiledImageLayer = object : TiledImageLayer(name ?: wmtsLayer.title, createWmtsSurfaceImage(wmtsLayer)), WebImageLayer {\n override val serviceType = SERVICE_TYPE\n override val serviceAddress = serviceAddress\n override val serviceMetadata = serviceMetadata\n override val layerName = wmtsLayer.identifier\n override val imageFormat get() = (tiledSurfaceImage?.tileFactory as? WmtsTileFactory)?.imageFormat ?: \"image/png\"\n override val isTransparent = true // WMTS has no transparency data available\n }\n\n private fun createWmtsSurfaceImage(wmtsLayer: WmtsLayer): TiledSurfaceImage {\n // Search the list of coordinate system compatible tile matrix sets for compatible tiling schemes\n val tileMatrixSet = determineCompatibleTileMatrixSet(wmtsLayer.layerSupportedTileMatrixSets) ?: error(\n makeMessage(\"WmtsLayerFactory\", \"createWmtsLayer\", \"Tile Schemes Not Compatible\")\n )\n val tileFactory = createWmtsTileFactory(wmtsLayer, tileMatrixSet)\n val levelSet = createWmtsLevelSet(wmtsLayer, tileMatrixSet)\n return TiledSurfaceImage(tileFactory, levelSet)\n }\n\n private fun createWmtsTileFactory(wmtsLayer: WmtsLayer, tileMatrixSet: TileMatrixSet): TileFactory {\n // First choice is a ResourceURL\n for (resourceUrl in wmtsLayer.resourceUrls) if (compatibleImageFormats.contains(resourceUrl.format)) {\n val template = resourceUrl.template\n .replace(STYLE_TEMPLATE, wmtsLayer.styles[0].identifier)\n .replace(TILE_MATRIX_SET_TEMPLATE, tileMatrixSet.identifier)\n return WmtsTileFactory(template, tileMatrixSet.tileMatrices, tileMatrixSet.matrixHeight, resourceUrl.format)\n }\n\n // Second choice is if the server supports KVP\n val baseUrl = determineKvpUrl(wmtsLayer)\n return if (baseUrl != null) {\n val imageFormat = compatibleImageFormats.firstOrNull { format -> wmtsLayer.formats.contains(format) } ?: error(\n makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"Image Formats Not Compatible\")\n )\n val styleIdentifier = wmtsLayer.styles[0].identifier\n val template = buildWmtsKvpTemplate(\n baseUrl, wmtsLayer.identifier, imageFormat, styleIdentifier, tileMatrixSet.identifier\n )\n WmtsTileFactory(template, tileMatrixSet.tileMatrices, tileMatrixSet.matrixHeight, imageFormat)\n } else error(makeMessage(\"WmtsLayerFactory\", \"getWmtsTileFactory\", \"No KVP Get Support\"))\n }\n\n private fun createWmtsLevelSet(wmtsLayer: WmtsLayer, tileMatrixSet: TileMatrixSet) = with(tileMatrixSet) {\n val sector = wmtsLayer.wgs84BoundingBox?.sector ?: error(\n makeMessage(\n \"WmtsLayerFactory\", \"createWmtsLevelSet\",\n \"WGS84BoundingBox not defined for layer: \" + wmtsLayer.identifier\n )\n )\n val pixelSpan = scaleDenominator / toRadians(Ellipsoid.WGS84.semiMajorAxis) * PIXEL_SIZE\n val tileSpanX = tileWidth * pixelSpan\n val tileSpanY = tileHeight * pixelSpan\n val maxX = minX + tileSpanX * matrixWidth\n val minY = maxY - tileSpanY * matrixHeight\n val deltaX = maxX - minX\n val deltaY = maxY - minY\n LevelSet(\n sector, fromDegrees(minY, minX, deltaY, deltaX),\n fromDegrees(deltaY / matrixHeight, deltaX / matrixWidth),\n tileMatrices.size, tileWidth, tileHeight\n )\n }\n\n private fun buildWmtsKvpTemplate(\n kvpServiceAddress: String, layer: String, format: String, styleIdentifier: String, tileMatrixSet: String\n ) = Uri.parse(kvpServiceAddress).buildUpon()\n .appendQueryParameter(\"VERSION\", \"1.0.0\")\n .appendQueryParameter(\"SERVICE\", \"WMTS\")\n .appendQueryParameter(\"REQUEST\", \"GetTile\")\n .appendQueryParameter(\"LAYER\", layer)\n .appendQueryParameter(\"STYLE\", styleIdentifier)\n .appendQueryParameter(\"FORMAT\", format)\n .appendQueryParameter(\"TILEMATRIXSET\", tileMatrixSet)\n .appendQueryParameter(\"TILEMATRIX\", WmtsTileFactory.TILE_MATRIX_TEMPLATE)\n .appendQueryParameter(\"TILEROW\", WmtsTileFactory.TILE_ROW_TEMPLATE)\n .appendQueryParameter(\"TILECOL\", WmtsTileFactory.TILE_COL_TEMPLATE)\n .build().toString()\n\n private fun determineCompatibleTileMatrixSet(tileMatrixSets: List): TileMatrixSet? {\n // Iterate through each provided tile matrix set\n for (tileMatrixSet in tileMatrixSets) {\n // Determine if there is a TileMatrixSet that matches our Coordinate System compatibility and tiling scheme\n val directAxisOrder = when (tileMatrixSet.supportedCrs) {\n \"urn:ogc:def:crs:OGC:1.3:CRS84\", \"http://www.opengis.net/def/crs/OGC/1.3/CRS84\" -> true\n \"urn:ogc:def:crs:EPSG::4326\" -> false\n else -> continue // The provided tile matrix set should adhere to either EPGS:4326 or CRS84\n }\n val tileMatrices = mutableListOf()\n var minX = 0.0\n var maxY = 0.0\n var scaleDenominator = 0.0\n var tileWidth = 0\n var tileHeight = 0\n var matrixWidth = 0\n var matrixHeight = 0\n var previousHeight = 0\n var previousWidth = 0\n var previousCorner: String? = null\n // Walk through the associated tile matrices and check for compatibility with WWA tiling scheme\n for (tileMatrix in tileMatrixSet.tileMatrices) {\n // Check and parse top left corner values\n if (previousCorner != null && tileMatrix.topLeftCorner != previousCorner) continue\n val topLeftCorner = tileMatrix.topLeftCorner.split(\"\\\\s+\".toRegex())\n if (topLeftCorner.size != 2) continue\n\n // Check tile size equals for all tile matrices\n if (tileWidth != 0 && tileWidth != tileMatrix.tileWidth) continue\n if (tileHeight != 0 && tileHeight != tileMatrix.tileHeight) continue\n\n // Ensure quad division behavior from previous tile matrix\n if (previousWidth != 0 && 2 * previousWidth != tileMatrix.matrixWidth) break\n if (previousHeight != 0 && 2 * previousHeight != tileMatrix.matrixHeight) break\n\n // Remember the first level parameters\n if (tileMatrices.isEmpty()) {\n try {\n if (directAxisOrder) {\n minX = topLeftCorner[0].toDouble()\n maxY = topLeftCorner[1].toDouble()\n } else {\n minX = topLeftCorner[1].toDouble()\n maxY = topLeftCorner[0].toDouble()\n }\n } catch (e: NumberFormatException) {\n logMessage(\n WARN, \"WmtsLayerFactory\", \"determineTileSchemeCompatibleTileMatrixSet\",\n \"Unable to parse TopLeftCorner values\"\n )\n continue\n }\n scaleDenominator = tileMatrix.scaleDenominator\n tileWidth = tileMatrix.tileWidth\n tileHeight = tileMatrix.tileWidth\n matrixWidth = tileMatrix.matrixWidth\n matrixHeight = tileMatrix.matrixHeight\n }\n\n // And add compatible tile matrix\n tileMatrices.add(tileMatrix.identifier)\n previousHeight = tileMatrix.matrixHeight\n previousWidth = tileMatrix.matrixWidth\n previousCorner = tileMatrix.topLeftCorner\n }\n\n // Return the first compatible tile matrix set\n if (tileMatrices.isNotEmpty()) return TileMatrixSet(\n tileMatrixSet.identifier, tileMatrices, scaleDenominator, minX, maxY,\n tileWidth, tileHeight, matrixWidth, matrixHeight\n )\n }\n return null\n }\n\n /**\n * Conducts a simple search through the [WmtsLayer]s distributed computing platform resources for a URL which\n * supports KVP queries to the WMTS. This method only looks at the first entry of every array of the layers 'GET'\n * retrieval methods.\n *\n * @param layer the [WmtsLayer] to search for KVP support\n *\n * @return the URL for the supported KVP or null if KVP or 'GET' method isn't provided by the layer\n */\n private fun determineKvpUrl(layer: WmtsLayer): String? {\n val capabilities = layer.capabilities\n val operationsMetadata = capabilities.operationsMetadata ?: return null\n val getTileOperation = operationsMetadata.getTile ?: return null\n val dcp = getTileOperation.dcps\n if (dcp.isEmpty()) return null\n val getMethods = dcp[0].getMethods\n if (getMethods.isEmpty()) return null\n val constraints = getMethods[0].constraints\n if (constraints.isEmpty()) return null\n val allowedValues = constraints[0].allowedValues\n return if (allowedValues.contains(\"KVP\")) getMethods[0].url else null\n }\n\n private class TileMatrixSet(\n val identifier: String,\n val tileMatrices: List,\n val scaleDenominator: Double,\n val minX: Double,\n val maxY: Double,\n val tileWidth: Int,\n val tileHeight: Int,\n val matrixWidth: Int,\n val matrixHeight: Int,\n )\n}",null,null,"package earth.worldwind.ogc\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource.Companion.fromUrlString\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.TileFactory\n\nopen class WmtsTileFactory(\n private val template: String,\n private val tileMatrixIdentifiers: List,\n private val firstLevelHeight: Int,\n val imageFormat: String\n): TileFactory {\n override val contentType = \"WMTS 1.0.0\"\n\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) = ImageTile(sector, level, row, column).apply {\n urlForTile(level.levelNumber, row, column)?.let { urlString ->\n // Assign resource post-processor to transform received resource and save it in cache if necessary\n imageSource = fromUrlString(urlString).also { it.postprocessor = this }\n }\n }\n\n fun urlForTile(level: Int, row: Int, column: Int): String? {\n if (level >= tileMatrixIdentifiers.size) {\n logMessage(\n Logger.WARN, \"WmtsTileFactory\", \"urlForTile\",\n \"invalid level for tileMatrixIdentifiers: $level\"\n )\n return null\n }\n\n // flip the row index\n val rowHeight = firstLevelHeight shl level\n val flipRow = rowHeight - row - 1\n return template.replace(TILE_MATRIX_TEMPLATE, tileMatrixIdentifiers[level])\n .replace(TILE_ROW_TEMPLATE, flipRow.toString()).replace(TILE_COL_TEMPLATE, column.toString())\n }\n\n companion object {\n const val TILE_MATRIX_TEMPLATE = \"{TileMatrix}\"\n const val TILE_ROW_TEMPLATE = \"{TileRow}\"\n const val TILE_COL_TEMPLATE = \"{TileCol}\"\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Attribution\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAttribution(\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String? = null,\n val onlineResource: WmsOnlineResource? = null,\n val logoURL: WmsLogoUrl? = null\n) {\n val url get() = onlineResource?.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"AuthorityURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsAuthorityUrl(\n val name: String,\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsBoundingBox(\n val CRS: String,\n val minx: Double,\n val maxx: Double,\n val miny: Double,\n val maxy: Double,\n val resx: Double? = null,\n val resy: Double? = null,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"WMS_Capabilities\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapabilities(\n /**\n * Returns the document's version number.\n */\n val version: String = \"1.3.0\",\n /**\n * Returns the document's update sequence.\n */\n val updateSequence: String? = null,\n /**\n * Returns the document's service information.\n */\n val service: WmsService,\n val capability: WmsCapability\n) {\n /**\n * Returns all named layers in the capabilities document.\n */\n val namedLayers get() = capability.layers.flatMap { layer -> layer.namedLayers }\n\n init {\n capability.capabilities = this\n }\n\n fun getNamedLayer(name: String) = namedLayers.firstOrNull { layer -> layer.name == name }\n\n fun getNamedLayers(names: List) = namedLayers.filter { layer -> names.contains(layer.name) }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capability\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsCapability(\n val request: WmsRequest,\n val layers: List = emptyList(),\n /**\n * Object representation of an Exception element. Pre-allocated to prevent NPE in the event the server does not\n * include an Exception block.\n */\n val exception: WmsException = WmsException()\n) {\n @Transient\n lateinit var capabilities: WmsCapabilities\n\n init {\n layers.forEach { layer -> layer.capability = this }\n }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactAddress\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactAddress(\n @XmlElement(true)\n @XmlSerialName(\"AddressType\", WMS_NAMESPACE, WMS_PREFIX)\n val addressType: String,\n @XmlElement(true)\n @XmlSerialName(\"Address\", WMS_NAMESPACE, WMS_PREFIX)\n val address: String,\n @XmlElement(true)\n @XmlSerialName(\"City\", WMS_NAMESPACE, WMS_PREFIX)\n val city: String,\n @XmlElement(true)\n @XmlSerialName(\"StateOrProvince\", WMS_NAMESPACE, WMS_PREFIX)\n val stateOrProvince: String,\n @XmlElement(true)\n @XmlSerialName(\"PostCode\", WMS_NAMESPACE, WMS_PREFIX)\n val postCode: String,\n @XmlElement(true)\n @XmlSerialName(\"Country\", WMS_NAMESPACE, WMS_PREFIX)\n val country: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInformation\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactInformation(\n @XmlElement(true)\n @XmlSerialName(\"ContactPosition\", WMS_NAMESPACE, WMS_PREFIX)\n val position: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactVoiceTelephone\", WMS_NAMESPACE, WMS_PREFIX)\n val voiceTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactFacsimileNumber\", WMS_NAMESPACE, WMS_PREFIX)\n val facsimileTelephone: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactElectronicMailAddress\", WMS_NAMESPACE, WMS_PREFIX)\n val electronicMailAddress: String? = null,\n val contactAddress: WmsContactAddress? = null,\n val contactPersonPrimary: WmsContactPersonPrimary? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactPersonPrimary\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsContactPersonPrimary(\n @XmlElement(true)\n @XmlSerialName(\"ContactPerson\", WMS_NAMESPACE, WMS_PREFIX)\n val contactPerson: String,\n @XmlElement(true)\n @XmlSerialName(\"ContactOrganization\", WMS_NAMESPACE, WMS_PREFIX)\n val contactOrganization: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCPType\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDcpType(\n val http: WmsHttp\n) {\n val getHref get() = http.get.onlineResource.url\n val postHref get() = http.post?.onlineResource?.url\n\n @Serializable\n @XmlSerialName(\"HTTP\", WMS_NAMESPACE, WMS_PREFIX)\n data class WmsHttp(\n @XmlSerialName(\"Get\", WMS_NAMESPACE, WMS_PREFIX)\n val get: WmsHttpProtocol,\n @XmlSerialName(\"Post\", WMS_NAMESPACE, WMS_PREFIX)\n val post: WmsHttpProtocol? = null,\n )\n\n @Serializable\n data class WmsHttpProtocol(\n val onlineResource: WmsOnlineResource\n )\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsDimension(\n val name: String,\n val units: String,\n val unitSymbol: String? = null,\n val default: String? = null,\n val multipleValues: Boolean? = null,\n val nearestValue: Boolean? = null,\n val current: Boolean? = null,\n @XmlValue(true)\n val value: String? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Exception\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsException(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList()\n)","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector.Companion.fromDegrees\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"EX_GeographicBoundingBox\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsGeographicBoundingBox(\n @XmlElement(true)\n @XmlSerialName(\"northBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val north: Double,\n @XmlElement(true)\n @XmlSerialName(\"eastBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val east: Double,\n @XmlElement(true)\n @XmlSerialName(\"southBoundLatitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val south: Double,\n @XmlElement(true)\n @XmlSerialName(\"westBoundLongitude\", WMS_NAMESPACE, WMS_PREFIX)\n private val west: Double\n) {\n val geographicBoundingBox get() = fromDegrees(south, west, north - south, east - west)\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\nimport nl.adaptivity.xmlutil.serialization.XmlValue\n\n@Serializable\n@XmlSerialName(\"Identifier\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsIdentifier(\n val authority: String,\n @XmlValue(true)\n val identifier: String,\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsInfoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport earth.worldwind.geom.Sector\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLayer(\n // Properties of the Layer element\n val layers: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = emptyList(),\n private val _styles: List = emptyList(),\n @XmlSerialName(\"CRS\", WMS_NAMESPACE, WMS_PREFIX)\n private val _referenceSystems: List = emptyList(),\n private val _geographicBoundingBox: WmsGeographicBoundingBox? = null,\n private val _boundingBoxes: List = emptyList(),\n private val _dimensions: List = emptyList(),\n private val _attribution: WmsAttribution? = null,\n private val _authorityUrls: List = emptyList(),\n val identifiers: List = emptyList(),\n val metadataUrls: List = emptyList(),\n @XmlSerialName(\"DataURL\", WMS_NAMESPACE, WMS_PREFIX)\n val dataUrls: List = emptyList(),\n @XmlSerialName(\"FeatureListURL\", WMS_NAMESPACE, WMS_PREFIX)\n val featureListUrls: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"MaxScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _maxScaleDenominator: Double? = null,\n @XmlElement(true)\n @XmlSerialName(\"MinScaleDenominator\", WMS_NAMESPACE, WMS_PREFIX)\n private val _minScaleDenominator: Double? = null,\n // Properties of the Layer attributes\n @XmlSerialName(\"queryable\", WMS_NAMESPACE, WMS_PREFIX)\n val isQueryable: Boolean = false,\n @XmlSerialName(\"cascaded\", WMS_NAMESPACE, WMS_PREFIX)\n private val _cascaded: Int? = null,\n @XmlSerialName(\"opaque\", WMS_NAMESPACE, WMS_PREFIX)\n val isOpaque: Boolean = false,\n @XmlSerialName(\"noSubsets\", WMS_NAMESPACE, WMS_PREFIX)\n val isNoSubsets: Boolean = false,\n @XmlSerialName(\"fixedWidth\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedWidth: Int? = null,\n @XmlSerialName(\"fixedHeight\", WMS_NAMESPACE, WMS_PREFIX)\n private val _fixedHeight: Int? = null,\n) {\n val namedLayers: List get() = (name?.let { listOf(this) } ?: emptyList()) + layers.flatMap { layer -> layer.namedLayers }\n val styles: List get() = _styles + (parent?.styles ?: emptyList())\n val referenceSystems: List get() = _referenceSystems + (parent?.referenceSystems ?: emptyList())\n val geographicBoundingBox: Sector? get() = _geographicBoundingBox?.geographicBoundingBox ?: parent?.geographicBoundingBox\n val boundingBoxes get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._boundingBoxes.forEach { bBox -> if (!result.containsKey(bBox.CRS)) result[bBox.CRS] = bBox }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val dimensions get(): List {\n val result = mutableMapOf()\n var parent = parent\n while (parent != null) {\n parent._dimensions.forEach { dimen -> if (!result.containsKey(dimen.name)) result[dimen.name] = dimen }\n parent = parent.parent\n }\n return result.values.toList()\n }\n val attribution: WmsAttribution? get() = _attribution ?: parent?.attribution\n val authorityUrls: List get() = _authorityUrls + (parent?.authorityUrls ?: emptyList())\n val maxScaleDenominator: Double? get() = _maxScaleDenominator ?: parent?.maxScaleDenominator\n val minScaleDenominator: Double? get() = _minScaleDenominator ?: parent?.minScaleDenominator\n val cascaded: Int? get() = _cascaded ?: parent?.cascaded\n val fixedWidth: Int? get() = _fixedWidth ?: parent?.fixedWidth\n val fixedHeight: Int? get() = _fixedHeight ?: parent?.fixedHeight\n @Transient\n var capability: WmsCapability? = null\n get() = field ?: parent?.capability\n @Transient\n var parent: WmsLayer? = null\n\n init {\n layers.forEach { layer -> layer.parent = this }\n }\n\n fun getStyle(name: String) = styles.firstOrNull { style -> style.name == name }\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LogoURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsLogoUrl(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: Set = setOf(),\n val onlineResource: WmsOnlineResource,\n val width: Int? = null,\n val height: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"MetadataURL\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsMetadataUrl(\n val type: String,\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val onlineResource: WmsOnlineResource\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsOnlineResource(\n @XmlSerialName(\"type\", XLINK_NAMESPACE, XLINK_PREFIX)\n val type: String = \"simple\",\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Request\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsRequest(\n @XmlSerialName(\"GetCapabilities\", WMS_NAMESPACE, WMS_PREFIX)\n val getCapabilities: WmsRequestOperation,\n @XmlSerialName(\"GetMap\", WMS_NAMESPACE, WMS_PREFIX)\n val getMap: WmsRequestOperation,\n @XmlSerialName(\"GetFeatureInfo\", WMS_NAMESPACE, WMS_PREFIX)\n val getFeatureInfo: WmsRequestOperation? = null\n)","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class WmsRequestOperation(\n @XmlSerialName(\"Format\", WMS_NAMESPACE, WMS_PREFIX)\n val formats: List = emptyList(),\n val dcpType: WmsDcpType\n) {\n val getUrl get() = dcpType.getHref\n val postUrl get() = dcpType.postHref\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Service\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsService(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Fees\", WMS_NAMESPACE, WMS_PREFIX)\n val fees: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AccessConstraints\", WMS_NAMESPACE, WMS_PREFIX)\n val accessConstraints: String? = null,\n @XmlSerialName(\"KeywordList\", WMS_NAMESPACE, WMS_PREFIX)\n @XmlChildrenName(\"Keyword\", WMS_NAMESPACE, WMS_PREFIX)\n val keywordList: List = listOf(),\n val onlineResource: WmsOnlineResource,\n val contactInformation: WmsContactInformation? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxWidth\", WMS_NAMESPACE, WMS_PREFIX)\n val maxWidth: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"MaxHeight\", WMS_NAMESPACE, WMS_PREFIX)\n val maxHeight: Int? = null,\n @XmlElement(true)\n @XmlSerialName(\"LayerLimit\", WMS_NAMESPACE, WMS_PREFIX)\n val layerLimit: Int? = null\n) {\n val url get() = onlineResource.url\n}","package earth.worldwind.ogc.wms\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMS_NAMESPACE, WMS_PREFIX)\ndata class WmsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Name\", WMS_NAMESPACE, WMS_PREFIX)\n val name: String,\n @XmlElement(true)\n @XmlSerialName(\"Title\", WMS_NAMESPACE, WMS_PREFIX)\n val title: String,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", WMS_NAMESPACE, WMS_PREFIX)\n val abstract: String? = null,\n @XmlSerialName(\"LegendURL\", WMS_NAMESPACE, WMS_PREFIX)\n val legendUrls: List = emptyList(),\n @XmlSerialName(\"StyleSheetURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleSheetUrl: WmsInfoUrl? = null,\n @XmlSerialName(\"StyleURL\", WMS_NAMESPACE, WMS_PREFIX)\n val styleUrl: WmsInfoUrl? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Address\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsAddress(\n @XmlSerialName(\"DeliveryPoint\", OWS11_NAMESPACE, OWS11_PREFIX)\n val deliveryPoints: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"City\", OWS11_NAMESPACE, OWS11_PREFIX)\n val city: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"AdministrativeArea\", OWS11_NAMESPACE, OWS11_PREFIX)\n val administrativeArea: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PostalCode\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postalCode: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Country\", OWS11_NAMESPACE, OWS11_PREFIX)\n val country: String? = null,\n @XmlSerialName(\"ElectronicMailAddress\", OWS11_NAMESPACE, OWS11_PREFIX)\n val electronicMailAddresses: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsBoundingBox(\n val crs: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"LowerCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val lowerCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"UpperCorner\", OWS11_NAMESPACE, OWS11_PREFIX)\n val upperCorner: String\n) {\n val sector get() = try {\n val regex = \"\\\\s+\".toRegex()\n val lowerValues = lowerCorner.split(regex)\n val upperValues = upperCorner.split(regex)\n val minLon = lowerValues[0].toDouble()\n val minLat = lowerValues[1].toDouble()\n val maxLon = upperValues[0].toDouble()\n val maxLat = upperValues[1].toDouble()\n Sector.fromDegrees(minLat, minLon, maxLat - minLat, maxLon - minLon)\n } catch (ex: Exception) {\n Logger.logMessage(\n Logger.ERROR, \"OwsBoundingBox\", \"sector\",\n \"Error parsing bounding box corners, LowerCorner=$lowerCorner UpperCorner=$upperCorner\", ex\n )\n null\n }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlDefault\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Constraint\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsConstraint(\n val name: String,\n @XmlSerialName(\"AllowedValues\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Value\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlDefault(\"AnyValue\")\n val allowedValues: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ContactInfo\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsContactInfo(\n val phone: OwsPhone? = null,\n val address: OwsAddress? = null,\n val onlineResource: OwsOnlineResource? = null,\n @XmlElement(true)\n @XmlSerialName(\"HoursOfService\", OWS11_NAMESPACE, OWS11_PREFIX)\n val hoursOfService: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"ContactInstructions\", OWS11_NAMESPACE, OWS11_PREFIX)\n val contactInstructions: String? = null\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"DCP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsDcp(\n val http: OwsHttp\n) {\n val getMethods get() = http.getMethods\n val postMethods get() = http.postMethods\n}","package earth.worldwind.ogc.wmts\n\nabstract class OwsDescription {\n abstract val title: String?\n abstract val abstract: String?\n abstract val keywords: List\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"HTTP\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsHttp(\n @XmlSerialName(\"Get\", OWS11_NAMESPACE, OWS11_PREFIX)\n val getMethods: List = emptyList(),\n @XmlSerialName(\"Post\", OWS11_NAMESPACE, OWS11_PREFIX)\n val postMethods: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\ndata class OwsHttpMethod(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val constraints: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OnlineResource\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOnlineResource(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Operation\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperation(\n val name: String,\n val dcps: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"OperationsMetadata\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsOperationsMetadata(\n val operations: List = emptyList()\n) {\n val getCapabilities get() = operations.firstOrNull { operation -> operation.name == \"GetCapabilities\" }\n val getTile get() = operations.firstOrNull { operation -> operation.name == \"GetTile\" }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Phone\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsPhone(\n @XmlElement(true)\n @XmlSerialName(\"Voice\", OWS11_NAMESPACE, OWS11_PREFIX)\n val voice: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Facsimile\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fax: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceContact\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceContact(\n @XmlElement(true)\n @XmlSerialName(\"IndividualName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val individualName: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"PositionName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val positionName: String? = null,\n val contactInfo: OwsContactInfo? = null,\n @XmlElement(true)\n @XmlSerialName(\"Role\", OWS11_NAMESPACE, OWS11_PREFIX)\n val role: String? = null,\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceIdentification\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceIdentification(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"ServiceType\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceType: String,\n @XmlSerialName(\"ServiceTypeVersion\", OWS11_NAMESPACE, OWS11_PREFIX)\n val serviceTypeVersions: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Fees\", OWS11_NAMESPACE, OWS11_PREFIX)\n val fees: String? = null,\n @XmlSerialName(\"AccessConstraints\", OWS11_NAMESPACE, OWS11_PREFIX)\n val accessConstraints: List = emptyList(),\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ServiceProvider\", OWS11_NAMESPACE, OWS11_PREFIX)\ndata class OwsServiceProvider(\n @XmlElement(true)\n @XmlSerialName(\"ProviderName\", OWS11_NAMESPACE, OWS11_PREFIX)\n val providerName: String,\n @XmlSerialName(\"ProviderSite\", OWS11_NAMESPACE, OWS11_PREFIX)\n val onlineResource: OwsOnlineResource? = null,\n val serviceContact: OwsServiceContact\n) {\n val providerSiteUrl get() = onlineResource?.url\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Capabilities\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsCapabilities(\n val version: String,\n val updateSequence: String? = null,\n val serviceIdentification: OwsServiceIdentification? = null,\n val serviceProvider: OwsServiceProvider? = null,\n val operationsMetadata: OwsOperationsMetadata? = null,\n val contents: WmtsContents,\n @XmlSerialName(\"Themes\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val themes: List = emptyList(),\n @XmlSerialName(\"ServiceMetadataURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val serviceMetadataUrls: List = emptyList()\n) {\n val layers get() = contents.layers\n val tileMatrixSets get() = contents.tileMatrixSets\n\n init {\n layers.forEach { layer -> layer.capabilities = this }\n }\n\n fun getLayer(identifier: String) = contents.layers.firstOrNull { layer -> layer.identifier == identifier }\n\n fun getTileMatrixSet(identifier: String) = contents.tileMatrixSets.firstOrNull { tms -> tms.identifier == identifier }\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Contents\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsContents(\n val layers: List = emptyList(),\n val tileMatrixSets: List = emptyList()\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Dimension\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsDimension(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"UOM\", OWS11_NAMESPACE, OWS11_PREFIX)\n val unitOfMeasure: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"UnitSymbol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val unitSymbol: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Default\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val valueDefault: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Current\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val current: Boolean? = null,\n @XmlSerialName(\"Value\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val values: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport kotlinx.serialization.Transient\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Layer\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLayer(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val boundingBoxes: List = emptyList(),\n @XmlSerialName(\"WGS84BoundingBox\", OWS11_NAMESPACE, OWS11_PREFIX)\n val wgs84BoundingBox: OwsBoundingBox? = null,\n @XmlSerialName(\"Metadata\", OWS11_NAMESPACE, OWS11_PREFIX)\n val metadata: List = emptyList(),\n val styles: List = emptyList(),\n @XmlSerialName(\"Format\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val formats: List = emptyList(),\n @XmlSerialName(\"InfoFormat\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val infoFormats: List = emptyList(),\n val tileMatrixSetLinks: List = emptyList(),\n val resourceUrls: List = emptyList(),\n val dimensions: List = emptyList(),\n): OwsDescription() {\n val layerSupportedTileMatrixSets get() = tileMatrixSetLinks.flatMap { link ->\n capabilities.tileMatrixSets.filter { set -> set.identifier == link.identifier }\n }\n @Transient\n lateinit var capabilities: WmtsCapabilities\n}","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"LegendURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsLegendURL(\n @XmlSerialName(\"href\", XLINK_NAMESPACE, XLINK_PREFIX)\n val url: String,\n val format: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"ResourceURL\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsResourceUrl(\n val format: String,\n val resourceType: String,\n val template: String\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Style\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsStyle(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val isDefault: Boolean = false,\n val legendUrls: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"Theme\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTheme(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n val themes: List = emptyList(),\n @XmlSerialName(\"LayerRef\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val layerRefs: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrix(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"ScaleDenominator\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val scaleDenominator: Double,\n @XmlElement(true)\n @XmlSerialName(\"TopLeftCorner\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val topLeftCorner: String,\n @XmlElement(true)\n @XmlSerialName(\"TileWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"TileHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileHeight: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixWidth\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixWidth: Int,\n @XmlElement(true)\n @XmlSerialName(\"MatrixHeight\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val matrixHeight: Int\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixLimits(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrix\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixIdentifier: String,\n @XmlElement(true)\n @XmlSerialName(\"MinTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileRow\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileRow: Int,\n @XmlElement(true)\n @XmlSerialName(\"MinTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val minTileCol: Int,\n @XmlElement(true)\n @XmlSerialName(\"MaxTileCol\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val maxTileCol: Int\n)","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSet(\n @XmlElement(true)\n @XmlSerialName(\"Title\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val title: String? = null,\n @XmlElement(true)\n @XmlSerialName(\"Abstract\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val abstract: String? = null,\n @XmlSerialName(\"Keywords\", OWS11_NAMESPACE, OWS11_PREFIX)\n @XmlChildrenName(\"Keyword\", OWS11_NAMESPACE, OWS11_PREFIX)\n override val keywords: List = emptyList(),\n @XmlElement(true)\n @XmlSerialName(\"Identifier\", OWS11_NAMESPACE, OWS11_PREFIX)\n val identifier: String,\n @XmlElement(true)\n @XmlSerialName(\"SupportedCRS\", OWS11_NAMESPACE, OWS11_PREFIX)\n val supportedCrs: String,\n @XmlElement(true)\n @XmlSerialName(\"WellKnownScaleSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val wellKnownScaleSet: String? = null,\n val boundingBox: OwsBoundingBox? = null,\n val tileMatrices: List = emptyList()\n): OwsDescription()","package earth.worldwind.ogc.wmts\n\nimport kotlinx.serialization.Serializable\nimport nl.adaptivity.xmlutil.serialization.XmlChildrenName\nimport nl.adaptivity.xmlutil.serialization.XmlElement\nimport nl.adaptivity.xmlutil.serialization.XmlSerialName\n\n@Serializable\n@XmlSerialName(\"TileMatrixSetLink\", WMTS10_NAMESPACE, WMTS10_PREFIX)\ndata class WmtsTileMatrixSetLink(\n @XmlElement(true)\n @XmlSerialName(\"TileMatrixSet\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val identifier: String,\n @XmlSerialName(\"TileMatrixSetLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n @XmlChildrenName(\"TileMatrixLimits\", WMTS10_NAMESPACE, WMTS10_PREFIX)\n val tileMatrixSetLimits: List = emptyList()\n)","package earth.worldwind.render\n\nimport kotlin.jvm.JvmOverloads\n\nabstract class AbstractRenderable @JvmOverloads constructor(override var displayName: String? = null): Renderable {\n override var isEnabled = true\n override var isPickEnabled = true\n override var pickDelegate: Any? = null\n private var userProperties: MutableMap? = null\n\n @Suppress(\"UNCHECKED_CAST\")\n override fun getUserProperty(key: Any) = userProperties?.get(key) as? T\n\n override fun putUserProperty(key: Any, value: Any): Any? {\n val userProperties = userProperties ?: mutableMapOf().also { userProperties = it }\n return userProperties.put(key, value)\n }\n\n override fun removeUserProperty(key: Any) = userProperties?.remove(key)\n\n override fun hasUserProperty(key: Any) = userProperties?.containsKey(key) == true\n\n override fun render(rc: RenderContext) { if (isEnabled && (isPickEnabled || !rc.isPickMode)) doRender(rc) }\n\n protected abstract fun doRender(rc: RenderContext)\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\n\nabstract class AbstractSurfaceRenderable(sector: Sector, displayName: String? = null) : AbstractRenderable(displayName) {\n var sector = Sector(sector)\n set(value) {\n field.copy(value)\n invalidateExtent()\n }\n protected val extent by lazy { BoundingBox() }\n protected val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n protected var extentGlobeState: Globe.State? = null\n protected var extentGlobeOffset: Globe.Offset? = null\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n if (globe.is2D) heightLimits.fill(0f) else calcHeightLimits(globe)\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightLimitsTimestamp || ve != extentExaggeration\n || state != extentGlobeState || offset != extentGlobeOffset ) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n extentGlobeState = state\n extentGlobeOffset = offset\n return extent\n }\n\n protected open fun calcHeightLimits(globe: Globe) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n\n protected open fun invalidateExtent() {\n heightLimitsTimestamp = 0L\n extentExaggeration = 0.0f\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.ceil\nimport kotlin.math.roundToInt\n\n/**\n * Color with red, green, blue and alpha components. Each RGB component is a number between 0.0 and 1.0 indicating the\n * component's intensity. The alpha component is a number between 0.0 (fully transparent) and 1.0 (fully opaque)\n * indicating the color's opacity.\n */\nopen class Color @JvmOverloads constructor(\n /**\n * The color's red component.\n */\n var red: Float,\n /**\n * The color's green component.\n */\n var green: Float,\n /**\n * The color's blue component.\n */\n var blue: Float,\n /**\n * The color's alpha component.\n */\n var alpha: Float = 1f\n) {\n /**\n * Constructs a color with red, green, blue and alpha all 1.0.\n */\n constructor(): this(red = 1f, green = 1f, blue = 1f, alpha = 1f)\n\n /**\n * Constructs a color from integer components\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n @JvmOverloads\n constructor(red: Int, green: Int, blue: Int, alpha: Int = 255): this(\n red = red / 255f,\n green = green / 255f,\n blue = blue / 255f,\n alpha = alpha / 255f\n )\n\n /**\n * Constructs a color with components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the components\n */\n constructor(colorInt: Int): this(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue = blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Constructs a color with the components of a specified color.\n *\n * @param color the color specifying the components\n */\n constructor(color: Color): this(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Sets this color to the specified components.\n *\n * @param red the new red component\n * @param green the new green component\n * @param blue the new blue component\n * @param alpha the new alpha component\n *\n * @return this color with its components set to the specified values\n */\n fun set(red: Float, green: Float, blue: Float, alpha: Float) = apply {\n this.red = red\n this.green = green\n this.blue = blue\n this.alpha = alpha\n }\n\n /**\n * Sets this color to the components stored in a color int. Color ints are stored as packed ints as follows:\n * `(alpha << 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and\n * 255 with 0 indicating the component's intensity.\n *\n * @param colorInt the color int specifying the new components\n *\n * @return this color with its components set to those of the specified color int\n */\n fun set(colorInt: Int) = set(\n red = red(colorInt) / 0xFF.toFloat(),\n green = green(colorInt) / 0xFF.toFloat(),\n blue= blue(colorInt) / 0xFF.toFloat(),\n alpha = alpha(colorInt) / 0xFF.toFloat()\n )\n\n /**\n * Sets this color to the components of a specified color.\n *\n * @param color the color specifying the new components\n *\n * @return this color with its components set to that of the specified color\n */\n fun copy(color: Color) = set(color.red, color.green, color.blue, color.alpha)\n\n /**\n * Copies this color's components to the specified array. The result is compatible with GLSL uniform vectors, and\n * can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's components\n */\n fun toArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"toArray\", \"missingArray\")\n }\n result[o++] = red\n result[o++] = green\n result[o++] = blue\n result[o] = alpha\n return result\n }\n\n /**\n * Returns this color's components as a color int. Color ints are stored as packed ints as follows: `(alpha <<\n * 24) | (red << 16) | (green << 8) | (blue)`. Each component is an 8 bit number between 0 and 255 with 0\n * indicating the component's intensity.\n *\n * @return this color converted to a color int\n */\n fun toColorInt(): Int {\n val r8 = (red * 0xFF).roundToInt()\n val g8 = (green * 0xFF).roundToInt()\n val b8 = (blue * 0xFF).roundToInt()\n val a8 = (alpha * 0xFF).roundToInt()\n return argb(a8, r8, g8, b8)\n }\n\n /**\n * Convert the argb color to its HSV components.\n * hsv[0] is Hue [0 .. 360)\n * hsv[1] is Saturation [0...1]\n * hsv[2] is Value [0...1]\n * @param hsv 3 element array which holds the resulting HSV components.\n */\n fun toHSV(hsv: FloatArray) {\n val v = red.coerceAtLeast(green).coerceAtLeast(blue)\n val diff = v - red.coerceAtMost(green).coerceAtMost(blue)\n var h: Float\n val s: Float\n if (diff == 0f) {\n h = 0f\n s = 0f\n } else {\n s = diff / v\n val rr = (v - red) / 6f / diff + 1f / 2f\n val gg = (v - green) / 6f / diff + 1f / 2f\n val bb = (v - blue) / 6f / diff + 1f / 2f\n\n h = if (red == v) bb - gg\n else if (green == v) (1f / 3f) + rr - bb\n else if (blue == v) (2f / 3f) + gg - rr\n else 0f\n if (h < 0f) h += 1f else if (h > 1f) h -= 1f\n }\n hsv[0] = h * 360f\n hsv[1] = s\n hsv[2] = v\n }\n\n /**\n * Premultiplies this color in place. The RGB components are multiplied by the alpha component.\n *\n * @return this color with its RGB components multiplied by its alpha component\n */\n fun premultiply() = apply {\n red *= alpha\n green *= alpha\n blue *= alpha\n }\n\n /**\n * Premultiplies the specified color and stores the result in this color. This color's RGB components are set to the\n * product of the specified color's RGB components and its alpha component. This color's alpha component is set to\n * the specified color's alpha.\n *\n * @param color the color with components to premultiply and store in this color\n *\n * @return this color set to the premultiplied components of the specified color\n */\n fun premultiplyColor(color: Color) = apply {\n red = color.red * color.alpha\n green = color.green * color.alpha\n blue = color.blue * color.alpha\n alpha = color.alpha\n }\n\n /**\n * Copies this color's premultiplied components to the specified array. The result is compatible with GLSL uniform\n * vectors, and can be passed to the function glUniform4fv.\n *\n * @param result a pre-allocated array of length 4 in which to return the components\n * @param offset a starting index in the result array\n *\n * @return the result argument set to this color's premultiplied components\n */\n fun premultiplyToArray(result: FloatArray, offset: Int): FloatArray {\n var o = offset\n require(result.size - o >= 4) {\n logMessage(ERROR, \"Color\", \"premultiplyToArray\", \"missingArray\")\n }\n result[o++] = red * alpha\n result[o++] = green * alpha\n result[o++] = blue * alpha\n result[o] = alpha\n return result\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Color) return false\n return red == other.red && green == other.green && blue == other.blue && alpha == other.alpha\n }\n\n override fun hashCode(): Int {\n var result = red.hashCode()\n result = 31 * result + green.hashCode()\n result = 31 * result + blue.hashCode()\n result = 31 * result + alpha.hashCode()\n return result\n }\n\n override fun toString() = \"Color(red=$red, green=$green, blue=$blue, alpha=$alpha)\"\n\n /**\n * Returns a string representation of this color, indicating the byte values corresponding to this color's\n * floating-point component values.\n *\n * @returns Byte string\n */\n fun toByteString(): String {\n val rb = (red * 255).roundToInt()\n val gb = (green * 255).roundToInt()\n val bb = (blue * 255).roundToInt()\n val ab = (alpha * 255).roundToInt()\n return \"($rb,$gb,$bb,$ab)\"\n }\n\n /**\n * Create a hex color string that CSS can use. Optionally, inhibit capturing alpha,\n * because some uses reject a four-component color specification.\n *\n * @param isUsingAlpha Enable the use of an alpha component.\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @returns A color string suitable for CSS.\n */\n fun toHexString(isUsingAlpha: Boolean = false, argb: Boolean = false): String {\n // Use Math.ceil() to get 0.75 to map to 0xc0. This is important if the display is dithering.\n val redHex = ceil(red * 255).toInt().toString(16)\n val greenHex = ceil(green * 255).toInt().toString(16)\n val blueHex = ceil(blue * 255).toInt().toString(16)\n val alphaHex = ceil(alpha * 255).toInt().toString(16)\n\n var result = \"#\"\n if (isUsingAlpha && argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n result += if (redHex.length < 2) (\"0$redHex\") else redHex\n result += if (greenHex.length < 2) (\"0$greenHex\") else greenHex\n result += if (blueHex.length < 2) (\"0$blueHex\") else blueHex\n if (isUsingAlpha && !argb) result += if (alphaHex.length < 2) (\"0$alphaHex\") else alphaHex\n return result\n }\n\n /**\n * Create a rgba color string that conforms to CSS Color Module Level 3 specification.\n * @returns A color string suitable for CSS.\n */\n fun toCssColorString(): String {\n val red = (red * 255).roundToInt()\n val green = (green * 255).roundToInt()\n val blue = (blue * 255).roundToInt()\n\n // Per the CSS Color Module Level 3 specification, alpha is expressed as floating point value between 0 - 1\n return \"rgba($red, $green, $blue, $alpha)\"\n }\n\n companion object {\n /**\n * @param hexString representing hex value\n * (formatted \"0xRRGGBB\" i.e. \"0xFFFFFF\")\n * OR\n * formatted \"0xAARRGGBB\" i.e. \"0x00FFFFFF\" for a color with an alpha value\n * I will also put up with \"RRGGBB\" and \"AARRGGBB\" without the starting \"0x\"\n * @param argb If true use #AARRGGBB sequence, otherwise use #RRGGBBAA\n * @return color represented by hex string\n */\n fun fromHexString(hexString: String, argb: Boolean = false): Color {\n val hexValue = when {\n hexString[0] == '#' -> hexString.substring(1)\n hexString.substring(0, 2).equals(\"0x\", true) -> hexString.substring(2)\n else -> hexString\n }.uppercase()\n\n val length = hexValue.length\n\n return if (length == 8 || length == 6) {\n val hexAlphabet = \"0123456789ABCDEF\"\n val value = intArrayOf(0, 0, 0, 0)\n for ((k, i) in (0 until length step 2).withIndex()) {\n val int1 = hexAlphabet.indexOf(hexValue[i])\n val int2 = hexAlphabet.indexOf(hexValue[i + 1])\n value[k] = int1 * 16 + int2\n }\n\n when (length) {\n 8 -> if (argb) Color(value[1],value[2],value[3],value[0]) else Color(value[0],value[1],value[2],value[3])\n 6 -> Color(value[0],value[1],value[2])\n else -> error(\"Bad hex value: $hexString\")\n }\n } else error(\"Bad hex value: $hexString\")\n }\n\n /**\n * Return the alpha component of a color int. This is the same as saying\n * color >>> 24\n */\n private fun alpha(color: Int) = color ushr 24\n\n /**\n * Return the red component of a color int. This is the same as saying\n * (color >> 16) & 0xFF\n */\n private fun red(color: Int) = color shr 16 and 0xFF\n\n /**\n * Return the green component of a color int. This is the same as saying\n * (color >> 8) & 0xFF\n */\n private fun green(color: Int) = color shr 8 and 0xFF\n\n /**\n * Return the blue component of a color int. This is the same as saying\n * color & 0xFF\n */\n private fun blue(color: Int) = color and 0xFF\n\n /**\n * Return a color-int from alpha, red, green, blue components.\n * These component values should be \\([0..255]\\), but there is no\n * range check performed, so if they are out of range, the\n * returned color is undefined.\n * @param alpha Alpha component \\([0..255]\\) of the color\n * @param red Red component \\([0..255]\\) of the color\n * @param green Green component \\([0..255]\\) of the color\n * @param blue Blue component \\([0..255]\\) of the color\n */\n private fun argb(alpha: Int, red: Int, green: Int, blue: Int) = alpha shl 24 or (red shl 16) or (green shl 8) or blue\n }\n}","package earth.worldwind.render\n\nenum class FontWeight { NORMAL, BOLD, ITALIC }","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.*\n\nopen class Framebuffer : RenderResource {\n protected var framebufferName = KglFramebuffer.NONE\n protected val attachedTextures = mutableMapOf()\n\n override fun release(dc: DrawContext) {\n if (framebufferName.isValid()) {\n deleteFramebuffer(dc)\n attachedTextures.clear()\n }\n }\n\n fun bindFramebuffer(dc: DrawContext): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) dc.bindFramebuffer(framebufferName)\n return framebufferName.isValid()\n }\n\n fun attachTexture(dc: DrawContext, texture: Texture, attachment: Int): Boolean {\n if (!framebufferName.isValid()) createFramebuffer(dc)\n if (framebufferName.isValid()) {\n framebufferTexture(dc, texture, attachment)\n attachedTextures[attachment] = texture\n }\n return framebufferName.isValid()\n }\n\n fun getAttachedTexture(attachment: Int) = attachedTextures[attachment] ?: error(\"Invalid attachment type\")\n\n fun isFramebufferComplete(dc: DrawContext) = framebufferStatus(dc) == GL_FRAMEBUFFER_COMPLETE\n\n protected open fun createFramebuffer(dc: DrawContext) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Create the OpenGL framebuffer object.\n framebufferName = dc.gl.createFramebuffer()\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, framebufferName)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.gl.bindFramebuffer(GL_FRAMEBUFFER, currentFramebuffer)\n }\n }\n\n protected open fun deleteFramebuffer(dc: DrawContext) {\n dc.gl.deleteFramebuffer(framebufferName)\n framebufferName = KglFramebuffer.NONE\n }\n\n protected open fun framebufferTexture(dc: DrawContext, texture: Texture?, attachment: Int) {\n val currentFramebuffer = dc.currentFramebuffer\n try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Attach the texture to the framebuffer object, or remove the attachment if the texture is null.\n val textureName = texture?.getTextureName(dc) ?: KglTexture.NONE\n dc.gl.framebufferTexture2D(GL_FRAMEBUFFER, attachment, GL_TEXTURE_2D, textureName, 0 /*level*/)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n\n protected open fun framebufferStatus(dc: DrawContext): Int {\n val currentFramebuffer = dc.currentFramebuffer\n return try {\n // Make the OpenGL framebuffer object the currently active framebuffer.\n dc.bindFramebuffer(framebufferName)\n // Get the OpenGL framebuffer object status code.\n dc.gl.checkFramebufferStatus(GL_FRAMEBUFFER)\n } finally {\n // Restore the current OpenGL framebuffer object binding.\n dc.bindFramebuffer(currentFramebuffer)\n }\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.PickedObjectList\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableGroup\nimport earth.worldwind.draw.DrawableQueue\nimport earth.worldwind.draw.DrawableTerrain\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.AltitudeMode.*\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.globe.terrain.Terrain\nimport earth.worldwind.globe.terrain.Tessellator\nimport earth.worldwind.layer.Layer\nimport earth.worldwind.layer.LayerList\nimport earth.worldwind.render.buffer.AbstractBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.AbstractShaderProgram\nimport earth.worldwind.shape.TextAttributes\nimport earth.worldwind.util.Pool\nimport earth.worldwind.util.SynchronizedPool\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport kotlinx.coroutines.CompletableDeferred\nimport kotlin.math.tan\n\nopen class RenderContext {\n companion object {\n private const val MAX_PICKED_OBJECT_ID = 0xFFFFFF\n }\n\n lateinit var globe: Globe\n lateinit var terrainTessellator: Tessellator\n lateinit var terrain: Terrain\n lateinit var layers: LayerList\n lateinit var currentLayer: Layer\n lateinit var camera: Camera\n lateinit var renderResourceCache: RenderResourceCache\n var densityFactor = 1f\n var verticalExaggeration = 1.0\n var horizonDistance = 0.0\n var atmosphereAltitude = 0.0\n var viewingDistance = 0.0\n var pixelSize = 0.0\n var lookAtPosition: Position? = null\n var globeState: Globe.State? = null\n var elevationModelTimestamp = 0L\n var cameraPoint = Vec3()\n val viewport = Viewport()\n val projection = Matrix4()\n val modelview = Matrix4()\n val modelviewProjection = Matrix4()\n val frustum = Frustum()\n var drawableQueue: DrawableQueue? = null\n var drawableTerrain: DrawableQueue? = null\n var pickedObjects: PickedObjectList? = null\n var pickDeferred: CompletableDeferred? = null\n var pickViewport: Viewport? = null\n var pickPoint: Vec2? = null\n var pickRay: Line? = null\n var isPickMode = false\n var isRedrawRequested = false\n protected set\n private var pickedObjectId = 0\n private var pixelSizeFactor = 0.0\n private val userProperties = mutableMapOf()\n val drawablePools = mutableMapOf>()\n private val textRenderer = TextRenderer(this)\n private val scratchTextCacheKey = TextCacheKey()\n private val scratchVector = Vec3()\n\n val tessellator: GLUtessellator by lazy { GLU.gluNewTess() }\n\n open fun reset() {\n densityFactor = 1f\n verticalExaggeration = 1.0\n horizonDistance = 0.0\n atmosphereAltitude = 0.0\n viewingDistance = 0.0\n pixelSize = 0.0\n lookAtPosition = null\n globeState = null\n elevationModelTimestamp = 0L\n cameraPoint.set(0.0, 0.0, 0.0)\n viewport.setEmpty()\n projection.setToIdentity()\n modelview.setToIdentity()\n modelviewProjection.setToIdentity()\n frustum.setToUnitFrustum()\n drawableQueue = null\n drawableTerrain = null\n pickedObjects = null\n pickDeferred = null\n pickViewport = null\n pickPoint = null\n pickRay = null\n isPickMode = false\n pickedObjectId = 0\n isRedrawRequested = false\n pixelSizeFactor = 0.0\n userProperties.clear()\n }\n\n fun requestRedraw() { isRedrawRequested = true }\n\n /**\n * Returns the height of a pixel at a given distance from the eye point. This method assumes the model of a screen\n * composed of rectangular pixels, where pixel coordinates denote infinitely thin space between pixels. The units of\n * the returned size are in meters per pixel.\n *
\n * The result of this method is undefined if the distance is negative.\n *\n * @param distance the distance from the eye point in meters\n *\n * @return the pixel height in meters per pixel\n */\n fun pixelSizeAtDistance(distance: Double): Double {\n if (pixelSizeFactor == 0.0) { // cache the scaling factor used to convert distances to pixel sizes\n val fov = camera.fieldOfView\n val tanFov2 = tan(fov.inRadians * 0.5)\n pixelSizeFactor = 2 * tanFov2 / viewport.height\n }\n return distance * pixelSizeFactor\n }\n\n /**\n * Projects a Cartesian point to screen coordinates. The resultant screen point is in OpenGL screen coordinates,\n * with the origin in the bottom-left corner and axes that extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *\n * @param modelPoint the Cartesian point to project\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun project(modelPoint: Vec3, result: Vec3): Boolean {\n // TODO consider consolidating this with Matrix4.project and moving projectWithDepth to Matrix4\n // Transform the model point from model coordinates to eye coordinates then to clip coordinates. This\n // inverts the Z axis and stores the negative of the eye coordinate Z value in the W coordinate.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelviewProjection.m\n var x = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n var y = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n var z = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val w = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Convert the point from clip coordinate to the range [0,1]. This enables the X and Y coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range[0,1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Projects a Cartesian point to screen coordinates, applying an offset to the point's projected depth value. The\n * resultant screen point is in OpenGL screen coordinates, with the origin in the bottom-left corner and axes that\n * extend up and to the right from the origin.\n *
\n * This stores the projected point in the result argument, and returns a boolean value indicating whether or not the\n * projection is successful. This returns false if the Cartesian point is clipped by the near clipping plane or the\n * far clipping plane.\n *
\n * The depth offset may be any real number and is typically used to move the screenPoint slightly closer to the\n * user's eye in order to give it visual priority over nearby objects or terrain. An offset of zero has no effect.\n * An offset less than zero brings the screenPoint closer to the eye, while an offset greater than zero pushes the\n * projected screen point away from the eye.\n *
\n * Applying a non-zero depth offset has no effect on whether the model point is clipped by this method or by WebGL.\n * Clipping is performed on the original model point, ignoring the depth offset. The final depth value after\n * applying the offset is clamped to the range [0,1].\n *\n * @param modelPoint the Cartesian point to project\n * @param depthOffset the amount of depth offset to apply\n * @param result a pre-allocated [Vec3] in which to return the projected point\n *\n * @return true if the transformation is successful, otherwise false\n */\n fun projectWithDepth(modelPoint: Vec3, depthOffset: Double, result: Vec3): Boolean {\n // Transform the model point from model coordinates to eye coordinates. The eye coordinate and the clip\n // coordinate are transformed separately in order to reuse the eye coordinate below.\n val mx = modelPoint.x\n val my = modelPoint.y\n val mz = modelPoint.z\n val m = modelview.m\n val ex = m[0] * mx + m[1] * my + m[2] * mz + m[3]\n val ey = m[4] * mx + m[5] * my + m[6] * mz + m[7]\n val ez = m[8] * mx + m[9] * my + m[10] * mz + m[11]\n val ew = m[12] * mx + m[13] * my + m[14] * mz + m[15]\n\n // Transform the point from eye coordinates to clip coordinates.\n val p = projection.m\n var x = p[0] * ex + p[1] * ey + p[2] * ez + p[3] * ew\n var y = p[4] * ex + p[5] * ey + p[6] * ez + p[7] * ew\n var z = p[8] * ex + p[9] * ey + p[10] * ez + p[11] * ew\n val w = p[12] * ex + p[13] * ey + p[14] * ez + p[15] * ew\n if (w == 0.0) return false\n\n // Complete the conversion from model coordinates to clip coordinates by dividing by W. The resultant X, Y\n // and Z coordinates are in the range [-1,1].\n x /= w\n y /= w\n z /= w\n\n // Clip the point against the near and far clip planes.\n if (z < -1 || z > 1) return false\n\n // Transform the Z eye coordinate to clip coordinates again, this time applying a depth offset. The depth\n // offset is applied only to the matrix element affecting the projected Z coordinate, so we inline the\n // computation here instead of re-computing X, Y, Z and W in order to improve performance. See\n // Matrix4.offsetProjectionDepth for more information on the effect of this offset.\n z = p[8] * ex + p[9] * ey + p[10] * ez * (1 + depthOffset) + p[11] * ew\n z /= w\n\n // Clamp the point to the near and far clip planes. We know the point's original Z value is contained within\n // the clip planes, so we limit its offset z value to the range [-1, 1] in order to ensure it is not clipped\n // by WebGL. In clip coordinates the near and far clip planes are perpendicular to the Z axis and are\n // located at -1 and 1, respectively.\n z = z.coerceIn(-1.0, 1.0)\n\n // Convert the point from clip coordinates to the range [0, 1]. This enables the XY coordinates to be\n // converted to screen coordinates, and the Z coordinate to represent a depth value in the range [0, 1].\n x = x * 0.5 + 0.5\n y = y * 0.5 + 0.5\n z = z * 0.5 + 0.5\n\n // Convert the X and Y coordinates from the range [0,1] to screen coordinates.\n x = x * viewport.width + viewport.x\n y = y * viewport.height + viewport.y\n result.x = x\n result.y = y\n result.z = z\n return true\n }\n\n /**\n * Converts a geographic [Position] to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param position the specified position\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n position: Position, altitudeMode: AltitudeMode, result: Vec3\n ) = geographicToCartesian(position.latitude, position.longitude, position.altitude, altitudeMode, result)\n\n /**\n * Converts a geographic position to Cartesian coordinates according to an [altitudeMode].\n * The Cartesian coordinate system is a function of this render context's current globe and its terrain surface,\n * depending on the altitude mode. In general, it is not safe to cache the Cartesian coordinates,\n * as many factors contribute to the value returned, and may change from one frame to the next.\n *\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param altitudeMode an altitude mode indicating how to interpret the position's altitude component\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(\n latitude: Angle, longitude: Angle, altitude: Double, altitudeMode: AltitudeMode, result: Vec3\n ): Vec3 {\n when (altitudeMode) {\n ABSOLUTE -> globe.geographicToCartesian(latitude, longitude, altitude * verticalExaggeration, result)\n CLAMP_TO_GROUND -> if (!terrain.surfacePoint(latitude, longitude, result)) globe.run {\n // Use elevation model height as a fallback\n val elevation = getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n RELATIVE_TO_GROUND -> if (terrain.surfacePoint(latitude, longitude, result)) {\n // Offset along the normal vector at the terrain surface point.\n if (altitude != 0.0) globe.geographicToCartesianNormal(latitude, longitude, scratchVector).also {\n result.add(scratchVector.multiply(altitude))\n }\n } else globe.run {\n // Use elevation model height as a fallback\n val elevation = altitude + getElevation(latitude, longitude)\n geographicToCartesian(latitude, longitude, elevation * verticalExaggeration, result)\n }\n }\n return result\n }\n\n // TODO redesign ShaderProgram to operate as a resource accessible from DrawContext\n // TODO created automatically on OpenGL thread, unless the caller wants to explicitly create a program\n inline fun getShaderProgram(builder: () -> T): T {\n val key = T::class\n return renderResourceCache.run { get(key) ?: builder().also { put(key, it, it.programLength) } } as T\n }\n\n fun getTexture(imageSource: ImageSource, imageOptions: ImageOptions?, retrieve: Boolean = true) =\n renderResourceCache.run { get(imageSource) ?: if (retrieve) retrieveTexture(imageSource, imageOptions) else null } as Texture?\n\n inline fun getBufferObject(key: Any, builder: () -> T) =\n renderResourceCache.run { get(key) ?: builder().also { put(key, it, it.byteCount) } } as T\n\n fun getText(text: String?, attributes: TextAttributes, render: Boolean = true) = renderResourceCache.run {\n scratchTextCacheKey.text = text\n scratchTextCacheKey.attributes = attributes\n // Use scratch key on get operation to avoid unnecessary object creation on each text render on each frame\n get(scratchTextCacheKey) as Texture? ?: if (render) textRenderer.renderText(text, attributes)?.also {\n // Use new text cache key and copy attributes on put operation to avoid cache issues on attributes modification\n put(TextCacheKey(text, TextAttributes(attributes)), it, it.byteCount)\n } else null\n }\n\n fun offerBackgroundDrawable(drawable: Drawable) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.BACKGROUND, 0.0)\n }\n\n fun offerSurfaceDrawable(drawable: Drawable, zOrder: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SURFACE, zOrder)\n }\n\n fun offerShapeDrawable(drawable: Drawable, cameraDistance: Double) {\n drawableQueue?.offerDrawable(drawable, DrawableGroup.SHAPE, -cameraDistance) // order by descending distance to the viewer\n }\n\n fun offerDrawableTerrain(drawable: DrawableTerrain, sortOrder: Double) {\n drawableTerrain?.offerDrawable(drawable, DrawableGroup.SURFACE, sortOrder)\n }\n\n fun sortDrawables() {\n drawableQueue?.sortDrawables()\n drawableTerrain?.sortDrawables()\n }\n\n val drawableCount get() = drawableQueue?.count ?: 0\n\n @Suppress(\"UNCHECKED_CAST\")\n inline fun getDrawablePool(): Pool {\n val key = T::class\n // use SynchronizedPool; acquire and are release may be called in separate threads\n return drawablePools[key] as Pool? ?: SynchronizedPool().also { drawablePools[key] = it }\n }\n\n fun offerPickedObject(pickedObject: PickedObject) { pickedObjects?.offerPickedObject(pickedObject) }\n\n fun nextPickedObjectId(): Int {\n if (++pickedObjectId > MAX_PICKED_OBJECT_ID) pickedObjectId = 1\n return pickedObjectId\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun getUserProperty(key: Any) = userProperties[key] as? T\n\n fun putUserProperty(key: Any, value: Any) = userProperties.put(key, value)\n\n fun removeUserProperty(key: Any) = userProperties.remove(key)\n\n fun hasUserProperty(key: Any) = userProperties.containsKey(key)\n\n protected data class TextCacheKey(\n var text: String? = null,\n var attributes: TextAttributes? = null\n )\n}","package earth.worldwind.render\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport earth.worldwind.util.math.powerOfTwoCeiling\n\nopen class Texture(val width: Int, val height: Int, protected val format: Int, protected val type: Int, protected val isRT: Boolean = false) : RenderResource {\n companion object {\n protected fun estimateByteCount(width: Int, height: Int, format: Int, type: Int, hasMipMap: Boolean): Int {\n require(width >= 0 && height >= 0) {\n logMessage(ERROR, \"Texture\", \"estimateByteCount\", \"invalidWidthOrHeight\")\n }\n // Compute the number of bytes per row of texture image level 0. Use a default of 32 bits per pixel when either\n // of the bitmap's type or internal format are unrecognized. Adjust the width to the next highest power-of-two\n // to better estimate the memory consumed by non-power-of-two images.\n val widthPow2 = powerOfTwoCeiling(width)\n val bytesPerRow = when (type) {\n GL_UNSIGNED_BYTE -> when (format) {\n GL_ALPHA, GL_LUMINANCE -> widthPow2 // 8 bits per pixel\n GL_LUMINANCE_ALPHA -> widthPow2 * 2 // 16 bits per pixel\n GL_RGB -> widthPow2 * 3 // 24 bits per pixel\n GL_RGBA -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n GL_UNSIGNED_SHORT, GL_UNSIGNED_SHORT_5_6_5,\n GL_UNSIGNED_SHORT_4_4_4_4, GL_UNSIGNED_SHORT_5_5_5_1 -> widthPow2 * 2 // 16 bits per pixel\n GL_UNSIGNED_INT -> widthPow2 * 4 // 32 bits per pixel\n else -> widthPow2 * 4 // 32 bits per pixel\n }\n\n // Compute the number of bytes for the entire texture image level 0 (i.e. bytePerRow * numRows). Adjust the\n // height to the next highest power-of-two to better estimate the memory consumed by non power-of-two images.\n val heightPow2 = powerOfTwoCeiling(height)\n var byteCount = bytesPerRow * heightPow2\n\n // If the texture will have mipmaps, add 1/3 to account for the bytes used by texture image level 1 through\n // texture image level N.\n if (hasMipMap) byteCount += byteCount / 3\n return byteCount\n }\n }\n\n val coordTransform = Matrix3()\n val byteCount get() = estimateByteCount(width, height, format, type, hasMipMap)\n protected var name = KglTexture.NONE\n protected var parameters: MutableMap? = null\n protected open val hasMipMap = false\n private var pickMode = false\n\n fun getTexParameter(name: Int) = parameters?.get(name)?:0\n\n fun setTexParameter(name: Int, param: Int) {\n val parameters = parameters ?: mutableMapOf().also { parameters = it }\n parameters[name] = param\n }\n\n override fun release(dc: DrawContext) {\n if (name.isValid()) deleteTexture(dc)\n }\n\n fun getTextureName(dc: DrawContext): KglTexture {\n if (!name.isValid()) createTexture(dc)\n return name\n }\n\n fun bindTexture(dc: DrawContext): Boolean {\n if (!name.isValid()) createTexture(dc)\n if (name.isValid()) dc.bindTexture(name)\n if (name.isValid() && pickMode != dc.isPickMode) {\n setTexParameters(dc)\n pickMode = dc.isPickMode\n }\n return name.isValid()\n }\n\n protected open fun createTexture(dc: DrawContext) {\n val currentTexture = dc.currentTexture\n try {\n // Create the OpenGL texture 2D object.\n name = dc.gl.createTexture()\n dc.gl.bindTexture(GL_TEXTURE_2D, name)\n\n // Specify the texture object's image data\n allocTexImage(dc)\n\n // Configure the texture object's parameters.\n setTexParameters(dc)\n } finally {\n // Restore the current OpenGL texture object binding.\n dc.gl.bindTexture(GL_TEXTURE_2D, currentTexture)\n }\n }\n\n protected open fun deleteTexture(dc: DrawContext) {\n dc.gl.deleteTexture(name)\n name = KglTexture.NONE\n }\n\n protected open fun allocTexImage(dc: DrawContext) {\n // Following line of code is a dirty hack to disable AFBC compression on Mali GPU driver,\n // which cause huge memory leak during surface shapes drawing on terrain textures.\n if (isRT and dc.gl.hasMaliOOMBug) dc.gl.texImage2D(GL_TEXTURE_2D, 0, format, 1, 1, 0, format, type, null)\n\n // Allocate texture memory for the OpenGL texture 2D object. The texture memory is initialized with 0.\n dc.gl.texImage2D(\n GL_TEXTURE_2D, 0 /*level*/, format, width, height, 0 /*border*/, format, type, null /*pixels*/\n )\n }\n\n // TODO refactor setTexParameters to apply all configured tex parameters\n // TODO apply defaults only when no parameter is configured\n // TODO consider simplifying the defaults and requiring that layers/shapes specify what they want\n protected open fun setTexParameters(dc: DrawContext) {\n var param: Int\n\n // Configure the OpenGL texture minification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MIN_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, param)\n else -> dc.gl.texParameteri(\n GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, if (hasMipMap) GL_LINEAR_MIPMAP_LINEAR else GL_LINEAR\n )\n }\n\n // Configure the OpenGL texture magnification function. Always use the nearest filtering function in picking mode.\n when {\n dc.isPickMode -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n getTexParameter(GL_TEXTURE_MAG_FILTER).also { param = it } != 0 ->\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, param)\n else -> dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)\n }\n\n // Configure the OpenGL texture wrapping function for texture coordinate S. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_S).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)\n\n // Configure the OpenGL texture wrapping function for texture coordinate T. Default to the edge clamping\n // function to render image tiles without seams.\n if (getTexParameter(GL_TEXTURE_WRAP_T).also { param = it } != 0)\n dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, param)\n else dc.gl.texParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Range\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.KglBuffer\n\nabstract class AbstractBufferObject(protected val target: Int, val byteCount: Int) : RenderResource {\n val ranges = mutableMapOf()\n protected var id = KglBuffer.NONE\n\n override fun release(dc: DrawContext) { deleteBufferObject(dc) }\n\n open fun bindBuffer(dc: DrawContext): Boolean {\n if (id.isValid()) dc.bindBuffer(target, id)\n return id.isValid()\n }\n\n protected open fun loadBuffer(dc: DrawContext) {\n val currentBuffer = dc.currentBuffer(target)\n try {\n // Create the OpenGL buffer object.\n if (!id.isValid()) createBufferObject(dc)\n // Make the OpenGL buffer object bound to the specified target.\n dc.bindBuffer(target, id)\n // Load the current NIO buffer as the OpenGL buffer object's data.\n loadBufferObjectData(dc)\n } catch (e: Exception) {\n // The NIO buffer could not be used as buffer data for an OpenGL buffer object. Delete the buffer object\n // to ensure that calls to bindBuffer fail.\n deleteBufferObject(dc)\n logMessage(\n ERROR, \"BufferObject\", \"loadBuffer\", \"Exception attempting to load buffer data\", e\n )\n } finally {\n // Restore the current OpenGL buffer object binding.\n dc.bindBuffer(target, currentBuffer)\n }\n }\n\n protected open fun createBufferObject(dc: DrawContext) { id = dc.gl.createBuffer() }\n\n protected open fun deleteBufferObject(dc: DrawContext) {\n if (id.isValid()) {\n dc.gl.deleteBuffer(id)\n id = KglBuffer.NONE\n }\n }\n\n protected abstract fun loadBufferObjectData(dc: DrawContext)\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.util.kgl.KglBuffer\nimport earth.worldwind.draw.DrawContext\n\nopen class BufferPool(\n protected val target: Int,\n protected val usage: Int,\n protected val blockSize: Int = DEFAULT_BLOCK_SIZE,\n protected val blockCount: Int = DEFAULT_BLOCK_COUNT\n) {\n protected val buffers = Array(blockCount) { KglBuffer.NONE }\n protected var index = 0\n protected var offset = 0\n\n fun reset() {\n index = 0\n offset = 0\n }\n\n fun contextLost() {\n reset()\n buffers.fill(KglBuffer.NONE)\n }\n\n open fun bindBuffer(dc: DrawContext, sourceData: FloatArray): Int {\n if (blockSize < sourceData.size * Float.SIZE_BYTES) return -1\n if (!buffers[index].isValid() && !appendBuffer(dc)) return -1\n\n if(!enoughSpace(sourceData)) {\n index = (index + 1) % blockCount;\n if(!appendBuffer(dc)) return -1\n }\n\n dc.gl.bindBuffer(target, buffers[index])\n\n return subAllocAndPopulate(dc, sourceData)\n }\n\n private fun enoughSpace(sourceData: FloatArray) = offset + sourceData.size * Float.SIZE_BYTES <= blockSize\n\n private fun appendBuffer(dc: DrawContext): Boolean {\n if(!buffers[index].isValid() && !allocNewBuffer(dc)) return false\n offset = 0\n return true\n }\n\n private fun allocNewBuffer(dc: DrawContext): Boolean {\n val id = dc.gl.createBuffer()\n if (!id.isValid()) return false\n dc.gl.bindBuffer(target, id)\n dc.gl.bufferData(target, blockSize, null as FloatArray?, usage) // Only reserve memory\n dc.gl.bindBuffer(target, KglBuffer.NONE)\n buffers[index] = id\n return id.isValid()\n }\n\n private fun subAllocAndPopulate(dc: DrawContext, sourceData: FloatArray): Int {\n val bufferSize = sourceData.size * Float.SIZE_BYTES\n if (offset + bufferSize > blockSize) return -1\n dc.gl.bufferSubData(target, offset, bufferSize, sourceData) // Update part of the buffer\n val result = offset\n offset += bufferSize\n return result\n }\n\n companion object {\n const val DEFAULT_BLOCK_SIZE = 64 * 1024 // 64 KB\n const val DEFAULT_BLOCK_COUNT = 64\n }\n}\n","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class FloatBufferObject(\n target: Int, array: FloatArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Float.SIZE_BYTES) {\n protected var array: FloatArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class IntBufferObject(\n target: Int, array: IntArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Int.SIZE_BYTES) {\n protected var array: IntArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.buffer\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.util.kgl.GL_STATIC_DRAW\n\nopen class ShortBufferObject(\n target: Int, array: ShortArray, size: Int = array.size\n) : AbstractBufferObject(target, size * Short.SIZE_BYTES) {\n protected var array: ShortArray? = array\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n array = null // array can be non-null if the object has not been bound\n }\n\n override fun bindBuffer(dc: DrawContext): Boolean {\n array?.let { loadBuffer(dc) }.also { array = null }\n return super.bindBuffer(dc)\n }\n\n override fun loadBufferObjectData(dc: DrawContext) {\n array?.let { dc.gl.bufferData(target, byteCount, it, GL_STATIC_DRAW) }\n }\n}","package earth.worldwind.render.image\n\n/**\n * Image config indicates the in-memory representation for images displayed by WorldWind components. Images are\n * typically represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do\n * not require an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration.\n * Accepted values are [RGBA_8888] and [RGB_565].\n */\nenum class ImageConfig {\n /**\n * Indicating 32-bit RGBA_8888 image configuration.\n */\n RGBA_8888,\n /**\n * Indicating 16-bit RGBA_565 image configuration.\n */\n RGB_565;\n}","package earth.worldwind.render.image\n\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Options for images displayed by WorldWind components.\n */\nopen class ImageOptions @JvmOverloads constructor(\n /**\n * Indicates the in-memory configuration for images displayed by WorldWind components. By default, images are\n * represented in the 32-bit RGBA_8888 configuration, the highest quality available. Components that do not require\n * an alpha channel and want to conserve memory may use the 16-bit RGBA_565 configuration. Accepted values are\n * [ImageConfig.RGBA_8888] and [ImageConfig.RGB_565].\n */\n var imageConfig: ImageConfig = ImageConfig.RGBA_8888\n) {\n /**\n * Indicates the image sampling algorithm used by WorldWind to display images that appear larger or smaller on\n * screen than their native resolution. Accepted values are [ResamplingMode.BILINEAR] and [ResamplingMode.NEAREST_NEIGHBOR].\n */\n var resamplingMode = ResamplingMode.BILINEAR\n /**\n * Indicates how WorldWind displays the contents of an image when attempting to draw a region outside of the image\n * bounds. Accepted values are [WrapMode.CLAMP] and [WrapMode.REPEAT].\n */\n var wrapMode = WrapMode.CLAMP\n /**\n * Initial width for image that has no dimensions (e.g. SVG image)\n */\n var initialWidth = 0\n /**\n * Initial height for image that has no dimensions (e.g. SVG image)\n */\n var initialHeight = 0\n}","package earth.worldwind.render.image\n\n/**\n * Resampling mode indicates the image sampling algorithm used by WorldWind to display images that appear larger or\n * smaller on screen than their native resolution. Accepted values are [BILINEAR] and [NEAREST_NEIGHBOR].\n */\nenum class ResamplingMode {\n /**\n * Indicating bilinear image sampling.\n */\n BILINEAR,\n /**\n * Indicating nearest neighbor image sampling.\n */\n NEAREST_NEIGHBOR;\n}","package earth.worldwind.render.image\n\n/**\n * Wrap mode indicates how WorldWind displays the contents of an image when attempting to draw a region outside of\n * the image bounds. Accepted values are [CLAMP] and [REPEAT].\n */\nenum class WrapMode {\n /**\n * Indicating that the image's edge pixels should be displayed outside of the image bounds.\n */\n CLAMP,\n /**\n * Indicating that the image should display as a repeating pattern outside of the image bounds.\n */\n REPEAT;\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.RenderResource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\n\n/**\n * Represents an OpenGL shading language (GLSL) shader program and provides methods for identifying and accessing shader\n * variables. Shader programs are configured by calling `setProgramSources` to specify the the GLSL vertex\n * shader and fragment shader source code, then made current by calling `useProgram`.\n */\nabstract class AbstractShaderProgram: RenderResource {\n companion object {\n protected const val VERTEX_SHADER = 0\n protected const val FRAGMENT_SHADER = 1\n }\n\n protected abstract var programSources: Array\n protected abstract val attribBindings: Array\n protected lateinit var gl : Kgl\n private set\n /**\n * Indicates the approximate size of the OpenGL resources referenced by this GPU program.\n */\n val programLength get() = programSources.sumOf{str -> str.length}\n\n /**\n * Indicates the OpenGL program object associated with this GPU program.\n */\n protected var program = KglProgram.NONE\n protected var mustBuildProgram = true\n\n override fun release(dc: DrawContext) = deleteProgram(dc)\n\n fun useProgram(dc: DrawContext): Boolean {\n if (mustBuildProgram) {\n // Clear the program's build dirty bit.\n mustBuildProgram = false\n\n // Remove any existing GLSL program.\n if (program.isValid()) deleteProgram(dc)\n\n // Compile and link the GLSL program sources.\n buildProgram(dc)\n\n // Free memory, occupied by program sources\n programSources = emptyArray()\n\n // Give subclasses an opportunity to initialize default GLSL uniform values.\n if (program.isValid()) {\n val currentProgram = dc.currentProgram\n try {\n dc.useProgram(program)\n initProgram(dc)\n } finally {\n dc.useProgram(currentProgram)\n }\n }\n }\n if (program.isValid()) dc.useProgram(program)\n return program.isValid()\n }\n\n protected open fun buildProgram(dc: DrawContext) {\n val vs = dc.gl.createShader(GL_VERTEX_SHADER)\n dc.gl.shaderSource(vs, programSources[VERTEX_SHADER])\n dc.gl.compileShader(vs)\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(vs)\n dc.gl.deleteShader(vs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL vertex shader \\n$msg\"\n )\n return\n }\n val fs = dc.gl.createShader(GL_FRAGMENT_SHADER)\n dc.gl.shaderSource(fs, programSources[FRAGMENT_SHADER])\n dc.gl.compileShader(fs)\n\n if (dc.gl.getShaderParameteri(vs, GL_COMPILE_STATUS) != GL_TRUE) {\n val msg = dc.gl.getShaderInfoLog(fs)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n logMessage(\n ERROR, \"ShaderProgram\", \"buildProgram\", \"Error compiling GL fragment shader \\n$msg\"\n )\n return\n }\n val program = dc.gl.createProgram()\n dc.gl.attachShader(program, vs)\n dc.gl.attachShader(program, fs)\n for (i in attribBindings.indices) dc.gl.bindAttribLocation(program, i, attribBindings[i])\n dc.gl.linkProgram(program)\n dc.gl.deleteShader(vs)\n dc.gl.deleteShader(fs)\n if (dc.gl.getProgramParameteri(program, GL_LINK_STATUS) != GL_TRUE) {\n val msg = dc.gl.getProgramInfoLog(program)\n dc.gl.deleteProgram(program)\n logMessage(ERROR, \"ShaderProgram\", \"buildProgram\", \"Error linking GL program \\n$msg\")\n return\n }\n this.program = program\n }\n\n protected open fun initProgram(dc: DrawContext) { gl = dc.gl }\n\n protected open fun deleteProgram(dc: DrawContext) {\n if (program.isValid()) {\n dc.gl.deleteProgram(program)\n program = KglProgram.NONE\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class BasicShaderProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix;\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrix. */\n if (enableTexture) {\n texCoord = (texCoordMatrix * vec3(vertexTexCoord, 1.0)).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n precision mediump float;\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n\n void main() {\n /* TODO consolidate pickMode and enableTexture into a single textureMode */\n /* TODO it's confusing that pickMode must be disabled during surface shape render-to-texture */\n if (enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's Alpha component (rounded to 0.0 or 1.0). */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask;\n } else if (!enablePickMode && enableTexture) {\n /* Modulate the RGBA color with the 2D texture's RGBA color. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity;\n } else {\n /* Return the RGBA color as-is. */\n gl_FragColor = color * opacity;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n protected var enablePickMode = false\n protected var enableTexture = false\n protected val mvpMatrix = Matrix4()\n protected val texCoordMatrix = Matrix3()\n protected val color = Color()\n protected var opacity = 1.0f\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val array = FloatArray(16)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, if (enablePickMode) 1 else 0)\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, if (enableTexture) 1 else 0)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n mvpMatrix.transposeToArray(array, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n texCoordMatrix.transposeToArray(array, 0) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) {\n if (enablePickMode != enable) {\n enablePickMode = enable\n gl.uniform1i(enablePickModeId, if (enable) 1 else 0)\n }\n }\n\n fun enableTexture(enable: Boolean) {\n if (enableTexture != enable) {\n enableTexture = enable\n gl.uniform1i(enableTextureId, if (enable) 1 else 0)\n }\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n // Don't bother testing whether mvpMatrix has changed, the common case is to load a different matrix.\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadTexCoordMatrix(matrix: Matrix3) {\n if (texCoordMatrix != matrix) {\n texCoordMatrix.copy(matrix)\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix3fv(texCoordMatrixId, 1, false, array, 0)\n }\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\nopen class SightlineProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform mat4 mvpMatrix;\n uniform mat4 slpMatrix[2];\n\n attribute vec4 vertexPoint;\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex position by the sightline-projection matrix. */\n vec4 sightlineEyePosition = slpMatrix[1] * vertexPoint;\n sightlinePosition = slpMatrix[0] * sightlineEyePosition;\n sightlineDistance = length(sightlineEyePosition);\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n uniform highp sampler2D depthSampler;\n #else\n precision mediump float;\n uniform mediump sampler2D depthSampler;\n #endif\n\n uniform float range;\n uniform vec4 color[2];\n\n varying vec4 sightlinePosition;\n varying float sightlineDistance;\n\n const vec3 minusOne = vec3(-1.0, -1.0, -1.0);\n const vec3 plusOne = vec3(1.0, 1.0, 1.0);\n\n void main() {\n /* Compute a mask that's on when the position is inside the occlusion projection, and off otherwise. Transform the\n position to clip coordinates, where values between -1.0 and 1.0 are in the frustum. */\n vec3 clipCoord = sightlinePosition.xyz / sightlinePosition.w;\n vec3 clipCoordMask = step(minusOne, clipCoord) * step(clipCoord, plusOne);\n float clipMask = clipCoordMask.x * clipCoordMask.y * clipCoordMask.z;\n\n /* Compute a mask that's on when the position is inside the sightline's range, and off otherwise.*/\n float rangeMask = step(sightlineDistance, range);\n\n /* Compute a mask that's on when the object's depth is less than the sightline's depth. The depth texture contains\n the scene's minimum depth at each position, from the sightline's point of view. */\n vec3 sightlineCoord = clipCoord * 0.5 + 0.5;\n float sightlineDepth = texture2D(depthSampler, sightlineCoord.xy).r;\n float occludeMask = step(sightlineDepth, sightlineCoord.z);\n\n /* Modulate the RGBA color with the computed masks to display fragments according to the sightline's configuration. */\n gl_FragColor = mix(color[0], color[1], occludeMask) * clipMask * rangeMask;\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\")\n\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var slpMatrixId = KglUniformLocation.NONE\n protected var rangeId = KglUniformLocation.NONE\n protected var depthSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n private val array = FloatArray(32)\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n slpMatrixId = gl.getUniformLocation(program, \"slpMatrix\")\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n rangeId = gl.getUniformLocation(program, \"range\")\n gl.uniform1f(rangeId, 0f)\n colorId = gl.getUniformLocation(program, \"color\")\n gl.uniform4f(colorId, 1f, 1f, 1f, 1f)\n depthSamplerId = gl.getUniformLocation(program, \"depthSampler\")\n gl.uniform1i(depthSamplerId, 0) // GL_TEXTURE0\n }\n\n fun loadModelviewProjection(matrix: Matrix4) {\n matrix.transposeToArray(array, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, array, 0)\n }\n\n fun loadSightlineProjection(projection: Matrix4, sightline: Matrix4) {\n projection.transposeToArray(array, 0)\n sightline.transposeToArray(array, 16)\n gl.uniformMatrix4fv(slpMatrixId, 2, false, array, 0)\n }\n\n fun loadRange(range: Float) {\n gl.uniform1f(rangeId, range)\n }\n\n fun loadColor(visibleColor: Color, occludedColor: Color) {\n visibleColor.premultiplyToArray(array, 0)\n occludedColor.premultiplyToArray(array, 4)\n gl.uniform4fv(colorId, 2, array, 0)\n }\n}","package earth.worldwind.render.program\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.render.Color\nimport earth.worldwind.util.kgl.KglUniformLocation\n\n// TODO Try accumulating surface tile state (texCoordMatrix, texSampler), loading uniforms once, then loading a uniform\n// TODO index to select the state for a surface tile. This reduces the uniform calls when many surface tiles intersect\n// TODO one terrain tile.\n// TODO Try class representing transform with a specific scale+translate object that can be uploaded to a GLSL vec4\nopen class SurfaceTextureProgram : AbstractShaderProgram() {\n override var programSources = arrayOf(\n \"\"\"\n uniform bool enableTexture;\n uniform mat4 mvpMatrix;\n uniform mat3 texCoordMatrix[2];\n\n attribute vec4 vertexPoint;\n attribute vec2 vertexTexCoord;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Transform the vertex position by the modelview-projection matrix. */\n gl_Position = mvpMatrix * vertexPoint;\n\n /* Transform the vertex tex coord by the tex coord matrices. */\n if (enableTexture) {\n vec3 texCoord3 = vec3(vertexTexCoord, 1.0);\n texCoord = (texCoordMatrix[0] * texCoord3).st;\n tileCoord = (texCoordMatrix[1] * texCoord3).st;\n }\n }\n \"\"\".trimIndent(),\n \"\"\"\n #ifdef GL_FRAGMENT_PRECISION_HIGH\n precision highp float;\n #else\n precision mediump float;\n #endif\n\n uniform bool enablePickMode;\n uniform bool enableTexture;\n uniform vec4 color;\n uniform float opacity;\n uniform sampler2D texSampler;\n\n varying vec2 texCoord;\n varying vec2 tileCoord;\n\n void main() {\n /* Using the second texture coordinate, compute a mask that's 1.0 when the fragment is inside the surface tile, and\n 0.0 otherwise. */\n float sMask = step(0.0, tileCoord.s) * step(0.0, 1.0 - tileCoord.s);\n float tMask = step(0.0, tileCoord.t) * step(0.0, 1.0 - tileCoord.t);\n float tileMask = sMask * tMask;\n\n if (enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's Alpha component (rounded to\n 0.0 or 1.0). Finally, modulate the result by the tile mask to suppress fragments outside the surface tile. */\n float texMask = floor(texture2D(texSampler, texCoord).a + 0.5);\n gl_FragColor = color * texMask * tileMask;\n } else if (!enablePickMode && enableTexture) {\n /* Using the first texture coordinate, modulate the RGBA color with the 2D texture's RGBA color. Finally,\n modulate by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * texture2D(texSampler, texCoord) * opacity * tileMask;\n } else {\n /* Modulate the RGBA color by the tile mask to suppress fragments outside the surface tile. */\n gl_FragColor = color * opacity * tileMask;\n }\n }\n \"\"\".trimIndent()\n )\n override val attribBindings = arrayOf(\"vertexPoint\", \"vertexTexCoord\")\n\n val mvpMatrix = Matrix4()\n val texCoordMatrix = arrayOf(Matrix3(), Matrix3())\n protected var enablePickModeId = KglUniformLocation.NONE\n protected var enableTextureId = KglUniformLocation.NONE\n protected var mvpMatrixId = KglUniformLocation.NONE\n protected var texCoordMatrixId = KglUniformLocation.NONE\n protected var texSamplerId = KglUniformLocation.NONE\n protected var colorId = KglUniformLocation.NONE\n protected var opacityId = KglUniformLocation.NONE\n private val mvpMatrixArray = FloatArray(16)\n private val texCoordMatrixArray = FloatArray(9 * 2)\n private val color = Color()\n private var opacity = 1.0f\n\n override fun initProgram(dc: DrawContext) {\n super.initProgram(dc)\n enablePickModeId = gl.getUniformLocation(program, \"enablePickMode\")\n gl.uniform1i(enablePickModeId, 0) // disable pick mode\n enableTextureId = gl.getUniformLocation(program, \"enableTexture\")\n gl.uniform1i(enableTextureId, 0) // disable texture\n mvpMatrixId = gl.getUniformLocation(program, \"mvpMatrix\")\n Matrix4().transposeToArray(mvpMatrixArray, 0) // 4 x 4 identity matrix\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n texCoordMatrixId = gl.getUniformLocation(program, \"texCoordMatrix\")\n Matrix3().transposeToArray(texCoordMatrixArray, 0) // 3 x 3 identity matrix\n Matrix3().transposeToArray(texCoordMatrixArray, 9) // 3 x 3 identity matrix\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n colorId = gl.getUniformLocation(program, \"color\")\n color.set(1f, 1f, 1f, 1f) // opaque white\n gl.uniform4f(colorId, color.red, color.green, color.blue, color.alpha)\n opacityId = gl.getUniformLocation(program, \"opacity\")\n gl.uniform1f(opacityId, opacity)\n texSamplerId = gl.getUniformLocation(program, \"texSampler\")\n gl.uniform1i(texSamplerId, 0) // GL_TEXTURE0\n }\n\n fun enablePickMode(enable: Boolean) { gl.uniform1i(enablePickModeId, if (enable) 1 else 0) }\n\n fun enableTexture(enable: Boolean) { gl.uniform1i(enableTextureId, if (enable) 1 else 0) }\n\n fun loadModelviewProjection() {\n mvpMatrix.transposeToArray(mvpMatrixArray, 0)\n gl.uniformMatrix4fv(mvpMatrixId, 1, false, mvpMatrixArray, 0)\n }\n\n fun loadTexCoordMatrix() {\n texCoordMatrix[0].transposeToArray(texCoordMatrixArray, 0)\n texCoordMatrix[1].transposeToArray(texCoordMatrixArray, 9)\n gl.uniformMatrix3fv(texCoordMatrixId, 2, false, texCoordMatrixArray, 0)\n }\n\n fun loadColor(color: Color) {\n if (this.color != color) {\n this.color.copy(color)\n val alpha = color.alpha\n gl.uniform4f(colorId, color.red * alpha, color.green * alpha, color.blue * alpha, alpha)\n }\n }\n\n fun loadOpacity(opacity: Float) {\n if (this.opacity != opacity) {\n this.opacity = opacity\n gl.uniform1f(opacityId, opacity)\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport kotlin.math.sqrt\n\nabstract class AbstractShape(override var attributes: ShapeAttributes): AbstractRenderable(), Attributable, Highlightable {\n companion object {\n const val NEAR_ZERO_THRESHOLD = 1.0e-10\n }\n\n var altitudeMode = AltitudeMode.ABSOLUTE\n set(value) {\n field = value\n reset()\n }\n var pathType = PathType.GREAT_CIRCLE\n set(value) {\n field = value\n reset()\n }\n /**\n * Draw sides of the shape which extend from the defined position and altitude to the ground.\n */\n var isExtrude = false\n set(value) {\n field = value\n reset()\n }\n /**\n * Determines whether this shape's geometry follows the terrain surface or is fixed at a constant altitude.\n */\n var isFollowTerrain = false\n set(value) {\n field = value\n reset()\n }\n override var highlightAttributes: ShapeAttributes? = null\n override var isHighlighted = false\n var maximumIntermediatePoints = 10\n protected lateinit var activeAttributes: ShapeAttributes\n protected var isSurfaceShape = false\n protected var lastGlobeState: Globe.State? = null\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n protected val boundingSector = Sector()\n protected val boundingBox = BoundingBox()\n private val scratchPoint = Vec3()\n\n override fun doRender(rc: RenderContext) {\n checkGlobeState(rc)\n if (!isWithinProjectionLimits(rc)) return\n\n // Don't render anything if the shape is not visible.\n if (!intersectsFrustum(rc)) return\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this shape has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Determine whether the shape geometry must be assembled as Cartesian geometry or as geographic geometry.\n isSurfaceShape = rc.globe.is2D || altitudeMode == AltitudeMode.CLAMP_TO_GROUND && isFollowTerrain\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the shape's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n /**\n * Indicates whether this shape is within the current globe's projection limits. Subclasses may implement\n * this method to perform the test. The default implementation returns true.\n * @param rc The current render context.\n * @returns true if this shape is within or intersects the current globe's projection limits, otherwise false.\n */\n protected open fun isWithinProjectionLimits(rc: RenderContext) = true\n\n protected open fun intersectsFrustum(rc: RenderContext) = boundingBox.isUnitBox || boundingBox.intersectsFrustum(rc.frustum)\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun cameraDistanceGeographic(rc: RenderContext, boundingSector: Sector): Double {\n val lat = rc.camera.position.latitude.inDegrees.coerceIn(\n boundingSector.minLatitude.inDegrees,\n boundingSector.maxLatitude.inDegrees\n )\n val lon = rc.camera.position.longitude.inDegrees.coerceIn(\n boundingSector.minLongitude.inDegrees,\n boundingSector.maxLongitude.inDegrees\n )\n val point = rc.geographicToCartesian(lat.degrees, lon.degrees, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n return point.distanceTo(rc.cameraPoint)\n }\n\n protected open fun cameraDistanceCartesian(rc: RenderContext, array: FloatArray, count: Int, stride: Int, offset: Vec3): Double {\n val cx = rc.cameraPoint.x - offset.x\n val cy = rc.cameraPoint.y - offset.y\n val cz = rc.cameraPoint.z - offset.z\n var minDistance2 = Double.POSITIVE_INFINITY\n for (idx in 0 until count step stride) {\n val px = array[idx]\n val py = array[idx + 1]\n val pz = array[idx + 2]\n val dx = px - cx\n val dy = py - cy\n val dz = pz - cz\n val distance2 = dx * dx + dy * dy + dz * dz\n if (minDistance2 > distance2) minDistance2 = distance2\n }\n return sqrt(minDistance2)\n }\n\n protected open fun computeRepeatingTexCoordTransform(texture: Texture, metersPerPixel: Double, result: Matrix3): Matrix3 {\n val texCoordMatrix = result.setToIdentity()\n texCoordMatrix.setScale(1.0 / (texture.width * metersPerPixel), 1.0 / (texture.height * metersPerPixel))\n texCoordMatrix.multiplyByMatrix(texture.coordTransform)\n return texCoordMatrix\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n if (rc.globeState != lastGlobeState) {\n reset()\n lastGlobeState = rc.globeState\n }\n }\n\n protected open fun reset() {\n boundingBox.setToUnitBox()\n boundingSector.setEmpty()\n }\n\n protected abstract fun makeDrawable(rc: RenderContext)\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.ShortBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\nimport kotlin.math.*\n\n/**\n * Ellipse shape defined by a geographic center position and radii for the semi-major and semi-minor axes.\n *
\n *

Axes and Heading

\n *
\n * Ellipse axes, by default, are oriented such that the semi-major axis points East and the semi-minor axis points\n * North. Ellipse provides an optional heading, which when set to anything other than 0.0 rotates the semi-major and\n * semi-minor axes about the center position, while retaining the axes relative relationship to one another. Heading is\n * defined clockwise from North. Configuring ellipse with a heading of 45.0 results in the semi-major axis\n * pointing Southeast and the semi-minor axis pointing Northeast.\n *
\n *

Altitude Mode and Terrain Following

\n *
\n * Ellipse geometry displays at a constant altitude determined by the geographic center position and altitude mode. For\n * example, an ellipse with a center position altitude of 1km and altitude mode of ABSOLUTE displays at 1km above mean\n * sea level. The same ellipse with an altitude mode of RELATIVE_TO_GROUND displays at 1km above ground level, relative\n * to the ellipse's center location.\n *
\n * Surface ellipse geometry, where an ellipse appears draped across the terrain, may be achieved by enabling ellipse's\n * terrain following state and setting its altitude mode to CLAMP_TO_GROUND. See [isFollowTerrain] and\n * [altitudeMode].\n *
\n *

Display Granularity

\n *
\n * Ellipse's appearance on screen is composed of discrete segments which approximate the ellipse's geometry. This\n * approximation is chosen such that the display appears to be a continuous smooth ellipse. Applications can control the\n * maximum number of angular intervals used in this representation with [maximumIntervals].\n */\nopen class Ellipse @JvmOverloads constructor(\n center: Position, majorRadius: Double, minorRadius: Double, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n /**\n * The ellipse's geographic center position.\n */\n var center = Position(center)\n set(value) {\n field.copy(value)\n reset()\n }\n /**\n * The ellipse's radius perpendicular to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-major axis points East.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var majorRadius = majorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMajorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's radius parallel to it's heading, in meters.\n * When the ellipse's heading is 0.0, the semi-minor axis points North.\n *\n * @throws IllegalArgumentException If the radius is negative\n */\n var minorRadius = minorRadius\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMinorRadius\", \"invalidRadius\")\n }\n field = value\n reset()\n }\n /**\n * The ellipse's heading clockwise from North. When ellipse's heading is 0.0,\n * the semi-major axis points East and the semi-minor axis points North.\n * Headings other than 0.0 rotate the axes about the ellipse's center position,\n * while retaining the axes relative relationship to one another.\n */\n var heading = ZERO\n set(value) {\n field = value\n reset()\n }\n /**\n * The maximum pixels a single edge interval will span before the number of intervals is increased. Increasing this\n * value will make ellipses appear coarser.\n */\n var maximumPixelsPerInterval = 50.0\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"maximumPixelsPerInterval\", \"invalidPixelsPerInterval\")\n }\n field = value\n reset()\n }\n /**\n * Sets the maximum number of angular intervals that may be used to approximate this ellipse's on screen.\n *
\n * Ellipse may use a minimum number of intervals to ensure that its appearance on screen at least roughly\n * approximates the ellipse's shape. When the specified number of intervals is too small, it is clamped to an\n * implementation-defined minimum number of intervals.\n *
\n * Ellipse may require that the number of intervals is an even multiple of some integer. When the specified number\n * of intervals does not meet this criteria, the next smallest integer that meets ellipse's criteria is used\n * instead.\n *\n * @throws IllegalArgumentException If the number of intervals is negative\n */\n var maximumIntervals = 256\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"Ellipse\", \"setMaximumIntervals\", \"invalidNumIntervals\")\n }\n field = value\n reset()\n }\n /**\n * The number of intervals used for generating geometry. Clamped between MIN_INTERVALS and maximumIntervals.\n * Will always be even.\n */\n protected var activeIntervals = 0\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n protected var vertexBufferKey = Any()\n protected val vertexOrigin = Vec3()\n protected var texCoord1d = 0.0\n protected val texCoord2d = Vec3()\n protected val texCoordMatrix = Matrix3()\n protected val modelToTexCoord = Matrix4()\n protected var cameraDistance = 0.0\n protected val prevPoint = Vec3()\n\n init {\n require(majorRadius >= 0 && minorRadius >= 0) {\n logMessage(ERROR, \"Ellipse\", \"constructor\", \"invalidRadius\")\n }\n }\n\n companion object {\n protected const val VERTEX_STRIDE = 6\n /**\n * The minimum number of intervals that will be used for geometry generation.\n */\n protected const val MIN_INTERVALS = 32\n /**\n * Key for Range object in the element buffer describing the top of the Ellipse.\n */\n protected const val TOP_RANGE = 0\n /**\n * Key for Range object in the element buffer describing the outline of the Ellipse.\n */\n protected const val OUTLINE_RANGE = 1\n /**\n * Key for Range object in the element buffer describing the extruded sides of the Ellipse.\n */\n protected const val SIDE_RANGE = 2\n\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n\n /**\n * Simple interval count based cache of the keys for element buffers. Element buffers are dependent only on the\n * number of intervals so the keys are cached here. The element buffer object itself is in the\n * RenderResourceCache and subject to the restrictions and behavior of that cache.\n */\n protected val elementBufferKeys = mutableMapOf()\n\n private val scratchPosition = Position()\n private val scratchPoint = Vec3()\n\n protected fun assembleElements(intervals: Int): ShortBufferObject {\n // Create temporary storage for elements\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n val elements = mutableListOf()\n\n // Generate the top element buffer with spine\n var idx = intervals.toShort()\n val offset = computeIndexOffset(intervals)\n\n // Add the anchor leg\n elements.add(0.toShort())\n elements.add(1.toShort())\n // Tessellate the interior\n for (i in 2 until intervals) {\n // Add the corresponding interior spine point if this isn't the vertex following the last vertex for the\n // negative major axis\n if (i != intervals / 2 + 1) if (i > intervals / 2) elements.add(--idx) else elements.add(idx++)\n // Add the degenerate triangle at the negative major axis in order to flip the triangle strip back towards\n // the positive axis\n if (i == intervals / 2) elements.add(i.toShort())\n // Add the exterior vertex\n elements.add(i.toShort())\n }\n // Complete the strip\n elements.add(--idx)\n elements.add(0.toShort())\n val topRange = Range(0, elements.size)\n\n // Generate the outline element buffer\n for (i in 0 until intervals) elements.add(i.toShort())\n val outlineRange = Range(topRange.upper, elements.size)\n\n // Generate the side element buffer\n for (i in 0 until intervals) {\n elements.add(i.toShort())\n elements.add(i.plus(offset).toShort())\n }\n elements.add(0.toShort())\n elements.add(offset.toShort())\n val sideRange = Range(outlineRange.upper, elements.size)\n\n // Generate a buffer for the element\n val elementBuffer = ShortBufferObject(GL_ELEMENT_ARRAY_BUFFER, elements.toShortArray())\n elementBuffer.ranges[TOP_RANGE] = topRange\n elementBuffer.ranges[OUTLINE_RANGE] = outlineRange\n elementBuffer.ranges[SIDE_RANGE] = sideRange\n return elementBuffer\n }\n\n protected fun computeNumberSpinePoints(intervals: Int) = intervals / 2 - 1 // intervals should be even\n\n protected fun computeIndexOffset(intervals: Int) = intervals + computeNumberSpinePoints(intervals)\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (majorRadius == 0.0 && minorRadius == 0.0) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = Any()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = boundingBox.distanceTo(rc.cameraPoint)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) { FloatBufferObject(GL_ARRAY_BUFFER, vertexArray) }\n\n // Get the attributes of the element buffer\n val elementBufferKey = elementBufferKeys[activeIntervals] ?: Any().also { elementBufferKeys[activeIntervals] = it }\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) { assembleElements(activeIntervals) }\n if (isSurfaceShape) {\n drawInterior(rc, drawState)\n drawOutline(rc, drawState)\n } else {\n drawOutline(rc, drawState)\n drawInterior(rc, drawState)\n }\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n val top = drawState.elementBuffer!!.ranges[TOP_RANGE]!!\n drawState.drawElements(GL_TRIANGLE_STRIP, top.length, GL_UNSIGNED_SHORT, top.lower * 2 /*offset*/)\n if (isExtrude) {\n val side = drawState.elementBuffer!!.ranges[SIDE_RANGE]!!\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLE_STRIP, side.length, GL_UNSIGNED_SHORT, side.lower * 2)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texCoordAttrib(1 /*size*/, 20 /*offset in bytes*/)\n val outline = drawState.elementBuffer!!.ranges[OUTLINE_RANGE]!!\n drawState.drawElements(GL_LINE_LOOP, outline.length, GL_UNSIGNED_SHORT, outline.lower * 2 /*offset*/)\n if (activeAttributes.isDrawVerticals && isExtrude && !isSurfaceShape) {\n val side = drawState.elementBuffer!!.ranges[SIDE_RANGE]!!\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(GL_LINES, side.length, GL_UNSIGNED_SHORT, side.lower * 2)\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext): Boolean {\n val calculatedIntervals = computeIntervals(rc)\n val sanitizedIntervals = sanitizeIntervals(calculatedIntervals)\n if (vertexArray.isEmpty() || sanitizedIntervals != activeIntervals) {\n activeIntervals = sanitizedIntervals\n return true\n }\n return false\n }\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n\n // Use the ellipse's center position as the local origin for vertex positions.\n if (isSurfaceShape) {\n vertexOrigin.set(center.longitude.inDegrees, center.latitude.inDegrees, center.altitude)\n } else {\n rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n vertexOrigin.set(scratchPoint.x, scratchPoint.y, scratchPoint.z)\n }\n\n // Determine the number of spine points\n val spineCount = computeNumberSpinePoints(activeIntervals) // activeIntervals must be even\n\n // Clear the shape's vertex array. The array will accumulate values as the shapes's geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray((activeIntervals * 2 + spineCount) * VERTEX_STRIDE)\n else FloatArray((activeIntervals + spineCount) * VERTEX_STRIDE)\n\n // Check if minor radius is less than major in which case we need to flip the definitions and change the phase\n val isStandardAxisOrientation = majorRadius > minorRadius\n val headingAdjustment = if (isStandardAxisOrientation) 90.0 else 0.0\n\n // Vertex generation begins on the positive major axis and works ccs around the ellipse. The spine points are\n // then appended from positive major axis to negative major axis.\n val deltaRadians = 2 * PI / activeIntervals\n val majorArcRadians: Double\n val minorArcRadians: Double\n val globeRadius = max(rc.globe.equatorialRadius, rc.globe.polarRadius)\n if (isStandardAxisOrientation) {\n majorArcRadians = majorRadius / globeRadius\n minorArcRadians = minorRadius / globeRadius\n } else {\n majorArcRadians = minorRadius / globeRadius\n minorArcRadians = majorRadius / globeRadius\n }\n\n // Determine the offset from the top and extruded vertices\n val arrayOffset = computeIndexOffset(activeIntervals) * VERTEX_STRIDE\n // Setup spine radius values\n var spineIdx = 0\n val spineRadius = DoubleArray(spineCount)\n\n // Iterate around the ellipse to add vertices\n for (i in 0 until activeIntervals) {\n val radians = deltaRadians * i\n val x = cos(radians) * majorArcRadians\n val y = sin(radians) * minorArcRadians\n val azimuthDegrees = toDegrees(-atan2(y, x))\n val arcRadius = sqrt(x * x + y * y)\n // Calculate the great circle location given this activeIntervals step (azimuthDegrees) a correction value to\n // start from an east-west aligned major axis (90.0) and the user specified user heading value\n val azimuth = heading.plusDegrees(azimuthDegrees + headingAdjustment)\n val loc = center.greatCircleLocation(azimuth, arcRadius, scratchPosition)\n addVertex(rc, loc.latitude, loc.longitude, center.altitude, arrayOffset, isExtrude)\n // Add the major arc radius for the spine points. Spine points are vertically coincident with exterior\n // points. The first and middle most point do not have corresponding spine points.\n if (i > 0 && i < activeIntervals / 2) spineRadius[spineIdx++] = x\n }\n\n // Add the interior spine point vertices\n for (i in 0 until spineCount) {\n center.greatCircleLocation(heading.plusDegrees(headingAdjustment), spineRadius[i], scratchPosition)\n addVertex(rc, scratchPosition.latitude, scratchPosition.longitude, center.altitude, arrayOffset, false)\n }\n\n // Compute the shape's bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexArray.size, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty()\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, offset: Int, isExtrudedSkirt: Boolean\n ) {\n var offsetVertexIndex = vertexIndex + offset\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, scratchPoint)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n if (vertexIndex == 0) texCoord1d = 0.0\n else texCoord1d += point.distanceTo(prevPoint)\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n // reserved for future texture coordinate use\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (isExtrudedSkirt) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, scratchPoint)\n vertexArray[offsetVertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[offsetVertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[offsetVertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[offsetVertexIndex++] = 0f //unused\n vertexArray[offsetVertexIndex++] = 0f //unused\n vertexArray[offsetVertexIndex] = 0f //unused\n }\n }\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n val point = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n rc.globe.cartesianToLocalTransform(point.x, point.y, point.z, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n /**\n * Calculate the number of times to split the edges of the shape for geometry assembly.\n *\n * @param rc current RenderContext\n *\n * @return an even number of intervals\n */\n protected open fun computeIntervals(rc: RenderContext): Int {\n var intervals = MIN_INTERVALS\n if (intervals >= maximumIntervals) return intervals // use at least the minimum number of intervals\n val centerPoint = rc.geographicToCartesian(center, altitudeMode, scratchPoint)\n val maxRadius = max(majorRadius, minorRadius)\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint) - maxRadius\n if (cameraDistance <= 0) return maximumIntervals // use the maximum number of intervals when the camera is very close\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n val circumferencePixels = computeCircumference() / metersPerPixel\n val circumferenceIntervals = circumferencePixels / maximumPixelsPerInterval\n val subdivisions = ln(circumferenceIntervals / intervals) / ln(2.0)\n val subdivisionCount = ceil(subdivisions).toInt().coerceAtLeast(0)\n intervals = intervals shl subdivisionCount // subdivide the base intervals to achieve the desired number of intervals\n return intervals.coerceAtMost(maximumIntervals) // don't exceed the maximum number of intervals\n }\n\n protected open fun sanitizeIntervals(intervals: Int) = if (intervals % 2 == 0) intervals else intervals - 1\n\n open fun computeCircumference(): Double {\n val a = majorRadius\n val b = minorRadius\n return PI * (3 * (a + b) - sqrt((3 * a + b) * (a + 3 * b)))\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Represents a label at a geographic position. Labels display a single line of text according to specified [TextAttributes].\n */\nopen class Label @JvmOverloads constructor(\n /**\n * The label's geographic position.\n */\n position: Position,\n /**\n * Indicates the text displayed by this label. The returned string may be null, indicating that this label displays\n * nothing.\n */\n var text: String? = null,\n /**\n * Indicates this label's \"normal\" attributes, that is the attributes used when the label's highlighted flag is\n * false. If null and this label is not highlighted, this label displays nothing.\n */\n var attributes: TextAttributes = TextAttributes()\n) : AbstractRenderable(), Highlightable, Movable {\n /**\n * The label's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The label's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Indicates the rotation applied to this label. The rotation represents clockwise clockwise degrees relative to\n * this label's labelRotationMode.\n */\n var rotation = ZERO\n /**\n * Indicates the orientation mode used to interpret this label's rotation. Label rotation may be either relative to\n * the screen or relative to the globe, as indicated by the following allowable values:\n * `OrientationMode.RELATIVE_TO_SCREEN` - The label's orientation is fixed relative to the screen. Rotation indicates\n * clockwise degrees relative to the screen's vertical axis. This is the default mode.\n * `OrientationMode.RELATIVE_TO_GLOBE` - The label's orientation is fixed relative to the globe. Rotation indicates\n * clockwise degrees relative to North.\n */\n var rotationMode = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The attributes used when this label's highlighted flag is true. If null and the highlighted flag is true,\n * this label's normal attributes are used. If they, too, are null, this label displays nothing.\n */\n var highlightAttributes: TextAttributes? = null\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: TextAttributes\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Label, this is\n * simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n\n companion object {\n /**\n * The default amount of screen depth offset applied to the label's text during rendering. Values less than zero\n * bias depth values toward the viewer.\n */\n protected const val DEFAULT_DEPTH_OFFSET = -0.1\n\n /**\n * The label's properties associated with the current render pass.\n */\n private val renderData = RenderData()\n }\n\n /**\n * Moves the shape over the globe's surface. For a Label, this simply change its position.\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n if (text?.isEmpty() != false) return // no text to render\n\n // Filter out renderable outside projection limits.\n if (rc.globe.projectionLimits?.contains(position) == false) return\n\n // Compute the label's Cartesian model point.\n val altitudeMode = if (rc.globe.is2D) AltitudeMode.CLAMP_TO_GROUND else altitudeMode\n rc.geographicToCartesian(position, altitudeMode, renderData.placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the label drawable and\n // determining the amount of depth offset to apply.\n renderData.cameraDistance = if (isAlwaysOnTop) 0.0 else if (rc.globe.is2D) rc.viewingDistance else rc.cameraPoint.distanceTo(renderData.placePoint)\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n if (renderData.cameraDistance < rc.horizonDistance) depthOffset = DEFAULT_DEPTH_OFFSET\n\n // Project the label's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(renderData.placePoint, depthOffset, renderData.screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Select the currently active attributes. Don't render anything if the attributes are unspecified.\n determineActiveAttributes(rc)\n\n // Keep track of the drawable count to determine whether this label has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n renderData.pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(renderData.pickedObjectId, renderData.pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the label's drawables with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(renderData.pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n val texture = rc.getText(text, activeAttributes, rc.frustum.containsPoint(renderData.placePoint)) ?: return\n\n // Initialize the unit square transform to the identity matrix.\n renderData.unitSquareTransform.setToIdentity()\n\n // Apply the label's translation according to its text size and text offset. The text offset is defined with its\n // origin at the text's bottom-left corner and axes that extend up and to the right from the origin point.\n val w = texture.width.toDouble()\n val h = texture.height.toDouble()\n val s = activeAttributes.scale\n activeAttributes.textOffset.offsetForSize(w, h, renderData.offset)\n renderData.unitSquareTransform.setTranslation(\n renderData.screenPlacePoint.x - renderData.offset.x * s,\n renderData.screenPlacePoint.y - renderData.offset.y * s,\n renderData.screenPlacePoint.z\n )\n\n // Apply the label's rotation according to its rotation value and orientation mode. The rotation is applied\n // such that the text rotates around the text offset point.\n val actualRotation = if (rotationMode == OrientationMode.RELATIVE_TO_GLOBE)\n rc.camera.heading - rotation else -rotation\n if (actualRotation != ZERO) {\n renderData.unitSquareTransform.multiplyByTranslation(\n renderData.offset.x, renderData.offset.y, 0.0\n )\n renderData.unitSquareTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n renderData.unitSquareTransform.multiplyByTranslation(\n -renderData.offset.x, -renderData.offset.y, 0.0\n )\n }\n\n // Apply the label's translation and scale according to its text size.\n renderData.unitSquareTransform.multiplyByScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(renderData.unitSquareTransform, renderData.screenBounds)\n if (!rc.frustum.intersectsViewport(renderData.screenBounds)) return // the text is outside the viewport\n\n // Obtain a pooled drawable and configure it to draw the label's text.\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n\n // Use the basic GLSL program to draw the text.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the text's unit square transform matrix.\n drawable.unitSquareTransform.copy(renderData.unitSquareTransform)\n\n // Configure the drawable according to the active attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(renderData.pickColor)\n else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = texture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerShapeDrawable(drawable, renderData.cameraDistance)\n }\n\n /**\n * Properties associated with the label during a render pass.\n */\n protected open class RenderData {\n /**\n * The model coordinate point corresponding to the label's position.\n */\n val placePoint = Vec3()\n /**\n * The screen coordinate point corresponding to the label's position.\n */\n val screenPlacePoint = Vec3()\n /**\n * The screen coordinate offset corresponding to the active attributes.\n */\n val offset = Vec2()\n /**\n * The screen coordinate transform to apply to the drawable unit square.\n */\n val unitSquareTransform = Matrix4()\n /**\n * The screen viewport indicating the label's screen bounds.\n */\n val screenBounds = Viewport()\n /**\n * Unique identifier associated with the label during picking.\n */\n var pickedObjectId = 0\n /**\n * Unique color used to display the label during picking.\n */\n val pickColor = Color()\n /**\n * The distance from the camera position to the label position, in meters.\n */\n var cameraDistance = 0.0\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSightline\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.BoundingSphere\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.program.SightlineProgram\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\n/**\n * Displays an omnidirectional sightline's visibility within the WorldWind scene. The sightline's placement and area of\n * potential visibility are represented by a Cartesian sphere with a center position and a range. Terrain features\n * within the sphere are considered visible if there is a direct line-of-sight between the center position and a given\n * terrain point.\n *
\n * OmnidirectionalSightline displays an overlay on the WorldWind terrain indicating which terrain features are visible,\n * and which are occluded. Visible terrain features, those having a direct line-of-sight to the center position, appear\n * in the sightline's normal attributes or its highlight attributes, depending on the highlight state. Occluded terrain\n * features appear in the sightline's occlude attributes, regardless of highlight state. Terrain features outside the\n * sightline's range are excluded from the overlay.\n *
\n *

Limitations and Planned Improvements

* OmnidirectionalSightline is currently limited to terrain-based\n * occlusion, and does not incorporate other 3D scene elements during visibility determination. Subsequent iterations\n * will support occlusion of both terrain and 3D polygons. * The visibility overlay is drawn in ShapeAttributes'\n * interior color only. Subsequent iterations will add an outline where the sightline's range intersects the scene, and\n * will display the sightline's geometry as an outline. * OmnidirectionalSightline requires OpenGL ES 2.0\n * extension [GL_OES_depth_texture](https://www.khronos.org/registry/OpenGL/extensions/OES/OES_depth_texture.txt).\n * Subsequent iterations may relax this requirement.\n */\nopen class OmnidirectionalSightline @JvmOverloads constructor(\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n position: Position,\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n */\n range: Double,\n /**\n * Indicates this sightline's \"normal\" attributes. These attributes are used for the sightline's overlay when the\n * highlighted flag is false, and there is a direct line-of-sight from the sightline's center position to a terrain\n * feature. If null and this sightline is not highlighted, visible terrain features are excluded from\n * the overlay.\n */\n override var attributes: ShapeAttributes = ShapeAttributes()\n) : AbstractRenderable(), Attributable, Highlightable, Movable {\n /**\n * Indicates the geographic position where this sightline is centered.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates this sightline's range. Range represents the sightline's transmission distance in meters from its\n * center position.\n *\n * @throws IllegalArgumentException If the range is negative\n */\n var range = range\n set(value) {\n require(value >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"setRange\", \"invalidRange\")\n }\n field = value\n }\n /**\n * The sightline's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * Determines whether the normal or highlighted attributes should be used for visible features.\n */\n override var isHighlighted = false\n /**\n * The attributes to use for visible features, when the sightline is highlighted.\n */\n override var highlightAttributes: ShapeAttributes? = null\n /**\n * The attributes to use for occluded features.\n */\n var occludeAttributes = ShapeAttributes().apply { interiorColor.copy(Color(1f, 0f, 0f, 1f)) }\n /**\n * A position associated with the object that indicates its aggregate geographic position. For an\n * OmnidirectionalSightline, this is simply it's position property.\n */\n override val referencePosition get() = position\n /**\n * The attributes to use for visible features during the current render pass.\n */\n protected lateinit var activeAttributes: ShapeAttributes\n\n private val centerPoint = Vec3()\n private var pickedObjectId = 0\n private val pickColor = Color()\n private val boundingSphere = BoundingSphere()\n\n init {\n require(range >= 0) {\n logMessage(ERROR, \"OmnidirectionalSightline\", \"constructor\", \"invalidRange\")\n }\n }\n\n /**\n * Moves the sightline over the globe's surface.\n *\n * @param globe not used.\n * @param position the new position of the sightline's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n override fun doRender(rc: RenderContext) {\n // Compute this sightline's center point in Cartesian coordinates.\n if (!determineCenterPoint(rc)) return\n\n // Don't render anything if the sightline's coverage area is not visible.\n if (!isVisible(rc)) return\n\n // Select the currently active attributes.\n determineActiveAttributes(rc)\n\n // Configure the pick color when rendering in pick mode.\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Enqueue drawables for processing on the OpenGL thread.\n makeDrawable(rc)\n\n // Enqueue a picked object that associates the sightline's drawables with its picked object ID.\n if (rc.isPickMode) rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n\n protected open fun determineCenterPoint(rc: RenderContext): Boolean {\n rc.geographicToCartesian(position, altitudeMode, centerPoint)\n return centerPoint.x != 0.0 && centerPoint.y != 0.0 && centerPoint.z != 0.0\n }\n\n protected open fun isVisible(rc: RenderContext): Boolean {\n val cameraDistance = centerPoint.distanceTo(rc.cameraPoint)\n val pixelSizeMeters = rc.pixelSizeAtDistance(cameraDistance)\n return if (range < pixelSizeMeters) false // The range is zero, or is less than one screen pixel\n else boundingSphere.set(centerPoint, range).intersectsFrustum(rc.frustum)\n }\n\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n protected open fun makeDrawable(rc: RenderContext) {\n // Obtain a pooled drawable and configure it to draw the sightline's coverage.\n val pool = rc.getDrawablePool()\n val drawable = DrawableSightline.obtain(pool)\n\n // Compute the transform from sightline local coordinates to world coordinates.\n rc.globe.cartesianToLocalTransform(\n centerPoint.x, centerPoint.y, centerPoint.z, drawable.centerTransform\n )\n\n // Clamp range to max float value as OpenGL drawable operates with float range\n drawable.range = range.coerceIn(0.0, Float.MAX_VALUE.toDouble()).toFloat()\n\n // Configure the drawable colors according to the current attributes. When picking use a unique color associated\n // with the picked object ID. Null attributes indicate that nothing is drawn.\n drawable.visibleColor.copy(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawable.occludedColor.copy(if (rc.isPickMode) pickColor else occludeAttributes.interiorColor)\n\n // Use the sightline GLSL program to draw the coverage.\n drawable.program = rc.getShaderProgram { SightlineProgram() }\n\n // Enqueue a drawable for processing on the OpenGL thread.\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n}","package earth.worldwind.shape\n\n/**\n * Orientation mode indicates how WorldWind interprets a renderable's orientation value, e.g., tilt and rotate\n * values. Accepted values are [RELATIVE_TO_GLOBE], and [RELATIVE_TO_SCREEN].\n */\nenum class OrientationMode {\n /**\n * Indicating that the related value is specified relative to the globe.\n */\n RELATIVE_TO_GLOBE,\n /**\n * Indicating that the related value is specified relative to the plane of the screen.\n */\n RELATIVE_TO_SCREEN;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Path @JvmOverloads constructor(\n positions: List, attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n var positions = positions\n set(value) {\n field = value\n reset()\n }\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val interiorElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected lateinit var vertexBufferKey: Any\n protected lateinit var elementBufferKey: Any\n protected val vertexOrigin = Vec3()\n protected var texCoord1d = 0.0\n private val point = Vec3()\n private val prevPoint = Vec3()\n private val texCoordMatrix = Matrix3()\n private val intermediateLocation = Location()\n\n companion object {\n protected const val VERTEX_STRIDE = 4\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n wrapMode = WrapMode.REPEAT\n }\n\n protected fun nextCacheKey() = Any()\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (positions.isEmpty()) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool, and compute distance to the render camera.\n val drawable: Drawable\n val drawState: DrawShapeState\n val cameraDistance: Double\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexIndex, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexIndex)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n IntBufferObject(GL_ELEMENT_ARRAY_BUFFER, (interiorElements + outlineElements + verticalElements).toIntArray())\n }\n\n // Configure the drawable's vertex texture coordinate attribute.\n drawState.texCoordAttrib(1 /*size*/, 12 /*stride in bytes*/)\n\n // Configure the drawable to use the outline texture when drawing the outline.\n if (activeAttributes.isDrawOutline) {\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n }\n }\n\n // Configure the drawable to display the shape's outline. Increase surface shape line widths by 1/2 pixel. Lines\n // drawn indirectly offscreen framebuffer appear thinner when sampled as a texture.\n if (activeAttributes.isDrawOutline) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth + if (isSurfaceShape) 0.5f else 0f)\n drawState.drawElements(\n GL_LINE_STRIP, outlineElements.size,\n GL_UNSIGNED_INT, interiorElements.size * Int.SIZE_BYTES\n )\n }\n\n // Disable texturing for the remaining drawable primitives.\n drawState.texture(null)\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawOutline && activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.drawElements(\n GL_LINES, verticalElements.size,\n GL_UNSIGNED_INT, (interiorElements.size + outlineElements.size) * Int.SIZE_BYTES\n )\n }\n\n // Configure the drawable to display the shape's extruded interior.\n if (activeAttributes.isDrawInterior && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.drawElements(\n GL_TRIANGLE_STRIP, interiorElements.size,\n GL_UNSIGNED_INT, 0\n )\n }\n\n // Configure the drawable according to the shape's attributes.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = false\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine the number of vertexes\n val vertexCount = if (maximumIntermediatePoints <= 0 || pathType == LINEAR) positions.size\n else if(positions.isNotEmpty()) positions.size + (positions.size - 1) * maximumIntermediatePoints else 0\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(vertexCount * 2 * VERTEX_STRIDE)\n else FloatArray(vertexCount * VERTEX_STRIDE)\n interiorElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n\n // Add the first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, false /*intermediate*/)\n\n // Add the remaining vertices, inserting vertices along each edge as indicated by the path's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, false /*intermediate*/)\n begin = end\n }\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*latitude*/, vertexOrigin.x /*longitude*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, true /*intermediate*/)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(\n rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, intermediate: Boolean\n ): Int {\n val vertex = vertexIndex / VERTEX_STRIDE\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n if (vertex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude)\n else vertexOrigin.copy(point)\n texCoord1d = 0.0\n } else {\n texCoord1d += point.distanceTo(prevPoint)\n }\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n outlineElements.add(vertex)\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n outlineElements.add(vertex)\n if (isExtrude) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, altitudeMode, this.point)\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 0f /*unused*/\n interiorElements.add(vertex)\n interiorElements.add(vertex.inc())\n }\n if (isExtrude && !intermediate) {\n verticalElements.add(vertex)\n verticalElements.add(vertex.inc())\n }\n }\n return vertex\n }\n}","package earth.worldwind.shape\n\n/**\n * Path type indicates how WorldWind create a geographic path between two locations.\n * Accepted values are [GREAT_CIRCLE], [LINEAR] and [RHUMB_LINE].\n */\nenum class PathType {\n /**\n * Indicating a great circle arc between two locations.\n */\n GREAT_CIRCLE,\n /**\n * Indicating simple linear interpolation between two locations.\n */\n LINEAR,\n /**\n * Indicating a line of constant bearing between two locations.\n */\n RHUMB_LINE;\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableLines\nimport earth.worldwind.draw.DrawableScreenTexture\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.ZERO\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.util.kgl.GL_ARRAY_BUFFER\nimport earth.worldwind.util.math.boundingRectForUnitSquare\nimport kotlin.jvm.JvmOverloads\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.sin\n\n/**\n * Represents a Placemark shape. A placemark displays an image, a label and a leader connecting the placemark's\n * geographic position to the ground. All three of these items are optional. By default, the leader is not pickable. See\n * [Placemark.isLeaderPickingEnabled].\n *
\n * Placemarks may be drawn with either an image or as single-color square with a specified size. When the placemark\n * attributes indicate a valid image, the placemark's image is drawn as a rectangle in the image's original dimensions,\n * scaled by the image scale attribute. Otherwise, the placemark is drawn as a square with width and height equal to the\n * value of the image scale attribute, in pixels, and color equal to the image color attribute.\n */\nopen class Placemark @JvmOverloads constructor(\n /**\n * The placemark's geographic position.\n */\n position: Position,\n /**\n * The placemark's normal attributes.\n */\n var attributes: PlacemarkAttributes = PlacemarkAttributes(),\n /**\n * The placemark's display name.\n */\n name: String? = null\n) : AbstractRenderable(if (name?.isEmpty() != false) \"Placemark\" else name), Highlightable, Movable {\n /**\n * The placemark's geographic position.\n */\n var position = Position(position)\n set(value) {\n field.copy(value)\n }\n /**\n * The placemark's altitude mode. See [AltitudeMode]\n */\n override var altitudeMode = AltitudeMode.ABSOLUTE\n /**\n * The attributes to use when the placemark is highlighted.\n */\n var highlightAttributes: PlacemarkAttributes? = null\n /**\n * Determines whether the normal or highlighted attributes should be used.\n */\n override var isHighlighted = false\n /**\n * The label text to draw near the placemark.\n */\n var label: String? = /*name*/null // Do not use display name as label by default\n /**\n * Sets the optional level-of-detail selector used to inject logic for selecting PlacemarkAttributes based on\n * the camera distance and highlighted attribute. If set to null, the normal and highlight attribute bundles used\n * respectfully for the normal and highlighted states.\n */\n var levelOfDetailSelector: LevelOfDetailSelector? = null\n /**\n * Enables or disables the eye distance scaling feature for this placemark. When enabled, the placemark's size is\n * reduced at higher eye distances. If true, this placemark's size is scaled inversely proportional to the eye\n * distance if the eye distance is greater than the value of the [Placemark.eyeDistanceScalingThreshold]\n * property. When the eye distance is below the threshold, this placemark is scaled only according to the [PlacemarkAttributes.imageScale].\n */\n var isEyeDistanceScaling = false\n /**\n * Sets the eye distance above which to reduce the size of this placemark, in meters.\n * If [isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as the eye\n * distance increases beyond this threshold.\n */\n var eyeDistanceScalingThreshold = DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Sets the eye altitude, in meters, above which this placemark's label is not displayed.\n */\n var eyeDistanceScalingLabelThreshold = 1.5 * DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD\n /**\n * Indicates whether this placemark's leader, if any, is pickable.\n */\n var isLeaderPickingEnabled = false\n /**\n * Enable additional altitude offset (billboarding) to prevent clipping Placamerk by terrain on tilt.\n */\n var isBillboardingEnabled = false\n /**\n * Indicates whether this placemark has visual priority over other shapes in the scene.\n */\n var isAlwaysOnTop = false\n /**\n * The amount of rotation to apply to the image, measured clockwise and relative to this placemark's\n * [Placemark.imageRotationReference].\n */\n var imageRotation = ZERO\n /**eyeDistanceScaling\n * Sets the type of rotation to apply if the [Placemark.imageRotation] is not zero. This value indicates\n * whether to apply this placemark's image rotation relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is rotated in the plane of the screen and its\n * orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is rotated in a plane tangent to the globe at\n * this placemark's position and retains its orientation relative to the globe.\n */\n var imageRotationReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * Sets the amount of tilt to apply to the image, measured away from the eye point and relative to this\n * placemark's [Placemark.imageTiltReference]. While any positive or negative number may be specified,\n * values outside the range [0. 90] cause some or all of the image to be clipped.\n */\n var imageTilt = ZERO\n /**\n * Sets the type tilt to apply when [Placemark.imageTilt] is non-zero. This value indicates whether to\n * apply this placemark's image tilt relative to the screen or the globe.\n *
\n * If [OrientationMode.RELATIVE_TO_SCREEN], this placemark's image is tilted inwards (for positive tilts) relative\n * to the plane of the screen, and its orientation relative to the globe changes as the view changes.\n * If [OrientationMode.RELATIVE_TO_GLOBE], this placemark's image is tilted towards the globe's surface, and retains its\n * orientation relative to the surface.\n */\n var imageTiltReference = OrientationMode.RELATIVE_TO_SCREEN\n /**\n * A position associated with the object that indicates its aggregate geographic position. For a Placemark, this is\n * simply it's position property.\n *\n * @return [Placemark.position]\n */\n override val referencePosition get() = position\n /**\n * The attributes identified for use during the current render pass.\n */\n protected lateinit var activeAttributes: PlacemarkAttributes\n /**\n * The picked object ID associated with the placemark during the current render pass.\n */\n protected var pickedObjectId = 0\n protected val pickColor = Color()\n /**\n * The distance from the camera to the placemark in meters.\n */\n protected var cameraDistance = 0.0\n\n /**\n * Presents an interfaced for dynamically determining the PlacemarkAttributes based on the distance between the\n * placemark and the camera.\n */\n interface LevelOfDetailSelector {\n /**\n * Gets the active attributes for the current distance to the camera and highlighted state.\n *\n * @param rc The current render context\n * @param placemark The placemark needing a level of detail selection\n * @param cameraDistance The distance from the placemark to the camera (meters)\n *\n * @return if placemark should display or skip its rendering\n */\n fun selectLevelOfDetail(rc: RenderContext, placemark: Placemark, cameraDistance: Double): Boolean\n }\n\n /**\n * Moves the shape over the globe's surface. For a Placemark, this simply set [Placemark.position].\n *\n * @param globe not used.\n * @param position the new position of the shape's reference position.\n */\n override fun moveTo(globe: Globe, position: Position) { this.position = position }\n\n /**\n * Performs the rendering; called by the public render method.\n *\n * @param rc the current render context\n */\n override fun doRender(rc: RenderContext) {\n // Filter out renderable outside projection limits.\n if (rc.globe.projectionLimits?.contains(position) == false) return\n\n // Compute the placemark's Cartesian model point and corresponding distance to the eye point. If the placemark's\n // position is terrain-dependent but off the terrain, then compute it ABSOLUTE so that we have a point for the\n // placemark and are thus able to draw it. Otherwise, its image and label portion that are potentially over the\n // terrain won't get drawn, and would disappear as soon as there is no terrain at the placemark's position. This\n // can occur at the window edges.\n val altitudeMode = if (rc.globe.is2D) AltitudeMode.CLAMP_TO_GROUND else altitudeMode\n rc.geographicToCartesian(position, altitudeMode, placePoint)\n\n // Compute the camera distance to the place point, the value which is used for ordering the placemark drawable\n // and determining the amount of depth offset to apply.\n cameraDistance = if (isAlwaysOnTop) 0.0 else if (rc.globe.is2D) rc.viewingDistance else rc.cameraPoint.distanceTo(placePoint)\n\n // Allow the placemark to adjust the level of detail based on distance to the camera\n if (levelOfDetailSelector?.selectLevelOfDetail(rc, this, cameraDistance) == false) return // skip rendering\n\n // Determine the attributes to use for the current render pass.\n determineActiveAttributes(rc)\n\n // Perform point based culling for placemarks who's textures haven't been loaded yet.\n // If the texture hasn't been loaded yet, then perform point-based culling to avoid\n // loading textures for placemarks that are 'probably' outside the viewing frustum.\n // There are cases where a placemark's texture would be partially visible if it at the\n // edge of the screen were loaded. In these cases the placemark will \"pop\" into view when\n // the placePoint enters the view frustum.\n val activeTexture = activeAttributes.imageSource?.let {\n rc.getTexture(it, null, rc.frustum.containsPoint(placePoint))\n }\n\n // Compute a camera-position proximity scaling factor, so that distant placemarks can be scaled smaller than\n // nearer placemarks.\n val visibilityScale = if (isEyeDistanceScaling)\n (eyeDistanceScalingThreshold / cameraDistance).coerceIn(activeAttributes.minimumImageScale, 1.0) else 1.0\n\n // Apply the icon's translation and scale according to the image size, image offset and image scale. The image\n // offset is defined with its origin at the image's bottom-left corner and axes that extend up and to the right\n // from the origin point. When the placemark has no active texture the image scale defines the image size and no\n // other scaling is applied.\n val offsetX: Double\n val offsetY: Double\n val scaleX: Double\n val scaleY: Double\n if (activeTexture != null) {\n val w = activeTexture.width.toDouble()\n val h = activeTexture.height.toDouble()\n val s = activeAttributes.imageScale * visibilityScale\n activeAttributes.imageOffset.offsetForSize(w, h, offset)\n offsetX = offset.x * s\n offsetY = offset.y * s\n scaleX = w * s\n scaleY = h * s\n } else {\n // This branch serves both non-textured attributes and also textures that haven't been loaded yet.\n // We set the size for non-loaded textures to the typical size of a contemporary \"small\" icon (24px)\n var size = if (activeAttributes.imageSource != null) 24.0 else activeAttributes.imageScale\n size *= visibilityScale\n activeAttributes.imageOffset.offsetForSize(size, size, offset)\n offsetX = offset.x\n offsetY = offset.y\n scaleY = size\n scaleX = scaleY\n }\n\n // Offset along the normal vector to avoid collision with terrain.\n if (isBillboardingEnabled && offsetY != 0.0) {\n rc.globe.geographicToCartesianNormal(position.latitude, position.longitude, scratchVector).also {\n // Use real camera distance in billboarding\n val distance = if (isAlwaysOnTop) rc.cameraPoint.distanceTo(placePoint) else cameraDistance\n val altitude = rc.pixelSizeAtDistance(distance) * sin(rc.camera.tilt.inRadians)\n placePoint.add(scratchVector.multiply(offsetY * altitude))\n }\n }\n\n // Compute a screen depth offset appropriate for the current viewing parameters.\n var depthOffset = 0.0\n val absTilt = abs(rc.camera.tilt.inDegrees)\n if (cameraDistance < rc.horizonDistance && absTilt <= 90) {\n depthOffset = (1 - absTilt / 90) * DEFAULT_DEPTH_OFFSET\n }\n\n // Project the placemark's model point to screen coordinates, using the screen depth offset to push the screen\n // point's z component closer to the eye point.\n if (!rc.projectWithDepth(placePoint, depthOffset, screenPlacePoint)) return // clipped by the near plane or the far plane\n\n // Keep track of the drawable count to determine whether this placemark has enqueued drawables.\n val drawableCount = rc.drawableCount\n if (rc.isPickMode) {\n pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, pickColor)\n }\n\n // Prepare a drawable for the placemark's leader, if requested. Enqueue the leader drawable before the icon\n // drawable in order to give the icon visual priority over the leader.\n if (mustDrawLeader(rc)) {\n // Compute the placemark's Cartesian ground point.\n rc.geographicToCartesian(position, AltitudeMode.CLAMP_TO_GROUND, groundPoint)\n\n // If the leader is visible, enqueue a drawable leader for processing on the OpenGL thread.\n if (rc.frustum.intersectsSegment(groundPoint, placePoint)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableLines.obtain(pool)\n prepareDrawableLeader(rc, drawable)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n\n // Prepare image transformation matrix\n prepareImageTransform(rc.camera, offsetX, offsetY, scaleX, scaleY)\n\n // If the placemark's icon is visible, enqueue a drawable icon for processing on the OpenGL thread.\n boundingRectForUnitSquare(imageTransform, imageBounds)\n if (rc.frustum.intersectsViewport(imageBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableIcon(rc, drawable, activeTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n // If there's a label, perform these same operations for the label texture.\n if ((!isEyeDistanceScaling || cameraDistance <= eyeDistanceScalingLabelThreshold) && mustDrawLabel(rc)) {\n // Render the label's texture when the label's position is in the frustum. If the label's position is outside\n // the frustum we don't do anything. This ensures that label textures are rendered only as necessary.\n rc.getText(label, activeAttributes.labelAttributes, rc.frustum.containsPoint(placePoint))?.let { labelTexture ->\n val w = labelTexture.width.toDouble()\n val h = labelTexture.height.toDouble()\n val s = activeAttributes.labelAttributes.scale * visibilityScale\n activeAttributes.labelAttributes.textOffset.offsetForSize(w, h, offset)\n labelTransform.setTranslation(\n screenPlacePoint.x - offset.x * s,\n screenPlacePoint.y - offset.y * s,\n screenPlacePoint.z\n )\n labelTransform.setScale(w * s, h * s, 1.0)\n boundingRectForUnitSquare(labelTransform, labelBounds)\n if (rc.frustum.intersectsViewport(labelBounds)) {\n val pool = rc.getDrawablePool()\n val drawable = DrawableScreenTexture.obtain(pool)\n prepareDrawableLabel(rc, drawable, labelTexture)\n rc.offerShapeDrawable(drawable, cameraDistance)\n }\n }\n }\n\n // Enqueue a picked object that associates the placemark's icon and leader with its picked object ID.\n if (rc.isPickMode && rc.drawableCount != drawableCount) {\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n /**\n * Determines the placemark attributes to use for the current render pass.\n *\n * @param rc the current render context\n */\n protected open fun determineActiveAttributes(rc: RenderContext) {\n val highlightAttributes = highlightAttributes\n activeAttributes = if (isHighlighted && highlightAttributes != null) highlightAttributes else attributes\n }\n\n /**\n * Prepare image transform matrix according to specified parameters\n *\n * @param camera current camera view\n * @param offsetX offset along X axis\n * @param offsetY offset along X axis\n * @param scaleX scaled width\n * @param scaleY scaled height\n */\n protected open fun prepareImageTransform(\n camera: Camera, offsetX: Double, offsetY: Double, scaleX: Double, scaleY: Double\n ) {\n // Initialize the unit square transform to the identity matrix.\n imageTransform.setToIdentity()\n\n // Position image on screen\n imageTransform.multiplyByTranslation(\n screenPlacePoint.x, screenPlacePoint.y, screenPlacePoint.z\n )\n\n // Divide Z by 2^24 to prevent texture clipping when tilting (where 24 is depth buffer bit size).\n // Doing so will limit depth range to (diagonal length)/2^24 and make its value within 0..1 range.\n imageTransform.multiplyByScale(1.0, 1.0, 1.0 / (1 shl 24))\n\n // Perform the tilt so that the image tilts back from its base into the view volume\n val actualTilt = if (imageTiltReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.tilt + imageTilt else imageTilt\n if (actualTilt.inDegrees != 0.0) imageTransform.multiplyByRotation(-1.0, 0.0, 0.0, actualTilt)\n\n // Perform image rotation\n val actualRotation = if (imageRotationReference == OrientationMode.RELATIVE_TO_GLOBE)\n camera.heading - imageRotation else -imageRotation\n if (actualRotation.inDegrees != 0.0) imageTransform.multiplyByRotation(0.0, 0.0, 1.0, actualRotation)\n\n // Apply pivot translation\n imageTransform.multiplyByTranslation(-offsetX, -offsetY, 0.0)\n\n // Apply scale\n imageTransform.multiplyByScale(scaleX, scaleY, 1.0)\n }\n\n /**\n * Prepares this placemark's icon or symbol for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableIcon(rc: RenderContext, drawable: DrawableScreenTexture, activeTexture: Texture?) {\n // Use the basic GLSL program to draw the placemark's icon.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the plaemark's unit square transform matrix.\n drawable.unitSquareTransform.copy(imageTransform)\n\n // Configure the drawable according to the placemark's active attributes. Use a color appropriate for the pick\n // mode. When picking use a unique color associated with the picked object ID. Use the texture associated with\n // the active attributes' image source and its associated tex coord transform. If the texture is not specified\n // or not available, draw a simple colored square.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.imageColor)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = activeTexture\n drawable.enableDepthTest = activeAttributes.isDepthTest\n }\n\n /**\n * Prepares this placemark's label for processing in a subsequent drawing pass. Implementations must be\n * careful not to leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLabel(rc: RenderContext, drawable: DrawableScreenTexture, labelTexture: Texture) {\n // Use the basic GLSL program to draw the placemark's label.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Use the label's unit square transform matrix.\n drawable.unitSquareTransform.copy(labelTransform)\n\n // Configure the drawable according to the active label attributes. Use a color appropriate for the pick mode. When\n // picking use a unique color associated with the picked object ID. Use the texture associated with the active\n // attributes' text image and its associated tex coord transform. The text texture includes the appropriate\n // color for drawing, specifying white for normal drawing ensures the color multiplication in the shader results\n // in the texture's color.\n if (rc.isPickMode) drawable.color.copy(pickColor) else drawable.color.set(1f, 1f, 1f, 1f)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.texture = labelTexture\n drawable.enableDepthTest = activeAttributes.labelAttributes.isDepthTest\n }\n\n /**\n * Prepares this placemark's leader for drawing in a subsequent drawing pass. Implementations must be careful not to\n * leak resources from Placemark into the Drawable.\n *\n * @param rc the current render context\n * @param drawable the Drawable to be prepared\n */\n protected open fun prepareDrawableLeader(rc: RenderContext, drawable: DrawableLines) {\n // Use the basic GLSL program to draw the placemark's leader.\n drawable.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Compute the drawable's vertex points, in Cartesian coordinates relative to the placemark's ground point.\n drawable.vertexPoints[0] = 0f // groundPoint.x - groundPoint.x\n drawable.vertexPoints[1] = 0f // groundPoint.y - groundPoint.y\n drawable.vertexPoints[2] = 0f // groundPoint.z - groundPoint.z\n drawable.vertexPoints[3] = (placePoint.x - groundPoint.x).toFloat()\n drawable.vertexPoints[4] = (placePoint.y - groundPoint.y).toFloat()\n drawable.vertexPoints[5] = (placePoint.z - groundPoint.z).toFloat()\n\n // Compute the drawable's modelview-projection matrix, relative to the placemark's ground point.\n drawable.mvpMatrix.copy(rc.modelviewProjection)\n drawable.mvpMatrix.multiplyByTranslation(groundPoint.x, groundPoint.y, groundPoint.z)\n\n // Configure the drawable according to the placemark's active leader attributes. Use a color appropriate for the\n // pick mode. When picking use a unique color associated with the picked object ID.\n drawable.color.copy(if (rc.isPickMode) pickColor else activeAttributes.leaderAttributes.outlineColor)\n drawable.opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n drawable.lineWidth = activeAttributes.leaderAttributes.outlineWidth\n drawable.enableDepthTest = activeAttributes.leaderAttributes.isDepthTest\n }\n\n /**\n * Determines if a label should and can be drawn.\n *\n * @return True if there is a valid label and label attributes.\n */\n protected open fun mustDrawLabel(rc: RenderContext) = activeAttributes.isDrawLabel && label?.isNotEmpty() == true\n\n /**\n * Determines if a leader-line should and can be drawn.\n *\n * @return True if leader-line directive is enabled and there are valid leader-line attributes.\n */\n protected open fun mustDrawLeader(rc: RenderContext) =\n activeAttributes.isDrawLeader && (isLeaderPickingEnabled || !rc.isPickMode) &&\n altitudeMode != AltitudeMode.CLAMP_TO_GROUND && !rc.globe.is2D\n\n companion object {\n /**\n * The default eye distance above which to reduce the size of this placemark, in meters.\n * If [Placemark.isEyeDistanceScaling] is true, this placemark's image, label and leader sizes are reduced as\n * the eye distance increases beyond this threshold.\n */\n const val DEFAULT_EYE_DISTANCE_SCALING_THRESHOLD = 4e5\n protected const val DEFAULT_DEPTH_OFFSET = -0.03\n private val placePoint = Vec3()\n private val scratchVector = Vec3()\n private val screenPlacePoint = Vec3()\n private val groundPoint = Vec3()\n private val offset = Vec2()\n private val imageTransform = Matrix4()\n private val labelTransform = Matrix4()\n private val imageBounds = Viewport()\n private val labelBounds = Viewport()\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws a simple square\n * centered on the supplied position with the given size and color.\n *\n * @param position The geographic position where the placemark is drawn.\n * @param color The color of the placemark.\n * @param pixelSize The width and height of the placemark.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithColorAndSize(position: Position, color: Color, pixelSize: Int) =\n Placemark(position, PlacemarkAttributes().apply {\n imageColor = color\n imageScale = pixelSize.toDouble()\n })\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle that draws the given image\n * centered on the supplied position.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle.\n */\n @JvmStatic\n fun createWithImage(position: Position, imageSource: ImageSource) =\n Placemark(position, PlacemarkAttributes.createWithImage(imageSource))\n\n /**\n * This factory method creates a Placemark and an associated PlacemarkAttributes bundle (with TextAttributes) that\n * draws the given image centered on the supplied position with a nearby label.\n *\n * @param position The geographic position with the placemark is drawn.\n * @param imageSource The object containing the image that is drawn.\n * @param label The text that is drawn near the image. This parameter becomes the placemark's displayName\n * property.\n *\n * @return A new Placemark with a PlacemarkAttributes bundle containing TextAttributes.\n */\n @JvmStatic\n fun createWithImageAndLabel(\n position: Position, imageSource: ImageSource, label: String\n ) = Placemark(position, PlacemarkAttributes.createWithImage(imageSource), label)\n\n protected fun nextCacheKey() = Any()\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\nimport kotlin.jvm.JvmStatic\n\n/**\n * Holds attributes applied to [Placemark] shapes.\n * The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\nopen class PlacemarkAttributes(\n /**\n * Returns the source of the placemark's image. If null, the placemark is drawn as a square whose width and height\n * are the value of this attribute object's [imageScale] property.\n */\n var imageSource: ImageSource?,\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n imageColor: Color,\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n imageOffset: Offset,\n /**\n * Returns the amount to scale the placemark's image. When this attribute bundle has a valid image path the scale is\n * applied to the image's dimensions. Otherwise, the scale indicates the dimensions in pixels of a square drawn at\n * the placemark's geographic position. A scale of 0 causes the placemark to disappear; however, the placemark's\n * label, if any, is still drawn.\n */\n var imageScale: Double,\n /**\n * Returns the minimum amount to scale the placemark's image. When a [Placemark.isEyeDistanceScaling] is true,\n * this value controls the minimum size of the rendered placemark. A value of 0 allows the placemark to disappear.\n */\n var minimumImageScale: Double,\n /**\n * Returns whether to draw a placemark's label text.\n */\n var isDrawLabel: Boolean,\n /**\n * Returns whether to draw a line from the placemark's geographic position to the ground.\n */\n var isDrawLeader: Boolean,\n /**\n * Returns whether the placemark should be depth-tested against other objects in the scene. If true, the placemark\n * may be occluded by terrain and other objects in certain viewing situations. If false, the placemark will not be\n * occluded by terrain and other objects. If this value is true, the placemark's label, if any, has an independent\n * depth-test control.\n */\n var isDepthTest: Boolean,\n /**\n * Returns the attributes to apply to the placemark's label\n */\n labelAttributes: TextAttributes,\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n leaderAttributes: ShapeAttributes\n) {\n /**\n * Returns the image color. When this attribute bundle has a valid image path the placemark's image is composed with\n * this image color to achieve the final placemark color. Otherwise, the placemark is drawn in this color. The color\n * white, the default, causes the image to be drawn in its native colors.\n */\n var imageColor = imageColor\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the location within the placemark's image to align with the placemark's geographic position. The default\n * value centers the image at the geographic position.\n */\n var imageOffset = imageOffset\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the placemark's label\n */\n var labelAttributes = labelAttributes\n set(value) {\n field.copy(value)\n }\n /**\n * Returns the attributes to apply to the leader line if it's drawn.\n */\n var leaderAttributes = leaderAttributes\n set(value) {\n field.copy(value)\n }\n\n /**\n * Constructs a placemark attributes bundle. The defaults indicate a placemark displayed as a white 1x1 pixel square\n * centered on the placemark's geographic position.\n */\n constructor(): this(\n imageSource = null,\n imageColor = Color(1f, 1f, 1f, 1f), // white\n imageOffset = Offset.center(),\n imageScale = 1.0,\n minimumImageScale = 0.0,\n isDrawLabel = true,\n isDrawLeader = false,\n isDepthTest = true,\n labelAttributes = TextAttributes(),\n leaderAttributes = ShapeAttributes()\n )\n\n /**\n * Constructs a placemark attribute bundle from the specified attributes. Performs a deep copy of the color, offset,\n * label attributes and leader-line attributes.\n *\n * @param attributes The attributes to be copied.\n */\n constructor(attributes: PlacemarkAttributes): this(\n attributes.imageSource,\n Color(attributes.imageColor),\n Offset(attributes.imageOffset),\n attributes.imageScale,\n attributes.minimumImageScale,\n attributes.isDrawLabel,\n attributes.isDrawLeader,\n attributes.isDepthTest,\n TextAttributes(attributes.labelAttributes),\n ShapeAttributes(attributes.leaderAttributes)\n )\n\n fun copy(attributes: PlacemarkAttributes) = apply {\n imageSource = attributes.imageSource\n imageColor.copy(attributes.imageColor)\n imageOffset.copy(attributes.imageOffset)\n imageScale = attributes.imageScale\n minimumImageScale = attributes.minimumImageScale\n isDrawLabel = attributes.isDrawLabel\n isDrawLeader = attributes.isDrawLeader\n isDepthTest = attributes.isDepthTest\n labelAttributes.copy(attributes.labelAttributes)\n leaderAttributes.copy(attributes.leaderAttributes)\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is PlacemarkAttributes) return false\n if (imageSource != other.imageSource) return false\n if (imageColor != other.imageColor) return false\n if (imageOffset != other.imageOffset) return false\n if (imageScale != other.imageScale) return false\n if (minimumImageScale != other.minimumImageScale) return false\n if (isDrawLabel != other.isDrawLabel) return false\n if (isDrawLeader != other.isDrawLeader) return false\n if (isDepthTest != other.isDepthTest) return false\n if (labelAttributes != other.labelAttributes) return false\n if (leaderAttributes != other.leaderAttributes) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = imageSource?.hashCode() ?: 0\n result = 31 * result + imageColor.hashCode()\n result = 31 * result + imageOffset.hashCode()\n result = 31 * result + imageScale.hashCode()\n result = 31 * result + minimumImageScale.hashCode()\n result = 31 * result + isDrawLabel.hashCode()\n result = 31 * result + isDrawLeader.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + labelAttributes.hashCode()\n result = 31 * result + leaderAttributes.hashCode()\n return result\n }\n\n companion object {\n @JvmStatic\n fun createWithImage(imageSource: ImageSource) = PlacemarkAttributes().apply { this.imageSource = imageSource }\n\n @JvmStatic\n fun createWithImageAndLeader(imageSource: ImageSource) = PlacemarkAttributes().apply {\n this.imageSource = imageSource\n isDrawLeader = true\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawShapeState\nimport earth.worldwind.draw.Drawable\nimport earth.worldwind.draw.DrawableShape\nimport earth.worldwind.draw.DrawableSurfaceShape\nimport earth.worldwind.geom.*\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.render.*\nimport earth.worldwind.render.buffer.FloatBufferObject\nimport earth.worldwind.render.buffer.IntBufferObject\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ResamplingMode\nimport earth.worldwind.render.image.WrapMode\nimport earth.worldwind.render.program.BasicShaderProgram\nimport earth.worldwind.shape.PathType.*\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\nimport earth.worldwind.util.kgl.*\nimport kotlin.jvm.JvmOverloads\n\nopen class Polygon @JvmOverloads constructor(\n positions: List = emptyList(), attributes: ShapeAttributes = ShapeAttributes()\n): AbstractShape(attributes) {\n protected val boundaries = mutableListOf(positions)\n val boundaryCount get() = boundaries.size\n protected var vertexArray = FloatArray(0)\n protected var vertexIndex = 0\n // TODO Use ShortArray instead of mutableListOf to avoid unnecessary memory re-allocations\n protected val topElements = mutableListOf()\n protected val sideElements = mutableListOf()\n protected val outlineElements = mutableListOf()\n protected val verticalElements = mutableListOf()\n protected var vertexBufferKey = nextCacheKey()\n protected var elementBufferKey = nextCacheKey()\n protected val vertexOrigin = Vec3()\n protected var cameraDistance = 0.0\n protected var texCoord1d = 0.0\n protected val tessCallback = object : GLUtessellatorCallbackAdapter() {\n override fun combineData(\n coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any\n ) = tessCombine(polygonData as RenderContext, coords, data, weight, outData)\n\n override fun vertexData(vertexData: Any, polygonData: Any) = tessVertex(polygonData as RenderContext, vertexData)\n\n override fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) = tessEdgeFlag(polygonData as RenderContext, boundaryEdge)\n\n override fun errorData(errnum: Int, polygonData: Any) = tessError(polygonData as RenderContext, errnum)\n }\n private val point = Vec3()\n private val prevPoint = Vec3()\n private val texCoord2d = Vec3()\n private val texCoordMatrix = Matrix3()\n private val modelToTexCoord = Matrix4()\n private val intermediateLocation = Location()\n private val tessCoords = DoubleArray(3)\n private val tessVertices = IntArray(3)\n private val tessEdgeFlags = BooleanArray(3)\n private var tessEdgeFlag = true\n private var tessVertexCount = 0\n\n companion object {\n protected const val VERTEX_STRIDE = 6\n protected val defaultInteriorImageOptions = ImageOptions().apply { wrapMode = WrapMode.REPEAT }\n protected val defaultOutlineImageOptions = ImageOptions().apply {\n wrapMode = WrapMode.REPEAT\n resamplingMode = ResamplingMode.NEAREST_NEIGHBOR\n }\n protected const val VERTEX_ORIGINAL = 0\n protected const val VERTEX_INTERMEDIATE = 1\n protected const val VERTEX_COMBINED = 2\n protected fun nextCacheKey() = Any()\n }\n\n fun getBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"getBoundary\", \"invalidIndex\")\n }\n return boundaries[index]\n }\n\n fun setBoundary(index: Int, positions: List): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"setBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.set(index, positions)\n }\n\n fun addBoundary(positions: List): Boolean {\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n return boundaries.add(positions)\n }\n\n fun addBoundary(index: Int, positions: List) {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"addBoundary\", \"invalidIndex\")\n }\n reset()\n // TODO Make deep copy of positions the same way as for single position shapes?\n boundaries.add(index, positions)\n }\n\n fun removeBoundary(index: Int): List {\n require(index in boundaries.indices) {\n logMessage(ERROR, \"Polygon\", \"removeBoundary\", \"invalidIndex\")\n }\n reset()\n return boundaries.removeAt(index)\n }\n\n fun clearBoundaries() {\n boundaries.clear()\n reset()\n }\n\n override fun reset() {\n super.reset()\n vertexArray = FloatArray(0)\n topElements.clear()\n sideElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n }\n\n override fun makeDrawable(rc: RenderContext) {\n if (boundaries.isEmpty()) return // nothing to draw\n\n if (mustAssembleGeometry(rc)) {\n assembleGeometry(rc)\n vertexBufferKey = nextCacheKey()\n elementBufferKey = nextCacheKey()\n }\n\n // Obtain a drawable form the render context pool.\n val drawable: Drawable\n val drawState: DrawShapeState\n if (isSurfaceShape) {\n val pool = rc.getDrawablePool()\n drawable = DrawableSurfaceShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceGeographic(rc, boundingSector)\n drawable.offset = rc.globe.offset\n drawable.sector.copy(boundingSector)\n } else {\n val pool = rc.getDrawablePool()\n drawable = DrawableShape.obtain(pool)\n drawState = drawable.drawState\n cameraDistance = cameraDistanceCartesian(rc, vertexArray, vertexIndex, VERTEX_STRIDE, vertexOrigin)\n }\n\n // Use the basic GLSL program to draw the shape.\n drawState.program = rc.getShaderProgram { BasicShaderProgram() }\n\n // Assemble the drawable's OpenGL vertex buffer object.\n drawState.vertexBuffer = rc.getBufferObject(vertexBufferKey) {\n FloatBufferObject(GL_ARRAY_BUFFER, vertexArray, vertexIndex)\n }\n\n // Assemble the drawable's OpenGL element buffer object.\n drawState.elementBuffer = rc.getBufferObject(elementBufferKey) {\n IntBufferObject(\n GL_ELEMENT_ARRAY_BUFFER, (topElements + sideElements + outlineElements + verticalElements).toIntArray()\n )\n }\n if (isSurfaceShape || activeAttributes.interiorColor.alpha >= 1.0) {\n drawInterior(rc, drawState)\n drawOutline(rc, drawState)\n } else {\n drawOutline(rc, drawState)\n drawInterior(rc, drawState)\n }\n\n // Configure the drawable according to the shape's attributes. Disable triangle backface culling when we're\n // displaying a polygon without extruded sides, so we want to draw the top and the bottom.\n drawState.vertexOrigin.copy(vertexOrigin)\n drawState.vertexStride = VERTEX_STRIDE * 4 // stride in bytes\n drawState.enableCullFace = isExtrude\n drawState.enableDepthTest = activeAttributes.isDepthTest\n drawState.enableDepthWrite = activeAttributes.isDepthWrite\n\n // Enqueue the drawable for processing on the OpenGL thread.\n if (isSurfaceShape) rc.offerSurfaceDrawable(drawable, 0.0 /*zOrder*/)\n else rc.offerShapeDrawable(drawable, cameraDistance)\n }\n\n protected open fun drawInterior(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawInterior) return\n\n // Configure the drawable to use the interior texture when drawing the interior.\n activeAttributes.interiorImageSource?.let { interiorImageSource ->\n rc.getTexture(interiorImageSource, defaultInteriorImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's interior top.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.interiorColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.texCoordAttrib(2 /*size*/, 12 /*offset in bytes*/)\n drawState.drawElements(GL_TRIANGLES, topElements.size, GL_UNSIGNED_INT, 0 /*offset*/)\n\n // Configure the drawable to display the shape's interior sides.\n if (isExtrude) {\n drawState.texture(null)\n drawState.drawElements(GL_TRIANGLES, sideElements.size, GL_UNSIGNED_INT, topElements.size * Int.SIZE_BYTES /*offset*/)\n }\n }\n\n protected open fun drawOutline(rc: RenderContext, drawState: DrawShapeState) {\n if (!activeAttributes.isDrawOutline) return\n\n // Configure the drawable to use the outline texture when drawing the outline.\n activeAttributes.outlineImageSource?.let { outlineImageSource ->\n rc.getTexture(outlineImageSource, defaultOutlineImageOptions)?.let { texture ->\n val metersPerPixel = rc.pixelSizeAtDistance(cameraDistance)\n computeRepeatingTexCoordTransform(texture, metersPerPixel, texCoordMatrix)\n drawState.texture(texture)\n drawState.texCoordMatrix(texCoordMatrix)\n }\n } ?: drawState.texture(null)\n\n // Configure the drawable to display the shape's outline.\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texCoordAttrib(1 /*size*/, 20 /*offset in bytes*/)\n drawState.drawElements(\n GL_LINES, outlineElements.size,\n GL_UNSIGNED_INT, (topElements.size + sideElements.size) * Int.SIZE_BYTES /*offset*/\n )\n\n // Configure the drawable to display the shape's extruded verticals.\n if (activeAttributes.isDrawVerticals && isExtrude) {\n drawState.color(if (rc.isPickMode) pickColor else activeAttributes.outlineColor)\n drawState.opacity(if (rc.isPickMode) 1f else rc.currentLayer.opacity)\n drawState.lineWidth(activeAttributes.outlineWidth)\n drawState.texture(null)\n drawState.drawElements(\n GL_LINES, verticalElements.size,\n GL_UNSIGNED_INT, (topElements.size + sideElements.size + outlineElements.size) * Int.SIZE_BYTES /*offset*/\n )\n }\n }\n\n protected open fun mustAssembleGeometry(rc: RenderContext) = vertexArray.isEmpty()\n\n protected open fun assembleGeometry(rc: RenderContext) {\n // Determine the number of vertexes\n val noIntermediatePoints = maximumIntermediatePoints <= 0 || pathType == LINEAR\n val vertexCount = boundaries.sumOf { p ->\n if (noIntermediatePoints) p.size\n else if (p.isNotEmpty() && p[0] == p[p.size - 1]) p.size + (p.size - 1) * maximumIntermediatePoints\n else p.size + p.size * maximumIntermediatePoints\n }\n\n // Clear the shape's vertex array and element arrays. These arrays will accumulate values as the shapes's\n // geometry is assembled.\n vertexIndex = 0\n vertexArray = if (isExtrude && !isSurfaceShape) FloatArray(vertexCount * 2 * VERTEX_STRIDE)\n else if (!isSurfaceShape) FloatArray(vertexCount * VERTEX_STRIDE)\n else FloatArray((vertexCount + boundaries.size) * VERTEX_STRIDE) // Reserve boundaries.size for combined vertexes\n topElements.clear()\n sideElements.clear()\n outlineElements.clear()\n verticalElements.clear()\n\n // Compute a matrix that transforms from Cartesian coordinates to shape texture coordinates.\n determineModelToTexCoord(rc)\n val tess = rc.tessellator\n GLU.gluTessNormal(tess, 0.0, 0.0, 1.0)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, tessCallback)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, tessCallback)\n GLU.gluTessBeginPolygon(tess, rc)\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions to assemble\n GLU.gluTessBeginContour(tess)\n\n // Add the boundary's first vertex.\n var begin = positions[0]\n addVertex(rc, begin.latitude, begin.longitude, begin.altitude, VERTEX_ORIGINAL /*type*/)\n\n // Add the remaining boundary vertices, tessellating each edge as indicated by the polygon's properties.\n for (idx in 1 until positions.size) {\n val end = positions[idx]\n addIntermediateVertices(rc, begin, end)\n addVertex(rc, end.latitude, end.longitude, end.altitude, VERTEX_ORIGINAL /*type*/)\n begin = end\n }\n\n // Tessellate the implicit closing edge if the boundary is not already closed.\n if (begin != positions[0]) addIntermediateVertices(rc, begin, positions[0])\n GLU.gluTessEndContour(tess)\n }\n GLU.gluTessEndPolygon(tess)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_EDGE_FLAG_DATA, null)\n GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR_DATA, null)\n\n // Compute the shape's bounding box or bounding sector from its assembled coordinates.\n if (isSurfaceShape) {\n boundingSector.setEmpty()\n boundingSector.union(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingSector.translate(vertexOrigin.y /*lat*/, vertexOrigin.x /*lon*/)\n boundingBox.setToUnitBox() // Surface/geographic shape bounding box is unused\n } else {\n boundingBox.setToPoints(vertexArray, vertexIndex, VERTEX_STRIDE)\n boundingBox.translate(vertexOrigin.x, vertexOrigin.y, vertexOrigin.z)\n boundingSector.setEmpty() // Cartesian shape bounding sector is unused\n }\n }\n\n protected open fun addIntermediateVertices(rc: RenderContext, begin: Position, end: Position) {\n if (maximumIntermediatePoints <= 0) return // suppress intermediate vertices when configured to do so\n val azimuth: Angle\n val length: Double\n when (pathType) {\n GREAT_CIRCLE -> {\n azimuth = begin.greatCircleAzimuth(end)\n length = begin.greatCircleDistance(end)\n }\n RHUMB_LINE -> {\n azimuth = begin.rhumbAzimuth(end)\n length = begin.rhumbDistance(end)\n }\n else -> return // suppress intermediate vertices when the path type is linear\n }\n if (length < NEAR_ZERO_THRESHOLD) return // suppress intermediate vertices when the edge length less than a millimeter (on Earth)\n val numSubsegments = maximumIntermediatePoints + 1\n val deltaDist = length / numSubsegments\n val deltaAlt = (end.altitude - begin.altitude) / numSubsegments\n var dist = deltaDist\n var alt = begin.altitude + deltaAlt\n for (idx in 1 until numSubsegments) {\n val loc = intermediateLocation\n when (pathType) {\n GREAT_CIRCLE -> begin.greatCircleLocation(azimuth, dist, loc)\n RHUMB_LINE -> begin.rhumbLocation(azimuth, dist, loc)\n else -> {}\n }\n addVertex(rc, loc.latitude, loc.longitude, alt, VERTEX_INTERMEDIATE /*type*/)\n dist += deltaDist\n alt += deltaAlt\n }\n }\n\n protected open fun addVertex(rc: RenderContext, latitude: Angle, longitude: Angle, altitude: Double, type: Int): Int {\n val vertex = vertexIndex / VERTEX_STRIDE\n var point = rc.geographicToCartesian(latitude, longitude, altitude, altitudeMode, point)\n val texCoord2d = texCoord2d.copy(point).multiplyByMatrix(modelToTexCoord)\n if (type != VERTEX_COMBINED) {\n tessCoords[0] = longitude.inDegrees\n tessCoords[1] = latitude.inDegrees\n tessCoords[2] = altitude\n GLU.gluTessVertex(rc.tessellator, tessCoords, 0 /*coords_offset*/, vertex)\n }\n if (vertex == 0) {\n if (isSurfaceShape) vertexOrigin.set(longitude.inDegrees, latitude.inDegrees, altitude) else vertexOrigin.copy(point)\n texCoord1d = 0.0\n } else {\n texCoord1d += point.distanceTo(prevPoint)\n }\n prevPoint.copy(point)\n if (isSurfaceShape) {\n vertexArray[vertexIndex++] = (longitude.inDegrees - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (latitude.inDegrees - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (altitude - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n } else {\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = texCoord2d.x.toFloat()\n vertexArray[vertexIndex++] = texCoord2d.y.toFloat()\n vertexArray[vertexIndex++] = texCoord1d.toFloat()\n if (isExtrude) {\n point = rc.geographicToCartesian(latitude, longitude, 0.0, AltitudeMode.CLAMP_TO_GROUND, this.point)\n vertexArray[vertexIndex++] = (point.x - vertexOrigin.x).toFloat()\n vertexArray[vertexIndex++] = (point.y - vertexOrigin.y).toFloat()\n vertexArray[vertexIndex++] = (point.z - vertexOrigin.z).toFloat()\n vertexArray[vertexIndex++] = 0f /*unused*/\n vertexArray[vertexIndex++] = 0f /*unused*/\n vertexArray[vertexIndex++] = 0f /*unused*/\n }\n if (isExtrude && type == VERTEX_ORIGINAL) {\n verticalElements.add(vertex)\n verticalElements.add(vertex.inc())\n }\n }\n return vertex\n }\n\n protected open fun determineModelToTexCoord(rc: RenderContext) {\n var mx = 0.0\n var my = 0.0\n var mz = 0.0\n var numPoints = 0.0\n for (i in boundaries.indices) {\n val positions = boundaries[i]\n if (positions.isEmpty()) continue // no boundary positions\n for (j in positions.indices) {\n val point = rc.geographicToCartesian(positions[j], AltitudeMode.ABSOLUTE, point)\n mx += point.x\n my += point.y\n mz += point.z\n numPoints++\n }\n }\n mx /= numPoints\n my /= numPoints\n mz /= numPoints\n rc.globe.cartesianToLocalTransform(mx, my, mz, modelToTexCoord)\n modelToTexCoord.invertOrthonormal()\n }\n\n protected open fun tessCombine(rc: RenderContext, coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {\n ensureVertexArrayCapacity() // Increment array size to fit combined vertexes\n outData[0] = addVertex(rc, coords[1].degrees /*lat*/, coords[0].degrees /*lon*/, coords[2] /*alt*/, VERTEX_COMBINED /*type*/)\n }\n\n protected open fun tessVertex(rc: RenderContext, vertexData: Any) {\n tessVertices[tessVertexCount] = vertexData as Int\n tessEdgeFlags[tessVertexCount] = tessEdgeFlag\n if (tessVertexCount < 2) {\n tessVertexCount++ // increment the vertex count and wait for more vertices\n return\n } else {\n tessVertexCount = 0 // reset the vertex count and process one triangle\n }\n val v0 = tessVertices[0]\n val v1 = tessVertices[1]\n val v2 = tessVertices[2]\n topElements.add(v0)\n topElements.add(v1)\n topElements.add(v2)\n if (tessEdgeFlags[0] && isExtrude && !isSurfaceShape) {\n sideElements.add(v0)\n sideElements.add(v0.inc())\n sideElements.add(v1)\n sideElements.add(v1)\n sideElements.add(v0.inc())\n sideElements.add(v1.inc())\n }\n if (tessEdgeFlags[1] && isExtrude && !isSurfaceShape) {\n sideElements.add(v1)\n sideElements.add(v1.inc())\n sideElements.add(v2)\n sideElements.add(v2)\n sideElements.add(v1.inc())\n sideElements.add(v2.inc())\n }\n if (tessEdgeFlags[2] && isExtrude && !isSurfaceShape) {\n sideElements.add(v2)\n sideElements.add(v2.inc())\n sideElements.add(v0)\n sideElements.add(v0)\n sideElements.add(v2.inc())\n sideElements.add(v0.inc())\n }\n if (tessEdgeFlags[0]) {\n outlineElements.add(v0)\n outlineElements.add(v1)\n }\n if (tessEdgeFlags[1]) {\n outlineElements.add(v1)\n outlineElements.add(v2)\n }\n if (tessEdgeFlags[2]) {\n outlineElements.add(v2)\n outlineElements.add(v0)\n }\n }\n\n protected open fun tessEdgeFlag(rc: RenderContext, boundaryEdge: Boolean) { tessEdgeFlag = boundaryEdge }\n\n protected open fun tessError(rc: RenderContext, errNum: Int) {\n val errStr = GLU.gluErrorString(errNum)\n logMessage(\n WARN, \"Polygon\", \"assembleGeometry\", \"Error attempting to tessellate polygon '$errStr'\"\n )\n }\n\n protected open fun ensureVertexArrayCapacity() {\n val size = vertexArray.size\n if (size == vertexIndex) {\n val increment = (size shr 1).coerceAtLeast(12)\n val newArray = FloatArray(size + increment)\n vertexArray.copyInto(newArray)\n vertexArray = newArray\n }\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.image.ImageSource\n\n/**\n * Holds attributes applied to geographic shapes.\n */\nopen class ShapeAttributes(\n /**\n * Indicates whether shape interiors are enabled.\n */\n var isDrawInterior: Boolean,\n /**\n * Indicates whether shape outlines are enabled.\n */\n var isDrawOutline: Boolean,\n /**\n * Indicates whether shape vertical outlines are enabled. Not all shapes display vertical outlines. Those that do\n * not ignore this property. When enabled, those that do display vertical lines extending from the shape's specified\n * positions to the ground.\n */\n var isDrawVerticals: Boolean,\n /**\n * Indicates whether shape depth-testing is enabled. When true, shapes may be occluded by terrain and other shapes\n * in certain viewing situations. When false, shapes will not be occluded by terrain and other shapes.\n */\n var isDepthTest: Boolean,\n /**\n * Indicates whether depth write enabled.\n */\n var isDepthWrite: Boolean,\n /**\n * Sets whether shape lighting is enabled. When true, the appearance of a shape's color and image source may be\n * modified by shading applied from a global light source.\n */\n var isLightingEnabled: Boolean,\n /**\n * Indicates the color and opacity of shape interiors.\n */\n interiorColor: Color,\n /**\n * Indicates the color and opacity of shape outlines.\n */\n outlineColor: Color,\n /**\n * Indicates the width of shape outlines.\n */\n var outlineWidth: Float,\n /**\n * Indicates the image source applied to shape interiors. When null, shape interiors are displayed in the interior\n * color. When non-null, image pixels appear in shape interiors, with each image pixel multiplied by the interior\n * RGBA color. Use a white interior color to display unmodified image pixels.\n *
\n * By default, interior image sources are displayed as a repeating pattern across shape interiors. The pattern\n * matches image pixels to screen pixels, such that the image appears to repeat in screen coordinates.\n */\n var interiorImageSource: ImageSource?,\n /**\n * Indicates the image source applied to shape outlines.\n */\n var outlineImageSource: ImageSource?\n) {\n /**\n * Indicates the color and opacity of shape interiors.\n */\n var interiorColor = interiorColor\n set(value) {\n field.copy(value)\n }\n /**\n * Indicates the color and opacity of shape outlines.\n */\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n isDrawInterior = true,\n isDrawOutline = true,\n isDrawVerticals = false,\n isDepthTest = true,\n isDepthWrite = true,\n isLightingEnabled = false,\n interiorColor = Color(1f, 1f, 1f, 1f), // white\n outlineColor = Color(1f, 0f, 0f, 1f), // red\n outlineWidth = 1.0f,\n interiorImageSource = null,\n outlineImageSource = null\n )\n\n constructor(attributes: ShapeAttributes): this(\n attributes.isDrawInterior,\n attributes.isDrawOutline,\n attributes.isDrawVerticals,\n attributes.isDepthTest,\n attributes.isDepthWrite,\n attributes.isLightingEnabled,\n Color(attributes.interiorColor),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.interiorImageSource,\n attributes.outlineImageSource\n )\n\n fun copy(attributes: ShapeAttributes) = apply {\n isDrawInterior = attributes.isDrawInterior\n isDrawOutline = attributes.isDrawOutline\n isDrawVerticals = attributes.isDrawVerticals\n isDepthTest = attributes.isDepthTest\n isDepthWrite = attributes.isDepthWrite\n isLightingEnabled = attributes.isLightingEnabled\n interiorColor.copy(attributes.interiorColor)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n interiorImageSource = attributes.interiorImageSource\n outlineImageSource = attributes.outlineImageSource\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is ShapeAttributes) return false\n if (isDrawInterior != other.isDrawInterior) return false\n if (isDrawOutline != other.isDrawOutline) return false\n if (isDrawVerticals != other.isDrawVerticals) return false\n if (isDepthTest != other.isDepthTest) return false\n if (isDepthWrite != other.isDepthWrite) return false\n if (isLightingEnabled != other.isLightingEnabled) return false\n if (interiorColor != other.interiorColor) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (interiorImageSource != other.interiorImageSource) return false\n if (outlineImageSource != other.outlineImageSource) return false\n\n return true\n }\n\n override fun hashCode(): Int {\n var result = isDrawInterior.hashCode()\n result = 31 * result + isDrawOutline.hashCode()\n result = 31 * result + isDrawVerticals.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + isDepthWrite.hashCode()\n result = 31 * result + isLightingEnabled.hashCode()\n result = 31 * result + interiorColor.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + (interiorImageSource?.hashCode() ?: 0)\n result = 31 * result + (outlineImageSource?.hashCode() ?: 0)\n return result\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.PickedObject\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.AbstractSurfaceRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.program.SurfaceTextureProgram\n\nopen class SurfaceImage(sector: Sector, var imageSource: ImageSource): AbstractSurfaceRenderable(sector, \"Surface Image\") {\n var imageOptions: ImageOptions? = null\n protected val terrainSector = Sector()\n\n override fun doRender(rc: RenderContext) {\n terrainSector.copy(sector)\n if (terrainSector.isEmpty || !terrainSector.intersect(rc.terrain.sector) || !getExtent(rc).intersectsFrustum(rc.frustum)) return\n val texture = rc.getTexture(imageSource, imageOptions) ?: return // no texture to draw\n val opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n\n // Enqueue a drawable surface texture for processing on the OpenGL thread.\n val program = getShaderProgram(rc)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n program, sector, opacity, texture, texture.coordTransform, rc.globe.offset, terrainSector\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n\n // Enqueue a picked object that associates the drawable surface texture with this surface image.\n if (rc.isPickMode) {\n val pickedObjectId = rc.nextPickedObjectId()\n PickedObject.identifierToUniqueColor(pickedObjectId, drawable.color)\n rc.offerPickedObject(PickedObject.fromRenderable(pickedObjectId, this, rc.currentLayer))\n }\n }\n\n protected open fun getShaderProgram(rc: RenderContext) = rc.getShaderProgram { SurfaceTextureProgram() }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.geom.Offset\nimport earth.worldwind.render.Color\nimport earth.worldwind.render.Font\n\n/**\n * Holds attributes applied to text shapes and [Placemark] labels.\n */\nopen class TextAttributes protected constructor(\n font: Font,\n textColor: Color,\n textOffset: Offset,\n outlineColor: Color,\n var outlineWidth: Float,\n var isOutlineEnabled: Boolean,\n var isDepthTest: Boolean,\n var scale: Double\n) {\n var font = font\n set(value) {\n field.copy(value)\n }\n var textColor = textColor\n set(value) {\n field.copy(value)\n }\n var textOffset = textOffset\n set(value) {\n field.copy(value)\n }\n var outlineColor = outlineColor\n set(value) {\n field.copy(value)\n }\n\n constructor(): this(\n font = Font(),\n textColor = Color(1f, 1f, 1f, 1f),\n textOffset = Offset.bottomCenter(),\n outlineColor = Color(0f, 0f, 0f, 1f),\n outlineWidth = 3f,\n isOutlineEnabled = true,\n isDepthTest = true,\n scale = 1.0\n )\n\n constructor(attributes: TextAttributes): this(\n attributes.font,\n Color(attributes.textColor),\n Offset(attributes.textOffset),\n Color(attributes.outlineColor),\n attributes.outlineWidth,\n attributes.isOutlineEnabled,\n attributes.isDepthTest,\n attributes.scale\n )\n\n fun copy(attributes: TextAttributes) = apply {\n font.copy(attributes.font)\n textColor.copy(attributes.textColor)\n textOffset.copy(attributes.textOffset)\n outlineColor.copy(attributes.outlineColor)\n outlineWidth = attributes.outlineWidth\n isOutlineEnabled = attributes.isOutlineEnabled\n isDepthTest = attributes.isDepthTest\n scale = attributes.scale\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is TextAttributes) return false\n if (font != other.font) return false\n if (textColor != other.textColor) return false\n if (textOffset != other.textOffset) return false\n if (outlineColor != other.outlineColor) return false\n if (outlineWidth != other.outlineWidth) return false\n if (isOutlineEnabled != other.isOutlineEnabled) return false\n if (isDepthTest != other.isDepthTest) return false\n if (scale != other.scale) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = font.hashCode()\n result = 31 * result + textColor.hashCode()\n result = 31 * result + textOffset.hashCode()\n result = 31 * result + outlineColor.hashCode()\n result = 31 * result + outlineWidth.hashCode()\n result = 31 * result + isOutlineEnabled.hashCode()\n result = 31 * result + isDepthTest.hashCode()\n result = 31 * result + scale.hashCode()\n return result\n }\n}","package earth.worldwind.shape\n\nimport earth.worldwind.draw.DrawableSurfaceTexture\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Matrix3\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.AbstractRenderable\nimport earth.worldwind.render.RenderContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.render.image.ImageOptions\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.render.image.ImageTile\nimport earth.worldwind.render.program.SurfaceTextureProgram\nimport earth.worldwind.util.*\nimport kotlinx.coroutines.*\nimport kotlin.time.Duration.Companion.seconds\n\nopen class TiledSurfaceImage(tileFactory: TileFactory, levelSet: LevelSet): AbstractRenderable(\"Tiled Surface Image\") {\n /**\n * Tile factory implementation.\n */\n var tileFactory = tileFactory\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Tile pyramid representation.\n */\n var levelSet = levelSet\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Additional image texture options.\n */\n var imageOptions: ImageOptions? = null\n set(value) {\n field = value\n invalidateTiles()\n }\n /**\n * Define imagery level of details. It controls tile pixel density on the screen.\n */\n var detailControl = 1.0\n /**\n * Retrieve top level tiles to avoid black holes when navigating and zooming out camera\n */\n var retrieveTopLevelTiles = true\n /**\n * Use ancestor tile texture as a fallback for descendants\n */\n var useAncestorTileTexture = true\n /**\n * Define cache tiles factory implementation.\n */\n var cacheTileFactory: CacheTileFactory? = null\n /**\n * Configures tiled surface image to retrieve only the cache source.\n */\n var isCacheOnly = false\n\n /**\n * Memory cache for this layer's subdivision tiles. Each entry contains an array of four image tiles corresponding\n * to the subdivision of the group's common parent tile. The cache is configured to hold 1200 groups, a number\n * empirically determined to be sufficient for storing the tiles needed to navigate a small region.\n */\n protected var tileCache = LruMemoryCache>(1200)\n protected var activeProgram: SurfaceTextureProgram? = null\n protected var ancestorTile: ImageTile? = null\n protected var ancestorTexture: Texture? = null\n protected val ancestorTexCoordMatrix = Matrix3()\n protected val topLevelTiles = mutableListOf()\n protected var lastGlobeState: Globe.State? = null\n\n /**\n * Makes a copy of this tiled surface image\n */\n open fun clone() = TiledSurfaceImage(tileFactory, levelSet).also {\n it.imageOptions = imageOptions\n }\n\n /**\n * Cache size should be adjusted in case of levelSet or detailControl changed.\n */\n fun setupTileCache(capacity: Long, lowWater: Long = (capacity * 0.75).toLong()) {\n tileCache = LruMemoryCache(capacity, lowWater)\n }\n\n override fun doRender(rc: RenderContext) {\n if (rc.terrain.sector.isEmpty) return // no terrain surface to render on\n checkGlobeState(rc)\n determineActiveProgram(rc)\n assembleTiles(rc)\n activeProgram = null // clear the active program to avoid leaking render resources\n ancestorTile = null // clear the ancestor tile and texture\n ancestorTexture = null\n }\n\n @Throws(IllegalStateException::class, IllegalArgumentException::class)\n open fun launchBulkRetrieval(\n scope: CoroutineScope, sector: Sector, resolution: ClosedRange, onProgress: ((Int, Int, Int) -> Unit)?,\n retrieveTile: suspend (imageSource: ImageSource, cacheSource: ImageSource, options: ImageOptions?) -> Boolean\n ): Job {\n val cacheTileFactory = cacheTileFactory ?: error(\"Cache not configured\")\n require(sector.intersect(levelSet.sector)) { \"Sector does not intersect tiled surface image sector\" }\n return scope.launch(Dispatchers.Default) {\n // Prepare a tile list for download, based on specified sector and resolution\n val processingList = assembleTilesList(sector, resolution)\n var downloaded = 0\n var skipped = 0\n // Try to download each tile in a list\n for (tile in processingList) {\n var attempt = 0\n // Retry download attempts till success or 404 not fond or job canceled\n while(true) {\n // Check if a job canceled\n ensureActive()\n // No image source indicates an empty level or an image missing from the tiled data store\n val imageSource = tile.imageSource ?: break\n // If cache tile factory is specified, then create a cache source and store it in tile\n val cacheSource = tile.cacheSource\n ?: (cacheTileFactory.createTile(tile.sector, tile.level, tile.row, tile.column) as ImageTile)\n .imageSource?.also { tile.cacheSource = it } ?: break\n // Attempt to download tile\n try {\n ++attempt\n if (retrieveTile(imageSource, cacheSource, imageOptions)) {\n // Tile successfully downloaded\n onProgress?.invoke(++downloaded, skipped, processingList.size)\n } else {\n // Received data cannot be decoded as image\n onProgress?.invoke(downloaded, ++skipped, processingList.size)\n }\n break // Continue downloading the next tile\n } catch (throwable: Throwable) {\n delay(if (attempt % makeLocalRetries == 0) makeLocalTimeoutLong else makeLocalTimeoutShort)\n }\n }\n }\n }\n }\n\n /**\n * Determine the list of tiles which fit the specified sector and maximum resolution.\n *\n * @param sector the bounding sector.\n * @param resolution the desired resolution range in angular value of latitude per pixel.\n * @return List of tiles which fit specified sector and maximum resolution.\n */\n protected open fun assembleTilesList(sector: Sector, resolution: ClosedRange): List {\n val result = mutableListOf()\n val firstLevelNumber = levelSet.levelForResolution(resolution.endInclusive).levelNumber\n val lastLevelNumber = levelSet.levelForResolution(resolution.start).levelNumber\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n topLevelTiles.forEach { addAndSubdivideTile(it as ImageTile, sector, firstLevelNumber..lastLevelNumber, result) }\n return result\n }\n\n protected open fun addAndSubdivideTile(\n tile: ImageTile, sector: Sector, levelRange: ClosedRange, result: MutableList\n ) {\n if (!tile.intersectsSector(sector)) return // Ignore tiles and its descendants outside the specified sector\n val levelNumber = tile.level.levelNumber\n // Skip tiles with level less than specified offset from the result list\n if (levelNumber >= levelRange.start && levelNumber >= levelSet.levelOffset) result.add(tile)\n // Do not subdivide if specified level or last available level reached\n if (levelNumber < levelRange.endInclusive && !tile.level.isLastLevel) {\n tile.subdivide(tileFactory).forEach { addAndSubdivideTile(it as ImageTile, sector, levelRange, result) }\n }\n }\n\n protected open fun determineActiveProgram(rc: RenderContext) {\n activeProgram = rc.getShaderProgram { SurfaceTextureProgram() }\n }\n\n protected open fun assembleTiles(rc: RenderContext) {\n // TODO\n // The need to create Tiles with a defined image source couples the need to determine a tile's visibility with\n // he need to know its image source. Decoupling the two would mean we only need to know the image source when\n // the texture is actually requested Could the tile-based operations done here be implicit on level/row/column,\n // or use transient pooled tile objects not tied to an image source?\n if (topLevelTiles.isEmpty()) createTopLevelTiles()\n for (i in topLevelTiles.indices) addTileOrDescendants(rc, topLevelTiles[i] as ImageTile)\n }\n\n protected open fun createTopLevelTiles() = Tile.assembleTilesForLevel(levelSet.firstLevel, tileFactory, topLevelTiles)\n\n protected open fun addTileOrDescendants(rc: RenderContext, tile: ImageTile) {\n // ignore tiles which soes not fit projection limits\n if (rc.globe.projectionLimits?.let { tile.intersectsSector(it) } == false) return\n // ignore the tile and its descendants if it's not needed or not visible\n if (!tile.intersectsSector(levelSet.sector) || !tile.intersectsSector(rc.terrain.sector) || !tile.intersectsFrustum(rc)) return\n val retrieveCurrentLevel = tile.level.levelNumber >= levelSet.levelOffset\n if (tile.level.isLastLevel || !tile.mustSubdivide(rc, detailControl)) {\n if (retrieveCurrentLevel) addTile(rc, tile)\n return // use the tile if it does not need to be subdivided\n }\n val currentAncestorTile = ancestorTile\n val currentAncestorTexture = ancestorTexture\n getTexture(rc, tile, retrieveTopLevelTiles && retrieveCurrentLevel)?.let { tileTexture ->\n // tile has a texture; use it as a fallback tile for descendants\n if (useAncestorTileTexture) {\n ancestorTile = tile\n ancestorTexture = tileTexture\n }\n }\n // each tile has a cached size of 1, recursively process the tile's children\n val children = tile.subdivideToCache(tileFactory, tileCache, 4)\n for (i in children.indices) addTileOrDescendants(rc, children[i] as ImageTile)\n ancestorTile = currentAncestorTile // restore the last fallback tile, even if it was null\n ancestorTexture = currentAncestorTexture\n }\n\n protected open fun addTile(rc: RenderContext, tile: ImageTile) {\n val texture = getTexture(rc, tile)\n val ancestorTile = ancestorTile\n val ancestorTexture = ancestorTexture\n val opacity = if (rc.isPickMode) 1f else rc.currentLayer.opacity\n if (texture != null) { // use the tile's own texture\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n activeProgram, tile.sector, opacity, texture, texture.coordTransform, rc.globe.offset\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n } else if (ancestorTile != null && ancestorTexture != null) { // use the ancestor tile's texture, transformed to fill the tile sector\n ancestorTexCoordMatrix.copy(ancestorTexture.coordTransform)\n ancestorTexCoordMatrix.multiplyByTileTransform(tile.sector, ancestorTile.sector)\n val pool = rc.getDrawablePool()\n val drawable = DrawableSurfaceTexture.obtain(pool).set(\n activeProgram, tile.sector, opacity, ancestorTexture, ancestorTexCoordMatrix, rc.globe.offset\n )\n rc.offerSurfaceDrawable(drawable, 0.0 /*z-order*/)\n }\n }\n\n // TODO If cache source retrieved but it is outdated, than try to retrieve original image source anyway to refresh cache\n protected open fun getTexture(rc: RenderContext, tile: ImageTile, retrieve: Boolean = true): Texture? {\n // No image source indicates an empty level or an image missing from the tiled data store\n val imageSource = tile.imageSource ?: return null\n // If cache tile factory is specified, then create a cache source and store it in tile\n val cacheSource = tile.cacheSource ?: cacheTileFactory?.run {\n (createTile(tile.sector, tile.level, tile.row, tile.column) as ImageTile).imageSource?.also { tile.cacheSource = it }\n }\n // Read cache only in case of tile factory and cache factory are the same\n val isCacheOnly = isCacheOnly || tileFactory == cacheTileFactory\n // If a cache source is not absent, then retrieve it instead of an original image source\n val isCacheAbsent = cacheSource == null || rc.renderResourceCache.absentResourceList.isResourceAbsent(cacheSource.hashCode())\n return rc.getTexture(\n if (isCacheAbsent) imageSource else cacheSource!!, imageOptions, retrieve && (!isCacheOnly || !isCacheAbsent)\n )\n }\n\n protected open fun checkGlobeState(rc: RenderContext) {\n // Invalidate tiles cache when globe state changes\n if (rc.globeState != lastGlobeState) {\n invalidateTiles()\n lastGlobeState = rc.globeState\n }\n }\n\n protected open fun invalidateTiles() {\n topLevelTiles.clear()\n tileCache.clear()\n }\n\n companion object {\n /**\n * Number of reties of bulk tile retrieval before long timeout\n */\n var makeLocalRetries = 3\n /**\n * Short timeout on bulk tile retrieval failed\n */\n var makeLocalTimeoutShort = 5.seconds\n /**\n * Long timeout on bulk tile retrieval failed\n */\n var makeLocalTimeoutLong = 15.seconds\n }\n}","package earth.worldwind.util\n\nimport kotlinx.datetime.Clock\nimport kotlin.time.Duration\nimport kotlin.time.Duration.Companion.seconds\n\n/**\n * Provides a collection to keep track of resources whose retrieval failed and when retrieval may be tried again.\n */\nopen class AbsentResourceList(\n /**\n * The number of attempts to make before the resource is marked as absent.\n */\n private val maxTrys: Int,\n /**\n * The amount of time to wait between attempts, in milliseconds.\n */\n private val minCheckInterval: Duration\n) {\n /**\n * The amount of time, in milliseconds, beyond which retrieval attempts should again be allowed.\n * When this time has elapsed from the most recent failed attempt the number of try's attempted is\n * reset to 0. This prevents the resource from being permanently blocked.\n */\n var tryAgainInterval = 60.seconds\n\n private val possiblyAbsent = mutableMapOf()\n\n fun clear() { possiblyAbsent.clear() }\n\n /**\n * Indicates whether a specified resource is marked as absent.\n * @param resourceId The resource identifier.\n * @returns true if the resource is marked as absent, otherwise false.\n */\n fun isResourceAbsent(resourceId: T): Boolean {\n val entry = possiblyAbsent[resourceId] ?: return false\n if (entry.permanent) return true\n\n val timeSinceLastMark = Clock.System.now() - entry.timeOfLastMark\n\n if (timeSinceLastMark > tryAgainInterval) {\n possiblyAbsent.remove(resourceId)\n return false\n }\n\n return timeSinceLastMark < minCheckInterval || entry.numTrys > maxTrys\n }\n\n /**\n * Marks a resource attempt as having failed. This increments the number-of-tries counter and sets the time\n * of the last attempt. When this method has been called [AbsentResourceList.maxTrys] times the resource is marked\n * as absent until this absent resource list's [AbsentResourceList.tryAgainInterval] is reached.\n *\n * @param resourceId The resource identifier.\n * @param permanent Marks a resource attempt as having failed permanently. No attempt will ever again be made to retrieve the resource.\n */\n fun markResourceAbsent(resourceId: T, permanent: Boolean = false) {\n (possiblyAbsent[resourceId] ?: AbsentResourceEntry().also { possiblyAbsent[resourceId] = it }).makeTry(permanent)\n }\n\n /**\n * Removes the specified resource from this absent resource list. Call this method when retrieval attempt succeeded.\n * @param resourceId The resource identifier.\n */\n fun unmarkResourceAbsent(resourceId: T) { possiblyAbsent.remove(resourceId) }\n\n private inner class AbsentResourceEntry {\n var timeOfLastMark = Clock.System.now()\n private set\n var numTrys = 0\n private set\n var permanent = false\n private set\n\n fun makeTry(permanent: Boolean = false) {\n numTrys++\n timeOfLastMark = Clock.System.now()\n this.permanent = permanent\n }\n }\n}","package earth.worldwind.util\n\n/**\n * AbstractSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded resources.\n */\nabstract class AbstractSource protected constructor(protected val source: Any) {\n /**\n * Resource post-processing routine.\n */\n var postprocessor: ResourcePostprocessor? = null\n\n /**\n * @return generic image source as unrecognized object.\n */\n fun asUnrecognized() = source\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is AbstractSource) return false\n if (source != other.source) return false\n return true\n }\n\n override fun hashCode() = source.hashCode()\n\n override fun toString() = source.toString()\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.BoundingBox\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.globe.Globe\nimport earth.worldwind.render.RenderContext\nimport kotlin.math.abs\nimport kotlin.math.min\n\nabstract class AbstractTile(\n /**\n * The sector spanned by this tile.\n */\n val sector: Sector\n) {\n /**\n * The tile's Cartesian bounding box.\n */\n protected val extent by lazy { BoundingBox() }\n protected open val heightLimits by lazy { FloatArray(2) }\n protected var heightLimitsTimestamp = 0L\n protected var extentExaggeration = 0.0f\n protected var extentGlobeState: Globe.State? = null\n protected var extentGlobeOffset: Globe.Offset? = null\n private val nearestPoint = Vec3()\n\n /**\n * Indicates whether this tile's Cartesian extent intersects a frustum.\n *\n * @param rc the current render context\n *\n * @return true if the frustum intersects this tile's extent, otherwise false\n */\n fun intersectsFrustum(rc: RenderContext) = getExtent(rc).intersectsFrustum(rc.frustum)\n\n /**\n * Indicates whether this tile intersects a specified sector.\n *\n * @param sector the sector of interest\n *\n * @return true if the specified sector intersects this tile's sector, otherwise false\n */\n fun intersectsSector(sector: Sector) = this.sector.intersects(sector)\n\n /**\n * Calculates the distance from this tile to the camera point which ensures front to back sorting.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the L1 distance in degrees\n */\n protected open fun drawSortOrder(rc: RenderContext): Double {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val latAbsDifference = abs(cameraPosition.latitude.inDegrees - sector.centroidLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonAbsDifference = abs(cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees)\n val lonAbsDifferenceCorrected = min(lonAbsDifference, 360.0 - lonAbsDifference)\n\n return latAbsDifference + lonAbsDifferenceCorrected // L1 distance on cylinder\n }\n\n /**\n * Calculates nearest point of this tile to the camera position associated with the specified render context.\n * Altitude value is based on the minimum height for the tile.\n *\n * @param rc the render context which provides the current camera point\n *\n * @return the nearest point\n */\n protected open fun nearestPoint(rc: RenderContext): Vec3 {\n val cameraPosition = rc.camera.position\n // determine the nearest latitude\n val nearestLat = cameraPosition.latitude.inDegrees.coerceIn(sector.minLatitude.inDegrees, sector.maxLatitude.inDegrees)\n // determine the nearest longitude and account for the antimeridian discontinuity\n val lonDifference = cameraPosition.longitude.inDegrees - sector.centroidLongitude.inDegrees\n val nearestLon = when {\n lonDifference < -180.0 -> sector.maxLongitude.inDegrees\n lonDifference > 180.0 -> sector.minLongitude.inDegrees\n else -> cameraPosition.longitude.inDegrees.coerceIn(sector.minLongitude.inDegrees, sector.maxLongitude.inDegrees)\n }\n val minHeight = heightLimits[0] * rc.verticalExaggeration\n return rc.globe.geographicToCartesian(nearestLat.degrees, nearestLon.degrees, minHeight, nearestPoint)\n }\n\n protected open fun getExtent(rc: RenderContext): BoundingBox {\n val globe = rc.globe\n val timestamp = rc.elevationModelTimestamp\n if (timestamp != heightLimitsTimestamp) {\n if (globe.is2D) heightLimits.fill(0f) else calcHeightLimits(globe)\n }\n val ve = rc.verticalExaggeration.toFloat()\n val state = rc.globeState\n val offset = rc.globe.offset\n if (timestamp != heightLimitsTimestamp || ve != extentExaggeration\n || state != extentGlobeState || offset != extentGlobeOffset) {\n val minHeight = heightLimits[0] * ve\n val maxHeight = heightLimits[1] * ve\n extent.setToSector(sector, globe, minHeight, maxHeight)\n }\n heightLimitsTimestamp = timestamp\n extentExaggeration = ve\n extentGlobeState = state\n extentGlobeOffset = offset\n return extent\n }\n\n protected open fun calcHeightLimits(globe: Globe) {\n // initialize the heights for elevation model scan\n heightLimits[0] = Float.MAX_VALUE\n heightLimits[1] = -Float.MAX_VALUE\n globe.elevationModel.getHeightLimits(sector, heightLimits)\n // check for valid height limits\n if (heightLimits[0] > heightLimits[1]) heightLimits.fill(0f)\n }\n}","package earth.worldwind.util\n\nimport kotlin.math.max\n\n@Suppress(\"UNCHECKED_CAST\")\nopen class BasicPool: Pool {\n companion object {\n protected const val MIN_CAPACITY_INCREMENT = 12\n }\n\n protected var size = 0\n protected var entries = arrayOfNulls(size)\n\n override fun acquire(): T? {\n if (size > 0) {\n val last = --size\n val instance = entries[last]\n entries[last] = null\n return instance as T?\n }\n return null\n }\n\n override fun release(instance: T?) {\n // TODO reduce the pool size when excess entries may not be needed\n // TODO use a keep alive time to indicate how long to keep stale instances\n if (instance != null) {\n val capacity = entries.size\n if (capacity == size) {\n // increase the pool size by the larger of 50% or the minimum increment\n val increment = max(capacity shr 1, MIN_CAPACITY_INCREMENT)\n val newEntries = arrayOfNulls(capacity + increment)\n entries.copyInto(newEntries, 0, 0, capacity)\n entries = newEntries\n }\n entries[size++] = instance\n }\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport kotlin.math.ceil\nimport kotlin.math.roundToInt\n\n/**\n * Represents a level of a specific resolution in a [LevelSet].\n */\nopen class Level internal constructor(\n /**\n * The LevelSet that this level is a member of.\n */\n val parent: LevelSet,\n /**\n * The level's ordinal in its parent level set.\n */\n val levelNumber: Int,\n /**\n * The geographic width and height of tiles within this level.\n */\n val tileDelta: Location\n) {\n /**\n * The width in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the longitudinal direction of this level set.\n */\n val levelWidth = (parent.tileWidth * parent.sector.deltaLongitude.inDegrees / tileDelta.longitude.inDegrees).roundToInt()\n /**\n * The height in pixels of the image represented by all tiles in this level set, or the number of sample points in\n * the latitudinal direction of this level set.\n */\n val levelHeight = (parent.tileHeight * parent.sector.deltaLatitude.inDegrees / tileDelta.latitude.inDegrees).roundToInt()\n /**\n * The parent LevelSet's tileWidth.\n */\n val tileWidth = parent.tileWidth\n /**\n * The parent LevelSet's tileHeight.\n */\n val tileHeight = parent.tileHeight\n /**\n * The size of pixels or elevation cells within this level, in radians per pixel or per cell.\n */\n val texelSize = tileDelta.longitude.inRadians / parent.tileWidth\n /**\n * Indicates whether this level is the lowest resolution level (level 0) within the parent level set.\n */\n val isFirstLevel get() = levelNumber == 0\n /**\n * Indicates whether this level is the highest resolution level within the parent level set.\n */\n val isLastLevel get() = levelNumber == parent.numLevels - 1\n /**\n * Returns the level whose ordinal occurs immediately before this level's ordinal in the parent level set, or null\n * if this is the fist level.\n */\n val previousLevel get() = parent.level(levelNumber - 1)\n /**\n * Returns the level whose ordinal occurs immediately after this level's ordinal in the parent level set, or null if\n * this is the last level.\n */\n val nextLevel get() = parent.level(levelNumber + 1)\n\n /**\n * Calculates amount of tiles, which fit specified sector\n *\n * @param sector the desired sector to check tile count\n * @return Number of tiles which fit specified sector at this level\n */\n fun tilesInSector(sector: Sector): Int {\n val tilesPerLat = ceil(sector.deltaLatitude.inDegrees / tileDelta.latitude.inDegrees).toInt()\n val tilesPerLon = ceil(sector.deltaLongitude.inDegrees / tileDelta.longitude.inDegrees).toInt()\n return tilesPerLat * tilesPerLon\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle.Companion.POS90\nimport earth.worldwind.geom.Angle.Companion.toDegrees\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.ln\n\n/**\n * Configuration values for a multi-resolution, hierarchical collection of tiles organized into levels of increasing\n * resolution.\n */\nopen class LevelSetConfig {\n /**\n * The sector spanned by the level set.\n */\n val sector = Sector().setFullSphere()\n /**\n * Tile origin for the level set\n */\n val tileOrigin = Sector().setFullSphere()\n /**\n * The geographic width and height of tiles in the first level (the lowest resolution) of the level set.\n */\n var firstLevelDelta = Location(POS90, POS90)\n /**\n * The number of levels in the level set.\n */\n var numLevels = 1\n /**\n * Determines how many levels to skip from retrieving texture during tile pyramid subdivision.\n */\n var levelOffset = 0\n /**\n * The width in pixels of images associated with tiles in the level set, or the number of sample points in the\n * longitudinal direction of elevation tiles associated with the level set.\n */\n var tileWidth = 256\n /**\n * The height in pixels of images associated with tiles in the level set, or the number of sample points in the\n * latitudinal direction of elevation tiles associated with the level set.\n */\n var tileHeight = 256\n\n /**\n * Returns the number of levels necessary to achieve the specified resolution. The result is correct for this\n * configuration's current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = ceil(level).toInt() // ceiling captures the resolution\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n\n /**\n * Returns the number of levels closest to the specified resolution, but does not exceed it. May be used to\n * configure level sets where a not to exceed resolution is mandated. The result is correct for this configuration's\n * current firstLevelDelta, tileWidth and tileHeight, and is invalid if any of these values change.\n *\n * @param radiansPerPixel the desired not to exceed resolution in radians per pixel\n *\n * @return the number of levels\n *\n * @throws IllegalArgumentException If the resolution is not positive\n */\n fun numLevelsForMinResolution(radiansPerPixel: Double): Int {\n require(radiansPerPixel > 0) {\n logMessage(ERROR, \"LevelSetConfig\", \"numLevelsForMinResolution\", \"invalidResolution\")\n }\n val degreesPerPixel = toDegrees(radiansPerPixel)\n val firstLevelDegreesPerPixel = firstLevelDelta.latitude.inDegrees / tileHeight\n val level = ln(firstLevelDegreesPerPixel / degreesPerPixel) / ln(2.0) // fractional level address\n var levelNumber = floor(level).toInt() // floor prevents exceeding the min scale\n if (levelNumber < 0) levelNumber = 0 // need at least one level, even if it exceeds the desired resolution\n return levelNumber + 1 // convert level number to level count\n }\n}","package earth.worldwind.util\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlin.jvm.JvmOverloads\n\nopen class LruMemoryCache @JvmOverloads constructor(\n val capacity: Long, protected val lowWater: Long = (capacity * 0.75).toLong()\n) {\n var usedCapacity = 0L\n protected set\n val entryCount get() = entries.size\n // sorts entries from least recently used to most recently used\n protected open val lruComparator = Comparator> { lhs, rhs -> lhs.lastUsed.compareTo(rhs.lastUsed) }\n protected val entries = mutableMapOf>()\n protected open var age = 0L\n get() = ++field // Auto increment cache age on each access to its entries\n\n protected open class Entry(val key: K, val value: V, val size: Int) { var lastUsed = 0L }\n\n init {\n require(capacity >= 1) {\n logMessage(ERROR, \"LruMemoryCache\", \"constructor\", \"invalidCapacity\")\n }\n require(lowWater in 0 until capacity) {\n logMessage(\n ERROR, \"LruMemoryCache\", \"constructor\",\n \"The specified low-water value is greater than or equal to the capacity, or less than 1\"\n )\n }\n }\n\n open operator fun get(key: K) = entries[key]?.run {\n lastUsed = age\n value\n }\n\n open fun put(key: K, value: V, size: Int): V? {\n if (usedCapacity + size > capacity) makeSpace(size)\n val newEntry = Entry(key, value, size)\n newEntry.lastUsed = age\n usedCapacity += newEntry.size\n val oldEntry = entries.put(key, newEntry)\n if (oldEntry != null) {\n usedCapacity -= oldEntry.size\n if (newEntry.value !== oldEntry.value) {\n entryRemoved(oldEntry.key, oldEntry.value, newEntry.value, false)\n return oldEntry.value\n }\n }\n return null\n }\n\n open fun remove(key: K) = entries.remove(key)?.run {\n usedCapacity -= size\n entryRemoved(key, value, null, false)\n value\n }\n\n open fun trimToAge(maxAge: Long): Int {\n var trimmedCapacity = 0\n\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the entry's age is within the specified maximum age.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (entry.lastUsed < maxAge) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n trimmedCapacity += entry.size\n entryRemoved(entry.key, entry.value, null, false)\n } else break\n }\n return trimmedCapacity\n }\n\n open fun containsKey(key: K) = entries.containsKey(key)\n\n open fun clear() {\n // NOTE Entities cleared without entryRemoved call\n // for (entry in entries.values) entryRemoved(entry.key, entry.value, null, false)\n entries.clear()\n usedCapacity = 0\n }\n\n protected open fun makeSpace(spaceRequired: Int) {\n // Sort the entries from least recently used to most recently used.\n val sortedEntries = assembleSortedEntries()\n\n // Remove the least recently used entries until the cache capacity reaches the low water and the cache has\n // enough free capacity for the required space.\n for (i in sortedEntries.indices) {\n val entry = sortedEntries[i]\n if (usedCapacity > lowWater || capacity - usedCapacity < spaceRequired) {\n entries.remove(entry.key)\n usedCapacity -= entry.size\n entryRemoved(entry.key, entry.value, null, true)\n } else break\n }\n }\n\n /*\n * Sort the entries from least recently used to most recently used.\n */\n protected open fun assembleSortedEntries() = entries.values.sortedWith(lruComparator)\n\n protected open fun entryRemoved(key: K, oldValue: V, newValue: V?, evicted: Boolean) {}\n}","package earth.worldwind.util\n\nval messageTable = mapOf(\n \"errorReadingProgramSource\" to \"Error reading program sources\",\n \"exceptionParsingText\" to \"Exception parsing text\",\n \"invalidBitmap\" to \"The bitmap is recycled\",\n \"invalidCapacity\" to \"The capacity is less than 1\",\n \"invalidCount\" to \"The count is invalid\",\n \"invalidClipDistance\" to \"The clip distance is invalid\",\n \"invalidFieldOfView\" to \"The field of view is invalid\",\n \"invalidHeight\" to \"The height is invalid\",\n \"invalidIndex\" to \"The index is invalid\",\n \"invalidNumIntervals\" to \"The number of intervals is invalid\",\n \"invalidNumLevels\" to \"The number of levels is invalid\",\n \"invalidRadius\" to \"The radius is invalid\",\n \"invalidRange\" to \"The range is invalid\",\n \"invalidResolution\" to \"The resolution is invalid\",\n \"invalidStride\" to \"The stride is invalid\",\n \"invalidTileDelta\" to \"The tile delta is invalid\",\n \"invalidWidth\" to \"The width is invalid\",\n \"invalidWidthOrHeight\" to \"The width or the height is invalid\",\n \"missingArray\" to \"The array insufficient length\",\n \"missingLayerNames\" to \"The layer names are empty\",\n \"singularMatrix\" to \"The matrix cannot be inverted\"\n)","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.geom.Angle.Companion.radians\nimport earth.worldwind.geom.Location\nimport kotlinx.datetime.Instant\nimport kotlinx.datetime.TimeZone\nimport kotlinx.datetime.toLocalDateTime\nimport kotlin.math.*\n\n/**\n * Provides utilities for determining the Sun geographic and celestial location.\n */\nobject SunPosition {\n class CelestialLocation(val declination: Angle, val rightAscension: Angle)\n\n /**\n * Computes the geographic location of the sun for a given date\n * @param instant Input instant\n * @return the geographic location\n */\n fun getAsGeographicLocation(instant: Instant) = celestialToGeographic(getAsCelestialLocation(instant), instant)\n\n /**\n * Computes the celestial location of the sun for a given julianDate\n * @param instant Input instant\n * @return the celestial location\n */\n fun getAsCelestialLocation(instant: Instant): CelestialLocation {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n val meanLongitude = Angle.normalizeAngle360(280.460 + 0.9856474 * numDays)\n val meanAnomaly = Angle.toRadians(Angle.normalizeAngle360(357.528 + 0.9856003 * numDays))\n val eclipticLongitude = meanLongitude + 1.915 * sin(meanAnomaly) + 0.02 * sin(2 * meanAnomaly)\n val eclipticLongitudeRad = Angle.toRadians(eclipticLongitude)\n val obliquityOfTheEcliptic = Angle.toRadians(23.439 - 0.0000004 * numDays)\n val declination = asin(sin(obliquityOfTheEcliptic) * sin(eclipticLongitudeRad)).radians\n var rightAscension = atan(cos(obliquityOfTheEcliptic) * tan(eclipticLongitudeRad)).radians\n if (eclipticLongitude >= 90 && eclipticLongitude < 270) rightAscension += Angle.POS180\n return CelestialLocation(declination, rightAscension.normalize360())\n }\n\n /**\n * Converts from celestial coordinates (declination and right ascension) to geographic coordinates\n * (latitude, longitude) for a given julian date\n * @param celestialLocation Celestial location\n * @param instant Input instant\n * @return the geographic location\n */\n fun celestialToGeographic(celestialLocation: CelestialLocation, instant: Instant): Location {\n val julianDate = computeJulianDate(instant)\n\n //number of days (positive or negative) since Greenwich noon, Terrestrial Time, on 1 January 2000 (J2000.0)\n val numDays = julianDate - 2451545\n\n //Greenwich Mean Sidereal Time\n val GMST = Angle.normalizeAngle360(280.46061837 + 360.98564736629 * numDays)\n\n //Greenwich Hour Angle\n val GHA = Angle.normalizeAngle360(GMST - celestialLocation.rightAscension.inDegrees)\n\n val longitude = (-GHA).degrees.normalizeLongitude()\n\n return Location(celestialLocation.declination, longitude)\n }\n\n /**\n * Computes the julian date from a javascript date object\n * @param instant Input instant\n * @return the julian date\n */\n fun computeJulianDate(instant: Instant): Double {\n val date = instant.toLocalDateTime(TimeZone.UTC)\n var year = date.year\n var month = date.monthNumber + 1\n val day = date.dayOfMonth\n val hour = date.hour\n val minute = date.minute\n val second = date.second\n val dayFraction = (hour + minute / 60.0 + second / 3600.0) / 24.0\n if (month <= 2) {\n year -= 1\n month += 12\n }\n val a = floor(year / 100.0)\n val b = 2 - a + floor(a / 4.0)\n val JD0h = floor(365.25 * (year + 4716)) + floor(30.6001 * (month + 1)) + day + b - 1524.5\n return JD0h + dayFraction\n }\n\n}","package earth.worldwind.util\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.render.RenderContext\nimport kotlin.jvm.JvmStatic\nimport kotlin.math.abs\nimport kotlin.math.ceil\nimport kotlin.math.cos\nimport kotlin.math.floor\n\n/**\n * Geographically rectangular tile within a [LevelSet], typically representing terrain or imagery. Provides a base\n * class for tiles used by tiled image layers and elevation models. Applications typically do not interact with this\n * class.\n */\nopen class Tile protected constructor(\n /**\n * The sector spanned by this tile.\n */\n sector: Sector,\n /**\n * The level at which this tile lies within a [LevelSet].\n */\n val level: Level,\n /**\n * The tile's row within its level.\n */\n val row: Int,\n /**\n * The tile's column within its level.\n */\n val column: Int\n) : AbstractTile(sector) {\n /**\n * A key that uniquely identifies this tile within a level set. Tile keys are not unique to a specific level set.\n */\n val tileKey = \"${level.levelNumber}.$row.$column\"\n private val scratchVector = Vec3()\n\n /**\n * Indicates whether this tile should be subdivided based on the current navigation state and a specified detail\n * factor.\n *\n * @param rc the current render context\n * @param detailFactor the detail factor to consider\n *\n * @return true if the tile should be subdivided, otherwise false\n */\n open fun mustSubdivide(rc: RenderContext, detailFactor: Double): Boolean {\n var texelSize = level.texelSize * rc.globe.equatorialRadius // Compute texel size in meters\n\n val pixelSize = if (rc.globe.is2D) rc.pixelSize else {\n // Consider that texels are laid out continuously on the arc of constant latitude connecting the tile's\n // east and west edges and passing through its centroid.\n texelSize *= cos(sector.centroidLatitude.inRadians)\n\n // Get distance from nearest tile point to camera\n val nearestPoint = nearestPoint(rc)\n val distanceToCamera = nearestPoint.distanceTo(rc.cameraPoint)\n\n // Accelerate the degradation of tile details depending on the viewing angle to tile normal\n if (isAccelerateDegradation && level.tileDelta.latitude.inDegrees <= 5.625) {\n val viewingVector = nearestPoint.subtract(rc.cameraPoint)\n val normalVector =\n rc.globe.geographicToCartesianNormal(sector.centroidLatitude, sector.centroidLongitude, scratchVector)\n val dot = viewingVector.dot(normalVector)\n texelSize *= abs(dot / (viewingVector.magnitude * normalVector.magnitude))\n }\n\n // Use individual pixel size based on tile distance to camera\n rc.pixelSizeAtDistance(distanceToCamera)\n }\n\n // Adjust the subdivision factory when the display density is low.\n return texelSize > pixelSize * detailFactor * rc.densityFactor\n }\n\n /**\n * Returns the four children formed by subdividing this tile. This tile's sector is subdivided into four quadrants\n * as follows: Southwest; Southeast; Northwest; Northeast. A new tile is then constructed for each quadrant and\n * configured with the next level within this tile's LevelSet and its corresponding row and column within that\n * level. This returns null if this tile's level is the last level within its [LevelSet].\n *\n * @param tileFactory the tile factory to use to create the children\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivide(tileFactory: TileFactory): Array {\n val childLevel = level.nextLevel ?: return emptyArray()\n\n val latMin = sector.minLatitude\n val lonMin = sector.minLongitude\n val latMid = sector.centroidLatitude\n val lonMid = sector.centroidLongitude\n val latMax = sector.maxLatitude\n val lonMax = sector.maxLongitude\n\n var childRow = 2 * row\n var childCol = 2 * column\n var childSector = Sector(latMin, latMid, lonMin, lonMid)\n val child0 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southwest\n\n childRow = 2 * row\n childCol = 2 * column + 1\n childSector = Sector(latMin, latMid, lonMid, lonMax)\n val child1 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Southeast\n\n childRow = 2 * row + 1\n childCol = 2 * column\n childSector = Sector(latMid, latMax, lonMin, lonMid)\n val child2 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northwest\n\n childRow = 2 * row + 1\n childCol = 2 * column + 1\n childSector = Sector(latMid, latMax, lonMid, lonMax)\n val child3 = tileFactory.createTile(childSector, childLevel, childRow, childCol) // Northeast\n\n return arrayOf(child0, child1, child2, child3)\n }\n\n /**\n * Returns the four children formed by subdividing this tile, drawing those children from a specified cache. The\n * cache is checked for a child collection prior to subdividing. If one exists in the cache it is returned rather\n * than creating a new collection of children. If a new collection is created in the same manner as [subdivide] and added to the cache.\n *\n * @param tileFactory the tile factory to use to create the children\n * @param cache a memory cache that may contain pre-existing child tiles.\n * @param cacheSize the cached size of the four child tiles\n *\n * @return an array containing the four child tiles, or null if this tile's level is the last level\n */\n open fun subdivideToCache(\n tileFactory: TileFactory, cache: LruMemoryCache>, cacheSize: Int\n ) = cache[tileKey] ?: subdivide(tileFactory).also { cache.put(tileKey, it, cacheSize) }\n\n companion object {\n /**\n * Accelerate the degradation of tile details depending on the viewing angle to tile normal.\n * This option dramatically increases performance, but degrades scene background level of details.\n */\n var isAccelerateDegradation = true\n\n /**\n * Computes a row number for a tile within a level given the tile's latitude.\n *\n * @param tileDelta the level's tile delta\n * @param latitude the tile's minimum latitude\n * @param origin the origin of the grid\n *\n * @return the computed row number\n */\n @JvmStatic\n fun computeRow(tileDelta: Angle, latitude: Angle, origin: Angle): Int {\n var row = floor((latitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees).toInt()\n // if latitude is at the end of the grid, subtract 1 from the computed row to return the last row\n if (latitude.inDegrees - origin.inDegrees == 180.0) row -= 1\n return row\n }\n\n /**\n * Computes a column number for a tile within a level given the tile's longitude.\n *\n * @param tileDelta the level's tile delta\n * @param longitude the tile's minimum longitude\n * @param origin the origin of the grid\n *\n * @return The computed column number\n */\n @JvmStatic\n fun computeColumn(tileDelta: Angle, longitude: Angle, origin: Angle): Int {\n var col = floor((longitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees).toInt()\n // if longitude is at the end of the grid, subtract 1 from the computed column to return the last column\n if (longitude.inDegrees - origin.inDegrees == 360.0) col -= 1\n return col\n }\n\n /**\n * Computes the last row number for a tile within a level given the tile's maximum latitude.\n *\n * @param tileDelta the level's tile delta\n * @param maxLatitude the tile's maximum latitude\n * @param origin the origin of the grid\n *\n * @return the computed row number\n */\n @JvmStatic\n fun computeLastRow(tileDelta: Angle, maxLatitude: Angle, origin: Angle): Int {\n var row = ceil((maxLatitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max latitude is in the first row, set the max row to 0\n if (maxLatitude.inDegrees - origin.inDegrees < tileDelta.inDegrees) row = 0\n return row\n }\n\n /**\n * Computes the last column number for a tile within a level given the tile's maximum longitude.\n *\n * @param tileDelta the level's tile delta\n * @param maxLongitude the tile's maximum longitude\n * @param origin the origin of the grid\n *\n * @return The computed column number\n */\n @JvmStatic\n fun computeLastColumn(tileDelta: Angle, maxLongitude: Angle, origin: Angle): Int {\n var col = ceil((maxLongitude.inDegrees - origin.inDegrees) / tileDelta.inDegrees - 1).toInt()\n // if max longitude is in the first column, set the max column to 0\n if (maxLongitude.inDegrees - origin.inDegrees < tileDelta.inDegrees) col = 0\n return col\n }\n\n /**\n * Creates all tiles for a specified level within a [LevelSet].\n *\n * @param level the level to create the tiles for\n * @param tileFactory the tile factory to use for creating tiles.\n * @param result an pre-allocated Collection in which to store the results\n *\n * @return the result argument populated with the tiles for the specified level\n */\n @JvmStatic\n fun assembleTilesForLevel(level: Level, tileFactory: TileFactory, result: MutableList): List {\n val sector = level.parent.sector\n val tileOrigin = level.parent.tileOrigin\n val tileDelta = level.tileDelta\n val firstRow = computeRow(tileDelta.latitude, sector.minLatitude, tileOrigin.minLatitude)\n val lastRow = computeLastRow(tileDelta.latitude, sector.maxLatitude, tileOrigin.minLatitude)\n val firstCol = computeColumn(tileDelta.longitude, sector.minLongitude, tileOrigin.minLongitude)\n val lastCol = computeLastColumn(tileDelta.longitude, sector.maxLongitude, tileOrigin.minLongitude)\n val firstRowLat = tileOrigin.minLatitude.plusDegrees(firstRow * tileDelta.latitude.inDegrees)\n val firstColLon = tileOrigin.minLongitude.plusDegrees(firstCol * tileDelta.longitude.inDegrees)\n var minLat = firstRowLat\n for (row in firstRow..lastRow) {\n val maxLat = minLat + tileDelta.latitude\n var minLon = firstColLon\n for (col in firstCol..lastCol) {\n val maxLon = minLon + tileDelta.longitude\n val tileSector = Sector(minLat, maxLat, minLon, maxLon)\n result.add(tileFactory.createTile(tileSector, level, row, col))\n minLon = maxLon\n }\n minLat = maxLat\n }\n return result\n }\n }\n}","package earth.worldwind.util.format\n\nimport kotlin.math.*\n\nclass ExponentFormatter(val value: Double) {\n var mantissa: Double\n private set\n var exponent: Int = 0\n private set(value) {\n field = value\n strExponent = \"e$exponent\"\n }\n\n private val mstr: String\n private var strExponent: String\n\n init {\n val x = abs(value)\n exponent = log10(x).toInt()\n if (exponent < 0) exponent--\n mantissa = x / 10.0.pow(exponent)\n if (value < 0) mantissa = -mantissa\n mstr = mantissa.toString()\n strExponent = \"e$exponent\"\n }\n\n fun scientific(width: Int, fractionWidth: Int = -1): String {\n val minLength = if (mantissa < 0) 2 else 1\n\n // Get the desired part of mantissa with proper bounding and rounding\n // it works only for \"normalized\" mantissa that is always has d[.ddddd] form, e.g. integer\n // part is always 1 digit long\n //\n // ERROR: this rounding does not work with trailint (***9)8 - like variants\n //\n fun mpart(length: Int): String {\n var l = length\n if (l > mstr.length) l = mstr.length\n val result = StringBuilder(mstr.slice(0 until l))\n // exact value, no rounding:\n if (result.length == mstr.length) return result.toString()\n\n // next significant digit\n var nextDigit = mstr[result.length]\n if (nextDigit == '.') {\n if (result.length + 1 >= mstr.length) return result.toString()\n nextDigit = mstr[result.length + 1]\n }\n if (nextDigit in \"56789\") {\n val (m, ovf) = roundUp(result)\n if( !ovf ) return m\n // overflow: exponent should grow\n exponent++\n // and the point position should be fixed\n val pointPos = m.indexOf('.')\n val mb = StringBuilder(m)\n if( pointPos == -1 )\n return m // it was the last letter and was therefore removed by roundUp\n return mb.deleteAt(pointPos).insert(pointPos - 1, '.').toString()\n }\n return result.toString()\n }\n\n if (width == 0) return mstr + strExponent\n\n if (fractionWidth < 0 && width > 0) {\n var l = width - strExponent.length\n if (l < minLength) l = minLength\n return mpart(l) + strExponent\n }\n\n if (fractionWidth < 0 && width < 0) return mstr + strExponent\n\n // fractionWidth >= 0\n if (fractionWidth == 0) return \"${mstr[0]}$strExponent\"\n\n // fractionWidth > 0, +1 for decimal dot\n return mpart(minLength + 1 + fractionWidth) + strExponent\n }\n\n\n override fun toString() = \"${mantissa}e${exponent}\"\n}\n\ninternal fun scientificFormat(value: Double, width: Int, fractionPartLength: Int = -1) =\n ExponentFormatter(value).scientific(width, fractionPartLength)\n\ninternal fun fractionalFormat(_value: Double, width: Int, fractionPartLength: Int = -1): String {\n var value = _value\n val result = StringBuilder()\n\n if (abs(value) >= 1) {\n val i = if (fractionPartLength == 0) value.roundToLong() else value.toLong()\n result.append(i)\n value -= i\n } else result.append((if (value < 0) \"-0\" else \"0\"))\n\n var fl = if (fractionPartLength < 0) {\n if (width < 0) 6\n else width - result.length - 1\n } else fractionPartLength\n\n if (fl != 0) result.append('.')\n\n var rest = value * 10\n while (fl-- > 0) {\n val d = rest.toInt()\n result.append(abs(d))\n rest = (rest - d) * 10\n }\n // now we might need to round it up:\n return if( rest.toInt().absoluteValue < 5 ) result.toString() else roundUp(result, keepWidth = false).first\n}\n\n/**\n * Round up the mantissa part (call it with default arguments to start).\n * @return rounded mantissa and overflow flag (set when 9,99 -> 10,00 and like)\n */\nprivate fun roundUp(\n result: StringBuilder,\n length: Int = result.length,\n pos: Int = result.length - 1,\n keepWidth: Boolean = true\n): Pair {\n if (pos < 0) {\n // if we get there, it means the number of digits should grow, like \"9.99\" -> \"10.00\"\n // but we need to keep the length so \"10.0\":\n result.insert(0, '1')\n if (keepWidth) result.deleteAt(length)\n return result.toString() to true\n }\n // not the first digit: perform rounding:\n val d = result[pos]\n // it could be a decimal point we ignore and continue with rounding\n if (d == '.') return roundUp(result, length, pos - 1, keepWidth)\n\n // Small number add one \"0.19\" -> \"0.2\"\n // Simple case: alter only the current digit\n if (d != '9') {\n result[pos] = d + 1\n return result.toString() to false\n }\n // Complex case: 9->0 and propagate changes up.\n result[pos] = '0'\n return roundUp(result, length, pos - 1, keepWidth)\n}","package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal enum class Positioning { LEFT, RIGHT, CENTER; }\n\ninternal class Specification(val parent: StringFormat, var index: Int) {\n enum class Stage { FLAGS, LENGTH, FRACTION; }\n\n private var stage = Stage.FLAGS\n private var size: Int = -1\n private var fractionalPartSize: Int = -1\n private var positioninig = Positioning.RIGHT\n private var fillChar = ' '\n private var currentPart = StringBuilder()\n // private var pos = 0\n private var explicitPlus = false\n private var done = false\n private var indexIsOverride = false\n private val isScanningFlags: Boolean\n get() = stage == Stage.FLAGS\n\n internal fun scan() {\n while (!done) {\n when (val ch = parent.nextChar()) {\n '-', '^' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n positioninig = if (ch == '-') Positioning.LEFT else Positioning.CENTER\n }\n '+' -> {\n if (!isScanningFlags) invalidFormat(\"unexpected $ch\")\n explicitPlus = true\n }\n in \"*#_=\" -> {\n if (!isScanningFlags) invalidFormat(\"bad fill char $ch position\")\n fillChar = ch\n }\n '0' -> {\n if (isScanningFlags) fillChar = '0'\n else currentPart.append(ch)\n }\n in \"123456789\" -> {\n if (stage == Stage.FLAGS) stage = Stage.LENGTH\n currentPart.append(ch)\n }\n '$', '!' -> {\n if (stage != Stage.LENGTH) invalidFormat(\"unexpected $ch position\")\n if (indexIsOverride) invalidFormat(\"argument number '$ch' should occur only once\")\n indexIsOverride = true\n index = currentPart.toString().toInt() - 1\n parent.pushbackArgumentIndex()\n currentPart.clear()\n }\n 's' -> createStringField()\n 'd', 'i' -> createIntegerField()\n 'o' -> createOctalField()\n 'x' -> createHexField(false)\n 'X' -> createHexField(true)\n 'f', 'F' -> createFloat()\n 'E' -> createScientific(true)\n 'e' -> createScientific(false)\n 'g' -> createAutoFloat(true)\n 'G' -> createAutoFloat(false)\n 'c', 'C' -> createCharacter()\n 't' -> createTimeField(false)\n 'T' -> createTimeField(true)\n '.' -> {\n stage = when (stage) {\n Stage.FLAGS -> Stage.FRACTION\n Stage.LENGTH -> {\n endStage(false)\n Stage.FRACTION\n }\n else -> invalidFormat(\"can't parse specification: unexpected '.'\")\n }\n }\n else -> invalidFormat(\"unexpected character '$ch'\")\n }\n }\n }\n\n private fun invalidFormat(message: String): Nothing { parent.invalidFormat(message) }\n\n private val time get() = parent.getLocalDateTime(index)\n\n private fun createTimeField(upperCase: Boolean) {\n val ch = parent.nextChar()\n endStage()\n val result: String = when (ch) {\n 'H' -> \"%02d\".format(time.hour)\n 'k' -> \"%d\".format(time.hour)\n 'I', 'l' -> {\n var t = time.hour\n if (t > 12) t -= 12\n if (ch == 'I') \"%02d\".format(t)\n else t.toString()\n }\n 'M' -> \"%02d\".format(time.minute)\n 'S' -> \"%02d\".format(time.second)\n 'L' -> \"%03d\".format(time.nanosecond / 1_000_000)\n 'N' -> \"%09d\".format(time.nanosecond)\n 'p' -> {\n if (upperCase) if (time.hour > 12) \"PM\" else \"AM\"\n else if (time.hour > 12) \"pm\" else \"am\"\n }\n 'z' -> {\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString().replace(\":\", \"\")\n }\n 'Z' -> {\n // There us yet no abbreviations like 'CET', so we put there string representation like +01:00\n val tz = TimeZone.currentSystemDefault()\n tz.offsetAt(time.toInstant(tz)).toString()\n }\n 's' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).epochSeconds.toString()\n }\n 'Q' -> {\n val tz = TimeZone.currentSystemDefault()\n time.toInstant(tz).toEpochMilliseconds().toString()\n }\n // Date fields\n 'B' -> getMonthName(time.month.number)\n 'b', 'h' -> getAbbreviatedMonthName(time.month.number)\n 'e' -> time.dayOfMonth.toString()\n 'd' -> \"%02s\".format(time.dayOfMonth)\n 'm' -> \"%02s\".format(time.month.number)\n 'A' -> getWeekDayName(time.dayOfWeek)\n 'a' -> getAbbreviatedWeekDayName(time.dayOfWeek)\n 'y' -> time.year.toString().takeLast(2)\n 'Y' -> \"%04d\".format(time.year)\n 'j' -> \"%03d\".format(time.dayOfYear)\n // shortcuts\n 'R' -> \"%1!tH:%1!tM\".format(time)\n 'r' ->\n if (upperCase) \"%1!tI:%1!tM:%1!tS %1!Tp\".format(time)\n else \"%1!tI:%1!tM:%1!tS %1!tp\".format(time)\n 'T' -> \"%tH:%1!tM:%1!tS\".format(time)\n 'D' -> \"%tm/%1!td/%1!ty\".format(time)\n 'F' -> \"%tY-%1!tm-%1!td\".format(time)\n 'c' -> \"%ta %1!tb %1!td %1!tT %1!tZ %1!tY\".format(time)\n 'O' -> {\n val tz = TimeZone.currentSystemDefault()\n val offset = tz.offsetAt(time.toInstant(tz)).toString()\n \"%tFT%1!tT%s\".format(time, offset)\n }\n '#' -> \"%tY%1!tm%1!td%1!tH%1!tM%1!tS\".format(time.toInstant(TimeZone.UTC))\n else -> invalidFormat(\"unknown time field specificator: 't$ch'\")\n }\n insertField(result)\n }\n\n private fun createStringField() {\n endStage()\n insertField(parent.getText(index))\n }\n\n private fun createIntegerField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus && fillChar == '0' && number > 0) insertField(number.toString(), \"+\")\n else insertField(if (explicitPlus) \"+$number\" else \"$number\")\n }\n\n private fun createHexField(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with hex format\")\n val text = number.toString(16)\n insertField(if (upperCase) text.uppercase() else text.lowercase())\n }\n\n private fun createOctalField() {\n endStage()\n val number = parent.getNumber(index).toLong()\n if (explicitPlus) invalidFormat(\"'+' is incompatible with oct format\")\n insertField(number.toString(8))\n }\n\n private fun createCharacter() {\n endStage()\n insertField(parent.getCharacter(index).toString())\n }\n\n private fun endStage(setDone: Boolean = true) {\n if (setDone) done = true\n if (currentPart.isNotEmpty()) {\n when (stage) {\n Stage.LENGTH -> size = currentPart.toString().toInt()\n Stage.FRACTION -> fractionalPartSize = currentPart.toString().toInt()\n Stage.FLAGS -> invalidFormat(\"can't parse format specifier (error 7)\")\n }\n currentPart.clear()\n }\n }\n\n private fun insertField(text: String, prefix: String = \"\") {\n val l = text.length + prefix.length\n if (size < 0 || size < l) parent.specificationDone(prefix + text)\n else {\n var padStart = 0\n var padEnd = 0\n when (positioninig) {\n Positioning.LEFT -> padEnd = size - l\n Positioning.RIGHT -> padStart = size - l\n Positioning.CENTER -> {\n padStart = (size - l) / 2\n padEnd = size - padStart - l\n }\n }\n val result = StringBuilder(prefix)\n while (padStart-- > 0) result.append(fillChar)\n result.append(text)\n while (padEnd-- > 0) result.append(fillChar)\n parent.specificationDone(result.toString())\n }\n }\n\n private fun createFloat() {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = fractionalFormat(number, size, fractionalPartSize)\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createScientific(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index).toDouble()\n val t = scientificFormat(number, size, fractionalPartSize).let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n private fun createAutoFloat(upperCase: Boolean) {\n endStage()\n val number = parent.getNumber(index)\n val t = number.toString().let {\n if (upperCase) it.uppercase() else it.lowercase()\n }\n\n if (explicitPlus && fillChar == '0' && number.toDouble() > 0) insertField(t, \"+\")\n else insertField(if (explicitPlus) \"+$t\" else t)\n }\n\n companion object {\n private val englishMonthNames: List by lazy {\n \"January February March April May June July August September October November December\".split(' ')\n }\n private val englishWeekDayNames: List by lazy {\n \"Monday Tuesday Wednesday Thursday Friday Saturday Sunday\".split(' ')\n }\n\n fun getAbbreviatedMonthName(monthNumber: Int) = getMonthName(monthNumber).take(3)\n\n fun getMonthName(monthNumber: Int) = englishMonthNames[monthNumber - 1]\n\n fun getWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1]\n }\n\n fun getAbbreviatedWeekDayName(d: DayOfWeek): String {\n val n = d.isoDayNumber\n return englishWeekDayNames[n-1].take(3)\n }\n }\n}",null,"package earth.worldwind.util.format\n\nimport kotlinx.datetime.*\n\ninternal class StringFormat(val format: String, val args: Array) {\n\n private var pos = 0\n private var specStart = -1\n private val result = StringBuilder()\n private var currentIndex = 0\n\n fun process(): StringFormat {\n while (pos < format.length) {\n val ch = format[pos++]\n if (ch == '%') {\n specStart = when {\n specStart == pos - 1 -> {\n result.append(ch)\n -1\n }\n specStart < 0 -> pos\n else -> invalidFormat(\"unexpected %\")\n }\n } else {\n if (specStart >= 0) {\n pos--\n Specification(this, currentIndex++).scan()\n } else result.append(ch)\n }\n }\n return this\n }\n\n internal fun nextChar(): Char {\n if (pos >= format.length) invalidFormat(\"unexpected end of string inside format specification\")\n return format[pos++]\n }\n\n internal fun invalidFormat(reason: String): Nothing {\n throw IllegalArgumentException(\"bad format: $reason at ofset ${pos - 1} of \\\"$format\\\"\")\n }\n\n override fun toString() = result.toString()\n\n internal fun getNumber(index: Int): Number = notNullArg(index)\n\n internal fun getText(index: Int) = args[index]!!.toString()\n\n internal fun getCharacter(index: Int): Char = notNullArg(index)\n\n internal fun specificationDone(text: String) {\n result.append(text)\n specStart = -1\n }\n\n fun getLocalDateTime(index: Int): LocalDateTime {\n val t = notNullArg(index)\n return when(t) {\n is Instant -> t.toLocalDateTime(TimeZone.currentSystemDefault())\n is LocalDateTime -> t\n is LocalDate -> t.atTime(0,0,0)\n else -> convertToInstant(t).toLocalDateTime(TimeZone.currentSystemDefault())\n }\n }\n\n @Suppress(\"UNCHECKED_CAST\")\n fun notNullArg(index: Int) = args[index]!! as T\n\n fun pushbackArgumentIndex() { currentIndex-- }\n}\n\nfun String.format(vararg args: Any?): String = StringFormat(this, args).process().toString()\n\nexpect fun convertToInstant(t: Any): Instant","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\nimport earth.worldwind.util.glu.error.Error\nimport earth.worldwind.util.glu.tessellator.GLUtessellatorImpl\n\n/**\n * Provides access to the OpenGL Utility Library (GLU). This library\n * provides standard methods for setting up view volumes, building\n * mipmaps and performing other common operations. The GLU NURBS\n * routines are not currently exposed.\n *

\n * Notes from the Reference Implementation for this class:\n * Thanks to the contributions of many individuals, this class is a\n * pure Java port of SGI's original C sources. All of the projection,\n * mipmap, scaling, and tessellation routines that are exposed are\n * compatible with the GLU 1.3 specification. The GLU NURBS routines\n * are not currently exposed.\n */\nobject GLU {\n fun gluErrorString(errorCode: Int) = Error.gluErrorString(errorCode)\n /**\n * **gluNewTess** creates and returns a new tessellation object. This\n * object must be referred to when calling tesselation methods. A return\n * value of null means that there was not enough memeory to allocate the\n * object.\n *\n * @return A new tessellation object.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluDeleteTess gluDeleteTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluNewTess() = GLUtessellatorImpl.gluNewTess()\n\n /**\n * **gluDeleteTess** destroys the indicated tessellation object (which was\n * created with [gluNewTess][.gluNewTess]).\n *\n * @param tessellator\n * Specifies the tessellation object to destroy.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessCallback gluTessCallback\n */\n fun gluDeleteTess(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluDeleteTess()\n }\n\n /**\n * **gluTessProperty** is used to control properites stored in a\n * tessellation object. These properties affect the way that the polygons are\n * interpreted and rendered. The legal value for *which* are as\n * follows:\n *
    \n *
  • **GLU_TESS_WINDING_RULE**\n *

    \n * Determines which parts of the polygon are on the \"interior\".\n * *value* may be set to one of\n *

    **GLU_TESS_WINDING_ODD**,\n *

    **GLU_TESS_WINDING_NONZERO**,\n *

    **GLU_TESS_WINDING_POSITIVE**, or\n *

    **GLU_TESS_WINDING_NEGATIVE**, or\n *

    **GLU_TESS_WINDING_ABS_GEQ_TWO**.\n *

    \n * To understand how the winding rule works, consider that the input\n * contours partition the plane into regions. The winding rule determines\n * which of these regions are inside the polygon.\n *

    \n * For a single contour C, the winding number of a point x is simply the\n * signed number of revolutions we make around x as we travel once around C\n * (where CCW is positive). When there are several contours, the individual\n * winding numbers are summed. This procedure associates a signed integer\n * value with each point x in the plane. Note that the winding number is\n * the same for all points in a single region.\n *

    \n * The winding rule classifies a region as \"inside\" if its winding number\n * belongs to the chosen category (odd, nonzero, positive, negative, or\n * absolute value of at least two). The previous GLU tessellator (prior to\n * GLU 1.2) used the \"odd\" rule. The \"nonzero\" rule is another common way\n * to define the interior. The other three rules are useful for polygon CSG\n * operations.\n
  • *\n *
  • **GLU_TESS_BOUNDARY_ONLY**\n *

    \n * Is a boolean value (\"value\" should be set to GL_TRUE or GL_FALSE). When\n * set to GL_TRUE, a set of closed contours separating the polygon interior\n * and exterior are returned instead of a tessellation. Exterior contours\n * are oriented CCW with respect to the normal; interior contours are\n * oriented CW. The **GLU_TESS_BEGIN** and **GLU_TESS_BEGIN_DATA**\n * callbacks use the type GL_LINE_LOOP for each contour.\n
  • *\n *
  • **GLU_TESS_TOLERANCE**\n *

    \n * Specifies a tolerance for merging features to reduce the size of the\n * output. For example, two vertices that are very close to each other\n * might be replaced by a single vertex. The tolerance is multiplied by the\n * largest coordinate magnitude of any input vertex; this specifies the\n * maximum distance that any feature can move as the result of a single\n * merge operation. If a single feature takes part in several merge\n * operations, the toal distance moved could be larger.\n *

    \n * Feature merging is completely optional; the tolerance is only a hint.\n * The implementation is free to merge in some cases and not in others, or\n * to never merge features at all. The initial tolerance is 0.\n *

    \n * The current implementation merges vertices only if they are exactly\n * coincident, regardless of the current tolerance. A vertex is spliced\n * into an edge only if the implementation is unable to distinguish which\n * side of the edge the vertex lies on. Two edges are merged only when both\n * endpoints are identical.\n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object created with\n * [gluNewTess][.gluNewTess]\n * @param which\n * Specifies the property to be set. Valid values are\n * **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARDY_ONLY**,\n * **GLU_TESS_TOLERANCE**.\n * @param value\n * Specifices the value of the indicated property.\n *\n * @see .gluGetTessProperty gluGetTessProperty\n *\n * @see .gluNewTess gluNewTess\n */\n fun gluTessProperty(tessellator: GLUtessellator, which: Int, value: Double) {\n (tessellator as GLUtessellatorImpl).gluTessProperty(which, value)\n }\n\n /**\n * **gluGetTessProperty** retrieves properties stored in a tessellation\n * object. These properties affect the way that tessellation objects are\n * interpreted and rendered. See the\n * [gluTessProperty][.gluTessProperty] reference\n * page for information about the properties and what they do.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the property whose value is to be fetched. Valid values\n * are **GLU_TESS_WINDING_RULE**, **GLU_TESS_BOUNDARY_ONLY**,\n * and **GLU_TESS_TOLERANCES**.\n * @param value\n * Specifices an array into which the value of the named property is\n * written.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessProperty gluTessProperty\n */\n fun gluGetTessProperty(\n tessellator: GLUtessellator, which: Int, value: DoubleArray, value_offset: Int\n ) {\n (tessellator as GLUtessellatorImpl).gluGetTessProperty(which, value, value_offset)\n }\n\n /**\n * **gluTessNormal** describes a normal for a polygon that the program is\n * defining. All input data will be projected onto a plane perpendicular to\n * the one of the three coordinate axes before tessellation and all output\n * triangles will be oriented CCW with repsect to the normal (CW orientation\n * can be obtained by reversing the sign of the supplied normal). For\n * example, if you know that all polygons lie in the x-y plane, call\n * **gluTessNormal**(tess, 0.0, 0.0, 0.0) before rendering any polygons.\n *

\n * If the supplied normal is (0.0, 0.0, 0.0)(the initial value), the normal\n * is determined as follows. The direction of the normal, up to its sign, is\n * found by fitting a plane to the vertices, without regard to how the\n * vertices are connected. It is expected that the input data lies\n * approximately in the plane; otherwise, projection perpendicular to one of\n * the three coordinate axes may substantially change the geometry. The sign\n * of the normal is chosen so that the sum of the signed areas of all input\n * contours is nonnegative (where a CCW contour has positive area).\n *

\n * The supplied normal persists until it is changed by another call to\n * **gluTessNormal**.\n *\n * @param tessellator\n * Specifies the tessellation object (created by\n * [gluNewTess][.gluNewTess]).\n * @param x\n * Specifies the first component of the normal.\n * @param y\n * Specifies the second component of the normal.\n * @param z\n * Specifies the third component of the normal.\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessNormal(tessellator: GLUtessellator, x: Double, y: Double, z: Double) {\n (tessellator as GLUtessellatorImpl).gluTessNormal(x, y, z)\n }\n\n /**\n * **gluTessCallback** is used to indicate a callback to be used by a\n * tessellation object. If the specified callback is already defined, then it\n * is replaced. If *aCallback* is null, then the existing callback\n * becomes undefined.\n *

\n * These callbacks are used by the tessellation object to describe how a\n * polygon specified by the user is broken into triangles. Note that there are\n * two versions of each callback: one with user-specified polygon data and one\n * without. If both versions of a particular callback are specified, then the\n * callback with user-specified polygon data will be used. Note that the\n * polygonData parameter used by some of the methods is a copy of the\n * reference that was specified when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The legal callbacks are as follows:\n *
    \n *
  • **GLU_TESS_BEGIN**\n *

    \n * The begin callback is invoked like\n * glBegin to indicate the start of a (triangle) primitive. The method\n * takes a single argument of type int. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_FALSE**, then\n * the argument is set to either **GL_TRIANGLE_FAN**,\n * **GL_TRIANGLE_STRIP**, or **GL_TRIANGLES**. If the\n * **GLU_TESS_BOUNDARY_ONLY** property is set to **GL_TRUE**, then the\n * argument will be set to **GL_LINE_LOOP**. The method prototype for\n * this callback is:\n *
    void begin(int type);
    \n
  • *\n *
  • **GLU_TESS_BEGIN_DATA**\n *

    \n * The same as the **GLU_TESS_BEGIN** callback except\n * that it takes an additional reference argument. This reference is\n * identical to the opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void beginData(int type, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG**\n *

    \n * The edge flag callback is similar to\n * glEdgeFlag. The method takes\n * a single boolean boundaryEdge that indicates which edges lie on the\n * polygon boundary. If the boundaryEdge is **GL_TRUE**, then each vertex\n * that follows begins an edge that lies on the polygon boundary, that is,\n * an edge that separates an interior region from an exterior one. If the\n * boundaryEdge is **GL_FALSE**, then each vertex that follows begins an\n * edge that lies in the polygon interior. The edge flag callback (if\n * defined) is invoked before the first vertex callback.\n *

    \n * Since triangle fans and triangle strips do not support edge flags, the\n * begin callback is not called with **GL_TRIANGLE_FAN** or\n * **GL_TRIANGLE_STRIP** if a non-null edge flag callback is provided.\n * (If the callback is initialized to null, there is no impact on\n * performance). Instead, the fans and strips are converted to independent\n * triangles. The method prototype for this callback is:\n *
    void edgeFlag(boolean boundaryEdge);
    \n
  • *\n *
  • **GLU_TESS_EDGE_FLAG_DATA**\n *

    \n * The same as the **GLU_TESS_EDGE_FLAG** callback except that it takes\n * an additional reference argument. This reference is identical to the\n * opaque reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void edgeFlagData(boolean boundaryEdge, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX**\n *

    \n * The vertex callback is invoked between the begin and end callbacks. It is\n * similar to glVertex3f, and it\n * defines the vertices of the triangles created by the tessellation\n * process. The method takes a reference as its only argument. This\n * reference is identical to the opaque reference provided by the user when\n * the vertex was described (see\n * [gluTessVertex][.gluTessVertex]). The method\n * prototype for this callback is:\n *
    void vertex(Object vertexData);
    \n
  • *\n *
  • **GLU_TESS_VERTEX_DATA**\n *

    \n * The same as the **GLU_TESS_VERTEX** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void vertexData(Object vertexData, Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_END**\n *

    \n * The end callback serves the same purpose as\n * glEnd. It indicates the end of a\n * primitive and it takes no arguments. The method prototype for this\n * callback is:\n *
    void end();
    \n
  • *\n *
  • **GLU_TESS_END_DATA**\n *

    \n * The same as the **GLU_TESS_END** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    void endData(Object polygonData);
    \n
  • *\n *
  • **GLU_TESS_COMBINE**\n *

    \n * The combine callback is called to create a new vertex when the\n * tessellation detects an intersection, or wishes to merge features. The\n * method takes four arguments: an array of three elements each of type\n * double, an array of four references, an array of four elements each of\n * type float, and a reference to a reference. The prototype is:\n *
    void combine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData);
    \n * The vertex is defined as a linear combination of up to four existing\n * vertices, stored in *data*. The coefficients of the linear\n * combination are given by *weight*; these weights always add up to 1.\n * All vertex pointers are valid even when some of the weights are 0.\n * *coords* gives the location of the new vertex.\n *

    \n * The user must allocate another vertex, interpolate parameters using\n * *data* and *weight*, and return the new vertex pointer\n * in *outData*. This handle is supplied during rendering callbacks.\n * The user is responsible for freeing the memory some time after\n * [gluTessEndPolygon][.gluTessEndPolygon] is\n * called.\n *

    \n * For example, if the polygon lies in an arbitrary plane in 3-space, and a\n * color is associated with each vertex, the **GLU_TESS_COMBINE**\n * callback might look like this:\n *
    \n     * void myCombine(double[] coords, Object[] data,\n     * float[] weight, Object[] outData)\n     * {\n     * MyVertex newVertex = new MyVertex();\n     *\n     * newVertex.x = coords[0];\n     * newVertex.y = coords[1];\n     * newVertex.z = coords[2];\n     * newVertex.r = weight[0]*data[0].r +\n     * weight[1]*data[1].r +\n     * weight[2]*data[2].r +\n     * weight[3]*data[3].r;\n     * newVertex.g = weight[0]*data[0].g +\n     * weight[1]*data[1].g +\n     * weight[2]*data[2].g +\n     * weight[3]*data[3].g;\n     * newVertex.b = weight[0]*data[0].b +\n     * weight[1]*data[1].b +\n     * weight[2]*data[2].b +\n     * weight[3]*data[3].b;\n     * newVertex.a = weight[0]*data[0].a +\n     * weight[1]*data[1].a +\n     * weight[2]*data[2].a +\n     * weight[3]*data[3].a;\n     * outData = newVertex;\n     * }
    \n * If the tessellation detects an intersection, then the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback (see\n * below) must be defined, and it must write a non-null reference into\n * *outData*. Otherwise the **GLU_TESS_NEED_COMBINE_CALLBACK** error\n * occurs, and no output is generated.\n
  • *\n *
  • **GLU_TESS_COMBINE_DATA**\n *

    \n * The same as the **GLU_TESS_COMBINE** callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void combineData(double[] coords, Object[] data,\n     * float[] weight, Object[] outData,\n     * Object polygonData);
    \n *\n
  • *\n *
  • **GLU_TESS_ERROR**\n *

    \n * The error callback is called when an error is encountered. The one\n * argument is of type int; it indicates the specific error that occurred\n * and will be set to one of **GLU_TESS_MISSING_BEGIN_POLYGON**,\n * **GLU_TESS_MISSING_END_POLYGON**,\n * **GLU_TESS_MISSING_BEGIN_CONTOUR**,\n * **GLU_TESS_MISSING_END_CONTOUR**, **GLU_TESS_COORD_TOO_LARGE**,\n * **GLU_TESS_NEED_COMBINE_CALLBACK** or **GLU_OUT_OF_MEMORY**.\n * Character strings describing these errors can be retrieved with the\n * [gluErrorString][.gluErrorString] call. The\n * method prototype for this callback is:\n *
    \n     * void error(int errnum);
    \n * The GLU library will recover from the first four errors by inserting the\n * missing call(s). **GLU_TESS_COORD_TOO_LARGE** indicates that some\n * vertex coordinate exceeded the predefined constant\n * **GLU_TESS_MAX_COORD** in absolute value, and that the value has been\n * clamped. (Coordinate values must be small enough so that two can be\n * multiplied together without overflow.)\n * **GLU_TESS_NEED_COMBINE_CALLBACK** indicates that the tessellation\n * detected an intersection between two edges in the input data, and the\n * **GLU_TESS_COMBINE** or **GLU_TESS_COMBINE_DATA** callback was not\n * provided. No output is generated. **GLU_OUT_OF_MEMORY** indicates that\n * there is not enough memory so no output is generated.\n
  • *\n *
  • **GLU_TESS_ERROR_DATA**\n *

    \n * The same as the GLU_TESS_ERROR callback except that it takes an\n * additional reference argument. This reference is identical to the opaque\n * reference provided when\n * [gluTessBeginPolygon][.gluTessBeginPolygon]\n * was called. The method prototype for this callback is:\n *
    \n     * void errorData(int errnum, Object polygonData);
    \n
  • *\n
*\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param which\n * Specifies the callback being defined. The following values are\n * valid: **GLU_TESS_BEGIN**, **GLU_TESS_BEGIN_DATA**,\n * **GLU_TESS_EDGE_FLAG**, **GLU_TESS_EDGE_FLAG_DATA**,\n * **GLU_TESS_VERTEX**, **GLU_TESS_VERTEX_DATA**,\n * **GLU_TESS_END**, **GLU_TESS_END_DATA**,\n * **GLU_TESS_COMBINE**, **GLU_TESS_COMBINE_DATA**,\n * **GLU_TESS_ERROR**, and **GLU_TESS_ERROR_DATA**.\n * @param aCallback\n * Specifies the callback object to be called.\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluErrorString gluErrorString\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n */\n fun gluTessCallback(\n tessellator: GLUtessellator, which: Int, aCallback: GLUtessellatorCallback?\n ) {\n (tessellator as GLUtessellatorImpl).gluTessCallback(which, aCallback)\n }\n\n /**\n * **gluTessVertex** describes a vertex on a polygon that the program\n * defines. Successive **gluTessVertex** calls describe a closed contour.\n * For example, to describe a quadrilateral **gluTessVertex** should be\n * called four times. **gluTessVertex** can only be called between\n * [gluTessBeginContour][.gluTessBeginContour] and\n * [gluTessEndContour][.gluTessBeginContour].\n *

\n * **data** normally references to a structure containing the vertex\n * location, as well as other per-vertex attributes such as color and normal.\n * This reference is passed back to the user through the\n * **GLU_TESS_VERTEX** or **GLU_TESS_VERTEX_DATA** callback after\n * tessellation (see the [ gluTessCallback][.gluTessCallback] reference page).\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][.gluNewTess]).\n * @param coords\n * Specifies the coordinates of the vertex.\n * @param data\n * Specifies an opaque reference passed back to the program with the\n * vertex callback (as specified by\n * [gluTessCallback][.gluTessCallback]).\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessVertex(\n tessellator: GLUtessellator, coords: DoubleArray, coords_offset: Int, data: Any\n ) {\n (tessellator as GLUtessellatorImpl).gluTessVertex(coords, coords_offset, data)\n }\n\n /**\n * **gluTessBeginPolygon** and\n * [gluTessEndPolygon][.gluTessEndPolygon] delimit\n * the definition of a convex, concave or self-intersecting polygon. Within\n * each **gluTessBeginPolygon**\n * [gluTessEndPolygon][.gluTessEndPolygon] pair,\n * there must be one or more calls to\n * [gluTessBeginContour][.gluTessBeginContour]/\n * [gluTessEndContour][.gluTessEndContour]. Within\n * each contour, there are zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex], [ gluTessBeginContour][.gluTessBeginContour], and [ gluTessEndContour][.gluTessEndContour] reference pages for more details.\n *

\n * **data ** is a reference to a user-defined data structure. If the\n * appropriate callback(s) are specified (see\n * [gluTessCallback][.gluTessCallback]), then this\n * reference is returned to the callback method(s). Thus, it is a convenient\n * way to store per-polygon information.\n *

\n * Once [gluTessEndPolygon][.gluTessEndPolygon] is\n * called, the polygon is tessellated, and the resulting triangles are\n * described through callbacks. See\n * [gluTessCallback][.gluTessCallback] for\n * descriptions of the callback methods.\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n * @param data\n * Specifies a reference to user polygon data .\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginContour gluTessBeginContour\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginPolygon(tessellator: GLUtessellator, data: Any) {\n (tessellator as GLUtessellatorImpl).gluTessBeginPolygon(data)\n }\n\n /**\n * **gluTessBeginContour** and\n * [gluTessEndContour][.gluTessEndContour] delimit\n * the definition of a polygon contour. Within each\n * **gluTessBeginContour**\n * [gluTessEndContour][.gluTessEndContour] pair,\n * there can be zero or more calls to\n * [gluTessVertex][.gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][.gluTessVertex] reference page for more details. **gluTessBeginContour**\n * can only be called between\n * [gluTessBeginPolygon][.gluTessBeginPolygon] and\n * [gluTessEndPolygon][.gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation\n object(\n created with\n * [gluNewTess][.gluNewTess]).\n *\n * @see.gluNewTess gluNewTess\n *\n * @see.gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see.gluTessVertex gluTessVertex\n *\n * @see.gluTessCallback gluTessCallback\n *\n * @see.gluTessProperty gluTessProperty\n *\n * @see.gluTessNormal gluTessNormal\n *\n * @see.gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessBeginContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessBeginContour()\n }\n\n /**\n * **gluTessEndContour** and\n * [gluTessBeginContour][gluTessBeginContour]\n * delimit the definition of a polygon contour. Within each\n * [gluTessBeginContour][gluTessBeginContour]/\n * **gluTessEndContour** pair, there can be zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex] reference page for more details.\n * [gluTessBeginContour][gluTessBeginContour] can\n * only be called between [ gluTessBeginPolygon][gluTessBeginPolygon] and\n * [gluTessEndPolygon][gluTessEndPolygon].\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessEndPolygon gluTessEndPolygon\n */\n fun gluTessEndContour(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndContour()\n }\n\n /**\n * **gluTessEndPolygon** and\n * [gluTessBeginPolygon][gluTessBeginPolygon]\n * delimit the definition of a convex, concave or self-intersecting polygon.\n * Within each [ gluTessBeginPolygon][gluTessBeginPolygon]/ **gluTessEndPolygon** pair, there must be one or\n * more calls to [ gluTessBeginContour][gluTessBeginContour]/[ gluTessEndContour][gluTessEndContour]. Within each contour, there are zero or more calls to\n * [gluTessVertex][gluTessVertex]. The vertices\n * specify a closed contour (the last vertex of each contour is automatically\n * linked to the first). See the [ gluTessVertex][gluTessVertex], [ gluTessBeginContour][gluTessBeginContour] and [ gluTessEndContour][gluTessEndContour] reference pages for more details.\n *

\n * Once **gluTessEndPolygon** is called, the polygon is tessellated, and\n * the resulting triangles are described through callbacks. See\n * [gluTessCallback][gluTessCallback] for\n * descriptions of the callback functions.\n *\n * @param tessellator\n * Specifies the tessellation object (created with\n * [gluNewTess][gluNewTess]).\n *\n * @see .gluNewTess gluNewTess\n *\n * @see .gluTessBeginContour gluTessBeginContour\n *\n * @see .gluTessVertex gluTessVertex\n *\n * @see .gluTessCallback gluTessCallback\n *\n * @see .gluTessProperty gluTessProperty\n *\n * @see .gluTessNormal gluTessNormal\n *\n * @see .gluTessBeginPolygon gluTessBeginPolygon\n */\n fun gluTessEndPolygon(tessellator: GLUtessellator) {\n (tessellator as GLUtessellatorImpl).gluTessEndPolygon()\n }\n\n //----------------------------------------------------------------------\n // GLU constants\n // Boolean\n const val GLU_FALSE = 0\n const val GLU_TRUE = 1\n\n // String Name\n const val GLU_VERSION = 100800\n const val GLU_EXTENSIONS = 100801\n\n // Extensions\n const val versionString = \"1.3\"\n const val extensionString = \"GLU_EXT_object_space_tess \"\n\n // ErrorCode\n const val GLU_INVALID_ENUM = 100900\n const val GLU_INVALID_VALUE = 100901\n const val GLU_OUT_OF_MEMORY = 100902\n const val GLU_INVALID_OPERATION = 100904\n\n // TessCallback\n const val GLU_TESS_BEGIN = 100100\n const val GLU_TESS_VERTEX = 100101\n const val GLU_TESS_END = 100102\n const val GLU_TESS_ERROR = 100103\n const val GLU_TESS_EDGE_FLAG = 100104\n const val GLU_TESS_COMBINE = 100105\n const val GLU_TESS_BEGIN_DATA = 100106\n const val GLU_TESS_VERTEX_DATA = 100107\n const val GLU_TESS_END_DATA = 100108\n const val GLU_TESS_ERROR_DATA = 100109\n const val GLU_TESS_EDGE_FLAG_DATA = 100110\n const val GLU_TESS_COMBINE_DATA = 100111\n\n // TessContour\n const val GLU_CW = 100120\n const val GLU_CCW = 100121\n const val GLU_INTERIOR = 100122\n const val GLU_EXTERIOR = 100123\n const val GLU_UNKNOWN = 100124\n\n // TessProperty\n const val GLU_TESS_WINDING_RULE = 100140\n const val GLU_TESS_BOUNDARY_ONLY = 100141\n const val GLU_TESS_TOLERANCE = 100142\n\n // TessError\n const val GLU_TESS_ERROR1 = 100151\n const val GLU_TESS_ERROR2 = 100152\n const val GLU_TESS_ERROR3 = 100153\n const val GLU_TESS_ERROR4 = 100154\n const val GLU_TESS_ERROR5 = 100155\n const val GLU_TESS_ERROR6 = 100156\n const val GLU_TESS_ERROR7 = 100157\n const val GLU_TESS_ERROR8 = 100158\n const val GLU_TESS_MISSING_BEGIN_POLYGON = 100151\n const val GLU_TESS_MISSING_BEGIN_CONTOUR = 100152\n const val GLU_TESS_MISSING_END_POLYGON = 100153\n const val GLU_TESS_MISSING_END_CONTOUR = 100154\n const val GLU_TESS_COORD_TOO_LARGE = 100155\n const val GLU_TESS_NEED_COMBINE_CALLBACK = 100156\n\n // TessWinding\n const val GLU_TESS_WINDING_ODD = 100130\n const val GLU_TESS_WINDING_NONZERO = 100131\n const val GLU_TESS_WINDING_POSITIVE = 100132\n const val GLU_TESS_WINDING_NEGATIVE = 100133\n const val GLU_TESS_WINDING_ABS_GEQ_TWO = 100134\n const val GLU_TESS_MAX_COORD = 1.0e150\n}\n","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu\n\n/**\n * The **GLUtessellatorCallbackAdapter** provides a default implementation of\n * [GLUtessellatorCallback]\n * with empty callback methods. This class can be extended to provide user\n * defined callback methods.\n *\n * @author Eric Veach, July 1994\n * @author Java Port: Pepijn Van Eechhoudt, July 2003\n * @author Java Port: Nathan Parker Burg, August 2003\n * @author Kotlin Port: Eugene Maksymenko, April 2022\n */\nopen class GLUtessellatorCallbackAdapter : GLUtessellatorCallback {\n\toverride fun begin(type: Int) {}\n\toverride fun edgeFlag(boundaryEdge: Boolean) {}\n\toverride fun vertex(vertexData: Any) {}\n\toverride fun end() {}\n\toverride fun error(errnum: Int) {}\n\toverride fun combine(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array) {}\n\n\toverride fun beginData(type: Int, polygonData: Any) {}\n\toverride fun edgeFlagData(boundaryEdge: Boolean, polygonData: Any) {}\n\n\toverride fun vertexData(vertexData: Any, polygonData: Any) {}\n\toverride fun endData(polygonData: Any) {}\n\toverride fun errorData(errnum: Int, polygonData: Any) {}\n\toverride fun combineData(coords: DoubleArray, data: Array, weight: FloatArray, outData: Array, polygonData: Any) {}\n}","/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n * \n * http://oss.sgi.com/projects/FreeB\n * \n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n * \n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n * \n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n */\npackage earth.worldwind.util.glu.error\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.jvm.JvmStatic\n\nobject Error {\n\tprivate val gluErrorStrings = arrayOf(\n\t\t\"invalid enumerant\",\n\t\t\"invalid value\",\n\t\t\"out of memory\",\n\t\t\"\",\n\t\t\"invalid operation\"\n\t)\n\n\t@JvmStatic\n\tfun gluErrorString(errorCode: Int): String? {\n\t\tif (errorCode == 0) return \"no error\"\n\t\tif (errorCode >= GLU.GLU_INVALID_ENUM && errorCode <= GLU.GLU_INVALID_OPERATION)\n\t\t\treturn gluErrorStrings[errorCode - GLU.GLU_INVALID_ENUM]\n\t\treturn if (errorCode >= GLU.GLU_TESS_ERROR1 && errorCode <= GLU.GLU_TESS_ERROR8)\n\t\t\tgluErrorStrings[errorCode - (GLU.GLU_TESS_ERROR1 - 1)] else null\n\t}\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal class ActiveRegion(\n /**\n * upper edge, directed right to left\n */\n var eUp: GLUhalfEdge\n) {\n /**\n * dictionary node corresponding to eUp\n */\n var nodeUp: DictNode? = null\n /**\n * used to determine which regions are inside the polygon\n */\n var windingNumber = 0\n /**\n * is this region inside the polygon?\n */\n var inside = false\n /**\n * marks fake edges at t = +/-infinity\n */\n var sentinel = false\n /**\n * marks regions where the upper or lower\n * edge has changed, but we haven't checked\n * whether they intersect yet\n */\n var dirty = false\n /**\n * marks temporary edges introduced when\n * we process a \"right vertex\" (one without\n * any edges leaving to the right)\n */\n var fixUpperEdge = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass CachedVertex {\n val coords = DoubleArray(3)\n var data: Any? = null\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass Dict private constructor(\n var head: DictNode,\n var frame: Any,\n var leq: DictLeq\n) {\n\n interface DictLeq {\n fun leq(frame: Any, key1: Any?, key2: Any?): Boolean\n }\n\n companion object {\n fun dictNewDict(frame: Any, leq: DictLeq): Dict {\n return Dict(DictNode(), frame, leq)\n }\n\n @Suppress(\"UNUSED_PARAMETER\")\n fun dictDeleteDict(dict: Dict) {\n// Memory will clear automatically\n// dict.head = null\n// dict.frame = null\n// dict.leq = null\n }\n\n fun dictInsert(dict: Dict, key: Any?): DictNode {\n return dictInsertBefore(dict, dict.head, key)\n }\n\n fun dictInsertBefore(dict: Dict, node: DictNode, key: Any?): DictNode {\n var n = node\n do {\n n = n.prev\n } while (n.key != null && !dict.leq.leq(dict.frame, n.key, key))\n val newNode = DictNode(key).apply {\n prev = n\n next = n.next\n }\n n.next.prev = newNode\n n.next = newNode\n return newNode\n }\n\n fun dictKey(aNode: DictNode) = aNode.key\n\n fun dictSucc(aNode: DictNode) = aNode.next\n\n fun dictPred(aNode: DictNode) = aNode.prev\n\n fun dictMin(aDict: Dict) = aDict.head.next\n\n fun dictMax(aDict: Dict) = aDict.head.prev\n\n fun dictDelete(node: DictNode) {\n node.next.prev = node.prev\n node.prev.next = node.next\n }\n\n fun dictSearch(dict: Dict, key: Any?): DictNode {\n var node = dict.head\n do {\n node = node.next\n } while (node.key != null && !dict.leq.leq(dict.frame, key, node.key))\n return node\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass DictNode(\n var key: Any? = null,\n) {\n var next = this\n var prev = this\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUface {\n /**\n * next face (never NULL)\n */\n var next: GLUface? = null\n /**\n * previous face (never NULL)\n */\n var prev: GLUface? = null\n /**\n * a half edge with this left face\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * room for client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * \"stack\" for conversion to strips\n */\n var trail: GLUface? = null\n /**\n * flag for conversion to strips\n */\n var marked = false\n /**\n * this face is in the polygon interior\n */\n var inside = false\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUhalfEdge(val first: Boolean) {\n /**\n * doubly-linked list (prev==Sym->next)\n */\n var next: GLUhalfEdge? = null\n /**\n * same edge, opposite direction\n */\n var sym: GLUhalfEdge? = null\n /**\n * next edge CCW around origin\n */\n var oNext: GLUhalfEdge? = null\n /**\n * next edge CCW around left face\n */\n var lNext: GLUhalfEdge? = null\n /**\n * origin vertex (Overtex too long)\n */\n var org: GLUvertex? = null\n /**\n * left face\n */\n var lFace: GLUface? = null\n\n /* Internal data (keep hidden) */\n /**\n * a region with this upper edge (sweep.c)\n */\n internal var activeRegion: ActiveRegion? = null\n /**\n * change in winding number when crossing\n */\n var winding = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUmesh {\n /**\n * dummy header for vertex list\n */\n val vHead = GLUvertex()\n /**\n * dummy header for face list\n */\n val fHead = GLUface()\n /**\n * dummy header for edge list\n */\n internal val eHead = GLUhalfEdge(true)\n /**\n * and its symmetric counterpart\n */\n internal val eHeadSym = GLUhalfEdge(false)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.GLUtessellator\nimport earth.worldwind.util.glu.GLUtessellatorCallback\nimport earth.worldwind.util.glu.GLUtessellatorCallbackAdapter\n\nclass GLUtessellatorImpl private constructor() : GLUtessellator {\n /**\n * what begin/end calls have we seen?\n */\n private var state = TessState.T_DORMANT\n /**\n * lastEdge->Org is the most recent vertex\n */\n private var lastEdge: GLUhalfEdge? = null\n /**\n * stores the input contours, and eventually the tessellation itself\n */\n var mesh: GLUmesh? = null\n\n /*** state needed for projecting onto the sweep plane */\n /**\n * user-specified normal (if provided)\n */\n val normal = DoubleArray(3)\n /**\n * unit vector in s-direction (debugging)\n */\n val sUnit = DoubleArray(3)\n /**\n * unit vector in t-direction (debugging)\n */\n val tUnit = DoubleArray(3)\n\n /*** state needed for the line sweep */\n /**\n * tolerance for merging features\n */\n private var relTolerance = GLU_TESS_DEFAULT_TOLERANCE\n /**\n * rule for determining polygon interior\n */\n var windingRule = GLU.GLU_TESS_WINDING_ODD\n /**\n * fatal error: needed combine callback\n */\n var fatalError = false\n /**\n * edge dictionary for sweep line\n */\n var dict: Dict? = null\n /**\n * priority queue of vertex events\n */\n var pq: PriorityQ? = null\n /**\n * current sweep event being processed\n */\n var event: GLUvertex? = null\n\n /*** state needed for rendering callbacks (see render.c) */\n /**\n * mark boundary edges (use EdgeFlag)\n */\n var flagBoundary = false\n /**\n * Extract contours, not triangles\n */\n var boundaryOnly = false\n /**\n * list of triangles which could not be rendered as strips or fans\n */\n var lonelyTriList: GLUface? = null\n /*** state needed to cache single-contour polygons for renderCache() */\n /**\n * empty cache on next vertex() call\n */\n private var flushCacheOnNextVertex = false\n /**\n * number of cached vertices\n */\n var cacheCount = 0\n /**\n * the vertex data\n */\n val cache = Array(TESS_MAX_CACHE) { CachedVertex() }\n\n /*** rendering callbacks that also pass polygon data */\n /**\n * client data for current polygon\n */\n private var polygonData: Any? = null\n private var callBegin: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlag: GLUtessellatorCallback = NULL_CB\n private var callVertex: GLUtessellatorCallback = NULL_CB\n private var callEnd: GLUtessellatorCallback = NULL_CB\n\n //private var callMesh: GLUtessellatorCallback = NULL_CB\n private var callError: GLUtessellatorCallback = NULL_CB\n private var callCombine: GLUtessellatorCallback = NULL_CB\n private var callBeginData: GLUtessellatorCallback = NULL_CB\n private var callEdgeFlagData: GLUtessellatorCallback = NULL_CB\n private var callVertexData: GLUtessellatorCallback = NULL_CB\n private var callEndData: GLUtessellatorCallback = NULL_CB\n\n //private GLUtessellatorCallback callMeshData;\n private var callErrorData: GLUtessellatorCallback = NULL_CB\n private var callCombineData: GLUtessellatorCallback = NULL_CB\n\n private fun makeDormant() {\n /**\n * Return the tessellator to its original dormant state.\n */\n mesh?.let { Mesh.glMeshDeleteMesh(it) }\n state = TessState.T_DORMANT\n lastEdge = null\n mesh = null\n }\n\n private fun requireState(newState: Int) {\n if (state != newState) gotoState(newState)\n }\n\n private fun gotoState(newState: Int) {\n while (state != newState) {\n /**\n * We change the current state one level at a time, to get to the desired state.\n */\n if (state < newState) {\n if (state == TessState.T_DORMANT) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_POLYGON)\n gluTessBeginPolygon(null)\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_BEGIN_CONTOUR)\n gluTessBeginContour()\n }\n } else {\n if (state == TessState.T_IN_CONTOUR) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_CONTOUR)\n gluTessEndContour()\n } else if (state == TessState.T_IN_POLYGON) {\n callErrorOrErrorData(GLU.GLU_TESS_MISSING_END_POLYGON)\n /* gluTessEndPolygon( tess ) is too much work! */\n makeDormant()\n }\n }\n }\n }\n\n fun gluDeleteTess() {\n requireState(TessState.T_DORMANT)\n }\n\n fun gluTessProperty(which: Int, value: Double) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> {\n if (value < 0.0 || value > 1.0) callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n else relTolerance = value\n }\n GLU.GLU_TESS_WINDING_RULE -> {\n val windingRule = value.toInt()\n if (windingRule.toDouble() != value) {\n /* not an integer */\n callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n } else {\n when (windingRule) {\n GLU.GLU_TESS_WINDING_ODD,\n GLU.GLU_TESS_WINDING_NONZERO,\n GLU.GLU_TESS_WINDING_POSITIVE,\n GLU.GLU_TESS_WINDING_NEGATIVE,\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> this.windingRule = windingRule\n else -> callErrorOrErrorData(GLU.GLU_INVALID_VALUE)\n }\n }\n }\n GLU.GLU_TESS_BOUNDARY_ONLY -> boundaryOnly = value != 0.0\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n /**\n * Returns tessellator property\n */\n fun gluGetTessProperty(which: Int, value: DoubleArray, value_offset: Int) {\n when (which) {\n GLU.GLU_TESS_TOLERANCE -> value[value_offset] = relTolerance\n GLU.GLU_TESS_WINDING_RULE -> value[value_offset] = windingRule.toDouble()\n GLU.GLU_TESS_BOUNDARY_ONLY -> value[value_offset] = if (boundaryOnly) 1.0 else 0.0\n else -> {\n value[value_offset] = 0.0\n callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n }\n\n fun gluTessNormal(x: Double, y: Double, z: Double) {\n normal[0] = x\n normal[1] = y\n normal[2] = z\n }\n\n fun gluTessCallback(which: Int, aCallback: GLUtessellatorCallback?) {\n when (which) {\n GLU.GLU_TESS_BEGIN -> callBegin = aCallback ?: NULL_CB\n GLU.GLU_TESS_BEGIN_DATA -> callBeginData = aCallback ?: NULL_CB\n GLU.GLU_TESS_EDGE_FLAG -> {\n callEdgeFlag = aCallback ?: NULL_CB\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_EDGE_FLAG_DATA -> {\n run {\n callBegin = aCallback ?: NULL_CB\n callEdgeFlagData = callBegin\n }\n /**\n * If the client wants boundary edges to be flagged,\n * we render everything as separate triangles (no strips or fans).\n */\n flagBoundary = aCallback != null\n }\n GLU.GLU_TESS_VERTEX -> callVertex = aCallback ?: NULL_CB\n GLU.GLU_TESS_VERTEX_DATA -> callVertexData = aCallback ?: NULL_CB\n GLU.GLU_TESS_END -> callEnd = aCallback ?: NULL_CB\n GLU.GLU_TESS_END_DATA -> callEndData = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR -> callError = aCallback ?: NULL_CB\n GLU.GLU_TESS_ERROR_DATA -> callErrorData = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE -> callCombine = aCallback ?: NULL_CB\n GLU.GLU_TESS_COMBINE_DATA -> callCombineData = aCallback ?: NULL_CB\n else -> callErrorOrErrorData(GLU.GLU_INVALID_ENUM)\n }\n }\n\n private fun addVertex(coords: DoubleArray, vertexData: Any?): Boolean {\n var e = lastEdge\n if (e == null) {\n /* Make a self-loop (one vertex, one edge). */\n e = Mesh.glMeshMakeEdge(mesh!!)\n if (!Mesh.glMeshSplice(e, e.sym!!)) return false\n } else {\n /**\n * Create a new vertex and edge which immediately follow e\n * in the ordering around the left face.\n */\n Mesh.glMeshSplitEdge(e)\n e = e.lNext!!\n }\n\n /* The new vertex is now e.Org. */\n e.org?.data = vertexData\n e.org!!.coords[0] = coords[0]\n e.org!!.coords[1] = coords[1]\n e.org!!.coords[2] = coords[2]\n\n /**\n * The winding of an edge says how the winding number changes as we\n * cross from the edge''s right face to its left face. We add the\n * vertices in such an order that a CCW contour will add +1 to\n * the winding number of the region inside the contour.\n */\n e.winding = 1\n e.sym?.winding = -1\n lastEdge = e\n return true\n }\n\n private fun cacheVertex(coords: DoubleArray, vertexData: Any?) {\n val v = cache[cacheCount]\n v.data = vertexData\n v.coords[0] = coords[0]\n v.coords[1] = coords[1]\n v.coords[2] = coords[2]\n ++cacheCount\n }\n\n private fun flushCache(): Boolean {\n mesh = Mesh.glMeshNewMesh()\n for (i in 0 until cacheCount) {\n val vertex = cache[i]\n if (!addVertex(vertex.coords, vertex.data)) return false\n }\n cacheCount = 0\n flushCacheOnNextVertex = false\n return true\n }\n\n fun gluTessVertex(coords: DoubleArray, coords_offset: Int, vertexData: Any?) {\n var tooLarge = false\n val clamped = DoubleArray(3)\n requireState(TessState.T_IN_CONTOUR)\n if (flushCacheOnNextVertex) {\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n lastEdge = null\n }\n var i = 0\n while (i < 3) {\n var x = coords[i + coords_offset]\n if (x < -GLU.GLU_TESS_MAX_COORD) {\n x = -GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n if (x > GLU.GLU_TESS_MAX_COORD) {\n x = GLU.GLU_TESS_MAX_COORD\n tooLarge = true\n }\n clamped[i] = x\n ++i\n }\n if (tooLarge) {\n callErrorOrErrorData(GLU.GLU_TESS_COORD_TOO_LARGE)\n }\n if (mesh == null) {\n if (cacheCount < TESS_MAX_CACHE) {\n cacheVertex(clamped, vertexData)\n return\n }\n if (!flushCache()) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n return\n }\n }\n if (!addVertex(clamped, vertexData)) {\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun gluTessBeginPolygon(data: Any?) {\n requireState(TessState.T_DORMANT)\n state = TessState.T_IN_POLYGON\n cacheCount = 0\n flushCacheOnNextVertex = false\n mesh = null\n polygonData = data\n }\n\n fun gluTessBeginContour() {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_IN_CONTOUR\n lastEdge = null\n if (cacheCount > 0) {\n /**\n * Just set a flag so we don't get confused by empty contours\n * -- these can be generated accidentally with the obsolete\n * NextContour() interface.\n */\n flushCacheOnNextVertex = true\n }\n }\n\n fun gluTessEndContour() {\n requireState(TessState.T_IN_CONTOUR)\n state = TessState.T_IN_POLYGON\n }\n\n fun gluTessEndPolygon() {\n try {\n requireState(TessState.T_IN_POLYGON)\n state = TessState.T_DORMANT\n if (this.mesh == null) {\n if (!flagBoundary /*&& callMesh == NULL_CB*/) {\n /**\n * Try some special code to make the easy cases go quickly\n * (eg. convex polygons). This code does NOT handle multiple contours,\n * intersections, edge flags, and of course it does not generate\n * an explicit mesh either.\n */\n if (Render.glRenderCache(this)) {\n polygonData = null\n return\n }\n }\n if (!flushCache()) throw RuntimeException() /* could've used a label*/\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n Normal.glProjectPolygon(this)\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by windingRule.\n * Each interior region is guaranteed be monotone.\n */\n if (!Sweep.glComputeInterior(this)) {\n throw RuntimeException() /* could've used a label */\n }\n val mesh = this.mesh!!\n if (!fatalError) {\n /**\n * If the user wants only the boundary contours, we throw away all edges\n * except those which separate the interior from the exterior.\n * Otherwise we tessellate all the regions marked \"inside\".\n */\n val rc = if (boundaryOnly) {\n TessMono.glMeshSetWindingNumber(mesh, 1, true)\n } else {\n TessMono.glMeshTessellateInterior(mesh)\n }\n if (!rc) throw RuntimeException() /* could've used a label */\n Mesh.glMeshCheckMesh(mesh)\n if (callBegin !== NULL_CB || callEnd !== NULL_CB || callVertex !== NULL_CB || callEdgeFlag !== NULL_CB || callBeginData !== NULL_CB || callEndData !== NULL_CB || callVertexData !== NULL_CB || callEdgeFlagData !== NULL_CB) {\n if (boundaryOnly) {\n Render.glRenderBoundary(this, mesh) /* output boundary contours */\n } else {\n Render.glRenderMesh(this, mesh) /* output strips and fans */\n }\n }\n // if (callMesh != NULL_CB) {\n// /**\n// * Throw away the exterior faces, so that all faces are interior.\n// * This way the user doesn't have to check the \"inside\" flag,\n// * and we don't need to even reveal its existence. It also leaves\n// * the freedom for an implementation to not generate the exterior\n// * faces in the first place.\n// */\n// TessMono.__gl_meshDiscardExterior(mesh);\n// callMesh.mesh(mesh);\t\t/* user wants the mesh itself */\n// mesh = null;\n// polygonData = null;\n// return;\n// }\n }\n Mesh.glMeshDeleteMesh(mesh)\n polygonData = null\n } catch (e: Exception) {\n e.printStackTrace()\n callErrorOrErrorData(GLU.GLU_OUT_OF_MEMORY)\n }\n }\n\n fun callBeginOrBeginData(a: Int) {\n if (callBeginData !== NULL_CB) callBeginData.beginData(a, polygonData!!) else callBegin.begin(a)\n }\n\n fun callVertexOrVertexData(a: Any) {\n if (callVertexData !== NULL_CB) callVertexData.vertexData(a, polygonData!!) else callVertex.vertex(a)\n }\n\n fun callEdgeFlagOrEdgeFlagData(a: Boolean) {\n if (callEdgeFlagData !== NULL_CB) callEdgeFlagData.edgeFlagData(a, polygonData!!) else callEdgeFlag.edgeFlag(a)\n }\n\n fun callEndOrEndData() {\n if (callEndData !== NULL_CB) callEndData.endData(polygonData!!) else callEnd.end()\n }\n\n fun callCombineOrCombineData(\n coords: DoubleArray,\n vertexData: Array,\n weights: FloatArray,\n outData: Array\n ) {\n if (callCombineData !== NULL_CB) callCombineData.combineData(coords, vertexData, weights, outData, polygonData!!)\n else callCombine.combine(coords, vertexData, weights, outData)\n }\n\n fun callErrorOrErrorData(a: Int) {\n if (callErrorData !== NULL_CB) callErrorData.errorData(a, polygonData!!) else callError.error(a)\n }\n\n companion object {\n const val TESS_MAX_CACHE = 100\n private const val GLU_TESS_DEFAULT_TOLERANCE = 0.0\n\n //private static final int GLU_TESS_MESH = 100112;\t/* void (*)(GLUmesh *mesh)\t */\n private val NULL_CB = GLUtessellatorCallbackAdapter()\n\n fun gluNewTess(): GLUtessellator = GLUtessellatorImpl()\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nclass GLUvertex {\n /**\n * next vertex (never NULL)\n */\n var next: GLUvertex? = null\n /**\n * previous vertex (never NULL)\n */\n var prev: GLUvertex? = null\n /**\n * a half-edge with this origin\n */\n var anEdge: GLUhalfEdge? = null\n /**\n * client's data\n */\n var data: Any? = null\n\n /* Internal data (keep hidden) */\n /**\n * vertex location in 3D\n */\n val coords = DoubleArray(3)\n var s = 0.0\n /**\n * projection onto the sweep plane\n */\n var t = 0.0\n /**\n * to allow deletion from priority queue\n */\n var pqHandle = 0\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Geom {\n /* Given three vertices u,v,w such that VertLeq(u,v) && VertLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->t - (uw)(v->s), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->t = 0 and\n * let r be the negated result (this evaluates (uw)(v->s)), then\n * r is guaranteed to satisfy MIN(u->t,w->t) <= r <= MAX(u->t,w->t).\n */\n fun edgeEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.t - u.t + (u.t - w.t) * (gapL / (gapL + gapR))\n else v.t - w.t + (w.t - u.t) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n fun edgeSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.s - u.s\n val gapR = w.s - v.s\n return if (gapL + gapR > 0) (v.t - w.t) * gapL + (v.t - u.t) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * Define versions of EdgeSign, EdgeEval with s and t transposed.\n */\n fun transEval(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n /* Given three vertices u,v,w such that TransLeq(u,v) && TransLeq(v,w),\n * evaluates the t-coord of the edge uw at the s-coord of the vertex v.\n * Returns v->s - (uw)(v->t), ie. the signed distance from uw to v.\n * If uw is vertical (and thus passes thru v), the result is zero.\n *\n * The calculation is extremely accurate and stable, even when v\n * is very close to u or w. In particular if we set v->s = 0 and\n * let r be the negated result (this evaluates (uw)(v->t)), then\n * r is guaranteed to satisfy MIN(u->s,w->s) <= r <= MAX(u->s,w->s).\n */\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) {\n if (gapL < gapR) v.s - u.s + (u.s - w.s) * (gapL / (gapL + gapR))\n else v.s - w.s + (w.s - u.s) * (gapR / (gapL + gapR))\n } else 0.0\n /* vertical line */\n }\n\n /**\n * Returns a number whose sign matches TransEval(u,v,w) but which\n * is cheaper to evaluate. Returns > 0, == 0 , or < 0\n * as v is above, on, or below the edge uw.\n */\n fun transSign(u: GLUvertex, v: GLUvertex, w: GLUvertex): Double {\n val gapL = v.t - u.t\n val gapR = w.t - v.t\n return if (gapL + gapR > 0) (v.s - w.s) * gapL + (v.s - u.s) * gapR else 0.0\n /* vertical line */\n }\n\n /**\n * For almost-degenerate situations, the results are not reliable.\n * Unless the floating-point arithmetic can be performed without\n * rounding errors, *any* implementation will give incorrect results\n * on some degenerate inputs, so the client must have some way to\n * handle this situation.\n */\n fun vertCCW(u: GLUvertex, v: GLUvertex, w: GLUvertex) =\n u.s * (v.t - w.t) + v.s * (w.t - u.t) + w.s * (u.t - v.t) >= 0\n\n /**\n * Given parameters a,x,b,y returns the value (b*x+a*y)/(a+b),\n * or (x+y)/2 if a==b==0. It requires that a,b >= 0, and enforces\n * this in the rare case that one argument is slightly negative.\n * The implementation is extremely stable numerically.\n * In particular it guarantees that the result r satisfies\n * MIN(x,y) <= r <= MAX(x,y), and the results are very accurate\n * even when a and b differ greatly in magnitude.\n */\n fun interpolate(a: Double, x: Double, b: Double, y: Double): Double {\n val a = if (a < 0) 0.0 else a\n val b = if (b < 0) 0.0 else b\n return if (a <= b) {\n if (b == 0.0) (x + y) / 2.0\n else x + (y - x) * (a / (a + b))\n } else y + (x - y) * (b / (a + b))\n }\n\n /**\n * Given edges (o1,d1) and (o2,d2), compute their point of intersection.\n * The computed point is guaranteed to lie in the intersection of the\n * bounding rectangles defined by each edge.\n */\n fun edgeIntersect(\n o1: GLUvertex, d1: GLUvertex, o2: GLUvertex, d2: GLUvertex, v: GLUvertex\n ) {\n var o1 = o1\n var d1 = d1\n var o2 = o2\n var d2 = d2\n\n /**\n * This is certainly not the most efficient way to find the intersection\n * of two line segments, but it is very numerically stable.\n *\n * Strategy: find the two middle vertices in the VertLeq ordering,\n * and interpolate the intersection s-value from these. Then repeat\n * using the TransLeq ordering to find the intersection t-value.\n */\n if (!vertLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!vertLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!vertLeq(o1, o2)) {\n var temp = o1\n o1 = o2\n o2 = temp\n temp = d1\n d1 = d2\n d2 = temp\n }\n if (!vertLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.s = (o2.s + d1.s) / 2.0\n } else if (vertLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = edgeEval(o1, o2, d1)\n var z2 = edgeEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d1.s)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = edgeSign(o1, o2, d1)\n var z2 = -edgeSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.s = interpolate(z1, o2.s, z2, d2.s)\n }\n\n /* Now repeat the process for t */\n if (!transLeq(o1, d1)) {\n val temp = o1\n o1 = d1\n d1 = temp\n }\n if (!transLeq(o2, d2)) {\n val temp = o2\n o2 = d2\n d2 = temp\n }\n if (!transLeq(o1, o2)) {\n var temp = o2\n o2 = o1\n o1 = temp\n temp = d2\n d2 = d1\n d1 = temp\n }\n if (!transLeq(o2, d1)) {\n /* Technically, no intersection -- do our best */\n v.t = (o2.t + d1.t) / 2.0\n } else if (transLeq(d1, d2)) {\n /* Interpolate between o2 and d1 */\n var z1 = transEval(o1, o2, d1)\n var z2 = transEval(o2, d1, d2)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d1.t)\n } else {\n /* Interpolate between o2 and d2 */\n var z1 = transSign(o1, o2, d1)\n var z2 = -transSign(o1, d2, d1)\n if (z1 + z2 < 0) {\n z1 = -z1\n z2 = -z2\n }\n v.t = interpolate(z1, o2.t, z2, d2.t)\n }\n }\n\n fun vertEq(u: GLUvertex, v: GLUvertex) = u.s == v.s && u.t == v.t\n\n fun vertLeq(u: GLUvertex, v: GLUvertex) = u.s < v.s || u.s == v.s && u.t <= v.t\n\n /* Versions of VertLeq, EdgeSign, EdgeEval with s and t transposed. */\n fun transLeq(u: GLUvertex, v: GLUvertex) = u.t < v.t || u.t == v.t && u.s <= v.s\n\n fun edgeGoesLeft(e: GLUhalfEdge) = vertLeq(e.sym?.org!!, e.org!!)\n\n fun edgeGoesRight(e: GLUhalfEdge) = vertLeq(e.org!!, e.sym?.org!!)\n\n fun vertL1dist(u: GLUvertex, v: GLUvertex) = abs(u.s - v.s) + abs(u.t - v.t)\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object Mesh {\n /************************ Utility Routines */\n /**\n * MakeEdge creates a new pair of half-edges which form their own loop.\n * No vertex or face structures are allocated, but these must be assigned\n * before the current edge operation is completed.\n */\n fun makeEdge(eNext: GLUhalfEdge): GLUhalfEdge {\n var next = eNext\n val e = GLUhalfEdge(true)\n val eSym = GLUhalfEdge(false)\n\n /* Make sure eNext points to the first edge of the edge pair */\n if (!next.first) {\n next = next.sym!!\n }\n\n /**\n * Insert in circular doubly-linked list before eNext.\n * Note that the prev pointer is stored in Sym->next.\n */\n val ePrev = next.sym?.next!!\n eSym.next = ePrev\n ePrev.sym?.next = e\n e.next = next\n next.sym?.next = eSym\n e.sym = eSym\n e.oNext = e\n e.lNext = eSym\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.sym = e\n eSym.oNext = eSym\n eSym.lNext = e\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return e\n }\n\n /**\n * Splice( a, b ) is best described by the Guibas/Stolfi paper or the\n * CS348a notes (see mesh.h). Basically it modifies the mesh so that\n * a->Onext and b->Onext are exchanged. This can have various effects\n * depending on whether a and b belong to different face or vertex rings.\n * For more explanation see __gl_meshSplice() below.\n */\n fun splice(a: GLUhalfEdge, b: GLUhalfEdge) {\n val aONext = a.oNext!!\n val bONext = b.oNext!!\n aONext.sym?.lNext = b\n bONext.sym?.lNext = a\n a.oNext = bONext\n b.oNext = aONext\n }\n\n /**\n * MakeVertex( newVertex, eOrig, vNext ) attaches a new vertex and makes it the\n * origin of all edges in the vertex loop to which eOrig belongs. \"vNext\" gives\n * a place to insert the new vertex in the global vertex list. We insert\n * the new vertex *before* vNext so that algorithms which walk the vertex\n * list will not see the newly created vertices.\n */\n fun makeVertex(newVertex: GLUvertex, eOrig: GLUhalfEdge, vNext: GLUvertex) {\n /* insert in circular doubly-linked list before vNext */\n val vPrev = vNext.prev!!\n newVertex.prev = vPrev\n vPrev.next = newVertex\n newVertex.next = vNext\n vNext.prev = newVertex\n newVertex.anEdge = eOrig\n newVertex.data = null\n /* leave coords, s, t undefined */\n\n /* fix other edges on this vertex loop */\n var e = eOrig\n do {\n e.org = newVertex\n e = e.oNext!!\n } while (e !== eOrig)\n }\n\n /**\n * MakeFace( newFace, eOrig, fNext ) attaches a new face and makes it the left\n * face of all edges in the face loop to which eOrig belongs. \"fNext\" gives\n * a place to insert the new face in the global face list. We insert\n * the new face *before* fNext so that algorithms which walk the face\n * list will not see the newly created faces.\n */\n fun makeFace(newFace: GLUface, eOrig: GLUhalfEdge, fNext: GLUface) {\n /* insert in circular doubly-linked list before fNext */\n val fPrev = fNext.prev!!\n newFace.prev = fPrev\n fPrev.next = newFace\n newFace.next = fNext\n fNext.prev = newFace\n newFace.anEdge = eOrig\n newFace.data = null\n newFace.trail = null\n newFace.marked = false\n\n /**\n * The new face is marked \"inside\" if the old one was. This is a\n * convenience for the common case where a face has been split in two.\n */\n newFace.inside = fNext.inside\n\n /* fix other edges on this face loop */\n var e = eOrig\n do {\n e.lFace = newFace\n e = e.lNext!!\n } while (e !== eOrig)\n }\n\n /**\n * KillEdge( eDel ) destroys an edge (the half-edges eDel and eDel->Sym),\n * and removes from the global edge list.\n */\n fun killEdge(eDel: GLUhalfEdge) {\n var del = eDel\n\n /* Half-edges are allocated in pairs, see EdgePair above */\n if (!del.first) {\n del = del.sym!!\n }\n\n /* delete from circular doubly-linked list */\n val eNext = del.next!!\n val ePrev = del.sym?.next!!\n eNext.sym?.next = ePrev\n ePrev.sym?.next = eNext\n }\n\n /**\n * KillVertex( vDel ) destroys a vertex and removes it from the global\n * vertex list. It updates the vertex loop to point to a given new vertex.\n */\n fun killVertex(vDel: GLUvertex, newOrg: GLUvertex?) {\n val eStart = vDel.anEdge!!\n\n /* change the origin of all affected edges */\n var e = eStart\n do {\n e.org = newOrg\n e = e.oNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val vPrev = vDel.prev!!\n val vNext = vDel.next!!\n vNext.prev = vPrev\n vPrev.next = vNext\n }\n\n /**\n * KillFace( fDel ) destroys a face and removes it from the global face\n * list. It updates the face loop to point to a given new face.\n */\n fun killFace(fDel: GLUface, newLface: GLUface?) {\n val eStart = fDel.anEdge!!\n\n /* change the left face of all affected edges */\n var e = eStart\n do {\n e.lFace = newLface\n e = e.lNext!!\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fDel.prev!!\n val fNext = fDel.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /****************** Basic Edge Operations */\n /**\n * __gl_meshMakeEdge creates one edge, two vertices, and a loop (face).\n * The loop consists of the two new half-edges.\n */\n fun glMeshMakeEdge(mesh: GLUmesh): GLUhalfEdge {\n val newVertex1 = GLUvertex()\n val newVertex2 = GLUvertex()\n val newFace = GLUface()\n val e = makeEdge(mesh.eHead)\n makeVertex(newVertex1, e, mesh.vHead)\n makeVertex(newVertex2, e.sym!!, mesh.vHead)\n makeFace(newFace, e, mesh.fHead)\n return e\n }\n\n /**\n * __gl_meshSplice( eOrg, eDst ) is the basic operation for changing the\n * mesh connectivity and topology. It changes the mesh so that\n *\teOrg->Onext <- OLD( eDst->Onext )\n *\teDst->Onext <- OLD( eOrg->Onext )\n * where OLD(...) means the value before the meshSplice operation.\n *\n * This can have two effects on the vertex structure:\n * - if eOrg->Org != eDst->Org, the two vertices are merged together\n * - if eOrg->Org == eDst->Org, the origin is split into two vertices\n * In both cases, eDst->Org is changed and eOrg->Org is untouched.\n *\n * Similarly (and independently) for the face structure,\n * - if eOrg->Lface == eDst->Lface, one loop is split into two\n * - if eOrg->Lface != eDst->Lface, two distinct loops are joined into one\n * In both cases, eDst->Lface is changed and eOrg->Lface is unaffected.\n *\n * Some special cases:\n * If eDst == eOrg, the operation has no effect.\n * If eDst == eOrg->Lnext, the new face will have a single edge.\n * If eDst == eOrg->Lprev, the old face will have a single edge.\n * If eDst == eOrg->Onext, the new vertex will have a single edge.\n * If eDst == eOrg->Oprev, the old vertex will have a single edge.\n */\n fun glMeshSplice(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): Boolean {\n var joiningLoops = false\n var joiningVertices = false\n if (eOrg === eDst) return true\n if (eDst.org !== eOrg.org) {\n /* We are merging two disjoint vertices -- destroy eDst->Org */\n joiningVertices = true\n killVertex(eDst.org!!, eOrg.org)\n }\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Change the edge structure */\n splice(eDst, eOrg)\n if (!joiningVertices) {\n val newVertex = GLUvertex()\n\n /**\n * We split one vertex into two -- the new vertex is eDst.Org.\n * Make sure the old vertex points to a valid half-edge.\n */\n makeVertex(newVertex, eDst, eOrg.org!!)\n eOrg.org?.anEdge = eOrg\n }\n if (!joiningLoops) {\n val newFace = GLUface()\n\n /**\n * We split one loop into two -- the new loop is eDst.Lface.\n * Make sure the old face points to a valid half-edge.\n */\n makeFace(newFace, eDst, eOrg.lFace!!)\n eOrg.lFace?.anEdge = eOrg\n }\n return true\n }\n\n /**\n * __gl_meshDelete( eDel ) removes the edge eDel. There are several cases:\n * if (eDel.Lface != eDel.Rface), we join two loops into one; the loop\n * eDel.Lface is deleted. Otherwise, we are splitting one loop into two;\n * the newly created loop will contain eDel.Dst. If the deletion of eDel\n * would create isolated vertices, those are deleted as well.\n *\n * This function could be implemented as two calls to __gl_meshSplice\n * plus a few calls to memFree, but this would allocate and delete\n * unnecessary vertices and faces.\n */\n fun glMeshDelete(eDel: GLUhalfEdge): Boolean {\n val eDelSym = eDel.sym!!\n var joiningLoops = false\n\n /** First step: disconnect the origin vertex eDel.Org. We make all\n * changes to get a consistent mesh in this \"intermediate\" state.\n */\n if (eDel.lFace !== eDel.sym?.lFace) {\n /* We are joining two loops into one -- remove the left face */\n joiningLoops = true\n killFace(eDel.lFace!!, eDel.sym?.lFace)\n }\n if (eDel.oNext === eDel) {\n killVertex(eDel.org!!, null)\n } else {\n /* Make sure that eDel.Org and eDel.Sym.Lface point to valid half-edges */\n eDel.sym?.lFace?.anEdge = eDel.sym?.lNext\n eDel.org?.anEdge = eDel.oNext\n splice(eDel, eDel.sym?.lNext!!)\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We are splitting one loop into two -- create a new loop for eDel. */\n makeFace(newFace, eDel, eDel.lFace!!)\n }\n }\n\n /**\n * Claim: the mesh is now in a consistent state, except that eDel.Org\n * may have been deleted. Now we disconnect eDel.Dst.\n */\n if (eDelSym.oNext === eDelSym) {\n killVertex(eDelSym.org!!, null)\n killFace(eDelSym.lFace!!, null)\n } else {\n /* Make sure that eDel.Dst and eDel.Lface point to valid half-edges */\n eDel.lFace?.anEdge = eDelSym.sym?.lNext\n eDelSym.org?.anEdge = eDelSym.oNext\n splice(eDelSym, eDelSym.sym?.lNext!!)\n }\n\n /* Any isolated vertices or faces have already been freed. */\n killEdge(eDel)\n return true\n }\n\n /******************** Other Edge Operations */\n /**\n * All these routines can be implemented with the basic edge\n * operations above. They are provided for convenience and efficiency.\n */\n /**\n * __gl_meshAddEdgeVertex( eOrg ) creates a new edge eNew such that\n * eNew == eOrg.Lnext, and eNew.Dst is a newly created vertex.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshAddEdgeVertex(eOrg: GLUhalfEdge): GLUhalfEdge {\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n run {\n val newVertex = GLUvertex()\n makeVertex(newVertex, eNewSym, eNew.org!!)\n }\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n return eNew\n }\n\n /**\n * __gl_meshSplitEdge( eOrg ) splits eOrg into two edges eOrg and eNew,\n * such that eNew == eOrg.Lnext. The new vertex is eOrg.Sym.Org == eNew.Org.\n * eOrg and eNew will have the same left face.\n */\n fun glMeshSplitEdge(eOrg: GLUhalfEdge): GLUhalfEdge {\n val tempHalfEdge = glMeshAddEdgeVertex(eOrg)\n val eNew = tempHalfEdge.sym!!\n\n /* Disconnect eOrg from eOrg.Sym.Org and connect it to eNew.Org */\n splice(eOrg.sym!!, eOrg.sym?.sym?.lNext!!)\n splice(eOrg.sym!!, eNew)\n\n /* Set the vertex and face information */\n eOrg.sym?.org = eNew.org\n eNew.sym?.org?.anEdge = eNew.sym /* may have pointed to eOrg.Sym */\n eNew.sym?.lFace = eOrg.sym?.lFace\n eNew.winding = eOrg.winding /* copy old winding information */\n eNew.sym?.winding = eOrg.sym!!.winding\n return eNew\n }\n\n /**\n * __gl_meshConnect( eOrg, eDst ) creates a new edge from eOrg.Sym.Org\n * to eDst.Org, and returns the corresponding half-edge eNew.\n * If eOrg.Lface == eDst.Lface, this splits one loop into two,\n * and the newly created loop is eNew.Lface. Otherwise, two disjoint\n * loops are merged into one, and the loop eDst.Lface is destroyed.\n *\n * If (eOrg == eDst), the new face will have only two edges.\n * If (eOrg.Lnext == eDst), the old face is reduced to a single edge.\n * If (eOrg.Lnext.Lnext == eDst), the old face is reduced to two edges.\n */\n fun glMeshConnect(eOrg: GLUhalfEdge, eDst: GLUhalfEdge): GLUhalfEdge {\n var joiningLoops = false\n val eNew = makeEdge(eOrg)\n val eNewSym = eNew.sym!!\n if (eDst.lFace !== eOrg.lFace) {\n /* We are connecting two disjoint loops -- destroy eDst.Lface */\n joiningLoops = true\n killFace(eDst.lFace!!, eOrg.lFace)\n }\n\n /* Connect the new edge appropriately */\n splice(eNew, eOrg.lNext!!)\n splice(eNewSym, eDst)\n\n /* Set the vertex and face information */\n eNew.org = eOrg.sym?.org\n eNewSym.org = eDst.org\n eNewSym.lFace = eOrg.lFace\n eNew.lFace = eNewSym.lFace\n\n /* Make sure the old face points to a valid half-edge */\n eOrg.lFace?.anEdge = eNewSym\n if (!joiningLoops) {\n val newFace = GLUface()\n /* We split one loop into two -- the new loop is eNew.Lface */\n makeFace(newFace, eNew, eOrg.lFace!!)\n }\n return eNew\n }\n\n /******************** Other Operations */\n /**\n * __gl_meshZapFace( fZap ) destroys a face and removes it from the\n * global face list. All edges of fZap will have a null pointer as their\n * left face. Any edges which also have a null pointer as their right face\n * are deleted entirely (along with any isolated vertices this produces).\n * An entire mesh can be deleted by zapping its faces, one at a time,\n * in any order. Zapped faces cannot be used in further mesh operations!\n */\n fun glMeshZapFace(fZap: GLUface) {\n val eStart = fZap.anEdge!!\n\n /* walk around face, deleting edges whose right face is also null */\n var eNext = eStart.lNext!!\n do {\n val e = eNext\n eNext = e.lNext!!\n e.lFace = null\n if (e.sym?.lFace == null) {\n /* delete the edge -- see __gl_MeshDelete above */\n if (e.oNext === e) {\n killVertex(e.org!!, null)\n } else {\n /* Make sure that e.Org points to a valid half-edge */\n e.org?.anEdge = e.oNext\n splice(e, e.sym?.lNext!!)\n }\n val eSym = e.sym!!\n if (eSym.oNext === eSym) {\n killVertex(eSym.org!!, null)\n } else {\n /* Make sure that eSym.Org points to a valid half-edge */\n eSym.org?.anEdge = eSym.oNext\n splice(eSym, eSym.sym?.lNext!!)\n }\n killEdge(e)\n }\n } while (e !== eStart)\n\n /* delete from circular doubly-linked list */\n val fPrev = fZap.prev!!\n val fNext = fZap.next!!\n fNext.prev = fPrev\n fPrev.next = fNext\n }\n\n /**\n * __gl_meshNewMesh() creates a new mesh with no edges, no vertices,\n * and no loops (what we usually call a \"face\").\n */\n fun glMeshNewMesh(): GLUmesh {\n val mesh = GLUmesh()\n val v = mesh.vHead\n val f = mesh.fHead\n val e = mesh.eHead\n val eSym = mesh.eHeadSym\n v.prev = v\n v.next = v.prev\n v.anEdge = null\n v.data = null\n f.prev = f\n f.next = f.prev\n f.anEdge = null\n f.data = null\n f.trail = null\n f.marked = false\n f.inside = false\n e.next = e\n e.sym = eSym\n e.oNext = null\n e.lNext = null\n e.org = null\n e.lFace = null\n e.winding = 0\n e.activeRegion = null\n eSym.next = eSym\n eSym.sym = e\n eSym.oNext = null\n eSym.lNext = null\n eSym.org = null\n eSym.lFace = null\n eSym.winding = 0\n eSym.activeRegion = null\n return mesh\n }\n\n /**\n * glMeshUnion( mesh1, mesh2 ) forms the union of all structures in\n * both meshes, and returns the new mesh (the old meshes are destroyed).\n */\n fun glMeshUnion(mesh1: GLUmesh, mesh2: GLUmesh): GLUmesh {\n val f1 = mesh1.fHead\n val v1 = mesh1.vHead\n val e1 = mesh1.eHead\n val f2 = mesh2.fHead\n val v2 = mesh2.vHead\n val e2 = mesh2.eHead\n\n /* Add the faces, vertices, and edges of mesh2 to those of mesh1 */\n if (f2.next !== f2) {\n f1.prev?.next = f2.next\n f2.next?.prev = f1.prev\n f2.prev?.next = f1\n f1.prev = f2.prev\n }\n if (v2.next !== v2) {\n v1.prev?.next = v2.next\n v2.next?.prev = v1.prev\n v2.prev?.next = v1\n v1.prev = v2.prev\n }\n if (e2.next !== e2) {\n e1.sym?.next?.sym?.next = e2.next\n e2.next?.sym?.next = e1.sym?.next\n e2.sym?.next?.sym?.next = e1\n e1.sym?.next = e2.sym?.next\n }\n return mesh1\n }\n\n /**\n * glMeshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMeshZap(mesh: GLUmesh) {\n val fHead = mesh.fHead\n while (fHead.next !== fHead) {\n glMeshZapFace(fHead.next!!)\n }\n }\n\n /**\n * __gl_meshDeleteMesh( mesh ) will free all storage for any valid mesh.\n */\n fun glMeshDeleteMesh(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n f = fNext\n }\n var v = mesh.vHead.next!!\n while (v !== mesh.vHead) {\n val vNext = v.next!!\n v = vNext\n }\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n /* One call frees both e and e.Sym (see EdgePair above) */\n val eNext = e.next!!\n e = eNext\n }\n }\n\n /**\n * __gl_meshCheckMesh( mesh ) checks a mesh for self-consistency.\n */\n fun glMeshCheckMesh(mesh: GLUmesh) {\n val fHead = mesh.fHead\n val vHead = mesh.vHead\n val eHead = mesh.eHead\n var fPrev = fHead\n while (true) {\n val f = fPrev.next!!\n if (f === fHead) break\n var e = f.anEdge!!\n do e = e.lNext!! while (e !== f.anEdge)\n fPrev = f\n }\n var vPrev = vHead\n while (true) {\n val v = vPrev.next!!\n if (v === vHead) break\n var e = v.anEdge!!\n do {\n e = e.oNext!!\n } while (e !== v.anEdge)\n vPrev = v\n }\n var ePrev = eHead\n while (true) {\n val e = ePrev.next!!\n if (e === eHead) break\n ePrev = e\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\ninternal object Normal {\n private const val SLANTED_SWEEP = false\n private var S_UNIT_X = 0.0 /* Pre-normalized */\n private var S_UNIT_Y = 0.0\n private const val TRUE_PROJECT = false\n\n init {\n if (SLANTED_SWEEP) {\n /**\n * The \"feature merging\" is not intended to be complete. There are\n * special cases where edges are nearly parallel to the sweep line\n * which are not implemented. The algorithm should still behave\n * robustly (ie. produce a reasonable tesselation) in the presence\n * of such edges, however it may miss features which could have been\n * merged. We could minimize this effect by choosing the sweep line\n * direction to be something unusual (ie. not parallel to one of the\n * coordinate axes).\n */\n S_UNIT_X = 0.5094153956495538 /* Pre-normalized */\n S_UNIT_Y = 0.8605207462201063\n } else {\n S_UNIT_X = 1.0\n S_UNIT_Y = 0.0\n }\n }\n\n private fun dot(u: DoubleArray, v: DoubleArray): Double {\n return u[0] * v[0] + u[1] * v[1] + u[2] * v[2]\n }\n\n fun normalize(v: DoubleArray) {\n var len = v[0] * v[0] + v[1] * v[1] + v[2] * v[2]\n len = sqrt(len)\n v[0] /= len\n v[1] /= len\n v[2] /= len\n }\n\n fun longAxis(v: DoubleArray): Int {\n var i = 0\n if (abs(v[1]) > abs(v[0])) {\n i = 1\n }\n if (abs(v[2]) > abs(v[i])) {\n i = 2\n }\n return i\n }\n\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray) {\n val vHead = tess.mesh?.vHead!!\n val maxVal = DoubleArray(3)\n val minVal = DoubleArray(3)\n val minVert = arrayOfNulls(3)\n val maxVert = arrayOfNulls(3)\n val d1 = DoubleArray(3)\n val d2 = DoubleArray(3)\n val tNorm = DoubleArray(3)\n maxVal[2] = -2 * GLU.GLU_TESS_MAX_COORD\n maxVal[1] = maxVal[2]\n maxVal[0] = maxVal[1]\n minVal[2] = 2 * GLU.GLU_TESS_MAX_COORD\n minVal[1] = minVal[2]\n minVal[0] = minVal[1]\n var v = vHead.next!!\n while (v !== vHead) {\n var i = 0\n while (i < 3) {\n val c = v.coords[i]\n if (c < minVal[i]) {\n minVal[i] = c\n minVert[i] = v\n }\n if (c > maxVal[i]) {\n maxVal[i] = c\n maxVert[i] = v\n }\n ++i\n }\n v = v.next!!\n }\n\n /**\n * Find two vertices separated by at least 1/sqrt(3) of the maximum\n * distance between any two vertices\n */\n var i = 0\n if (maxVal[1] - minVal[1] > maxVal[0] - minVal[0]) {\n i = 1\n }\n if (maxVal[2] - minVal[2] > maxVal[i] - minVal[i]) {\n i = 2\n }\n if (minVal[i] >= maxVal[i]) {\n /* All vertices are the same -- normal doesn't matter */\n norm[0] = 0.0\n norm[1] = 0.0\n norm[2] = 1.0\n return\n }\n\n /**\n * Look for a third vertex which forms the triangle with maximum area\n * (Length of normal == twice the triangle area)\n */\n var maxLen2 = 0.0\n val v1 = minVert[i]!!\n val v2 = maxVert[i]!!\n d1[0] = v1.coords[0] - v2.coords[0]\n d1[1] = v1.coords[1] - v2.coords[1]\n d1[2] = v1.coords[2] - v2.coords[2]\n v = vHead.next!!\n while (v !== vHead) {\n d2[0] = v.coords[0] - v2.coords[0]\n d2[1] = v.coords[1] - v2.coords[1]\n d2[2] = v.coords[2] - v2.coords[2]\n tNorm[0] = d1[1] * d2[2] - d1[2] * d2[1]\n tNorm[1] = d1[2] * d2[0] - d1[0] * d2[2]\n tNorm[2] = d1[0] * d2[1] - d1[1] * d2[0]\n val tLen2 = tNorm[0] * tNorm[0] + tNorm[1] * tNorm[1] + tNorm[2] * tNorm[2]\n if (tLen2 > maxLen2) {\n maxLen2 = tLen2\n norm[0] = tNorm[0]\n norm[1] = tNorm[1]\n norm[2] = tNorm[2]\n }\n v = v.next!!\n }\n if (maxLen2 <= 0) {\n /* All points lie on a single line -- any decent normal will do */\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n norm[longAxis(d1)] = 1.0\n }\n }\n\n fun checkOrientation(tess: GLUtessellatorImpl) {\n val fHead = tess.mesh?.fHead!!\n val vHead = tess.mesh?.vHead!!\n\n /**\n * When we compute the normal automatically, we choose the orientation\n * so that the the sum of the signed areas of all contours is non-negative.\n */\n var area = 0.0\n var f = fHead.next!!\n while (f !== fHead) {\n var e = f.anEdge!!\n if (e.winding <= 0) {\n f = f.next!!\n continue\n }\n do {\n area += (e.org!!.s - e.sym!!.org!!.s) * (e.org!!.t + e.sym!!.org!!.t)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.next!!\n }\n if (area < 0) {\n /* Reverse the orientation by flipping all the t-coordinates */\n var v = vHead.next!!\n while (v !== vHead) {\n v.t = -v.t\n v = v.next!!\n }\n tess.tUnit[0] = -tess.tUnit[0]\n tess.tUnit[1] = -tess.tUnit[1]\n tess.tUnit[2] = -tess.tUnit[2]\n }\n }\n\n /**\n * Determine the polygon normal and project vertices onto the plane\n * of the polygon.\n */\n fun glProjectPolygon(tess: GLUtessellatorImpl) {\n val vHead = tess.mesh?.vHead!!\n val norm = DoubleArray(3)\n var computedNormal = false\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm)\n computedNormal = true\n }\n val sUnit = tess.sUnit\n val tUnit = tess.tUnit\n val i = longAxis(norm)\n if (TRUE_PROJECT) {\n /**\n * Choose the initial sUnit vector to be approximately perpendicular\n * to the normal.\n */\n normalize(norm)\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n\n /* Now make it exactly perpendicular */\n val w = dot(sUnit, norm)\n sUnit[0] -= w * norm[0]\n sUnit[1] -= w * norm[1]\n sUnit[2] -= w * norm[2]\n normalize(sUnit)\n\n /* Choose tUnit so that (sUnit,tUnit,norm) form a right-handed frame */\n tUnit[0] = norm[1] * sUnit[2] - norm[2] * sUnit[1]\n tUnit[1] = norm[2] * sUnit[0] - norm[0] * sUnit[2]\n tUnit[2] = norm[0] * sUnit[1] - norm[1] * sUnit[0]\n normalize(tUnit)\n } else {\n /* Project perpendicular to a coordinate axis -- better numerically */\n sUnit[i] = 0.0\n sUnit[(i + 1) % 3] = S_UNIT_X\n sUnit[(i + 2) % 3] = S_UNIT_Y\n tUnit[i] = 0.0\n tUnit[(i + 1) % 3] = if (norm[i] > 0) -S_UNIT_Y else S_UNIT_Y\n tUnit[(i + 2) % 3] = if (norm[i] > 0) S_UNIT_X else -S_UNIT_X\n }\n\n /* Project the vertices onto the sweep plane */\n var v = vHead.next!!\n while (v !== vHead) {\n v.s = dot(v.coords, sUnit)\n v.t = dot(v.coords, tUnit)\n v = v.next!!\n }\n if (computedNormal) {\n checkOrientation(tess)\n }\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\nabstract class PriorityQ {\n class PQnode {\n var handle = 0\n }\n\n class PQhandleElem {\n var key: Any? = null\n var node = 0\n }\n\n interface Leq {\n fun leq(key1: Any?, key2: Any?): Boolean\n }\n\n abstract fun pqDeletePriorityQ()\n abstract fun pqInit(): Boolean\n abstract fun pqInsert(keyNew: Any?): Int\n abstract fun pqExtractMin(): Any?\n abstract fun pqDelete(hCurr: Int)\n abstract fun pqMinimum(): Any?\n abstract fun pqIsEmpty(): Boolean // #endif\n\n companion object {\n const val INIT_SIZE = 32\n\n fun leq(x: Any, y: Any) = Geom.vertLeq(x as GLUvertex, y as GLUvertex)\n\n fun pqNewPriorityQ(): PriorityQ = PriorityQSort()\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal class PriorityQHeap : PriorityQ() {\n var nodes = Array(INIT_SIZE + 1) { PQnode() }\n var handles = Array(INIT_SIZE + 1) { PQhandleElem() }\n var size = 0\n var max = INIT_SIZE\n var freeList = 0\n var initialized = false\n\n init {\n nodes[1].handle = 1\n handles[1].key = null\n }\n\n /* really __gl_pqHeapDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n handles = emptyArray()\n nodes = emptyArray()\n }\n\n fun floatDown(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n var child = c shl 1\n if (child < size && leq(h[n[child + 1].handle].key!!, h[n[child].handle].key!!)) {\n ++child\n }\n val hChild = n[child].handle\n if (child > size || leq(h[hCurr].key!!, h[hChild].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hChild\n h[hChild].node = c\n c = child\n }\n }\n\n fun floatUp(curr: Int) {\n var c = curr\n val n = nodes\n val h = handles\n val hCurr = n[c].handle\n while (true) {\n val parent = c shr 1\n val hParent = n[parent].handle\n if (parent == 0 || leq(h[hParent].key!!, h[hCurr].key!!)) {\n n[c].handle = hCurr\n h[hCurr].node = c\n break\n }\n n[c].handle = hParent\n h[hParent].node = c\n c = parent\n }\n }\n\n /* really __gl_pqHeapInit */\n override fun pqInit(): Boolean {\n /* This method of building a heap is O(n), rather than O(n lg n). */\n var i = size\n while (i >= 1) {\n floatDown(i)\n --i\n }\n initialized = true\n return true\n }\n\n /* really __gl_pqHeapInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n val free: Int\n val curr = ++size\n if (curr * 2 > max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n nodes = Array(max + 1) { if (it < nodes.size) nodes[it] else PQnode() }\n handles = Array(max + 1) { if (it < handles.size) handles[it] else PQhandleElem() }\n }\n if (freeList == 0) {\n free = curr\n } else {\n free = freeList\n freeList = handles[free].node\n }\n nodes[curr].handle = free\n handles[free].node = curr\n handles[free].key = keyNew\n if (initialized) {\n floatUp(curr)\n }\n return free\n }\n\n /* really __gl_pqHeapExtractMin */\n override fun pqExtractMin(): Any? {\n val n = nodes\n val h = handles\n val hMin = n[1].handle\n val min = h[hMin].key\n if (size > 0) {\n n[1].handle = n[size].handle\n h[n[1].handle].node = 1\n h[hMin].key = null\n h[hMin].node = freeList\n freeList = hMin\n if (--size > 0) {\n floatDown(1)\n }\n }\n return min\n }\n\n /* really __gl_pqHeapDelete */\n override fun pqDelete(hCurr: Int) {\n val n = nodes\n val h = handles\n val curr = h[hCurr].node\n n[curr].handle = n[size].handle\n h[n[curr].handle].node = curr\n if (curr <= --size) {\n if (curr <= 1 || leq(h[n[curr shr 1].handle].key!!, h[n[curr].handle].key!!)) {\n floatDown(curr)\n } else {\n floatUp(curr)\n }\n }\n h[hCurr].key = null\n h[hCurr].node = freeList\n freeList = hCurr\n }\n\n override fun pqMinimum(): Any? {\n return handles[nodes[1].handle].key\n }\n\n override fun pqIsEmpty(): Boolean {\n return size == 0\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport kotlin.math.abs\n\ninternal class PriorityQSort: PriorityQ() {\n val heap = PriorityQHeap()\n var keys: Array? = arrayOfNulls(INIT_SIZE)\n\n // JAVA: 'order' contains indices into the keys array.\n // This simulates the indirect pointers used in the original C code\n // (from Frank Suykens, Luciad.com).\n var order: IntArray? = null\n var size = 0\n var max = INIT_SIZE\n var initialized = false\n\n /* really __gl_pqSortDeletePriorityQ */\n override fun pqDeletePriorityQ() {\n heap.pqDeletePriorityQ()\n order = null\n keys = null\n }\n\n private class Stack {\n var p = 0\n var r = 0\n }\n\n /* really __gl_pqSortInit */\n override fun pqInit(): Boolean {\n val stack = arrayOfNulls(50)\n for (k in stack.indices) {\n stack[k] = Stack()\n }\n var top = 0\n var seed = 2016473283\n\n /**\n * Create an array of indirect pointers to the keys, so that we\n * the handles we have returned are still valid.\n */\n order = IntArray(size + 1)\n /* the previous line is a patch to compensate for the fact that IBM */\n /* machines return a null on a malloc of zero bytes (unlike SGI), */\n /* so we have to put in this defense to guard against a memory */\n /* fault four lines down. from fossum@austin.ibm.com. */\n var p = 0\n var r = size - 1\n var piv = 0\n var i = p\n while (i <= r) {\n // indirect pointers: keep an index into the keys array, not a direct pointer to its contents\n order!![i] = piv\n ++piv\n ++i\n }\n\n /**\n * Sort the indirect pointers in descending order,\n * using randomized Quicksort\n */\n stack[top]?.p = p\n stack[top]?.r = r\n ++top\n while (--top >= 0) {\n p = stack[top]!!.p\n r = stack[top]!!.r\n while (r > p + 10) {\n seed = abs(seed * 1539415821 + 1)\n i = p + seed % (r - p + 1)\n piv = order!![i]\n order!![i] = order!![p]\n order!![p] = piv\n i = p - 1\n var j = r + 1\n do {\n do {\n ++i\n } while (gt(keys!![order!![i]]!!, keys!![piv]!!))\n do {\n --j\n } while (lt(keys!![order!![j]]!!, keys!![piv]!!))\n swap(order!!, i, j)\n } while (i < j)\n swap(order!!, i, j) /* Undo last swap */\n if (i - p < r - j) {\n stack[top]?.p = j + 1\n stack[top]?.r = r\n ++top\n r = i - 1\n } else {\n stack[top]?.p = p\n stack[top]?.r = i - 1\n ++top\n p = j + 1\n }\n }\n /* Insertion sort small lists */\n i = p + 1\n while (i <= r) {\n piv = order!![i]\n var j = i\n while (j > p && lt(keys!![order!![j - 1]]!!, keys!![piv]!!)) {\n order!![j] = order!![j - 1]\n --j\n }\n order!![j] = piv\n ++i\n }\n }\n max = size\n initialized = true\n heap.pqInit() /* always succeeds */\n\n/* #ifndef NDEBUG\n p = order;\n r = p + size - 1;\n for (i = p; i < r; ++i) {\n Assertion.doAssert(LEQ( * * (i + 1), **i ));\n }\n #endif*/\n return true\n }\n\n /* really __gl_pqSortInsert */\n /* returns LONG_MAX iff out of memory */\n override fun pqInsert(keyNew: Any?): Int {\n if (initialized) {\n return heap.pqInsert(keyNew)\n }\n val curr = size\n if (++size >= max) {\n /* If the heap overflows, double its size. */\n max = max shl 1\n // pq->keys = (PQHeapKey *)memRealloc( pq->keys,(size_t)(pq->max * sizeof( pq->keys[0] )));\n val pqKeys = arrayOfNulls(max)\n keys?.copyInto(pqKeys)\n keys = pqKeys\n }\n keys!![curr] = keyNew\n\n /* Negative handles index the sorted array. */\n return -(curr + 1)\n }\n\n /* really __gl_pqSortExtractMin */\n override fun pqExtractMin(): Any? {\n if (size == 0) {\n return heap.pqExtractMin()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heap.pqExtractMin()\n }\n }\n do {\n --size\n } while (size > 0 && keys!![order!![size - 1]] == null)\n return sortMin\n }\n\n /* really __gl_pqSortMinimum */\n override fun pqMinimum(): Any? {\n if (size == 0) {\n return heap.pqMinimum()\n }\n val sortMin = keys!![order!![size - 1]]!!\n if (!heap.pqIsEmpty()) {\n val heapMin = heap.pqMinimum()!!\n if (leq(heapMin, sortMin)) {\n return heapMin\n }\n }\n return sortMin\n }\n\n /* really __gl_pqSortIsEmpty */\n override fun pqIsEmpty(): Boolean {\n return size == 0 && heap.pqIsEmpty()\n }\n\n /* really __gl_pqSortDelete */\n override fun pqDelete(hCurr: Int) {\n var curr = hCurr\n if (curr >= 0) {\n heap.pqDelete(curr)\n return\n }\n curr = -(curr + 1)\n keys!![curr] = null\n while (size > 0 && keys!![order!![size - 1]] == null) {\n --size\n }\n }\n\n companion object {\n private fun lt(x: Any, y: Any): Boolean {\n return !leq(y, x)\n }\n\n private fun gt(x: Any, y: Any): Boolean {\n return !leq(x, y)\n }\n\n private fun swap(array: IntArray, a: Int, b: Int) {\n val tmp = array[a]\n array[a] = array[b]\n array[b] = tmp\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.kgl.GL_LINE_LOOP\nimport earth.worldwind.util.kgl.GL_TRIANGLES\nimport earth.worldwind.util.kgl.GL_TRIANGLE_FAN\nimport earth.worldwind.util.kgl.GL_TRIANGLE_STRIP\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Render {\n private const val USE_OPTIMIZED_CODE_PATH = false\n private val renderFan = RenderFan()\n private val renderStrip = RenderStrip()\n private val renderTriangle = RenderTriangle()\n\n /************************ Strips and Fans decomposition */\n /**\n * __gl_renderMesh( tess, mesh ) takes a mesh and breaks it into triangle\n * fans, strips, and separate triangles. A substantial effort is made\n * to use as few rendering primitives as possible (ie. to make the fans\n * and strips as large as possible).\n *\n * The rendering output is provided as callbacks (see the api).\n */\n fun glRenderMesh(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n /* Make a list of separate triangles so we can render them all at once */\n tess.lonelyTriList = null\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n f.marked = false\n f = f.next!!\n }\n f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /**\n * We examine all faces in an arbitrary order. Whenever we find\n * an unprocessed face F, we output a group of faces including F\n * whose size is maximum.\n */\n if (f.inside && !f.marked) {\n renderMaximumFaceGroup(tess, f)\n }\n f = f.next!!\n }\n if (tess.lonelyTriList != null) {\n renderLonelyTriangles(tess, tess.lonelyTriList)\n tess.lonelyTriList = null\n }\n }\n\n /**\n * We want to find the largest triangle fan or strip of unmarked faces\n * which includes the given face fOrig. There are 3 possible fans\n * passing through fOrig (one centered at each vertex), and 3 possible\n * strips (one for each CCW permutation of the vertices). Our strategy\n * is to try all of these, and take the primitive which uses the most\n * triangles (a greedy approach).\n */\n fun renderMaximumFaceGroup(tess: GLUtessellatorImpl, fOrig: GLUface) {\n val e = fOrig.anEdge!!\n var max = FaceCount()\n max.size = 1\n max.eStart = e\n max.render = renderTriangle\n if (!tess.flagBoundary) {\n var newFace = maximumFan(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumFan(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.lNext!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n newFace = maximumStrip(e.oNext?.sym!!)\n if (newFace.size > max.size) {\n max = newFace\n }\n }\n max.render?.render(tess, max.eStart!!, max.size)\n }\n\n /* Macros which keep track of faces we have marked temporarily, and allow\n * us to backtrack when necessary. With triangle fans, this is not\n * really necessary, since the only awkward case is a loop of triangles\n * around a single origin vertex. However with strips the situation is\n * more complicated, and we need a general tracking method like the\n * one here.\n */\n private fun marked(f: GLUface): Boolean {\n return !f.inside || f.marked\n }\n\n private fun addToTrail(f: GLUface, t: GLUface?): GLUface {\n f.trail = t\n f.marked = true\n return f\n }\n\n private fun freeTrail(t: GLUface?) {\n var t = t\n while (t != null) {\n t.marked = false\n t = t.trail\n }\n }\n\n /**\n * eOrig.Lface is the face we want to render. We want to find the size\n * of a maximal fan around eOrig.Org. To do this we just walk around\n * the origin vertex as far as possible in both directions.\n */\n fun maximumFan(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderFan)\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++newFace.size\n e = e.oNext!!\n }\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++newFace.size\n e = e.sym?.lNext!!\n }\n newFace.eStart = e\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n private fun isEven(n: Long): Boolean {\n return n and 0x1L == 0L\n }\n\n /**\n * Here we are looking for a maximal strip that contains the vertices\n * eOrig.Org, eOrig.Dst, eOrig.Lnext.Dst (in that order or the\n * reverse, such that all triangles are oriented CCW).\n *\n * Again we walk forward and backward as far as possible. However for\n * strips there is a twist: to get CCW orientations, there must be\n * an *even* number of triangles in the strip on one side of eOrig.\n * We walk the strip starting on a side with an even number of triangles;\n * if both side have an odd number, we are forced to shorten one side.\n */\n fun maximumStrip(eOrig: GLUhalfEdge): FaceCount {\n val newFace = FaceCount(0, null, renderStrip)\n var headSize = 0L\n var tailSize = 0L\n var trail: GLUface? = null\n var e = eOrig\n while (!marked(e.lFace!!)) {\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.lNext?.sym!!\n if (marked(e.lFace!!)) break\n trail = addToTrail(e.lFace!!, trail)\n ++tailSize\n e = e.oNext!!\n }\n val eTail = e\n e = eOrig\n while (!marked(e.sym?.lFace!!)) {\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.lNext!!\n if (marked(e.sym?.lFace!!)) break\n trail = addToTrail(e.sym?.lFace!!, trail)\n ++headSize\n e = e.sym?.oNext?.sym!!\n }\n val eHead = e\n newFace.size = tailSize + headSize\n when {\n isEven(tailSize) -> {\n newFace.eStart = eTail.sym\n }\n isEven(headSize) -> {\n newFace.eStart = eHead\n }\n else -> {\n /**\n * Both sides have odd length, we must shorten one of them. In fact,\n * we must start from eHead to guarantee inclusion of eOrig.Lface.\n */\n --newFace.size\n newFace.eStart = eHead.oNext\n }\n }\n /*LINTED*/\n freeTrail(trail)\n return newFace\n }\n\n /**\n * Now we render all the separate triangles which could not be\n * grouped into a triangle fan or strip.\n */\n fun renderLonelyTriangles(tess: GLUtessellatorImpl, f: GLUface?) {\n var f = f\n var edgeState = -1 /* force edge state output for first vertex */\n tess.callBeginOrBeginData(GL_TRIANGLES)\n while (f != null) {\n /* Loop once for each edge (there will always be 3 edges) */\n var e = f.anEdge!!\n do {\n if (tess.flagBoundary) {\n /**\n * Set the \"edge state\" to true just before we output the\n * first vertex of each edge on the polygon boundary.\n */\n val newState = if (!e.sym!!.lFace!!.inside) 1 else 0\n if (edgeState != newState) {\n edgeState = newState\n tess.callEdgeFlagOrEdgeFlagData(edgeState != 0)\n }\n }\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n f = f.trail\n }\n tess.callEndOrEndData()\n }\n\n /************************ Boundary contour decomposition */\n /**\n * __gl_renderBoundary( tess, mesh ) takes a mesh, and outputs one\n * contour for each face marked \"inside\". The rendering output is\n * provided as callbacks (see the api).\n */\n fun glRenderBoundary(tess: GLUtessellatorImpl, mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n if (f.inside) {\n tess.callBeginOrBeginData(GL_LINE_LOOP)\n var e = f.anEdge!!\n do {\n tess.callVertexOrVertexData(e.org?.data!!)\n e = e.lNext!!\n } while (e !== f.anEdge)\n tess.callEndOrEndData()\n }\n f = f.next!!\n }\n }\n\n /************************ Quick-and-dirty decomposition */\n private const val SIGN_INCONSISTENT = 2\n /**\n * If check==false, we compute the polygon normal and place it in norm[].\n * If check==true, we check that each triangle in the fan from v0 has a\n * consistent orientation with respect to norm[]. If triangles are\n * consistently oriented CCW, return 1; if CW, return -1; if all triangles\n * are degenerate return 0; otherwise (no consistent orientation) return\n * SIGN_INCONSISTENT.\n */\n fun computeNormal(tess: GLUtessellatorImpl, norm: DoubleArray, check: Boolean): Int {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val n = DoubleArray(3)\n var sign = 0\n\n /**\n * Find the polygon normal. It is important to get a reasonable\n * normal even when the polygon is self-intersecting (eg. a bowtie).\n * Otherwise, the computed normal could be very tiny, but perpendicular\n * to the true plane of the polygon due to numerical noise. Then all\n * the triangles would appear to be degenerate and we would incorrectly\n * decompose the polygon as a fan (or simply not render it at all).\n *\n * We use a sum-of-triangles normal algorithm rather than the more\n * efficient sum-of-trapezoids method (used in CheckOrientation()\n * in normal.c). This lets us explicitly reverse the signed area\n * of some triangles to get a reasonable normal in the self-intersecting\n * case.\n */\n if (!check) {\n norm[2] = 0.0\n norm[1] = norm[2]\n norm[0] = norm[1]\n }\n var vc = 1\n var xc = v[vc].coords[0] - v[0].coords[0]\n var yc = v[vc].coords[1] - v[0].coords[1]\n var zc = v[vc].coords[2] - v[0].coords[2]\n while (++vc < vn) {\n val xp = xc\n val yp = yc\n val zp = zc\n xc = v[vc].coords[0] - v[0].coords[0]\n yc = v[vc].coords[1] - v[0].coords[1]\n zc = v[vc].coords[2] - v[0].coords[2]\n\n /* Compute (vp - v0) cross (vc - v0) */\n n[0] = yp * zc - zp * yc\n n[1] = zp * xc - xp * zc\n n[2] = xp * yc - yp * xc\n val dot = n[0] * norm[0] + n[1] * norm[1] + n[2] * norm[2]\n if (!check) {\n /**\n * Reverse the contribution of back-facing triangles to get\n * a reasonable normal for self-intersecting polygons (see above)\n */\n if (dot >= 0) {\n norm[0] += n[0]\n norm[1] += n[1]\n norm[2] += n[2]\n } else {\n norm[0] -= n[0]\n norm[1] -= n[1]\n norm[2] -= n[2]\n }\n } else if (dot != 0.0) {\n /* Check the new orientation for consistency with previous triangles */\n sign = if (dot > 0) {\n if (sign < 0) return SIGN_INCONSISTENT\n 1\n } else {\n if (sign > 0) return SIGN_INCONSISTENT\n -1\n }\n }\n }\n return sign\n }\n\n /**\n * __gl_renderCache( tess ) takes a single contour and tries to render it\n * as a triangle fan. This handles convex polygons, as well as some\n * non-convex polygons if we get lucky.\n *\n * Returns true if the polygon was successfully rendered. The rendering\n * output is provided as callbacks (see the api).\n */\n fun glRenderCache(tess: GLUtessellatorImpl): Boolean {\n val v = tess.cache\n // CachedVertex vn = v0 + tess.cacheCount;\n val vn = tess.cacheCount\n // CachedVertex vc;\n val norm = DoubleArray(3)\n if (tess.cacheCount < 3) {\n /* Degenerate contour -- no output */\n return true\n }\n norm[0] = tess.normal[0]\n norm[1] = tess.normal[1]\n norm[2] = tess.normal[2]\n if (norm[0] == 0.0 && norm[1] == 0.0 && norm[2] == 0.0) {\n computeNormal(tess, norm, false)\n }\n val sign = computeNormal(tess, norm, true)\n if (sign == SIGN_INCONSISTENT) {\n /* Fan triangles did not have a consistent orientation */\n return false\n }\n if (sign == 0) {\n /* All triangles were degenerate */\n return true\n }\n return if (!USE_OPTIMIZED_CODE_PATH) {\n false\n } else {\n /* Make sure we do the right thing for each winding rule */\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD, GLU.GLU_TESS_WINDING_NONZERO -> {}\n GLU.GLU_TESS_WINDING_POSITIVE -> if (sign < 0) return true\n GLU.GLU_TESS_WINDING_NEGATIVE -> if (sign > 0) return true\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return true\n }\n tess.callBeginOrBeginData(if (tess.boundaryOnly) GL_LINE_LOOP else if (tess.cacheCount > 3) GL_TRIANGLE_FAN else GL_TRIANGLES)\n tess.callVertexOrVertexData(v[0].data!!)\n if (sign > 0) {\n var vc = 1\n while (vc < vn) {\n tess.callVertexOrVertexData(v[vc].data!!)\n ++vc\n }\n } else {\n var vc = vn - 1\n while (vc > 0) {\n tess.callVertexOrVertexData(v[vc].data!!)\n --vc\n }\n }\n tess.callEndOrEndData()\n true\n }\n }\n\n /**\n * This structure remembers the information we need about a primitive\n * to be able to render it later, once we have determined which\n * primitive is able to use the most triangles.\n */\n internal class FaceCount {\n constructor()\n constructor(size: Long, eStart: GLUhalfEdge?, render: RenderCallBack?) {\n this.size = size\n this.eStart = eStart\n this.render = render\n }\n\n /**\n * number of triangles used\n */\n var size = 0L\n /**\n * edge where this primitive starts\n */\n var eStart: GLUhalfEdge? = null\n var render: RenderCallBack? = null\n }\n\n internal interface RenderCallBack {\n fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long)\n }\n\n private class RenderTriangle : RenderCallBack {\n /**\n * Just add the triangle to a triangle list, so we can render all\n * the separate triangles at once.\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n tess.lonelyTriList = addToTrail(e.lFace!!, tess.lonelyTriList)\n }\n }\n\n private class RenderFan : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a fan starting from\n * edge \"e\". The fan *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_FAN)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n\n private class RenderStrip : RenderCallBack {\n /**\n * Render as many CCW triangles as possible in a strip starting from\n * edge \"e\". The strip *should* contain exactly \"size\" triangles\n * (otherwise we've goofed up somewhere).\n */\n override fun render(tess: GLUtessellatorImpl, e: GLUhalfEdge, size: Long) {\n var e = e\n var size = size\n tess.callBeginOrBeginData(GL_TRIANGLE_STRIP)\n tess.callVertexOrVertexData(e.org?.data!!)\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n while (!marked(e.lFace!!)) {\n e.lFace?.marked = true\n --size\n e = e.lNext?.sym!!\n tess.callVertexOrVertexData(e.org?.data!!)\n if (marked(e.lFace!!)) break\n e.lFace?.marked = true\n --size\n e = e.oNext!!\n tess.callVertexOrVertexData(e.sym?.org?.data!!)\n }\n tess.callEndOrEndData()\n }\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\nimport earth.worldwind.util.glu.GLU\nimport earth.worldwind.util.glu.tessellator.Dict.DictLeq\n\n@Suppress(\"NAME_SHADOWING\")\ninternal object Sweep {\n // #ifdef FOR_TRITE_TEST_PROGRAM\n // extern void DebugEvent( GLUtessellator *tess );\n // #else\n @Suppress(\"UNUSED_PARAMETER\")\n private fun debugEvent(tess: GLUtessellatorImpl) {}\n\n // #endif\n /*\n * Invariants for the Edge Dictionary.\n * - each pair of adjacent edges e2=Succ(e1) satisfies EdgeLeq(e1,e2)\n * at any valid location of the sweep event\n * - if EdgeLeq(e2,e1) as well (at any valid sweep event), then e1 and e2\n * share a common endpoint\n * - for each e, e.Dst has been processed, but not e.Org\n * - each edge e satisfies VertLeq(e.Dst,event) && VertLeq(event,e.Org)\n * where \"event\" is the current sweep line event.\n * - no edge e has zero length\n *\n * Invariants for the Mesh (the processed portion).\n * - the portion of the mesh left of the sweep line is a planar graph,\n * ie. there is *some* way to embed it in the plane\n * - no processed edge has zero length\n * - no two processed vertices have identical coordinates\n * - each \"inside\" region is monotone, ie. can be broken into two chains\n * of monotonically increasing vertices according to VertLeq(v1,v2)\n * - a non-invariant: these chains may intersect (very slightly)\n *\n * Invariants for the Sweep.\n * - if none of the edges incident to the event vertex have an activeRegion\n * (ie. none of these edges are in the edge dictionary), then the vertex\n * has only right-going edges.\n * - if an edge is marked \"fixUpperEdge\" (it is a temporary edge introduced\n * by ConnectRightVertex), then it is the only right-going edge from\n * its associated vertex. (This says that these edges exist only\n * when it is necessary.)\n */\n /**\n * When we merge two edges into one, we need to compute the combined\n * winding of the new edge.\n */\n private fun addWinding(eDst: GLUhalfEdge, eSrc: GLUhalfEdge) {\n eDst.winding += eSrc.winding\n eDst.sym!!.winding += eSrc.sym!!.winding\n }\n\n private fun regionBelow(r: ActiveRegion): ActiveRegion {\n return Dict.dictKey(Dict.dictPred(r.nodeUp!!)) as ActiveRegion\n }\n\n private fun regionAbove(r: ActiveRegion): ActiveRegion? {\n return Dict.dictKey(Dict.dictSucc(r.nodeUp!!)) as ActiveRegion?\n }\n\n /**\n * Both edges must be directed from right to left (this is the canonical\n * direction for the upper edge of each region).\n *\n * The strategy is to evaluate a \"t\" value for each edge at the\n * current sweep line position, given by tess.event. The calculations\n * are designed to be very stable, but of course they are not perfect.\n *\n * Special case: if both edge destinations are at the sweep event,\n * we sort the edges by slope (they would otherwise compare equally).\n */\n fun edgeLeq(tess: GLUtessellatorImpl, reg1: ActiveRegion, reg2: ActiveRegion): Boolean {\n val event = tess.event!!\n val e1 = reg1.eUp\n val e2 = reg2.eUp\n if (e1.sym?.org === event) {\n return if (e2.sym?.org === event) {\n /**\n * Two edges right of the sweep line which meet at the sweep event.\n * Sort them by slope.\n */\n if (Geom.vertLeq(e1.org!!, e2.org!!)) {\n Geom.edgeSign(e2.sym?.org!!, e1.org!!, e2.org!!) <= 0\n } else Geom.edgeSign(e1.sym?.org!!, e2.org!!, e1.org!!) >= 0\n } else Geom.edgeSign(e2.sym?.org!!, event, e2.org!!) <= 0\n }\n if (e2.sym?.org === event) {\n return Geom.edgeSign(e1.sym?.org!!, event, e1.org!!) >= 0\n }\n\n /* General case - compute signed distance *from* e1, e2 to event */\n val t1 = Geom.edgeEval(e1.sym?.org!!, event, e1.org!!)\n val t2 = Geom.edgeEval(e2.sym?.org!!, event, e2.org!!)\n return t1 >= t2\n }\n\n fun deleteRegion(reg: ActiveRegion) {\n reg.eUp.activeRegion = null\n Dict.dictDelete(reg.nodeUp!!) /* __gl_dictListDelete */\n }\n\n /**\n * Replace an upper edge which needs fixing (see ConnectRightVertex).\n */\n fun fixUpperEdge(reg: ActiveRegion, newEdge: GLUhalfEdge): Boolean {\n if (!Mesh.glMeshDelete(reg.eUp)) return false\n reg.fixUpperEdge = false\n reg.eUp = newEdge\n newEdge.activeRegion = reg\n return true\n }\n\n fun topLeftRegion(reg: ActiveRegion): ActiveRegion? {\n var reg = reg\n val org = reg.eUp.org\n\n /* Find the region above the uppermost edge with the same origin */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.org === org)\n\n /**\n * If the edge above was a temporary edge introduced by ConnectRightVertex,\n * now is the time to fix it.\n */\n if (reg.fixUpperEdge) {\n val e = Mesh.glMeshConnect(regionBelow(reg).eUp.sym!!, reg.eUp.lNext!!)\n if (!fixUpperEdge(reg, e)) return null\n reg = regionAbove(reg)!!\n }\n return reg\n }\n\n fun topRightRegion(reg: ActiveRegion): ActiveRegion {\n var reg = reg\n val dst = reg.eUp.sym?.org\n\n /* Find the region above the uppermost edge with the same destination */\n do {\n reg = regionAbove(reg)!!\n } while (reg.eUp.sym?.org === dst)\n return reg\n }\n\n /**\n * Add a new active region to the sweep line, *somewhere* below \"regAbove\"\n * (according to where the new edge belongs in the sweep-line dictionary).\n * The upper edge of the new region will be \"eNewUp\".\n * Winding number and \"inside\" flag are not updated.\n */\n fun addRegionBelow(\n tess: GLUtessellatorImpl,\n regAbove: ActiveRegion,\n eNewUp: GLUhalfEdge\n ): ActiveRegion {\n val regNew = ActiveRegion(eNewUp)\n /* __gl_dictListInsertBefore */\n regNew.nodeUp = Dict.dictInsertBefore(tess.dict!!, regAbove.nodeUp!!, regNew)\n regNew.fixUpperEdge = false\n regNew.sentinel = false\n regNew.dirty = false\n eNewUp.activeRegion = regNew\n return regNew\n }\n\n fun isWindingInside(tess: GLUtessellatorImpl, n: Int): Boolean {\n when (tess.windingRule) {\n GLU.GLU_TESS_WINDING_ODD -> return n and 1 != 0\n GLU.GLU_TESS_WINDING_NONZERO -> return n != 0\n GLU.GLU_TESS_WINDING_POSITIVE -> return n > 0\n GLU.GLU_TESS_WINDING_NEGATIVE -> return n < 0\n GLU.GLU_TESS_WINDING_ABS_GEQ_TWO -> return n >= 2 || n <= -2\n }\n throw RuntimeException()\n /*NOTREACHED*/\n }\n\n fun computeWinding(tess: GLUtessellatorImpl, reg: ActiveRegion) {\n reg.windingNumber = regionAbove(reg)!!.windingNumber + reg.eUp.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n }\n\n /**\n * Delete a region from the sweep line. This happens when the upper\n * and lower chains of a region meet (at a vertex on the sweep line).\n * The \"inside\" flag is copied to the appropriate mesh face (we could\n * not do this before -- since the structure of the mesh is always\n * changing, this face may not have even existed until now).\n */\n fun finishRegion(reg: ActiveRegion) {\n val e = reg.eUp\n val f = e.lFace!!\n f.inside = reg.inside\n f.anEdge = e /* optimization for __gl_meshTessellateMonoRegion() */\n deleteRegion(reg)\n }\n\n /**\n * We are given a vertex with one or more left-going edges. All affected\n * edges should be in the edge dictionary. Starting at regFirst.eUp,\n * we walk down deleting all regions where both edges have the same\n * origin vOrg. At the same time we copy the \"inside\" flag from the\n * active region to the face, since at this point each face will belong\n * to at most one region (this was not necessarily true until this point\n * in the sweep). The walk stops at the region above regLast; if regLast\n * is null we walk as far as possible. At the same time we relink the\n * mesh if necessary, so that the ordering of edges around vOrg is the\n * same as in the dictionary.\n */\n fun finishLeftRegions(regFirst: ActiveRegion, regLast: ActiveRegion?): GLUhalfEdge {\n var regPrev = regFirst\n var ePrev = regFirst.eUp\n while (regPrev !== regLast) {\n regPrev.fixUpperEdge = false /* placement was OK */\n val reg = regionBelow(regPrev)\n var e = reg.eUp\n if (e.org !== ePrev.org) {\n if (!reg.fixUpperEdge) {\n /**\n * Remove the last left-going edge. Even though there are no further\n * edges in the dictionary with this origin, there may be further\n * such edges in the mesh (if we are adding left edges to a vertex\n * that has already been processed). Thus it is important to call\n * FinishRegion rather than just DeleteRegion.\n */\n finishRegion(regPrev)\n break\n }\n /**\n * If the edge below was a temporary edge introduced by\n * ConnectRightVertex, now is the time to fix it.\n */\n e = Mesh.glMeshConnect(ePrev.oNext?.sym!!, e.sym!!)\n if (!fixUpperEdge(reg, e)) throw RuntimeException()\n }\n\n /* Relink edges so that ePrev.Onext == e */\n if (ePrev.oNext !== e) {\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev, e)) throw RuntimeException()\n }\n finishRegion(regPrev) /* may change reg.eUp */\n ePrev = reg.eUp\n regPrev = reg\n }\n return ePrev\n }\n\n /**\n * Purpose: insert right-going edges into the edge dictionary, and update\n * winding numbers and mesh connectivity appropriately. All right-going\n * edges share a common origin vOrg. Edges are inserted CCW starting at\n * eFirst; the last edge inserted is eLast.Sym.Lnext. If vOrg has any\n * left-going edges already processed, then eTopLeft must be the edge\n * such that an imaginary upward vertical segment from vOrg would be\n * contained between eTopLeft.Sym.Lnext and eTopLeft; otherwise eTopLeft\n * should be null.\n */\n fun addRightEdges(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eFirst: GLUhalfEdge, eLast: GLUhalfEdge?, eTopLeft: GLUhalfEdge?,\n cleanUp: Boolean\n ) {\n var eTopLeft = eTopLeft\n var firstTime = true\n\n /* Insert the new right-going edges in the dictionary */\n var e = eFirst\n do {\n addRegionBelow(tess, regUp, e.sym!!)\n e = e.oNext!!\n } while (e !== eLast)\n\n /**\n * Walk *all* right-going edges from e.Org, in the dictionary order,\n * updating the winding numbers of each region, and re-linking the mesh\n * edges to match the dictionary ordering (if necessary).\n */\n if (eTopLeft == null) {\n eTopLeft = regionBelow(regUp).eUp.sym?.oNext\n }\n var regPrev = regUp\n var ePrev = eTopLeft!!\n var reg: ActiveRegion\n while (true) {\n reg = regionBelow(regPrev)\n e = reg.eUp.sym!!\n if (e.org !== ePrev.org) break\n if (e.oNext !== ePrev) {\n /* Unlink e from its current position, and relink below ePrev */\n if (!Mesh.glMeshSplice(e.sym?.lNext!!, e)) throw RuntimeException()\n if (!Mesh.glMeshSplice(ePrev.sym?.lNext!!, e)) throw RuntimeException()\n }\n /* Compute the winding number and \"inside\" flag for the new regions */\n reg.windingNumber = regPrev.windingNumber - e.winding\n reg.inside = isWindingInside(tess, reg.windingNumber)\n\n /**\n * Check for two outgoing edges with same slope -- process these\n * before any intersection tests (see example in __gl_computeInterior).\n */\n regPrev.dirty = true\n if (!firstTime && checkForRightSplice(tess, regPrev)) {\n addWinding(e, ePrev)\n deleteRegion(regPrev)\n if (!Mesh.glMeshDelete(ePrev)) throw RuntimeException()\n }\n firstTime = false\n regPrev = reg\n ePrev = e\n }\n regPrev.dirty = true\n if (cleanUp) {\n /* Check for intersections between newly adjacent edges. */\n walkDirtyRegions(tess, regPrev)\n }\n }\n\n fun callCombine(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n data: Array, weights: FloatArray, needed: Boolean\n ) {\n val coords = DoubleArray(3)\n\n /* Copy coord data in case the callback changes it. */\n coords[0] = isect.coords[0]\n coords[1] = isect.coords[1]\n coords[2] = isect.coords[2]\n val outData = arrayOfNulls(1)\n tess.callCombineOrCombineData(coords, data, weights, outData)\n isect.data = outData[0]\n if (isect.data == null) {\n if (!needed) {\n isect.data = data[0]\n } else if (!tess.fatalError) {\n /**\n * The only way fatal error is when two edges are found to intersect,\n * but the user has not provided the callback necessary to handle\n * generated intersection points.\n */\n tess.callErrorOrErrorData(GLU.GLU_TESS_NEED_COMBINE_CALLBACK)\n tess.fatalError = true\n }\n }\n }\n\n /**\n * Two vertices with idential coordinates are combined into one.\n * e1.Org is kept, while e2.Org is discarded.\n */\n fun spliceMergeVertices(tess: GLUtessellatorImpl, e1: GLUhalfEdge, e2: GLUhalfEdge) {\n val data = arrayOfNulls(4)\n val weights = floatArrayOf(0.5f, 0.5f, 0.0f, 0.0f)\n data[0] = e1.org?.data\n data[1] = e2.org?.data\n callCombine(tess, e1.org!!, data, weights, false)\n if (!Mesh.glMeshSplice(e1, e2)) throw RuntimeException()\n }\n\n /**\n * Find some weights which describe how the intersection vertex is\n * a linear combination of \"org\" and \"dest\". Each of the two edges\n * which generated \"isect\" is allocated 50% of the weight; each edge\n * splits the weight between its org and dst according to the\n * relative distance to \"isect\".\n */\n fun vertexWeights(\n isect: GLUvertex, org: GLUvertex, dst: GLUvertex,\n weights: FloatArray\n ) {\n val t1 = Geom.vertL1dist(org, isect)\n val t2 = Geom.vertL1dist(dst, isect)\n weights[0] = (0.5 * t2 / (t1 + t2)).toFloat()\n weights[1] = (0.5 * t1 / (t1 + t2)).toFloat()\n isect.coords[0] += weights[0] * org.coords[0] + weights[1] * dst.coords[0]\n isect.coords[1] += weights[0] * org.coords[1] + weights[1] * dst.coords[1]\n isect.coords[2] += weights[0] * org.coords[2] + weights[1] * dst.coords[2]\n }\n\n /**\n * We've computed a new intersection point, now we need a \"data\" pointer\n * from the user so that we can refer to this new vertex in the\n * rendering callbacks.\n */\n fun getIntersectData(\n tess: GLUtessellatorImpl, isect: GLUvertex,\n orgUp: GLUvertex, dstUp: GLUvertex,\n orgLo: GLUvertex, dstLo: GLUvertex\n ) {\n val data = arrayOfNulls(4)\n val weights = FloatArray(4)\n val weights1 = FloatArray(2)\n val weights2 = FloatArray(2)\n data[0] = orgUp.data\n data[1] = dstUp.data\n data[2] = orgLo.data\n data[3] = dstLo.data\n isect.coords[2] = 0.0\n isect.coords[1] = isect.coords[2]\n isect.coords[0] = isect.coords[1]\n vertexWeights(isect, orgUp, dstUp, weights1)\n vertexWeights(isect, orgLo, dstLo, weights2)\n weights1.copyInto(weights, 0)\n weights2.copyInto(weights, 2)\n callCombine(tess, isect, data, weights, true)\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Org is above eLo, or eLo.Org is below eUp (depending on which\n * origin is leftmost).\n *\n * The main purpose is to splice right-going edges with the same\n * dest vertex and nearly identical slopes (ie. we can't distinguish\n * the slopes numerically). However the splicing can also help us\n * to recover from numerical errors. For example, suppose at one\n * point we checked eUp and eLo, and decided that eUp.Org is barely\n * above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * our test so that now eUp.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants.\n *\n * One possibility is to check these edges for intersection again\n * (ie. CheckForIntersect). This is what we do if possible. However\n * CheckForIntersect requires that tess.event lies between eUp and eLo,\n * so that it has something to fall back on when the intersection\n * calculation gives us an unusable answer. So, for those cases where\n * we can't check for intersection, this routine fixes the problem\n * by just splicing the offending vertex into the other edge.\n * This is a guaranteed solution, no matter how degenerate things get.\n * Basically this is a combinatorial solution to a numerical problem.\n */\n fun checkForRightSplice(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.org!!, eLo.org!!)) {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Org appears to be below eLo */\n if (!Geom.vertEq(eUp.org!!, eLo.org!!)) {\n /* Splice eUp.Org into eLo */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n } else if (eUp.org !== eLo.org) {\n /* merge the two vertices, discarding eUp.Org */\n tess.pq?.pqDelete(eUp.org?.pqHandle!!) /* __gl_pqSortDelete */\n spliceMergeVertices(tess, eLo.sym?.lNext!!, eUp)\n }\n } else {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Org appears to be above eUp, so splice eLo.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n }\n return true\n }\n\n /**\n * Check the upper and lower edge of \"regUp\", to make sure that the\n * eUp.Sym.Org is above eLo, or eLo.Sym.Org is below eUp (depending on which\n * destination is rightmost).\n *\n * Theoretically, this should always be true. However, splitting an edge\n * into two pieces can change the results of previous tests. For example,\n * suppose at one point we checked eUp and eLo, and decided that eUp.Sym.Org\n * is barely above eLo. Then later, we split eLo into two edges (eg. from\n * a splice operation like this one). This can change the result of\n * the test so that now eUp.Sym.Org is incident to eLo, or barely below it.\n * We must correct this condition to maintain the dictionary invariants\n * (otherwise new edges might get inserted in the wrong place in the\n * dictionary, and bad stuff will happen).\n *\n * We fix the problem by just splicing the offending vertex into the\n * other edge.\n */\n fun checkForLeftSplice(regUp: ActiveRegion): Boolean {\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n if (Geom.vertLeq(eUp.sym?.org!!, eLo.sym?.org!!)) {\n if (Geom.edgeSign(eUp.sym?.org!!, eLo.sym?.org!!, eUp.org!!) < 0) return false\n\n /* eLo.Sym.Org is above eUp, so splice eLo.Sym.Org into eUp */\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n val e = Mesh.glMeshSplitEdge(eUp)\n if (!Mesh.glMeshSplice(eLo.sym!!, e)) throw RuntimeException()\n e.lFace?.inside = regUp.inside\n } else {\n if (Geom.edgeSign(eLo.sym?.org!!, eUp.sym?.org!!, eLo.org!!) > 0) return false\n\n /* eUp.Sym.Org is below eLo, so splice eUp.Sym.Org into eLo */\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n val e = Mesh.glMeshSplitEdge(eLo)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym!!)) throw RuntimeException()\n e.sym?.lFace?.inside = regUp.inside\n }\n return true\n }\n\n /**\n * Check the upper and lower edges of the given region to see if\n * they intersect. If so, create the intersection and add it\n * to the data structures.\n *\n * Returns true if adding the new intersection resulted in a recursive\n * call to AddRightEdges(); in this case all \"dirty\" regions have been\n * checked for intersections, and possibly regUp has been deleted.\n */\n fun checkForIntersect(tess: GLUtessellatorImpl, regUp: ActiveRegion): Boolean {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n val orgUp = eUp.org!!\n val orgLo = eLo.org!!\n val dstUp = eUp.sym?.org!!\n val dstLo = eLo.sym?.org!!\n val isect = GLUvertex()\n if (orgUp === orgLo) return false /* right endpoints are the same */\n val tMinUp = orgUp.t.coerceAtMost(dstUp.t)\n val tMaxLo = orgLo.t.coerceAtLeast(dstLo.t)\n if (tMinUp > tMaxLo) return false /* t ranges do not overlap */\n if (Geom.vertLeq(orgUp, orgLo)) {\n if (Geom.edgeSign(dstLo, orgUp, orgLo) > 0) return false\n } else {\n if (Geom.edgeSign(dstUp, orgLo, orgUp) < 0) return false\n }\n\n /* At this point the edges intersect, at least marginally */\n debugEvent(tess)\n Geom.edgeIntersect(dstUp, orgUp, dstLo, orgLo, isect)\n if (Geom.vertLeq(isect, tess.event!!)) {\n /**\n * The intersection point lies slightly to the left of the sweep line,\n * so move it until it''s slightly to the right of the sweep line.\n * (If we had perfect numerical precision, this would never happen\n * in the first place). The easiest and safest thing to do is\n * replace the intersection by tess.event.\n */\n isect.s = tess.event!!.s\n isect.t = tess.event!!.t\n }\n /**\n * Similarly, if the computed intersection lies to the right of the\n * rightmost origin (which should rarely happen), it can cause\n * unbelievable inefficiency on sufficiently degenerate inputs.\n * (If you have the test program, try running test54.d with the\n * \"X zoom\" option turned on).\n */\n val orgMin = if (Geom.vertLeq(orgUp, orgLo)) orgUp else orgLo\n if (Geom.vertLeq(orgMin, isect)) {\n isect.s = orgMin.s\n isect.t = orgMin.t\n }\n if (Geom.vertEq(isect, orgUp) || Geom.vertEq(isect, orgLo)) {\n /* Easy case -- intersection at one of the right endpoints */\n checkForRightSplice(tess, regUp)\n return false\n }\n if ((!Geom.vertEq(dstUp, tess.event!!)\n && Geom.edgeSign(dstUp, tess.event!!, isect) >= 0)\n || (!Geom.vertEq(dstLo, tess.event!!)\n && Geom.edgeSign(dstLo, tess.event!!, isect) <= 0)\n ) {\n /**\n * Very unusual -- the new upper or lower edge would pass on the\n * wrong side of the sweep event, or through it. This can happen\n * due to very small numerical errors in the intersection calculation.\n */\n if (dstLo === tess.event) {\n /* Splice dstLo into eUp, and process the new region(s) */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eUp = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n addRightEdges(tess, regUp, eUp.sym?.lNext!!, eUp, eUp, true)\n return true\n }\n if (dstUp === tess.event) {\n /* Splice dstUp into eLo, and process the new region(s) */\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eUp.lNext!!, eLo.sym?.lNext!!)) throw RuntimeException()\n regLo = regUp\n regUp = topRightRegion(regUp)\n val e = regionBelow(regUp).eUp.sym?.oNext\n regLo.eUp = eLo.sym?.lNext!!\n eLo = finishLeftRegions(regLo, null)\n addRightEdges(tess, regUp, eLo.oNext!!, eUp.sym?.oNext, e, true)\n return true\n }\n /**\n * Special case: called from ConnectRightVertex. If either\n * edge passes on the wrong side of tess.event, split it\n * (and wait for ConnectRightVertex to splice it appropriately).\n */\n if (Geom.edgeSign(dstUp, tess.event!!, isect) >= 0) {\n regUp.dirty = true\n regionAbove(regUp)?.dirty = regUp.dirty\n Mesh.glMeshSplitEdge(eUp.sym!!)\n eUp.org?.s = tess.event!!.s\n eUp.org?.t = tess.event!!.t\n }\n if (Geom.edgeSign(dstLo, tess.event!!, isect) <= 0) {\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n Mesh.glMeshSplitEdge(eLo.sym!!)\n eLo.org?.s = tess.event!!.s\n eLo.org?.t = tess.event!!.t\n }\n /* leave the rest for ConnectRightVertex */\n return false\n }\n\n /**\n * General case -- split both edges, splice into new vertex.\n * When we do the splice operation, the order of the arguments is\n * arbitrary as far as correctness goes. However, when the operation\n * creates a new face, the work done is proportional to the size of\n * the new face. We expect the faces in the processed part of\n * the mesh (ie. eUp.Lface) to be smaller than the faces in the\n * unprocessed original contours (which will be eLo.Sym.Lnext.Lface).\n */\n Mesh.glMeshSplitEdge(eUp.sym!!)\n Mesh.glMeshSplitEdge(eLo.sym!!)\n if (!Mesh.glMeshSplice(eLo.sym?.lNext!!, eUp)) throw RuntimeException()\n eUp.org?.s = isect.s\n eUp.org?.t = isect.t\n eUp.org?.pqHandle = tess.pq!!.pqInsert(eUp.org) /* __gl_pqSortInsert */\n getIntersectData(tess, eUp.org!!, orgUp, dstUp, orgLo, dstLo)\n regLo.dirty = true\n regUp.dirty = regLo.dirty\n regionAbove(regUp)?.dirty = regUp.dirty\n return false\n }\n\n /**\n * When the upper or lower edge of any region changes, the region is\n * marked \"dirty\". This routine walks through all the dirty regions\n * and makes sure that the dictionary invariants are satisfied\n * (see the comments at the beginning of this file). Of course\n * new dirty regions can be created as we make changes to restore\n * the invariants.\n */\n fun walkDirtyRegions(tess: GLUtessellatorImpl, regUp: ActiveRegion) {\n var regUp = regUp\n var regLo = regionBelow(regUp)\n while (true) {\n\n /* Find the lowest dirty region (we walk from the bottom up). */\n while (regLo.dirty) {\n regUp = regLo\n regLo = regionBelow(regLo)\n }\n if (!regUp.dirty) {\n regLo = regUp\n regUp = regionAbove(regUp) ?: return\n if (!regUp.dirty) return /* We've walked all the dirty regions */\n }\n regUp.dirty = false\n var eUp = regUp.eUp\n var eLo = regLo.eUp\n if (eUp.sym?.org !== eLo.sym?.org) {\n /* Check that the edge ordering is obeyed at the Dst vertices. */\n if (checkForLeftSplice(regUp)) {\n\n /**\n * If the upper or lower edge was marked fixUpperEdge, then\n * we no longer need it (since these edges are needed only for\n * vertices which otherwise have no right-going edges).\n */\n if (regLo.fixUpperEdge) {\n deleteRegion(regLo)\n if (!Mesh.glMeshDelete(eLo)) throw RuntimeException()\n regLo = regionBelow(regUp)\n eLo = regLo.eUp\n } else if (regUp.fixUpperEdge) {\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n eUp = regUp.eUp\n }\n }\n }\n if (eUp.org !== eLo.org) {\n if (eUp.sym?.org !== eLo.sym?.org && !regUp.fixUpperEdge && !regLo.fixUpperEdge\n && (eUp.sym?.org === tess.event || eLo.sym?.org === tess.event)\n ) {\n /**\n * When all else fails in CheckForIntersect(), it uses tess.event\n * as the intersection location. To make this possible, it requires\n * that tess.event lie between the upper and lower edges, and also\n * that neither of these is marked fixUpperEdge (since in the worst\n * case it might splice one of these edges into tess.event, and\n * violate the invariant that fixable edges are the only right-going\n * edge from their associated vertex).\n */\n if (checkForIntersect(tess, regUp)) {\n /* WalkDirtyRegions() was called recursively; we're done */\n return\n }\n } else {\n /**\n * Even though we can't use CheckForIntersect(), the Org vertices\n * may violate the dictionary edge ordering. Check and correct this.\n */\n checkForRightSplice(tess, regUp)\n }\n }\n if (eUp.org === eLo.org && eUp.sym?.org === eLo.sym?.org) {\n /* A degenerate loop consisting of only two edges -- delete it. */\n addWinding(eLo, eUp)\n deleteRegion(regUp)\n if (!Mesh.glMeshDelete(eUp)) throw RuntimeException()\n regUp = regionAbove(regLo)!!\n }\n }\n }\n\n /**\n * Purpose: connect a \"right\" vertex vEvent (one where all edges go left)\n * to the unprocessed portion of the mesh. Since there are no right-going\n * edges, two regions (one above vEvent and one below) are being merged\n * into one. \"regUp\" is the upper of these two regions.\n *\n * There are two reasons for doing this (adding a right-going edge):\n * - if the two regions being merged are \"inside\", we must add an edge\n * to keep them separated (the combined region would not be monotone).\n * - in any case, we must leave some record of vEvent in the dictionary,\n * so that we can merge vEvent with features that we have not seen yet.\n * For example, maybe there is a vertical edge which passes just to\n * the right of vEvent; we would like to splice vEvent into this edge.\n *\n * However, we don't want to connect vEvent to just any vertex. We don''t\n * want the new edge to cross any other edges; otherwise we will create\n * intersection vertices even when the input data had no self-intersections.\n * (This is a bad thing; if the user's input data has no intersections,\n * we don't want to generate any false intersections ourselves.)\n *\n * Our eventual goal is to connect vEvent to the leftmost unprocessed\n * vertex of the combined region (the union of regUp and regLo).\n * But because of unseen vertices with all right-going edges, and also\n * new vertices which may be created by edge intersections, we don''t\n * know where that leftmost unprocessed vertex is. In the meantime, we\n * connect vEvent to the closest vertex of either chain, and mark the region\n * as \"fixUpperEdge\". This flag says to delete and reconnect this edge\n * to the next processed vertex on the boundary of the combined region.\n * Quite possibly the vertex we connected to will turn out to be the\n * closest one, in which case we won''t need to make any changes.\n */\n fun connectRightVertex(\n tess: GLUtessellatorImpl, regUp: ActiveRegion,\n eBottomLeft: GLUhalfEdge\n ) {\n var regUp = regUp\n var eBottomLeft = eBottomLeft\n var eTopLeft = eBottomLeft.oNext!!\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n var degenerate = false\n if (eUp.sym?.org !== eLo.sym?.org) {\n checkForIntersect(tess, regUp)\n }\n\n /**\n * Possible new degeneracies: upper or lower edge of regUp may pass\n * through vEvent, or may coincide with new intersection vertex\n */\n if (Geom.vertEq(eUp.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eTopLeft.sym?.lNext!!, eUp)) throw RuntimeException()\n regUp = topLeftRegion(regUp)!!\n eTopLeft = regionBelow(regUp).eUp\n finishLeftRegions(regionBelow(regUp), regLo)\n degenerate = true\n }\n if (Geom.vertEq(eLo.org!!, tess.event!!)) {\n if (!Mesh.glMeshSplice(eBottomLeft, eLo.sym?.lNext!!)) throw RuntimeException()\n eBottomLeft = finishLeftRegions(regLo, null)\n degenerate = true\n }\n if (degenerate) {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n return\n }\n\n /**\n * Non-degenerate situation -- need to add a temporary, fixable edge.\n * Connect to the closer of eLo.Org, eUp.Org.\n */\n var eNew = if (Geom.vertLeq(eLo.org!!, eUp.org!!)) eLo.sym?.lNext!! else eUp\n eNew = Mesh.glMeshConnect(eBottomLeft.oNext?.sym!!, eNew)\n\n /**\n * Prevent cleanup, otherwise eNew might disappear before we've even\n * had a chance to mark it as a temporary edge.\n */\n addRightEdges(tess, regUp, eNew, eNew.oNext, eNew.oNext, false)\n eNew.sym?.activeRegion?.fixUpperEdge = true\n walkDirtyRegions(tess, regUp)\n }\n\n /**\n * Because vertices at exactly the same location are merged together\n * before we process the sweep event, some degenerate cases can't occur.\n * However if someone eventually makes the modifications required to\n * merge features which are close together, the cases below marked\n * TOLERANCE_NONZERO will be useful. They were debugged before the\n * code to merge identical vertices in the main loop was added.\n */\n private const val TOLERANCE_NONZERO = false\n /**\n * The event vertex lies exacty on an already-processed edge or vertex.\n * Adding the new vertex involves splicing it into the already-processed\n * part of the mesh.\n */\n fun connectLeftDegenerate(\n tess: GLUtessellatorImpl,\n regUp: ActiveRegion, vEvent: GLUvertex\n ) {\n var regUp = regUp\n val e = regUp.eUp\n if (Geom.vertEq(e.org!!, vEvent)) {\n /**\n * e.Org is an unprocessed vertex - just combine them, and wait\n * for e.Org to be pulled from the queue\n */\n spliceMergeVertices(tess, e, vEvent.anEdge!!)\n return\n }\n if (!Geom.vertEq(e.sym?.org!!, vEvent)) {\n /* General case -- splice vEvent into edge e which passes through it */\n Mesh.glMeshSplitEdge(e.sym!!)\n if (regUp.fixUpperEdge) {\n /* This edge was fixable -- delete unused portion of original edge */\n if (!Mesh.glMeshDelete(e.oNext!!)) throw RuntimeException()\n regUp.fixUpperEdge = false\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, e)) throw RuntimeException()\n sweepEvent(tess, vEvent) /* recurse */\n return\n }\n regUp = topRightRegion(regUp)\n val reg = regionBelow(regUp)\n var eTopRight = reg.eUp.sym!!\n val eLast = eTopRight.oNext\n var eTopLeft = eLast\n if (reg.fixUpperEdge) {\n /**\n * Here e.Sym.Org has only a single fixable edge going right.\n * We can delete it since now we have some real right-going edges.\n */\n deleteRegion(reg)\n if (!Mesh.glMeshDelete(eTopRight)) throw RuntimeException()\n eTopRight = eTopLeft?.sym?.lNext!!\n }\n if (!Mesh.glMeshSplice(vEvent.anEdge!!, eTopRight)) throw RuntimeException()\n if (!Geom.edgeGoesLeft(eTopLeft!!)) {\n /* e.Sym.Org had no left-going edges -- indicate this to AddRightEdges() */\n eTopLeft = null\n }\n addRightEdges(tess, regUp, eTopRight.oNext!!, eLast, eTopLeft, true)\n }\n\n /**\n * Purpose: connect a \"left\" vertex (one where both edges go right)\n * to the processed portion of the mesh. Let R be the active region\n * containing vEvent, and let U and L be the upper and lower edge\n * chains of R. There are two possibilities:\n *\n * - the normal case: split R into two regions, by connecting vEvent to\n * the rightmost vertex of U or L lying to the left of the sweep line\n *\n * - the degenerate case: if vEvent is close enough to U or L, we\n * merge vEvent into that edge chain. The subcases are:\n *\t- merging with the rightmost vertex of U or L\n *\t- merging with the active edge of U or L\n *\t- merging with an already-processed portion of U or L\n */\n fun connectLeftVertex(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n /* Get a pointer to the active region containing vEvent */\n val tmp = ActiveRegion(vEvent.anEdge?.sym!!)\n val regUp = Dict.dictKey(Dict.dictSearch(tess.dict!!, tmp)) as ActiveRegion\n val regLo = regionBelow(regUp)\n val eUp = regUp.eUp\n val eLo = regLo.eUp\n\n /* Try merging with U or L first */\n if (Geom.edgeSign(eUp.sym?.org!!, vEvent, eUp.org!!) == 0.0) {\n connectLeftDegenerate(tess, regUp, vEvent)\n return\n }\n\n /**\n * Connect vEvent to rightmost processed vertex of either chain.\n * e.Sym.Org is the vertex that we will connect to vEvent.\n */\n val reg = if (Geom.vertLeq(eLo.sym?.org!!, eUp.sym?.org!!)) regUp else regLo\n if (regUp.inside || reg.fixUpperEdge) {\n val eNew = if (reg === regUp) {\n Mesh.glMeshConnect(vEvent.anEdge?.sym!!, eUp.lNext!!)\n } else {\n val tempHalfEdge = Mesh.glMeshConnect(eLo.sym?.oNext?.sym!!, vEvent.anEdge!!)\n tempHalfEdge.sym!!\n }\n if (reg.fixUpperEdge) {\n if (!fixUpperEdge(reg, eNew)) throw RuntimeException()\n } else {\n computeWinding(tess, addRegionBelow(tess, regUp, eNew))\n }\n sweepEvent(tess, vEvent)\n } else {\n /**\n * The new vertex is in a region which does not belong to the polygon.\n * We don''t need to connect this vertex to the rest of the mesh.\n */\n addRightEdges(tess, regUp, vEvent.anEdge!!, vEvent.anEdge, null, true)\n }\n }\n\n /**\n * Does everything necessary when the sweep line crosses a vertex.\n * Updates the mesh and the edge dictionary.\n */\n fun sweepEvent(tess: GLUtessellatorImpl, vEvent: GLUvertex) {\n tess.event = vEvent /* for access in EdgeLeq() */\n debugEvent(tess)\n\n /**\n * Check if this vertex is the right endpoint of an edge that is\n * already in the dictionary. In this case we don't need to waste\n * time searching for the location to insert new edges.\n */\n var e = vEvent.anEdge!!\n while (e.activeRegion == null) {\n e = e.oNext!!\n if (e === vEvent.anEdge) {\n /* All edges go right -- not incident to any processed edges */\n connectLeftVertex(tess, vEvent)\n return\n }\n }\n\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n /**\n * Processing consists of two phases: first we \"finish\" all the\n * active regions where both the upper and lower edges terminate\n * at vEvent (ie. vEvent is closing off these regions).\n * We mark these faces \"inside\" or \"outside\" the polygon according\n * to their winding number, and delete the edges from the dictionary.\n * This takes care of all the left-going edges from vEvent.\n */\n val regUp = topLeftRegion(e.activeRegion!!)!!\n val reg = regionBelow(regUp)\n val eTopLeft = reg.eUp\n val eBottomLeft = finishLeftRegions(reg, null)\n\n /**\n * Next we process all the right-going edges from vEvent. This\n * involves adding the edges to the dictionary, and creating the\n * associated \"active regions\" which record information about the\n * regions between adjacent dictionary edges.\n */\n if (eBottomLeft.oNext === eTopLeft) {\n /* No right-going edges -- add a temporary \"fixable\" edge */\n connectRightVertex(tess, regUp, eBottomLeft)\n } else {\n addRightEdges(tess, regUp, eBottomLeft.oNext!!, eTopLeft, eTopLeft, true)\n }\n }\n\n /**\n * Make the sentinel coordinates big enough that they will never be\n * merged with real input features. (Even with the largest possible\n * input contour and the maximum tolerance of 1.0, no merging will be\n * done with coordinates larger than 3 * GLU_TESS_MAX_COORD).\n */\n private const val SENTINEL_COORD = 4.0 * GLU.GLU_TESS_MAX_COORD\n /**\n * We add two sentinel edges above and below all other edges,\n * to avoid special cases at the top and bottom.\n */\n fun addSentinel(tess: GLUtessellatorImpl, t: Double) {\n val e = Mesh.glMeshMakeEdge(tess.mesh!!)\n e.org?.s = SENTINEL_COORD\n e.org?.t = t\n e.sym?.org?.s = -SENTINEL_COORD\n e.sym?.org?.t = t\n tess.event = e.sym?.org /* initialize it */\n val reg = ActiveRegion(e)\n reg.windingNumber = 0\n reg.inside = false\n reg.fixUpperEdge = false\n reg.sentinel = true\n reg.dirty = false\n reg.nodeUp = Dict.dictInsert(tess.dict!!, reg) /* __gl_dictListInsertBefore */\n }\n\n /**\n * We maintain an ordering of edge intersections with the sweep line.\n * This order is maintained in a dynamic dictionary.\n */\n fun initEdgeDict(tess: GLUtessellatorImpl) {\n /* __gl_dictListNewDict */\n tess.dict = Dict.dictNewDict(\n tess,\n object : DictLeq {\n override fun leq(frame: Any, key1: Any?, key2: Any?): Boolean {\n return edgeLeq(\n tess,\n key1 as ActiveRegion,\n key2 as ActiveRegion\n )\n }\n }\n )\n addSentinel(tess, -SENTINEL_COORD)\n addSentinel(tess, SENTINEL_COORD)\n }\n\n fun doneEdgeDict(tess: GLUtessellatorImpl) {\n while (true) {\n val reg = Dict.dictKey(Dict.dictMin(tess.dict!!)) as ActiveRegion? ?: break\n /**\n * At the end of all processing, the dictionary should contain\n * only the two sentinel edges, plus at most one \"fixable\" edge\n * created by ConnectRightVertex().\n */\n deleteRegion(reg)\n /* __gl_meshDelete( reg.eUp )*/\n }\n Dict.dictDeleteDict(tess.dict!!) /* __gl_dictListDeleteDict */\n }\n\n /**\n * Remove zero-length edges, and contours with fewer than 3 vertices.\n */\n fun removeDegenerateEdges(tess: GLUtessellatorImpl) {\n val eHead = tess.mesh?.eHead!!\n\n /*LINTED*/\n var e = eHead.next!!\n while (e !== eHead) {\n var eNext = e.next!!\n var eLnext = e.lNext!!\n if (Geom.vertEq(e.org!!, e.sym?.org!!) && e.lNext?.lNext !== e) {\n /* Zero-length edge, contour has at least 3 edges */\n spliceMergeVertices(tess, eLnext, e) /* deletes e.Org */\n if (!Mesh.glMeshDelete(e)) throw RuntimeException() /* e is a self-loop */\n e = eLnext\n eLnext = e.lNext!!\n }\n if (eLnext.lNext === e) {\n /* Degenerate contour (one or two edges) */\n if (eLnext !== e) {\n if (eLnext === eNext || eLnext === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(eLnext)) throw RuntimeException()\n }\n if (e === eNext || e === eNext.sym) {\n eNext = eNext.next!!\n }\n if (!Mesh.glMeshDelete(e)) throw RuntimeException()\n }\n e = eNext\n }\n }\n\n /**\n * Insert all vertices into the priority queue which determines the\n * order in which vertices cross the sweep line.\n */\n fun initPriorityQ(tess: GLUtessellatorImpl): Boolean {\n /* __gl_pqSortNewPriorityQ */\n tess.pq =\n PriorityQ.pqNewPriorityQ()\n val pq = tess.pq!!\n val vHead = tess.mesh?.vHead!!\n var v = vHead.next!!\n while (v !== vHead) {\n v.pqHandle = pq.pqInsert(v) /* __gl_pqSortInsert */\n v = v.next!!\n }\n if (!pq.pqInit()) { /* __gl_pqSortInit */\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n tess.pq = null\n return false\n }\n return true\n }\n\n fun donePriorityQ(tess: GLUtessellatorImpl) {\n tess.pq?.pqDeletePriorityQ() /* __gl_pqSortDeletePriorityQ */\n }\n\n /**\n * Delete any degenerate faces with only two edges. WalkDirtyRegions()\n * will catch almost all of these, but it won't catch degenerate faces\n * produced by splice operations on already-processed edges.\n * The two places this can happen are in FinishLeftRegions(), when\n * we splice in a \"temporary\" edge produced by ConnectRightVertex(),\n * and in CheckForLeftSplice(), where we splice already-processed\n * edges to ensure that our dictionary invariants are not violated\n * by numerical errors.\n *\n * In both these cases it is *very* dangerous to delete the offending\n * edge at the time, since one of the routines further up the stack\n * will sometimes be keeping a pointer to that edge.\n */\n fun removeDegenerateFaces(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n val fNext = f.next!!\n val e = f.anEdge!!\n if (e.lNext?.lNext === e) {\n /* A face with only two edges */\n addWinding(e.oNext!!, e)\n if (!Mesh.glMeshDelete(e)) return false\n }\n f = fNext\n }\n return true\n }\n\n /**\n * __gl_computeInterior( tess ) computes the planar arrangement specified\n * by the given contours, and further subdivides this arrangement\n * into regions. Each region is marked \"inside\" if it belongs\n * to the polygon, according to the rule given by tess.windingRule.\n * Each interior region is guaranteed be monotone.\n */\n fun glComputeInterior(tess: GLUtessellatorImpl): Boolean {\n tess.fatalError = false\n\n /**\n * Each vertex defines an event for our sweep line. Start by inserting\n * all the vertices in a priority queue. Events are processed in\n * lexicographic order, ie.\n *\n *\te1 < e2 iff e1.x < e2.x || (e1.x == e2.x && e1.y < e2.y)\n */\n removeDegenerateEdges(tess)\n if (!initPriorityQ(tess)) return false /* if error */\n initEdgeDict(tess)\n\n /* __gl_pqSortExtractMin */\n while (true) {\n val v = tess.pq?.pqExtractMin() as GLUvertex? ?: break\n while (true) {\n var vNext = tess.pq?.pqMinimum() as GLUvertex? /* __gl_pqSortMinimum */\n if (vNext == null || !Geom.vertEq(vNext, v)) break\n\n /**\n * Merge together all vertices at exactly the same location.\n * This is more efficient than processing them one at a time,\n * simplifies the code (see ConnectLeftDegenerate), and is also\n * important for correct handling of certain degenerate cases.\n * For example, suppose there are two identical edges A and B\n * that belong to different contours (so without this code they would\n * be processed by separate sweep events). Suppose another edge C\n * crosses A and B from above. When A is processed, we split it\n * at its intersection point with C. However this also splits C,\n * so when we insert B we may compute a slightly different\n * intersection point. This might leave two edges with a small\n * gap between them. This kind of error is especially obvious\n * when using boundary extraction (GLU_TESS_BOUNDARY_ONLY).\n */\n vNext = tess.pq?.pqExtractMin() as GLUvertex /* __gl_pqSortExtractMin*/\n spliceMergeVertices(tess, v.anEdge!!, vNext.anEdge!!)\n }\n sweepEvent(tess, v)\n }\n\n /* Set tess.event for debugging purposes */\n /* __GL_DICTLISTKEY */\n /* __GL_DICTLISTMIN */\n tess.event = (Dict.dictKey(\n Dict.dictMin(\n tess.dict!!\n )\n ) as ActiveRegion).eUp.org\n debugEvent(tess)\n doneEdgeDict(tess)\n donePriorityQ(tess)\n if (!removeDegenerateFaces(tess.mesh!!)) return false\n Mesh.glMeshCheckMesh(tess.mesh!!)\n return true\n }\n}","/*\n * Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n * All rights reserved.\n */\n/*\n * License Applicability. Except to the extent portions of this file are\n * made subject to an alternative license as permitted in the SGI Free\n * Software License B, Version 1.1 (the \"License\"), the contents of this\n * file are subject only to the provisions of the License. You may not use\n * this file except in compliance with the License. You may obtain a copy\n * of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n * Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n *\n * http://oss.sgi.com/projects/FreeB\n *\n * Note that, as provided in the License, the Software is distributed on an\n * \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n * DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n * CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n * PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n *\n * NOTE: The Original Code (as defined below) has been licensed to Sun\n * Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n * (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n * 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n * you under an alternative license (\"Alternative License\"). This\n * Alternative License includes all of the provisions of the SGI License\n * except that Section 2.2 and 11 are omitted. Any differences between\n * the Alternative License and the SGI License are offered solely by Sun\n * and not by SGI.\n *\n * Original Code. The Original Code is: OpenGL Sample Implementation,\n * Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n * Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n * Copyright in any portions created by third parties is as indicated\n * elsewhere herein. All Rights Reserved.\n *\n * Additional Notice Provisions: The application programming interfaces\n * established by SGI in conjunction with the Original Code are The\n * OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n * April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n * 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n * Window System(R) (Version 1.3), released October 19, 1998. This software\n * was created using the OpenGL(R) version 1.2.1 Sample Implementation\n * published by SGI, but has not been independently verified as being\n * compliant with the OpenGL(R) version 1.2.1 Specification.\n *\n * Author: Eric Veach, July 1994\n * Java Port: Pepijn Van Eeckhoudt, July 2003\n * Java Port: Nathan Parker Burg, August 2003\n * Kotlin Port: Eugene Maksymenko, April 2022\n */\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessMono {\n /**\n * __gl_meshTessellateMonoRegion( face ) tessellates a monotone region\n * (what else would it do??) The region must consist of a single\n * loop of half-edges (see mesh.h) oriented CCW. \"Monotone\" in this\n * case means that any vertical line intersects the interior of the\n * region in a single interval.\n *\n * Tessellation consists of adding interior edges (actually pairs of\n * half-edges), to split the region into non-overlapping triangles.\n *\n * The basic idea is explained in Preparata and Shamos (which I don''t\n * have handy right now), although their implementation is more\n * complicated than this one. The are two edge chains, an upper chain\n * and a lower chain. We process all vertices from both chains in order,\n * from right to left.\n *\n * The algorithm ensures that the following invariant holds after each\n * vertex is processed: the untessellated region consists of two\n * chains, where one chain (say the upper) is a single edge, and\n * the other chain is concave. The left vertex of the single edge\n * is always to the left of all vertices in the concave chain.\n *\n * Each step consists of adding the rightmost unprocessed vertex to one\n * of the two chains, and forming a fan of triangles from the rightmost\n * of two chain endpoints. Determining whether we can add each triangle\n * to the fan is a simple orientation test. By making the fan as large\n * as possible, we restore the invariant (check it yourself).\n */\n fun glMeshTessellateMonoRegion(face: GLUface) {\n /**\n * All edges are oriented CCW around the boundary of the region.\n * First, find the half-edge whose origin vertex is rightmost.\n * Since the sweep goes from left to right, face->anEdge should\n * be close to the edge we want.\n */\n var up = face.anEdge!!\n while (Geom.vertLeq(up.sym?.org!!, up.org!!)) {\n up = up.oNext?.sym!!\n }\n while (Geom.vertLeq(up.org!!, up.sym?.org!!)) {\n up = up.lNext!!\n }\n var lo = up.oNext?.sym!!\n while (up.lNext !== lo) {\n if (Geom.vertLeq(up.sym?.org!!, lo.org!!)) {\n /**\n * up.Sym.Org is on the left. It is safe to form triangles from lo.Org.\n * The EdgeGoesLeft test guarantees progress even when some triangles\n * are CW, given that the upper and lower chains are truly monotone.\n */\n while (lo.lNext !== up && (Geom.edgeGoesLeft(lo.lNext!!)\n || Geom.edgeSign(lo.org!!, lo.sym?.org!!, lo.lNext?.sym?.org!!) <= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n lo = lo.oNext?.sym!!\n } else {\n /* lo.Org is on the left. We can make CCW triangles from up.Sym.Org. */\n while (lo.lNext !== up && (Geom.edgeGoesRight(up.oNext?.sym!!)\n || Geom.edgeSign(up.sym?.org!!, up.org!!, up.oNext?.sym?.org!!) >= 0)\n ) {\n val tempHalfEdge = Mesh.glMeshConnect(up, up.oNext?.sym!!)\n up = tempHalfEdge.sym!!\n }\n up = up.lNext!!\n }\n }\n while (lo.lNext?.lNext !== up) {\n val tempHalfEdge = Mesh.glMeshConnect(lo.lNext!!, lo)\n lo = tempHalfEdge.sym!!\n }\n }\n\n /**\n * __gl_meshTessellateInterior( mesh ) tessellates each region of\n * the mesh which is marked \"inside\" the polygon. Each such region\n * must be monotone.\n */\n fun glMeshTessellateInterior(mesh: GLUmesh): Boolean {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Make sure we don''t try to tessellate the new triangles. */\n val next = f.next!!\n if (f.inside) {\n glMeshTessellateMonoRegion(f)\n }\n f = next\n }\n return true\n }\n\n /**\n * __gl_meshDiscardExterior( mesh ) zaps (ie. sets to NULL) all faces\n * which are not marked \"inside\" the polygon. Since further mesh operations\n * on NULL faces are not allowed, the main purpose is to clean up the\n * mesh so that exterior loops are not represented in the data structure.\n */\n fun glMeshDiscardExterior(mesh: GLUmesh) {\n var f = mesh.fHead.next!!\n while (f !== mesh.fHead) {\n /* Since f will be destroyed, save its next pointer. */\n val next = f.next!!\n if (!f.inside) {\n Mesh.glMeshZapFace(f)\n }\n f = next\n }\n }\n\n /**\n * __gl_meshSetWindingNumber( mesh, value, keepOnlyBoundary ) resets the\n * winding numbers on all edges so that regions marked \"inside\" the\n * polygon have a winding number of \"value\", and regions outside\n * have a winding number of 0.\n *\n * If keepOnlyBoundary is TRUE, it also deletes all edges which do not\n * separate an interior region from an exterior one.\n */\n fun glMeshSetWindingNumber(mesh: GLUmesh, value: Int, keepOnlyBoundary: Boolean): Boolean {\n var e = mesh.eHead.next!!\n while (e !== mesh.eHead) {\n val eNext = e.next!!\n if (e.sym?.lFace?.inside != e.lFace?.inside) {\n\n /* This is a boundary edge (one side is interior, one is exterior). */\n e.winding = if (e.lFace!!.inside) value else -value\n } else {\n\n /* Both regions are interior, or both are exterior. */\n if (!keepOnlyBoundary) {\n e.winding = 0\n } else {\n if (!Mesh.glMeshDelete(e)) return false\n }\n }\n e = eNext\n }\n return true\n }\n}","/*\n* Portions Copyright (C) 2003-2006 Sun Microsystems, Inc.\n* All rights reserved.\n*/\n/*\n** License Applicability. Except to the extent portions of this file are\n** made subject to an alternative license as permitted in the SGI Free\n** Software License B, Version 1.1 (the \"License\"), the contents of this\n** file are subject only to the provisions of the License. You may not use\n** this file except in compliance with the License. You may obtain a copy\n** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600\n** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:\n**\n** http://oss.sgi.com/projects/FreeB\n**\n** Note that, as provided in the License, the Software is distributed on an\n** \"AS IS\" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS\n** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND\n** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A\n** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\n**\n** NOTE: The Original Code (as defined below) has been licensed to Sun\n** Microsystems, Inc. (\"Sun\") under the SGI Free Software License B\n** (Version 1.1), shown above (\"SGI License\"). Pursuant to Section\n** 3.2(3) of the SGI License, Sun is distributing the Covered Code to\n** you under an alternative license (\"Alternative License\"). This\n** Alternative License includes all of the provisions of the SGI License\n** except that Section 2.2 and 11 are omitted. Any differences between\n** the Alternative License and the SGI License are offered solely by Sun\n** and not by SGI.\n**\n** Original Code. The Original Code is: OpenGL Sample Implementation,\n** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,\n** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.\n** Copyright in any portions created by third parties is as indicated\n** elsewhere herein. All Rights Reserved.\n**\n** Additional Notice Provisions: The application programming interfaces\n** established by SGI in conjunction with the Original Code are The\n** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released\n** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version\n** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X\n** Window System(R) (Version 1.3), released October 19, 1998. This software\n** was created using the OpenGL(R) version 1.2.1 Sample Implementation\n** published by SGI, but has not been independently verified as being\n** compliant with the OpenGL(R) version 1.2.1 Specification.\n**\n** Author: Eric Veach, July 1994\n** Java Port: Pepijn Van Eeckhoudt, July 2003\n** Java Port: Nathan Parker Burg, August 2003\n** Kotlin Port: Eugene Maksymenko, April 2022\n*/\npackage earth.worldwind.util.glu.tessellator\n\ninternal object TessState {\n const val T_DORMANT = 0\n const val T_IN_POLYGON = 1\n const val T_IN_CONTOUR = 2\n}","package earth.worldwind.util.http\n\nimport io.ktor.client.*\nimport io.ktor.client.plugins.*\n\n/**\n * Returns new platform-dependent HTTP client instance configured by default.\n * In case some special configuration will be required on each platform, then make this function \"expected\".\n */\n@Suppress(\"FunctionName\")\nfun DefaultHttpClient(\n connectTimeout: Long = 3000L,\n requestTimeout: Long = 30000L,\n config: HttpClientConfig<*>.() -> Unit = {}\n) = HttpClient {\n config(this)\n\n install(HttpTimeout) {\n connectTimeoutMillis = connectTimeout\n requestTimeoutMillis = requestTimeout\n }\n}\n","package earth.worldwind.util.math\n\nimport earth.worldwind.geom.Matrix4\nimport earth.worldwind.geom.Viewport\nimport kotlin.math.*\n\n/**\n * Restricts a value to the range [min, max] degrees, clamping values outside the range. Values less than min are\n * returned as min, and values greater than max are returned as max. Values within the range are returned\n * unmodified.\n *
\n * The result of this method is undefined if min is greater than max.\n *\n * @param value the values to clamp\n * @param min the minimum value\n * @param max the maximum value\n *\n * @return the specified values clamped to the range [min, max] degrees\n */\nfun clamp(value: Double, min: Double, max: Double) = value.coerceIn(min, max)\n\n/**\n * Returns the fractional part of a specified number\n *\n * @param value the number whose fractional part to compute\n *\n * @return The fractional part of the specified number: value - floor(value)\n */\nfun fract(value: Double) = value - floor(value)\n\n/**\n * Computes the linear interpolation of two values according to a specified fractional amount. The fractional amount\n * is interpreted as a relative proportion of the two values, where 0.0 indicates the first value, 0.5 indicates a\n * 50/50 mix of the two values, and 1.0 indicates the second value.\n *
\n * The result of this method is undefined if the amount is outside the range [0, 1].\n *\n * @param amount the fractional proportion of the two values in the range [0, 1]\n * @param value1 the first value\n * @param value2 the second value\n *\n * @return the interpolated value\n */\nfun interpolate(amount: Double, value1: Double, value2: Double) = (1 - amount) * value1 + amount * value2\n\n/**\n * Returns the integer modulus of a specified number. This differs from the % operator in that the result is\n * always positive when the modulus is positive. For example -1 % 10 = -1, whereas mod(-1, 10) = 1.\n *\n * @param value the integer number whose modulus to compute\n * @param modulus the modulus\n *\n * @return the remainder after dividing the number by the modulus\n */\nfun mod(value: Int, modulus: Int) = (value % modulus + modulus) % modulus\n\n/**\n * Computes the bounding rectangle for a unit square after applying a transformation matrix to the square's four\n * corners.\n *\n * @param unitSquareTransform the matrix to apply to the unit square\n * @param result a pre-allocated Viewport in which to return the computed bounding rectangle\n *\n * @return the result argument set to the computed bounding rectangle\n */\nfun boundingRectForUnitSquare(unitSquareTransform: Matrix4, result: Viewport): Viewport {\n val m = unitSquareTransform.m\n\n // transform of (0, 0)\n val x1 = m[3]\n val y1 = m[7]\n\n // transform of (1, 0)\n val x2 = m[0] + m[3]\n val y2 = m[4] + m[7]\n\n // transform of (0, 1)\n val x3 = m[1] + m[3]\n val y3 = m[5] + m[7]\n\n // transform of (1, 1)\n val x4 = m[0] + m[1] + m[3]\n val y4 = m[4] + m[5] + m[7]\n val minX = min(min(x1, x2), min(x3, x4)).toInt()\n val maxX = max(max(x1, x2), max(x3, x4)).toInt()\n val minY = min(min(y1, y2), min(y3, y4)).toInt()\n val maxY = max(max(y1, y2), max(y3, y4)).toInt()\n return result.set(minX, minY, maxX - minX, maxY - minY)\n}\n\n/**\n * Indicates whether a specified value is a power of two.\n *\n * @param value the value to test\n *\n * @return true if the specified value is a power of two, false othwerwise\n */\nfun isPowerOfTwo(value: Int) = value != 0 && value and value - 1 == 0\n\n/**\n * Returns the value that is the nearest power of 2 greater than or equal to the given value.\n *\n * @param value the reference value. The power of 2 returned is greater than or equal to this value.\n *\n * @return the value that is the nearest power of 2 greater than or equal to the reference value\n */\nfun powerOfTwoCeiling(value: Int): Int {\n val pow = ceil(ln(value.toDouble()) / ln(2.0)).toInt()\n return 1 shl pow\n}","package earth.worldwind\n\nimport earth.worldwind.geom.LookAt\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Vec3\nimport earth.worldwind.gesture.*\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.WheelEvent\nimport kotlin.math.cos\nimport kotlin.math.max\nimport kotlin.math.sin\n\n/**\n * This class provides the default window controller for WorldWind for controlling the globe via user interaction.\n */\nopen class BasicWorldWindowController(wwd: WorldWindow): WorldWindowController(wwd) {\n val primaryDragRecognizer: GestureRecognizer = DragRecognizer(wwd.canvas).also { it.addListener(this) }\n val secondaryDragRecognizer: GestureRecognizer = DragRecognizer(wwd.canvas).also {\n it.addListener(this)\n it.button = 2 // secondary mouse button\n }\n val panRecognizer: GestureRecognizer = PanRecognizer(wwd.canvas).also { it.addListener(this) }\n val pinchRecognizer: GestureRecognizer = PinchRecognizer(wwd.canvas).also { it.addListener(this) }\n val rotationRecognizer: GestureRecognizer = RotationRecognizer(wwd.canvas).also { it.addListener(this) }\n val tiltRecognizer: GestureRecognizer = TiltRecognizer(wwd.canvas).also { it.addListener(this) }\n// val tapRecognizer: GestureRecognizer = TapRecognizer(wwd.canvas).also { it.addListener(this) }\n// val clickRecognizer: GestureRecognizer = ClickRecognizer(wwd.canvas).also { it.addListener(this) }\n /**\n * A copy of the viewing parameters at the start of a gesture as a look at view.\n */\n protected val beginLookAt = LookAt()\n protected val beginLookAtPoint = Vec3()\n /**\n * The current state of the viewing parameters during a gesture as a look at view.\n */\n protected val lookAt = LookAt()\n protected val lastPoint = Vec2()\n protected var lastRotation = 0.0\n protected var lastWheelEvent = 0\n protected var activeGestures = 0\n\n init {\n // Establish the dependencies between gesture recognizers. The pan, pinch and rotate gesture may recognize\n // simultaneously with each other.\n panRecognizer.recognizeSimultaneouslyWith(pinchRecognizer)\n panRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n pinchRecognizer.recognizeSimultaneouslyWith(rotationRecognizer)\n\n // Since the tilt gesture is a subset of the pan gesture, pan will typically recognize before tilt,\n // effectively suppressing tilt. Establish a dependency between the other touch gestures and tilt to provide\n // tilt an opportunity to recognize.\n panRecognizer.requireRecognizerToFail(tiltRecognizer)\n pinchRecognizer.requireRecognizerToFail(tiltRecognizer)\n rotationRecognizer.requireRecognizerToFail(tiltRecognizer)\n }\n\n override fun handleEvent(event: Event) {\n super.handleEvent(event)\n if (!event.defaultPrevented) {\n if (event.type == \"wheel\") {\n event.preventDefault()\n handleWheelEvent(event as WheelEvent)\n } else GestureRecognizer.allRecognizers.forEach { r -> if (r.target == wwd.canvas) r.handleEvent(event) }\n }\n }\n\n override fun gestureStateChanged(recognizer: GestureRecognizer) {\n when(recognizer) {\n primaryDragRecognizer, panRecognizer -> handlePanOrDrag(recognizer)\n secondaryDragRecognizer -> handleSecondaryDrag(recognizer)\n pinchRecognizer -> handlePinch(recognizer)\n rotationRecognizer -> handleRotation(recognizer)\n tiltRecognizer -> handleTilt(recognizer)\n// clickRecognizer, tapRecognizer -> handleClickOrTap(recognizer)\n }\n }\n\n// protected open fun handleClickOrTap(recognizer: GestureRecognizer) {\n// if (recognizer.state == RECOGNIZED) {\n// val pickPoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n//\n// // Identify if the top picked object contains a URL for hyperlinking\n// val pickList = wwd.pick(pickPoint)\n// val userObject = pickList.topPickedObject?.userObject\n// // If the url object was appended, open the hyperlink\n// if (userObject is Renderable && userObject.hasUserProperty(\"url\")) {\n// window.open(userObject.getUserProperty(\"url\") as String, \"_blank\")\n// }\n// }\n// }\n\n protected open fun handlePanOrDrag(recognizer: GestureRecognizer) {\n if (wwd.engine.globe.is2D) handlePanOrDrag2D(recognizer) else handlePanOrDrag3D(recognizer)\n }\n\n protected open fun handlePanOrDrag3D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastPoint.set(0.0, 0.0)\n }\n CHANGED -> {\n // Convert the translation from screen coordinates to arc degrees. Use the view's range as a\n // metric for converting screen pixels to meters, and use the globe's radius for converting from meters\n // to arc degrees. Transform viewport pixel size to canvas client pixel size.\n val globe = wwd.engine.globe\n val globeRadius = max(globe.equatorialRadius, globe.polarRadius)\n val distance = max(1.0, lookAt.range)\n val metersPerPixel = wwd.engine.pixelSizeAtDistance(distance) * wwd.engine.densityFactor\n val forwardMeters = (ty - lastPoint.y) * metersPerPixel\n val sideMeters = -(tx - lastPoint.x) * metersPerPixel\n val forwardRadians = forwardMeters / globeRadius\n val sideRadians = sideMeters / globeRadius\n\n // Apply the change in latitude and longitude to the view, relative to the current heading.\n val sinHeading = sin(lookAt.heading.inRadians)\n val cosHeading = cos(lookAt.heading.inRadians)\n lookAt.position.apply {\n latitude = latitude.plusRadians(forwardRadians * cosHeading - sideRadians * sinHeading)\n longitude = longitude.plusRadians(forwardRadians * sinHeading + sideRadians * cosHeading)\n }\n lastPoint.set(tx, ty)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePanOrDrag2D(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n wwd.engine.globe.geographicToCartesian(\n beginLookAt.position.latitude,\n beginLookAt.position.longitude,\n beginLookAt.position.altitude,\n beginLookAtPoint\n )\n }\n CHANGED -> {\n val metersPerPixel = wwd.engine.pixelSizeAtDistance(lookAt.range) * wwd.engine.densityFactor\n val forwardMeters = ty * metersPerPixel\n val sideMeters = - tx * metersPerPixel\n\n // Adjust the change in latitude and longitude based on observation point heading.\n val heading = lookAt.heading\n val sinHeading = sin(heading.inRadians)\n val cosHeading = cos(heading.inRadians)\n val x = beginLookAtPoint.x + forwardMeters * sinHeading + sideMeters * cosHeading\n val y = beginLookAtPoint.y + forwardMeters * cosHeading - sideMeters * sinHeading\n wwd.engine.globe.cartesianToGeographic(x, y, beginLookAtPoint.z, lookAt.position)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleSecondaryDrag(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val tx = recognizer.translationX\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the current translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the gesture translation to a fraction of an angle.\n val headingDegrees = 180.0 * tx / wwd.canvas.clientWidth\n val tiltDegrees = 90.0 * ty / wwd.canvas.clientHeight\n\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.heading = beginLookAt.heading.plusDegrees(headingDegrees)\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handlePinch(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val scale = (recognizer as PinchRecognizer).scaleWithOffset\n\n when(state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> if (scale != 0.0) {\n // Apply the change in pinch scale to this view's range, relative to the range when the gesture began.\n lookAt.range = beginLookAt.range / scale\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleRotation(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val rotation = (recognizer as RotationRecognizer).rotationWithOffset\n\n when (state) {\n BEGAN -> {\n gestureDidBegin()\n lastRotation = 0.0\n }\n CHANGED -> {\n // Apply the change in gesture rotation to this view's current heading. We apply relative to the\n // current heading rather than the heading when the gesture began in order to work simultaneously with\n // pan operations that also modify the current heading.\n lookAt.heading = lookAt.heading.minusDegrees(rotation - lastRotation)\n lastRotation = rotation\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleTilt(recognizer: GestureRecognizer) {\n val state = recognizer.state\n val ty = recognizer.translationY\n\n when (state) {\n BEGAN -> gestureDidBegin()\n CHANGED -> {\n // Compute the gesture translation from screen coordinates to degrees. Use the canvas dimensions as a\n // metric for converting the translation to a fraction of an angle.\n val tiltDegrees = -90.0 * ty / wwd.canvas.clientHeight\n // Apply the change in heading and tilt to this view's corresponding properties.\n lookAt.tilt = beginLookAt.tilt.plusDegrees(tiltDegrees)\n applyChanges()\n }\n ENDED, CANCELLED -> gestureDidEnd()\n else -> {}\n }\n }\n\n protected open fun handleWheelEvent(event: WheelEvent) {\n val timeStamp = event.timeStamp.toInt()\n if (timeStamp - lastWheelEvent > 500) {\n wwd.engine.cameraAsLookAt(lookAt)\n lastWheelEvent = timeStamp\n }\n\n // Normalize the wheel delta based on the wheel delta mode. This produces a roughly consistent delta across\n // browsers and input devices.\n val normalizedDelta = when(event.deltaMode) {\n WheelEvent.DOM_DELTA_PIXEL -> event.deltaY\n WheelEvent.DOM_DELTA_LINE -> event.deltaY * 20.0\n WheelEvent.DOM_DELTA_PAGE -> event.deltaY * 200.0\n else -> event.deltaY\n }\n\n // Compute a zoom scale factor by adding a fraction of the normalized delta to 1. When multiplied by the\n // view's range, this has the effect of zooming out or zooming in depending on whether the delta is\n // positive or negative, respectfully.\n val scale = 1.0 + (normalizedDelta / 1000.0)\n\n // Apply the scale to this view's properties.\n lookAt.range *= scale\n applyChanges()\n }\n\n protected open fun applyChanges() {\n // Update camera view\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n protected open fun gestureDidBegin() {\n if (activeGestures++ == 0) {\n wwd.engine.cameraAsLookAt(beginLookAt)\n lookAt.copy(beginLookAt)\n }\n }\n\n protected open fun gestureDidEnd() {\n // this should always be the case, but we check anyway\n if (activeGestures > 0) activeGestures--\n }\n}","package earth.worldwind\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.LookAt\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.KeyboardEvent\n\n/**\n * The KeyboardControls module provides keyboard controls for the globe.\n * Note: the canvas must be focusable this can be accomplished by establishing the \"tabindex\"\n * on the canvas element.\n */\nopen class KeyboardControls(\n /**\n * The WorldWindow associated with these controls.\n */\n protected val wwd: WorldWindow\n) {\n /**\n * Enable/disable keyboard events processing\n */\n var isEnabled = true\n /**\n * The incremental amount to increase or decrease the eye distance (for zoom) each cycle.\n */\n var zoomIncrement = 0.01f\n /**\n * The scale factor governing the pan speed. Increased values cause faster panning.\n */\n var panIncrement = 0.0000000005f\n /**\n * The incremental amount to increase or decrease the tilt (in degrees) each cycle.\n */\n var tiltIncrement = 0.5\n /**\n * The current state of the viewing parameters during an operation as a look at view.\n */\n protected val lookAt = LookAt()\n /**\n * Is key down?\n */\n protected var isKeyDown = false\n /**\n * Controls the globe with the keyboard.\n */\n protected val handleKeyDown = EventListener { event ->\n if (!isEnabled || event !is KeyboardEvent) return@EventListener\n\n isKeyDown = true\n wwd.engine.cameraAsLookAt(lookAt)\n\n // TODO: find a way to make this code portable for different keyboard layouts\n when (event.keyCode) {\n 187, 61 -> { // + key || +/= key\n handleZoom(\"zoomIn\")\n event.preventDefault()\n }\n 189, 173 -> { // - key || _/- key\n handleZoom(\"zoomOut\")\n event.preventDefault()\n }\n 33 -> { // Page Up\n handleTilt(\"tiltUp\")\n event.preventDefault()\n }\n 34 -> { // Page down\n handleTilt(\"tiltDown\")\n event.preventDefault()\n }\n 37 -> { // Left arrow\n handlePan(\"panLeft\")\n event.preventDefault()\n }\n 38 -> { // Up arrow\n handlePan(\"panUp\")\n event.preventDefault()\n }\n 39 -> { // Right arrow\n handlePan(\"panRight\")\n event.preventDefault()\n }\n 40 -> { // Down arrow\n handlePan(\"panDown\")\n event.preventDefault()\n }\n 78 -> { // N key\n resetHeading()\n event.preventDefault()\n }\n 82 -> { // R key\n resetHeadingAndTilt()\n event.preventDefault()\n }\n }\n }\n /**\n * On keyboard event finished.\n */\n protected val handleKeyUp = EventListener { event->\n if (isKeyDown) {\n isKeyDown = false\n event.preventDefault()\n }\n }\n\n init {\n // The tabIndex must be set for the keyboard controls to work\n val tabIndex = wwd.canvas.tabIndex\n if (tabIndex < 0) wwd.canvas.tabIndex = 0\n // Add keyboard listeners\n wwd.addEventListener(\"keydown\", handleKeyDown)\n wwd.addEventListener(\"keyup\", handleKeyUp)\n // Ensure keyboard controls are operational by setting the focus to the canvas\n wwd.addEventListener(\"click\", EventListener { if (isEnabled) wwd.canvas.focus() })\n }\n\n /**\n * Reset the view to North up.\n */\n protected open fun resetHeading() {\n lookAt.heading = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * Reset the view to North up and nadir.\n */\n protected open fun resetHeadingAndTilt() {\n lookAt.heading = Angle.ZERO\n lookAt.tilt = Angle.ZERO\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n }\n\n /**\n * This function is called by the timer to perform the Pan operation.\n */\n protected open fun handlePan(operation: String) {\n if (isKeyDown) {\n var heading = lookAt.heading\n val distance = panIncrement * lookAt.range\n when (operation) {\n \"panDown\" -> heading -= Angle.POS180\n \"panLeft\" -> heading -= Angle.POS90\n \"panRight\" -> heading += Angle.POS90\n }\n lookAt.position.greatCircleLocation(heading, distance, lookAt.position)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handlePan, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Range operation.\n */\n protected open fun handleZoom(operation: String) {\n if (isKeyDown) {\n if (operation == \"zoomIn\") lookAt.range *= (1 - zoomIncrement)\n else if (operation == \"zoomOut\") lookAt.range *= (1 + zoomIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleZoom, 50, operation)\n }\n }\n\n /**\n * This function is called by the timer to perform the Tilt operation.\n */\n protected open fun handleTilt(operation: String) {\n if (isKeyDown) {\n if (operation == \"tiltUp\") lookAt.tilt = lookAt.tilt.minusDegrees(tiltIncrement)\n else if (operation == \"tiltDown\") lookAt.tilt = lookAt.tilt.plusDegrees(tiltIncrement)\n wwd.engine.cameraFromLookAt(lookAt)\n wwd.requestRedraw()\n window.setTimeout(::handleTilt, 50, operation)\n }\n }\n}","package earth.worldwind\n\nimport earth.worldwind.frame.Frame\nimport earth.worldwind.geom.Line\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.geom.Viewport\nimport earth.worldwind.gesture.SelectDragDetector\nimport earth.worldwind.render.RenderResourceCache\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.WebKgl\nimport kotlinx.browser.window\nimport kotlinx.coroutines.cancelChildren\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.WebGLContextAttributes\nimport org.khronos.webgl.WebGLContextEvent\nimport org.khronos.webgl.WebGLRenderingContext\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport kotlin.math.ceil\nimport kotlin.math.floor\nimport kotlin.math.roundToInt\n\n/**\n * Represents a WorldWind window for an HTML canvas.\n */\nopen class WorldWindow(\n /**\n * The HTML canvas associated with this WorldWindow.\n */\n val canvas: HTMLCanvasElement,\n /**\n * Render resource cache capacity in bytes\n */\n cacheCapacity: Long = RenderResourceCache.recommendedCapacity()\n) {\n /**\n * WebGL context associated with the HTML canvas.\n */\n protected val gl = createContext(canvas)\n /**\n * Main WorldWindow scope to execute jobs which should be cancelled on GL context lost\n */\n val mainScope get() = engine.renderResourceCache.mainScope\n /**\n * Main WorldWind engine, containing globe, terrain, renderable layers, camera, viewport and frame rendering logic.\n */\n open val engine = WorldWind(WebKgl(gl), RenderResourceCache(cacheCapacity))\n /**\n * List of registered event listeners for the specified event type on this WorldWindow's canvas.\n */\n protected val eventListeners = mutableMapOf()\n /**\n * The controller used to manipulate the globe.\n */\n var controller: WorldWindowController = BasicWorldWindowController(this)\n /**\n * The controller used to manipulate the globe with the keyboard.\n */\n open val keyboardControls = KeyboardControls(this)\n /**\n * Renderable selection and drag gestures detector. Assign [SelectDragDetector.callback] to handle events.\n */\n open val selectDragDetector = SelectDragDetector(this)\n /**\n * The list of callbacks to call immediately before and immediately after performing a redrawn. The callbacks\n * have two arguments: this WorldWindow and the redraw stage, e.g., redrawCallback(worldWindow, stage);.\n * The stage will be either WorldWind.BEFORE_REDRAW or WorldWind.AFTER_REDRAW indicating whether the\n * callback has been called either immediately before or immediately after a redrawn, respectively.\n * Applications may add functions to this array or remove them.\n */\n val redrawCallbacks = mutableSetOf<(WorldWindow, RedrawStage)->Unit>()\n protected val frame = Frame()\n protected var redrawRequestId = 0\n protected var isRedrawRequested = false\n\n protected class EventListenerEntry(val callback: (Event) -> Unit) {\n val listeners = mutableListOf()\n }\n\n init {\n // Prevent the browser's default actions in response to mouse and touch events, which interfere with\n // navigation. Register these event listeners before any others to ensure that they're called last.\n val preventDefaultListener = EventListener { e -> e.preventDefault() }\n addEventListener(\"mousedown\", preventDefaultListener)\n addEventListener(\"touchstart\", preventDefaultListener)\n addEventListener(\"contextmenu\", preventDefaultListener)\n addEventListener(\"wheel\", preventDefaultListener)\n\n // Redirect various UI interactions to the appropriate handler.\n val onGestureEvent = EventListener { e -> controller.handleEvent(e) }\n if (window.navigator.maxTouchPoints == 0) {\n // Prevent the browser's default actions in response to pointer events which interfere with navigation.\n // This CSS style property is configured here to ensure that it's set for all applications.\n canvas.style.setProperty(\"touch-action\", \"none\")\n\n addEventListener(\"pointerdown\", onGestureEvent)\n window.addEventListener(\"pointermove\", onGestureEvent, false) // get pointermove events outside event target\n window.addEventListener(\"pointercancel\", onGestureEvent, false) // get pointercancel events outside event target\n window.addEventListener(\"pointerup\", onGestureEvent, false) // get pointerup events outside event target\n } else {\n addEventListener(\"mousedown\", onGestureEvent)\n window.addEventListener(\"mousemove\", onGestureEvent, false) // get mousemove events outside event target\n window.addEventListener(\"mouseup\", onGestureEvent, false) // get mouseup events outside event target\n addEventListener(\"touchstart\", onGestureEvent)\n addEventListener(\"touchmove\", onGestureEvent)\n addEventListener(\"touchend\", onGestureEvent)\n addEventListener(\"touchcancel\", onGestureEvent)\n }\n addEventListener(\"wheel\", onGestureEvent)\n\n // Set up to handle WebGL context events.\n canvas.addEventListener(\"webglcontextlost\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Inform WebGL that we handle context restoration, enabling the context restored event to be delivered.\n event.preventDefault()\n // Notify the draw context that the WebGL rendering context has been lost.\n contextLost()\n }, false)\n canvas.addEventListener(\"webglcontextrestored\",\n { event -> event as WebGLContextEvent\n log(INFO, \"WebGL context event: \" + event.statusMessage)\n // Notify the draw context that the WebGL rendering context has been restored.\n contextRestored()\n }, false)\n\n // Set up WebGL context and start rendering to the WebGL context in an animation frame loop.\n this.contextRestored()\n }\n\n /**\n * Registers an event listener for the specified event type on this WorldWindow's canvas. This function\n * delegates the processing of events to the WorldWindow's canvas. For details on this function and its\n * arguments, see the W3C [org.w3c.dom.events.EventTarget] documentation.\n * @see EventTarget\n *\n * When an event occurs, this calls the registered event listeners in order of reverse registration.\n *\n * @param type The event type to listen for.\n * @param listener The [EventListener] to call when the event occurs.\n */\n fun addEventListener(type: String, listener: EventListener) {\n var entry = eventListeners[type]\n if (entry == null) {\n entry = EventListenerEntry { event ->\n event.asDynamic().worldWindow = this@WorldWindow\n // calls listeners in reverse registration order\n entry?.listeners?.forEach{ l -> l.handleEvent(event) }\n }.also { eventListeners[type] = it }\n }\n\n if (!entry.listeners.contains(listener)) { // suppress duplicate listeners\n entry.listeners.add(0, listener) // insert the listener at the beginning of the list\n // first listener added, add the event listener callback\n if (entry.listeners.size == 1) canvas.addEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Removes an event listener for the specified event type from this WorldWindow's canvas. The listener must be\n * the same object passed to addEventListener. Calling removeEventListener with arguments that do not identify a\n * currently registered listener has no effect.\n *\n * @param type Indicates the event type the listener registered for.\n * @param listener The listener to remove.\n */\n fun removeEventListener(type: String, listener: EventListener) {\n val entry = eventListeners[type] ?: return // no entry for the specified type\n if (entry.listeners.remove(listener) && entry.listeners.isEmpty()) {\n canvas.removeEventListener(type, entry.callback, false)\n }\n }\n\n /**\n * Causes this WorldWindow to redraw itself at the next available opportunity. The redrawn occurs on the main\n * thread at a time of the browser's discretion. Applications should call redraw after changing the World\n * Window's state, but should not expect that change to be reflected on screen immediately after this function\n * returns. This is the preferred method for requesting a redrawn of the WorldWindow.\n */\n fun requestRedraw() { isRedrawRequested = true } // redraw during the next animation frame\n\n /**\n * Converts window coordinates to coordinates relative to this WorldWindow's canvas.\n * @param x The X coordinate to convert.\n * @param y The Y coordinate to convert.\n * @returns The converted coordinates.\n */\n fun canvasCoordinates(x: Number, y: Number): Vec2 {\n val bbox = canvas.getBoundingClientRect()\n val xc = x.toDouble() - (bbox.left + canvas.clientLeft) // * canvas.width / bbox.width\n val yc = y.toDouble() - (bbox.top + canvas.clientTop) // * canvas.height / bbox.height\n return Vec2(xc, yc)\n }\n\n /**\n * Requests the WorldWind objects displayed at a specified screen-coordinate point.\n *\n * If the point intersects the terrain, the returned list contains an object identifying the associated geographic\n * position. This returns an empty list when nothing in the WorldWind scene intersects the specified point.\n *\n * @param pickPoint The point to examine in this WorldWindow's screen coordinates.\n * @returns A list of picked WorldWind objects at the specified pick point.\n */\n fun pick(pickPoint: Vec2) = pickShapesInRegion(pickPoint.x, pickPoint.y)\n\n /**\n * Requests the WorldWind objects displayed within a specified screen-coordinate region. This returns all\n * objects that intersect the specified region, regardless of whether an object is actually visible, and\n * marks objects that are visible as on top.\n *\n * @param x the X coordinate relative to this WorldWindow's canvas.\n * @param y the Y coordinate relative to this WorldWindow's canvas.\n * @param width the width in canvas pixels\n * @param height the height in canvas pixels\n * @param pickCenter picks top shape and terrain in rectangle center as priority\n *\n * @returns A list of visible WorldWind objects within the specified region.\n */\n fun pickShapesInRegion(\n x: Double, y: Double, width: Double = 0.0, height: Double = 0.0, pickCenter: Boolean = true\n ): PickedObjectList {\n // Allocate a list in which to collect and return the picked objects.\n val pickedObjects = PickedObjectList()\n\n // Nothing can be picked if viewport is undefined.\n val viewport = engine.viewport\n if (viewport.isEmpty) return pickedObjects\n\n // Determine pick viewport\n val pickViewport = if (width != 0.0 && height != 0.0) Viewport(\n floor(x).toInt(), viewport.height - ceil(y + height).toInt(), ceil(width).toInt(), ceil(height).toInt()\n ) else Viewport(x.roundToInt() - 1, viewport.height - y.roundToInt() - 1, 3, 3)\n if (!pickViewport.intersect(viewport)) return pickedObjects\n\n // Prepare pick frame\n frame.pickedObjects = pickedObjects\n frame.pickViewport = pickViewport\n if (pickCenter) {\n // Compute the pick point in OpenGL screen coordinates, rounding to the nearest whole pixel. Nothing can be picked\n // if pick point is outside the WorldWindow's viewport.\n val px = pickViewport.x + pickViewport.width / 2.0\n val py = pickViewport.y + pickViewport.height / 2.0\n if(viewport.contains(px, py)) {\n val pickRay = Line()\n if (engine.rayThroughScreenPoint(px, viewport.height - py, pickRay)) {\n frame.pickPoint = Vec2(px, py)\n frame.pickRay = pickRay\n }\n }\n }\n frame.isPickMode = true\n redrawFrame()\n\n return pickedObjects\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been lost. This function removes all\n * cached WebGL resources and resets all properties tracking the current WebGL state.\n */\n protected open fun contextLost() {\n // Stop the rendering animation frame loop, resuming only if the WebGL context is restored.\n window.cancelAnimationFrame(redrawRequestId)\n\n // Cancel all async jobs but keep scope reusable\n mainScope.coroutineContext.cancelChildren()\n\n // Remove all cached WebGL resources, which are now invalid.\n engine.reset()\n }\n\n /**\n * Notifies this draw context that the current WebGL rendering context has been restored. This function prepares\n * this draw context to resume rendering.\n */\n protected open fun contextRestored() {\n // Remove all cached WebGL resources, which are now invalid.\n engine.renderResourceCache.clear()\n\n // Specify the default WorldWind OpenGL state.\n engine.setupDrawContext()\n\n // Store current screen density factor\n engine.densityFactor = window.devicePixelRatio.toFloat()\n\n // Enable WebGL depth texture extension to be able to use GL_DEPTH_COMPONENT texture format\n gl.getExtension(\"WEBGL_depth_texture\")\n\n // Enable WebGL support for gl.UNSIGNED_INT types to WebGLRenderingContext.drawElements()\n gl.getExtension(\"OES_element_index_uint\")\n\n // Subscribe on events from WorldWind's global event bus.\n mainScope.launch {\n WorldWind.events.collect {\n when (it) {\n is WorldWind.Event.RequestRedraw -> requestRedraw()\n is WorldWind.Event.UnmarkResourceAbsent -> {\n engine.renderResourceCache.absentResourceList.unmarkResourceAbsent(it.resourceId)\n }\n }\n }\n }\n\n // Request redraw at least once.\n requestRedraw()\n\n // Resume the rendering animation frame loop until the WebGL context is lost.\n animationFrameLoop()\n }\n\n protected open fun animationFrameLoop() {\n // Render to the WebGL context as needed.\n redrawIfNeeded()\n\n // Continue the animation frame loop until the WebGL context is lost.\n redrawRequestId = window.requestAnimationFrame { animationFrameLoop() }\n }\n\n protected open fun redrawIfNeeded() {\n // Check if the drawing buffer needs to resize to match its screen size, which requires a redrawn.\n resize()\n\n // Redraw the WebGL drawing buffer only when necessary.\n if (!isRedrawRequested) return\n isRedrawRequested = false\n redrawFrame()\n }\n\n protected open fun redrawFrame() {\n val isPickMode = frame.isPickMode\n try {\n // Prepare to redraw and notify redraw callbacks that a redrawn is about to occur.\n if(!isPickMode) callRedrawCallbacks(RedrawStage.BEFORE_REDRAW)\n // Render frame. Propagate redraw requests submitted during rendering.\n if (engine.renderFrame(frame) || isPickMode) requestRedraw()\n // Redraw the WebGL drawing buffer.\n engine.drawFrame(frame)\n } catch (e: Exception) {\n logMessage(\n ERROR, \"WorldWindow\", \"drawFrame\", \"Exception occurred during redrawing.\\n$e\"\n )\n } finally {\n // Recycle each frame to be reused\n frame.recycle()\n // Notify redraw callbacks that a redrawn has completed.\n if(!isPickMode) callRedrawCallbacks(RedrawStage.AFTER_REDRAW)\n }\n }\n\n protected open fun resize() {\n // Check if canvas size is changed\n val width = (gl.canvas.clientWidth * engine.densityFactor).roundToInt()\n val height = (gl.canvas.clientHeight * engine.densityFactor).roundToInt()\n\n if (gl.canvas.width != width || gl.canvas.height != height || engine.viewport.isEmpty) {\n // Make the canvas drawing buffer size match its screen size.\n gl.canvas.width = width\n gl.canvas.height = height\n\n // Set the WebGL viewport to match the canvas drawing buffer size.\n engine.setupViewport(gl.drawingBufferWidth, gl.drawingBufferHeight)\n\n // Cause this WorldWindow to redraw with the new size.\n requestRedraw()\n }\n }\n\n protected open fun callRedrawCallbacks(stage: RedrawStage) = redrawCallbacks.forEach {\n try {\n it(this, stage)\n } catch (e: Exception) {\n // Keep going. Execute the rest of the callbacks.\n log(ERROR, \"Exception calling redraw callback.\\n$e\")\n }\n }\n\n companion object {\n /**\n * Create the WebGL context associated with the HTML canvas.\n */\n protected fun createContext(canvas: HTMLCanvasElement): WebGLRenderingContext {\n // Request a WebGL context with antialiasing is disabled. Antialiasing causes gaps to appear at the edges of\n // terrain tiles.\n val glAttrs = WebGLContextAttributes(antialias = false)\n val context = canvas.getContext(\"webgl\", glAttrs)\n ?: canvas.getContext(\"experimental-webgl\", glAttrs)\n require(context is WebGLRenderingContext) {\n logMessage(ERROR, \"WorldWindow\", \"createContext\", \"webglNotSupported\")\n }\n return context\n }\n }\n\n enum class RedrawStage {\n /**\n * Indicates that a redrawn callback has been called immediately after a redrawn.\n */\n AFTER_REDRAW,\n /**\n * Indicates that a redrawn callback has been called immediately before a redrawn.\n */\n BEFORE_REDRAW;\n }\n}","package earth.worldwind\n\nimport earth.worldwind.gesture.GestureListener\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\n\n/**\n * This class provides a base window controller with required properties and methods which subclasses may\n * inherit from to create custom window controllers for controlling the globe via user interaction.\n */\nabstract class WorldWindowController(\n /**\n * The WorldWindow associated with this controller.\n */\n protected val wwd: WorldWindow\n): EventListener, GestureListener {\n protected val gestureEventListeners = mutableListOf()\n\n override fun handleEvent(event: Event) {\n for (i in gestureEventListeners.indices) {\n gestureEventListeners[i].handleEvent(event)\n if (event.defaultPrevented) break\n }\n }\n\n /**\n * Registers a gesture event listener on this controller. Registering event listeners using this function\n * enables applications to prevent the controller's default behavior.\n *\n * When an event occurs, application event listeners are called before WorldWindowController event listeners.\n *\n * @param listener The function to call when the event occurs.\n */\n protected open fun addGestureListener(listener: EventListener) { gestureEventListeners += listener }\n\n /**\n * Removes a gesture event listener from this controller. The listener must be the same object passed to\n * addGestureListener. Calling removeGestureListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addGestureListener.\n */\n protected open fun removeGestureListener(listener: EventListener) { gestureEventListeners -= listener }\n}","package earth.worldwind.formats.geotiff\n\nobject GeoTiffConstants {\n const val MODEL_PIXEL_SCALE = 33550\n const val MODEL_TRANSFORMATION = 34264\n const val MODEL_TIEPOINT = 33922\n const val GEO_KEY_DIRECTORY = 34735\n const val GEO_DOUBLE_PARAMS = 34736\n const val GEO_ASCII_PARAMS = 34737\n\n // GDAL\n const val GDAL_NODATA = 42113\n const val GDAL_METADATA = 42112\n\n const val GT_MODEL_TYPE_GEO_KEY = 1024\n const val GT_RASTER_TYPE_GEO_KEY = 1025\n const val GT_CITATION_GEO_KEY = 1026\n\n // Geographic CS Parameter Keys\n const val GEOGRAPHIC_TYPE_GEO_KEY = 2048\n const val GEOG_CITATION_GEO_KEY = 2049\n const val GEOG_GEODETIC_DATUM_GEO_KEY = 2050\n const val GEOG_PRIME_MERIDIAN_GEO_KEY = 2051\n const val GEOG_LINEAR_UNITS_GEO_KEY = 2052\n const val GEOG_LINEAR_UNIT_SIZE_GEO_KEY = 2053\n const val GEOG_ANGULAR_UNITS_GEO_KEY = 2054\n const val GEOG_ANGULAR_UNIT_SIZE_GEO_KEY = 2055\n const val GEOG_ELLIPSOID_GEO_KEY = 2056\n const val GEOG_SEMI_MAJOR_AXIS_GEO_KEY = 2057\n const val GEOG_SEMI_MINOR_AXIS_GEO_KEY = 2058\n const val GEOG_INV_FLATTENING_GEO_KEY = 2059\n const val GEOG_AZIMUTH_UNITS_GEO_KEY = 2060\n const val GEOG_PRIME_MERIDIAN_LONG_GEO_KEY = 2061\n const val GEOG_TOWGS84_GEO_KEY = 2062\n\n // Projected CS Parameter Keys\n const val PROJECTED_CS_TYPE_GEO_KEY = 3072\n const val PCS_CITATION_GEO_KEY = 3073\n const val PROJECTION_GEO_KEY = 3074\n const val PROJ_COORD_TRANS_GEO_KEY = 3075\n const val PROJ_LINEAR_UNITS_GEO_KEY = 3076\n const val PROJ_LINEAR_UNIT_SIZE_GEO_KEY = 3077\n const val PROJ_STD_PARALLEL_1_GEO_KEY = 3078\n const val PROJ_STD_PARALLEL_2_GEO_KEY = 3079\n const val PROJ_NAT_ORIGIN_LONG_GEO_KEY = 3080\n const val PROJ_NAT_ORIGIN_LAT_GEO_KEY = 3081\n const val PROJ_FALSE_EASTING_GEO_KEY = 3082\n const val PROJ_FALSE_NORTHING_GEO_KEY = 3083\n const val PROJ_FALSE_ORIGIN_LONG_GEO_KEY = 3084\n const val PROJ_FALSE_ORIGIN_LAT_GEO_KEY = 3085\n const val PROJ_FALSE_ORIGIN_EASTING_GEO_KEY = 3086\n const val PROJ_FALSE_ORIGIN_NORTHING_GEO_KEY = 3087\n const val PROJ_CENTER_LONG_GEO_KEY = 3088\n const val PROJ_CENTER_LAT_GEO_KEY = 3089\n const val PROJ_CENTER_EASTING_GEO_KEY = 3090\n const val PROJ_CENTER_NORTHING_GEO_KEY = 3091\n const val PROJ_SCALE_AT_NAT_ORIGIN_GEO_KEY = 3092\n const val PROJ_SCALE_AT_CENTER_GEO_KEY = 3093\n const val PROJ_AZIMUTH_ANGLE_GEO_KEY = 3094\n const val PROJ_STRAIGHT_VERT_POLE_LONG_GEO_KEY = 3095\n\n // Vertical CS Keys\n const val VERTICAL_CS_TYPE_GEO_KEY = 4096\n const val VERTICAL_CITATION_GEO_KEY = 4097\n const val VERTICAL_DATUM_GEO_KEY = 4098\n const val VERTICAL_UNITS_GEO_KEY = 4099\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.formats.geotiff.GeoTiffConstants.GEO_ASCII_PARAMS\nimport earth.worldwind.formats.geotiff.GeoTiffConstants.GEO_DOUBLE_PARAMS\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\n\nclass GeoTiffKeyEntry(\n keyId: Int,\n private val tiffTagLocation: Int,\n private val count: Int,\n private val valueOffset: Int\n) {\n init {\n require(keyId != 0) { logMessage(ERROR, \"GeoTiffKeyEntry\", \"constructor\", \"Missing key ID\") }\n }\n\n fun getGeoKeyValue(geoDoubleParamsValue: List): Number? = when (tiffTagLocation) {\n 0 -> valueOffset\n GEO_ASCII_PARAMS -> error(logMessage(ERROR, \"GeoTiffKeyEntry\", \"getGeoKeyValue\", \"Invalid key type\"))\n GEO_DOUBLE_PARAMS -> geoDoubleParamsValue[valueOffset]\n else -> null\n }\n\n fun getAsciiGeoKeyValue(geoAsciiParamsValue: String?): String? {\n require(tiffTagLocation == GEO_ASCII_PARAMS) {\n logMessage(ERROR, \"GeoTiffKeyEntry\", \"getAsciiGeoKeyValue\", \"Invalid key type\")\n }\n return geoAsciiParamsValue?.let {\n val keyValue = StringBuilder()\n for (i in valueOffset until count - 1) keyValue.append(it[i])\n if (it[count - 1] != '|') keyValue.append(it[count - 1])\n keyValue.toString()\n }\n }\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.geom.Sector\n\nclass GeoTiffMetadata {\n var bitsPerSample: List = mutableListOf()\n var colorMap: Array? = null\n var compression: Int = 0\n var extraSamples: Array? = null\n var imageDescription: String? = null\n var imageLength: Int = 0\n var imageWidth: Int = 0\n var maxSampleValue: Number? = null\n var minSampleValue: Number? = null\n var orientation: Int = 0\n var photometricInterpretation: Int = -1\n var planarConfiguration: Int = -1\n var resolutionUnit: Number? = null\n var rowsPerStrip: Int = 0\n var samplesPerPixel: Int = 0\n var sampleFormat: Int = TiffConstants.SampleFormat.UNSIGNED\n var software: Array? = null\n var stripByteCounts: List = mutableListOf()\n var stripOffsets: List = mutableListOf()\n var tileByteCounts: List = mutableListOf()\n var tileOffsets: List = mutableListOf()\n var tileLength: Int = 0\n var tileWidth: Int = 0\n var xResolution: Number? = null\n var yResolution: Number? = null\n var geoAsciiParams: String? = null\n var geoDoubleParams: List = mutableListOf()\n var geoKeyDirectory: List = mutableListOf()\n var modelPixelScale: List = mutableListOf()\n var modelTiePoint: List = mutableListOf()\n var modelTransformation: List = mutableListOf()\n var noData: Number? = null\n var metaData: String? = null\n var bbox: Sector? = null\n var gtModelTypeGeoKey: Number? = null\n var gtRasterTypeGeoKey: Number? = null\n var gtCitationGeoKey: String? = null\n var geographicTypeGeoKey: Number? = null\n var geogCitationGeoKey: String? = null\n var geogAngularUnitsGeoKey: Number? = null\n var geogAngularUnitSizeGeoKey: Number? = null\n var geogSemiMajorAxisGeoKey: Number? = null\n var geogInvFlatteningGeoKey: Number? = null\n var projectedCSType: Number? = null\n var projLinearUnits: Number? = null\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.geom.Location\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Logger\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.INFO\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.*\nimport kotlin.math.ceil\n\nclass GeoTiffReader(arrayBuffer: ArrayBuffer) {\n private val imageFileDirectories = mutableListOf()\n private val geoTiffData = DataView(arrayBuffer)\n private val metadata = GeoTiffMetadata()\n private var isLittleEndian = false\n\n init {\n getEndianness()\n require(isTiffFileType()) { logMessage(ERROR, \"GeoTiffReader\", \"constructor\",\"Invalid file type\") }\n parseImageFileDirectory(GeoTiffUtil.getBytes(geoTiffData, 4, 4, isLittleEndian).toInt())\n getMetadataFromImageFileDirectory()\n parseGeoKeys()\n setBBox()\n }\n\n private fun getEndianness() {\n isLittleEndian = when (GeoTiffUtil.getBytes(geoTiffData, 0, 2, isLittleEndian)) {\n 0x4949 -> true\n 0x4D4D -> false\n else -> error(logMessage(ERROR, \"GeoTiffReader\", \"getEndianness\",\"Invalid Byte Order Value\"))\n }\n }\n\n private fun isTiffFileType() = GeoTiffUtil.getBytes(geoTiffData, 2, 2, isLittleEndian) == 42\n\n private fun isGeoTiff() = getIFDByTag(GeoTiffConstants.GEO_KEY_DIRECTORY) != null\n\n fun createTypedElevationArray(): ArrayBufferView {\n val elevations = mutableListOf()\n if (metadata.stripOffsets.isNotEmpty()) {\n elevations.addAll(parseStrips(true).flatten())\n } else if (metadata.tileOffsets.isNotEmpty()) {\n val tiles = parseTiles(true)\n val tilesAcross = (metadata.imageWidth + metadata.tileWidth - 1) / metadata.tileWidth\n\n for (y in 0 until metadata.imageLength) for (x in 0 until metadata.imageWidth) {\n val tileAcross = x / metadata.tileWidth\n val tileDown = y / metadata.tileLength\n val tileIndex = tileDown * tilesAcross + tileAcross\n val xInTile = x % metadata.tileWidth\n val yInTile = y % metadata.tileLength\n val sampleIndex = yInTile * metadata.tileWidth + xInTile\n val pixelSamples = tiles[tileIndex][sampleIndex]\n elevations.add(pixelSamples)\n }\n } else error(logMessage(ERROR, \"GeoTiffReader\", \"createTypedElevationArray\",\"Invalid metadata\"))\n\n return when(metadata.bitsPerSample[0]) {\n 8 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int8Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint8Array(elevations.toTypedArray().unsafeCast>())\n }\n 16 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int16Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint16Array(elevations.toTypedArray().unsafeCast>())\n }\n 32 -> when (metadata.sampleFormat) {\n TiffConstants.SampleFormat.SIGNED -> Int32Array(elevations.toTypedArray().unsafeCast>())\n TiffConstants.SampleFormat.IEEE_FLOAT -> Float32Array(elevations.toTypedArray().unsafeCast>())\n else -> Uint32Array(elevations.toTypedArray().unsafeCast>())\n }\n 64 -> Float64Array(elevations.toTypedArray().unsafeCast>())\n else -> error(logMessage(ERROR, \"GeoTiffReader\", \"createTypedElevationArray\",\"Invalid bits per sample\"))\n }\n }\n\n private fun parseStrips(returnElevation: Boolean): Array> {\n val bytesPerPixel = metadata.samplesPerPixel * metadata.bitsPerSample[0] / 8\n return Array(metadata.stripOffsets.size) {\n parseBlock(\n returnElevation, metadata.compression, bytesPerPixel, metadata.stripByteCounts[it],\n metadata.stripOffsets[it], metadata.bitsPerSample, metadata.sampleFormat\n )\n }\n }\n\n private fun parseBlock(\n returnElevation: Boolean, compression: Int, bytesPerPixel: Int, blockByteCount: Int, blockOffset: Int,\n bitsPerSample: List, sampleFormat: Int\n ) = when (compression) {\n TiffConstants.Compression.UNCOMPRESSED ->\n parseUncompressedBlock(blockByteCount, bitsPerSample, blockOffset, sampleFormat, returnElevation, bytesPerPixel)\n TiffConstants.Compression.PACK_BITS ->\n parsePackBitsCompressedBlocks(bytesPerPixel, blockByteCount, blockOffset, bitsPerSample, sampleFormat, returnElevation)\n TiffConstants.Compression.CCITT_1D -> {\n log(WARN, \"Compression type not yet implemented: CCITT_1D\")\n emptyArray()\n }\n TiffConstants.Compression.GROUP_3_FAX -> {\n log(WARN, \"Compression type not yet implemented: GROUP_3_FAX\")\n emptyArray()\n }\n TiffConstants.Compression.GROUP_4_FAX -> {\n log(WARN, \"Compression type not yet implemented: GROUP_4_FAX\")\n emptyArray()\n }\n TiffConstants.Compression.LZW -> {\n log(WARN, \"Compression type not yet implemented: LZW\")\n emptyArray()\n }\n TiffConstants.Compression.JPEG -> {\n log(WARN, \"Compression type not yet implemented: JPEG\")\n emptyArray()\n }\n else -> {\n log(WARN, \"Unsupported compression type $compression\")\n emptyArray()\n }\n }\n\n private fun parsePackBitsCompressedBlocks(\n bytesPerPixel: Int, blockByteCount: Int, blockOffset: Int, bitsPerSample: List, sampleFormat: Int,\n returnElevation: Boolean\n ): Array {\n val block = mutableListOf()\n val arrayBuffer = if (metadata.tileWidth != 0 && metadata.tileLength != 0) {\n Int8Array(metadata.tileWidth * metadata.tileLength * bytesPerPixel)\n } else {\n Int8Array(metadata.rowsPerStrip * metadata.imageWidth * bytesPerPixel)\n }\n val uncompressedDataView = DataView(arrayBuffer.buffer)\n var newBlock = true\n var blockLength = 0\n var numOfIterations = 0\n var uncompressedOffset = 0\n\n for (byteOffset in 0 until blockByteCount) {\n if (newBlock) {\n blockLength = 1\n numOfIterations = 1\n newBlock = false\n when (val nextSourceByte = geoTiffData.getInt8(blockOffset + byteOffset)) {\n in 0..127 -> blockLength = nextSourceByte + 1\n in -127..-1 -> numOfIterations = -nextSourceByte + 1\n else -> newBlock = true\n }\n } else {\n val currentByte = GeoTiffUtil.getBytes(geoTiffData, blockOffset + byteOffset, 1, isLittleEndian)\n for (currentIteration in 0 until numOfIterations) {\n uncompressedDataView.setInt8(uncompressedOffset, currentByte.toByte())\n uncompressedOffset++\n }\n blockLength--\n if (blockLength == 0) newBlock = true\n }\n }\n\n for (byteOffset in 0 until arrayBuffer.length step bytesPerPixel) {\n val pixel = mutableListOf()\n for ((i, sample) in bitsPerSample.withIndex()) {\n val bytesPerSample = sample / 8\n val sampleOffset = i * bytesPerSample\n pixel.add(GeoTiffUtil.getSampleBytes(\n uncompressedDataView, byteOffset + sampleOffset, bytesPerSample, sampleFormat, isLittleEndian\n ))\n }\n if (returnElevation) block.add(pixel[0]) else block.addAll(pixel)\n }\n return block.toTypedArray()\n }\n\n private fun parseUncompressedBlock(\n blockByteCount: Int, bitsPerSample: List, blockOffset: Int, sampleFormat: Int, returnElevation: Boolean,\n bytesPerPixel: Int\n ): Array {\n val block = mutableListOf()\n var byteOffset = 0\n while (byteOffset < blockByteCount) {\n val pixel = mutableListOf()\n for ((m, sample) in bitsPerSample.withIndex()) {\n val bytesPerSample = sample / 8\n val sampleOffset = m * bytesPerSample\n pixel.add(GeoTiffUtil.getSampleBytes(\n geoTiffData, blockOffset + byteOffset + sampleOffset, bytesPerSample, sampleFormat, isLittleEndian\n ))\n }\n if (returnElevation) block.add(pixel[0])\n else block.addAll(pixel.toList())\n byteOffset += bytesPerPixel\n }\n return block.toTypedArray()\n }\n\n private fun parseTiles(returnElevation: Boolean): Array> {\n val bytesPerPixel = metadata.samplesPerPixel * metadata.bitsPerSample[0] / 8\n val tilesAcross = ceil(metadata.imageWidth / metadata.tileWidth.toDouble()).toInt()\n val tilesDown = ceil(metadata.imageLength / metadata.tileLength.toDouble()).toInt()\n return Array(tilesDown * tilesAcross) {\n parseBlock(\n returnElevation, metadata.compression, bytesPerPixel, metadata.tileByteCounts[it],\n metadata.tileOffsets[it], metadata.bitsPerSample, metadata.sampleFormat\n )\n }\n }\n\n private fun geoTiffImageToPCS(xValue: Double, yValue: Double) = when {\n metadata.modelTiePoint.size > 6 && metadata.modelPixelScale.isEmpty() -> TODO()\n metadata.modelTransformation.size == 16 -> Location(\n Angle.fromDegrees(yValue * metadata.modelTransformation[4] + yValue * metadata.modelTransformation[5]\n + metadata.modelTransformation[7]),\n Angle.fromDegrees(xValue * metadata.modelTransformation[0] + yValue * metadata.modelTransformation[1]\n + metadata.modelTransformation[3])\n )\n metadata.modelPixelScale.size < 3 || metadata.modelTiePoint.size < 6 -> Location(Angle.fromDegrees(yValue), Angle.fromDegrees(xValue))\n else -> Location(\n Angle.fromDegrees((yValue - metadata.modelTiePoint[1]) * -1 * metadata.modelPixelScale[1] + metadata.modelTiePoint[4]),\n Angle.fromDegrees((xValue - metadata.modelTiePoint[0]) * metadata.modelPixelScale[0] + metadata.modelTiePoint[3])\n )\n }\n\n private fun setBBox() {\n val upperLeft = geoTiffImageToPCS(0.0, 0.0)\n val upperRight = geoTiffImageToPCS(metadata.imageWidth.toDouble(), 0.0)\n val lowerLeft = geoTiffImageToPCS(0.0, metadata.imageLength.toDouble())\n metadata.bbox = Sector(lowerLeft.latitude, upperLeft.latitude, upperLeft.longitude, upperRight.longitude)\n }\n\n private fun getMetadataFromImageFileDirectory() {\n for (ifd in imageFileDirectories) when (ifd.tag) {\n TiffConstants.IFDTag.BITS_PER_SAMPLE -> metadata.bitsPerSample = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.COLOR_MAP -> metadata.colorMap = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.COMPRESSION -> metadata.compression = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.EXTRA_SAMPLES -> metadata.extraSamples = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.IMAGE_DESCRIPTION -> metadata.imageDescription = ifd.getIFDEntryAsciiValue()\n TiffConstants.IFDTag.IMAGE_LENGTH -> metadata.imageLength = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.IMAGE_WIDTH -> metadata.imageWidth = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.MAX_SAMPLE_VALUE -> metadata.maxSampleValue = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.MIN_SAMPLE_VALUE -> metadata.minSampleValue = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.ORIENTATION -> metadata.orientation = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.PHOTOMETRIC_INTERPRETATION -> metadata.photometricInterpretation = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.PLANAR_CONFIGURATION -> metadata.planarConfiguration = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.ROWS_PER_STRIP -> metadata.rowsPerStrip = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.RESOLUTION_UNIT -> metadata.resolutionUnit = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.SAMPLES_PER_PIXEL -> metadata.samplesPerPixel = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.SAMPLE_FORMAT -> metadata.sampleFormat = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.SOFTWARE -> metadata.software = ifd.getIFDEntryValue().toTypedArray()\n TiffConstants.IFDTag.STRIP_BYTE_COUNTS -> metadata.stripByteCounts = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.STRIP_OFFSETS -> metadata.stripOffsets = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_BYTE_COUNTS -> metadata.tileByteCounts = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_OFFSETS -> metadata.tileOffsets = ifd.getIFDEntryValue().unsafeCast>()\n TiffConstants.IFDTag.TILE_LENGTH -> metadata.tileLength = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.TILE_WIDTH -> metadata.tileWidth = ifd.getIFDEntryValue()[0].toInt()\n TiffConstants.IFDTag.X_RESOLUTION -> metadata.xResolution = ifd.getIFDEntryValue()[0]\n TiffConstants.IFDTag.Y_RESOLUTION -> metadata.yResolution = ifd.getIFDEntryValue()[0]\n GeoTiffConstants.GEO_ASCII_PARAMS -> metadata.geoAsciiParams = ifd.getIFDEntryAsciiValue()\n GeoTiffConstants.GEO_DOUBLE_PARAMS -> metadata.geoDoubleParams = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.GEO_KEY_DIRECTORY -> metadata.geoKeyDirectory = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.MODEL_PIXEL_SCALE -> metadata.modelPixelScale = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.MODEL_TIEPOINT -> metadata.modelTiePoint = ifd.getIFDEntryValue().unsafeCast>()\n GeoTiffConstants.GDAL_METADATA -> metadata.metaData = ifd.getIFDEntryAsciiValue()\n GeoTiffConstants.GDAL_NODATA -> metadata.noData = ifd.getIFDEntryValue()[0]\n else -> log(WARN, \"Ignored GeoTiff tag: ${ifd.tag}\")\n }\n }\n\n private fun parseGeoKeys() {\n require(isGeoTiff()) { logMessage(Logger.INFO, \"GeoTiffReader\", \"parse\", \"Invalid GeoTiff file\") }\n val geoKeyDirectory = metadata.geoKeyDirectory\n if (geoKeyDirectory.isNotEmpty()) {\n val numberOfKeys = geoKeyDirectory[3]\n\n for (i in 0 until numberOfKeys) {\n val keyId = geoKeyDirectory[4 + i * 4]\n val tiffTagLocation = geoKeyDirectory[5 + i * 4]\n val count = geoKeyDirectory[6 + i * 4]\n val valueOffset = geoKeyDirectory[7 + i * 4]\n\n when (keyId) {\n GeoTiffConstants.GT_MODEL_TYPE_GEO_KEY ->\n metadata.gtModelTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count,valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GT_RASTER_TYPE_GEO_KEY ->\n metadata.gtRasterTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GT_CITATION_GEO_KEY ->\n metadata.gtCitationGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getAsciiGeoKeyValue(metadata.geoAsciiParams)\n GeoTiffConstants.GEOGRAPHIC_TYPE_GEO_KEY ->\n metadata.geographicTypeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_CITATION_GEO_KEY ->\n metadata.geogCitationGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getAsciiGeoKeyValue(metadata.geoAsciiParams)\n GeoTiffConstants.GEOG_ANGULAR_UNITS_GEO_KEY ->\n metadata.geogAngularUnitsGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_ANGULAR_UNIT_SIZE_GEO_KEY ->\n metadata.geogAngularUnitSizeGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset )\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_SEMI_MAJOR_AXIS_GEO_KEY ->\n metadata.geogSemiMajorAxisGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.GEOG_INV_FLATTENING_GEO_KEY ->\n metadata.geogInvFlatteningGeoKey = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.PROJECTED_CS_TYPE_GEO_KEY ->\n metadata.projectedCSType = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n GeoTiffConstants.PROJ_LINEAR_UNITS_GEO_KEY ->\n metadata.projLinearUnits = GeoTiffKeyEntry(keyId, tiffTagLocation, count, valueOffset)\n .getGeoKeyValue(metadata.geoDoubleParams)\n else -> log(WARN, \"Ignored GeoTiff key: $keyId\")\n }\n }\n } else error(logMessage(INFO, \"GeoTiffReader\", \"parseGeoKeys\", \"missingGeoKeyDirectoryTag\"))\n }\n\n private fun parseImageFileDirectory(offset: Int) {\n val noOfDirectoryEntries = GeoTiffUtil.getBytes(geoTiffData, offset, 2, isLittleEndian).toInt()\n val directoryEntries = mutableListOf()\n var i = offset + 2\n repeat(noOfDirectoryEntries) {\n val tag = GeoTiffUtil.getBytes(geoTiffData, i, 2, isLittleEndian).toInt()\n val type = GeoTiffUtil.getBytes(geoTiffData, i + 2, 2, isLittleEndian).toInt()\n val count = GeoTiffUtil.getBytes(geoTiffData, i + 4, 4, isLittleEndian).toInt()\n val valueOffset = GeoTiffUtil.getBytes(geoTiffData, i + 8, 4, isLittleEndian).toInt()\n directoryEntries.add(TiffIFDEntry(tag, type, count, valueOffset, geoTiffData, isLittleEndian))\n i += 12\n }\n imageFileDirectories.addAll(directoryEntries)\n val nextIfdOffset = GeoTiffUtil.getBytes(geoTiffData, i, 4, isLittleEndian).toInt()\n if (nextIfdOffset != 0) parseImageFileDirectory(nextIfdOffset)\n }\n\n // Get image file directory by tag value.\n private fun getIFDByTag(tag: Int) = imageFileDirectories.find { it.tag == tag }\n}",null,null,null,"package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.DataView\n\nobject GeoTiffUtil {\n\n fun getBytes(\n geoTiffData: DataView, byteOffset: Int, numOfBytes: Int, isLittleEndian: Boolean, isSigned: Boolean = false\n ): Number = when {\n numOfBytes <= 0 -> error(logMessage(ERROR, \"GeoTiffUtil\", \"getBytes\", \"No bytes requested\"))\n numOfBytes <= 1 -> if (isSigned) geoTiffData.getInt8(byteOffset) else geoTiffData.getUint8(byteOffset)\n numOfBytes <= 2 -> if (isSigned) geoTiffData.getInt16(byteOffset, isLittleEndian) else geoTiffData.getUint16(byteOffset, isLittleEndian)\n numOfBytes <= 3 -> if (isSigned) geoTiffData.getInt32(byteOffset, isLittleEndian) ushr 8 else geoTiffData.getUint32(byteOffset, isLittleEndian) ushr 8\n numOfBytes <= 4 -> if (isSigned) geoTiffData.getInt32(byteOffset, isLittleEndian) else geoTiffData.getUint32(byteOffset, isLittleEndian)\n numOfBytes <= 8 -> geoTiffData.getFloat64(byteOffset, isLittleEndian)\n else -> error(logMessage(ERROR, \"GeoTiffUtil\", \"getBytes\", \"Too many bytes requested\"))\n }\n\n fun getSampleBytes(\n geoTiffData: DataView, byteOffset: Int, numOfBytes: Int, sampleFormat: Int, isLittleEndian: Boolean\n ): Number = when (sampleFormat) {\n TiffConstants.SampleFormat.UNSIGNED -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, false)\n TiffConstants.SampleFormat.SIGNED -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, true)\n TiffConstants.SampleFormat.IEEE_FLOAT -> when (numOfBytes) {\n 3 -> geoTiffData.getFloat32(byteOffset, isLittleEndian).toInt() ushr 8\n 4 -> geoTiffData.getFloat32(byteOffset, isLittleEndian)\n 8 -> geoTiffData.getFloat64(byteOffset, isLittleEndian)\n else -> error(logMessage(\n ERROR, \"GeoTiffUtil\", \"getSampleBytes\",\n \"Do not attempt to parse the data not handled: $numOfBytes\"\n ))\n }\n else -> getBytes(geoTiffData, byteOffset, numOfBytes, isLittleEndian, false)\n }\n}","package earth.worldwind.formats.geotiff\n\nclass TiffConstants {\n object IFDTag {\n const val NEW_SUBFILE_TYPE = 254\n const val SUBFILE_TYPE = 255\n const val IMAGE_WIDTH = 256\n const val IMAGE_LENGTH = 257\n const val BITS_PER_SAMPLE = 258\n const val COMPRESSION = 259\n const val PHOTOMETRIC_INTERPRETATION = 262\n const val THRESHHOLDING = 263\n const val CELL_WIDTH = 264\n const val CELL_LENGTH = 265\n const val FILL_ORDER = 266\n const val DOCUMENT_NAME = 269\n const val IMAGE_DESCRIPTION = 270\n const val MAKE = 271\n const val MODEL = 272\n const val STRIP_OFFSETS = 273\n const val ORIENTATION = 274\n const val SAMPLES_PER_PIXEL = 277\n const val ROWS_PER_STRIP = 278\n const val STRIP_BYTE_COUNTS = 279\n const val MIN_SAMPLE_VALUE = 280\n const val MAX_SAMPLE_VALUE = 281\n const val X_RESOLUTION = 282\n const val Y_RESOLUTION = 283\n const val PLANAR_CONFIGURATION = 284\n const val PAGE_NAME = 285\n const val X_POSITION = 286\n const val Y_POSITION = 287\n const val FREE_OFFSETS = 288\n const val FREE_BYTE_COUNTS = 289\n const val GRAY_RESPONSE_UNIT = 290\n const val GRAY_RESPONSE_CURVE = 291\n const val T4_OPTIONS = 292\n const val T6_OPTIONS = 293\n const val RESOLUTION_UNIT = 296\n const val PAGE_NUMBER = 297\n const val TRANSFER_FUNCTION = 301\n const val SOFTWARE = 305\n const val DATE_TIME = 306\n const val ARTIST = 315\n const val HOST_COMPUTER = 316\n const val PREDICTOR = 317\n const val WHITE_POINT = 318\n const val PRIMARY_CHROMATICI_TIES = 319\n const val COLOR_MAP = 320\n const val HALFTONE_HINTS = 321\n const val TILE_WIDTH = 322\n const val TILE_LENGTH = 323\n const val TILE_OFFSETS = 324\n const val TILE_BYTE_COUNTS = 325\n const val INK_SET = 332\n const val INK_NAMES = 333\n const val NUMBER_OF_INKS = 334\n const val DOT_RANGE = 336\n const val TARGET_PRINTER = 337\n const val EXTRA_SAMPLES = 338\n const val SAMPLE_FORMAT = 339\n const val S_MIN_SAMPLE_VALUE = 340\n const val S_MAX_SAMPLE_VALUE = 341\n const val TRANSFER_RANGE = 342\n const val JPEG_PROC = 512\n const val JPEG_INTERCHANGE_FORMAT = 513\n const val JPEG_INTERCHANGE_FORMAT_LENGTH = 514\n const val JPEG_RESTART_INTERVAL = 515\n const val JPEG_LOSSLESS_PREDICTORS = 517\n const val JPEG_POINT_TRANSFORMS = 518\n const val JPEG_Q_TABLES = 519\n const val JPEG_DC_TABLES = 520\n const val JPEG_AC_TABLES = 521\n const val Y_CB_CR_COEFFICIENTS = 529\n const val Y_CB_CR_SUB_SAMPLING = 530\n const val Y_CB_CR_POSITIONING = 531\n const val REFERENCE_BLACK_WHITE = 532\n const val COPYRIGHT = 33432\n }\n\n object Compression {\n const val UNCOMPRESSED = 1\n const val CCITT_1D = 2\n const val GROUP_3_FAX = 3\n const val GROUP_4_FAX = 4\n const val LZW = 5\n const val JPEG = 6\n const val PACK_BITS = 32773\n }\n\n object Orientation {\n const val ROW0_IS_TOP_COL0_IS_LHS = 1\n const val ROW0_IS_TOP_COL0_IS_RHS = 2\n const val ROW0_IS_BOTTOM_COL0_IS_RHS = 3\n const val ROW0_IS_BOTTOM_COL0_IS_LHS = 4\n const val ROW0_IS_LHS_COL0_IS_TOP = 5\n const val ROW0_IS_RHS_COL0_IS_TOP = 6\n const val ROW0_IS_RHS_COL0_IS_BOTTOM = 7\n const val ROW0_IS_LHS_COL0_IS_BOTTOM = 8\n }\n\n object PhotometricInterpretation {\n const val WHITE_IS_ZERO = 0\n const val BLACK_IS_ZERO = 1\n const val RGB = 2\n const val RGB_PALETTE = 3\n const val TRANSPARENCY_MASK = 4\n const val CMYK = 5\n const val Y_CB_CR = 6\n const val CIE_LAB = 7\n }\n\n object PlanarConfiguration {\n const val CHUNKY = 1\n const val PLANAR = 2\n }\n\n object ResolutionUnit {\n const val NONE = 1\n const val INCH = 2\n const val CENTIMETER = 3\n }\n\n object SampleFormat {\n const val UNSIGNED = 1\n const val SIGNED = 2\n const val IEEE_FLOAT = 3\n const val UNDEFINED = 4\n }\n\n object Type {\n const val BYTE = 1\n const val ASCII = 2\n const val SHORT = 3\n const val LONG = 4\n const val RATIONAL = 5\n const val SBYTE = 6\n const val UNDEFINED = 7\n const val SSHORT = 8\n const val SLONG = 9\n const val SRATIONAL = 10\n const val FLOAT = 11\n const val DOUBLE = 12\n }\n}","package earth.worldwind.formats.geotiff\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.khronos.webgl.DataView\n\nclass TiffIFDEntry(\n val tag: Int,\n private val type: Int,\n private val count: Int,\n private val valueOffset: Int,\n private val geoTiffData: DataView,\n private val isLittleEndian: Boolean\n) {\n fun getIFDEntryValue(allowAscii: Boolean = false): List {\n require (allowAscii || type != TiffConstants.Type.ASCII) {\n logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\", \"Invalid Key Type - ASCII not allowed.\")\n }\n val length = getIFDTypeLength()\n return if (length * count <= 4) listOf(if (!isLittleEndian) valueOffset shr ((4 - length) * 8) else valueOffset)\n else getIFDEntryValueLongerThan4(length)\n }\n\n fun getIFDEntryAsciiValue(): String {\n require(type == TiffConstants.Type.ASCII) {\n logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\",\"Invalid Key Type - ASCII required.\")\n }\n return getIFDEntryValue(true).map { it.toInt().toChar() }.joinToString(\"\")\n }\n\n private fun getIFDTypeLength() = when (type) {\n TiffConstants.Type.BYTE, TiffConstants.Type.ASCII, TiffConstants.Type.SBYTE, TiffConstants.Type.UNDEFINED -> 1\n TiffConstants.Type.SHORT, TiffConstants.Type.SSHORT -> 2\n TiffConstants.Type.LONG, TiffConstants.Type.SLONG, TiffConstants.Type.FLOAT -> 4\n TiffConstants.Type.RATIONAL, TiffConstants.Type.SRATIONAL, TiffConstants.Type.DOUBLE -> 8\n else -> -1\n }\n\n private fun getIFDEntryValueLongerThan4(ifdTypeLength: Int): List {\n val ifdValues = mutableListOf()\n for (i in 0 until count) {\n val indexOffset = ifdTypeLength * i\n if (ifdTypeLength >= 8) when (type) {\n TiffConstants.Type.RATIONAL, TiffConstants.Type.SRATIONAL -> {\n ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, 4, isLittleEndian))\n ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset + 4, 4, isLittleEndian))\n }\n TiffConstants.Type.DOUBLE -> ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, 8, isLittleEndian))\n else -> error(logMessage(ERROR, \"TiffIFDEntry\", \"getIFDEntryValue\", \"Invalid Type of IFD\"))\n } else ifdValues.add(GeoTiffUtil.getBytes(geoTiffData, valueOffset + indexOffset, ifdTypeLength, isLittleEndian))\n }\n return ifdValues\n }\n}\n","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple mouse clicks.\n */\nopen class ClickRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfClicks = 1\n var button: Short = 0\n var maxMouseMovement = 5\n var maxClickDuration = 500\n var maxClickInterval = 400\n protected val clicks = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n clicks.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (button != event.button) state = FAILED else {\n clicks.add(Click(clientX, clientY))\n failAfterDelay(maxClickDuration) // fail if the click is down too long\n }\n }\n\n override fun mouseMove(event: MouseEvent) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxMouseMovement * window.devicePixelRatio) state = FAILED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (state != POSSIBLE) return\n if (mouseButtonMask != 0) return // wait until the last button is up\n if (clicks.size == numberOfClicks) {\n clientX = clicks[0].clientX\n clientY = clicks[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxClickInterval) // fail if the interval between clicks is too long\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() { timeout?.let { window.clearTimeout(it) }.also { timeout = null } }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for mouse drag gestures.\n */\nopen class DragRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var button: Short = 0\n var interpretDistance = 5\n\n override fun mouseMove(event: MouseEvent) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) {\n state = if (shouldRecognize()) {\n resetTranslation() // set translation to zero when the drag begins\n BEGAN\n } else {\n FAILED\n }\n }\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun mouseUp(event: MouseEvent) {\n if (mouseButtonMask == 0) { // last button up\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state == POSSIBLE) state = FAILED // mouse gestures fail upon receiving a touch event\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret mouse movement when the cursor moves far enough\n }\n\n /**\n * @return true when the specified button is the only button down\n */\n protected open fun shouldRecognize() = 1 shl button.toInt() == mouseButtonMask\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.util.Logger\nimport org.w3c.dom.Touch\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.Event\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport org.w3c.dom.pointerevents.PointerEvent\n\n/**\n * Gesture recognizers translate user input event streams into higher level actions. A gesture\n * recognizer is associated with an event target, which dispatches mouse and keyboard events to the gesture\n * recognizer. When a gesture recognizer has received enough information from the event stream to interpret the\n * action, it calls its callback functions. Callback functions may be specified at construction or added to the\n * [gestureCallbacks] list after construction.\n */\nabstract class GestureRecognizer(\n /**\n * Indicates the document element this gesture recognizer observes for mouse and touch events.\n */\n val target: EventTarget,\n /**\n * An optional function to call when this gesture is recognized. If non-null, the\n * function is called when this gesture is recognized, and is passed a single argument: this gesture recognizer,\n * e.g., gestureCallback(recognizer).\n */\n callback: ((GestureRecognizer)->Unit)?\n): EventListener {\n /**\n * Indicates whether this gesture recognizer is enabled. When false, this gesture recognizer will ignore any events\n * dispatched by its target.\n */\n var isEnabled = true\n /**\n * Indicates this gesture's current state. Possible values are [POSSIBLE], [FAILED], [RECOGNIZED], [BEGAN],\n * [CHANGED], [CANCELLED] and [ENDED].\n */\n var state = POSSIBLE\n set(newState) {\n nextState = null // clear any pending state transition\n when (newState) {\n POSSIBLE -> field = newState\n FAILED -> {\n field = newState\n updateRecognizersWaitingForFailure()\n resetIfEventsEnded()\n }\n RECOGNIZED -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Recognized\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n BEGAN -> {\n if (tryToRecognize(newState)) { // may prevent the transition to Began\n field = newState\n prepareToRecognize()\n notifyListeners()\n callGestureCallbacks()\n }\n }\n CHANGED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n }\n CANCELLED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n ENDED -> {\n field = newState\n notifyListeners()\n callGestureCallbacks()\n resetIfEventsEnded()\n }\n }\n }\n /**\n * Indicates the X coordinate of this gesture.\n */\n var clientX = 0\n /**\n * Returns the Y coordinate of this gesture.\n */\n var clientY = 0\n /**\n * Indicates this gesture's translation along the X axis since the gesture started.\n */\n var translationX = 0.0\n private set\n /**\n * Indicates this gesture's translation along the Y axis since the gesture started.\n */\n var translationY = 0.0\n private set\n /**\n * Indicates the currently pressed mouse buttons as a bitmask. A value of 0 indicates that no buttons are\n * pressed. A nonzero value indicates that one or more buttons are pressed as follows: bit 1 indicates the\n * primary button, bit 2 indicates the auxiliary button, bit 3 indicates the secondary button.\n */\n var mouseButtonMask = 0\n private set\n /**\n * Indicates the number of active touches.\n */\n val touchCount get() = touches.size\n /**\n * The list of functions to call when this gesture is recognized. The functions have a single argument:\n * this gesture recognizer, e.g., gestureCallback(recognizer). Applications may\n * add functions to this array or remove them.\n */\n val gestureCallbacks = mutableListOf<(GestureRecognizer)->Unit>()\n private var nextState: GestureState? = null\n private var clientStartX = 0\n private var clientStartY = 0\n private var translationWeight = 0.4\n private val touches = mutableListOf()\n private var touchCentroidShiftX = 0\n private var touchCentroidShiftY = 0\n private val canRecognizeWith = mutableSetOf()\n private val requiresFailureOf = mutableSetOf()\n private val requiredToFailBy = mutableSetOf()\n private val listenerList = mutableListOf()\n\n companion object {\n val allRecognizers = mutableListOf()\n }\n\n init {\n // Add the optional gesture callback.\n callback?.let { gestureCallbacks += it }\n\n // Add this recognizer to the list of all recognizers.\n allRecognizers += this\n }\n\n /**\n * Registers a gesture state listener on this GestureRecognizer. Registering state listeners using this function\n * enables applications to receive notifications of gesture recognition.\n *\n * @param listener The function to call when the event occurs.\n */\n fun addListener(listener: GestureListener) { listenerList += listener }\n\n /**\n * Removes a gesture state listener from this GestureRecognizer. The listener must be the same object passed to\n * addListener. Calling removeListener with arguments that do not identify a currently registered\n * listener has no effect.\n *\n * @param listener The listener to remove. Must be the same object passed to addListener.\n */\n fun removeListener(listener: GestureListener) { listenerList -= listener }\n\n fun touch(index: Int): TouchWrapper {\n require(index in touches.indices) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"touch\", \"indexOutOfRange\")\n }\n return touches[index]\n }\n\n fun recognizeSimultaneouslyWith(recognizer: GestureRecognizer) {\n canRecognizeWith.add(recognizer)\n recognizer.canRecognizeWith.add(this)\n }\n\n fun canRecognizeSimultaneouslyWith(recognizer: GestureRecognizer) = canRecognizeWith.contains(recognizer)\n\n fun requireRecognizerToFail(recognizer: GestureRecognizer) {\n requiresFailureOf.add(recognizer)\n recognizer.requiredToFailBy.add(this)\n }\n\n fun requiresRecognizerToFail(recognizer: GestureRecognizer) = requiresFailureOf.contains(recognizer)\n\n fun requiredToFailByRecognizer(recognizer: GestureRecognizer) = requiredToFailBy.contains(recognizer)\n\n open fun reset() {\n state = POSSIBLE\n nextState = null\n clientX = 0\n clientY = 0\n clientStartX = 0\n clientStartY = 0\n translationX = 0.0\n translationY = 0.0\n mouseButtonMask = 0\n touches.clear()\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun resetTranslation() {\n clientStartX = clientX\n clientStartY = clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n }\n\n protected open fun prepareToRecognize() {}\n\n protected open fun mouseDown(event: MouseEvent) {}\n protected open fun mouseMove(event: MouseEvent) {}\n protected open fun mouseUp(event: MouseEvent) {}\n\n protected open fun touchStart(touch: TouchWrapper) {}\n protected open fun touchMove(touch: TouchWrapper) {}\n protected open fun touchCancel(touch: TouchWrapper) {}\n protected open fun touchEnd(touch: TouchWrapper) {}\n \n protected open fun updateRecognizersWaitingForFailure() {\n // Transition gestures that are waiting for this gesture to transition to Failed.\n requiredToFailBy.forEach { r -> r.nextState?.let { r.state = it } }\n }\n\n protected open fun tryToRecognize(newState: GestureState): Boolean {\n // Transition to Failed if another gesture can prevent this gesture from recognizing.\n if (allRecognizers.any { r -> canBePreventedByRecognizer(r) }) {\n state = FAILED\n return false\n }\n\n // Delay the transition to Recognized/Began if this gesture is waiting for a gesture in the Possible state.\n if (allRecognizers.any { r -> isWaitingForRecognizerToFail(r) }) {\n nextState = newState\n return false\n }\n\n // Transition to Failed state all other gestures that can be prevented from recognizing by this gesture.\n allRecognizers.filter { r -> canPreventRecognizer(r) }.forEach { r -> r.state = FAILED }\n return true\n }\n\n protected open fun canPreventRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE &&\n (requiredToFailByRecognizer(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun canBePreventedByRecognizer(that: GestureRecognizer) =\n this != that && target == that.target && that.state == RECOGNIZED &&\n (requiresRecognizerToFail(that) || !canRecognizeSimultaneouslyWith(that))\n\n protected open fun isWaitingForRecognizerToFail(that: GestureRecognizer) =\n this != that && target == that.target && that.state == POSSIBLE && requiresRecognizerToFail(that)\n\n protected open fun notifyListeners() = listenerList.forEach { l -> l.gestureStateChanged(this) }\n\n protected open fun callGestureCallbacks() = gestureCallbacks.forEach { c -> c(this) }\n\n override fun handleEvent(event: Event) {\n if (!isEnabled) return\n\n if (event.defaultPrevented && state == POSSIBLE) return // ignore cancelled events while in the Possible state\n\n try {\n when {\n event.type == \"mousedown\" && event is MouseEvent -> handleMouseDown(event)\n event.type == \"mousemove\" && event is MouseEvent -> handleMouseMove(event)\n event.type == \"mouseup\" && event is MouseEvent -> handleMouseUp(event)\n event.type == \"touchstart\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchStart(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchmove\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchMove(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchcancel\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchCancel(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"touchend\" && event is TouchEvent -> for (i in 0 until event.changedTouches.length)\n handleTouchEnd(wrapTouch(event.changedTouches.item(i)!!))\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseDown(event)\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseMove(event)\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"mouse\" -> {\n // Intentionally left blank. The W3C Pointer Events specification is ambiguous on what cancel means\n // for mouse input, and there is no evidence that this event is actually generated (6/19/2015).\n }\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"mouse\" ->\n handleMouseUp(event)\n event.type == \"pointerdown\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchStart(wrapPointer(event))\n event.type == \"pointermove\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchMove(wrapPointer(event))\n event.type == \"pointercancel\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchCancel(wrapPointer(event))\n event.type == \"pointerup\" && event is PointerEvent && event.pointerType == \"touch\" ->\n handleTouchEnd(wrapPointer(event))\n else -> Logger.logMessage(Logger.INFO, \"GestureRecognizer\", \"handleEvent\",\n \"Unrecognized event type: ${event.type}\")\n }\n } catch (e: Exception) {\n Logger.logMessage(Logger.ERROR, \"GestureRecognizer\", \"handleEvent\", \"Error handling event.\\n$e\")\n }\n }\n\n protected open fun handleMouseDown(event: MouseEvent) {\n if (event.type == \"mousedown\" && touches.size > 0) return // ignore synthesized mouse down events on Android Chrome\n\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask != 0) return // ignore redundant mouse down events\n\n if (mouseButtonMask == 0) { // first button down\n clientX = event.clientX\n clientY = event.clientY\n clientStartX = event.clientX\n clientStartY = event.clientY\n translationX = 0.0\n translationY = 0.0\n }\n\n mouseButtonMask = mouseButtonMask or buttonBit\n mouseDown(event)\n }\n\n protected open fun handleMouseMove(event: MouseEvent) {\n if (mouseButtonMask == 0) return // ignore mouse move events when this recognizer does not consider any button to be down\n\n if (clientX == event.clientX && clientY == event.clientY) return // ignore redundant mouse move events\n\n val dx = event.clientX - clientStartX\n val dy = event.clientY - clientStartY\n val w = translationWeight\n clientX = event.clientX\n clientY = event.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n mouseMove(event)\n }\n\n protected open fun handleMouseUp(event: MouseEvent) {\n val buttonBit = 1 shl event.button.toInt()\n if (buttonBit and mouseButtonMask == 0) return // ignore mouse up events for buttons this recognizer does not consider to be down\n\n mouseButtonMask = mouseButtonMask and buttonBit.inv()\n mouseUp(event)\n\n if (mouseButtonMask == 0) resetIfEventsEnded() // last button up\n }\n\n protected open fun handleTouchStart(touch: TouchWrapper) {\n touches.add(touch)\n\n if (touches.size == 1) { // first touch\n clientX = touch.clientX\n clientY = touch.clientY\n clientStartX = touch.clientX\n clientStartY = touch.clientY\n translationX = 0.0\n translationY = 0.0\n touchCentroidShiftX = 0\n touchCentroidShiftY = 0\n } else touchesAddedOrRemoved()\n\n touchStart(touch)\n }\n\n protected open fun handleTouchMove(nextTouch: TouchWrapper) {\n val touch = touchById(nextTouch.identifier) ?: return // ignore events for touches that did not start in this recognizer's target\n if (touch.clientX == nextTouch.clientX && touch.clientY == nextTouch.clientY) return // ignore redundant touch move events, which we've encountered on Android Chrome\n\n touch.clientX = nextTouch.clientX\n touch.clientY = nextTouch.clientY\n\n val centroid = touchCentroid()\n val dx = centroid.clientX - clientStartX + touchCentroidShiftX\n val dy = centroid.clientY - clientStartY + touchCentroidShiftY\n val w = translationWeight\n clientX = centroid.clientX\n clientY = centroid.clientY\n translationX = translationX * (1 - w) + dx * w\n translationY = translationY * (1 - w) + dy * w\n\n touchMove(touch)\n }\n\n protected open fun handleTouchCancel(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchCancel(touch)\n resetIfEventsEnded()\n }\n\n protected open fun handleTouchEnd(touch: TouchWrapper) {\n val touchIdx = indexOfTouchWithId(touch.identifier)\n if (touchIdx == -1) return // ignore events for touches that did not start in this recognizer's target\n touches.removeAt(touchIdx)\n touchesAddedOrRemoved()\n touchEnd(touch)\n resetIfEventsEnded()\n }\n\n protected open fun resetIfEventsEnded() {\n if (state != POSSIBLE && mouseButtonMask == 0 && touches.size == 0) reset()\n }\n\n protected open fun touchesAddedOrRemoved() {\n touchCentroidShiftX += clientX\n touchCentroidShiftY += clientY\n val centroid = touchCentroid()\n clientX = centroid.clientX\n clientY = centroid.clientY\n touchCentroidShiftX -= clientX\n touchCentroidShiftY -= clientY\n }\n\n protected open fun touchCentroid(): Click {\n var x = 0\n var y = 0\n\n touches.forEach { touch ->\n x += touch.clientX / touches.size\n y += touch.clientY / touches.size\n }\n\n return Click(x, y)\n }\n\n protected open fun indexOfTouchWithId(identifier: Int) = touches.indexOfFirst { t -> t.identifier == identifier }\n\n protected open fun touchById(identifier: Int) = touches.firstOrNull { t -> t.identifier == identifier }\n\n protected open fun wrapTouch(event: Touch) = TouchWrapper(event.identifier, event.clientX, event.clientY)\n\n protected open fun wrapPointer(event: PointerEvent) = TouchWrapper(event.pointerId, event.clientX, event.clientY)\n\n protected class Click(\n /**\n * The X coordinate of the click point's location.\n */\n val clientX: Int,\n /**\n * The Y coordinate of the click point's location.\n */\n val clientY: Int\n )\n}",null,"package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for touch panning gestures.\n */\nopen class PanRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var minNumberOfTouches = 1\n var maxNumberOfTouches = Int.MAX_VALUE\n var interpretDistance = 20\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state == POSSIBLE) {\n if (shouldInterpret()) state = if (shouldRecognize()) BEGAN else FAILED\n } else if (state == BEGAN || state == CHANGED) state = CHANGED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (touchCount == 0) { // last touch cancelled\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n }\n\n override fun prepareToRecognize() {\n // set translation to zero when the pan begins\n resetTranslation()\n }\n\n protected open fun shouldInterpret(): Boolean {\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n return distance > interpretDistance * window.devicePixelRatio // interpret touches when the touch centroid moves far enough\n }\n\n protected open fun shouldRecognize() = touchCount in minNumberOfTouches..maxNumberOfTouches\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger pinch gestures.\n */\nopen class PinchRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceDistance = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val scaleWithOffset get() = scale * offsetScale\n protected var scale = 1.0\n protected var offsetScale = 1.0\n protected val pinchTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n scale = 1.0\n offsetScale = 1.0\n referenceDistance = 0.0\n pinchTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (pinchTouches.size < 2) {\n pinchTouches.add(touch)\n if (pinchTouches.size == 2) {\n referenceDistance = currentPinchDistance()\n offsetScale *= scale\n scale = 1.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (pinchTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val distance = currentPinchDistance()\n val newScale = abs(distance / referenceDistance)\n val w = weight\n scale = scale * (1 - w) + newScale * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n pinchTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceDistance = currentPinchDistance()\n scale = 1.0\n }\n\n protected open fun shouldRecognize() =\n abs(currentPinchDistance() - referenceDistance) > interpretThreshold * window.devicePixelRatio\n\n protected open fun currentPinchDistance(): Double {\n val touch0 = pinchTouches[0]\n val touch1 = pinchTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return sqrt((dx * dx + dy * dy).toDouble())\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Angle\nimport earth.worldwind.gesture.GestureState.*\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.abs\nimport kotlin.math.atan2\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger rotation gestures.\n */\nopen class RotationRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var referenceAngle = 0.0\n var interpretThreshold = 20\n var weight = 0.4\n val rotationWithOffset get() = rotation + offsetRotation\n protected var rotation = 0.0\n protected var offsetRotation = 0.0\n protected val rotationTouches = mutableListOf()\n\n override fun reset() {\n super.reset()\n rotation = 0.0\n offsetRotation = 0.0\n referenceAngle = 0.0\n rotationTouches.clear()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state == POSSIBLE) state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (rotationTouches.size < 2) {\n rotationTouches.add(touch)\n if (rotationTouches.size == 2) {\n referenceAngle = currentTouchAngle()\n offsetRotation += rotation\n rotation = 0.0\n }\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (rotationTouches.size == 2) {\n if (state == POSSIBLE) {\n if (shouldRecognize()) state = BEGAN\n } else if (state == BEGAN || state == CHANGED) {\n val angle = currentTouchAngle()\n val newRotation = Angle.normalizeAngle180(angle - referenceAngle)\n val w = weight\n rotation = rotation * (1 - w) + newRotation * w\n state = CHANGED\n }\n }\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the ended state if this was the last touch.\n if (touchCount == 0) // last touch ended\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = ENDED\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n rotationTouches -= touch\n\n // Transition to the cancelled state if this was the last touch.\n if (touchCount == 0)\n if (state == POSSIBLE) state = FAILED else if (state == BEGAN || state == CHANGED) state = CANCELLED\n }\n\n override fun prepareToRecognize() {\n referenceAngle = currentTouchAngle()\n rotation = 0.0\n }\n\n protected open fun shouldRecognize(): Boolean {\n rotation = Angle.normalizeAngle180(currentTouchAngle() - referenceAngle)\n return abs(rotation) > interpretThreshold\n }\n\n protected open fun currentTouchAngle(): Double {\n val touch0 = rotationTouches[0]\n val touch1 = rotationTouches[1]\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n return Angle.toDegrees(atan2(dy.toDouble(), dx.toDouble()))\n }\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.BasicWorldWindowController\nimport earth.worldwind.WorldWindow\nimport earth.worldwind.geom.AltitudeMode\nimport earth.worldwind.geom.Position\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.gesture.GestureState.*\nimport earth.worldwind.render.Renderable\nimport earth.worldwind.shape.Highlightable\nimport earth.worldwind.shape.Movable\nimport org.w3c.dom.TouchEvent\nimport org.w3c.dom.events.EventListener\nimport org.w3c.dom.events.MouseEvent\n\nopen class SelectDragDetector(protected val wwd: WorldWindow) {\n /**\n * Main interface representing all interaction callbacks\n */\n var callback: SelectDragCallback? = null\n /**\n * Enable/disable mouse events processing.\n * If disabled, highlighting of Renderables and all callbacks will be switched off.\n */\n var isEnabled = true\n /**\n * Enable/disable dragging of flying objects using their terrain projection position\n */\n var isDragTerrainPosition = false\n protected var pickedPosition: Position? = null\n protected var pickedRenderable: Renderable? = null\n protected val oldHighlighted = mutableSetOf()\n protected val newHighlighted = mutableSetOf()\n protected var isDragging = false\n protected var isDraggingArmed = false\n private val dragRefPt = Vec2()\n private val lastTranslation = Vec2()\n\n protected val handlePick = EventListener { event ->\n // Do not pick new items if dragging is in progress or detector is disabled\n if (isDragging || !isEnabled) return@EventListener\n\n // Determine pick point from event\n var clientX = 0\n var clientY = 0\n when (event) {\n is MouseEvent -> {\n clientX = event.clientX\n clientY = event.clientY\n }\n is TouchEvent -> {\n event.changedTouches.item(0)?.let { touch ->\n clientX = touch.clientX\n clientY = touch.clientY\n } ?: return@EventListener\n }\n else -> return@EventListener\n }\n\n // Reset previous pick result\n pickedPosition = null\n pickedRenderable = null\n lastTranslation.set(0.0, 0.0)\n\n // Get pick point in canvas coordinates\n val pickPoint = wwd.canvasCoordinates(clientX, clientY)\n\n // Pick objects in selected point\n val pickList = wwd.pick(pickPoint)\n\n // Get picked position from terrain object, if user pressed inside the globe\n pickedPosition = pickList.terrainPickedObject?.terrainPosition\n\n// // NOTE Region selection use bounding box intersection with specified rectangle. Use highlighter path thickness instead.\n// if (!pickList.hasNonTerrainObjects) {\n// pickList = wwd.pickShapesInRegion(\n// Viewport(pickPoint.x - SLOPE / 2 , pickPoint.y - SLOPE / 2, SLOPE, SLOPE)\n// )\n// }\n\n // Redraw canvas in case we de-highlight old or highlight new renderables\n var redrawRequired = false\n\n // Put picked renderables into new highlighted set\n for (obj in pickList.objects) if (!obj.isTerrain && obj.userObject is Highlightable) newHighlighted.add(obj.userObject)\n\n // De-highlight any previously highlighted renderables which is not selected or picked\n for (highlighted in oldHighlighted)\n if (!newHighlighted.contains(highlighted)\n && highlighted is Renderable && highlighted.getUserProperty(HIGHLIGHT_LOCKED_KEY) != true) {\n highlighted.isHighlighted = false\n oldHighlighted.remove(highlighted)\n redrawRequired = true\n }\n\n // Highlight picked objects which was not highlighted yet\n for (highlighted in newHighlighted) if (!oldHighlighted.contains(highlighted)) {\n highlighted.isHighlighted = true\n oldHighlighted.add(highlighted)\n redrawRequired = true\n }\n\n // Clear new highlighted buffer until next frame\n newHighlighted.clear()\n\n // Update the window if we changed anything\n if (redrawRequired) wwd.requestRedraw()\n\n // Get top picked renderable to use it in listener callbacks\n val topPickedObject = pickList.topPickedObject?.userObject\n if (topPickedObject is Renderable) pickedRenderable = topPickedObject\n\n // Take reference position as a backup, if user pressed outside the globe\n if (topPickedObject is Movable && pickedPosition == null) pickedPosition = topPickedObject.referencePosition\n\n // Determine whether the dragging flag should be \"armed\".\n isDraggingArmed = topPickedObject is Renderable && callback?.canMoveRenderable(topPickedObject) == true\n }\n\n protected val handlePrimaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderablePicked(renderable, position) else callback.onTerrainPicked(position)\n } ?: callback.onNothingPicked()\n wwd.requestRedraw()\n }\n }\n\n protected val handleSecondaryClick: (GestureRecognizer) -> Unit = {\n callback?.let { callback ->\n pickedPosition?.let { position ->\n val renderable = pickedRenderable\n if (renderable != null && callback.canPickRenderable(renderable))\n callback.onRenderableContext(renderable, position) else callback.onTerrainContext(position)\n } ?: callback.onNothingContext()\n wwd.requestRedraw()\n }\n }\n\n protected val handleDrag: (GestureRecognizer) -> Unit = { recognizer ->\n when (recognizer.state) {\n BEGAN, CHANGED -> {\n val callback = callback\n val renderable = pickedRenderable\n // Reference position is a priority during movement\n val toPosition = if (renderable is Movable) renderable.referencePosition else pickedPosition\n if (toPosition != null && renderable != null && callback != null) {\n // Signal that dragging is in progress\n isDragging = true\n\n // First we compute the screen coordinates of the position's \"ground\" point. We'll apply the\n // screen X and Y drag distances to this point, from which we'll compute a new position,\n // wherein we restore the original position's altitude.\n val fromPosition = Position(toPosition)\n val clapToGround = isDragTerrainPosition || renderable !is Movable || renderable.altitudeMode == AltitudeMode.CLAMP_TO_GROUND\n val movePoint = wwd.canvasCoordinates(recognizer.clientX, recognizer.clientY)\n if (clapToGround && wwd.engine.pickTerrainPosition(movePoint.x, movePoint.y, toPosition)\n || !clapToGround && wwd.engine.geographicToScreenPoint(fromPosition.latitude, fromPosition.longitude, 0.0, dragRefPt)\n && wwd.engine.screenPointToGroundPosition(\n dragRefPt.x + recognizer.translationX - lastTranslation.x,\n dragRefPt.y + recognizer.translationY - lastTranslation.y,\n toPosition\n )) {\n // Backup last translation\n lastTranslation.set(recognizer.translationX, recognizer.translationY)\n // Restore original altitude\n toPosition.altitude = fromPosition.altitude\n // Update movable position\n if (renderable is Movable) renderable.moveTo(wwd.engine.globe, toPosition)\n // Notify callback\n callback.onRenderableMoved(renderable, fromPosition, toPosition)\n // Reflect the change in position on the globe.\n wwd.requestRedraw()\n } else {\n // Probably clipped by near/far clipping plane or off the globe.\n // The position was not updated. Stop the drag.\n recognizer.state = CANCELLED\n }\n }\n }\n ENDED -> {\n val callback = callback\n val position = pickedPosition\n val renderable = pickedRenderable\n if (renderable != null && position != null && callback != null) {\n callback.onRenderableMovingFinished(renderable, position)\n wwd.requestRedraw()\n }\n cancelDragging()\n }\n CANCELLED -> cancelDragging()\n else -> {}\n }\n }\n\n protected val primaryClickRecognizer = ClickRecognizer(wwd.canvas, handlePrimaryClick)\n protected val tapRecognizer = TapRecognizer(wwd.canvas, handlePrimaryClick)\n protected val secondaryClickRecognizer = ClickRecognizer(wwd.canvas, handleSecondaryClick).apply { button = 2 } // Secondary mouse button\n protected val doubleTapRecognizer = TapRecognizer(wwd.canvas, handleSecondaryClick).apply { numberOfTaps = 2 } // Double tap\n protected val dragRecognizer = object : DragRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n protected val panRecognizer = object : PanRecognizer(wwd.canvas, handleDrag) {\n override fun shouldRecognize() = super.shouldRecognize() && isDraggingArmed\n }\n\n companion object {\n// const val SLOPE = 16\n const val HIGHLIGHT_LOCKED_KEY = \"highlight_locked\"\n }\n\n init {\n wwd.addEventListener(\"mousedown\", handlePick)\n wwd.addEventListener(\"mousemove\", handlePick)\n wwd.addEventListener(\"touchstart\", handlePick)\n wwd.addEventListener(\"touchmove\", handlePick)\n\n // Resolve conflict between item movement and globe rotation\n val controller = wwd.controller\n if (controller is BasicWorldWindowController) {\n controller.primaryDragRecognizer.requireRecognizerToFail(dragRecognizer)\n controller.panRecognizer.requireRecognizerToFail(panRecognizer)\n }\n }\n\n protected fun cancelDragging() {\n isDragging = false\n isDraggingArmed = false\n }\n}\n","package earth.worldwind.gesture\n\nimport earth.worldwind.gesture.GestureState.*\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport org.w3c.dom.events.MouseEvent\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for single or multiple taps.\n */\nopen class TapRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : GestureRecognizer(target, callback) {\n var numberOfTaps = 1\n var numberOfTouches = 1\n var maxTouchMovement = 20\n var maxTapDuration = 500\n var maxTapInterval = 400\n protected val taps = mutableListOf()\n protected var timeout: Int? = null\n\n override fun reset() {\n super.reset()\n taps.clear()\n cancelFailAfterDelay()\n }\n\n override fun mouseDown(event: MouseEvent) {\n if (state != POSSIBLE) return\n state = FAILED // touch gestures fail upon receiving a mouse event\n }\n\n override fun touchStart(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n\n if (touchCount > numberOfTouches) {\n state = FAILED\n } else if (touchCount == 1) { // first touch started\n taps.add(TouchWrapper(touchCount, clientX, clientY))\n failAfterDelay(maxTapDuration) // fail if the tap is down too long\n } else {\n val tap = taps[taps.size - 1]\n tap.identifier = touchCount // max number of simultaneous touches\n tap.clientX = clientX // touch centroid\n tap.clientY = clientY\n }\n }\n\n override fun touchMove(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n val dx = translationX\n val dy = translationY\n val distance = sqrt(dx * dx + dy * dy)\n if (distance > maxTouchMovement * window.devicePixelRatio ) state = FAILED\n }\n\n override fun touchEnd(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n if (touchCount != 0) return // wait until the last touch ends\n val tapCount = taps.size\n val tap = taps[tapCount - 1]\n if (tap.identifier != numberOfTouches) {\n state = FAILED // wrong number of touches\n } else if (tapCount == numberOfTaps) {\n clientX = taps[0].clientX\n clientY = taps[0].clientY\n state = RECOGNIZED\n } else failAfterDelay(maxTapInterval) // fail if the interval between taps is too long\n }\n\n override fun touchCancel(touch: TouchWrapper) {\n if (state != POSSIBLE) return\n state = FAILED\n }\n\n protected open fun failAfterDelay(delay: Int) {\n timeout?.let { window.clearTimeout(it) }\n timeout = window.setTimeout({\n timeout = null\n if (state == POSSIBLE) state = FAILED // fail if we haven't already reached a terminal state\n }, delay)\n }\n\n protected open fun cancelFailAfterDelay() = timeout?.let { window.clearTimeout(it) }.also { timeout = null }\n}","package earth.worldwind.gesture\n\nimport kotlinx.browser.window\nimport org.w3c.dom.events.EventTarget\nimport kotlin.math.abs\nimport kotlin.math.sqrt\n\n/**\n * A concrete gesture recognizer subclass that looks for two finger tilt gestures.\n */\nopen class TiltRecognizer(\n target: EventTarget, callback: ((GestureRecognizer)->Unit)? = null\n) : PanRecognizer(target, callback) {\n var maxTouchDistance = 300\n var maxTouchDivergence = 50\n\n companion object {\n const val LEFT = 1 shl 0\n const val RIGHT = 1 shl 1\n const val UP = 1 shl 2\n const val DOWN = 1 shl 3\n }\n\n override fun shouldInterpret(): Boolean {\n for (i in 0 until touchCount) {\n val touch = touch(i)\n val dx = touch.translationX\n val dy = touch.translationY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > interpretDistance) return true // interpret touches when any touch moves far enough\n }\n return false\n }\n\n override fun shouldRecognize(): Boolean {\n if (touchCount < 2) return false\n val touch0 = touch(0)\n val touch1 = touch(1)\n val dx = touch0.clientX - touch1.clientX\n val dy = touch0.clientY - touch1.clientY\n val distance = sqrt((dx * dx + dy * dy).toDouble())\n if (distance > maxTouchDistance * window.devicePixelRatio) return false // touches must be close together\n val tx = touch0.translationX - touch1.translationX\n val ty = touch0.translationY - touch1.translationY\n val divergence = sqrt((tx * tx + ty * ty).toDouble())\n if (divergence > maxTouchDivergence * window.devicePixelRatio) return false // touches must be moving in a mostly parallel direction\n\n val verticalMask = UP or DOWN\n val dirMask0 = touchDirection(touch0) and verticalMask\n val dirMask1 = touchDirection(touch1) and verticalMask\n return (dirMask0 and dirMask1) != 0 // touches must move in the same vertical direction\n }\n\n protected open fun touchDirection(touch: TouchWrapper): Int {\n val dx = touch.translationX\n val dy = touch.translationY\n var dirMask = 0\n if (abs(dx) > abs(dy)) {\n dirMask = dirMask or if (dx < 0) LEFT else 0\n dirMask = dirMask or if (dx > 0) RIGHT else 0\n } else {\n dirMask = dirMask or if (dy < 0) UP else 0\n dirMask = dirMask or if (dy > 0) DOWN else 0\n }\n return dirMask\n }\n}","package earth.worldwind.gesture\n\n/**\n * Represents a touch point.\n */\nopen class TouchWrapper(\n /**\n * A number uniquely identifying the touch point\n */\n var identifier: Int,\n /**\n * The X coordinate of the touch point's location.\n */\n var clientX: Int,\n /**\n * The Y coordinate of the touch point's location.\n */\n var clientY: Int\n) {\n /**\n * Indicates this touch point's translation along the X axis since the touch started.\n */\n var translationX: Int\n get() = clientX - clientStartX\n set(value) { clientStartX = clientX - value }\n /**\n * Indicates this touch point's translation along the Y axis since the touch started.\n */\n var translationY: Int\n get() = clientY - clientStartY\n set(value) { clientStartY = clientY - value }\n protected var clientStartX = clientX\n protected var clientStartY = clientY\n}","package earth.worldwind.globe.elevation\n\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.w3c.dom.url.URL\n\n/**\n * Provides a mechanism for specifying elevations from a variety of sources.\n *
\n * ElevationSource supports following source types:\n * - Uniform Resource Locator [URL]\n *
\n * ElevationSource instances are intended to be used as a key into a cache or other data structure that enables sharing\n * of loaded elevation resources. File paths and URLs with the same string representation considered equals.\n */\nactual open class ElevationSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n /**\n * Constructs an elevation source with an [URL].\n *\n * @param url Uniform Resource Locator\n *\n * @return the new elevation source\n */\n fun fromUrl(url: URL) = ElevationSource(url.href)\n\n /**\n * Constructs an elevation source with a URL string.\n *\n * @param urlString complete URL string\n *\n * @return the new elevation source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ElevationSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an elevation source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ElevationSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new elevation source\n */\n actual fun fromUnrecognized(source: Any) = when(source) {\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ElevationSource(source)\n }\n }\n\n /**\n * Indicates whether this elevation source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when (source) {\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n}","package earth.worldwind.globe.elevation.coverage\n\nimport earth.worldwind.geom.TileMatrix\nimport earth.worldwind.geom.TileMatrixSet\nimport earth.worldwind.globe.elevation.ElevationSource.Companion.fromUnrecognized\nimport earth.worldwind.globe.elevation.ElevationSourceFactory\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.formats.geotiff.GeoTiffReader\nimport io.ktor.client.fetch.*\nimport kotlinx.coroutines.Dispatchers\nimport kotlinx.coroutines.await\nimport kotlinx.coroutines.withContext\nimport org.khronos.webgl.*\nimport org.khronos.webgl.ArrayBuffer\nimport org.khronos.webgl.ArrayBufferView\nimport org.khronos.webgl.Uint8Array\nimport kotlin.math.roundToInt\n\nactual open class TiledElevationCoverage actual constructor(\n tileMatrixSet: TileMatrixSet, elevationSourceFactory: ElevationSourceFactory\n) : AbstractTiledElevationCoverage(tileMatrixSet, elevationSourceFactory) {\n /**\n * This is a dummy workaround for asynchronously defined ElevationSourceFactory\n */\n actual constructor(): this(TileMatrixSet(), object : ElevationSourceFactory {\n override val contentType = \"Dummy\"\n\n override fun createElevationSource(tileMatrix: TileMatrix, row: Int, column: Int) = fromUnrecognized(Any())\n })\n\n /**\n * Makes a copy of this elevation coverage\n */\n actual open fun clone() = TiledElevationCoverage(tileMatrixSet, elevationSourceFactory).also {\n it.displayName = displayName\n }\n\n override suspend fun retrieveTileArray(key: Long, tileMatrix: TileMatrix, row: Int, column: Int) {\n val elevationSource = elevationSourceFactory.createElevationSource(tileMatrix, row, column)\n if (elevationSource.isUrl) {\n val url = elevationSource.asUrl()\n try {\n // Ktor JS Client cannot be used here, because it is not able to return ArrayBuffer directly.\n val response = fetch(url).await()\n if (response.ok) {\n val arrayBuffer = response.arrayBuffer().await()\n val contentType = response.headers.get(\"Content-Type\")\n var message: String? = null\n val buffer = when {\n contentType.equals(\"image/bil\", true) ||\n contentType.equals(\"application/bil\", true) ||\n contentType.equals(\"application/bil16\", true) -> Int16Array(arrayBuffer)\n contentType.equals(\"application/bil32\", true) -> Float32Array(arrayBuffer)\n contentType.equals(\"image/tiff\", true) -> decodeTiffImage(arrayBuffer)\n contentType.equals(\"text/xml\", true) -> {\n message = \"Elevations retrieval failed (${response.statusText}): $url.\\n\"\n +String.asDynamic().fromCharCode.apply(null, Uint8Array(arrayBuffer))\n null\n }\n else -> {\n message = \"Elevations retrieval failed (Unexpected content type $contentType): $url\"\n null\n }\n }?.let { elevationSource.postprocessor?.process(it) ?: it } // Apply buffer transformations\n decodeBuffer(buffer)?.let {\n retrievalSucceeded(key, it, \"Elevation retrieval succeeded: $url\")\n } ?: retrievalFailed(key, message ?: \"Elevations retrieval failed: $url\")\n } else {\n retrievalFailed(key, \"Elevations retrieval failed (${response.statusText}): $url\")\n }\n } catch (e: Throwable) {\n retrievalFailed(key, \"Elevations retrieval failed (${e.message}): $url\")\n }\n } else retrievalFailed(key, \"Unsupported elevation source type\")\n }\n\n private suspend fun decodeTiffImage(arrayBuffer: ArrayBuffer) = withContext(Dispatchers.Default) {\n GeoTiffReader(arrayBuffer).createTypedElevationArray()\n }\n\n protected open fun decodeBuffer(buffer: ArrayBufferView?) = when (buffer) {\n is Int16Array -> ShortArray(buffer.length) { buffer[it] }\n is Float32Array -> ShortArray(buffer.length) { buffer[it].roundToInt().toShort() }\n else -> null\n }\n\n protected open fun retrievalSucceeded(key: Long, value: ShortArray, message: String) {\n retrievalSucceeded(key, value)\n if (isLoggable(DEBUG)) log(DEBUG, message)\n }\n\n protected open fun retrievalFailed(key: Long, message: String) {\n retrievalFailed(key)\n log(WARN, message)\n }\n}","package earth.worldwind.layer\n\nimport earth.worldwind.shape.TiledSurfaceImage\n\nactual open class TiledImageLayer actual constructor(\n name: String?, tiledSurfaceImage: TiledSurfaceImage?\n): AbstractTiledImageLayer(name, tiledSurfaceImage) {\n /**\n * Makes a copy of this image layer\n */\n actual open fun clone() = TiledImageLayer(displayName, tiledSurfaceImage?.clone())\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Angle.Companion.degrees\nimport earth.worldwind.layer.mercator.MercatorSector.Companion.gudermannianInverse\nimport earth.worldwind.util.Level\nimport kotlinx.browser.document\nimport org.khronos.webgl.get\nimport org.khronos.webgl.set\nimport org.w3c.dom.CanvasRenderingContext2D\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.math.floor\n\n/**\n * Constructs a tile with a specified sector, level, row and column.\n *\n * @param sector the sector spanned by the tile\n * @param level the tile's level in a LevelSet\n * @param row the tile's row within the specified level\n * @param column the tile's column within the specified level\n */\nactual open class MercatorImageTile actual constructor(\n sector: MercatorSector, level: Level, row: Int, column: Int\n): AbstractMercatorImageTile(sector, level, row, column) {\n companion object {\n val srcCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val srcCtx = srcCanvas.getContext(\"2d\", js(\"{ willReadFrequently: true }\")) as CanvasRenderingContext2D\n val dstCanvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val dstCtx = dstCanvas.getContext(\"2d\") as CanvasRenderingContext2D\n }\n\n override suspend fun process(resource: Resource) = if (resource is Image) {\n val width = resource.width\n val height = resource.height\n val widthDouble = resource.width.toDouble()\n val heightDouble = resource.height.toDouble()\n\n // Get source image data\n srcCanvas.width = width\n srcCanvas.height = height\n srcCtx.drawImage(resource, 0.0, 0.0, widthDouble, heightDouble)\n val srcData = srcCtx.getImageData(0.0, 0.0, widthDouble, heightDouble)\n\n // Prepare destination image data\n dstCanvas.width = width\n dstCanvas.height = height\n val dstData = dstCtx.createImageData(widthDouble, heightDouble)\n\n // Re-project mercator tile to equirectangular projection\n val sector = sector as MercatorSector\n val miny = sector.minLatPercent\n val maxy = sector.maxLatPercent\n for (y in 0 until height) {\n val sy = 1.0 - y / (height - 1.0)\n val lat = sy * sector.deltaLatitude.inDegrees + sector.minLatitude.inDegrees\n val dy = (1.0 - (gudermannianInverse(lat.degrees) - miny) / (maxy - miny)).coerceIn(0.0, 1.0)\n val srcRow = floor(dy * (height - 1)).toInt()\n for (x in 0 until width) {\n val src = 4 * (x + srcRow * width)\n val dst = 4 * (x + y * width)\n dstData.data[dst] = srcData.data[src]\n dstData.data[dst + 1] = srcData.data[src + 1]\n dstData.data[dst + 2] = srcData.data[src + 2]\n dstData.data[dst + 3] = srcData.data[src + 3]\n }\n }\n\n // Replace image source with transformed canvas image data\n dstCtx.putImageData(dstData, 0.0, 0.0)\n //resource.src = dstCanvas.toDataURL() // This approach is performance ineffective thus replaced by toBlob()\n dstCanvas.toBlob({\n // Setting new src will call onLoad or onError in RenderResourceCache and continue image retrieval process\n if (it != null) resource.src = URL.createObjectURL(it)\n // Call image.onError in RenderResourceCache to fail retrieval and mark resource as absent\n else resource.onerror?.invoke(\"Error saving canvas to Blob\", \"\", 0, 0, null) as Unit\n })\n\n resource // Do not call super.process to prevent unnecessary onLoad event processing\n } else super.process(resource)\n}","package earth.worldwind.render\n\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport org.w3c.dom.CENTER\nimport org.w3c.dom.CanvasTextAlign\n\n/**\n * Holds attributes controlling the style, size and other attributes of [earth.worldwind.shape.Label] shapes and\n * the textual features of [earth.worldwind.shape.Placemark] and other shapes. The values used for these attributes are those\n * defined by the CSS Font property.\n */\nactual open class Font(\n /**\n * The font size.\n */\n var size: Int,\n /**\n * The font family.\n * @see CSS font-family for defined values.\n */\n var family: String = \"sans-serif\",\n /**\n * The font weight.\n * @see CSS font-weight for defined values.\n */\n var weight: String = \"normal\",\n /**\n * The font style.\n * @see CSS font-style for defined values.\n */\n var style: String = \"normal\",\n /**\n * The font variant.\n * @see CSS font-variant for defined values.\n */\n var variant: String = \"normal\",\n /**\n * The horizontal alignment of the font.\n * Recognized values are \"left\", \"center\" and \"right\".\n */\n var horizontalAlignment: CanvasTextAlign = CanvasTextAlign.CENTER\n) {\n actual constructor(): this(14)\n actual constructor(family: String, weight: FontWeight, size: Int): this(\n size, family,\n if(weight == FontWeight.BOLD) \"bold\" else \"normal\",\n if(weight == FontWeight.ITALIC) \"italic\" else \"normal\",\n )\n\n init {\n require(size > 0) {\n logMessage(ERROR, \"Font\", \"constructor\", \"invalidSize\");\n }\n }\n\n actual fun copy(font: Font) {\n size = font.size\n style = font.style\n variant = font.variant\n weight = font.weight\n family = font.family\n horizontalAlignment = font.horizontalAlignment\n }\n\n override fun equals(other: Any?): Boolean {\n if (this === other) return true\n if (other !is Font) return false\n if (size != other.size) return false\n if (style != other.style) return false\n if (variant != other.variant) return false\n if (weight != other.weight) return false\n if (family != other.family) return false\n if (horizontalAlignment != other.horizontalAlignment) return false\n return true\n }\n\n override fun hashCode(): Int {\n var result = size\n result = 31 * result + style.hashCode()\n result = 31 * result + variant.hashCode()\n result = 31 * result + weight.hashCode()\n result = 31 * result + family.hashCode()\n result = 31 * result + horizontalAlignment.hashCode()\n return result\n }\n\n /**\n * A string representing this font's style, weight, size and family properties, suitable for\n * passing directly to a 2D canvas context.\n */\n override fun toString() = \"$style $variant $weight ${size}px $family\"\n}","package earth.worldwind.render\n\nimport dev.icerock.moko.resources.FileResource\nimport earth.worldwind.WorldWind\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.image.*\nimport earth.worldwind.util.AbsentResourceList\nimport earth.worldwind.util.Logger.DEBUG\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.WARN\nimport earth.worldwind.util.Logger.isLoggable\nimport earth.worldwind.util.Logger.log\nimport earth.worldwind.util.LruMemoryCache\nimport earth.worldwind.util.kgl.*\nimport kotlinx.browser.window\nimport kotlinx.coroutines.MainScope\nimport kotlinx.coroutines.launch\nimport org.khronos.webgl.TexImageSource\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.HTMLImageElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.time.Duration.Companion.seconds\n\nactual open class RenderResourceCache(\n capacity: Long = recommendedCapacity(), lowWater: Long = (capacity * 0.75).toLong()\n) : LruMemoryCache(capacity, lowWater) {\n companion object {\n fun recommendedCapacity(): Long = (window.navigator.asDynamic().deviceMemory as? Number)\n ?.let { it.toLong() * 1024 * 1024 * 1024 / 16 * 3 } ?: (512L * 1024 * 1024) // 512 Mb as backup\n }\n\n override var age = 0L // Manually incrementable cache age\n var urlRetrievalQueueSize = 16\n /**\n * Main render resource retrieval scope\n */\n actual val mainScope = MainScope()\n /**\n * Identifies requested resources that whose retrieval failed.\n */\n actual val absentResourceList = AbsentResourceList(3, 60.seconds)\n /**\n * List of retrievals currently in progress.\n */\n protected val currentRetrievals = mutableSetOf()\n\n override fun clear() {\n super.clear()\n currentRetrievals.clear()\n absentResourceList.clear()\n age = 0\n }\n\n actual fun incAge() { ++age }\n\n actual fun releaseEvictedResources(dc: DrawContext) {\n // TODO Implement evicted resources management\n }\n\n actual fun retrieveTexture(imageSource: ImageSource, options: ImageOptions?): Texture? {\n when {\n imageSource.isImage -> {\n // Following type of image sources is already in memory, so a texture may be created and put into the cache immediately.\n return createTexture(options, imageSource.asImage())?.also { put(imageSource, it, it.byteCount) }\n }\n imageSource.isImageFactory -> {\n val factory = imageSource.asImageFactory()\n if (factory.isRunBlocking) {\n // Image factory makes easy operations, so a texture may be created and put into the cache immediately.\n return factory.createImage()?.let { image ->\n createTexture(options, image)?.also { put(imageSource, it, it.byteCount) }\n }\n }\n }\n }\n\n // Ignore retrieval of already requested resources or marked as absent\n if (currentRetrievals.size >= urlRetrievalQueueSize || currentRetrievals.contains(imageSource)\n || absentResourceList.isResourceAbsent(imageSource.hashCode())) return null\n\n // Retrieve remote image source\n when {\n imageSource.isResource -> retrieveRemoteImage(imageSource, options, imageSource.asResource().fileUrl)\n imageSource.isUrl -> retrieveRemoteImage(imageSource, options, imageSource.asUrl())\n imageSource.isImageFactory -> {\n currentRetrievals += imageSource\n mainScope.launch {\n imageSource.asImageFactory().createImage()?.let {\n retrievalSucceeded(imageSource, options, it)\n } ?: retrievalFailed(imageSource)\n }\n }\n }\n\n return null\n }\n\n actual fun retrieveTextFile(fileResource: FileResource, result: (String) -> Unit) {\n mainScope.launch {\n try {\n result(fileResource.getText())\n } catch (e: Throwable) {\n log(ERROR, \"Resource retrieval failed ($fileResource): ${e.message}\")\n }\n }\n }\n\n protected open fun retrieveRemoteImage(imageSource: ImageSource, options: ImageOptions?, src: String) {\n val image = Image()\n var postprocessorExecuted = false\n image.onload = {\n // Check if image postprocessor is assigned and not yet executed.\n // OnLoad event can be called second time by reassigning image.src inside postprocessor.\n val postprocessor = imageSource.postprocessor\n if (postprocessor != null && !postprocessorExecuted) {\n postprocessorExecuted = true // Prevent cyclic processing due to src modification inside postprocessing.\n mainScope.launch { postprocessor.process(image) } // Apply image transformation.\n } else retrievalSucceeded(imageSource, options, image) // Consume original or processed image as retrieved\n if (postprocessor != null) URL.revokeObjectURL(image.src) // Revoke URL possibly created in postprocessor\n }\n image.onerror = { _, _, _, _, _ -> retrievalFailed(imageSource) }\n currentRetrievals += imageSource\n image.crossOrigin = \"anonymous\"\n image.src = src\n }\n\n protected open fun createTexture(options: ImageOptions?, image: TexImageSource): Texture? {\n var (width, height) = when (image) {\n is HTMLImageElement -> image.width to image.height\n is HTMLCanvasElement -> image.width to image.height\n else -> return null\n }\n\n // Process initialWidth and initialHeight if specified\n if (width == 0 || height == 0) {\n // If source image has dimensions, then resize it proportionally to fit initial size restrictions\n val ratioW = if (options != null && options.initialWidth > 0) width / options.initialWidth else 0\n val ratioH = if (options != null && options.initialHeight > 0) height / options.initialHeight else 0\n val ratio = if (ratioH > ratioW) ratioH else ratioW\n if (ratio > 0) {\n width /= ratio\n height /= ratio\n }\n } else if (options != null && options.initialWidth > 0 && options.initialHeight > 0) {\n // If source image has no dimensions (e.g. SVG image), then set initial size of image\n width = options.initialWidth\n height = options.initialHeight\n }\n\n // Create image texture and apply texture parameters\n val texture = ImageTexture(image, width, height)\n if (options?.resamplingMode == ResamplingMode.NEAREST_NEIGHBOR) {\n texture.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST)\n texture.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST)\n }\n if (options?.wrapMode == WrapMode.REPEAT) {\n texture.setTexParameter(GL_TEXTURE_WRAP_S, GL_REPEAT)\n texture.setTexParameter(GL_TEXTURE_WRAP_T, GL_REPEAT)\n }\n return texture\n }\n\n protected open fun retrievalSucceeded(source: ImageSource, options: ImageOptions?, image: TexImageSource) {\n // Create texture and put it into cache.\n createTexture(options, image)?.let { put(source, it, it.byteCount) }\n currentRetrievals -= source\n absentResourceList.unmarkResourceAbsent(source.hashCode())\n WorldWind.requestRedraw()\n if (isLoggable(DEBUG)) log(DEBUG, \"Image retrieval succeeded: $source\")\n }\n\n protected open fun retrievalFailed(source: ImageSource) {\n currentRetrievals -= source\n absentResourceList.markResourceAbsent(source.hashCode())\n log(WARN, \"Image retrieval failed: $source\")\n }\n}","package earth.worldwind.render\n\nimport earth.worldwind.geom.Vec2\nimport earth.worldwind.render.image.ImageTexture\nimport earth.worldwind.shape.TextAttributes\nimport kotlinx.browser.document\nimport org.w3c.dom.*\nimport kotlin.math.ceil\n\nactual open class TextRenderer actual constructor(protected val rc: RenderContext) {\n private val lineSpacing = 0.15 // fraction of font size\n\n /**\n * Creates a texture for a specified text string and specified text attributes.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A texture for the specified text string.\n */\n actual fun renderText(text: String?, attributes: TextAttributes): Texture? =\n if (text?.isNotEmpty() == true) ImageTexture(drawText(text, attributes)) else null\n\n /**\n * Creates a 2D Canvas for a specified text string while considering current TextRenderer state regarding outline\n * usage and color, text color, typeface, and outline width.\n *\n * @param text The text string.\n * @param attributes Text font, size, color etc.\n * @returns A 2D Canvas for the specified text string.\n */\n protected open fun drawText(text: String, attributes: TextAttributes): HTMLCanvasElement {\n val canvas = document.createElement(\"canvas\") as HTMLCanvasElement\n val ctx2D = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n\n val textSize = textSize(ctx2D, text, attributes)\n val lines = text.split(\"\\n\")\n val strokeOffset = if (attributes.isOutlineEnabled) attributes.outlineWidth / 2.0 else 0.0\n\n canvas.width = ceil(textSize.x * rc.densityFactor).toInt()\n canvas.height = ceil(textSize.y * rc.densityFactor).toInt()\n\n ctx2D.scale(rc.densityFactor.toDouble(), rc.densityFactor.toDouble())\n ctx2D.font = attributes.font.toString()\n ctx2D.textBaseline = CanvasTextBaseline.BOTTOM\n ctx2D.textAlign = attributes.font.horizontalAlignment\n ctx2D.fillStyle = attributes.textColor.toCssColorString()\n ctx2D.strokeStyle = attributes.outlineColor.toCssColorString()\n ctx2D.lineWidth = attributes.outlineWidth.toDouble()\n ctx2D.lineCap = CanvasLineCap.ROUND\n ctx2D.lineJoin = CanvasLineJoin.ROUND\n\n when (attributes.font.horizontalAlignment) {\n CanvasTextAlign.LEFT -> ctx2D.translate(strokeOffset, 0.0)\n CanvasTextAlign.RIGHT -> ctx2D.translate(textSize.x - strokeOffset, 0.0)\n else -> ctx2D.translate(textSize.x / 2.0, 0.0)\n }\n\n for (i in lines.indices) {\n val line = lines[i]\n ctx2D.translate(0.0, attributes.font.size * (1.0 + lineSpacing) + strokeOffset)\n if (attributes.isOutlineEnabled) ctx2D.strokeText(line, 0.0, 0.0)\n ctx2D.fillText(line, 0.0, 0.0)\n }\n\n return canvas\n }\n\n /**\n * Returns the width and height of a specified text string considering the current typeFace and outline usage.\n * @param ctx2D Canvas rendering context\n * @param text The text string.\n * @param textAttributes Text font, size, color etc.\n * @returns A vector indicating the text's width and height, respectively, in pixels.\n */\n protected open fun textSize(ctx2D: CanvasRenderingContext2D, text: String, textAttributes: TextAttributes): Vec2 {\n if (text.isEmpty()) Vec2()\n\n ctx2D.font = textAttributes.font.toString()\n\n val lines = text.split(\"\\n\")\n var height = lines.size * (textAttributes.font.size * (1.0 + lineSpacing))\n var maxWidth = 0.0\n for (i in lines.indices) maxWidth = maxWidth.coerceAtLeast(ctx2D.measureText(lines[i]).width)\n\n if (textAttributes.isOutlineEnabled) {\n maxWidth += textAttributes.outlineWidth\n height += textAttributes.outlineWidth\n }\n\n return Vec2(maxWidth, height)\n }\n}","package earth.worldwind.render.image\n\nimport dev.icerock.moko.resources.ImageResource\nimport earth.worldwind.util.AbstractSource\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport kotlinx.browser.document\nimport org.khronos.webgl.TexImageSource\nimport org.w3c.dom.CanvasRenderingContext2D\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.Image\nimport org.w3c.dom.url.URL\nimport kotlin.collections.mutableMapOf\nimport kotlin.collections.set\n\n/**\n * Provides a mechanism for specifying images from a variety of sources. ImageSource retains the image source on behalf\n * of the caller, making this information available to WorldWind components that load images on the caller's behalf.\n *
\n * ImageSource supports following source types:\n * - Uniform Resource Locator [URL]\n * - [Image] object\n * - WorldWind [ImageSource.ImageFactory]\n * - Multi-platform resource identifier\n *
\n * ImageSource instances are intended to be used as a key into a cache or other data structure that enables sharing of\n * loaded images. Images are compared by reference. URLs with the same string representation considered equals.\n */\nactual open class ImageSource protected constructor(source: Any): AbstractSource(source) {\n actual companion object {\n protected val lineStippleFactories = mutableMapOf()\n /**\n * Constructs an image source with a multi-platform resource identifier.\n *\n * @param imageResource the multi-platform resource identifier\n *\n * @return the new image source\n */\n actual fun fromResource(imageResource: ImageResource) = ImageSource(imageResource)\n\n /**\n * Constructs an image source with an [Image]. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param image the [Image] to use as an image source\n *\n * @return the new image source\n */\n fun fromImage(image: Image) = ImageSource(image)\n\n /**\n * Constructs an image source with a [ImageFactory]. WorldWind shapes configured with an image factory image source\n * construct their images lazily, typically when the shape becomes visible on screen.\n *\n * @param factory the [ImageFactory] to use as an image source\n *\n * @return the new image source\n */\n fun fromImageFactory(factory: ImageFactory) = ImageSource(factory)\n\n /**\n * Constructs an image source with an [URL]. The image's dimensions should be no greater than 2048 x 2048.\n *\n * @param url Uniform Resource Locator\n *\n * @return the new image source\n */\n fun fromUrl(url: URL) = ImageSource(url.href)\n\n /**\n * Constructs an image source with a URL string. The image's dimensions should not be greater than 2048 x 2048.\n *\n * @param urlString complete URL string\n *\n * @return the new image source\n */\n actual fun fromUrlString(urlString: String) = try {\n fromUrl(URL(urlString))\n } catch (e: Exception) {\n logMessage(ERROR, \"ImageSource\", \"fromUrlString\", \"invalidUrlString\", e)\n throw e\n }\n\n /**\n * Constructs an image source with a line stipple pattern. The result is a one-dimensional image with pixels\n * representing the specified stipple factor and stipple pattern. Line stipple images can be used for displaying\n * dashed shape outlines. See [earth.worldwind.shape.ShapeAttributes.outlineImageSource].\n *\n * @param factor specifies the number of times each bit in the pattern is repeated before the next bit is used. For\n * example, if the factor is 3, each bit is repeated three times before using the next bit. The\n * specified factor must be either 0 or an integer greater than 0. A factor of 0 indicates no\n * stippling.\n * @param pattern specifies a number whose lower 16 bits define a pattern of which pixels in the image are white and\n * which are transparent. Each bit corresponds to a pixel, and the pattern repeats after every n*16\n * pixels, where n is the factor. For example, if the factor is 3, each bit in the pattern is\n * repeated three times before using the next bit.\n *\n * @return the new image source\n */\n actual fun fromLineStipple(factor: Int, pattern: Short): ImageSource {\n val lFactor = factor.toLong() and 0xFFFFFFFFL\n val lPattern = pattern.toLong() and 0xFFFFL\n val key = lFactor shl 32 or lPattern\n val factory = lineStippleFactories[key] ?: LineStippleImageFactory(factor, pattern).also {\n lineStippleFactories[key] = it\n }\n return ImageSource(factory)\n }\n\n /**\n * Constructs an image source with a generic [Any] instance. The source may be any non-null object. This is\n * equivalent to calling one of ImageSource's type-specific factory methods when the source is a recognized type.\n *\n * @param source the generic source\n *\n * @return the new image source\n */\n actual fun fromUnrecognized(source: Any) = when (source) {\n is ImageResource -> fromResource(source)\n is Image -> fromImage(source)\n is ImageFactory -> fromImageFactory(source)\n is URL -> fromUrl(source)\n is String -> fromUrlString(source)\n else -> ImageSource(source)\n }\n }\n\n /**\n * Indicates whether this image source is a multi-platform resource.\n */\n val isResource get() = source is ImageResource\n /**\n * Indicates whether this image source is a [Image].\n */\n val isImage get() = source is Image\n /**\n * Indicates whether this image source is an image factory.\n */\n val isImageFactory get() = source is ImageFactory\n /**\n * Indicates whether this image source is an [URL] string.\n */\n val isUrl get() = source is String\n\n /**\n * @return the source multi-platform resource identifier. Call isResource to determine whether the source is a\n * Multi-platform resource.\n */\n fun asResource() = source as ImageResource\n\n /**\n * @return the source [Image]. Call [isImage] to determine whether the source is a [Image].\n */\n fun asImage() = source as Image\n\n /**\n * @return the source [ImageFactory]. Call isImageFactory to determine whether the source is an image\n * factory.\n */\n fun asImageFactory() = source as ImageFactory\n\n /**\n * @return the source [URL]. Call [isUrl] to determine whether the source is an [URL] string.\n */\n fun asUrl() = source as String\n\n override fun toString() = when(source) {\n is ImageResource -> \"Resource: $source\"\n is Image -> \"Image: $source\"\n is ImageFactory -> \"ImageFactory: $source\"\n is String -> \"URL: $source\"\n else -> super.toString()\n }\n\n /**\n * Factory for delegating construction of images. WorldWind shapes configured with a ImageFactory construct\n * their images lazily, typically when the shape becomes visible on screen.\n */\n interface ImageFactory {\n /**\n * Image factory runs asynchronously by default, but this behavior can be changed by overriding current attribute.\n */\n val isRunBlocking: Boolean get() = false\n\n /**\n * Returns the image associated with this factory. This method may be called more than once and may be called\n * from a non-UI thread. Each invocation must return an image with equivalent content, dimensions and\n * configuration. Any side effects applied to the WorldWind scene by the factory must be executed on the main\n * thread.\n *\n * @return the image associated with this factory\n */\n fun createImage(): TexImageSource?\n }\n\n protected open class LineStippleImageFactory(protected val factor: Int, protected val pattern: Short): ImageFactory {\n override fun createImage(): TexImageSource {\n val canvas = document.createElement(\"canvas\") as HTMLCanvasElement\n canvas.width = if (factor <= 0) 16 else factor * 16\n canvas.height = 1\n val ctx2D = canvas.getContext(\"2d\") as CanvasRenderingContext2D\n ctx2D.strokeStyle = \"white\"\n ctx2D.beginPath()\n if (factor <= 0) {\n ctx2D.moveTo(0.0, 0.5)\n ctx2D.lineTo(canvas.width.toDouble(), 0.5)\n } else {\n var offset = 0\n for (bi in 0..15) {\n val bit = pattern.toInt() and (1 shl bi)\n if (bit != 0) {\n ctx2D.moveTo(offset.toDouble(), 0.5)\n ctx2D.lineTo((offset + factor).toDouble(), 0.5)\n }\n offset += factor\n }\n }\n ctx2D.stroke()\n return canvas\n }\n\n override fun toString() = \"LineStippleCanvasFactory factor=$factor, pattern=\" + (pattern.toInt() and 0xFFFF).toString(16).uppercase()\n }\n\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.draw.DrawContext\nimport earth.worldwind.render.Texture\nimport earth.worldwind.util.Logger.ERROR\nimport earth.worldwind.util.Logger.logMessage\nimport earth.worldwind.util.kgl.GL_RGBA\nimport earth.worldwind.util.kgl.GL_TEXTURE_2D\nimport earth.worldwind.util.kgl.GL_UNSIGNED_BYTE\nimport earth.worldwind.util.kgl.WebKgl\nimport earth.worldwind.util.math.isPowerOfTwo\nimport org.khronos.webgl.TexImageSource\nimport org.khronos.webgl.WebGLRenderingContext.Companion.UNPACK_PREMULTIPLY_ALPHA_WEBGL\nimport org.w3c.dom.HTMLCanvasElement\nimport org.w3c.dom.HTMLImageElement\n\nopen class ImageTexture(image: TexImageSource, width: Int, height: Int) : Texture(width, height, GL_RGBA, GL_UNSIGNED_BYTE) {\n protected var image: TexImageSource? = image\n override val hasMipMap = isPowerOfTwo(width) && isPowerOfTwo(height)\n\n constructor(image: HTMLImageElement) : this(image, image.width, image.height)\n\n constructor(image: HTMLCanvasElement) : this(image, image.width, image.height)\n\n init {\n coordTransform.setToVerticalFlip()\n }\n\n override fun release(dc: DrawContext) {\n super.release(dc)\n image = null // Image can be non-null if the texture has never been used\n }\n\n override fun allocTexImage(dc: DrawContext) {\n try {\n // Specify the OpenGL texture 2D object's base image data (level 0).\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 1)\n (dc.gl as WebKgl).gl.texImage2D(GL_TEXTURE_2D, 0, format, format, type, image)\n dc.gl.pixelStorei(UNPACK_PREMULTIPLY_ALPHA_WEBGL, 0)\n\n // If the bitmap has power-of-two dimensions, generate the texture object's image data for image levels 1\n // through level N, and configure the texture object's filtering modes to use those image levels.\n if (hasMipMap) dc.gl.generateMipmap(GL_TEXTURE_2D)\n } catch (e: Exception) {\n // The Android utility was unable to load the texture image data.\n logMessage(\n ERROR, \"Texture\", \"loadTexImage\",\n \"Exception attempting to load texture image '$image'\", e\n )\n } finally {\n image = null\n }\n }\n}","package earth.worldwind.render.image\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.ResourcePostprocessor\nimport earth.worldwind.util.Tile\nimport org.w3c.dom.Image\nimport org.w3c.dom.events.Event\n\nactual open class ImageTile actual constructor(\n sector: Sector, level: Level, row: Int, column: Int\n): Tile(sector, level, row, column), ResourcePostprocessor {\n actual var imageSource: ImageSource? = null\n actual var cacheSource: ImageSource? = null\n\n /**\n * Repeat image.onLoad event defined in RenderResourceCache to continue retrieval of original unprocessed image\n */\n override suspend fun process(resource: Resource): Resource {\n if (resource is Image) {\n resource.onload?.invoke(Event(\"load\"))\n }\n return resource\n }\n}","package earth.worldwind.util\n\n/**\n * Logs selected message types to the console.\n */\nactual object Logger {\n actual val ERROR = 1\n actual val WARN = 2\n actual val INFO = 3\n actual val DEBUG = 4\n\n /**\n * Indicates the current logging level [ERROR], [WARN], [INFO] or [DEBUG].\n */\n var loggingLevel = ERROR\n\n actual fun isLoggable(priority: Int) = priority in ERROR until loggingLevel\n\n actual fun log(priority: Int, message: String, tr: Throwable?) {\n if (isLoggable(priority)) {\n val messageWithTrace = tr?.run { message + '\\n' + stackTraceToString() } ?: message\n when (priority) {\n ERROR -> console.error(messageWithTrace)\n WARN -> console.warn(messageWithTrace)\n INFO -> console.info(messageWithTrace)\n else -> console.log(messageWithTrace)\n }\n }\n }\n\n actual fun logMessage(level: Int, className: String, methodName: String, message: String, tr: Throwable?) =\n makeMessage(className, methodName, message).also { log(level, it, tr) }\n\n actual fun makeMessage(className: String, methodName: String, message: String) =\n \"$className.$methodName: ${messageTable[message] ?: message}\"\n}","package earth.worldwind.util\n\n/**\n * JS use BasicPool instead of SynchronizedPool\n */\nactual class SynchronizedPool: BasicPool()","package earth.worldwind.util.kgl\n\nimport org.khronos.webgl.*\n\nactual data class KglShader(val obj: WebGLShader? = null) {\n actual companion object{ actual val NONE = KglShader() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglProgram(val obj: WebGLProgram? = null) {\n actual companion object{ actual val NONE = KglProgram() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglUniformLocation(val obj: WebGLUniformLocation? = null) {\n actual companion object{ actual val NONE = KglUniformLocation() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglBuffer(val obj: WebGLBuffer? = null) {\n actual companion object{ actual val NONE = KglBuffer() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglTexture(val obj: WebGLTexture? = null) {\n actual companion object{ actual val NONE = KglTexture() }\n actual fun isValid() = obj != null\n}\n\nactual data class KglFramebuffer(val obj: WebGLFramebuffer? = null) {\n actual companion object{ actual val NONE = KglFramebuffer() }\n actual fun isValid() = obj != null\n}\n\nclass WebKgl(val gl: WebGLRenderingContext) : Kgl {\n\n override val hasMaliOOMBug = false\n\n override fun getParameteri(pname: Int): Int = gl.getParameter(pname) as Int\n\n override fun getParameterf(pname: Int): Float = gl.getParameter(pname) as Float\n\n override fun getParameteriv(pname: Int): IntArray = gl.getParameter(pname) as IntArray\n\n override fun getParameterfv(pname: Int): FloatArray = gl.getParameter(pname) as FloatArray\n\n override fun createShader(type: Int) = KglShader(gl.createShader(type))\n\n override fun shaderSource(shader: KglShader, source: String) = gl.shaderSource(shader.obj, source)\n\n override fun compileShader(shader: KglShader) = gl.compileShader(shader.obj)\n\n override fun deleteShader(shader: KglShader) = gl.deleteShader(shader.obj)\n\n override fun getShaderParameteri(shader: KglShader, pname: Int): Int {\n val value = gl.getShaderParameter(shader.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getProgramInfoLog(program: KglProgram): String = gl.getProgramInfoLog(program.obj) ?: \"\"\n\n override fun getShaderInfoLog(shader: KglShader): String = gl.getShaderInfoLog(shader.obj) ?: \"\"\n\n override fun createProgram() = KglProgram(gl.createProgram())\n\n override fun deleteProgram(program: KglProgram) = gl.deleteProgram(program.obj)\n\n override fun attachShader(program: KglProgram, shader: KglShader) = gl.attachShader(program.obj, shader.obj)\n\n override fun linkProgram(program: KglProgram) = gl.linkProgram(program.obj)\n\n override fun useProgram(program: KglProgram) = gl.useProgram(program.obj)\n\n override fun getProgramParameteri(program: KglProgram, pname: Int): Int {\n val value = gl.getProgramParameter(program.obj, pname)\n return if (value is Boolean) { if (value) GL_TRUE else GL_FALSE } else value as Int\n }\n\n override fun getUniformLocation(program: KglProgram, name: String) =\n KglUniformLocation(gl.getUniformLocation(program.obj, name))\n\n override fun bindAttribLocation(program: KglProgram, index: Int, name: String) =\n gl.bindAttribLocation(program.obj, index, name)\n\n override fun createBuffer() = KglBuffer(gl.createBuffer())\n\n override fun bindBuffer(target: Int, buffer: KglBuffer) = gl.bindBuffer(target, buffer.obj)\n\n override fun bufferData(target: Int, size: Int, sourceData: ShortArray?, usage: Int, offset: Int) {\n val len = size / 2\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: IntArray?, usage: Int, offset: Int) {\n val len = size / 4\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferData(target: Int, size: Int, sourceData: FloatArray?, usage: Int, offset: Int) {\n val len = size / 4\n val data = sourceData?.unsafeCast()\n ?.let { if (offset == 0 && len == it.length) it else it.subarray(offset, offset + len) }\n if (data != null) gl.bufferData(target, data, usage) else gl.bufferData(target, size, usage)\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: ShortArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: IntArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun bufferSubData(target: Int, offset: Int, size: Int, sourceData: FloatArray) {\n gl.bufferSubData(target, offset, sourceData.unsafeCast())\n }\n\n override fun deleteBuffer(buffer: KglBuffer) = gl.deleteBuffer(buffer.obj)\n\n override fun vertexAttribPointer(\n location: Int, size: Int, type: Int, normalized: Boolean, stride: Int, offset: Int\n ) = gl.vertexAttribPointer(location, size, type, normalized, stride, offset)\n\n override fun enableVertexAttribArray(location: Int) = gl.enableVertexAttribArray(location)\n\n override fun disableVertexAttribArray(location: Int) = gl.disableVertexAttribArray(location)\n\n override fun enable(cap: Int) = gl.enable(cap)\n\n override fun disable(cap: Int) = gl.disable(cap)\n\n override fun uniform1f(location: KglUniformLocation, f: Float) =\n gl.uniform1f(location.obj, f)\n\n override fun uniform1fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 1\n gl.uniform1fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform1i(location: KglUniformLocation, i: Int) =\n gl.uniform1i(location.obj, i)\n\n override fun uniform2f(location: KglUniformLocation, x: Float, y: Float) =\n gl.uniform2f(location.obj, x, y)\n\n override fun uniform2fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 2\n gl.uniform2fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform2i(location: KglUniformLocation, x: Int, y: Int) =\n gl.uniform2i(location.obj, x, y)\n\n override fun uniform3f(location: KglUniformLocation, x: Float, y: Float, z: Float) =\n gl.uniform3f(location.obj, x, y, z)\n\n override fun uniform3fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 3\n gl.uniform3fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform3i(location: KglUniformLocation, x: Int, y: Int, z: Int) =\n gl.uniform3i(location.obj, x, y, z)\n\n override fun uniform4f(location: KglUniformLocation, x: Float, y: Float, z: Float, w: Float) =\n gl.uniform4f(location.obj, x, y, z, w)\n\n override fun uniform4fv(location: KglUniformLocation, count: Int, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 4\n gl.uniform4fv(location.obj, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniform4i(location: KglUniformLocation, x: Int, y: Int, z: Int, w: Int) = gl.uniform4i(location.obj, x, y, z, w)\n\n override fun uniformMatrix3fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 9\n gl.uniformMatrix3fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun uniformMatrix4fv(location: KglUniformLocation, count: Int, transpose: Boolean, value: FloatArray, offset: Int) {\n val arr = value.unsafeCast()\n val len = count * 16\n gl.uniformMatrix4fv(location.obj, transpose, if (offset == 0 && len == arr.length) arr else arr.subarray(offset, offset + len))\n }\n\n override fun lineWidth(width: Float) = gl.lineWidth(width)\n\n override fun polygonOffset(factor: Float, units: Float) = gl.polygonOffset(factor, units)\n\n override fun cullFace(mode: Int) = gl.cullFace(mode)\n\n override fun frontFace(mode: Int) = gl.frontFace(mode)\n\n override fun depthFunc(func: Int) = gl.depthFunc(func)\n\n override fun depthMask(mask: Boolean) = gl.depthMask(mask)\n\n override fun blendFunc(sFactor: Int, dFactor: Int) = gl.blendFunc(sFactor, dFactor)\n\n override fun colorMask(r: Boolean, g: Boolean, b: Boolean, a: Boolean) = gl.colorMask(r, g, b, a)\n\n override fun viewport(x: Int, y: Int, width: Int, height: Int) = gl.viewport(x, y, width, height)\n\n override fun clear(mask: Int) = gl.clear(mask)\n\n override fun clearColor(r: Float, g: Float, b: Float, a: Float) = gl.clearColor(r, g, b, a)\n\n override fun createTexture() = KglTexture(gl.createTexture())\n\n override fun deleteTexture(texture: KglTexture) = gl.deleteTexture(texture.obj)\n\n override fun texImage2D(\n target: Int, level: Int, internalFormat: Int, width: Int, height: Int, border: Int, format: Int, type: Int, buffer: ByteArray?\n ) = gl.texImage2D(target, level, internalFormat, width, height, border, format, type, buffer?.unsafeCast())\n\n override fun activeTexture(texture: Int) = gl.activeTexture(texture)\n\n override fun bindTexture(target: Int, texture: KglTexture) = gl.bindTexture(target, texture.obj)\n\n override fun generateMipmap(target: Int) = gl.generateMipmap(target)\n\n override fun texParameteri(target: Int, pname: Int, value: Int) = gl.texParameteri(target, pname, value)\n\n override fun drawArrays(mode: Int, first: Int, count: Int) = gl.drawArrays(mode, first, count)\n\n override fun drawElements(mode: Int, count: Int, type: Int, offset: Int) = gl.drawElements(mode, count, type, offset)\n\n override fun getError() = gl.getError()\n\n override fun finish() = gl.finish()\n\n override fun bindFramebuffer(target: Int, framebuffer: KglFramebuffer) = gl.bindFramebuffer(target, framebuffer.obj)\n\n override fun createFramebuffer() = KglFramebuffer(gl.createFramebuffer())\n\n override fun deleteFramebuffer(framebuffer: KglFramebuffer) = gl.deleteFramebuffer(framebuffer.obj)\n\n override fun checkFramebufferStatus(target: Int) = gl.checkFramebufferStatus(target)\n\n override fun framebufferTexture2D(target: Int, attachment: Int, textarget: Int, texture: KglTexture, level: Int) =\n gl.framebufferTexture2D(target, attachment, textarget, texture.obj, level)\n\n override fun readPixels(\n x: Int, y: Int, width: Int, height: Int, format: Int, type: Int, buffer: ByteArray\n ) = gl.readPixels(x, y, width, height, format, type, Uint8Array(buffer.unsafeCast().buffer))\n\n override fun pixelStorei(pname: Int, param: Int) = gl.pixelStorei(pname, param)\n}\n","package earth.worldwind.util.locale\n\nimport kotlinx.browser.window\n\nactual val language = window.navigator.language.split('-')[0]\nactual val country = window.navigator.language.split('-')[1]",null,null,null,null,null,"package earth.worldwind.util.format\n\nimport kotlinx.datetime.Instant\n\nactual fun convertToInstant(t: Any) = when(t) {\n is kotlin.js.Date -> Instant.fromEpochMilliseconds(t.getTime().toLong())\n else -> throw IllegalArgumentException(\"Can't convert to LocalDateTime: $t\")\n}\n",null,"package earth.worldwind.globe.projection\n\nimport earth.worldwind.geom.*\nimport earth.worldwind.globe.Globe\n\n/**\n * Represents transformations between geographic coordinates and Cartesian coordinates. GeographicProjection specifies\n * the Cartesian coordinate system used by Globe and WorldWindow.\n */\ninterface GeographicProjection {\n /**\n * This projection's display name.\n */\n val displayName: String\n /**\n * Indicates whether this projection is a 2D projection.\n */\n val is2D: Boolean get() = false\n /**\n * Indicates whether this projection is continuous with itself horizontally.\n */\n val isContinuous: Boolean get() = false\n /**\n * Indicates the geographic limits of this projection.\n * May be null to indicate the full range of latitude and longitude.\n */\n val projectionLimits: Sector? get() = null // Sector().setFullSphere()\n\n /**\n * Converts a geographic position to Cartesian coordinates.\n *\n * @param globe the globe this projection is applied to\n * @param latitude the position's latitude\n * @param longitude the position's longitude\n * @param altitude the position's altitude in meters\n * @param offset the horizontal offset in 2D projection\n * @param result a pre-allocated [Vec3] in which to store the computed X, Y and Z Cartesian coordinates\n *\n * @return the result argument, set to the computed Cartesian coordinates\n */\n fun geographicToCartesian(globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, offset: Double, result: Vec3): Vec3\n\n fun geographicToCartesianNormal(globe: Globe, latitude: Angle, longitude: Angle, result: Vec3): Vec3\n\n fun geographicToCartesianTransform(\n globe: Globe, latitude: Angle, longitude: Angle, altitude: Double, result: Matrix4\n ): Matrix4\n\n fun geographicToCartesianGrid(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: FloatArray?,\n verticalExaggeration: Float, origin: Vec3?, offset: Double, result: FloatArray, rowOffset: Int, rowStride: Int\n ): FloatArray\n\n fun geographicToCartesianBorder(\n globe: Globe, sector: Sector, numLat: Int, numLon: Int, height: Float, origin: Vec3?, offset: Double, result: FloatArray\n ): FloatArray\n\n /**\n * Converts a Cartesian point to a geographic position.\n *\n * @param globe Globe model\n * @param x the Cartesian point's X component\n * @param y the Cartesian point's Y component\n * @param z the Cartesian point's Z component\n * @param offset the horizontal offset in 2D projection\n * @param result a pre-allocated [Position] in which to store the computed geographic position\n *\n * @return the result argument, set to the computed geographic position\n */\n fun cartesianToGeographic(globe: Globe, x: Double, y: Double, z: Double, offset: Double, result: Position): Position\n\n fun cartesianToLocalTransform(globe: Globe, x: Double, y: Double, z: Double, result: Matrix4): Matrix4\n\n /**\n * Computes the first intersection of a specified globe and line. The line is interpreted as a ray; intersection\n * points behind the line's origin are ignored.\n *\n * @param globe the globe this projection is applied to\n * @param line the line to intersect with the globe\n * @param result a pre-allocated [Vec3] in which to return the computed point\n *\n * @return true if the ray intersects the globe, otherwise false\n */\n fun intersect(globe: Globe, line: Line, result: Vec3): Boolean\n}","package earth.worldwind.layer.mercator\n\nimport earth.worldwind.geom.Sector\nimport earth.worldwind.render.image.ImageSource\nimport earth.worldwind.util.Level\nimport earth.worldwind.util.TileFactory\n\ninterface MercatorTileFactory : TileFactory {\n override fun createTile(sector: Sector, level: Level, row: Int, column: Int) =\n MercatorImageTile(sector as MercatorSector, level, row, column).apply {\n imageSource = getImageSource(column, (1 shl level.levelNumber) - 1 - row, level.levelNumber)?.also {\n it.postprocessor = this\n }\n }\n\n fun getImageSource(x: Int, y: Int, z: Int): ImageSource?\n}","package earth.worldwind.gesture\n\nimport earth.worldwind.geom.Position\nimport earth.worldwind.render.Renderable\n\n/**\n * Interface for processing user input to interact with renderables.\n */\ninterface SelectDragCallback {\n /**\n * Nothing was picked due to picking point is outside the terrain.\n */\n fun onNothingPicked() {}\n\n /**\n * Nothing context was requested due to selected point is outside the terrain.\n */\n fun onNothingContext() {}\n\n /**\n * Terrain position was picked.\n *\n * @param position picked terrain position\n */\n fun onTerrainPicked(position: Position) {}\n\n /**\n * Terrain context at some position was requested.\n *\n * @param position picked terrain position\n */\n fun onTerrainContext(position: Position) {}\n\n /**\n * Check if renderable is pick-able.\n *\n * @param renderable some renderable intended to be picked\n * @return renderable is pick-able\n */\n fun canPickRenderable(renderable: Renderable) = false\n\n /**\n * Some renderable was picked.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderablePicked(renderable: Renderable, position: Position) {}\n\n /**\n * Some renderables context was requested.\n *\n * @param renderable picked renderable\n * @param position picked terrain or renderable center position\n */\n fun onRenderableContext(renderable: Renderable, position: Position) {}\n\n /**\n * Check if picked renderable is movable.\n *\n * @param renderable picked renderable\n * @return picked renderable is movable\n */\n fun canMoveRenderable(renderable: Renderable) = false\n\n /**\n * Renderable was moved from ane position to another.\n *\n * @param renderable picked renderable which is moving\n * @param fromPosition previous position\n * @param toPosition current position\n */\n fun onRenderableMoved(renderable: Renderable, fromPosition: Position, toPosition: Position) {}\n\n /**\n * Renderable movement was finished\n *\n * @param renderable renderable which was moved\n * @param position last position during movement\n */\n fun onRenderableMovingFinished(renderable: Renderable, position: Position) {}\n\n /**\n * Renderable was double-tapped or double-clicked\n *\n * @param renderable renderable which was double-tapped or double-clicked\n * @param position picked terrain or renderable center position\n */\n fun onRenderableDoubleTap(renderable: Renderable, position: Position) {}\n}",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && !scriptUrl) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(960);\n"],"names":["root","factory","exports","module","define","amd","this","createErrorType","name","init","superErrorClass","JsJodaException","message","Error","captureStackTrace","constructor","stack","apply","arguments","toString","prototype","Object","create","DateTimeException","cause","msg","DateTimeParseException","text","index","parsedString","errorIndex","UnsupportedTemporalTypeException","ArithmeticException","IllegalArgumentException","IllegalStateException","NullPointerException","_inheritsLoose","subClass","superClass","__proto__","_assertThisInitialized","self","ReferenceError","assert","assertion","error","requireNonNull","value","parameterName","requireInstance","_class","abstractMethodFail","methodName","TypeError","assert$1","freeze","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","MathUtil","intDiv","x","y","r","roundDown","safeZero","intMod","Math","ceil","floor","floorDiv","floorMod","safeAdd","verifyInt","safeToInt","safeSubtract","safeMultiply","parseInt","_parseInt","_x","isNaN","compareNumbers","a","b","smi","int","hash","number","Infinity","result","hashCode","_len","length","numbers","Array","_key","_i","_numbers","n","Enum","_name","_proto","equals","other","toJSON","TemporalAmount","get","unit","units","addTo","temporal","subtractFrom","TemporalUnit","duration","isDurationEstimated","isDateBased","isTimeBased","isSupportedBy","dateTime","periodToAdd","between","temporal1","temporal2","Duration","_TemporalAmount","seconds","nanos","_this","call","_seconds","_nanos","ofDays","days","_create","LocalTime","SECONDS_PER_DAY","ofHours","hours","SECONDS_PER_HOUR","ofMinutes","minutes","SECONDS_PER_MINUTE","ofSeconds","nanoAdjustment","secs","NANOS_PER_SECOND","nos","ofMillis","millis","mos","ofNanos","of","amount","ZERO","plus","from","forEach","startInclusive","endExclusive","until","ChronoUnit","SECONDS","isSupported","ChronoField","NANO_OF_SECOND","startNos","getLong","adjustedEnd","with","e","parse","matches","RegExp","exec","negate","dayMatch","hourMatch","minuteMatch","secondMatch","fractionMatch","daysAsSecs","_parseNumber","hoursAsSecs","minsAsSecs","negativeSecs","charAt","_parseFraction","ex","parsed","multiplier","errorText","substring","parseFloat","_createSecondsNanos","_createNegateDaysHoursMinutesSecondsNanos","negated","NANOS","isZero","isNegative","nano","withSeconds","withNanos","nanoOfSecond","checkValidIntValue","plusDuration","durationOrNumber","unitOrNumber","plusAmountUnit","plusSecondsNanos","amountToAdd","DAYS","plusNanos","MICROS","MILLIS","plusMillis","plusSeconds","multipliedBy","plusDays","daysToAdd","plusHours","hoursToAdd","plusMinutes","minutesToAdd","secondsToAdd","millisToAdd","nanosToAdd","epochSec","minus","minusDuration","minusAmountUnit","secsToSubtract","nanosToSubtract","amountToSubtract","minusDays","daysToSubtract","minusHours","hoursToSubtract","minusMinutes","minutesToSubtract","minusSeconds","secondsToSubtract","minusMillis","millisToSubtract","minusNanos","multiplicand","dividedBy","divisor","secsMod","abs","toDays","toHours","toMinutes","toMillis","round","toNanos","totalNanos","compareTo","otherDuration","cmp","nanoString","rval","slice","YearConstants","_TemporalUnit","estimatedDuration","_duration","FOREVER","e2","TemporalField","baseUnit","rangeUnit","range","rangeRefinedBy","getFrom","adjustInto","newValue","displayName","ValueRange","minSmallest","minLargest","maxSmallest","maxLargest","_minSmallest","_minLargest","_maxLargest","_maxSmallest","isFixed","minimum","largestMinimum","maximum","smallestMaximum","isValidValue","checkValidValue","field","isValidIntValue","isIntValue","str","_TemporalField","_baseUnit","_rangeUnit","_range","byName","fieldName","prop","DAY_OF_WEEK","ALIGNED_DAY_OF_WEEK_IN_MONTH","ALIGNED_DAY_OF_WEEK_IN_YEAR","DAY_OF_MONTH","DAY_OF_YEAR","EPOCH_DAY","ALIGNED_WEEK_OF_MONTH","ALIGNED_WEEK_OF_YEAR","MONTH_OF_YEAR","YEAR_OF_ERA","YEAR","ERA","NANO_OF_DAY","MICRO_OF_SECOND","MICRO_OF_DAY","MILLI_OF_SECOND","MILLI_OF_DAY","SECOND_OF_MINUTE","SECOND_OF_DAY","MINUTE_OF_HOUR","MINUTE_OF_DAY","HOUR_OF_AMPM","CLOCK_HOUR_OF_AMPM","HOUR_OF_DAY","CLOCK_HOUR_OF_DAY","AMPM_OF_DAY","TemporalQueries","zoneId","ZONE_ID","chronology","CHRONO","precision","PRECISION","zone","ZONE","offset","OFFSET","localDate","LOCAL_DATE","localTime","LOCAL_TIME","TemporalAccessor","query","_query","queryFrom","TemporalQuery","_Enum","createTemporalQuery","queryFromFunction","ExtendedTemporalQuery","_TemporalQuery","ENUMS","MONTHS","DayOfWeek","_TemporalAccessor","ordinal","_ordinal","values","valueOf","dayOfWeek","style","locale","Month","_value","months","newMonthVal","leapYear","FEBRUARY","APRIL","JUNE","SEPTEMBER","NOVEMBER","minLength","maxLength","firstDayOfYear","leap","JANUARY","MARCH","MAY","JULY","AUGUST","OCTOBER","DECEMBER","firstMonthOfQuarter","IsoChronology","INSTANCE","month","PATTERN","Period","years","_years","_months","_days","ofYears","ofMonths","ofWeeks","weeks","i","unitAmount","YEARS","startDate","endDate","LocalDate","_parse","yearMatch","monthMatch","weekMatch","val","withYears","withMonths","withDays","plusYears","yearsToAdd","plusMonths","monthsToAdd","minusYears","yearsToSubtract","minusMonths","monthsToSubtract","scalar","normalized","totalMonths","toTotalMonths","splitYears","splitMonths","obj","buf","ParsePosition","_index","_errorIndex","getIndex","setIndex","getErrorIndex","setErrorIndex","EnumMap","_map","putAll","otherMap","key","containsKey","hasOwnProperty","undefined","put","set","retainAll","keyList","map","remove","keyName","keySet","clear","ResolverStyle","STRICT","SMART","LENIENT","TemporalAdjuster","Temporal","p1","p2","minusAmount","plusAmount","endTemporal","withAdjuster","withFieldValue","adjuster","DefaultInterfaceTemporal","_Temporal","ChronoLocalDate","_DefaultInterfaceTemp","fieldOrUnit","ofEpochDay","toEpochDay","format","formatter","DateTimeFormatter","StringUtil","startsWith","pattern","indexOf","len","charCodeAt","ZoneId","systemDefault","getAvailableZoneIds","ofOffset","prefix","id","rules","isFixedOffset","Instant","EPOCH","ZoneRules","Fixed","instantOrLocalDateTime","offsetOfInstant","offsetOfLocalDateTime","instant","offsetOfEpochMilli","epochMilli","localDateTime","validOffsets","transition","standardOffset","daylightSavings","isDaylightSavings","isValidOffset","nextTransition","previousTransition","transitions","transitionRules","_ZoneRules","_offset","_proto2","SECONDS_CACHE","ID_CACHE","ZoneOffset","_ZoneId","totalSeconds","_validateTotalSeconds","_totalSeconds","_rules","_id","_buildId","absTotalSeconds","absHours","absMinutes","MINUTES_PER_HOUR","absSeconds","MAX_SECONDS","_validate","offsetId","first","ofHoursMinutesSeconds","pos","precededByColon","ch1","ch2","ofHoursMinutes","ofTotalSeconds","ofTotalMinutes","totalMinutes","totalSecs","OFFSET_SECONDS","DateTimeBuilder","fieldValues","chrono","date","time","leapSecond","excessDays","dtb","_addFieldValue","getFieldValue0","old","_putFieldValue0","resolve","resolverStyle","resolverFields","_mergeDate","_mergeTime","_resolveTimeInferZeroes","_resolveInstant","_checkDate","resolveDate","_addObject","val1","val2","ch","_ch","ap","hap","nod","cod","lod","sod","mod","los","cos","_nos","_cos","_los","hod","moh","som","hodVal","mohVal","somVal","nosVal","_hodVal","ofNanoOfDay","_excessDays","ofSecondOfDay","_excessDays2","dateOrTime","offsetSecs","atTime","atZone","INSTANT_SECONDS","_instant","build","type","DateTimeParseContext","_constructorSelf","_constructorFormatter","_constructorParam","_caseSensitive","_strict","_parsed","Parsed","symbols","_locale","_symbols","_overrideChronology","decimalStyle","_overrideZone","copy","isStrict","setStrict","strict","setLocale","startOptional","push","currentParsed","endOptional","successful","splice","isCaseSensitive","setCaseSensitive","caseSensitive","subSequenceEquals","cs1","offset1","cs2","offset2","toLowerCase","charEquals","charEqualsIgnoreCase","c1","c2","setParsedField","errorPos","successPos","currentParsedFieldValues","setParsedZone","getParsed","toParsed","setParsedLeapSecond","getEffectiveChronology","dateTimeParseContext","cloned","toBuilder","builder","overrideZone","DateTimePrintContext","localeOrFormatter","_temporal","adjust","_optional","getValueQuery","getValue","setDateTime","IsoFields","QUARTER_DAYS","Field","_isIso","_getWeekRangeByLocalDate","wby","_getWeekBasedYear","_getWeekRangeByYear","THURSDAY","WEDNESDAY","isLeapYear","_getWeek","dow0","doy0","dayOfYear","doyThu0","firstMonDoy0","withDayOfYear","week","year","doy","_dow","DAY_OF_QUARTER_FIELD","_Field","QUARTER_YEARS","qoy","QUARTER_OF_YEAR","moy","curValue","partialTemporal","yearLong","qoyLong","doq","DAY_OF_QUARTER","_qoy","max","QUARTER_OF_YEAR_FIELD","_Field2","_proto3","WEEK_OF_WEEK_BASED_YEAR_FIELD","_Field3","_proto4","WEEKS","WEEK_BASED_YEARS","wbyLong","WEEK_BASED_YEAR","dowLong","wowby","WEEK_OF_WEEK_BASED_YEAR","dow","plusWeeks","_dow2","temp","WEEK_BASED_YEAR_FIELD","_Field4","_proto5","newWby","resolved","Unit","_proto6","added","DecimalStyle","zeroChar","positiveSignChar","negativeSignChar","decimalPointChar","_zeroDigit","_zeroDigitCharCode","_positiveSign","_negativeSign","_decimalSeparator","positiveSign","withPositiveSign","negativeSign","withNegativeSign","zeroDigit","withZeroDigit","decimalSeparator","withDecimalSeparator","convertToDigit","char","convertNumberToI18N","numericText","diff","convertedText","String","fromCharCode","availableLocales","STANDARD","SignStyle","positive","fixedWidth","NORMAL","ALWAYS","EXCEEDS_PAD","NEVER","NOT_NEGATIVE","TextStyle","isStandalone","FULL_STANDALONE","SHORT_STANDALONE","NARROW_STANDALONE","asStandalone","FULL","SHORT","NARROW","asNormal","CharLiteralPrinterParser","literal","_literal","print","context","append","position","CompositePrinterParser","printerParsers","optional","_printerParsers","withOptional","setLength","FractionPrinterParser","minWidth","maxWidth","decimalPoint","fraction","convertToFraction","outputScale","min","substr","effectiveMin","effectiveMax","minEndPos","maxEndPos","total","digit","moveLeft","scale","pow","convertFromFraction","_min","decimal","EXCEED_POINTS","NumberPrinterParser","signStyle","subsequentWidth","_field","_minWidth","_maxWidth","_signStyle","_subsequentWidth","withFixedWidth","withSubsequentWidth","_isFixedWidth","contextValue","_getValue","sign","negative","effMinWidth","effMaxWidth","pass","parseLen","_parseLen","_setValue","ReducedPrinterParser","_NumberPrinterParser","width","baseValue","baseDate","_baseValue","_baseDate","absValue","basePart","isFixedWidth","PATTERNS","OffsetIdPrinterParser","noOffsetText","_checkPattern","bufPos","output","appendChar","noOffsetLen","array","arrayIndex","parseText","required","converted","replace","INSTANCE_ID","PadPrinterParserDecorator","printerParser","padWidth","padChar","_printerParser","_padWidth","_padChar","preLen","insert","endPos","resultPos","SettingsParser","SENSITIVE","INSENSITIVE","PARSER","PARSER$1","PARSER$2","StringLiteralPrinterParser","ZoneRulesProvider","getRules","ZoneRegion","ofId","ZoneIdPrinterParser","description","nextChar","newContext","nextNextChar","_parsePrefixedOffset","UTC","availableZoneIds","zoneIdTree","size","ZoneIdTree","createTreeMap","maxParseLength","treeMap","parsedZoneId","parseLength","parsedSubZoneId","isLeaf","prefixPos","toUpperCase","sortedZoneIds","sort","ZoneIdTreeMap","add","_treeMap","idLength","subZoneId","subTreeMap","MAX_WIDTH$1","DateTimeFormatterBuilder","_active","_parent","_padNextWidth","_padNextChar","_valueParserIndex","_of","parent","dtFormatterBuilder","parseCaseSensitive","_appendInternalPrinterParser","parseCaseInsensitive","parseStrict","parseLenient","appendValue","_appendValue1","_appendValue2","_appendValue4","_appendValuePrinterParser","pp","appendValueReduced","_appendValueReducedFieldWidthMaxWidthBaseDate","_appendValueReducedFieldWidthMaxWidthBaseValue","activeValueParser","basePP","_appendInternal","appendFraction","appendInstant","fractionalDigits","InstantPrinterParser","appendOffsetId","appendOffset","appendZoneId","appendPattern","_parsePattern","appendZoneText","appendText","appendLocalizedOffset","appendWeekField","FIELD_MAP","cur","start","count","pad","padNext","_parseField","zero","_start","appendLiteral","optionalStart","optionalEnd","BASE_DATE","_padNext1","_padNext2","cpp","_toPrinterParser","toFormatter","SECONDS_PER_10000_YEARS","SECONDS_0000_TO_1970","inSecs","inNanos","inSec","inNano","zeroSecs","hi","lo","ldt","LocalDateTime","ofEpochSecond","second","_zeroSecs","_hi","_lo","_ldt","div","minDigits","maxDigits","ISO_LOCAL_DATE","instantSecs","yearParsed","day","hour","secVal","nanoVal","sec","toEpochSecond","StringBuilder","_str","end","_decimalStyle","_resolverStyle","_resolverFields","_chrono","_zone","parsedExcessDays","PARSED_EXCESS_DAYS","parsedLeapSecond","PARSED_LEAP_SECOND","ofPattern","withChronology","withLocale","withResolverStyle","_formatTo","appendable","parse1","parse2","_parseToBuilder","_createError","abbr","_parseUnresolved0","parseUnresolved","MonthDay","dayOfMonth","_month","_day","now","zoneIdOrClock","now0","nowZoneId","nowClock","Clock","systemDefaultZone","system","clock","monthOrNumber","ofMonthNumber","ofNumberNumber","parseString","parseStringFormatter","FROM","monthValue","isValidYear","Year","isLeap","withMonth","withDayOfMonth","atYear","isAfter","isBefore","YearMonth","_year","ofNumberMonth","isSupportedField","isSupportedUnit","PROLEPTIC_MONTH","DECADES","CENTURIES","MILLENNIA","ERAS","MAX_VALUE","_getProlepticMonth","isValidDay","lengthOfMonth","lengthOfYear","adjusterOrField","f","withYear","newYear","calcMonths","monthsUntil","atDay","atEndOfMonth","isoYear","parseTextFormatter","isValidMonthDay","monthDay","ofYearDay","atMonth","atMonthMonth","atMonthNumber","atMonthDay","yearsUntil","TemporalAdjusters","firstDayOfMonth","Impl","FIRST_DAY_OF_MONTH","lastDayOfMonth","LAST_DAY_OF_MONTH","firstDayOfNextMonth","FIRST_DAY_OF_NEXT_MONTH","FIRST_DAY_OF_YEAR","lastDayOfYear","LAST_DAY_OF_YEAR","firstDayOfNextYear","FIRST_DAY_OF_NEXT_YEAR","firstInMonth","DayOfWeekInMonth","lastInMonth","dayOfWeekInMonth","next","RelativeDayOfWeek","nextOrSame","previous","previousOrSame","_TemporalAdjuster","_TemporalAdjuster2","_this2","_dowValue","curDow","dowDiff","_temp","_curDow","daysDiff","_TemporalAdjuster3","relative","_this3","_relative","calDow","_daysDiff","prolepticYear","_updateResolveMap","current","prolepticMonth","yoeLong","era","dom","_y","_y2","_days2","aw","ad","_y3","_weeks","_days3","_aw","_date","OffsetTime","_time","OffsetDateTime","toOffsetTime","clockOrZone","_now","ofInstant","ofTimeAndOffset","ofNumbers","minute","secsOfDay","epochSecond","ISO_OFFSET_TIME","toNanoOfDay","atDate","_toEpochNano","isEqual","_withLocalTimeOffset","toLocalTime","truncatedTo","nanosUntil","MINUTES","NANOS_PER_MINUTE","HOURS","NANOS_PER_HOUR","HALF_DAYS","withHour","withMinute","withSecond","withNano","withOffsetSameInstant","difference","withOffsetSameLocal","compare","ChronoZonedDateTime","toLocalDate","toInstant","toSecondOfDay","toLocalDateTime","thisEpochSec","otherEpochSec","ZonedDateTime","_ChronoZonedDateTime","_dateTime","of2","of3","of8","ofLocal","dt","preferredOffset","trans","offsetAfter","some","validOffset","ofInstant2","ofInstant3","ofStrict","isGap","ofLenient","zdt","_from","__from","ISO_ZONED_DATE_TIME","_resolveLocal","newDateTime","_resolveOffset","withEarlierOffsetAtOverlap","isOverlap","earlierOffset","offsetBefore","withLaterOffsetAtOverlap","laterOffset","withZoneSameLocal","withZoneSameInstant","withFixedOffsetZone","minusWeeks","toOffsetDateTime","_","ofDateTime","ofDateAndTime","ISO_OFFSET_DATE_TIME","atZoneSameInstant","atZoneSimilarLocal","toZonedDateTime","_withDateTimeOffset","DAYS_PER_CYCLE","DAYS_0000_TO_1970","_ChronoLocalDate","epochDay","adjustCycles","doyEst","yearEst","zeroDay","marchDoy0","marchMonth0","_resolvePreviousValid","_get0","_prolepticMonth","m","newMonth","weeksToAdd","mjDay","weeksToSubtract","until1","until2","daysUntil","_monthsUntil","packed1","packed2","calcDate","atTime1","atTime4","_atTimeOffsetTime","atStartOfDay","atStartOfDayWithZone","MIDNIGHT","dateTimeAfter","_compareTo0","otherDate","yearValue","dayValue","ChronoLocalDateTime","_ChronoLocalDateTime","_ofEpochMillis","localSecond","localEpochDay","ISO_LOCAL_DATE_TIME","_withDateTime","newDate","newTime","MICROS_PER_DAY","MILLIS_PER_DAY","_plusWithOverflow","totDays","NANOS_PER_DAY","MINUTES_PER_DAY","HOURS_PER_DAY","totNanos","curNoD","newNoD","timeUntil","endTime","atOffset","_hour","_minute","_second","_nanoOfSecond","_nano","secondOfDay","nanoOfDay","ISO_LOCAL_TIME","ham","unitDur","dur","mofd","newMofd","sofd","newSofd","nofd","newNofd","hourValue","minuteValue","secondValue","nanoValue","NANOS_PER_MILLI","systemUTC","ofEpochMilli","ISO_INSTANT","MIN_SECONDS","nval","_nval","_plus","_nanosUntil","toEpochMilli","_secondsUntil","secsDiff","nanosDiff","otherInstant","SystemClock","fixed","fixedInstant","FixedClock","baseClock","OffsetClock","withZone","_Clock","Date","getTime","_Clock2","_zoneId","_Clock3","_baseClock","ZoneOffsetTransition","_transition","_offsetBefore","_offsetAfter","dateTimeBefore","durationSeconds","d","SystemDefaultZoneRules","offsetInMinutes","getTimezoneOffset","offsetInMinutesBeforePossibleTransition","offsetInMinutesAfterPossibleTransition","_throwNotSupported","SystemDefaultZoneId","ZoneIdFactory","SYSTEM_DEFAULT_ZONE_ID_INSTANCE","isInit","MIN_VALUE","MIN","MAX","NOON","_init$k","isoWeekOfWeekyear","isoWeekyear","MONDAY","TUESDAY","FRIDAY","SATURDAY","SUNDAY","EPOCH_0","SYSTEM","BASIC_ISO_DATE","ISO_OFFSET_DATE","ISO_ORDINAL_DATE","ISO_WEEK_DATE","ToNativeJsConverter","zonedDateTime","toDate","convert","NativeJsTemporal","_epochMilli","nativeJs","jsJoda","used","jsJodaExports","use","fn","isoDayNumber","","","ofZone","zoneOffset","DateTimeFormatException_init_$Init$","IllegalTimeZoneException_init_$Init$","DateTimeArithmeticException_init_$Init$","decoder","epochMilliseconds","isoString","fixOffsetRepresentation","epochSeconds","nanosecondAdjustment","q","sum","offsetString","nanosecond","monthNumber","timeZone","ResourcePlatformDetails","engine","AbstractTutorial","ElevationHeatmapLayer","Color","Ellipse","GKGraticuleLayer","MGRSGraticuleLayer","Path","listOf","Polygon","thickenLine","ShowTessellationLayer","SurfaceImage","Wcs100ElevationCoverage","scope","window","it","$currentTutorial","$tutorials","$actionsContainer","$wwd","document","getElementById","wwd","WorldWindow","tutorialSelect","projectionSelect","actionsContainer","tutorials","mapOf","BasicTutorial","CameraViewTutorial","LookAtViewTutorial","PlacemarksTutorial","PathsTutorial","PolygonsTutorial","EllipsesTutorial","ShapesDashAndFillTutorial","LabelsTutorial","SightlineTutorial","SurfaceImageTutorial","ShowTessellationTutorial","MGRSGraticuleTutorial","GKGraticuleTutorial","WmsLayerTutorial","WmtsLayerTutorial","WcsElevationTutorial","ElevationHeatmapTutorial","projections","Wgs84Projection","MercatorProjection","currentTutorial","BackgroundLayer","StarFieldLayer","AtmosphereLayer","BasicElevationCoverage","element","innerHTML","onchange","event","target","$projections","actionName","$actionName","onclick","tutorial","projectionName","setCameraAction","aircraft","airport","heading","distanceMeters","tilt","LookAt","setLookAtAction","altitude","Position","positionView","mtRainier","eye","distance","$this$launch","$completion","launch","renderable","FileResource","identifier","userObject","layer","terrainPosition","po","MutableSharedFlow","asSharedFlow","gl","renderResourceCache","globe","tessellator","frameController","frameMetrics","Globe","BasicTessellator","BasicFrameController","LayerList","Camera","GoToAnimator","RenderContext","DrawContext","initLocation","initAltitude","BufferPool","VertexAttrib","DrawElements","lhs","rhs","DrawShapeState","bindTexture","dc","BoundingBox","DrawableQueue","inDegrees","angle","degrees","radians","coerceIn","adjustExtremes","rExtremes","s","sExtremes","t","tExtremes","p","pdr","pds","pdt","swapAxes","aExtremes","bExtremes","tmp","intersectsAt","plane","effectiveRadius","dq1","bq1","bq2","z","Vec3","Ellipsoid","semiMajorAxis","inverseFlattening","Frustum_init_$Init$","Viewport","Line_init_$Init$","Location_init_$Init$","latitude","longitude","LookAt_init_$Init$","altitudeMode","roll","Matrix3_init_$Init$","Matrix4_init_$Init$","xUnits","yUnits","Position_init_$Init$","Location","Range_init_$Init$","lower","upper","Sector_init_$Init$","sector","minLatitude","maxLatitude","minLongitude","maxLongitude","matrixWidth","matrixHeight","tileWidth","tileHeight","TileMatrixSet_init_$Init$","emptyList","entries","Vec2_init_$Init$","Vec3_init_$Init$","Vec2","Viewport_init_$Init$","height","HelmertParameters","dX","dY","dZ","omegaX","omegaY","omegaZ","fromEllipsoid","toEllipsoid","MGRSString","convertUTMToMGRS","easting","northing","gridEasting","gridNorthing","east","north","letters","roundMGRS","getGridValues","setNumber","aaPattern","errorCode","getLatitudeLetter","latDeg","makeMGRSString","floorValue","intValue","j","iEast","sEast","iNorth","sNorth","hemisphere","PolarCoordConverter","ellipsoid","projection","ElevationModel","LruMemoryCache","$key","$tileMatrix","$row","$column","tileMatrixSet","elevationSourceFactory","AbstractElevationCoverage","AbsentResourceList","MainScope","WmsElevationCoverage","tiles","triStripElements","toList","level","row","column","$level","Tile","lazy","tiledSurfaceImage","RenderableLayer","imageSource","imageOptions","ImageOptions","surfaceImage","AbstractLayer","asInt","AbstractShaderProgram","AbstractAtmosphereProgram","greatCircleIntersectionAtLongitude","deltaLon","getDeltaLongitude","midPoint","greatCircleMidPoint","greatCircleIntersectionAtLatitude","azimuth","GraticuleSupport","AbstractTile","initRenderingParams","params","applyRenderingParams","opacity","o","color","applyOpacity","compArray","colorValue","path","getLineShapeAttributes","createLineShapeAttributes","attrs","lineWidth","getVisibleTiles","rc","tileList","vs","gridRectangle","getGridRectangleForSector","x1","x2","col","tile","callback","rows","cols","factor","toWgsParameters","fromWgsParameters","AbstractGraticuleLayer","GridTilesSupport","GKOverview","GKMetricLabels","renderLabel","appropriateType","label","shouldRenderLabel","shouldRenderSmallScale","shouldRenderMinimalScale","getTypeWithBiggerScale","generateMeridiansAndParallels","shouldGenerateMeridian","generateWestMeridian","minLon","minLat","latStep","positions","westLine","GridElement","shouldGenerateParallel","generateNorthParallel","lonStep","northLine","gkSector","tileType","previousName","countInParent","childNumber","AbstractGraticuleTile","getMillionNameByCoord","addLabel","point","labelType","labelBy","rowOrCol","takeLast","createLine","firstPosition","nextPosition","lineWithIntersection","intersectPoint","anotherPoint","startPoint","movedByXPoint","lineX","mutableListOf","getTypeLine","intersect","point1","point2","x3","y3","x4","y4","getWGSPositionFromXY","minXMinY","minXMaxY","maxXMaxY","maxXMinY","ZoneExtremes","removeLabels","yLabel","checkIfOutOfZone","xLabel","getTypeBy","shouldClean","isNotInScale","tooFar","getDistanceBy","scaleModulo","maxResolution","selectMGRSRenderables","getVisibleZones","zoneList","rectangle","coerceAtLeast","maxLat","gridSector","getGridColumn","y1","getGridRow","y2","MGRSGridZone","coerceAtMost","getGridSector","maxLon","AbstractUTMGraticuleLayer","MGRSOverview","setSquareName","sz","tenMeterDegree","mgrs","utm","","isPointInRange","altitudeAboveGround","UTMZone","UTMZoneSector","SWEasting","SWNorthing","UTMSquareSector","","adjustDateLineCrossingPoints","corners","locationsCrossDateLine","locations","posNext","delta","lonSign","corner","boundingSector","lat","lon","Sector","isNorthNeighborInView","isEastNeighborInView","ImageTile","minLatPercent","maxLatPercent","TiledImageLayer","tileFactory","levelSet","TiledSurfaceImage","$urlParts","$randomValue","$randomValues","$urlTemplate","$imageFormat","$transparent","$name","$tiledSurfaceImage","MercatorTiledImageLayer","seen1","datatype","arraysize","ucd","serializationConstructorMarker","metadata","data","starDataSource","serviceAddress","coverageName","outputFormat","resolution","TiledElevationCoverage","Wcs100ElevationSourceFactory","coordinateSystem","$wmsTileFactory","buildTileMatrixSet","buildElevationSourceFactory","coverage","imageFormat","layerNames","lc","decodeWmsCapabilities","xmlText","withContext","$this$withContext","createWmsImageLayer","serviceMetadata","wmsLayers","createWmsSurfaceImage","layerLimit","wmsLayerConfig","levelSetConfig","config","$this$$receiver","$xmlText","$serviceAddress","$serviceMetadata","$wmsLayers","joinToString","l","wmsVersion","styleNames","decodeWmtsCapabilities","createWmtsImageLayer","wmtsLayer","createWmtsSurfaceImage","determineCompatibleTileMatrixSet","tileMatrixSets","directAxisOrder","tileMatrices","minX","maxY","scaleDenominator","previousHeight","previousWidth","previousCorner","tileMatrix","topLeftCorner","toDouble","createWmtsTileFactory","w","resourceUrl","WmtsTileFactory","baseUrl","determineKvpUrl","dcp","getMethods","constraints","styleIdentifier","buildWmtsKvpTemplate","kvpServiceAddress","createWmtsLevelSet","pixelSpan","tileSpanX","tileSpanY","maxX","minY","deltaX","deltaY","$wmtsLayer","layerName","template","tileMatrixIdentifiers","firstLevelHeight","title","onlineResource","logoURL","CRS","minx","maxx","miny","maxy","resx","resy","version","updateSequence","service","capability","request","layers","exception","WmsException","addressType","address","city","stateOrProvince","postCode","country","voiceTelephone","facsimileTelephone","electronicMailAddress","contactAddress","contactPersonPrimary","contactPerson","contactOrganization","post","http","unitSymbol","default","multipleValues","nearestValue","formats","south","west","authority","abstract","keywordList","_styles","_referenceSystems","_geographicBoundingBox","_boundingBoxes","_dimensions","_attribution","_authorityUrls","identifiers","metadataUrls","dataUrls","featureListUrls","_maxScaleDenominator","_minScaleDenominator","isQueryable","_cascaded","isOpaque","isNoSubsets","_fixedWidth","_fixedHeight","url","getCapabilities","getMap","getFeatureInfo","dcpType","fees","accessConstraints","contactInformation","maxHeight","legendUrls","styleSheetUrl","styleUrl","deliveryPoints","administrativeArea","postalCode","electronicMailAddresses","crs","lowerCorner","upperCorner","allowedValues","phone","hoursOfService","contactInstructions","postMethods","dcps","operations","voice","fax","individualName","positionName","contactInfo","role","keywords","serviceType","serviceTypeVersions","providerName","serviceContact","serviceIdentification","serviceProvider","operationsMetadata","contents","themes","serviceMetadataUrls","unitOfMeasure","valueDefault","boundingBoxes","wgs84BoundingBox","styles","infoFormats","tileMatrixSetLinks","resourceUrls","dimensions","resourceType","isDefault","layerRefs","tileMatrixIdentifier","minTileRow","maxTileRow","minTileCol","maxTileCol","supportedCrs","wellKnownScaleSet","boundingBox","tileMatrixSetLimits","AbstractRenderable","Color_init_$Init$","red","green","blue","alpha","attributes","TextRenderer","TextCacheKey","isRT","byteCount","appendBuffer","allocNewBuffer","usage","blockSize","blockCount","AbstractBufferObject","imageConfig","center","majorRadius","minorRadius","AbstractShape","RenderData","BoundingSphere","PlacemarkAttributes_init_$Init$","imageColor","imageOffset","imageScale","minimumImageScale","isDrawLabel","isDrawLeader","isDepthTest","labelAttributes","leaderAttributes","GLUtessellatorCallbackAdapter","ShapeAttributes_init_$Init$","isDrawInterior","isDrawOutline","isDrawVerticals","isDepthWrite","isLightingEnabled","interiorColor","outlineColor","outlineWidth","interiorImageSource","outlineImageSource","AbstractSurfaceRenderable","TextAttributes_init_$Init$","font","textColor","textOffset","isOutlineEnabled","maxTrys","minCheckInterval","source","levelNumber","tileDelta","roundToInt","tileOrigin","firstLevelDelta","numLevels","levelOffset","Level","capacity","lowWater","declination","rightAscension","keepWidth","roundUp","","this$0","nextDigit","pointPos","mb","","receiver","","","invalidFormat","","createTimeField","upperCase","tz","offsetAt","createIntegerField","insertField","createHexField","createOctalField","createCharacter","endStage","setDone","toInt","endStage$default","padStart","padEnd","insertField$default","createFloat","fractionPartLength","roundToLong","fl","rest","fractionalFormat","createScientific","ExponentFormatter","createAutoFloat","args","StringFormat","eUp","head","frame","leq","GLUvertex","GLUface","GLUhalfEdge","makeDormant","requireState","newState","gotoState","addVertex","coords","vertexData","flushCache","vertex","CachedVertex","dot","u","v","PriorityQ","PQnode","PQhandleElem","lt","swap","PriorityQHeap","FaceCount_init_$Init$","eStart","render","marked","addToTrail","freeTrail","isEven","RenderFan","RenderStrip","RenderTriangle","addWinding","eDst","eSrc","regionBelow","regionAbove","$tess","connectTimeout","requestTimeout","HttpClient","$config","$connectTimeout","$requestTimeout","$this$HttpClient","$this$install","$this$null","unitSquareTransform","modulus","WorldWindowController","EventListener","keyCode","preventDefault","tabIndex","focus","canvas","cacheCapacity","WorldWind","WebKgl","RenderResourceCache","BasicWorldWindowController","KeyboardControls","SelectDragDetector","Frame","preventDefaultListener","onGestureEvent","navigator","maxTouchPoints","setProperty","addEventListener","statusMessage","keyId","tiffTagLocation","valueOffset","parseBlock","returnElevation","compression","bytesPerPixel","blockByteCount","blockOffset","bitsPerSample","sampleFormat","parseUncompressedBlock","block","byteOffset","pixel","bytesPerSample","sampleOffset","parsePackBitsCompressedBlocks","arrayBuffer","Int8Array","uncompressedDataView","DataView","buffer","newBlock","blockLength","numOfIterations","uncompressedOffset","nextSourceByte","getInt8","currentByte","setInt8","geoTiffImageToPCS","xValue","yValue","parseImageFileDirectory","noOfDirectoryEntries","directoryEntries","tag","TiffIFDEntry","nextIfdOffset","GeoTiffMetadata","getEndianness","isTiffFileType","getMetadataFromImageFileDirectory","ifd","parseGeoKeys","isGeoTiff","getIFDByTag","geoKeyDirectory","numberOfKeys","GeoTiffKeyEntry","setBBox","upperLeft","upperRight","lowerLeft","geoTiffData","isLittleEndian","GestureRecognizer","clientX","clientY","DragRecognizer","PanRecognizer","changedTouches","item","pickPoint","pickList","redrawRequired","highlighted","topPickedObject","recognizer","toPosition","fromPosition","clapToGround","movePoint","ClickRecognizer","TapRecognizer","controller","AbstractSource","decodeTiffImage","$arrayBuffer","AbstractTiledElevationCoverage","AbstractTiledImageLayer","createElement","getContext","willReadFrequently","$resource","URL","createObjectURL","onerror","resource","AbstractMercatorImageTile","Font_init_$Init$","family","weight","variant","horizontalAlignment","$imageSource","$options","$result","$fileResource","$postprocessor","$image","$postprocessorExecuted","postprocessor","revokeObjectURL","src","image","Texture","isPowerOfTwo","BasicPool","KglShader","KglProgram","KglUniformLocation","KglBuffer","KglTexture","KglFramebuffer","language","Plane_init_$Init$","TiledElevationCoverage_init_$Init$","LevelSet_init_$Init$","PickedObject","positionCopy","r8","g8","b8","pickedObject","lookAtPosition","cameraPosition","lookAt","elevation","sinFovY2","radius","pickMode","isRedrawRequested","modelview","eyeAltitude","far","maxDepthValue","near","distanceToSurface","tanHalfFov","maxNearDistance","pool","instance","BasicDrawableTerrain","","attribLocation","bufferBound","colorAttachment","depthAttachment","fill","framebuffer","program","textureUnit","texture","textureUnitIndex","pixelCount","pixelBuffer","packAlignment","resultSet","idx","matrix","mode","prim","DrawableHeatmap","terrain","terrainOrigin","DrawableLines","drawable","groupId","order","depth","increment","newEntries","entry","sortWith","DrawableScreenTexture","that","DrawableShape","DrawableSightline","depthTexture","DrawableStarField","sunBuffer","sunTexture","DrawableSurfaceColor","DrawableSurfaceShape","scratchList","terrainSector","shapeCount","shape","primIdx","DrawableSurfaceTexture","textureSector","texCoordMatrix","usingTerrainAttrs","DrawableTessellation","globeOffset","pickedObjectId","BasicShaderProgram","pickRay","pickedObjects","pickViewport","pickPointOnly","objectFound","topObjectId","topObject","terrainObject","normalizedLat","a1","a2","stride","rMin","rMax","sMin","sMax","tMin","tMax","rLen","sLen","tLen","rSum","sSum","tSum","cx","cy","cz","rx2","ry2","rz2","minHeight","heights","points","centroidLat","centroidLon","minDist2","dist2","frustum","coherentPlane","nr","viewport","subViewport","bln","blf","brn","brf","tln","tlf","trn","trf","left","right","bottom","top","mvpInv","va","vb","nl","nb","nt","nn","nf","pointA","pointB","elements","vx","vy","vz","sx","sy","epsilon","vert1x","vert1y","vert1z","vert2x","vert2y","vert2z","vert0x","vert0y","vert0z","edge1x","edge1y","edge1z","edge2x","edge2y","edge2z","px","py","pz","det","invDet","tx","ty","qx","qy","qz","latitudeDegrees","longitudeDegrees","offsetSec","offsetIn","offsetHours","latDegrees","lonDegrees","latitudeRadians","longitudeRadians","location","lat1","lon1","lat2","lon2","azimuthRadians","lat1Radians","lon1Radians","lat2Radians","lon2Radians","c","distanceRadians","latRadians","lonRadians","cosLat","sinLat","cosAzimuth","sinAzimuth","sinDistance","cosDistance","endLatRadians","endLonRadians","dLon","dPhi","dLat","xScale","yScale","dst","srcDeltaLat","srcDeltaLon","dstDeltaLat","dstDeltaLon","xs","ys","xt","yt","ma","ma0","ma1","ma2","contentEquals","contentHashCode","A","vv","big","k","dum","imax","ii","ip","m11","m12","m13","m14","m21","m22","m23","m24","m31","m32","m33","m34","m41","m42","m43","m44","zScale","viewportWidth","viewportHeight","vFieldOfView","nearDistance","farDistance","aspect","nearHeight","nearWidth","mx","my","mz","c11","c22","c33","c12","c13","c23","numPoints","dx","dy","dz","ma3","mr1","mr2","mr3","mr4","depthOffset","cr","sr","sh","ct","st","result1","result2","result3","u2","u2p1","i1","i2","i3","itemp","sw","nearResult","farResult","mw","nx","ny","nz","nw","fx","fy","fz","fw","Offset","vector","da","db","line","lDotV","magnitude","minLatDegrees","minLonDegrees","deltaLatDegrees","deltaLonDegrees","maxLatDegrees","maxLonDegrees","empty","deltaLatitudeDegrees","deltaLongitudeDegrees","lOrd","toLong","lRow","lCol","deltaLat","TileMatrix","TileMatrixSet","nearestIdx","nearestDelta2","delta2","converter","GKCoordConverter","GKCoord","suffix","nPow2","nPow3","e0","pLat","sinLatPow2","cosLatPow3","cosLatPow5","tanLat","tanLatPow2","tanLatPow4","n2","iii","iiia","iv","V","VI","l0","beta","cosBeta","cos2beta","bx","cosBx","cos2Bx","sinBx","sin2Bx","a22","a24","a26","a28","b13","b15","b17","b19","parameters","fromGlobe","toGlobe","fromCartesian","toCartesian","MGRSCoordConverter","err","MGRSCoord","ups","convertUPSToMGRS","falseEasting","falseNorthing","ltr2LowValue","invF","es2","sLat","esSin","powEs","cLat","onePlusEs","oneMinusEs","dLam","rho","Easting","Northing","tempPhi","minEasting","maxEasting","minNorthing","phi","sinPhi","aOrNull","fOrNull","originLatitude","centralMeridian","TMCoordConverter","TMCoord","scaleFactor","cm","tn","tn2","tn3","tn4","tn5","tempLong","tempOrigin","c3","c5","c7","tan2","tan4","tan6","eta","eta2","eta3","eta4","sn","tmd","t1","t2","t3","t4","t5","t6","t7","t8","t9","ftphi","t10","de","t11","t12","t13","t14","t15","t16","t17","UPSCoordConverter","UPSCoord","UTMCoordConverter","UTMCoord","tempZone","tm","State","ec2","numLat","numLon","verticalExaggeration","origin","rowOffset","rowStride","retrieve","maxTimestamp","timestamp","gridWidth","gridHeight","cancelChildren","targetIdx","x0","y0","xf","yf","targetPixelSpan","tileBlock","TileBlock","rasterWidth","rasterHeight","matrixMinLat","matrixMaxLat","matrixMinLon","matrixMaxLon","matrixDeltaLat","matrixDeltaLon","uIdx","i0","fract","col0","col1","vIdx","j0","row0","row1","tileArray","intersection","uMin","uMax","colMin","colMax","vMin","vMax","rowMin","rowMax","rIdx","hIdx","j1","wIdx","i0j0","i1j0","i0j1","i1j1","iMin","iMax","jMin","jMax","rowJMin","rowJMax","colIMin","colIMax","texel","ecc","vec","eqr","minLatLimit","maxLatLimit","minLonLimit","maxLonLimit","elevIndex","xOffset","yOffset","zOffset","rowIndex","latIndex","colIndex","lonIndex","resultIndex","skip","phiLast","lambda","cosLon","sinLon","rpm","eqr2","pol2","ux","uy","uz","ey","ez","hgt","h","zpx","zpxSqrt","ra2","e4","evoluteBorderTest","rad1","rad2","rad","rad3","aTan","dpySqrt","s2","m2","found","sf","tf","si","ti","tileRowStride","i00","i10","i01","i11","f00","f10","f01","f11","levelNumberDepth","iterator","maxValue","minLevelNumber","TerrainTile","BasicTerrain","childs","vertexTexCoords","lineElements","FloatBufferObject","ds","tIdx","sIdx","toShort","ve","state","borderHeight","invWavelength","g","kr","km","fragMode","direction","eyePoint","equatorialRadius","atmosphereAltitude","ar","lightLocation","SkyProgram","GroundProgram","altitudes","ShortBufferObject","DrawableGroundAtmosphere","nightTexture","textureBound","DrawableSkyAtmosphere","renderingParams","paramsKey","needsToUpdate","labelOffset","pathType","surfacePoint","p1In","p2In","outPoint","inPoint","sectors","viewingVector","normalVector","GraticuleRenderingParams","GKGraticuleTile","isZeroOrMinimalValue","distanceToTile","enableRenderingForChildTile","typeWithBiggerScale","ge","renderMetricGraticule","shouldCreateSubTile","createSubTiles","newType","subTiles","subTile","createLabels","labelPos","createMetricGraticule","squares","b1","b2","determinant","previousScaleName","get500kPrefix","rowFromTop","num","get200kPrefix","get100kPrefix","get50kPrefix","countOf100Maps","get25kPrefix","countOf50Maps","get10kPrefix","lineType","xMinZone","xMaxZone","yMinZone","yMaxZone","firstRow","lastRow","firstCol","lastCol","createLinesAndLabels","startX","nextX","startY","nextY","movedByYPoint","createYLineThatIntersectCorners","firstY","lastX","intersectWest","lastY","intersectEast","labelLineIntersectionPoint","eastingOffset","northOffset","centerGK","centerXY","Pair","getLabelType","getLabelId","coord","ew","gt","contains","zoneNumber","polyline","computePositionFromUTM","computePositionFromUPS","utmZone","utmZoneSector","maxNorthing","startEasting","startNorthing","squaresArray","UTMSquareZone","graticuleType","createSquaresUPS","createSquaresUTM","lineSector","endsWith","latitude1","latitude2","UTMExtremes","levelExtremes","labelEasting","labelNorthing","labelHemisphere","northingOffset","viewFrustum","gridStep","gridStepTimesTen","currentHemisphere","sb","createSubGrids","subGrids","sg","UTMSquareGrid","pA","pB","centerPoint","squareGrid","ElevationHeatmapProgram","limits","colors","dLatPercent","firstRowPercent","firstColLon","d1","d2","MercatorSector","childLevel","d0","t0","northRow","southRow","westCol","eastCol","percent","tileSize","transparent","resultServerUrl","urlTemplate","urlParts","parseUrl","serverUrl","randomValue","removeSurrounding","split","starData","sunCelestialLocation","StarFieldProgram","indexes","positionIndex","starInfo","pointSize","raIndex","decIndex","magIndex","starMetaInfo","numDays","minMag","maxMag","urlString","tileSector","retrieveWmsCapabilities","wmsCapabilities","DefaultHttpClient","bodyAsText","matchingCoordinateSystems","wmsLayerCoordinateSystems","toMutableSet","toSet","WmsLayerConfig","imageFormats","layerCapabilities","LevelSetConfig","minScaleDenominator","layerCapability","minRadiansPerPixel","retrieveWmtsCapabilities","wmtsCapabilities","flipRow","list","names","regex","lowerValues","upperValues","userProperties","hsv","rr","gg","bb","attachment","currentFramebuffer","textureName","tanFov2","modelPoint","zOrder","cameraDistance","sortOrder","hasMipMap","widthPow2","powerOfTwoCeiling","bytesPerRow","heightPow2","param","currentTexture","currentBuffer","sourceData","enoughSpace","subAllocAndPopulate","bufferSize","currentProgram","fs","enable","sightline","visibleColor","occludedColor","drawableCount","highlightAttributes","minDistance2","distance2","metersPerPixel","intervals","topRange","Range","outlineRange","sideRange","elementBuffer","toShortArray","drawState","elementBufferKey","side","outline","calculatedIntervals","sanitizedIntervals","spineCount","majorArcRadians","minorArcRadians","isStandardAxisOrientation","headingAdjustment","deltaRadians","globeRadius","arrayOffset","spineIdx","spineRadius","azimuthDegrees","arcRadius","loc","isExtrudedSkirt","offsetVertexIndex","texCoord2d","maxRadius","subdivisions","subdivisionCount","actualRotation","boundingRectForUnitSquare","pixelSizeMeters","SightlineProgram","IntBufferObject","toIntArray","vertexCount","begin","numSubsegments","deltaDist","deltaAlt","dist","alt","intermediate","pixelSize","Placemark","offsetX","offsetY","scaleX","scaleY","activeTexture","visibilityScale","absTilt","camera","actualTilt","labelTexture","outData","polygonData","boundaryEdge","errnum","noIntermediatePoints","tess","v0","v1","v2","errNum","errStr","newArray","SurfaceTextureProgram","retrieveCurrentLevel","currentAncestorTile","currentAncestorTexture","children","ancestorTile","ancestorTexture","cacheSource","isCacheOnly","isCacheAbsent","permanent","resourceId","timeSinceLastMark","latAbsDifference","lonAbsDifference","nearestLat","lonDifference","nearestLon","last","radiansPerPixel","degreesPerPixel","newEntry","oldEntry","spaceRequired","sortedEntries","sortedWith","oldValue","evicted","meanLongitude","meanAnomaly","eclipticLongitude","eclipticLongitudeRad","obliquityOfTheEcliptic","CelestialLocation","celestialLocation","GMST","dayFraction","firstRowLat","detailFactor","texelSize","nearestPoint","distanceToCamera","latMin","lonMin","latMid","lonMid","latMax","lonMax","childRow","childCol","childSector","child0","child1","child2","cache","cacheSize","fractionWidth","take","createStringField","Specification","reason","convertToInstant","which","aCallback","coords_offset","Dict","DictNode","dict","node","newNode","aNode","aDict","GLUtessellatorImpl","tooLarge","clamped","cacheVertex","mesh","printStackTrace","weights","gapL","gapR","o1","o2","z1","z2","eNext","eSym","ePrev","aONext","bONext","newVertex","eOrig","vNext","vPrev","newFace","fNext","fPrev","eDel","del","vDel","newOrg","fDel","newLface","newVertex1","newVertex2","eOrg","joiningLoops","joiningVertices","eDelSym","eNew","eNewSym","tempHalfEdge","GLUmesh","fHead","vHead","eHead","norm","maxVal","minVal","minVert","maxVert","tNorm","maxLen2","tLen2","area","computedNormal","sUnit","tUnit","PriorityQSort","curr","hCurr","child","hChild","hParent","keyNew","free","hMin","Stack","seed","piv","pqKeys","sortMin","heapMin","fOrig","trail","headSize","tailSize","eTail","edgeState","check","vn","vc","xc","yc","zc","xp","yp","zp","key1","key2","reg1","reg2","e1","reg","newEdge","org","regAbove","eNewUp","regNew","ActiveRegion","regFirst","regLast","regPrev","regUp","eFirst","eLast","eTopLeft","cleanUp","firstTime","isect","needed","orgUp","dstUp","orgLo","dstLo","weights1","weights2","regLo","eLo","orgMin","eBottomLeft","degenerate","vEvent","eTopRight","eLnext","pq","face","up","keepOnlyBoundary","defaultPrevented","forwardRadians","sideRadians","sinHeading","cosHeading","forwardMeters","sideMeters","headingDegrees","clientWidth","tiltDegrees","clientHeight","rotation","timeStamp","deltaMode","WheelEvent","DOM_DELTA_PIXEL","DOM_DELTA_LINE","DOM_DELTA_PAGE","operation","setTimeout","KeyboardControls$handlePan$ref","KeyboardControls$handlePan$ref$lambda","KeyboardControls$handleZoom$ref","KeyboardControls$handleZoom$ref$lambda","KeyboardControls$handleTilt$ref","KeyboardControls$handleTilt$ref$lambda","glAttrs","listener","$entry","handleEvent","bbox","getBoundingClientRect","clientLeft","clientTop","pickCenter","PickedObjectList","cancelAnimationFrame","devicePixelRatio","getExtension","requestAnimationFrame","isPickMode","drawingBufferWidth","drawingBufferHeight","stage","geoDoubleParamsValue","geoAsciiParamsValue","keyValue","elevations","parseTiles","tilesAcross","tilesDown","tileAcross","tileDown","tileIndex","xInTile","yInTile","sampleIndex","pixelSamples","flatten","parseStrips","Uint8Array","Int16Array","Uint16Array","Int32Array","Float32Array","Uint32Array","Float64Array","numOfBytes","isSigned","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat64","getFloat32","allowAscii","getIFDEntryValueLongerThan4","ifdTypeLength","ifdValues","indexOffset","button","Click","touch","delay","pointerType","buttonBit","nextTouch","centroid","touchIdx","TouchWrapper","pointerId","newScale","touch0","touch1","newRotation","tap","tapCount","dirMask","ElevationSource","href","GeoTiffReader","fetch","ok","statusText","headers","widthDouble","heightDouble","drawImage","srcData","getImageData","dstData","createImageData","srcRow","putImageData","toBlob","deviceMemory","options","fileResource","Image","onload","crossOrigin","ratioW","ratioH","ratio","ImageTexture","ctx2D","textSize","lines","strokeOffset","textBaseline","textAlign","fillStyle","strokeStyle","lineCap","lineJoin","translate","strokeText","fillText","textAttributes","measureText","imageResource","ImageSource","lFactor","lPattern","beginPath","moveTo","lineTo","bi","stroke","UNPACK_PREMULTIPLY_ALPHA_WEBGL","texImage2D","Event","priority","tr","messageWithTrace","stackTraceToString","console","warn","info","log","className","pname","getParameter","createShader","shader","shaderSource","compileShader","deleteShader","getShaderParameter","getProgramInfoLog","getShaderInfoLog","createProgram","deleteProgram","attachShader","linkProgram","useProgram","getProgramParameter","getUniformLocation","bindAttribLocation","createBuffer","bindBuffer","subarray","bufferData","bufferSubData","deleteBuffer","vertexAttribPointer","enableVertexAttribArray","disableVertexAttribArray","cap","disable","uniform1f","uniform1i","uniform2f","uniform3f","arr","uniform3fv","uniform4f","uniform4fv","transpose","uniformMatrix3fv","uniformMatrix4fv","polygonOffset","frontFace","func","depthFunc","mask","depthMask","sFactor","dFactor","blendFunc","colorMask","createTexture","internalFormat","border","generateMipmap","texParameteri","drawArrays","drawElements","bindFramebuffer","createFramebuffer","textarget","framebufferTexture2D","readPixels","pixelStorei","LN2","O","relativeStart","relativeEnd","finalValue","TypedArray","taylor_2_bound","taylor_n_bound","asUint","searchString","subjectString","lastIndex","initial","collection","destination","pair","pairs","expectedSize","comparator","destinationOffset","startIndex","endIndex","rangeSize","subrange","fromIndex","toIndex","newSize","ArrayList_init_$Init$","initialCapacity","rangeCheck","comparison","$comparator","endInclusive","median","leftIndex","rightIndex","leftValue","rightValue","internalMap","HashMap_init_$Init$","loadFactor","original","backing","$entryIterator","backingMap","HashSet_init_$Init$","computeHashSize","computeShift","hashSize","InternalHashMap_init_$Init$","","","registerModification","ensureExtraCapacity","shouldCompact","extraCapacity","spareCapacity","gaps","ensureCapacity","minCapacity","newHashSize","allocateValuesArray","curValuesArray","newValuesArray","rehash","compact","valuesArray","putRehash","probesLeft","findKey","findValue","addKey","tentativeMaxProbeDistance","probeDistance","putIndex","removeKeyAt","removeHashAt","removedHash","hole","patchAttemptsLeft","putEntry","keysArray","presenceArray","hashArray","maxProbeDistance","LinkedHashMap_init_$Init$","LinkedHashSet_init_$Init$","seed1","seed2","jClass","givenSimpleName","isInstanceFunction","classifier","isMarkedNullable","jClasses","kClass","sequence","StringBuilder_init_$Init$","content","uppercase","code","radix","match","input","nextPattern","$match","$range","$nextPattern","$input","ignoreCase","n1","thisChar","otherChar","thisOffset","otherOffset","bytes","throwOnMalformed","byteIndex","stringBuilder","byte","high","low","string","byte1","byte2","byte3","byte4","indent","qualifier","shortInfo","hasSeen","stackStart","dropCommonFrames","commonFrames","lastBreak","preLastBreak","messageLines","suppressed","suppressedIndent","sourceUnit","targetUnit","sourceCompareTarget","separator","postfix","limit","truncated","transform","single","to","minimumValue","maximumValue","KotlinNothingValueException_init_$Init$","interfaces","maxSize","masks","currentSize","imask","iid","iidImask","numberIndex","intArray","numberWithSettledBit","activeBit","initValue","$array","ia","descriptor","obj1","obj2","typeOf","shiftNumber","MASK","bigNumber","signum","chunk","hashCodeMap","symbol","cachedHashCode","constructorFunction","proto","this_","errorInfo","srcLen","dstLen","defaultValue","thisNeg","otherNeg","a48","a32","a16","a00","b48","b32","b16","c48","c32","c16","c00","b00","numBits","radixLong","rem","digitsPerTime","radixToPower","remDiv","digits","twoPwr32","defaultConstructor","associatedObjectKey","associatedObjects","suspendArity","kind","ctor","metadataConstructor","iface","possibleActiveBit","arity","jsClass","objType","klassMetadata","parentProto","propName","base64","fromBase64","resultLength","shift","sixBit","needle","middle","toBase64","releaseIntercepted","intercepted","resultContinuation","completion","$receiver","$completion$1","Exception_init_$Init$","IllegalArgumentException_init_$Init$","IndexOutOfBoundsException_init_$Init$","IllegalStateException_init_$Init$","UnsupportedOperationException_init_$Init$","RuntimeException_init_$Init$","NoSuchElementException_init_$Init$","Error_init_$Init$","ConcurrentModificationException_init_$Init$","NullPointerException_init_$Init$","NoWhenBranchMatchedException_init_$Init$","ClassCastException_init_$Init$","implFindEntry","ArrayDeque_init_$Init$","copyElements","newCapacity","newElements","positiveMod","incremented","decremented","isVarargs","iteratorFactory","exceptionalState","$block","transformer","calcNext","sendWhen","predicate","ensureItemIterator","nextItemIterator","getInitialValue","getNextValue","acc","removed","interceptor","baseKey","safeCast","step","addend","thisUpper","otherUpper","$indent","firstChar","limitForMaxRadix","limitBeforeMul","delimiters","chars","charAtIndex","delimiter","currentOffset","nextIndex","isLimited","$delimitersList","$ignoreCase","currentIndex","strings","indices","getNextMatch","rawValue","","isInNanos","isInMillis","normalValue","unitDiscriminator","addValuesMixedRanges","thisMillis","otherNanos","otherMillis","resultMillis","otherNanoRemainder","compareBits","","hasDays","hasHours","hasMinutes","hasSeconds","components","whole","fractional","fractionalSize","isoZeroes","fracString","nonZeroDigits","normalMillis","maxNsInUnit","valueInNs","normalNanos","isoChar","isTimeComponent","shortName","initializer","third","storage","base","quotient","ac","bc","uradix","beforeAdding","dividend","CancellationException_init_$Init$","CharacterCodingException_init_$Init$","AssertionError_init_$Init$","NumberFormatException_init_$Init$","ArithmeticException_init_$Init$","UninitializedPropertyAccessException_init_$Init$","modified","$elements","predicateResultToRemove","iter","insertionRangeCheck","increaseLength","putAllEntries","updated","removeKey","classifierName","nullable","$arity","toInsert","newLength","stringCsq","$startIndex","lastStart","advanceToNextCharacter","code1","code2","approx","res","approxDouble","approx2","log2","approxRes","approxRem","bitCount","currentResult","currentException","outcome","oldCapacity","otherIterator","ourValue","internalLastIndex","internalIndex","decrementedInternalIndex","decrementedHead","tail","copyCollectionElements","oldElement","reference","dest","collectionSize","nextNotReady","newLeft","containsAll","bits","rnd","rangeStart","rangeEnd","strictIso","infinityString","hasSign","prevUnit","component","dotIndex","afterFirst","allowSpaces","unitName","cont","annotationClass","size_local","reverseIndex","getter","setter","paramCount","superType","isPositive","Sequence$iterator$ref$lambda","Iterable$iterator$ref$lambda","throwOnInvalidSequence","charIndex","codePoint","lastTwoBits","threshold","oldChar","newChar","$delimiters","missingDelimiterValue","newIndent","minCommonIndent","marginPrefix","firstNonWhitespaceIndex","startFound","handler","trace","event1","event2","event3","event4","expect","update","onCancelling","invokeImmediately","parentContext","initParentJob","active","uCont","handle","delegate","","isReusable","callSegmentOnCancellation","segment","installParentHandle","invokeOnCancellationImpl","multipleHandlersError","dispatchResume","tryResume","undispatched","dispatcher","eventLoop","resumedState","proposedUpdate","resumeMode","onCancellation","idempotent","resumeImpl","resumeImpl$default","alreadyResumedError","detachChildIfNonResuable","cancelHandler","idempotentResume","cancelCause","handled","continuation","originalException","thrownException","unconfined","isActive","","","allocateList","finalizeFinishingState","wasCancelling","proposedException","exceptions","finalCause","getFinalRootCause","addSuppressedExceptions","rootCause","seenExceptions","unwrappedCause","unwrapped","finalException","finalState","completeStateFinalization","notifyCancelling","cancelParent","isCancellation","startInternal","addLastAtomic","promoteEmptyToNodeList","promoteSingleToNodeList","createCauseException","getOrPromoteCancellingList","tryMakeCancelling","cancelling","tryMakeCompleting","tryMakeCompletingSlowPath","finishing","notifyRootCause","firstChild","tryFinalizeSimpleState","tryWaitForChild","stateString","isCompleting","job","childJob","handlesException","parentJob","setElementLazy","prev","channel","pointers","onClosedHasNext","hasNextOnNoWaiterSuspend","cancellable","updCellResult","onClosedHasNextNoWaiterSuspend","","","updateCellSend","waiter","closed","updateCellSendSlow","bufferOrRendezvousSend","curSenders","updateCellReceive","senders","updateCellReceiveSlow","helpExpandBuffer","trySelectResult","expandBuffer","updateCellExpandBuffer","updateCellExpandBufferSlow","incCompletedExpandBufferAttempts","nAttempts","incCompletedExpandBufferAttempts$default","","completeCloseOrCancel","completeClose","sendersCur","lastSegment","closeLinkedList","lastBufferedCellGlobalIndex","markAllEmptyCellsAsClosed","globalIndex","cancelSuspendedReceiveRequests","sendersCounter","suspendedReceivers","completeCancel","removeUnprocessedElements","onUndeliveredElement","undeliveredElementException","suspendedSenders","sender","isClosed","sendersAndCloseStatusCur","isClosedForReceive","isCellNonEmpty","findSegmentSend","startFrom","updateSendersCounterIfLower","curCounter","findSegmentReceive","updateReceiversCounterIfLower","findSegmentBufferEnd","currentBufferEndCounter","moveSegmentBufferEndToSpecifiedOrLast","select","$element","$select","firstSegment","counter","pauseEB","closeStatus","createSegment$ref$lambda","holder","trySendImpl","isSendOp","trySendDropLatest","trySendDropOldest","onBufferOverflow","","","","","tryEmitLocked","tryEmitNoCollectorsLocked","","dropOldestLocked","newHead","correctCollectorIndexesOnDropOldest","enqueueLocked","curSize","curBuffer","growBuffer","newBuffer","updateBufferLocked","newReplayIndex","newMinCollectorIndex","newBufferEndIndex","newQueueEndIndex","cleanupTailLocked","tryTakeValue","slot","resumes","oldIndex","getPeekedValueLockedAt","resume","tryPeekLocked","awaitValue","findSlotsToResumeLocked","resumesIn","resumeCount","flow","replay","bufferCapacity","currentContext","collectElement","collectJob","emissionParentJob","","","","createNewSegment","newTail","$context","propertyName","minValue","fatalCompletion","findClause","clauseObject","trySelectInternalResult","token","combined","collector","collectContext","timeMillis","trySuspend","takenState","cancelLater","dispatched","cancellationCause","caller","upd","makeCancelHandler","tryResumeImpl","actualCompletion","task","queue","eh","continueCompleting","lastChild","waitChild","$this$sequence","makeNode","joinInternal","joinSuspend","cancelMakeCompleting","makeCancelling","causeExceptionCache","causeException","awaitSuspend","main","immediate","yieldContext","isSender","shouldSendSuspend","curSendersAndCloseStatus","globalCellIndex","ebCompleted","ebCompletedAndBit","pauseExpandBuffers","cancel","markCancellationStarted","closedByThisOperation","markCancelled","markClosed","invokeCloseHandler","closeHandler","minElem","cellState","cellStateString","cancelEmitter","emitter","emitted","emitSuspend","newBufferSize0","maxResumeCount","curEmitterIndex","newBufferSize1","subscriptionCount","curSlots","slots","fatalException","finallyException","internalResult","trySelectInternal","curState","clause","timeout","$continuation","await$lambda","addedContext","oldContext","coroutine","extraBufferCapacity","bufferCapacity0","deserializer","previousValue","$this$buildSerialDescriptor","baseClass","klassName","subClassName","missingFields","serialName","typeArguments","failOnMissingTypeArgSerializer","serializers","elementClassifierIfArray","keySerializer","valueSerializer","aSerializer","bSerializer","cSerializer","elementSerializer","rootClass","isNullable","$typeArguments","clazz","types","cachedSerializer","contextualSerializer","shouldBeNullable","$types","typeParameters","sdBuilder","builderAction","","elementsCount","elementDesc","keyDesc","valueDesc","elementDescriptor","keyDescriptor","valueDescriptor","primitive","eSerializer","kSerializer","vSerializer","primitiveSerializer","readIfAbsent","prepareHighMarksArray","slotsCount","elementsInLastSlot","highMarks","generatedSerializer","$primitiveSerializer","serializer","$serialName","objectInstance","","typeParams","elementDescriptors","accumulator","namesHash","kindHash","bufferWithData","tagBlock","$keySerializer","$valueSerializer","$this$buildClassSerialDescriptor","class2ContextualFactory","polyBase2Serializers","polyBase2DefaultSerializerProvider","polyBase2NamedSerializers","polyBase2DefaultDeserializerProvider","provider","concreteClass","assocObject","$factory","SerializationException_init_$Init$","another","elementName","annotations","isOptional","composite","decodeSequentially","compositeDecoder","eClass","checkIndex","vIndex","readSize","requiredCapacity","markHigh","offsetInSlot","nextUnmarkedHighIndex","slotOffset","slotMarks","indexInSlot","buildIndices","annotation","nestedName","parentName","childName","inlineDescriptor","currentTag","$deserializer","$previousValue","decodeStructure","typeArgumentsSerializers","serializedClassName","registered","kclass","serial","actualClass","actualSerializer","defaultSerializerProvider","defaultDeserializerProvider","forClass","allowOverwrite","concreteSerializer","answer","baseClassSerializers","previousSerializer","previousByName","simpleName","seen","goldenMask","missingFieldsBits","configuration","serializersModule","encodeDefaults","ignoreUnknownKeys","isLenient","allowStructuredMapKeys","prettyPrint","explicitNulls","prettyPrintIndent","coerceInputValues","useArrayPolymorphism","classDiscriminator","allowSpecialFloatingPointValues","useAlternativeNames","namingStrategy","decodeEnumsCaseInsensitive","allowTrailingComma","body","isString","coerceToInlineType","deferred","","$deferred","JsonElementMarker$readIfAbsent$ref","JsonElementMarker$readIfAbsent$ref$lambda","entity","json","$descriptor","useLowercaseEnums","strategyForClasses","nameToPut","$this_buildDeserializationNamesMap","resize","readArray","lastToken","readValue","readDeepRecursive","lexer","discriminator","jsonTree","discriminatorToSkip","coerceInputValue","handleUnknown","unknownKey","decodeStringKey","discriminatorHolder","lastPos","c4","unparsedPrimitive","absenceIsNull","polyDiscriminator","polyDescriptor","desc","keyKind","appendEscape","lastPosition","appendEsc","startPosition","currentPosition","currentChar","decodedString","takePeeked","appendHex","startPos","fromHexChar","character","consumeBooleanLiteral","literalSuffix","expected","actual","initC2ESC","esc","initC2TC","cl","initEscape","initCharToToken","typeParamsSerializers","sd","readObject","hint","checkLeadingComma","newMode","skipLeftoverElements","isMapKey","decodeListIndex","hasComma","decodeObjectIndex","isUnknown","decodeMapIndex","decodingKey","currentObject","currentElement","strategy","baseName","deserializationNamesMap","fallbackName","cpos","snapshot","expectedToken","wasConsumed","doConsume","usedAppend","wasUnquotedString","eof","allowLenientStrings","tokenStack","processed","lastIndexOf","hintMessage","hasQuotation","exponentAccumulator","isExponentPositive","hasExponent","hasChars","doubleAccumulator","consumeBoolean","tc","closingQuote","keyToMatch","positionSnapshot","client","userConfig","manageEngine","$this$intercept","engineFactory","$engine","$previousConfigBlock","$configure","$plugin","pluginData","requestData","responseData","response","responseBody","$this$writer","callContext","$client","$response","","executeWithinCallContext","checkExtensions","requestedExtension","$requestData","$this$async","unsafeRequestHeaders","callJob","cleanupHandler","createCallContext$lambda","$cleanupHandler","engineName","requestHeaders","$requestHeaders","$content","$this$buildHeaders","observableContentPhase","BodyProgress$handle$slambda","observableByteChannel","cachedResponseText","addDefaultResponseValidation$lambda$slambda","$this$HttpResponseValidator","$contentType","$body","$this_intercept","defaultTransformers$slambda","$responseJobHolder","container","validateResponse","processException","responseValidators","callExceptionHandlers","expectSuccess","$builder","plugin","wrapContent","requestContentType","contentType","charset","charsets","charsetQuality","sendCharset","responseCharsetFallback","withQuality","withoutQuality","quality","truncatedQuality","allowHttpsDowngrade","$scope","checkHttpMethod","requestJob","clientEngineJob","$requestJob","$handler","nextSender","maxSendCount","requestTimeoutMillis","connectTimeoutMillis","socketTimeoutMillis","checkTimeoutValue","$request","$executionContext","$killer","hasNotNullTimeouts","timeoutMillis","originCall","method","executionContext","statusCode","requestTime","developmentMode","fallbackCharset","expectedType","checkCapabilities","HttpStatement$execute$slambda","contentLength","$contentLength","$listener","createWebSocket","urlString_capturingHack","protocolHeaderNames","protocols","ws_capturingHack","headers_capturingHack","executeWebSocketRequest","$headers_capturingHack","eventListener","$this_buildHeaders","awaitConnection$lambda","$eventListener","clientConfig","$jsHeaders","$clientConfig","$bodyBytes","$this$buildObject","stream","$stream","readChunk$lambda","promise","$controller","commonFetch$lambda","$responseData","$this_writer","coroutineContext","websocket","installedFeatures","configure","previousConfigBlock","exceptionResponseText","BeforeReceive","actualCharset","sendResult","requestBuilder","killer","savedCall","rawResponse","status","session","bodyBytes","frameData","definition","spaceToPlus","encodeURLParameter$lambda","$spaceToPlus","encodeFull","$encodeFull","plusIsSpace","encodeSlash","symbolSize","release","prefixEnd","digit1","digit2","encodeURLPath$lambda","contentSubtype","existingContent","slashesCount","slashIndex","out","escapeValue","parametersOnly","items","valueEnd","paramEnd","$parameters","headerName","headerValue","header","major","minor","decode","nameIndex","equalIndex","spaceNameIndex","spaceEndIndex","spaceEqualIndex","spaceValueIndex","spaceIndex","applyOrigin","tmpLocation","protocol","host","port","user","password","pathSegments","fragment","trailingQuery","encodedPath","encodedUser","encodedQueryParameters","schemeLength","incorrectSchemePosition","scheme","slashCount","nextSlash","passwordIndex","pathEnd","rawPath","basePath","rawChunks","relativePath","fragmentStart","colonIndex","defaultPort","encodedPassword","specifiedPort","pathStartIndex","pathEndIndex","queryStart","queryEnd","pathStart","usernameStart","usernameEnd","passwordStart","passwordEnd","encodedParametersBuilder","slash","subtype","hasParameter","parameter","flushImpl","flushWrittenBytes","ensureNotFailed","closeable","$count","autoFlush","$attachJob","$channel","$dispatcher","charactersCopied","after","before","decodedText","bytesWritten","memory","readRemaining","writeRemaining","availableSpace","writeSize","newWritePosition","overrunSize","allocator","typedArray","view","remaining","","readASCII","atLeastMinCharactersRequire","minShouldBeLess","copied","utf8","codepoint","readUtf8","lastByteCount","prematureEndOfStreamChars","fixGapAfterReadFallback","overrun","fixGapAfterReadFallbackUnreserved","chunk1","chunk2","new","doFill","appendView","prepareReadLoop","minSize","desiredExtraBytes","minSizeIsTooBig","afterRead","dstOffset","appendNewChunk","appendChainImpl","chainedSizeDelta","_tail","tailPosition","writePacketMerging","foreignStolen","lastSize","nextSize","maxCopySize","appendSize","prependSize","writePacketSlowPrepend","readPosition","newReadPosition","_head","pre","bytesCount","inputLength","subView","inputRemaining","chunkSize","characters","parentPool","cp","dstLimit","lastCharIndex","resultLimit","resultPosition","index1","resultPosition1","stage1Limit","freeSpace","highValue","lowValue","_charset","i8","writeIndex","encoder","dstRemaining","numChars","dropLastChar","endIndexExclusive","array1","charactersDecoded","bytesConsumed","nativeDecoder","maxCharacters","sizeInBytes","encoding","fatal","requestedEncoding","readRemainingSuspend","","builderSize","builderHead","addBytesRead","atLeast","closeElement","addBytesWritten","ensureNotClosed","rewindRemaining","startGap","endGap","newLimit","writePosition","chain","discardAsMuchAsPossible","skipped","currentCount","currentSkipped","ensureNext","flushChain","oldTail","writeByteFallback","appendCharFallback","packet","chunkBuffer","headRemaining","positionBefore","positionAfter","appendNext","sleepCondition","bufferOffset","attachJob","convertTo","ensureListForKey","caseInsensitiveName","listForKey","newMap","interceptors","subject","phase","relation","","","createContext","debugMode","sharedInterceptorsList","cacheInterceptors","interceptorsQuantity","phases","phaseIndex","phaseContent","findPhase","phasesList","findPhaseIndex","hasPhase","notSharedInterceptorsList","setInterceptorsListFromPhase","relativeTo","loop","direct","resumeRootWith","blocks","reifiedType","kotlinType","concurrent","hasNodeApi","stringValues","proceedLoop","copyInterceptors","lastRelatedPhaseIndex","resetInterceptorsList","tryAddToPhaseFastPath","currentInterceptors","addContinuation","discardLastRootContinuation","kType","firstIndex","maxElem","controlFrame","opcode","fin","rsv1","rsv2","rsv3","frameType","disposableHandle","Close_init_$Init$","fileUrl","fileName","darkFileUrl","times","initialDelay","maxDelay","segments","","","isAllowed","allow","unexpectedCharacterException","uri","unexpected","getNextCharacter","hexCharToValue","internalReason","","","encoded","decoded","$decoded","$encoded","segmentBuilder","","findPortSeparator","userInfoSeparator","portSeparator","encodedHost","portString","","encodedAuthority","","makeSchemeSpecificPart","_authorityPart","_pathPart","_queryPart","_fragmentPart","","ssp","","","","","","","uriString","ssi","fsi","qsi","expanded","opaquePart","encodedParameter","oldQuery","hasSchemeOrAuthority","oldLength","nextToEncode","nextAllowed","toEncode","bytesLength","convertPlus","throwOnFailure","hexValue","nextC","newDigit","part","oldPart","oldPath","secondary","namespace","","","endOfElement","writeIndent","newDepth","indentSeq","writeIndent$default","addToPending","requireCurrent","isAppend","xmlDeclMode","stringSerializer","prefixMap","filler","namespaces","","removeFirstToCurrent","ns","locationInfo","eventType","localName","namespaceUri","namespaceContext","standalone","parentNamespaceContext","namespaceDecls","namespacePrefix","writer","localname","reader","missingNamespaces","namespaceAt","prefixAt","localNameAt","finishPartialStartTag","close","endOfTag","down","highSurogate","lowSurogate","writeEscapedText","triggerStartDocument","repeats","pending","ev","ensureNamespaceIfRepairing","rawWriteAttribute","$this_appendXmlCodepoint","isRepairNamespaces","xmlVersion","versionString","namespaceIndicesAt","startIdx","endIdx","arrayUseAtDepth","prefixArrayPos","pairPos","nsArrayPos","getPrefix","getNamespace","indentSequence","nodeList","seenPrefixes","namespaceURI","localPart","doc","frag","wrapperElement","$wrapperElement","startLocation","initialDepth","wrappedString","IOException_init_$Init$","lazyMessage","prefixes","extendNamespace","nscount","wrapperNamespaceContext","getDelegate","actualInput","rootElementName","SimpleNamespaceContext_init_$Init$","XmlException_init_$Init$","","nodeType","attr","nsUri","$text","ce","$target","$data","processInstr","textElems","qualifiedName","publicId","systemId","attrNs","attrPrefix","textEvent","originalNSContext","$namespaceURI","events","decl","verString","effectiveEncoding","appliedPrefix","setElementStack","esp","hlp","actualPrefix","lastWasHyphen","existingNamespaceForPrefix","enlargeNamespaceBuffer","nextPair","setPrefix","setNamespace","prefixStr","namespaceUriStr","commentPos","orig","namespaceForPrefix","useNameInfo","useOutputKind","overriddenSerializer","tagName","pedantic","autoPolymorphic","encodeDefault","unknownChildHandler","typeDiscriminatorName","throwOnRepeatedElement","verifyElementOrder","parentNamespace","nextNulledItemsIdx","childDesc","defaultOrList","$inputType","","","xmlDescriptor","polyInfo","attrIndex","stringValue","polyMap","nameMap","childDescriptor","$xmlDescriptor","inputKind","candidates","repairNamespaces","indentString","policy","nilAttribute","xmlName","annotatedName","isDefaultNamespace","Builder_init_$Init$","isStrictAttributeNames","isStrictBoolean","nameToIdx","$parentDescriptor","eq","isStrictNames","","$serializersModule","serializerParent","tagParent","$policy","$serializerParent","","xmlPolyChildren","polyAttrName","qName","polyChild","childInfo","childSerializerParent","canBeAttribute","overrideOutputKind","serialDescriptor","useName","isDocumentRoot","outputKind","elementUseNameInfo","","$tagParent","childrenNameAnnotation","preserveSpace","","","keyNameInfo","parentInfo","keyTagParent","valueNameInfo","valueTagParent","","$canBeAttribute","childUseNameInfo","useParentInfo","effectiveUseNameInfo","getElementDescriptors","initialChildReorderInfo","descriptors","createElementDescriptor","","originalOrderNodes","allNodes","members","finalToDeclMap","declToOrderMap","nextElemIdx","attrOrMembers","general","minIdx","nextIdx","successor","requestedOutputKind","valueChildIndex","valueChild","invalidIdx","xmlCData","polyChildSpecification","pkgPos","typeNameBase","currentPkg","parentTag","eqPos","prefPos","typename","realSerialName","elementTypeDescriptor","elementUseOutputKind","elementIdx","childCount","beforeAny","hasWildCard","afterAny","nodes","beforesToCheck","aftersToCheck","unseenSuccessors","$beforeAny","$afterAny","$parentNamespace","readCompactFragmentContent","deserialize","nextValue","deserializeInput","contentSerializer","nameSpace","rootName","xmlDecoderBase","rootNameInfo","realName","rootDescriptor","defaultOverEmpty","defaultString","descOutputKind","deser","serialValueDecoder","tagId","attrName","childXmlDescriptor","effectiveDeserializer","inputType","isNameOfAttr","normalizedName","containingNamespaceUri","emptyNsPrefix","valChildDesc","singleParsed","orderedBefore","orderedAfter","seenSiblingIndex","alreadySeenTrailingIndex","valueKind","lastAttrIndex","peek","fixedIndex","rawIndex","polyMode","sdec","typeQName","childSerialName","childQnames","isMixed","typeTag","parentType","useAnnotations","isValue","parentChildDesc","elementKind","typeDescriptor","serialKind","typeNameInfo","parentSerialKind","parentDescriptor","childIndex","orderConstraints","orderNodes","xmlBefore","xmlAfter","befores","afters","isListEluded","childAnnotation","mapParent","keyUseName","pseudoKeyParent","keyEffectiveOutputKind","prefixedName","cIndex","elementSerialDescriptor","effectiveSerializerParent","effectiveTagParent","overridenSerializer","fallback","typeName","xmlCodecBase","defaultDecoder","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","defineProperty","enumerable","globalThis","Function","Symbol","toStringTag","scriptUrl","importScripts","currentScript","scripts","getElementsByTagName","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file