taro-bluetooth-print 2.3.1 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/README.md +6 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/types/config/PrinterConfigManager.d.ts +206 -0
- package/dist/types/config/index.d.ts +8 -0
- package/dist/types/device/MultiPrinterManager.d.ts +164 -0
- package/dist/types/device/index.d.ts +2 -0
- package/dist/types/index.d.ts +5 -1
- package/dist/types/services/BatchPrintManager.d.ts +205 -0
- package/dist/types/services/PrintHistory.d.ts +142 -0
- package/dist/types/services/PrintJobManager.d.ts +28 -4
- package/dist/types/services/PrinterStatus.d.ts +97 -0
- package/dist/types/services/index.d.ts +3 -0
- package/package.json +2 -2
- package/src/adapters/AlipayAdapter.ts +1 -0
- package/src/adapters/BaiduAdapter.ts +1 -0
- package/src/adapters/ByteDanceAdapter.ts +1 -0
- package/src/adapters/TaroAdapter.ts +1 -0
- package/src/adapters/WebBluetoothAdapter.ts +1 -1
- package/src/config/PrinterConfigManager.ts +523 -0
- package/src/config/index.ts +15 -0
- package/src/device/MultiPrinterManager.ts +470 -0
- package/src/device/index.ts +8 -0
- package/src/encoding/gbk-lite.ts +81 -76
- package/src/encoding/gbk-table.ts +14 -14
- package/src/index.ts +12 -1
- package/src/services/BatchPrintManager.ts +494 -0
- package/src/services/ConnectionManager.ts +4 -1
- package/src/services/PrintHistory.ts +338 -0
- package/src/services/PrintJobManager.ts +69 -9
- package/src/services/PrinterStatus.ts +261 -0
- package/src/services/index.ts +25 -0
- package/src/template/TemplateEngine.ts +4 -1
package/dist/index.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@tarojs/taro")):"function"==typeof define&&define.amd?define(["exports","@tarojs/taro"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TaroBluePrint={},e.Taro)}(this,function(e,t){"use strict";var i=Object.defineProperty,s=Object.defineProperties,r=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,h=Math.pow,c=(e,t,s)=>t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s,l=(e,t)=>{for(var i in t||(t={}))o.call(t,i)&&c(e,i,t[i]);if(n)for(var i of n(t))a.call(t,i)&&c(e,i,t[i]);return e},d=(e,t)=>s(e,r(t)),u=(e,t,i)=>new Promise((s,r)=>{var n=e=>{try{a(i.next(e))}catch(t){r(t)}},o=e=>{try{a(i.throw(e))}catch(t){r(t)}},a=e=>e.done?s(e.value):Promise.resolve(e.value).then(n,o);a((i=i.apply(e,t)).next())}),g=(e=>(e.DISCONNECTED="disconnected",e.CONNECTING="connecting",e.CONNECTED="connected",e.DISCONNECTING="disconnecting",e.PRINTING="printing",e.PAUSED="paused",e))(g||{}),f=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e[e.NONE=4]="NONE",e))(f||{});const p=class e{static configure(e){this.config=l(l({},this.config),e)}static setLevel(e){this.config.level=e}static getLevel(){return this.config.level}static formatPrefix(e,t){return`${t?`${this.config.prefix}:${t}`:this.config.prefix} [${{0:"DEBUG",1:"INFO",2:"WARN",3:"ERROR",4:"NONE"}[e]}]`}static formatMessage(e,t,i){return`${this.formatPrefix(e,i)} ${t}`}static log(e,t,i,s){if(this.config.level>e)return;this.formatPrefix(e,s);const r=this.formatMessage(e,t,s),n={level:e,message:t,args:i,timestamp:new Date,scope:s,formatted:r};this.config.handler&&this.config.handler(n)}static debug(e,...t){this.log(0,e,t)}static info(e,...t){this.log(1,e,t)}static warn(e,...t){this.log(2,e,t)}static error(e,...t){this.log(3,e,t)}static scope(t){return{debug:(i,...s)=>{e.log(0,i,s,t)},info:(i,...s)=>{e.log(1,i,s,t)},warn:(i,...s)=>{e.log(2,i,s,t)},error:(i,...s)=>{e.log(3,i,s,t)}}}};p.config={level:2,prefix:"[TaroBTPrint]"};let m=p;class v{constructor(){this.listeners=new Map,this.debugMode=!1,this.logger=m.scope("EventEmitter")}on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this.debugMode&&this.logger.debug(`EventEmitter: Added listener for "${e+""}"`,{listenerCount:this.listenerCount(e)}),()=>this.off(e,t)}once(e,t){const i=s=>{t(s),this.off(e,i)};return this.on(e,i)}prepend(e,t){this.listeners.has(e)||this.listeners.set(e,new Set);const i=this.listeners.get(e),s=new Set;return s.add(t),i.forEach(e=>s.add(e)),this.listeners.set(e,s),this.debugMode&&this.logger.debug(`EventEmitter: Prepend listener for "${e+""}"`,{listenerCount:this.listenerCount(e)}),()=>this.off(e,t)}prependOnce(e,t){const i=s=>{t(s),this.off(e,i)};return this.prepend(e,i)}off(e,t){const i=this.listeners.get(e);i&&(i.delete(t),this.debugMode&&this.logger.debug(`EventEmitter: Removed listener for "${e+""}"`,{listenerCount:i.size}),0===i.size&&(this.listeners.delete(e),this.debugMode&&this.logger.debug(`EventEmitter: Removed event "${e+""}" (no more listeners)`)))}emit(e,...t){const i=t[0];this.debugMode&&this.logger.debug(`EventEmitter: Emitting "${e+""}"`,{data:i,listenerCount:this.listenerCount(e)});const s=this.listeners.get(e);if(!s||0===s.size)return;const r=new Set(s),n=Array.from(r);for(let a=0;a<n.length;a++){const t=n[a];if("function"==typeof t)try{null==i?t():t(i)}catch(o){this.logger.error(`Error in event handler for "${e+""}":`,o)}}}emitAsync(e,...t){return u(this,null,function*(){const i=t[0];this.debugMode&&this.logger.debug(`EventEmitter: Emitting async "${e+""}"`,{data:i,listenerCount:this.listenerCount(e)});const s=this.listeners.get(e);if(!s||0===s.size)return;const r=new Set(s),n=[];r.forEach(t=>{n.push((()=>u(this,null,function*(){try{let e;e=null==i?t():t(i),e instanceof Promise&&(yield e)}catch(s){this.logger.error(`Error in event handler for "${e+""}":`,s)}}))())}),yield Promise.all(n),this.debugMode&&this.logger.debug(`EventEmitter: Finished emitting async "${e+""}"`)})}removeAllListeners(e){if(e){const t=this.listenerCount(e);this.listeners.delete(e),this.debugMode&&this.logger.debug(`EventEmitter: Removed all ${t} listeners for "${e+""}"`)}else{const e=this.listeners.size;this.listeners.clear(),this.debugMode&&this.logger.debug(`EventEmitter: Removed all ${e} events and their listeners`)}}listenerCount(e){var t,i;return null!=(i=null==(t=this.listeners.get(e))?void 0:t.size)?i:0}getListeners(e){const t=this.listeners.get(e);return t?Array.from(t):[]}eventNames(){return Array.from(this.listeners.keys())}hasListeners(e){return this.listenerCount(e)>0}setDebugMode(e){this.debugMode=e,this.logger.debug("EventEmitter: Debug mode "+(e?"enabled":"disabled"))}isDebugMode(){return this.debugMode}getTotalEvents(){return this.listeners.size}getTotalListeners(){let e=0;for(const t of this.listeners.values())e+=t.size;return e}reset(){this.removeAllListeners(),this.debugMode=!1}}var b=(e=>(e.CONNECTION_FAILED="CONNECTION_FAILED",e.CONNECTION_TIMEOUT="CONNECTION_TIMEOUT",e.DEVICE_NOT_FOUND="DEVICE_NOT_FOUND",e.DEVICE_DISCONNECTED="DEVICE_DISCONNECTED",e.SERVICE_NOT_FOUND="SERVICE_NOT_FOUND",e.CHARACTERISTIC_NOT_FOUND="CHARACTERISTIC_NOT_FOUND",e.SERVICE_DISCOVERY_FAILED="SERVICE_DISCOVERY_FAILED",e.WRITE_FAILED="WRITE_FAILED",e.WRITE_TIMEOUT="WRITE_TIMEOUT",e.PRINT_JOB_IN_PROGRESS="PRINT_JOB_IN_PROGRESS",e.PRINT_JOB_CANCELLED="PRINT_JOB_CANCELLED",e.PRINT_JOB_FAILED="PRINT_JOB_FAILED",e.INVALID_CONFIGURATION="INVALID_CONFIGURATION",e.ENCODING_NOT_SUPPORTED="ENCODING_NOT_SUPPORTED",e.INVALID_IMAGE_DATA="INVALID_IMAGE_DATA",e.INVALID_QR_DATA="INVALID_QR_DATA",e.PLATFORM_NOT_SUPPORTED="PLATFORM_NOT_SUPPORTED",e))(b||{});class E extends Error{constructor(e,t,i){super(t),this.code=e,this.originalError=i,this.name="BluetoothPrintError",Error.captureStackTrace&&Error.captureStackTrace(this,E)}toString(){let e=`${this.name} [${this.code}]: ${this.message}`;return this.originalError&&(e+="\nCaused by: "+this.originalError.message,this.originalError.stack&&(e+="\n"+this.originalError.stack)),this.stack&&(e+="\n"+this.stack),e}toJSON(){return{name:this.name,code:this.code,message:this.message,stack:this.stack,originalError:this.originalError?{name:this.originalError.name,message:this.originalError.message,stack:this.originalError.stack}:void 0}}}class y{constructor(){this.serviceCache=new Map,this.logger=m.scope("BaseAdapter")}onStateChange(e){this.stateCallback=e}updateState(e){this.stateCallback&&this.stateCallback(e)}validateDeviceId(e){if(!e||"string"!=typeof e)throw new E(b.DEVICE_NOT_FOUND,"Invalid device ID provided")}validateBuffer(e){if(!(e&&e instanceof ArrayBuffer))throw new E(b.PRINT_JOB_FAILED,"Invalid buffer data provided")}validateOptions(e){var t,i,s;return{chunkSize:Math.max(1,Math.min(256,null!=(t=null==e?void 0:e.chunkSize)?t:20)),delay:Math.max(10,Math.min(100,null!=(i=null==e?void 0:e.delay)?i:20)),retries:Math.max(1,Math.min(10,null!=(s=null==e?void 0:e.retries)?s:3))}}getServiceInfo(e){const t=this.serviceCache.get(e);if(!t)throw new E(b.SERVICE_NOT_FOUND,"Device not connected or services not discovered. Call connect() first.");return t}isDeviceConnected(e){return this.serviceCache.has(e)}cleanupDevice(e){this.serviceCache.delete(e)}}class C extends y{connect(e){return u(this,null,function*(){if(this.validateDeviceId(e),this.isDeviceConnected(e))return this.logger.warn("Device already connected:",e),void this.updateState(g.CONNECTED);this.updateState(g.CONNECTING),this.logger.debug("Connecting to device:",e);try{let t;const i=this.getApi().createBLEConnection({deviceId:e}),s=new Promise((e,i)=>{t=setTimeout(()=>{i(Error("Connection timeout after 10 seconds"))},1e4)});yield Promise.race([i,s]),t&&clearTimeout(t),this.logger.info("BLE connection established"),yield this.discoverServices(e),this.updateState(g.CONNECTED),this.logger.info("Device connected successfully"),this.getApi().onBLEConnectionStateChange(t=>{t.deviceId!==e||t.connected||(this.logger.warn("Device disconnected unexpectedly"),this.updateState(g.DISCONNECTED),this.cleanupDevice(e))})}catch(t){this.updateState(g.DISCONNECTED),this.logger.error("Connection failed:",t);const i=t.message||"";if(i.includes("timeout"))throw new E(b.CONNECTION_TIMEOUT,`Connection to device ${e} timed out`,t);if(i.includes("not found"))throw new E(b.DEVICE_NOT_FOUND,`Device ${e} not found`,t);throw new E(b.CONNECTION_FAILED,"Failed to connect to device "+e,t)}})}disconnect(e){return u(this,null,function*(){this.validateDeviceId(e),this.updateState(g.DISCONNECTING),this.logger.debug("Disconnecting from device:",e);try{yield this.getApi().closeBLEConnection({deviceId:e}),this.cleanupDevice(e),this.updateState(g.DISCONNECTED),this.logger.info("Device disconnected successfully")}catch(t){this.logger.warn("Disconnect error (ignored):",t),this.cleanupDevice(e),this.updateState(g.DISCONNECTED)}})}write(e,t,i){return u(this,null,function*(){this.validateDeviceId(e),this.validateBuffer(t);const s=this.getServiceInfo(e),r=this.validateOptions(i);yield this.checkConnectionState(e);let{chunkSize:n}=r;const{delay:o,retries:a}=r,h=new Uint8Array(t);let c=Math.ceil(h.length/n);if(this.logger.debug(`Writing ${h.length} bytes in ${c} chunks`),0===h.length)return void this.logger.warn("No data to write");let l=0,d=0,u=o;for(let t=0;t<h.length;t+=n){t>0&&Math.floor(t/n)%5==0&&(yield this.checkConnectionState(e));const i=h.slice(t,t+n),o=Math.floor(t/n)+1;let f=0,p=!1;for(;a>=f;)try{const t=Math.max(1e3,Math.min(1e4,1e3+5*i.length)),r=this.getApi().writeBLECharacteristicValue({deviceId:e,serviceId:s.serviceId,characteristicId:s.characteristicId,value:i.buffer}),n=new Promise((e,i)=>{setTimeout(()=>{i(Error(`Write timeout after ${t} milliseconds`))},t)});yield Promise.race([r,n]),this.logger.debug(`Chunk ${o}/${c} written successfully`),p=!0;break}catch(g){if(f++,f>a)throw this.logger.error(`Chunk ${o} failed after ${a} retries`),new E(b.WRITE_FAILED,`Failed to write chunk ${o}/${c}`,g);this.logger.warn(`Chunk ${o} write failed, retry ${f}/${a}`);const e=u*Math.pow(2,f-1);yield new Promise(t=>setTimeout(t,Math.min(e,200)))}p?(l++,d=0,l%3==0&&256>n&&(n=Math.min(256,n+5),u=Math.max(u/1.2,r.delay),c=Math.ceil((h.length-t-n)/n)+o,this.logger.debug(`Increased chunk size to ${n}, delay to ${u}`))):(d++,l=Math.max(0,l-1),d>=2&&n>10&&(n=Math.max(10,n-5),u=Math.min(1.5*u,200),c=Math.ceil((h.length-t-n)/n)+o,this.logger.debug(`Decreased chunk size to ${n}, delay to ${u}`),d=0)),t+n<h.length&&(yield new Promise(e=>setTimeout(e,u)))}this.logger.info(`Successfully wrote ${h.length} bytes`)})}checkConnectionState(e){return u(this,null,function*(){try{if(!(yield this.getApi().getBLEConnectionState({deviceId:e})).connected)throw this.cleanupDevice(e),new E(b.DEVICE_DISCONNECTED,"Device disconnected")}catch(t){if(t instanceof E)throw t;throw this.cleanupDevice(e),new E(b.DEVICE_DISCONNECTED,"Device disconnected",t)}})}discoverServices(e){return u(this,null,function*(){this.logger.debug("Discovering services for device:",e);try{const t=yield this.getApi().getBLEDeviceServices({deviceId:e});for(const i of t.services){const t=(yield this.getApi().getBLEDeviceCharacteristics({deviceId:e,serviceId:i.uuid})).characteristics.find(e=>e.properties.write||e.properties.writeWithoutResponse);if(t)return this.serviceCache.set(e,{serviceId:i.uuid,characteristicId:t.uuid}),void this.logger.info("Found writeable characteristic:",{service:i.uuid,characteristic:t.uuid})}throw new E(b.CHARACTERISTIC_NOT_FOUND,"No writeable characteristic found. Make sure the device is a supported printer.")}catch(t){if(t instanceof E)throw t;throw new E(b.SERVICE_DISCOVERY_FAILED,"Failed to discover device services",t)}})}}class I extends C{getApi(){return Taro}}class D extends C{getApi(){return my}}class w extends C{getApi(){return swan}}class A extends C{getApi(){return tt}}const S=["000018f0-0000-1000-8000-00805f9b34fb","49535343-fe7d-4ae5-8fa9-9fafd205e455","e7810a71-73ae-499d-8c15-faa9aef0c3f2"];class $ extends y{constructor(){super(...arguments),this.devices=new Map}static isSupported(){return"undefined"!=typeof navigator&&void 0!==navigator.bluetooth&&"function"==typeof navigator.bluetooth.requestDevice}requestDevice(e){return u(this,null,function*(){if(!$.isSupported())throw new E(b.PLATFORM_NOT_SUPPORTED,"Web Bluetooth API is not supported in this browser");this.logger.debug("Requesting Bluetooth device");try{const t=this.buildRequestOptions(e),i=yield navigator.bluetooth.requestDevice(t);return this.logger.info("Device selected:",i.name||i.id),i}catch(t){const e=t.message||"";if(e.includes("cancelled")||e.includes("canceled"))throw new E(b.CONNECTION_FAILED,"User cancelled device selection");if(e.includes("permission")||e.includes("denied"))throw new E(b.CONNECTION_FAILED,"Bluetooth permission denied");throw new E(b.CONNECTION_FAILED,"Failed to request Bluetooth device",t)}})}connect(e){return u(this,null,function*(){var t;if(this.validateDeviceId(e),this.devices.has(e))return this.logger.warn("Device already connected:",e),void this.updateState(g.CONNECTED);this.updateState(g.CONNECTING),this.logger.debug("Connecting to device:",e);try{const i=yield this.getOrRequestDevice(e);if(!i.gatt)throw new E(b.CONNECTION_FAILED,"Device does not support GATT");const s=yield this.connectWithTimeout(i.gatt,1e4);this.logger.info("GATT server connected");const r=yield this.discoverWriteableCharacteristic(s);this.devices.set(e,{device:i,server:s,characteristic:r}),this.serviceCache.set(e,{serviceId:(null==(t=r.service)?void 0:t.uuid)||"",characteristicId:r.uuid}),i.addEventListener("gattserverdisconnected",()=>{this.handleDisconnection(e)}),this.updateState(g.CONNECTED),this.logger.info("Device connected successfully")}catch(i){if(this.updateState(g.DISCONNECTED),this.logger.error("Connection failed:",i),i instanceof E)throw i;if((i.message||"").includes("timeout"))throw new E(b.CONNECTION_TIMEOUT,`Connection to device ${e} timed out`,i);throw new E(b.CONNECTION_FAILED,"Failed to connect to device "+e,i)}})}disconnect(e){var t;this.validateDeviceId(e),this.updateState(g.DISCONNECTING),this.logger.debug("Disconnecting from device:",e);try{const i=this.devices.get(e);(null==(t=null==i?void 0:i.server)?void 0:t.connected)&&i.server.disconnect()}catch(i){this.logger.warn("Disconnect error (ignored):",i)}finally{this.cleanupDeviceInfo(e),this.updateState(g.DISCONNECTED),this.logger.info("Device disconnected successfully")}return Promise.resolve()}write(e,t,i){return u(this,null,function*(){this.validateDeviceId(e),this.validateBuffer(t);const s=this.devices.get(e);if(!s)throw new E(b.DEVICE_DISCONNECTED,"Device not connected. Call connect() first.");if(!s.server.connected)throw this.cleanupDeviceInfo(e),new E(b.DEVICE_DISCONNECTED,"Device disconnected");const r=this.validateOptions(i),{chunkSize:n,delay:o,retries:a}=r,h=new Uint8Array(t),c=Math.ceil(h.length/n);if(this.logger.debug(`Writing ${h.length} bytes in ${c} chunks`),0!==h.length){for(let t=0;t<h.length;t+=n){const i=h.slice(t,t+n),r=Math.floor(t/n)+1;let d=0;for(;a>=d;)try{if(!s.server.connected)throw this.cleanupDeviceInfo(e),new E(b.DEVICE_DISCONNECTED,"Device disconnected");yield s.characteristic.writeValueWithoutResponse(i.buffer),this.logger.debug(`Chunk ${r}/${c} written successfully`);break}catch(l){if(d++,d>a)throw this.logger.error(`Chunk ${r} failed after ${a} retries`),new E(b.WRITE_FAILED,`Failed to write chunk ${r}/${c}`,l);this.logger.warn(`Chunk ${r} write failed, retry ${d}/${a}`),yield new Promise(e=>setTimeout(e,o*d))}t+n<h.length&&(yield new Promise(e=>setTimeout(e,o)))}this.logger.info(`Successfully wrote ${h.length} bytes`)}else this.logger.warn("No data to write")})}buildRequestOptions(e){var t;if(null==e?void 0:e.acceptAllDevices)return{acceptAllDevices:!0,optionalServices:e.optionalServices||S};const i=[];return(null==(t=null==e?void 0:e.serviceUUIDs)?void 0:t.length)&&i.push({services:e.serviceUUIDs}),(null==e?void 0:e.namePrefix)&&i.push({namePrefix:e.namePrefix}),0===i.length?{acceptAllDevices:!0,optionalServices:S}:{filters:i,optionalServices:(null==e?void 0:e.optionalServices)||S}}getOrRequestDevice(e){return u(this,null,function*(){const t=this.devices.get(e);return(null==t?void 0:t.device)?t.device:this.requestDevice()})}connectWithTimeout(e,t){return u(this,null,function*(){return new Promise((i,s)=>{const r=setTimeout(()=>{s(Error("Connection timeout"))},t);e.connect().then(e=>{clearTimeout(r),i(e)}).catch(e=>{clearTimeout(r),s(e)})})})}discoverWriteableCharacteristic(e){return u(this,null,function*(){this.logger.debug("Discovering services");try{const i=yield e.getPrimaryServices();for(const e of i)try{const t=yield e.getCharacteristics();for(const i of t)if(i.properties.write||i.properties.writeWithoutResponse)return this.logger.info("Found writeable characteristic:",{service:e.uuid,characteristic:i.uuid}),i}catch(t){this.logger.debug(`Failed to get characteristics for service ${e.uuid}:`,t)}throw new E(b.CHARACTERISTIC_NOT_FOUND,"No writeable characteristic found. Make sure the device is a supported printer.")}catch(t){if(t instanceof E)throw t;throw new E(b.SERVICE_DISCOVERY_FAILED,"Failed to discover device services",t)}})}handleDisconnection(e){this.logger.warn("Device disconnected unexpectedly:",e),this.cleanupDeviceInfo(e),this.updateState(g.DISCONNECTED)}cleanupDeviceInfo(e){this.devices.delete(e),this.cleanupDevice(e)}}var T=(e=>(e.WECHAT="wechat",e.ALIPAY="alipay",e.BAIDU="baidu",e.BYTEDANCE="bytedance",e.WEB="web",e.UNKNOWN="unknown",e))(T||{});function N(e){return"object"==typeof e&&null!==e&&"request"in e}function O(){return"undefined"!=typeof wx&&N(wx)?"wechat":"undefined"!=typeof my&&N(my)?"alipay":"undefined"!=typeof swan&&N(swan)?"baidu":"undefined"!=typeof tt&&N(tt)?"bytedance":"undefined"!=typeof window&&"object"==typeof(e=window)&&null!==e&&"navigator"in e?"web":"unknown";var e}class P{static create(){const e=O();switch(e){case T.WECHAT:return new I;case T.ALIPAY:return new D;case T.BAIDU:return new w;case T.BYTEDANCE:return new A;case T.WEB:if($.isSupported())return new $;throw new E(b.PLATFORM_NOT_SUPPORTED,"Web Bluetooth API is not supported in this browser. Please use a supported browser (Chrome, Edge, Opera).");default:throw new E(b.PLATFORM_NOT_SUPPORTED,`Platform ${e} is not supported. Please use a supported mini-program platform.`)}}static createForPlatform(e){switch(e){case T.WECHAT:return new I;case T.ALIPAY:return new D;case T.BAIDU:return new w;case T.BYTEDANCE:return new A;case T.WEB:if($.isSupported())return new $;throw new E(b.PLATFORM_NOT_SUPPORTED,"Web Bluetooth API is not supported in this browser.");default:throw new E(b.PLATFORM_NOT_SUPPORTED,`Platform ${e} is not supported.`)}}}const x={heartbeatEnabled:!0,heartbeatInterval:5e3,autoReconnect:!0,maxReconnectAttempts:3,reconnectInterval:2e3,connectionTimeout:1e4};class R extends v{constructor(e,t){var i,s;super(),this.deviceId=null,this.state=g.DISCONNECTED,this.connLogger=m.scope("ConnectionManager"),this.heartbeatTimer=null,this.reconnectAttempts=0,this.isReconnecting=!1,this.reconnectTimer=null,this.adapter=e||P.create(),this.config=l(l({},x),t),null==(s=(i=this.adapter).onStateChange)||s.call(i,e=>{this.handleStateChange(e)})}handleStateChange(e){const t=this.state;this.state=e,this.connLogger.debug("State changed:",{from:t,to:e}),this.emit("state-change",e),t===g.CONNECTED&&e===g.DISCONNECTED&&this.deviceId&&!this.isReconnecting&&(this.connLogger.warn("Unexpected disconnection detected"),this.emit("disconnected",this.deviceId),this.stopHeartbeat(),this.config.autoReconnect&&this.startReconnect())}connect(e,t){return u(this,null,function*(){this.connLogger.info("Connecting to device:",e);const{retries:i=0,timeout:s=this.config.connectionTimeout}=t||{};let r=0;for(this.reconnectAttempts=0,this.isReconnecting=!1,this.clearReconnectTimer();i>=r;)try{this.deviceId=e,this.state=g.CONNECTING,this.emit("state-change",g.CONNECTING);const t=this.adapter.connect(e),i=new Promise((t,i)=>{setTimeout(()=>{i(new E(b.CONNECTION_TIMEOUT,`Connection to device ${e} timed out after ${s}ms`))},s)});return yield Promise.race([t,i]),this.state=g.CONNECTED,this.emit("state-change",g.CONNECTED),this.emit("connected",e),this.connLogger.info("Connected successfully"),void(this.config.heartbeatEnabled&&this.startHeartbeat())}catch(n){if(r++,r>i){this.deviceId=null,this.state=g.DISCONNECTED,this.emit("state-change",g.DISCONNECTED);const e=n instanceof E?n:new E(b.CONNECTION_FAILED,`Connection failed after ${r} attempts`,n);throw this.connLogger.error("Connection failed:",e),this.emit("error",e),e}this.connLogger.warn(`Connection attempt ${r}/${i} failed, retrying...`,n),yield new Promise(e=>setTimeout(e,1e3))}})}disconnect(){return u(this,null,function*(){if(this.stopHeartbeat(),this.clearReconnectTimer(),this.isReconnecting=!1,!this.deviceId)return void this.connLogger.warn("Disconnect called but no device connected");const e=this.deviceId;this.connLogger.info("Disconnecting from device:",e);try{yield this.adapter.disconnect(e),this.deviceId=null,this.state=g.DISCONNECTED,this.emit("state-change",g.DISCONNECTED),this.emit("disconnected",e),this.connLogger.info("Disconnected successfully")}catch(t){const e=new E(b.DEVICE_DISCONNECTED,"Disconnect failed",t);throw this.connLogger.error("Disconnect failed:",e),this.emit("error",e),e}})}startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval(()=>{this.checkHeartbeat()},this.config.heartbeatInterval),this.connLogger.debug("Heartbeat started with interval:",this.config.heartbeatInterval)}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null,this.connLogger.debug("Heartbeat stopped"))}checkHeartbeat(){if(this.deviceId&&this.state===g.CONNECTED)try{this.isConnected()?this.connLogger.debug("Heartbeat OK"):this.handleHeartbeatLost()}catch(e){this.connLogger.warn("Heartbeat check failed:",e),this.handleHeartbeatLost()}}handleHeartbeatLost(){this.deviceId&&(this.connLogger.warn("Heartbeat lost for device:",this.deviceId),this.emit("heartbeat-lost",this.deviceId),this.stopHeartbeat(),this.state=g.DISCONNECTED,this.emit("state-change",g.DISCONNECTED),this.emit("disconnected",this.deviceId),this.config.autoReconnect&&!this.isReconnecting&&this.startReconnect())}startReconnect(){this.deviceId&&!this.isReconnecting&&(this.isReconnecting=!0,this.reconnectAttempts=0,this.attemptReconnect())}attemptReconnect(){if(!this.deviceId)return void(this.isReconnecting=!1);this.reconnectAttempts++;const e=this.deviceId;if(this.reconnectAttempts>this.config.maxReconnectAttempts)return this.connLogger.error("Max reconnect attempts reached"),this.isReconnecting=!1,this.emit("reconnect-failed",{deviceId:e,error:new E(b.CONNECTION_FAILED,`Reconnection failed after ${this.config.maxReconnectAttempts} attempts`)}),void(this.deviceId=null);this.connLogger.info(`Reconnect attempt ${this.reconnectAttempts}/${this.config.maxReconnectAttempts}`),this.emit("reconnecting",{deviceId:e,attempt:this.reconnectAttempts,maxAttempts:this.config.maxReconnectAttempts}),this.state=g.CONNECTING,this.emit("state-change",g.CONNECTING),this.adapter.connect(e).then(()=>{this.connLogger.info("Reconnected successfully"),this.isReconnecting=!1,this.reconnectAttempts=0,this.state=g.CONNECTED,this.emit("state-change",g.CONNECTED),this.emit("reconnected",e),this.config.heartbeatEnabled&&this.startHeartbeat()}).catch(e=>{this.connLogger.warn(`Reconnect attempt ${this.reconnectAttempts} failed:`,e),this.reconnectTimer=setTimeout(()=>{this.attemptReconnect()},this.config.reconnectInterval)})}clearReconnectTimer(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)}isConnected(){return this.state===g.CONNECTED}getDeviceId(){return this.deviceId}getState(){return this.state}getAdapter(){return this.adapter}getConfig(){return l({},this.config)}getReconnectStatus(){return{isReconnecting:this.isReconnecting,attempts:this.reconnectAttempts,maxAttempts:this.config.maxReconnectAttempts}}reconnect(){if(!this.deviceId)throw new E(b.DEVICE_NOT_FOUND,"No device to reconnect to");this.isReconnecting?this.connLogger.warn("Reconnect already in progress"):this.startReconnect()}stopReconnect(){this.clearReconnectTimer(),this.isReconnecting=!1,this.reconnectAttempts=0,this.connLogger.info("Reconnect stopped")}destroy(){this.stopHeartbeat(),this.clearReconnectTimer(),this.removeAllListeners(),this.deviceId=null,this.state=g.DISCONNECTED}}const M=class e{constructor(e){this.jobBuffer=null,this.jobOffset=0,this._isPaused=!1,this._isInProgress=!1,this.adapterOptions={},this.logger=m.scope("PrintJobManager"),this.jobId=null,this.connectionManager=e,"function"==typeof e.getAdapter?this.adapter=e.getAdapter():this.adapter={connect:()=>Promise.resolve(),disconnect:()=>Promise.resolve(),write:()=>Promise.resolve()}}setProgressCallback(e){this.onProgress=e}setJobStateCallback(e){this.onJobStateChange=e}start(e,t){return u(this,null,function*(){if(this._isInProgress)throw new E(b.PRINT_JOB_IN_PROGRESS,"A print job is already in progress. Wait for completion or cancel it.");this.jobId=(null==t?void 0:t.jobId)||this.generateJobId(),this.jobBuffer=e,this.jobOffset=0,this._isPaused=!1,this._isInProgress=!0,this.logger.info(`Starting print job ${this.jobId}: ${e.length} bytes`),this.emitJobState("in-progress");try{yield this.processJob(),this._isPaused?(this.logger.info(`Print job ${this.jobId} paused`),this.saveJobState()):(this.logger.info(`Print job ${this.jobId} completed successfully`),this._isInProgress=!1,this.clearJobState(),this.emitJobState("completed"))}catch(i){throw this.logger.error(`Print job ${this.jobId} failed:`,i),this._isInProgress=!1,this._isPaused?this.saveJobState():this.clearJobState(),i instanceof E?i:new E(b.PRINT_JOB_FAILED,"Print job failed",i)}})}resume(e){return u(this,null,function*(){if(!this._isInProgress||!this._isPaused){if(!e)return void this.logger.warn("Resume called but no paused print job");this.loadJobState(e)}this._isPaused=!1,this.logger.info("Resuming print job "+this.jobId),this.emitJobState("in-progress");try{yield this.processJob(),this._isPaused||(this.logger.info(`Print job ${this.jobId} completed successfully`),this._isInProgress=!1,this.clearJobState(),this.emitJobState("completed"))}catch(t){throw this.logger.error(`Print job ${this.jobId} failed after resume:`,t),this._isInProgress=!1,this.clearJobState(),this.emitJobState("cancelled"),t instanceof E?t:new E(b.PRINT_JOB_FAILED,"Print job failed",t)}})}cancel(){this._isInProgress?(this.logger.info("Cancelling print job "+this.jobId),this._isPaused=!1,this._isInProgress=!1,this.clearJobState(),this.emitJobState("cancelled"),this.logger.info(`Print job ${this.jobId} cancelled`)):this.logger.warn("Cancel called but no print job in progress")}generateJobId(){return`job-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}saveJobState(){if(this.jobBuffer&&this.jobId)try{const t={jobId:this.jobId,jobBuffer:Array.from(this.jobBuffer),jobOffset:this.jobOffset,adapterOptions:this.adapterOptions,timestamp:Date.now()};e.jobStateStore.set(this.jobId,t),this.logger.debug(`Saved job state for ${this.jobId}: offset=${this.jobOffset}/${this.jobBuffer.length}`)}catch(t){this.logger.error(`Failed to save job state for ${this.jobId}:`,t)}}loadJobState(t){try{this.logger.debug("Loading job state for "+t);const i=e.jobStateStore.get(t);if(!i)throw Error("Job state not found for "+t);this.jobId=i.jobId,this.jobBuffer=new Uint8Array(i.jobBuffer),this.jobOffset=i.jobOffset,this.adapterOptions=i.adapterOptions,this._isPaused=!0,this._isInProgress=!0,this.logger.info(`Loaded job ${this.jobId}: offset=${this.jobOffset}/${this.jobBuffer.length}`)}catch(i){throw this.logger.error(`Failed to load job state for ${t}:`,i),new E(b.PRINT_JOB_FAILED,"Failed to load job "+t,i)}}clearJobState(){this.jobId&&(this.logger.debug("Clearing job state for "+this.jobId),e.jobStateStore.delete(this.jobId)),this.jobBuffer=null,this.jobOffset=0,this.jobId=null,this.adapterOptions={}}emitJobState(e){this.onJobStateChange&&this.onJobStateChange(e)}pause(){this._isInProgress?(this._isPaused=!0,this.logger.info("Print job paused")):this.logger.warn("Pause called but no print job in progress")}remaining(){return this.jobBuffer?this.jobBuffer.length-this.jobOffset:0}isPaused(){return this._isPaused}isInProgress(){return this._isInProgress}setOptions(e){this.adapterOptions=l(l({},this.adapterOptions),e),this.logger.debug("Adapter options updated:",this.adapterOptions)}processJob(){return u(this,null,function*(){if(!this.jobBuffer)return;if(!this.adapter||"function"!=typeof this.adapter.write)throw new E(b.INVALID_CONFIGURATION,"Printer adapter does not support write operation");const{chunkSize:e=512}=this.adapterOptions,t=this.jobBuffer.length,i=this.jobBuffer,s=this.getDeviceId();try{for(;this.jobOffset<i.length;){if(this._isPaused)return void this.logger.debug("Job paused at offset:",this.jobOffset);const r=Math.min(this.jobOffset+e,i.length),n=i.slice(this.jobOffset,r);yield this.adapter.write(s,n.buffer,this.adapterOptions),this.jobOffset=r,this.logger.debug(`Processed ${this.jobOffset}/${t} bytes`),this.onProgress&&this.onProgress(this.jobOffset,t)}}catch(r){throw this.logger.error("Error processing job:",r),r}})}getDeviceId(){const e=this.connectionManager.getDeviceId();if(!e)throw new E(b.DEVICE_DISCONNECTED,"Device ID not available");return e}};M.jobStateStore=new Map;let B=M;const _=[19968,8140,20108,8249,19977,8377,22256,8859,20116,8290,20845,8467,19971,8271,20843,8465,20057,8293,21313,8405,21103,8387,20140,8266,19978,8378,20061,8297,19990,8306,20037,8333,20035,8331,20042,8338,20054,8342,20154,8278,20799,8607,21147,8389,21253,8469,21271,8487,21340,8437,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20877,8569,20004,8256,21069,8549,21129,8381,20011,8257,19981,8369,19980,8368,20820,8552,20836,8568,19976,8376,20301,8421,19985,8373,20063,8302,20195,8303,20309,8425,20320,8436,20375,8475,20445,8513,20446,8514,21040,8508,20687,8611,21306,8402,20307,8427,20241,8377,20107,8249,20225,8361,21888,8944,21912,8956,21247,8481,22825,9509,21490,8530,21543,8619,21548,8624,21589,8665,21595,8671,21628,8684,21632,8688,21647,8703,21672,8728,21710,8746,21733,8769,21736,8772,21769,8781,21809,8789,21834,8814,21916,8958,21930,8970,20045,8340,20043,8339,20053,8341,20064,8304,20102,8258,20114,8262,20117,8265,22806,9508,20845,8467,21253,8469,21280,8490,21453,8517,20184,8296,20237,8373,20426,8506,20596,8556,20351,8459,21069,8549,21407,8491,20813,8553,20167,8261,21475,8523,21147,8389,21512,8676,21246,8480,21313,8405,20320,8436,20013,8259,20057,8293,20985,8565,21253,8469,20171,8265,19968,8140,20309,8425,20102,8258,20845,8467,21040,8508,21069,8549,21129,8381,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,21246,8480,21512,8676,21733,8769,21888,8944,21912,8956,21916,8958,21930,8970,21834,8814,20195,8303,20006,8252,20004,8256,19979,8377,20351,8459,22825,9509,21033,8483,21247,8481,20132,8264,21453,8517,20986,8566,20154,8278,20204,8348,20055,8291,20221,8369,20307,8427,20185,8297,20311,8427,20046,8340,20381,8469,20018,8260,20173,8269,20167,8261,20843,8465,20979,8563,22806,9508,19977,8377,20108,8249,19971,8271,21103,8387,20061,8297,20114,8262,20845,8467,21253,8469,21313,8405,22825,9509,19968,8140,20116,8290,20057,8293,20140,8266,19978,8378,19990,8306,20154,8278,20799,8607,21147,8389,21271,8487,21340,8437,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,20195,8303,20004,8256,21069,8549,21129,8381,20011,8257,19981,8369,19980,8368,20820,8552,20836,8568,19976,8376,20301,8421,19985,8373,20063,8302,20195,8303,20309,8425,20320,8436,20375,8475,20445,8513,20446,8514,21040,8508,20687,8611,21306,8402,20307,8427,20241,8377,20107,8249,20225,8361,21888,8944,21912,8956,21247,8481,22825,9509,21490,8530,21543,8619,21548,8624,21589,8665,21595,8671,21628,8684,21632,8688,21647,8703,21672,8728,21710,8746,21733,8769,21736,8772,21769,8781,21809,8789,21834,8814,21916,8958,21930,8970,20045,8340,20043,8339,20053,8341,20064,8304,20102,8258,20114,8262,20117,8265,22806,9508,20845,8467,21253,8469,21280,8490,21453,8517,20184,8296,20237,8373,20426,8506,20596,8556,20351,8459,21069,8549,21407,8491,20813,8553,20167,8261,21475,8523,21147,8389,21512,8676,21246,8480,21313,8405,20320,8436,20013,8259,20057,8293,20985,8565,21253,8469,20171,8265,19968,8140,20309,8425,20102,8258,20845,8467,21040,8508,21069,8549,21129,8381,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,21246,8480,21512,8676,21733,8769,21888,8944,21912,8956,21916,8958,21930,8970,21834,8814,20195,8303,20006,8252,20004,8256,19979,8377,20351,8459,22825,9509,21033,8483,21247,8481,20132,8264,21453,8517,20986,8566,20154,8278,20204,8348,20055,8291,20221,8369,20307,8427,20185,8297,20311,8427,20046,8340,20381,8469,20018,8260,20173,8269,20167,8261,20843,8465,20979,8563,22806,9508,19977,8377,20108,8249,19971,8271,21103,8387,20061,8297,20114,8262,20845,8467,21253,8469,21313,8405,22825,9509,19968,8140,20116,8290,20057,8293,20140,8266,19978,8378,19990,8306,20154,8278,20799,8607,21147,8389,21271,8487,21340,8437,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,20195,8303,20004,8256,21069,8549,21129,8381,20011,8257,19981,8369,19980,8368,20820,8552,20836,8568,19976,8376,20301,8421,19985,8373,20063,8302,20195,8303,20309,8425,20320,8436,20375,8475,20445,8513,20446,8514,21040,8508,20687,8611,21306,8402,20307,8427,20241,8377,20107,8249,20225,8361,21888,8944,21912,8956,21247,8481,22825,9509,21490,8530,21543,8619,21548,8624,21589,8665,21595,8671,21628,8684,21632,8688,21647,8703,21672,8728,21710,8746,21733,8769,21736,8772,21769,8781,21809,8789,21834,8814,21916,8958,21930,8970,20045,8340,20043,8339,20053,8341,20064,8304,20102,8258,20114,8262,20117,8265,22806,9508,20845,8467,21253,8469,21280,8490,21453,8517,20184,8296,20237,8373,20426,8506,20596,8556,20351,8459,21069,8549,21407,8491,20813,8553,20167,8261,21475,8523,21147,8389,21512,8676,21246,8480,21313,8405,20320,8436,20013,8259,20057,8293,20985,8565,21253,8469,20171,8265,19968,8140,20309,8425,20102,8258,20845,8467,21040,8508,21069,8549,21129,8381,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,21246,8480,21512,8676,21733,8769,21888,8944,21912,8956,21916,8958,21930,8970,21834,8814,20195,8303,20006,8252,20004,8256,19979,8377,20351,8459,22825,9509,21033,8483,21247,8481,20132,8264,21453,8517,20986,8566,20154,8278,20204,8348,20055,8291,20221,8369,20307,8427,20185,8297,20311,8427,20046,8340,20381,8469,20018,8260,20173,8269,20167,8261,20843,8465,20979,8563,22806,9508,19977,8377,20108,8249,19971,8271,21103,8387,20061,8297,20114,8262,20845,8467,21253,8469,21313,8405,22825,9509,19968,8140,20116,8290,20057,8293,20140,8266,19978,8378,19990,8306,20154,8278,20799,8607,21147,8389,21271,8487,21340,8437,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,20195,8303,20004,8256,21069,8549,21129,8381,20011,8257,19981,8369,19980,8368,20820,8552,20836,8568,19976,8376,20301,8421,19985,8373,20063,8302,20195,8303,20309,8425,20320,8436,20375,8475,20445,8513,20446,8514,21040,8508,20687,8611,21306,8402,20307,8427,20241,8377,20107,8249,20225,8361,21888,8944,21912,8956,21247,8481,22825,9509,21490,8530,21543,8619,21548,8624,21589,8665,21595,8671,21628,8684,21632,8688,21647,8703,21672,8728,21710,8746,21733,8769,21736,8772,21769,8781,21809,8789,21834,8814,21916,8958,21930,8970,20045,8340,20043,8339,20053,8341,20064,8304,20102,8258,20114,8262,20117,8265,22806,9508,20845,8467,21253,8469,21280,8490,21453,8517,20184,8296,20237,8373,20426,8506,20596,8556,20351,8459,21069,8549,21407,8491,20813,8553,20167,8261,21475,8523,21147,8389,21512,8676,21246,8480,21313,8405,20320,8436,20013,8259,20057,8293,20985,8565,21253,8469,20171,8265];let F=null,L=null;function U(){if(!F){const e=require("./gbk-data");F=e.GBK_DATA,L=e.BIG5_DATA}return{GBK_DATA:F,BIG5_DATA:L}}const k=new Map,j=new Map;function J(e){if(e>=32&&126>=e)return[0,e];const t=function(e){let t=0,i=_.length-2;for(;i>=t;){const s=t+i>>1,r=_[s];if(r===e){const e=_[s+1];return null!=e?e:null}e>r?t=s+2:i=s-2}return null}(e);if(null!==t)return[t>>8&255,255&t];if(function(e){return e>=19968&&40869>=e}(e)){const{GBK_DATA:t}=U();for(let i=0;i<t.length;i+=2)if(t[i]===e){const e=t[i+1];if(void 0!==e)return[e>>8&255,255&e]}}return null}function G(e){const t=j.get(e);if(void 0!==t)return[t>>8&255,255&t];const{BIG5_DATA:i}=U();for(let s=0;s<i.length;s+=2)if(i[s]===e){const e=i[s+1];if(void 0!==e)return[e>>8&255,255&e]}return null}function H(e){return e>=0&&127>=e}function V(e){return e>=19968&&40959>=e||e>=13312&&19903>=e||e>=131072&&173791>=e||e>=173824&&177983>=e||e>=177984&&178207>=e||e>=63744&&64255>=e||e>=194560&&195103>=e}function W(e){return e>=12288&&12351>=e||e>=65280&&65519>=e}const z={defaultEncoding:"GBK",fallbackChar:"?",showWarnings:!0},Q=class e{constructor(e){this.logger=m.scope("EncodingService"),this.config=l(l({},z),e)}configure(e){this.config=l(l({},this.config),e)}getConfig(){return l({},this.config)}encode(t,i){if(!t||"string"!=typeof t)return new Uint8Array(0);switch(this.normalizeEncoding(i||this.config.defaultEncoding)){case"UTF8":case"UTF-8":return e.utf8Encoder.encode(t);case"GBK":case"GB2312":return this.encodeGbk(t);case"BIG5":return this.encodeBig5(t);default:return this.config.showWarnings&&this.logger.warn(`Unknown encoding "${i}", falling back to UTF-8`),e.utf8Encoder.encode(t)}}encodeWithInfo(t,i){if(!t||"string"!=typeof t)return{bytes:new Uint8Array(0),unsupportedCount:0,unsupportedChars:[]};const s=this.normalizeEncoding(i||this.config.defaultEncoding);if("UTF8"===s||"UTF-8"===s)return{bytes:e.utf8Encoder.encode(t),unsupportedCount:0,unsupportedChars:[]};const r=[],n=[],o=this.config.fallbackChar.charCodeAt(0);for(let e=0;e<t.length;e++){const i=t.charAt(e),a=t.charCodeAt(e);if(a>=55296&&56319>=a&&e+1<t.length){const i=t.charCodeAt(e+1);if(i>=56320&&57343>=i){n.push(t.substring(e,e+2)),r.push(o),e++;continue}}if(H(a)){r.push(a);continue}let h=null;h="BIG5"===s?G(a):J(a),h?r.push(h[0],h[1]):(void 0!==i&&n.push(i),r.push(o),this.config.showWarnings&&1===n.length&&void 0!==i&&this.logger.warn(`Character "${i}" (U+${a.toString(16).toUpperCase()}) not supported in ${s}`))}return{bytes:new Uint8Array(r),unsupportedCount:n.length,unsupportedChars:[...new Set(n)]}}isSupported(e){if(!e||"string"!=typeof e)return!1;const t=this.normalizeEncoding(e);return["GBK","GB2312","BIG5","UTF8","UTF-8"].includes(t)}detectEncoding(e){if(!e||"string"!=typeof e)return"UTF-8";let t=!1,i=!1,s=!1,r=0,n=0,o=0;for(let c=0;c<e.length;c++){const a=e.charCodeAt(c);(55296>a||a>57343)&&(H(a)?t=!0:(o++,V(a)?(i=!0,k.has(a)&&r++,j.has(a)&&n++):W(a)&&(s=!0,k.has(a)&&r++)))}if(!i&&!s&&t)return"UTF-8";if(0===o)return"UTF-8";const a=r/o,h=n/o;return h>a&&h>.8?"BIG5":a>.8?"GBK":"UTF-8"}getSupportedEncodings(){return["GBK","GB2312","BIG5","UTF-8"]}encodeGbk(e){const t=[],i=this.config.fallbackChar.charCodeAt(0);for(let s=0;s<e.length;s++){const r=e.charCodeAt(s);if(r>=55296&&56319>=r&&s+1<e.length){const r=e.charCodeAt(s+1);if(r>=56320&&57343>=r){t.push(i),s++;continue}}if(H(r)){t.push(r);continue}const n=J(r);n?t.push(n[0],n[1]):t.push(i)}return new Uint8Array(t)}encodeBig5(e){const t=[],i=this.config.fallbackChar.charCodeAt(0);for(let s=0;s<e.length;s++){const r=e.charCodeAt(s);if(r>=55296&&56319>=r&&s+1<e.length){const r=e.charCodeAt(s+1);if(r>=56320&&57343>=r){t.push(i),s++;continue}}if(H(r)){t.push(r);continue}const n=G(r);if(n)t.push(n[0],n[1]);else{const e=J(r);e?t.push(e[0],e[1]):t.push(i)}}return new Uint8Array(t)}normalizeEncoding(e){return e.toUpperCase().replace(/-/g,"").replace("_","")}};Q.utf8Encoder=new TextEncoder;let q=Q;new q;const K=m.scope("Encoding"),Y=class{static configure(e){this.config=l(l({},this.config),e)}static encode(e,t="GBK"){if(!e||"string"!=typeof e)return new Uint8Array(0);const i=t.toUpperCase().replace("-","");return"UTF8"===i||"UTF-8"===i||this.config.showWarnings&&!this.warningShown&&(K.warn(`Encoding ${t} not yet fully implemented, falling back to UTF-8. This may cause display issues with some printers.`),this.warningShown=!0),this.utf8Encoder.encode(e)}static isSupported(e){if(!e||"string"!=typeof e)return!1;const t=e.toUpperCase().replace("-","");return"UTF8"===t||"UTF-8"===t}};Y.utf8Encoder=new TextEncoder,Y.warningShown=!1,Y.config={showWarnings:!0};let X=Y;class Z{static toBitmap(e,t,i,s){if(!(e&&e instanceof Uint8Array&&t>0&&i>0))return new Uint8Array(0);if(e.length!==t*i*4)throw Error(`Invalid image data length: expected ${t*i*4}, got ${e.length}`);const{targetWidth:r,targetHeight:n,useDithering:o=!0,ditheringAlgorithm:a="floyd-steinberg",scalingAlgorithm:h="nearest",contrast:c=1,brightness:l=0,threshold:d=128}=s||{};let u=e,g=t,f=i;if(r||n){const{newData:s,newWidth:o,newHeight:a}=this.scaleImage(e,t,i,r||t,n||i,{algorithm:h});u=s,g=o,f=a}const p=Math.ceil(g/8),m=new Uint8Array(p*f);let v=this.toGrayscale(u,g,f);return v=this.adjustContrastBrightness(v,c,l),o?this.applyDithering(v,g,f,m,p,a,d):this.applyThreshold(v,g,f,m,p,d),m}static toGrayscale(e,t,i){const s=new Float32Array(t*i);for(let r=0;r<e.length;r+=4){const t=r>>2,i=e[r]||0,n=e[r+1]||0,o=e[r+2]||0;s[t]=(299*i+587*n+114*o)/1e3}return s}static adjustContrastBrightness(e,t,i){if(1===t&&0===i)return e;const s=new Float32Array(e);for(let r=0;r<s.length;r++){const e=s[r]||0;s[r]=Math.max(0,Math.min(255,(e-128)*t+128+255*i))}return s}static applyDithering(e,t,i,s,r,n,o){for(let a=0;i>a;a++)for(let h=0;t>h;h++){const c=e[a*t+h]||0,l=o>c?0:255;if(0===l){const e=a*r+Math.floor(h/8),t=7-h%8;s[e]=(s[e]||0)|1<<t}const d=c-l;"floyd-steinberg"===n?this.distributeErrorFloydSteinberg(e,t,i,h,a,d):"atkinson"===n&&this.distributeErrorAtkinson(e,t,i,h,a,d)}}static applyThreshold(e,t,i,s,r,n){for(let o=0;i>o;o++)for(let i=0;t>i;i++)if(n>(e[o*t+i]||0)){const e=o*r+Math.floor(i/8),t=7-i%8;s[e]=(s[e]||0)|1<<t}}static scaleImage(e,t,i,s,r,n){const o=t/i;let a=s,h=r;a/h>o?a=Math.round(h*o):h=Math.round(a/o);const c=new Uint8Array(a*h*4),{algorithm:l="nearest"}=n||{};return"bilinear"===l?this.applyBilinearInterpolation(e,t,i,c,a,h):this.applyNearestNeighbor(e,t,i,c,a,h),{newData:c,newWidth:a,newHeight:h}}static applyNearestNeighbor(e,t,i,s,r,n){const o=t/r,a=i/n;for(let h=0;n>h;h++)for(let i=0;r>i;i++){const n=Math.round(i*o),c=4*(Math.round(h*a)*t+n),l=4*(h*r+i);s[l]=e[c]||0,s[l+1]=e[c+1]||0,s[l+2]=e[c+2]||0,s[l+3]=e[c+3]||255}}static applyBilinearInterpolation(e,t,i,s,r,n){const o=t/r,a=i/n;for(let h=0;n>h;h++)for(let n=0;r>n;n++){const c=n*o,l=h*a,d=Math.floor(c),u=Math.floor(l),g=c-d,f=l-u,p=Math.min(d,t-1),m=Math.min(u,i-1),v=Math.min(p+1,t-1),b=Math.min(m+1,i-1),E=4*(m*t+p),y=4*(m*t+v),C=4*(b*t+p),I=4*(b*t+v),D=(1-g)*(1-f),w=g*(1-f),A=(1-g)*f,S=g*f,$=4*(h*r+n);s[$]=Math.round((e[E]||0)*D+(e[y]||0)*w+(e[C]||0)*A+(e[I]||0)*S),s[$+1]=Math.round((e[E+1]||0)*D+(e[y+1]||0)*w+(e[C+1]||0)*A+(e[I+1]||0)*S),s[$+2]=Math.round((e[E+2]||0)*D+(e[y+2]||0)*w+(e[C+2]||0)*A+(e[I+2]||0)*S),s[$+3]=Math.round((e[E+3]||255)*D+(e[y+3]||255)*w+(e[C+3]||255)*A+(e[I+3]||255)*S)}}static distributeErrorFloydSteinberg(e,t,i,s,r,n){const o=[{dx:1,dy:0,factor:7/16},{dx:-1,dy:1,factor:3/16},{dx:0,dy:1,factor:5/16},{dx:1,dy:1,factor:1/16}];for(const{dx:a,dy:h,factor:c}of o)this.distributeErrorPixel(e,t,i,s+a,r+h,n*c)}static distributeErrorAtkinson(e,t,i,s,r,n){const o=[{dx:1,dy:0,factor:1/8},{dx:2,dy:0,factor:1/8},{dx:-1,dy:1,factor:1/8},{dx:0,dy:1,factor:1/8},{dx:1,dy:1,factor:1/8},{dx:0,dy:2,factor:1/8}];for(const{dx:a,dy:h,factor:c}of o)this.distributeErrorPixel(e,t,i,s+a,r+h,n*c)}static distributeErrorPixel(e,t,i,s,r,n){if(s>=0&&t>s&&r>=0&&i>r){const i=r*t+s,o=e[i]||0;e[i]=Math.max(0,Math.min(255,o+n))}}}class ee{constructor(e){var t,i,s;this.logger=m.scope("EscPos"),this.useEncodingService=null==(t=null==e?void 0:e.useEncodingService)||t,this.encodingService=new q({showWarnings:null==(i=null==e?void 0:e.showEncodingWarnings)||i,fallbackChar:null!=(s=null==e?void 0:e.fallbackChar)?s:"?"})}init(){return[new Uint8Array([27,64])]}text(e,t="GBK"){return e&&"string"==typeof e?this.useEncodingService&&this.encodingService.isSupported(t)?[this.encodingService.encode(e,t)]:[X.encode(e,t)]:[]}feed(e=1){return[new Uint8Array([27,100,Math.max(1,Math.min(255,Math.floor(e)))])]}cut(){return[new Uint8Array([29,86,0])]}image(e,t,i){if(!(e&&e instanceof Uint8Array&&t>0&&i>0))return[];if(e.length!==t*i*4)return this.logger.warn(`Invalid image data length: expected ${t*i*4}, got ${e.length}`),[];const s=Z.toBitmap(e,t,i),r=Math.ceil(t/8);return[new Uint8Array([29,118,48,0,r%256,Math.floor(r/256),i%256,Math.floor(i/256)]),s]}qr(e,t){var i,s,r,n;if(!e||"string"!=typeof e)return[];const o=null!=(i=null==t?void 0:t.model)?i:2,a=Math.max(1,Math.min(16,null!=(s=null==t?void 0:t.size)?s:6)),h=null!=(r=null==t?void 0:t.errorCorrection)?r:"M",c=[];c.push(new Uint8Array([29,40,107,4,0,49,65,1===o?49:50,0])),c.push(new Uint8Array([29,40,107,3,0,49,67,a]));const l=null!=(n={L:48,M:49,Q:50,H:51}[h])?n:49;c.push(new Uint8Array([29,40,107,3,0,49,69,l]));const d=this.useEncodingService&&this.encodingService.isSupported("GBK")?this.encodingService.encode(e,"GBK"):X.encode(e,"GBK"),u=d.length+3,g=u%256,f=Math.floor(u/256);return c.push(new Uint8Array([29,40,107,g,f,49,80,48])),c.push(d),c.push(new Uint8Array([29,40,107,3,0,49,81,48])),c}}var te=(e=>(e.LEFT="left",e.CENTER="center",e.RIGHT="right",e))(te||{});const ie={align:"left",widthScale:1,heightScale:1,bold:!1,underline:!1,inverse:!1},se=27,re=29;class ne{constructor(){this.currentStyle=l({},ie)}setStyle(e){var t,i;const s=[];if(void 0!==e.align&&e.align!==this.currentStyle.align){const t=this.getAlignValue(e.align);s.push(new Uint8Array([se,97,t])),this.currentStyle.align=e.align}const r=this.clampScale(null!=(t=e.widthScale)?t:this.currentStyle.widthScale),n=this.clampScale(null!=(i=e.heightScale)?i:this.currentStyle.heightScale);if(r!==this.currentStyle.widthScale||n!==this.currentStyle.heightScale){const e=r-1<<4|n-1;s.push(new Uint8Array([re,33,e])),this.currentStyle.widthScale=r,this.currentStyle.heightScale=n}return void 0!==e.bold&&e.bold!==this.currentStyle.bold&&(s.push(new Uint8Array([se,69,e.bold?1:0])),this.currentStyle.bold=e.bold),void 0!==e.underline&&e.underline!==this.currentStyle.underline&&(s.push(new Uint8Array([se,45,e.underline?1:0])),this.currentStyle.underline=e.underline),void 0!==e.inverse&&e.inverse!==this.currentStyle.inverse&&(s.push(new Uint8Array([re,66,e.inverse?1:0])),this.currentStyle.inverse=e.inverse),s}resetStyle(){const e=[];return"left"!==this.currentStyle.align&&e.push(new Uint8Array([se,97,0])),1===this.currentStyle.widthScale&&1===this.currentStyle.heightScale||e.push(new Uint8Array([re,33,0])),this.currentStyle.bold&&e.push(new Uint8Array([se,69,0])),this.currentStyle.underline&&e.push(new Uint8Array([se,45,0])),this.currentStyle.inverse&&e.push(new Uint8Array([re,66,0])),this.currentStyle=l({},ie),e}format(e,t){if(!e||"string"!=typeof e)return[];const i=[];return t&&i.push(...this.setStyle(t)),i}align(e){const t=this.getAlignValue(e);return this.currentStyle.align=e,[new Uint8Array([se,97,t])]}setSize(e,t){const i=this.clampScale(e),s=this.clampScale(t),r=i-1<<4|s-1;return this.currentStyle.widthScale=i,this.currentStyle.heightScale=s,[new Uint8Array([re,33,r])]}setBold(e){return this.currentStyle.bold=e,[new Uint8Array([se,69,e?1:0])]}setUnderline(e){return this.currentStyle.underline=e,[new Uint8Array([se,45,e?1:0])]}setInverse(e){return this.currentStyle.inverse=e,[new Uint8Array([re,66,e?1:0])]}getCurrentStyle(){return l({},this.currentStyle)}getAlignValue(e){switch(e){case"left":default:return 0;case"center":return 1;case"right":return 2}}clampScale(e){return Math.max(1,Math.min(8,Math.floor(e)))}}var oe=(e=>(e.CODE128="CODE128",e.CODE39="CODE39",e.EAN13="EAN13",e.EAN8="EAN8",e.UPCA="UPCA",e.ITF="ITF",e.CODABAR="CODABAR",e))(oe||{});const ae={UPCA:65,EAN13:67,EAN8:68,CODE39:69,ITF:70,CODABAR:71,CODE128:73},he={none:0,above:1,below:2,both:3};class ce{generate(e,t){var i,s;if(!this.validate(e,t.format).valid)return[];const r=[],n=this.clampHeight(null!=(i=t.height)?i:80);r.push(new Uint8Array([29,104,n]));const o=this.clampWidth(null!=(s=t.width)?s:3);r.push(new Uint8Array([29,119,o]));const a=this.getTextPosition(t);r.push(new Uint8Array([29,72,a]));const h=ae[t.format],c=this.encodeContent(e,t.format);return r.push(new Uint8Array([29,107,h,c.length,...c])),r}validate(e,t){const i=[];if(!e||"string"!=typeof e)return i.push({field:"content",message:"Barcode content is required",code:"REQUIRED"}),{valid:!1,errors:i};switch(t){case"EAN13":this.validateEAN13(e,i);break;case"EAN8":this.validateEAN8(e,i);break;case"UPCA":this.validateUPCA(e,i);break;case"CODE39":this.validateCode39(e,i);break;case"CODE128":this.validateCode128(e,i);break;case"ITF":this.validateITF(e,i);break;case"CODABAR":this.validateCodabar(e,i);break;default:i.push({field:"format",message:"Unsupported barcode format: "+t,code:"UNSUPPORTED_FORMAT"})}return{valid:0===i.length,errors:i}}getSupportedFormats(){return Object.values(oe)}validateEAN13(e,t){if(/^\d{12,13}$/.test(e)){if(13===e.length){const i=this.calculateEANCheckDigit(e.substring(0,12)),s=e[12];void 0!==s&&parseInt(s)!==i&&t.push({field:"content",message:"Invalid EAN-13 check digit",code:"INVALID_CHECK_DIGIT"})}}else t.push({field:"content",message:"EAN-13 must be 12 or 13 digits",code:"INVALID_LENGTH"})}validateEAN8(e,t){if(/^\d{7,8}$/.test(e)){if(8===e.length){const i=this.calculateEANCheckDigit(e.substring(0,7)),s=e[7];void 0!==s&&parseInt(s)!==i&&t.push({field:"content",message:"Invalid EAN-8 check digit",code:"INVALID_CHECK_DIGIT"})}}else t.push({field:"content",message:"EAN-8 must be 7 or 8 digits",code:"INVALID_LENGTH"})}validateUPCA(e,t){if(/^\d{11,12}$/.test(e)){if(12===e.length){const i=this.calculateUPCACheckDigit(e.substring(0,11)),s=e[11];void 0!==s&&parseInt(s)!==i&&t.push({field:"content",message:"Invalid UPC-A check digit",code:"INVALID_CHECK_DIGIT"})}}else t.push({field:"content",message:"UPC-A must be 11 or 12 digits",code:"INVALID_LENGTH"})}validateCode39(e,t){/^[0-9A-Z\s\-.$\/+%]+$/.test(e.toUpperCase())||t.push({field:"content",message:"Code 39 only supports: 0-9, A-Z, space, - . $ / + %",code:"INVALID_CHARACTERS"}),(0===e.length||e.length>255)&&t.push({field:"content",message:"Code 39 content must be 1-255 characters",code:"INVALID_LENGTH"})}validateCode128(e,t){for(let i=0;i<e.length;i++)if(e.charCodeAt(i)>127){t.push({field:"content",message:"Code 128 only supports ASCII characters (0-127)",code:"INVALID_CHARACTERS"});break}(0===e.length||e.length>255)&&t.push({field:"content",message:"Code 128 content must be 1-255 characters",code:"INVALID_LENGTH"})}validateITF(e,t){/^\d+$/.test(e)||t.push({field:"content",message:"ITF only supports numeric characters",code:"INVALID_CHARACTERS"}),e.length%2!=0&&t.push({field:"content",message:"ITF content must have even number of digits",code:"INVALID_LENGTH"}),(0===e.length||e.length>255)&&t.push({field:"content",message:"ITF content must be 2-254 digits (even)",code:"INVALID_LENGTH"})}validateCodabar(e,t){/^[ABCDabcd][0-9\-$:/.+]+[ABCDabcd]$/.test(e)||t.push({field:"content",message:"CODABAR must start and end with A/B/C/D and contain only 0-9, - $ : / . +",code:"INVALID_FORMAT"}),(3>e.length||e.length>255)&&t.push({field:"content",message:"CODABAR content must be 3-255 characters",code:"INVALID_LENGTH"})}calculateEANCheckDigit(e){let t=0;const i=e.length;for(let s=0;i>s;s++){const i=e[s];void 0!==i&&(t+=parseInt(i)*(s%2==0?1:3))}return(10-t%10)%10}calculateUPCACheckDigit(e){let t=0;for(let i=0;11>i;i++){const s=e[i];void 0!==s&&(t+=parseInt(s)*(i%2==0?3:1))}return(10-t%10)%10}encodeContent(e,t){return"CODE128"===t?[123,/^\d+$/.test(e)&&e.length>=4?67:66,...e.split("").map(e=>e.charCodeAt(0))]:e.split("").map(e=>e.charCodeAt(0))}getTextPosition(e){var t,i,s;if(!1===e.showText)return he.none;const r=null!=(t=e.textPosition)?t:"below";return null!=(s=null!=(i=he[r])?i:he.below)?s:2}clampHeight(e){return Math.max(1,Math.min(255,Math.floor(e)))}clampWidth(e){return Math.max(2,Math.min(6,Math.floor(e)))}}class le{constructor(e){this.buffer=[],this._cachedBuffer=null,this.logger=m.scope("CommandBuilder"),this.driver=e||new ee,this.formatter=new ne,this.barcodeGenerator=new ce,this.buffer.push(...this.driver.init())}invalidateCache(){this._cachedBuffer=null}text(e,t){return this.logger.debug("Adding text:",e.substring(0,50)),this.buffer.push(...this.driver.text(e,t)),this.invalidateCache(),this}feed(e=1){return this.logger.debug("Adding feed:",e),this.buffer.push(...this.driver.feed(e)),this.invalidateCache(),this}cut(){return this.logger.debug("Adding cut command"),this.buffer.push(...this.driver.cut()),this.invalidateCache(),this}image(e,t,i){return this.logger.debug(`Adding image: ${t}x${i}`),this.buffer.push(...this.driver.image(e,t,i)),this.invalidateCache(),this}qr(e,t){return this.logger.debug("Adding QR code:",e.substring(0,50)),this.buffer.push(...this.driver.qr(e,t)),this.invalidateCache(),this}clear(){return this.logger.debug("Clearing buffer"),this.buffer=[],this.buffer.push(...this.driver.init()),this.invalidateCache(),this}align(e){return this.logger.debug("Setting alignment:",e),this.buffer.push(...this.formatter.align(e)),this.invalidateCache(),this}setSize(e,t){return this.logger.debug(`Setting size: ${e}x${t}`),this.buffer.push(...this.formatter.setSize(e,t)),this.invalidateCache(),this}setBold(e){return this.logger.debug("Setting bold:",e),this.buffer.push(...this.formatter.setBold(e)),this.invalidateCache(),this}setUnderline(e){return this.logger.debug("Setting underline:",e),this.buffer.push(...this.formatter.setUnderline(e)),this.invalidateCache(),this}setInverse(e){return this.logger.debug("Setting inverse:",e),this.buffer.push(...this.formatter.setInverse(e)),this.invalidateCache(),this}setStyle(e){return this.logger.debug("Setting style:",e),this.buffer.push(...this.formatter.setStyle(e)),this.invalidateCache(),this}resetStyle(){return this.logger.debug("Resetting style"),this.buffer.push(...this.formatter.resetStyle()),this.invalidateCache(),this}barcode(e,t){this.logger.debug(`Adding barcode: ${e} (${t.format})`);const i=this.barcodeGenerator.generate(e,t);return i.length>0?(this.buffer.push(...i),this.invalidateCache()):this.logger.warn("Failed to generate barcode for content: "+e),this}getBuffer(){if(this._cachedBuffer)return this._cachedBuffer;const e=this.buffer.reduce((e,t)=>e+t.length,0),t=new Uint8Array(e);let i=0;for(const s of this.buffer)t.set(s,i),i+=s.length;return this._cachedBuffer=t,t}getTotalBytes(){return this.buffer.reduce((e,t)=>e+t.length,0)}}class de{constructor(){this.logger=m.scope("DeviceManager"),this.listeners=new Map,this.discoveredDevices=new Map,this.deviceCache=new Map,this.isScanning=!1,this.scanTimeout=null,this.currentScanOptions=null,this.PAIRED_DEVICES_KEY="bluetooth_paired_devices",this.CACHE_EXPIRY=864e5}startScan(e){return u(this,null,function*(){var i,s;if(this.isScanning)return void this.logger.warn("Scan already in progress");this.currentScanOptions=null!=e?e:{};const r=null!=(i=null==e?void 0:e.timeout)?i:15e3;try{yield this.initBluetooth(),this.discoveredDevices.clear(),yield t.startBluetoothDevicesDiscovery({allowDuplicatesKey:null!=(s=null==e?void 0:e.allowDuplicates)&&s,services:null==e?void 0:e.serviceUUIDs}),this.isScanning=!0,this.emit("scan-start",void 0),this.logger.info("Bluetooth scan started"),t.onBluetoothDeviceFound(this.handleDeviceFound.bind(this)),this.scanTimeout=setTimeout(()=>{this.stopScan().catch(e=>{this.logger.error("Error stopping scan on timeout:",e)})},r)}catch(n){this.isScanning=!1;const e=n instanceof Error?n:Error(n+"");throw this.emit("error",e),e}})}stopScan(){return u(this,null,function*(){if(this.isScanning)try{this.scanTimeout&&(clearTimeout(this.scanTimeout),this.scanTimeout=null),yield t.stopBluetoothDevicesDiscovery(),this.isScanning=!1,this.currentScanOptions=null,this.emit("scan-stop",void 0),this.logger.info("Bluetooth scan stopped")}catch(e){throw this.logger.error("Error stopping scan:",e),e}})}getDiscoveredDevices(){return Array.from(this.discoveredDevices.values())}getPairedDevices(){try{const e=t.getStorageSync(this.PAIRED_DEVICES_KEY);return e&&Array.isArray(e)?Promise.resolve(e.map(e=>d(l({},e),{isPaired:!0}))):Promise.resolve([])}catch(e){return this.logger.error("Error getting paired devices:",e),Promise.resolve([])}}connect(e){return u(this,null,function*(){try{this.logger.info("Connecting to device: "+e),yield t.createBLEConnection({deviceId:e});const i=(yield t.getBLEDeviceServices({deviceId:e})).services;if(0===i.length)throw Error("No services found on device");let s,r;for(const o of i){const i=yield t.getBLEDeviceCharacteristics({deviceId:e,serviceId:o.uuid});for(const e of i.characteristics)if(e.properties.write||e.properties.writeNoResponse){s=o.uuid,r=e.uuid;break}if(r)break}if(!s||!r)throw Error("No writable characteristic found");const n=this.discoveredDevices.get(e);n&&(this.deviceCache.set(e,{device:n,serviceId:s,characteristicId:r,cachedAt:Date.now()}),this.savePairedDevice(n)),this.emit("device-connected",e),this.logger.info("Connected to device: "+e)}catch(i){const e=i instanceof Error?i:Error(i+"");throw this.emit("error",e),e}})}disconnect(e){return u(this,null,function*(){try{this.logger.info("Disconnecting from device: "+e),yield t.closeBLEConnection({deviceId:e}),this.emit("device-disconnected",e),this.logger.info("Disconnected from device: "+e)}catch(i){throw this.logger.error("Error disconnecting:",i),i}})}getDeviceInfo(e){const t=this.discoveredDevices.get(e);if(t)return t;const i=this.deviceCache.get(e);return i&&Date.now()-i.cachedAt<this.CACHE_EXPIRY?i.device:null}getCachedServiceInfo(e){const t=this.deviceCache.get(e);return t&&t.serviceId&&t.characteristicId?{serviceId:t.serviceId,characteristicId:t.characteristicId}:null}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){const i=this.listeners.get(e);i&&i.delete(t)}get scanning(){return this.isScanning}emit(e,t){const i=this.listeners.get(e);i&&i.forEach(i=>{try{i(t)}catch(s){this.logger.error(`Error in event handler for "${e}":`,s)}})}initBluetooth(){return u(this,null,function*(){try{yield t.openBluetoothAdapter()}catch(e){if(10001!==e.errCode)throw e}})}handleDeviceFound(e){var t,i;for(const s of e.devices){if(!s.name&&!s.localName)continue;if(null==(t=this.currentScanOptions)?void 0:t.nameFilter){const e=s.name||s.localName||"",t=this.currentScanOptions.nameFilter;if("string"==typeof t){if(!e.toLowerCase().includes(t.toLowerCase()))continue}else if(t instanceof RegExp&&!t.test(e))continue}const e={deviceId:s.deviceId,name:s.name||s.localName||"Unknown",rssi:s.RSSI,advertisData:s.advertisData,serviceUUIDs:s.advertisServiceUUIDs,localName:s.localName},r=this.discoveredDevices.get(s.deviceId);r?(null==(i=this.currentScanOptions)?void 0:i.allowDuplicates)&&(r.rssi=s.RSSI,this.emit("device-found",r)):(this.discoveredDevices.set(s.deviceId,e),this.emit("device-found",e),this.logger.debug(`Device found: ${e.name} (${s.deviceId})`))}}savePairedDevice(e){try{const i=t.getStorageSync(this.PAIRED_DEVICES_KEY),s=i&&Array.isArray(i)?i:[],r=s.findIndex(t=>t.deviceId===e.deviceId),n=d(l({},e),{isPaired:!0,lastConnected:Date.now()});0>r?s.push(n):s[r]=n,t.setStorageSync(this.PAIRED_DEVICES_KEY,s)}catch(i){this.logger.error("Error saving paired device:",i)}}clearCache(){this.deviceCache.clear(),this.discoveredDevices.clear()}}new de;const ue={maxSize:100,defaultRetries:3,retryDelay:1e3,autoProcess:!0,concurrency:1};class ge{constructor(e){this.logger=m.scope("PrintQueue"),this.listeners=new Map,this.jobs=new Map,this.pendingQueue=[],this.isPaused=!1,this.isProcessing=!1,this.activeJobs=0,this.jobCounter=0,this.executor=null,this.config=l(l({},ue),e)}setExecutor(e){this.executor=e}add(e,t){var i,s;if(this.jobs.size>=this.config.maxSize)throw Error("Queue is full");const r=this.generateJobId(),n={id:r,data:e,status:"pending",priority:null!=(i=null==t?void 0:t.priority)?i:1,createdAt:Date.now(),retryCount:0,maxRetries:null!=(s=null==t?void 0:t.maxRetries)?s:this.config.defaultRetries,metadata:null==t?void 0:t.metadata};return this.jobs.set(r,n),this.insertByPriority(r,n.priority),this.emit("job-added",n),this.logger.debug(`Job added: ${r} (priority: ${n.priority})`),this.config.autoProcess&&!this.isPaused&&this.processQueue(),r}getJob(e){var t;return null!=(t=this.jobs.get(e))?t:null}cancel(e){const t=this.jobs.get(e);return!!t&&("in_progress"===t.status?(this.logger.warn("Cannot cancel in-progress job: "+e),!1):"completed"!==t.status&&"cancelled"!==t.status&&(t.status="cancelled",this.removeFromPendingQueue(e),this.emit("job-cancelled",t),this.logger.debug("Job cancelled: "+e),!0))}pause(){this.isPaused||(this.isPaused=!0,this.emit("queue-paused",void 0),this.logger.info("Queue paused"))}resume(){this.isPaused&&(this.isPaused=!1,this.emit("queue-resumed",void 0),this.logger.info("Queue resumed"),this.config.autoProcess&&this.processQueue())}clear(){const e=[...this.pendingQueue];for(const t of e){const e=this.jobs.get(t);e&&"pending"===e.status&&(e.status="cancelled",this.emit("job-cancelled",e))}this.pendingQueue=[],this.logger.info("Queue cleared")}getQueueStatus(){let e=0,t=0,i=0,s=0;for(const r of this.jobs.values())switch(r.status){case"pending":case"paused":e++;break;case"in_progress":t++;break;case"completed":i++;break;case"failed":s++}return{pending:e,inProgress:t,completed:i,failed:s}}getAllJobs(){return Array.from(this.jobs.values())}getPendingJobs(){return this.pendingQueue.map(e=>this.jobs.get(e)).filter(e=>void 0!==e)}get paused(){return this.isPaused}get size(){return this.pendingQueue.length}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){const i=this.listeners.get(e);i&&i.delete(t)}processQueue(){if(!this.isProcessing&&!this.isPaused&&this.activeJobs<this.config.concurrency)if(0!==this.pendingQueue.length){for(this.isProcessing=!0;this.pendingQueue.length>0&&this.activeJobs<this.config.concurrency&&!this.isPaused;){const e=this.pendingQueue.shift();if(!e)break;const t=this.jobs.get(e);t&&"pending"===t.status&&(this.activeJobs++,this.executeJob(t).catch(e=>{this.logger.error(`Unhandled error in job execution for ${t.id}:`,e)}).finally(()=>{this.activeJobs--,this.isPaused||this.processQueue()}))}this.isProcessing=!1}else this.emit("queue-empty",void 0)}executeJob(e){return u(this,null,function*(){e.status="in_progress",e.startedAt=Date.now(),this.emit("job-started",e),this.logger.debug("Job started: "+e.id);try{this.executor?yield this.executor(e):yield new Promise(e=>setTimeout(e,100)),e.status="completed",e.completedAt=Date.now(),this.emit("job-completed",e),this.logger.debug("Job completed: "+e.id)}catch(t){e.retryCount++,e.error=t instanceof Error?t:Error(t+""),e.retryCount<e.maxRetries?(this.logger.warn(`Job ${e.id} failed, retrying (${e.retryCount}/${e.maxRetries})`),e.status="pending",setTimeout(()=>{"pending"===e.status&&(this.insertByPriority(e.id,e.priority),this.config.autoProcess&&!this.isPaused&&this.processQueue())},this.config.retryDelay)):(e.status="failed",e.completedAt=Date.now(),this.emit("job-failed",e),this.logger.error("Job failed: "+e.id,t))}})}insertByPriority(e,t){let i=this.pendingQueue.length;for(let s=0;s<this.pendingQueue.length;s++){const e=this.pendingQueue[s];if(!e)continue;const r=this.jobs.get(e);if(r&&r.priority<t){i=s;break}}this.pendingQueue.splice(i,0,e)}removeFromPendingQueue(e){const t=this.pendingQueue.indexOf(e);-1!==t&&this.pendingQueue.splice(t,1)}generateJobId(){return this.jobCounter++,`job_${Date.now()}_${this.jobCounter}`}emit(e,t){const i=this.listeners.get(e);i&&i.forEach(i=>{try{i(t)}catch(s){this.logger.error(`Error in event handler for "${e}":`,s)}})}}new ge;const fe={maxJobs:50,expiryTime:864e5,storagePrefix:"bt_print_cache_",autoSync:!0};class pe{constructor(e){this.logger=m.scope("OfflineCache"),this.listeners=new Map,this.syncExecutor=null,this.isSyncing=!1,this.config=l(l({},fe),e),this.JOBS_KEY=this.config.storagePrefix+"jobs"}setSyncExecutor(e){this.syncExecutor=e}save(e){try{const t=this.loadJobs();if(t.length>=this.config.maxJobs){const e=Date.now(),i=t.findIndex(t=>t.expiresAt<e);-1!==i?t.splice(i,1):t.shift()}const i=t.findIndex(t=>t.id===e.id);-1!==i?t[i]=e:t.push(e),this.saveJobs(t),this.emit("job-saved",e),this.logger.debug("Job saved to cache: "+e.id)}catch(t){const e=t instanceof Error?t:Error(t+"");throw this.emit("error",e),e}}getAll(){return this.loadJobs()}remove(e){try{const t=this.loadJobs(),i=t.findIndex(t=>t.id===e);-1!==i&&(t.splice(i,1),this.saveJobs(t),this.emit("job-removed",e),this.logger.debug("Job removed from cache: "+e))}catch(t){const e=t instanceof Error?t:Error(t+"");throw this.emit("error",e),e}}cleanup(){try{const e=this.loadJobs(),t=Date.now(),i=e.filter(e=>e.expiresAt>t),s=e.length-i.length;return s>0&&(this.saveJobs(i),this.emit("cleanup-completed",s),this.logger.info(`Cleaned up ${s} expired jobs`)),s}catch(e){const t=e instanceof Error?e:Error(e+"");throw this.emit("error",t),t}}sync(){return u(this,null,function*(){if(this.isSyncing)return void this.logger.warn("Sync already in progress");if(!this.syncExecutor)return void this.logger.warn("No sync executor set");this.isSyncing=!0,this.emit("sync-started",void 0);let e=0,t=0;try{const s=this.loadJobs(),r=Date.now();for(const n of s)if(n.expiresAt<r)this.remove(n.id);else try{yield this.syncExecutor(n),this.remove(n.id),this.emit("job-synced",n),e++,this.logger.debug("Job synced: "+n.id)}catch(i){t++,n.retryCount++,n.lastError=i instanceof Error?i.message:i+"",this.save(n),this.logger.warn("Job sync failed: "+n.id,i)}this.emit("sync-completed",{success:e,failed:t}),this.logger.info(`Sync completed: ${e} success, ${t} failed`)}catch(i){const e=i instanceof Error?i:Error(i+"");throw this.emit("error",e),e}finally{this.isSyncing=!1}})}getStats(){const e=this.loadJobs(),t=Date.now();let i=0,s=0;for(const r of e)r.expiresAt<t?i++:s++;return{total:e.length,expired:i,pending:s}}get syncing(){return this.isSyncing}createJob(e,t,i){const s=Date.now();return{id:e,data:t,createdAt:s,expiresAt:s+this.config.expiryTime,retryCount:0,metadata:i}}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){const i=this.listeners.get(e);i&&i.delete(t)}clear(){try{t.removeStorageSync(this.JOBS_KEY),this.logger.info("Cache cleared")}catch(e){throw this.logger.error("Error clearing cache:",e),e}}loadJobs(){try{const e=t.getStorageSync(this.JOBS_KEY);return e&&Array.isArray(e)?e.map(e=>this.deserializeJob(e)):[]}catch(e){return this.logger.error("Error loading jobs:",e),[]}}saveJobs(e){try{const i=e.map(e=>this.serializeJob(e));t.setStorageSync(this.JOBS_KEY,i)}catch(i){throw this.logger.error("Error saving jobs:",i),i}}serializeJob(e){return{id:e.id,data:Array.from(e.data),createdAt:e.createdAt,expiresAt:e.expiresAt,retryCount:e.retryCount,lastError:e.lastError,metadata:e.metadata}}deserializeJob(e){return{id:e.id,data:new Uint8Array(e.data),createdAt:e.createdAt,expiresAt:e.expiresAt,retryCount:e.retryCount,lastError:e.lastError,metadata:e.metadata}}emit(e,t){const i=this.listeners.get(e);i&&i.forEach(i=>{try{i(t)}catch(s){this.logger.error(`Error in event handler for "${e}":`,s)}})}}new pe;class me{constructor(e=48){this.logger=m.scope("TemplateEngine"),this.templates=new Map,this.paperWidth=e,this.formatter=new ne,this.barcodeGenerator=new ce,this.driver=new ee}renderReceipt(e){var t;const i=[];i.push(...this.driver.init()),i.push(...this.formatter.align(te.CENTER)),i.push(...this.formatter.setSize(2,2)),i.push(...this.formatter.setBold(!0)),i.push(...this.driver.text(e.store.name)),i.push(...this.driver.feed(1)),i.push(...this.formatter.resetStyle()),e.store.address&&(i.push(...this.formatter.align(te.CENTER)),i.push(...this.driver.text(e.store.address)),i.push(...this.driver.feed(1))),e.store.phone&&(i.push(...this.formatter.align(te.CENTER)),i.push(...this.driver.text("\u7535\u8bdd: "+e.store.phone)),i.push(...this.driver.feed(1))),i.push(...this.renderLine()),e.order&&(i.push(...this.formatter.align(te.LEFT)),i.push(...this.driver.text("\u8ba2\u5355\u53f7: "+e.order.id)),i.push(...this.driver.feed(1)),i.push(...this.driver.text("\u65e5\u671f: "+e.order.date)),i.push(...this.driver.feed(1)),e.order.cashier&&(i.push(...this.driver.text("\u6536\u94f6\u5458: "+e.order.cashier)),i.push(...this.driver.feed(1))),i.push(...this.renderLine())),i.push(...this.formatter.align(te.LEFT)),i.push(...this.formatter.setBold(!0)),i.push(...this.driver.text(this.formatItemLine("\u5546\u54c1","\u6570\u91cf","\u91d1\u989d"))),i.push(...this.driver.feed(1)),i.push(...this.formatter.setBold(!1)),i.push(...this.renderLine("-"));for(const s of e.items){const e=s.quantity*s.price-(null!=(t=s.discount)?t:0);i.push(...this.driver.text(s.name)),i.push(...this.driver.feed(1)),i.push(...this.driver.text(this.formatItemLine("","x"+s.quantity,"\xa5"+e.toFixed(2)))),i.push(...this.driver.feed(1))}return i.push(...this.renderLine()),i.push(...this.formatter.align(te.RIGHT)),e.payment.subtotal!==e.payment.total&&(i.push(...this.driver.text("\u5c0f\u8ba1: \xa5"+e.payment.subtotal.toFixed(2))),i.push(...this.driver.feed(1))),e.payment.tax&&(i.push(...this.driver.text("\u7a0e\u989d: \xa5"+e.payment.tax.toFixed(2))),i.push(...this.driver.feed(1))),e.payment.discount&&(i.push(...this.driver.text("\u4f18\u60e0: -\xa5"+e.payment.discount.toFixed(2))),i.push(...this.driver.feed(1))),i.push(...this.formatter.setBold(!0)),i.push(...this.formatter.setSize(1,2)),i.push(...this.driver.text("\u5408\u8ba1: \xa5"+e.payment.total.toFixed(2))),i.push(...this.driver.feed(1)),i.push(...this.formatter.resetStyle()),i.push(...this.formatter.align(te.RIGHT)),i.push(...this.driver.text("\u652f\u4ed8\u65b9\u5f0f: "+e.payment.method)),i.push(...this.driver.feed(1)),void 0!==e.payment.received&&(i.push(...this.driver.text("\u5b9e\u6536: \xa5"+e.payment.received.toFixed(2))),i.push(...this.driver.feed(1))),void 0!==e.payment.change&&(i.push(...this.driver.text("\u627e\u96f6: \xa5"+e.payment.change.toFixed(2))),i.push(...this.driver.feed(1))),i.push(...this.renderLine()),e.qrCode&&(i.push(...this.formatter.align(te.CENTER)),i.push(...this.driver.qr(e.qrCode,{size:6})),i.push(...this.driver.feed(1))),e.footer?(i.push(...this.formatter.align(te.CENTER)),i.push(...this.driver.text(e.footer)),i.push(...this.driver.feed(1))):(i.push(...this.formatter.align(te.CENTER)),i.push(...this.driver.text("\u8c22\u8c22\u60e0\u987e\uff0c\u6b22\u8fce\u518d\u6b21\u5149\u4e34\uff01")),i.push(...this.driver.feed(1))),i.push(...this.driver.feed(3)),i.push(...this.driver.cut()),this.combineCommands(i)}renderLabel(e){var t;const i=[];if(i.push(...this.driver.init()),i.push(...this.formatter.align(te.CENTER)),i.push(...this.formatter.setBold(!0)),i.push(...this.driver.text(e.name)),i.push(...this.driver.feed(1)),i.push(...this.formatter.setBold(!1)),e.spec&&(i.push(...this.driver.text(e.spec)),i.push(...this.driver.feed(1))),i.push(...this.formatter.setSize(2,2)),i.push(...this.driver.text("\xa5"+e.price.toFixed(2))),i.push(...this.driver.feed(1)),i.push(...this.formatter.resetStyle()),i.push(...this.formatter.align(te.LEFT)),e.productionDate&&(i.push(...this.driver.text("\u751f\u4ea7\u65e5\u671f: "+e.productionDate)),i.push(...this.driver.feed(1))),e.expiryDate&&(i.push(...this.driver.text("\u4fdd\u8d28\u671f\u81f3: "+e.expiryDate)),i.push(...this.driver.feed(1))),e.barcode){i.push(...this.formatter.align(te.CENTER));const s=this.barcodeGenerator.generate(e.barcode,{format:null!=(t=e.barcodeFormat)?t:oe.CODE128,height:60,showText:!0});i.push(...s),i.push(...this.driver.feed(1))}return i.push(...this.driver.feed(2)),i.push(...this.driver.cut()),this.combineCommands(i)}render(e,t){const i=[];i.push(...this.driver.init());for(const s of e.elements)i.push(...this.renderElement(s,t));return i.push(...this.driver.feed(2)),i.push(...this.driver.cut()),this.combineCommands(i)}registerTemplate(e,t){this.templates.set(e,t),this.logger.debug("Template registered: "+e)}getTemplate(e){return this.templates.get(e)}validate(e,t){const i=[];for(const s of e.elements)"variable"===s.type&&void 0===this.getNestedValue(t,s.name)&&i.push({field:s.name,message:"Missing required variable: "+s.name,code:"MISSING_VARIABLE"});return{valid:0===i.length,errors:i}}renderElement(e,t){var i,s;const r=[];switch(e.type){case"text":{const i=this.substituteVariables(e.content,t);e.align&&r.push(...this.formatter.align(e.align)),e.size&&r.push(...this.formatter.setSize(e.size,e.size)),e.bold&&r.push(...this.formatter.setBold(!0)),r.push(...this.driver.text(i)),r.push(...this.driver.feed(1)),e.bold&&r.push(...this.formatter.setBold(!1)),e.size&&r.push(...this.formatter.setSize(1,1));break}case"line":r.push(...this.renderLine(e.char,e.length));break;case"image":r.push(...this.driver.image(e.data,e.width,e.height)),r.push(...this.driver.feed(1));break;case"qrcode":{const s=this.substituteVariables(e.content,t);r.push(...this.formatter.align(te.CENTER)),r.push(...this.driver.qr(s,{size:null!=(i=e.size)?i:6})),r.push(...this.driver.feed(1));break}case"barcode":{const i=this.substituteVariables(e.content,t);r.push(...this.formatter.align(te.CENTER));const n=this.barcodeGenerator.generate(i,{format:e.format,height:null!=(s=e.height)?s:60,showText:!0});r.push(...n),r.push(...this.driver.feed(1));break}case"feed":r.push(...this.driver.feed(e.lines));break;case"variable":{const i=this.getNestedValue(t,e.name);if(void 0!==i){const t=this.formatValue(i,e.format);r.push(...this.driver.text(t)),r.push(...this.driver.feed(1))}break}}return r}renderLine(e="-",t){const i=null!=t?t:this.paperWidth,s=e.repeat(i);return[...this.driver.text(s),...this.driver.feed(1)]}formatItemLine(e,t,i){const s=this.paperWidth-16;return`${e.padEnd(s).substring(0,s)}${t.padStart(8)}${i.padStart(8)}`}substituteVariables(e,t){return e.replace(/\{\{(\w+(?:\.\w+)*)\}\}/g,(e,i)=>{const s=this.getNestedValue(t,i);return void 0!==s?s+"":""})}getNestedValue(e,t){const i=t.split(".");let s=e;for(const r of i){if(null==s)return;if("object"!=typeof s)return;s=s[r]}return s}formatValue(e,t){return"currency"===t&&"number"==typeof e?"\xa5"+e.toFixed(2):"date"===t&&e instanceof Date?e.toLocaleDateString("zh-CN"):e+""}combineCommands(e){const t=e.reduce((e,t)=>e+t.length,0),i=new Uint8Array(t);let s=0;for(const r of e)i.set(r,s),s+=r.length;return i}}new me;const ve={paperWidth:58,dpi:203,backgroundColor:"#ffffff",foregroundColor:"#000000",fontSize:24,lineHeight:1.2};class be{constructor(){this.logger=m.scope("PreviewRenderer")}render(e,t){const i=l(l({},ve),t),s=Math.floor(i.paperWidth/25.4*i.dpi),{lines:r,estimatedHeight:n}=this.parseCommands(e,i);return"undefined"!=typeof document&&"function"==typeof document.createElement?this.renderToCanvas(r,s,n,i):this.createPlaceholder(s,n)}renderToImageData(e,t){const i=l(l({},ve),t),s=Math.floor(i.paperWidth/25.4*i.dpi),{lines:r,estimatedHeight:n}=this.parseCommands(e,i);if("undefined"!=typeof document&&"function"==typeof document.createElement){const e=document.createElement("canvas");e.width=s,e.height=n;const t=e.getContext("2d");if(!t)throw Error("Failed to get canvas context");return this.drawToContext(t,r,s,n,i),t.getImageData(0,0,s,n)}return new ImageData(s,n)}parseCommands(e,t){var i,s,r,n,o,a,h,c;const l=[],d={alignment:0,widthScale:1,heightScale:1,bold:!1,underline:!1,inverse:!1,fontSize:t.fontSize,lineHeight:t.lineHeight};let u={segments:[],alignment:0,height:t.fontSize*t.lineHeight},g=0,f="";const p=()=>{f.length>0&&(u.segments.push({type:"text",content:f,bold:d.bold,underline:d.underline,inverse:d.inverse,widthScale:d.widthScale,heightScale:d.heightScale,fontSize:d.fontSize}),f="")},m=()=>{p(),(u.segments.length>0||0===l.length)&&(u.alignment=d.alignment,l.push(u)),u={segments:[],alignment:d.alignment,height:d.fontSize*d.heightScale*d.lineHeight}};for(;g<e.length;){const t=e[g];if(void 0!==t)if(27===t&&g+1<e.length)switch(e[g+1]){case 64:p(),d.alignment=0,d.widthScale=1,d.heightScale=1,d.bold=!1,d.underline=!1,d.inverse=!1,g+=2;break;case 97:if(p(),g+2<e.length){const t=e[g+2];d.alignment=0===t||1===t||2===t?t:0}g+=3;break;case 69:p(),g+2<e.length&&(d.bold=0!==e[g+2]),g+=3;break;case 45:p(),g+2<e.length&&(d.underline=0!==e[g+2]),g+=3;break;case 100:if(m(),g+2<e.length){const t=null!=(i=e[g+2])?i:1;for(let e=0;t-1>e;e++)l.push({segments:[],alignment:d.alignment,height:d.fontSize*d.lineHeight})}g+=3;break;default:g+=2}else if(29===t&&g+1<e.length)switch(e[g+1]){case 33:if(p(),g+2<e.length){const t=null!=(s=e[g+2])?s:0;d.widthScale=1+(t>>4&7),d.heightScale=1+(7&t)}g+=3;break;case 66:p(),g+2<e.length&&(d.inverse=0!==e[g+2]),g+=3;break;case 86:m(),l.push({segments:[{type:"cut"}],alignment:1,height:20}),g+=3;break;case 40:p(),g+3<e.length?g+=4+((null!=(r=e[g+2])?r:0)+256*(null!=(n=e[g+3])?n:0)):g+=2;break;case 118:if(p(),g+7<e.length){const t=(null!=(o=e[g+4])?o:0)+256*(null!=(a=e[g+5])?a:0),i=(null!=(h=e[g+6])?h:0)+256*(null!=(c=e[g+7])?c:0),s=t*i;l.push({segments:[{type:"image",width:8*t,height:i}],alignment:d.alignment,height:i}),g+=8+s}else g+=2;break;default:g+=2}else if(10===t)m(),g++;else if(t>=32&&128>t)f+=String.fromCharCode(t),g++;else if(128>t)g++;else if(g+1<e.length)if(void 0!==e[g+1])try{const t=new TextDecoder("gbk").decode(e.slice(g,g+2));f+=t,g+=2}catch(b){g++}else g++;else g++;else g++}p(),u.segments.length>0&&(u.alignment=d.alignment,l.push(u));const v=Math.max(100,l.reduce((e,t)=>e+t.height,0)+40);return{lines:l,estimatedHeight:v}}renderToCanvas(e,t,i,s){const r=document.createElement("canvas");r.width=t,r.height=i;const n=r.getContext("2d");if(!n)throw Error("Failed to get canvas context");return this.drawToContext(n,e,t,i,s),{base64:r.toDataURL("image/png"),width:t,height:i,mimeType:"image/png"}}drawToContext(e,t,i,s,r){e.fillStyle=r.backgroundColor,e.fillRect(0,0,i,s);let n=20;for(const o of t)if(0!==o.segments.length){for(const t of o.segments)if("text"===t.type){const s=t.fontSize*t.heightScale,a=t.bold?"bold":"normal";e.font=`${a} ${s}px monospace`;const h=e.measureText(t.content).width*t.widthScale;let c=10;switch(o.alignment){case 1:c=(i-h)/2;break;case 2:c=i-h-10}t.inverse?(e.fillStyle=r.foregroundColor,e.fillRect(c-2,n-s,h+4,1.2*s),e.fillStyle=r.backgroundColor):e.fillStyle=r.foregroundColor,t.widthScale>1?(e.save(),e.scale(t.widthScale,1),e.fillText(t.content,c/t.widthScale,n),e.restore()):e.fillText(t.content,c,n),t.underline&&(e.strokeStyle=r.foregroundColor,e.lineWidth=1,e.beginPath(),e.moveTo(c,n+2),e.lineTo(c+h,n+2),e.stroke())}else"cut"===t.type?(e.strokeStyle="#cccccc",e.setLineDash([5,5]),e.beginPath(),e.moveTo(0,n),e.lineTo(i,n),e.stroke(),e.setLineDash([])):"image"===t.type&&(e.fillStyle="#eeeeee",e.fillRect(10,n-t.height,t.width,t.height),e.strokeStyle="#cccccc",e.strokeRect(10,n-t.height,t.width,t.height));n+=o.height}else n+=o.height}createPlaceholder(e,t){return this.logger.warn("Canvas not available, returning placeholder"),{base64:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==",width:e,height:t,mimeType:"image/png"}}}new be;const Ee={adapter:{chunkSize:20,delay:20,retries:3,timeout:1e4},driver:{encoding:"GBK",paperWidth:58},logging:{level:f.WARN}};e.AdapterFactory=P,e.AlipayAdapter=D,e.BaiduAdapter=w,e.BarcodeFormat=oe,e.BarcodeGenerator=ce,e.BaseAdapter=y,e.BluetoothPrintError=E,e.BluetoothPrinter=class extends v{constructor(e,t,i){if(super(),this.printerLogger=m.scope("BluetoothPrinter"),this.state=g.DISCONNECTED,e&&"function"==typeof e.connect){const t=e;this.connectionManager=new R(t),this.printJobManager=new B(this.connectionManager),this.commandBuilder=i||new le}else this.connectionManager=e,this.printJobManager=t,this.commandBuilder=i,this.connectionManager||(this.connectionManager=new R,this.printJobManager=new B(this.connectionManager),this.commandBuilder=new le);this.updateState()}updateState(){let e;e=this.connectionManager&&"function"==typeof this.connectionManager.getState?this.connectionManager.getState():g.CONNECTED;let t=!1,i=!1;this.printJobManager&&(t="function"==typeof this.printJobManager.isInProgress&&this.printJobManager.isInProgress(),i="function"==typeof this.printJobManager.isPaused&&this.printJobManager.isPaused()),this.state=i?g.PAUSED:t?g.PRINTING:e,this.emit("state-change",this.state),this.printerLogger.debug("State updated:",this.state)}connect(e){return u(this,null,function*(){this.printerLogger.info("Connecting to device:",e);try{return yield this.connectionManager.connect(e),this.updateState(),this.emit("connected",e),this.printerLogger.info("Connected successfully"),this}catch(t){const e=t instanceof E?t:new E(b.CONNECTION_FAILED,"Connection failed",t);throw this.emit("error",e),this.updateState(),e}})}disconnect(){return u(this,null,function*(){const e=this.connectionManager.getDeviceId();if(e){this.printerLogger.info("Disconnecting from device:",e);try{yield this.connectionManager.disconnect(),this.printJobManager.cancel(),this.updateState(),this.emit("disconnected",e),this.printerLogger.info("Disconnected successfully")}catch(t){const e=new E(b.DEVICE_DISCONNECTED,"Disconnect failed",t);throw this.emit("error",e),this.updateState(),e}}else this.printerLogger.warn("Disconnect called but no device connected")})}text(e,t){return this.commandBuilder.text(e,t),this}feed(e=1){return this.commandBuilder.feed(e),this}cut(){return this.commandBuilder.cut(),this}image(e,t,i){return this.commandBuilder.image(e,t,i),this}qr(e,t){return this.commandBuilder.qr(e,t),this}setOptions(e){return this.printJobManager.setOptions(e),this}pause(){this.printJobManager.pause(),this.updateState(),this.printerLogger.info("Print job paused")}resume(){return u(this,null,function*(){this.printerLogger.info("Resuming print job");try{yield this.printJobManager.resume(),this.updateState(),this.printerLogger.info("Print job resumed")}catch(e){const t=new E(b.PRINT_JOB_FAILED,"Failed to resume print job",e);throw this.emit("error",t),this.updateState(),t}})}cancel(){this.printJobManager.cancel(),this.commandBuilder.clear(),this.updateState(),this.printerLogger.info("Print job cancelled")}remaining(){return this.printJobManager.remaining()}print(){return u(this,null,function*(){if("function"==typeof this.connectionManager.isConnected&&!this.connectionManager.isConnected())throw new E(b.CONNECTION_FAILED,"Printer not connected. Call connect() first.");const e=this.commandBuilder.getBuffer();this.printerLogger.info(`Starting print job: ${e.length} bytes`),this.commandBuilder.clear(),this.updateState(),this.printJobManager.setProgressCallback((e,t)=>{this.emit("progress",{sent:e,total:t})});try{yield this.printJobManager.start(e),"function"==typeof this.printJobManager.isPaused&&this.printJobManager.isPaused()?this.printerLogger.info("Print job paused"):(this.emit("print-complete"),this.printerLogger.info("Print job completed successfully"))}catch(t){this.printerLogger.error("Print job failed with error:",t);const e=t instanceof E?t:new E(b.PRINT_JOB_FAILED,"Print job failed",t);throw this.emit("error",e),e}finally{this.updateState()}})}align(e){return this.commandBuilder.align(e),this}setSize(e,t){return this.commandBuilder.setSize(e,t),this}setBold(e){return this.commandBuilder.setBold(e),this}setUnderline(e){return this.commandBuilder.setUnderline(e),this}resetStyle(){return this.commandBuilder.resetStyle(),this}barcode(e,t,i){return this.commandBuilder.barcode(e,l({format:t},i)),this}getConnectionManager(){return this.connectionManager}getCommandBuilder(){return this.commandBuilder}},e.ByteDanceAdapter=A,e.CommandBuilder=le,e.ConnectionManager=R,e.CpclDriver=class{constructor(e=576,t=0){this.commands=[],this.logger=m.scope("CpclDriver"),this.pageWidth=576,this.pageHeight=0,this.pageWidth=e,this.pageHeight=t}setPageSize(e,t=0){return this.pageWidth=e,this.pageHeight=t,this}usePageSize(e){const[t,i]={"4X6":[576,864],"4X4":[576,576],"4X2":[576,288],"2.25X1.25":[324,180],A4:[992,1406],A5:[701,992],LETTER:[1050,1500],CUSTOM:[576,0]}[e]||[576,0];return this.pageWidth=t,this.pageHeight=i,this}pageStart(){return this.commands.push("! U1 SETLP 5 0 30"),this.commands.push("! U1 PAGE WIDTH "+this.pageWidth),this.pageHeight>0&&this.commands.push("! U1 PAGE HEIGHT "+this.pageHeight),this.commands.push("START"),this}pageEnd(){return this.commands.push("END"),this}formFeed(){return this.commands.push("FORM"),this}setLinePrint(e=5,t=0,i=30){return this.commands.push(`! U1 SETLP ${e} ${t} ${i}`),this}setFont(e=3,t=1,i=1,s=0){const r={0:"N",90:"R",180:"B",270:"I"}[s]||"N";return this.commands.push(`! U1 SETLP ${e} ${t} ${i} ${r}`),this}text(e){return this.commands.push("! U1 TEXT "+this.escapeText(e)),this}textAt(e,t){const{x:i=0,y:s=0,font:r=3,xMulti:n=1,yMulti:o=1,rotation:a=0}=t,h={0:"N",90:"R",180:"B",270:"I"}[a]||"N";return this.commands.push(`! U1 SETLP ${r} ${n} ${o} ${h}`),this.commands.push(`! U1 ${i} ${s} TEXT ${this.escapeText(e)}`),this}legacyText(e,t,i,s=3){return this.commands.push(`TEXT ${t} ${i} ${s} "${this.escapeText(e)}"`),this}barcode(e,t){const{x:i=0,y:s=0,type:r="128",height:n=50,wide:o=2,narrow:a=1,readable:h=!0}=t,c=h?"B":"N";switch(r){case"128":default:this.commands.push(`BARCODE 128 ${i} ${s} ${n} ${c} 0 ${a} ${o} "${e}"`);break;case"39":this.commands.push(`BARCODE 39 ${i} ${s} ${n} ${c} ${o} ${a} "${e}"`);break;case"EAN13":this.commands.push(`BARCODE EAN13 ${i} ${s} ${n} ${c} "${e}"`);break;case"EAN8":this.commands.push(`BARCODE EAN8 ${i} ${s} ${n} ${c} "${e}"`);break;case"UPCA":this.commands.push(`BARCODE UPCA ${i} ${s} ${n} ${c} "${e}"`);break;case"UPCE":this.commands.push(`BARCODE UPCE ${i} ${s} ${n} ${c} "${e}"`);break;case"PDF417":this.commands.push(`BARCODE PDF417 ${i} ${s} 6 200 "${e}"`);break;case"DATAMATRIX":this.commands.push(`BARCODE DATAMATRIX ${i} ${s} 200 "${e}"`);break;case"QR":this.qrcode(e,{x:i,y:s})}return this}code128(e,t=0,i=0,s=50){return this.barcode(e,{x:t,y:i,type:"128",height:s})}code39(e,t=0,i=0,s=50){return this.barcode(e,{x:t,y:i,type:"39",height:s,wide:2,narrow:1})}qrcode(e,t){const{x:i=0,y:s=0,model:r=2,errorCorrection:n="M",cellSize:o=4}=t||{};return this.commands.push(`BARCODE QR ${i} ${s} ${r} ${o} A ${n} "${e}"`),this}twoDBarcode(e,t,i=0,s=0,r=200){return"PDF417"===t?this.commands.push(`BARCODE PDF417 ${i} ${s} 6 ${r} "${e}"`):this.commands.push(`BARCODE DATAMATRIX ${i} ${s} ${r} "${e}"`),this}line(e){const{x1:t,y1:i,x2:s,y2:r,width:n=1}=e;return this.commands.push(`LINE ${t} ${i} ${s} ${r} ${n}`),this}box(e){const{x:t,y:i,width:s,height:r,thickness:n=1}=e;return this.commands.push(`BOX ${t} ${i} ${s} ${r} ${n}`),this}inverse(e,t,i,s){return this.commands.push(`INVERSE ${i} ${s} ${e} ${t}`),this}setDensity(e){const t=Math.min(50,Math.max(-50,e));return this.commands.push("! U1 SETDENSITY "+t),this}setSpeed(e){const t=Math.min(6,Math.max(2,e));return this.commands.push("! U1 SETSPEED "+t),this}cut(){return this.commands.push("CUT"),this}partialCut(){return this.commands.push("PCUT"),this}feedCut(){return this.commands.push("FEED CUT"),this}beep(e=1,t=5){return this.commands.push(`BEEP ${e} ${t}`),this}logo(e,t,i){return this.commands.push(`LOGO ${e} ${t} "${i}"`),this}downloadLogo(e,t){return this.commands.push("! DF "+e),this.logger.debug("CPCL logo download not fully implemented"),this.commands.push("! DF"),this}printLogo(e,t=0,i=0){return this.commands.push(`LOGO ${t} ${i} "${e}"`),this}getCommands(){return this.commands.join("\r\n")+"\r\n"}getBuffer(){const e=this.getCommands();return this.logger.debug("CPCL commands:\n"+e),X.encode(e,"ASCII")}getCommandList(){return[...this.commands]}reset(){return this.commands=[],this}getPageWidth(){return this.pageWidth}escapeText(e){return e.replace(/"/g,'""')}},e.DEFAULT_CONFIG=Ee,e.DeviceManager=de,e.Encoding=X,e.EncodingService=q,e.ErrorCode=b,e.EscPos=ee,e.EventEmitter=v,e.GPrinterDriver=class extends ee{openCashDrawer(e=0){return[new Uint8Array([27,112,e,50,200])]}beep(e=3,t=50){return[new Uint8Array([27,66,e,t])]}selfTest(){return[new Uint8Array([27,105])]}getStatus(){const e=[];for(let t=1;4>=t;t++)e.push(new Uint8Array([16,4,t]));return e}setCodePage(e){return[new Uint8Array([27,116,e])]}printAndFeed(e){return[new Uint8Array([27,100,e])]}setLeftMargin(e){return[new Uint8Array([27,108,e])]}setPrintWidth(e){return[new Uint8Array([27,87,e])]}},e.ImageProcessing=Z,e.LogLevel=f,e.Logger=m,e.OfflineCache=pe,e.PlatformType=T,e.PluginManager=class{constructor(){this.plugins=new Map,this.logger=m.scope("PluginManager")}register(e,t){return u(this,null,function*(){if(this.plugins.has(e.name))throw new E(b.INVALID_CONFIGURATION,`Plugin "${e.name}" is already registered`);this.logger.info(`Registering plugin: ${e.name}${e.version?" v"+e.version:""}`),e.init&&(yield e.init(t)),this.plugins.set(e.name,e),this.logger.debug("Plugin registered: "+e.name)})}unregister(e){return u(this,null,function*(){const t=this.plugins.get(e);t?(t.destroy&&(yield t.destroy()),this.plugins.delete(e),this.logger.info("Plugin unregistered: "+e)):this.logger.warn("Plugin not found: "+e)})}get(e){return this.plugins.get(e)}getNames(){return Array.from(this.plugins.keys())}has(e){return this.plugins.has(e)}executeHook(e,...t){return u(this,null,function*(){let i;for(const[r,n]of this.plugins){const o=n.hooks[e];if(o)try{const e=yield o(...t);void 0!==e&&(i=e)}catch(s){this.logger.error(`Plugin "${r}" hook "${e}" failed:`,s)}}return i})}beforeConnect(e){return u(this,null,function*(){return(yield this.executeHook("beforeConnect",e))||e})}afterConnect(e){return u(this,null,function*(){yield this.executeHook("afterConnect",e)})}beforeDisconnect(e){return u(this,null,function*(){yield this.executeHook("beforeDisconnect",e)})}afterDisconnect(e){return u(this,null,function*(){yield this.executeHook("afterDisconnect",e)})}beforePrint(e){return u(this,null,function*(){return(yield this.executeHook("beforePrint",e))||e})}afterPrint(e){return u(this,null,function*(){yield this.executeHook("afterPrint",e)})}onError(e){return u(this,null,function*(){return!0===(yield this.executeHook("onError",e))})}onStateChange(e,t){return u(this,null,function*(){yield this.executeHook("onStateChange",e,t)})}onProgress(e,t){return u(this,null,function*(){yield this.executeHook("onProgress",e,t)})}clear(){return u(this,null,function*(){for(const e of this.plugins.keys())yield this.unregister(e)})}},e.PreviewRenderer=be,e.PrintJobManager=B,e.PrintQueue=ge,e.PrinterState=g,e.TaroAdapter=I,e.TemplateEngine=me,e.TextAlign=te,e.TextFormatter=ne,e.TsplDriver=class{constructor(){this.commands=[],this.logger=m.scope("TsplDriver"),this.dpi=203}setDPI(e){return this.dpi=e,this}mmToDots(e){return Math.round(e*this.dpi/25.4)}dotsToMm(e){return 25.4*e/this.dpi}size(e,t){return this.commands.push(`SIZE ${e} mm, ${t} mm`),this}gap(e,t=0){return this.commands.push(`GAP ${e} mm, ${t} mm`),this}speed(e){return this.commands.push("SPEED "+Math.min(10,Math.max(1,e))),this}density(e){return this.commands.push("DENSITY "+Math.min(15,Math.max(0,e))),this}direction(e){return this.commands.push("DIRECTION "+e),this}clear(){return this.commands.push("CLS"),this}text(e,t){const{x:i,y:s,font:r=2,rotation:n=0,xMultiplier:o=1,yMultiplier:a=1}=t;return this.commands.push(`TEXT ${i},${s},"${r}",${n},${o},${a},"${this.escapeString(e)}"`),this}barcode(e,t){const{x:i,y:s,type:r,height:n=100,narrow:o=2,wide:a=4,showText:h=!0,rotation:c=0}=t,l=h?1:0;return"QRCODE"===r?this.qrcode(e,{x:i,y:s,rotation:c}):(this.commands.push(`BARCODE ${i},${s},"${r}",${n},${l},${c},${o},${a},"${e}"`),this)}qrcode(e,t){const{x:i,y:s,eccLevel:r="M",cellWidth:n=6,mode:o="A",rotation:a=0}=t;return this.commands.push(`QRCODE ${i},${s},${r},${n},${o},${a},"${this.escapeString(e)}"`),this}box(e){const{x:t,y:i,width:s,height:r,thickness:n=2}=e;return this.commands.push(`BOX ${t},${i},${t+s},${i+r},${n}`),this}line(e){const{x1:t,y1:i,x2:s,y2:r,thickness:n=2}=e;if(t===s||i===r){const e=Math.abs(s-t)||n,o=Math.abs(r-i)||n;this.commands.push(`BAR ${Math.min(t,s)},${Math.min(i,r)},${e},${o}`)}else this.commands.push(`DIAGONAL ${t},${i},${n},${Math.sqrt(h(s-t,2)+h(r-i,2))},${180*Math.atan2(r-i,s-t)/Math.PI}`);return this}bar(e,t,i,s){return this.commands.push(`BAR ${e},${t},${i},${s}`),this}reverse(e,t,i,s){return this.commands.push(`REVERSE ${e},${t},${i},${s}`),this}print(e=1,t=1){return this.commands.push(`PRINT ${e},${t}`),this}feed(e=1){this.commands.push("FORMFEED");for(let t=1;e>t;t++)this.commands.push("FORMFEED");return this}cut(){return this.commands.push("CUT"),this}beep(){return this.commands.push("BEEP"),this}home(){return this.commands.push("HOME"),this}escapeString(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}getCommands(){return this.commands.join("\r\n")+"\r\n"}getBuffer(){const e=this.getCommands();return this.logger.debug("TSPL commands:\n"+e),X.encode(e,"ASCII")}reset(){return this.commands=[],this}},e.WebBluetoothAdapter=$,e.ZplDriver=class{constructor(){this.commands=[],this.logger=m.scope("ZplDriver"),this.startFormat()}startFormat(){return this.commands.push("^XA"),this}endFormat(){return this.commands.push("^XZ"),this}labelHome(e,t){return this.commands.push(`^FO${e},${t}`),this}fieldData(e){return this.commands.push("^FD"+this.escapeField(e)),this}fieldOrigin(e,t){return this.commands.push(`^FO${e},${t}`),this}printWidth(e){return this.commands.push("^PW"+e),this}labelLength(e){return this.commands.push("^LL"+e),this}labelGap(e){return this.commands.push("^LS"+e),this}quantity(e){return this.commands.push(`^PQ${e},0,1,Y`),this}text(e,t){if(t){const{x:i=0,y:s=0,font:r="0",rotation:n="N",xMultiplier:o=1,yMultiplier:a=1}=t;this.commands.push(`^FO${i},${s}^A${r}${n},${a},${o}^FD${this.escapeField(e)}^FS`)}else this.commands.push(`^FD${this.escapeField(e)}^FS`);return this}textAt(e,t,i,s="0",r="N"){return this.commands.push(`^FO${t},${i}^A${s}${r}^FD${this.escapeField(e)}^FS`),this}font(e,t,i,s=30,r=20){return this.commands.push(`^FO${t},${i}^A${s},${r}^FD${this.escapeField(e)}^FS`),this}scalableText(e,t,i,s="0",r=30,n=20){return this.commands.push(`^FO${t},${i}^A${s}N,${r},${n}^FD${this.escapeField(e)}^FS`),this}barcode(e,t){const{x:i=0,y:s=0,type:r="128",height:n=50,showText:o="Y",checkDigit:a="N",interpretLine:h="Y",interpretLineAbove:c="N"}=t;return this.commands.push(`^FO${i},${s}^B${r}${o},${n},${h},${c},${a}^FD${this.escapeField(e)}^FS`),this}code128(e,t=0,i=0,s=50){return this.barcode(e,{x:t,y:i,type:"128",height:s})}code39(e,t=0,i=0,s=50){return this.barcode(e,{x:t,y:i,type:"39",height:s,checkDigit:"Y"})}ean13(e,t=0,i=0,s=50){return this.barcode(e,{x:t,y:i,type:"EAN13",height:s})}qrcode(e,t){const{x:i=0,y:s=0,model:r=2,magnification:n=4,errorCorrection:o="M"}=t||{},a=1===r?"1":"2";return this.commands.push(`^FO${i},${s}^BQN,${a},${n}^FD${o},${this.escapeField(e)}^FS`),this}box(e){const{x:t=0,y:i=0,width:s,height:r,borderThickness:n=2,cornerRounding:o=0}=e;return this.commands.push(`^FO${t},${i}^GB${s},${r},${n},${o}^FS`),this}line(e,t,i,s,r=2){const n=Math.abs(i-e)||r,o=Math.abs(s-t)||r,a=Math.min(e,i),h=Math.min(t,s);return this.commands.push(`^FO${a},${h}^GB${n},${o},${r}^FS`),this}circle(e,t,i,s=2){return this.commands.push(`^FO${e},${t}^GC${i},${s}^FS`),this}diagonal(e,t,i,s,r=2){return this.commands.push(`^FO${e},${t}^GD${i},${s},${r}^FS`),this}ellipse(e,t,i,s,r=2){return this.commands.push(`^FO${e},${t}^GE${i},${s},${r}^FS`),this}image(e,t,i,s,r){return this.logger.debug("ZPL image encoding not fully implemented"),this}setDarkness(e=15){return this.commands.push("~SD"+Math.min(30,Math.max(0,Math.floor(e)))),this}setSpeed(e){const t=Math.min(14,Math.max(1,Math.floor(e)));return this.commands.push("^PR"+t),this}printConfigLabel(){return this.commands.push("~WC"),this}calibrate(){return this.commands.push("~JC"),this}reset(){return this.commands.push("^JUS"),this}getCommands(){var e,t;return(null==(e=this.commands[0])?void 0:e.startsWith("^XA"))||this.startFormat(),(null==(t=this.commands[this.commands.length-1])?void 0:t.startsWith("^XZ"))||this.endFormat(),this.commands.join("\n")}getBuffer(){const e=this.getCommands();return this.logger.debug("ZPL commands:\n"+e),X.encode(e,"UTF-8")}getCommandList(){return[...this.commands]}resetCommands(){return this.commands=[],this.startFormat(),this}print(e=1){return this.quantity(e),this.endFormat(),this}escapeField(e){return e.replace(/\\/g,"\\\\").replace(/\^/g,"\\^").replace(/~/g,"\\~")}},e.createLoggingPlugin=e=>{var t,i,s;const r={level:null!=(t=null==e?void 0:e.level)?t:f.DEBUG,timestamps:null==(i=null==e?void 0:e.timestamps)||i,logProgress:null!=(s=null==e?void 0:e.logProgress)&&s},n=m.scope("PrinterLog");let o;const a=()=>r.timestamps?`[${(new Date).toISOString()}] `:"";return{name:"logging",version:"1.0.0",description:"Detailed logging for printer operations",hooks:{beforeConnect:e=>{o=Date.now(),n.info(`${a()}Connecting to device: ${e}`)},afterConnect:e=>{const t=Date.now()-o;n.info(`${a()}Connected to ${e} (${t}ms)`)},beforeDisconnect:e=>{n.info(`${a()}Disconnecting from: ${e}`)},afterDisconnect:e=>{n.info(`${a()}Disconnected from: ${e}`)},beforePrint:e=>{o=Date.now(),n.info(`${a()}Starting print job: ${e.length} bytes`)},afterPrint:e=>{const t=Date.now()-o,i=(e/t*1e3).toFixed(2);n.info(`${a()}Print complete: ${e} bytes in ${t}ms (${i} B/s)`)},onError:e=>(n.error(`${a()}Error [${e.code}]: ${e.message}`),!1),onStateChange:(e,t)=>{n.debug(`${a()}State: ${t} \u2192 ${e}`)},onProgress:(e,t)=>{if(r.logProgress){const i=(e/t*100).toFixed(1);n.debug(`${a()}Progress: ${e}/${t} (${i}%)`)}}},init:()=>{m.setLevel(r.level),n.info("Logging plugin initialized")},destroy:()=>{n.info("Logging plugin destroyed")}}},e.createRetryPlugin=e=>{var t,i,s,r,n;const o={maxRetries:null!=(t=null==e?void 0:e.maxRetries)?t:3,initialDelay:null!=(i=null==e?void 0:e.initialDelay)?i:1e3,maxDelay:null!=(s=null==e?void 0:e.maxDelay)?s:1e4,backoffMultiplier:null!=(r=null==e?void 0:e.backoffMultiplier)?r:2,retryableErrors:null!=(n=null==e?void 0:e.retryableErrors)?n:[b.CONNECTION_FAILED,b.CONNECTION_TIMEOUT,b.WRITE_FAILED,b.WRITE_TIMEOUT]},a=m.scope("RetryPlugin");let h=0,c=o.initialDelay;return{name:"retry",version:"1.0.0",description:"Automatic retry with exponential backoff",hooks:{beforeConnect:()=>{h=0,c=o.initialDelay},beforePrint:()=>{h=0,c=o.initialDelay},onError:e=>u(null,null,function*(){return(e=>h<o.maxRetries&&o.retryableErrors.includes(e.code))(e)?(h++,a.warn(`Retryable error occurred (attempt ${h}/${o.maxRetries}): ${e.code}`),a.info(`Waiting ${c}ms before retry...`),yield(t=c,new Promise(e=>setTimeout(e,t))),c=Math.min(c*o.backoffMultiplier,o.maxDelay),!1):(h>0&&a.error(`Failed after ${h} retries: ${e.code} - ${e.message}`),!1);var t})},init:()=>{a.info(`Retry plugin initialized (max: ${o.maxRetries}, delay: ${o.initialDelay}ms)`)}}},e.detectPlatform=O,e.isPlatformSupported=function(){const e=O();return"unknown"!==e&&"web"!==e},e.mergeConfig=function(e,t){return{adapter:l(l(l({},Ee.adapter),e.adapter),t.adapter),driver:l(l(l({},Ee.driver),e.driver),t.driver),logging:l(l(l({},Ee.logging),e.logging),t.logging)}},Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@tarojs/taro")):"function"==typeof define&&define.amd?define(["exports","@tarojs/taro"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).TaroBluePrint={},e.Taro)}(this,function(e,t){"use strict";var i=Object.defineProperty,r=Object.defineProperties,s=Object.getOwnPropertyDescriptors,n=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable,c=Math.pow,h=(e,t,r)=>t in e?i(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,l=(e,t)=>{for(var i in t||(t={}))o.call(t,i)&&h(e,i,t[i]);if(n)for(var i of n(t))a.call(t,i)&&h(e,i,t[i]);return e},d=(e,t)=>r(e,s(t)),u=(e,t,i)=>new Promise((r,s)=>{var n=e=>{try{a(i.next(e))}catch(t){s(t)}},o=e=>{try{a(i.throw(e))}catch(t){s(t)}},a=e=>e.done?r(e.value):Promise.resolve(e.value).then(n,o);a((i=i.apply(e,t)).next())}),g=(e=>(e.DISCONNECTED="disconnected",e.CONNECTING="connecting",e.CONNECTED="connected",e.DISCONNECTING="disconnecting",e.PRINTING="printing",e.PAUSED="paused",e))(g||{}),f=(e=>(e[e.DEBUG=0]="DEBUG",e[e.INFO=1]="INFO",e[e.WARN=2]="WARN",e[e.ERROR=3]="ERROR",e[e.NONE=4]="NONE",e))(f||{});const p=class e{static configure(e){this.config=l(l({},this.config),e)}static setLevel(e){this.config.level=e}static getLevel(){return this.config.level}static formatPrefix(e,t){return`${t?`${this.config.prefix}:${t}`:this.config.prefix} [${{0:"DEBUG",1:"INFO",2:"WARN",3:"ERROR",4:"NONE"}[e]}]`}static formatMessage(e,t,i){return`${this.formatPrefix(e,i)} ${t}`}static log(e,t,i,r){if(this.config.level>e)return;this.formatPrefix(e,r);const s=this.formatMessage(e,t,r),n={level:e,message:t,args:i,timestamp:new Date,scope:r,formatted:s};this.config.handler&&this.config.handler(n)}static debug(e,...t){this.log(0,e,t)}static info(e,...t){this.log(1,e,t)}static warn(e,...t){this.log(2,e,t)}static error(e,...t){this.log(3,e,t)}static scope(t){return{debug:(i,...r)=>{e.log(0,i,r,t)},info:(i,...r)=>{e.log(1,i,r,t)},warn:(i,...r)=>{e.log(2,i,r,t)},error:(i,...r)=>{e.log(3,i,r,t)}}}};p.config={level:2,prefix:"[TaroBTPrint]"};let m=p;class b{constructor(){this.listeners=new Map,this.debugMode=!1,this.logger=m.scope("EventEmitter")}on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),this.debugMode&&this.logger.debug(`EventEmitter: Added listener for "${e+""}"`,{listenerCount:this.listenerCount(e)}),()=>this.off(e,t)}once(e,t){const i=r=>{t(r),this.off(e,i)};return this.on(e,i)}prepend(e,t){this.listeners.has(e)||this.listeners.set(e,new Set);const i=this.listeners.get(e),r=new Set;return r.add(t),i.forEach(e=>r.add(e)),this.listeners.set(e,r),this.debugMode&&this.logger.debug(`EventEmitter: Prepend listener for "${e+""}"`,{listenerCount:this.listenerCount(e)}),()=>this.off(e,t)}prependOnce(e,t){const i=r=>{t(r),this.off(e,i)};return this.prepend(e,i)}off(e,t){const i=this.listeners.get(e);i&&(i.delete(t),this.debugMode&&this.logger.debug(`EventEmitter: Removed listener for "${e+""}"`,{listenerCount:i.size}),0===i.size&&(this.listeners.delete(e),this.debugMode&&this.logger.debug(`EventEmitter: Removed event "${e+""}" (no more listeners)`)))}emit(e,...t){const i=t[0];this.debugMode&&this.logger.debug(`EventEmitter: Emitting "${e+""}"`,{data:i,listenerCount:this.listenerCount(e)});const r=this.listeners.get(e);if(!r||0===r.size)return;const s=new Set(r),n=Array.from(s);for(let a=0;a<n.length;a++){const t=n[a];if("function"==typeof t)try{null==i?t():t(i)}catch(o){this.logger.error(`Error in event handler for "${e+""}":`,o)}}}emitAsync(e,...t){return u(this,null,function*(){const i=t[0];this.debugMode&&this.logger.debug(`EventEmitter: Emitting async "${e+""}"`,{data:i,listenerCount:this.listenerCount(e)});const r=this.listeners.get(e);if(!r||0===r.size)return;const s=new Set(r),n=[];s.forEach(t=>{n.push((()=>u(this,null,function*(){try{let e;e=null==i?t():t(i),e instanceof Promise&&(yield e)}catch(r){this.logger.error(`Error in event handler for "${e+""}":`,r)}}))())}),yield Promise.all(n),this.debugMode&&this.logger.debug(`EventEmitter: Finished emitting async "${e+""}"`)})}removeAllListeners(e){if(e){const t=this.listenerCount(e);this.listeners.delete(e),this.debugMode&&this.logger.debug(`EventEmitter: Removed all ${t} listeners for "${e+""}"`)}else{const e=this.listeners.size;this.listeners.clear(),this.debugMode&&this.logger.debug(`EventEmitter: Removed all ${e} events and their listeners`)}}listenerCount(e){var t,i;return null!=(i=null==(t=this.listeners.get(e))?void 0:t.size)?i:0}getListeners(e){const t=this.listeners.get(e);return t?Array.from(t):[]}eventNames(){return Array.from(this.listeners.keys())}hasListeners(e){return this.listenerCount(e)>0}setDebugMode(e){this.debugMode=e,this.logger.debug("EventEmitter: Debug mode "+(e?"enabled":"disabled"))}isDebugMode(){return this.debugMode}getTotalEvents(){return this.listeners.size}getTotalListeners(){let e=0;for(const t of this.listeners.values())e+=t.size;return e}reset(){this.removeAllListeners(),this.debugMode=!1}}var v=(e=>(e.CONNECTION_FAILED="CONNECTION_FAILED",e.CONNECTION_TIMEOUT="CONNECTION_TIMEOUT",e.DEVICE_NOT_FOUND="DEVICE_NOT_FOUND",e.DEVICE_DISCONNECTED="DEVICE_DISCONNECTED",e.SERVICE_NOT_FOUND="SERVICE_NOT_FOUND",e.CHARACTERISTIC_NOT_FOUND="CHARACTERISTIC_NOT_FOUND",e.SERVICE_DISCOVERY_FAILED="SERVICE_DISCOVERY_FAILED",e.WRITE_FAILED="WRITE_FAILED",e.WRITE_TIMEOUT="WRITE_TIMEOUT",e.PRINT_JOB_IN_PROGRESS="PRINT_JOB_IN_PROGRESS",e.PRINT_JOB_CANCELLED="PRINT_JOB_CANCELLED",e.PRINT_JOB_FAILED="PRINT_JOB_FAILED",e.INVALID_CONFIGURATION="INVALID_CONFIGURATION",e.ENCODING_NOT_SUPPORTED="ENCODING_NOT_SUPPORTED",e.INVALID_IMAGE_DATA="INVALID_IMAGE_DATA",e.INVALID_QR_DATA="INVALID_QR_DATA",e.PLATFORM_NOT_SUPPORTED="PLATFORM_NOT_SUPPORTED",e))(v||{});class y extends Error{constructor(e,t,i){super(t),this.code=e,this.originalError=i,this.name="BluetoothPrintError",Error.captureStackTrace&&Error.captureStackTrace(this,y)}toString(){let e=`${this.name} [${this.code}]: ${this.message}`;return this.originalError&&(e+="\nCaused by: "+this.originalError.message,this.originalError.stack&&(e+="\n"+this.originalError.stack)),this.stack&&(e+="\n"+this.stack),e}toJSON(){return{name:this.name,code:this.code,message:this.message,stack:this.stack,originalError:this.originalError?{name:this.originalError.name,message:this.originalError.message,stack:this.originalError.stack}:void 0}}}class E{constructor(){this.serviceCache=new Map,this.logger=m.scope("BaseAdapter")}onStateChange(e){this.stateCallback=e}updateState(e){this.stateCallback&&this.stateCallback(e)}validateDeviceId(e){if(!e||"string"!=typeof e)throw new y(v.DEVICE_NOT_FOUND,"Invalid device ID provided")}validateBuffer(e){if(!(e&&e instanceof ArrayBuffer))throw new y(v.PRINT_JOB_FAILED,"Invalid buffer data provided")}validateOptions(e){var t,i,r;return{chunkSize:Math.max(1,Math.min(256,null!=(t=null==e?void 0:e.chunkSize)?t:20)),delay:Math.max(10,Math.min(100,null!=(i=null==e?void 0:e.delay)?i:20)),retries:Math.max(1,Math.min(10,null!=(r=null==e?void 0:e.retries)?r:3))}}getServiceInfo(e){const t=this.serviceCache.get(e);if(!t)throw new y(v.SERVICE_NOT_FOUND,"Device not connected or services not discovered. Call connect() first.");return t}isDeviceConnected(e){return this.serviceCache.has(e)}cleanupDevice(e){this.serviceCache.delete(e)}}class C extends E{connect(e){return u(this,null,function*(){if(this.validateDeviceId(e),this.isDeviceConnected(e))return this.logger.warn("Device already connected:",e),void this.updateState(g.CONNECTED);this.updateState(g.CONNECTING),this.logger.debug("Connecting to device:",e);try{let t;const i=this.getApi().createBLEConnection({deviceId:e}),r=new Promise((e,i)=>{t=setTimeout(()=>{i(Error("Connection timeout after 10 seconds"))},1e4)});yield Promise.race([i,r]),t&&clearTimeout(t),this.logger.info("BLE connection established"),yield this.discoverServices(e),this.updateState(g.CONNECTED),this.logger.info("Device connected successfully"),this.getApi().onBLEConnectionStateChange(t=>{t.deviceId!==e||t.connected||(this.logger.warn("Device disconnected unexpectedly"),this.updateState(g.DISCONNECTED),this.cleanupDevice(e))})}catch(t){this.updateState(g.DISCONNECTED),this.logger.error("Connection failed:",t);const i=t.message||"";if(i.includes("timeout"))throw new y(v.CONNECTION_TIMEOUT,`Connection to device ${e} timed out`,t);if(i.includes("not found"))throw new y(v.DEVICE_NOT_FOUND,`Device ${e} not found`,t);throw new y(v.CONNECTION_FAILED,"Failed to connect to device "+e,t)}})}disconnect(e){return u(this,null,function*(){this.validateDeviceId(e),this.updateState(g.DISCONNECTING),this.logger.debug("Disconnecting from device:",e);try{yield this.getApi().closeBLEConnection({deviceId:e}),this.cleanupDevice(e),this.updateState(g.DISCONNECTED),this.logger.info("Device disconnected successfully")}catch(t){this.logger.warn("Disconnect error (ignored):",t),this.cleanupDevice(e),this.updateState(g.DISCONNECTED)}})}write(e,t,i){return u(this,null,function*(){this.validateDeviceId(e),this.validateBuffer(t);const r=this.getServiceInfo(e),s=this.validateOptions(i);yield this.checkConnectionState(e);let{chunkSize:n}=s;const{delay:o,retries:a}=s,c=new Uint8Array(t);let h=Math.ceil(c.length/n);if(this.logger.debug(`Writing ${c.length} bytes in ${h} chunks`),0===c.length)return void this.logger.warn("No data to write");let l=0,d=0,u=o;for(let t=0;t<c.length;t+=n){t>0&&Math.floor(t/n)%5==0&&(yield this.checkConnectionState(e));const i=c.slice(t,t+n),o=Math.floor(t/n)+1;let f=0,p=!1;for(;a>=f;)try{const t=Math.max(1e3,Math.min(1e4,1e3+5*i.length)),s=this.getApi().writeBLECharacteristicValue({deviceId:e,serviceId:r.serviceId,characteristicId:r.characteristicId,value:i.buffer}),n=new Promise((e,i)=>{setTimeout(()=>{i(Error(`Write timeout after ${t} milliseconds`))},t)});yield Promise.race([s,n]),this.logger.debug(`Chunk ${o}/${h} written successfully`),p=!0;break}catch(g){if(f++,f>a)throw this.logger.error(`Chunk ${o} failed after ${a} retries`),new y(v.WRITE_FAILED,`Failed to write chunk ${o}/${h}`,g);this.logger.warn(`Chunk ${o} write failed, retry ${f}/${a}`);const e=u*Math.pow(2,f-1);yield new Promise(t=>setTimeout(t,Math.min(e,200)))}p?(l++,d=0,l%3==0&&256>n&&(n=Math.min(256,n+5),u=Math.max(u/1.2,s.delay),h=Math.ceil((c.length-t-n)/n)+o,this.logger.debug(`Increased chunk size to ${n}, delay to ${u}`))):(d++,l=Math.max(0,l-1),d>=2&&n>10&&(n=Math.max(10,n-5),u=Math.min(1.5*u,200),h=Math.ceil((c.length-t-n)/n)+o,this.logger.debug(`Decreased chunk size to ${n}, delay to ${u}`),d=0)),t+n<c.length&&(yield new Promise(e=>setTimeout(e,u)))}this.logger.info(`Successfully wrote ${c.length} bytes`)})}checkConnectionState(e){return u(this,null,function*(){try{if(!(yield this.getApi().getBLEConnectionState({deviceId:e})).connected)throw this.cleanupDevice(e),new y(v.DEVICE_DISCONNECTED,"Device disconnected")}catch(t){if(t instanceof y)throw t;throw this.cleanupDevice(e),new y(v.DEVICE_DISCONNECTED,"Device disconnected",t)}})}discoverServices(e){return u(this,null,function*(){this.logger.debug("Discovering services for device:",e);try{const t=yield this.getApi().getBLEDeviceServices({deviceId:e});for(const i of t.services){const t=(yield this.getApi().getBLEDeviceCharacteristics({deviceId:e,serviceId:i.uuid})).characteristics.find(e=>e.properties.write||e.properties.writeWithoutResponse);if(t)return this.serviceCache.set(e,{serviceId:i.uuid,characteristicId:t.uuid}),void this.logger.info("Found writeable characteristic:",{service:i.uuid,characteristic:t.uuid})}throw new y(v.CHARACTERISTIC_NOT_FOUND,"No writeable characteristic found. Make sure the device is a supported printer.")}catch(t){if(t instanceof y)throw t;throw new y(v.SERVICE_DISCOVERY_FAILED,"Failed to discover device services",t)}})}}class I extends C{getApi(){return Taro}}class S extends C{getApi(){return my}}class D extends C{getApi(){return swan}}class w extends C{getApi(){return tt}}const A=["000018f0-0000-1000-8000-00805f9b34fb","49535343-fe7d-4ae5-8fa9-9fafd205e455","e7810a71-73ae-499d-8c15-faa9aef0c3f2"];class $ extends E{constructor(){super(...arguments),this.devices=new Map}static isSupported(){return"undefined"!=typeof navigator&&void 0!==navigator.bluetooth&&"function"==typeof navigator.bluetooth.requestDevice}requestDevice(e){return u(this,null,function*(){if(!$.isSupported())throw new y(v.PLATFORM_NOT_SUPPORTED,"Web Bluetooth API is not supported in this browser");this.logger.debug("Requesting Bluetooth device");try{const t=this.buildRequestOptions(e),i=yield navigator.bluetooth.requestDevice(t);return this.logger.info("Device selected:",i.name||i.id),i}catch(t){const e=t.message||"";if(e.includes("cancelled")||e.includes("canceled"))throw new y(v.CONNECTION_FAILED,"User cancelled device selection");if(e.includes("permission")||e.includes("denied"))throw new y(v.CONNECTION_FAILED,"Bluetooth permission denied");throw new y(v.CONNECTION_FAILED,"Failed to request Bluetooth device",t)}})}connect(e){return u(this,null,function*(){var t;if(this.validateDeviceId(e),this.devices.has(e))return this.logger.warn("Device already connected:",e),void this.updateState(g.CONNECTED);this.updateState(g.CONNECTING),this.logger.debug("Connecting to device:",e);try{const i=yield this.getOrRequestDevice(e);if(!i.gatt)throw new y(v.CONNECTION_FAILED,"Device does not support GATT");const r=yield this.connectWithTimeout(i.gatt,1e4);this.logger.info("GATT server connected");const s=yield this.discoverWriteableCharacteristic(r);this.devices.set(e,{device:i,server:r,characteristic:s}),this.serviceCache.set(e,{serviceId:(null==(t=s.service)?void 0:t.uuid)||"",characteristicId:s.uuid}),i.addEventListener("gattserverdisconnected",()=>{this.handleDisconnection(e)}),this.updateState(g.CONNECTED),this.logger.info("Device connected successfully")}catch(i){if(this.updateState(g.DISCONNECTED),this.logger.error("Connection failed:",i),i instanceof y)throw i;if((i.message||"").includes("timeout"))throw new y(v.CONNECTION_TIMEOUT,`Connection to device ${e} timed out`,i);throw new y(v.CONNECTION_FAILED,"Failed to connect to device "+e,i)}})}disconnect(e){var t;this.validateDeviceId(e),this.updateState(g.DISCONNECTING),this.logger.debug("Disconnecting from device:",e);try{const i=this.devices.get(e);(null==(t=null==i?void 0:i.server)?void 0:t.connected)&&i.server.disconnect()}catch(i){this.logger.warn("Disconnect error (ignored):",i)}finally{this.cleanupDeviceInfo(e),this.updateState(g.DISCONNECTED),this.logger.info("Device disconnected successfully")}return Promise.resolve()}write(e,t,i){return u(this,null,function*(){this.validateDeviceId(e),this.validateBuffer(t);const r=this.devices.get(e);if(!r)throw new y(v.DEVICE_DISCONNECTED,"Device not connected. Call connect() first.");if(!r.server.connected)throw this.cleanupDeviceInfo(e),new y(v.DEVICE_DISCONNECTED,"Device disconnected");const s=this.validateOptions(i),{chunkSize:n,delay:o,retries:a}=s,c=new Uint8Array(t),h=Math.ceil(c.length/n);if(this.logger.debug(`Writing ${c.length} bytes in ${h} chunks`),0!==c.length){for(let t=0;t<c.length;t+=n){const i=c.slice(t,t+n),s=Math.floor(t/n)+1;let d=0;for(;a>=d;)try{if(!r.server.connected)throw this.cleanupDeviceInfo(e),new y(v.DEVICE_DISCONNECTED,"Device disconnected");yield r.characteristic.writeValueWithoutResponse(i.buffer),this.logger.debug(`Chunk ${s}/${h} written successfully`);break}catch(l){if(d++,d>a)throw this.logger.error(`Chunk ${s} failed after ${a} retries`),new y(v.WRITE_FAILED,`Failed to write chunk ${s}/${h}`,l);this.logger.warn(`Chunk ${s} write failed, retry ${d}/${a}`),yield new Promise(e=>setTimeout(e,o*d))}t+n<c.length&&(yield new Promise(e=>setTimeout(e,o)))}this.logger.info(`Successfully wrote ${c.length} bytes`)}else this.logger.warn("No data to write")})}buildRequestOptions(e){var t;if(null==e?void 0:e.acceptAllDevices)return{acceptAllDevices:!0,optionalServices:e.optionalServices||A};const i=[];return(null==(t=null==e?void 0:e.serviceUUIDs)?void 0:t.length)&&i.push({services:e.serviceUUIDs}),(null==e?void 0:e.namePrefix)&&i.push({namePrefix:e.namePrefix}),0===i.length?{acceptAllDevices:!0,optionalServices:A}:{filters:i,optionalServices:(null==e?void 0:e.optionalServices)||A}}getOrRequestDevice(e){return u(this,null,function*(){const t=this.devices.get(e);return(null==t?void 0:t.device)?t.device:this.requestDevice()})}connectWithTimeout(e,t){return u(this,null,function*(){return new Promise((i,r)=>{const s=setTimeout(()=>{r(Error("Connection timeout"))},t);e.connect().then(e=>{clearTimeout(s),i(e)}).catch(e=>{clearTimeout(s),r(e instanceof Error?e:Error(e+""))})})})}discoverWriteableCharacteristic(e){return u(this,null,function*(){this.logger.debug("Discovering services");try{const i=yield e.getPrimaryServices();for(const e of i)try{const t=yield e.getCharacteristics();for(const i of t)if(i.properties.write||i.properties.writeWithoutResponse)return this.logger.info("Found writeable characteristic:",{service:e.uuid,characteristic:i.uuid}),i}catch(t){this.logger.debug(`Failed to get characteristics for service ${e.uuid}:`,t)}throw new y(v.CHARACTERISTIC_NOT_FOUND,"No writeable characteristic found. Make sure the device is a supported printer.")}catch(t){if(t instanceof y)throw t;throw new y(v.SERVICE_DISCOVERY_FAILED,"Failed to discover device services",t)}})}handleDisconnection(e){this.logger.warn("Device disconnected unexpectedly:",e),this.cleanupDeviceInfo(e),this.updateState(g.DISCONNECTED)}cleanupDeviceInfo(e){this.devices.delete(e),this.cleanupDevice(e)}}var T=(e=>(e.WECHAT="wechat",e.ALIPAY="alipay",e.BAIDU="baidu",e.BYTEDANCE="bytedance",e.WEB="web",e.UNKNOWN="unknown",e))(T||{});function N(e){return"object"==typeof e&&null!==e&&"request"in e}function P(){return"undefined"!=typeof wx&&N(wx)?"wechat":"undefined"!=typeof my&&N(my)?"alipay":"undefined"!=typeof swan&&N(swan)?"baidu":"undefined"!=typeof tt&&N(tt)?"bytedance":"undefined"!=typeof window&&"object"==typeof(e=window)&&null!==e&&"navigator"in e?"web":"unknown";var e}class O{static create(){const e=P();switch(e){case T.WECHAT:return new I;case T.ALIPAY:return new S;case T.BAIDU:return new D;case T.BYTEDANCE:return new w;case T.WEB:if($.isSupported())return new $;throw new y(v.PLATFORM_NOT_SUPPORTED,"Web Bluetooth API is not supported in this browser. Please use a supported browser (Chrome, Edge, Opera).");default:throw new y(v.PLATFORM_NOT_SUPPORTED,`Platform ${e} is not supported. Please use a supported mini-program platform.`)}}static createForPlatform(e){switch(e){case T.WECHAT:return new I;case T.ALIPAY:return new S;case T.BAIDU:return new D;case T.BYTEDANCE:return new w;case T.WEB:if($.isSupported())return new $;throw new y(v.PLATFORM_NOT_SUPPORTED,"Web Bluetooth API is not supported in this browser.");default:throw new y(v.PLATFORM_NOT_SUPPORTED,`Platform ${e} is not supported.`)}}}const x={heartbeatEnabled:!0,heartbeatInterval:5e3,autoReconnect:!0,maxReconnectAttempts:3,reconnectInterval:2e3,connectionTimeout:1e4};class R extends b{constructor(e,t){var i,r;super(),this.deviceId=null,this.state=g.DISCONNECTED,this.connLogger=m.scope("ConnectionManager"),this.heartbeatTimer=null,this.reconnectAttempts=0,this.isReconnecting=!1,this.reconnectTimer=null,this.adapter=e||O.create(),this.config=l(l({},x),t),null==(r=(i=this.adapter).onStateChange)||r.call(i,e=>{this.handleStateChange(e)})}handleStateChange(e){const t=this.state;this.state=e,this.connLogger.debug("State changed:",{from:t,to:e}),this.emit("state-change",e),t===g.CONNECTED&&e===g.DISCONNECTED&&this.deviceId&&!this.isReconnecting&&(this.connLogger.warn("Unexpected disconnection detected"),this.emit("disconnected",this.deviceId),this.stopHeartbeat(),this.config.autoReconnect&&this.startReconnect())}connect(e,t){return u(this,null,function*(){this.connLogger.info("Connecting to device:",e);const{retries:i=0,timeout:r=this.config.connectionTimeout}=t||{};let s=0;for(this.reconnectAttempts=0,this.isReconnecting=!1,this.clearReconnectTimer();i>=s;)try{this.deviceId=e,this.state=g.CONNECTING,this.emit("state-change",g.CONNECTING);const t=this.adapter.connect(e),i=new Promise((t,i)=>{setTimeout(()=>{i(new y(v.CONNECTION_TIMEOUT,`Connection to device ${e} timed out after ${r}ms`))},r)});return yield Promise.race([t,i]),this.state=g.CONNECTED,this.emit("state-change",g.CONNECTED),this.emit("connected",e),this.connLogger.info("Connected successfully"),void(this.config.heartbeatEnabled&&this.startHeartbeat())}catch(n){if(s++,s>i){this.deviceId=null,this.state=g.DISCONNECTED,this.emit("state-change",g.DISCONNECTED);const e=n instanceof y?n:new y(v.CONNECTION_FAILED,`Connection failed after ${s} attempts`,n);throw this.connLogger.error("Connection failed:",e),this.emit("error",e),e}this.connLogger.warn(`Connection attempt ${s}/${i} failed, retrying...`,n),yield new Promise(e=>setTimeout(e,1e3))}})}disconnect(){return u(this,null,function*(){if(this.stopHeartbeat(),this.clearReconnectTimer(),this.isReconnecting=!1,!this.deviceId)return void this.connLogger.warn("Disconnect called but no device connected");const e=this.deviceId;this.connLogger.info("Disconnecting from device:",e);try{yield this.adapter.disconnect(e),this.deviceId=null,this.state=g.DISCONNECTED,this.emit("state-change",g.DISCONNECTED),this.emit("disconnected",e),this.connLogger.info("Disconnected successfully")}catch(t){const e=new y(v.DEVICE_DISCONNECTED,"Disconnect failed",t);throw this.connLogger.error("Disconnect failed:",e),this.emit("error",e),e}})}startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval(()=>{this.checkHeartbeat()},this.config.heartbeatInterval),this.connLogger.debug("Heartbeat started with interval:",this.config.heartbeatInterval)}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null,this.connLogger.debug("Heartbeat stopped"))}checkHeartbeat(){if(this.deviceId&&this.state===g.CONNECTED)try{this.isConnected()?this.connLogger.debug("Heartbeat OK"):this.handleHeartbeatLost()}catch(e){this.connLogger.warn("Heartbeat check failed:",e),this.handleHeartbeatLost()}}handleHeartbeatLost(){this.deviceId&&(this.connLogger.warn("Heartbeat lost for device:",this.deviceId),this.emit("heartbeat-lost",this.deviceId),this.stopHeartbeat(),this.state=g.DISCONNECTED,this.emit("state-change",g.DISCONNECTED),this.emit("disconnected",this.deviceId),this.config.autoReconnect&&!this.isReconnecting&&this.startReconnect())}startReconnect(){this.deviceId&&!this.isReconnecting&&(this.isReconnecting=!0,this.reconnectAttempts=0,this.attemptReconnect())}attemptReconnect(){if(!this.deviceId)return void(this.isReconnecting=!1);this.reconnectAttempts++;const e=this.deviceId;if(this.reconnectAttempts>this.config.maxReconnectAttempts)return this.connLogger.error("Max reconnect attempts reached"),this.isReconnecting=!1,this.emit("reconnect-failed",{deviceId:e,error:new y(v.CONNECTION_FAILED,`Reconnection failed after ${this.config.maxReconnectAttempts} attempts`)}),void(this.deviceId=null);this.connLogger.info(`Reconnect attempt ${this.reconnectAttempts}/${this.config.maxReconnectAttempts}`),this.emit("reconnecting",{deviceId:e,attempt:this.reconnectAttempts,maxAttempts:this.config.maxReconnectAttempts}),this.state=g.CONNECTING,this.emit("state-change",g.CONNECTING),this.adapter.connect(e).then(()=>{this.connLogger.info("Reconnected successfully"),this.isReconnecting=!1,this.reconnectAttempts=0,this.state=g.CONNECTED,this.emit("state-change",g.CONNECTED),this.emit("reconnected",e),this.config.heartbeatEnabled&&this.startHeartbeat()}).catch(e=>{this.connLogger.warn(`Reconnect attempt ${this.reconnectAttempts} failed:`,e),this.reconnectTimer=setTimeout(()=>{this.attemptReconnect()},this.config.reconnectInterval)})}clearReconnectTimer(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null)}isConnected(){return this.state===g.CONNECTED}getDeviceId(){return this.deviceId}getState(){return this.state}getAdapter(){return this.adapter}getConfig(){return l({},this.config)}getReconnectStatus(){return{isReconnecting:this.isReconnecting,attempts:this.reconnectAttempts,maxAttempts:this.config.maxReconnectAttempts}}reconnect(){if(!this.deviceId)throw new y(v.DEVICE_NOT_FOUND,"No device to reconnect to");this.isReconnecting?this.connLogger.warn("Reconnect already in progress"):this.startReconnect()}stopReconnect(){this.clearReconnectTimer(),this.isReconnecting=!1,this.reconnectAttempts=0,this.connLogger.info("Reconnect stopped")}destroy(){this.stopHeartbeat(),this.clearReconnectTimer(),this.removeAllListeners(),this.deviceId=null,this.state=g.DISCONNECTED}}const M=class e{constructor(e){this.instanceJobStateStore=new Map,this.jobBuffer=null,this.jobOffset=0,this._isPaused=!1,this._isInProgress=!1,this.adapterOptions={},this.logger=m.scope("PrintJobManager"),this.jobId=null,this.connectionManager=e,"function"==typeof e.getAdapter?this.adapter=e.getAdapter():this.adapter={connect:()=>Promise.resolve(),disconnect:()=>Promise.resolve(),write:()=>Promise.resolve()}}static get jobStateStore(){return e._jobStateStore}setProgressCallback(e){this.onProgress=e}setJobStateCallback(e){this.onJobStateChange=e}start(e,t){return u(this,null,function*(){if(this._isInProgress)throw new y(v.PRINT_JOB_IN_PROGRESS,"A print job is already in progress. Wait for completion or cancel it.");this.jobId=(null==t?void 0:t.jobId)||this.generateJobId(),this.jobBuffer=e,this.jobOffset=0,this._isPaused=!1,this._isInProgress=!0,this.logger.info(`Starting print job ${this.jobId}: ${e.length} bytes`),this.emitJobState("in-progress");try{yield this.processJob(),this._isPaused?(this.logger.info(`Print job ${this.jobId} paused`),this.saveJobState()):(this.logger.info(`Print job ${this.jobId} completed successfully`),this._isInProgress=!1,this.clearJobState(),this.emitJobState("completed"))}catch(i){throw this.logger.error(`Print job ${this.jobId} failed:`,i),this._isInProgress=!1,this._isPaused?this.saveJobState():this.clearJobState(),i instanceof y?i:new y(v.PRINT_JOB_FAILED,"Print job failed",i)}})}resume(e){return u(this,null,function*(){if(!this._isInProgress||!this._isPaused){if(!e)return void this.logger.warn("Resume called but no paused print job");this.loadJobState(e)}this._isPaused=!1,this.logger.info("Resuming print job "+this.jobId),this.emitJobState("in-progress");try{yield this.processJob(),this._isPaused||(this.logger.info(`Print job ${this.jobId} completed successfully`),this._isInProgress=!1,this.clearJobState(),this.emitJobState("completed"))}catch(t){throw this.logger.error(`Print job ${this.jobId} failed after resume:`,t),this._isInProgress=!1,this.clearJobState(),this.emitJobState("cancelled"),t instanceof y?t:new y(v.PRINT_JOB_FAILED,"Print job failed",t)}})}cancel(){this._isInProgress?(this.logger.info("Cancelling print job "+this.jobId),this._isPaused=!1,this._isInProgress=!1,this.clearJobState(),this.emitJobState("cancelled"),this.logger.info(`Print job ${this.jobId} cancelled`)):this.logger.warn("Cancel called but no print job in progress")}generateJobId(){return`job-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}saveJobState(){if(this.jobBuffer&&this.jobId)try{const t={jobId:this.jobId,jobBuffer:Array.from(this.jobBuffer),jobOffset:this.jobOffset,adapterOptions:l({},this.adapterOptions),timestamp:Date.now()};this.instanceJobStateStore.set(this.jobId,t),e.jobStateStore.set(this.jobId,t),this.logger.debug(`Saved job state for ${this.jobId}: offset=${this.jobOffset}/${this.jobBuffer.length}`)}catch(t){this.logger.error(`Failed to save job state for ${this.jobId}:`,t)}}loadJobState(t){try{this.logger.debug("Loading job state for "+t);let i=this.instanceJobStateStore.get(t);if(i||(i=e.jobStateStore.get(t)),!i)throw Error("Job state not found for "+t);this.jobId=i.jobId,this.jobBuffer=new Uint8Array(i.jobBuffer),this.jobOffset=i.jobOffset,this.adapterOptions=l({},i.adapterOptions),this._isPaused=!0,this._isInProgress=!0,this.logger.info(`Loaded job ${this.jobId}: offset=${this.jobOffset}/${this.jobBuffer.length}`)}catch(i){throw this.logger.error(`Failed to load job state for ${t}:`,i),new y(v.PRINT_JOB_FAILED,"Failed to load job "+t,i)}}clearJobState(){this.jobId&&(this.logger.debug("Clearing job state for "+this.jobId),this.instanceJobStateStore.delete(this.jobId),e.jobStateStore.delete(this.jobId)),this.jobBuffer=null,this.jobOffset=0,this.jobId=null,this.adapterOptions={}}destroy(){this.cancel(),this.instanceJobStateStore.clear(),this.onProgress=void 0,this.onJobStateChange=void 0,this.logger.info("PrintJobManager destroyed")}static cleanupExpiredJobs(t=36e5){const i=Date.now();let r=0;for(const[s,n]of e.jobStateStore.entries())i-n.timestamp>t&&(e.jobStateStore.delete(s),r++);return r}static getStaticStoreSize(){return e.jobStateStore.size}emitJobState(e){this.onJobStateChange&&this.onJobStateChange(e)}pause(){this._isInProgress?(this._isPaused=!0,this.logger.info("Print job paused")):this.logger.warn("Pause called but no print job in progress")}remaining(){return this.jobBuffer?this.jobBuffer.length-this.jobOffset:0}isPaused(){return this._isPaused}isInProgress(){return this._isInProgress}setOptions(e){this.adapterOptions=l(l({},this.adapterOptions),e),this.logger.debug("Adapter options updated:",this.adapterOptions)}processJob(){return u(this,null,function*(){if(!this.jobBuffer)return;if(!this.adapter||"function"!=typeof this.adapter.write)throw new y(v.INVALID_CONFIGURATION,"Printer adapter does not support write operation");const{chunkSize:e=512}=this.adapterOptions,t=this.jobBuffer.length,i=this.jobBuffer,r=this.getDeviceId();try{for(;this.jobOffset<i.length;){if(this._isPaused)return void this.logger.debug("Job paused at offset:",this.jobOffset);const s=Math.min(this.jobOffset+e,i.length),n=i.slice(this.jobOffset,s);yield this.adapter.write(r,n.buffer,this.adapterOptions),this.jobOffset=s,this.logger.debug(`Processed ${this.jobOffset}/${t} bytes`),this.onProgress&&this.onProgress(this.jobOffset,t)}}catch(s){throw this.logger.error("Error processing job:",s),s}})}getDeviceId(){const e=this.connectionManager.getDeviceId();if(!e)throw new y(v.DEVICE_DISCONNECTED,"Device ID not available");return e}};M._jobStateStore=new Map;let B=M;const _=[19968,8140,20108,8249,19977,8377,22256,8859,20116,8290,20845,8467,19971,8271,20843,8465,20057,8293,21313,8405,21103,8387,20140,8266,19978,8378,20061,8297,19990,8306,20037,8333,20035,8331,20042,8338,20054,8342,20154,8278,20799,8607,21147,8389,21253,8469,21271,8487,21340,8437,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20877,8569,20004,8256,21069,8549,21129,8381,20011,8257,19981,8369,19980,8368,20820,8552,20836,8568,19976,8376,20301,8421,19985,8373,20063,8302,20195,8303,20309,8425,20320,8436,20375,8475,20445,8513,20446,8514,21040,8508,20687,8611,21306,8402,20307,8427,20241,8377,20107,8249,20225,8361,21888,8944,21912,8956,21247,8481,22825,9509,21490,8530,21543,8619,21548,8624,21589,8665,21595,8671,21628,8684,21632,8688,21647,8703,21672,8728,21710,8746,21733,8769,21736,8772,21769,8781,21809,8789,21834,8814,21916,8958,21930,8970,20045,8340,20043,8339,20053,8341,20064,8304,20102,8258,20114,8262,20117,8265,22806,9508,20845,8467,21253,8469,21280,8490,21453,8517,20184,8296,20237,8373,20426,8506,20596,8556,20351,8459,21069,8549,21407,8491,20813,8553,20167,8261,21475,8523,21147,8389,21512,8676,21246,8480,21313,8405,20320,8436,20013,8259,20057,8293,20985,8565,21253,8469,20171,8265,19968,8140,20309,8425,20102,8258,20845,8467,21040,8508,21069,8549,21129,8381,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,21246,8480,21512,8676,21733,8769,21888,8944,21912,8956,21916,8958,21930,8970,21834,8814,20195,8303,20006,8252,20004,8256,19979,8377,20351,8459,22825,9509,21033,8483,21247,8481,20132,8264,21453,8517,20986,8566,20154,8278,20204,8348,20055,8291,20221,8369,20307,8427,20185,8297,20311,8427,20046,8340,20381,8469,20018,8260,20173,8269,20167,8261,20843,8465,20979,8563,22806,9508,19977,8377,20108,8249,19971,8271,21103,8387,20061,8297,20114,8262,20845,8467,21253,8469,21313,8405,22825,9509,19968,8140,20116,8290,20057,8293,20140,8266,19978,8378,19990,8306,20154,8278,20799,8607,21147,8389,21271,8487,21340,8437,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,20195,8303,20004,8256,21069,8549,21129,8381,20011,8257,19981,8369,19980,8368,20820,8552,20836,8568,19976,8376,20301,8421,19985,8373,20063,8302,20195,8303,20309,8425,20320,8436,20375,8475,20445,8513,20446,8514,21040,8508,20687,8611,21306,8402,20307,8427,20241,8377,20107,8249,20225,8361,21888,8944,21912,8956,21247,8481,22825,9509,21490,8530,21543,8619,21548,8624,21589,8665,21595,8671,21628,8684,21632,8688,21647,8703,21672,8728,21710,8746,21733,8769,21736,8772,21769,8781,21809,8789,21834,8814,21916,8958,21930,8970,20045,8340,20043,8339,20053,8341,20064,8304,20102,8258,20114,8262,20117,8265,22806,9508,20845,8467,21253,8469,21280,8490,21453,8517,20184,8296,20237,8373,20426,8506,20596,8556,20351,8459,21069,8549,21407,8491,20813,8553,20167,8261,21475,8523,21147,8389,21512,8676,21246,8480,21313,8405,20320,8436,20013,8259,20057,8293,20985,8565,21253,8469,20171,8265,19968,8140,20309,8425,20102,8258,20845,8467,21040,8508,21069,8549,21129,8381,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,21246,8480,21512,8676,21733,8769,21888,8944,21912,8956,21916,8958,21930,8970,21834,8814,20195,8303,20006,8252,20004,8256,19979,8377,20351,8459,22825,9509,21033,8483,21247,8481,20132,8264,21453,8517,20986,8566,20154,8278,20204,8348,20055,8291,20221,8369,20307,8427,20185,8297,20311,8427,20046,8340,20381,8469,20018,8260,20173,8269,20167,8261,20843,8465,20979,8563,22806,9508,19977,8377,20108,8249,19971,8271,21103,8387,20061,8297,20114,8262,20845,8467,21253,8469,21313,8405,22825,9509,19968,8140,20116,8290,20057,8293,20140,8266,19978,8378,19990,8306,20154,8278,20799,8607,21147,8389,21271,8487,21340,8437,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,20195,8303,20004,8256,21069,8549,21129,8381,20011,8257,19981,8369,19980,8368,20820,8552,20836,8568,19976,8376,20301,8421,19985,8373,20063,8302,20195,8303,20309,8425,20320,8436,20375,8475,20445,8513,20446,8514,21040,8508,20687,8611,21306,8402,20307,8427,20241,8377,20107,8249,20225,8361,21888,8944,21912,8956,21247,8481,22825,9509,21490,8530,21543,8619,21548,8624,21589,8665,21595,8671,21628,8684,21632,8688,21647,8703,21672,8728,21710,8746,21733,8769,21736,8772,21769,8781,21809,8789,21834,8814,21916,8958,21930,8970,20045,8340,20043,8339,20053,8341,20064,8304,20102,8258,20114,8262,20117,8265,22806,9508,20845,8467,21253,8469,21280,8490,21453,8517,20184,8296,20237,8373,20426,8506,20596,8556,20351,8459,21069,8549,21407,8491,20813,8553,20167,8261,21475,8523,21147,8389,21512,8676,21246,8480,21313,8405,20320,8436,20013,8259,20057,8293,20985,8565,21253,8469,20171,8265,19968,8140,20309,8425,20102,8258,20845,8467,21040,8508,21069,8549,21129,8381,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,21246,8480,21512,8676,21733,8769,21888,8944,21912,8956,21916,8958,21930,8970,21834,8814,20195,8303,20006,8252,20004,8256,19979,8377,20351,8459,22825,9509,21033,8483,21247,8481,20132,8264,21453,8517,20986,8566,20154,8278,20204,8348,20055,8291,20221,8369,20307,8427,20185,8297,20311,8427,20046,8340,20381,8469,20018,8260,20173,8269,20167,8261,20843,8465,20979,8563,22806,9508,19977,8377,20108,8249,19971,8271,21103,8387,20061,8297,20114,8262,20845,8467,21253,8469,21313,8405,22825,9509,19968,8140,20116,8290,20057,8293,20140,8266,19978,8378,19990,8306,20154,8278,20799,8607,21147,8389,21271,8487,21340,8437,21414,8494,21442,8500,19975,8375,20184,8296,20210,8346,20237,8373,20301,8421,20877,8569,20195,8303,20004,8256,21069,8549,21129,8381,20011,8257,19981,8369,19980,8368,20820,8552,20836,8568,19976,8376,20301,8421,19985,8373,20063,8302,20195,8303,20309,8425,20320,8436,20375,8475,20445,8513,20446,8514,21040,8508,20687,8611,21306,8402,20307,8427,20241,8377,20107,8249,20225,8361,21888,8944,21912,8956,21247,8481,22825,9509,21490,8530,21543,8619,21548,8624,21589,8665,21595,8671,21628,8684,21632,8688,21647,8703,21672,8728,21710,8746,21733,8769,21736,8772,21769,8781,21809,8789,21834,8814,21916,8958,21930,8970,20045,8340,20043,8339,20053,8341,20064,8304,20102,8258,20114,8262,20117,8265,22806,9508,20845,8467,21253,8469,21280,8490,21453,8517,20184,8296,20237,8373,20426,8506,20596,8556,20351,8459,21069,8549,21407,8491,20813,8553,20167,8261,21475,8523,21147,8389,21512,8676,21246,8480,21313,8405,20320,8436,20013,8259,20057,8293,20985,8565,21253,8469,20171,8265],L=[19970,33088,19972,33089,19973,33090,19974,33091,19983,33092,19986,33093,19991,33094,19999,33095,2e4,33096,20001,33097,20003,33098,20006,33099,20009,33100,20014,33101,20015,33102,20017,33103,20019,33104,20021,33105,20023,33106,20028,33107,20032,33108,20033,33109,20034,33110,20036,33111,20038,33112,20042,33113,20049,33114,20053,33115,20055,33116,20058,33117,20059,33118,20066,33119,20067,33120,20068,33121,20069,33122,20071,33123,20072,33124,20074,33125,20075,33126,20076,33127,20077,33128,20078,33129,20079,33130,20082,33131,20084,33132,20085,33133,20086,33134,20087,33135,20088,33136,20089,33137,20090,33138,20091,33139,20092,33140,20093,33141,20095,33142,20096,33143,20097,33144,20098,33145,20099,33146,20100,33147,20101,33148,20103,33149,20106,33150,20112,33152,20118,33153,20119,33154,20121,33155,20124,33156,20125,33157,20126,33158,20131,33159,20138,33160,20143,33161,20144,33162,20145,33163,20148,33164,20150,33165,20151,33166,20152,33167,20153,33168,20156,33169,20157,33170,20158,33171,20168,33172,20172,33173,20175,33174,20176,33175,20178,33176,20186,33177,20187,33178,20188,33179,20192,33180,20194,33181,20198,33182,20199,33183,20201,33184,20205,33185,20206,33186,20207,33187,20209,33188,20212,33189,20216,33190,20217,33191,20218,33192,20220,33193,20222,33194,20224,33195,20226,33196,20227,33197,20228,33198,20229,33199,20230,33200,20231,33201,20232,33202,20235,33203,20236,33204,20242,33205,20243,33206,20244,33207,20245,33208,20246,33209,20252,33210,20253,33211,20257,33212,20259,33213,20264,33214,20265,33215,20268,33216,20269,33217,20270,33218,20273,33219,20275,33220,20277,33221,20279,33222,20281,33223,20283,33224,20286,33225,20287,33226,20288,33227,20289,33228,20290,33229,20292,33230,20293,33231,20295,33232,20296,33233,20297,33234,20298,33235,20299,33236,20300,33237,20306,33238,20308,33239,20310,33240,20321,33241,20322,33242,20326,33243,20328,33244,20330,33245,20331,33246,20333,33247,20334,33248,20337,33249,20338,33250,20341,33251,20343,33252,20344,33253,20345,33254,20346,33255,20349,33256,20352,33257,20353,33258,20354,33259,20357,33260,20358,33261,20359,33262,20362,33263,20364,33264,20366,33265,20368,33266,20370,33267,20371,33268,20373,33269,20374,33270,20376,33271,20377,33272,20378,33273,20380,33274,20382,33275,20383,33276,20385,33277,20386,33278,20388,33344,20395,33345,20397,33346,20400,33347,20401,33348,20402,33349,20403,33350,20404,33351,20406,33352,20407,33353,20408,33354,20409,33355,20410,33356,20411,33357,20412,33358,20413,33359,20414,33360,20416,33361,20417,33362,20418,33363,20422,33364,20423,33365,20424,33366,20425,33367,20427,33368,20428,33369,20429,33370,20434,33371,20435,33372,20436,33373,20437,33374,20438,33375,20441,33376,20443,33377,20448,33378,20450,33379,20452,33380,20453,33381,20455,33382,20459,33383,20460,33384,20464,33385,20466,33386,20468,33387,20469,33388,20470,33389,20471,33390,20473,33391,20475,33392,20476,33393,20477,33394,20479,33395,20480,33396,20481,33397,20482,33398,20483,33399,20484,33400,20485,33401,20486,33402,20487,33403,20488,33404,20489,33405,20490,33406,20491,33408,20494,33409,20496,33410,20497,33411,20499,33412,20501,33413,20502,33414,20503,33415,20507,33416,20509,33417,20510,33418,20512,33419,20514,33420,20515,33421,20516,33422,20519,33423,20523,33424,20527,33425,20528,33426,20529,33427,20530,33428,20531,33429,20532,33430,20533,33431,20534,33432,20535,33433,20536,33434,20537,33435,20539,33436,20541,33437,20543,33438,20544,33439,20545,33440,20546,33441,20548,33442,20549,33443,20550,33444,20553,33445,20554,33446,20555,33447,20557,33448,20560,33449,20561,33450,20562,33451,20563,33452,20564,33453,20566,33454,20567,33455,20568,33456,20569,33457,20571,33458,20573,33459,20574,33460,20575,33461,20576,33462,20577,33463,20578,33464,20579,33465,20580,33466,20582,33467,20583,33468,20584,33469,20585,33470,20586,33471,20587,33472,20589,33473,20590,33474,20591,33475,20592,33476,20593,33477,20594,33478,20595,33479,20596,33480,20597,33481,20600,33482,20601,33483,20602,33484,20604,33485,20605,33486,20609,33487,20610,33488,20611,33489,20612,33490,20614,33491,20615,33492,20617,33493,20618,33494,20619,33495,20620,33496,20622,33497,20623,33498,20624,33499,20625,33500,20626,33501,20627,33502,20628,33503,20629,33504,20630,33505,20631,33506,20632,33507,20633,33508,20634,33509,20635,33510,20636,33511,20637,33512,20638,33513,20639,33514,20640,33515,20641,33516,20642,33517,20644,33518,20646,33519,20650,33520,20651,33521,20653,33522,20654,33523,20655,33524,20656,33525,20657,33526,20659,33527,20660,33528,20661,33529,20662,33530,20663,33531,20664,33532,20665,33533,20668,33534,20669,33600,20670,33601,20671,33602,20672,33603,20673,33604,20674,33605,20675,33606,20676,33607,20677,33608,20678,33609,20679,33610,20680,33611,20681,33612,20682,33613,20683,33614,20684,33615,20685,33616,20686,33617,20688,33618,20689,33619,20690,33620,20691,33621,20692,33622,20693,33623,20695,33624,20696,33625,20697,33626,20699,33627,20700,33628,20701,33629,20702,33630,20703,33631,20704,33632,20705,33633,20706,33634,20707,33635,20708,33636,20709,33637,20712,33638,20713,33639,20714,33640,20715,33641,20719,33642,20720,33643,20721,33644,20722,33645,20724,33646,20726,33647,20727,33648,20728,33649,20729,33650,20730,33651,20732,33652,20733,33653,20734,33654,20735,33655,20736,33656,20737,33657,20738,33658,20739,33659,20740,33660,20741,33661,20744,33662,20745,33664,20746,33665,20748,33666,20749,33667,20750,33668,20751,33669,20752,33670,20753,33671,20755,33672,20756,33673,20757,33674,20758,33675,20759,33676,20760,33677,20761,33678,20762,33679,20763,33680,20764,33681,20765,33682,20766,33683,20767,33684,20768,33685,20770,33686,20771,33687,20772,33688,20773,33689,20774,33690,20775,33691,20776,33692,20777,33693,20778,33694,20779,33695,20780,33696,20781,33697,20782,33698,20783,33699,20784,33700,20785,33701,20786,33702,20787,33703,20788,33704,20789,33705,20790,33706,20791,33707,20792,33708,20793,33709,20794,33710,20795,33711,20796,33712,20797,33713,20798,33714,20802,33715,20807,33716,20810,33717,20812,33718,20814,33719,20815,33720,20816,33721,20818,33722,20819,33723,20823,33724,20824,33725,20825,33726,20827,33727,20829,33728,20830,33729,20831,33730,20832,33731,20833,33732,20835,33733,20836,33734,20838,33735,20839,33736,20841,33737,20842,33738,20847,33739,20850,33740,20858,33741,20862,33742,20863,33743,20867,33744,20868,33745,20870,33746,20871,33747,20874,33748,20875,33749,20878,33750,20879,33751,20880,33752,20881,33753,20883,33754,20884,33755,20888,33756,20890,33757,20893,33758,20894,33759,20895,33760,20897,33761,20899,33762,20902,33763,20903,33764,20904,33765,20905,33766,20906,33767,20909,33768,20910,33769,20916,33770,20920,33771,20921,33772,20922,33773,20926,33774,20927,33775,20929,33776,20930,33777,20931,33778,20933,33779,20936,33780,20938,33781,20941,33782,20942,33783,20944,33784,20946,33785,20947,33786,20948,33787,20949,33788,20950,33789,20951,33790,20952,33856,20953,33857,20954,33858,20956,33859,20958,33860,20959,33861,20962,33862,20963,33863,20965,33864,20966,33865,20967,33866,20968,33867,20969,33868,20970,33869,20972,33870,20974,33871,20977,33872,20978,33873,20980,33874,20983,33875,20990,33876,20996,33877,20997,33878,21001,33879,21003,33880,21004,33881,21007,33882,21008,33883,21011,33884,21012,33885,21013,33886,21020,33887,21022,33888,21023,33889,21025,33890,21026,33891,21027,33892,21029,33893,21030,33894,21031,33895,21034,33896,21036,33897,21039,33898,21041,33899,21042,33900,21044,33901,21045,33902,21052,33903,21054,33904,21060,33905,21061,33906,21062,33907,21063,33908,21064,33909,21065,33910,21067,33911,21070,33912,21071,33913,21074,33914,21075,33915,21077,33916,21079,33917,21080,33918,21081,33920,21082,33921,21083,33922,21085,33923,21087,33924,21088,33925,21090,33926,21091,33927,21092,33928,21094,33929,21096,33930,21099,33931,21100,33932,21101,33933,21102,33934,21104,33935,21105,33936,21107,33937,21108,33938,21109,33939,21110,33940,21111,33941,21112,33942,21113,33943,21114,33944,21115,33945,21116,33946,21118,33947,21120,33948,21123,33949,21124,33950,21125,33951,21126,33952,21127,33953,21129,33954,21130,33955,21131,33956,21132,33957,21133,33958,21134,33959,21135,33960,21137,33961,21138,33962,21140,33963,21141,33964,21142,33965,21143,33966,21144,33967,21145,33968,21146,33969,21148,33970,21156,33971,21157,33972,21158,33973,21159,33974,21166,33975,21167,33976,21168,33977,21172,33978,21173,33979,21174,33980,21175,33981,21176,33982,21177,33983,21178,33984,21179,33985,21180,33986,21181,33987,21184,33988,21185,33989,21186,33990,21188,33991,21189,33992,21190,33993,21192,33994,21194,33995,21196,33996,21197,33997,21198,33998,21199,33999,21201,34e3,21203,34001,21204,34002,21205,34003,21207,34004,21209,34005,21210,34006,21211,34007,21212,34008,21213,34009,21214,34010,21216,34011,21217,34012,21218,34013,21219,34014,21221,34015,21222,34016,21223,34017,21224,34018,21225,34019,21226,34020,21227,34021,21228,34022,21229,34023,21230,34024,21231,34025,21233,34026,21234,34027,21235,34028,21236,34029,21237,34030,21238,34031,21239,34032,21240,34033,21243,34034,21244,34035,21245,34036,21249,34037,21250,34038,21251,34039,21252,34040,21255,34041,21257,34042,21258,34043,21259,34044,21260,34045,21262,34046,21265,34112,21266,34113,21267,34114,21268,34115,21272,34116,21275,34117,21276,34118,21278,34119,21279,34120,21282,34121,21284,34122,21285,34123,21287,34124,21288,34125,21289,34126,21291,34127,21292,34128,21293,34129,21295,34130,21296,34131,21297,34132,21298,34133,21299,34134,21300,34135,21301,34136,21302,34137,21303,34138,21304,34139,21308,34140,21309,34141,21312,34142,21314,34143,21316,34144,21318,34145,21323,34146,21324,34147,21325,34148,21328,34149,21332,34150,21336,34151,21337,34152,21339,34153,21341,34154,21349,34155,21352,34156,21354,34157,21356,34158,21357,34159,21362,34160,21366,34161,21369,34162,21371,34163,21372,34164,21373,34165,21374,34166,21376,34167,21377,34168,21379,34169,21383,34170,21384,34171,21386,34172,21390,34173,21391,34174,21392,34176,21393,34177,21394,34178,21395,34179,21396,34180,21398,34181,21399,34182,21401,34183,21403,34184,21404,34185,21406,34186,21408,34187,21409,34188,21412,34189,21415,34190,21418,34191,21419,34192,21420,34193,21421,34194,21423,34195,21424,34196,21425,34197,21426,34198,21427,34199,21428,34200,21429,34201,21431,34202,21432,34203,21433,34204,21434,34205,21436,34206,21437,34207,21438,34208,21440,34209,21443,34210,21444,34211,21445,34212,21446,34213,21447,34214,21454,34215,21455,34216,21456,34217,21458,34218,21459,34219,21461,34220,21466,34221,21468,34222,21469,34223,21470,34224,21473,34225,21474,34226,21479,34227,21492,34228,21498,34229,21502,34230,21503,34231,21504,34232,21506,34233,21509,34234,21511,34235,21515,34236,21524,34237,21528,34238,21529,34239,21530,34240,21532,34241,21538,34242,21540,34243,21541,34244,21546,34245,21552,34246,21555,34247,21558,34248,21559,34249,21562,34250,21565,34251,21567,34252,21569,34253,21570,34254,21572,34255,21573,34256,21575,34257,21577,34258,21580,34259,21581,34260,21582,34261,21583,34262,21585,34263,21594,34264,21597,34265,21598,34266,21599,34267,21600,34268,21601,34269,21603,34270,21605,34271,21607,34272,21609,34273,21610,34274,21611,34275,21612,34276,21613,34277,21614,34278,21615,34279,21616,34280,21620,34281,21625,34282,21626,34283,21630,34284,21631,34285,21633,34286,21635,34287,21637,34288,21639,34289,21640,34290,21641,34291,21642,34292,21645,34293,21649,34294,21651,34295,21655,34296,21656,34297,21660,34298,21662,34299,21663,34300,21664,34301,21665,34302,21666,34368,21669,34369,21678,34370,21680,34371,21682,34372,21685,34373,21686,34374,21687,34375,21689,34376,21690,34377,21692,34378,21694,34379,21699,34380,21701,34381,21706,34382,21707,34383,21718,34384,21720,34385,21723,34386,21728,34387,21729,34388,21730,34389,21731,34390,21732,34391,21739,34392,21740,34393,21743,34394,21744,34395,21745,34396,21748,34397,21749,34398,21750,34399,21751,34400,21752,34401,21753,34402,21755,34403,21758,34404,21760,34405,21762,34406,21763,34407,21764,34408,21765,34409,21768,34410,21770,34411,21771,34412,21772,34413,21773,34414,21774,34415,21778,34416,21779,34417,21781,34418,21782,34419,21783,34420,21784,34421,21785,34422,21786,34423,21788,34424,21789,34425,21790,34426,21791,34427,21793,34428,21797,34429,21798,34430,21800,34432,21801,34433,21803,34434,21805,34435,21810,34436,21812,34437,21813,34438,21814,34439,21816,34440,21817,34441,21818,34442,21819,34443,21821,34444,21824,34445,21826,34446,21829,34447,21831,34448,21832,34449,21835,34450,21836,34451,21837,34452,21838,34453,21839,34454,21841,34455,21842,34456,21843,34457,21844,34458,21847,34459,21848,34460,21849,34461,21850,34462,21851,34463,21853,34464,21854,34465,21855,34466,21856,34467,21858,34468,21859,34469,21864,34470,21865,34471,21867,34472,21871,34473,21872,34474,21873,34475,21874,34476,21875,34477,21876,34478,21881,34479,21882,34480,21885,34481,21887,34482,21893,34483,21894,34484,21900,34485,21901,34486,21902,34487,21904,34488,21906,34489,21907,34490,21909,34491,21910,34492,21911,34493,21914,34494,21915,34495,21918,34496,21920,34497,21921,34498,21922,34499,21923,34500,21924,34501,21925,34502,21926,34503,21928,34504,21929,34505,21930,34506,21931,34507,21932,34508,21933,34509,21934,34510,21935,34511,21936,34512,21938,34513,21940,34514,21942,34515,21944,34516,21946,34517,21948,34518,21951,34519,21952,34520,21953,34521,21954,34522,21955,34523,21958,34524,21959,34525,21960,34526,21962,34527,21963,34528,21966,34529,21967,34530,21968,34531,21973,34532,21975,34533,21976,34534,21977,34535,21978,34536,21979,34537,21982,34538,21984,34539,21986,34540,21991,34541,21993,34542,21997,34543,21998,34544,22e3,34545,22001,34546,22004,34547,22006,34548,22008,34549,22009,34550,22010,34551,22011,34552,22012,34553,22015,34554,22018,34555,22019,34556,22020,34557,22021,34558,22022,34624,22023,34625,22026,34626,22027,34627,22029,34628,22032,34629,22033,34630,22034,34631,22035,34632,22036,34633,22037,34634,22038,34635,22039,34636,22041,34637,22042,34638,22044,34639,22045,34640,22048,34641,22049,34642,22050,34643,22053,34644,22054,34645,22056,34646,22057,34647,22058,34648,22059,34649,22062,34650,22063,34651,22064,34652,22067,34653,22069,34654,22071,34655,22072,34656,22074,34657,22076,34658,22077,34659,22078,34660,22080,34661,22081,34662,22082,34663,22083,34664,22084,34665,22085,34666,22086,34667,22087,34668,22088,34669,22089,34670,22090,34671,22091,34672,22095,34673,22096,34674,22097,34675,22098,34676,22099,34677,22101,34678,22102,34679,22106,34680,22107,34681,22109,34682,22110,34683,22111,34684,22112,34685,22113,34686,22115,34688,22117,34689,22118,34690,22119,34691,22125,34692,22126,34693,22127,34694,22128,34695,22130,34696,22131,34697,22132,34698,22133,34699,22135,34700,22136,34701,22137,34702,22138,34703,22141,34704,22142,34705,22143,34706,22144,34707,22145,34708,22146,34709,22147,34710,22148,34711,22151,34712,22152,34713,22153,34714,22154,34715,22155,34716,22156,34717,22157,34718,22160,34719,22161,34720,22162,34721,22164,34722,22165,34723,22166,34724,22167,34725,22168,34726,22169,34727,22170,34728,22171,34729,22172,34730,22173,34731,22174,34732,22175,34733,22176,34734,22177,34735,22178,34736,22180,34737,22181,34738,22182,34739,22183,34740,22184,34741,22185,34742,22186,34743,22187,34744,22188,34745,22189,34746,22190,34747,22192,34748,22193,34749,22194,34750,22195,34751,22196,34752,22197,34753,22198,34754,22200,34755,22201,34756,22202,34757,22203,34758,22205,34759,22206,34760,22207,34761,22208,34762,22209,34763,22210,34764,22211,34765,22212,34766,22213,34767,22214,34768,22215,34769,22216,34770,22217,34771,22219,34772,22220,34773,22221,34774,22222,34775,22223,34776,22224,34777,22225,34778,22226,34779,22227,34780,22229,34781,22230,34782,22232,34783,22233,34784,22236,34785,22243,34786,22245,34787,22246,34788,22247,34789,22248,34790,22249,34791,22250,34792,22252,34793,22254,34794,22255,34795,22258,34796,22259,34797,22262,34798,22263,34799,22264,34800,22267,34801,22268,34802,22272,34803,22273,34804,22274,34805,22277,34806,22279,34807,22283,34808,22284,34809,22285,34810,22286,34811,22287,34812,22288,34813,22289,34814,22290,34880,22291,34881,22292,34882,22293,34883,22294,34884,22295,34885,22296,34886,22297,34887,22298,34888,22299,34889,22301,34890,22302,34891,22304,34892,22305,34893,22306,34894,22308,34895,22309,34896,22310,34897,22311,34898,22315,34899,22321,34900,22322,34901,22324,34902,22325,34903,22326,34904,22327,34905,22328,34906,22332,34907,22333,34908,22335,34909,22337,34910,22339,34911,22340,34912,22341,34913,22342,34914,22344,34915,22345,34916,22347,34917,22354,34918,22355,34919,22356,34920,22357,34921,22358,34922,22360,34923,22361,34924,22370,34925,22371,34926,22373,34927,22375,34928,22380,34929,22382,34930,22384,34931,22385,34932,22386,34933,22388,34934,22389,34935,22392,34936,22393,34937,22394,34938,22397,34939,22398,34940,22399,34941,22400,34942,22401,34944,22407,34945,22408,34946,22409,34947,22410,34948,22413,34949,22414,34950,22415,34951,22416,34952,22417,34953,22420,34954,22421,34955,22422,34956,22423,34957,22424,34958,22425,34959,22426,34960,22428,34961,22429,34962,22430,34963,22431,34964,22437,34965,22440,34966,22442,34967,22444,34968,22447,34969,22448,34970,22449,34971,22451,34972,22453,34973,22454,34974,22455,34975,22457,34976,22458,34977,22459,34978,22460,34979,22461,34980,22462,34981,22463,34982,22464,34983,22465,34984,22468,34985,22469,34986,22470,34987,22471,34988,22472,34989,22473,34990,22474,34991,22476,34992,22477,34993,22480,34994,22481,34995,22483,34996,22486,34997,22487,34998,22491,34999,22492,35e3,22494,35001,22497,35002,22498,35003,22499,35004,22501,35005,22502,35006,22503,35007,22504,35008,22505,35009,22506,35010,22507,35011,22508,35012,22510,35013,22512,35014,22513,35015,22514,35016,22515,35017,22517,35018,22518,35019,22519,35020,22523,35021,22524,35022,22526,35023,22527,35024,22529,35025,22531,35026,22532,35027,22533,35028,22536,35029,22537,35030,22538,35031,22540,35032,22542,35033,22543,35034,22544,35035,22546,35036,22547,35037,22548,35038,22550,35039,22551,35040,22552,35041,22554,35042,22555,35043,22556,35044,22557,35045,22559,35046,22562,35047,22563,35048,22565,35049,22566,35050,22567,35051,22568,35052,22569,35053,22571,35054,22572,35055,22573,35056,22574,35057,22575,35058,22577,35059,22578,35060,22579,35061,22580,35062,22582,35063,22583,35064,22584,35065,22585,35066,22586,35067,22587,35068,22588,35069,22589,35070,22590,35136,22591,35137,22592,35138,22593,35139,22594,35140,22595,35141,22597,35142,22598,35143,22599,35144,22600,35145,22601,35146,22602,35147,22603,35148,22606,35149,22607,35150,22608,35151,22610,35152,22611,35153,22613,35154,22614,35155,22615,35156,22617,35157,22618,35158,22619,35159,22620,35160,22621,35161,22623,35162,22624,35163,22625,35164,22626,35165,22627,35166,22628,35167,22630,35168,22631,35169,22632,35170,22633,35171,22634,35172,22637,35173,22638,35174,22639,35175,22640,35176,22641,35177,22642,35178,22643,35179,22644,35180,22645,35181,22646,35182,22647,35183,22648,35184,22649,35185,22650,35186,22651,35187,22652,35188,22653,35189,22655,35190,22658,35191,22660,35192,22662,35193,22663,35194,22664,35195,22666,35196,22667,35197,22668,35198,22669,35200,22670,35201,22671,35202,22672,35203,22673,35204,22676,35205,22677,35206,22678,35207,22679,35208,22680,35209,22683,35210,22684,35211,22685,35212,22688,35213,22689,35214,22690,35215,22691,35216,22692,35217,22693,35218,22694,35219,22695,35220,22698,35221,22699,35222,22700,35223,22701,35224,22702,35225,22703,35226,22704,35227,22705,35228,22706,35229,22707,35230,22708,35231,22709,35232,22710,35233,22711,35234,22712,35235,22713,35236,22714,35237,22715,35238,22717,35239,22718,35240,22719,35241,22720,35242,22722,35243,22723,35244,22724,35245,22726,35246,22727,35247,22728,35248,22729,35249,22730,35250,22731,35251,22732,35252,22733,35253,22734,35254,22735,35255,22736,35256,22738,35257,22739,35258,22740,35259,22742,35260,22743,35261,22744,35262,22745,35263,22746,35264,22747,35265,22748,35266,22749,35267,22750,35268,22751,35269,22752,35270,22753,35271,22754,35272,22755,35273,22757,35274,22758,35275,22759,35276,22760,35277,22761,35278,22762,35279,22765,35280,22767,35281,22769,35282,22770,35283,22772,35284,22773,35285,22775,35286,22776,35287,22778,35288,22779,35289,22780,35290,22781,35291,22782,35292,22783,35293,22784,35294,22785,35295,22787,35296,22789,35297,22790,35298,22792,35299,22793,35300,22794,35301,22795,35302,22796,35303,22798,35304,22800,35305,22801,35306,22802,35307,22803,35308,22807,35309,22808,35310,22811,35311,22813,35312,22814,35313,22816,35314,22817,35315,22818,35316,22819,35317,22822,35318,22824,35319,22828,35320,22832,35321,22834,35322,22835,35323,22837,35324,22838,35325,22843,35326,22845,35392,22846,35393,22847,35394,22848,35395,22851,35396,22853,35397,22854,35398,22858,35399,22860,35400,22861,35401,22864,35402,22866,35403,22867,35404,22873,35405,22875,35406,22876,35407,22877,35408,22878,35409,22879,35410,22881,35411,22883,35412,22884,35413,22886,35414,22887,35415,22888,35416,22889,35417,22890,35418,22891,35419,22892,35420,22893,35421,22894,35422,22895,35423,22896,35424,22897,35425,22898,35426,22901,35427,22903,35428,22906,35429,22907,35430,22908,35431,22910,35432,22911,35433,22912,35434,22917,35435,22921,35436,22923,35437,22924,35438,22926,35439,22927,35440,22928,35441,22929,35442,22932,35443,22933,35444,22936,35445,22938,35446,22939,35447,22940,35448,22941,35449,22943,35450,22944,35451,22945,35452,22946,35453,22950,35454,22951,35456,22956,35457,22957,35458,22960,35459,22961,35460,22963,35461,22964,35462,22965,35463,22966,35464,22967,35465,22968,35466,22970,35467,22972,35468,22973,35469,22975,35470,22976,35471,22977,35472,22978,35473,22979,35474,22980,35475,22981,35476,22983,35477,22984,35478,22985,35479,22988,35480,22989,35481,22990,35482,22991,35483,22997,35484,22998,35485,23001,35486,23003,35487,23006,35488,23007,35489,23008,35490,23009,35491,23010,35492,23012,35493,23014,35494,23015,35495,23017,35496,23018,35497,23019,35498,23021,35499,23022,35500,23023,35501,23024,35502,23025,35503,23026,35504,23027,35505,23028,35506,23029,35507,23030,35508,23031,35509,23032,35510,23034,35511,23036,35512,23037,35513,23038,35514,23040,35515,23042,35516,23050,35517,23051,35518,23053,35519,23054,35520,23055,35521,23056,35522,23058,35523,23060,35524,23061,35525,23062,35526,23063,35527,23065,35528,23066,35529,23067,35530,23069,35531,23070,35532,23073,35533,23074,35534,23076,35535,23078,35536,23079,35537,23080,35538,23082,35539,23083,35540,23084,35541,23085,35542,23086,35543,23087,35544,23088,35545,23091,35546,23093,35547,23095,35548,23096,35549,23097,35550,23098,35551,23099,35552,23101,35553,23102,35554,23103,35555,23105,35556,23106,35557,23107,35558,23108,35559,23109,35560,23111,35561,23112,35562,23115,35563,23116,35564,23117,35565,23118,35566,23119,35567,23120,35568,23121,35569,23122,35570,23123,35571,23124,35572,23126,35573,23127,35574,23128,35575,23129,35576,23131,35577,23132,35578,23133,35579,23134,35580,23135,35581,23136,35582,23137,35648,23139,35649,23140,35650,23141,35651,23142,35652,23144,35653,23145,35654,23147,35655,23148,35656,23149,35657,23150,35658,23151,35659,23152,35660,23153,35661,23154,35662,23155,35663,23160,35664,23161,35665,23163,35666,23164,35667,23165,35668,23166,35669,23168,35670,23169,35671,23170,35672,23171,35673,23172,35674,23173,35675,23174,35676,23175,35677,23176,35678,23177,35679,23178,35680,23179,35681,23180,35682,23181,35683,23182,35684,23183,35685,23184,35686,23185,35687,23187,35688,23188,35689,23189,35690,23190,35691,23191,35692,23192,35693,23193,35694,23196,35695,23197,35696,23198,35697,23199,35698,23200,35699,23201,35700,23202,35701,23203,35702,23204,35703,23205,35704,23206,35705,23207,35706,23208,35707,23209,35708,23211,35709,23212,35710,23213,35712,23214,35713,23215,35714,23216,35715,23217,35716,23220,35717,23222,35718,23223,35719,23225,35720,23226,35721,23227,35722,23228,35723,23229,35724,23231,35725,23232,35726,23235,35727,23236,35728,23237,35729,23238,35730,23239,35731,23240,35732,23242,35733,23243,35734,23245,35735,23246,35736,23247,35737,23248,35738,23249,35739,23251,35740,23253,35741,23255,35742,23257,35743,23258,35744,23259,35745,23261,35746,23262,35747,23263,35748,23266,35749,23268,35750,23269,35751,23271,35752,23272,35753,23274,35754,23276,35755,23277,35756,23278,35757,23279,35758,23280,35759,23282,35760,23283,35761,23284,35762,23285,35763,23286,35764,23287,35765,23288,35766,23289,35767,23290,35768,23291,35769,23292,35770,23293,35771,23294,35772,23295,35773,23296,35774,23297,35775,23298,35776,23299,35777,23300,35778,23301,35779,23302,35780,23303,35781,23304,35782,23306,35783,23307,35784,23308,35785,23309,35786,23310,35787,23311,35788,23312,35789,23313,35790,23314,35791,23315,35792,23316,35793,23317,35794,23320,35795,23321,35796,23322,35797,23323,35798,23324,35799,23325,35800,23326,35801,23327,35802,23328,35803,23329,35804,23330,35805,23331,35806,23332,35807,23333,35808,23334,35809,23335,35810,23336,35811,23337,35812,23338,35813,23339,35814,23340,35815,23341,35816,23342,35817,23343,35818,23344,35819,23345,35820,23347,35821,23349,35822,23350,35823,23352,35824,23353,35825,23354,35826,23355,35827,23356,35828,23357,35829,23358,35830,23359,35831,23361,35832,23362,35833,23363,35834,23364,35835,23365,35836,23366,35837,23367,35838,23368,35904,23369,35905,23370,35906,23371,35907,23372,35908,23373,35909,23374,35910,23375,35911,23378,35912,23382,35913,23390,35914,23392,35915,23393,35916,23399,35917,23400,35918,23403,35919,23405,35920,23406,35921,23407,35922,23410,35923,23412,35924,23414,35925,23415,35926,23416,35927,23417,35928,23419,35929,23420,35930,23422,35931,23423,35932,23426,35933,23430,35934,23434,35935,23437,35936,23438,35937,23440,35938,23441,35939,23442,35940,23444,35941,23446,35942,23455,35943,23463,35944,23464,35945,23465,35946,23468,35947,23469,35948,23470,35949,23471,35950,23473,35951,23474,35952,23479,35953,23482,35954,23483,35955,23484,35956,23488,35957,23489,35958,23491,35959,23496,35960,23497,35961,23498,35962,23499,35963,23501,35964,23502,35965,23503,35966,23505,35968,23508,35969,23509,35970,23510,35971,23511,35972,23512,35973,23513,35974,23514,35975,23515,35976,23516,35977,23520,35978,23522,35979,23523,35980,23526,35981,23527,35982,23529,35983,23530,35984,23531,35985,23532,35986,23533,35987,23535,35988,23537,35989,23538,35990,23539,35991,23540,35992,23541,35993,23542,35994,23543,35995,23549,35996,23550,35997,23552,35998,23554,35999,23555,36e3,23557,36001,23559,36002,23560,36003,23563,36004,23564,36005,23565,36006,23566,36007,23568,36008,23570,36009,23571,36010,23575,36011,23577,36012,23579,36013,23582,36014,23583,36015,23584,36016,23585,36017,23587,36018,23590,36019,23592,36020,23593,36021,23594,36022,23595,36023,23597,36024,23598,36025,23599,36026,23600,36027,23602,36028,23603,36029,23605,36030,23606,36031,23607,36032,23619,36033,23620,36034,23622,36035,23623,36036,23628,36037,23629,36038,23634,36039,23635,36040,23636,36041,23638,36042,23639,36043,23640,36044,23642,36045,23643,36046,23644,36047,23645,36048,23647,36049,23650,36050,23652,36051,23655,36052,23656,36053,23657,36054,23658,36055,23659,36056,23660,36057,23661,36058,23664,36059,23666,36060,23667,36061,23668,36062,23669,36063,23670,36064,23671,36065,23672,36066,23675,36067,23676,36068,23677,36069,23678,36070,23680,36071,23683,36072,23684,36073,23685,36074,23686,36075,23687,36076,23689,36077,23690,36078,23691,36079,23694,36080,23695,36081,23698,36082,23699,36083,23701,36084,23709,36085,23710,36086,23711,36087,23712,36088,23713,36089,23716,36090,23717,36091,23718,36092,23719,36093,23720,36094,23722,36160,23726,36161,23727,36162,23728,36163,23730,36164,23732,36165,23734,36166,23737,36167,23738,36168,23739,36169,23740,36170,23742,36171,23744,36172,23746,36173,23747,36174,23749,36175,23750,36176,23751,36177,23752,36178,23753,36179,23754,36180,23756,36181,23757,36182,23758,36183,23759,36184,23760,36185,23761,36186,23763,36187,23764,36188,23765,36189,23766,36190,23767,36191,23768,36192,23770,36193,23771,36194,23772,36195,23773,36196,23774,36197,23775,36198,23776,36199,23778,36200,23779,36201,23783,36202,23785,36203,23787,36204,23788,36205,23790,36206,23791,36207,23793,36208,23794,36209,23795,36210,23796,36211,23797,36212,23798,36213,23799,36214,23800,36215,23801,36216,23802,36217,23804,36218,23805,36219,23806,36220,23807,36221,23808,36222,23809,36224,23812,36225,23813,36226,23816,36227,23817,36228,23818,36229,23819,36230,23820,36231,23821,36232,23823,36233,23824,36234,23825,36235,23826,36236,23827,36237,23829,36238,23831,36239,23832,36240,23833,36241,23834,36242,23836,36243,23837,36244,23839,36245,23840,36246,23841,36247,23842,36248,23843,36249,23845,36250,23848,36251,23850,36252,23851,36253,23852,36254,23855,36255,23856,36256,23857,36257,23858,36258,23859,36259,23861,36260,23862,36261,23863,36262,23864,36263,23865,36264,23866,36265,23867,36266,23868,36267,23871,36268,23872,36269,23873,36270,23874,36271,23875,36272,23876,36273,23877,36274,23878,36275,23880,36276,23881,36277,23885,36278,23886,36279,23887,36280,23888,36281,23889,36282,23890,36283,23891,36284,23892,36285,23893,36286,23894,36287,23895,36288,23897,36289,23898,36290,23900,36291,23902,36292,23903,36293,23904,36294,23905,36295,23906,36296,23907,36297,23908,36298,23909,36299,23910,36300,23911,36301,23912,36302,23914,36303,23917,36304,23918,36305,23920,36306,23921,36307,23922,36308,23923,36309,23925,36310,23926,36311,23927,36312,23928,36313,23929,36314,23930,36315,23931,36316,23932,36317,23933,36318,23934,36319,23935,36320,23936,36321,23937,36322,23939,36323,23940,36324,23941,36325,23942,36326,23943,36327,23944,36328,23945,36329,23946,36330,23947,36331,23948,36332,23949,36333,23950,36334,23951,36335,23952,36336,23953,36337,23954,36338,23955,36339,23956,36340,23957,36341,23958,36342,23959,36343,23960,36344,23962,36345,23963,36346,23964,36347,23966,36348,23967,36349,23968,36350,23969,36416,23970,36417,23971,36418,23972,36419,23973,36420,23974,36421,23975,36422,23976,36423,23977,36424,23978,36425,23979,36426,23980,36427,23981,36428,23982,36429,23983,36430,23984,36431,23985,36432,23986,36433,23987,36434,23988,36435,23989,36436,23990,36437,23992,36438,23993,36439,23994,36440,23995,36441,23996,36442,23997,36443,23998,36444,23999,36445,24e3,36446,24001,36447,24002,36448,24003,36449,24004,36450,24006,36451,24007,36452,24008,36453,24009,36454,24010,36455,24011,36456,24012,36457,24014,36458,24015,36459,24016,36460,24017,36461,24018,36462,24019,36463,24020,36464,24021,36465,24022,36466,24023,36467,24024,36468,24025,36469,24026,36470,24028,36471,24031,36472,24032,36473,24035,36474,24036,36475,24042,36476,24044,36477,24045,36478,24048,36480,24053,36481,24054,36482,24056,36483,24057,36484,24058,36485,24059,36486,24060,36487,24063,36488,24064,36489,24068,36490,24071,36491,24073,36492,24074,36493,24075,36494,24077,36495,24078,36496,24082,36497,24083,36498,24087,36499,24094,36500,24095,36501,24096,36502,24097,36503,24098,36504,24099,36505,24100,36506,24101,36507,24104,36508,24105,36509,24106,36510,24107,36511,24108,36512,24111,36513,24112,36514,24114,36515,24115,36516,24116,36517,24117,36518,24118,36519,24121,36520,24122,36521,24126,36522,24127,36523,24128,36524,24129,36525,24131,36526,24134,36527,24135,36528,24136,36529,24137,36530,24138,36531,24139,36532,24141,36533,24142,36534,24143,36535,24144,36536,24145,36537,24146,36538,24147,36539,24150,36540,24151,36541,24152,36542,24153,36543,24154,36544,24156,36545,24157,36546,24159,36547,24160,36548,24163,36549,24164,36550,24165,36551,24166,36552,24167,36553,24168,36554,24169,36555,24170,36556,24171,36557,24172,36558,24173,36559,24174,36560,24175,36561,24176,36562,24177,36563,24181,36564,24183,36565,24185,36566,24190,36567,24193,36568,24194,36569,24195,36570,24197,36571,24200,36572,24201,36573,24204,36574,24205,36575,24206,36576,24210,36577,24216,36578,24219,36579,24221,36580,24225,36581,24226,36582,24227,36583,24228,36584,24232,36585,24233,36586,24234,36587,24235,36588,24236,36589,24238,36590,24239,36591,24240,36592,24241,36593,24242,36594,24244,36595,24250,36596,24251,36597,24252,36598,24253,36599,24255,36600,24256,36601,24257,36602,24258,36603,24259,36604,24260,36605,24261,36606,24262,36672,24263,36673,24264,36674,24267,36675,24268,36676,24269,36677,24270,36678,24271,36679,24272,36680,24276,36681,24277,36682,24279,36683,24280,36684,24281,36685,24282,36686,24284,36687,24285,36688,24286,36689,24287,36690,24288,36691,24289,36692,24290,36693,24291,36694,24292,36695,24293,36696,24294,36697,24295,36698,24297,36699,24299,36700,24300,36701,24301,36702,24302,36703,24303,36704,24304,36705,24305,36706,24306,36707,24307,36708,24309,36709,24312,36710,24313,36711,24315,36712,24316,36713,24317,36714,24325,36715,24326,36716,24327,36717,24329,36718,24332,36719,24333,36720,24334,36721,24336,36722,24338,36723,24340,36724,24342,36725,24345,36726,24346,36727,24348,36728,24349,36729,24350,36730,24353,36731,24354,36732,24355,36733,24356,36734,24360,36736,24363,36737,24364,36738,24366,36739,24368,36740,24370,36741,24371,36742,24372,36743,24373,36744,24374,36745,24375,36746,24376,36747,24379,36748,24381,36749,24382,36750,24383,36751,24385,36752,24386,36753,24387,36754,24388,36755,24389,36756,24390,36757,24391,36758,24392,36759,24393,36760,24394,36761,24395,36762,24396,36763,24397,36764,24398,36765,24399,36766,24401,36767,24404,36768,24409,36769,24410,36770,24411,36771,24412,36772,24414,36773,24415,36774,24416,36775,24419,36776,24421,36777,24423,36778,24424,36779,24427,36780,24430,36781,24431,36782,24434,36783,24436,36784,24437,36785,24438,36786,24440,36787,24442,36788,24445,36789,24446,36790,24447,36791,24451,36792,24454,36793,24461,36794,24462,36795,24463,36796,24465,36797,24467,36798,24468,36799,24470,36800,24474,36801,24475,36802,24477,36803,24478,36804,24479,36805,24480,36806,24482,36807,24483,36808,24484,36809,24485,36810,24486,36811,24487,36812,24489,36813,24491,36814,24492,36815,24495,36816,24496,36817,24497,36818,24498,36819,24499,36820,24500,36821,24502,36822,24504,36823,24505,36824,24506,36825,24507,36826,24510,36827,24511,36828,24512,36829,24513,36830,24514,36831,24519,36832,24520,36833,24522,36834,24523,36835,24526,36836,24531,36837,24532,36838,24533,36839,24538,36840,24539,36841,24540,36842,24542,36843,24543,36844,24546,36845,24547,36846,24549,36847,24550,36848,24552,36849,24553,36850,24556,36851,24559,36852,24560,36853,24562,36854,24563,36855,24564,36856,24566,36857,24567,36858,24569,36859,24570,36860,24572,36861,24583,36862,24584,36928,24585,36929,24587,36930,24588,36931,24592,36932,24593,36933,24595,36934,24599,36935,24600,36936,24602,36937,24606,36938,24607,36939,24610,36940,24611,36941,24612,36942,24620,36943,24621,36944,24622,36945,24624,36946,24625,36947,24626,36948,24627,36949,24628,36950,24630,36951,24631,36952,24632,36953,24633,36954,24634,36955,24637,36956,24638,36957,24640,36958,24644,36959,24645,36960,24646,36961,24647,36962,24648,36963,24649,36964,24650,36965,24652,36966,24654,36967,24655,36968,24657,36969,24659,36970,24660,36971,24662,36972,24663,36973,24664,36974,24667,36975,24668,36976,24670,36977,24671,36978,24672,36979,24673,36980,24677,36981,24678,36982,24686,36983,24689,36984,24690,36985,24692,36986,24693,36987,24695,36988,24702,36989,24704,36990,24705,36992,24706,36993,24709,36994,24710,36995,24711,36996,24712,36997,24714,36998,24715,36999,24718,37e3,24719,37001,24720,37002,24721,37003,24723,37004,24725,37005,24727,37006,24728,37007,24729,37008,24732,37009,24734,37010,24737,37011,24738,37012,24740,37013,24741,37014,24743,37015,24745,37016,24746,37017,24750,37018,24752,37019,24755,37020,24757,37021,24758,37022,24759,37023,24761,37024,24762,37025,24765,37026,24766,37027,24767,37028,24768,37029,24769,37030,24770,37031,24771,37032,24772,37033,24775,37034,24776,37035,24777,37036,24780,37037,24781,37038,24782,37039,24783,37040,24784,37041,24786,37042,24787,37043,24788,37044,24790,37045,24791,37046,24793,37047,24795,37048,24798,37049,24801,37050,24802,37051,24803,37052,24804,37053,24805,37054,24810,37055,24817,37056,24818,37057,24821,37058,24823,37059,24824,37060,24827,37061,24828,37062,24829,37063,24830,37064,24831,37065,24834,37066,24835,37067,24836,37068,24837,37069,24839,37070,24842,37071,24843,37072,24844,37073,24848,37074,24849,37075,24850,37076,24851,37077,24852,37078,24854,37079,24855,37080,24856,37081,24857,37082,24859,37083,24860,37084,24861,37085,24862,37086,24865,37087,24866,37088,24869,37089,24872,37090,24873,37091,24874,37092,24876,37093,24877,37094,24878,37095,24879,37096,24880,37097,24881,37098,24882,37099,24883,37100,24884,37101,24885,37102,24886,37103,24887,37104,24888,37105,24889,37106,24890,37107,24891,37108,24892,37109,24893,37110,24894,37111,24896,37112,24897,37113,24898,37114,24899,37115,24900,37116,24901,37117,24902,37118,24903,37184,24905,37185,24907,37186,24909,37187,24911,37188,24912,37189,24914,37190,24915,37191,24916,37192,24918,37193,24919,37194,24920,37195,24921,37196,24922,37197,24923,37198,24924,37199,24926,37200,24927,37201,24928,37202,24929,37203,24931,37204,24932,37205,24933,37206,24934,37207,24937,37208,24938,37209,24939,37210,24940,37211,24941,37212,24942,37213,24943,37214,24945,37215,24946,37216,24947,37217,24948,37218,24950,37219,24952,37220,24953,37221,24954,37222,24955,37223,24956,37224,24957,37225,24958,37226,24959,37227,24960,37228,24961,37229,24962,37230,24963,37231,24964,37232,24965,37233,24966,37234,24967,37235,24968,37236,24969,37237,24970,37238,24972,37239,24973,37240,24975,37241,24976,37242,24977,37243,24978,37244,24979,37245,24981,37246,24982,37248,24983,37249,24984,37250,24985,37251,24986,37252,24987,37253,24988,37254,24990,37255,24991,37256,24992,37257,24993,37258,24994,37259,24995,37260,24996,37261,24997,37262,24998,37263,25002,37264,25003,37265,25005,37266,25006,37267,25007,37268,25008,37269,25009,37270,25010,37271,25011,37272,25012,37273,25013,37274,25014,37275,25016,37276,25017,37277,25018,37278,25019,37279,25020,37280,25021,37281,25023,37282,25024,37283,25025,37284,25027,37285,25028,37286,25029,37287,25030,37288,25031,37289,25033,37290,25036,37291,25037,37292,25038,37293,25039,37294,25040,37295,25043,37296,25045,37297,25046,37298,25047,37299,25048,37300,25049,37301,25050,37302,25051,37303,25052,37304,25053,37305,25054,37306,25055,37307,25056,37308,25057,37309,25058,37310,25059,37311,25060,37312,25061,37313,25063,37314,25064,37315,25065,37316,25066,37317,25067,37318,25068,37319,25069,37320,25070,37321,25071,37322,25072,37323,25073,37324,25074,37325,25075,37326,25076,37327,25078,37328,25079,37329,25080,37330,25081,37331,25082,37332,25083,37333,25084,37334,25085,37335,25086,37336,25088,37337,25089,37338,25090,37339,25091,37340,25092,37341,25093,37342,25095,37343,25097,37344,25107,37345,25108,37346,25113,37347,25116,37348,25117,37349,25118,37350,25120,37351,25123,37352,25126,37353,25127,37354,25128,37355,25129,37356,25131,37357,25133,37358,25135,37359,25136,37360,25137,37361,25138,37362,25141,37363,25142,37364,25144,37365,25145,37366,25146,37367,25147,37368,25148,37369,25154,37370,25156,37371,25157,37372,25158,37373,25162,37374,25167,37440,25168,37441,25173,37442,25174,37443,25175,37444,25177,37445,25178,37446,25180,37447,25181,37448,25182,37449,25183,37450,25184,37451,25185,37452,25186,37453,25188,37454,25189,37455,25192,37456,25201,37457,25202,37458,25204,37459,25205,37460,25207,37461,25208,37462,25210,37463,25211,37464,25213,37465,25217,37466,25218,37467,25219,37468,25221,37469,25222,37470,25223,37471,25224,37472,25227,37473,25228,37474,25229,37475,25230,37476,25231,37477,25232,37478,25236,37479,25241,37480,25244,37481,25245,37482,25246,37483,25251,37484,25254,37485,25255,37486,25257,37487,25258,37488,25261,37489,25262,37490,25263,37491,25264,37492,25266,37493,25267,37494,25268,37495,25270,37496,25271,37497,25272,37498,25274,37499,25278,37500,25280,37501,25281,37502,25283,37504,25291,37505,25295,37506,25297,37507,25301,37508,25309,37509,25310,37510,25312,37511,25313,37512,25316,37513,25322,37514,25323,37515,25328,37516,25330,37517,25333,37518,25336,37519,25337,37520,25338,37521,25339,37522,25344,37523,25347,37524,25348,37525,25349,37526,25350,37527,25354,37528,25355,37529,25356,37530,25357,37531,25359,37532,25360,37533,25362,37534,25363,37535,25364,37536,25365,37537,25367,37538,25368,37539,25369,37540,25372,37541,25382,37542,25383,37543,25385,37544,25388,37545,25389,37546,25390,37547,25392,37548,25393,37549,25395,37550,25396,37551,25397,37552,25398,37553,25399,37554,25400,37555,25403,37556,25404,37557,25406,37558,25407,37559,25408,37560,25409,37561,25412,37562,25415,37563,25416,37564,25418,37565,25425,37566,25426,37567,25427,37568,25428,37569,25430,37570,25431,37571,25432,37572,25433,37573,25434,37574,25435,37575,25436,37576,25437,37577,25440,37578,25444,37579,25445,37580,25446,37581,25448,37582,25450,37583,25451,37584,25452,37585,25455,37586,25456,37587,25458,37588,25459,37589,25460,37590,25461,37591,25464,37592,25465,37593,25468,37594,25469,37595,25470,37596,25471,37597,25473,37598,25475,37599,25476,37600,25477,37601,25478,37602,25483,37603,25485,37604,25489,37605,25491,37606,25492,37607,25493,37608,25495,37609,25497,37610,25498,37611,25499,37612,25500,37613,25501,37614,25502,37615,25503,37616,25505,37617,25508,37618,25510,37619,25515,37620,25519,37621,25521,37622,25522,37623,25525,37624,25526,37625,25529,37626,25531,37627,25533,37628,25535,37629,25536,37630,25537,37696,25538,37697,25539,37698,25541,37699,25543,37700,25544,37701,25546,37702,25547,37703,25548,37704,25553,37705,25555,37706,25556,37707,25557,37708,25559,37709,25560,37710,25561,37711,25562,37712,25563,37713,25564,37714,25565,37715,25567,37716,25570,37717,25572,37718,25573,37719,25574,37720,25575,37721,25576,37722,25579,37723,25580,37724,25582,37725,25583,37726,25584,37727,25585,37728,25587,37729,25589,37730,25591,37731,25593,37732,25594,37733,25595,37734,25596,37735,25598,37736,25603,37737,25604,37738,25606,37739,25607,37740,25608,37741,25609,37742,25610,37743,25613,37744,25614,37745,25617,37746,25618,37747,25621,37748,25622,37749,25623,37750,25624,37751,25625,37752,25626,37753,25629,37754,25631,37755,25634,37756,25635,37757,25636,37758,25637,37760,25639,37761,25640,37762,25641,37763,25643,37764,25646,37765,25647,37766,25648,37767,25649,37768,25650,37769,25651,37770,25653,37771,25654,37772,25655,37773,25656,37774,25657,37775,25659,37776,25660,37777,25662,37778,25664,37779,25666,37780,25667,37781,25673,37782,25675,37783,25676,37784,25677,37785,25678,37786,25679,37787,25680,37788,25681,37789,25683,37790,25685,37791,25686,37792,25687,37793,25689,37794,25690,37795,25691,37796,25692,37797,25693,37798,25695,37799,25696,37800,25697,37801,25698,37802,25699,37803,25700,37804,25701,37805,25702,37806,25704,37807,25706,37808,25707,37809,25708,37810,25710,37811,25711,37812,25712,37813,25713,37814,25714,37815,25715,37816,25716,37817,25717,37818,25718,37819,25719,37820,25723,37821,25724,37822,25725,37823,25726,37824,25727,37825,25728,37826,25729,37827,25731,37828,25734,37829,25736,37830,25737,37831,25738,37832,25739,37833,25740,37834,25741,37835,25742,37836,25743,37837,25744,37838,25747,37839,25748,37840,25751,37841,25752,37842,25754,37843,25755,37844,25756,37845,25757,37846,25759,37847,25760,37848,25761,37849,25762,37850,25763,37851,25765,37852,25766,37853,25767,37854,25768,37855,25770,37856,25771,37857,25775,37858,25777,37859,25778,37860,25779,37861,25780,37862,25782,37863,25785,37864,25787,37865,25789,37866,25790,37867,25791,37868,25793,37869,25795,37870,25796,37871,25798,37872,25799,37873,25800,37874,25801,37875,25802,37876,25803,37877,25804,37878,25807,37879,25809,37880,25811,37881,25812,37882,25813,37883,25814,37884,25817,37885,25818,37886,25819,37952,25820,37953,25821,37954,25823,37955,25824,37956,25825,37957,25827,37958,25829,37959,25831,37960,25832,37961,25833,37962,25834,37963,25835,37964,25836,37965,25837,37966,25838,37967,25839,37968,25840,37969,25841,37970,25842,37971,25843,37972,25844,37973,25845,37974,25846,37975,25847,37976,25848,37977,25849,37978,25850,37979,25851,37980,25852,37981,25853,37982,25854,37983,25855,37984,25857,37985,25858,37986,25859,37987,25860,37988,25861,37989,25862,37990,25863,37991,25864,37992,25866,37993,25867,37994,25868,37995,25869,37996,25870,37997,25871,37998,25872,37999,25873,38e3,25875,38001,25876,38002,25877,38003,25878,38004,25879,38005,25881,38006,25882,38007,25883,38008,25884,38009,25885,38010,25886,38011,25887,38012,25888,38013,25889,38014,25890,38016,25891,38017,25892,38018,25894,38019,25895,38020,25896,38021,25897,38022,25898,38023,25900,38024,25901,38025,25904,38026,25905,38027,25906,38028,25907,38029,25911,38030,25914,38031,25916,38032,25917,38033,25920,38034,25921,38035,25922,38036,25923,38037,25924,38038,25926,38039,25927,38040,25930,38041,25931,38042,25933,38043,25934,38044,25936,38045,25938,38046,25939,38047,25940,38048,25943,38049,25944,38050,25946,38051,25948,38052,25951,38053,25952,38054,25953,38055,25956,38056,25957,38057,25959,38058,25960,38059,25961,38060,25962,38061,25965,38062,25966,38063,25967,38064,25969,38065,25971,38066,25973,38067,25974,38068,25976,38069,25977,38070,25978,38071,25979,38072,25980,38073,25981,38074,25982,38075,25983,38076,25984,38077,25985,38078,25986,38079,25987,38080,25988,38081,25989,38082,25990,38083,25992,38084,25993,38085,25994,38086,25997,38087,25998,38088,25999,38089,26002,38090,26004,38091,26005,38092,26006,38093,26008,38094,26010,38095,26013,38096,26014,38097,26016,38098,26018,38099,26019,38100,26022,38101,26024,38102,26026,38103,26028,38104,26030,38105,26033,38106,26034,38107,26035,38108,26036,38109,26037,38110,26038,38111,26039,38112,26040,38113,26042,38114,26043,38115,26046,38116,26047,38117,26048,38118,26050,38119,26055,38120,26056,38121,26057,38122,26058,38123,26061,38124,26064,38125,26065,38126,26067,38127,26068,38128,26069,38129,26072,38130,26073,38131,26074,38132,26075,38133,26076,38134,26077,38135,26078,38136,26079,38137,26081,38138,26083,38139,26084,38140,26090,38141,26091,38142,26098,38208,26099,38209,26100,38210,26101,38211,26104,38212,26105,38213,26107,38214,26108,38215,26109,38216,26110,38217,26111,38218,26113,38219,26116,38220,26117,38221,26119,38222,26120,38223,26121,38224,26123,38225,26125,38226,26128,38227,26129,38228,26130,38229,26134,38230,26135,38231,26136,38232,26138,38233,26139,38234,26140,38235,26142,38236,26145,38237,26146,38238,26147,38239,26148,38240,26150,38241,26153,38242,26154,38243,26155,38244,26156,38245,26158,38246,26160,38247,26162,38248,26163,38249,26167,38250,26168,38251,26169,38252,26170,38253,26171,38254,26173,38255,26175,38256,26176,38257,26178,38258,26180,38259,26181,38260,26182,38261,26183,38262,26184,38263,26185,38264,26186,38265,26189,38266,26190,38267,26192,38268,26193,38269,26200,38270,26201,38272,26203,38273,26204,38274,26205,38275,26206,38276,26208,38277,26210,38278,26211,38279,26213,38280,26215,38281,26217,38282,26218,38283,26219,38284,26220,38285,26221,38286,26225,38287,26226,38288,26227,38289,26229,38290,26232,38291,26233,38292,26235,38293,26236,38294,26237,38295,26239,38296,26240,38297,26241,38298,26243,38299,26245,38300,26246,38301,26248,38302,26249,38303,26250,38304,26251,38305,26253,38306,26254,38307,26255,38308,26256,38309,26258,38310,26259,38311,26260,38312,26261,38313,26264,38314,26265,38315,26266,38316,26267,38317,26268,38318,26270,38319,26271,38320,26272,38321,26273,38322,26274,38323,26275,38324,26276,38325,26277,38326,26278,38327,26281,38328,26282,38329,26283,38330,26284,38331,26285,38332,26287,38333,26288,38334,26289,38335,26290,38336,26291,38337,26293,38338,26294,38339,26295,38340,26296,38341,26298,38342,26299,38343,26300,38344,26301,38345,26303,38346,26304,38347,26305,38348,26306,38349,26307,38350,26308,38351,26309,38352,26310,38353,26311,38354,26312,38355,26313,38356,26314,38357,26315,38358,26316,38359,26317,38360,26318,38361,26319,38362,26320,38363,26321,38364,26322,38365,26323,38366,26324,38367,26325,38368,26326,38369,26327,38370,26328,38371,26330,38372,26334,38373,26335,38374,26336,38375,26337,38376,26338,38377,26339,38378,26340,38379,26341,38380,26343,38381,26344,38382,26346,38383,26347,38384,26348,38385,26349,38386,26350,38387,26351,38388,26353,38389,26357,38390,26358,38391,26360,38392,26362,38393,26363,38394,26365,38395,26369,38396,26370,38397,26371,38398,26372,38464,26373,38465,26374,38466,26375,38467,26380,38468,26382,38469,26383,38470,26385,38471,26386,38472,26387,38473,26390,38474,26392,38475,26393,38476,26394,38477,26396,38478,26398,38479,26400,38480,26401,38481,26402,38482,26403,38483,26404,38484,26405,38485,26407,38486,26409,38487,26414,38488,26416,38489,26418,38490,26419,38491,26422,38492,26423,38493,26424,38494,26425,38495,26427,38496,26428,38497,26430,38498,26431,38499,26433,38500,26436,38501,26437,38502,26439,38503,26442,38504,26443,38505,26445,38506,26450,38507,26452,38508,26453,38509,26455,38510,26456,38511,26457,38512,26458,38513,26459,38514,26461,38515,26466,38516,26467,38517,26468,38518,26470,38519,26471,38520,26475,38521,26476,38522,26478,38523,26481,38524,26484,38525,26486,38526,26488,38528,26489,38529,26490,38530,26491,38531,26493,38532,26496,38533,26498,38534,26499,38535,26501,38536,26502,38537,26504,38538,26506,38539,26508,38540,26509,38541,26510,38542,26511,38543,26513,38544,26514,38545,26515,38546,26516,38547,26518,38548,26521,38549,26523,38550,26527,38551,26528,38552,26529,38553,26532,38554,26534,38555,26537,38556,26540,38557,26542,38558,26545,38559,26546,38560,26548,38561,26553,38562,26554,38563,26555,38564,26556,38565,26557,38566,26558,38567,26559,38568,26560,38569,26562,38570,26565,38571,26566,38572,26567,38573,26568,38574,26569,38575,26570,38576,26571,38577,26572,38578,26573,38579,26574,38580,26581,38581,26582,38582,26583,38583,26587,38584,26591,38585,26593,38586,26595,38587,26596,38588,26598,38589,26599,38590,26600,38591,26602,38592,26603,38593,26605,38594,26606,38595,26610,38596,26613,38597,26614,38598,26615,38599,26616,38600,26617,38601,26618,38602,26619,38603,26620,38604,26622,38605,26625,38606,26626,38607,26627,38608,26628,38609,26630,38610,26637,38611,26640,38612,26642,38613,26644,38614,26645,38615,26648,38616,26649,38617,26650,38618,26651,38619,26652,38620,26654,38621,26655,38622,26656,38623,26658,38624,26659,38625,26660,38626,26661,38627,26662,38628,26663,38629,26664,38630,26667,38631,26668,38632,26669,38633,26670,38634,26671,38635,26672,38636,26673,38637,26676,38638,26677,38639,26678,38640,26682,38641,26683,38642,26687,38643,26695,38644,26699,38645,26701,38646,26703,38647,26706,38648,26710,38649,26711,38650,26712,38651,26713,38652,26714,38653,26715,38654,26716,38720,26717,38721,26718,38722,26719,38723,26730,38724,26732,38725,26733,38726,26734,38727,26735,38728,26736,38729,26737,38730,26738,38731,26739,38732,26741,38733,26744,38734,26745,38735,26746,38736,26747,38737,26748,38738,26749,38739,26750,38740,26751,38741,26752,38742,26754,38743,26756,38744,26759,38745,26760,38746,26761,38747,26762,38748,26763,38749,26764,38750,26765,38751,26766,38752,26768,38753,26769,38754,26770,38755,26772,38756,26773,38757,26774,38758,26776,38759,26777,38760,26778,38761,26779,38762,26780,38763,26781,38764,26782,38765,26783,38766,26784,38767,26785,38768,26787,38769,26788,38770,26789,38771,26793,38772,26794,38773,26795,38774,26796,38775,26798,38776,26801,38777,26802,38778,26804,38779,26806,38780,26807,38781,26808,38782,26809,38784,26810,38785,26811,38786,26812,38787,26813,38788,26814,38789,26815,38790,26817,38791,26819,38792,26820,38793,26821,38794,26822,38795,26823,38796,26824,38797,26826,38798,26828,38799,26830,38800,26831,38801,26832,38802,26833,38803,26835,38804,26836,38805,26838,38806,26839,38807,26841,38808,26843,38809,26844,38810,26845,38811,26846,38812,26847,38813,26849,38814,26850,38815,26852,38816,26853,38817,26854,38818,26855,38819,26856,38820,26857,38821,26858,38822,26859,38823,26860,38824,26861,38825,26863,38826,26866,38827,26867,38828,26868,38829,26870,38830,26871,38831,26872,38832,26875,38833,26877,38834,26878,38835,26879,38836,26880,38837,26882,38838,26883,38839,26884,38840,26886,38841,26887,38842,26888,38843,26889,38844,26890,38845,26892,38846,26895,38847,26897,38848,26899,38849,26900,38850,26901,38851,26902,38852,26903,38853,26904,38854,26905,38855,26906,38856,26907,38857,26908,38858,26909,38859,26910,38860,26913,38861,26914,38862,26915,38863,26917,38864,26918,38865,26919,38866,26920,38867,26921,38868,26922,38869,26923,38870,26924,38871,26926,38872,26927,38873,26929,38874,26930,38875,26931,38876,26933,38877,26934,38878,26935,38879,26936,38880,26938,38881,26939,38882,26940,38883,26942,38884,26944,38885,26945,38886,26947,38887,26948,38888,26949,38889,26950,38890,26951,38891,26952,38892,26953,38893,26954,38894,26955,38895,26956,38896,26957,38897,26958,38898,26959,38899,26960,38900,26961,38901,26962,38902,26963,38903,26965,38904,26966,38905,26968,38906,26969,38907,26971,38908,26972,38909,26975,38910,26977,38976,26978,38977,26980,38978,26981,38979,26983,38980,26984,38981,26985,38982,26986,38983,26988,38984,26989,38985,26991,38986,26992,38987,26994,38988,26995,38989,26996,38990,26997,38991,26998,38992,27002,38993,27003,38994,27005,38995,27006,38996,27007,38997,27009,38998,27011,38999,27013,39e3,27018,39001,27019,39002,27020,39003,27022,39004,27023,39005,27024,39006,27025,39007,27026,39008,27027,39009,27030,39010,27031,39011,27033,39012,27034,39013,27037,39014,27038,39015,27039,39016,27040,39017,27041,39018,27042,39019,27043,39020,27044,39021,27045,39022,27046,39023,27049,39024,27050,39025,27052,39026,27054,39027,27055,39028,27056,39029,27058,39030,27059,39031,27061,39032,27062,39033,27064,39034,27065,39035,27066,39036,27068,39037,27069,39038,27070,39040,27071,39041,27072,39042,27074,39043,27075,39044,27076,39045,27077,39046,27078,39047,27079,39048,27080,39049,27081,39050,27083,39051,27085,39052,27087,39053,27089,39054,27090,39055,27091,39056,27093,39057,27094,39058,27095,39059,27096,39060,27097,39061,27098,39062,27100,39063,27101,39064,27102,39065,27105,39066,27106,39067,27107,39068,27108,39069,27109,39070,27110,39071,27111,39072,27112,39073,27113,39074,27114,39075,27115,39076,27116,39077,27118,39078,27119,39079,27120,39080,27121,39081,27123,39082,27124,39083,27125,39084,27126,39085,27127,39086,27128,39087,27129,39088,27130,39089,27131,39090,27132,39091,27134,39092,27136,39093,27137,39094,27138,39095,27139,39096,27140,39097,27141,39098,27142,39099,27143,39100,27144,39101,27145,39102,27147,39103,27148,39104,27149,39105,27150,39106,27151,39107,27152,39108,27153,39109,27154,39110,27155,39111,27156,39112,27157,39113,27158,39114,27161,39115,27162,39116,27163,39117,27164,39118,27165,39119,27166,39120,27168,39121,27170,39122,27171,39123,27172,39124,27173,39125,27174,39126,27175,39127,27177,39128,27179,39129,27180,39130,27181,39131,27182,39132,27184,39133,27186,39134,27187,39135,27188,39136,27190,39137,27191,39138,27192,39139,27193,39140,27194,39141,27195,39142,27196,39143,27199,39144,27200,39145,27201,39146,27202,39147,27203,39148,27205,39149,27206,39150,27208,39151,27209,39152,27210,39153,27211,39154,27212,39155,27213,39156,27214,39157,27215,39158,27217,39159,27218,39160,27219,39161,27220,39162,27221,39163,27222,39164,27223,39165,27226,39166,27228,39232,27229,39233,27230,39234,27231,39235,27232,39236,27234,39237,27235,39238,27236,39239,27238,39240,27239,39241,27240,39242,27241,39243,27242,39244,27243,39245,27244,39246,27245,39247,27246,39248,27247,39249,27248,39250,27250,39251,27251,39252,27252,39253,27253,39254,27254,39255,27255,39256,27256,39257,27258,39258,27259,39259,27261,39260,27262,39261,27263,39262,27265,39263,27266,39264,27267,39265,27269,39266,27270,39267,27271,39268,27272,39269,27273,39270,27274,39271,27275,39272,27276,39273,27277,39274,27279,39275,27282,39276,27283,39277,27284,39278,27285,39279,27286,39280,27288,39281,27289,39282,27290,39283,27291,39284,27292,39285,27293,39286,27294,39287,27295,39288,27297,39289,27298,39290,27299,39291,27300,39292,27301,39293,27302,39294,27303,39296,27304,39297,27306,39298,27309,39299,27310,39300,27311,39301,27312,39302,27313,39303,27314,39304,27315,39305,27316,39306,27317,39307,27318,39308,27319,39309,27320,39310,27321,39311,27322,39312,27323,39313,27324,39314,27325,39315,27326,39316,27327,39317,27328,39318,27329,39319,27330,39320,27331,39321,27332,39322,27333,39323,27334,39324,27335,39325,27336,39326,27337,39327,27338,39328,27339,39329,27340,39330,27341,39331,27342,39332,27343,39333,27344,39334,27345,39335,27346,39336,27347,39337,27348,39338,27349,39339,27350,39340,27351,39341,27352,39342,27353,39343,27354,39344,27355,39345,27356,39346,27357,39347,27358,39348,27359,39349,27360,39350,27361,39351,27362,39352,27363,39353,27364,39354,27365,39355,27366,39356,27367,39357,27368,39358,27369,39359,27370,39360,27371,39361,27372,39362,27373,39363,27374,39364,27375,39365,27376,39366,27377,39367,27378,39368,27379,39369,27380,39370,27381,39371,27382,39372,27383,39373,27384,39374,27385,39375,27386,39376,27387,39377,27388,39378,27389,39379,27390,39380,27391,39381,27392,39382,27393,39383,27394,39384,27395,39385,27396,39386,27397,39387,27398,39388,27399,39389,27400,39390,27401,39391,27402,39392,27403,39393,27404,39394,27405,39395,27406,39396,27407,39397,27408,39398,27409,39399,27410,39400,27411,39401,27412,39402,27413,39403,27414,39404,27415,39405,27416,39406,27417,39407,27418,39408,27419,39409,27420,39410,27421,39411,27422,39412,27423,39413,27429,39414,27430,39415,27432,39416,27433,39417,27434,39418,27435,39419,27436,39420,27437,39421,27438,39422,27439,39488,27440,39489,27441,39490,27443,39491,27444,39492,27445,39493,27446,39494,27448,39495,27451,39496,27452,39497,27453,39498,27455,39499,27456,39500,27457,39501,27458,39502,27460,39503,27461,39504,27464,39505,27466,39506,27467,39507,27469,39508,27470,39509,27471,39510,27472,39511,27473,39512,27474,39513,27475,39514,27476,39515,27477,39516,27478,39517,27479,39518,27480,39519,27482,39520,27483,39521,27484,39522,27485,39523,27486,39524,27487,39525,27488,39526,27489,39527,27496,39528,27497,39529,27499,39530,27500,39531,27501,39532,27502,39533,27503,39534,27504,39535,27505,39536,27506,39537,27507,39538,27508,39539,27509,39540,27510,39541,27511,39542,27512,39543,27514,39544,27517,39545,27518,39546,27519,39547,27520,39548,27525,39549,27528,39550,27532,39552,27534,39553,27535,39554,27536,39555,27537,39556,27540,39557,27541,39558,27543,39559,27544,39560,27545,39561,27548,39562,27549,39563,27550,39564,27551,39565,27552,39566,27554,39567,27555,39568,27556,39569,27557,39570,27558,39571,27559,39572,27560,39573,27561,39574,27563,39575,27564,39576,27565,39577,27566,39578,27567,39579,27568,39580,27569,39581,27570,39582,27574,39583,27576,39584,27577,39585,27578,39586,27579,39587,27580,39588,27581,39589,27582,39590,27584,39591,27587,39592,27588,39593,27590,39594,27591,39595,27592,39596,27593,39597,27594,39598,27596,39599,27598,39600,27600,39601,27601,39602,27608,39603,27610,39604,27612,39605,27613,39606,27614,39607,27615,39608,27616,39609,27618,39610,27619,39611,27620,39612,27621,39613,27622,39614,27623,39615,27624,39616,27625,39617,27628,39618,27629,39619,27630,39620,27632,39621,27633,39622,27634,39623,27636,39624,27638,39625,27639,39626,27640,39627,27642,39628,27643,39629,27644,39630,27646,39631,27647,39632,27648,39633,27649,39634,27650,39635,27651,39636,27652,39637,27656,39638,27657,39639,27658,39640,27659,39641,27660,39642,27662,39643,27666,39644,27671,39645,27676,39646,27677,39647,27678,39648,27680,39649,27683,39650,27685,39651,27691,39652,27692,39653,27693,39654,27697,39655,27699,39656,27702,39657,27703,39658,27705,39659,27706,39660,27707,39661,27708,39662,27710,39663,27711,39664,27715,39665,27716,39666,27717,39667,27720,39668,27723,39669,27724,39670,27725,39671,27726,39672,27727,39673,27729,39674,27730,39675,27731,39676,27734,39677,27736,39678,27737,39744,27738,39745,27746,39746,27747,39747,27749,39748,27750,39749,27751,39750,27755,39751,27756,39752,27757,39753,27758,39754,27759,39755,27761,39756,27763,39757,27765,39758,27767,39759,27768,39760,27770,39761,27771,39762,27772,39763,27775,39764,27776,39765,27780,39766,27783,39767,27786,39768,27787,39769,27789,39770,27790,39771,27793,39772,27794,39773,27797,39774,27798,39775,27799,39776,27800,39777,27802,39778,27804,39779,27805,39780,27806,39781,27808,39782,27810,39783,27816,39784,27820,39785,27823,39786,27824,39787,27828,39788,27829,39789,27830,39790,27831,39791,27834,39792,27840,39793,27841,39794,27842,39795,27843,39796,27846,39797,27847,39798,27848,39799,27851,39800,27853,39801,27854,39802,27855,39803,27857,39804,27858,39805,27864,39806,27865,39808,27866,39809,27868,39810,27869,39811,27871,39812,27876,39813,27878,39814,27879,39815,27881,39816,27884,39817,27885,39818,27890,39819,27892,39820,27897,39821,27903,39822,27904,39823,27906,39824,27907,39825,27909,39826,27910,39827,27912,39828,27913,39829,27914,39830,27917,39831,27919,39832,27920,39833,27921,39834,27923,39835,27924,39836,27925,39837,27926,39838,27928,39839,27932,39840,27933,39841,27935,39842,27936,39843,27937,39844,27938,39845,27939,39846,27940,39847,27942,39848,27944,39849,27945,39850,27948,39851,27949,39852,27951,39853,27952,39854,27956,39855,27958,39856,27959,39857,27960,39858,27962,39859,27967,39860,27968,39861,27970,39862,27972,39863,27977,39864,27980,39865,27984,39866,27989,39867,27990,39868,27991,39869,27992,39870,27995,39871,27997,39872,27999,39873,28001,39874,28002,39875,28004,39876,28005,39877,28007,39878,28008,39879,28011,39880,28012,39881,28013,39882,28016,39883,28017,39884,28018,39885,28019,39886,28021,39887,28022,39888,28025,39889,28026,39890,28027,39891,28029,39892,28030,39893,28031,39894,28032,39895,28033,39896,28035,39897,28036,39898,28038,39899,28039,39900,28042,39901,28043,39902,28045,39903,28047,39904,28048,39905,28050,39906,28054,39907,28055,39908,28056,39909,28057,39910,28058,39911,28060,39912,28066,39913,28069,39914,28076,39915,28077,39916,28080,39917,28081,39918,28083,39919,28084,39920,28086,39921,28087,39922,28089,39923,28090,39924,28091,39925,28092,39926,28093,39927,28094,39928,28097,39929,28098,39930,28099,39931,28104,39932,28105,39933,28106,39934,28109,4e4,28110,40001,28111,40002,28112,40003,28114,40004,28115,40005,28116,40006,28117,40007,28119,40008,28122,40009,28123,40010,28124,40011,28127,40012,28130,40013,28131,40014,28133,40015,28135,40016,28136,40017,28137,40018,28138,40019,28141,40020,28143,40021,28144,40022,28146,40023,28148,40024,28149,40025,28150,40026,28152,40027,28154,40028,28157,40029,28158,40030,28159,40031,28160,40032,28161,40033,28162,40034,28163,40035,28164,40036,28166,40037,28167,40038,28168,40039,28169,40040,28171,40041,28175,40042,28178,40043,28179,40044,28181,40045,28184,40046,28185,40047,28187,40048,28188,40049,28190,40050,28191,40051,28194,40052,28198,40053,28199,40054,28200,40055,28202,40056,28204,40057,28206,40058,28208,40059,28209,40060,28211,40061,28213,40062,28214,40064,28215,40065,28217,40066,28219,40067,28220,40068,28221,40069,28222,40070,28223,40071,28224,40072,28225,40073,28226,40074,28229,40075,28230,40076,28231,40077,28232,40078,28233,40079,28234,40080,28235,40081,28236,40082,28239,40083,28240,40084,28241,40085,28242,40086,28245,40087,28247,40088,28249,40089,28250,40090,28252,40091,28253,40092,28254,40093,28256,40094,28257,40095,28258,40096,28259,40097,28260,40098,28261,40099,28262,40100,28263,40101,28264,40102,28265,40103,28266,40104,28268,40105,28269,40106,28271,40107,28272,40108,28273,40109,28274,40110,28275,40111,28276,40112,28277,40113,28278,40114,28279,40115,28280,40116,28281,40117,28282,40118,28283,40119,28284,40120,28285,40121,28288,40122,28289,40123,28290,40124,28292,40125,28295,40126,28296,40127,28298,40128,28299,40129,28300,40130,28301,40131,28302,40132,28305,40133,28306,40134,28307,40135,28308,40136,28309,40137,28310,40138,28311,40139,28313,40140,28314,40141,28315,40142,28317,40143,28318,40144,28320,40145,28321,40146,28323,40147,28324,40148,28326,40149,28328,40150,28329,40151,28331,40152,28332,40153,28333,40154,28334,40155,28336,40156,28339,40157,28341,40158,28344,40159,28345,40160,28348,40161,28350,40162,28351,40163,28352,40164,28355,40165,28356,40166,28357,40167,28358,40168,28360,40169,28361,40170,28362,40171,28364,40172,28365,40173,28366,40174,28368,40175,28370,40176,28374,40177,28376,40178,28377,40179,28379,40180,28380,40181,28381,40182,28387,40183,28391,40184,28394,40185,28395,40186,28396,40187,28397,40188,28398,40189,28399,40190,28400,40256,28401,40257,28402,40258,28403,40259,28405,40260,28406,40261,28407,40262,28408,40263,28410,40264,28411,40265,28412,40266,28413,40267,28414,40268,28415,40269,28416,40270,28417,40271,28419,40272,28420,40273,28421,40274,28423,40275,28424,40276,28426,40277,28427,40278,28428,40279,28429,40280,28430,40281,28432,40282,28433,40283,28434,40284,28438,40285,28439,40286,28440,40287,28441,40288,28442,40289,28443,40290,28444,40291,28445,40292,28446,40293,28447,40294,28449,40295,28450,40296,28451,40297,28453,40298,28454,40299,28455,40300,28456,40301,28460,40302,28462,40303,28464,40304,28466,40305,28468,40306,28469,40307,28471,40308,28472,40309,28473,40310,28474,40311,28475,40312,28476,40313,28477,40314,28479,40315,28480,40316,28481,40317,28482,40318,28483,40320,28484,40321,28485,40322,28488,40323,28489,40324,28490,40325,28492,40326,28494,40327,28495,40328,28496,40329,28497,40330,28498,40331,28499,40332,28500,40333,28501,40334,28502,40335,28503,40336,28505,40337,28506,40338,28507,40339,28509,40340,28511,40341,28512,40342,28513,40343,28515,40344,28516,40345,28517,40346,28519,40347,28520,40348,28521,40349,28522,40350,28523,40351,28524,40352,28527,40353,28528,40354,28529,40355,28531,40356,28533,40357,28534,40358,28535,40359,28537,40360,28539,40361,28541,40362,28542,40363,28543,40364,28544,40365,28545,40366,28546,40367,28547,40368,28549,40369,28550,40370,28551,40371,28554,40372,28555,40373,28559,40374,28560,40375,28561,40376,28562,40377,28563,40378,28564,40379,28565,40380,28566,40381,28567,40382,28568,40383,28569,40384,28570,40385,28571,40386,28573,40387,28574,40388,28575,40389,28576,40390,28578,40391,28579,40392,28580,40393,28581,40394,28582,40395,28584,40396,28585,40397,28586,40398,28587,40399,28588,40400,28589,40401,28590,40402,28591,40403,28592,40404,28593,40405,28594,40406,28596,40407,28597,40408,28599,40409,28600,40410,28602,40411,28603,40412,28604,40413,28605,40414,28606,40415,28607,40416,28609,40417,28611,40418,28612,40419,28613,40420,28614,40421,28615,40422,28616,40423,28618,40424,28619,40425,28620,40426,28621,40427,28622,40428,28623,40429,28624,40430,28627,40431,28628,40432,28629,40433,28630,40434,28631,40435,28632,40436,28633,40437,28634,40438,28635,40439,28636,40440,28637,40441,28639,40442,28642,40443,28643,40444,28644,40445,28645,40446,28646,40512,28647,40513,28648,40514,28649,40515,28650,40516,28651,40517,28652,40518,28653,40519,28656,40520,28657,40521,28658,40522,28659,40523,28660,40524,28661,40525,28662,40526,28663,40527,28664,40528,28665,40529,28666,40530,28667,40531,28668,40532,28669,40533,28670,40534,28671,40535,28672,40536,28673,40537,28674,40538,28675,40539,28676,40540,28677,40541,28678,40542,28679,40543,28680,40544,28681,40545,28682,40546,28683,40547,28684,40548,28685,40549,28686,40550,28687,40551,28688,40552,28690,40553,28691,40554,28692,40555,28693,40556,28694,40557,28695,40558,28696,40559,28697,40560,28700,40561,28701,40562,28702,40563,28703,40564,28704,40565,28705,40566,28706,40567,28708,40568,28709,40569,28710,40570,28711,40571,28712,40572,28713,40573,28714,40574,28715,40576,28716,40577,28717,40578,28718,40579,28719,40580,28720,40581,28721,40582,28722,40583,28723,40584,28724,40585,28726,40586,28727,40587,28728,40588,28730,40589,28731,40590,28732,40591,28733,40592,28734,40593,28735,40594,28736,40595,28737,40596,28738,40597,28739,40598,28740,40599,28741,40600,28742,40601,28743,40602,28744,40603,28745,40604,28746,40605,28747,40606,28749,40607,28750,40608,28752,40609,28753,40610,28754,40611,28755,40612,28756,40613,28757,40614,28758,40615,28759,40616,28760,40617,28761,40618,28762,40619,28763,40620,28764,40621,28765,40622,28767,40623,28768,40624,28769,40625,28770,40626,28771,40627,28772,40628,28773,40629,28774,40630,28775,40631,28776,40632,28777,40633,28778,40634,28782,40635,28785,40636,28786,40637,28787,40638,28788,40639,28791,40640,28793,40641,28794,40642,28795,40643,28797,40644,28801,40645,28802,40646,28803,40647,28804,40648,28806,40649,28807,40650,28808,40651,28811,40652,28812,40653,28813,40654,28815,40655,28816,40656,28817,40657,28819,40658,28823,40659,28824,40660,28826,40661,28827,40662,28830,40663,28831,40664,28832,40665,28833,40666,28834,40667,28835,40668,28836,40669,28837,40670,28838,40671,28839,40672,28840,40673,28841,40674,28842,40675,28848,40676,28850,40677,28852,40678,28853,40679,28854,40680,28858,40681,28862,40682,28863,40683,28868,40684,28869,40685,28870,40686,28871,40687,28873,40688,28875,40689,28876,40690,28877,40691,28878,40692,28879,40693,28880,40694,28881,40695,28882,40696,28883,40697,28884,40698,28885,40699,28886,40700,28887,40701,28890,40702,28892,40768,28893,40769,28894,40770,28896,40771,28897,40772,28898,40773,28899,40774,28901,40775,28906,40776,28910,40777,28912,40778,28913,40779,28914,40780,28915,40781,28916,40782,28917,40783,28918,40784,28920,40785,28922,40786,28923,40787,28924,40788,28926,40789,28927,40790,28928,40791,28929,40792,28930,40793,28931,40794,28932,40795,28933,40796,28934,40797,28935,40798,28936,40799,28939,40800,28940,40801,28941,40802,28942,40803,28943,40804,28945,40805,28946,40806,28948,40807,28951,40808,28955,40809,28956,40810,28957,40811,28958,40812,28959,40813,28960,40814,28961,40815,28962,40816,28963,40817,28964,40818,28965,40819,28967,40820,28968,40821,28969,40822,28970,40823,28971,40824,28972,40825,28973,40826,28974,40827,28978,40828,28979,40829,28980,40830,28981,40832,28983,40833,28984,40834,28985,40835,28986,40836,28987,40837,28988,40838,28989,40839,28990,40840,28991,40841,28992,40842,28993,40843,28994,40844,28995,40845,28996,40846,28998,40847,28999,40848,29e3,40849,29001,40850,29003,40851,29005,40852,29007,40853,29008,40854,29009,40855,29010,40856,29011,40857,29012,40858,29013,40859,29014,40860,29015,40861,29016,40862,29017,40863,29018,40864,29019,40865,29021,40866,29023,40867,29024,40868,29025,40869,29026,40870,29027,40871,29029,40872,29033,40873,29034,40874,29035,40875,29036,40876,29037,40877,29039,40878,29040,40879,29041,40880,29044,40881,29045,40882,29046,40883,29047,40884,29049,40885,29051,40886,29052,40887,29054,40888,29055,40889,29056,40890,29057,40891,29058,40892,29059,40893,29061,40894,29062,40895,29063,40896,29064,40897,29065,40898,29067,40899,29068,40900,29069,40901,29070,40902,29072,40903,29073,40904,29074,40905,29075,40906,29077,40907,29078,40908,29079,40909,29082,40910,29083,40911,29084,40912,29085,40913,29086,40914,29089,40915,29090,40916,29091,40917,29092,40918,29093,40919,29094,40920,29095,40921,29097,40922,29098,40923,29099,40924,29101,40925,29102,40926,29103,40927,29104,40928,29105,40929,29106,40930,29108,40931,29110,40932,29111,40933,29112,40934,29114,40935,29115,40936,29116,40937,29117,40938,29118,40939,29119,40940,29120,40941,29121,40942,29122,40943,29124,40944,29125,40945,29126,40946,29127,40947,29128,40948,29129,40949,29130,40950,29131,40951,29132,40952,29133,40953,29135,40954,29136,40955,29137,40956,29138,40957,29139,40958,29142,41024,29143,41025,29144,41026,29145,41027,29146,41028,29147,41029,29148,41030,29149,41031,29150,41032,29151,41033,29153,41034,29154,41035,29155,41036,29156,41037,29158,41038,29160,41039,29161,41040,29162,41041,29163,41042,29164,41043,29165,41044,29167,41045,29168,41046,29169,41047,29170,41048,29171,41049,29172,41050,29173,41051,29174,41052,29175,41053,29176,41054,29178,41055,29179,41056,29180,41057,29181,41058,29182,41059,29183,41060,29184,41061,29185,41062,29186,41063,29187,41064,29188,41065,29189,41066,29191,41067,29192,41068,29193,41069,29194,41070,29195,41071,29196,41072,29197,41073,29198,41074,29199,41075,29200,41076,29201,41077,29202,41078,29203,41079,29204,41080,29205,41081,29206,41082,29207,41083,29208,41084,29209,41085,29210,41086,29211,41088,29212,41089,29214,41090,29215,41091,29216,41092,29217,41093,29218,41094,29219,41095,29220,41096,29221,41097,29222,41098,29223,41099,29225,41100,29227,41101,29229,41102,29230,41103,29231,41104,29234,41105,29235,41106,29236,41107,29242,41108,29244,41109,29246,41110,29248,41111,29249,41112,29250,41113,29251,41114,29252,41115,29253,41116,29254,41117,29257,41118,29258,41119,29259,41120,29262,41121,29263,41122,29264,41123,29265,41124,29267,41125,29268,41126,29269,41127,29271,41128,29272,41129,29274,41130,29276,41131,29278,41132,29280,41133,29283,41134,29284,41135,29285,41136,29288,41137,29290,41138,29291,41139,29292,41140,29293,41141,29296,41142,29297,41143,29299,41144,29300,41145,29302,41146,29303,41147,29304,41148,29307,41149,29308,41150,29309,41151,29314,41152,29315,41153,29317,41154,29318,41155,29319,41156,29320,41157,29321,41158,29324,41159,29326,41160,29328,41161,29329,41162,29331,41163,29332,41164,29333,41165,29334,41166,29335,41167,29336,41168,29337,41169,29338,41170,29339,41171,29340,41172,29341,41173,29342,41174,29344,41175,29345,41176,29346,41177,29347,41178,29348,41179,29349,41180,29350,41181,29351,41182,29352,41183,29353,41184,29354,41185,29355,41186,29358,41187,29361,41188,29362,41189,29363,41190,29365,41191,29370,41192,29371,41193,29372,41194,29373,41195,29374,41196,29375,41197,29376,41198,29381,41199,29382,41200,29383,41201,29385,41202,29386,41203,29387,41204,29388,41205,29391,41206,29393,41207,29395,41208,29396,41209,29397,41210,29398,41211,29400,41212,29402,41213,29403,41214,58566,41280,58567,41281,58568,41282,58569,41283,58570,41284,58571,41285,58572,41286,58573,41287,58574,41288,58575,41289,58576,41290,58577,41291,58578,41292,58579,41293,58580,41294,58581,41295,58582,41296,58583,41297,58584,41298,58585,41299,58586,41300,58587,41301,58588,41302,58589,41303,58590,41304,58591,41305,58592,41306,58593,41307,58594,41308,58595,41309,58596,41310,58597,41311,58598,41312,58599,41313,58600,41314,58601,41315,58602,41316,58603,41317,58604,41318,58605,41319,58606,41320,58607,41321,58608,41322,58609,41323,58610,41324,58611,41325,58612,41326,58613,41327,58614,41328,58615,41329,58616,41330,58617,41331,58618,41332,58619,41333,58620,41334,58621,41335,58622,41336,58623,41337,58624,41338,58625,41339,58626,41340,58627,41341,58628,41342,58629,41344,58630,41345,58631,41346,58632,41347,58633,41348,58634,41349,58635,41350,58636,41351,58637,41352,58638,41353,58639,41354,58640,41355,58641,41356,58642,41357,58643,41358,58644,41359,58645,41360,58646,41361,58647,41362,58648,41363,58649,41364,58650,41365,58651,41366,58652,41367,58653,41368,58654,41369,58655,41370,58656,41371,58657,41372,58658,41373,58659,41374,58660,41375,58661,41376,12288,41377,12289,41378,12290,41379,183,41380,713,41381,711,41382,168,41383,12291,41384,12293,41385,8212,41386,65374,41387,8214,41388,8230,41389,8216,41390,8217,41391,8220,41392,8221,41393,12308,41394,12309,41395,12296,41396,12297,41397,12298,41398,12299,41399,12300,41400,12301,41401,12302,41402,12303,41403,12310,41404,12311,41405,12304,41406,12305,41407,177,41408,215,41409,247,41410,8758,41411,8743,41412,8744,41413,8721,41414,8719,41415,8746,41416,8745,41417,8712,41418,8759,41419,8730,41420,8869,41421,8741,41422,8736,41423,8978,41424,8857,41425,8747,41426,8750,41427,8801,41428,8780,41429,8776,41430,8765,41431,8733,41432,8800,41433,8814,41434,8815,41435,8804,41436,8805,41437,8734,41438,8757,41439,8756,41440,9794,41441,9792,41442,176,41443,8242,41444,8243,41445,8451,41446,65284,41447,164,41448,65504,41449,65505,41450,8240,41451,167,41452,8470,41453,9734,41454,9733,41455,9675,41456,9679,41457,9678,41458,9671,41459,9670,41460,9633,41461,9632,41462,9651,41463,9650,41464,8251,41465,8594,41466,8592,41467,8593,41468,8595,41469,12307,41470,58662,41536,58663,41537,58664,41538,58665,41539,58666,41540,58667,41541,58668,41542,58669,41543,58670,41544,58671,41545,58672,41546,58673,41547,58674,41548,58675,41549,58676,41550,58677,41551,58678,41552,58679,41553,58680,41554,58681,41555,58682,41556,58683,41557,58684,41558,58685,41559,58686,41560,58687,41561,58688,41562,58689,41563,58690,41564,58691,41565,58692,41566,58693,41567,58694,41568,58695,41569,58696,41570,58697,41571,58698,41572,58699,41573,58700,41574,58701,41575,58702,41576,58703,41577,58704,41578,58705,41579,58706,41580,58707,41581,58708,41582,58709,41583,58710,41584,58711,41585,58712,41586,58713,41587,58714,41588,58715,41589,58716,41590,58717,41591,58718,41592,58719,41593,58720,41594,58721,41595,58722,41596,58723,41597,58724,41598,58725,41600,58726,41601,58727,41602,58728,41603,58729,41604,58730,41605,58731,41606,58732,41607,58733,41608,58734,41609,58735,41610,58736,41611,58737,41612,58738,41613,58739,41614,58740,41615,58741,41616,58742,41617,58743,41618,58744,41619,58745,41620,58746,41621,58747,41622,58748,41623,58749,41624,58750,41625,58751,41626,58752,41627,58753,41628,58754,41629,58755,41630,58756,41631,58757,41632,8560,41633,8561,41634,8562,41635,8563,41636,8564,41637,8565,41638,8566,41639,8567,41640,8568,41641,8569,41642,59238,41643,59239,41644,59240,41645,59241,41646,59242,41647,59243,41648,9352,41649,9353,41650,9354,41651,9355,41652,9356,41653,9357,41654,9358,41655,9359,41656,9360,41657,9361,41658,9362,41659,9363,41660,9364,41661,9365,41662,9366,41663,9367,41664,9368,41665,9369,41666,9370,41667,9371,41668,9332,41669,9333,41670,9334,41671,9335,41672,9336,41673,9337,41674,9338,41675,9339,41676,9340,41677,9341,41678,9342,41679,9343,41680,9344,41681,9345,41682,9346,41683,9347,41684,9348,41685,9349,41686,9350,41687,9351,41688,9312,41689,9313,41690,9314,41691,9315,41692,9316,41693,9317,41694,9318,41695,9319,41696,9320,41697,9321,41698,59244,41699,59245,41700,12832,41701,12833,41702,12834,41703,12835,41704,12836,41705,12837,41706,12838,41707,12839,41708,12840,41709,12841,41710,59246,41711,59247,41712,8544,41713,8545,41714,8546,41715,8547,41716,8548,41717,8549,41718,8550,41719,8551,41720,8552,41721,8553,41722,8554,41723,8555,41724,59248,41725,59249,41726,58758,41792,58759,41793,58760,41794,58761,41795,58762,41796,58763,41797,58764,41798,58765,41799,58766,41800,58767,41801,58768,41802,58769,41803,58770,41804,58771,41805,58772,41806,58773,41807,58774,41808,58775,41809,58776,41810,58777,41811,58778,41812,58779,41813,58780,41814,58781,41815,58782,41816,58783,41817,58784,41818,58785,41819,58786,41820,58787,41821,58788,41822,58789,41823,58790,41824,58791,41825,58792,41826,58793,41827,58794,41828,58795,41829,58796,41830,58797,41831,58798,41832,58799,41833,58800,41834,58801,41835,58802,41836,58803,41837,58804,41838,58805,41839,58806,41840,58807,41841,58808,41842,58809,41843,58810,41844,58811,41845,58812,41846,58813,41847,58814,41848,58815,41849,58816,41850,58817,41851,58818,41852,58819,41853,58820,41854,58821,41856,58822,41857,58823,41858,58824,41859,58825,41860,58826,41861,58827,41862,58828,41863,58829,41864,58830,41865,58831,41866,58832,41867,58833,41868,58834,41869,58835,41870,58836,41871,58837,41872,58838,41873,58839,41874,58840,41875,58841,41876,58842,41877,58843,41878,58844,41879,58845,41880,58846,41881,58847,41882,58848,41883,58849,41884,58850,41885,58851,41886,58852,41887,58853,41888,65281,41889,65282,41890,65283,41891,65509,41892,65285,41893,65286,41894,65287,41895,65288,41896,65289,41897,65290,41898,65291,41899,65292,41900,65293,41901,65294,41902,65295,41903,65296,41904,65297,41905,65298,41906,65299,41907,65300,41908,65301,41909,65302,41910,65303,41911,65304,41912,65305,41913,65306,41914,65307,41915,65308,41916,65309,41917,65310,41918,65311,41919,65312,41920,65313,41921,65314,41922,65315,41923,65316,41924,65317,41925,65318,41926,65319,41927,65320,41928,65321,41929,65322,41930,65323,41931,65324,41932,65325,41933,65326,41934,65327,41935,65328,41936,65329,41937,65330,41938,65331,41939,65332,41940,65333,41941,65334,41942,65335,41943,65336,41944,65337,41945,65338,41946,65339,41947,65340,41948,65341,41949,65342,41950,65343,41951,65344,41952,65345,41953,65346,41954,65347,41955,65348,41956,65349,41957,65350,41958,65351,41959,65352,41960,65353,41961,65354,41962,65355,41963,65356,41964,65357,41965,65358,41966,65359,41967,65360,41968,65361,41969,65362,41970,65363,41971,65364,41972,65365,41973,65366,41974,65367,41975,65368,41976,65369,41977,65370,41978,65371,41979,65372,41980,65373,41981,65507,41982,58854,42048,58855,42049,58856,42050,58857,42051,58858,42052,58859,42053,58860,42054,58861,42055,58862,42056,58863,42057,58864,42058,58865,42059,58866,42060,58867,42061,58868,42062,58869,42063,58870,42064,58871,42065,58872,42066,58873,42067,58874,42068,58875,42069,58876,42070,58877,42071,58878,42072,58879,42073,58880,42074,58881,42075,58882,42076,58883,42077,58884,42078,58885,42079,58886,42080,58887,42081,58888,42082,58889,42083,58890,42084,58891,42085,58892,42086,58893,42087,58894,42088,58895,42089,58896,42090,58897,42091,58898,42092,58899,42093,58900,42094,58901,42095,58902,42096,58903,42097,58904,42098,58905,42099,58906,42100,58907,42101,58908,42102,58909,42103,58910,42104,58911,42105,58912,42106,58913,42107,58914,42108,58915,42109,58916,42110,58917,42112,58918,42113,58919,42114,58920,42115,58921,42116,58922,42117,58923,42118,58924,42119,58925,42120,58926,42121,58927,42122,58928,42123,58929,42124,58930,42125,58931,42126,58932,42127,58933,42128,58934,42129,58935,42130,58936,42131,58937,42132,58938,42133,58939,42134,58940,42135,58941,42136,58942,42137,58943,42138,58944,42139,58945,42140,58946,42141,58947,42142,58948,42143,58949,42144,12353,42145,12354,42146,12355,42147,12356,42148,12357,42149,12358,42150,12359,42151,12360,42152,12361,42153,12362,42154,12363,42155,12364,42156,12365,42157,12366,42158,12367,42159,12368,42160,12369,42161,12370,42162,12371,42163,12372,42164,12373,42165,12374,42166,12375,42167,12376,42168,12377,42169,12378,42170,12379,42171,12380,42172,12381,42173,12382,42174,12383,42175,12384,42176,12385,42177,12386,42178,12387,42179,12388,42180,12389,42181,12390,42182,12391,42183,12392,42184,12393,42185,12394,42186,12395,42187,12396,42188,12397,42189,12398,42190,12399,42191,12400,42192,12401,42193,12402,42194,12403,42195,12404,42196,12405,42197,12406,42198,12407,42199,12408,42200,12409,42201,12410,42202,12411,42203,12412,42204,12413,42205,12414,42206,12415,42207,12416,42208,12417,42209,12418,42210,12419,42211,12420,42212,12421,42213,12422,42214,12423,42215,12424,42216,12425,42217,12426,42218,12427,42219,12428,42220,12429,42221,12430,42222,12431,42223,12432,42224,12433,42225,12434,42226,12435,42227,59250,42228,59251,42229,59252,42230,59253,42231,59254,42232,59255,42233,59256,42234,59257,42235,59258,42236,59259,42237,59260,42238,58950,42304,58951,42305,58952,42306,58953,42307,58954,42308,58955,42309,58956,42310,58957,42311,58958,42312,58959,42313,58960,42314,58961,42315,58962,42316,58963,42317,58964,42318,58965,42319,58966,42320,58967,42321,58968,42322,58969,42323,58970,42324,58971,42325,58972,42326,58973,42327,58974,42328,58975,42329,58976,42330,58977,42331,58978,42332,58979,42333,58980,42334,58981,42335,58982,42336,58983,42337,58984,42338,58985,42339,58986,42340,58987,42341,58988,42342,58989,42343,58990,42344,58991,42345,58992,42346,58993,42347,58994,42348,58995,42349,58996,42350,58997,42351,58998,42352,58999,42353,59e3,42354,59001,42355,59002,42356,59003,42357,59004,42358,59005,42359,59006,42360,59007,42361,59008,42362,59009,42363,59010,42364,59011,42365,59012,42366,59013,42368,59014,42369,59015,42370,59016,42371,59017,42372,59018,42373,59019,42374,59020,42375,59021,42376,59022,42377,59023,42378,59024,42379,59025,42380,59026,42381,59027,42382,59028,42383,59029,42384,59030,42385,59031,42386,59032,42387,59033,42388,59034,42389,59035,42390,59036,42391,59037,42392,59038,42393,59039,42394,59040,42395,59041,42396,59042,42397,59043,42398,59044,42399,59045,42400,12449,42401,12450,42402,12451,42403,12452,42404,12453,42405,12454,42406,12455,42407,12456,42408,12457,42409,12458,42410,12459,42411,12460,42412,12461,42413,12462,42414,12463,42415,12464,42416,12465,42417,12466,42418,12467,42419,12468,42420,12469,42421,12470,42422,12471,42423,12472,42424,12473,42425,12474,42426,12475,42427,12476,42428,12477,42429,12478,42430,12479,42431,12480,42432,12481,42433,12482,42434,12483,42435,12484,42436,12485,42437,12486,42438,12487,42439,12488,42440,12489,42441,12490,42442,12491,42443,12492,42444,12493,42445,12494,42446,12495,42447,12496,42448,12497,42449,12498,42450,12499,42451,12500,42452,12501,42453,12502,42454,12503,42455,12504,42456,12505,42457,12506,42458,12507,42459,12508,42460,12509,42461,12510,42462,12511,42463,12512,42464,12513,42465,12514,42466,12515,42467,12516,42468,12517,42469,12518,42470,12519,42471,12520,42472,12521,42473,12522,42474,12523,42475,12524,42476,12525,42477,12526,42478,12527,42479,12528,42480,12529,42481,12530,42482,12531,42483,12532,42484,12533,42485,12534,42486,59261,42487,59262,42488,59263,42489,59264,42490,59265,42491,59266,42492,59267,42493,59268,42494,59046,42560,59047,42561,59048,42562,59049,42563,59050,42564,59051,42565,59052,42566,59053,42567,59054,42568,59055,42569,59056,42570,59057,42571,59058,42572,59059,42573,59060,42574,59061,42575,59062,42576,59063,42577,59064,42578,59065,42579,59066,42580,59067,42581,59068,42582,59069,42583,59070,42584,59071,42585,59072,42586,59073,42587,59074,42588,59075,42589,59076,42590,59077,42591,59078,42592,59079,42593,59080,42594,59081,42595,59082,42596,59083,42597,59084,42598,59085,42599,59086,42600,59087,42601,59088,42602,59089,42603,59090,42604,59091,42605,59092,42606,59093,42607,59094,42608,59095,42609,59096,42610,59097,42611,59098,42612,59099,42613,59100,42614,59101,42615,59102,42616,59103,42617,59104,42618,59105,42619,59106,42620,59107,42621,59108,42622,59109,42624,59110,42625,59111,42626,59112,42627,59113,42628,59114,42629,59115,42630,59116,42631,59117,42632,59118,42633,59119,42634,59120,42635,59121,42636,59122,42637,59123,42638,59124,42639,59125,42640,59126,42641,59127,42642,59128,42643,59129,42644,59130,42645,59131,42646,59132,42647,59133,42648,59134,42649,59135,42650,59136,42651,59137,42652,59138,42653,59139,42654,59140,42655,59141,42656,913,42657,914,42658,915,42659,916,42660,917,42661,918,42662,919,42663,920,42664,921,42665,922,42666,923,42667,924,42668,925,42669,926,42670,927,42671,928,42672,929,42673,931,42674,932,42675,933,42676,934,42677,935,42678,936,42679,937,42680,59269,42681,59270,42682,59271,42683,59272,42684,59273,42685,59274,42686,59275,42687,59276,42688,945,42689,946,42690,947,42691,948,42692,949,42693,950,42694,951,42695,952,42696,953,42697,954,42698,955,42699,956,42700,957,42701,958,42702,959,42703,960,42704,961,42705,963,42706,964,42707,965,42708,966,42709,967,42710,968,42711,969,42712,59277,42713,59278,42714,59279,42715,59280,42716,59281,42717,59282,42718,59283,42719,65077,42720,65078,42721,65081,42722,65082,42723,65087,42724,65088,42725,65085,42726,65086,42727,65089,42728,65090,42729,65091,42730,65092,42731,59284,42732,59285,42733,65083,42734,65084,42735,65079,42736,65080,42737,65073,42738,59286,42739,65075,42740,65076,42741,59287,42742,59288,42743,59289,42744,59290,42745,59291,42746,59292,42747,59293,42748,59294,42749,59295,42750,59142,42816,59143,42817,59144,42818,59145,42819,59146,42820,59147,42821,59148,42822,59149,42823,59150,42824,59151,42825,59152,42826,59153,42827,59154,42828,59155,42829,59156,42830,59157,42831,59158,42832,59159,42833,59160,42834,59161,42835,59162,42836,59163,42837,59164,42838,59165,42839,59166,42840,59167,42841,59168,42842,59169,42843,59170,42844,59171,42845,59172,42846,59173,42847,59174,42848,59175,42849,59176,42850,59177,42851,59178,42852,59179,42853,59180,42854,59181,42855,59182,42856,59183,42857,59184,42858,59185,42859,59186,42860,59187,42861,59188,42862,59189,42863,59190,42864,59191,42865,59192,42866,59193,42867,59194,42868,59195,42869,59196,42870,59197,42871,59198,42872,59199,42873,59200,42874,59201,42875,59202,42876,59203,42877,59204,42878,59205,42880,59206,42881,59207,42882,59208,42883,59209,42884,59210,42885,59211,42886,59212,42887,59213,42888,59214,42889,59215,42890,59216,42891,59217,42892,59218,42893,59219,42894,59220,42895,59221,42896,59222,42897,59223,42898,59224,42899,59225,42900,59226,42901,59227,42902,59228,42903,59229,42904,59230,42905,59231,42906,59232,42907,59233,42908,59234,42909,59235,42910,59236,42911,59237,42912,1040,42913,1041,42914,1042,42915,1043,42916,1044,42917,1045,42918,1025,42919,1046,42920,1047,42921,1048,42922,1049,42923,1050,42924,1051,42925,1052,42926,1053,42927,1054,42928,1055,42929,1056,42930,1057,42931,1058,42932,1059,42933,1060,42934,1061,42935,1062,42936,1063,42937,1064,42938,1065,42939,1066,42940,1067,42941,1068,42942,1069,42943,1070,42944,1071,42945,59296,42946,59297,42947,59298,42948,59299,42949,59300,42950,59301,42951,59302,42952,59303,42953,59304,42954,59305,42955,59306,42956,59307,42957,59308,42958,59309,42959,59310,42960,1072,42961,1073,42962,1074,42963,1075,42964,1076,42965,1077,42966,1105,42967,1078,42968,1079,42969,1080,42970,1081,42971,1082,42972,1083,42973,1084,42974,1085,42975,1086,42976,1087,42977,1088,42978,1089,42979,1090,42980,1091,42981,1092,42982,1093,42983,1094,42984,1095,42985,1096,42986,1097,42987,1098,42988,1099,42989,1100,42990,1101,42991,1102,42992,1103,42993,59311,42994,59312,42995,59313,42996,59314,42997,59315,42998,59316,42999,59317,43e3,59318,43001,59319,43002,59320,43003,59321,43004,59322,43005,59323,43006,714,43072,715,43073,729,43074,8211,43075,8213,43076,8229,43077,8245,43078,8453,43079,8457,43080,8598,43081,8599,43082,8600,43083,8601,43084,8725,43085,8735,43086,8739,43087,8786,43088,8806,43089,8807,43090,8895,43091,9552,43092,9553,43093,9554,43094,9555,43095,9556,43096,9557,43097,9558,43098,9559,43099,9560,43100,9561,43101,9562,43102,9563,43103,9564,43104,9565,43105,9566,43106,9567,43107,9568,43108,9569,43109,9570,43110,9571,43111,9572,43112,9573,43113,9574,43114,9575,43115,9576,43116,9577,43117,9578,43118,9579,43119,9580,43120,9581,43121,9582,43122,9583,43123,9584,43124,9585,43125,9586,43126,9587,43127,9601,43128,9602,43129,9603,43130,9604,43131,9605,43132,9606,43133,9607,43134,9608,43136,9609,43137,9610,43138,9611,43139,9612,43140,9613,43141,9614,43142,9615,43143,9619,43144,9620,43145,9621,43146,9660,43147,9661,43148,9698,43149,9699,43150,9700,43151,9701,43152,9737,43153,8853,43154,12306,43155,12317,43156,12318,43157,59324,43158,59325,43159,59326,43160,59327,43161,59328,43162,59329,43163,59330,43164,59331,43165,59332,43166,59333,43167,59334,43168,257,43169,225,43170,462,43171,224,43172,275,43173,233,43174,283,43175,232,43176,299,43177,237,43178,464,43179,236,43180,333,43181,243,43182,466,43183,242,43184,363,43185,250,43186,468,43187,249,43188,470,43189,472,43190,474,43191,476,43192,252,43193,234,43194,593,43195,59335,43196,324,43197,328,43198,59336,43199,609,43200,59337,43201,59338,43202,59339,43203,59340,43204,12549,43205,12550,43206,12551,43207,12552,43208,12553,43209,12554,43210,12555,43211,12556,43212,12557,43213,12558,43214,12559,43215,12560,43216,12561,43217,12562,43218,12563,43219,12564,43220,12565,43221,12566,43222,12567,43223,12568,43224,12569,43225,12570,43226,12571,43227,12572,43228,12573,43229,12574,43230,12575,43231,12576,43232,12577,43233,12578,43234,12579,43235,12580,43236,12581,43237,12582,43238,12583,43239,12584,43240,12585,43241,59341,43242,59342,43243,59343,43244,59344,43245,59345,43246,59346,43247,59347,43248,59348,43249,59349,43250,59350,43251,59351,43252,59352,43253,59353,43254,59354,43255,59355,43256,59356,43257,59357,43258,59358,43259,59359,43260,59360,43261,59361,43262,12321,43328,12322,43329,12323,43330,12324,43331,12325,43332,12326,43333,12327,43334,12328,43335,12329,43336,12963,43337,13198,43338,13199,43339,13212,43340,13213,43341,13214,43342,13217,43343,13252,43344,13262,43345,13265,43346,13266,43347,13269,43348,65072,43349,65506,43350,65508,43351,59362,43352,8481,43353,12849,43354,59363,43355,8208,43356,59364,43357,59365,43358,59366,43359,12540,43360,12443,43361,12444,43362,12541,43363,12542,43364,12294,43365,12445,43366,12446,43367,65097,43368,65098,43369,65099,43370,65100,43371,65101,43372,65102,43373,65103,43374,65104,43375,65105,43376,65106,43377,65108,43378,65109,43379,65110,43380,65111,43381,65113,43382,65114,43383,65115,43384,65116,43385,65117,43386,65118,43387,65119,43388,65120,43389,65121,43390,65122,43392,65123,43393,65124,43394,65125,43395,65126,43396,65128,43397,65129,43398,65130,43399,65131,43400,59367,43401,59368,43402,59369,43403,59370,43404,59371,43405,59372,43406,59373,43407,59374,43408,59375,43409,59376,43410,59377,43411,59378,43412,59379,43413,12295,43414,59380,43415,59381,43416,59382,43417,59383,43418,59384,43419,59385,43420,59386,43421,59387,43422,59388,43423,59389,43424,59390,43425,59391,43426,59392,43427,9472,43428,9473,43429,9474,43430,9475,43431,9476,43432,9477,43433,9478,43434,9479,43435,9480,43436,9481,43437,9482,43438,9483,43439,9484,43440,9485,43441,9486,43442,9487,43443,9488,43444,9489,43445,9490,43446,9491,43447,9492,43448,9493,43449,9494,43450,9495,43451,9496,43452,9497,43453,9498,43454,9499,43455,9500,43456,9501,43457,9502,43458,9503,43459,9504,43460,9505,43461,9506,43462,9507,43463,9508,43464,9509,43465,9510,43466,9511,43467,9512,43468,9513,43469,9514,43470,9515,43471,9516,43472,9517,43473,9518,43474,9519,43475,9520,43476,9521,43477,9522,43478,9523,43479,9524,43480,9525,43481,9526,43482,9527,43483,9528,43484,9529,43485,9530,43486,9531,43487,9532,43488,9533,43489,9534,43490,9535,43491,9536,43492,9537,43493,9538,43494,9539,43495,9540,43496,9541,43497,9542,43498,9543,43499,9544,43500,9545,43501,9546,43502,9547,43503,59393,43504,59394,43505,59395,43506,59396,43507,59397,43508,59398,43509,59399,43510,59400,43511,59401,43512,59402,43513,59403,43514,59404,43515,59405,43516,59406,43517,59407,43518,29404,43584,29405,43585,29407,43586,29410,43587,29411,43588,29412,43589,29413,43590,29414,43591,29415,43592,29418,43593,29419,43594,29429,43595,29430,43596,29433,43597,29437,43598,29438,43599,29439,43600,29440,43601,29442,43602,29444,43603,29445,43604,29446,43605,29447,43606,29448,43607,29449,43608,29451,43609,29452,43610,29453,43611,29455,43612,29456,43613,29457,43614,29458,43615,29460,43616,29464,43617,29465,43618,29466,43619,29471,43620,29472,43621,29475,43622,29476,43623,29478,43624,29479,43625,29480,43626,29485,43627,29487,43628,29488,43629,29490,43630,29491,43631,29493,43632,29494,43633,29498,43634,29499,43635,29500,43636,29501,43637,29504,43638,29505,43639,29506,43640,29507,43641,29508,43642,29509,43643,29510,43644,29511,43645,29512,43646,29513,43648,29514,43649,29515,43650,29516,43651,29518,43652,29519,43653,29521,43654,29523,43655,29524,43656,29525,43657,29526,43658,29528,43659,29529,43660,29530,43661,29531,43662,29532,43663,29533,43664,29534,43665,29535,43666,29537,43667,29538,43668,29539,43669,29540,43670,29541,43671,29542,43672,29543,43673,29544,43674,29545,43675,29546,43676,29547,43677,29550,43678,29552,43679,29553,43680,57344,43681,57345,43682,57346,43683,57347,43684,57348,43685,57349,43686,57350,43687,57351,43688,57352,43689,57353,43690,57354,43691,57355,43692,57356,43693,57357,43694,57358,43695,57359,43696,57360,43697,57361,43698,57362,43699,57363,43700,57364,43701,57365,43702,57366,43703,57367,43704,57368,43705,57369,43706,57370,43707,57371,43708,57372,43709,57373,43710,57374,43711,57375,43712,57376,43713,57377,43714,57378,43715,57379,43716,57380,43717,57381,43718,57382,43719,57383,43720,57384,43721,57385,43722,57386,43723,57387,43724,57388,43725,57389,43726,57390,43727,57391,43728,57392,43729,57393,43730,57394,43731,57395,43732,57396,43733,57397,43734,57398,43735,57399,43736,57400,43737,57401,43738,57402,43739,57403,43740,57404,43741,57405,43742,57406,43743,57407,43744,57408,43745,57409,43746,57410,43747,57411,43748,57412,43749,57413,43750,57414,43751,57415,43752,57416,43753,57417,43754,57418,43755,57419,43756,57420,43757,57421,43758,57422,43759,57423,43760,57424,43761,57425,43762,57426,43763,57427,43764,57428,43765,57429,43766,57430,43767,57431,43768,57432,43769,57433,43770,57434,43771,57435,43772,57436,43773,57437,43774,29554,43840,29555,43841,29556,43842,29557,43843,29558,43844,29559,43845,29560,43846,29561,43847,29562,43848,29563,43849,29564,43850,29565,43851,29567,43852,29568,43853,29569,43854,29570,43855,29571,43856,29573,43857,29574,43858,29576,43859,29578,43860,29580,43861,29581,43862,29583,43863,29584,43864,29586,43865,29587,43866,29588,43867,29589,43868,29591,43869,29592,43870,29593,43871,29594,43872,29596,43873,29597,43874,29598,43875,29600,43876,29601,43877,29603,43878,29604,43879,29605,43880,29606,43881,29607,43882,29608,43883,29610,43884,29612,43885,29613,43886,29617,43887,29620,43888,29621,43889,29622,43890,29624,43891,29625,43892,29628,43893,29629,43894,29630,43895,29631,43896,29633,43897,29635,43898,29636,43899,29637,43900,29638,43901,29639,43902,29643,43904,29644,43905,29646,43906,29650,43907,29651,43908,29652,43909,29653,43910,29654,43911,29655,43912,29656,43913,29658,43914,29659,43915,29660,43916,29661,43917,29663,43918,29665,43919,29666,43920,29667,43921,29668,43922,29670,43923,29672,43924,29674,43925,29675,43926,29676,43927,29678,43928,29679,43929,29680,43930,29681,43931,29683,43932,29684,43933,29685,43934,29686,43935,29687,43936,57438,43937,57439,43938,57440,43939,57441,43940,57442,43941,57443,43942,57444,43943,57445,43944,57446,43945,57447,43946,57448,43947,57449,43948,57450,43949,57451,43950,57452,43951,57453,43952,57454,43953,57455,43954,57456,43955,57457,43956,57458,43957,57459,43958,57460,43959,57461,43960,57462,43961,57463,43962,57464,43963,57465,43964,57466,43965,57467,43966,57468,43967,57469,43968,57470,43969,57471,43970,57472,43971,57473,43972,57474,43973,57475,43974,57476,43975,57477,43976,57478,43977,57479,43978,57480,43979,57481,43980,57482,43981,57483,43982,57484,43983,57485,43984,57486,43985,57487,43986,57488,43987,57489,43988,57490,43989,57491,43990,57492,43991,57493,43992,57494,43993,57495,43994,57496,43995,57497,43996,57498,43997,57499,43998,57500,43999,57501,44e3,57502,44001,57503,44002,57504,44003,57505,44004,57506,44005,57507,44006,57508,44007,57509,44008,57510,44009,57511,44010,57512,44011,57513,44012,57514,44013,57515,44014,57516,44015,57517,44016,57518,44017,57519,44018,57520,44019,57521,44020,57522,44021,57523,44022,57524,44023,57525,44024,57526,44025,57527,44026,57528,44027,57529,44028,57530,44029,57531,44030,29688,44096,29689,44097,29690,44098,29691,44099,29692,44100,29693,44101,29694,44102,29695,44103,29696,44104,29697,44105,29698,44106,29700,44107,29703,44108,29704,44109,29707,44110,29708,44111,29709,44112,29710,44113,29713,44114,29714,44115,29715,44116,29716,44117,29717,44118,29718,44119,29719,44120,29720,44121,29721,44122,29724,44123,29725,44124,29726,44125,29727,44126,29728,44127,29729,44128,29731,44129,29732,44130,29735,44131,29737,44132,29739,44133,29741,44134,29743,44135,29745,44136,29746,44137,29751,44138,29752,44139,29753,44140,29754,44141,29755,44142,29757,44143,29758,44144,29759,44145,29760,44146,29762,44147,29763,44148,29764,44149,29765,44150,29766,44151,29767,44152,29768,44153,29769,44154,29770,44155,29771,44156,29772,44157,29773,44158,29774,44160,29775,44161,29776,44162,29777,44163,29778,44164,29779,44165,29780,44166,29782,44167,29784,44168,29789,44169,29792,44170,29793,44171,29794,44172,29795,44173,29796,44174,29797,44175,29798,44176,29799,44177,29800,44178,29801,44179,29802,44180,29803,44181,29804,44182,29806,44183,29807,44184,29809,44185,29810,44186,29811,44187,29812,44188,29813,44189,29816,44190,29817,44191,29818,44192,57532,44193,57533,44194,57534,44195,57535,44196,57536,44197,57537,44198,57538,44199,57539,44200,57540,44201,57541,44202,57542,44203,57543,44204,57544,44205,57545,44206,57546,44207,57547,44208,57548,44209,57549,44210,57550,44211,57551,44212,57552,44213,57553,44214,57554,44215,57555,44216,57556,44217,57557,44218,57558,44219,57559,44220,57560,44221,57561,44222,57562,44223,57563,44224,57564,44225,57565,44226,57566,44227,57567,44228,57568,44229,57569,44230,57570,44231,57571,44232,57572,44233,57573,44234,57574,44235,57575,44236,57576,44237,57577,44238,57578,44239,57579,44240,57580,44241,57581,44242,57582,44243,57583,44244,57584,44245,57585,44246,57586,44247,57587,44248,57588,44249,57589,44250,57590,44251,57591,44252,57592,44253,57593,44254,57594,44255,57595,44256,57596,44257,57597,44258,57598,44259,57599,44260,57600,44261,57601,44262,57602,44263,57603,44264,57604,44265,57605,44266,57606,44267,57607,44268,57608,44269,57609,44270,57610,44271,57611,44272,57612,44273,57613,44274,57614,44275,57615,44276,57616,44277,57617,44278,57618,44279,57619,44280,57620,44281,57621,44282,57622,44283,57623,44284,57624,44285,57625,44286,29819,44352,29820,44353,29821,44354,29823,44355,29826,44356,29828,44357,29829,44358,29830,44359,29832,44360,29833,44361,29834,44362,29836,44363,29837,44364,29839,44365,29841,44366,29842,44367,29843,44368,29844,44369,29845,44370,29846,44371,29847,44372,29848,44373,29849,44374,29850,44375,29851,44376,29853,44377,29855,44378,29856,44379,29857,44380,29858,44381,29859,44382,29860,44383,29861,44384,29862,44385,29866,44386,29867,44387,29868,44388,29869,44389,29870,44390,29871,44391,29872,44392,29873,44393,29874,44394,29875,44395,29876,44396,29877,44397,29878,44398,29879,44399,29880,44400,29881,44401,29883,44402,29884,44403,29885,44404,29886,44405,29887,44406,29888,44407,29889,44408,29890,44409,29891,44410,29892,44411,29893,44412,29894,44413,29895,44414,29896,44416,29897,44417,29898,44418,29899,44419,29900,44420,29901,44421,29902,44422,29903,44423,29904,44424,29905,44425,29907,44426,29908,44427,29909,44428,29910,44429,29911,44430,29912,44431,29913,44432,29914,44433,29915,44434,29917,44435,29919,44436,29921,44437,29925,44438,29927,44439,29928,44440,29929,44441,29930,44442,29931,44443,29932,44444,29933,44445,29936,44446,29937,44447,29938,44448,57626,44449,57627,44450,57628,44451,57629,44452,57630,44453,57631,44454,57632,44455,57633,44456,57634,44457,57635,44458,57636,44459,57637,44460,57638,44461,57639,44462,57640,44463,57641,44464,57642,44465,57643,44466,57644,44467,57645,44468,57646,44469,57647,44470,57648,44471,57649,44472,57650,44473,57651,44474,57652,44475,57653,44476,57654,44477,57655,44478,57656,44479,57657,44480,57658,44481,57659,44482,57660,44483,57661,44484,57662,44485,57663,44486,57664,44487,57665,44488,57666,44489,57667,44490,57668,44491,57669,44492,57670,44493,57671,44494,57672,44495,57673,44496,57674,44497,57675,44498,57676,44499,57677,44500,57678,44501,57679,44502,57680,44503,57681,44504,57682,44505,57683,44506,57684,44507,57685,44508,57686,44509,57687,44510,57688,44511,57689,44512,57690,44513,57691,44514,57692,44515,57693,44516,57694,44517,57695,44518,57696,44519,57697,44520,57698,44521,57699,44522,57700,44523,57701,44524,57702,44525,57703,44526,57704,44527,57705,44528,57706,44529,57707,44530,57708,44531,57709,44532,57710,44533,57711,44534,57712,44535,57713,44536,57714,44537,57715,44538,57716,44539,57717,44540,57718,44541,57719,44542,29939,44608,29941,44609,29944,44610,29945,44611,29946,44612,29947,44613,29948,44614,29949,44615,29950,44616,29952,44617,29953,44618,29954,44619,29955,44620,29957,44621,29958,44622,29959,44623,29960,44624,29961,44625,29962,44626,29963,44627,29964,44628,29966,44629,29968,44630,29970,44631,29972,44632,29973,44633,29974,44634,29975,44635,29979,44636,29981,44637,29982,44638,29984,44639,29985,44640,29986,44641,29987,44642,29988,44643,29990,44644,29991,44645,29994,44646,29998,44647,30004,44648,30006,44649,30009,44650,30012,44651,30013,44652,30015,44653,30017,44654,30018,44655,30019,44656,30020,44657,30022,44658,30023,44659,30025,44660,30026,44661,30029,44662,30032,44663,30033,44664,30034,44665,30035,44666,30037,44667,30038,44668,30039,44669,30040,44670,30045,44672,30046,44673,30047,44674,30048,44675,30049,44676,30050,44677,30051,44678,30052,44679,30055,44680,30056,44681,30057,44682,30059,44683,30060,44684,30061,44685,30062,44686,30063,44687,30064,44688,30065,44689,30067,44690,30069,44691,30070,44692,30071,44693,30074,44694,30075,44695,30076,44696,30077,44697,30078,44698,30080,44699,30081,44700,30082,44701,30084,44702,30085,44703,30087,44704,57720,44705,57721,44706,57722,44707,57723,44708,57724,44709,57725,44710,57726,44711,57727,44712,57728,44713,57729,44714,57730,44715,57731,44716,57732,44717,57733,44718,57734,44719,57735,44720,57736,44721,57737,44722,57738,44723,57739,44724,57740,44725,57741,44726,57742,44727,57743,44728,57744,44729,57745,44730,57746,44731,57747,44732,57748,44733,57749,44734,57750,44735,57751,44736,57752,44737,57753,44738,57754,44739,57755,44740,57756,44741,57757,44742,57758,44743,57759,44744,57760,44745,57761,44746,57762,44747,57763,44748,57764,44749,57765,44750,57766,44751,57767,44752,57768,44753,57769,44754,57770,44755,57771,44756,57772,44757,57773,44758,57774,44759,57775,44760,57776,44761,57777,44762,57778,44763,57779,44764,57780,44765,57781,44766,57782,44767,57783,44768,57784,44769,57785,44770,57786,44771,57787,44772,57788,44773,57789,44774,57790,44775,57791,44776,57792,44777,57793,44778,57794,44779,57795,44780,57796,44781,57797,44782,57798,44783,57799,44784,57800,44785,57801,44786,57802,44787,57803,44788,57804,44789,57805,44790,57806,44791,57807,44792,57808,44793,57809,44794,57810,44795,57811,44796,57812,44797,57813,44798,30088,44864,30089,44865,30090,44866,30092,44867,30093,44868,30094,44869,30096,44870,30099,44871,30101,44872,30104,44873,30107,44874,30108,44875,30110,44876,30114,44877,30118,44878,30119,44879,30120,44880,30121,44881,30122,44882,30125,44883,30134,44884,30135,44885,30138,44886,30139,44887,30143,44888,30144,44889,30145,44890,30150,44891,30155,44892,30156,44893,30158,44894,30159,44895,30160,44896,30161,44897,30163,44898,30167,44899,30169,44900,30170,44901,30172,44902,30173,44903,30175,44904,30176,44905,30177,44906,30181,44907,30185,44908,30188,44909,30189,44910,30190,44911,30191,44912,30194,44913,30195,44914,30197,44915,30198,44916,30199,44917,30200,44918,30202,44919,30203,44920,30205,44921,30206,44922,30210,44923,30212,44924,30214,44925,30215,44926,30216,44928,30217,44929,30219,44930,30221,44931,30222,44932,30223,44933,30225,44934,30226,44935,30227,44936,30228,44937,30230,44938,30234,44939,30236,44940,30237,44941,30238,44942,30241,44943,30243,44944,30247,44945,30248,44946,30252,44947,30254,44948,30255,44949,30257,44950,30258,44951,30262,44952,30263,44953,30265,44954,30266,44955,30267,44956,30269,44957,30273,44958,30274,44959,30276,44960,57814,44961,57815,44962,57816,44963,57817,44964,57818,44965,57819,44966,57820,44967,57821,44968,57822,44969,57823,44970,57824,44971,57825,44972,57826,44973,57827,44974,57828,44975,57829,44976,57830,44977,57831,44978,57832,44979,57833,44980,57834,44981,57835,44982,57836,44983,57837,44984,57838,44985,57839,44986,57840,44987,57841,44988,57842,44989,57843,44990,57844,44991,57845,44992,57846,44993,57847,44994,57848,44995,57849,44996,57850,44997,57851,44998,57852,44999,57853,45e3,57854,45001,57855,45002,57856,45003,57857,45004,57858,45005,57859,45006,57860,45007,57861,45008,57862,45009,57863,45010,57864,45011,57865,45012,57866,45013,57867,45014,57868,45015,57869,45016,57870,45017,57871,45018,57872,45019,57873,45020,57874,45021,57875,45022,57876,45023,57877,45024,57878,45025,57879,45026,57880,45027,57881,45028,57882,45029,57883,45030,57884,45031,57885,45032,57886,45033,57887,45034,57888,45035,57889,45036,57890,45037,57891,45038,57892,45039,57893,45040,57894,45041,57895,45042,57896,45043,57897,45044,57898,45045,57899,45046,57900,45047,57901,45048,57902,45049,57903,45050,57904,45051,57905,45052,57906,45053,57907,45054,30277,45120,30278,45121,30279,45122,30280,45123,30281,45124,30282,45125,30283,45126,30286,45127,30287,45128,30288,45129,30289,45130,30290,45131,30291,45132,30293,45133,30295,45134,30296,45135,30297,45136,30298,45137,30299,45138,30301,45139,30303,45140,30304,45141,30305,45142,30306,45143,30308,45144,30309,45145,30310,45146,30311,45147,30312,45148,30313,45149,30314,45150,30316,45151,30317,45152,30318,45153,30320,45154,30321,45155,30322,45156,30323,45157,30324,45158,30325,45159,30326,45160,30327,45161,30329,45162,30330,45163,30332,45164,30335,45165,30336,45166,30337,45167,30339,45168,30341,45169,30345,45170,30346,45171,30348,45172,30349,45173,30351,45174,30352,45175,30354,45176,30356,45177,30357,45178,30359,45179,30360,45180,30362,45181,30363,45182,30364,45184,30365,45185,30366,45186,30367,45187,30368,45188,30369,45189,30370,45190,30371,45191,30373,45192,30374,45193,30375,45194,30376,45195,30377,45196,30378,45197,30379,45198,30380,45199,30381,45200,30383,45201,30384,45202,30387,45203,30389,45204,30390,45205,30391,45206,30392,45207,30393,45208,30394,45209,30395,45210,30396,45211,30397,45212,30398,45213,30400,45214,30401,45215,30403,45216,21834,45217,38463,45218,22467,45219,25384,45220,21710,45221,21769,45222,21696,45223,30353,45224,30284,45225,34108,45226,30702,45227,33406,45228,30861,45229,29233,45230,38552,45231,38797,45232,27688,45233,23433,45234,20474,45235,25353,45236,26263,45237,23736,45238,33018,45239,26696,45240,32942,45241,26114,45242,30414,45243,20985,45244,25942,45245,29100,45246,32753,45247,34948,45248,20658,45249,22885,45250,25034,45251,28595,45252,33453,45253,25420,45254,25170,45255,21485,45256,21543,45257,31494,45258,20843,45259,30116,45260,24052,45261,25300,45262,36299,45263,38774,45264,25226,45265,32793,45266,22365,45267,38712,45268,32610,45269,29240,45270,30333,45271,26575,45272,30334,45273,25670,45274,20336,45275,36133,45276,25308,45277,31255,45278,26001,45279,29677,45280,25644,45281,25203,45282,33324,45283,39041,45284,26495,45285,29256,45286,25198,45287,25292,45288,20276,45289,29923,45290,21322,45291,21150,45292,32458,45293,37030,45294,24110,45295,26758,45296,27036,45297,33152,45298,32465,45299,26834,45300,30917,45301,34444,45302,38225,45303,20621,45304,35876,45305,33502,45306,32990,45307,21253,45308,35090,45309,21093,45310,30404,45376,30407,45377,30409,45378,30411,45379,30412,45380,30419,45381,30421,45382,30425,45383,30426,45384,30428,45385,30429,45386,30430,45387,30432,45388,30433,45389,30434,45390,30435,45391,30436,45392,30438,45393,30439,45394,30440,45395,30441,45396,30442,45397,30443,45398,30444,45399,30445,45400,30448,45401,30451,45402,30453,45403,30454,45404,30455,45405,30458,45406,30459,45407,30461,45408,30463,45409,30464,45410,30466,45411,30467,45412,30469,45413,30470,45414,30474,45415,30476,45416,30478,45417,30479,45418,30480,45419,30481,45420,30482,45421,30483,45422,30484,45423,30485,45424,30486,45425,30487,45426,30488,45427,30491,45428,30492,45429,30493,45430,30494,45431,30497,45432,30499,45433,30500,45434,30501,45435,30503,45436,30506,45437,30507,45438,30508,45440,30510,45441,30512,45442,30513,45443,30514,45444,30515,45445,30516,45446,30521,45447,30523,45448,30525,45449,30526,45450,30527,45451,30530,45452,30532,45453,30533,45454,30534,45455,30536,45456,30537,45457,30538,45458,30539,45459,30540,45460,30541,45461,30542,45462,30543,45463,30546,45464,30547,45465,30548,45466,30549,45467,30550,45468,30551,45469,30552,45470,30553,45471,30556,45472,34180,45473,38649,45474,20445,45475,22561,45476,39281,45477,23453,45478,25265,45479,25253,45480,26292,45481,35961,45482,40077,45483,29190,45484,26479,45485,30865,45486,24754,45487,21329,45488,21271,45489,36744,45490,32972,45491,36125,45492,38049,45493,20493,45494,29384,45495,22791,45496,24811,45497,28953,45498,34987,45499,22868,45500,33519,45501,26412,45502,31528,45503,23849,45504,32503,45505,29997,45506,27893,45507,36454,45508,36856,45509,36924,45510,40763,45511,27604,45512,37145,45513,31508,45514,24444,45515,30887,45516,34006,45517,34109,45518,27605,45519,27609,45520,27606,45521,24065,45522,24199,45523,30201,45524,38381,45525,25949,45526,24330,45527,24517,45528,36767,45529,22721,45530,33218,45531,36991,45532,38491,45533,38829,45534,36793,45535,32534,45536,36140,45537,25153,45538,20415,45539,21464,45540,21342,45541,36776,45542,36777,45543,36779,45544,36941,45545,26631,45546,24426,45547,33176,45548,34920,45549,40150,45550,24971,45551,21035,45552,30250,45553,24428,45554,25996,45555,28626,45556,28392,45557,23486,45558,25672,45559,20853,45560,20912,45561,26564,45562,19993,45563,31177,45564,39292,45565,28851,45566,30557,45632,30558,45633,30559,45634,30560,45635,30564,45636,30567,45637,30569,45638,30570,45639,30573,45640,30574,45641,30575,45642,30576,45643,30577,45644,30578,45645,30579,45646,30580,45647,30581,45648,30582,45649,30583,45650,30584,45651,30586,45652,30587,45653,30588,45654,30593,45655,30594,45656,30595,45657,30598,45658,30599,45659,30600,45660,30601,45661,30602,45662,30603,45663,30607,45664,30608,45665,30611,45666,30612,45667,30613,45668,30614,45669,30615,45670,30616,45671,30617,45672,30618,45673,30619,45674,30620,45675,30621,45676,30622,45677,30625,45678,30627,45679,30628,45680,30630,45681,30632,45682,30635,45683,30637,45684,30638,45685,30639,45686,30641,45687,30642,45688,30644,45689,30646,45690,30647,45691,30648,45692,30649,45693,30650,45694,30652,45696,30654,45697,30656,45698,30657,45699,30658,45700,30659,45701,30660,45702,30661,45703,30662,45704,30663,45705,30664,45706,30665,45707,30666,45708,30667,45709,30668,45710,30670,45711,30671,45712,30672,45713,30673,45714,30674,45715,30675,45716,30676,45717,30677,45718,30678,45719,30680,45720,30681,45721,30682,45722,30685,45723,30686,45724,30687,45725,30688,45726,30689,45727,30692,45728,30149,45729,24182,45730,29627,45731,33760,45732,25773,45733,25320,45734,38069,45735,27874,45736,21338,45737,21187,45738,25615,45739,38082,45740,31636,45741,20271,45742,24091,45743,33334,45744,33046,45745,33162,45746,28196,45747,27850,45748,39539,45749,25429,45750,21340,45751,21754,45752,34917,45753,22496,45754,19981,45755,24067,45756,27493,45757,31807,45758,37096,45759,24598,45760,25830,45761,29468,45762,35009,45763,26448,45764,25165,45765,36130,45766,30572,45767,36393,45768,37319,45769,24425,45770,33756,45771,34081,45772,39184,45773,21442,45774,34453,45775,27531,45776,24813,45777,24808,45778,28799,45779,33485,45780,33329,45781,20179,45782,27815,45783,34255,45784,25805,45785,31961,45786,27133,45787,26361,45788,33609,45789,21397,45790,31574,45791,20391,45792,20876,45793,27979,45794,23618,45795,36461,45796,25554,45797,21449,45798,33580,45799,33590,45800,26597,45801,30900,45802,25661,45803,23519,45804,23700,45805,24046,45806,35815,45807,25286,45808,26612,45809,35962,45810,25600,45811,25530,45812,34633,45813,39307,45814,35863,45815,32544,45816,38130,45817,20135,45818,38416,45819,39076,45820,26124,45821,29462,45822,30694,45888,30696,45889,30698,45890,30703,45891,30704,45892,30705,45893,30706,45894,30708,45895,30709,45896,30711,45897,30713,45898,30714,45899,30715,45900,30716,45901,30723,45902,30724,45903,30725,45904,30726,45905,30727,45906,30728,45907,30730,45908,30731,45909,30734,45910,30735,45911,30736,45912,30739,45913,30741,45914,30745,45915,30747,45916,30750,45917,30752,45918,30753,45919,30754,45920,30756,45921,30760,45922,30762,45923,30763,45924,30766,45925,30767,45926,30769,45927,30770,45928,30771,45929,30773,45930,30774,45931,30781,45932,30783,45933,30785,45934,30786,45935,30787,45936,30788,45937,30790,45938,30792,45939,30793,45940,30794,45941,30795,45942,30797,45943,30799,45944,30801,45945,30803,45946,30804,45947,30808,45948,30809,45949,30810,45950,30811,45952,30812,45953,30814,45954,30815,45955,30816,45956,30817,45957,30818,45958,30819,45959,30820,45960,30821,45961,30822,45962,30823,45963,30824,45964,30825,45965,30831,45966,30832,45967,30833,45968,30834,45969,30835,45970,30836,45971,30837,45972,30838,45973,30840,45974,30841,45975,30842,45976,30843,45977,30845,45978,30846,45979,30847,45980,30848,45981,30849,45982,30850,45983,30851,45984,22330,45985,23581,45986,24120,45987,38271,45988,20607,45989,32928,45990,21378,45991,25950,45992,30021,45993,21809,45994,20513,45995,36229,45996,25220,45997,38046,45998,26397,45999,22066,46e3,28526,46001,24034,46002,21557,46003,28818,46004,36710,46005,25199,46006,25764,46007,25507,46008,24443,46009,28552,46010,37108,46011,33251,46012,36784,46013,23576,46014,26216,46015,24561,46016,27785,46017,38472,46018,36225,46019,34924,46020,25745,46021,31216,46022,22478,46023,27225,46024,25104,46025,21576,46026,20056,46027,31243,46028,24809,46029,28548,46030,35802,46031,25215,46032,36894,46033,39563,46034,31204,46035,21507,46036,30196,46037,25345,46038,21273,46039,27744,46040,36831,46041,24347,46042,39536,46043,32827,46044,40831,46045,20360,46046,23610,46047,36196,46048,32709,46049,26021,46050,28861,46051,20805,46052,20914,46053,34411,46054,23815,46055,23456,46056,25277,46057,37228,46058,30068,46059,36364,46060,31264,46061,24833,46062,31609,46063,20167,46064,32504,46065,30597,46066,19985,46067,33261,46068,21021,46069,20986,46070,27249,46071,21416,46072,36487,46073,38148,46074,38607,46075,28353,46076,38500,46077,26970,46078,30852,46144,30853,46145,30854,46146,30856,46147,30858,46148,30859,46149,30863,46150,30864,46151,30866,46152,30868,46153,30869,46154,30870,46155,30873,46156,30877,46157,30878,46158,30880,46159,30882,46160,30884,46161,30886,46162,30888,46163,30889,46164,30890,46165,30891,46166,30892,46167,30893,46168,30894,46169,30895,46170,30901,46171,30902,46172,30903,46173,30904,46174,30906,46175,30907,46176,30908,46177,30909,46178,30911,46179,30912,46180,30914,46181,30915,46182,30916,46183,30918,46184,30919,46185,30920,46186,30924,46187,30925,46188,30926,46189,30927,46190,30929,46191,30930,46192,30931,46193,30934,46194,30935,46195,30936,46196,30938,46197,30939,46198,30940,46199,30941,46200,30942,46201,30943,46202,30944,46203,30945,46204,30946,46205,30947,46206,30948,46208,30949,46209,30950,46210,30951,46211,30953,46212,30954,46213,30955,46214,30957,46215,30958,46216,30959,46217,30960,46218,30961,46219,30963,46220,30965,46221,30966,46222,30968,46223,30969,46224,30971,46225,30972,46226,30973,46227,30974,46228,30975,46229,30976,46230,30978,46231,30979,46232,30980,46233,30982,46234,30983,46235,30984,46236,30985,46237,30986,46238,30987,46239,30988,46240,30784,46241,20648,46242,30679,46243,25616,46244,35302,46245,22788,46246,25571,46247,24029,46248,31359,46249,26941,46250,20256,46251,33337,46252,21912,46253,20018,46254,30126,46255,31383,46256,24162,46257,24202,46258,38383,46259,21019,46260,21561,46261,28810,46262,25462,46263,38180,46264,22402,46265,26149,46266,26943,46267,37255,46268,21767,46269,28147,46270,32431,46271,34850,46272,25139,46273,32496,46274,30133,46275,33576,46276,30913,46277,38604,46278,36766,46279,24904,46280,29943,46281,35789,46282,27492,46283,21050,46284,36176,46285,27425,46286,32874,46287,33905,46288,22257,46289,21254,46290,20174,46291,19995,46292,20945,46293,31895,46294,37259,46295,31751,46296,20419,46297,36479,46298,31713,46299,31388,46300,25703,46301,23828,46302,20652,46303,33030,46304,30209,46305,31929,46306,28140,46307,32736,46308,26449,46309,23384,46310,23544,46311,30923,46312,25774,46313,25619,46314,25514,46315,25387,46316,38169,46317,25645,46318,36798,46319,31572,46320,30249,46321,25171,46322,22823,46323,21574,46324,27513,46325,20643,46326,25140,46327,24102,46328,27526,46329,20195,46330,36151,46331,34955,46332,24453,46333,36910,46334,30989,46400,30990,46401,30991,46402,30992,46403,30993,46404,30994,46405,30996,46406,30997,46407,30998,46408,30999,46409,31e3,46410,31001,46411,31002,46412,31003,46413,31004,46414,31005,46415,31007,46416,31008,46417,31009,46418,31010,46419,31011,46420,31013,46421,31014,46422,31015,46423,31016,46424,31017,46425,31018,46426,31019,46427,31020,46428,31021,46429,31022,46430,31023,46431,31024,46432,31025,46433,31026,46434,31027,46435,31029,46436,31030,46437,31031,46438,31032,46439,31033,46440,31037,46441,31039,46442,31042,46443,31043,46444,31044,46445,31045,46446,31047,46447,31050,46448,31051,46449,31052,46450,31053,46451,31054,46452,31055,46453,31056,46454,31057,46455,31058,46456,31060,46457,31061,46458,31064,46459,31065,46460,31073,46461,31075,46462,31076,46464,31078,46465,31081,46466,31082,46467,31083,46468,31084,46469,31086,46470,31088,46471,31089,46472,31090,46473,31091,46474,31092,46475,31093,46476,31094,46477,31097,46478,31099,46479,31100,46480,31101,46481,31102,46482,31103,46483,31106,46484,31107,46485,31110,46486,31111,46487,31112,46488,31113,46489,31115,46490,31116,46491,31117,46492,31118,46493,31120,46494,31121,46495,31122,46496,24608,46497,32829,46498,25285,46499,20025,46500,21333,46501,37112,46502,25528,46503,32966,46504,26086,46505,27694,46506,20294,46507,24814,46508,28129,46509,35806,46510,24377,46511,34507,46512,24403,46513,25377,46514,20826,46515,33633,46516,26723,46517,20992,46518,25443,46519,36424,46520,20498,46521,23707,46522,31095,46523,23548,46524,21040,46525,31291,46526,24764,46527,36947,46528,30423,46529,24503,46530,24471,46531,30340,46532,36460,46533,28783,46534,30331,46535,31561,46536,30634,46537,20979,46538,37011,46539,22564,46540,20302,46541,28404,46542,36842,46543,25932,46544,31515,46545,29380,46546,28068,46547,32735,46548,23265,46549,25269,46550,24213,46551,22320,46552,33922,46553,31532,46554,24093,46555,24351,46556,36882,46557,32532,46558,39072,46559,25474,46560,28359,46561,30872,46562,28857,46563,20856,46564,38747,46565,22443,46566,30005,46567,20291,46568,30008,46569,24215,46570,24806,46571,22880,46572,28096,46573,27583,46574,30857,46575,21500,46576,38613,46577,20939,46578,20993,46579,25481,46580,21514,46581,38035,46582,35843,46583,36300,46584,29241,46585,30879,46586,34678,46587,36845,46588,35853,46589,21472,46590,31123,46656,31124,46657,31125,46658,31126,46659,31127,46660,31128,46661,31129,46662,31131,46663,31132,46664,31133,46665,31134,46666,31135,46667,31136,46668,31137,46669,31138,46670,31139,46671,31140,46672,31141,46673,31142,46674,31144,46675,31145,46676,31146,46677,31147,46678,31148,46679,31149,46680,31150,46681,31151,46682,31152,46683,31153,46684,31154,46685,31156,46686,31157,46687,31158,46688,31159,46689,31160,46690,31164,46691,31167,46692,31170,46693,31172,46694,31173,46695,31175,46696,31176,46697,31178,46698,31180,46699,31182,46700,31183,46701,31184,46702,31187,46703,31188,46704,31190,46705,31191,46706,31193,46707,31194,46708,31195,46709,31196,46710,31197,46711,31198,46712,31200,46713,31201,46714,31202,46715,31205,46716,31208,46717,31210,46718,31212,46720,31214,46721,31217,46722,31218,46723,31219,46724,31220,46725,31221,46726,31222,46727,31223,46728,31225,46729,31226,46730,31228,46731,31230,46732,31231,46733,31233,46734,31236,46735,31237,46736,31239,46737,31240,46738,31241,46739,31242,46740,31244,46741,31247,46742,31248,46743,31249,46744,31250,46745,31251,46746,31253,46747,31254,46748,31256,46749,31257,46750,31259,46751,31260,46752,19969,46753,30447,46754,21486,46755,38025,46756,39030,46757,40718,46758,38189,46759,23450,46760,35746,46761,20002,46762,19996,46763,20908,46764,33891,46765,25026,46766,21160,46767,26635,46768,20375,46769,24683,46770,20923,46771,27934,46772,20828,46773,25238,46774,26007,46775,38497,46776,35910,46777,36887,46778,30168,46779,37117,46780,30563,46781,27602,46782,29322,46783,29420,46784,35835,46785,22581,46786,30585,46787,36172,46788,26460,46789,38208,46790,32922,46791,24230,46792,28193,46793,22930,46794,31471,46795,30701,46796,38203,46797,27573,46798,26029,46799,32526,46800,22534,46801,20817,46802,38431,46803,23545,46804,22697,46805,21544,46806,36466,46807,25958,46808,39039,46809,22244,46810,38045,46811,30462,46812,36929,46813,25479,46814,21702,46815,22810,46816,22842,46817,22427,46818,36530,46819,26421,46820,36346,46821,33333,46822,21057,46823,24816,46824,22549,46825,34558,46826,23784,46827,40517,46828,20420,46829,39069,46830,35769,46831,23077,46832,24694,46833,21380,46834,25212,46835,36943,46836,37122,46837,39295,46838,24681,46839,32780,46840,20799,46841,32819,46842,23572,46843,39285,46844,27953,46845,20108,46846,31261,46912,31263,46913,31265,46914,31266,46915,31268,46916,31269,46917,31270,46918,31271,46919,31272,46920,31273,46921,31274,46922,31275,46923,31276,46924,31277,46925,31278,46926,31279,46927,31280,46928,31281,46929,31282,46930,31284,46931,31285,46932,31286,46933,31288,46934,31290,46935,31294,46936,31296,46937,31297,46938,31298,46939,31299,46940,31300,46941,31301,46942,31303,46943,31304,46944,31305,46945,31306,46946,31307,46947,31308,46948,31309,46949,31310,46950,31311,46951,31312,46952,31314,46953,31315,46954,31316,46955,31317,46956,31318,46957,31320,46958,31321,46959,31322,46960,31323,46961,31324,46962,31325,46963,31326,46964,31327,46965,31328,46966,31329,46967,31330,46968,31331,46969,31332,46970,31333,46971,31334,46972,31335,46973,31336,46974,31337,46976,31338,46977,31339,46978,31340,46979,31341,46980,31342,46981,31343,46982,31345,46983,31346,46984,31347,46985,31349,46986,31355,46987,31356,46988,31357,46989,31358,46990,31362,46991,31365,46992,31367,46993,31369,46994,31370,46995,31371,46996,31372,46997,31374,46998,31375,46999,31376,47e3,31379,47001,31380,47002,31385,47003,31386,47004,31387,47005,31390,47006,31393,47007,31394,47008,36144,47009,21457,47010,32602,47011,31567,47012,20240,47013,20047,47014,38400,47015,27861,47016,29648,47017,34281,47018,24070,47019,30058,47020,32763,47021,27146,47022,30718,47023,38034,47024,32321,47025,20961,47026,28902,47027,21453,47028,36820,47029,33539,47030,36137,47031,29359,47032,39277,47033,27867,47034,22346,47035,33459,47036,26041,47037,32938,47038,25151,47039,38450,47040,22952,47041,20223,47042,35775,47043,32442,47044,25918,47045,33778,47046,38750,47047,21857,47048,39134,47049,32933,47050,21290,47051,35837,47052,21536,47053,32954,47054,24223,47055,27832,47056,36153,47057,33452,47058,37210,47059,21545,47060,27675,47061,20998,47062,32439,47063,22367,47064,28954,47065,27774,47066,31881,47067,22859,47068,20221,47069,24575,47070,24868,47071,31914,47072,20016,47073,23553,47074,26539,47075,34562,47076,23792,47077,38155,47078,39118,47079,30127,47080,28925,47081,36898,47082,20911,47083,32541,47084,35773,47085,22857,47086,20964,47087,20315,47088,21542,47089,22827,47090,25975,47091,32932,47092,23413,47093,25206,47094,25282,47095,36752,47096,24133,47097,27679,47098,31526,47099,20239,47100,20440,47101,26381,47102,31395,47168,31396,47169,31399,47170,31401,47171,31402,47172,31403,47173,31406,47174,31407,47175,31408,47176,31409,47177,31410,47178,31412,47179,31413,47180,31414,47181,31415,47182,31416,47183,31417,47184,31418,47185,31419,47186,31420,47187,31421,47188,31422,47189,31424,47190,31425,47191,31426,47192,31427,47193,31428,47194,31429,47195,31430,47196,31431,47197,31432,47198,31433,47199,31434,47200,31436,47201,31437,47202,31438,47203,31439,47204,31440,47205,31441,47206,31442,47207,31443,47208,31444,47209,31445,47210,31447,47211,31448,47212,31450,47213,31451,47214,31452,47215,31453,47216,31457,47217,31458,47218,31460,47219,31463,47220,31464,47221,31465,47222,31466,47223,31467,47224,31468,47225,31470,47226,31472,47227,31473,47228,31474,47229,31475,47230,31476,47232,31477,47233,31478,47234,31479,47235,31480,47236,31483,47237,31484,47238,31486,47239,31488,47240,31489,47241,31490,47242,31493,47243,31495,47244,31497,47245,31500,47246,31501,47247,31502,47248,31504,47249,31506,47250,31507,47251,31510,47252,31511,47253,31512,47254,31514,47255,31516,47256,31517,47257,31519,47258,31521,47259,31522,47260,31523,47261,31527,47262,31529,47263,31533,47264,28014,47265,28074,47266,31119,47267,34993,47268,24343,47269,29995,47270,25242,47271,36741,47272,20463,47273,37340,47274,26023,47275,33071,47276,33105,47277,24220,47278,33104,47279,36212,47280,21103,47281,35206,47282,36171,47283,22797,47284,20613,47285,20184,47286,38428,47287,29238,47288,33145,47289,36127,47290,23500,47291,35747,47292,38468,47293,22919,47294,32538,47295,21648,47296,22134,47297,22030,47298,35813,47299,25913,47300,27010,47301,38041,47302,30422,47303,28297,47304,24178,47305,29976,47306,26438,47307,26577,47308,31487,47309,32925,47310,36214,47311,24863,47312,31174,47313,25954,47314,36195,47315,20872,47316,21018,47317,38050,47318,32568,47319,32923,47320,32434,47321,23703,47322,28207,47323,26464,47324,31705,47325,30347,47326,39640,47327,33167,47328,32660,47329,31957,47330,25630,47331,38224,47332,31295,47333,21578,47334,21733,47335,27468,47336,25601,47337,25096,47338,40509,47339,33011,47340,30105,47341,21106,47342,38761,47343,33883,47344,26684,47345,34532,47346,38401,47347,38548,47348,38124,47349,20010,47350,21508,47351,32473,47352,26681,47353,36319,47354,32789,47355,26356,47356,24218,47357,32697,47358,31535,47424,31536,47425,31538,47426,31540,47427,31541,47428,31542,47429,31543,47430,31545,47431,31547,47432,31549,47433,31551,47434,31552,47435,31553,47436,31554,47437,31555,47438,31556,47439,31558,47440,31560,47441,31562,47442,31565,47443,31566,47444,31571,47445,31573,47446,31575,47447,31577,47448,31580,47449,31582,47450,31583,47451,31585,47452,31587,47453,31588,47454,31589,47455,31590,47456,31591,47457,31592,47458,31593,47459,31594,47460,31595,47461,31596,47462,31597,47463,31599,47464,31600,47465,31603,47466,31604,47467,31606,47468,31608,47469,31610,47470,31612,47471,31613,47472,31615,47473,31617,47474,31618,47475,31619,47476,31620,47477,31622,47478,31623,47479,31624,47480,31625,47481,31626,47482,31627,47483,31628,47484,31630,47485,31631,47486,31633,47488,31634,47489,31635,47490,31638,47491,31640,47492,31641,47493,31642,47494,31643,47495,31646,47496,31647,47497,31648,47498,31651,47499,31652,47500,31653,47501,31662,47502,31663,47503,31664,47504,31666,47505,31667,47506,31669,47507,31670,47508,31671,47509,31673,47510,31674,47511,31675,47512,31676,47513,31677,47514,31678,47515,31679,47516,31680,47517,31682,47518,31683,47519,31684,47520,22466,47521,32831,47522,26775,47523,24037,47524,25915,47525,21151,47526,24685,47527,40858,47528,20379,47529,36524,47530,20844,47531,23467,47532,24339,47533,24041,47534,27742,47535,25329,47536,36129,47537,20849,47538,38057,47539,21246,47540,27807,47541,33503,47542,29399,47543,22434,47544,26500,47545,36141,47546,22815,47547,36764,47548,33735,47549,21653,47550,31629,47551,20272,47552,27837,47553,23396,47554,22993,47555,40723,47556,21476,47557,34506,47558,39592,47559,35895,47560,32929,47561,25925,47562,39038,47563,22266,47564,38599,47565,21038,47566,29916,47567,21072,47568,23521,47569,25346,47570,35074,47571,20054,47572,25296,47573,24618,47574,26874,47575,20851,47576,23448,47577,20896,47578,35266,47579,31649,47580,39302,47581,32592,47582,24815,47583,28748,47584,36143,47585,20809,47586,24191,47587,36891,47588,29808,47589,35268,47590,22317,47591,30789,47592,24402,47593,40863,47594,38394,47595,36712,47596,39740,47597,35809,47598,30328,47599,26690,47600,26588,47601,36330,47602,36149,47603,21053,47604,36746,47605,28378,47606,26829,47607,38149,47608,37101,47609,22269,47610,26524,47611,35065,47612,36807,47613,21704,47614,31685,47680,31688,47681,31689,47682,31690,47683,31691,47684,31693,47685,31694,47686,31695,47687,31696,47688,31698,47689,31700,47690,31701,47691,31702,47692,31703,47693,31704,47694,31707,47695,31708,47696,31710,47697,31711,47698,31712,47699,31714,47700,31715,47701,31716,47702,31719,47703,31720,47704,31721,47705,31723,47706,31724,47707,31725,47708,31727,47709,31728,47710,31730,47711,31731,47712,31732,47713,31733,47714,31734,47715,31736,47716,31737,47717,31738,47718,31739,47719,31741,47720,31743,47721,31744,47722,31745,47723,31746,47724,31747,47725,31748,47726,31749,47727,31750,47728,31752,47729,31753,47730,31754,47731,31757,47732,31758,47733,31760,47734,31761,47735,31762,47736,31763,47737,31764,47738,31765,47739,31767,47740,31768,47741,31769,47742,31770,47744,31771,47745,31772,47746,31773,47747,31774,47748,31776,47749,31777,47750,31778,47751,31779,47752,31780,47753,31781,47754,31784,47755,31785,47756,31787,47757,31788,47758,31789,47759,31790,47760,31791,47761,31792,47762,31793,47763,31794,47764,31795,47765,31796,47766,31797,47767,31798,47768,31799,47769,31801,47770,31802,47771,31803,47772,31804,47773,31805,47774,31806,47775,31810,47776,39608,47777,23401,47778,28023,47779,27686,47780,20133,47781,23475,47782,39559,47783,37219,47784,25e3,47785,37039,47786,38889,47787,21547,47788,28085,47789,23506,47790,20989,47791,21898,47792,32597,47793,32752,47794,25788,47795,25421,47796,26097,47797,25022,47798,24717,47799,28938,47800,27735,47801,27721,47802,22831,47803,26477,47804,33322,47805,22741,47806,22158,47807,35946,47808,27627,47809,37085,47810,22909,47811,32791,47812,21495,47813,28009,47814,21621,47815,21917,47816,33655,47817,33743,47818,26680,47819,31166,47820,21644,47821,20309,47822,21512,47823,30418,47824,35977,47825,38402,47826,27827,47827,28088,47828,36203,47829,35088,47830,40548,47831,36154,47832,22079,47833,40657,47834,30165,47835,24456,47836,29408,47837,24680,47838,21756,47839,20136,47840,27178,47841,34913,47842,24658,47843,36720,47844,21700,47845,28888,47846,34425,47847,40511,47848,27946,47849,23439,47850,24344,47851,32418,47852,21897,47853,20399,47854,29492,47855,21564,47856,21402,47857,20505,47858,21518,47859,21628,47860,20046,47861,24573,47862,29786,47863,22774,47864,33899,47865,32993,47866,34676,47867,29392,47868,31946,47869,28246,47870,31811,47936,31812,47937,31813,47938,31814,47939,31815,47940,31816,47941,31817,47942,31818,47943,31819,47944,31820,47945,31822,47946,31823,47947,31824,47948,31825,47949,31826,47950,31827,47951,31828,47952,31829,47953,31830,47954,31831,47955,31832,47956,31833,47957,31834,47958,31835,47959,31836,47960,31837,47961,31838,47962,31839,47963,31840,47964,31841,47965,31842,47966,31843,47967,31844,47968,31845,47969,31846,47970,31847,47971,31848,47972,31849,47973,31850,47974,31851,47975,31852,47976,31853,47977,31854,47978,31855,47979,31856,47980,31857,47981,31858,47982,31861,47983,31862,47984,31863,47985,31864,47986,31865,47987,31866,47988,31870,47989,31871,47990,31872,47991,31873,47992,31874,47993,31875,47994,31876,47995,31877,47996,31878,47997,31879,47998,31880,48e3,31882,48001,31883,48002,31884,48003,31885,48004,31886,48005,31887,48006,31888,48007,31891,48008,31892,48009,31894,48010,31897,48011,31898,48012,31899,48013,31904,48014,31905,48015,31907,48016,31910,48017,31911,48018,31912,48019,31913,48020,31915,48021,31916,48022,31917,48023,31919,48024,31920,48025,31924,48026,31925,48027,31926,48028,31927,48029,31928,48030,31930,48031,31931,48032,24359,48033,34382,48034,21804,48035,25252,48036,20114,48037,27818,48038,25143,48039,33457,48040,21719,48041,21326,48042,29502,48043,28369,48044,30011,48045,21010,48046,21270,48047,35805,48048,27088,48049,24458,48050,24576,48051,28142,48052,22351,48053,27426,48054,29615,48055,26707,48056,36824,48057,32531,48058,25442,48059,24739,48060,21796,48061,30186,48062,35938,48063,28949,48064,28067,48065,23462,48066,24187,48067,33618,48068,24908,48069,40644,48070,30970,48071,34647,48072,31783,48073,30343,48074,20976,48075,24822,48076,29004,48077,26179,48078,24140,48079,24653,48080,35854,48081,28784,48082,25381,48083,36745,48084,24509,48085,24674,48086,34516,48087,22238,48088,27585,48089,24724,48090,24935,48091,21321,48092,24800,48093,26214,48094,36159,48095,31229,48096,20250,48097,28905,48098,27719,48099,35763,48100,35826,48101,32472,48102,33636,48103,26127,48104,23130,48105,39746,48106,27985,48107,28151,48108,35905,48109,27963,48110,20249,48111,28779,48112,33719,48113,25110,48114,24785,48115,38669,48116,36135,48117,31096,48118,20987,48119,22334,48120,22522,48121,26426,48122,30072,48123,31293,48124,31215,48125,31637,48126,31935,48192,31936,48193,31938,48194,31939,48195,31940,48196,31942,48197,31945,48198,31947,48199,31950,48200,31951,48201,31952,48202,31953,48203,31954,48204,31955,48205,31956,48206,31960,48207,31962,48208,31963,48209,31965,48210,31966,48211,31969,48212,31970,48213,31971,48214,31972,48215,31973,48216,31974,48217,31975,48218,31977,48219,31978,48220,31979,48221,31980,48222,31981,48223,31982,48224,31984,48225,31985,48226,31986,48227,31987,48228,31988,48229,31989,48230,31990,48231,31991,48232,31993,48233,31994,48234,31996,48235,31997,48236,31998,48237,31999,48238,32e3,48239,32001,48240,32002,48241,32003,48242,32004,48243,32005,48244,32006,48245,32007,48246,32008,48247,32009,48248,32011,48249,32012,48250,32013,48251,32014,48252,32015,48253,32016,48254,32017,48256,32018,48257,32019,48258,32020,48259,32021,48260,32022,48261,32023,48262,32024,48263,32025,48264,32026,48265,32027,48266,32028,48267,32029,48268,32030,48269,32031,48270,32033,48271,32035,48272,32036,48273,32037,48274,32038,48275,32040,48276,32041,48277,32042,48278,32044,48279,32045,48280,32046,48281,32048,48282,32049,48283,32050,48284,32051,48285,32052,48286,32053,48287,32054,48288,32908,48289,39269,48290,36857,48291,28608,48292,35749,48293,40481,48294,23020,48295,32489,48296,32521,48297,21513,48298,26497,48299,26840,48300,36753,48301,31821,48302,38598,48303,21450,48304,24613,48305,30142,48306,27762,48307,21363,48308,23241,48309,32423,48310,25380,48311,20960,48312,33034,48313,24049,48314,34015,48315,25216,48316,20864,48317,23395,48318,20238,48319,31085,48320,21058,48321,24760,48322,27982,48323,23492,48324,23490,48325,35745,48326,35760,48327,26082,48328,24524,48329,38469,48330,22931,48331,32487,48332,32426,48333,22025,48334,26551,48335,22841,48336,20339,48337,23478,48338,21152,48339,33626,48340,39050,48341,36158,48342,30002,48343,38078,48344,20551,48345,31292,48346,20215,48347,26550,48348,39550,48349,23233,48350,27516,48351,30417,48352,22362,48353,23574,48354,31546,48355,38388,48356,29006,48357,20860,48358,32937,48359,33392,48360,22904,48361,32516,48362,33575,48363,26816,48364,26604,48365,30897,48366,30839,48367,25315,48368,25441,48369,31616,48370,20461,48371,21098,48372,20943,48373,33616,48374,27099,48375,37492,48376,36341,48377,36145,48378,35265,48379,38190,48380,31661,48381,20214,48382,32055,48448,32056,48449,32057,48450,32058,48451,32059,48452,32060,48453,32061,48454,32062,48455,32063,48456,32064,48457,32065,48458,32066,48459,32067,48460,32068,48461,32069,48462,32070,48463,32071,48464,32072,48465,32073,48466,32074,48467,32075,48468,32076,48469,32077,48470,32078,48471,32079,48472,32080,48473,32081,48474,32082,48475,32083,48476,32084,48477,32085,48478,32086,48479,32087,48480,32088,48481,32089,48482,32090,48483,32091,48484,32092,48485,32093,48486,32094,48487,32095,48488,32096,48489,32097,48490,32098,48491,32099,48492,32100,48493,32101,48494,32102,48495,32103,48496,32104,48497,32105,48498,32106,48499,32107,48500,32108,48501,32109,48502,32111,48503,32112,48504,32113,48505,32114,48506,32115,48507,32116,48508,32117,48509,32118,48510,32120,48512,32121,48513,32122,48514,32123,48515,32124,48516,32125,48517,32126,48518,32127,48519,32128,48520,32129,48521,32130,48522,32131,48523,32132,48524,32133,48525,32134,48526,32135,48527,32136,48528,32137,48529,32138,48530,32139,48531,32140,48532,32141,48533,32142,48534,32143,48535,32144,48536,32145,48537,32146,48538,32147,48539,32148,48540,32149,48541,32150,48542,32151,48543,32152,48544,20581,48545,33328,48546,21073,48547,39279,48548,28176,48549,28293,48550,28071,48551,24314,48552,20725,48553,23004,48554,23558,48555,27974,48556,27743,48557,30086,48558,33931,48559,26728,48560,22870,48561,35762,48562,21280,48563,37233,48564,38477,48565,34121,48566,26898,48567,30977,48568,28966,48569,33014,48570,20132,48571,37066,48572,27975,48573,39556,48574,23047,48575,22204,48576,25605,48577,38128,48578,30699,48579,20389,48580,33050,48581,29409,48582,35282,48583,39290,48584,32564,48585,32478,48586,21119,48587,25945,48588,37237,48589,36735,48590,36739,48591,21483,48592,31382,48593,25581,48594,25509,48595,30342,48596,31224,48597,34903,48598,38454,48599,25130,48600,21163,48601,33410,48602,26708,48603,26480,48604,25463,48605,30571,48606,31469,48607,27905,48608,32467,48609,35299,48610,22992,48611,25106,48612,34249,48613,33445,48614,30028,48615,20511,48616,20171,48617,30117,48618,35819,48619,23626,48620,24062,48621,31563,48622,26020,48623,37329,48624,20170,48625,27941,48626,35167,48627,32039,48628,38182,48629,20165,48630,35880,48631,36827,48632,38771,48633,26187,48634,31105,48635,36817,48636,28908,48637,28024,48638,32153,48704,32154,48705,32155,48706,32156,48707,32157,48708,32158,48709,32159,48710,32160,48711,32161,48712,32162,48713,32163,48714,32164,48715,32165,48716,32167,48717,32168,48718,32169,48719,32170,48720,32171,48721,32172,48722,32173,48723,32175,48724,32176,48725,32177,48726,32178,48727,32179,48728,32180,48729,32181,48730,32182,48731,32183,48732,32184,48733,32185,48734,32186,48735,32187,48736,32188,48737,32189,48738,32190,48739,32191,48740,32192,48741,32193,48742,32194,48743,32195,48744,32196,48745,32197,48746,32198,48747,32199,48748,32200,48749,32201,48750,32202,48751,32203,48752,32204,48753,32205,48754,32206,48755,32207,48756,32208,48757,32209,48758,32210,48759,32211,48760,32212,48761,32213,48762,32214,48763,32215,48764,32216,48765,32217,48766,32218,48768,32219,48769,32220,48770,32221,48771,32222,48772,32223,48773,32224,48774,32225,48775,32226,48776,32227,48777,32228,48778,32229,48779,32230,48780,32231,48781,32232,48782,32233,48783,32234,48784,32235,48785,32236,48786,32237,48787,32238,48788,32239,48789,32240,48790,32241,48791,32242,48792,32243,48793,32244,48794,32245,48795,32246,48796,32247,48797,32248,48798,32249,48799,32250,48800,23613,48801,21170,48802,33606,48803,20834,48804,33550,48805,30555,48806,26230,48807,40120,48808,20140,48809,24778,48810,31934,48811,31923,48812,32463,48813,20117,48814,35686,48815,26223,48816,39048,48817,38745,48818,22659,48819,25964,48820,38236,48821,24452,48822,30153,48823,38742,48824,31455,48825,31454,48826,20928,48827,28847,48828,31384,48829,25578,48830,31350,48831,32416,48832,29590,48833,38893,48834,20037,48835,28792,48836,20061,48837,37202,48838,21417,48839,25937,48840,26087,48841,33276,48842,33285,48843,21646,48844,23601,48845,30106,48846,38816,48847,25304,48848,29401,48849,30141,48850,23621,48851,39545,48852,33738,48853,23616,48854,21632,48855,30697,48856,20030,48857,27822,48858,32858,48859,25298,48860,25454,48861,24040,48862,20855,48863,36317,48864,36382,48865,38191,48866,20465,48867,21477,48868,24807,48869,28844,48870,21095,48871,25424,48872,40515,48873,23071,48874,20518,48875,30519,48876,21367,48877,32482,48878,25733,48879,25899,48880,25225,48881,25496,48882,20500,48883,29237,48884,35273,48885,20915,48886,35776,48887,32477,48888,22343,48889,33740,48890,38055,48891,20891,48892,21531,48893,23803,48894,32251,48960,32252,48961,32253,48962,32254,48963,32255,48964,32256,48965,32257,48966,32258,48967,32259,48968,32260,48969,32261,48970,32262,48971,32263,48972,32264,48973,32265,48974,32266,48975,32267,48976,32268,48977,32269,48978,32270,48979,32271,48980,32272,48981,32273,48982,32274,48983,32275,48984,32276,48985,32277,48986,32278,48987,32279,48988,32280,48989,32281,48990,32282,48991,32283,48992,32284,48993,32285,48994,32286,48995,32287,48996,32288,48997,32289,48998,32290,48999,32291,49e3,32292,49001,32293,49002,32294,49003,32295,49004,32296,49005,32297,49006,32298,49007,32299,49008,32300,49009,32301,49010,32302,49011,32303,49012,32304,49013,32305,49014,32306,49015,32307,49016,32308,49017,32309,49018,32310,49019,32311,49020,32312,49021,32313,49022,32314,49024,32316,49025,32317,49026,32318,49027,32319,49028,32320,49029,32322,49030,32323,49031,32324,49032,32325,49033,32326,49034,32328,49035,32329,49036,32330,49037,32331,49038,32332,49039,32333,49040,32334,49041,32335,49042,32336,49043,32337,49044,32338,49045,32339,49046,32340,49047,32341,49048,32342,49049,32343,49050,32344,49051,32345,49052,32346,49053,32347,49054,32348,49055,32349,49056,20426,49057,31459,49058,27994,49059,37089,49060,39567,49061,21888,49062,21654,49063,21345,49064,21679,49065,24320,49066,25577,49067,26999,49068,20975,49069,24936,49070,21002,49071,22570,49072,21208,49073,22350,49074,30733,49075,30475,49076,24247,49077,24951,49078,31968,49079,25179,49080,25239,49081,20130,49082,28821,49083,32771,49084,25335,49085,28900,49086,38752,49087,22391,49088,33499,49089,26607,49090,26869,49091,30933,49092,39063,49093,31185,49094,22771,49095,21683,49096,21487,49097,28212,49098,20811,49099,21051,49100,23458,49101,35838,49102,32943,49103,21827,49104,22438,49105,24691,49106,22353,49107,21549,49108,31354,49109,24656,49110,23380,49111,25511,49112,25248,49113,21475,49114,25187,49115,23495,49116,26543,49117,21741,49118,31391,49119,33510,49120,37239,49121,24211,49122,35044,49123,22840,49124,22446,49125,25358,49126,36328,49127,33007,49128,22359,49129,31607,49130,20393,49131,24555,49132,23485,49133,27454,49134,21281,49135,31568,49136,29378,49137,26694,49138,30719,49139,30518,49140,26103,49141,20917,49142,20111,49143,30420,49144,23743,49145,31397,49146,33909,49147,22862,49148,39745,49149,20608,49150,32350,49216,32351,49217,32352,49218,32353,49219,32354,49220,32355,49221,32356,49222,32357,49223,32358,49224,32359,49225,32360,49226,32361,49227,32362,49228,32363,49229,32364,49230,32365,49231,32366,49232,32367,49233,32368,49234,32369,49235,32370,49236,32371,49237,32372,49238,32373,49239,32374,49240,32375,49241,32376,49242,32377,49243,32378,49244,32379,49245,32380,49246,32381,49247,32382,49248,32383,49249,32384,49250,32385,49251,32387,49252,32388,49253,32389,49254,32390,49255,32391,49256,32392,49257,32393,49258,32394,49259,32395,49260,32396,49261,32397,49262,32398,49263,32399,49264,32400,49265,32401,49266,32402,49267,32403,49268,32404,49269,32405,49270,32406,49271,32407,49272,32408,49273,32409,49274,32410,49275,32412,49276,32413,49277,32414,49278,32430,49280,32436,49281,32443,49282,32444,49283,32470,49284,32484,49285,32492,49286,32505,49287,32522,49288,32528,49289,32542,49290,32567,49291,32569,49292,32571,49293,32572,49294,32573,49295,32574,49296,32575,49297,32576,49298,32577,49299,32579,49300,32582,49301,32583,49302,32584,49303,32585,49304,32586,49305,32587,49306,32588,49307,32589,49308,32590,49309,32591,49310,32594,49311,32595,49312,39304,49313,24871,49314,28291,49315,22372,49316,26118,49317,25414,49318,22256,49319,25324,49320,25193,49321,24275,49322,38420,49323,22403,49324,25289,49325,21895,49326,34593,49327,33098,49328,36771,49329,21862,49330,33713,49331,26469,49332,36182,49333,34013,49334,23146,49335,26639,49336,25318,49337,31726,49338,38417,49339,20848,49340,28572,49341,35888,49342,25597,49343,35272,49344,25042,49345,32518,49346,28866,49347,28389,49348,29701,49349,27028,49350,29436,49351,24266,49352,37070,49353,26391,49354,28010,49355,25438,49356,21171,49357,29282,49358,32769,49359,20332,49360,23013,49361,37226,49362,28889,49363,28061,49364,21202,49365,20048,49366,38647,49367,38253,49368,34174,49369,30922,49370,32047,49371,20769,49372,22418,49373,25794,49374,32907,49375,31867,49376,27882,49377,26865,49378,26974,49379,20919,49380,21400,49381,26792,49382,29313,49383,40654,49384,31729,49385,29432,49386,31163,49387,28435,49388,29702,49389,26446,49390,37324,49391,40100,49392,31036,49393,33673,49394,33620,49395,21519,49396,26647,49397,20029,49398,21385,49399,21169,49400,30782,49401,21382,49402,21033,49403,20616,49404,20363,49405,20432,49406,32598,49472,32601,49473,32603,49474,32604,49475,32605,49476,32606,49477,32608,49478,32611,49479,32612,49480,32613,49481,32614,49482,32615,49483,32619,49484,32620,49485,32621,49486,32623,49487,32624,49488,32627,49489,32629,49490,32630,49491,32631,49492,32632,49493,32634,49494,32635,49495,32636,49496,32637,49497,32639,49498,32640,49499,32642,49500,32643,49501,32644,49502,32645,49503,32646,49504,32647,49505,32648,49506,32649,49507,32651,49508,32653,49509,32655,49510,32656,49511,32657,49512,32658,49513,32659,49514,32661,49515,32662,49516,32663,49517,32664,49518,32665,49519,32667,49520,32668,49521,32672,49522,32674,49523,32675,49524,32677,49525,32678,49526,32680,49527,32681,49528,32682,49529,32683,49530,32684,49531,32685,49532,32686,49533,32689,49534,32691,49536,32692,49537,32693,49538,32694,49539,32695,49540,32698,49541,32699,49542,32702,49543,32704,49544,32706,49545,32707,49546,32708,49547,32710,49548,32711,49549,32712,49550,32713,49551,32715,49552,32717,49553,32719,49554,32720,49555,32721,49556,32722,49557,32723,49558,32726,49559,32727,49560,32729,49561,32730,49562,32731,49563,32732,49564,32733,49565,32734,49566,32738,49567,32739,49568,30178,49569,31435,49570,31890,49571,27813,49572,38582,49573,21147,49574,29827,49575,21737,49576,20457,49577,32852,49578,33714,49579,36830,49580,38256,49581,24265,49582,24604,49583,28063,49584,24088,49585,25947,49586,33080,49587,38142,49588,24651,49589,28860,49590,32451,49591,31918,49592,20937,49593,26753,49594,31921,49595,33391,49596,20004,49597,36742,49598,37327,49599,26238,49600,20142,49601,35845,49602,25769,49603,32842,49604,20698,49605,30103,49606,29134,49607,23525,49608,36797,49609,28518,49610,20102,49611,25730,49612,38243,49613,24278,49614,26009,49615,21015,49616,35010,49617,28872,49618,21155,49619,29454,49620,29747,49621,26519,49622,30967,49623,38678,49624,20020,49625,37051,49626,40158,49627,28107,49628,20955,49629,36161,49630,21533,49631,25294,49632,29618,49633,33777,49634,38646,49635,40836,49636,38083,49637,20278,49638,32666,49639,20940,49640,28789,49641,38517,49642,23725,49643,39046,49644,21478,49645,20196,49646,28316,49647,29705,49648,27060,49649,30827,49650,39311,49651,30041,49652,21016,49653,30244,49654,27969,49655,26611,49656,20845,49657,40857,49658,32843,49659,21657,49660,31548,49661,31423,49662,32740,49728,32743,49729,32744,49730,32746,49731,32747,49732,32748,49733,32749,49734,32751,49735,32754,49736,32756,49737,32757,49738,32758,49739,32759,49740,32760,49741,32761,49742,32762,49743,32765,49744,32766,49745,32767,49746,32770,49747,32775,49748,32776,49749,32777,49750,32778,49751,32782,49752,32783,49753,32785,49754,32787,49755,32794,49756,32795,49757,32797,49758,32798,49759,32799,49760,32801,49761,32803,49762,32804,49763,32811,49764,32812,49765,32813,49766,32814,49767,32815,49768,32816,49769,32818,49770,32820,49771,32825,49772,32826,49773,32828,49774,32830,49775,32832,49776,32833,49777,32836,49778,32837,49779,32839,49780,32840,49781,32841,49782,32846,49783,32847,49784,32848,49785,32849,49786,32851,49787,32853,49788,32854,49789,32855,49790,32857,49792,32859,49793,32860,49794,32861,49795,32862,49796,32863,49797,32864,49798,32865,49799,32866,49800,32867,49801,32868,49802,32869,49803,32870,49804,32871,49805,32872,49806,32875,49807,32876,49808,32877,49809,32878,49810,32879,49811,32880,49812,32882,49813,32883,49814,32884,49815,32885,49816,32886,49817,32887,49818,32888,49819,32889,49820,32890,49821,32891,49822,32892,49823,32893,49824,38534,49825,22404,49826,25314,49827,38471,49828,27004,49829,23044,49830,25602,49831,31699,49832,28431,49833,38475,49834,33446,49835,21346,49836,39045,49837,24208,49838,28809,49839,25523,49840,21348,49841,34383,49842,40065,49843,40595,49844,30860,49845,38706,49846,36335,49847,36162,49848,40575,49849,28510,49850,31108,49851,24405,49852,38470,49853,25134,49854,39540,49855,21525,49856,38109,49857,20387,49858,26053,49859,23653,49860,23649,49861,32533,49862,34385,49863,27695,49864,24459,49865,29575,49866,28388,49867,32511,49868,23782,49869,25371,49870,23402,49871,28390,49872,21365,49873,20081,49874,25504,49875,30053,49876,25249,49877,36718,49878,20262,49879,20177,49880,27814,49881,32438,49882,35770,49883,33821,49884,34746,49885,32599,49886,36923,49887,38179,49888,31657,49889,39585,49890,35064,49891,33853,49892,27931,49893,39558,49894,32476,49895,22920,49896,40635,49897,29595,49898,30721,49899,34434,49900,39532,49901,39554,49902,22043,49903,21527,49904,22475,49905,20080,49906,40614,49907,21334,49908,36808,49909,33033,49910,30610,49911,39314,49912,34542,49913,28385,49914,34067,49915,26364,49916,24930,49917,28459,49918,32894,49984,32897,49985,32898,49986,32901,49987,32904,49988,32906,49989,32909,49990,32910,49991,32911,49992,32912,49993,32913,49994,32914,49995,32916,49996,32917,49997,32919,49998,32921,49999,32926,5e4,32931,50001,32934,50002,32935,50003,32936,50004,32940,50005,32944,50006,32947,50007,32949,50008,32950,50009,32952,50010,32953,50011,32955,50012,32965,50013,32967,50014,32968,50015,32969,50016,32970,50017,32971,50018,32975,50019,32976,50020,32977,50021,32978,50022,32979,50023,32980,50024,32981,50025,32984,50026,32991,50027,32992,50028,32994,50029,32995,50030,32998,50031,33006,50032,33013,50033,33015,50034,33017,50035,33019,50036,33022,50037,33023,50038,33024,50039,33025,50040,33027,50041,33028,50042,33029,50043,33031,50044,33032,50045,33035,50046,33036,50048,33045,50049,33047,50050,33049,50051,33051,50052,33052,50053,33053,50054,33055,50055,33056,50056,33057,50057,33058,50058,33059,50059,33060,50060,33061,50061,33062,50062,33063,50063,33064,50064,33065,50065,33066,50066,33067,50067,33069,50068,33070,50069,33072,50070,33075,50071,33076,50072,33077,50073,33079,50074,33081,50075,33082,50076,33083,50077,33084,50078,33085,50079,33087,50080,35881,50081,33426,50082,33579,50083,30450,50084,27667,50085,24537,50086,33725,50087,29483,50088,33541,50089,38170,50090,27611,50091,30683,50092,38086,50093,21359,50094,33538,50095,20882,50096,24125,50097,35980,50098,36152,50099,20040,50100,29611,50101,26522,50102,26757,50103,37238,50104,38665,50105,29028,50106,27809,50107,30473,50108,23186,50109,38209,50110,27599,50111,32654,50112,26151,50113,23504,50114,22969,50115,23194,50116,38376,50117,38391,50118,20204,50119,33804,50120,33945,50121,27308,50122,30431,50123,38192,50124,29467,50125,26790,50126,23391,50127,30511,50128,37274,50129,38753,50130,31964,50131,36855,50132,35868,50133,24357,50134,31859,50135,31192,50136,35269,50137,27852,50138,34588,50139,23494,50140,24130,50141,26825,50142,30496,50143,32501,50144,20885,50145,20813,50146,21193,50147,23081,50148,32517,50149,38754,50150,33495,50151,25551,50152,30596,50153,34256,50154,31186,50155,28218,50156,24217,50157,22937,50158,34065,50159,28781,50160,27665,50161,25279,50162,30399,50163,25935,50164,24751,50165,38397,50166,26126,50167,34719,50168,40483,50169,38125,50170,21517,50171,21629,50172,35884,50173,25720,50174,33088,50240,33089,50241,33090,50242,33091,50243,33092,50244,33093,50245,33095,50246,33097,50247,33101,50248,33102,50249,33103,50250,33106,50251,33110,50252,33111,50253,33112,50254,33115,50255,33116,50256,33117,50257,33118,50258,33119,50259,33121,50260,33122,50261,33123,50262,33124,50263,33126,50264,33128,50265,33130,50266,33131,50267,33132,50268,33135,50269,33138,50270,33139,50271,33141,50272,33142,50273,33143,50274,33144,50275,33153,50276,33155,50277,33156,50278,33157,50279,33158,50280,33159,50281,33161,50282,33163,50283,33164,50284,33165,50285,33166,50286,33168,50287,33170,50288,33171,50289,33172,50290,33173,50291,33174,50292,33175,50293,33177,50294,33178,50295,33182,50296,33183,50297,33184,50298,33185,50299,33186,50300,33188,50301,33189,50302,33191,50304,33193,50305,33195,50306,33196,50307,33197,50308,33198,50309,33199,50310,33200,50311,33201,50312,33202,50313,33204,50314,33205,50315,33206,50316,33207,50317,33208,50318,33209,50319,33212,50320,33213,50321,33214,50322,33215,50323,33220,50324,33221,50325,33223,50326,33224,50327,33225,50328,33227,50329,33229,50330,33230,50331,33231,50332,33232,50333,33233,50334,33234,50335,33235,50336,25721,50337,34321,50338,27169,50339,33180,50340,30952,50341,25705,50342,39764,50343,25273,50344,26411,50345,33707,50346,22696,50347,40664,50348,27819,50349,28448,50350,23518,50351,38476,50352,35851,50353,29279,50354,26576,50355,25287,50356,29281,50357,20137,50358,22982,50359,27597,50360,22675,50361,26286,50362,24149,50363,21215,50364,24917,50365,26408,50366,30446,50367,30566,50368,29287,50369,31302,50370,25343,50371,21738,50372,21584,50373,38048,50374,37027,50375,23068,50376,32435,50377,27670,50378,20035,50379,22902,50380,32784,50381,22856,50382,21335,50383,30007,50384,38590,50385,22218,50386,25376,50387,33041,50388,24700,50389,38393,50390,28118,50391,21602,50392,39297,50393,20869,50394,23273,50395,33021,50396,22958,50397,38675,50398,20522,50399,27877,50400,23612,50401,25311,50402,20320,50403,21311,50404,33147,50405,36870,50406,28346,50407,34091,50408,25288,50409,24180,50410,30910,50411,25781,50412,25467,50413,24565,50414,23064,50415,37247,50416,40479,50417,23615,50418,25423,50419,32834,50420,23421,50421,21870,50422,38218,50423,38221,50424,28037,50425,24744,50426,26592,50427,29406,50428,20957,50429,23425,50430,33236,50496,33237,50497,33238,50498,33239,50499,33240,50500,33241,50501,33242,50502,33243,50503,33244,50504,33245,50505,33246,50506,33247,50507,33248,50508,33249,50509,33250,50510,33252,50511,33253,50512,33254,50513,33256,50514,33257,50515,33259,50516,33262,50517,33263,50518,33264,50519,33265,50520,33266,50521,33269,50522,33270,50523,33271,50524,33272,50525,33273,50526,33274,50527,33277,50528,33279,50529,33283,50530,33287,50531,33288,50532,33289,50533,33290,50534,33291,50535,33294,50536,33295,50537,33297,50538,33299,50539,33301,50540,33302,50541,33303,50542,33304,50543,33305,50544,33306,50545,33309,50546,33312,50547,33316,50548,33317,50549,33318,50550,33319,50551,33321,50552,33326,50553,33330,50554,33338,50555,33340,50556,33341,50557,33343,50558,33344,50560,33345,50561,33346,50562,33347,50563,33349,50564,33350,50565,33352,50566,33354,50567,33356,50568,33357,50569,33358,50570,33360,50571,33361,50572,33362,50573,33363,50574,33364,50575,33365,50576,33366,50577,33367,50578,33369,50579,33371,50580,33372,50581,33373,50582,33374,50583,33376,50584,33377,50585,33378,50586,33379,50587,33380,50588,33381,50589,33382,50590,33383,50591,33385,50592,25319,50593,27870,50594,29275,50595,25197,50596,38062,50597,32445,50598,33043,50599,27987,50600,20892,50601,24324,50602,22900,50603,21162,50604,24594,50605,22899,50606,26262,50607,34384,50608,30111,50609,25386,50610,25062,50611,31983,50612,35834,50613,21734,50614,27431,50615,40485,50616,27572,50617,34261,50618,21589,50619,20598,50620,27812,50621,21866,50622,36276,50623,29228,50624,24085,50625,24597,50626,29750,50627,25293,50628,25490,50629,29260,50630,24472,50631,28227,50632,27966,50633,25856,50634,28504,50635,30424,50636,30928,50637,30460,50638,30036,50639,21028,50640,21467,50641,20051,50642,24222,50643,26049,50644,32810,50645,32982,50646,25243,50647,21638,50648,21032,50649,28846,50650,34957,50651,36305,50652,27873,50653,21624,50654,32986,50655,22521,50656,35060,50657,36180,50658,38506,50659,37197,50660,20329,50661,27803,50662,21943,50663,30406,50664,30768,50665,25256,50666,28921,50667,28558,50668,24429,50669,34028,50670,26842,50671,30844,50672,31735,50673,33192,50674,26379,50675,40527,50676,25447,50677,30896,50678,22383,50679,30738,50680,38713,50681,25209,50682,25259,50683,21128,50684,29749,50685,27607,50686,33386,50752,33387,50753,33388,50754,33389,50755,33393,50756,33397,50757,33398,50758,33399,50759,33400,50760,33403,50761,33404,50762,33408,50763,33409,50764,33411,50765,33413,50766,33414,50767,33415,50768,33417,50769,33420,50770,33424,50771,33427,50772,33428,50773,33429,50774,33430,50775,33434,50776,33435,50777,33438,50778,33440,50779,33442,50780,33443,50781,33447,50782,33458,50783,33461,50784,33462,50785,33466,50786,33467,50787,33468,50788,33471,50789,33472,50790,33474,50791,33475,50792,33477,50793,33478,50794,33481,50795,33488,50796,33494,50797,33497,50798,33498,50799,33501,50800,33506,50801,33511,50802,33512,50803,33513,50804,33514,50805,33516,50806,33517,50807,33518,50808,33520,50809,33522,50810,33523,50811,33525,50812,33526,50813,33528,50814,33530,50816,33532,50817,33533,50818,33534,50819,33535,50820,33536,50821,33546,50822,33547,50823,33549,50824,33552,50825,33554,50826,33555,50827,33558,50828,33560,50829,33561,50830,33565,50831,33566,50832,33567,50833,33568,50834,33569,50835,33570,50836,33571,50837,33572,50838,33573,50839,33574,50840,33577,50841,33578,50842,33582,50843,33584,50844,33586,50845,33591,50846,33595,50847,33597,50848,21860,50849,33086,50850,30130,50851,30382,50852,21305,50853,30174,50854,20731,50855,23617,50856,35692,50857,31687,50858,20559,50859,29255,50860,39575,50861,39128,50862,28418,50863,29922,50864,31080,50865,25735,50866,30629,50867,25340,50868,39057,50869,36139,50870,21697,50871,32856,50872,20050,50873,22378,50874,33529,50875,33805,50876,24179,50877,20973,50878,29942,50879,35780,50880,23631,50881,22369,50882,27900,50883,39047,50884,23110,50885,30772,50886,39748,50887,36843,50888,31893,50889,21078,50890,25169,50891,38138,50892,20166,50893,33670,50894,33889,50895,33769,50896,33970,50897,22484,50898,26420,50899,22275,50900,26222,50901,28006,50902,35889,50903,26333,50904,28689,50905,26399,50906,27450,50907,26646,50908,25114,50909,22971,50910,19971,50911,20932,50912,28422,50913,26578,50914,27791,50915,20854,50916,26827,50917,22855,50918,27495,50919,30054,50920,23822,50921,33040,50922,40784,50923,26071,50924,31048,50925,31041,50926,39569,50927,36215,50928,23682,50929,20062,50930,20225,50931,21551,50932,22865,50933,30732,50934,22120,50935,27668,50936,36804,50937,24323,50938,27773,50939,27875,50940,35755,50941,25488,50942,33598,51008,33599,51009,33601,51010,33602,51011,33604,51012,33605,51013,33608,51014,33610,51015,33611,51016,33612,51017,33613,51018,33614,51019,33619,51020,33621,51021,33622,51022,33623,51023,33624,51024,33625,51025,33629,51026,33634,51027,33648,51028,33649,51029,33650,51030,33651,51031,33652,51032,33653,51033,33654,51034,33657,51035,33658,51036,33662,51037,33663,51038,33664,51039,33665,51040,33666,51041,33667,51042,33668,51043,33671,51044,33672,51045,33674,51046,33675,51047,33676,51048,33677,51049,33679,51050,33680,51051,33681,51052,33684,51053,33685,51054,33686,51055,33687,51056,33689,51057,33690,51058,33693,51059,33695,51060,33697,51061,33698,51062,33699,51063,33700,51064,33701,51065,33702,51066,33703,51067,33708,51068,33709,51069,33710,51070,33711,51072,33717,51073,33723,51074,33726,51075,33727,51076,33730,51077,33731,51078,33732,51079,33734,51080,33736,51081,33737,51082,33739,51083,33741,51084,33742,51085,33744,51086,33745,51087,33746,51088,33747,51089,33749,51090,33751,51091,33753,51092,33754,51093,33755,51094,33758,51095,33762,51096,33763,51097,33764,51098,33766,51099,33767,51100,33768,51101,33771,51102,33772,51103,33773,51104,24688,51105,27965,51106,29301,51107,25190,51108,38030,51109,38085,51110,21315,51111,36801,51112,31614,51113,20191,51114,35878,51115,20094,51116,40660,51117,38065,51118,38067,51119,21069,51120,28508,51121,36963,51122,27973,51123,35892,51124,22545,51125,23884,51126,27424,51127,27465,51128,26538,51129,21595,51130,33108,51131,32652,51132,22681,51133,34103,51134,24378,51135,25250,51136,27207,51137,38201,51138,25970,51139,24708,51140,26725,51141,30631,51142,20052,51143,20392,51144,24039,51145,38808,51146,25772,51147,32728,51148,23789,51149,20431,51150,31373,51151,20999,51152,33540,51153,19988,51154,24623,51155,31363,51156,38054,51157,20405,51158,20146,51159,31206,51160,29748,51161,21220,51162,33465,51163,25810,51164,31165,51165,23517,51166,27777,51167,38738,51168,36731,51169,27682,51170,20542,51171,21375,51172,28165,51173,25806,51174,26228,51175,27696,51176,24773,51177,39031,51178,35831,51179,24198,51180,29756,51181,31351,51182,31179,51183,19992,51184,37041,51185,29699,51186,27714,51187,22234,51188,37195,51189,27845,51190,36235,51191,21306,51192,34502,51193,26354,51194,36527,51195,23624,51196,39537,51197,28192,51198,33774,51264,33775,51265,33779,51266,33780,51267,33781,51268,33782,51269,33783,51270,33786,51271,33787,51272,33788,51273,33790,51274,33791,51275,33792,51276,33794,51277,33797,51278,33799,51279,33800,51280,33801,51281,33802,51282,33808,51283,33810,51284,33811,51285,33812,51286,33813,51287,33814,51288,33815,51289,33817,51290,33818,51291,33819,51292,33822,51293,33823,51294,33824,51295,33825,51296,33826,51297,33827,51298,33833,51299,33834,51300,33835,51301,33836,51302,33837,51303,33838,51304,33839,51305,33840,51306,33842,51307,33843,51308,33844,51309,33845,51310,33846,51311,33847,51312,33849,51313,33850,51314,33851,51315,33854,51316,33855,51317,33856,51318,33857,51319,33858,51320,33859,51321,33860,51322,33861,51323,33863,51324,33864,51325,33865,51326,33866,51328,33867,51329,33868,51330,33869,51331,33870,51332,33871,51333,33872,51334,33874,51335,33875,51336,33876,51337,33877,51338,33878,51339,33880,51340,33885,51341,33886,51342,33887,51343,33888,51344,33890,51345,33892,51346,33893,51347,33894,51348,33895,51349,33896,51350,33898,51351,33902,51352,33903,51353,33904,51354,33906,51355,33908,51356,33911,51357,33913,51358,33915,51359,33916,51360,21462,51361,23094,51362,40843,51363,36259,51364,21435,51365,22280,51366,39079,51367,26435,51368,37275,51369,27849,51370,20840,51371,30154,51372,25331,51373,29356,51374,21048,51375,21149,51376,32570,51377,28820,51378,30264,51379,21364,51380,40522,51381,27063,51382,30830,51383,38592,51384,35033,51385,32676,51386,28982,51387,29123,51388,20873,51389,26579,51390,29924,51391,22756,51392,25880,51393,22199,51394,35753,51395,39286,51396,25200,51397,32469,51398,24825,51399,28909,51400,22764,51401,20161,51402,20154,51403,24525,51404,38887,51405,20219,51406,35748,51407,20995,51408,22922,51409,32427,51410,25172,51411,20173,51412,26085,51413,25102,51414,33592,51415,33993,51416,33635,51417,34701,51418,29076,51419,28342,51420,23481,51421,32466,51422,20887,51423,25545,51424,26580,51425,32905,51426,33593,51427,34837,51428,20754,51429,23418,51430,22914,51431,36785,51432,20083,51433,27741,51434,20837,51435,35109,51436,36719,51437,38446,51438,34122,51439,29790,51440,38160,51441,38384,51442,28070,51443,33509,51444,24369,51445,25746,51446,27922,51447,33832,51448,33134,51449,40131,51450,22622,51451,36187,51452,19977,51453,21441,51454,33917,51520,33918,51521,33919,51522,33920,51523,33921,51524,33923,51525,33924,51526,33925,51527,33926,51528,33930,51529,33933,51530,33935,51531,33936,51532,33937,51533,33938,51534,33939,51535,33940,51536,33941,51537,33942,51538,33944,51539,33946,51540,33947,51541,33949,51542,33950,51543,33951,51544,33952,51545,33954,51546,33955,51547,33956,51548,33957,51549,33958,51550,33959,51551,33960,51552,33961,51553,33962,51554,33963,51555,33964,51556,33965,51557,33966,51558,33968,51559,33969,51560,33971,51561,33973,51562,33974,51563,33975,51564,33979,51565,33980,51566,33982,51567,33984,51568,33986,51569,33987,51570,33989,51571,33990,51572,33991,51573,33992,51574,33995,51575,33996,51576,33998,51577,33999,51578,34002,51579,34004,51580,34005,51581,34007,51582,34008,51584,34009,51585,34010,51586,34011,51587,34012,51588,34014,51589,34017,51590,34018,51591,34020,51592,34023,51593,34024,51594,34025,51595,34026,51596,34027,51597,34029,51598,34030,51599,34031,51600,34033,51601,34034,51602,34035,51603,34036,51604,34037,51605,34038,51606,34039,51607,34040,51608,34041,51609,34042,51610,34043,51611,34045,51612,34046,51613,34048,51614,34049,51615,34050,51616,20254,51617,25955,51618,26705,51619,21971,51620,20007,51621,25620,51622,39578,51623,25195,51624,23234,51625,29791,51626,33394,51627,28073,51628,26862,51629,20711,51630,33678,51631,30722,51632,26432,51633,21049,51634,27801,51635,32433,51636,20667,51637,21861,51638,29022,51639,31579,51640,26194,51641,29642,51642,33515,51643,26441,51644,23665,51645,21024,51646,29053,51647,34923,51648,38378,51649,38485,51650,25797,51651,36193,51652,33203,51653,21892,51654,27733,51655,25159,51656,32558,51657,22674,51658,20260,51659,21830,51660,36175,51661,26188,51662,19978,51663,23578,51664,35059,51665,26786,51666,25422,51667,31245,51668,28903,51669,33421,51670,21242,51671,38902,51672,23569,51673,21736,51674,37045,51675,32461,51676,22882,51677,36170,51678,34503,51679,33292,51680,33293,51681,36198,51682,25668,51683,23556,51684,24913,51685,28041,51686,31038,51687,35774,51688,30775,51689,30003,51690,21627,51691,20280,51692,36523,51693,28145,51694,23072,51695,32453,51696,31070,51697,27784,51698,23457,51699,23158,51700,29978,51701,32958,51702,24910,51703,28183,51704,22768,51705,29983,51706,29989,51707,29298,51708,21319,51709,32499,51710,34051,51776,34052,51777,34053,51778,34054,51779,34055,51780,34056,51781,34057,51782,34058,51783,34059,51784,34061,51785,34062,51786,34063,51787,34064,51788,34066,51789,34068,51790,34069,51791,34070,51792,34072,51793,34073,51794,34075,51795,34076,51796,34077,51797,34078,51798,34080,51799,34082,51800,34083,51801,34084,51802,34085,51803,34086,51804,34087,51805,34088,51806,34089,51807,34090,51808,34093,51809,34094,51810,34095,51811,34096,51812,34097,51813,34098,51814,34099,51815,34100,51816,34101,51817,34102,51818,34110,51819,34111,51820,34112,51821,34113,51822,34114,51823,34116,51824,34117,51825,34118,51826,34119,51827,34123,51828,34124,51829,34125,51830,34126,51831,34127,51832,34128,51833,34129,51834,34130,51835,34131,51836,34132,51837,34133,51838,34135,51840,34136,51841,34138,51842,34139,51843,34140,51844,34141,51845,34143,51846,34144,51847,34145,51848,34146,51849,34147,51850,34149,51851,34150,51852,34151,51853,34153,51854,34154,51855,34155,51856,34156,51857,34157,51858,34158,51859,34159,51860,34160,51861,34161,51862,34163,51863,34165,51864,34166,51865,34167,51866,34168,51867,34172,51868,34173,51869,34175,51870,34176,51871,34177,51872,30465,51873,30427,51874,21097,51875,32988,51876,22307,51877,24072,51878,22833,51879,29422,51880,26045,51881,28287,51882,35799,51883,23608,51884,34417,51885,21313,51886,30707,51887,25342,51888,26102,51889,20160,51890,39135,51891,34432,51892,23454,51893,35782,51894,21490,51895,30690,51896,20351,51897,23630,51898,39542,51899,22987,51900,24335,51901,31034,51902,22763,51903,19990,51904,26623,51905,20107,51906,25325,51907,35475,51908,36893,51909,21183,51910,26159,51911,21980,51912,22124,51913,36866,51914,20181,51915,20365,51916,37322,51917,39280,51918,27663,51919,24066,51920,24643,51921,23460,51922,35270,51923,35797,51924,25910,51925,25163,51926,39318,51927,23432,51928,23551,51929,25480,51930,21806,51931,21463,51932,30246,51933,20861,51934,34092,51935,26530,51936,26803,51937,27530,51938,25234,51939,36755,51940,21460,51941,33298,51942,28113,51943,30095,51944,20070,51945,36174,51946,23408,51947,29087,51948,34223,51949,26257,51950,26329,51951,32626,51952,34560,51953,40653,51954,40736,51955,23646,51956,26415,51957,36848,51958,26641,51959,26463,51960,25101,51961,31446,51962,22661,51963,24246,51964,25968,51965,28465,51966,34178,52032,34179,52033,34182,52034,34184,52035,34185,52036,34186,52037,34187,52038,34188,52039,34189,52040,34190,52041,34192,52042,34193,52043,34194,52044,34195,52045,34196,52046,34197,52047,34198,52048,34199,52049,34200,52050,34201,52051,34202,52052,34205,52053,34206,52054,34207,52055,34208,52056,34209,52057,34210,52058,34211,52059,34213,52060,34214,52061,34215,52062,34217,52063,34219,52064,34220,52065,34221,52066,34225,52067,34226,52068,34227,52069,34228,52070,34229,52071,34230,52072,34232,52073,34234,52074,34235,52075,34236,52076,34237,52077,34238,52078,34239,52079,34240,52080,34242,52081,34243,52082,34244,52083,34245,52084,34246,52085,34247,52086,34248,52087,34250,52088,34251,52089,34252,52090,34253,52091,34254,52092,34257,52093,34258,52094,34260,52096,34262,52097,34263,52098,34264,52099,34265,52100,34266,52101,34267,52102,34269,52103,34270,52104,34271,52105,34272,52106,34273,52107,34274,52108,34275,52109,34277,52110,34278,52111,34279,52112,34280,52113,34282,52114,34283,52115,34284,52116,34285,52117,34286,52118,34287,52119,34288,52120,34289,52121,34290,52122,34291,52123,34292,52124,34293,52125,34294,52126,34295,52127,34296,52128,24661,52129,21047,52130,32781,52131,25684,52132,34928,52133,29993,52134,24069,52135,26643,52136,25332,52137,38684,52138,21452,52139,29245,52140,35841,52141,27700,52142,30561,52143,31246,52144,21550,52145,30636,52146,39034,52147,33308,52148,35828,52149,30805,52150,26388,52151,28865,52152,26031,52153,25749,52154,22070,52155,24605,52156,31169,52157,21496,52158,19997,52159,27515,52160,32902,52161,23546,52162,21987,52163,22235,52164,20282,52165,20284,52166,39282,52167,24051,52168,26494,52169,32824,52170,24578,52171,39042,52172,36865,52173,23435,52174,35772,52175,35829,52176,25628,52177,33368,52178,25822,52179,22013,52180,33487,52181,37221,52182,20439,52183,32032,52184,36895,52185,31903,52186,20723,52187,22609,52188,28335,52189,23487,52190,35785,52191,32899,52192,37240,52193,33948,52194,31639,52195,34429,52196,38539,52197,38543,52198,32485,52199,39635,52200,30862,52201,23681,52202,31319,52203,36930,52204,38567,52205,31071,52206,23385,52207,25439,52208,31499,52209,34001,52210,26797,52211,21766,52212,32553,52213,29712,52214,32034,52215,38145,52216,25152,52217,22604,52218,20182,52219,23427,52220,22905,52221,22612,52222,34297,52288,34298,52289,34300,52290,34301,52291,34302,52292,34304,52293,34305,52294,34306,52295,34307,52296,34308,52297,34310,52298,34311,52299,34312,52300,34313,52301,34314,52302,34315,52303,34316,52304,34317,52305,34318,52306,34319,52307,34320,52308,34322,52309,34323,52310,34324,52311,34325,52312,34327,52313,34328,52314,34329,52315,34330,52316,34331,52317,34332,52318,34333,52319,34334,52320,34335,52321,34336,52322,34337,52323,34338,52324,34339,52325,34340,52326,34341,52327,34342,52328,34344,52329,34346,52330,34347,52331,34348,52332,34349,52333,34350,52334,34351,52335,34352,52336,34353,52337,34354,52338,34355,52339,34356,52340,34357,52341,34358,52342,34359,52343,34361,52344,34362,52345,34363,52346,34365,52347,34366,52348,34367,52349,34368,52350,34369,52352,34370,52353,34371,52354,34372,52355,34373,52356,34374,52357,34375,52358,34376,52359,34377,52360,34378,52361,34379,52362,34380,52363,34386,52364,34387,52365,34389,52366,34390,52367,34391,52368,34392,52369,34393,52370,34395,52371,34396,52372,34397,52373,34399,52374,34400,52375,34401,52376,34403,52377,34404,52378,34405,52379,34406,52380,34407,52381,34408,52382,34409,52383,34410,52384,29549,52385,25374,52386,36427,52387,36367,52388,32974,52389,33492,52390,25260,52391,21488,52392,27888,52393,37214,52394,22826,52395,24577,52396,27760,52397,22349,52398,25674,52399,36138,52400,30251,52401,28393,52402,22363,52403,27264,52404,30192,52405,28525,52406,35885,52407,35848,52408,22374,52409,27631,52410,34962,52411,30899,52412,25506,52413,21497,52414,28845,52415,27748,52416,22616,52417,25642,52418,22530,52419,26848,52420,33179,52421,21776,52422,31958,52423,20504,52424,36538,52425,28108,52426,36255,52427,28907,52428,25487,52429,28059,52430,28372,52431,32486,52432,33796,52433,26691,52434,36867,52435,28120,52436,38518,52437,35752,52438,22871,52439,29305,52440,34276,52441,33150,52442,30140,52443,35466,52444,26799,52445,21076,52446,36386,52447,38161,52448,25552,52449,39064,52450,36420,52451,21884,52452,20307,52453,26367,52454,22159,52455,24789,52456,28053,52457,21059,52458,23625,52459,22825,52460,28155,52461,22635,52462,3e4,52463,29980,52464,24684,52465,33300,52466,33094,52467,25361,52468,26465,52469,36834,52470,30522,52471,36339,52472,36148,52473,38081,52474,24086,52475,21381,52476,21548,52477,28867,52478,34413,52544,34415,52545,34416,52546,34418,52547,34419,52548,34420,52549,34421,52550,34422,52551,34423,52552,34424,52553,34435,52554,34436,52555,34437,52556,34438,52557,34439,52558,34440,52559,34441,52560,34446,52561,34447,52562,34448,52563,34449,52564,34450,52565,34452,52566,34454,52567,34455,52568,34456,52569,34457,52570,34458,52571,34459,52572,34462,52573,34463,52574,34464,52575,34465,52576,34466,52577,34469,52578,34470,52579,34475,52580,34477,52581,34478,52582,34482,52583,34483,52584,34487,52585,34488,52586,34489,52587,34491,52588,34492,52589,34493,52590,34494,52591,34495,52592,34497,52593,34498,52594,34499,52595,34501,52596,34504,52597,34508,52598,34509,52599,34514,52600,34515,52601,34517,52602,34518,52603,34519,52604,34522,52605,34524,52606,34525,52608,34528,52609,34529,52610,34530,52611,34531,52612,34533,52613,34534,52614,34535,52615,34536,52616,34538,52617,34539,52618,34540,52619,34543,52620,34549,52621,34550,52622,34551,52623,34554,52624,34555,52625,34556,52626,34557,52627,34559,52628,34561,52629,34564,52630,34565,52631,34566,52632,34571,52633,34572,52634,34574,52635,34575,52636,34576,52637,34577,52638,34580,52639,34582,52640,27712,52641,24311,52642,20572,52643,20141,52644,24237,52645,25402,52646,33351,52647,36890,52648,26704,52649,37230,52650,30643,52651,21516,52652,38108,52653,24420,52654,31461,52655,26742,52656,25413,52657,31570,52658,32479,52659,30171,52660,20599,52661,25237,52662,22836,52663,36879,52664,20984,52665,31171,52666,31361,52667,22270,52668,24466,52669,36884,52670,28034,52671,23648,52672,22303,52673,21520,52674,20820,52675,28237,52676,22242,52677,25512,52678,39059,52679,33151,52680,34581,52681,35114,52682,36864,52683,21534,52684,23663,52685,33216,52686,25302,52687,25176,52688,33073,52689,40501,52690,38464,52691,39534,52692,39548,52693,26925,52694,22949,52695,25299,52696,21822,52697,25366,52698,21703,52699,34521,52700,27964,52701,23043,52702,29926,52703,34972,52704,27498,52705,22806,52706,35916,52707,24367,52708,28286,52709,29609,52710,39037,52711,20024,52712,28919,52713,23436,52714,30871,52715,25405,52716,26202,52717,30358,52718,24779,52719,23451,52720,23113,52721,19975,52722,33109,52723,27754,52724,29579,52725,20129,52726,26505,52727,32593,52728,24448,52729,26106,52730,26395,52731,24536,52732,22916,52733,23041,52734,34585,52800,34587,52801,34589,52802,34591,52803,34592,52804,34596,52805,34598,52806,34599,52807,34600,52808,34602,52809,34603,52810,34604,52811,34605,52812,34607,52813,34608,52814,34610,52815,34611,52816,34613,52817,34614,52818,34616,52819,34617,52820,34618,52821,34620,52822,34621,52823,34624,52824,34625,52825,34626,52826,34627,52827,34628,52828,34629,52829,34630,52830,34634,52831,34635,52832,34637,52833,34639,52834,34640,52835,34641,52836,34642,52837,34644,52838,34645,52839,34646,52840,34648,52841,34650,52842,34651,52843,34652,52844,34653,52845,34654,52846,34655,52847,34657,52848,34658,52849,34662,52850,34663,52851,34664,52852,34665,52853,34666,52854,34667,52855,34668,52856,34669,52857,34671,52858,34673,52859,34674,52860,34675,52861,34677,52862,34679,52864,34680,52865,34681,52866,34682,52867,34687,52868,34688,52869,34689,52870,34692,52871,34694,52872,34695,52873,34697,52874,34698,52875,34700,52876,34702,52877,34703,52878,34704,52879,34705,52880,34706,52881,34708,52882,34709,52883,34710,52884,34712,52885,34713,52886,34714,52887,34715,52888,34716,52889,34717,52890,34718,52891,34720,52892,34721,52893,34722,52894,34723,52895,34724,52896,24013,52897,24494,52898,21361,52899,38886,52900,36829,52901,26693,52902,22260,52903,21807,52904,24799,52905,20026,52906,28493,52907,32500,52908,33479,52909,33806,52910,22996,52911,20255,52912,20266,52913,23614,52914,32428,52915,26410,52916,34074,52917,21619,52918,30031,52919,32963,52920,21890,52921,39759,52922,20301,52923,28205,52924,35859,52925,23561,52926,24944,52927,21355,52928,30239,52929,28201,52930,34442,52931,25991,52932,38395,52933,32441,52934,21563,52935,31283,52936,32010,52937,38382,52938,21985,52939,32705,52940,29934,52941,25373,52942,34583,52943,28065,52944,31389,52945,25105,52946,26017,52947,21351,52948,25569,52949,27779,52950,24043,52951,21596,52952,38056,52953,20044,52954,27745,52955,35820,52956,23627,52957,26080,52958,33436,52959,26791,52960,21566,52961,21556,52962,27595,52963,27494,52964,20116,52965,25410,52966,21320,52967,33310,52968,20237,52969,20398,52970,22366,52971,25098,52972,38654,52973,26212,52974,29289,52975,21247,52976,21153,52977,24735,52978,35823,52979,26132,52980,29081,52981,26512,52982,35199,52983,30802,52984,30717,52985,26224,52986,22075,52987,21560,52988,38177,52989,29306,52990,34725,53056,34726,53057,34727,53058,34729,53059,34730,53060,34734,53061,34736,53062,34737,53063,34738,53064,34740,53065,34742,53066,34743,53067,34744,53068,34745,53069,34747,53070,34748,53071,34750,53072,34751,53073,34753,53074,34754,53075,34755,53076,34756,53077,34757,53078,34759,53079,34760,53080,34761,53081,34764,53082,34765,53083,34766,53084,34767,53085,34768,53086,34772,53087,34773,53088,34774,53089,34775,53090,34776,53091,34777,53092,34778,53093,34780,53094,34781,53095,34782,53096,34783,53097,34785,53098,34786,53099,34787,53100,34788,53101,34790,53102,34791,53103,34792,53104,34793,53105,34795,53106,34796,53107,34797,53108,34799,53109,34800,53110,34801,53111,34802,53112,34803,53113,34804,53114,34805,53115,34806,53116,34807,53117,34808,53118,34810,53120,34811,53121,34812,53122,34813,53123,34815,53124,34816,53125,34817,53126,34818,53127,34820,53128,34821,53129,34822,53130,34823,53131,34824,53132,34825,53133,34827,53134,34828,53135,34829,53136,34830,53137,34831,53138,34832,53139,34833,53140,34834,53141,34836,53142,34839,53143,34840,53144,34841,53145,34842,53146,34844,53147,34845,53148,34846,53149,34847,53150,34848,53151,34851,53152,31232,53153,24687,53154,24076,53155,24713,53156,33181,53157,22805,53158,24796,53159,29060,53160,28911,53161,28330,53162,27728,53163,29312,53164,27268,53165,34989,53166,24109,53167,20064,53168,23219,53169,21916,53170,38115,53171,27927,53172,31995,53173,38553,53174,25103,53175,32454,53176,30606,53177,34430,53178,21283,53179,38686,53180,36758,53181,26247,53182,23777,53183,20384,53184,29421,53185,19979,53186,21414,53187,22799,53188,21523,53189,25472,53190,38184,53191,20808,53192,20185,53193,40092,53194,32420,53195,21688,53196,36132,53197,34900,53198,33335,53199,38386,53200,28046,53201,24358,53202,23244,53203,26174,53204,38505,53205,29616,53206,29486,53207,21439,53208,33146,53209,39301,53210,32673,53211,23466,53212,38519,53213,38480,53214,32447,53215,30456,53216,21410,53217,38262,53218,39321,53219,31665,53220,35140,53221,28248,53222,20065,53223,32724,53224,31077,53225,35814,53226,24819,53227,21709,53228,20139,53229,39033,53230,24055,53231,27233,53232,20687,53233,21521,53234,35937,53235,33831,53236,30813,53237,38660,53238,21066,53239,21742,53240,22179,53241,38144,53242,28040,53243,23477,53244,28102,53245,26195,53246,34852,53312,34853,53313,34854,53314,34855,53315,34856,53316,34857,53317,34858,53318,34859,53319,34860,53320,34861,53321,34862,53322,34863,53323,34864,53324,34865,53325,34867,53326,34868,53327,34869,53328,34870,53329,34871,53330,34872,53331,34874,53332,34875,53333,34877,53334,34878,53335,34879,53336,34881,53337,34882,53338,34883,53339,34886,53340,34887,53341,34888,53342,34889,53343,34890,53344,34891,53345,34894,53346,34895,53347,34896,53348,34897,53349,34898,53350,34899,53351,34901,53352,34902,53353,34904,53354,34906,53355,34907,53356,34908,53357,34909,53358,34910,53359,34911,53360,34912,53361,34918,53362,34919,53363,34922,53364,34925,53365,34927,53366,34929,53367,34931,53368,34932,53369,34933,53370,34934,53371,34936,53372,34937,53373,34938,53374,34939,53376,34940,53377,34944,53378,34947,53379,34950,53380,34951,53381,34953,53382,34954,53383,34956,53384,34958,53385,34959,53386,34960,53387,34961,53388,34963,53389,34964,53390,34965,53391,34967,53392,34968,53393,34969,53394,34970,53395,34971,53396,34973,53397,34974,53398,34975,53399,34976,53400,34977,53401,34979,53402,34981,53403,34982,53404,34983,53405,34984,53406,34985,53407,34986,53408,23567,53409,23389,53410,26657,53411,32918,53412,21880,53413,31505,53414,25928,53415,26964,53416,20123,53417,27463,53418,34638,53419,38795,53420,21327,53421,25375,53422,25658,53423,37034,53424,26012,53425,32961,53426,35856,53427,20889,53428,26800,53429,21368,53430,34809,53431,25032,53432,27844,53433,27899,53434,35874,53435,23633,53436,34218,53437,33455,53438,38156,53439,27427,53440,36763,53441,26032,53442,24571,53443,24515,53444,20449,53445,34885,53446,26143,53447,33125,53448,29481,53449,24826,53450,20852,53451,21009,53452,22411,53453,24418,53454,37026,53455,34892,53456,37266,53457,24184,53458,26447,53459,24615,53460,22995,53461,20804,53462,20982,53463,33016,53464,21256,53465,27769,53466,38596,53467,29066,53468,20241,53469,20462,53470,32670,53471,26429,53472,21957,53473,38152,53474,31168,53475,34966,53476,32483,53477,22687,53478,25100,53479,38656,53480,34394,53481,22040,53482,39035,53483,24464,53484,35768,53485,33988,53486,37207,53487,21465,53488,26093,53489,24207,53490,30044,53491,24676,53492,32110,53493,23167,53494,32490,53495,32493,53496,36713,53497,21927,53498,23459,53499,24748,53500,26059,53501,29572,53502,34988,53568,34990,53569,34991,53570,34992,53571,34994,53572,34995,53573,34996,53574,34997,53575,34998,53576,35e3,53577,35001,53578,35002,53579,35003,53580,35005,53581,35006,53582,35007,53583,35008,53584,35011,53585,35012,53586,35015,53587,35016,53588,35018,53589,35019,53590,35020,53591,35021,53592,35023,53593,35024,53594,35025,53595,35027,53596,35030,53597,35031,53598,35034,53599,35035,53600,35036,53601,35037,53602,35038,53603,35040,53604,35041,53605,35046,53606,35047,53607,35049,53608,35050,53609,35051,53610,35052,53611,35053,53612,35054,53613,35055,53614,35058,53615,35061,53616,35062,53617,35063,53618,35066,53619,35067,53620,35069,53621,35071,53622,35072,53623,35073,53624,35075,53625,35076,53626,35077,53627,35078,53628,35079,53629,35080,53630,35081,53632,35083,53633,35084,53634,35085,53635,35086,53636,35087,53637,35089,53638,35092,53639,35093,53640,35094,53641,35095,53642,35096,53643,35100,53644,35101,53645,35102,53646,35103,53647,35104,53648,35106,53649,35107,53650,35108,53651,35110,53652,35111,53653,35112,53654,35113,53655,35116,53656,35117,53657,35118,53658,35119,53659,35121,53660,35122,53661,35123,53662,35125,53663,35127,53664,36873,53665,30307,53666,30505,53667,32474,53668,38772,53669,34203,53670,23398,53671,31348,53672,38634,53673,34880,53674,21195,53675,29071,53676,24490,53677,26092,53678,35810,53679,23547,53680,39535,53681,24033,53682,27529,53683,27739,53684,35757,53685,35759,53686,36874,53687,36805,53688,21387,53689,25276,53690,40486,53691,40493,53692,21568,53693,20011,53694,33469,53695,29273,53696,34460,53697,23830,53698,34905,53699,28079,53700,38597,53701,21713,53702,20122,53703,35766,53704,28937,53705,21693,53706,38409,53707,28895,53708,28153,53709,30416,53710,20005,53711,30740,53712,34578,53713,23721,53714,24310,53715,35328,53716,39068,53717,38414,53718,28814,53719,27839,53720,22852,53721,25513,53722,30524,53723,34893,53724,28436,53725,33395,53726,22576,53727,29141,53728,21388,53729,30746,53730,38593,53731,21761,53732,24422,53733,28976,53734,23476,53735,35866,53736,39564,53737,27523,53738,22830,53739,40495,53740,31207,53741,26472,53742,25196,53743,20335,53744,30113,53745,32650,53746,27915,53747,38451,53748,27687,53749,20208,53750,30162,53751,20859,53752,26679,53753,28478,53754,36992,53755,33136,53756,22934,53757,29814,53758,35128,53824,35129,53825,35130,53826,35131,53827,35132,53828,35133,53829,35134,53830,35135,53831,35136,53832,35138,53833,35139,53834,35141,53835,35142,53836,35143,53837,35144,53838,35145,53839,35146,53840,35147,53841,35148,53842,35149,53843,35150,53844,35151,53845,35152,53846,35153,53847,35154,53848,35155,53849,35156,53850,35157,53851,35158,53852,35159,53853,35160,53854,35161,53855,35162,53856,35163,53857,35164,53858,35165,53859,35168,53860,35169,53861,35170,53862,35171,53863,35172,53864,35173,53865,35175,53866,35176,53867,35177,53868,35178,53869,35179,53870,35180,53871,35181,53872,35182,53873,35183,53874,35184,53875,35185,53876,35186,53877,35187,53878,35188,53879,35189,53880,35190,53881,35191,53882,35192,53883,35193,53884,35194,53885,35196,53886,35197,53888,35198,53889,35200,53890,35202,53891,35204,53892,35205,53893,35207,53894,35208,53895,35209,53896,35210,53897,35211,53898,35212,53899,35213,53900,35214,53901,35215,53902,35216,53903,35217,53904,35218,53905,35219,53906,35220,53907,35221,53908,35222,53909,35223,53910,35224,53911,35225,53912,35226,53913,35227,53914,35228,53915,35229,53916,35230,53917,35231,53918,35232,53919,35233,53920,25671,53921,23591,53922,36965,53923,31377,53924,35875,53925,23002,53926,21676,53927,33280,53928,33647,53929,35201,53930,32768,53931,26928,53932,22094,53933,32822,53934,29239,53935,37326,53936,20918,53937,20063,53938,39029,53939,25494,53940,19994,53941,21494,53942,26355,53943,33099,53944,22812,53945,28082,53946,19968,53947,22777,53948,21307,53949,25558,53950,38129,53951,20381,53952,20234,53953,34915,53954,39056,53955,22839,53956,36951,53957,31227,53958,20202,53959,33008,53960,30097,53961,27778,53962,23452,53963,23016,53964,24413,53965,26885,53966,34433,53967,20506,53968,24050,53969,20057,53970,30691,53971,20197,53972,33402,53973,25233,53974,26131,53975,37009,53976,23673,53977,20159,53978,24441,53979,33222,53980,36920,53981,32900,53982,30123,53983,20134,53984,35028,53985,24847,53986,27589,53987,24518,53988,20041,53989,30410,53990,28322,53991,35811,53992,35758,53993,35850,53994,35793,53995,24322,53996,32764,53997,32716,53998,32462,53999,33589,54e3,33643,54001,22240,54002,27575,54003,38899,54004,38452,54005,23035,54006,21535,54007,38134,54008,28139,54009,23493,54010,39278,54011,23609,54012,24341,54013,38544,54014,35234,54080,35235,54081,35236,54082,35237,54083,35238,54084,35239,54085,35240,54086,35241,54087,35242,54088,35243,54089,35244,54090,35245,54091,35246,54092,35247,54093,35248,54094,35249,54095,35250,54096,35251,54097,35252,54098,35253,54099,35254,54100,35255,54101,35256,54102,35257,54103,35258,54104,35259,54105,35260,54106,35261,54107,35262,54108,35263,54109,35264,54110,35267,54111,35277,54112,35283,54113,35284,54114,35285,54115,35287,54116,35288,54117,35289,54118,35291,54119,35293,54120,35295,54121,35296,54122,35297,54123,35298,54124,35300,54125,35303,54126,35304,54127,35305,54128,35306,54129,35308,54130,35309,54131,35310,54132,35312,54133,35313,54134,35314,54135,35316,54136,35317,54137,35318,54138,35319,54139,35320,54140,35321,54141,35322,54142,35323,54144,35324,54145,35325,54146,35326,54147,35327,54148,35329,54149,35330,54150,35331,54151,35332,54152,35333,54153,35334,54154,35336,54155,35337,54156,35338,54157,35339,54158,35340,54159,35341,54160,35342,54161,35343,54162,35344,54163,35345,54164,35346,54165,35347,54166,35348,54167,35349,54168,35350,54169,35351,54170,35352,54171,35353,54172,35354,54173,35355,54174,35356,54175,35357,54176,21360,54177,33521,54178,27185,54179,23156,54180,40560,54181,24212,54182,32552,54183,33721,54184,33828,54185,33829,54186,33639,54187,34631,54188,36814,54189,36194,54190,30408,54191,24433,54192,39062,54193,30828,54194,26144,54195,21727,54196,25317,54197,20323,54198,33219,54199,30152,54200,24248,54201,38605,54202,36362,54203,34553,54204,21647,54205,27891,54206,28044,54207,27704,54208,24703,54209,21191,54210,29992,54211,24189,54212,20248,54213,24736,54214,24551,54215,23588,54216,30001,54217,37038,54218,38080,54219,29369,54220,27833,54221,28216,54222,37193,54223,26377,54224,21451,54225,21491,54226,20305,54227,37321,54228,35825,54229,21448,54230,24188,54231,36802,54232,28132,54233,20110,54234,30402,54235,27014,54236,34398,54237,24858,54238,33286,54239,20313,54240,20446,54241,36926,54242,40060,54243,24841,54244,28189,54245,28180,54246,38533,54247,20104,54248,23089,54249,38632,54250,19982,54251,23679,54252,31161,54253,23431,54254,35821,54255,32701,54256,29577,54257,22495,54258,33419,54259,37057,54260,21505,54261,36935,54262,21947,54263,23786,54264,24481,54265,24840,54266,27442,54267,29425,54268,32946,54269,35465,54270,35358,54336,35359,54337,35360,54338,35361,54339,35362,54340,35363,54341,35364,54342,35365,54343,35366,54344,35367,54345,35368,54346,35369,54347,35370,54348,35371,54349,35372,54350,35373,54351,35374,54352,35375,54353,35376,54354,35377,54355,35378,54356,35379,54357,35380,54358,35381,54359,35382,54360,35383,54361,35384,54362,35385,54363,35386,54364,35387,54365,35388,54366,35389,54367,35391,54368,35392,54369,35393,54370,35394,54371,35395,54372,35396,54373,35397,54374,35398,54375,35399,54376,35401,54377,35402,54378,35403,54379,35404,54380,35405,54381,35406,54382,35407,54383,35408,54384,35409,54385,35410,54386,35411,54387,35412,54388,35413,54389,35414,54390,35415,54391,35416,54392,35417,54393,35418,54394,35419,54395,35420,54396,35421,54397,35422,54398,35423,54400,35424,54401,35425,54402,35426,54403,35427,54404,35428,54405,35429,54406,35430,54407,35431,54408,35432,54409,35433,54410,35434,54411,35435,54412,35436,54413,35437,54414,35438,54415,35439,54416,35440,54417,35441,54418,35442,54419,35443,54420,35444,54421,35445,54422,35446,54423,35447,54424,35448,54425,35450,54426,35451,54427,35452,54428,35453,54429,35454,54430,35455,54431,35456,54432,28020,54433,23507,54434,35029,54435,39044,54436,35947,54437,39533,54438,40499,54439,28170,54440,20900,54441,20803,54442,22435,54443,34945,54444,21407,54445,25588,54446,36757,54447,22253,54448,21592,54449,22278,54450,29503,54451,28304,54452,32536,54453,36828,54454,33489,54455,24895,54456,24616,54457,38498,54458,26352,54459,32422,54460,36234,54461,36291,54462,38053,54463,23731,54464,31908,54465,26376,54466,24742,54467,38405,54468,32792,54469,20113,54470,37095,54471,21248,54472,38504,54473,20801,54474,36816,54475,34164,54476,37213,54477,26197,54478,38901,54479,23381,54480,21277,54481,30776,54482,26434,54483,26685,54484,21705,54485,28798,54486,23472,54487,36733,54488,20877,54489,22312,54490,21681,54491,25874,54492,26242,54493,36190,54494,36163,54495,33039,54496,33900,54497,36973,54498,31967,54499,20991,54500,34299,54501,26531,54502,26089,54503,28577,54504,34468,54505,36481,54506,22122,54507,36896,54508,30338,54509,28790,54510,29157,54511,36131,54512,25321,54513,21017,54514,27901,54515,36156,54516,24590,54517,22686,54518,24974,54519,26366,54520,36192,54521,25166,54522,21939,54523,28195,54524,26413,54525,36711,54526,35457,54592,35458,54593,35459,54594,35460,54595,35461,54596,35462,54597,35463,54598,35464,54599,35467,54600,35468,54601,35469,54602,35470,54603,35471,54604,35472,54605,35473,54606,35474,54607,35476,54608,35477,54609,35478,54610,35479,54611,35480,54612,35481,54613,35482,54614,35483,54615,35484,54616,35485,54617,35486,54618,35487,54619,35488,54620,35489,54621,35490,54622,35491,54623,35492,54624,35493,54625,35494,54626,35495,54627,35496,54628,35497,54629,35498,54630,35499,54631,35500,54632,35501,54633,35502,54634,35503,54635,35504,54636,35505,54637,35506,54638,35507,54639,35508,54640,35509,54641,35510,54642,35511,54643,35512,54644,35513,54645,35514,54646,35515,54647,35516,54648,35517,54649,35518,54650,35519,54651,35520,54652,35521,54653,35522,54654,35523,54656,35524,54657,35525,54658,35526,54659,35527,54660,35528,54661,35529,54662,35530,54663,35531,54664,35532,54665,35533,54666,35534,54667,35535,54668,35536,54669,35537,54670,35538,54671,35539,54672,35540,54673,35541,54674,35542,54675,35543,54676,35544,54677,35545,54678,35546,54679,35547,54680,35548,54681,35549,54682,35550,54683,35551,54684,35552,54685,35553,54686,35554,54687,35555,54688,38113,54689,38392,54690,30504,54691,26629,54692,27048,54693,21643,54694,20045,54695,28856,54696,35784,54697,25688,54698,25995,54699,23429,54700,31364,54701,20538,54702,23528,54703,30651,54704,27617,54705,35449,54706,31896,54707,27838,54708,30415,54709,26025,54710,36759,54711,23853,54712,23637,54713,34360,54714,26632,54715,21344,54716,25112,54717,31449,54718,28251,54719,32509,54720,27167,54721,31456,54722,24432,54723,28467,54724,24352,54725,25484,54726,28072,54727,26454,54728,19976,54729,24080,54730,36134,54731,20183,54732,32960,54733,30260,54734,38556,54735,25307,54736,26157,54737,25214,54738,27836,54739,36213,54740,29031,54741,32617,54742,20806,54743,32903,54744,21484,54745,36974,54746,25240,54747,21746,54748,34544,54749,36761,54750,32773,54751,38167,54752,34071,54753,36825,54754,27993,54755,29645,54756,26015,54757,30495,54758,29956,54759,30759,54760,33275,54761,36126,54762,38024,54763,20390,54764,26517,54765,30137,54766,35786,54767,38663,54768,25391,54769,38215,54770,38453,54771,33976,54772,25379,54773,30529,54774,24449,54775,29424,54776,20105,54777,24596,54778,25972,54779,25327,54780,27491,54781,25919,54782,35556,54848,35557,54849,35558,54850,35559,54851,35560,54852,35561,54853,35562,54854,35563,54855,35564,54856,35565,54857,35566,54858,35567,54859,35568,54860,35569,54861,35570,54862,35571,54863,35572,54864,35573,54865,35574,54866,35575,54867,35576,54868,35577,54869,35578,54870,35579,54871,35580,54872,35581,54873,35582,54874,35583,54875,35584,54876,35585,54877,35586,54878,35587,54879,35588,54880,35589,54881,35590,54882,35592,54883,35593,54884,35594,54885,35595,54886,35596,54887,35597,54888,35598,54889,35599,54890,35600,54891,35601,54892,35602,54893,35603,54894,35604,54895,35605,54896,35606,54897,35607,54898,35608,54899,35609,54900,35610,54901,35611,54902,35612,54903,35613,54904,35614,54905,35615,54906,35616,54907,35617,54908,35618,54909,35619,54910,35620,54912,35621,54913,35623,54914,35624,54915,35625,54916,35626,54917,35627,54918,35628,54919,35629,54920,35630,54921,35631,54922,35632,54923,35633,54924,35634,54925,35635,54926,35636,54927,35637,54928,35638,54929,35639,54930,35640,54931,35641,54932,35642,54933,35643,54934,35644,54935,35645,54936,35646,54937,35647,54938,35648,54939,35649,54940,35650,54941,35651,54942,35652,54943,35653,54944,24103,54945,30151,54946,37073,54947,35777,54948,33437,54949,26525,54950,25903,54951,21553,54952,34584,54953,30693,54954,32930,54955,33026,54956,27713,54957,20043,54958,32455,54959,32844,54960,30452,54961,26893,54962,27542,54963,25191,54964,20540,54965,20356,54966,22336,54967,25351,54968,27490,54969,36286,54970,21482,54971,26088,54972,32440,54973,24535,54974,25370,54975,25527,54976,33267,54977,33268,54978,32622,54979,24092,54980,23769,54981,21046,54982,26234,54983,31209,54984,31258,54985,36136,54986,28825,54987,30164,54988,28382,54989,27835,54990,31378,54991,20013,54992,30405,54993,24544,54994,38047,54995,34935,54996,32456,54997,31181,54998,32959,54999,37325,55e3,20210,55001,20247,55002,33311,55003,21608,55004,24030,55005,27954,55006,35788,55007,31909,55008,36724,55009,32920,55010,24090,55011,21650,55012,30385,55013,23449,55014,26172,55015,39588,55016,29664,55017,26666,55018,34523,55019,26417,55020,29482,55021,35832,55022,35803,55023,36880,55024,31481,55025,28891,55026,29038,55027,25284,55028,30633,55029,22065,55030,20027,55031,33879,55032,26609,55033,21161,55034,34496,55035,36142,55036,38136,55037,31569,55038,35654,55104,35655,55105,35656,55106,35657,55107,35658,55108,35659,55109,35660,55110,35661,55111,35662,55112,35663,55113,35664,55114,35665,55115,35666,55116,35667,55117,35668,55118,35669,55119,35670,55120,35671,55121,35672,55122,35673,55123,35674,55124,35675,55125,35676,55126,35677,55127,35678,55128,35679,55129,35680,55130,35681,55131,35682,55132,35683,55133,35684,55134,35685,55135,35687,55136,35688,55137,35689,55138,35690,55139,35691,55140,35693,55141,35694,55142,35695,55143,35696,55144,35697,55145,35698,55146,35699,55147,35700,55148,35701,55149,35702,55150,35703,55151,35704,55152,35705,55153,35706,55154,35707,55155,35708,55156,35709,55157,35710,55158,35711,55159,35712,55160,35713,55161,35714,55162,35715,55163,35716,55164,35717,55165,35718,55166,35719,55168,35720,55169,35721,55170,35722,55171,35723,55172,35724,55173,35725,55174,35726,55175,35727,55176,35728,55177,35729,55178,35730,55179,35731,55180,35732,55181,35733,55182,35734,55183,35735,55184,35736,55185,35737,55186,35738,55187,35739,55188,35740,55189,35741,55190,35742,55191,35743,55192,35756,55193,35761,55194,35771,55195,35783,55196,35792,55197,35818,55198,35849,55199,35870,55200,20303,55201,27880,55202,31069,55203,39547,55204,25235,55205,29226,55206,25341,55207,19987,55208,30742,55209,36716,55210,25776,55211,36186,55212,31686,55213,26729,55214,24196,55215,35013,55216,22918,55217,25758,55218,22766,55219,29366,55220,26894,55221,38181,55222,36861,55223,36184,55224,22368,55225,32512,55226,35846,55227,20934,55228,25417,55229,25305,55230,21331,55231,26700,55232,29730,55233,33537,55234,37196,55235,21828,55236,30528,55237,28796,55238,27978,55239,20857,55240,21672,55241,36164,55242,23039,55243,28363,55244,28100,55245,23388,55246,32043,55247,20180,55248,31869,55249,28371,55250,23376,55251,33258,55252,28173,55253,23383,55254,39683,55255,26837,55256,36394,55257,23447,55258,32508,55259,24635,55260,32437,55261,37049,55262,36208,55263,22863,55264,25549,55265,31199,55266,36275,55267,21330,55268,26063,55269,31062,55270,35781,55271,38459,55272,32452,55273,38075,55274,32386,55275,22068,55276,37257,55277,26368,55278,32618,55279,23562,55280,36981,55281,26152,55282,24038,55283,20304,55284,26590,55285,20570,55286,20316,55287,22352,55288,24231,55289,59408,55290,59409,55291,59410,55292,59411,55293,59412,55294,35896,55360,35897,55361,35898,55362,35899,55363,35900,55364,35901,55365,35902,55366,35903,55367,35904,55368,35906,55369,35907,55370,35908,55371,35909,55372,35912,55373,35914,55374,35915,55375,35917,55376,35918,55377,35919,55378,35920,55379,35921,55380,35922,55381,35923,55382,35924,55383,35926,55384,35927,55385,35928,55386,35929,55387,35931,55388,35932,55389,35933,55390,35934,55391,35935,55392,35936,55393,35939,55394,35940,55395,35941,55396,35942,55397,35943,55398,35944,55399,35945,55400,35948,55401,35949,55402,35950,55403,35951,55404,35952,55405,35953,55406,35954,55407,35956,55408,35957,55409,35958,55410,35959,55411,35963,55412,35964,55413,35965,55414,35966,55415,35967,55416,35968,55417,35969,55418,35971,55419,35972,55420,35974,55421,35975,55422,35976,55424,35979,55425,35981,55426,35982,55427,35983,55428,35984,55429,35985,55430,35986,55431,35987,55432,35989,55433,35990,55434,35991,55435,35993,55436,35994,55437,35995,55438,35996,55439,35997,55440,35998,55441,35999,55442,36e3,55443,36001,55444,36002,55445,36003,55446,36004,55447,36005,55448,36006,55449,36007,55450,36008,55451,36009,55452,36010,55453,36011,55454,36012,55455,36013,55456,20109,55457,19980,55458,20800,55459,19984,55460,24319,55461,21317,55462,19989,55463,20120,55464,19998,55465,39730,55466,23404,55467,22121,55468,20008,55469,31162,55470,20031,55471,21269,55472,20039,55473,22829,55474,29243,55475,21358,55476,27664,55477,22239,55478,32996,55479,39319,55480,27603,55481,30590,55482,40727,55483,20022,55484,20127,55485,40720,55486,20060,55487,20073,55488,20115,55489,33416,55490,23387,55491,21868,55492,22031,55493,20164,55494,21389,55495,21405,55496,21411,55497,21413,55498,21422,55499,38757,55500,36189,55501,21274,55502,21493,55503,21286,55504,21294,55505,21310,55506,36188,55507,21350,55508,21347,55509,20994,55510,21e3,55511,21006,55512,21037,55513,21043,55514,21055,55515,21056,55516,21068,55517,21086,55518,21089,55519,21084,55520,33967,55521,21117,55522,21122,55523,21121,55524,21136,55525,21139,55526,20866,55527,32596,55528,20155,55529,20163,55530,20169,55531,20162,55532,20200,55533,20193,55534,20203,55535,20190,55536,20251,55537,20211,55538,20258,55539,20324,55540,20213,55541,20261,55542,20263,55543,20233,55544,20267,55545,20318,55546,20327,55547,25912,55548,20314,55549,20317,55550,36014,55616,36015,55617,36016,55618,36017,55619,36018,55620,36019,55621,36020,55622,36021,55623,36022,55624,36023,55625,36024,55626,36025,55627,36026,55628,36027,55629,36028,55630,36029,55631,36030,55632,36031,55633,36032,55634,36033,55635,36034,55636,36035,55637,36036,55638,36037,55639,36038,55640,36039,55641,36040,55642,36041,55643,36042,55644,36043,55645,36044,55646,36045,55647,36046,55648,36047,55649,36048,55650,36049,55651,36050,55652,36051,55653,36052,55654,36053,55655,36054,55656,36055,55657,36056,55658,36057,55659,36058,55660,36059,55661,36060,55662,36061,55663,36062,55664,36063,55665,36064,55666,36065,55667,36066,55668,36067,55669,36068,55670,36069,55671,36070,55672,36071,55673,36072,55674,36073,55675,36074,55676,36075,55677,36076,55678,36077,55680,36078,55681,36079,55682,36080,55683,36081,55684,36082,55685,36083,55686,36084,55687,36085,55688,36086,55689,36087,55690,36088,55691,36089,55692,36090,55693,36091,55694,36092,55695,36093,55696,36094,55697,36095,55698,36096,55699,36097,55700,36098,55701,36099,55702,36100,55703,36101,55704,36102,55705,36103,55706,36104,55707,36105,55708,36106,55709,36107,55710,36108,55711,36109,55712,20319,55713,20311,55714,20274,55715,20285,55716,20342,55717,20340,55718,20369,55719,20361,55720,20355,55721,20367,55722,20350,55723,20347,55724,20394,55725,20348,55726,20396,55727,20372,55728,20454,55729,20456,55730,20458,55731,20421,55732,20442,55733,20451,55734,20444,55735,20433,55736,20447,55737,20472,55738,20521,55739,20556,55740,20467,55741,20524,55742,20495,55743,20526,55744,20525,55745,20478,55746,20508,55747,20492,55748,20517,55749,20520,55750,20606,55751,20547,55752,20565,55753,20552,55754,20558,55755,20588,55756,20603,55757,20645,55758,20647,55759,20649,55760,20666,55761,20694,55762,20742,55763,20717,55764,20716,55765,20710,55766,20718,55767,20743,55768,20747,55769,20189,55770,27709,55771,20312,55772,20325,55773,20430,55774,40864,55775,27718,55776,31860,55777,20846,55778,24061,55779,40649,55780,39320,55781,20865,55782,22804,55783,21241,55784,21261,55785,35335,55786,21264,55787,20971,55788,22809,55789,20821,55790,20128,55791,20822,55792,20147,55793,34926,55794,34980,55795,20149,55796,33044,55797,35026,55798,31104,55799,23348,55800,34819,55801,32696,55802,20907,55803,20913,55804,20925,55805,20924,55806,36110,55872,36111,55873,36112,55874,36113,55875,36114,55876,36115,55877,36116,55878,36117,55879,36118,55880,36119,55881,36120,55882,36121,55883,36122,55884,36123,55885,36124,55886,36128,55887,36177,55888,36178,55889,36183,55890,36191,55891,36197,55892,36200,55893,36201,55894,36202,55895,36204,55896,36206,55897,36207,55898,36209,55899,36210,55900,36216,55901,36217,55902,36218,55903,36219,55904,36220,55905,36221,55906,36222,55907,36223,55908,36224,55909,36226,55910,36227,55911,36230,55912,36231,55913,36232,55914,36233,55915,36236,55916,36237,55917,36238,55918,36239,55919,36240,55920,36242,55921,36243,55922,36245,55923,36246,55924,36247,55925,36248,55926,36249,55927,36250,55928,36251,55929,36252,55930,36253,55931,36254,55932,36256,55933,36257,55934,36258,55936,36260,55937,36261,55938,36262,55939,36263,55940,36264,55941,36265,55942,36266,55943,36267,55944,36268,55945,36269,55946,36270,55947,36271,55948,36272,55949,36274,55950,36278,55951,36279,55952,36281,55953,36283,55954,36285,55955,36288,55956,36289,55957,36290,55958,36293,55959,36295,55960,36296,55961,36297,55962,36298,55963,36301,55964,36304,55965,36306,55966,36307,55967,36308,55968,20935,55969,20886,55970,20898,55971,20901,55972,35744,55973,35750,55974,35751,55975,35754,55976,35764,55977,35765,55978,35767,55979,35778,55980,35779,55981,35787,55982,35791,55983,35790,55984,35794,55985,35795,55986,35796,55987,35798,55988,35800,55989,35801,55990,35804,55991,35807,55992,35808,55993,35812,55994,35816,55995,35817,55996,35822,55997,35824,55998,35827,55999,35830,56e3,35833,56001,35836,56002,35839,56003,35840,56004,35842,56005,35844,56006,35847,56007,35852,56008,35855,56009,35857,56010,35858,56011,35860,56012,35861,56013,35862,56014,35865,56015,35867,56016,35864,56017,35869,56018,35871,56019,35872,56020,35873,56021,35877,56022,35879,56023,35882,56024,35883,56025,35886,56026,35887,56027,35890,56028,35891,56029,35893,56030,35894,56031,21353,56032,21370,56033,38429,56034,38434,56035,38433,56036,38449,56037,38442,56038,38461,56039,38460,56040,38466,56041,38473,56042,38484,56043,38495,56044,38503,56045,38508,56046,38514,56047,38516,56048,38536,56049,38541,56050,38551,56051,38576,56052,37015,56053,37019,56054,37021,56055,37017,56056,37036,56057,37025,56058,37044,56059,37043,56060,37046,56061,37050,56062,36309,56128,36312,56129,36313,56130,36316,56131,36320,56132,36321,56133,36322,56134,36325,56135,36326,56136,36327,56137,36329,56138,36333,56139,36334,56140,36336,56141,36337,56142,36338,56143,36340,56144,36342,56145,36348,56146,36350,56147,36351,56148,36352,56149,36353,56150,36354,56151,36355,56152,36356,56153,36358,56154,36359,56155,36360,56156,36363,56157,36365,56158,36366,56159,36368,56160,36369,56161,36370,56162,36371,56163,36373,56164,36374,56165,36375,56166,36376,56167,36377,56168,36378,56169,36379,56170,36380,56171,36384,56172,36385,56173,36388,56174,36389,56175,36390,56176,36391,56177,36392,56178,36395,56179,36397,56180,36400,56181,36402,56182,36403,56183,36404,56184,36406,56185,36407,56186,36408,56187,36411,56188,36412,56189,36414,56190,36415,56192,36419,56193,36421,56194,36422,56195,36428,56196,36429,56197,36430,56198,36431,56199,36432,56200,36435,56201,36436,56202,36437,56203,36438,56204,36439,56205,36440,56206,36442,56207,36443,56208,36444,56209,36445,56210,36446,56211,36447,56212,36448,56213,36449,56214,36450,56215,36451,56216,36452,56217,36453,56218,36455,56219,36456,56220,36458,56221,36459,56222,36462,56223,36465,56224,37048,56225,37040,56226,37071,56227,37061,56228,37054,56229,37072,56230,37060,56231,37063,56232,37075,56233,37094,56234,37090,56235,37084,56236,37079,56237,37083,56238,37099,56239,37103,56240,37118,56241,37124,56242,37154,56243,37150,56244,37155,56245,37169,56246,37167,56247,37177,56248,37187,56249,37190,56250,21005,56251,22850,56252,21154,56253,21164,56254,21165,56255,21182,56256,21759,56257,21200,56258,21206,56259,21232,56260,21471,56261,29166,56262,30669,56263,24308,56264,20981,56265,20988,56266,39727,56267,21430,56268,24321,56269,30042,56270,24047,56271,22348,56272,22441,56273,22433,56274,22654,56275,22716,56276,22725,56277,22737,56278,22313,56279,22316,56280,22314,56281,22323,56282,22329,56283,22318,56284,22319,56285,22364,56286,22331,56287,22338,56288,22377,56289,22405,56290,22379,56291,22406,56292,22396,56293,22395,56294,22376,56295,22381,56296,22390,56297,22387,56298,22445,56299,22436,56300,22412,56301,22450,56302,22479,56303,22439,56304,22452,56305,22419,56306,22432,56307,22485,56308,22488,56309,22490,56310,22489,56311,22482,56312,22456,56313,22516,56314,22511,56315,22520,56316,22500,56317,22493,56318,36467,56384,36469,56385,36471,56386,36472,56387,36473,56388,36474,56389,36475,56390,36477,56391,36478,56392,36480,56393,36482,56394,36483,56395,36484,56396,36486,56397,36488,56398,36489,56399,36490,56400,36491,56401,36492,56402,36493,56403,36494,56404,36497,56405,36498,56406,36499,56407,36501,56408,36502,56409,36503,56410,36504,56411,36505,56412,36506,56413,36507,56414,36509,56415,36511,56416,36512,56417,36513,56418,36514,56419,36515,56420,36516,56421,36517,56422,36518,56423,36519,56424,36520,56425,36521,56426,36522,56427,36525,56428,36526,56429,36528,56430,36529,56431,36531,56432,36532,56433,36533,56434,36534,56435,36535,56436,36536,56437,36537,56438,36539,56439,36540,56440,36541,56441,36542,56442,36543,56443,36544,56444,36545,56445,36546,56446,36547,56448,36548,56449,36549,56450,36550,56451,36551,56452,36552,56453,36553,56454,36554,56455,36555,56456,36556,56457,36557,56458,36559,56459,36560,56460,36561,56461,36562,56462,36563,56463,36564,56464,36565,56465,36566,56466,36567,56467,36568,56468,36569,56469,36570,56470,36571,56471,36572,56472,36573,56473,36574,56474,36575,56475,36576,56476,36577,56477,36578,56478,36579,56479,36580,56480,22539,56481,22541,56482,22525,56483,22509,56484,22528,56485,22558,56486,22553,56487,22596,56488,22560,56489,22629,56490,22636,56491,22657,56492,22665,56493,22682,56494,22656,56495,39336,56496,40729,56497,25087,56498,33401,56499,33405,56500,33407,56501,33423,56502,33418,56503,33448,56504,33412,56505,33422,56506,33425,56507,33431,56508,33433,56509,33451,56510,33464,56511,33470,56512,33456,56513,33480,56514,33482,56515,33507,56516,33432,56517,33463,56518,33454,56519,33483,56520,33484,56521,33473,56522,33449,56523,33460,56524,33441,56525,33450,56526,33439,56527,33476,56528,33486,56529,33444,56530,33505,56531,33545,56532,33527,56533,33508,56534,33551,56535,33543,56536,33500,56537,33524,56538,33490,56539,33496,56540,33548,56541,33531,56542,33491,56543,33553,56544,33562,56545,33542,56546,33556,56547,33557,56548,33504,56549,33493,56550,33564,56551,33617,56552,33627,56553,33628,56554,33544,56555,33682,56556,33596,56557,33588,56558,33585,56559,33691,56560,33630,56561,33583,56562,33615,56563,33607,56564,33603,56565,33631,56566,33600,56567,33559,56568,33632,56569,33581,56570,33594,56571,33587,56572,33638,56573,33637,56574,36581,56640,36582,56641,36583,56642,36584,56643,36585,56644,36586,56645,36587,56646,36588,56647,36589,56648,36590,56649,36591,56650,36592,56651,36593,56652,36594,56653,36595,56654,36596,56655,36597,56656,36598,56657,36599,56658,36600,56659,36601,56660,36602,56661,36603,56662,36604,56663,36605,56664,36606,56665,36607,56666,36608,56667,36609,56668,36610,56669,36611,56670,36612,56671,36613,56672,36614,56673,36615,56674,36616,56675,36617,56676,36618,56677,36619,56678,36620,56679,36621,56680,36622,56681,36623,56682,36624,56683,36625,56684,36626,56685,36627,56686,36628,56687,36629,56688,36630,56689,36631,56690,36632,56691,36633,56692,36634,56693,36635,56694,36636,56695,36637,56696,36638,56697,36639,56698,36640,56699,36641,56700,36642,56701,36643,56702,36644,56704,36645,56705,36646,56706,36647,56707,36648,56708,36649,56709,36650,56710,36651,56711,36652,56712,36653,56713,36654,56714,36655,56715,36656,56716,36657,56717,36658,56718,36659,56719,36660,56720,36661,56721,36662,56722,36663,56723,36664,56724,36665,56725,36666,56726,36667,56727,36668,56728,36669,56729,36670,56730,36671,56731,36672,56732,36673,56733,36674,56734,36675,56735,36676,56736,33640,56737,33563,56738,33641,56739,33644,56740,33642,56741,33645,56742,33646,56743,33712,56744,33656,56745,33715,56746,33716,56747,33696,56748,33706,56749,33683,56750,33692,56751,33669,56752,33660,56753,33718,56754,33705,56755,33661,56756,33720,56757,33659,56758,33688,56759,33694,56760,33704,56761,33722,56762,33724,56763,33729,56764,33793,56765,33765,56766,33752,56767,22535,56768,33816,56769,33803,56770,33757,56771,33789,56772,33750,56773,33820,56774,33848,56775,33809,56776,33798,56777,33748,56778,33759,56779,33807,56780,33795,56781,33784,56782,33785,56783,33770,56784,33733,56785,33728,56786,33830,56787,33776,56788,33761,56789,33884,56790,33873,56791,33882,56792,33881,56793,33907,56794,33927,56795,33928,56796,33914,56797,33929,56798,33912,56799,33852,56800,33862,56801,33897,56802,33910,56803,33932,56804,33934,56805,33841,56806,33901,56807,33985,56808,33997,56809,34e3,56810,34022,56811,33981,56812,34003,56813,33994,56814,33983,56815,33978,56816,34016,56817,33953,56818,33977,56819,33972,56820,33943,56821,34021,56822,34019,56823,34060,56824,29965,56825,34104,56826,34032,56827,34105,56828,34079,56829,34106,56830,36677,56896,36678,56897,36679,56898,36680,56899,36681,56900,36682,56901,36683,56902,36684,56903,36685,56904,36686,56905,36687,56906,36688,56907,36689,56908,36690,56909,36691,56910,36692,56911,36693,56912,36694,56913,36695,56914,36696,56915,36697,56916,36698,56917,36699,56918,36700,56919,36701,56920,36702,56921,36703,56922,36704,56923,36705,56924,36706,56925,36707,56926,36708,56927,36709,56928,36714,56929,36736,56930,36748,56931,36754,56932,36765,56933,36768,56934,36769,56935,36770,56936,36772,56937,36773,56938,36774,56939,36775,56940,36778,56941,36780,56942,36781,56943,36782,56944,36783,56945,36786,56946,36787,56947,36788,56948,36789,56949,36791,56950,36792,56951,36794,56952,36795,56953,36796,56954,36799,56955,36800,56956,36803,56957,36806,56958,36809,56960,36810,56961,36811,56962,36812,56963,36813,56964,36815,56965,36818,56966,36822,56967,36823,56968,36826,56969,36832,56970,36833,56971,36835,56972,36839,56973,36844,56974,36847,56975,36849,56976,36850,56977,36852,56978,36853,56979,36854,56980,36858,56981,36859,56982,36860,56983,36862,56984,36863,56985,36871,56986,36872,56987,36876,56988,36878,56989,36883,56990,36885,56991,36888,56992,34134,56993,34107,56994,34047,56995,34044,56996,34137,56997,34120,56998,34152,56999,34148,57e3,34142,57001,34170,57002,30626,57003,34115,57004,34162,57005,34171,57006,34212,57007,34216,57008,34183,57009,34191,57010,34169,57011,34222,57012,34204,57013,34181,57014,34233,57015,34231,57016,34224,57017,34259,57018,34241,57019,34268,57020,34303,57021,34343,57022,34309,57023,34345,57024,34326,57025,34364,57026,24318,57027,24328,57028,22844,57029,22849,57030,32823,57031,22869,57032,22874,57033,22872,57034,21263,57035,23586,57036,23589,57037,23596,57038,23604,57039,25164,57040,25194,57041,25247,57042,25275,57043,25290,57044,25306,57045,25303,57046,25326,57047,25378,57048,25334,57049,25401,57050,25419,57051,25411,57052,25517,57053,25590,57054,25457,57055,25466,57056,25486,57057,25524,57058,25453,57059,25516,57060,25482,57061,25449,57062,25518,57063,25532,57064,25586,57065,25592,57066,25568,57067,25599,57068,25540,57069,25566,57070,25550,57071,25682,57072,25542,57073,25534,57074,25669,57075,25665,57076,25611,57077,25627,57078,25632,57079,25612,57080,25638,57081,25633,57082,25694,57083,25732,57084,25709,57085,25750,57086,36889,57152,36892,57153,36899,57154,36900,57155,36901,57156,36903,57157,36904,57158,36905,57159,36906,57160,36907,57161,36908,57162,36912,57163,36913,57164,36914,57165,36915,57166,36916,57167,36919,57168,36921,57169,36922,57170,36925,57171,36927,57172,36928,57173,36931,57174,36933,57175,36934,57176,36936,57177,36937,57178,36938,57179,36939,57180,36940,57181,36942,57182,36948,57183,36949,57184,36950,57185,36953,57186,36954,57187,36956,57188,36957,57189,36958,57190,36959,57191,36960,57192,36961,57193,36964,57194,36966,57195,36967,57196,36969,57197,36970,57198,36971,57199,36972,57200,36975,57201,36976,57202,36977,57203,36978,57204,36979,57205,36982,57206,36983,57207,36984,57208,36985,57209,36986,57210,36987,57211,36988,57212,36990,57213,36993,57214,36996,57216,36997,57217,36998,57218,36999,57219,37001,57220,37002,57221,37004,57222,37005,57223,37006,57224,37007,57225,37008,57226,37010,57227,37012,57228,37014,57229,37016,57230,37018,57231,37020,57232,37022,57233,37023,57234,37024,57235,37028,57236,37029,57237,37031,57238,37032,57239,37033,57240,37035,57241,37037,57242,37042,57243,37047,57244,37052,57245,37053,57246,37055,57247,37056,57248,25722,57249,25783,57250,25784,57251,25753,57252,25786,57253,25792,57254,25808,57255,25815,57256,25828,57257,25826,57258,25865,57259,25893,57260,25902,57261,24331,57262,24530,57263,29977,57264,24337,57265,21343,57266,21489,57267,21501,57268,21481,57269,21480,57270,21499,57271,21522,57272,21526,57273,21510,57274,21579,57275,21586,57276,21587,57277,21588,57278,21590,57279,21571,57280,21537,57281,21591,57282,21593,57283,21539,57284,21554,57285,21634,57286,21652,57287,21623,57288,21617,57289,21604,57290,21658,57291,21659,57292,21636,57293,21622,57294,21606,57295,21661,57296,21712,57297,21677,57298,21698,57299,21684,57300,21714,57301,21671,57302,21670,57303,21715,57304,21716,57305,21618,57306,21667,57307,21717,57308,21691,57309,21695,57310,21708,57311,21721,57312,21722,57313,21724,57314,21673,57315,21674,57316,21668,57317,21725,57318,21711,57319,21726,57320,21787,57321,21735,57322,21792,57323,21757,57324,21780,57325,21747,57326,21794,57327,21795,57328,21775,57329,21777,57330,21799,57331,21802,57332,21863,57333,21903,57334,21941,57335,21833,57336,21869,57337,21825,57338,21845,57339,21823,57340,21840,57341,21820,57342,37058,57408,37059,57409,37062,57410,37064,57411,37065,57412,37067,57413,37068,57414,37069,57415,37074,57416,37076,57417,37077,57418,37078,57419,37080,57420,37081,57421,37082,57422,37086,57423,37087,57424,37088,57425,37091,57426,37092,57427,37093,57428,37097,57429,37098,57430,37100,57431,37102,57432,37104,57433,37105,57434,37106,57435,37107,57436,37109,57437,37110,57438,37111,57439,37113,57440,37114,57441,37115,57442,37116,57443,37119,57444,37120,57445,37121,57446,37123,57447,37125,57448,37126,57449,37127,57450,37128,57451,37129,57452,37130,57453,37131,57454,37132,57455,37133,57456,37134,57457,37135,57458,37136,57459,37137,57460,37138,57461,37139,57462,37140,57463,37141,57464,37142,57465,37143,57466,37144,57467,37146,57468,37147,57469,37148,57470,37149,57472,37151,57473,37152,57474,37153,57475,37156,57476,37157,57477,37158,57478,37159,57479,37160,57480,37161,57481,37162,57482,37163,57483,37164,57484,37165,57485,37166,57486,37168,57487,37170,57488,37171,57489,37172,57490,37173,57491,37174,57492,37175,57493,37176,57494,37178,57495,37179,57496,37180,57497,37181,57498,37182,57499,37183,57500,37184,57501,37185,57502,37186,57503,37188,57504,21815,57505,21846,57506,21877,57507,21878,57508,21879,57509,21811,57510,21808,57511,21852,57512,21899,57513,21970,57514,21891,57515,21937,57516,21945,57517,21896,57518,21889,57519,21919,57520,21886,57521,21974,57522,21905,57523,21883,57524,21983,57525,21949,57526,21950,57527,21908,57528,21913,57529,21994,57530,22007,57531,21961,57532,22047,57533,21969,57534,21995,57535,21996,57536,21972,57537,21990,57538,21981,57539,21956,57540,21999,57541,21989,57542,22002,57543,22003,57544,21964,57545,21965,57546,21992,57547,22005,57548,21988,57549,36756,57550,22046,57551,22024,57552,22028,57553,22017,57554,22052,57555,22051,57556,22014,57557,22016,57558,22055,57559,22061,57560,22104,57561,22073,57562,22103,57563,22060,57564,22093,57565,22114,57566,22105,57567,22108,57568,22092,57569,22100,57570,22150,57571,22116,57572,22129,57573,22123,57574,22139,57575,22140,57576,22149,57577,22163,57578,22191,57579,22228,57580,22231,57581,22237,57582,22241,57583,22261,57584,22251,57585,22265,57586,22271,57587,22276,57588,22282,57589,22281,57590,22300,57591,24079,57592,24089,57593,24084,57594,24081,57595,24113,57596,24123,57597,24124,57598,37189,57664,37191,57665,37192,57666,37201,57667,37203,57668,37204,57669,37205,57670,37206,57671,37208,57672,37209,57673,37211,57674,37212,57675,37215,57676,37216,57677,37222,57678,37223,57679,37224,57680,37227,57681,37229,57682,37235,57683,37242,57684,37243,57685,37244,57686,37248,57687,37249,57688,37250,57689,37251,57690,37252,57691,37254,57692,37256,57693,37258,57694,37262,57695,37263,57696,37267,57697,37268,57698,37269,57699,37270,57700,37271,57701,37272,57702,37273,57703,37276,57704,37277,57705,37278,57706,37279,57707,37280,57708,37281,57709,37284,57710,37285,57711,37286,57712,37287,57713,37288,57714,37289,57715,37291,57716,37292,57717,37296,57718,37297,57719,37298,57720,37299,57721,37302,57722,37303,57723,37304,57724,37305,57725,37307,57726,37308,57728,37309,57729,37310,57730,37311,57731,37312,57732,37313,57733,37314,57734,37315,57735,37316,57736,37317,57737,37318,57738,37320,57739,37323,57740,37328,57741,37330,57742,37331,57743,37332,57744,37333,57745,37334,57746,37335,57747,37336,57748,37337,57749,37338,57750,37339,57751,37341,57752,37342,57753,37343,57754,37344,57755,37345,57756,37346,57757,37347,57758,37348,57759,37349,57760,24119,57761,24132,57762,24148,57763,24155,57764,24158,57765,24161,57766,23692,57767,23674,57768,23693,57769,23696,57770,23702,57771,23688,57772,23704,57773,23705,57774,23697,57775,23706,57776,23708,57777,23733,57778,23714,57779,23741,57780,23724,57781,23723,57782,23729,57783,23715,57784,23745,57785,23735,57786,23748,57787,23762,57788,23780,57789,23755,57790,23781,57791,23810,57792,23811,57793,23847,57794,23846,57795,23854,57796,23844,57797,23838,57798,23814,57799,23835,57800,23896,57801,23870,57802,23860,57803,23869,57804,23916,57805,23899,57806,23919,57807,23901,57808,23915,57809,23883,57810,23882,57811,23913,57812,23924,57813,23938,57814,23961,57815,23965,57816,35955,57817,23991,57818,24005,57819,24435,57820,24439,57821,24450,57822,24455,57823,24457,57824,24460,57825,24469,57826,24473,57827,24476,57828,24488,57829,24493,57830,24501,57831,24508,57832,34914,57833,24417,57834,29357,57835,29360,57836,29364,57837,29367,57838,29368,57839,29379,57840,29377,57841,29390,57842,29389,57843,29394,57844,29416,57845,29423,57846,29417,57847,29426,57848,29428,57849,29431,57850,29441,57851,29427,57852,29443,57853,29434,57854,37350,57920,37351,57921,37352,57922,37353,57923,37354,57924,37355,57925,37356,57926,37357,57927,37358,57928,37359,57929,37360,57930,37361,57931,37362,57932,37363,57933,37364,57934,37365,57935,37366,57936,37367,57937,37368,57938,37369,57939,37370,57940,37371,57941,37372,57942,37373,57943,37374,57944,37375,57945,37376,57946,37377,57947,37378,57948,37379,57949,37380,57950,37381,57951,37382,57952,37383,57953,37384,57954,37385,57955,37386,57956,37387,57957,37388,57958,37389,57959,37390,57960,37391,57961,37392,57962,37393,57963,37394,57964,37395,57965,37396,57966,37397,57967,37398,57968,37399,57969,37400,57970,37401,57971,37402,57972,37403,57973,37404,57974,37405,57975,37406,57976,37407,57977,37408,57978,37409,57979,37410,57980,37411,57981,37412,57982,37413,57984,37414,57985,37415,57986,37416,57987,37417,57988,37418,57989,37419,57990,37420,57991,37421,57992,37422,57993,37423,57994,37424,57995,37425,57996,37426,57997,37427,57998,37428,57999,37429,58e3,37430,58001,37431,58002,37432,58003,37433,58004,37434,58005,37435,58006,37436,58007,37437,58008,37438,58009,37439,58010,37440,58011,37441,58012,37442,58013,37443,58014,37444,58015,37445,58016,29435,58017,29463,58018,29459,58019,29473,58020,29450,58021,29470,58022,29469,58023,29461,58024,29474,58025,29497,58026,29477,58027,29484,58028,29496,58029,29489,58030,29520,58031,29517,58032,29527,58033,29536,58034,29548,58035,29551,58036,29566,58037,33307,58038,22821,58039,39143,58040,22820,58041,22786,58042,39267,58043,39271,58044,39272,58045,39273,58046,39274,58047,39275,58048,39276,58049,39284,58050,39287,58051,39293,58052,39296,58053,39300,58054,39303,58055,39306,58056,39309,58057,39312,58058,39313,58059,39315,58060,39316,58061,39317,58062,24192,58063,24209,58064,24203,58065,24214,58066,24229,58067,24224,58068,24249,58069,24245,58070,24254,58071,24243,58072,36179,58073,24274,58074,24273,58075,24283,58076,24296,58077,24298,58078,33210,58079,24516,58080,24521,58081,24534,58082,24527,58083,24579,58084,24558,58085,24580,58086,24545,58087,24548,58088,24574,58089,24581,58090,24582,58091,24554,58092,24557,58093,24568,58094,24601,58095,24629,58096,24614,58097,24603,58098,24591,58099,24589,58100,24617,58101,24619,58102,24586,58103,24639,58104,24609,58105,24696,58106,24697,58107,24699,58108,24698,58109,24642,58110,37446,58176,37447,58177,37448,58178,37449,58179,37450,58180,37451,58181,37452,58182,37453,58183,37454,58184,37455,58185,37456,58186,37457,58187,37458,58188,37459,58189,37460,58190,37461,58191,37462,58192,37463,58193,37464,58194,37465,58195,37466,58196,37467,58197,37468,58198,37469,58199,37470,58200,37471,58201,37472,58202,37473,58203,37474,58204,37475,58205,37476,58206,37477,58207,37478,58208,37479,58209,37480,58210,37481,58211,37482,58212,37483,58213,37484,58214,37485,58215,37486,58216,37487,58217,37488,58218,37489,58219,37490,58220,37491,58221,37493,58222,37494,58223,37495,58224,37496,58225,37497,58226,37498,58227,37499,58228,37500,58229,37501,58230,37502,58231,37503,58232,37504,58233,37505,58234,37506,58235,37507,58236,37508,58237,37509,58238,37510,58240,37511,58241,37512,58242,37513,58243,37514,58244,37515,58245,37516,58246,37517,58247,37519,58248,37520,58249,37521,58250,37522,58251,37523,58252,37524,58253,37525,58254,37526,58255,37527,58256,37528,58257,37529,58258,37530,58259,37531,58260,37532,58261,37533,58262,37534,58263,37535,58264,37536,58265,37537,58266,37538,58267,37539,58268,37540,58269,37541,58270,37542,58271,37543,58272,24682,58273,24701,58274,24726,58275,24730,58276,24749,58277,24733,58278,24707,58279,24722,58280,24716,58281,24731,58282,24812,58283,24763,58284,24753,58285,24797,58286,24792,58287,24774,58288,24794,58289,24756,58290,24864,58291,24870,58292,24853,58293,24867,58294,24820,58295,24832,58296,24846,58297,24875,58298,24906,58299,24949,58300,25004,58301,24980,58302,24999,58303,25015,58304,25044,58305,25077,58306,24541,58307,38579,58308,38377,58309,38379,58310,38385,58311,38387,58312,38389,58313,38390,58314,38396,58315,38398,58316,38403,58317,38404,58318,38406,58319,38408,58320,38410,58321,38411,58322,38412,58323,38413,58324,38415,58325,38418,58326,38421,58327,38422,58328,38423,58329,38425,58330,38426,58331,20012,58332,29247,58333,25109,58334,27701,58335,27732,58336,27740,58337,27722,58338,27811,58339,27781,58340,27792,58341,27796,58342,27788,58343,27752,58344,27753,58345,27764,58346,27766,58347,27782,58348,27817,58349,27856,58350,27860,58351,27821,58352,27895,58353,27896,58354,27889,58355,27863,58356,27826,58357,27872,58358,27862,58359,27898,58360,27883,58361,27886,58362,27825,58363,27859,58364,27887,58365,27902,58366,37544,58432,37545,58433,37546,58434,37547,58435,37548,58436,37549,58437,37551,58438,37552,58439,37553,58440,37554,58441,37555,58442,37556,58443,37557,58444,37558,58445,37559,58446,37560,58447,37561,58448,37562,58449,37563,58450,37564,58451,37565,58452,37566,58453,37567,58454,37568,58455,37569,58456,37570,58457,37571,58458,37572,58459,37573,58460,37574,58461,37575,58462,37577,58463,37578,58464,37579,58465,37580,58466,37581,58467,37582,58468,37583,58469,37584,58470,37585,58471,37586,58472,37587,58473,37588,58474,37589,58475,37590,58476,37591,58477,37592,58478,37593,58479,37594,58480,37595,58481,37596,58482,37597,58483,37598,58484,37599,58485,37600,58486,37601,58487,37602,58488,37603,58489,37604,58490,37605,58491,37606,58492,37607,58493,37608,58494,37609,58496,37610,58497,37611,58498,37612,58499,37613,58500,37614,58501,37615,58502,37616,58503,37617,58504,37618,58505,37619,58506,37620,58507,37621,58508,37622,58509,37623,58510,37624,58511,37625,58512,37626,58513,37627,58514,37628,58515,37629,58516,37630,58517,37631,58518,37632,58519,37633,58520,37634,58521,37635,58522,37636,58523,37637,58524,37638,58525,37639,58526,37640,58527,37641,58528,27961,58529,27943,58530,27916,58531,27971,58532,27976,58533,27911,58534,27908,58535,27929,58536,27918,58537,27947,58538,27981,58539,27950,58540,27957,58541,27930,58542,27983,58543,27986,58544,27988,58545,27955,58546,28049,58547,28015,58548,28062,58549,28064,58550,27998,58551,28051,58552,28052,58553,27996,58554,28e3,58555,28028,58556,28003,58557,28186,58558,28103,58559,28101,58560,28126,58561,28174,58562,28095,58563,28128,58564,28177,58565,28134,58566,28125,58567,28121,58568,28182,58569,28075,58570,28172,58571,28078,58572,28203,58573,28270,58574,28238,58575,28267,58576,28338,58577,28255,58578,28294,58579,28243,58580,28244,58581,28210,58582,28197,58583,28228,58584,28383,58585,28337,58586,28312,58587,28384,58588,28461,58589,28386,58590,28325,58591,28327,58592,28349,58593,28347,58594,28343,58595,28375,58596,28340,58597,28367,58598,28303,58599,28354,58600,28319,58601,28514,58602,28486,58603,28487,58604,28452,58605,28437,58606,28409,58607,28463,58608,28470,58609,28491,58610,28532,58611,28458,58612,28425,58613,28457,58614,28553,58615,28557,58616,28556,58617,28536,58618,28530,58619,28540,58620,28538,58621,28625,58622,37642,58688,37643,58689,37644,58690,37645,58691,37646,58692,37647,58693,37648,58694,37649,58695,37650,58696,37651,58697,37652,58698,37653,58699,37654,58700,37655,58701,37656,58702,37657,58703,37658,58704,37659,58705,37660,58706,37661,58707,37662,58708,37663,58709,37664,58710,37665,58711,37666,58712,37667,58713,37668,58714,37669,58715,37670,58716,37671,58717,37672,58718,37673,58719,37674,58720,37675,58721,37676,58722,37677,58723,37678,58724,37679,58725,37680,58726,37681,58727,37682,58728,37683,58729,37684,58730,37685,58731,37686,58732,37687,58733,37688,58734,37689,58735,37690,58736,37691,58737,37692,58738,37693,58739,37695,58740,37696,58741,37697,58742,37698,58743,37699,58744,37700,58745,37701,58746,37702,58747,37703,58748,37704,58749,37705,58750,37706,58752,37707,58753,37708,58754,37709,58755,37710,58756,37711,58757,37712,58758,37713,58759,37714,58760,37715,58761,37716,58762,37717,58763,37718,58764,37719,58765,37720,58766,37721,58767,37722,58768,37723,58769,37724,58770,37725,58771,37726,58772,37727,58773,37728,58774,37729,58775,37730,58776,37731,58777,37732,58778,37733,58779,37734,58780,37735,58781,37736,58782,37737,58783,37739,58784,28617,58785,28583,58786,28601,58787,28598,58788,28610,58789,28641,58790,28654,58791,28638,58792,28640,58793,28655,58794,28698,58795,28707,58796,28699,58797,28729,58798,28725,58799,28751,58800,28766,58801,23424,58802,23428,58803,23445,58804,23443,58805,23461,58806,23480,58807,29999,58808,39582,58809,25652,58810,23524,58811,23534,58812,35120,58813,23536,58814,36423,58815,35591,58816,36790,58817,36819,58818,36821,58819,36837,58820,36846,58821,36836,58822,36841,58823,36838,58824,36851,58825,36840,58826,36869,58827,36868,58828,36875,58829,36902,58830,36881,58831,36877,58832,36886,58833,36897,58834,36917,58835,36918,58836,36909,58837,36911,58838,36932,58839,36945,58840,36946,58841,36944,58842,36968,58843,36952,58844,36962,58845,36955,58846,26297,58847,36980,58848,36989,58849,36994,58850,37e3,58851,36995,58852,37003,58853,24400,58854,24407,58855,24406,58856,24408,58857,23611,58858,21675,58859,23632,58860,23641,58861,23409,58862,23651,58863,23654,58864,32700,58865,24362,58866,24361,58867,24365,58868,33396,58869,24380,58870,39739,58871,23662,58872,22913,58873,22915,58874,22925,58875,22953,58876,22954,58877,22947,58878,37740,58944,37741,58945,37742,58946,37743,58947,37744,58948,37745,58949,37746,58950,37747,58951,37748,58952,37749,58953,37750,58954,37751,58955,37752,58956,37753,58957,37754,58958,37755,58959,37756,58960,37757,58961,37758,58962,37759,58963,37760,58964,37761,58965,37762,58966,37763,58967,37764,58968,37765,58969,37766,58970,37767,58971,37768,58972,37769,58973,37770,58974,37771,58975,37772,58976,37773,58977,37774,58978,37776,58979,37777,58980,37778,58981,37779,58982,37780,58983,37781,58984,37782,58985,37783,58986,37784,58987,37785,58988,37786,58989,37787,58990,37788,58991,37789,58992,37790,58993,37791,58994,37792,58995,37793,58996,37794,58997,37795,58998,37796,58999,37797,59e3,37798,59001,37799,59002,37800,59003,37801,59004,37802,59005,37803,59006,37804,59008,37805,59009,37806,59010,37807,59011,37808,59012,37809,59013,37810,59014,37811,59015,37812,59016,37813,59017,37814,59018,37815,59019,37816,59020,37817,59021,37818,59022,37819,59023,37820,59024,37821,59025,37822,59026,37823,59027,37824,59028,37825,59029,37826,59030,37827,59031,37828,59032,37829,59033,37830,59034,37831,59035,37832,59036,37833,59037,37835,59038,37836,59039,37837,59040,22935,59041,22986,59042,22955,59043,22942,59044,22948,59045,22994,59046,22962,59047,22959,59048,22999,59049,22974,59050,23045,59051,23046,59052,23005,59053,23048,59054,23011,59055,23e3,59056,23033,59057,23052,59058,23049,59059,23090,59060,23092,59061,23057,59062,23075,59063,23059,59064,23104,59065,23143,59066,23114,59067,23125,59068,23100,59069,23138,59070,23157,59071,33004,59072,23210,59073,23195,59074,23159,59075,23162,59076,23230,59077,23275,59078,23218,59079,23250,59080,23252,59081,23224,59082,23264,59083,23267,59084,23281,59085,23254,59086,23270,59087,23256,59088,23260,59089,23305,59090,23319,59091,23318,59092,23346,59093,23351,59094,23360,59095,23573,59096,23580,59097,23386,59098,23397,59099,23411,59100,23377,59101,23379,59102,23394,59103,39541,59104,39543,59105,39544,59106,39546,59107,39551,59108,39549,59109,39552,59110,39553,59111,39557,59112,39560,59113,39562,59114,39568,59115,39570,59116,39571,59117,39574,59118,39576,59119,39579,59120,39580,59121,39581,59122,39583,59123,39584,59124,39586,59125,39587,59126,39589,59127,39591,59128,32415,59129,32417,59130,32419,59131,32421,59132,32424,59133,32425,59134,37838,59200,37839,59201,37840,59202,37841,59203,37842,59204,37843,59205,37844,59206,37845,59207,37847,59208,37848,59209,37849,59210,37850,59211,37851,59212,37852,59213,37853,59214,37854,59215,37855,59216,37856,59217,37857,59218,37858,59219,37859,59220,37860,59221,37861,59222,37862,59223,37863,59224,37864,59225,37865,59226,37866,59227,37867,59228,37868,59229,37869,59230,37870,59231,37871,59232,37872,59233,37873,59234,37874,59235,37875,59236,37876,59237,37877,59238,37878,59239,37879,59240,37880,59241,37881,59242,37882,59243,37883,59244,37884,59245,37885,59246,37886,59247,37887,59248,37888,59249,37889,59250,37890,59251,37891,59252,37892,59253,37893,59254,37894,59255,37895,59256,37896,59257,37897,59258,37898,59259,37899,59260,37900,59261,37901,59262,37902,59264,37903,59265,37904,59266,37905,59267,37906,59268,37907,59269,37908,59270,37909,59271,37910,59272,37911,59273,37912,59274,37913,59275,37914,59276,37915,59277,37916,59278,37917,59279,37918,59280,37919,59281,37920,59282,37921,59283,37922,59284,37923,59285,37924,59286,37925,59287,37926,59288,37927,59289,37928,59290,37929,59291,37930,59292,37931,59293,37932,59294,37933,59295,37934,59296,32429,59297,32432,59298,32446,59299,32448,59300,32449,59301,32450,59302,32457,59303,32459,59304,32460,59305,32464,59306,32468,59307,32471,59308,32475,59309,32480,59310,32481,59311,32488,59312,32491,59313,32494,59314,32495,59315,32497,59316,32498,59317,32525,59318,32502,59319,32506,59320,32507,59321,32510,59322,32513,59323,32514,59324,32515,59325,32519,59326,32520,59327,32523,59328,32524,59329,32527,59330,32529,59331,32530,59332,32535,59333,32537,59334,32540,59335,32539,59336,32543,59337,32545,59338,32546,59339,32547,59340,32548,59341,32549,59342,32550,59343,32551,59344,32554,59345,32555,59346,32556,59347,32557,59348,32559,59349,32560,59350,32561,59351,32562,59352,32563,59353,32565,59354,24186,59355,30079,59356,24027,59357,30014,59358,37013,59359,29582,59360,29585,59361,29614,59362,29602,59363,29599,59364,29647,59365,29634,59366,29649,59367,29623,59368,29619,59369,29632,59370,29641,59371,29640,59372,29669,59373,29657,59374,39036,59375,29706,59376,29673,59377,29671,59378,29662,59379,29626,59380,29682,59381,29711,59382,29738,59383,29787,59384,29734,59385,29733,59386,29736,59387,29744,59388,29742,59389,29740,59390,37935,59456,37936,59457,37937,59458,37938,59459,37939,59460,37940,59461,37941,59462,37942,59463,37943,59464,37944,59465,37945,59466,37946,59467,37947,59468,37948,59469,37949,59470,37951,59471,37952,59472,37953,59473,37954,59474,37955,59475,37956,59476,37957,59477,37958,59478,37959,59479,37960,59480,37961,59481,37962,59482,37963,59483,37964,59484,37965,59485,37966,59486,37967,59487,37968,59488,37969,59489,37970,59490,37971,59491,37972,59492,37973,59493,37974,59494,37975,59495,37976,59496,37977,59497,37978,59498,37979,59499,37980,59500,37981,59501,37982,59502,37983,59503,37984,59504,37985,59505,37986,59506,37987,59507,37988,59508,37989,59509,37990,59510,37991,59511,37992,59512,37993,59513,37994,59514,37996,59515,37997,59516,37998,59517,37999,59518,38e3,59520,38001,59521,38002,59522,38003,59523,38004,59524,38005,59525,38006,59526,38007,59527,38008,59528,38009,59529,38010,59530,38011,59531,38012,59532,38013,59533,38014,59534,38015,59535,38016,59536,38017,59537,38018,59538,38019,59539,38020,59540,38033,59541,38038,59542,38040,59543,38087,59544,38095,59545,38099,59546,38100,59547,38106,59548,38118,59549,38139,59550,38172,59551,38176,59552,29723,59553,29722,59554,29761,59555,29788,59556,29783,59557,29781,59558,29785,59559,29815,59560,29805,59561,29822,59562,29852,59563,29838,59564,29824,59565,29825,59566,29831,59567,29835,59568,29854,59569,29864,59570,29865,59571,29840,59572,29863,59573,29906,59574,29882,59575,38890,59576,38891,59577,38892,59578,26444,59579,26451,59580,26462,59581,26440,59582,26473,59583,26533,59584,26503,59585,26474,59586,26483,59587,26520,59588,26535,59589,26485,59590,26536,59591,26526,59592,26541,59593,26507,59594,26487,59595,26492,59596,26608,59597,26633,59598,26584,59599,26634,59600,26601,59601,26544,59602,26636,59603,26585,59604,26549,59605,26586,59606,26547,59607,26589,59608,26624,59609,26563,59610,26552,59611,26594,59612,26638,59613,26561,59614,26621,59615,26674,59616,26675,59617,26720,59618,26721,59619,26702,59620,26722,59621,26692,59622,26724,59623,26755,59624,26653,59625,26709,59626,26726,59627,26689,59628,26727,59629,26688,59630,26686,59631,26698,59632,26697,59633,26665,59634,26805,59635,26767,59636,26740,59637,26743,59638,26771,59639,26731,59640,26818,59641,26990,59642,26876,59643,26911,59644,26912,59645,26873,59646,38183,59712,38195,59713,38205,59714,38211,59715,38216,59716,38219,59717,38229,59718,38234,59719,38240,59720,38254,59721,38260,59722,38261,59723,38263,59724,38264,59725,38265,59726,38266,59727,38267,59728,38268,59729,38269,59730,38270,59731,38272,59732,38273,59733,38274,59734,38275,59735,38276,59736,38277,59737,38278,59738,38279,59739,38280,59740,38281,59741,38282,59742,38283,59743,38284,59744,38285,59745,38286,59746,38287,59747,38288,59748,38289,59749,38290,59750,38291,59751,38292,59752,38293,59753,38294,59754,38295,59755,38296,59756,38297,59757,38298,59758,38299,59759,38300,59760,38301,59761,38302,59762,38303,59763,38304,59764,38305,59765,38306,59766,38307,59767,38308,59768,38309,59769,38310,59770,38311,59771,38312,59772,38313,59773,38314,59774,38315,59776,38316,59777,38317,59778,38318,59779,38319,59780,38320,59781,38321,59782,38322,59783,38323,59784,38324,59785,38325,59786,38326,59787,38327,59788,38328,59789,38329,59790,38330,59791,38331,59792,38332,59793,38333,59794,38334,59795,38335,59796,38336,59797,38337,59798,38338,59799,38339,59800,38340,59801,38341,59802,38342,59803,38343,59804,38344,59805,38345,59806,38346,59807,38347,59808,26916,59809,26864,59810,26891,59811,26881,59812,26967,59813,26851,59814,26896,59815,26993,59816,26937,59817,26976,59818,26946,59819,26973,59820,27012,59821,26987,59822,27008,59823,27032,59824,27e3,59825,26932,59826,27084,59827,27015,59828,27016,59829,27086,59830,27017,59831,26982,59832,26979,59833,27001,59834,27035,59835,27047,59836,27067,59837,27051,59838,27053,59839,27092,59840,27057,59841,27073,59842,27082,59843,27103,59844,27029,59845,27104,59846,27021,59847,27135,59848,27183,59849,27117,59850,27159,59851,27160,59852,27237,59853,27122,59854,27204,59855,27198,59856,27296,59857,27216,59858,27227,59859,27189,59860,27278,59861,27257,59862,27197,59863,27176,59864,27224,59865,27260,59866,27281,59867,27280,59868,27305,59869,27287,59870,27307,59871,29495,59872,29522,59873,27521,59874,27522,59875,27527,59876,27524,59877,27538,59878,27539,59879,27533,59880,27546,59881,27547,59882,27553,59883,27562,59884,36715,59885,36717,59886,36721,59887,36722,59888,36723,59889,36725,59890,36726,59891,36728,59892,36727,59893,36729,59894,36730,59895,36732,59896,36734,59897,36737,59898,36738,59899,36740,59900,36743,59901,36747,59902,38348,59968,38349,59969,38350,59970,38351,59971,38352,59972,38353,59973,38354,59974,38355,59975,38356,59976,38357,59977,38358,59978,38359,59979,38360,59980,38361,59981,38362,59982,38363,59983,38364,59984,38365,59985,38366,59986,38367,59987,38368,59988,38369,59989,38370,59990,38371,59991,38372,59992,38373,59993,38374,59994,38375,59995,38380,59996,38399,59997,38407,59998,38419,59999,38424,6e4,38427,60001,38430,60002,38432,60003,38435,60004,38436,60005,38437,60006,38438,60007,38439,60008,38440,60009,38441,60010,38443,60011,38444,60012,38445,60013,38447,60014,38448,60015,38455,60016,38456,60017,38457,60018,38458,60019,38462,60020,38465,60021,38467,60022,38474,60023,38478,60024,38479,60025,38481,60026,38482,60027,38483,60028,38486,60029,38487,60030,38488,60032,38489,60033,38490,60034,38492,60035,38493,60036,38494,60037,38496,60038,38499,60039,38501,60040,38502,60041,38507,60042,38509,60043,38510,60044,38511,60045,38512,60046,38513,60047,38515,60048,38520,60049,38521,60050,38522,60051,38523,60052,38524,60053,38525,60054,38526,60055,38527,60056,38528,60057,38529,60058,38530,60059,38531,60060,38532,60061,38535,60062,38537,60063,38538,60064,36749,60065,36750,60066,36751,60067,36760,60068,36762,60069,36558,60070,25099,60071,25111,60072,25115,60073,25119,60074,25122,60075,25121,60076,25125,60077,25124,60078,25132,60079,33255,60080,29935,60081,29940,60082,29951,60083,29967,60084,29969,60085,29971,60086,25908,60087,26094,60088,26095,60089,26096,60090,26122,60091,26137,60092,26482,60093,26115,60094,26133,60095,26112,60096,28805,60097,26359,60098,26141,60099,26164,60100,26161,60101,26166,60102,26165,60103,32774,60104,26207,60105,26196,60106,26177,60107,26191,60108,26198,60109,26209,60110,26199,60111,26231,60112,26244,60113,26252,60114,26279,60115,26269,60116,26302,60117,26331,60118,26332,60119,26342,60120,26345,60121,36146,60122,36147,60123,36150,60124,36155,60125,36157,60126,36160,60127,36165,60128,36166,60129,36168,60130,36169,60131,36167,60132,36173,60133,36181,60134,36185,60135,35271,60136,35274,60137,35275,60138,35276,60139,35278,60140,35279,60141,35280,60142,35281,60143,29294,60144,29343,60145,29277,60146,29286,60147,29295,60148,29310,60149,29311,60150,29316,60151,29323,60152,29325,60153,29327,60154,29330,60155,25352,60156,25394,60157,25520,60158,38540,60224,38542,60225,38545,60226,38546,60227,38547,60228,38549,60229,38550,60230,38554,60231,38555,60232,38557,60233,38558,60234,38559,60235,38560,60236,38561,60237,38562,60238,38563,60239,38564,60240,38565,60241,38566,60242,38568,60243,38569,60244,38570,60245,38571,60246,38572,60247,38573,60248,38574,60249,38575,60250,38577,60251,38578,60252,38580,60253,38581,60254,38583,60255,38584,60256,38586,60257,38587,60258,38591,60259,38594,60260,38595,60261,38600,60262,38602,60263,38603,60264,38608,60265,38609,60266,38611,60267,38612,60268,38614,60269,38615,60270,38616,60271,38617,60272,38618,60273,38619,60274,38620,60275,38621,60276,38622,60277,38623,60278,38625,60279,38626,60280,38627,60281,38628,60282,38629,60283,38630,60284,38631,60285,38635,60286,38636,60288,38637,60289,38638,60290,38640,60291,38641,60292,38642,60293,38644,60294,38645,60295,38648,60296,38650,60297,38651,60298,38652,60299,38653,60300,38655,60301,38658,60302,38659,60303,38661,60304,38666,60305,38667,60306,38668,60307,38672,60308,38673,60309,38674,60310,38676,60311,38677,60312,38679,60313,38680,60314,38681,60315,38682,60316,38683,60317,38685,60318,38687,60319,38688,60320,25663,60321,25816,60322,32772,60323,27626,60324,27635,60325,27645,60326,27637,60327,27641,60328,27653,60329,27655,60330,27654,60331,27661,60332,27669,60333,27672,60334,27673,60335,27674,60336,27681,60337,27689,60338,27684,60339,27690,60340,27698,60341,25909,60342,25941,60343,25963,60344,29261,60345,29266,60346,29270,60347,29232,60348,34402,60349,21014,60350,32927,60351,32924,60352,32915,60353,32956,60354,26378,60355,32957,60356,32945,60357,32939,60358,32941,60359,32948,60360,32951,60361,32999,60362,33e3,60363,33001,60364,33002,60365,32987,60366,32962,60367,32964,60368,32985,60369,32973,60370,32983,60371,26384,60372,32989,60373,33003,60374,33009,60375,33012,60376,33005,60377,33037,60378,33038,60379,33010,60380,33020,60381,26389,60382,33042,60383,35930,60384,33078,60385,33054,60386,33068,60387,33048,60388,33074,60389,33096,60390,33100,60391,33107,60392,33140,60393,33113,60394,33114,60395,33137,60396,33120,60397,33129,60398,33148,60399,33149,60400,33133,60401,33127,60402,22605,60403,23221,60404,33160,60405,33154,60406,33169,60407,28373,60408,33187,60409,33194,60410,33228,60411,26406,60412,33226,60413,33211,60414,38689,60480,38690,60481,38691,60482,38692,60483,38693,60484,38694,60485,38695,60486,38696,60487,38697,60488,38699,60489,38700,60490,38702,60491,38703,60492,38705,60493,38707,60494,38708,60495,38709,60496,38710,60497,38711,60498,38714,60499,38715,60500,38716,60501,38717,60502,38719,60503,38720,60504,38721,60505,38722,60506,38723,60507,38724,60508,38725,60509,38726,60510,38727,60511,38728,60512,38729,60513,38730,60514,38731,60515,38732,60516,38733,60517,38734,60518,38735,60519,38736,60520,38737,60521,38740,60522,38741,60523,38743,60524,38744,60525,38746,60526,38748,60527,38749,60528,38751,60529,38755,60530,38756,60531,38758,60532,38759,60533,38760,60534,38762,60535,38763,60536,38764,60537,38765,60538,38766,60539,38767,60540,38768,60541,38769,60542,38770,60544,38773,60545,38775,60546,38776,60547,38777,60548,38778,60549,38779,60550,38781,60551,38782,60552,38783,60553,38784,60554,38785,60555,38786,60556,38787,60557,38788,60558,38790,60559,38791,60560,38792,60561,38793,60562,38794,60563,38796,60564,38798,60565,38799,60566,38800,60567,38803,60568,38805,60569,38806,60570,38807,60571,38809,60572,38810,60573,38811,60574,38812,60575,38813,60576,33217,60577,33190,60578,27428,60579,27447,60580,27449,60581,27459,60582,27462,60583,27481,60584,39121,60585,39122,60586,39123,60587,39125,60588,39129,60589,39130,60590,27571,60591,24384,60592,27586,60593,35315,60594,26e3,60595,40785,60596,26003,60597,26044,60598,26054,60599,26052,60600,26051,60601,26060,60602,26062,60603,26066,60604,26070,60605,28800,60606,28828,60607,28822,60608,28829,60609,28859,60610,28864,60611,28855,60612,28843,60613,28849,60614,28904,60615,28874,60616,28944,60617,28947,60618,28950,60619,28975,60620,28977,60621,29043,60622,29020,60623,29032,60624,28997,60625,29042,60626,29002,60627,29048,60628,29050,60629,29080,60630,29107,60631,29109,60632,29096,60633,29088,60634,29152,60635,29140,60636,29159,60637,29177,60638,29213,60639,29224,60640,28780,60641,28952,60642,29030,60643,29113,60644,25150,60645,25149,60646,25155,60647,25160,60648,25161,60649,31035,60650,31040,60651,31046,60652,31049,60653,31067,60654,31068,60655,31059,60656,31066,60657,31074,60658,31063,60659,31072,60660,31087,60661,31079,60662,31098,60663,31109,60664,31114,60665,31130,60666,31143,60667,31155,60668,24529,60669,24528,60670,38814,60736,38815,60737,38817,60738,38818,60739,38820,60740,38821,60741,38822,60742,38823,60743,38824,60744,38825,60745,38826,60746,38828,60747,38830,60748,38832,60749,38833,60750,38835,60751,38837,60752,38838,60753,38839,60754,38840,60755,38841,60756,38842,60757,38843,60758,38844,60759,38845,60760,38846,60761,38847,60762,38848,60763,38849,60764,38850,60765,38851,60766,38852,60767,38853,60768,38854,60769,38855,60770,38856,60771,38857,60772,38858,60773,38859,60774,38860,60775,38861,60776,38862,60777,38863,60778,38864,60779,38865,60780,38866,60781,38867,60782,38868,60783,38869,60784,38870,60785,38871,60786,38872,60787,38873,60788,38874,60789,38875,60790,38876,60791,38877,60792,38878,60793,38879,60794,38880,60795,38881,60796,38882,60797,38883,60798,38884,60800,38885,60801,38888,60802,38894,60803,38895,60804,38896,60805,38897,60806,38898,60807,38900,60808,38903,60809,38904,60810,38905,60811,38906,60812,38907,60813,38908,60814,38909,60815,38910,60816,38911,60817,38912,60818,38913,60819,38914,60820,38915,60821,38916,60822,38917,60823,38918,60824,38919,60825,38920,60826,38921,60827,38922,60828,38923,60829,38924,60830,38925,60831,38926,60832,24636,60833,24669,60834,24666,60835,24679,60836,24641,60837,24665,60838,24675,60839,24747,60840,24838,60841,24845,60842,24925,60843,25001,60844,24989,60845,25035,60846,25041,60847,25094,60848,32896,60849,32895,60850,27795,60851,27894,60852,28156,60853,30710,60854,30712,60855,30720,60856,30729,60857,30743,60858,30744,60859,30737,60860,26027,60861,30765,60862,30748,60863,30749,60864,30777,60865,30778,60866,30779,60867,30751,60868,30780,60869,30757,60870,30764,60871,30755,60872,30761,60873,30798,60874,30829,60875,30806,60876,30807,60877,30758,60878,30800,60879,30791,60880,30796,60881,30826,60882,30875,60883,30867,60884,30874,60885,30855,60886,30876,60887,30881,60888,30883,60889,30898,60890,30905,60891,30885,60892,30932,60893,30937,60894,30921,60895,30956,60896,30962,60897,30981,60898,30964,60899,30995,60900,31012,60901,31006,60902,31028,60903,40859,60904,40697,60905,40699,60906,40700,60907,30449,60908,30468,60909,30477,60910,30457,60911,30471,60912,30472,60913,30490,60914,30498,60915,30489,60916,30509,60917,30502,60918,30517,60919,30520,60920,30544,60921,30545,60922,30535,60923,30531,60924,30554,60925,30568,60926,38927,60992,38928,60993,38929,60994,38930,60995,38931,60996,38932,60997,38933,60998,38934,60999,38935,61e3,38936,61001,38937,61002,38938,61003,38939,61004,38940,61005,38941,61006,38942,61007,38943,61008,38944,61009,38945,61010,38946,61011,38947,61012,38948,61013,38949,61014,38950,61015,38951,61016,38952,61017,38953,61018,38954,61019,38955,61020,38956,61021,38957,61022,38958,61023,38959,61024,38960,61025,38961,61026,38962,61027,38963,61028,38964,61029,38965,61030,38966,61031,38967,61032,38968,61033,38969,61034,38970,61035,38971,61036,38972,61037,38973,61038,38974,61039,38975,61040,38976,61041,38977,61042,38978,61043,38979,61044,38980,61045,38981,61046,38982,61047,38983,61048,38984,61049,38985,61050,38986,61051,38987,61052,38988,61053,38989,61054,38990,61056,38991,61057,38992,61058,38993,61059,38994,61060,38995,61061,38996,61062,38997,61063,38998,61064,38999,61065,39e3,61066,39001,61067,39002,61068,39003,61069,39004,61070,39005,61071,39006,61072,39007,61073,39008,61074,39009,61075,39010,61076,39011,61077,39012,61078,39013,61079,39014,61080,39015,61081,39016,61082,39017,61083,39018,61084,39019,61085,39020,61086,39021,61087,39022,61088,30562,61089,30565,61090,30591,61091,30605,61092,30589,61093,30592,61094,30604,61095,30609,61096,30623,61097,30624,61098,30640,61099,30645,61100,30653,61101,30010,61102,30016,61103,30030,61104,30027,61105,30024,61106,30043,61107,30066,61108,30073,61109,30083,61110,32600,61111,32609,61112,32607,61113,35400,61114,32616,61115,32628,61116,32625,61117,32633,61118,32641,61119,32638,61120,30413,61121,30437,61122,34866,61123,38021,61124,38022,61125,38023,61126,38027,61127,38026,61128,38028,61129,38029,61130,38031,61131,38032,61132,38036,61133,38039,61134,38037,61135,38042,61136,38043,61137,38044,61138,38051,61139,38052,61140,38059,61141,38058,61142,38061,61143,38060,61144,38063,61145,38064,61146,38066,61147,38068,61148,38070,61149,38071,61150,38072,61151,38073,61152,38074,61153,38076,61154,38077,61155,38079,61156,38084,61157,38088,61158,38089,61159,38090,61160,38091,61161,38092,61162,38093,61163,38094,61164,38096,61165,38097,61166,38098,61167,38101,61168,38102,61169,38103,61170,38105,61171,38104,61172,38107,61173,38110,61174,38111,61175,38112,61176,38114,61177,38116,61178,38117,61179,38119,61180,38120,61181,38122,61182,39023,61248,39024,61249,39025,61250,39026,61251,39027,61252,39028,61253,39051,61254,39054,61255,39058,61256,39061,61257,39065,61258,39075,61259,39080,61260,39081,61261,39082,61262,39083,61263,39084,61264,39085,61265,39086,61266,39087,61267,39088,61268,39089,61269,39090,61270,39091,61271,39092,61272,39093,61273,39094,61274,39095,61275,39096,61276,39097,61277,39098,61278,39099,61279,39100,61280,39101,61281,39102,61282,39103,61283,39104,61284,39105,61285,39106,61286,39107,61287,39108,61288,39109,61289,39110,61290,39111,61291,39112,61292,39113,61293,39114,61294,39115,61295,39116,61296,39117,61297,39119,61298,39120,61299,39124,61300,39126,61301,39127,61302,39131,61303,39132,61304,39133,61305,39136,61306,39137,61307,39138,61308,39139,61309,39140,61310,39141,61312,39142,61313,39145,61314,39146,61315,39147,61316,39148,61317,39149,61318,39150,61319,39151,61320,39152,61321,39153,61322,39154,61323,39155,61324,39156,61325,39157,61326,39158,61327,39159,61328,39160,61329,39161,61330,39162,61331,39163,61332,39164,61333,39165,61334,39166,61335,39167,61336,39168,61337,39169,61338,39170,61339,39171,61340,39172,61341,39173,61342,39174,61343,39175,61344,38121,61345,38123,61346,38126,61347,38127,61348,38131,61349,38132,61350,38133,61351,38135,61352,38137,61353,38140,61354,38141,61355,38143,61356,38147,61357,38146,61358,38150,61359,38151,61360,38153,61361,38154,61362,38157,61363,38158,61364,38159,61365,38162,61366,38163,61367,38164,61368,38165,61369,38166,61370,38168,61371,38171,61372,38173,61373,38174,61374,38175,61375,38178,61376,38186,61377,38187,61378,38185,61379,38188,61380,38193,61381,38194,61382,38196,61383,38198,61384,38199,61385,38200,61386,38204,61387,38206,61388,38207,61389,38210,61390,38197,61391,38212,61392,38213,61393,38214,61394,38217,61395,38220,61396,38222,61397,38223,61398,38226,61399,38227,61400,38228,61401,38230,61402,38231,61403,38232,61404,38233,61405,38235,61406,38238,61407,38239,61408,38237,61409,38241,61410,38242,61411,38244,61412,38245,61413,38246,61414,38247,61415,38248,61416,38249,61417,38250,61418,38251,61419,38252,61420,38255,61421,38257,61422,38258,61423,38259,61424,38202,61425,30695,61426,30700,61427,38601,61428,31189,61429,31213,61430,31203,61431,31211,61432,31238,61433,23879,61434,31235,61435,31234,61436,31262,61437,31252,61438,39176,61504,39177,61505,39178,61506,39179,61507,39180,61508,39182,61509,39183,61510,39185,61511,39186,61512,39187,61513,39188,61514,39189,61515,39190,61516,39191,61517,39192,61518,39193,61519,39194,61520,39195,61521,39196,61522,39197,61523,39198,61524,39199,61525,39200,61526,39201,61527,39202,61528,39203,61529,39204,61530,39205,61531,39206,61532,39207,61533,39208,61534,39209,61535,39210,61536,39211,61537,39212,61538,39213,61539,39215,61540,39216,61541,39217,61542,39218,61543,39219,61544,39220,61545,39221,61546,39222,61547,39223,61548,39224,61549,39225,61550,39226,61551,39227,61552,39228,61553,39229,61554,39230,61555,39231,61556,39232,61557,39233,61558,39234,61559,39235,61560,39236,61561,39237,61562,39238,61563,39239,61564,39240,61565,39241,61566,39242,61568,39243,61569,39244,61570,39245,61571,39246,61572,39247,61573,39248,61574,39249,61575,39250,61576,39251,61577,39254,61578,39255,61579,39256,61580,39257,61581,39258,61582,39259,61583,39260,61584,39261,61585,39262,61586,39263,61587,39264,61588,39265,61589,39266,61590,39268,61591,39270,61592,39283,61593,39288,61594,39289,61595,39291,61596,39294,61597,39298,61598,39299,61599,39305,61600,31289,61601,31287,61602,31313,61603,40655,61604,39333,61605,31344,61606,30344,61607,30350,61608,30355,61609,30361,61610,30372,61611,29918,61612,29920,61613,29996,61614,40480,61615,40482,61616,40488,61617,40489,61618,40490,61619,40491,61620,40492,61621,40498,61622,40497,61623,40502,61624,40504,61625,40503,61626,40505,61627,40506,61628,40510,61629,40513,61630,40514,61631,40516,61632,40518,61633,40519,61634,40520,61635,40521,61636,40523,61637,40524,61638,40526,61639,40529,61640,40533,61641,40535,61642,40538,61643,40539,61644,40540,61645,40542,61646,40547,61647,40550,61648,40551,61649,40552,61650,40553,61651,40554,61652,40555,61653,40556,61654,40561,61655,40557,61656,40563,61657,30098,61658,30100,61659,30102,61660,30112,61661,30109,61662,30124,61663,30115,61664,30131,61665,30132,61666,30136,61667,30148,61668,30129,61669,30128,61670,30147,61671,30146,61672,30166,61673,30157,61674,30179,61675,30184,61676,30182,61677,30180,61678,30187,61679,30183,61680,30211,61681,30193,61682,30204,61683,30207,61684,30224,61685,30208,61686,30213,61687,30220,61688,30231,61689,30218,61690,30245,61691,30232,61692,30229,61693,30233,61694,39308,61760,39310,61761,39322,61762,39323,61763,39324,61764,39325,61765,39326,61766,39327,61767,39328,61768,39329,61769,39330,61770,39331,61771,39332,61772,39334,61773,39335,61774,39337,61775,39338,61776,39339,61777,39340,61778,39341,61779,39342,61780,39343,61781,39344,61782,39345,61783,39346,61784,39347,61785,39348,61786,39349,61787,39350,61788,39351,61789,39352,61790,39353,61791,39354,61792,39355,61793,39356,61794,39357,61795,39358,61796,39359,61797,39360,61798,39361,61799,39362,61800,39363,61801,39364,61802,39365,61803,39366,61804,39367,61805,39368,61806,39369,61807,39370,61808,39371,61809,39372,61810,39373,61811,39374,61812,39375,61813,39376,61814,39377,61815,39378,61816,39379,61817,39380,61818,39381,61819,39382,61820,39383,61821,39384,61822,39385,61824,39386,61825,39387,61826,39388,61827,39389,61828,39390,61829,39391,61830,39392,61831,39393,61832,39394,61833,39395,61834,39396,61835,39397,61836,39398,61837,39399,61838,39400,61839,39401,61840,39402,61841,39403,61842,39404,61843,39405,61844,39406,61845,39407,61846,39408,61847,39409,61848,39410,61849,39411,61850,39412,61851,39413,61852,39414,61853,39415,61854,39416,61855,39417,61856,30235,61857,30268,61858,30242,61859,30240,61860,30272,61861,30253,61862,30256,61863,30271,61864,30261,61865,30275,61866,30270,61867,30259,61868,30285,61869,30302,61870,30292,61871,30300,61872,30294,61873,30315,61874,30319,61875,32714,61876,31462,61877,31352,61878,31353,61879,31360,61880,31366,61881,31368,61882,31381,61883,31398,61884,31392,61885,31404,61886,31400,61887,31405,61888,31411,61889,34916,61890,34921,61891,34930,61892,34941,61893,34943,61894,34946,61895,34978,61896,35014,61897,34999,61898,35004,61899,35017,61900,35042,61901,35022,61902,35043,61903,35045,61904,35057,61905,35098,61906,35068,61907,35048,61908,35070,61909,35056,61910,35105,61911,35097,61912,35091,61913,35099,61914,35082,61915,35124,61916,35115,61917,35126,61918,35137,61919,35174,61920,35195,61921,30091,61922,32997,61923,30386,61924,30388,61925,30684,61926,32786,61927,32788,61928,32790,61929,32796,61930,32800,61931,32802,61932,32805,61933,32806,61934,32807,61935,32809,61936,32808,61937,32817,61938,32779,61939,32821,61940,32835,61941,32838,61942,32845,61943,32850,61944,32873,61945,32881,61946,35203,61947,39032,61948,39040,61949,39043,61950,39418,62016,39419,62017,39420,62018,39421,62019,39422,62020,39423,62021,39424,62022,39425,62023,39426,62024,39427,62025,39428,62026,39429,62027,39430,62028,39431,62029,39432,62030,39433,62031,39434,62032,39435,62033,39436,62034,39437,62035,39438,62036,39439,62037,39440,62038,39441,62039,39442,62040,39443,62041,39444,62042,39445,62043,39446,62044,39447,62045,39448,62046,39449,62047,39450,62048,39451,62049,39452,62050,39453,62051,39454,62052,39455,62053,39456,62054,39457,62055,39458,62056,39459,62057,39460,62058,39461,62059,39462,62060,39463,62061,39464,62062,39465,62063,39466,62064,39467,62065,39468,62066,39469,62067,39470,62068,39471,62069,39472,62070,39473,62071,39474,62072,39475,62073,39476,62074,39477,62075,39478,62076,39479,62077,39480,62078,39481,62080,39482,62081,39483,62082,39484,62083,39485,62084,39486,62085,39487,62086,39488,62087,39489,62088,39490,62089,39491,62090,39492,62091,39493,62092,39494,62093,39495,62094,39496,62095,39497,62096,39498,62097,39499,62098,39500,62099,39501,62100,39502,62101,39503,62102,39504,62103,39505,62104,39506,62105,39507,62106,39508,62107,39509,62108,39510,62109,39511,62110,39512,62111,39513,62112,39049,62113,39052,62114,39053,62115,39055,62116,39060,62117,39066,62118,39067,62119,39070,62120,39071,62121,39073,62122,39074,62123,39077,62124,39078,62125,34381,62126,34388,62127,34412,62128,34414,62129,34431,62130,34426,62131,34428,62132,34427,62133,34472,62134,34445,62135,34443,62136,34476,62137,34461,62138,34471,62139,34467,62140,34474,62141,34451,62142,34473,62143,34486,62144,34500,62145,34485,62146,34510,62147,34480,62148,34490,62149,34481,62150,34479,62151,34505,62152,34511,62153,34484,62154,34537,62155,34545,62156,34546,62157,34541,62158,34547,62159,34512,62160,34579,62161,34526,62162,34548,62163,34527,62164,34520,62165,34513,62166,34563,62167,34567,62168,34552,62169,34568,62170,34570,62171,34573,62172,34569,62173,34595,62174,34619,62175,34590,62176,34597,62177,34606,62178,34586,62179,34622,62180,34632,62181,34612,62182,34609,62183,34601,62184,34615,62185,34623,62186,34690,62187,34594,62188,34685,62189,34686,62190,34683,62191,34656,62192,34672,62193,34636,62194,34670,62195,34699,62196,34643,62197,34659,62198,34684,62199,34660,62200,34649,62201,34661,62202,34707,62203,34735,62204,34728,62205,34770,62206,39514,62272,39515,62273,39516,62274,39517,62275,39518,62276,39519,62277,39520,62278,39521,62279,39522,62280,39523,62281,39524,62282,39525,62283,39526,62284,39527,62285,39528,62286,39529,62287,39530,62288,39531,62289,39538,62290,39555,62291,39561,62292,39565,62293,39566,62294,39572,62295,39573,62296,39577,62297,39590,62298,39593,62299,39594,62300,39595,62301,39596,62302,39597,62303,39598,62304,39599,62305,39602,62306,39603,62307,39604,62308,39605,62309,39609,62310,39611,62311,39613,62312,39614,62313,39615,62314,39619,62315,39620,62316,39622,62317,39623,62318,39624,62319,39625,62320,39626,62321,39629,62322,39630,62323,39631,62324,39632,62325,39634,62326,39636,62327,39637,62328,39638,62329,39639,62330,39641,62331,39642,62332,39643,62333,39644,62334,39645,62336,39646,62337,39648,62338,39650,62339,39651,62340,39652,62341,39653,62342,39655,62343,39656,62344,39657,62345,39658,62346,39660,62347,39662,62348,39664,62349,39665,62350,39666,62351,39667,62352,39668,62353,39669,62354,39670,62355,39671,62356,39672,62357,39674,62358,39676,62359,39677,62360,39678,62361,39679,62362,39680,62363,39681,62364,39682,62365,39684,62366,39685,62367,39686,62368,34758,62369,34696,62370,34693,62371,34733,62372,34711,62373,34691,62374,34731,62375,34789,62376,34732,62377,34741,62378,34739,62379,34763,62380,34771,62381,34749,62382,34769,62383,34752,62384,34762,62385,34779,62386,34794,62387,34784,62388,34798,62389,34838,62390,34835,62391,34814,62392,34826,62393,34843,62394,34849,62395,34873,62396,34876,62397,32566,62398,32578,62399,32580,62400,32581,62401,33296,62402,31482,62403,31485,62404,31496,62405,31491,62406,31492,62407,31509,62408,31498,62409,31531,62410,31503,62411,31559,62412,31544,62413,31530,62414,31513,62415,31534,62416,31537,62417,31520,62418,31525,62419,31524,62420,31539,62421,31550,62422,31518,62423,31576,62424,31578,62425,31557,62426,31605,62427,31564,62428,31581,62429,31584,62430,31598,62431,31611,62432,31586,62433,31602,62434,31601,62435,31632,62436,31654,62437,31655,62438,31672,62439,31660,62440,31645,62441,31656,62442,31621,62443,31658,62444,31644,62445,31650,62446,31659,62447,31668,62448,31697,62449,31681,62450,31692,62451,31709,62452,31706,62453,31717,62454,31718,62455,31722,62456,31756,62457,31742,62458,31740,62459,31759,62460,31766,62461,31755,62462,39687,62528,39689,62529,39690,62530,39691,62531,39692,62532,39693,62533,39694,62534,39696,62535,39697,62536,39698,62537,39700,62538,39701,62539,39702,62540,39703,62541,39704,62542,39705,62543,39706,62544,39707,62545,39708,62546,39709,62547,39710,62548,39712,62549,39713,62550,39714,62551,39716,62552,39717,62553,39718,62554,39719,62555,39720,62556,39721,62557,39722,62558,39723,62559,39724,62560,39725,62561,39726,62562,39728,62563,39729,62564,39731,62565,39732,62566,39733,62567,39734,62568,39735,62569,39736,62570,39737,62571,39738,62572,39741,62573,39742,62574,39743,62575,39744,62576,39750,62577,39754,62578,39755,62579,39756,62580,39758,62581,39760,62582,39762,62583,39763,62584,39765,62585,39766,62586,39767,62587,39768,62588,39769,62589,39770,62590,39771,62592,39772,62593,39773,62594,39774,62595,39775,62596,39776,62597,39777,62598,39778,62599,39779,62600,39780,62601,39781,62602,39782,62603,39783,62604,39784,62605,39785,62606,39786,62607,39787,62608,39788,62609,39789,62610,39790,62611,39791,62612,39792,62613,39793,62614,39794,62615,39795,62616,39796,62617,39797,62618,39798,62619,39799,62620,39800,62621,39801,62622,39802,62623,39803,62624,31775,62625,31786,62626,31782,62627,31800,62628,31809,62629,31808,62630,33278,62631,33281,62632,33282,62633,33284,62634,33260,62635,34884,62636,33313,62637,33314,62638,33315,62639,33325,62640,33327,62641,33320,62642,33323,62643,33336,62644,33339,62645,33331,62646,33332,62647,33342,62648,33348,62649,33353,62650,33355,62651,33359,62652,33370,62653,33375,62654,33384,62655,34942,62656,34949,62657,34952,62658,35032,62659,35039,62660,35166,62661,32669,62662,32671,62663,32679,62664,32687,62665,32688,62666,32690,62667,31868,62668,25929,62669,31889,62670,31901,62671,31900,62672,31902,62673,31906,62674,31922,62675,31932,62676,31933,62677,31937,62678,31943,62679,31948,62680,31949,62681,31944,62682,31941,62683,31959,62684,31976,62685,33390,62686,26280,62687,32703,62688,32718,62689,32725,62690,32741,62691,32737,62692,32742,62693,32745,62694,32750,62695,32755,62696,31992,62697,32119,62698,32166,62699,32174,62700,32327,62701,32411,62702,40632,62703,40628,62704,36211,62705,36228,62706,36244,62707,36241,62708,36273,62709,36199,62710,36205,62711,35911,62712,35913,62713,37194,62714,37200,62715,37198,62716,37199,62717,37220,62718,39804,62784,39805,62785,39806,62786,39807,62787,39808,62788,39809,62789,39810,62790,39811,62791,39812,62792,39813,62793,39814,62794,39815,62795,39816,62796,39817,62797,39818,62798,39819,62799,39820,62800,39821,62801,39822,62802,39823,62803,39824,62804,39825,62805,39826,62806,39827,62807,39828,62808,39829,62809,39830,62810,39831,62811,39832,62812,39833,62813,39834,62814,39835,62815,39836,62816,39837,62817,39838,62818,39839,62819,39840,62820,39841,62821,39842,62822,39843,62823,39844,62824,39845,62825,39846,62826,39847,62827,39848,62828,39849,62829,39850,62830,39851,62831,39852,62832,39853,62833,39854,62834,39855,62835,39856,62836,39857,62837,39858,62838,39859,62839,39860,62840,39861,62841,39862,62842,39863,62843,39864,62844,39865,62845,39866,62846,39867,62848,39868,62849,39869,62850,39870,62851,39871,62852,39872,62853,39873,62854,39874,62855,39875,62856,39876,62857,39877,62858,39878,62859,39879,62860,39880,62861,39881,62862,39882,62863,39883,62864,39884,62865,39885,62866,39886,62867,39887,62868,39888,62869,39889,62870,39890,62871,39891,62872,39892,62873,39893,62874,39894,62875,39895,62876,39896,62877,39897,62878,39898,62879,39899,62880,37218,62881,37217,62882,37232,62883,37225,62884,37231,62885,37245,62886,37246,62887,37234,62888,37236,62889,37241,62890,37260,62891,37253,62892,37264,62893,37261,62894,37265,62895,37282,62896,37283,62897,37290,62898,37293,62899,37294,62900,37295,62901,37301,62902,37300,62903,37306,62904,35925,62905,40574,62906,36280,62907,36331,62908,36357,62909,36441,62910,36457,62911,36277,62912,36287,62913,36284,62914,36282,62915,36292,62916,36310,62917,36311,62918,36314,62919,36318,62920,36302,62921,36303,62922,36315,62923,36294,62924,36332,62925,36343,62926,36344,62927,36323,62928,36345,62929,36347,62930,36324,62931,36361,62932,36349,62933,36372,62934,36381,62935,36383,62936,36396,62937,36398,62938,36387,62939,36399,62940,36410,62941,36416,62942,36409,62943,36405,62944,36413,62945,36401,62946,36425,62947,36417,62948,36418,62949,36433,62950,36434,62951,36426,62952,36464,62953,36470,62954,36476,62955,36463,62956,36468,62957,36485,62958,36495,62959,36500,62960,36496,62961,36508,62962,36510,62963,35960,62964,35970,62965,35978,62966,35973,62967,35992,62968,35988,62969,26011,62970,35286,62971,35294,62972,35290,62973,35292,62974,39900,63040,39901,63041,39902,63042,39903,63043,39904,63044,39905,63045,39906,63046,39907,63047,39908,63048,39909,63049,39910,63050,39911,63051,39912,63052,39913,63053,39914,63054,39915,63055,39916,63056,39917,63057,39918,63058,39919,63059,39920,63060,39921,63061,39922,63062,39923,63063,39924,63064,39925,63065,39926,63066,39927,63067,39928,63068,39929,63069,39930,63070,39931,63071,39932,63072,39933,63073,39934,63074,39935,63075,39936,63076,39937,63077,39938,63078,39939,63079,39940,63080,39941,63081,39942,63082,39943,63083,39944,63084,39945,63085,39946,63086,39947,63087,39948,63088,39949,63089,39950,63090,39951,63091,39952,63092,39953,63093,39954,63094,39955,63095,39956,63096,39957,63097,39958,63098,39959,63099,39960,63100,39961,63101,39962,63102,39963,63104,39964,63105,39965,63106,39966,63107,39967,63108,39968,63109,39969,63110,39970,63111,39971,63112,39972,63113,39973,63114,39974,63115,39975,63116,39976,63117,39977,63118,39978,63119,39979,63120,39980,63121,39981,63122,39982,63123,39983,63124,39984,63125,39985,63126,39986,63127,39987,63128,39988,63129,39989,63130,39990,63131,39991,63132,39992,63133,39993,63134,39994,63135,39995,63136,35301,63137,35307,63138,35311,63139,35390,63140,35622,63141,38739,63142,38633,63143,38643,63144,38639,63145,38662,63146,38657,63147,38664,63148,38671,63149,38670,63150,38698,63151,38701,63152,38704,63153,38718,63154,40832,63155,40835,63156,40837,63157,40838,63158,40839,63159,40840,63160,40841,63161,40842,63162,40844,63163,40702,63164,40715,63165,40717,63166,38585,63167,38588,63168,38589,63169,38606,63170,38610,63171,30655,63172,38624,63173,37518,63174,37550,63175,37576,63176,37694,63177,37738,63178,37834,63179,37775,63180,37950,63181,37995,63182,40063,63183,40066,63184,40069,63185,40070,63186,40071,63187,40072,63188,31267,63189,40075,63190,40078,63191,40080,63192,40081,63193,40082,63194,40084,63195,40085,63196,40090,63197,40091,63198,40094,63199,40095,63200,40096,63201,40097,63202,40098,63203,40099,63204,40101,63205,40102,63206,40103,63207,40104,63208,40105,63209,40107,63210,40109,63211,40110,63212,40112,63213,40113,63214,40114,63215,40115,63216,40116,63217,40117,63218,40118,63219,40119,63220,40122,63221,40123,63222,40124,63223,40125,63224,40132,63225,40133,63226,40134,63227,40135,63228,40138,63229,40139,63230,39996,63296,39997,63297,39998,63298,39999,63299,4e4,63300,40001,63301,40002,63302,40003,63303,40004,63304,40005,63305,40006,63306,40007,63307,40008,63308,40009,63309,40010,63310,40011,63311,40012,63312,40013,63313,40014,63314,40015,63315,40016,63316,40017,63317,40018,63318,40019,63319,40020,63320,40021,63321,40022,63322,40023,63323,40024,63324,40025,63325,40026,63326,40027,63327,40028,63328,40029,63329,40030,63330,40031,63331,40032,63332,40033,63333,40034,63334,40035,63335,40036,63336,40037,63337,40038,63338,40039,63339,40040,63340,40041,63341,40042,63342,40043,63343,40044,63344,40045,63345,40046,63346,40047,63347,40048,63348,40049,63349,40050,63350,40051,63351,40052,63352,40053,63353,40054,63354,40055,63355,40056,63356,40057,63357,40058,63358,40059,63360,40061,63361,40062,63362,40064,63363,40067,63364,40068,63365,40073,63366,40074,63367,40076,63368,40079,63369,40083,63370,40086,63371,40087,63372,40088,63373,40089,63374,40093,63375,40106,63376,40108,63377,40111,63378,40121,63379,40126,63380,40127,63381,40128,63382,40129,63383,40130,63384,40136,63385,40137,63386,40145,63387,40146,63388,40154,63389,40155,63390,40160,63391,40161,63392,40140,63393,40141,63394,40142,63395,40143,63396,40144,63397,40147,63398,40148,63399,40149,63400,40151,63401,40152,63402,40153,63403,40156,63404,40157,63405,40159,63406,40162,63407,38780,63408,38789,63409,38801,63410,38802,63411,38804,63412,38831,63413,38827,63414,38819,63415,38834,63416,38836,63417,39601,63418,39600,63419,39607,63420,40536,63421,39606,63422,39610,63423,39612,63424,39617,63425,39616,63426,39621,63427,39618,63428,39627,63429,39628,63430,39633,63431,39749,63432,39747,63433,39751,63434,39753,63435,39752,63436,39757,63437,39761,63438,39144,63439,39181,63440,39214,63441,39253,63442,39252,63443,39647,63444,39649,63445,39654,63446,39663,63447,39659,63448,39675,63449,39661,63450,39673,63451,39688,63452,39695,63453,39699,63454,39711,63455,39715,63456,40637,63457,40638,63458,32315,63459,40578,63460,40583,63461,40584,63462,40587,63463,40594,63464,37846,63465,40605,63466,40607,63467,40667,63468,40668,63469,40669,63470,40672,63471,40671,63472,40674,63473,40681,63474,40679,63475,40677,63476,40682,63477,40687,63478,40738,63479,40748,63480,40751,63481,40761,63482,40759,63483,40765,63484,40766,63485,40772,63486,40163,63552,40164,63553,40165,63554,40166,63555,40167,63556,40168,63557,40169,63558,40170,63559,40171,63560,40172,63561,40173,63562,40174,63563,40175,63564,40176,63565,40177,63566,40178,63567,40179,63568,40180,63569,40181,63570,40182,63571,40183,63572,40184,63573,40185,63574,40186,63575,40187,63576,40188,63577,40189,63578,40190,63579,40191,63580,40192,63581,40193,63582,40194,63583,40195,63584,40196,63585,40197,63586,40198,63587,40199,63588,40200,63589,40201,63590,40202,63591,40203,63592,40204,63593,40205,63594,40206,63595,40207,63596,40208,63597,40209,63598,40210,63599,40211,63600,40212,63601,40213,63602,40214,63603,40215,63604,40216,63605,40217,63606,40218,63607,40219,63608,40220,63609,40221,63610,40222,63611,40223,63612,40224,63613,40225,63614,40226,63616,40227,63617,40228,63618,40229,63619,40230,63620,40231,63621,40232,63622,40233,63623,40234,63624,40235,63625,40236,63626,40237,63627,40238,63628,40239,63629,40240,63630,40241,63631,40242,63632,40243,63633,40244,63634,40245,63635,40246,63636,40247,63637,40248,63638,40249,63639,40250,63640,40251,63641,40252,63642,40253,63643,40254,63644,40255,63645,40256,63646,40257,63647,40258,63648,57908,63649,57909,63650,57910,63651,57911,63652,57912,63653,57913,63654,57914,63655,57915,63656,57916,63657,57917,63658,57918,63659,57919,63660,57920,63661,57921,63662,57922,63663,57923,63664,57924,63665,57925,63666,57926,63667,57927,63668,57928,63669,57929,63670,57930,63671,57931,63672,57932,63673,57933,63674,57934,63675,57935,63676,57936,63677,57937,63678,57938,63679,57939,63680,57940,63681,57941,63682,57942,63683,57943,63684,57944,63685,57945,63686,57946,63687,57947,63688,57948,63689,57949,63690,57950,63691,57951,63692,57952,63693,57953,63694,57954,63695,57955,63696,57956,63697,57957,63698,57958,63699,57959,63700,57960,63701,57961,63702,57962,63703,57963,63704,57964,63705,57965,63706,57966,63707,57967,63708,57968,63709,57969,63710,57970,63711,57971,63712,57972,63713,57973,63714,57974,63715,57975,63716,57976,63717,57977,63718,57978,63719,57979,63720,57980,63721,57981,63722,57982,63723,57983,63724,57984,63725,57985,63726,57986,63727,57987,63728,57988,63729,57989,63730,57990,63731,57991,63732,57992,63733,57993,63734,57994,63735,57995,63736,57996,63737,57997,63738,57998,63739,57999,63740,58e3,63741,58001,63742,40259,63808,40260,63809,40261,63810,40262,63811,40263,63812,40264,63813,40265,63814,40266,63815,40267,63816,40268,63817,40269,63818,40270,63819,40271,63820,40272,63821,40273,63822,40274,63823,40275,63824,40276,63825,40277,63826,40278,63827,40279,63828,40280,63829,40281,63830,40282,63831,40283,63832,40284,63833,40285,63834,40286,63835,40287,63836,40288,63837,40289,63838,40290,63839,40291,63840,40292,63841,40293,63842,40294,63843,40295,63844,40296,63845,40297,63846,40298,63847,40299,63848,40300,63849,40301,63850,40302,63851,40303,63852,40304,63853,40305,63854,40306,63855,40307,63856,40308,63857,40309,63858,40310,63859,40311,63860,40312,63861,40313,63862,40314,63863,40315,63864,40316,63865,40317,63866,40318,63867,40319,63868,40320,63869,40321,63870,40322,63872,40323,63873,40324,63874,40325,63875,40326,63876,40327,63877,40328,63878,40329,63879,40330,63880,40331,63881,40332,63882,40333,63883,40334,63884,40335,63885,40336,63886,40337,63887,40338,63888,40339,63889,40340,63890,40341,63891,40342,63892,40343,63893,40344,63894,40345,63895,40346,63896,40347,63897,40348,63898,40349,63899,40350,63900,40351,63901,40352,63902,40353,63903,40354,63904,58002,63905,58003,63906,58004,63907,58005,63908,58006,63909,58007,63910,58008,63911,58009,63912,58010,63913,58011,63914,58012,63915,58013,63916,58014,63917,58015,63918,58016,63919,58017,63920,58018,63921,58019,63922,58020,63923,58021,63924,58022,63925,58023,63926,58024,63927,58025,63928,58026,63929,58027,63930,58028,63931,58029,63932,58030,63933,58031,63934,58032,63935,58033,63936,58034,63937,58035,63938,58036,63939,58037,63940,58038,63941,58039,63942,58040,63943,58041,63944,58042,63945,58043,63946,58044,63947,58045,63948,58046,63949,58047,63950,58048,63951,58049,63952,58050,63953,58051,63954,58052,63955,58053,63956,58054,63957,58055,63958,58056,63959,58057,63960,58058,63961,58059,63962,58060,63963,58061,63964,58062,63965,58063,63966,58064,63967,58065,63968,58066,63969,58067,63970,58068,63971,58069,63972,58070,63973,58071,63974,58072,63975,58073,63976,58074,63977,58075,63978,58076,63979,58077,63980,58078,63981,58079,63982,58080,63983,58081,63984,58082,63985,58083,63986,58084,63987,58085,63988,58086,63989,58087,63990,58088,63991,58089,63992,58090,63993,58091,63994,58092,63995,58093,63996,58094,63997,58095,63998,40355,64064,40356,64065,40357,64066,40358,64067,40359,64068,40360,64069,40361,64070,40362,64071,40363,64072,40364,64073,40365,64074,40366,64075,40367,64076,40368,64077,40369,64078,40370,64079,40371,64080,40372,64081,40373,64082,40374,64083,40375,64084,40376,64085,40377,64086,40378,64087,40379,64088,40380,64089,40381,64090,40382,64091,40383,64092,40384,64093,40385,64094,40386,64095,40387,64096,40388,64097,40389,64098,40390,64099,40391,64100,40392,64101,40393,64102,40394,64103,40395,64104,40396,64105,40397,64106,40398,64107,40399,64108,40400,64109,40401,64110,40402,64111,40403,64112,40404,64113,40405,64114,40406,64115,40407,64116,40408,64117,40409,64118,40410,64119,40411,64120,40412,64121,40413,64122,40414,64123,40415,64124,40416,64125,40417,64126,40418,64128,40419,64129,40420,64130,40421,64131,40422,64132,40423,64133,40424,64134,40425,64135,40426,64136,40427,64137,40428,64138,40429,64139,40430,64140,40431,64141,40432,64142,40433,64143,40434,64144,40435,64145,40436,64146,40437,64147,40438,64148,40439,64149,40440,64150,40441,64151,40442,64152,40443,64153,40444,64154,40445,64155,40446,64156,40447,64157,40448,64158,40449,64159,40450,64160,58096,64161,58097,64162,58098,64163,58099,64164,58100,64165,58101,64166,58102,64167,58103,64168,58104,64169,58105,64170,58106,64171,58107,64172,58108,64173,58109,64174,58110,64175,58111,64176,58112,64177,58113,64178,58114,64179,58115,64180,58116,64181,58117,64182,58118,64183,58119,64184,58120,64185,58121,64186,58122,64187,58123,64188,58124,64189,58125,64190,58126,64191,58127,64192,58128,64193,58129,64194,58130,64195,58131,64196,58132,64197,58133,64198,58134,64199,58135,64200,58136,64201,58137,64202,58138,64203,58139,64204,58140,64205,58141,64206,58142,64207,58143,64208,58144,64209,58145,64210,58146,64211,58147,64212,58148,64213,58149,64214,58150,64215,58151,64216,58152,64217,58153,64218,58154,64219,58155,64220,58156,64221,58157,64222,58158,64223,58159,64224,58160,64225,58161,64226,58162,64227,58163,64228,58164,64229,58165,64230,58166,64231,58167,64232,58168,64233,58169,64234,58170,64235,58171,64236,58172,64237,58173,64238,58174,64239,58175,64240,58176,64241,58177,64242,58178,64243,58179,64244,58180,64245,58181,64246,58182,64247,58183,64248,58184,64249,58185,64250,58186,64251,58187,64252,58188,64253,58189,64254,40451,64320,40452,64321,40453,64322,40454,64323,40455,64324,40456,64325,40457,64326,40458,64327,40459,64328,40460,64329,40461,64330,40462,64331,40463,64332,40464,64333,40465,64334,40466,64335,40467,64336,40468,64337,40469,64338,40470,64339,40471,64340,40472,64341,40473,64342,40474,64343,40475,64344,40476,64345,40477,64346,40478,64347,40484,64348,40487,64349,40494,64350,40496,64351,40500,64352,40507,64353,40508,64354,40512,64355,40525,64356,40528,64357,40530,64358,40531,64359,40532,64360,40534,64361,40537,64362,40541,64363,40543,64364,40544,64365,40545,64366,40546,64367,40549,64368,40558,64369,40559,64370,40562,64371,40564,64372,40565,64373,40566,64374,40567,64375,40568,64376,40569,64377,40570,64378,40571,64379,40572,64380,40573,64381,40576,64382,40577,64384,40579,64385,40580,64386,40581,64387,40582,64388,40585,64389,40586,64390,40588,64391,40589,64392,40590,64393,40591,64394,40592,64395,40593,64396,40596,64397,40597,64398,40598,64399,40599,64400,40600,64401,40601,64402,40602,64403,40603,64404,40604,64405,40606,64406,40608,64407,40609,64408,40610,64409,40611,64410,40612,64411,40613,64412,40615,64413,40616,64414,40617,64415,40618,64416,58190,64417,58191,64418,58192,64419,58193,64420,58194,64421,58195,64422,58196,64423,58197,64424,58198,64425,58199,64426,58200,64427,58201,64428,58202,64429,58203,64430,58204,64431,58205,64432,58206,64433,58207,64434,58208,64435,58209,64436,58210,64437,58211,64438,58212,64439,58213,64440,58214,64441,58215,64442,58216,64443,58217,64444,58218,64445,58219,64446,58220,64447,58221,64448,58222,64449,58223,64450,58224,64451,58225,64452,58226,64453,58227,64454,58228,64455,58229,64456,58230,64457,58231,64458,58232,64459,58233,64460,58234,64461,58235,64462,58236,64463,58237,64464,58238,64465,58239,64466,58240,64467,58241,64468,58242,64469,58243,64470,58244,64471,58245,64472,58246,64473,58247,64474,58248,64475,58249,64476,58250,64477,58251,64478,58252,64479,58253,64480,58254,64481,58255,64482,58256,64483,58257,64484,58258,64485,58259,64486,58260,64487,58261,64488,58262,64489,58263,64490,58264,64491,58265,64492,58266,64493,58267,64494,58268,64495,58269,64496,58270,64497,58271,64498,58272,64499,58273,64500,58274,64501,58275,64502,58276,64503,58277,64504,58278,64505,58279,64506,58280,64507,58281,64508,58282,64509,58283,64510,40619,64576,40620,64577,40621,64578,40622,64579,40623,64580,40624,64581,40625,64582,40626,64583,40627,64584,40629,64585,40630,64586,40631,64587,40633,64588,40634,64589,40636,64590,40639,64591,40640,64592,40641,64593,40642,64594,40643,64595,40645,64596,40646,64597,40647,64598,40648,64599,40650,64600,40651,64601,40652,64602,40656,64603,40658,64604,40659,64605,40661,64606,40662,64607,40663,64608,40665,64609,40666,64610,40670,64611,40673,64612,40675,64613,40676,64614,40678,64615,40680,64616,40683,64617,40684,64618,40685,64619,40686,64620,40688,64621,40689,64622,40690,64623,40691,64624,40692,64625,40693,64626,40694,64627,40695,64628,40696,64629,40698,64630,40701,64631,40703,64632,40704,64633,40705,64634,40706,64635,40707,64636,40708,64637,40709,64638,40710,64640,40711,64641,40712,64642,40713,64643,40714,64644,40716,64645,40719,64646,40721,64647,40722,64648,40724,64649,40725,64650,40726,64651,40728,64652,40730,64653,40731,64654,40732,64655,40733,64656,40734,64657,40735,64658,40737,64659,40739,64660,40740,64661,40741,64662,40742,64663,40743,64664,40744,64665,40745,64666,40746,64667,40747,64668,40749,64669,40750,64670,40752,64671,40753,64672,58284,64673,58285,64674,58286,64675,58287,64676,58288,64677,58289,64678,58290,64679,58291,64680,58292,64681,58293,64682,58294,64683,58295,64684,58296,64685,58297,64686,58298,64687,58299,64688,58300,64689,58301,64690,58302,64691,58303,64692,58304,64693,58305,64694,58306,64695,58307,64696,58308,64697,58309,64698,58310,64699,58311,64700,58312,64701,58313,64702,58314,64703,58315,64704,58316,64705,58317,64706,58318,64707,58319,64708,58320,64709,58321,64710,58322,64711,58323,64712,58324,64713,58325,64714,58326,64715,58327,64716,58328,64717,58329,64718,58330,64719,58331,64720,58332,64721,58333,64722,58334,64723,58335,64724,58336,64725,58337,64726,58338,64727,58339,64728,58340,64729,58341,64730,58342,64731,58343,64732,58344,64733,58345,64734,58346,64735,58347,64736,58348,64737,58349,64738,58350,64739,58351,64740,58352,64741,58353,64742,58354,64743,58355,64744,58356,64745,58357,64746,58358,64747,58359,64748,58360,64749,58361,64750,58362,64751,58363,64752,58364,64753,58365,64754,58366,64755,58367,64756,58368,64757,58369,64758,58370,64759,58371,64760,58372,64761,58373,64762,58374,64763,58375,64764,58376,64765,58377,64766,40754,64832,40755,64833,40756,64834,40757,64835,40758,64836,40760,64837,40762,64838,40764,64839,40767,64840,40768,64841,40769,64842,40770,64843,40771,64844,40773,64845,40774,64846,40775,64847,40776,64848,40777,64849,40778,64850,40779,64851,40780,64852,40781,64853,40782,64854,40783,64855,40786,64856,40787,64857,40788,64858,40789,64859,40790,64860,40791,64861,40792,64862,40793,64863,40794,64864,40795,64865,40796,64866,40797,64867,40798,64868,40799,64869,40800,64870,40801,64871,40802,64872,40803,64873,40804,64874,40805,64875,40806,64876,40807,64877,40808,64878,40809,64879,40810,64880,40811,64881,40812,64882,40813,64883,40814,64884,40815,64885,40816,64886,40817,64887,40818,64888,40819,64889,40820,64890,40821,64891,40822,64892,40823,64893,40824,64894,40825,64896,40826,64897,40827,64898,40828,64899,40829,64900,40830,64901,40833,64902,40834,64903,40845,64904,40846,64905,40847,64906,40848,64907,40849,64908,40850,64909,40851,64910,40852,64911,40853,64912,40854,64913,40855,64914,40856,64915,40860,64916,40861,64917,40862,64918,40865,64919,40866,64920,40867,64921,40868,64922,40869,64923,63788,64924,63865,64925,63893,64926,63975,64927,63985,64928,58378,64929,58379,64930,58380,64931,58381,64932,58382,64933,58383,64934,58384,64935,58385,64936,58386,64937,58387,64938,58388,64939,58389,64940,58390,64941,58391,64942,58392,64943,58393,64944,58394,64945,58395,64946,58396,64947,58397,64948,58398,64949,58399,64950,58400,64951,58401,64952,58402,64953,58403,64954,58404,64955,58405,64956,58406,64957,58407,64958,58408,64959,58409,64960,58410,64961,58411,64962,58412,64963,58413,64964,58414,64965,58415,64966,58416,64967,58417,64968,58418,64969,58419,64970,58420,64971,58421,64972,58422,64973,58423,64974,58424,64975,58425,64976,58426,64977,58427,64978,58428,64979,58429,64980,58430,64981,58431,64982,58432,64983,58433,64984,58434,64985,58435,64986,58436,64987,58437,64988,58438,64989,58439,64990,58440,64991,58441,64992,58442,64993,58443,64994,58444,64995,58445,64996,58446,64997,58447,64998,58448,64999,58449,65e3,58450,65001,58451,65002,58452,65003,58453,65004,58454,65005,58455,65006,58456,65007,58457,65008,58458,65009,58459,65010,58460,65011,58461,65012,58462,65013,58463,65014,58464,65015,58465,65016,58466,65017,58467,65018,58468,65019,58469,65020,58470,65021,58471,65022,64012,65088,64013,65089,64014,65090,64015,65091,64017,65092,64019,65093,64020,65094,64024,65095,64031,65096,64032,65097,64033,65098,64035,65099,64036,65100,64039,65101,64040,65102,64041,65103,59413,65104,59414,65105,59415,65106,59416,65107,59417,65108,59418,65109,59419,65110,59420,65111,59421,65112,59422,65113,59423,65114,59424,65115,59425,65116,59426,65117,59427,65118,59428,65119,59429,65120,59430,65121,59431,65122,59432,65123,59433,65124,59434,65125,59435,65126,59436,65127,59437,65128,59438,65129,59439,65130,59440,65131,59441,65132,59442,65133,59443,65134,59444,65135,59445,65136,59446,65137,59447,65138,59448,65139,59449,65140,59450,65141,59451,65142,59452,65143,59453,65144,59454,65145,59455,65146,59456,65147,59457,65148,59458,65149,59459,65150,59460,65152,59461,65153,59462,65154,59463,65155,59464,65156,59465,65157,59466,65158,59467,65159,59468,65160,59469,65161,59470,65162,59471,65163,59472,65164,59473,65165,59474,65166,59475,65167,59476,65168,59477,65169,59478,65170,59479,65171,59480,65172,59481,65173,59482,65174,59483,65175,59484,65176,59485,65177,59486,65178,59487,65179,59488,65180,59489,65181,59490,65182,59491,65183,59492,65184,58472,65185,58473,65186,58474,65187,58475,65188,58476,65189,58477,65190,58478,65191,58479,65192,58480,65193,58481,65194,58482,65195,58483,65196,58484,65197,58485,65198,58486,65199,58487,65200,58488,65201,58489,65202,58490,65203,58491,65204,58492,65205,58493,65206,58494,65207,58495,65208,58496,65209,58497,65210,58498,65211,58499,65212,58500,65213,58501,65214,58502,65215,58503,65216,58504,65217,58505,65218,58506,65219,58507,65220,58508,65221,58509,65222,58510,65223,58511,65224,58512,65225,58513,65226,58514,65227,58515,65228,58516,65229,58517,65230,58518,65231,58519,65232,58520,65233,58521,65234,58522,65235,58523,65236,58524,65237,58525,65238,58526,65239,58527,65240,58528,65241,58529,65242,58530,65243,58531,65244,58532,65245,58533,65246,58534,65247,58535,65248,58536,65249,58537,65250,58538,65251,58539,65252,58540,65253,58541,65254,58542,65255,58543,65256,58544,65257,58545,65258,58546,65259,58547,65260,58548,65261,58549,65262,58550,65263,58551,65264,58552,65265,58553,65266,58554,65267,58555,65268,58556,65269,58557,65270,58558,65271,58559,65272,58560,65273,58561,65274,58562,65275,58563,65276,58564,65277,58565,65278],F=[12288,41280,65292,41281,12289,41282,12290,41283,65294,41284,8231,41285,65307,41286,65306,41287,65311,41288,65281,41289,65072,41290,8230,41291,8229,41292,65104,41293,65105,41294,65106,41295,183,41296,65108,41297,65109,41298,65110,41299,65111,41300,65372,41301,8211,41302,65073,41303,8212,41304,65075,41305,9588,41306,65076,41307,65103,41308,65288,41309,65289,41310,65077,41311,65078,41312,65371,41313,65373,41314,65079,41315,65080,41316,12308,41317,12309,41318,65081,41319,65082,41320,12304,41321,12305,41322,65083,41323,65084,41324,12298,41325,12299,41326,65085,41327,65086,41328,12296,41329,12297,41330,65087,41331,65088,41332,12300,41333,12301,41334,65089,41335,65090,41336,12302,41337,12303,41338,65091,41339,65092,41340,65113,41341,65114,41342,65115,41377,65116,41378,65117,41379,65118,41380,8216,41381,8217,41382,8220,41383,8221,41384,12317,41385,12318,41386,8245,41387,8242,41388,65283,41389,65286,41390,65290,41391,8251,41392,167,41393,12291,41394,9675,41395,9679,41396,9651,41397,9650,41398,9678,41399,9734,41400,9733,41401,9671,41402,9670,41403,9633,41404,9632,41405,9661,41406,9660,41407,12963,41408,8453,41409,175,41410,65507,41411,65343,41412,717,41413,65097,41414,65098,41415,65101,41416,65102,41417,65099,41418,65100,41419,65119,41420,65120,41421,65121,41422,65291,41423,65293,41424,215,41425,247,41426,177,41427,8730,41428,65308,41429,65310,41430,65309,41431,8806,41432,8807,41433,8800,41434,8734,41435,8786,41436,8801,41437,65122,41438,65123,41439,65124,41440,65125,41441,65126,41442,65374,41443,8745,41444,8746,41445,8869,41446,8736,41447,8735,41448,8895,41449,13266,41450,13265,41451,8747,41452,8750,41453,8757,41454,8756,41455,9792,41456,9794,41457,8853,41458,8857,41459,8593,41460,8595,41461,8592,41462,8594,41463,8598,41464,8599,41465,8601,41466,8600,41467,8741,41468,8739,41469,65295,41470,65340,41536,8725,41537,65128,41538,65284,41539,65509,41540,12306,41541,65504,41542,65505,41543,65285,41544,65312,41545,8451,41546,8457,41547,65129,41548,65130,41549,65131,41550,13269,41551,13212,41552,13213,41553,13214,41554,13262,41555,13217,41556,13198,41557,13199,41558,13252,41559,176,41560,20825,41561,20827,41562,20830,41563,20829,41564,20833,41565,20835,41566,21991,41567,29929,41568,31950,41569,9601,41570,9602,41571,9603,41572,9604,41573,9605,41574,9606,41575,9607,41576,9608,41577,9615,41578,9614,41579,9613,41580,9612,41581,9611,41582,9610,41583,9609,41584,9532,41585,9524,41586,9516,41587,9508,41588,9500,41589,9620,41590,9472,41591,9474,41592,9621,41593,9484,41594,9488,41595,9492,41596,9496,41597,9581,41598,9582,41633,9584,41634,9583,41635,9552,41636,9566,41637,9578,41638,9569,41639,9698,41640,9699,41641,9701,41642,9700,41643,9585,41644,9586,41645,9587,41646,65296,41647,65297,41648,65298,41649,65299,41650,65300,41651,65301,41652,65302,41653,65303,41654,65304,41655,65305,41656,8544,41657,8545,41658,8546,41659,8547,41660,8548,41661,8549,41662,8550,41663,8551,41664,8552,41665,8553,41666,12321,41667,12322,41668,12323,41669,12324,41670,12325,41671,12326,41672,12327,41673,12328,41674,12329,41675,21313,41676,21316,41677,21317,41678,65313,41679,65314,41680,65315,41681,65316,41682,65317,41683,65318,41684,65319,41685,65320,41686,65321,41687,65322,41688,65323,41689,65324,41690,65325,41691,65326,41692,65327,41693,65328,41694,65329,41695,65330,41696,65331,41697,65332,41698,65333,41699,65334,41700,65335,41701,65336,41702,65337,41703,65338,41704,65345,41705,65346,41706,65347,41707,65348,41708,65349,41709,65350,41710,65351,41711,65352,41712,65353,41713,65354,41714,65355,41715,65356,41716,65357,41717,65358,41718,65359,41719,65360,41720,65361,41721,65362,41722,65363,41723,65364,41724,65365,41725,65366,41726,65367,41792,65368,41793,65369,41794,65370,41795,913,41796,914,41797,915,41798,916,41799,917,41800,918,41801,919,41802,920,41803,921,41804,922,41805,923,41806,924,41807,925,41808,926,41809,927,41810,928,41811,929,41812,931,41813,932,41814,933,41815,934,41816,935,41817,936,41818,937,41819,945,41820,946,41821,947,41822,948,41823,949,41824,950,41825,951,41826,952,41827,953,41828,954,41829,955,41830,956,41831,957,41832,958,41833,959,41834,960,41835,961,41836,963,41837,964,41838,965,41839,966,41840,967,41841,968,41842,969,41843,12549,41844,12550,41845,12551,41846,12552,41847,12553,41848,12554,41849,12555,41850,12556,41851,12557,41852,12558,41853,12559,41854,12560,41889,12561,41890,12562,41891,12563,41892,12564,41893,12565,41894,12566,41895,12567,41896,12568,41897,12569,41898,12570,41899,12571,41900,12572,41901,12573,41902,12574,41903,12575,41904,12576,41905,12577,41906,12578,41907,12579,41908,12580,41909,12581,41910,12582,41911,12583,41912,12584,41913,12585,41914,729,41915,713,41916,714,41917,711,41918,715,41919,8364,41953,19968,42048,20057,42049,19969,42050,19971,42051,20035,42052,20061,42053,20102,42054,20108,42055,20154,42056,20799,42057,20837,42058,20843,42059,20960,42060,20992,42061,20993,42062,21147,42063,21269,42064,21313,42065,21340,42066,21448,42067,19977,42068,19979,42069,19976,42070,19978,42071,20011,42072,20024,42073,20961,42074,20037,42075,20040,42076,20063,42077,20062,42078,20110,42079,20129,42080,20800,42081,20995,42082,21242,42083,21315,42084,21449,42085,21475,42086,22303,42087,22763,42088,22805,42089,22823,42090,22899,42091,23376,42092,23377,42093,23379,42094,23544,42095,23567,42096,23586,42097,23608,42098,23665,42099,24029,42100,24037,42101,24049,42102,24050,42103,24051,42104,24062,42105,24178,42106,24318,42107,24331,42108,24339,42109,25165,42110,19985,42145,19984,42146,19981,42147,20013,42148,20016,42149,20025,42150,20043,42151,23609,42152,20104,42153,20113,42154,20117,42155,20114,42156,20116,42157,20130,42158,20161,42159,20160,42160,20163,42161,20166,42162,20167,42163,20173,42164,20170,42165,20171,42166,20164,42167,20803,42168,20801,42169,20839,42170,20845,42171,20846,42172,20844,42173,20887,42174,20982,42175,20998,42176,20999,42177,21e3,42178,21243,42179,21246,42180,21247,42181,21270,42182,21305,42183,21320,42184,21319,42185,21317,42186,21342,42187,21380,42188,21451,42189,21450,42190,21453,42191,22764,42192,22825,42193,22827,42194,22826,42195,22829,42196,23380,42197,23569,42198,23588,42199,23610,42200,23663,42201,24052,42202,24187,42203,24319,42204,24340,42205,24341,42206,24515,42207,25096,42208,25142,42209,25163,42210,25166,42211,25903,42212,25991,42213,26007,42214,26020,42215,26041,42216,26085,42217,26352,42218,26376,42219,26408,42220,27424,42221,27490,42222,27513,42223,27595,42224,27604,42225,27611,42226,27663,42227,27700,42228,28779,42229,29226,42230,29238,42231,29243,42232,29255,42233,29273,42234,29275,42235,29356,42236,29579,42237,19993,42238,19990,42304,19989,42305,19988,42306,19992,42307,20027,42308,20045,42309,20047,42310,20046,42311,20197,42312,20184,42313,20180,42314,20181,42315,20182,42316,20183,42317,20195,42318,20196,42319,20185,42320,20190,42321,20805,42322,20804,42323,20873,42324,20874,42325,20908,42326,20985,42327,20986,42328,20984,42329,21002,42330,21152,42331,21151,42332,21253,42333,21254,42334,21271,42335,21277,42336,20191,42337,21322,42338,21321,42339,21345,42340,21344,42341,21359,42342,21358,42343,21435,42344,21487,42345,21476,42346,21491,42347,21484,42348,21486,42349,21481,42350,21480,42351,21500,42352,21496,42353,21493,42354,21483,42355,21478,42356,21482,42357,21490,42358,21489,42359,21488,42360,21477,42361,21485,42362,21499,42363,22235,42364,22234,42365,22806,42366,22830,42401,22833,42402,22900,42403,22902,42404,23381,42405,23427,42406,23612,42407,24040,42408,24039,42409,24038,42410,24066,42411,24067,42412,24179,42413,24188,42414,24321,42415,24344,42416,24343,42417,24517,42418,25098,42419,25171,42420,25172,42421,25170,42422,25169,42423,26021,42424,26086,42425,26414,42426,26412,42427,26410,42428,26411,42429,26413,42430,27491,42431,27597,42432,27665,42433,27664,42434,27704,42435,27713,42436,27712,42437,27710,42438,29359,42439,29572,42440,29577,42441,29916,42442,29926,42443,29976,42444,29983,42445,29992,42446,29993,42447,3e4,42448,30001,42449,30002,42450,30003,42451,30091,42452,30333,42453,30382,42454,30399,42455,30446,42456,30683,42457,30690,42458,30707,42459,31034,42460,31166,42461,31348,42462,31435,42463,19998,42464,19999,42465,20050,42466,20051,42467,20073,42468,20121,42469,20132,42470,20134,42471,20133,42472,20223,42473,20233,42474,20249,42475,20234,42476,20245,42477,20237,42478,20240,42479,20241,42480,20239,42481,20210,42482,20214,42483,20219,42484,20208,42485,20211,42486,20221,42487,20225,42488,20235,42489,20809,42490,20807,42491,20806,42492,20808,42493,20840,42494,20849,42560,20877,42561,20912,42562,21015,42563,21009,42564,21010,42565,21006,42566,21014,42567,21155,42568,21256,42569,21281,42570,21280,42571,21360,42572,21361,42573,21513,42574,21519,42575,21516,42576,21514,42577,21520,42578,21505,42579,21515,42580,21508,42581,21521,42582,21517,42583,21512,42584,21507,42585,21518,42586,21510,42587,21522,42588,22240,42589,22238,42590,22237,42591,22323,42592,22320,42593,22312,42594,22317,42595,22316,42596,22319,42597,22313,42598,22809,42599,22810,42600,22839,42601,22840,42602,22916,42603,22904,42604,22915,42605,22909,42606,22905,42607,22914,42608,22913,42609,23383,42610,23384,42611,23431,42612,23432,42613,23429,42614,23433,42615,23546,42616,23574,42617,23673,42618,24030,42619,24070,42620,24182,42621,24180,42622,24335,42657,24347,42658,24537,42659,24534,42660,25102,42661,25100,42662,25101,42663,25104,42664,25187,42665,25179,42666,25176,42667,25910,42668,26089,42669,26088,42670,26092,42671,26093,42672,26354,42673,26355,42674,26377,42675,26429,42676,26420,42677,26417,42678,26421,42679,27425,42680,27492,42681,27515,42682,27670,42683,27741,42684,27735,42685,27737,42686,27743,42687,27744,42688,27728,42689,27733,42690,27745,42691,27739,42692,27725,42693,27726,42694,28784,42695,29279,42696,29277,42697,30334,42698,31481,42699,31859,42700,31992,42701,32566,42702,32650,42703,32701,42704,32769,42705,32771,42706,32780,42707,32786,42708,32819,42709,32895,42710,32905,42711,32907,42712,32908,42713,33251,42714,33258,42715,33267,42716,33276,42717,33292,42718,33307,42719,33311,42720,33390,42721,33394,42722,33406,42723,34411,42724,34880,42725,34892,42726,34915,42727,35199,42728,38433,42729,20018,42730,20136,42731,20301,42732,20303,42733,20295,42734,20311,42735,20318,42736,20276,42737,20315,42738,20309,42739,20272,42740,20304,42741,20305,42742,20285,42743,20282,42744,20280,42745,20291,42746,20308,42747,20284,42748,20294,42749,20323,42750,20316,42816,20320,42817,20271,42818,20302,42819,20278,42820,20313,42821,20317,42822,20296,42823,20314,42824,20812,42825,20811,42826,20813,42827,20853,42828,20918,42829,20919,42830,21029,42831,21028,42832,21033,42833,21034,42834,21032,42835,21163,42836,21161,42837,21162,42838,21164,42839,21283,42840,21363,42841,21365,42842,21533,42843,21549,42844,21534,42845,21566,42846,21542,42847,21582,42848,21543,42849,21574,42850,21571,42851,21555,42852,21576,42853,21570,42854,21531,42855,21545,42856,21578,42857,21561,42858,21563,42859,21560,42860,21550,42861,21557,42862,21558,42863,21536,42864,21564,42865,21568,42866,21553,42867,21547,42868,21535,42869,21548,42870,22250,42871,22256,42872,22244,42873,22251,42874,22346,42875,22353,42876,22336,42877,22349,42878,22343,42913,22350,42914,22334,42915,22352,42916,22351,42917,22331,42918,22767,42919,22846,42920,22941,42921,22930,42922,22952,42923,22942,42924,22947,42925,22937,42926,22934,42927,22925,42928,22948,42929,22931,42930,22922,42931,22949,42932,23389,42933,23388,42934,23386,42935,23387,42936,23436,42937,23435,42938,23439,42939,23596,42940,23616,42941,23617,42942,23615,42943,23614,42944,23696,42945,23697,42946,23700,42947,23692,42948,24043,42949,24076,42950,24207,42951,24199,42952,24202,42953,24311,42954,24324,42955,24351,42956,24420,42957,24418,42958,24439,42959,24441,42960,24536,42961,24524,42962,24535,42963,24525,42964,24561,42965,24555,42966,24568,42967,24554,42968,25106,42969,25105,42970,25220,42971,25239,42972,25238,42973,25216,42974,25206,42975,25225,42976,25197,42977,25226,42978,25212,42979,25214,42980,25209,42981,25203,42982,25234,42983,25199,42984,25240,42985,25198,42986,25237,42987,25235,42988,25233,42989,25222,42990,25913,42991,25915,42992,25912,42993,26097,42994,26356,42995,26463,42996,26446,42997,26447,42998,26448,42999,26449,43e3,26460,43001,26454,43002,26462,43003,26441,43004,26438,43005,26464,43006,26451,43072,26455,43073,27493,43074,27599,43075,27714,43076,27742,43077,27801,43078,27777,43079,27784,43080,27785,43081,27781,43082,27803,43083,27754,43084,27770,43085,27792,43086,27760,43087,27788,43088,27752,43089,27798,43090,27794,43091,27773,43092,27779,43093,27762,43094,27774,43095,27764,43096,27782,43097,27766,43098,27789,43099,27796,43100,27800,43101,27778,43102,28790,43103,28796,43104,28797,43105,28792,43106,29282,43107,29281,43108,29280,43109,29380,43110,29378,43111,29590,43112,29996,43113,29995,43114,30007,43115,30008,43116,30338,43117,30447,43118,30691,43119,31169,43120,31168,43121,31167,43122,31350,43123,31995,43124,32597,43125,32918,43126,32915,43127,32925,43128,32920,43129,32923,43130,32922,43131,32946,43132,33391,43133,33426,43134,33419,43169,33421,43170,35211,43171,35282,43172,35328,43173,35895,43174,35910,43175,35925,43176,35997,43177,36196,43178,36208,43179,36275,43180,36523,43181,36554,43182,36763,43183,36784,43184,36802,43185,36806,43186,36805,43187,36804,43188,24033,43189,37009,43190,37026,43191,37034,43192,37030,43193,37027,43194,37193,43195,37318,43196,37324,43197,38450,43198,38446,43199,38449,43200,38442,43201,38444,43202,20006,43203,20054,43204,20083,43205,20107,43206,20123,43207,20126,43208,20139,43209,20140,43210,20335,43211,20381,43212,20365,43213,20339,43214,20351,43215,20332,43216,20379,43217,20363,43218,20358,43219,20355,43220,20336,43221,20341,43222,20360,43223,20329,43224,20347,43225,20374,43226,20350,43227,20367,43228,20369,43229,20346,43230,20820,43231,20818,43232,20821,43233,20841,43234,20855,43235,20854,43236,20856,43237,20925,43238,20989,43239,21051,43240,21048,43241,21047,43242,21050,43243,21040,43244,21038,43245,21046,43246,21057,43247,21182,43248,21179,43249,21330,43250,21332,43251,21331,43252,21329,43253,21350,43254,21367,43255,21368,43256,21369,43257,21462,43258,21460,43259,21463,43260,21619,43261,21621,43262,21654,43328,21624,43329,21653,43330,21632,43331,21627,43332,21623,43333,21636,43334,21650,43335,21638,43336,21628,43337,21648,43338,21617,43339,21622,43340,21644,43341,21658,43342,21602,43343,21608,43344,21643,43345,21629,43346,21646,43347,22266,43348,22403,43349,22391,43350,22378,43351,22377,43352,22369,43353,22374,43354,22372,43355,22396,43356,22812,43357,22857,43358,22855,43359,22856,43360,22852,43361,22868,43362,22974,43363,22971,43364,22996,43365,22969,43366,22958,43367,22993,43368,22982,43369,22992,43370,22989,43371,22987,43372,22995,43373,22986,43374,22959,43375,22963,43376,22994,43377,22981,43378,23391,43379,23396,43380,23395,43381,23447,43382,23450,43383,23448,43384,23452,43385,23449,43386,23451,43387,23578,43388,23624,43389,23621,43390,23622,43425,23735,43426,23713,43427,23736,43428,23721,43429,23723,43430,23729,43431,23731,43432,24088,43433,24090,43434,24086,43435,24085,43436,24091,43437,24081,43438,24184,43439,24218,43440,24215,43441,24220,43442,24213,43443,24214,43444,24310,43445,24358,43446,24359,43447,24361,43448,24448,43449,24449,43450,24447,43451,24444,43452,24541,43453,24544,43454,24573,43455,24565,43456,24575,43457,24591,43458,24596,43459,24623,43460,24629,43461,24598,43462,24618,43463,24597,43464,24609,43465,24615,43466,24617,43467,24619,43468,24603,43469,25110,43470,25109,43471,25151,43472,25150,43473,25152,43474,25215,43475,25289,43476,25292,43477,25284,43478,25279,43479,25282,43480,25273,43481,25298,43482,25307,43483,25259,43484,25299,43485,25300,43486,25291,43487,25288,43488,25256,43489,25277,43490,25276,43491,25296,43492,25305,43493,25287,43494,25293,43495,25269,43496,25306,43497,25265,43498,25304,43499,25302,43500,25303,43501,25286,43502,25260,43503,25294,43504,25918,43505,26023,43506,26044,43507,26106,43508,26132,43509,26131,43510,26124,43511,26118,43512,26114,43513,26126,43514,26112,43515,26127,43516,26133,43517,26122,43518,26119,43584,26381,43585,26379,43586,26477,43587,26507,43588,26517,43589,26481,43590,26524,43591,26483,43592,26487,43593,26503,43594,26525,43595,26519,43596,26479,43597,26480,43598,26495,43599,26505,43600,26494,43601,26512,43602,26485,43603,26522,43604,26515,43605,26492,43606,26474,43607,26482,43608,27427,43609,27494,43610,27495,43611,27519,43612,27667,43613,27675,43614,27875,43615,27880,43616,27891,43617,27825,43618,27852,43619,27877,43620,27827,43621,27837,43622,27838,43623,27836,43624,27874,43625,27819,43626,27861,43627,27859,43628,27832,43629,27844,43630,27833,43631,27841,43632,27822,43633,27863,43634,27845,43635,27889,43636,27839,43637,27835,43638,27873,43639,27867,43640,27850,43641,27820,43642,27887,43643,27868,43644,27862,43645,27872,43646,28821,43681,28814,43682,28818,43683,28810,43684,28825,43685,29228,43686,29229,43687,29240,43688,29256,43689,29287,43690,29289,43691,29376,43692,29390,43693,29401,43694,29399,43695,29392,43696,29609,43697,29608,43698,29599,43699,29611,43700,29605,43701,30013,43702,30109,43703,30105,43704,30106,43705,30340,43706,30402,43707,30450,43708,30452,43709,30693,43710,30717,43711,31038,43712,31040,43713,31041,43714,31177,43715,31176,43716,31354,43717,31353,43718,31482,43719,31998,43720,32596,43721,32652,43722,32651,43723,32773,43724,32954,43725,32933,43726,32930,43727,32945,43728,32929,43729,32939,43730,32937,43731,32948,43732,32938,43733,32943,43734,33253,43735,33278,43736,33293,43737,33459,43738,33437,43739,33433,43740,33453,43741,33469,43742,33439,43743,33465,43744,33457,43745,33452,43746,33445,43747,33455,43748,33464,43749,33443,43750,33456,43751,33470,43752,33463,43753,34382,43754,34417,43755,21021,43756,34920,43757,36555,43758,36814,43759,36820,43760,36817,43761,37045,43762,37048,43763,37041,43764,37046,43765,37319,43766,37329,43767,38263,43768,38272,43769,38428,43770,38464,43771,38463,43772,38459,43773,38468,43774,38466,43840,38585,43841,38632,43842,38738,43843,38750,43844,20127,43845,20141,43846,20142,43847,20449,43848,20405,43849,20399,43850,20415,43851,20448,43852,20433,43853,20431,43854,20445,43855,20419,43856,20406,43857,20440,43858,20447,43859,20426,43860,20439,43861,20398,43862,20432,43863,20420,43864,20418,43865,20442,43866,20430,43867,20446,43868,20407,43869,20823,43870,20882,43871,20881,43872,20896,43873,21070,43874,21059,43875,21066,43876,21069,43877,21068,43878,21067,43879,21063,43880,21191,43881,21193,43882,21187,43883,21185,43884,21261,43885,21335,43886,21371,43887,21402,43888,21467,43889,21676,43890,21696,43891,21672,43892,21710,43893,21705,43894,21688,43895,21670,43896,21683,43897,21703,43898,21698,43899,21693,43900,21674,43901,21697,43902,21700,43937,21704,43938,21679,43939,21675,43940,21681,43941,21691,43942,21673,43943,21671,43944,21695,43945,22271,43946,22402,43947,22411,43948,22432,43949,22435,43950,22434,43951,22478,43952,22446,43953,22419,43954,22869,43955,22865,43956,22863,43957,22862,43958,22864,43959,23004,43960,23e3,43961,23039,43962,23011,43963,23016,43964,23043,43965,23013,43966,23018,43967,23002,43968,23014,43969,23041,43970,23035,43971,23401,43972,23459,43973,23462,43974,23460,43975,23458,43976,23461,43977,23553,43978,23630,43979,23631,43980,23629,43981,23627,43982,23769,43983,23762,43984,24055,43985,24093,43986,24101,43987,24095,43988,24189,43989,24224,43990,24230,43991,24314,43992,24328,43993,24365,43994,24421,43995,24456,43996,24453,43997,24458,43998,24459,43999,24455,44e3,24460,44001,24457,44002,24594,44003,24605,44004,24608,44005,24613,44006,24590,44007,24616,44008,24653,44009,24688,44010,24680,44011,24674,44012,24646,44013,24643,44014,24684,44015,24683,44016,24682,44017,24676,44018,25153,44019,25308,44020,25366,44021,25353,44022,25340,44023,25325,44024,25345,44025,25326,44026,25341,44027,25351,44028,25329,44029,25335,44030,25327,44096,25324,44097,25342,44098,25332,44099,25361,44100,25346,44101,25919,44102,25925,44103,26027,44104,26045,44105,26082,44106,26149,44107,26157,44108,26144,44109,26151,44110,26159,44111,26143,44112,26152,44113,26161,44114,26148,44115,26359,44116,26623,44117,26579,44118,26609,44119,26580,44120,26576,44121,26604,44122,26550,44123,26543,44124,26613,44125,26601,44126,26607,44127,26564,44128,26577,44129,26548,44130,26586,44131,26597,44132,26552,44133,26575,44134,26590,44135,26611,44136,26544,44137,26585,44138,26594,44139,26589,44140,26578,44141,27498,44142,27523,44143,27526,44144,27573,44145,27602,44146,27607,44147,27679,44148,27849,44149,27915,44150,27954,44151,27946,44152,27969,44153,27941,44154,27916,44155,27953,44156,27934,44157,27927,44158,27963,44193,27965,44194,27966,44195,27958,44196,27931,44197,27893,44198,27961,44199,27943,44200,27960,44201,27945,44202,27950,44203,27957,44204,27918,44205,27947,44206,28843,44207,28858,44208,28851,44209,28844,44210,28847,44211,28845,44212,28856,44213,28846,44214,28836,44215,29232,44216,29298,44217,29295,44218,29300,44219,29417,44220,29408,44221,29409,44222,29623,44223,29642,44224,29627,44225,29618,44226,29645,44227,29632,44228,29619,44229,29978,44230,29997,44231,30031,44232,30028,44233,30030,44234,30027,44235,30123,44236,30116,44237,30117,44238,30114,44239,30115,44240,30328,44241,30342,44242,30343,44243,30344,44244,30408,44245,30406,44246,30403,44247,30405,44248,30465,44249,30457,44250,30456,44251,30473,44252,30475,44253,30462,44254,30460,44255,30471,44256,30684,44257,30722,44258,30740,44259,30732,44260,30733,44261,31046,44262,31049,44263,31048,44264,31047,44265,31161,44266,31162,44267,31185,44268,31186,44269,31179,44270,31359,44271,31361,44272,31487,44273,31485,44274,31869,44275,32002,44276,32005,44277,32e3,44278,32009,44279,32007,44280,32004,44281,32006,44282,32568,44283,32654,44284,32703,44285,32772,44286,32784,44352,32781,44353,32785,44354,32822,44355,32982,44356,32997,44357,32986,44358,32963,44359,32964,44360,32972,44361,32993,44362,32987,44363,32974,44364,32990,44365,32996,44366,32989,44367,33268,44368,33314,44369,33511,44370,33539,44371,33541,44372,33507,44373,33499,44374,33510,44375,33540,44376,33509,44377,33538,44378,33545,44379,33490,44380,33495,44381,33521,44382,33537,44383,33500,44384,33492,44385,33489,44386,33502,44387,33491,44388,33503,44389,33519,44390,33542,44391,34384,44392,34425,44393,34427,44394,34426,44395,34893,44396,34923,44397,35201,44398,35284,44399,35336,44400,35330,44401,35331,44402,35998,44403,36e3,44404,36212,44405,36211,44406,36276,44407,36557,44408,36556,44409,36848,44410,36838,44411,36834,44412,36842,44413,36837,44414,36845,44449,36843,44450,36836,44451,36840,44452,37066,44453,37070,44454,37057,44455,37059,44456,37195,44457,37194,44458,37325,44459,38274,44460,38480,44461,38475,44462,38476,44463,38477,44464,38754,44465,38761,44466,38859,44467,38893,44468,38899,44469,38913,44470,39080,44471,39131,44472,39135,44473,39318,44474,39321,44475,20056,44476,20147,44477,20492,44478,20493,44479,20515,44480,20463,44481,20518,44482,20517,44483,20472,44484,20521,44485,20502,44486,20486,44487,20540,44488,20511,44489,20506,44490,20498,44491,20497,44492,20474,44493,20480,44494,20500,44495,20520,44496,20465,44497,20513,44498,20491,44499,20505,44500,20504,44501,20467,44502,20462,44503,20525,44504,20522,44505,20478,44506,20523,44507,20489,44508,20860,44509,20900,44510,20901,44511,20898,44512,20941,44513,20940,44514,20934,44515,20939,44516,21078,44517,21084,44518,21076,44519,21083,44520,21085,44521,21290,44522,21375,44523,21407,44524,21405,44525,21471,44526,21736,44527,21776,44528,21761,44529,21815,44530,21756,44531,21733,44532,21746,44533,21766,44534,21754,44535,21780,44536,21737,44537,21741,44538,21729,44539,21769,44540,21742,44541,21738,44542,21734,44608,21799,44609,21767,44610,21757,44611,21775,44612,22275,44613,22276,44614,22466,44615,22484,44616,22475,44617,22467,44618,22537,44619,22799,44620,22871,44621,22872,44622,22874,44623,23057,44624,23064,44625,23068,44626,23071,44627,23067,44628,23059,44629,23020,44630,23072,44631,23075,44632,23081,44633,23077,44634,23052,44635,23049,44636,23403,44637,23640,44638,23472,44639,23475,44640,23478,44641,23476,44642,23470,44643,23477,44644,23481,44645,23480,44646,23556,44647,23633,44648,23637,44649,23632,44650,23789,44651,23805,44652,23803,44653,23786,44654,23784,44655,23792,44656,23798,44657,23809,44658,23796,44659,24046,44660,24109,44661,24107,44662,24235,44663,24237,44664,24231,44665,24369,44666,24466,44667,24465,44668,24464,44669,24665,44670,24675,44705,24677,44706,24656,44707,24661,44708,24685,44709,24681,44710,24687,44711,24708,44712,24735,44713,24730,44714,24717,44715,24724,44716,24716,44717,24709,44718,24726,44719,25159,44720,25331,44721,25352,44722,25343,44723,25422,44724,25406,44725,25391,44726,25429,44727,25410,44728,25414,44729,25423,44730,25417,44731,25402,44732,25424,44733,25405,44734,25386,44735,25387,44736,25384,44737,25421,44738,25420,44739,25928,44740,25929,44741,26009,44742,26049,44743,26053,44744,26178,44745,26185,44746,26191,44747,26179,44748,26194,44749,26188,44750,26181,44751,26177,44752,26360,44753,26388,44754,26389,44755,26391,44756,26657,44757,26680,44758,26696,44759,26694,44760,26707,44761,26681,44762,26690,44763,26708,44764,26665,44765,26803,44766,26647,44767,26700,44768,26705,44769,26685,44770,26612,44771,26704,44772,26688,44773,26684,44774,26691,44775,26666,44776,26693,44777,26643,44778,26648,44779,26689,44780,27530,44781,27529,44782,27575,44783,27683,44784,27687,44785,27688,44786,27686,44787,27684,44788,27888,44789,28010,44790,28053,44791,28040,44792,28039,44793,28006,44794,28024,44795,28023,44796,27993,44797,28051,44798,28012,44864,28041,44865,28014,44866,27994,44867,28020,44868,28009,44869,28044,44870,28042,44871,28025,44872,28037,44873,28005,44874,28052,44875,28874,44876,28888,44877,28900,44878,28889,44879,28872,44880,28879,44881,29241,44882,29305,44883,29436,44884,29433,44885,29437,44886,29432,44887,29431,44888,29574,44889,29677,44890,29705,44891,29678,44892,29664,44893,29674,44894,29662,44895,30036,44896,30045,44897,30044,44898,30042,44899,30041,44900,30142,44901,30149,44902,30151,44903,30130,44904,30131,44905,30141,44906,30140,44907,30137,44908,30146,44909,30136,44910,30347,44911,30384,44912,30410,44913,30413,44914,30414,44915,30505,44916,30495,44917,30496,44918,30504,44919,30697,44920,30768,44921,30759,44922,30776,44923,30749,44924,30772,44925,30775,44926,30757,44961,30765,44962,30752,44963,30751,44964,30770,44965,31061,44966,31056,44967,31072,44968,31071,44969,31062,44970,31070,44971,31069,44972,31063,44973,31066,44974,31204,44975,31203,44976,31207,44977,31199,44978,31206,44979,31209,44980,31192,44981,31364,44982,31368,44983,31449,44984,31494,44985,31505,44986,31881,44987,32033,44988,32023,44989,32011,44990,32010,44991,32032,44992,32034,44993,32020,44994,32016,44995,32021,44996,32026,44997,32028,44998,32013,44999,32025,45e3,32027,45001,32570,45002,32607,45003,32660,45004,32709,45005,32705,45006,32774,45007,32792,45008,32789,45009,32793,45010,32791,45011,32829,45012,32831,45013,33009,45014,33026,45015,33008,45016,33029,45017,33005,45018,33012,45019,33030,45020,33016,45021,33011,45022,33032,45023,33021,45024,33034,45025,33020,45026,33007,45027,33261,45028,33260,45029,33280,45030,33296,45031,33322,45032,33323,45033,33320,45034,33324,45035,33467,45036,33579,45037,33618,45038,33620,45039,33610,45040,33592,45041,33616,45042,33609,45043,33589,45044,33588,45045,33615,45046,33586,45047,33593,45048,33590,45049,33559,45050,33600,45051,33585,45052,33576,45053,33603,45054,34388,45120,34442,45121,34474,45122,34451,45123,34468,45124,34473,45125,34444,45126,34467,45127,34460,45128,34928,45129,34935,45130,34945,45131,34946,45132,34941,45133,34937,45134,35352,45135,35344,45136,35342,45137,35340,45138,35349,45139,35338,45140,35351,45141,35347,45142,35350,45143,35343,45144,35345,45145,35912,45146,35962,45147,35961,45148,36001,45149,36002,45150,36215,45151,36524,45152,36562,45153,36564,45154,36559,45155,36785,45156,36865,45157,36870,45158,36855,45159,36864,45160,36858,45161,36852,45162,36867,45163,36861,45164,36869,45165,36856,45166,37013,45167,37089,45168,37085,45169,37090,45170,37202,45171,37197,45172,37196,45173,37336,45174,37341,45175,37335,45176,37340,45177,37337,45178,38275,45179,38498,45180,38499,45181,38497,45182,38491,45217,38493,45218,38500,45219,38488,45220,38494,45221,38587,45222,39138,45223,39340,45224,39592,45225,39640,45226,39717,45227,39730,45228,39740,45229,20094,45230,20602,45231,20605,45232,20572,45233,20551,45234,20547,45235,20556,45236,20570,45237,20553,45238,20581,45239,20598,45240,20558,45241,20565,45242,20597,45243,20596,45244,20599,45245,20559,45246,20495,45247,20591,45248,20589,45249,20828,45250,20885,45251,20976,45252,21098,45253,21103,45254,21202,45255,21209,45256,21208,45257,21205,45258,21264,45259,21263,45260,21273,45261,21311,45262,21312,45263,21310,45264,21443,45265,26364,45266,21830,45267,21866,45268,21862,45269,21828,45270,21854,45271,21857,45272,21827,45273,21834,45274,21809,45275,21846,45276,21839,45277,21845,45278,21807,45279,21860,45280,21816,45281,21806,45282,21852,45283,21804,45284,21859,45285,21811,45286,21825,45287,21847,45288,22280,45289,22283,45290,22281,45291,22495,45292,22533,45293,22538,45294,22534,45295,22496,45296,22500,45297,22522,45298,22530,45299,22581,45300,22519,45301,22521,45302,22816,45303,22882,45304,23094,45305,23105,45306,23113,45307,23142,45308,23146,45309,23104,45310,23100,45376,23138,45377,23130,45378,23110,45379,23114,45380,23408,45381,23495,45382,23493,45383,23492,45384,23490,45385,23487,45386,23494,45387,23561,45388,23560,45389,23559,45390,23648,45391,23644,45392,23645,45393,23815,45394,23814,45395,23822,45396,23835,45397,23830,45398,23842,45399,23825,45400,23849,45401,23828,45402,23833,45403,23844,45404,23847,45405,23831,45406,24034,45407,24120,45408,24118,45409,24115,45410,24119,45411,24247,45412,24248,45413,24246,45414,24245,45415,24254,45416,24373,45417,24375,45418,24407,45419,24428,45420,24425,45421,24427,45422,24471,45423,24473,45424,24478,45425,24472,45426,24481,45427,24480,45428,24476,45429,24703,45430,24739,45431,24713,45432,24736,45433,24744,45434,24779,45435,24756,45436,24806,45437,24765,45438,24773,45473,24763,45474,24757,45475,24796,45476,24764,45477,24792,45478,24789,45479,24774,45480,24799,45481,24760,45482,24794,45483,24775,45484,25114,45485,25115,45486,25160,45487,25504,45488,25511,45489,25458,45490,25494,45491,25506,45492,25509,45493,25463,45494,25447,45495,25496,45496,25514,45497,25457,45498,25513,45499,25481,45500,25475,45501,25499,45502,25451,45503,25512,45504,25476,45505,25480,45506,25497,45507,25505,45508,25516,45509,25490,45510,25487,45511,25472,45512,25467,45513,25449,45514,25448,45515,25466,45516,25949,45517,25942,45518,25937,45519,25945,45520,25943,45521,21855,45522,25935,45523,25944,45524,25941,45525,25940,45526,26012,45527,26011,45528,26028,45529,26063,45530,26059,45531,26060,45532,26062,45533,26205,45534,26202,45535,26212,45536,26216,45537,26214,45538,26206,45539,26361,45540,21207,45541,26395,45542,26753,45543,26799,45544,26786,45545,26771,45546,26805,45547,26751,45548,26742,45549,26801,45550,26791,45551,26775,45552,26800,45553,26755,45554,26820,45555,26797,45556,26758,45557,26757,45558,26772,45559,26781,45560,26792,45561,26783,45562,26785,45563,26754,45564,27442,45565,27578,45566,27627,45632,27628,45633,27691,45634,28046,45635,28092,45636,28147,45637,28121,45638,28082,45639,28129,45640,28108,45641,28132,45642,28155,45643,28154,45644,28165,45645,28103,45646,28107,45647,28079,45648,28113,45649,28078,45650,28126,45651,28153,45652,28088,45653,28151,45654,28149,45655,28101,45656,28114,45657,28186,45658,28085,45659,28122,45660,28139,45661,28120,45662,28138,45663,28145,45664,28142,45665,28136,45666,28102,45667,28100,45668,28074,45669,28140,45670,28095,45671,28134,45672,28921,45673,28937,45674,28938,45675,28925,45676,28911,45677,29245,45678,29309,45679,29313,45680,29468,45681,29467,45682,29462,45683,29459,45684,29465,45685,29575,45686,29701,45687,29706,45688,29699,45689,29702,45690,29694,45691,29709,45692,29920,45693,29942,45694,29943,45729,29980,45730,29986,45731,30053,45732,30054,45733,30050,45734,30064,45735,30095,45736,30164,45737,30165,45738,30133,45739,30154,45740,30157,45741,30350,45742,30420,45743,30418,45744,30427,45745,30519,45746,30526,45747,30524,45748,30518,45749,30520,45750,30522,45751,30827,45752,30787,45753,30798,45754,31077,45755,31080,45756,31085,45757,31227,45758,31378,45759,31381,45760,31520,45761,31528,45762,31515,45763,31532,45764,31526,45765,31513,45766,31518,45767,31534,45768,31890,45769,31895,45770,31893,45771,32070,45772,32067,45773,32113,45774,32046,45775,32057,45776,32060,45777,32064,45778,32048,45779,32051,45780,32068,45781,32047,45782,32066,45783,32050,45784,32049,45785,32573,45786,32670,45787,32666,45788,32716,45789,32718,45790,32722,45791,32796,45792,32842,45793,32838,45794,33071,45795,33046,45796,33059,45797,33067,45798,33065,45799,33072,45800,33060,45801,33282,45802,33333,45803,33335,45804,33334,45805,33337,45806,33678,45807,33694,45808,33688,45809,33656,45810,33698,45811,33686,45812,33725,45813,33707,45814,33682,45815,33674,45816,33683,45817,33673,45818,33696,45819,33655,45820,33659,45821,33660,45822,33670,45888,33703,45889,34389,45890,24426,45891,34503,45892,34496,45893,34486,45894,34500,45895,34485,45896,34502,45897,34507,45898,34481,45899,34479,45900,34505,45901,34899,45902,34974,45903,34952,45904,34987,45905,34962,45906,34966,45907,34957,45908,34955,45909,35219,45910,35215,45911,35370,45912,35357,45913,35363,45914,35365,45915,35377,45916,35373,45917,35359,45918,35355,45919,35362,45920,35913,45921,35930,45922,36009,45923,36012,45924,36011,45925,36008,45926,36010,45927,36007,45928,36199,45929,36198,45930,36286,45931,36282,45932,36571,45933,36575,45934,36889,45935,36877,45936,36890,45937,36887,45938,36899,45939,36895,45940,36893,45941,36880,45942,36885,45943,36894,45944,36896,45945,36879,45946,36898,45947,36886,45948,36891,45949,36884,45950,37096,45985,37101,45986,37117,45987,37207,45988,37326,45989,37365,45990,37350,45991,37347,45992,37351,45993,37357,45994,37353,45995,38281,45996,38506,45997,38517,45998,38515,45999,38520,46e3,38512,46001,38516,46002,38518,46003,38519,46004,38508,46005,38592,46006,38634,46007,38633,46008,31456,46009,31455,46010,38914,46011,38915,46012,39770,46013,40165,46014,40565,46015,40575,46016,40613,46017,40635,46018,20642,46019,20621,46020,20613,46021,20633,46022,20625,46023,20608,46024,20630,46025,20632,46026,20634,46027,26368,46028,20977,46029,21106,46030,21108,46031,21109,46032,21097,46033,21214,46034,21213,46035,21211,46036,21338,46037,21413,46038,21883,46039,21888,46040,21927,46041,21884,46042,21898,46043,21917,46044,21912,46045,21890,46046,21916,46047,21930,46048,21908,46049,21895,46050,21899,46051,21891,46052,21939,46053,21934,46054,21919,46055,21822,46056,21938,46057,21914,46058,21947,46059,21932,46060,21937,46061,21886,46062,21897,46063,21931,46064,21913,46065,22285,46066,22575,46067,22570,46068,22580,46069,22564,46070,22576,46071,22577,46072,22561,46073,22557,46074,22560,46075,22777,46076,22778,46077,22880,46078,23159,46144,23194,46145,23167,46146,23186,46147,23195,46148,23207,46149,23411,46150,23409,46151,23506,46152,23500,46153,23507,46154,23504,46155,23562,46156,23563,46157,23601,46158,23884,46159,23888,46160,23860,46161,23879,46162,24061,46163,24133,46164,24125,46165,24128,46166,24131,46167,24190,46168,24266,46169,24257,46170,24258,46171,24260,46172,24380,46173,24429,46174,24489,46175,24490,46176,24488,46177,24785,46178,24801,46179,24754,46180,24758,46181,24800,46182,24860,46183,24867,46184,24826,46185,24853,46186,24816,46187,24827,46188,24820,46189,24936,46190,24817,46191,24846,46192,24822,46193,24841,46194,24832,46195,24850,46196,25119,46197,25161,46198,25507,46199,25484,46200,25551,46201,25536,46202,25577,46203,25545,46204,25542,46205,25549,46206,25554,46241,25571,46242,25552,46243,25569,46244,25558,46245,25581,46246,25582,46247,25462,46248,25588,46249,25578,46250,25563,46251,25682,46252,25562,46253,25593,46254,25950,46255,25958,46256,25954,46257,25955,46258,26001,46259,26e3,46260,26031,46261,26222,46262,26224,46263,26228,46264,26230,46265,26223,46266,26257,46267,26234,46268,26238,46269,26231,46270,26366,46271,26367,46272,26399,46273,26397,46274,26874,46275,26837,46276,26848,46277,26840,46278,26839,46279,26885,46280,26847,46281,26869,46282,26862,46283,26855,46284,26873,46285,26834,46286,26866,46287,26851,46288,26827,46289,26829,46290,26893,46291,26898,46292,26894,46293,26825,46294,26842,46295,26990,46296,26875,46297,27454,46298,27450,46299,27453,46300,27544,46301,27542,46302,27580,46303,27631,46304,27694,46305,27695,46306,27692,46307,28207,46308,28216,46309,28244,46310,28193,46311,28210,46312,28263,46313,28234,46314,28192,46315,28197,46316,28195,46317,28187,46318,28251,46319,28248,46320,28196,46321,28246,46322,28270,46323,28205,46324,28198,46325,28271,46326,28212,46327,28237,46328,28218,46329,28204,46330,28227,46331,28189,46332,28222,46333,28363,46334,28297,46400,28185,46401,28238,46402,28259,46403,28228,46404,28274,46405,28265,46406,28255,46407,28953,46408,28954,46409,28966,46410,28976,46411,28961,46412,28982,46413,29038,46414,28956,46415,29260,46416,29316,46417,29312,46418,29494,46419,29477,46420,29492,46421,29481,46422,29754,46423,29738,46424,29747,46425,29730,46426,29733,46427,29749,46428,29750,46429,29748,46430,29743,46431,29723,46432,29734,46433,29736,46434,29989,46435,29990,46436,30059,46437,30058,46438,30178,46439,30171,46440,30179,46441,30169,46442,30168,46443,30174,46444,30176,46445,30331,46446,30332,46447,30358,46448,30355,46449,30388,46450,30428,46451,30543,46452,30701,46453,30813,46454,30828,46455,30831,46456,31245,46457,31240,46458,31243,46459,31237,46460,31232,46461,31384,46462,31383,46497,31382,46498,31461,46499,31459,46500,31561,46501,31574,46502,31558,46503,31568,46504,31570,46505,31572,46506,31565,46507,31563,46508,31567,46509,31569,46510,31903,46511,31909,46512,32094,46513,32080,46514,32104,46515,32085,46516,32043,46517,32110,46518,32114,46519,32097,46520,32102,46521,32098,46522,32112,46523,32115,46524,21892,46525,32724,46526,32725,46527,32779,46528,32850,46529,32901,46530,33109,46531,33108,46532,33099,46533,33105,46534,33102,46535,33081,46536,33094,46537,33086,46538,33100,46539,33107,46540,33140,46541,33298,46542,33308,46543,33769,46544,33795,46545,33784,46546,33805,46547,33760,46548,33733,46549,33803,46550,33729,46551,33775,46552,33777,46553,33780,46554,33879,46555,33802,46556,33776,46557,33804,46558,33740,46559,33789,46560,33778,46561,33738,46562,33848,46563,33806,46564,33796,46565,33756,46566,33799,46567,33748,46568,33759,46569,34395,46570,34527,46571,34521,46572,34541,46573,34516,46574,34523,46575,34532,46576,34512,46577,34526,46578,34903,46579,35009,46580,35010,46581,34993,46582,35203,46583,35222,46584,35387,46585,35424,46586,35413,46587,35422,46588,35388,46589,35393,46590,35412,46656,35419,46657,35408,46658,35398,46659,35380,46660,35386,46661,35382,46662,35414,46663,35937,46664,35970,46665,36015,46666,36028,46667,36019,46668,36029,46669,36033,46670,36027,46671,36032,46672,36020,46673,36023,46674,36022,46675,36031,46676,36024,46677,36234,46678,36229,46679,36225,46680,36302,46681,36317,46682,36299,46683,36314,46684,36305,46685,36300,46686,36315,46687,36294,46688,36603,46689,36600,46690,36604,46691,36764,46692,36910,46693,36917,46694,36913,46695,36920,46696,36914,46697,36918,46698,37122,46699,37109,46700,37129,46701,37118,46702,37219,46703,37221,46704,37327,46705,37396,46706,37397,46707,37411,46708,37385,46709,37406,46710,37389,46711,37392,46712,37383,46713,37393,46714,38292,46715,38287,46716,38283,46717,38289,46718,38291,46753,38290,46754,38286,46755,38538,46756,38542,46757,38539,46758,38525,46759,38533,46760,38534,46761,38541,46762,38514,46763,38532,46764,38593,46765,38597,46766,38596,46767,38598,46768,38599,46769,38639,46770,38642,46771,38860,46772,38917,46773,38918,46774,38920,46775,39143,46776,39146,46777,39151,46778,39145,46779,39154,46780,39149,46781,39342,46782,39341,46783,40643,46784,40653,46785,40657,46786,20098,46787,20653,46788,20661,46789,20658,46790,20659,46791,20677,46792,20670,46793,20652,46794,20663,46795,20667,46796,20655,46797,20679,46798,21119,46799,21111,46800,21117,46801,21215,46802,21222,46803,21220,46804,21218,46805,21219,46806,21295,46807,21983,46808,21992,46809,21971,46810,21990,46811,21966,46812,21980,46813,21959,46814,21969,46815,21987,46816,21988,46817,21999,46818,21978,46819,21985,46820,21957,46821,21958,46822,21989,46823,21961,46824,22290,46825,22291,46826,22622,46827,22609,46828,22616,46829,22615,46830,22618,46831,22612,46832,22635,46833,22604,46834,22637,46835,22602,46836,22626,46837,22610,46838,22603,46839,22887,46840,23233,46841,23241,46842,23244,46843,23230,46844,23229,46845,23228,46846,23219,46912,23234,46913,23218,46914,23913,46915,23919,46916,24140,46917,24185,46918,24265,46919,24264,46920,24338,46921,24409,46922,24492,46923,24494,46924,24858,46925,24847,46926,24904,46927,24863,46928,24819,46929,24859,46930,24825,46931,24833,46932,24840,46933,24910,46934,24908,46935,24900,46936,24909,46937,24894,46938,24884,46939,24871,46940,24845,46941,24838,46942,24887,46943,25121,46944,25122,46945,25619,46946,25662,46947,25630,46948,25642,46949,25645,46950,25661,46951,25644,46952,25615,46953,25628,46954,25620,46955,25613,46956,25654,46957,25622,46958,25623,46959,25606,46960,25964,46961,26015,46962,26032,46963,26263,46964,26249,46965,26247,46966,26248,46967,26262,46968,26244,46969,26264,46970,26253,46971,26371,46972,27028,46973,26989,46974,26970,47009,26999,47010,26976,47011,26964,47012,26997,47013,26928,47014,27010,47015,26954,47016,26984,47017,26987,47018,26974,47019,26963,47020,27001,47021,27014,47022,26973,47023,26979,47024,26971,47025,27463,47026,27506,47027,27584,47028,27583,47029,27603,47030,27645,47031,28322,47032,28335,47033,28371,47034,28342,47035,28354,47036,28304,47037,28317,47038,28359,47039,28357,47040,28325,47041,28312,47042,28348,47043,28346,47044,28331,47045,28369,47046,28310,47047,28316,47048,28356,47049,28372,47050,28330,47051,28327,47052,28340,47053,29006,47054,29017,47055,29033,47056,29028,47057,29001,47058,29031,47059,29020,47060,29036,47061,29030,47062,29004,47063,29029,47064,29022,47065,28998,47066,29032,47067,29014,47068,29242,47069,29266,47070,29495,47071,29509,47072,29503,47073,29502,47074,29807,47075,29786,47076,29781,47077,29791,47078,29790,47079,29761,47080,29759,47081,29785,47082,29787,47083,29788,47084,30070,47085,30072,47086,30208,47087,30192,47088,30209,47089,30194,47090,30193,47091,30202,47092,30207,47093,30196,47094,30195,47095,30430,47096,30431,47097,30555,47098,30571,47099,30566,47100,30558,47101,30563,47102,30585,47168,30570,47169,30572,47170,30556,47171,30565,47172,30568,47173,30562,47174,30702,47175,30862,47176,30896,47177,30871,47178,30872,47179,30860,47180,30857,47181,30844,47182,30865,47183,30867,47184,30847,47185,31098,47186,31103,47187,31105,47188,33836,47189,31165,47190,31260,47191,31258,47192,31264,47193,31252,47194,31263,47195,31262,47196,31391,47197,31392,47198,31607,47199,31680,47200,31584,47201,31598,47202,31591,47203,31921,47204,31923,47205,31925,47206,32147,47207,32121,47208,32145,47209,32129,47210,32143,47211,32091,47212,32622,47213,32617,47214,32618,47215,32626,47216,32681,47217,32680,47218,32676,47219,32854,47220,32856,47221,32902,47222,32900,47223,33137,47224,33136,47225,33144,47226,33125,47227,33134,47228,33139,47229,33131,47230,33145,47265,33146,47266,33126,47267,33285,47268,33351,47269,33922,47270,33911,47271,33853,47272,33841,47273,33909,47274,33894,47275,33899,47276,33865,47277,33900,47278,33883,47279,33852,47280,33845,47281,33889,47282,33891,47283,33897,47284,33901,47285,33862,47286,34398,47287,34396,47288,34399,47289,34553,47290,34579,47291,34568,47292,34567,47293,34560,47294,34558,47295,34555,47296,34562,47297,34563,47298,34566,47299,34570,47300,34905,47301,35039,47302,35028,47303,35033,47304,35036,47305,35032,47306,35037,47307,35041,47308,35018,47309,35029,47310,35026,47311,35228,47312,35299,47313,35435,47314,35442,47315,35443,47316,35430,47317,35433,47318,35440,47319,35463,47320,35452,47321,35427,47322,35488,47323,35441,47324,35461,47325,35437,47326,35426,47327,35438,47328,35436,47329,35449,47330,35451,47331,35390,47332,35432,47333,35938,47334,35978,47335,35977,47336,36042,47337,36039,47338,36040,47339,36036,47340,36018,47341,36035,47342,36034,47343,36037,47344,36321,47345,36319,47346,36328,47347,36335,47348,36339,47349,36346,47350,36330,47351,36324,47352,36326,47353,36530,47354,36611,47355,36617,47356,36606,47357,36618,47358,36767,47424,36786,47425,36939,47426,36938,47427,36947,47428,36930,47429,36948,47430,36924,47431,36949,47432,36944,47433,36935,47434,36943,47435,36942,47436,36941,47437,36945,47438,36926,47439,36929,47440,37138,47441,37143,47442,37228,47443,37226,47444,37225,47445,37321,47446,37431,47447,37463,47448,37432,47449,37437,47450,37440,47451,37438,47452,37467,47453,37451,47454,37476,47455,37457,47456,37428,47457,37449,47458,37453,47459,37445,47460,37433,47461,37439,47462,37466,47463,38296,47464,38552,47465,38548,47466,38549,47467,38605,47468,38603,47469,38601,47470,38602,47471,38647,47472,38651,47473,38649,47474,38646,47475,38742,47476,38772,47477,38774,47478,38928,47479,38929,47480,38931,47481,38922,47482,38930,47483,38924,47484,39164,47485,39156,47486,39165,47521,39166,47522,39347,47523,39345,47524,39348,47525,39649,47526,40169,47527,40578,47528,40718,47529,40723,47530,40736,47531,20711,47532,20718,47533,20709,47534,20694,47535,20717,47536,20698,47537,20693,47538,20687,47539,20689,47540,20721,47541,20686,47542,20713,47543,20834,47544,20979,47545,21123,47546,21122,47547,21297,47548,21421,47549,22014,47550,22016,47551,22043,47552,22039,47553,22013,47554,22036,47555,22022,47556,22025,47557,22029,47558,22030,47559,22007,47560,22038,47561,22047,47562,22024,47563,22032,47564,22006,47565,22296,47566,22294,47567,22645,47568,22654,47569,22659,47570,22675,47571,22666,47572,22649,47573,22661,47574,22653,47575,22781,47576,22821,47577,22818,47578,22820,47579,22890,47580,22889,47581,23265,47582,23270,47583,23273,47584,23255,47585,23254,47586,23256,47587,23267,47588,23413,47589,23518,47590,23527,47591,23521,47592,23525,47593,23526,47594,23528,47595,23522,47596,23524,47597,23519,47598,23565,47599,23650,47600,23940,47601,23943,47602,24155,47603,24163,47604,24149,47605,24151,47606,24148,47607,24275,47608,24278,47609,24330,47610,24390,47611,24432,47612,24505,47613,24903,47614,24895,47680,24907,47681,24951,47682,24930,47683,24931,47684,24927,47685,24922,47686,24920,47687,24949,47688,25130,47689,25735,47690,25688,47691,25684,47692,25764,47693,25720,47694,25695,47695,25722,47696,25681,47697,25703,47698,25652,47699,25709,47700,25723,47701,25970,47702,26017,47703,26071,47704,26070,47705,26274,47706,26280,47707,26269,47708,27036,47709,27048,47710,27029,47711,27073,47712,27054,47713,27091,47714,27083,47715,27035,47716,27063,47717,27067,47718,27051,47719,27060,47720,27088,47721,27085,47722,27053,47723,27084,47724,27046,47725,27075,47726,27043,47727,27465,47728,27468,47729,27699,47730,28467,47731,28436,47732,28414,47733,28435,47734,28404,47735,28457,47736,28478,47737,28448,47738,28460,47739,28431,47740,28418,47741,28450,47742,28415,47777,28399,47778,28422,47779,28465,47780,28472,47781,28466,47782,28451,47783,28437,47784,28459,47785,28463,47786,28552,47787,28458,47788,28396,47789,28417,47790,28402,47791,28364,47792,28407,47793,29076,47794,29081,47795,29053,47796,29066,47797,29060,47798,29074,47799,29246,47800,29330,47801,29334,47802,29508,47803,29520,47804,29796,47805,29795,47806,29802,47807,29808,47808,29805,47809,29956,47810,30097,47811,30247,47812,30221,47813,30219,47814,30217,47815,30227,47816,30433,47817,30435,47818,30596,47819,30589,47820,30591,47821,30561,47822,30913,47823,30879,47824,30887,47825,30899,47826,30889,47827,30883,47828,31118,47829,31119,47830,31117,47831,31278,47832,31281,47833,31402,47834,31401,47835,31469,47836,31471,47837,31649,47838,31637,47839,31627,47840,31605,47841,31639,47842,31645,47843,31636,47844,31631,47845,31672,47846,31623,47847,31620,47848,31929,47849,31933,47850,31934,47851,32187,47852,32176,47853,32156,47854,32189,47855,32190,47856,32160,47857,32202,47858,32180,47859,32178,47860,32177,47861,32186,47862,32162,47863,32191,47864,32181,47865,32184,47866,32173,47867,32210,47868,32199,47869,32172,47870,32624,47936,32736,47937,32737,47938,32735,47939,32862,47940,32858,47941,32903,47942,33104,47943,33152,47944,33167,47945,33160,47946,33162,47947,33151,47948,33154,47949,33255,47950,33274,47951,33287,47952,33300,47953,33310,47954,33355,47955,33993,47956,33983,47957,33990,47958,33988,47959,33945,47960,33950,47961,33970,47962,33948,47963,33995,47964,33976,47965,33984,47966,34003,47967,33936,47968,33980,47969,34001,47970,33994,47971,34623,47972,34588,47973,34619,47974,34594,47975,34597,47976,34612,47977,34584,47978,34645,47979,34615,47980,34601,47981,35059,47982,35074,47983,35060,47984,35065,47985,35064,47986,35069,47987,35048,47988,35098,47989,35055,47990,35494,47991,35468,47992,35486,47993,35491,47994,35469,47995,35489,47996,35475,47997,35492,47998,35498,48033,35493,48034,35496,48035,35480,48036,35473,48037,35482,48038,35495,48039,35946,48040,35981,48041,35980,48042,36051,48043,36049,48044,36050,48045,36203,48046,36249,48047,36245,48048,36348,48049,36628,48050,36626,48051,36629,48052,36627,48053,36771,48054,36960,48055,36952,48056,36956,48057,36963,48058,36953,48059,36958,48060,36962,48061,36957,48062,36955,48063,37145,48064,37144,48065,37150,48066,37237,48067,37240,48068,37239,48069,37236,48070,37496,48071,37504,48072,37509,48073,37528,48074,37526,48075,37499,48076,37523,48077,37532,48078,37544,48079,37500,48080,37521,48081,38305,48082,38312,48083,38313,48084,38307,48085,38309,48086,38308,48087,38553,48088,38556,48089,38555,48090,38604,48091,38610,48092,38656,48093,38780,48094,38789,48095,38902,48096,38935,48097,38936,48098,39087,48099,39089,48100,39171,48101,39173,48102,39180,48103,39177,48104,39361,48105,39599,48106,39600,48107,39654,48108,39745,48109,39746,48110,40180,48111,40182,48112,40179,48113,40636,48114,40763,48115,40778,48116,20740,48117,20736,48118,20731,48119,20725,48120,20729,48121,20738,48122,20744,48123,20745,48124,20741,48125,20956,48126,21127,48192,21128,48193,21129,48194,21133,48195,21130,48196,21232,48197,21426,48198,22062,48199,22075,48200,22073,48201,22066,48202,22079,48203,22068,48204,22057,48205,22099,48206,22094,48207,22103,48208,22132,48209,22070,48210,22063,48211,22064,48212,22656,48213,22687,48214,22686,48215,22707,48216,22684,48217,22702,48218,22697,48219,22694,48220,22893,48221,23305,48222,23291,48223,23307,48224,23285,48225,23308,48226,23304,48227,23534,48228,23532,48229,23529,48230,23531,48231,23652,48232,23653,48233,23965,48234,23956,48235,24162,48236,24159,48237,24161,48238,24290,48239,24282,48240,24287,48241,24285,48242,24291,48243,24288,48244,24392,48245,24433,48246,24503,48247,24501,48248,24950,48249,24935,48250,24942,48251,24925,48252,24917,48253,24962,48254,24956,48289,24944,48290,24939,48291,24958,48292,24999,48293,24976,48294,25003,48295,24974,48296,25004,48297,24986,48298,24996,48299,24980,48300,25006,48301,25134,48302,25705,48303,25711,48304,25721,48305,25758,48306,25778,48307,25736,48308,25744,48309,25776,48310,25765,48311,25747,48312,25749,48313,25769,48314,25746,48315,25774,48316,25773,48317,25771,48318,25754,48319,25772,48320,25753,48321,25762,48322,25779,48323,25973,48324,25975,48325,25976,48326,26286,48327,26283,48328,26292,48329,26289,48330,27171,48331,27167,48332,27112,48333,27137,48334,27166,48335,27161,48336,27133,48337,27169,48338,27155,48339,27146,48340,27123,48341,27138,48342,27141,48343,27117,48344,27153,48345,27472,48346,27470,48347,27556,48348,27589,48349,27590,48350,28479,48351,28540,48352,28548,48353,28497,48354,28518,48355,28500,48356,28550,48357,28525,48358,28507,48359,28536,48360,28526,48361,28558,48362,28538,48363,28528,48364,28516,48365,28567,48366,28504,48367,28373,48368,28527,48369,28512,48370,28511,48371,29087,48372,29100,48373,29105,48374,29096,48375,29270,48376,29339,48377,29518,48378,29527,48379,29801,48380,29835,48381,29827,48382,29822,48448,29824,48449,30079,48450,30240,48451,30249,48452,30239,48453,30244,48454,30246,48455,30241,48456,30242,48457,30362,48458,30394,48459,30436,48460,30606,48461,30599,48462,30604,48463,30609,48464,30603,48465,30923,48466,30917,48467,30906,48468,30922,48469,30910,48470,30933,48471,30908,48472,30928,48473,31295,48474,31292,48475,31296,48476,31293,48477,31287,48478,31291,48479,31407,48480,31406,48481,31661,48482,31665,48483,31684,48484,31668,48485,31686,48486,31687,48487,31681,48488,31648,48489,31692,48490,31946,48491,32224,48492,32244,48493,32239,48494,32251,48495,32216,48496,32236,48497,32221,48498,32232,48499,32227,48500,32218,48501,32222,48502,32233,48503,32158,48504,32217,48505,32242,48506,32249,48507,32629,48508,32631,48509,32687,48510,32745,48545,32806,48546,33179,48547,33180,48548,33181,48549,33184,48550,33178,48551,33176,48552,34071,48553,34109,48554,34074,48555,34030,48556,34092,48557,34093,48558,34067,48559,34065,48560,34083,48561,34081,48562,34068,48563,34028,48564,34085,48565,34047,48566,34054,48567,34690,48568,34676,48569,34678,48570,34656,48571,34662,48572,34680,48573,34664,48574,34649,48575,34647,48576,34636,48577,34643,48578,34907,48579,34909,48580,35088,48581,35079,48582,35090,48583,35091,48584,35093,48585,35082,48586,35516,48587,35538,48588,35527,48589,35524,48590,35477,48591,35531,48592,35576,48593,35506,48594,35529,48595,35522,48596,35519,48597,35504,48598,35542,48599,35533,48600,35510,48601,35513,48602,35547,48603,35916,48604,35918,48605,35948,48606,36064,48607,36062,48608,36070,48609,36068,48610,36076,48611,36077,48612,36066,48613,36067,48614,36060,48615,36074,48616,36065,48617,36205,48618,36255,48619,36259,48620,36395,48621,36368,48622,36381,48623,36386,48624,36367,48625,36393,48626,36383,48627,36385,48628,36382,48629,36538,48630,36637,48631,36635,48632,36639,48633,36649,48634,36646,48635,36650,48636,36636,48637,36638,48638,36645,48704,36969,48705,36974,48706,36968,48707,36973,48708,36983,48709,37168,48710,37165,48711,37159,48712,37169,48713,37255,48714,37257,48715,37259,48716,37251,48717,37573,48718,37563,48719,37559,48720,37610,48721,37548,48722,37604,48723,37569,48724,37555,48725,37564,48726,37586,48727,37575,48728,37616,48729,37554,48730,38317,48731,38321,48732,38660,48733,38662,48734,38663,48735,38665,48736,38752,48737,38797,48738,38795,48739,38799,48740,38945,48741,38955,48742,38940,48743,39091,48744,39178,48745,39187,48746,39186,48747,39192,48748,39389,48749,39376,48750,39391,48751,39387,48752,39377,48753,39381,48754,39378,48755,39385,48756,39607,48757,39662,48758,39663,48759,39719,48760,39749,48761,39748,48762,39799,48763,39791,48764,40198,48765,40201,48766,40195,48801,40617,48802,40638,48803,40654,48804,22696,48805,40786,48806,20754,48807,20760,48808,20756,48809,20752,48810,20757,48811,20864,48812,20906,48813,20957,48814,21137,48815,21139,48816,21235,48817,22105,48818,22123,48819,22137,48820,22121,48821,22116,48822,22136,48823,22122,48824,22120,48825,22117,48826,22129,48827,22127,48828,22124,48829,22114,48830,22134,48831,22721,48832,22718,48833,22727,48834,22725,48835,22894,48836,23325,48837,23348,48838,23416,48839,23536,48840,23566,48841,24394,48842,25010,48843,24977,48844,25001,48845,24970,48846,25037,48847,25014,48848,25022,48849,25034,48850,25032,48851,25136,48852,25797,48853,25793,48854,25803,48855,25787,48856,25788,48857,25818,48858,25796,48859,25799,48860,25794,48861,25805,48862,25791,48863,25810,48864,25812,48865,25790,48866,25972,48867,26310,48868,26313,48869,26297,48870,26308,48871,26311,48872,26296,48873,27197,48874,27192,48875,27194,48876,27225,48877,27243,48878,27224,48879,27193,48880,27204,48881,27234,48882,27233,48883,27211,48884,27207,48885,27189,48886,27231,48887,27208,48888,27481,48889,27511,48890,27653,48891,28610,48892,28593,48893,28577,48894,28611,48960,28580,48961,28609,48962,28583,48963,28595,48964,28608,48965,28601,48966,28598,48967,28582,48968,28576,48969,28596,48970,29118,48971,29129,48972,29136,48973,29138,48974,29128,48975,29141,48976,29113,48977,29134,48978,29145,48979,29148,48980,29123,48981,29124,48982,29544,48983,29852,48984,29859,48985,29848,48986,29855,48987,29854,48988,29922,48989,29964,48990,29965,48991,30260,48992,30264,48993,30266,48994,30439,48995,30437,48996,30624,48997,30622,48998,30623,48999,30629,49e3,30952,49001,30938,49002,30956,49003,30951,49004,31142,49005,31309,49006,31310,49007,31302,49008,31308,49009,31307,49010,31418,49011,31705,49012,31761,49013,31689,49014,31716,49015,31707,49016,31713,49017,31721,49018,31718,49019,31957,49020,31958,49021,32266,49022,32273,49057,32264,49058,32283,49059,32291,49060,32286,49061,32285,49062,32265,49063,32272,49064,32633,49065,32690,49066,32752,49067,32753,49068,32750,49069,32808,49070,33203,49071,33193,49072,33192,49073,33275,49074,33288,49075,33368,49076,33369,49077,34122,49078,34137,49079,34120,49080,34152,49081,34153,49082,34115,49083,34121,49084,34157,49085,34154,49086,34142,49087,34691,49088,34719,49089,34718,49090,34722,49091,34701,49092,34913,49093,35114,49094,35122,49095,35109,49096,35115,49097,35105,49098,35242,49099,35238,49100,35558,49101,35578,49102,35563,49103,35569,49104,35584,49105,35548,49106,35559,49107,35566,49108,35582,49109,35585,49110,35586,49111,35575,49112,35565,49113,35571,49114,35574,49115,35580,49116,35947,49117,35949,49118,35987,49119,36084,49120,36420,49121,36401,49122,36404,49123,36418,49124,36409,49125,36405,49126,36667,49127,36655,49128,36664,49129,36659,49130,36776,49131,36774,49132,36981,49133,36980,49134,36984,49135,36978,49136,36988,49137,36986,49138,37172,49139,37266,49140,37664,49141,37686,49142,37624,49143,37683,49144,37679,49145,37666,49146,37628,49147,37675,49148,37636,49149,37658,49150,37648,49216,37670,49217,37665,49218,37653,49219,37678,49220,37657,49221,38331,49222,38567,49223,38568,49224,38570,49225,38613,49226,38670,49227,38673,49228,38678,49229,38669,49230,38675,49231,38671,49232,38747,49233,38748,49234,38758,49235,38808,49236,38960,49237,38968,49238,38971,49239,38967,49240,38957,49241,38969,49242,38948,49243,39184,49244,39208,49245,39198,49246,39195,49247,39201,49248,39194,49249,39405,49250,39394,49251,39409,49252,39608,49253,39612,49254,39675,49255,39661,49256,39720,49257,39825,49258,40213,49259,40227,49260,40230,49261,40232,49262,40210,49263,40219,49264,40664,49265,40660,49266,40845,49267,40860,49268,20778,49269,20767,49270,20769,49271,20786,49272,21237,49273,22158,49274,22144,49275,22160,49276,22149,49277,22151,49278,22159,49313,22741,49314,22739,49315,22737,49316,22734,49317,23344,49318,23338,49319,23332,49320,23418,49321,23607,49322,23656,49323,23996,49324,23994,49325,23997,49326,23992,49327,24171,49328,24396,49329,24509,49330,25033,49331,25026,49332,25031,49333,25062,49334,25035,49335,25138,49336,25140,49337,25806,49338,25802,49339,25816,49340,25824,49341,25840,49342,25830,49343,25836,49344,25841,49345,25826,49346,25837,49347,25986,49348,25987,49349,26329,49350,26326,49351,27264,49352,27284,49353,27268,49354,27298,49355,27292,49356,27355,49357,27299,49358,27262,49359,27287,49360,27280,49361,27296,49362,27484,49363,27566,49364,27610,49365,27656,49366,28632,49367,28657,49368,28639,49369,28640,49370,28635,49371,28644,49372,28651,49373,28655,49374,28544,49375,28652,49376,28641,49377,28649,49378,28629,49379,28654,49380,28656,49381,29159,49382,29151,49383,29166,49384,29158,49385,29157,49386,29165,49387,29164,49388,29172,49389,29152,49390,29237,49391,29254,49392,29552,49393,29554,49394,29865,49395,29872,49396,29862,49397,29864,49398,30278,49399,30274,49400,30284,49401,30442,49402,30643,49403,30634,49404,30640,49405,30636,49406,30631,49472,30637,49473,30703,49474,30967,49475,30970,49476,30964,49477,30959,49478,30977,49479,31143,49480,31146,49481,31319,49482,31423,49483,31751,49484,31757,49485,31742,49486,31735,49487,31756,49488,31712,49489,31968,49490,31964,49491,31966,49492,31970,49493,31967,49494,31961,49495,31965,49496,32302,49497,32318,49498,32326,49499,32311,49500,32306,49501,32323,49502,32299,49503,32317,49504,32305,49505,32325,49506,32321,49507,32308,49508,32313,49509,32328,49510,32309,49511,32319,49512,32303,49513,32580,49514,32755,49515,32764,49516,32881,49517,32882,49518,32880,49519,32879,49520,32883,49521,33222,49522,33219,49523,33210,49524,33218,49525,33216,49526,33215,49527,33213,49528,33225,49529,33214,49530,33256,49531,33289,49532,33393,49533,34218,49534,34180,49569,34174,49570,34204,49571,34193,49572,34196,49573,34223,49574,34203,49575,34183,49576,34216,49577,34186,49578,34407,49579,34752,49580,34769,49581,34739,49582,34770,49583,34758,49584,34731,49585,34747,49586,34746,49587,34760,49588,34763,49589,35131,49590,35126,49591,35140,49592,35128,49593,35133,49594,35244,49595,35598,49596,35607,49597,35609,49598,35611,49599,35594,49600,35616,49601,35613,49602,35588,49603,35600,49604,35905,49605,35903,49606,35955,49607,36090,49608,36093,49609,36092,49610,36088,49611,36091,49612,36264,49613,36425,49614,36427,49615,36424,49616,36426,49617,36676,49618,36670,49619,36674,49620,36677,49621,36671,49622,36991,49623,36989,49624,36996,49625,36993,49626,36994,49627,36992,49628,37177,49629,37283,49630,37278,49631,37276,49632,37709,49633,37762,49634,37672,49635,37749,49636,37706,49637,37733,49638,37707,49639,37656,49640,37758,49641,37740,49642,37723,49643,37744,49644,37722,49645,37716,49646,38346,49647,38347,49648,38348,49649,38344,49650,38342,49651,38577,49652,38584,49653,38614,49654,38684,49655,38686,49656,38816,49657,38867,49658,38982,49659,39094,49660,39221,49661,39425,49662,39423,49728,39854,49729,39851,49730,39850,49731,39853,49732,40251,49733,40255,49734,40587,49735,40655,49736,40670,49737,40668,49738,40669,49739,40667,49740,40766,49741,40779,49742,21474,49743,22165,49744,22190,49745,22745,49746,22744,49747,23352,49748,24413,49749,25059,49750,25139,49751,25844,49752,25842,49753,25854,49754,25862,49755,25850,49756,25851,49757,25847,49758,26039,49759,26332,49760,26406,49761,27315,49762,27308,49763,27331,49764,27323,49765,27320,49766,27330,49767,27310,49768,27311,49769,27487,49770,27512,49771,27567,49772,28681,49773,28683,49774,28670,49775,28678,49776,28666,49777,28689,49778,28687,49779,29179,49780,29180,49781,29182,49782,29176,49783,29559,49784,29557,49785,29863,49786,29887,49787,29973,49788,30294,49789,30296,49790,30290,49825,30653,49826,30655,49827,30651,49828,30652,49829,30990,49830,31150,49831,31329,49832,31330,49833,31328,49834,31428,49835,31429,49836,31787,49837,31783,49838,31786,49839,31774,49840,31779,49841,31777,49842,31975,49843,32340,49844,32341,49845,32350,49846,32346,49847,32353,49848,32338,49849,32345,49850,32584,49851,32761,49852,32763,49853,32887,49854,32886,49855,33229,49856,33231,49857,33290,49858,34255,49859,34217,49860,34253,49861,34256,49862,34249,49863,34224,49864,34234,49865,34233,49866,34214,49867,34799,49868,34796,49869,34802,49870,34784,49871,35206,49872,35250,49873,35316,49874,35624,49875,35641,49876,35628,49877,35627,49878,35920,49879,36101,49880,36441,49881,36451,49882,36454,49883,36452,49884,36447,49885,36437,49886,36544,49887,36681,49888,36685,49889,36999,49890,36995,49891,37e3,49892,37291,49893,37292,49894,37328,49895,37780,49896,37770,49897,37782,49898,37794,49899,37811,49900,37806,49901,37804,49902,37808,49903,37784,49904,37786,49905,37783,49906,38356,49907,38358,49908,38352,49909,38357,49910,38626,49911,38620,49912,38617,49913,38619,49914,38622,49915,38692,49916,38819,49917,38822,49918,38829,49984,38905,49985,38989,49986,38991,49987,38988,49988,38990,49989,38995,49990,39098,49991,39230,49992,39231,49993,39229,49994,39214,49995,39333,49996,39438,49997,39617,49998,39683,49999,39686,5e4,39759,50001,39758,50002,39757,50003,39882,50004,39881,50005,39933,50006,39880,50007,39872,50008,40273,50009,40285,50010,40288,50011,40672,50012,40725,50013,40748,50014,20787,50015,22181,50016,22750,50017,22751,50018,22754,50019,23541,50020,40848,50021,24300,50022,25074,50023,25079,50024,25078,50025,25077,50026,25856,50027,25871,50028,26336,50029,26333,50030,27365,50031,27357,50032,27354,50033,27347,50034,28699,50035,28703,50036,28712,50037,28698,50038,28701,50039,28693,50040,28696,50041,29190,50042,29197,50043,29272,50044,29346,50045,29560,50046,29562,50081,29885,50082,29898,50083,29923,50084,30087,50085,30086,50086,30303,50087,30305,50088,30663,50089,31001,50090,31153,50091,31339,50092,31337,50093,31806,50094,31807,50095,31800,50096,31805,50097,31799,50098,31808,50099,32363,50100,32365,50101,32377,50102,32361,50103,32362,50104,32645,50105,32371,50106,32694,50107,32697,50108,32696,50109,33240,50110,34281,50111,34269,50112,34282,50113,34261,50114,34276,50115,34277,50116,34295,50117,34811,50118,34821,50119,34829,50120,34809,50121,34814,50122,35168,50123,35167,50124,35158,50125,35166,50126,35649,50127,35676,50128,35672,50129,35657,50130,35674,50131,35662,50132,35663,50133,35654,50134,35673,50135,36104,50136,36106,50137,36476,50138,36466,50139,36487,50140,36470,50141,36460,50142,36474,50143,36468,50144,36692,50145,36686,50146,36781,50147,37002,50148,37003,50149,37297,50150,37294,50151,37857,50152,37841,50153,37855,50154,37827,50155,37832,50156,37852,50157,37853,50158,37846,50159,37858,50160,37837,50161,37848,50162,37860,50163,37847,50164,37864,50165,38364,50166,38580,50167,38627,50168,38698,50169,38695,50170,38753,50171,38876,50172,38907,50173,39006,50174,39e3,50240,39003,50241,39100,50242,39237,50243,39241,50244,39446,50245,39449,50246,39693,50247,39912,50248,39911,50249,39894,50250,39899,50251,40329,50252,40289,50253,40306,50254,40298,50255,40300,50256,40594,50257,40599,50258,40595,50259,40628,50260,21240,50261,22184,50262,22199,50263,22198,50264,22196,50265,22204,50266,22756,50267,23360,50268,23363,50269,23421,50270,23542,50271,24009,50272,25080,50273,25082,50274,25880,50275,25876,50276,25881,50277,26342,50278,26407,50279,27372,50280,28734,50281,28720,50282,28722,50283,29200,50284,29563,50285,29903,50286,30306,50287,30309,50288,31014,50289,31018,50290,31020,50291,31019,50292,31431,50293,31478,50294,31820,50295,31811,50296,31821,50297,31983,50298,31984,50299,36782,50300,32381,50301,32380,50302,32386,50337,32588,50338,32768,50339,33242,50340,33382,50341,34299,50342,34297,50343,34321,50344,34298,50345,34310,50346,34315,50347,34311,50348,34314,50349,34836,50350,34837,50351,35172,50352,35258,50353,35320,50354,35696,50355,35692,50356,35686,50357,35695,50358,35679,50359,35691,50360,36111,50361,36109,50362,36489,50363,36481,50364,36485,50365,36482,50366,37300,50367,37323,50368,37912,50369,37891,50370,37885,50371,38369,50372,38704,50373,39108,50374,39250,50375,39249,50376,39336,50377,39467,50378,39472,50379,39479,50380,39477,50381,39955,50382,39949,50383,40569,50384,40629,50385,40680,50386,40751,50387,40799,50388,40803,50389,40801,50390,20791,50391,20792,50392,22209,50393,22208,50394,22210,50395,22804,50396,23660,50397,24013,50398,25084,50399,25086,50400,25885,50401,25884,50402,26005,50403,26345,50404,27387,50405,27396,50406,27386,50407,27570,50408,28748,50409,29211,50410,29351,50411,29910,50412,29908,50413,30313,50414,30675,50415,31824,50416,32399,50417,32396,50418,32700,50419,34327,50420,34349,50421,34330,50422,34851,50423,34850,50424,34849,50425,34847,50426,35178,50427,35180,50428,35261,50429,35700,50430,35703,50496,35709,50497,36115,50498,36490,50499,36493,50500,36491,50501,36703,50502,36783,50503,37306,50504,37934,50505,37939,50506,37941,50507,37946,50508,37944,50509,37938,50510,37931,50511,38370,50512,38712,50513,38713,50514,38706,50515,38911,50516,39015,50517,39013,50518,39255,50519,39493,50520,39491,50521,39488,50522,39486,50523,39631,50524,39764,50525,39761,50526,39981,50527,39973,50528,40367,50529,40372,50530,40386,50531,40376,50532,40605,50533,40687,50534,40729,50535,40796,50536,40806,50537,40807,50538,20796,50539,20795,50540,22216,50541,22218,50542,22217,50543,23423,50544,24020,50545,24018,50546,24398,50547,25087,50548,25892,50549,27402,50550,27489,50551,28753,50552,28760,50553,29568,50554,29924,50555,30090,50556,30318,50557,30316,50558,31155,50593,31840,50594,31839,50595,32894,50596,32893,50597,33247,50598,35186,50599,35183,50600,35324,50601,35712,50602,36118,50603,36119,50604,36497,50605,36499,50606,36705,50607,37192,50608,37956,50609,37969,50610,37970,50611,38717,50612,38718,50613,38851,50614,38849,50615,39019,50616,39253,50617,39509,50618,39501,50619,39634,50620,39706,50621,40009,50622,39985,50623,39998,50624,39995,50625,40403,50626,40407,50627,40756,50628,40812,50629,40810,50630,40852,50631,22220,50632,24022,50633,25088,50634,25891,50635,25899,50636,25898,50637,26348,50638,27408,50639,29914,50640,31434,50641,31844,50642,31843,50643,31845,50644,32403,50645,32406,50646,32404,50647,33250,50648,34360,50649,34367,50650,34865,50651,35722,50652,37008,50653,37007,50654,37987,50655,37984,50656,37988,50657,38760,50658,39023,50659,39260,50660,39514,50661,39515,50662,39511,50663,39635,50664,39636,50665,39633,50666,40020,50667,40023,50668,40022,50669,40421,50670,40607,50671,40692,50672,22225,50673,22761,50674,25900,50675,28766,50676,30321,50677,30322,50678,30679,50679,32592,50680,32648,50681,34870,50682,34873,50683,34914,50684,35731,50685,35730,50686,35734,50752,33399,50753,36123,50754,37312,50755,37994,50756,38722,50757,38728,50758,38724,50759,38854,50760,39024,50761,39519,50762,39714,50763,39768,50764,40031,50765,40441,50766,40442,50767,40572,50768,40573,50769,40711,50770,40823,50771,40818,50772,24307,50773,27414,50774,28771,50775,31852,50776,31854,50777,34875,50778,35264,50779,36513,50780,37313,50781,38002,50782,38e3,50783,39025,50784,39262,50785,39638,50786,39715,50787,40652,50788,28772,50789,30682,50790,35738,50791,38007,50792,38857,50793,39522,50794,39525,50795,32412,50796,35740,50797,36522,50798,37317,50799,38013,50800,38014,50801,38012,50802,40055,50803,40056,50804,40695,50805,35924,50806,38015,50807,40474,50808,29224,50809,39530,50810,39729,50811,40475,50812,40478,50813,31858,50814,63153,50849,63154,50850,63155,50851,63156,50852,63157,50853,63158,50854,63159,50855,63160,50856,63161,50857,63162,50858,63163,50859,63164,50860,63165,50861,63166,50862,63167,50863,63168,50864,63169,50865,63170,50866,63171,50867,63172,50868,63173,50869,63174,50870,63175,50871,63176,50872,63177,50873,63178,50874,63179,50875,63180,50876,63181,50877,63182,50878,63183,50879,63184,50880,63185,50881,63186,50882,63187,50883,63188,50884,63189,50885,63190,50886,63191,50887,63192,50888,63193,50889,63194,50890,63195,50891,63196,50892,63197,50893,63198,50894,63199,50895,63200,50896,63201,50897,63202,50898,63203,50899,63204,50900,63205,50901,63206,50902,63207,50903,63208,50904,63209,50905,63210,50906,63211,50907,63212,50908,63213,50909,63214,50910,63215,50911,63216,50912,63217,50913,63218,50914,63219,50915,63220,50916,63221,50917,63222,50918,63223,50919,63224,50920,63225,50921,63226,50922,63227,50923,63228,50924,63229,50925,63230,50926,63231,50927,63232,50928,63233,50929,63234,50930,63235,50931,63236,50932,63237,50933,63238,50934,63239,50935,63240,50936,63241,50937,63242,50938,63243,50939,63244,50940,63245,50941,63246,50942,63247,51008,63248,51009,63249,51010,63250,51011,63251,51012,63252,51013,63253,51014,63254,51015,63255,51016,63256,51017,63257,51018,63258,51019,63259,51020,63260,51021,63261,51022,63262,51023,63263,51024,63264,51025,63265,51026,63266,51027,63267,51028,63268,51029,63269,51030,63270,51031,63271,51032,63272,51033,63273,51034,63274,51035,63275,51036,63276,51037,63277,51038,63278,51039,63279,51040,63280,51041,63281,51042,63282,51043,63283,51044,63284,51045,63285,51046,63286,51047,63287,51048,63288,51049,63289,51050,63290,51051,63291,51052,63292,51053,63293,51054,63294,51055,63295,51056,63296,51057,63297,51058,63298,51059,63299,51060,63300,51061,63301,51062,63302,51063,63303,51064,63304,51065,63305,51066,63306,51067,63307,51068,63308,51069,63309,51070,63310,51105,63311,51106,63312,51107,63313,51108,63314,51109,63315,51110,63316,51111,63317,51112,63318,51113,63319,51114,63320,51115,63321,51116,63322,51117,63323,51118,63324,51119,63325,51120,63326,51121,63327,51122,63328,51123,63329,51124,63330,51125,63331,51126,63332,51127,63333,51128,63334,51129,63335,51130,63336,51131,63337,51132,63338,51133,63339,51134,63340,51135,63341,51136,63342,51137,63343,51138,63344,51139,63345,51140,63346,51141,63347,51142,63348,51143,63349,51144,63350,51145,63351,51146,63352,51147,63353,51148,63354,51149,63355,51150,63356,51151,63357,51152,63358,51153,63359,51154,63360,51155,63361,51156,63362,51157,63363,51158,63364,51159,63365,51160,63366,51161,63367,51162,63368,51163,63369,51164,63370,51165,63371,51166,63372,51167,63373,51168,63374,51169,63375,51170,63376,51171,63377,51172,63378,51173,63379,51174,63380,51175,63381,51176,63382,51177,63383,51178,63384,51179,63385,51180,63386,51181,63387,51182,63388,51183,63389,51184,63390,51185,63391,51186,63392,51187,63393,51188,63394,51189,63395,51190,63396,51191,63397,51192,63398,51193,63399,51194,63400,51195,63401,51196,63402,51197,63403,51198,63404,51264,63405,51265,63406,51266,63407,51267,63408,51268,63409,51269,63410,51270,63411,51271,63412,51272,63413,51273,63414,51274,63415,51275,63416,51276,63417,51277,63418,51278,63419,51279,63420,51280,63421,51281,63422,51282,63423,51283,63424,51284,63425,51285,63426,51286,63427,51287,63428,51288,63429,51289,63430,51290,63431,51291,63432,51292,63433,51293,63434,51294,63435,51295,63436,51296,63437,51297,63438,51298,63439,51299,63440,51300,63441,51301,63442,51302,63443,51303,63444,51304,63445,51305,63446,51306,63447,51307,63448,51308,63449,51309,63450,51310,63451,51311,63452,51312,63453,51313,63454,51314,63455,51315,63456,51316,63457,51317,63458,51318,63459,51319,63460,51320,63461,51321,63462,51322,63463,51323,63464,51324,63465,51325,63466,51326,63467,51361,63468,51362,63469,51363,63470,51364,63471,51365,63472,51366,63473,51367,63474,51368,63475,51369,63476,51370,63477,51371,63478,51372,63479,51373,63480,51374,63481,51375,63482,51376,63483,51377,63484,51378,63485,51379,63486,51380,63487,51381,63488,51382,63489,51383,63490,51384,63491,51385,63492,51386,63493,51387,63494,51388,63495,51389,63496,51390,63497,51391,63498,51392,63499,51393,63500,51394,63501,51395,63502,51396,63503,51397,63504,51398,63505,51399,63506,51400,63507,51401,63508,51402,63509,51403,63510,51404,63511,51405,63512,51406,63513,51407,63514,51408,63515,51409,63516,51410,63517,51411,63518,51412,63519,51413,63520,51414,63521,51415,63522,51416,63523,51417,63524,51418,63525,51419,63526,51420,63527,51421,63528,51422,63529,51423,63530,51424,63531,51425,63532,51426,63533,51427,63534,51428,63535,51429,63536,51430,63537,51431,63538,51432,63539,51433,63540,51434,63541,51435,63542,51436,63543,51437,63544,51438,63545,51439,63546,51440,63547,51441,63548,51442,63549,51443,63550,51444,63551,51445,63552,51446,63553,51447,63554,51448,63555,51449,63556,51450,63557,51451,63558,51452,63559,51453,63560,51454,20034,51520,20060,51521,20981,51522,21274,51523,21378,51524,19975,51525,19980,51526,20039,51527,20109,51528,22231,51529,64012,51530,23662,51531,24435,51532,19983,51533,20871,51534,19982,51535,20014,51536,20115,51537,20162,51538,20169,51539,20168,51540,20888,51541,21244,51542,21356,51543,21433,51544,22304,51545,22787,51546,22828,51547,23568,51548,24063,51549,26081,51550,27571,51551,27596,51552,27668,51553,29247,51554,20017,51555,20028,51556,20200,51557,20188,51558,20201,51559,20193,51560,20189,51561,20186,51562,21004,51563,21276,51564,21324,51565,22306,51566,22307,51567,22807,51568,22831,51569,23425,51570,23428,51571,23570,51572,23611,51573,23668,51574,23667,51575,24068,51576,24192,51577,24194,51578,24521,51579,25097,51580,25168,51581,27669,51582,27702,51617,27715,51618,27711,51619,27707,51620,29358,51621,29360,51622,29578,51623,31160,51624,32906,51625,38430,51626,20238,51627,20248,51628,20268,51629,20213,51630,20244,51631,20209,51632,20224,51633,20215,51634,20232,51635,20253,51636,20226,51637,20229,51638,20258,51639,20243,51640,20228,51641,20212,51642,20242,51643,20913,51644,21011,51645,21001,51646,21008,51647,21158,51648,21282,51649,21279,51650,21325,51651,21386,51652,21511,51653,22241,51654,22239,51655,22318,51656,22314,51657,22324,51658,22844,51659,22912,51660,22908,51661,22917,51662,22907,51663,22910,51664,22903,51665,22911,51666,23382,51667,23573,51668,23589,51669,23676,51670,23674,51671,23675,51672,23678,51673,24031,51674,24181,51675,24196,51676,24322,51677,24346,51678,24436,51679,24533,51680,24532,51681,24527,51682,25180,51683,25182,51684,25188,51685,25185,51686,25190,51687,25186,51688,25177,51689,25184,51690,25178,51691,25189,51692,26095,51693,26094,51694,26430,51695,26425,51696,26424,51697,26427,51698,26426,51699,26431,51700,26428,51701,26419,51702,27672,51703,27718,51704,27730,51705,27740,51706,27727,51707,27722,51708,27732,51709,27723,51710,27724,51776,28785,51777,29278,51778,29364,51779,29365,51780,29582,51781,29994,51782,30335,51783,31349,51784,32593,51785,33400,51786,33404,51787,33408,51788,33405,51789,33407,51790,34381,51791,35198,51792,37017,51793,37015,51794,37016,51795,37019,51796,37012,51797,38434,51798,38436,51799,38432,51800,38435,51801,20310,51802,20283,51803,20322,51804,20297,51805,20307,51806,20324,51807,20286,51808,20327,51809,20306,51810,20319,51811,20289,51812,20312,51813,20269,51814,20275,51815,20287,51816,20321,51817,20879,51818,20921,51819,21020,51820,21022,51821,21025,51822,21165,51823,21166,51824,21257,51825,21347,51826,21362,51827,21390,51828,21391,51829,21552,51830,21559,51831,21546,51832,21588,51833,21573,51834,21529,51835,21532,51836,21541,51837,21528,51838,21565,51873,21583,51874,21569,51875,21544,51876,21540,51877,21575,51878,22254,51879,22247,51880,22245,51881,22337,51882,22341,51883,22348,51884,22345,51885,22347,51886,22354,51887,22790,51888,22848,51889,22950,51890,22936,51891,22944,51892,22935,51893,22926,51894,22946,51895,22928,51896,22927,51897,22951,51898,22945,51899,23438,51900,23442,51901,23592,51902,23594,51903,23693,51904,23695,51905,23688,51906,23691,51907,23689,51908,23698,51909,23690,51910,23686,51911,23699,51912,23701,51913,24032,51914,24074,51915,24078,51916,24203,51917,24201,51918,24204,51919,24200,51920,24205,51921,24325,51922,24349,51923,24440,51924,24438,51925,24530,51926,24529,51927,24528,51928,24557,51929,24552,51930,24558,51931,24563,51932,24545,51933,24548,51934,24547,51935,24570,51936,24559,51937,24567,51938,24571,51939,24576,51940,24564,51941,25146,51942,25219,51943,25228,51944,25230,51945,25231,51946,25236,51947,25223,51948,25201,51949,25211,51950,25210,51951,25200,51952,25217,51953,25224,51954,25207,51955,25213,51956,25202,51957,25204,51958,25911,51959,26096,51960,26100,51961,26099,51962,26098,51963,26101,51964,26437,51965,26439,51966,26457,52032,26453,52033,26444,52034,26440,52035,26461,52036,26445,52037,26458,52038,26443,52039,27600,52040,27673,52041,27674,52042,27768,52043,27751,52044,27755,52045,27780,52046,27787,52047,27791,52048,27761,52049,27759,52050,27753,52051,27802,52052,27757,52053,27783,52054,27797,52055,27804,52056,27750,52057,27763,52058,27749,52059,27771,52060,27790,52061,28788,52062,28794,52063,29283,52064,29375,52065,29373,52066,29379,52067,29382,52068,29377,52069,29370,52070,29381,52071,29589,52072,29591,52073,29587,52074,29588,52075,29586,52076,30010,52077,30009,52078,30100,52079,30101,52080,30337,52081,31037,52082,32820,52083,32917,52084,32921,52085,32912,52086,32914,52087,32924,52088,33424,52089,33423,52090,33413,52091,33422,52092,33425,52093,33427,52094,33418,52129,33411,52130,33412,52131,35960,52132,36809,52133,36799,52134,37023,52135,37025,52136,37029,52137,37022,52138,37031,52139,37024,52140,38448,52141,38440,52142,38447,52143,38445,52144,20019,52145,20376,52146,20348,52147,20357,52148,20349,52149,20352,52150,20359,52151,20342,52152,20340,52153,20361,52154,20356,52155,20343,52156,20300,52157,20375,52158,20330,52159,20378,52160,20345,52161,20353,52162,20344,52163,20368,52164,20380,52165,20372,52166,20382,52167,20370,52168,20354,52169,20373,52170,20331,52171,20334,52172,20894,52173,20924,52174,20926,52175,21045,52176,21042,52177,21043,52178,21062,52179,21041,52180,21180,52181,21258,52182,21259,52183,21308,52184,21394,52185,21396,52186,21639,52187,21631,52188,21633,52189,21649,52190,21634,52191,21640,52192,21611,52193,21626,52194,21630,52195,21605,52196,21612,52197,21620,52198,21606,52199,21645,52200,21615,52201,21601,52202,21600,52203,21656,52204,21603,52205,21607,52206,21604,52207,22263,52208,22265,52209,22383,52210,22386,52211,22381,52212,22379,52213,22385,52214,22384,52215,22390,52216,22400,52217,22389,52218,22395,52219,22387,52220,22388,52221,22370,52222,22376,52288,22397,52289,22796,52290,22853,52291,22965,52292,22970,52293,22991,52294,22990,52295,22962,52296,22988,52297,22977,52298,22966,52299,22972,52300,22979,52301,22998,52302,22961,52303,22973,52304,22976,52305,22984,52306,22964,52307,22983,52308,23394,52309,23397,52310,23443,52311,23445,52312,23620,52313,23623,52314,23726,52315,23716,52316,23712,52317,23733,52318,23727,52319,23720,52320,23724,52321,23711,52322,23715,52323,23725,52324,23714,52325,23722,52326,23719,52327,23709,52328,23717,52329,23734,52330,23728,52331,23718,52332,24087,52333,24084,52334,24089,52335,24360,52336,24354,52337,24355,52338,24356,52339,24404,52340,24450,52341,24446,52342,24445,52343,24542,52344,24549,52345,24621,52346,24614,52347,24601,52348,24626,52349,24587,52350,24628,52385,24586,52386,24599,52387,24627,52388,24602,52389,24606,52390,24620,52391,24610,52392,24589,52393,24592,52394,24622,52395,24595,52396,24593,52397,24588,52398,24585,52399,24604,52400,25108,52401,25149,52402,25261,52403,25268,52404,25297,52405,25278,52406,25258,52407,25270,52408,25290,52409,25262,52410,25267,52411,25263,52412,25275,52413,25257,52414,25264,52415,25272,52416,25917,52417,26024,52418,26043,52419,26121,52420,26108,52421,26116,52422,26130,52423,26120,52424,26107,52425,26115,52426,26123,52427,26125,52428,26117,52429,26109,52430,26129,52431,26128,52432,26358,52433,26378,52434,26501,52435,26476,52436,26510,52437,26514,52438,26486,52439,26491,52440,26520,52441,26502,52442,26500,52443,26484,52444,26509,52445,26508,52446,26490,52447,26527,52448,26513,52449,26521,52450,26499,52451,26493,52452,26497,52453,26488,52454,26489,52455,26516,52456,27429,52457,27520,52458,27518,52459,27614,52460,27677,52461,27795,52462,27884,52463,27883,52464,27886,52465,27865,52466,27830,52467,27860,52468,27821,52469,27879,52470,27831,52471,27856,52472,27842,52473,27834,52474,27843,52475,27846,52476,27885,52477,27890,52478,27858,52544,27869,52545,27828,52546,27786,52547,27805,52548,27776,52549,27870,52550,27840,52551,27952,52552,27853,52553,27847,52554,27824,52555,27897,52556,27855,52557,27881,52558,27857,52559,28820,52560,28824,52561,28805,52562,28819,52563,28806,52564,28804,52565,28817,52566,28822,52567,28802,52568,28826,52569,28803,52570,29290,52571,29398,52572,29387,52573,29400,52574,29385,52575,29404,52576,29394,52577,29396,52578,29402,52579,29388,52580,29393,52581,29604,52582,29601,52583,29613,52584,29606,52585,29602,52586,29600,52587,29612,52588,29597,52589,29917,52590,29928,52591,30015,52592,30016,52593,30014,52594,30092,52595,30104,52596,30383,52597,30451,52598,30449,52599,30448,52600,30453,52601,30712,52602,30716,52603,30713,52604,30715,52605,30714,52606,30711,52641,31042,52642,31039,52643,31173,52644,31352,52645,31355,52646,31483,52647,31861,52648,31997,52649,32821,52650,32911,52651,32942,52652,32931,52653,32952,52654,32949,52655,32941,52656,33312,52657,33440,52658,33472,52659,33451,52660,33434,52661,33432,52662,33435,52663,33461,52664,33447,52665,33454,52666,33468,52667,33438,52668,33466,52669,33460,52670,33448,52671,33441,52672,33449,52673,33474,52674,33444,52675,33475,52676,33462,52677,33442,52678,34416,52679,34415,52680,34413,52681,34414,52682,35926,52683,36818,52684,36811,52685,36819,52686,36813,52687,36822,52688,36821,52689,36823,52690,37042,52691,37044,52692,37039,52693,37043,52694,37040,52695,38457,52696,38461,52697,38460,52698,38458,52699,38467,52700,20429,52701,20421,52702,20435,52703,20402,52704,20425,52705,20427,52706,20417,52707,20436,52708,20444,52709,20441,52710,20411,52711,20403,52712,20443,52713,20423,52714,20438,52715,20410,52716,20416,52717,20409,52718,20460,52719,21060,52720,21065,52721,21184,52722,21186,52723,21309,52724,21372,52725,21399,52726,21398,52727,21401,52728,21400,52729,21690,52730,21665,52731,21677,52732,21669,52733,21711,52734,21699,52800,33549,52801,21687,52802,21678,52803,21718,52804,21686,52805,21701,52806,21702,52807,21664,52808,21616,52809,21692,52810,21666,52811,21694,52812,21618,52813,21726,52814,21680,52815,22453,52816,22430,52817,22431,52818,22436,52819,22412,52820,22423,52821,22429,52822,22427,52823,22420,52824,22424,52825,22415,52826,22425,52827,22437,52828,22426,52829,22421,52830,22772,52831,22797,52832,22867,52833,23009,52834,23006,52835,23022,52836,23040,52837,23025,52838,23005,52839,23034,52840,23037,52841,23036,52842,23030,52843,23012,52844,23026,52845,23031,52846,23003,52847,23017,52848,23027,52849,23029,52850,23008,52851,23038,52852,23028,52853,23021,52854,23464,52855,23628,52856,23760,52857,23768,52858,23756,52859,23767,52860,23755,52861,23771,52862,23774,52897,23770,52898,23753,52899,23751,52900,23754,52901,23766,52902,23763,52903,23764,52904,23759,52905,23752,52906,23750,52907,23758,52908,23775,52909,23800,52910,24057,52911,24097,52912,24098,52913,24099,52914,24096,52915,24100,52916,24240,52917,24228,52918,24226,52919,24219,52920,24227,52921,24229,52922,24327,52923,24366,52924,24406,52925,24454,52926,24631,52927,24633,52928,24660,52929,24690,52930,24670,52931,24645,52932,24659,52933,24647,52934,24649,52935,24667,52936,24652,52937,24640,52938,24642,52939,24671,52940,24612,52941,24644,52942,24664,52943,24678,52944,24686,52945,25154,52946,25155,52947,25295,52948,25357,52949,25355,52950,25333,52951,25358,52952,25347,52953,25323,52954,25337,52955,25359,52956,25356,52957,25336,52958,25334,52959,25344,52960,25363,52961,25364,52962,25338,52963,25365,52964,25339,52965,25328,52966,25921,52967,25923,52968,26026,52969,26047,52970,26166,52971,26145,52972,26162,52973,26165,52974,26140,52975,26150,52976,26146,52977,26163,52978,26155,52979,26170,52980,26141,52981,26164,52982,26169,52983,26158,52984,26383,52985,26384,52986,26561,52987,26610,52988,26568,52989,26554,52990,26588,53056,26555,53057,26616,53058,26584,53059,26560,53060,26551,53061,26565,53062,26603,53063,26596,53064,26591,53065,26549,53066,26573,53067,26547,53068,26615,53069,26614,53070,26606,53071,26595,53072,26562,53073,26553,53074,26574,53075,26599,53076,26608,53077,26546,53078,26620,53079,26566,53080,26605,53081,26572,53082,26542,53083,26598,53084,26587,53085,26618,53086,26569,53087,26570,53088,26563,53089,26602,53090,26571,53091,27432,53092,27522,53093,27524,53094,27574,53095,27606,53096,27608,53097,27616,53098,27680,53099,27681,53100,27944,53101,27956,53102,27949,53103,27935,53104,27964,53105,27967,53106,27922,53107,27914,53108,27866,53109,27955,53110,27908,53111,27929,53112,27962,53113,27930,53114,27921,53115,27904,53116,27933,53117,27970,53118,27905,53153,27928,53154,27959,53155,27907,53156,27919,53157,27968,53158,27911,53159,27936,53160,27948,53161,27912,53162,27938,53163,27913,53164,27920,53165,28855,53166,28831,53167,28862,53168,28849,53169,28848,53170,28833,53171,28852,53172,28853,53173,28841,53174,29249,53175,29257,53176,29258,53177,29292,53178,29296,53179,29299,53180,29294,53181,29386,53182,29412,53183,29416,53184,29419,53185,29407,53186,29418,53187,29414,53188,29411,53189,29573,53190,29644,53191,29634,53192,29640,53193,29637,53194,29625,53195,29622,53196,29621,53197,29620,53198,29675,53199,29631,53200,29639,53201,29630,53202,29635,53203,29638,53204,29624,53205,29643,53206,29932,53207,29934,53208,29998,53209,30023,53210,30024,53211,30119,53212,30122,53213,30329,53214,30404,53215,30472,53216,30467,53217,30468,53218,30469,53219,30474,53220,30455,53221,30459,53222,30458,53223,30695,53224,30696,53225,30726,53226,30737,53227,30738,53228,30725,53229,30736,53230,30735,53231,30734,53232,30729,53233,30723,53234,30739,53235,31050,53236,31052,53237,31051,53238,31045,53239,31044,53240,31189,53241,31181,53242,31183,53243,31190,53244,31182,53245,31360,53246,31358,53312,31441,53313,31488,53314,31489,53315,31866,53316,31864,53317,31865,53318,31871,53319,31872,53320,31873,53321,32003,53322,32008,53323,32001,53324,32600,53325,32657,53326,32653,53327,32702,53328,32775,53329,32782,53330,32783,53331,32788,53332,32823,53333,32984,53334,32967,53335,32992,53336,32977,53337,32968,53338,32962,53339,32976,53340,32965,53341,32995,53342,32985,53343,32988,53344,32970,53345,32981,53346,32969,53347,32975,53348,32983,53349,32998,53350,32973,53351,33279,53352,33313,53353,33428,53354,33497,53355,33534,53356,33529,53357,33543,53358,33512,53359,33536,53360,33493,53361,33594,53362,33515,53363,33494,53364,33524,53365,33516,53366,33505,53367,33522,53368,33525,53369,33548,53370,33531,53371,33526,53372,33520,53373,33514,53374,33508,53409,33504,53410,33530,53411,33523,53412,33517,53413,34423,53414,34420,53415,34428,53416,34419,53417,34881,53418,34894,53419,34919,53420,34922,53421,34921,53422,35283,53423,35332,53424,35335,53425,36210,53426,36835,53427,36833,53428,36846,53429,36832,53430,37105,53431,37053,53432,37055,53433,37077,53434,37061,53435,37054,53436,37063,53437,37067,53438,37064,53439,37332,53440,37331,53441,38484,53442,38479,53443,38481,53444,38483,53445,38474,53446,38478,53447,20510,53448,20485,53449,20487,53450,20499,53451,20514,53452,20528,53453,20507,53454,20469,53455,20468,53456,20531,53457,20535,53458,20524,53459,20470,53460,20471,53461,20503,53462,20508,53463,20512,53464,20519,53465,20533,53466,20527,53467,20529,53468,20494,53469,20826,53470,20884,53471,20883,53472,20938,53473,20932,53474,20933,53475,20936,53476,20942,53477,21089,53478,21082,53479,21074,53480,21086,53481,21087,53482,21077,53483,21090,53484,21197,53485,21262,53486,21406,53487,21798,53488,21730,53489,21783,53490,21778,53491,21735,53492,21747,53493,21732,53494,21786,53495,21759,53496,21764,53497,21768,53498,21739,53499,21777,53500,21765,53501,21745,53502,21770,53568,21755,53569,21751,53570,21752,53571,21728,53572,21774,53573,21763,53574,21771,53575,22273,53576,22274,53577,22476,53578,22578,53579,22485,53580,22482,53581,22458,53582,22470,53583,22461,53584,22460,53585,22456,53586,22454,53587,22463,53588,22471,53589,22480,53590,22457,53591,22465,53592,22798,53593,22858,53594,23065,53595,23062,53596,23085,53597,23086,53598,23061,53599,23055,53600,23063,53601,23050,53602,23070,53603,23091,53604,23404,53605,23463,53606,23469,53607,23468,53608,23555,53609,23638,53610,23636,53611,23788,53612,23807,53613,23790,53614,23793,53615,23799,53616,23808,53617,23801,53618,24105,53619,24104,53620,24232,53621,24238,53622,24234,53623,24236,53624,24371,53625,24368,53626,24423,53627,24669,53628,24666,53629,24679,53630,24641,53665,24738,53666,24712,53667,24704,53668,24722,53669,24705,53670,24733,53671,24707,53672,24725,53673,24731,53674,24727,53675,24711,53676,24732,53677,24718,53678,25113,53679,25158,53680,25330,53681,25360,53682,25430,53683,25388,53684,25412,53685,25413,53686,25398,53687,25411,53688,25572,53689,25401,53690,25419,53691,25418,53692,25404,53693,25385,53694,25409,53695,25396,53696,25432,53697,25428,53698,25433,53699,25389,53700,25415,53701,25395,53702,25434,53703,25425,53704,25400,53705,25431,53706,25408,53707,25416,53708,25930,53709,25926,53710,26054,53711,26051,53712,26052,53713,26050,53714,26186,53715,26207,53716,26183,53717,26193,53718,26386,53719,26387,53720,26655,53721,26650,53722,26697,53723,26674,53724,26675,53725,26683,53726,26699,53727,26703,53728,26646,53729,26673,53730,26652,53731,26677,53732,26667,53733,26669,53734,26671,53735,26702,53736,26692,53737,26676,53738,26653,53739,26642,53740,26644,53741,26662,53742,26664,53743,26670,53744,26701,53745,26682,53746,26661,53747,26656,53748,27436,53749,27439,53750,27437,53751,27441,53752,27444,53753,27501,53754,32898,53755,27528,53756,27622,53757,27620,53758,27624,53824,27619,53825,27618,53826,27623,53827,27685,53828,28026,53829,28003,53830,28004,53831,28022,53832,27917,53833,28001,53834,28050,53835,27992,53836,28002,53837,28013,53838,28015,53839,28049,53840,28045,53841,28143,53842,28031,53843,28038,53844,27998,53845,28007,53846,28e3,53847,28055,53848,28016,53849,28028,53850,27999,53851,28034,53852,28056,53853,27951,53854,28008,53855,28043,53856,28030,53857,28032,53858,28036,53859,27926,53860,28035,53861,28027,53862,28029,53863,28021,53864,28048,53865,28892,53866,28883,53867,28881,53868,28893,53869,28875,53870,32569,53871,28898,53872,28887,53873,28882,53874,28894,53875,28896,53876,28884,53877,28877,53878,28869,53879,28870,53880,28871,53881,28890,53882,28878,53883,28897,53884,29250,53885,29304,53886,29303,53921,29302,53922,29440,53923,29434,53924,29428,53925,29438,53926,29430,53927,29427,53928,29435,53929,29441,53930,29651,53931,29657,53932,29669,53933,29654,53934,29628,53935,29671,53936,29667,53937,29673,53938,29660,53939,29650,53940,29659,53941,29652,53942,29661,53943,29658,53944,29655,53945,29656,53946,29672,53947,29918,53948,29919,53949,29940,53950,29941,53951,29985,53952,30043,53953,30047,53954,30128,53955,30145,53956,30139,53957,30148,53958,30144,53959,30143,53960,30134,53961,30138,53962,30346,53963,30409,53964,30493,53965,30491,53966,30480,53967,30483,53968,30482,53969,30499,53970,30481,53971,30485,53972,30489,53973,30490,53974,30498,53975,30503,53976,30755,53977,30764,53978,30754,53979,30773,53980,30767,53981,30760,53982,30766,53983,30763,53984,30753,53985,30761,53986,30771,53987,30762,53988,30769,53989,31060,53990,31067,53991,31055,53992,31068,53993,31059,53994,31058,53995,31057,53996,31211,53997,31212,53998,31200,53999,31214,54e3,31213,54001,31210,54002,31196,54003,31198,54004,31197,54005,31366,54006,31369,54007,31365,54008,31371,54009,31372,54010,31370,54011,31367,54012,31448,54013,31504,54014,31492,54080,31507,54081,31493,54082,31503,54083,31496,54084,31498,54085,31502,54086,31497,54087,31506,54088,31876,54089,31889,54090,31882,54091,31884,54092,31880,54093,31885,54094,31877,54095,32030,54096,32029,54097,32017,54098,32014,54099,32024,54100,32022,54101,32019,54102,32031,54103,32018,54104,32015,54105,32012,54106,32604,54107,32609,54108,32606,54109,32608,54110,32605,54111,32603,54112,32662,54113,32658,54114,32707,54115,32706,54116,32704,54117,32790,54118,32830,54119,32825,54120,33018,54121,33010,54122,33017,54123,33013,54124,33025,54125,33019,54126,33024,54127,33281,54128,33327,54129,33317,54130,33587,54131,33581,54132,33604,54133,33561,54134,33617,54135,33573,54136,33622,54137,33599,54138,33601,54139,33574,54140,33564,54141,33570,54142,33602,54177,33614,54178,33563,54179,33578,54180,33544,54181,33596,54182,33613,54183,33558,54184,33572,54185,33568,54186,33591,54187,33583,54188,33577,54189,33607,54190,33605,54191,33612,54192,33619,54193,33566,54194,33580,54195,33611,54196,33575,54197,33608,54198,34387,54199,34386,54200,34466,54201,34472,54202,34454,54203,34445,54204,34449,54205,34462,54206,34439,54207,34455,54208,34438,54209,34443,54210,34458,54211,34437,54212,34469,54213,34457,54214,34465,54215,34471,54216,34453,54217,34456,54218,34446,54219,34461,54220,34448,54221,34452,54222,34883,54223,34884,54224,34925,54225,34933,54226,34934,54227,34930,54228,34944,54229,34929,54230,34943,54231,34927,54232,34947,54233,34942,54234,34932,54235,34940,54236,35346,54237,35911,54238,35927,54239,35963,54240,36004,54241,36003,54242,36214,54243,36216,54244,36277,54245,36279,54246,36278,54247,36561,54248,36563,54249,36862,54250,36853,54251,36866,54252,36863,54253,36859,54254,36868,54255,36860,54256,36854,54257,37078,54258,37088,54259,37081,54260,37082,54261,37091,54262,37087,54263,37093,54264,37080,54265,37083,54266,37079,54267,37084,54268,37092,54269,37200,54270,37198,54336,37199,54337,37333,54338,37346,54339,37338,54340,38492,54341,38495,54342,38588,54343,39139,54344,39647,54345,39727,54346,20095,54347,20592,54348,20586,54349,20577,54350,20574,54351,20576,54352,20563,54353,20555,54354,20573,54355,20594,54356,20552,54357,20557,54358,20545,54359,20571,54360,20554,54361,20578,54362,20501,54363,20549,54364,20575,54365,20585,54366,20587,54367,20579,54368,20580,54369,20550,54370,20544,54371,20590,54372,20595,54373,20567,54374,20561,54375,20944,54376,21099,54377,21101,54378,21100,54379,21102,54380,21206,54381,21203,54382,21293,54383,21404,54384,21877,54385,21878,54386,21820,54387,21837,54388,21840,54389,21812,54390,21802,54391,21841,54392,21858,54393,21814,54394,21813,54395,21808,54396,21842,54397,21829,54398,21772,54433,21810,54434,21861,54435,21838,54436,21817,54437,21832,54438,21805,54439,21819,54440,21824,54441,21835,54442,22282,54443,22279,54444,22523,54445,22548,54446,22498,54447,22518,54448,22492,54449,22516,54450,22528,54451,22509,54452,22525,54453,22536,54454,22520,54455,22539,54456,22515,54457,22479,54458,22535,54459,22510,54460,22499,54461,22514,54462,22501,54463,22508,54464,22497,54465,22542,54466,22524,54467,22544,54468,22503,54469,22529,54470,22540,54471,22513,54472,22505,54473,22512,54474,22541,54475,22532,54476,22876,54477,23136,54478,23128,54479,23125,54480,23143,54481,23134,54482,23096,54483,23093,54484,23149,54485,23120,54486,23135,54487,23141,54488,23148,54489,23123,54490,23140,54491,23127,54492,23107,54493,23133,54494,23122,54495,23108,54496,23131,54497,23112,54498,23182,54499,23102,54500,23117,54501,23097,54502,23116,54503,23152,54504,23145,54505,23111,54506,23121,54507,23126,54508,23106,54509,23132,54510,23410,54511,23406,54512,23489,54513,23488,54514,23641,54515,23838,54516,23819,54517,23837,54518,23834,54519,23840,54520,23820,54521,23848,54522,23821,54523,23846,54524,23845,54525,23823,54526,23856,54592,23826,54593,23843,54594,23839,54595,23854,54596,24126,54597,24116,54598,24241,54599,24244,54600,24249,54601,24242,54602,24243,54603,24374,54604,24376,54605,24475,54606,24470,54607,24479,54608,24714,54609,24720,54610,24710,54611,24766,54612,24752,54613,24762,54614,24787,54615,24788,54616,24783,54617,24804,54618,24793,54619,24797,54620,24776,54621,24753,54622,24795,54623,24759,54624,24778,54625,24767,54626,24771,54627,24781,54628,24768,54629,25394,54630,25445,54631,25482,54632,25474,54633,25469,54634,25533,54635,25502,54636,25517,54637,25501,54638,25495,54639,25515,54640,25486,54641,25455,54642,25479,54643,25488,54644,25454,54645,25519,54646,25461,54647,25500,54648,25453,54649,25518,54650,25468,54651,25508,54652,25403,54653,25503,54654,25464,54689,25477,54690,25473,54691,25489,54692,25485,54693,25456,54694,25939,54695,26061,54696,26213,54697,26209,54698,26203,54699,26201,54700,26204,54701,26210,54702,26392,54703,26745,54704,26759,54705,26768,54706,26780,54707,26733,54708,26734,54709,26798,54710,26795,54711,26966,54712,26735,54713,26787,54714,26796,54715,26793,54716,26741,54717,26740,54718,26802,54719,26767,54720,26743,54721,26770,54722,26748,54723,26731,54724,26738,54725,26794,54726,26752,54727,26737,54728,26750,54729,26779,54730,26774,54731,26763,54732,26784,54733,26761,54734,26788,54735,26744,54736,26747,54737,26769,54738,26764,54739,26762,54740,26749,54741,27446,54742,27443,54743,27447,54744,27448,54745,27537,54746,27535,54747,27533,54748,27534,54749,27532,54750,27690,54751,28096,54752,28075,54753,28084,54754,28083,54755,28276,54756,28076,54757,28137,54758,28130,54759,28087,54760,28150,54761,28116,54762,28160,54763,28104,54764,28128,54765,28127,54766,28118,54767,28094,54768,28133,54769,28124,54770,28125,54771,28123,54772,28148,54773,28106,54774,28093,54775,28141,54776,28144,54777,28090,54778,28117,54779,28098,54780,28111,54781,28105,54782,28112,54848,28146,54849,28115,54850,28157,54851,28119,54852,28109,54853,28131,54854,28091,54855,28922,54856,28941,54857,28919,54858,28951,54859,28916,54860,28940,54861,28912,54862,28932,54863,28915,54864,28944,54865,28924,54866,28927,54867,28934,54868,28947,54869,28928,54870,28920,54871,28918,54872,28939,54873,28930,54874,28942,54875,29310,54876,29307,54877,29308,54878,29311,54879,29469,54880,29463,54881,29447,54882,29457,54883,29464,54884,29450,54885,29448,54886,29439,54887,29455,54888,29470,54889,29576,54890,29686,54891,29688,54892,29685,54893,29700,54894,29697,54895,29693,54896,29703,54897,29696,54898,29690,54899,29692,54900,29695,54901,29708,54902,29707,54903,29684,54904,29704,54905,30052,54906,30051,54907,30158,54908,30162,54909,30159,54910,30155,54945,30156,54946,30161,54947,30160,54948,30351,54949,30345,54950,30419,54951,30521,54952,30511,54953,30509,54954,30513,54955,30514,54956,30516,54957,30515,54958,30525,54959,30501,54960,30523,54961,30517,54962,30792,54963,30802,54964,30793,54965,30797,54966,30794,54967,30796,54968,30758,54969,30789,54970,30800,54971,31076,54972,31079,54973,31081,54974,31082,54975,31075,54976,31083,54977,31073,54978,31163,54979,31226,54980,31224,54981,31222,54982,31223,54983,31375,54984,31380,54985,31376,54986,31541,54987,31559,54988,31540,54989,31525,54990,31536,54991,31522,54992,31524,54993,31539,54994,31512,54995,31530,54996,31517,54997,31537,54998,31531,54999,31533,55e3,31535,55001,31538,55002,31544,55003,31514,55004,31523,55005,31892,55006,31896,55007,31894,55008,31907,55009,32053,55010,32061,55011,32056,55012,32054,55013,32058,55014,32069,55015,32044,55016,32041,55017,32065,55018,32071,55019,32062,55020,32063,55021,32074,55022,32059,55023,32040,55024,32611,55025,32661,55026,32668,55027,32669,55028,32667,55029,32714,55030,32715,55031,32717,55032,32720,55033,32721,55034,32711,55035,32719,55036,32713,55037,32799,55038,32798,55104,32795,55105,32839,55106,32835,55107,32840,55108,33048,55109,33061,55110,33049,55111,33051,55112,33069,55113,33055,55114,33068,55115,33054,55116,33057,55117,33045,55118,33063,55119,33053,55120,33058,55121,33297,55122,33336,55123,33331,55124,33338,55125,33332,55126,33330,55127,33396,55128,33680,55129,33699,55130,33704,55131,33677,55132,33658,55133,33651,55134,33700,55135,33652,55136,33679,55137,33665,55138,33685,55139,33689,55140,33653,55141,33684,55142,33705,55143,33661,55144,33667,55145,33676,55146,33693,55147,33691,55148,33706,55149,33675,55150,33662,55151,33701,55152,33711,55153,33672,55154,33687,55155,33712,55156,33663,55157,33702,55158,33671,55159,33710,55160,33654,55161,33690,55162,34393,55163,34390,55164,34495,55165,34487,55166,34498,55201,34497,55202,34501,55203,34490,55204,34480,55205,34504,55206,34489,55207,34483,55208,34488,55209,34508,55210,34484,55211,34491,55212,34492,55213,34499,55214,34493,55215,34494,55216,34898,55217,34953,55218,34965,55219,34984,55220,34978,55221,34986,55222,34970,55223,34961,55224,34977,55225,34975,55226,34968,55227,34983,55228,34969,55229,34971,55230,34967,55231,34980,55232,34988,55233,34956,55234,34963,55235,34958,55236,35202,55237,35286,55238,35289,55239,35285,55240,35376,55241,35367,55242,35372,55243,35358,55244,35897,55245,35899,55246,35932,55247,35933,55248,35965,55249,36005,55250,36221,55251,36219,55252,36217,55253,36284,55254,36290,55255,36281,55256,36287,55257,36289,55258,36568,55259,36574,55260,36573,55261,36572,55262,36567,55263,36576,55264,36577,55265,36900,55266,36875,55267,36881,55268,36892,55269,36876,55270,36897,55271,37103,55272,37098,55273,37104,55274,37108,55275,37106,55276,37107,55277,37076,55278,37099,55279,37100,55280,37097,55281,37206,55282,37208,55283,37210,55284,37203,55285,37205,55286,37356,55287,37364,55288,37361,55289,37363,55290,37368,55291,37348,55292,37369,55293,37354,55294,37355,55360,37367,55361,37352,55362,37358,55363,38266,55364,38278,55365,38280,55366,38524,55367,38509,55368,38507,55369,38513,55370,38511,55371,38591,55372,38762,55373,38916,55374,39141,55375,39319,55376,20635,55377,20629,55378,20628,55379,20638,55380,20619,55381,20643,55382,20611,55383,20620,55384,20622,55385,20637,55386,20584,55387,20636,55388,20626,55389,20610,55390,20615,55391,20831,55392,20948,55393,21266,55394,21265,55395,21412,55396,21415,55397,21905,55398,21928,55399,21925,55400,21933,55401,21879,55402,22085,55403,21922,55404,21907,55405,21896,55406,21903,55407,21941,55408,21889,55409,21923,55410,21906,55411,21924,55412,21885,55413,21900,55414,21926,55415,21887,55416,21909,55417,21921,55418,21902,55419,22284,55420,22569,55421,22583,55422,22553,55457,22558,55458,22567,55459,22563,55460,22568,55461,22517,55462,22600,55463,22565,55464,22556,55465,22555,55466,22579,55467,22591,55468,22582,55469,22574,55470,22585,55471,22584,55472,22573,55473,22572,55474,22587,55475,22881,55476,23215,55477,23188,55478,23199,55479,23162,55480,23202,55481,23198,55482,23160,55483,23206,55484,23164,55485,23205,55486,23212,55487,23189,55488,23214,55489,23095,55490,23172,55491,23178,55492,23191,55493,23171,55494,23179,55495,23209,55496,23163,55497,23165,55498,23180,55499,23196,55500,23183,55501,23187,55502,23197,55503,23530,55504,23501,55505,23499,55506,23508,55507,23505,55508,23498,55509,23502,55510,23564,55511,23600,55512,23863,55513,23875,55514,23915,55515,23873,55516,23883,55517,23871,55518,23861,55519,23889,55520,23886,55521,23893,55522,23859,55523,23866,55524,23890,55525,23869,55526,23857,55527,23897,55528,23874,55529,23865,55530,23881,55531,23864,55532,23868,55533,23858,55534,23862,55535,23872,55536,23877,55537,24132,55538,24129,55539,24408,55540,24486,55541,24485,55542,24491,55543,24777,55544,24761,55545,24780,55546,24802,55547,24782,55548,24772,55549,24852,55550,24818,55616,24842,55617,24854,55618,24837,55619,24821,55620,24851,55621,24824,55622,24828,55623,24830,55624,24769,55625,24835,55626,24856,55627,24861,55628,24848,55629,24831,55630,24836,55631,24843,55632,25162,55633,25492,55634,25521,55635,25520,55636,25550,55637,25573,55638,25576,55639,25583,55640,25539,55641,25757,55642,25587,55643,25546,55644,25568,55645,25590,55646,25557,55647,25586,55648,25589,55649,25697,55650,25567,55651,25534,55652,25565,55653,25564,55654,25540,55655,25560,55656,25555,55657,25538,55658,25543,55659,25548,55660,25547,55661,25544,55662,25584,55663,25559,55664,25561,55665,25906,55666,25959,55667,25962,55668,25956,55669,25948,55670,25960,55671,25957,55672,25996,55673,26013,55674,26014,55675,26030,55676,26064,55677,26066,55678,26236,55713,26220,55714,26235,55715,26240,55716,26225,55717,26233,55718,26218,55719,26226,55720,26369,55721,26892,55722,26835,55723,26884,55724,26844,55725,26922,55726,26860,55727,26858,55728,26865,55729,26895,55730,26838,55731,26871,55732,26859,55733,26852,55734,26870,55735,26899,55736,26896,55737,26867,55738,26849,55739,26887,55740,26828,55741,26888,55742,26992,55743,26804,55744,26897,55745,26863,55746,26822,55747,26900,55748,26872,55749,26832,55750,26877,55751,26876,55752,26856,55753,26891,55754,26890,55755,26903,55756,26830,55757,26824,55758,26845,55759,26846,55760,26854,55761,26868,55762,26833,55763,26886,55764,26836,55765,26857,55766,26901,55767,26917,55768,26823,55769,27449,55770,27451,55771,27455,55772,27452,55773,27540,55774,27543,55775,27545,55776,27541,55777,27581,55778,27632,55779,27634,55780,27635,55781,27696,55782,28156,55783,28230,55784,28231,55785,28191,55786,28233,55787,28296,55788,28220,55789,28221,55790,28229,55791,28258,55792,28203,55793,28223,55794,28225,55795,28253,55796,28275,55797,28188,55798,28211,55799,28235,55800,28224,55801,28241,55802,28219,55803,28163,55804,28206,55805,28254,55806,28264,55872,28252,55873,28257,55874,28209,55875,28200,55876,28256,55877,28273,55878,28267,55879,28217,55880,28194,55881,28208,55882,28243,55883,28261,55884,28199,55885,28280,55886,28260,55887,28279,55888,28245,55889,28281,55890,28242,55891,28262,55892,28213,55893,28214,55894,28250,55895,28960,55896,28958,55897,28975,55898,28923,55899,28974,55900,28977,55901,28963,55902,28965,55903,28962,55904,28978,55905,28959,55906,28968,55907,28986,55908,28955,55909,29259,55910,29274,55911,29320,55912,29321,55913,29318,55914,29317,55915,29323,55916,29458,55917,29451,55918,29488,55919,29474,55920,29489,55921,29491,55922,29479,55923,29490,55924,29485,55925,29478,55926,29475,55927,29493,55928,29452,55929,29742,55930,29740,55931,29744,55932,29739,55933,29718,55934,29722,55969,29729,55970,29741,55971,29745,55972,29732,55973,29731,55974,29725,55975,29737,55976,29728,55977,29746,55978,29947,55979,29999,55980,30063,55981,30060,55982,30183,55983,30170,55984,30177,55985,30182,55986,30173,55987,30175,55988,30180,55989,30167,55990,30357,55991,30354,55992,30426,55993,30534,55994,30535,55995,30532,55996,30541,55997,30533,55998,30538,55999,30542,56e3,30539,56001,30540,56002,30686,56003,30700,56004,30816,56005,30820,56006,30821,56007,30812,56008,30829,56009,30833,56010,30826,56011,30830,56012,30832,56013,30825,56014,30824,56015,30814,56016,30818,56017,31092,56018,31091,56019,31090,56020,31088,56021,31234,56022,31242,56023,31235,56024,31244,56025,31236,56026,31385,56027,31462,56028,31460,56029,31562,56030,31547,56031,31556,56032,31560,56033,31564,56034,31566,56035,31552,56036,31576,56037,31557,56038,31906,56039,31902,56040,31912,56041,31905,56042,32088,56043,32111,56044,32099,56045,32083,56046,32086,56047,32103,56048,32106,56049,32079,56050,32109,56051,32092,56052,32107,56053,32082,56054,32084,56055,32105,56056,32081,56057,32095,56058,32078,56059,32574,56060,32575,56061,32613,56062,32614,56128,32674,56129,32672,56130,32673,56131,32727,56132,32849,56133,32847,56134,32848,56135,33022,56136,32980,56137,33091,56138,33098,56139,33106,56140,33103,56141,33095,56142,33085,56143,33101,56144,33082,56145,33254,56146,33262,56147,33271,56148,33272,56149,33273,56150,33284,56151,33340,56152,33341,56153,33343,56154,33397,56155,33595,56156,33743,56157,33785,56158,33827,56159,33728,56160,33768,56161,33810,56162,33767,56163,33764,56164,33788,56165,33782,56166,33808,56167,33734,56168,33736,56169,33771,56170,33763,56171,33727,56172,33793,56173,33757,56174,33765,56175,33752,56176,33791,56177,33761,56178,33739,56179,33742,56180,33750,56181,33781,56182,33737,56183,33801,56184,33807,56185,33758,56186,33809,56187,33798,56188,33730,56189,33779,56190,33749,56225,33786,56226,33735,56227,33745,56228,33770,56229,33811,56230,33731,56231,33772,56232,33774,56233,33732,56234,33787,56235,33751,56236,33762,56237,33819,56238,33755,56239,33790,56240,34520,56241,34530,56242,34534,56243,34515,56244,34531,56245,34522,56246,34538,56247,34525,56248,34539,56249,34524,56250,34540,56251,34537,56252,34519,56253,34536,56254,34513,56255,34888,56256,34902,56257,34901,56258,35002,56259,35031,56260,35001,56261,35e3,56262,35008,56263,35006,56264,34998,56265,35004,56266,34999,56267,35005,56268,34994,56269,35073,56270,35017,56271,35221,56272,35224,56273,35223,56274,35293,56275,35290,56276,35291,56277,35406,56278,35405,56279,35385,56280,35417,56281,35392,56282,35415,56283,35416,56284,35396,56285,35397,56286,35410,56287,35400,56288,35409,56289,35402,56290,35404,56291,35407,56292,35935,56293,35969,56294,35968,56295,36026,56296,36030,56297,36016,56298,36025,56299,36021,56300,36228,56301,36224,56302,36233,56303,36312,56304,36307,56305,36301,56306,36295,56307,36310,56308,36316,56309,36303,56310,36309,56311,36313,56312,36296,56313,36311,56314,36293,56315,36591,56316,36599,56317,36602,56318,36601,56384,36582,56385,36590,56386,36581,56387,36597,56388,36583,56389,36584,56390,36598,56391,36587,56392,36593,56393,36588,56394,36596,56395,36585,56396,36909,56397,36916,56398,36911,56399,37126,56400,37164,56401,37124,56402,37119,56403,37116,56404,37128,56405,37113,56406,37115,56407,37121,56408,37120,56409,37127,56410,37125,56411,37123,56412,37217,56413,37220,56414,37215,56415,37218,56416,37216,56417,37377,56418,37386,56419,37413,56420,37379,56421,37402,56422,37414,56423,37391,56424,37388,56425,37376,56426,37394,56427,37375,56428,37373,56429,37382,56430,37380,56431,37415,56432,37378,56433,37404,56434,37412,56435,37401,56436,37399,56437,37381,56438,37398,56439,38267,56440,38285,56441,38284,56442,38288,56443,38535,56444,38526,56445,38536,56446,38537,56481,38531,56482,38528,56483,38594,56484,38600,56485,38595,56486,38641,56487,38640,56488,38764,56489,38768,56490,38766,56491,38919,56492,39081,56493,39147,56494,40166,56495,40697,56496,20099,56497,20100,56498,20150,56499,20669,56500,20671,56501,20678,56502,20654,56503,20676,56504,20682,56505,20660,56506,20680,56507,20674,56508,20656,56509,20673,56510,20666,56511,20657,56512,20683,56513,20681,56514,20662,56515,20664,56516,20951,56517,21114,56518,21112,56519,21115,56520,21116,56521,21955,56522,21979,56523,21964,56524,21968,56525,21963,56526,21962,56527,21981,56528,21952,56529,21972,56530,21956,56531,21993,56532,21951,56533,21970,56534,21901,56535,21967,56536,21973,56537,21986,56538,21974,56539,21960,56540,22002,56541,21965,56542,21977,56543,21954,56544,22292,56545,22611,56546,22632,56547,22628,56548,22607,56549,22605,56550,22601,56551,22639,56552,22613,56553,22606,56554,22621,56555,22617,56556,22629,56557,22619,56558,22589,56559,22627,56560,22641,56561,22780,56562,23239,56563,23236,56564,23243,56565,23226,56566,23224,56567,23217,56568,23221,56569,23216,56570,23231,56571,23240,56572,23227,56573,23238,56574,23223,56640,23232,56641,23242,56642,23220,56643,23222,56644,23245,56645,23225,56646,23184,56647,23510,56648,23512,56649,23513,56650,23583,56651,23603,56652,23921,56653,23907,56654,23882,56655,23909,56656,23922,56657,23916,56658,23902,56659,23912,56660,23911,56661,23906,56662,24048,56663,24143,56664,24142,56665,24138,56666,24141,56667,24139,56668,24261,56669,24268,56670,24262,56671,24267,56672,24263,56673,24384,56674,24495,56675,24493,56676,24823,56677,24905,56678,24906,56679,24875,56680,24901,56681,24886,56682,24882,56683,24878,56684,24902,56685,24879,56686,24911,56687,24873,56688,24896,56689,25120,56690,37224,56691,25123,56692,25125,56693,25124,56694,25541,56695,25585,56696,25579,56697,25616,56698,25618,56699,25609,56700,25632,56701,25636,56702,25651,56737,25667,56738,25631,56739,25621,56740,25624,56741,25657,56742,25655,56743,25634,56744,25635,56745,25612,56746,25638,56747,25648,56748,25640,56749,25665,56750,25653,56751,25647,56752,25610,56753,25626,56754,25664,56755,25637,56756,25639,56757,25611,56758,25575,56759,25627,56760,25646,56761,25633,56762,25614,56763,25967,56764,26002,56765,26067,56766,26246,56767,26252,56768,26261,56769,26256,56770,26251,56771,26250,56772,26265,56773,26260,56774,26232,56775,26400,56776,26982,56777,26975,56778,26936,56779,26958,56780,26978,56781,26993,56782,26943,56783,26949,56784,26986,56785,26937,56786,26946,56787,26967,56788,26969,56789,27002,56790,26952,56791,26953,56792,26933,56793,26988,56794,26931,56795,26941,56796,26981,56797,26864,56798,27e3,56799,26932,56800,26985,56801,26944,56802,26991,56803,26948,56804,26998,56805,26968,56806,26945,56807,26996,56808,26956,56809,26939,56810,26955,56811,26935,56812,26972,56813,26959,56814,26961,56815,26930,56816,26962,56817,26927,56818,27003,56819,26940,56820,27462,56821,27461,56822,27459,56823,27458,56824,27464,56825,27457,56826,27547,56827,64013,56828,27643,56829,27644,56830,27641,56896,27639,56897,27640,56898,28315,56899,28374,56900,28360,56901,28303,56902,28352,56903,28319,56904,28307,56905,28308,56906,28320,56907,28337,56908,28345,56909,28358,56910,28370,56911,28349,56912,28353,56913,28318,56914,28361,56915,28343,56916,28336,56917,28365,56918,28326,56919,28367,56920,28338,56921,28350,56922,28355,56923,28380,56924,28376,56925,28313,56926,28306,56927,28302,56928,28301,56929,28324,56930,28321,56931,28351,56932,28339,56933,28368,56934,28362,56935,28311,56936,28334,56937,28323,56938,28999,56939,29012,56940,29010,56941,29027,56942,29024,56943,28993,56944,29021,56945,29026,56946,29042,56947,29048,56948,29034,56949,29025,56950,28994,56951,29016,56952,28995,56953,29003,56954,29040,56955,29023,56956,29008,56957,29011,56958,28996,56993,29005,56994,29018,56995,29263,56996,29325,56997,29324,56998,29329,56999,29328,57e3,29326,57001,29500,57002,29506,57003,29499,57004,29498,57005,29504,57006,29514,57007,29513,57008,29764,57009,29770,57010,29771,57011,29778,57012,29777,57013,29783,57014,29760,57015,29775,57016,29776,57017,29774,57018,29762,57019,29766,57020,29773,57021,29780,57022,29921,57023,29951,57024,29950,57025,29949,57026,29981,57027,30073,57028,30071,57029,27011,57030,30191,57031,30223,57032,30211,57033,30199,57034,30206,57035,30204,57036,30201,57037,30200,57038,30224,57039,30203,57040,30198,57041,30189,57042,30197,57043,30205,57044,30361,57045,30389,57046,30429,57047,30549,57048,30559,57049,30560,57050,30546,57051,30550,57052,30554,57053,30569,57054,30567,57055,30548,57056,30553,57057,30573,57058,30688,57059,30855,57060,30874,57061,30868,57062,30863,57063,30852,57064,30869,57065,30853,57066,30854,57067,30881,57068,30851,57069,30841,57070,30873,57071,30848,57072,30870,57073,30843,57074,31100,57075,31106,57076,31101,57077,31097,57078,31249,57079,31256,57080,31257,57081,31250,57082,31255,57083,31253,57084,31266,57085,31251,57086,31259,57152,31248,57153,31395,57154,31394,57155,31390,57156,31467,57157,31590,57158,31588,57159,31597,57160,31604,57161,31593,57162,31602,57163,31589,57164,31603,57165,31601,57166,31600,57167,31585,57168,31608,57169,31606,57170,31587,57171,31922,57172,31924,57173,31919,57174,32136,57175,32134,57176,32128,57177,32141,57178,32127,57179,32133,57180,32122,57181,32142,57182,32123,57183,32131,57184,32124,57185,32140,57186,32148,57187,32132,57188,32125,57189,32146,57190,32621,57191,32619,57192,32615,57193,32616,57194,32620,57195,32678,57196,32677,57197,32679,57198,32731,57199,32732,57200,32801,57201,33124,57202,33120,57203,33143,57204,33116,57205,33129,57206,33115,57207,33122,57208,33138,57209,26401,57210,33118,57211,33142,57212,33127,57213,33135,57214,33092,57249,33121,57250,33309,57251,33353,57252,33348,57253,33344,57254,33346,57255,33349,57256,34033,57257,33855,57258,33878,57259,33910,57260,33913,57261,33935,57262,33933,57263,33893,57264,33873,57265,33856,57266,33926,57267,33895,57268,33840,57269,33869,57270,33917,57271,33882,57272,33881,57273,33908,57274,33907,57275,33885,57276,34055,57277,33886,57278,33847,57279,33850,57280,33844,57281,33914,57282,33859,57283,33912,57284,33842,57285,33861,57286,33833,57287,33753,57288,33867,57289,33839,57290,33858,57291,33837,57292,33887,57293,33904,57294,33849,57295,33870,57296,33868,57297,33874,57298,33903,57299,33989,57300,33934,57301,33851,57302,33863,57303,33846,57304,33843,57305,33896,57306,33918,57307,33860,57308,33835,57309,33888,57310,33876,57311,33902,57312,33872,57313,34571,57314,34564,57315,34551,57316,34572,57317,34554,57318,34518,57319,34549,57320,34637,57321,34552,57322,34574,57323,34569,57324,34561,57325,34550,57326,34573,57327,34565,57328,35030,57329,35019,57330,35021,57331,35022,57332,35038,57333,35035,57334,35034,57335,35020,57336,35024,57337,35205,57338,35227,57339,35295,57340,35301,57341,35300,57342,35297,57408,35296,57409,35298,57410,35292,57411,35302,57412,35446,57413,35462,57414,35455,57415,35425,57416,35391,57417,35447,57418,35458,57419,35460,57420,35445,57421,35459,57422,35457,57423,35444,57424,35450,57425,35900,57426,35915,57427,35914,57428,35941,57429,35940,57430,35942,57431,35974,57432,35972,57433,35973,57434,36044,57435,36200,57436,36201,57437,36241,57438,36236,57439,36238,57440,36239,57441,36237,57442,36243,57443,36244,57444,36240,57445,36242,57446,36336,57447,36320,57448,36332,57449,36337,57450,36334,57451,36304,57452,36329,57453,36323,57454,36322,57455,36327,57456,36338,57457,36331,57458,36340,57459,36614,57460,36607,57461,36609,57462,36608,57463,36613,57464,36615,57465,36616,57466,36610,57467,36619,57468,36946,57469,36927,57470,36932,57505,36937,57506,36925,57507,37136,57508,37133,57509,37135,57510,37137,57511,37142,57512,37140,57513,37131,57514,37134,57515,37230,57516,37231,57517,37448,57518,37458,57519,37424,57520,37434,57521,37478,57522,37427,57523,37477,57524,37470,57525,37507,57526,37422,57527,37450,57528,37446,57529,37485,57530,37484,57531,37455,57532,37472,57533,37479,57534,37487,57535,37430,57536,37473,57537,37488,57538,37425,57539,37460,57540,37475,57541,37456,57542,37490,57543,37454,57544,37459,57545,37452,57546,37462,57547,37426,57548,38303,57549,38300,57550,38302,57551,38299,57552,38546,57553,38547,57554,38545,57555,38551,57556,38606,57557,38650,57558,38653,57559,38648,57560,38645,57561,38771,57562,38775,57563,38776,57564,38770,57565,38927,57566,38925,57567,38926,57568,39084,57569,39158,57570,39161,57571,39343,57572,39346,57573,39344,57574,39349,57575,39597,57576,39595,57577,39771,57578,40170,57579,40173,57580,40167,57581,40576,57582,40701,57583,20710,57584,20692,57585,20695,57586,20712,57587,20723,57588,20699,57589,20714,57590,20701,57591,20708,57592,20691,57593,20716,57594,20720,57595,20719,57596,20707,57597,20704,57598,20952,57664,21120,57665,21121,57666,21225,57667,21227,57668,21296,57669,21420,57670,22055,57671,22037,57672,22028,57673,22034,57674,22012,57675,22031,57676,22044,57677,22017,57678,22035,57679,22018,57680,22010,57681,22045,57682,22020,57683,22015,57684,22009,57685,22665,57686,22652,57687,22672,57688,22680,57689,22662,57690,22657,57691,22655,57692,22644,57693,22667,57694,22650,57695,22663,57696,22673,57697,22670,57698,22646,57699,22658,57700,22664,57701,22651,57702,22676,57703,22671,57704,22782,57705,22891,57706,23260,57707,23278,57708,23269,57709,23253,57710,23274,57711,23258,57712,23277,57713,23275,57714,23283,57715,23266,57716,23264,57717,23259,57718,23276,57719,23262,57720,23261,57721,23257,57722,23272,57723,23263,57724,23415,57725,23520,57726,23523,57761,23651,57762,23938,57763,23936,57764,23933,57765,23942,57766,23930,57767,23937,57768,23927,57769,23946,57770,23945,57771,23944,57772,23934,57773,23932,57774,23949,57775,23929,57776,23935,57777,24152,57778,24153,57779,24147,57780,24280,57781,24273,57782,24279,57783,24270,57784,24284,57785,24277,57786,24281,57787,24274,57788,24276,57789,24388,57790,24387,57791,24431,57792,24502,57793,24876,57794,24872,57795,24897,57796,24926,57797,24945,57798,24947,57799,24914,57800,24915,57801,24946,57802,24940,57803,24960,57804,24948,57805,24916,57806,24954,57807,24923,57808,24933,57809,24891,57810,24938,57811,24929,57812,24918,57813,25129,57814,25127,57815,25131,57816,25643,57817,25677,57818,25691,57819,25693,57820,25716,57821,25718,57822,25714,57823,25715,57824,25725,57825,25717,57826,25702,57827,25766,57828,25678,57829,25730,57830,25694,57831,25692,57832,25675,57833,25683,57834,25696,57835,25680,57836,25727,57837,25663,57838,25708,57839,25707,57840,25689,57841,25701,57842,25719,57843,25971,57844,26016,57845,26273,57846,26272,57847,26271,57848,26373,57849,26372,57850,26402,57851,27057,57852,27062,57853,27081,57854,27040,57920,27086,57921,27030,57922,27056,57923,27052,57924,27068,57925,27025,57926,27033,57927,27022,57928,27047,57929,27021,57930,27049,57931,27070,57932,27055,57933,27071,57934,27076,57935,27069,57936,27044,57937,27092,57938,27065,57939,27082,57940,27034,57941,27087,57942,27059,57943,27027,57944,27050,57945,27041,57946,27038,57947,27097,57948,27031,57949,27024,57950,27074,57951,27061,57952,27045,57953,27078,57954,27466,57955,27469,57956,27467,57957,27550,57958,27551,57959,27552,57960,27587,57961,27588,57962,27646,57963,28366,57964,28405,57965,28401,57966,28419,57967,28453,57968,28408,57969,28471,57970,28411,57971,28462,57972,28425,57973,28494,57974,28441,57975,28442,57976,28455,57977,28440,57978,28475,57979,28434,57980,28397,57981,28426,57982,28470,58017,28531,58018,28409,58019,28398,58020,28461,58021,28480,58022,28464,58023,28476,58024,28469,58025,28395,58026,28423,58027,28430,58028,28483,58029,28421,58030,28413,58031,28406,58032,28473,58033,28444,58034,28412,58035,28474,58036,28447,58037,28429,58038,28446,58039,28424,58040,28449,58041,29063,58042,29072,58043,29065,58044,29056,58045,29061,58046,29058,58047,29071,58048,29051,58049,29062,58050,29057,58051,29079,58052,29252,58053,29267,58054,29335,58055,29333,58056,29331,58057,29507,58058,29517,58059,29521,58060,29516,58061,29794,58062,29811,58063,29809,58064,29813,58065,29810,58066,29799,58067,29806,58068,29952,58069,29954,58070,29955,58071,30077,58072,30096,58073,30230,58074,30216,58075,30220,58076,30229,58077,30225,58078,30218,58079,30228,58080,30392,58081,30593,58082,30588,58083,30597,58084,30594,58085,30574,58086,30592,58087,30575,58088,30590,58089,30595,58090,30898,58091,30890,58092,30900,58093,30893,58094,30888,58095,30846,58096,30891,58097,30878,58098,30885,58099,30880,58100,30892,58101,30882,58102,30884,58103,31128,58104,31114,58105,31115,58106,31126,58107,31125,58108,31124,58109,31123,58110,31127,58176,31112,58177,31122,58178,31120,58179,31275,58180,31306,58181,31280,58182,31279,58183,31272,58184,31270,58185,31400,58186,31403,58187,31404,58188,31470,58189,31624,58190,31644,58191,31626,58192,31633,58193,31632,58194,31638,58195,31629,58196,31628,58197,31643,58198,31630,58199,31621,58200,31640,58201,21124,58202,31641,58203,31652,58204,31618,58205,31931,58206,31935,58207,31932,58208,31930,58209,32167,58210,32183,58211,32194,58212,32163,58213,32170,58214,32193,58215,32192,58216,32197,58217,32157,58218,32206,58219,32196,58220,32198,58221,32203,58222,32204,58223,32175,58224,32185,58225,32150,58226,32188,58227,32159,58228,32166,58229,32174,58230,32169,58231,32161,58232,32201,58233,32627,58234,32738,58235,32739,58236,32741,58237,32734,58238,32804,58273,32861,58274,32860,58275,33161,58276,33158,58277,33155,58278,33159,58279,33165,58280,33164,58281,33163,58282,33301,58283,33943,58284,33956,58285,33953,58286,33951,58287,33978,58288,33998,58289,33986,58290,33964,58291,33966,58292,33963,58293,33977,58294,33972,58295,33985,58296,33997,58297,33962,58298,33946,58299,33969,58300,34e3,58301,33949,58302,33959,58303,33979,58304,33954,58305,33940,58306,33991,58307,33996,58308,33947,58309,33961,58310,33967,58311,33960,58312,34006,58313,33944,58314,33974,58315,33999,58316,33952,58317,34007,58318,34004,58319,34002,58320,34011,58321,33968,58322,33937,58323,34401,58324,34611,58325,34595,58326,34600,58327,34667,58328,34624,58329,34606,58330,34590,58331,34593,58332,34585,58333,34587,58334,34627,58335,34604,58336,34625,58337,34622,58338,34630,58339,34592,58340,34610,58341,34602,58342,34605,58343,34620,58344,34578,58345,34618,58346,34609,58347,34613,58348,34626,58349,34598,58350,34599,58351,34616,58352,34596,58353,34586,58354,34608,58355,34577,58356,35063,58357,35047,58358,35057,58359,35058,58360,35066,58361,35070,58362,35054,58363,35068,58364,35062,58365,35067,58366,35056,58432,35052,58433,35051,58434,35229,58435,35233,58436,35231,58437,35230,58438,35305,58439,35307,58440,35304,58441,35499,58442,35481,58443,35467,58444,35474,58445,35471,58446,35478,58447,35901,58448,35944,58449,35945,58450,36053,58451,36047,58452,36055,58453,36246,58454,36361,58455,36354,58456,36351,58457,36365,58458,36349,58459,36362,58460,36355,58461,36359,58462,36358,58463,36357,58464,36350,58465,36352,58466,36356,58467,36624,58468,36625,58469,36622,58470,36621,58471,37155,58472,37148,58473,37152,58474,37154,58475,37151,58476,37149,58477,37146,58478,37156,58479,37153,58480,37147,58481,37242,58482,37234,58483,37241,58484,37235,58485,37541,58486,37540,58487,37494,58488,37531,58489,37498,58490,37536,58491,37524,58492,37546,58493,37517,58494,37542,58529,37530,58530,37547,58531,37497,58532,37527,58533,37503,58534,37539,58535,37614,58536,37518,58537,37506,58538,37525,58539,37538,58540,37501,58541,37512,58542,37537,58543,37514,58544,37510,58545,37516,58546,37529,58547,37543,58548,37502,58549,37511,58550,37545,58551,37533,58552,37515,58553,37421,58554,38558,58555,38561,58556,38655,58557,38744,58558,38781,58559,38778,58560,38782,58561,38787,58562,38784,58563,38786,58564,38779,58565,38788,58566,38785,58567,38783,58568,38862,58569,38861,58570,38934,58571,39085,58572,39086,58573,39170,58574,39168,58575,39175,58576,39325,58577,39324,58578,39363,58579,39353,58580,39355,58581,39354,58582,39362,58583,39357,58584,39367,58585,39601,58586,39651,58587,39655,58588,39742,58589,39743,58590,39776,58591,39777,58592,39775,58593,40177,58594,40178,58595,40181,58596,40615,58597,20735,58598,20739,58599,20784,58600,20728,58601,20742,58602,20743,58603,20726,58604,20734,58605,20747,58606,20748,58607,20733,58608,20746,58609,21131,58610,21132,58611,21233,58612,21231,58613,22088,58614,22082,58615,22092,58616,22069,58617,22081,58618,22090,58619,22089,58620,22086,58621,22104,58622,22106,58688,22080,58689,22067,58690,22077,58691,22060,58692,22078,58693,22072,58694,22058,58695,22074,58696,22298,58697,22699,58698,22685,58699,22705,58700,22688,58701,22691,58702,22703,58703,22700,58704,22693,58705,22689,58706,22783,58707,23295,58708,23284,58709,23293,58710,23287,58711,23286,58712,23299,58713,23288,58714,23298,58715,23289,58716,23297,58717,23303,58718,23301,58719,23311,58720,23655,58721,23961,58722,23959,58723,23967,58724,23954,58725,23970,58726,23955,58727,23957,58728,23968,58729,23964,58730,23969,58731,23962,58732,23966,58733,24169,58734,24157,58735,24160,58736,24156,58737,32243,58738,24283,58739,24286,58740,24289,58741,24393,58742,24498,58743,24971,58744,24963,58745,24953,58746,25009,58747,25008,58748,24994,58749,24969,58750,24987,58785,24979,58786,25007,58787,25005,58788,24991,58789,24978,58790,25002,58791,24993,58792,24973,58793,24934,58794,25011,58795,25133,58796,25710,58797,25712,58798,25750,58799,25760,58800,25733,58801,25751,58802,25756,58803,25743,58804,25739,58805,25738,58806,25740,58807,25763,58808,25759,58809,25704,58810,25777,58811,25752,58812,25974,58813,25978,58814,25977,58815,25979,58816,26034,58817,26035,58818,26293,58819,26288,58820,26281,58821,26290,58822,26295,58823,26282,58824,26287,58825,27136,58826,27142,58827,27159,58828,27109,58829,27128,58830,27157,58831,27121,58832,27108,58833,27168,58834,27135,58835,27116,58836,27106,58837,27163,58838,27165,58839,27134,58840,27175,58841,27122,58842,27118,58843,27156,58844,27127,58845,27111,58846,27200,58847,27144,58848,27110,58849,27131,58850,27149,58851,27132,58852,27115,58853,27145,58854,27140,58855,27160,58856,27173,58857,27151,58858,27126,58859,27174,58860,27143,58861,27124,58862,27158,58863,27473,58864,27557,58865,27555,58866,27554,58867,27558,58868,27649,58869,27648,58870,27647,58871,27650,58872,28481,58873,28454,58874,28542,58875,28551,58876,28614,58877,28562,58878,28557,58944,28553,58945,28556,58946,28514,58947,28495,58948,28549,58949,28506,58950,28566,58951,28534,58952,28524,58953,28546,58954,28501,58955,28530,58956,28498,58957,28496,58958,28503,58959,28564,58960,28563,58961,28509,58962,28416,58963,28513,58964,28523,58965,28541,58966,28519,58967,28560,58968,28499,58969,28555,58970,28521,58971,28543,58972,28565,58973,28515,58974,28535,58975,28522,58976,28539,58977,29106,58978,29103,58979,29083,58980,29104,58981,29088,58982,29082,58983,29097,58984,29109,58985,29085,58986,29093,58987,29086,58988,29092,58989,29089,58990,29098,58991,29084,58992,29095,58993,29107,58994,29336,58995,29338,58996,29528,58997,29522,58998,29534,58999,29535,59e3,29536,59001,29533,59002,29531,59003,29537,59004,29530,59005,29529,59006,29538,59041,29831,59042,29833,59043,29834,59044,29830,59045,29825,59046,29821,59047,29829,59048,29832,59049,29820,59050,29817,59051,29960,59052,29959,59053,30078,59054,30245,59055,30238,59056,30233,59057,30237,59058,30236,59059,30243,59060,30234,59061,30248,59062,30235,59063,30364,59064,30365,59065,30366,59066,30363,59067,30605,59068,30607,59069,30601,59070,30600,59071,30925,59072,30907,59073,30927,59074,30924,59075,30929,59076,30926,59077,30932,59078,30920,59079,30915,59080,30916,59081,30921,59082,31130,59083,31137,59084,31136,59085,31132,59086,31138,59087,31131,59088,27510,59089,31289,59090,31410,59091,31412,59092,31411,59093,31671,59094,31691,59095,31678,59096,31660,59097,31694,59098,31663,59099,31673,59100,31690,59101,31669,59102,31941,59103,31944,59104,31948,59105,31947,59106,32247,59107,32219,59108,32234,59109,32231,59110,32215,59111,32225,59112,32259,59113,32250,59114,32230,59115,32246,59116,32241,59117,32240,59118,32238,59119,32223,59120,32630,59121,32684,59122,32688,59123,32685,59124,32749,59125,32747,59126,32746,59127,32748,59128,32742,59129,32744,59130,32868,59131,32871,59132,33187,59133,33183,59134,33182,59200,33173,59201,33186,59202,33177,59203,33175,59204,33302,59205,33359,59206,33363,59207,33362,59208,33360,59209,33358,59210,33361,59211,34084,59212,34107,59213,34063,59214,34048,59215,34089,59216,34062,59217,34057,59218,34061,59219,34079,59220,34058,59221,34087,59222,34076,59223,34043,59224,34091,59225,34042,59226,34056,59227,34060,59228,34036,59229,34090,59230,34034,59231,34069,59232,34039,59233,34027,59234,34035,59235,34044,59236,34066,59237,34026,59238,34025,59239,34070,59240,34046,59241,34088,59242,34077,59243,34094,59244,34050,59245,34045,59246,34078,59247,34038,59248,34097,59249,34086,59250,34023,59251,34024,59252,34032,59253,34031,59254,34041,59255,34072,59256,34080,59257,34096,59258,34059,59259,34073,59260,34095,59261,34402,59262,34646,59297,34659,59298,34660,59299,34679,59300,34785,59301,34675,59302,34648,59303,34644,59304,34651,59305,34642,59306,34657,59307,34650,59308,34641,59309,34654,59310,34669,59311,34666,59312,34640,59313,34638,59314,34655,59315,34653,59316,34671,59317,34668,59318,34682,59319,34670,59320,34652,59321,34661,59322,34639,59323,34683,59324,34677,59325,34658,59326,34663,59327,34665,59328,34906,59329,35077,59330,35084,59331,35092,59332,35083,59333,35095,59334,35096,59335,35097,59336,35078,59337,35094,59338,35089,59339,35086,59340,35081,59341,35234,59342,35236,59343,35235,59344,35309,59345,35312,59346,35308,59347,35535,59348,35526,59349,35512,59350,35539,59351,35537,59352,35540,59353,35541,59354,35515,59355,35543,59356,35518,59357,35520,59358,35525,59359,35544,59360,35523,59361,35514,59362,35517,59363,35545,59364,35902,59365,35917,59366,35983,59367,36069,59368,36063,59369,36057,59370,36072,59371,36058,59372,36061,59373,36071,59374,36256,59375,36252,59376,36257,59377,36251,59378,36384,59379,36387,59380,36389,59381,36388,59382,36398,59383,36373,59384,36379,59385,36374,59386,36369,59387,36377,59388,36390,59389,36391,59390,36372,59456,36370,59457,36376,59458,36371,59459,36380,59460,36375,59461,36378,59462,36652,59463,36644,59464,36632,59465,36634,59466,36640,59467,36643,59468,36630,59469,36631,59470,36979,59471,36976,59472,36975,59473,36967,59474,36971,59475,37167,59476,37163,59477,37161,59478,37162,59479,37170,59480,37158,59481,37166,59482,37253,59483,37254,59484,37258,59485,37249,59486,37250,59487,37252,59488,37248,59489,37584,59490,37571,59491,37572,59492,37568,59493,37593,59494,37558,59495,37583,59496,37617,59497,37599,59498,37592,59499,37609,59500,37591,59501,37597,59502,37580,59503,37615,59504,37570,59505,37608,59506,37578,59507,37576,59508,37582,59509,37606,59510,37581,59511,37589,59512,37577,59513,37600,59514,37598,59515,37607,59516,37585,59517,37587,59518,37557,59553,37601,59554,37574,59555,37556,59556,38268,59557,38316,59558,38315,59559,38318,59560,38320,59561,38564,59562,38562,59563,38611,59564,38661,59565,38664,59566,38658,59567,38746,59568,38794,59569,38798,59570,38792,59571,38864,59572,38863,59573,38942,59574,38941,59575,38950,59576,38953,59577,38952,59578,38944,59579,38939,59580,38951,59581,39090,59582,39176,59583,39162,59584,39185,59585,39188,59586,39190,59587,39191,59588,39189,59589,39388,59590,39373,59591,39375,59592,39379,59593,39380,59594,39374,59595,39369,59596,39382,59597,39384,59598,39371,59599,39383,59600,39372,59601,39603,59602,39660,59603,39659,59604,39667,59605,39666,59606,39665,59607,39750,59608,39747,59609,39783,59610,39796,59611,39793,59612,39782,59613,39798,59614,39797,59615,39792,59616,39784,59617,39780,59618,39788,59619,40188,59620,40186,59621,40189,59622,40191,59623,40183,59624,40199,59625,40192,59626,40185,59627,40187,59628,40200,59629,40197,59630,40196,59631,40579,59632,40659,59633,40719,59634,40720,59635,20764,59636,20755,59637,20759,59638,20762,59639,20753,59640,20958,59641,21300,59642,21473,59643,22128,59644,22112,59645,22126,59646,22131,59712,22118,59713,22115,59714,22125,59715,22130,59716,22110,59717,22135,59718,22300,59719,22299,59720,22728,59721,22717,59722,22729,59723,22719,59724,22714,59725,22722,59726,22716,59727,22726,59728,23319,59729,23321,59730,23323,59731,23329,59732,23316,59733,23315,59734,23312,59735,23318,59736,23336,59737,23322,59738,23328,59739,23326,59740,23535,59741,23980,59742,23985,59743,23977,59744,23975,59745,23989,59746,23984,59747,23982,59748,23978,59749,23976,59750,23986,59751,23981,59752,23983,59753,23988,59754,24167,59755,24168,59756,24166,59757,24175,59758,24297,59759,24295,59760,24294,59761,24296,59762,24293,59763,24395,59764,24508,59765,24989,59766,25e3,59767,24982,59768,25029,59769,25012,59770,25030,59771,25025,59772,25036,59773,25018,59774,25023,59809,25016,59810,24972,59811,25815,59812,25814,59813,25808,59814,25807,59815,25801,59816,25789,59817,25737,59818,25795,59819,25819,59820,25843,59821,25817,59822,25907,59823,25983,59824,25980,59825,26018,59826,26312,59827,26302,59828,26304,59829,26314,59830,26315,59831,26319,59832,26301,59833,26299,59834,26298,59835,26316,59836,26403,59837,27188,59838,27238,59839,27209,59840,27239,59841,27186,59842,27240,59843,27198,59844,27229,59845,27245,59846,27254,59847,27227,59848,27217,59849,27176,59850,27226,59851,27195,59852,27199,59853,27201,59854,27242,59855,27236,59856,27216,59857,27215,59858,27220,59859,27247,59860,27241,59861,27232,59862,27196,59863,27230,59864,27222,59865,27221,59866,27213,59867,27214,59868,27206,59869,27477,59870,27476,59871,27478,59872,27559,59873,27562,59874,27563,59875,27592,59876,27591,59877,27652,59878,27651,59879,27654,59880,28589,59881,28619,59882,28579,59883,28615,59884,28604,59885,28622,59886,28616,59887,28510,59888,28612,59889,28605,59890,28574,59891,28618,59892,28584,59893,28676,59894,28581,59895,28590,59896,28602,59897,28588,59898,28586,59899,28623,59900,28607,59901,28600,59902,28578,59968,28617,59969,28587,59970,28621,59971,28591,59972,28594,59973,28592,59974,29125,59975,29122,59976,29119,59977,29112,59978,29142,59979,29120,59980,29121,59981,29131,59982,29140,59983,29130,59984,29127,59985,29135,59986,29117,59987,29144,59988,29116,59989,29126,59990,29146,59991,29147,59992,29341,59993,29342,59994,29545,59995,29542,59996,29543,59997,29548,59998,29541,59999,29547,6e4,29546,60001,29823,60002,29850,60003,29856,60004,29844,60005,29842,60006,29845,60007,29857,60008,29963,60009,30080,60010,30255,60011,30253,60012,30257,60013,30269,60014,30259,60015,30268,60016,30261,60017,30258,60018,30256,60019,30395,60020,30438,60021,30618,60022,30621,60023,30625,60024,30620,60025,30619,60026,30626,60027,30627,60028,30613,60029,30617,60030,30615,60065,30941,60066,30953,60067,30949,60068,30954,60069,30942,60070,30947,60071,30939,60072,30945,60073,30946,60074,30957,60075,30943,60076,30944,60077,31140,60078,31300,60079,31304,60080,31303,60081,31414,60082,31416,60083,31413,60084,31409,60085,31415,60086,31710,60087,31715,60088,31719,60089,31709,60090,31701,60091,31717,60092,31706,60093,31720,60094,31737,60095,31700,60096,31722,60097,31714,60098,31708,60099,31723,60100,31704,60101,31711,60102,31954,60103,31956,60104,31959,60105,31952,60106,31953,60107,32274,60108,32289,60109,32279,60110,32268,60111,32287,60112,32288,60113,32275,60114,32270,60115,32284,60116,32277,60117,32282,60118,32290,60119,32267,60120,32271,60121,32278,60122,32269,60123,32276,60124,32293,60125,32292,60126,32579,60127,32635,60128,32636,60129,32634,60130,32689,60131,32751,60132,32810,60133,32809,60134,32876,60135,33201,60136,33190,60137,33198,60138,33209,60139,33205,60140,33195,60141,33200,60142,33196,60143,33204,60144,33202,60145,33207,60146,33191,60147,33266,60148,33365,60149,33366,60150,33367,60151,34134,60152,34117,60153,34155,60154,34125,60155,34131,60156,34145,60157,34136,60158,34112,60224,34118,60225,34148,60226,34113,60227,34146,60228,34116,60229,34129,60230,34119,60231,34147,60232,34110,60233,34139,60234,34161,60235,34126,60236,34158,60237,34165,60238,34133,60239,34151,60240,34144,60241,34188,60242,34150,60243,34141,60244,34132,60245,34149,60246,34156,60247,34403,60248,34405,60249,34404,60250,34715,60251,34703,60252,34711,60253,34707,60254,34706,60255,34696,60256,34689,60257,34710,60258,34712,60259,34681,60260,34695,60261,34723,60262,34693,60263,34704,60264,34705,60265,34717,60266,34692,60267,34708,60268,34716,60269,34714,60270,34697,60271,35102,60272,35110,60273,35120,60274,35117,60275,35118,60276,35111,60277,35121,60278,35106,60279,35113,60280,35107,60281,35119,60282,35116,60283,35103,60284,35313,60285,35552,60286,35554,60321,35570,60322,35572,60323,35573,60324,35549,60325,35604,60326,35556,60327,35551,60328,35568,60329,35528,60330,35550,60331,35553,60332,35560,60333,35583,60334,35567,60335,35579,60336,35985,60337,35986,60338,35984,60339,36085,60340,36078,60341,36081,60342,36080,60343,36083,60344,36204,60345,36206,60346,36261,60347,36263,60348,36403,60349,36414,60350,36408,60351,36416,60352,36421,60353,36406,60354,36412,60355,36413,60356,36417,60357,36400,60358,36415,60359,36541,60360,36662,60361,36654,60362,36661,60363,36658,60364,36665,60365,36663,60366,36660,60367,36982,60368,36985,60369,36987,60370,36998,60371,37114,60372,37171,60373,37173,60374,37174,60375,37267,60376,37264,60377,37265,60378,37261,60379,37263,60380,37671,60381,37662,60382,37640,60383,37663,60384,37638,60385,37647,60386,37754,60387,37688,60388,37692,60389,37659,60390,37667,60391,37650,60392,37633,60393,37702,60394,37677,60395,37646,60396,37645,60397,37579,60398,37661,60399,37626,60400,37669,60401,37651,60402,37625,60403,37623,60404,37684,60405,37634,60406,37668,60407,37631,60408,37673,60409,37689,60410,37685,60411,37674,60412,37652,60413,37644,60414,37643,60480,37630,60481,37641,60482,37632,60483,37627,60484,37654,60485,38332,60486,38349,60487,38334,60488,38329,60489,38330,60490,38326,60491,38335,60492,38325,60493,38333,60494,38569,60495,38612,60496,38667,60497,38674,60498,38672,60499,38809,60500,38807,60501,38804,60502,38896,60503,38904,60504,38965,60505,38959,60506,38962,60507,39204,60508,39199,60509,39207,60510,39209,60511,39326,60512,39406,60513,39404,60514,39397,60515,39396,60516,39408,60517,39395,60518,39402,60519,39401,60520,39399,60521,39609,60522,39615,60523,39604,60524,39611,60525,39670,60526,39674,60527,39673,60528,39671,60529,39731,60530,39808,60531,39813,60532,39815,60533,39804,60534,39806,60535,39803,60536,39810,60537,39827,60538,39826,60539,39824,60540,39802,60541,39829,60542,39805,60577,39816,60578,40229,60579,40215,60580,40224,60581,40222,60582,40212,60583,40233,60584,40221,60585,40216,60586,40226,60587,40208,60588,40217,60589,40223,60590,40584,60591,40582,60592,40583,60593,40622,60594,40621,60595,40661,60596,40662,60597,40698,60598,40722,60599,40765,60600,20774,60601,20773,60602,20770,60603,20772,60604,20768,60605,20777,60606,21236,60607,22163,60608,22156,60609,22157,60610,22150,60611,22148,60612,22147,60613,22142,60614,22146,60615,22143,60616,22145,60617,22742,60618,22740,60619,22735,60620,22738,60621,23341,60622,23333,60623,23346,60624,23331,60625,23340,60626,23335,60627,23334,60628,23343,60629,23342,60630,23419,60631,23537,60632,23538,60633,23991,60634,24172,60635,24170,60636,24510,60637,24507,60638,25027,60639,25013,60640,25020,60641,25063,60642,25056,60643,25061,60644,25060,60645,25064,60646,25054,60647,25839,60648,25833,60649,25827,60650,25835,60651,25828,60652,25832,60653,25985,60654,25984,60655,26038,60656,26074,60657,26322,60658,27277,60659,27286,60660,27265,60661,27301,60662,27273,60663,27295,60664,27291,60665,27297,60666,27294,60667,27271,60668,27283,60669,27278,60670,27285,60736,27267,60737,27304,60738,27300,60739,27281,60740,27263,60741,27302,60742,27290,60743,27269,60744,27276,60745,27282,60746,27483,60747,27565,60748,27657,60749,28620,60750,28585,60751,28660,60752,28628,60753,28643,60754,28636,60755,28653,60756,28647,60757,28646,60758,28638,60759,28658,60760,28637,60761,28642,60762,28648,60763,29153,60764,29169,60765,29160,60766,29170,60767,29156,60768,29168,60769,29154,60770,29555,60771,29550,60772,29551,60773,29847,60774,29874,60775,29867,60776,29840,60777,29866,60778,29869,60779,29873,60780,29861,60781,29871,60782,29968,60783,29969,60784,29970,60785,29967,60786,30084,60787,30275,60788,30280,60789,30281,60790,30279,60791,30372,60792,30441,60793,30645,60794,30635,60795,30642,60796,30647,60797,30646,60798,30644,60833,30641,60834,30632,60835,30704,60836,30963,60837,30973,60838,30978,60839,30971,60840,30972,60841,30962,60842,30981,60843,30969,60844,30974,60845,30980,60846,31147,60847,31144,60848,31324,60849,31323,60850,31318,60851,31320,60852,31316,60853,31322,60854,31422,60855,31424,60856,31425,60857,31749,60858,31759,60859,31730,60860,31744,60861,31743,60862,31739,60863,31758,60864,31732,60865,31755,60866,31731,60867,31746,60868,31753,60869,31747,60870,31745,60871,31736,60872,31741,60873,31750,60874,31728,60875,31729,60876,31760,60877,31754,60878,31976,60879,32301,60880,32316,60881,32322,60882,32307,60883,38984,60884,32312,60885,32298,60886,32329,60887,32320,60888,32327,60889,32297,60890,32332,60891,32304,60892,32315,60893,32310,60894,32324,60895,32314,60896,32581,60897,32639,60898,32638,60899,32637,60900,32756,60901,32754,60902,32812,60903,33211,60904,33220,60905,33228,60906,33226,60907,33221,60908,33223,60909,33212,60910,33257,60911,33371,60912,33370,60913,33372,60914,34179,60915,34176,60916,34191,60917,34215,60918,34197,60919,34208,60920,34187,60921,34211,60922,34171,60923,34212,60924,34202,60925,34206,60926,34167,60992,34172,60993,34185,60994,34209,60995,34170,60996,34168,60997,34135,60998,34190,60999,34198,61e3,34182,61001,34189,61002,34201,61003,34205,61004,34177,61005,34210,61006,34178,61007,34184,61008,34181,61009,34169,61010,34166,61011,34200,61012,34192,61013,34207,61014,34408,61015,34750,61016,34730,61017,34733,61018,34757,61019,34736,61020,34732,61021,34745,61022,34741,61023,34748,61024,34734,61025,34761,61026,34755,61027,34754,61028,34764,61029,34743,61030,34735,61031,34756,61032,34762,61033,34740,61034,34742,61035,34751,61036,34744,61037,34749,61038,34782,61039,34738,61040,35125,61041,35123,61042,35132,61043,35134,61044,35137,61045,35154,61046,35127,61047,35138,61048,35245,61049,35247,61050,35246,61051,35314,61052,35315,61053,35614,61054,35608,61089,35606,61090,35601,61091,35589,61092,35595,61093,35618,61094,35599,61095,35602,61096,35605,61097,35591,61098,35597,61099,35592,61100,35590,61101,35612,61102,35603,61103,35610,61104,35919,61105,35952,61106,35954,61107,35953,61108,35951,61109,35989,61110,35988,61111,36089,61112,36207,61113,36430,61114,36429,61115,36435,61116,36432,61117,36428,61118,36423,61119,36675,61120,36672,61121,36997,61122,36990,61123,37176,61124,37274,61125,37282,61126,37275,61127,37273,61128,37279,61129,37281,61130,37277,61131,37280,61132,37793,61133,37763,61134,37807,61135,37732,61136,37718,61137,37703,61138,37756,61139,37720,61140,37724,61141,37750,61142,37705,61143,37712,61144,37713,61145,37728,61146,37741,61147,37775,61148,37708,61149,37738,61150,37753,61151,37719,61152,37717,61153,37714,61154,37711,61155,37745,61156,37751,61157,37755,61158,37729,61159,37726,61160,37731,61161,37735,61162,37760,61163,37710,61164,37721,61165,38343,61166,38336,61167,38345,61168,38339,61169,38341,61170,38327,61171,38574,61172,38576,61173,38572,61174,38688,61175,38687,61176,38680,61177,38685,61178,38681,61179,38810,61180,38817,61181,38812,61182,38814,61248,38813,61249,38869,61250,38868,61251,38897,61252,38977,61253,38980,61254,38986,61255,38985,61256,38981,61257,38979,61258,39205,61259,39211,61260,39212,61261,39210,61262,39219,61263,39218,61264,39215,61265,39213,61266,39217,61267,39216,61268,39320,61269,39331,61270,39329,61271,39426,61272,39418,61273,39412,61274,39415,61275,39417,61276,39416,61277,39414,61278,39419,61279,39421,61280,39422,61281,39420,61282,39427,61283,39614,61284,39678,61285,39677,61286,39681,61287,39676,61288,39752,61289,39834,61290,39848,61291,39838,61292,39835,61293,39846,61294,39841,61295,39845,61296,39844,61297,39814,61298,39842,61299,39840,61300,39855,61301,40243,61302,40257,61303,40295,61304,40246,61305,40238,61306,40239,61307,40241,61308,40248,61309,40240,61310,40261,61345,40258,61346,40259,61347,40254,61348,40247,61349,40256,61350,40253,61351,32757,61352,40237,61353,40586,61354,40585,61355,40589,61356,40624,61357,40648,61358,40666,61359,40699,61360,40703,61361,40740,61362,40739,61363,40738,61364,40788,61365,40864,61366,20785,61367,20781,61368,20782,61369,22168,61370,22172,61371,22167,61372,22170,61373,22173,61374,22169,61375,22896,61376,23356,61377,23657,61378,23658,61379,24e3,61380,24173,61381,24174,61382,25048,61383,25055,61384,25069,61385,25070,61386,25073,61387,25066,61388,25072,61389,25067,61390,25046,61391,25065,61392,25855,61393,25860,61394,25853,61395,25848,61396,25857,61397,25859,61398,25852,61399,26004,61400,26075,61401,26330,61402,26331,61403,26328,61404,27333,61405,27321,61406,27325,61407,27361,61408,27334,61409,27322,61410,27318,61411,27319,61412,27335,61413,27316,61414,27309,61415,27486,61416,27593,61417,27659,61418,28679,61419,28684,61420,28685,61421,28673,61422,28677,61423,28692,61424,28686,61425,28671,61426,28672,61427,28667,61428,28710,61429,28668,61430,28663,61431,28682,61432,29185,61433,29183,61434,29177,61435,29187,61436,29181,61437,29558,61438,29880,61504,29888,61505,29877,61506,29889,61507,29886,61508,29878,61509,29883,61510,29890,61511,29972,61512,29971,61513,30300,61514,30308,61515,30297,61516,30288,61517,30291,61518,30295,61519,30298,61520,30374,61521,30397,61522,30444,61523,30658,61524,30650,61525,30975,61526,30988,61527,30995,61528,30996,61529,30985,61530,30992,61531,30994,61532,30993,61533,31149,61534,31148,61535,31327,61536,31772,61537,31785,61538,31769,61539,31776,61540,31775,61541,31789,61542,31773,61543,31782,61544,31784,61545,31778,61546,31781,61547,31792,61548,32348,61549,32336,61550,32342,61551,32355,61552,32344,61553,32354,61554,32351,61555,32337,61556,32352,61557,32343,61558,32339,61559,32693,61560,32691,61561,32759,61562,32760,61563,32885,61564,33233,61565,33234,61566,33232,61601,33375,61602,33374,61603,34228,61604,34246,61605,34240,61606,34243,61607,34242,61608,34227,61609,34229,61610,34237,61611,34247,61612,34244,61613,34239,61614,34251,61615,34254,61616,34248,61617,34245,61618,34225,61619,34230,61620,34258,61621,34340,61622,34232,61623,34231,61624,34238,61625,34409,61626,34791,61627,34790,61628,34786,61629,34779,61630,34795,61631,34794,61632,34789,61633,34783,61634,34803,61635,34788,61636,34772,61637,34780,61638,34771,61639,34797,61640,34776,61641,34787,61642,34724,61643,34775,61644,34777,61645,34817,61646,34804,61647,34792,61648,34781,61649,35155,61650,35147,61651,35151,61652,35148,61653,35142,61654,35152,61655,35153,61656,35145,61657,35626,61658,35623,61659,35619,61660,35635,61661,35632,61662,35637,61663,35655,61664,35631,61665,35644,61666,35646,61667,35633,61668,35621,61669,35639,61670,35622,61671,35638,61672,35630,61673,35620,61674,35643,61675,35645,61676,35642,61677,35906,61678,35957,61679,35993,61680,35992,61681,35991,61682,36094,61683,36100,61684,36098,61685,36096,61686,36444,61687,36450,61688,36448,61689,36439,61690,36438,61691,36446,61692,36453,61693,36455,61694,36443,61760,36442,61761,36449,61762,36445,61763,36457,61764,36436,61765,36678,61766,36679,61767,36680,61768,36683,61769,37160,61770,37178,61771,37179,61772,37182,61773,37288,61774,37285,61775,37287,61776,37295,61777,37290,61778,37813,61779,37772,61780,37778,61781,37815,61782,37787,61783,37789,61784,37769,61785,37799,61786,37774,61787,37802,61788,37790,61789,37798,61790,37781,61791,37768,61792,37785,61793,37791,61794,37773,61795,37809,61796,37777,61797,37810,61798,37796,61799,37800,61800,37812,61801,37795,61802,37797,61803,38354,61804,38355,61805,38353,61806,38579,61807,38615,61808,38618,61809,24002,61810,38623,61811,38616,61812,38621,61813,38691,61814,38690,61815,38693,61816,38828,61817,38830,61818,38824,61819,38827,61820,38820,61821,38826,61822,38818,61857,38821,61858,38871,61859,38873,61860,38870,61861,38872,61862,38906,61863,38992,61864,38993,61865,38994,61866,39096,61867,39233,61868,39228,61869,39226,61870,39439,61871,39435,61872,39433,61873,39437,61874,39428,61875,39441,61876,39434,61877,39429,61878,39431,61879,39430,61880,39616,61881,39644,61882,39688,61883,39684,61884,39685,61885,39721,61886,39733,61887,39754,61888,39756,61889,39755,61890,39879,61891,39878,61892,39875,61893,39871,61894,39873,61895,39861,61896,39864,61897,39891,61898,39862,61899,39876,61900,39865,61901,39869,61902,40284,61903,40275,61904,40271,61905,40266,61906,40283,61907,40267,61908,40281,61909,40278,61910,40268,61911,40279,61912,40274,61913,40276,61914,40287,61915,40280,61916,40282,61917,40590,61918,40588,61919,40671,61920,40705,61921,40704,61922,40726,61923,40741,61924,40747,61925,40746,61926,40745,61927,40744,61928,40780,61929,40789,61930,20788,61931,20789,61932,21142,61933,21239,61934,21428,61935,22187,61936,22189,61937,22182,61938,22183,61939,22186,61940,22188,61941,22746,61942,22749,61943,22747,61944,22802,61945,23357,61946,23358,61947,23359,61948,24003,61949,24176,61950,24511,62016,25083,62017,25863,62018,25872,62019,25869,62020,25865,62021,25868,62022,25870,62023,25988,62024,26078,62025,26077,62026,26334,62027,27367,62028,27360,62029,27340,62030,27345,62031,27353,62032,27339,62033,27359,62034,27356,62035,27344,62036,27371,62037,27343,62038,27341,62039,27358,62040,27488,62041,27568,62042,27660,62043,28697,62044,28711,62045,28704,62046,28694,62047,28715,62048,28705,62049,28706,62050,28707,62051,28713,62052,28695,62053,28708,62054,28700,62055,28714,62056,29196,62057,29194,62058,29191,62059,29186,62060,29189,62061,29349,62062,29350,62063,29348,62064,29347,62065,29345,62066,29899,62067,29893,62068,29879,62069,29891,62070,29974,62071,30304,62072,30665,62073,30666,62074,30660,62075,30705,62076,31005,62077,31003,62078,31009,62113,31004,62114,30999,62115,31006,62116,31152,62117,31335,62118,31336,62119,31795,62120,31804,62121,31801,62122,31788,62123,31803,62124,31980,62125,31978,62126,32374,62127,32373,62128,32376,62129,32368,62130,32375,62131,32367,62132,32378,62133,32370,62134,32372,62135,32360,62136,32587,62137,32586,62138,32643,62139,32646,62140,32695,62141,32765,62142,32766,62143,32888,62144,33239,62145,33237,62146,33380,62147,33377,62148,33379,62149,34283,62150,34289,62151,34285,62152,34265,62153,34273,62154,34280,62155,34266,62156,34263,62157,34284,62158,34290,62159,34296,62160,34264,62161,34271,62162,34275,62163,34268,62164,34257,62165,34288,62166,34278,62167,34287,62168,34270,62169,34274,62170,34816,62171,34810,62172,34819,62173,34806,62174,34807,62175,34825,62176,34828,62177,34827,62178,34822,62179,34812,62180,34824,62181,34815,62182,34826,62183,34818,62184,35170,62185,35162,62186,35163,62187,35159,62188,35169,62189,35164,62190,35160,62191,35165,62192,35161,62193,35208,62194,35255,62195,35254,62196,35318,62197,35664,62198,35656,62199,35658,62200,35648,62201,35667,62202,35670,62203,35668,62204,35659,62205,35669,62206,35665,62272,35650,62273,35666,62274,35671,62275,35907,62276,35959,62277,35958,62278,35994,62279,36102,62280,36103,62281,36105,62282,36268,62283,36266,62284,36269,62285,36267,62286,36461,62287,36472,62288,36467,62289,36458,62290,36463,62291,36475,62292,36546,62293,36690,62294,36689,62295,36687,62296,36688,62297,36691,62298,36788,62299,37184,62300,37183,62301,37296,62302,37293,62303,37854,62304,37831,62305,37839,62306,37826,62307,37850,62308,37840,62309,37881,62310,37868,62311,37836,62312,37849,62313,37801,62314,37862,62315,37834,62316,37844,62317,37870,62318,37859,62319,37845,62320,37828,62321,37838,62322,37824,62323,37842,62324,37863,62325,38269,62326,38362,62327,38363,62328,38625,62329,38697,62330,38699,62331,38700,62332,38696,62333,38694,62334,38835,62369,38839,62370,38838,62371,38877,62372,38878,62373,38879,62374,39004,62375,39001,62376,39005,62377,38999,62378,39103,62379,39101,62380,39099,62381,39102,62382,39240,62383,39239,62384,39235,62385,39334,62386,39335,62387,39450,62388,39445,62389,39461,62390,39453,62391,39460,62392,39451,62393,39458,62394,39456,62395,39463,62396,39459,62397,39454,62398,39452,62399,39444,62400,39618,62401,39691,62402,39690,62403,39694,62404,39692,62405,39735,62406,39914,62407,39915,62408,39904,62409,39902,62410,39908,62411,39910,62412,39906,62413,39920,62414,39892,62415,39895,62416,39916,62417,39900,62418,39897,62419,39909,62420,39893,62421,39905,62422,39898,62423,40311,62424,40321,62425,40330,62426,40324,62427,40328,62428,40305,62429,40320,62430,40312,62431,40326,62432,40331,62433,40332,62434,40317,62435,40299,62436,40308,62437,40309,62438,40304,62439,40297,62440,40325,62441,40307,62442,40315,62443,40322,62444,40303,62445,40313,62446,40319,62447,40327,62448,40296,62449,40596,62450,40593,62451,40640,62452,40700,62453,40749,62454,40768,62455,40769,62456,40781,62457,40790,62458,40791,62459,40792,62460,21303,62461,22194,62462,22197,62528,22195,62529,22755,62530,23365,62531,24006,62532,24007,62533,24302,62534,24303,62535,24512,62536,24513,62537,25081,62538,25879,62539,25878,62540,25877,62541,25875,62542,26079,62543,26344,62544,26339,62545,26340,62546,27379,62547,27376,62548,27370,62549,27368,62550,27385,62551,27377,62552,27374,62553,27375,62554,28732,62555,28725,62556,28719,62557,28727,62558,28724,62559,28721,62560,28738,62561,28728,62562,28735,62563,28730,62564,28729,62565,28736,62566,28731,62567,28723,62568,28737,62569,29203,62570,29204,62571,29352,62572,29565,62573,29564,62574,29882,62575,30379,62576,30378,62577,30398,62578,30445,62579,30668,62580,30670,62581,30671,62582,30669,62583,30706,62584,31013,62585,31011,62586,31015,62587,31016,62588,31012,62589,31017,62590,31154,62625,31342,62626,31340,62627,31341,62628,31479,62629,31817,62630,31816,62631,31818,62632,31815,62633,31813,62634,31982,62635,32379,62636,32382,62637,32385,62638,32384,62639,32698,62640,32767,62641,32889,62642,33243,62643,33241,62644,33291,62645,33384,62646,33385,62647,34338,62648,34303,62649,34305,62650,34302,62651,34331,62652,34304,62653,34294,62654,34308,62655,34313,62656,34309,62657,34316,62658,34301,62659,34841,62660,34832,62661,34833,62662,34839,62663,34835,62664,34838,62665,35171,62666,35174,62667,35257,62668,35319,62669,35680,62670,35690,62671,35677,62672,35688,62673,35683,62674,35685,62675,35687,62676,35693,62677,36270,62678,36486,62679,36488,62680,36484,62681,36697,62682,36694,62683,36695,62684,36693,62685,36696,62686,36698,62687,37005,62688,37187,62689,37185,62690,37303,62691,37301,62692,37298,62693,37299,62694,37899,62695,37907,62696,37883,62697,37920,62698,37903,62699,37908,62700,37886,62701,37909,62702,37904,62703,37928,62704,37913,62705,37901,62706,37877,62707,37888,62708,37879,62709,37895,62710,37902,62711,37910,62712,37906,62713,37882,62714,37897,62715,37880,62716,37898,62717,37887,62718,37884,62784,37900,62785,37878,62786,37905,62787,37894,62788,38366,62789,38368,62790,38367,62791,38702,62792,38703,62793,38841,62794,38843,62795,38909,62796,38910,62797,39008,62798,39010,62799,39011,62800,39007,62801,39105,62802,39106,62803,39248,62804,39246,62805,39257,62806,39244,62807,39243,62808,39251,62809,39474,62810,39476,62811,39473,62812,39468,62813,39466,62814,39478,62815,39465,62816,39470,62817,39480,62818,39469,62819,39623,62820,39626,62821,39622,62822,39696,62823,39698,62824,39697,62825,39947,62826,39944,62827,39927,62828,39941,62829,39954,62830,39928,62831,4e4,62832,39943,62833,39950,62834,39942,62835,39959,62836,39956,62837,39945,62838,40351,62839,40345,62840,40356,62841,40349,62842,40338,62843,40344,62844,40336,62845,40347,62846,40352,62881,40340,62882,40348,62883,40362,62884,40343,62885,40353,62886,40346,62887,40354,62888,40360,62889,40350,62890,40355,62891,40383,62892,40361,62893,40342,62894,40358,62895,40359,62896,40601,62897,40603,62898,40602,62899,40677,62900,40676,62901,40679,62902,40678,62903,40752,62904,40750,62905,40795,62906,40800,62907,40798,62908,40797,62909,40793,62910,40849,62911,20794,62912,20793,62913,21144,62914,21143,62915,22211,62916,22205,62917,22206,62918,23368,62919,23367,62920,24011,62921,24015,62922,24305,62923,25085,62924,25883,62925,27394,62926,27388,62927,27395,62928,27384,62929,27392,62930,28739,62931,28740,62932,28746,62933,28744,62934,28745,62935,28741,62936,28742,62937,29213,62938,29210,62939,29209,62940,29566,62941,29975,62942,30314,62943,30672,62944,31021,62945,31025,62946,31023,62947,31828,62948,31827,62949,31986,62950,32394,62951,32391,62952,32392,62953,32395,62954,32390,62955,32397,62956,32589,62957,32699,62958,32816,62959,33245,62960,34328,62961,34346,62962,34342,62963,34335,62964,34339,62965,34332,62966,34329,62967,34343,62968,34350,62969,34337,62970,34336,62971,34345,62972,34334,62973,34341,62974,34857,63040,34845,63041,34843,63042,34848,63043,34852,63044,34844,63045,34859,63046,34890,63047,35181,63048,35177,63049,35182,63050,35179,63051,35322,63052,35705,63053,35704,63054,35653,63055,35706,63056,35707,63057,36112,63058,36116,63059,36271,63060,36494,63061,36492,63062,36702,63063,36699,63064,36701,63065,37190,63066,37188,63067,37189,63068,37305,63069,37951,63070,37947,63071,37942,63072,37929,63073,37949,63074,37948,63075,37936,63076,37945,63077,37930,63078,37943,63079,37932,63080,37952,63081,37937,63082,38373,63083,38372,63084,38371,63085,38709,63086,38714,63087,38847,63088,38881,63089,39012,63090,39113,63091,39110,63092,39104,63093,39256,63094,39254,63095,39481,63096,39485,63097,39494,63098,39492,63099,39490,63100,39489,63101,39482,63102,39487,63137,39629,63138,39701,63139,39703,63140,39704,63141,39702,63142,39738,63143,39762,63144,39979,63145,39965,63146,39964,63147,39980,63148,39971,63149,39976,63150,39977,63151,39972,63152,39969,63153,40375,63154,40374,63155,40380,63156,40385,63157,40391,63158,40394,63159,40399,63160,40382,63161,40389,63162,40387,63163,40379,63164,40373,63165,40398,63166,40377,63167,40378,63168,40364,63169,40392,63170,40369,63171,40365,63172,40396,63173,40371,63174,40397,63175,40370,63176,40570,63177,40604,63178,40683,63179,40686,63180,40685,63181,40731,63182,40728,63183,40730,63184,40753,63185,40782,63186,40805,63187,40804,63188,40850,63189,20153,63190,22214,63191,22213,63192,22219,63193,22897,63194,23371,63195,23372,63196,24021,63197,24017,63198,24306,63199,25889,63200,25888,63201,25894,63202,25890,63203,27403,63204,27400,63205,27401,63206,27661,63207,28757,63208,28758,63209,28759,63210,28754,63211,29214,63212,29215,63213,29353,63214,29567,63215,29912,63216,29909,63217,29913,63218,29911,63219,30317,63220,30381,63221,31029,63222,31156,63223,31344,63224,31345,63225,31831,63226,31836,63227,31833,63228,31835,63229,31834,63230,31988,63296,31985,63297,32401,63298,32591,63299,32647,63300,33246,63301,33387,63302,34356,63303,34357,63304,34355,63305,34348,63306,34354,63307,34358,63308,34860,63309,34856,63310,34854,63311,34858,63312,34853,63313,35185,63314,35263,63315,35262,63316,35323,63317,35710,63318,35716,63319,35714,63320,35718,63321,35717,63322,35711,63323,36117,63324,36501,63325,36500,63326,36506,63327,36498,63328,36496,63329,36502,63330,36503,63331,36704,63332,36706,63333,37191,63334,37964,63335,37968,63336,37962,63337,37963,63338,37967,63339,37959,63340,37957,63341,37960,63342,37961,63343,37958,63344,38719,63345,38883,63346,39018,63347,39017,63348,39115,63349,39252,63350,39259,63351,39502,63352,39507,63353,39508,63354,39500,63355,39503,63356,39496,63357,39498,63358,39497,63393,39506,63394,39504,63395,39632,63396,39705,63397,39723,63398,39739,63399,39766,63400,39765,63401,40006,63402,40008,63403,39999,63404,40004,63405,39993,63406,39987,63407,40001,63408,39996,63409,39991,63410,39988,63411,39986,63412,39997,63413,39990,63414,40411,63415,40402,63416,40414,63417,40410,63418,40395,63419,40400,63420,40412,63421,40401,63422,40415,63423,40425,63424,40409,63425,40408,63426,40406,63427,40437,63428,40405,63429,40413,63430,40630,63431,40688,63432,40757,63433,40755,63434,40754,63435,40770,63436,40811,63437,40853,63438,40866,63439,20797,63440,21145,63441,22760,63442,22759,63443,22898,63444,23373,63445,24024,63446,34863,63447,24399,63448,25089,63449,25091,63450,25092,63451,25897,63452,25893,63453,26006,63454,26347,63455,27409,63456,27410,63457,27407,63458,27594,63459,28763,63460,28762,63461,29218,63462,29570,63463,29569,63464,29571,63465,30320,63466,30676,63467,31847,63468,31846,63469,32405,63470,33388,63471,34362,63472,34368,63473,34361,63474,34364,63475,34353,63476,34363,63477,34366,63478,34864,63479,34866,63480,34862,63481,34867,63482,35190,63483,35188,63484,35187,63485,35326,63486,35724,63552,35726,63553,35723,63554,35720,63555,35909,63556,36121,63557,36504,63558,36708,63559,36707,63560,37308,63561,37986,63562,37973,63563,37981,63564,37975,63565,37982,63566,38852,63567,38853,63568,38912,63569,39510,63570,39513,63571,39710,63572,39711,63573,39712,63574,40018,63575,40024,63576,40016,63577,40010,63578,40013,63579,40011,63580,40021,63581,40025,63582,40012,63583,40014,63584,40443,63585,40439,63586,40431,63587,40419,63588,40427,63589,40440,63590,40420,63591,40438,63592,40417,63593,40430,63594,40422,63595,40434,63596,40432,63597,40418,63598,40428,63599,40436,63600,40435,63601,40424,63602,40429,63603,40642,63604,40656,63605,40690,63606,40691,63607,40710,63608,40732,63609,40760,63610,40759,63611,40758,63612,40771,63613,40783,63614,40817,63649,40816,63650,40814,63651,40815,63652,22227,63653,22221,63654,23374,63655,23661,63656,25901,63657,26349,63658,26350,63659,27411,63660,28767,63661,28769,63662,28765,63663,28768,63664,29219,63665,29915,63666,29925,63667,30677,63668,31032,63669,31159,63670,31158,63671,31850,63672,32407,63673,32649,63674,33389,63675,34371,63676,34872,63677,34871,63678,34869,63679,34891,63680,35732,63681,35733,63682,36510,63683,36511,63684,36512,63685,36509,63686,37310,63687,37309,63688,37314,63689,37995,63690,37992,63691,37993,63692,38629,63693,38726,63694,38723,63695,38727,63696,38855,63697,38885,63698,39518,63699,39637,63700,39769,63701,40035,63702,40039,63703,40038,63704,40034,63705,40030,63706,40032,63707,40450,63708,40446,63709,40455,63710,40451,63711,40454,63712,40453,63713,40448,63714,40449,63715,40457,63716,40447,63717,40445,63718,40452,63719,40608,63720,40734,63721,40774,63722,40820,63723,40821,63724,40822,63725,22228,63726,25902,63727,26040,63728,27416,63729,27417,63730,27415,63731,27418,63732,28770,63733,29222,63734,29354,63735,30680,63736,30681,63737,31033,63738,31849,63739,31851,63740,31990,63741,32410,63742,32408,63808,32411,63809,32409,63810,33248,63811,33249,63812,34374,63813,34375,63814,34376,63815,35193,63816,35194,63817,35196,63818,35195,63819,35327,63820,35736,63821,35737,63822,36517,63823,36516,63824,36515,63825,37998,63826,37997,63827,37999,63828,38001,63829,38003,63830,38729,63831,39026,63832,39263,63833,40040,63834,40046,63835,40045,63836,40459,63837,40461,63838,40464,63839,40463,63840,40466,63841,40465,63842,40609,63843,40693,63844,40713,63845,40775,63846,40824,63847,40827,63848,40826,63849,40825,63850,22302,63851,28774,63852,31855,63853,34876,63854,36274,63855,36518,63856,37315,63857,38004,63858,38008,63859,38006,63860,38005,63861,39520,63862,40052,63863,40051,63864,40049,63865,40053,63866,40468,63867,40467,63868,40694,63869,40714,63870,40868,63905,28776,63906,28773,63907,31991,63908,34410,63909,34878,63910,34877,63911,34879,63912,35742,63913,35996,63914,36521,63915,36553,63916,38731,63917,39027,63918,39028,63919,39116,63920,39265,63921,39339,63922,39524,63923,39526,63924,39527,63925,39716,63926,40469,63927,40471,63928,40776,63929,25095,63930,27422,63931,29223,63932,34380,63933,36520,63934,38018,63935,38016,63936,38017,63937,39529,63938,39528,63939,39726,63940,40473,63941,29225,63942,34379,63943,35743,63944,38019,63945,40057,63946,40631,63947,30325,63948,39531,63949,40058,63950,40477,63951,28777,63952,28778,63953,40612,63954,40830,63955,40777,63956,40856,63957,30849,63958,37561,63959,35023,63960,22715,63961,24658,63962,31911,63963,23290,63964,9556,63965,9574,63966,9559,63967,9568,63968,9580,63969,9571,63970,9562,63971,9577,63972,9565,63973,9554,63974,9572,63975,9557,63976,9566,63977,9578,63978,9569,63979,9560,63980,9575,63981,9563,63982,9555,63983,9573,63984,9558,63985,9567,63986,9579,63987,9570,63988,9561,63989,9576,63990,9564,63991,9553,63992,9552,63993,9581,63994,9582,63995,9584,63996,9583,63997,9619,63998];let U=null,j=null;function k(){return U||(U=L,j=F),{GBK_DATA:U,BIG5_DATA:j}}const J=new Map,G=new Map;function H(e){if(e>=32&&126>=e)return[0,e];const t=function(e){let t=0,i=_.length-2;for(;i>=t;){const r=t+i>>1,s=_[r];if(s===e){const e=_[r+1];return null!=e?e:null}e>s?t=r+2:i=r-2}return null}(e);if(null!==t)return[t>>8&255,255&t];if(function(e){return e>=19968&&40869>=e}(e)){const{GBK_DATA:t}=k();for(let i=0;i<t.length;i+=2)if(t[i]===e){const e=t[i+1];if(void 0!==e)return[e>>8&255,255&e]}}return null}function z(e){const t=G.get(e);if(void 0!==t)return[t>>8&255,255&t];const{BIG5_DATA:i}=k();for(let r=0;r<i.length;r+=2)if(i[r]===e){const e=i[r+1];if(void 0!==e)return[e>>8&255,255&e]}return null}function W(e){return e>=0&&127>=e}function V(e){return e>=19968&&40959>=e||e>=13312&&19903>=e||e>=131072&&173791>=e||e>=173824&&177983>=e||e>=177984&&178207>=e||e>=63744&&64255>=e||e>=194560&&195103>=e}function q(e){return e>=12288&&12351>=e||e>=65280&&65519>=e}const Q={defaultEncoding:"GBK",fallbackChar:"?",showWarnings:!0},K=class e{constructor(e){this.logger=m.scope("EncodingService"),this.config=l(l({},Q),e)}configure(e){this.config=l(l({},this.config),e)}getConfig(){return l({},this.config)}encode(t,i){if(!t||"string"!=typeof t)return new Uint8Array(0);switch(this.normalizeEncoding(i||this.config.defaultEncoding)){case"UTF8":case"UTF-8":return e.utf8Encoder.encode(t);case"GBK":case"GB2312":return this.encodeGbk(t);case"BIG5":return this.encodeBig5(t);default:return this.config.showWarnings&&this.logger.warn(`Unknown encoding "${i}", falling back to UTF-8`),e.utf8Encoder.encode(t)}}encodeWithInfo(t,i){if(!t||"string"!=typeof t)return{bytes:new Uint8Array(0),unsupportedCount:0,unsupportedChars:[]};const r=this.normalizeEncoding(i||this.config.defaultEncoding);if("UTF8"===r||"UTF-8"===r)return{bytes:e.utf8Encoder.encode(t),unsupportedCount:0,unsupportedChars:[]};const s=[],n=[],o=this.config.fallbackChar.charCodeAt(0);for(let e=0;e<t.length;e++){const i=t.charAt(e),a=t.charCodeAt(e);if(a>=55296&&56319>=a&&e+1<t.length){const i=t.charCodeAt(e+1);if(i>=56320&&57343>=i){n.push(t.substring(e,e+2)),s.push(o),e++;continue}}if(W(a)){s.push(a);continue}let c=null;c="BIG5"===r?z(a):H(a),c?s.push(c[0],c[1]):(void 0!==i&&n.push(i),s.push(o),this.config.showWarnings&&1===n.length&&void 0!==i&&this.logger.warn(`Character "${i}" (U+${a.toString(16).toUpperCase()}) not supported in ${r}`))}return{bytes:new Uint8Array(s),unsupportedCount:n.length,unsupportedChars:[...new Set(n)]}}isSupported(e){if(!e||"string"!=typeof e)return!1;const t=this.normalizeEncoding(e);return["GBK","GB2312","BIG5","UTF8","UTF-8"].includes(t)}detectEncoding(e){if(!e||"string"!=typeof e)return"UTF-8";let t=!1,i=!1,r=!1,s=0,n=0,o=0;for(let h=0;h<e.length;h++){const a=e.charCodeAt(h);(55296>a||a>57343)&&(W(a)?t=!0:(o++,V(a)?(i=!0,J.has(a)&&s++,G.has(a)&&n++):q(a)&&(r=!0,J.has(a)&&s++)))}if(!i&&!r&&t)return"UTF-8";if(0===o)return"UTF-8";const a=s/o,c=n/o;return c>a&&c>.8?"BIG5":a>.8?"GBK":"UTF-8"}getSupportedEncodings(){return["GBK","GB2312","BIG5","UTF-8"]}encodeGbk(e){const t=[],i=this.config.fallbackChar.charCodeAt(0);for(let r=0;r<e.length;r++){const s=e.charCodeAt(r);if(s>=55296&&56319>=s&&r+1<e.length){const s=e.charCodeAt(r+1);if(s>=56320&&57343>=s){t.push(i),r++;continue}}if(W(s)){t.push(s);continue}const n=H(s);n?t.push(n[0],n[1]):t.push(i)}return new Uint8Array(t)}encodeBig5(e){const t=[],i=this.config.fallbackChar.charCodeAt(0);for(let r=0;r<e.length;r++){const s=e.charCodeAt(r);if(s>=55296&&56319>=s&&r+1<e.length){const s=e.charCodeAt(r+1);if(s>=56320&&57343>=s){t.push(i),r++;continue}}if(W(s)){t.push(s);continue}const n=z(s);if(n)t.push(n[0],n[1]);else{const e=H(s);e?t.push(e[0],e[1]):t.push(i)}}return new Uint8Array(t)}normalizeEncoding(e){return e.toUpperCase().replace(/-/g,"").replace("_","")}};K.utf8Encoder=new TextEncoder;let Y=K;new Y;const X=m.scope("Encoding"),Z=class{static configure(e){this.config=l(l({},this.config),e)}static encode(e,t="GBK"){if(!e||"string"!=typeof e)return new Uint8Array(0);const i=t.toUpperCase().replace("-","");return"UTF8"===i||"UTF-8"===i||this.config.showWarnings&&!this.warningShown&&(X.warn(`Encoding ${t} not yet fully implemented, falling back to UTF-8. This may cause display issues with some printers.`),this.warningShown=!0),this.utf8Encoder.encode(e)}static isSupported(e){if(!e||"string"!=typeof e)return!1;const t=e.toUpperCase().replace("-","");return"UTF8"===t||"UTF-8"===t}};Z.utf8Encoder=new TextEncoder,Z.warningShown=!1,Z.config={showWarnings:!0};let ee=Z;class te{static toBitmap(e,t,i,r){if(!(e&&e instanceof Uint8Array&&t>0&&i>0))return new Uint8Array(0);if(e.length!==t*i*4)throw Error(`Invalid image data length: expected ${t*i*4}, got ${e.length}`);const{targetWidth:s,targetHeight:n,useDithering:o=!0,ditheringAlgorithm:a="floyd-steinberg",scalingAlgorithm:c="nearest",contrast:h=1,brightness:l=0,threshold:d=128}=r||{};let u=e,g=t,f=i;if(s||n){const{newData:r,newWidth:o,newHeight:a}=this.scaleImage(e,t,i,s||t,n||i,{algorithm:c});u=r,g=o,f=a}const p=Math.ceil(g/8),m=new Uint8Array(p*f);let b=this.toGrayscale(u,g,f);return b=this.adjustContrastBrightness(b,h,l),o?this.applyDithering(b,g,f,m,p,a,d):this.applyThreshold(b,g,f,m,p,d),m}static toGrayscale(e,t,i){const r=new Float32Array(t*i);for(let s=0;s<e.length;s+=4){const t=s>>2,i=e[s]||0,n=e[s+1]||0,o=e[s+2]||0;r[t]=(299*i+587*n+114*o)/1e3}return r}static adjustContrastBrightness(e,t,i){if(1===t&&0===i)return e;const r=new Float32Array(e);for(let s=0;s<r.length;s++){const e=r[s]||0;r[s]=Math.max(0,Math.min(255,(e-128)*t+128+255*i))}return r}static applyDithering(e,t,i,r,s,n,o){for(let a=0;i>a;a++)for(let c=0;t>c;c++){const h=e[a*t+c]||0,l=o>h?0:255;if(0===l){const e=a*s+Math.floor(c/8),t=7-c%8;r[e]=(r[e]||0)|1<<t}const d=h-l;"floyd-steinberg"===n?this.distributeErrorFloydSteinberg(e,t,i,c,a,d):"atkinson"===n&&this.distributeErrorAtkinson(e,t,i,c,a,d)}}static applyThreshold(e,t,i,r,s,n){for(let o=0;i>o;o++)for(let i=0;t>i;i++)if(n>(e[o*t+i]||0)){const e=o*s+Math.floor(i/8),t=7-i%8;r[e]=(r[e]||0)|1<<t}}static scaleImage(e,t,i,r,s,n){const o=t/i;let a=r,c=s;a/c>o?a=Math.round(c*o):c=Math.round(a/o);const h=new Uint8Array(a*c*4),{algorithm:l="nearest"}=n||{};return"bilinear"===l?this.applyBilinearInterpolation(e,t,i,h,a,c):this.applyNearestNeighbor(e,t,i,h,a,c),{newData:h,newWidth:a,newHeight:c}}static applyNearestNeighbor(e,t,i,r,s,n){const o=t/s,a=i/n;for(let c=0;n>c;c++)for(let i=0;s>i;i++){const n=Math.round(i*o),h=4*(Math.round(c*a)*t+n),l=4*(c*s+i);r[l]=e[h]||0,r[l+1]=e[h+1]||0,r[l+2]=e[h+2]||0,r[l+3]=e[h+3]||255}}static applyBilinearInterpolation(e,t,i,r,s,n){const o=t/s,a=i/n;for(let c=0;n>c;c++)for(let n=0;s>n;n++){const h=n*o,l=c*a,d=Math.floor(h),u=Math.floor(l),g=h-d,f=l-u,p=Math.min(d,t-1),m=Math.min(u,i-1),b=Math.min(p+1,t-1),v=Math.min(m+1,i-1),y=4*(m*t+p),E=4*(m*t+b),C=4*(v*t+p),I=4*(v*t+b),S=(1-g)*(1-f),D=g*(1-f),w=(1-g)*f,A=g*f,$=4*(c*s+n);r[$]=Math.round((e[y]||0)*S+(e[E]||0)*D+(e[C]||0)*w+(e[I]||0)*A),r[$+1]=Math.round((e[y+1]||0)*S+(e[E+1]||0)*D+(e[C+1]||0)*w+(e[I+1]||0)*A),r[$+2]=Math.round((e[y+2]||0)*S+(e[E+2]||0)*D+(e[C+2]||0)*w+(e[I+2]||0)*A),r[$+3]=Math.round((e[y+3]||255)*S+(e[E+3]||255)*D+(e[C+3]||255)*w+(e[I+3]||255)*A)}}static distributeErrorFloydSteinberg(e,t,i,r,s,n){const o=[{dx:1,dy:0,factor:7/16},{dx:-1,dy:1,factor:3/16},{dx:0,dy:1,factor:5/16},{dx:1,dy:1,factor:1/16}];for(const{dx:a,dy:c,factor:h}of o)this.distributeErrorPixel(e,t,i,r+a,s+c,n*h)}static distributeErrorAtkinson(e,t,i,r,s,n){const o=[{dx:1,dy:0,factor:1/8},{dx:2,dy:0,factor:1/8},{dx:-1,dy:1,factor:1/8},{dx:0,dy:1,factor:1/8},{dx:1,dy:1,factor:1/8},{dx:0,dy:2,factor:1/8}];for(const{dx:a,dy:c,factor:h}of o)this.distributeErrorPixel(e,t,i,r+a,s+c,n*h)}static distributeErrorPixel(e,t,i,r,s,n){if(r>=0&&t>r&&s>=0&&i>s){const i=s*t+r,o=e[i]||0;e[i]=Math.max(0,Math.min(255,o+n))}}}class ie{constructor(e){var t,i,r;this.logger=m.scope("EscPos"),this.useEncodingService=null==(t=null==e?void 0:e.useEncodingService)||t,this.encodingService=new Y({showWarnings:null==(i=null==e?void 0:e.showEncodingWarnings)||i,fallbackChar:null!=(r=null==e?void 0:e.fallbackChar)?r:"?"})}init(){return[new Uint8Array([27,64])]}text(e,t="GBK"){return e&&"string"==typeof e?this.useEncodingService&&this.encodingService.isSupported(t)?[this.encodingService.encode(e,t)]:[ee.encode(e,t)]:[]}feed(e=1){return[new Uint8Array([27,100,Math.max(1,Math.min(255,Math.floor(e)))])]}cut(){return[new Uint8Array([29,86,0])]}image(e,t,i){if(!(e&&e instanceof Uint8Array&&t>0&&i>0))return[];if(e.length!==t*i*4)return this.logger.warn(`Invalid image data length: expected ${t*i*4}, got ${e.length}`),[];const r=te.toBitmap(e,t,i),s=Math.ceil(t/8);return[new Uint8Array([29,118,48,0,s%256,Math.floor(s/256),i%256,Math.floor(i/256)]),r]}qr(e,t){var i,r,s,n;if(!e||"string"!=typeof e)return[];const o=null!=(i=null==t?void 0:t.model)?i:2,a=Math.max(1,Math.min(16,null!=(r=null==t?void 0:t.size)?r:6)),c=null!=(s=null==t?void 0:t.errorCorrection)?s:"M",h=[];h.push(new Uint8Array([29,40,107,4,0,49,65,1===o?49:50,0])),h.push(new Uint8Array([29,40,107,3,0,49,67,a]));const l=null!=(n={L:48,M:49,Q:50,H:51}[c])?n:49;h.push(new Uint8Array([29,40,107,3,0,49,69,l]));const d=this.useEncodingService&&this.encodingService.isSupported("GBK")?this.encodingService.encode(e,"GBK"):ee.encode(e,"GBK"),u=d.length+3,g=u%256,f=Math.floor(u/256);return h.push(new Uint8Array([29,40,107,g,f,49,80,48])),h.push(d),h.push(new Uint8Array([29,40,107,3,0,49,81,48])),h}}var re=(e=>(e.LEFT="left",e.CENTER="center",e.RIGHT="right",e))(re||{});const se={align:"left",widthScale:1,heightScale:1,bold:!1,underline:!1,inverse:!1},ne=27,oe=29;class ae{constructor(){this.currentStyle=l({},se)}setStyle(e){var t,i;const r=[];if(void 0!==e.align&&e.align!==this.currentStyle.align){const t=this.getAlignValue(e.align);r.push(new Uint8Array([ne,97,t])),this.currentStyle.align=e.align}const s=this.clampScale(null!=(t=e.widthScale)?t:this.currentStyle.widthScale),n=this.clampScale(null!=(i=e.heightScale)?i:this.currentStyle.heightScale);if(s!==this.currentStyle.widthScale||n!==this.currentStyle.heightScale){const e=s-1<<4|n-1;r.push(new Uint8Array([oe,33,e])),this.currentStyle.widthScale=s,this.currentStyle.heightScale=n}return void 0!==e.bold&&e.bold!==this.currentStyle.bold&&(r.push(new Uint8Array([ne,69,e.bold?1:0])),this.currentStyle.bold=e.bold),void 0!==e.underline&&e.underline!==this.currentStyle.underline&&(r.push(new Uint8Array([ne,45,e.underline?1:0])),this.currentStyle.underline=e.underline),void 0!==e.inverse&&e.inverse!==this.currentStyle.inverse&&(r.push(new Uint8Array([oe,66,e.inverse?1:0])),this.currentStyle.inverse=e.inverse),r}resetStyle(){const e=[];return"left"!==this.currentStyle.align&&e.push(new Uint8Array([ne,97,0])),1===this.currentStyle.widthScale&&1===this.currentStyle.heightScale||e.push(new Uint8Array([oe,33,0])),this.currentStyle.bold&&e.push(new Uint8Array([ne,69,0])),this.currentStyle.underline&&e.push(new Uint8Array([ne,45,0])),this.currentStyle.inverse&&e.push(new Uint8Array([oe,66,0])),this.currentStyle=l({},se),e}format(e,t){if(!e||"string"!=typeof e)return[];const i=[];return t&&i.push(...this.setStyle(t)),i}align(e){const t=this.getAlignValue(e);return this.currentStyle.align=e,[new Uint8Array([ne,97,t])]}setSize(e,t){const i=this.clampScale(e),r=this.clampScale(t),s=i-1<<4|r-1;return this.currentStyle.widthScale=i,this.currentStyle.heightScale=r,[new Uint8Array([oe,33,s])]}setBold(e){return this.currentStyle.bold=e,[new Uint8Array([ne,69,e?1:0])]}setUnderline(e){return this.currentStyle.underline=e,[new Uint8Array([ne,45,e?1:0])]}setInverse(e){return this.currentStyle.inverse=e,[new Uint8Array([oe,66,e?1:0])]}getCurrentStyle(){return l({},this.currentStyle)}getAlignValue(e){switch(e){case"left":default:return 0;case"center":return 1;case"right":return 2}}clampScale(e){return Math.max(1,Math.min(8,Math.floor(e)))}}var ce=(e=>(e.CODE128="CODE128",e.CODE39="CODE39",e.EAN13="EAN13",e.EAN8="EAN8",e.UPCA="UPCA",e.ITF="ITF",e.CODABAR="CODABAR",e))(ce||{});const he={UPCA:65,EAN13:67,EAN8:68,CODE39:69,ITF:70,CODABAR:71,CODE128:73},le={none:0,above:1,below:2,both:3};class de{generate(e,t){var i,r;if(!this.validate(e,t.format).valid)return[];const s=[],n=this.clampHeight(null!=(i=t.height)?i:80);s.push(new Uint8Array([29,104,n]));const o=this.clampWidth(null!=(r=t.width)?r:3);s.push(new Uint8Array([29,119,o]));const a=this.getTextPosition(t);s.push(new Uint8Array([29,72,a]));const c=he[t.format],h=this.encodeContent(e,t.format);return s.push(new Uint8Array([29,107,c,h.length,...h])),s}validate(e,t){const i=[];if(!e||"string"!=typeof e)return i.push({field:"content",message:"Barcode content is required",code:"REQUIRED"}),{valid:!1,errors:i};switch(t){case"EAN13":this.validateEAN13(e,i);break;case"EAN8":this.validateEAN8(e,i);break;case"UPCA":this.validateUPCA(e,i);break;case"CODE39":this.validateCode39(e,i);break;case"CODE128":this.validateCode128(e,i);break;case"ITF":this.validateITF(e,i);break;case"CODABAR":this.validateCodabar(e,i);break;default:i.push({field:"format",message:"Unsupported barcode format: "+t,code:"UNSUPPORTED_FORMAT"})}return{valid:0===i.length,errors:i}}getSupportedFormats(){return Object.values(ce)}validateEAN13(e,t){if(/^\d{12,13}$/.test(e)){if(13===e.length){const i=this.calculateEANCheckDigit(e.substring(0,12)),r=e[12];void 0!==r&&parseInt(r)!==i&&t.push({field:"content",message:"Invalid EAN-13 check digit",code:"INVALID_CHECK_DIGIT"})}}else t.push({field:"content",message:"EAN-13 must be 12 or 13 digits",code:"INVALID_LENGTH"})}validateEAN8(e,t){if(/^\d{7,8}$/.test(e)){if(8===e.length){const i=this.calculateEANCheckDigit(e.substring(0,7)),r=e[7];void 0!==r&&parseInt(r)!==i&&t.push({field:"content",message:"Invalid EAN-8 check digit",code:"INVALID_CHECK_DIGIT"})}}else t.push({field:"content",message:"EAN-8 must be 7 or 8 digits",code:"INVALID_LENGTH"})}validateUPCA(e,t){if(/^\d{11,12}$/.test(e)){if(12===e.length){const i=this.calculateUPCACheckDigit(e.substring(0,11)),r=e[11];void 0!==r&&parseInt(r)!==i&&t.push({field:"content",message:"Invalid UPC-A check digit",code:"INVALID_CHECK_DIGIT"})}}else t.push({field:"content",message:"UPC-A must be 11 or 12 digits",code:"INVALID_LENGTH"})}validateCode39(e,t){/^[0-9A-Z\s\-.$\/+%]+$/.test(e.toUpperCase())||t.push({field:"content",message:"Code 39 only supports: 0-9, A-Z, space, - . $ / + %",code:"INVALID_CHARACTERS"}),(0===e.length||e.length>255)&&t.push({field:"content",message:"Code 39 content must be 1-255 characters",code:"INVALID_LENGTH"})}validateCode128(e,t){for(let i=0;i<e.length;i++)if(e.charCodeAt(i)>127){t.push({field:"content",message:"Code 128 only supports ASCII characters (0-127)",code:"INVALID_CHARACTERS"});break}(0===e.length||e.length>255)&&t.push({field:"content",message:"Code 128 content must be 1-255 characters",code:"INVALID_LENGTH"})}validateITF(e,t){/^\d+$/.test(e)||t.push({field:"content",message:"ITF only supports numeric characters",code:"INVALID_CHARACTERS"}),e.length%2!=0&&t.push({field:"content",message:"ITF content must have even number of digits",code:"INVALID_LENGTH"}),(0===e.length||e.length>255)&&t.push({field:"content",message:"ITF content must be 2-254 digits (even)",code:"INVALID_LENGTH"})}validateCodabar(e,t){/^[ABCDabcd][0-9\-$:/.+]+[ABCDabcd]$/.test(e)||t.push({field:"content",message:"CODABAR must start and end with A/B/C/D and contain only 0-9, - $ : / . +",code:"INVALID_FORMAT"}),(3>e.length||e.length>255)&&t.push({field:"content",message:"CODABAR content must be 3-255 characters",code:"INVALID_LENGTH"})}calculateEANCheckDigit(e){let t=0;const i=e.length;for(let r=0;i>r;r++){const i=e[r];void 0!==i&&(t+=parseInt(i)*(r%2==0?1:3))}return(10-t%10)%10}calculateUPCACheckDigit(e){let t=0;for(let i=0;11>i;i++){const r=e[i];void 0!==r&&(t+=parseInt(r)*(i%2==0?3:1))}return(10-t%10)%10}encodeContent(e,t){return"CODE128"===t?[123,/^\d+$/.test(e)&&e.length>=4?67:66,...e.split("").map(e=>e.charCodeAt(0))]:e.split("").map(e=>e.charCodeAt(0))}getTextPosition(e){var t,i,r;if(!1===e.showText)return le.none;const s=null!=(t=e.textPosition)?t:"below";return null!=(r=null!=(i=le[s])?i:le.below)?r:2}clampHeight(e){return Math.max(1,Math.min(255,Math.floor(e)))}clampWidth(e){return Math.max(2,Math.min(6,Math.floor(e)))}}class ue{constructor(e){this.buffer=[],this._cachedBuffer=null,this.logger=m.scope("CommandBuilder"),this.driver=e||new ie,this.formatter=new ae,this.barcodeGenerator=new de,this.buffer.push(...this.driver.init())}invalidateCache(){this._cachedBuffer=null}text(e,t){return this.logger.debug("Adding text:",e.substring(0,50)),this.buffer.push(...this.driver.text(e,t)),this.invalidateCache(),this}feed(e=1){return this.logger.debug("Adding feed:",e),this.buffer.push(...this.driver.feed(e)),this.invalidateCache(),this}cut(){return this.logger.debug("Adding cut command"),this.buffer.push(...this.driver.cut()),this.invalidateCache(),this}image(e,t,i){return this.logger.debug(`Adding image: ${t}x${i}`),this.buffer.push(...this.driver.image(e,t,i)),this.invalidateCache(),this}qr(e,t){return this.logger.debug("Adding QR code:",e.substring(0,50)),this.buffer.push(...this.driver.qr(e,t)),this.invalidateCache(),this}clear(){return this.logger.debug("Clearing buffer"),this.buffer=[],this.buffer.push(...this.driver.init()),this.invalidateCache(),this}align(e){return this.logger.debug("Setting alignment:",e),this.buffer.push(...this.formatter.align(e)),this.invalidateCache(),this}setSize(e,t){return this.logger.debug(`Setting size: ${e}x${t}`),this.buffer.push(...this.formatter.setSize(e,t)),this.invalidateCache(),this}setBold(e){return this.logger.debug("Setting bold:",e),this.buffer.push(...this.formatter.setBold(e)),this.invalidateCache(),this}setUnderline(e){return this.logger.debug("Setting underline:",e),this.buffer.push(...this.formatter.setUnderline(e)),this.invalidateCache(),this}setInverse(e){return this.logger.debug("Setting inverse:",e),this.buffer.push(...this.formatter.setInverse(e)),this.invalidateCache(),this}setStyle(e){return this.logger.debug("Setting style:",e),this.buffer.push(...this.formatter.setStyle(e)),this.invalidateCache(),this}resetStyle(){return this.logger.debug("Resetting style"),this.buffer.push(...this.formatter.resetStyle()),this.invalidateCache(),this}barcode(e,t){this.logger.debug(`Adding barcode: ${e} (${t.format})`);const i=this.barcodeGenerator.generate(e,t);return i.length>0?(this.buffer.push(...i),this.invalidateCache()):this.logger.warn("Failed to generate barcode for content: "+e),this}getBuffer(){if(this._cachedBuffer)return this._cachedBuffer;const e=this.buffer.reduce((e,t)=>e+t.length,0),t=new Uint8Array(e);let i=0;for(const r of this.buffer)t.set(r,i),i+=r.length;return this._cachedBuffer=t,t}getTotalBytes(){return this.buffer.reduce((e,t)=>e+t.length,0)}}class ge extends b{constructor(e,t,i){if(super(),this.printerLogger=m.scope("BluetoothPrinter"),this.state=g.DISCONNECTED,e&&"function"==typeof e.connect){const t=e;this.connectionManager=new R(t),this.printJobManager=new B(this.connectionManager),this.commandBuilder=i||new ue}else this.connectionManager=e,this.printJobManager=t,this.commandBuilder=i,this.connectionManager||(this.connectionManager=new R,this.printJobManager=new B(this.connectionManager),this.commandBuilder=new ue);this.updateState()}updateState(){let e;e=this.connectionManager&&"function"==typeof this.connectionManager.getState?this.connectionManager.getState():g.CONNECTED;let t=!1,i=!1;this.printJobManager&&(t="function"==typeof this.printJobManager.isInProgress&&this.printJobManager.isInProgress(),i="function"==typeof this.printJobManager.isPaused&&this.printJobManager.isPaused()),this.state=i?g.PAUSED:t?g.PRINTING:e,this.emit("state-change",this.state),this.printerLogger.debug("State updated:",this.state)}connect(e){return u(this,null,function*(){this.printerLogger.info("Connecting to device:",e);try{return yield this.connectionManager.connect(e),this.updateState(),this.emit("connected",e),this.printerLogger.info("Connected successfully"),this}catch(t){const e=t instanceof y?t:new y(v.CONNECTION_FAILED,"Connection failed",t);throw this.emit("error",e),this.updateState(),e}})}disconnect(){return u(this,null,function*(){const e=this.connectionManager.getDeviceId();if(e){this.printerLogger.info("Disconnecting from device:",e);try{yield this.connectionManager.disconnect(),this.printJobManager.cancel(),this.updateState(),this.emit("disconnected",e),this.printerLogger.info("Disconnected successfully")}catch(t){const e=new y(v.DEVICE_DISCONNECTED,"Disconnect failed",t);throw this.emit("error",e),this.updateState(),e}}else this.printerLogger.warn("Disconnect called but no device connected")})}text(e,t){return this.commandBuilder.text(e,t),this}feed(e=1){return this.commandBuilder.feed(e),this}cut(){return this.commandBuilder.cut(),this}image(e,t,i){return this.commandBuilder.image(e,t,i),this}qr(e,t){return this.commandBuilder.qr(e,t),this}setOptions(e){return this.printJobManager.setOptions(e),this}pause(){this.printJobManager.pause(),this.updateState(),this.printerLogger.info("Print job paused")}resume(){return u(this,null,function*(){this.printerLogger.info("Resuming print job");try{yield this.printJobManager.resume(),this.updateState(),this.printerLogger.info("Print job resumed")}catch(e){const t=new y(v.PRINT_JOB_FAILED,"Failed to resume print job",e);throw this.emit("error",t),this.updateState(),t}})}cancel(){this.printJobManager.cancel(),this.commandBuilder.clear(),this.updateState(),this.printerLogger.info("Print job cancelled")}remaining(){return this.printJobManager.remaining()}print(){return u(this,null,function*(){if("function"==typeof this.connectionManager.isConnected&&!this.connectionManager.isConnected())throw new y(v.CONNECTION_FAILED,"Printer not connected. Call connect() first.");const e=this.commandBuilder.getBuffer();this.printerLogger.info(`Starting print job: ${e.length} bytes`),this.commandBuilder.clear(),this.updateState(),this.printJobManager.setProgressCallback((e,t)=>{this.emit("progress",{sent:e,total:t})});try{yield this.printJobManager.start(e),"function"==typeof this.printJobManager.isPaused&&this.printJobManager.isPaused()?this.printerLogger.info("Print job paused"):(this.emit("print-complete"),this.printerLogger.info("Print job completed successfully"))}catch(t){this.printerLogger.error("Print job failed with error:",t);const e=t instanceof y?t:new y(v.PRINT_JOB_FAILED,"Print job failed",t);throw this.emit("error",e),e}finally{this.updateState()}})}align(e){return this.commandBuilder.align(e),this}setSize(e,t){return this.commandBuilder.setSize(e,t),this}setBold(e){return this.commandBuilder.setBold(e),this}setUnderline(e){return this.commandBuilder.setUnderline(e),this}resetStyle(){return this.commandBuilder.resetStyle(),this}barcode(e,t,i){return this.commandBuilder.barcode(e,l({format:t},i)),this}getConnectionManager(){return this.connectionManager}getCommandBuilder(){return this.commandBuilder}}var fe=(e=>(e.PENDING="pending",e.IN_PROGRESS="in_progress",e.COMPLETED="completed",e.FAILED="failed",e.CANCELLED="cancelled",e.PAUSED="paused",e))(fe||{}),pe=(e=>(e[e.LOW=0]="LOW",e[e.NORMAL=1]="NORMAL",e[e.HIGH=2]="HIGH",e[e.URGENT=3]="URGENT",e))(pe||{});const me={maxSize:100,defaultRetries:3,retryDelay:1e3,autoProcess:!0,concurrency:1};class be{constructor(e){this.logger=m.scope("PrintQueue"),this.listeners=new Map,this.jobs=new Map,this.pendingQueue=[],this.isPaused=!1,this.isProcessing=!1,this.activeJobs=0,this.jobCounter=0,this.executor=null,this.config=l(l({},me),e)}setExecutor(e){this.executor=e}add(e,t){var i,r;if(this.jobs.size>=this.config.maxSize)throw Error("Queue is full");const s=this.generateJobId(),n={id:s,data:e,status:"pending",priority:null!=(i=null==t?void 0:t.priority)?i:1,createdAt:Date.now(),retryCount:0,maxRetries:null!=(r=null==t?void 0:t.maxRetries)?r:this.config.defaultRetries,metadata:null==t?void 0:t.metadata};return this.jobs.set(s,n),this.insertByPriority(s,n.priority),this.emit("job-added",n),this.logger.debug(`Job added: ${s} (priority: ${n.priority})`),this.config.autoProcess&&!this.isPaused&&this.processQueue(),s}getJob(e){var t;return null!=(t=this.jobs.get(e))?t:null}cancel(e){const t=this.jobs.get(e);return!!t&&("in_progress"===t.status?(this.logger.warn("Cannot cancel in-progress job: "+e),!1):"completed"!==t.status&&"cancelled"!==t.status&&(t.status="cancelled",this.removeFromPendingQueue(e),this.emit("job-cancelled",t),this.logger.debug("Job cancelled: "+e),!0))}pause(){this.isPaused||(this.isPaused=!0,this.emit("queue-paused",void 0),this.logger.info("Queue paused"))}resume(){this.isPaused&&(this.isPaused=!1,this.emit("queue-resumed",void 0),this.logger.info("Queue resumed"),this.config.autoProcess&&this.processQueue())}clear(){const e=[...this.pendingQueue];for(const t of e){const e=this.jobs.get(t);e&&"pending"===e.status&&(e.status="cancelled",this.emit("job-cancelled",e))}this.pendingQueue=[],this.logger.info("Queue cleared")}getQueueStatus(){let e=0,t=0,i=0,r=0;for(const s of this.jobs.values())switch(s.status){case"pending":case"paused":e++;break;case"in_progress":t++;break;case"completed":i++;break;case"failed":r++}return{pending:e,inProgress:t,completed:i,failed:r}}getAllJobs(){return Array.from(this.jobs.values())}getPendingJobs(){return this.pendingQueue.map(e=>this.jobs.get(e)).filter(e=>void 0!==e)}get paused(){return this.isPaused}get size(){return this.pendingQueue.length}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){const i=this.listeners.get(e);i&&i.delete(t)}processQueue(){if(!this.isProcessing&&!this.isPaused&&this.activeJobs<this.config.concurrency)if(0!==this.pendingQueue.length){for(this.isProcessing=!0;this.pendingQueue.length>0&&this.activeJobs<this.config.concurrency&&!this.isPaused;){const e=this.pendingQueue.shift();if(!e)break;const t=this.jobs.get(e);t&&"pending"===t.status&&(this.activeJobs++,this.executeJob(t).catch(e=>{this.logger.error(`Unhandled error in job execution for ${t.id}:`,e)}).finally(()=>{this.activeJobs--,this.isPaused||this.processQueue()}))}this.isProcessing=!1}else this.emit("queue-empty",void 0)}executeJob(e){return u(this,null,function*(){e.status="in_progress",e.startedAt=Date.now(),this.emit("job-started",e),this.logger.debug("Job started: "+e.id);try{this.executor?yield this.executor(e):yield new Promise(e=>setTimeout(e,100)),e.status="completed",e.completedAt=Date.now(),this.emit("job-completed",e),this.logger.debug("Job completed: "+e.id)}catch(t){e.retryCount++,e.error=t instanceof Error?t:Error(t+""),e.retryCount<e.maxRetries?(this.logger.warn(`Job ${e.id} failed, retrying (${e.retryCount}/${e.maxRetries})`),e.status="pending",setTimeout(()=>{"pending"===e.status&&(this.insertByPriority(e.id,e.priority),this.config.autoProcess&&!this.isPaused&&this.processQueue())},this.config.retryDelay)):(e.status="failed",e.completedAt=Date.now(),this.emit("job-failed",e),this.logger.error("Job failed: "+e.id,t))}})}insertByPriority(e,t){let i=this.pendingQueue.length;for(let r=0;r<this.pendingQueue.length;r++){const e=this.pendingQueue[r];if(!e)continue;const s=this.jobs.get(e);if(s&&s.priority<t){i=r;break}}this.pendingQueue.splice(i,0,e)}removeFromPendingQueue(e){const t=this.pendingQueue.indexOf(e);-1!==t&&this.pendingQueue.splice(t,1)}generateJobId(){return this.jobCounter++,`job_${Date.now()}_${this.jobCounter}`}emit(e,t){const i=this.listeners.get(e);i&&i.forEach(i=>{try{i(t)}catch(r){this.logger.error(`Error in event handler for "${e}":`,r)}})}}new be;class ve{constructor(e=1e3){this.logger=m.scope("PrintHistory"),this.entries=new Map,this.counter=0,this.maxEntries=e}addJob(e){var t;const i=this.generateId(),r=Date.now(),s={id:i,jobId:e.jobId,dataSize:e.data.length,status:e.status,priority:null!=(t=e.priority)?t:pe.NORMAL,createdAt:r,deviceId:e.deviceId,deviceName:e.deviceName,metadata:e.metadata};return this.entries.set(i,s),this.enforceMaxEntries(),this.logger.debug("History entry added: "+i),i}updateJob(e,t){const i=this.entries.get(e);i?(Object.assign(i,t),t.startedAt&&(i.startedAt=t.startedAt),t.completedAt&&(i.completedAt=t.completedAt,i.startedAt&&(i.duration=t.completedAt-i.startedAt)),t.error&&(i.error=t.error),t.status&&(i.status=t.status),this.logger.debug("History entry updated: "+e)):this.logger.warn("History entry not found: "+e)}getEntry(e){return this.entries.get(e)}getRecent(e=10){return Array.from(this.entries.values()).sort((e,t)=>t.createdAt-e.createdAt).slice(0,e)}query(e={}){let t=Array.from(this.entries.values());if(e.startDate&&(t=t.filter(t=>t.createdAt>=e.startDate)),e.endDate&&(t=t.filter(t=>t.createdAt<=e.endDate)),e.status){const i=Array.isArray(e.status)?e.status:[e.status];t=t.filter(e=>i.includes(e.status))}return e.deviceId&&(t=t.filter(t=>t.deviceId===e.deviceId)),t.sort((e,t)=>t.createdAt-e.createdAt),e.offset&&(t=t.slice(e.offset)),e.limit&&(t=t.slice(0,e.limit)),t}getStats(e){let t=Array.from(this.entries.values());if(null==e?void 0:e.days){const i=Date.now()-864e5*e.days;t=t.filter(e=>e.createdAt>=i)}const i=t.filter(e=>e.status===fe.COMPLETED),r=t.filter(e=>e.status===fe.FAILED||e.error),s=t.filter(e=>e.status===fe.CANCELLED),n=i.filter(e=>void 0!==e.duration).reduce((e,t)=>e+(t.duration||0),0),o=t.reduce((e,t)=>e+t.dataSize,0);return{total:t.length,completed:i.length,failed:r.length,cancelled:s.length,avgDuration:i.length>0?n/i.length:0,totalBytes:o,successRate:t.length>0?i.length/t.length*100:0}}clear(){this.entries.clear(),this.logger.info("Print history cleared")}export(){return JSON.stringify(Array.from(this.entries.values()),null,2)}import(e){try{const t=JSON.parse(e);let i=0;for(const e of t)e.id&&e.dataSize&&(this.entries.set(e.id,e),i++);return this.enforceMaxEntries(),this.logger.info(`Imported ${i} history entries`),i}catch(t){return this.logger.error("Failed to import history:",t),0}}generateId(){return this.counter++,`history_${Date.now()}_${this.counter}`}enforceMaxEntries(){if(this.entries.size<=this.maxEntries)return;const e=Array.from(this.entries.entries()).sort((e,t)=>e[1].createdAt-t[1].createdAt).slice(0,this.entries.size-this.maxEntries);for(const[t]of e)this.entries.delete(t);this.logger.debug(`Pruned ${e.length} old history entries`)}}const ye=new ve;class Ee{constructor(){this.logger=m.scope("PrinterStatus")}getStatus(e,t){return u(this,arguments,function*(e,t,i={}){const{timeout:r=3e3,includeRaw:s=!1}=i;try{const i=new Uint8Array([16,4]);yield e(i.buffer);const n=new Promise((e,t)=>{setTimeout(()=>{t(new y(v.CONNECTION_TIMEOUT,"Status query timed out"))},r)}),o=yield Promise.race([t(),n]);return this.parseStatus(new Uint8Array(o),s)}catch(n){return this.logger.error("Failed to get printer status:",n),l({paper:"unknown",timestamp:Date.now()},s&&{rawStatus:new Uint8Array(0)})}})}parseStatus(e,t){var i,r;const s={paper:"unknown",timestamp:Date.now()};if(t&&e.length>0&&(s.rawStatus=e),0===e.length)return this.logger.warn("Empty status response"),s;const n=null!=(i=e[0])?i:0;if(s.paper=32&n?"out":64&n?"low":"ok",1&n&&this.logger.debug("Drawer open detected"),2&n&&(s.coverOpen=!0,this.logger.debug("Cover open detected")),4&n&&(s.cutterError=!0,this.logger.debug("Cutter error detected")),16&n&&(s.overTemp=!0,this.logger.debug("Over temperature detected")),e.length>=2){const t=null!=(r=e[1])?r:0;4&t?s.paper="out":8&t&&(s.paper="low")}return this.logger.debug("Parsed status:",s),s}checkPaper(e,t){return u(this,null,function*(){return(yield this.getStatus(e,t)).paper})}isReady(e,t){return u(this,null,function*(){try{const i=yield this.getStatus(e,t);return"out"!==i.paper&&!i.cutterError&&!i.motorError}catch(i){return!1}})}static toString(e){const t=[];return t.push("Paper: "+e.paper),e.coverOpen&&t.push("Cover Open"),e.cutterError&&t.push("Cutter Error"),e.motorError&&t.push("Motor Error"),e.overTemp&&t.push("Over Temperature"),void 0!==e.batteryLevel&&t.push(`Battery: ${e.batteryLevel}%`),t.join(", ")}}const Ce=new Ee,Ie={maxBatchSize:51200,maxWaitTime:1e3,minBatchSize:1,enableMerging:!0,autoProcessInterval:500};class Se{constructor(e={}){this.logger=m.scope("BatchPrintManager"),this.jobs=[],this.listeners={"batch-ready":new Set,"batch-processed":new Set,"job-added":new Set,"job-rejected":new Set},this.isProcessing=!1,this.waitTimer=null,this.autoProcessTimer=null,this.stats={totalJobs:0,totalBytes:0,batchesProcessed:0,avgBatchSize:0,mergedJobs:0},this.config=l(l({},Ie),e)}on(e,t){this.listeners[e].add(t)}off(e,t){this.listeners[e].delete(t)}emit(e,t){this.listeners[e].forEach(i=>{try{i(t)}catch(r){this.logger.error(`Error in event handler for "${e}":`,r)}})}addJob(e,t=1,i){const r=this.generateId(),s={id:r,data:e,priority:t,addedAt:Date.now(),metadata:i};return this.jobs.push(s),this.stats.totalJobs++,this.jobs.sort((e,t)=>t.priority-e.priority),this.emit("job-added",s),this.logger.debug(`Job added: ${r} (priority: ${t}, queue size: ${this.jobs.length})`),this.startWaitTimer(),this.shouldProcessImmediately()&&this.emit("batch-ready",[...this.jobs]),this.startAutoProcess(),r}addJobs(e){return e.map(e=>this.addJob(e.data,e.priority,e.metadata))}cancelJob(e){const t=this.jobs.findIndex(t=>t.id===e);return-1!==t&&(this.jobs.splice(t,1),this.logger.debug("Job cancelled: "+e),!0)}cancelAll(){const e=this.jobs.length;this.jobs.length=0,this.clearTimers(),this.logger.info(`Cancelled ${e} jobs`)}get pendingCount(){return this.jobs.length}getPendingJobs(){return[...this.jobs]}getStats(){return l({},this.stats)}updateConfig(e){this.config=l(l({},this.config),e),this.logger.debug("Configuration updated")}processBatch(e){return u(this,null,function*(){if(this.isProcessing)throw new y(v.PRINT_JOB_IN_PROGRESS,"Batch processing already in progress");if(0===this.jobs.length)return this.logger.debug("No jobs to process"),0;this.isProcessing=!0,this.clearTimers();try{const t=this.prepareBatch(),i=this.mergeJobs(t);return this.logger.info(`Processing batch: ${t.length} jobs, ${i.length} bytes`),this.emit("batch-ready",t),yield e(i),this.stats.totalBytes+=i.length,this.stats.batchesProcessed++,this.stats.avgBatchSize=(this.stats.avgBatchSize*(this.stats.batchesProcessed-1)+i.length)/this.stats.batchesProcessed,this.jobs.splice(0,t.length),this.emit("batch-processed",{jobCount:t.length,bytes:i.length}),this.logger.info(`Batch processed: ${t.length} jobs`),t.length}finally{this.isProcessing=!1}})}prepareBatch(){const e=[];let t=0;for(const i of this.jobs){if(e.length>0&&t+i.data.length>this.config.maxBatchSize&&e.length>=this.config.minBatchSize)break;e.push(i),t+=i.data.length}return e}mergeJobs(e){var t,i;if(!this.config.enableMerging||1===e.length)return null!=(i=null==(t=e[0])?void 0:t.data)?i:new Uint8Array(0);let r=0;for(const o of e)r+=o.data.length;const s=new Uint8Array(r);let n=0;for(const o of e)s.set(o.data,n),n+=o.data.length,this.stats.mergedJobs++;return this.logger.debug(`Merged ${e.length} jobs into ${r} bytes`),s}shouldProcessImmediately(){if(0===this.jobs.length)return!1;const e=this.jobs[0];return!(1!==this.jobs.length||!e||e.data.length<.8*this.config.maxBatchSize)||this.jobs.reduce((e,t)=>e+t.data.length,0)>=this.config.maxBatchSize}startWaitTimer(){this.clearWaitTimer(),this.config.maxWaitTime>0&&(this.waitTimer=setTimeout(()=>{this.logger.debug("Wait timer expired, batch ready"),this.emit("batch-ready",[...this.jobs])},this.config.maxWaitTime))}clearWaitTimer(){this.waitTimer&&(clearTimeout(this.waitTimer),this.waitTimer=null)}startAutoProcess(){!this.autoProcessTimer&&this.config.autoProcessInterval>0&&(this.autoProcessTimer=setInterval(()=>{this.shouldProcessImmediately()&&this.emit("batch-ready",[...this.jobs])},this.config.autoProcessInterval))}stopAutoProcess(){this.autoProcessTimer&&(clearInterval(this.autoProcessTimer),this.autoProcessTimer=null)}clearTimers(){this.clearWaitTimer(),this.stopAutoProcess()}generateId(){return`batch_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}resetStats(){this.stats={totalJobs:0,totalBytes:0,batchesProcessed:0,avgBatchSize:0,mergedJobs:0}}destroy(){this.cancelAll();for(const e of Object.keys(this.listeners))this.listeners[e].clear();this.logger.info("BatchPrintManager destroyed")}}const De=new Se;class we{constructor(){this.logger=m.scope("DeviceManager"),this.listeners=new Map,this.discoveredDevices=new Map,this.deviceCache=new Map,this.isScanning=!1,this.scanTimeout=null,this.currentScanOptions=null,this.PAIRED_DEVICES_KEY="bluetooth_paired_devices",this.CACHE_EXPIRY=864e5}startScan(e){return u(this,null,function*(){var i,r;if(this.isScanning)return void this.logger.warn("Scan already in progress");this.currentScanOptions=null!=e?e:{};const s=null!=(i=null==e?void 0:e.timeout)?i:15e3;try{yield this.initBluetooth(),this.discoveredDevices.clear(),yield t.startBluetoothDevicesDiscovery({allowDuplicatesKey:null!=(r=null==e?void 0:e.allowDuplicates)&&r,services:null==e?void 0:e.serviceUUIDs}),this.isScanning=!0,this.emit("scan-start",void 0),this.logger.info("Bluetooth scan started"),t.onBluetoothDeviceFound(this.handleDeviceFound.bind(this)),this.scanTimeout=setTimeout(()=>{this.stopScan().catch(e=>{this.logger.error("Error stopping scan on timeout:",e)})},s)}catch(n){this.isScanning=!1;const e=n instanceof Error?n:Error(n+"");throw this.emit("error",e),e}})}stopScan(){return u(this,null,function*(){if(this.isScanning)try{this.scanTimeout&&(clearTimeout(this.scanTimeout),this.scanTimeout=null),yield t.stopBluetoothDevicesDiscovery(),this.isScanning=!1,this.currentScanOptions=null,this.emit("scan-stop",void 0),this.logger.info("Bluetooth scan stopped")}catch(e){throw this.logger.error("Error stopping scan:",e),e}})}getDiscoveredDevices(){return Array.from(this.discoveredDevices.values())}getPairedDevices(){try{const e=t.getStorageSync(this.PAIRED_DEVICES_KEY);return e&&Array.isArray(e)?Promise.resolve(e.map(e=>d(l({},e),{isPaired:!0}))):Promise.resolve([])}catch(e){return this.logger.error("Error getting paired devices:",e),Promise.resolve([])}}connect(e){return u(this,null,function*(){try{this.logger.info("Connecting to device: "+e),yield t.createBLEConnection({deviceId:e});const i=(yield t.getBLEDeviceServices({deviceId:e})).services;if(0===i.length)throw Error("No services found on device");let r,s;for(const o of i){const i=yield t.getBLEDeviceCharacteristics({deviceId:e,serviceId:o.uuid});for(const e of i.characteristics)if(e.properties.write||e.properties.writeNoResponse){r=o.uuid,s=e.uuid;break}if(s)break}if(!r||!s)throw Error("No writable characteristic found");const n=this.discoveredDevices.get(e);n&&(this.deviceCache.set(e,{device:n,serviceId:r,characteristicId:s,cachedAt:Date.now()}),this.savePairedDevice(n)),this.emit("device-connected",e),this.logger.info("Connected to device: "+e)}catch(i){const e=i instanceof Error?i:Error(i+"");throw this.emit("error",e),e}})}disconnect(e){return u(this,null,function*(){try{this.logger.info("Disconnecting from device: "+e),yield t.closeBLEConnection({deviceId:e}),this.emit("device-disconnected",e),this.logger.info("Disconnected from device: "+e)}catch(i){throw this.logger.error("Error disconnecting:",i),i}})}getDeviceInfo(e){const t=this.discoveredDevices.get(e);if(t)return t;const i=this.deviceCache.get(e);return i&&Date.now()-i.cachedAt<this.CACHE_EXPIRY?i.device:null}getCachedServiceInfo(e){const t=this.deviceCache.get(e);return t&&t.serviceId&&t.characteristicId?{serviceId:t.serviceId,characteristicId:t.characteristicId}:null}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){const i=this.listeners.get(e);i&&i.delete(t)}get scanning(){return this.isScanning}emit(e,t){const i=this.listeners.get(e);i&&i.forEach(i=>{try{i(t)}catch(r){this.logger.error(`Error in event handler for "${e}":`,r)}})}initBluetooth(){return u(this,null,function*(){try{yield t.openBluetoothAdapter()}catch(e){if(10001!==e.errCode)throw e}})}handleDeviceFound(e){var t,i;for(const r of e.devices){if(!r.name&&!r.localName)continue;if(null==(t=this.currentScanOptions)?void 0:t.nameFilter){const e=r.name||r.localName||"",t=this.currentScanOptions.nameFilter;if("string"==typeof t){if(!e.toLowerCase().includes(t.toLowerCase()))continue}else if(t instanceof RegExp&&!t.test(e))continue}const e={deviceId:r.deviceId,name:r.name||r.localName||"Unknown",rssi:r.RSSI,advertisData:r.advertisData,serviceUUIDs:r.advertisServiceUUIDs,localName:r.localName},s=this.discoveredDevices.get(r.deviceId);s?(null==(i=this.currentScanOptions)?void 0:i.allowDuplicates)&&(s.rssi=r.RSSI,this.emit("device-found",s)):(this.discoveredDevices.set(r.deviceId,e),this.emit("device-found",e),this.logger.debug(`Device found: ${e.name} (${r.deviceId})`))}}savePairedDevice(e){try{const i=t.getStorageSync(this.PAIRED_DEVICES_KEY),r=i&&Array.isArray(i)?i:[],s=r.findIndex(t=>t.deviceId===e.deviceId),n=d(l({},e),{isPaired:!0,lastConnected:Date.now()});0>s?r.push(n):r[s]=n,t.setStorageSync(this.PAIRED_DEVICES_KEY,r)}catch(i){this.logger.error("Error saving paired device:",i)}}clearCache(){this.deviceCache.clear(),this.discoveredDevices.clear()}}const Ae=new we;class $e{constructor(){this.logger=m.scope("MultiPrinterManager"),this.printers=new Map,this.deviceToPrinter=new Map,this.listeners={"printer-connected":new Set,"printer-disconnected":new Set,"printer-error":new Set,"broadcast-complete":new Set}}on(e,t){this.listeners[e].add(t)}off(e,t){this.listeners[e].delete(t)}emit(e,t){this.listeners[e].forEach(i=>{try{i(t)}catch(r){this.logger.error(`Error in event handler for "${e}":`,r)}})}connect(e,t,i){return u(this,null,function*(){let r,s,n;if(void 0===t?(r=e,s=e):(r=e,s=t,n=i),this.printers.has(r))return this.logger.warn("Printer already connected: "+r),r;const o=this.deviceToPrinter.get(s);if(o)throw new y(v.CONNECTION_FAILED,`Device ${s} is already connected as "${o}"`);this.logger.info(`Connecting printer "${r}" to device ${s}`);try{const e=new ge;e.on("error",e=>{this.emit("printer-error",{printerId:r,error:e})}),yield e.connect(s);const t={printerId:r,deviceId:s,name:n||"Printer "+r,printer:e,connectedAt:Date.now(),lastActivity:Date.now()};return this.printers.set(r,t),this.deviceToPrinter.set(s,r),this.emit("printer-connected",t),this.logger.info(`Printer "${r}" connected successfully`),r}catch(a){throw this.logger.error(`Failed to connect printer "${r}":`,a),a}})}disconnect(e){return u(this,null,function*(){const t=this.printers.get(e);if(t){this.logger.info(`Disconnecting printer "${e}"`);try{yield t.printer.disconnect()}catch(i){this.logger.warn(`Error during disconnect for "${e}":`,i)}this.deviceToPrinter.delete(t.deviceId),this.printers.delete(e),this.emit("printer-disconnected",{printerId:e,deviceId:t.deviceId}),this.logger.info(`Printer "${e}" disconnected`)}else this.logger.warn("Printer not found: "+e)})}disconnectAll(){return u(this,null,function*(){this.logger.info("Disconnecting all printers");const e=Array.from(this.printers.keys()).map(e=>this.disconnect(e).catch(t=>{this.logger.error(`Error disconnecting "${e}":`,t)}));yield Promise.allSettled(e),this.logger.info("All printers disconnected")})}getPrinter(e){var t;return null==(t=this.printers.get(e))?void 0:t.printer}getConnection(e){return this.printers.get(e)}getAllPrinters(){return Array.from(this.printers.values())}get count(){return this.printers.size}isConnected(e){return this.printers.has(e)}touch(e){const t=this.printers.get(e);t&&(t.lastActivity=Date.now())}print(e,t){const i=this.printers.get(e);if(!i)throw new y(v.DEVICE_NOT_FOUND,"Printer not found: "+e);i.lastActivity=Date.now(),this.touch(e),this.logger.debug(`Print to "${e}": ${t.length} bytes`)}broadcast(e){return u(this,arguments,function*(e,t={}){const{parallel:i=!0,continueOnError:r=!0}=t;this.logger.info(`Broadcasting to ${this.printers.size} printers`);const s={success:0,failed:0};if(0===this.printers.size)return s;const n=Array.from(this.printers.entries()).map(t=>u(this,[t],function*([t,i]){try{i.lastActivity=Date.now(),this.logger.debug(`Broadcast to "${t}": ${e.length} bytes`),s.success++}catch(n){if(this.logger.error(`Broadcast failed for "${t}":`,n),s.failed++,!r)throw n}}));if(i)yield Promise.allSettled(n);else for(const a of n)try{yield a}catch(o){}return this.emit("broadcast-complete",s),this.logger.info(`Broadcast complete: ${s.success} success, ${s.failed} failed`),s})}getIdlePrinters(){return Array.from(this.printers.values()).filter(e=>e.printer.state===g.CONNECTED).sort((e,t)=>{var i,r;return(null!=(i=e.lastActivity)?i:0)-(null!=(r=t.lastActivity)?r:0)})}getStats(){const e={total:this.printers.size,connected:0,byName:{}};for(const t of this.printers.values())t.printer.state===g.CONNECTED&&e.connected++,e.byName[t.name]=(e.byName[t.name]||0)+1;return e}cleanupInactive(e=3e5){return u(this,null,function*(){var t;const i=Date.now();let r=0;for(const[s,n]of this.printers.entries()){const o=i-(null!=(t=n.lastActivity)?t:n.connectedAt);o>e&&(this.logger.info(`Cleaning up inactive printer "${s}" (idle ${o}ms)`),yield this.disconnect(s),r++)}return r})}destroy(){return u(this,null,function*(){this.logger.info("Destroying MultiPrinterManager"),yield this.disconnectAll();for(const e of Object.keys(this.listeners))this.listeners[e].clear();this.logger.info("MultiPrinterManager destroyed")})}}const Te=new $e,Ne={maxJobs:50,expiryTime:864e5,storagePrefix:"bt_print_cache_",autoSync:!0};class Pe{constructor(e){this.logger=m.scope("OfflineCache"),this.listeners=new Map,this.syncExecutor=null,this.isSyncing=!1,this.config=l(l({},Ne),e),this.JOBS_KEY=this.config.storagePrefix+"jobs"}setSyncExecutor(e){this.syncExecutor=e}save(e){try{const t=this.loadJobs();if(t.length>=this.config.maxJobs){const e=Date.now(),i=t.findIndex(t=>t.expiresAt<e);-1!==i?t.splice(i,1):t.shift()}const i=t.findIndex(t=>t.id===e.id);-1!==i?t[i]=e:t.push(e),this.saveJobs(t),this.emit("job-saved",e),this.logger.debug("Job saved to cache: "+e.id)}catch(t){const e=t instanceof Error?t:Error(t+"");throw this.emit("error",e),e}}getAll(){return this.loadJobs()}remove(e){try{const t=this.loadJobs(),i=t.findIndex(t=>t.id===e);-1!==i&&(t.splice(i,1),this.saveJobs(t),this.emit("job-removed",e),this.logger.debug("Job removed from cache: "+e))}catch(t){const e=t instanceof Error?t:Error(t+"");throw this.emit("error",e),e}}cleanup(){try{const e=this.loadJobs(),t=Date.now(),i=e.filter(e=>e.expiresAt>t),r=e.length-i.length;return r>0&&(this.saveJobs(i),this.emit("cleanup-completed",r),this.logger.info(`Cleaned up ${r} expired jobs`)),r}catch(e){const t=e instanceof Error?e:Error(e+"");throw this.emit("error",t),t}}sync(){return u(this,null,function*(){if(this.isSyncing)return void this.logger.warn("Sync already in progress");if(!this.syncExecutor)return void this.logger.warn("No sync executor set");this.isSyncing=!0,this.emit("sync-started",void 0);let e=0,t=0;try{const r=this.loadJobs(),s=Date.now();for(const n of r)if(n.expiresAt<s)this.remove(n.id);else try{yield this.syncExecutor(n),this.remove(n.id),this.emit("job-synced",n),e++,this.logger.debug("Job synced: "+n.id)}catch(i){t++,n.retryCount++,n.lastError=i instanceof Error?i.message:i+"",this.save(n),this.logger.warn("Job sync failed: "+n.id,i)}this.emit("sync-completed",{success:e,failed:t}),this.logger.info(`Sync completed: ${e} success, ${t} failed`)}catch(i){const e=i instanceof Error?i:Error(i+"");throw this.emit("error",e),e}finally{this.isSyncing=!1}})}getStats(){const e=this.loadJobs(),t=Date.now();let i=0,r=0;for(const s of e)s.expiresAt<t?i++:r++;return{total:e.length,expired:i,pending:r}}get syncing(){return this.isSyncing}createJob(e,t,i){const r=Date.now();return{id:e,data:t,createdAt:r,expiresAt:r+this.config.expiryTime,retryCount:0,metadata:i}}on(e,t){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t)}off(e,t){const i=this.listeners.get(e);i&&i.delete(t)}clear(){try{t.removeStorageSync(this.JOBS_KEY),this.logger.info("Cache cleared")}catch(e){throw this.logger.error("Error clearing cache:",e),e}}loadJobs(){try{const e=t.getStorageSync(this.JOBS_KEY);return e&&Array.isArray(e)?e.map(e=>this.deserializeJob(e)):[]}catch(e){return this.logger.error("Error loading jobs:",e),[]}}saveJobs(e){try{const i=e.map(e=>this.serializeJob(e));t.setStorageSync(this.JOBS_KEY,i)}catch(i){throw this.logger.error("Error saving jobs:",i),i}}serializeJob(e){return{id:e.id,data:Array.from(e.data),createdAt:e.createdAt,expiresAt:e.expiresAt,retryCount:e.retryCount,lastError:e.lastError,metadata:e.metadata}}deserializeJob(e){return{id:e.id,data:new Uint8Array(e.data),createdAt:e.createdAt,expiresAt:e.expiresAt,retryCount:e.retryCount,lastError:e.lastError,metadata:e.metadata}}emit(e,t){const i=this.listeners.get(e);i&&i.forEach(i=>{try{i(t)}catch(r){this.logger.error(`Error in event handler for "${e}":`,r)}})}}new Pe;class Oe{constructor(e=48){this.logger=m.scope("TemplateEngine"),this.templates=new Map,this.paperWidth=e,this.formatter=new ae,this.barcodeGenerator=new de,this.driver=new ie}renderReceipt(e){var t;const i=[];i.push(...this.driver.init()),i.push(...this.formatter.align(re.CENTER)),i.push(...this.formatter.setSize(2,2)),i.push(...this.formatter.setBold(!0)),i.push(...this.driver.text(e.store.name)),i.push(...this.driver.feed(1)),i.push(...this.formatter.resetStyle()),e.store.address&&(i.push(...this.formatter.align(re.CENTER)),i.push(...this.driver.text(e.store.address)),i.push(...this.driver.feed(1))),e.store.phone&&(i.push(...this.formatter.align(re.CENTER)),i.push(...this.driver.text("\u7535\u8bdd: "+e.store.phone)),i.push(...this.driver.feed(1))),i.push(...this.renderLine()),e.order&&(i.push(...this.formatter.align(re.LEFT)),i.push(...this.driver.text("\u8ba2\u5355\u53f7: "+e.order.id)),i.push(...this.driver.feed(1)),i.push(...this.driver.text("\u65e5\u671f: "+e.order.date)),i.push(...this.driver.feed(1)),e.order.cashier&&(i.push(...this.driver.text("\u6536\u94f6\u5458: "+e.order.cashier)),i.push(...this.driver.feed(1))),i.push(...this.renderLine())),i.push(...this.formatter.align(re.LEFT)),i.push(...this.formatter.setBold(!0)),i.push(...this.driver.text(this.formatItemLine("\u5546\u54c1","\u6570\u91cf","\u91d1\u989d"))),i.push(...this.driver.feed(1)),i.push(...this.formatter.setBold(!1)),i.push(...this.renderLine("-"));for(const r of e.items){const e=r.quantity*r.price-(null!=(t=r.discount)?t:0);i.push(...this.driver.text(r.name)),i.push(...this.driver.feed(1)),i.push(...this.driver.text(this.formatItemLine("","x"+r.quantity,"\xa5"+e.toFixed(2)))),i.push(...this.driver.feed(1))}return i.push(...this.renderLine()),i.push(...this.formatter.align(re.RIGHT)),e.payment.subtotal!==e.payment.total&&(i.push(...this.driver.text("\u5c0f\u8ba1: \xa5"+e.payment.subtotal.toFixed(2))),i.push(...this.driver.feed(1))),e.payment.tax&&(i.push(...this.driver.text("\u7a0e\u989d: \xa5"+e.payment.tax.toFixed(2))),i.push(...this.driver.feed(1))),e.payment.discount&&(i.push(...this.driver.text("\u4f18\u60e0: -\xa5"+e.payment.discount.toFixed(2))),i.push(...this.driver.feed(1))),i.push(...this.formatter.setBold(!0)),i.push(...this.formatter.setSize(1,2)),i.push(...this.driver.text("\u5408\u8ba1: \xa5"+e.payment.total.toFixed(2))),i.push(...this.driver.feed(1)),i.push(...this.formatter.resetStyle()),i.push(...this.formatter.align(re.RIGHT)),i.push(...this.driver.text("\u652f\u4ed8\u65b9\u5f0f: "+e.payment.method)),i.push(...this.driver.feed(1)),void 0!==e.payment.received&&(i.push(...this.driver.text("\u5b9e\u6536: \xa5"+e.payment.received.toFixed(2))),i.push(...this.driver.feed(1))),void 0!==e.payment.change&&(i.push(...this.driver.text("\u627e\u96f6: \xa5"+e.payment.change.toFixed(2))),i.push(...this.driver.feed(1))),i.push(...this.renderLine()),e.qrCode&&(i.push(...this.formatter.align(re.CENTER)),i.push(...this.driver.qr(e.qrCode,{size:6})),i.push(...this.driver.feed(1))),e.footer?(i.push(...this.formatter.align(re.CENTER)),i.push(...this.driver.text(e.footer)),i.push(...this.driver.feed(1))):(i.push(...this.formatter.align(re.CENTER)),i.push(...this.driver.text("\u8c22\u8c22\u60e0\u987e\uff0c\u6b22\u8fce\u518d\u6b21\u5149\u4e34\uff01")),i.push(...this.driver.feed(1))),i.push(...this.driver.feed(3)),i.push(...this.driver.cut()),this.combineCommands(i)}renderLabel(e){var t;const i=[];if(i.push(...this.driver.init()),i.push(...this.formatter.align(re.CENTER)),i.push(...this.formatter.setBold(!0)),i.push(...this.driver.text(e.name)),i.push(...this.driver.feed(1)),i.push(...this.formatter.setBold(!1)),e.spec&&(i.push(...this.driver.text(e.spec)),i.push(...this.driver.feed(1))),i.push(...this.formatter.setSize(2,2)),i.push(...this.driver.text("\xa5"+e.price.toFixed(2))),i.push(...this.driver.feed(1)),i.push(...this.formatter.resetStyle()),i.push(...this.formatter.align(re.LEFT)),e.productionDate&&(i.push(...this.driver.text("\u751f\u4ea7\u65e5\u671f: "+e.productionDate)),i.push(...this.driver.feed(1))),e.expiryDate&&(i.push(...this.driver.text("\u4fdd\u8d28\u671f\u81f3: "+e.expiryDate)),i.push(...this.driver.feed(1))),e.barcode){i.push(...this.formatter.align(re.CENTER));const r=this.barcodeGenerator.generate(e.barcode,{format:null!=(t=e.barcodeFormat)?t:ce.CODE128,height:60,showText:!0});i.push(...r),i.push(...this.driver.feed(1))}return i.push(...this.driver.feed(2)),i.push(...this.driver.cut()),this.combineCommands(i)}render(e,t){const i=[];i.push(...this.driver.init());for(const r of e.elements)i.push(...this.renderElement(r,t));return i.push(...this.driver.feed(2)),i.push(...this.driver.cut()),this.combineCommands(i)}registerTemplate(e,t){this.templates.set(e,t),this.logger.debug("Template registered: "+e)}getTemplate(e){return this.templates.get(e)}validate(e,t){const i=[];for(const r of e.elements)"variable"===r.type&&void 0===this.getNestedValue(t,r.name)&&i.push({field:r.name,message:"Missing required variable: "+r.name,code:"MISSING_VARIABLE"});return{valid:0===i.length,errors:i}}renderElement(e,t){var i,r;const s=[];switch(e.type){case"text":{const i=this.substituteVariables(e.content,t);e.align&&s.push(...this.formatter.align(e.align)),e.size&&s.push(...this.formatter.setSize(e.size,e.size)),e.bold&&s.push(...this.formatter.setBold(!0)),s.push(...this.driver.text(i)),s.push(...this.driver.feed(1)),e.bold&&s.push(...this.formatter.setBold(!1)),e.size&&s.push(...this.formatter.setSize(1,1));break}case"line":s.push(...this.renderLine(e.char,e.length));break;case"image":s.push(...this.driver.image(e.data,e.width,e.height)),s.push(...this.driver.feed(1));break;case"qrcode":{const r=this.substituteVariables(e.content,t);s.push(...this.formatter.align(re.CENTER)),s.push(...this.driver.qr(r,{size:null!=(i=e.size)?i:6})),s.push(...this.driver.feed(1));break}case"barcode":{const i=this.substituteVariables(e.content,t);s.push(...this.formatter.align(re.CENTER));const n=this.barcodeGenerator.generate(i,{format:e.format,height:null!=(r=e.height)?r:60,showText:!0});s.push(...n),s.push(...this.driver.feed(1));break}case"feed":s.push(...this.driver.feed(e.lines));break;case"variable":{const i=this.getNestedValue(t,e.name);if(void 0!==i){const t=this.formatValue(i,e.format);s.push(...this.driver.text(t)),s.push(...this.driver.feed(1))}break}}return s}renderLine(e="-",t){const i=null!=t?t:this.paperWidth,r=e.repeat(i);return[...this.driver.text(r),...this.driver.feed(1)]}formatItemLine(e,t,i){const r=this.paperWidth-16;return`${e.padEnd(r).substring(0,r)}${t.padStart(8)}${i.padStart(8)}`}substituteVariables(e,t){return e.replace(/\{\{(\w+(?:\.\w+)*)\}\}/g,(e,i)=>{const r=this.getNestedValue(t,i);return void 0===r?"":"object"==typeof r?JSON.stringify(r):r+""})}getNestedValue(e,t){const i=t.split(".");let r=e;for(const s of i){if(null==r)return;if("object"!=typeof r)return;r=r[s]}return r}formatValue(e,t){return"currency"===t&&"number"==typeof e?"\xa5"+e.toFixed(2):"date"===t&&e instanceof Date?e.toLocaleDateString("zh-CN"):e+""}combineCommands(e){const t=e.reduce((e,t)=>e+t.length,0),i=new Uint8Array(t);let r=0;for(const s of e)i.set(s,r),r+=s.length;return i}}new Oe;const xe={paperWidth:58,dpi:203,backgroundColor:"#ffffff",foregroundColor:"#000000",fontSize:24,lineHeight:1.2};class Re{constructor(){this.logger=m.scope("PreviewRenderer")}render(e,t){const i=l(l({},xe),t),r=Math.floor(i.paperWidth/25.4*i.dpi),{lines:s,estimatedHeight:n}=this.parseCommands(e,i);return"undefined"!=typeof document&&"function"==typeof document.createElement?this.renderToCanvas(s,r,n,i):this.createPlaceholder(r,n)}renderToImageData(e,t){const i=l(l({},xe),t),r=Math.floor(i.paperWidth/25.4*i.dpi),{lines:s,estimatedHeight:n}=this.parseCommands(e,i);if("undefined"!=typeof document&&"function"==typeof document.createElement){const e=document.createElement("canvas");e.width=r,e.height=n;const t=e.getContext("2d");if(!t)throw Error("Failed to get canvas context");return this.drawToContext(t,s,r,n,i),t.getImageData(0,0,r,n)}return new ImageData(r,n)}parseCommands(e,t){var i,r,s,n,o,a,c,h;const l=[],d={alignment:0,widthScale:1,heightScale:1,bold:!1,underline:!1,inverse:!1,fontSize:t.fontSize,lineHeight:t.lineHeight};let u={segments:[],alignment:0,height:t.fontSize*t.lineHeight},g=0,f="";const p=()=>{f.length>0&&(u.segments.push({type:"text",content:f,bold:d.bold,underline:d.underline,inverse:d.inverse,widthScale:d.widthScale,heightScale:d.heightScale,fontSize:d.fontSize}),f="")},m=()=>{p(),(u.segments.length>0||0===l.length)&&(u.alignment=d.alignment,l.push(u)),u={segments:[],alignment:d.alignment,height:d.fontSize*d.heightScale*d.lineHeight}};for(;g<e.length;){const t=e[g];if(void 0!==t)if(27===t&&g+1<e.length)switch(e[g+1]){case 64:p(),d.alignment=0,d.widthScale=1,d.heightScale=1,d.bold=!1,d.underline=!1,d.inverse=!1,g+=2;break;case 97:if(p(),g+2<e.length){const t=e[g+2];d.alignment=0===t||1===t||2===t?t:0}g+=3;break;case 69:p(),g+2<e.length&&(d.bold=0!==e[g+2]),g+=3;break;case 45:p(),g+2<e.length&&(d.underline=0!==e[g+2]),g+=3;break;case 100:if(m(),g+2<e.length){const t=null!=(i=e[g+2])?i:1;for(let e=0;t-1>e;e++)l.push({segments:[],alignment:d.alignment,height:d.fontSize*d.lineHeight})}g+=3;break;default:g+=2}else if(29===t&&g+1<e.length)switch(e[g+1]){case 33:if(p(),g+2<e.length){const t=null!=(r=e[g+2])?r:0;d.widthScale=1+(t>>4&7),d.heightScale=1+(7&t)}g+=3;break;case 66:p(),g+2<e.length&&(d.inverse=0!==e[g+2]),g+=3;break;case 86:m(),l.push({segments:[{type:"cut"}],alignment:1,height:20}),g+=3;break;case 40:p(),g+3<e.length?g+=4+((null!=(s=e[g+2])?s:0)+256*(null!=(n=e[g+3])?n:0)):g+=2;break;case 118:if(p(),g+7<e.length){const t=(null!=(o=e[g+4])?o:0)+256*(null!=(a=e[g+5])?a:0),i=(null!=(c=e[g+6])?c:0)+256*(null!=(h=e[g+7])?h:0),r=t*i;l.push({segments:[{type:"image",width:8*t,height:i}],alignment:d.alignment,height:i}),g+=8+r}else g+=2;break;default:g+=2}else if(10===t)m(),g++;else if(t>=32&&128>t)f+=String.fromCharCode(t),g++;else if(128>t)g++;else if(g+1<e.length)if(void 0!==e[g+1])try{const t=new TextDecoder("gbk").decode(e.slice(g,g+2));f+=t,g+=2}catch(v){g++}else g++;else g++;else g++}p(),u.segments.length>0&&(u.alignment=d.alignment,l.push(u));const b=Math.max(100,l.reduce((e,t)=>e+t.height,0)+40);return{lines:l,estimatedHeight:b}}renderToCanvas(e,t,i,r){const s=document.createElement("canvas");s.width=t,s.height=i;const n=s.getContext("2d");if(!n)throw Error("Failed to get canvas context");return this.drawToContext(n,e,t,i,r),{base64:s.toDataURL("image/png"),width:t,height:i,mimeType:"image/png"}}drawToContext(e,t,i,r,s){e.fillStyle=s.backgroundColor,e.fillRect(0,0,i,r);let n=20;for(const o of t)if(0!==o.segments.length){for(const t of o.segments)if("text"===t.type){const r=t.fontSize*t.heightScale,a=t.bold?"bold":"normal";e.font=`${a} ${r}px monospace`;const c=e.measureText(t.content).width*t.widthScale;let h=10;switch(o.alignment){case 1:h=(i-c)/2;break;case 2:h=i-c-10}t.inverse?(e.fillStyle=s.foregroundColor,e.fillRect(h-2,n-r,c+4,1.2*r),e.fillStyle=s.backgroundColor):e.fillStyle=s.foregroundColor,t.widthScale>1?(e.save(),e.scale(t.widthScale,1),e.fillText(t.content,h/t.widthScale,n),e.restore()):e.fillText(t.content,h,n),t.underline&&(e.strokeStyle=s.foregroundColor,e.lineWidth=1,e.beginPath(),e.moveTo(h,n+2),e.lineTo(h+c,n+2),e.stroke())}else"cut"===t.type?(e.strokeStyle="#cccccc",e.setLineDash([5,5]),e.beginPath(),e.moveTo(0,n),e.lineTo(i,n),e.stroke(),e.setLineDash([])):"image"===t.type&&(e.fillStyle="#eeeeee",e.fillRect(10,n-t.height,t.width,t.height),e.strokeStyle="#cccccc",e.strokeRect(10,n-t.height,t.width,t.height));n+=o.height}else n+=o.height}createPlaceholder(e,t){return this.logger.warn("Canvas not available, returning placeholder"),{base64:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==",width:e,height:t,mimeType:"image/png"}}}new Re;const Me={adapter:{chunkSize:20,delay:20,retries:3,timeout:1e4},driver:{encoding:"GBK",paperWidth:58},logging:{level:f.WARN}};class Be{constructor(e="taro_bt_print_"){this.prefix=e}get(e,t){try{const i=localStorage.getItem(this.prefix+e);return null===i?t:JSON.parse(i)}catch(i){return t}}set(e,t){try{localStorage.setItem(this.prefix+e,JSON.stringify(t))}catch(i){m.scope("ConfigStorage").error(`Failed to save "${e}":`,i)}}remove(e){try{localStorage.removeItem(this.prefix+e)}catch(t){m.scope("ConfigStorage").error(`Failed to remove "${e}":`,t)}}clear(){try{const e=[];for(let t=0;t<localStorage.length;t++){const i=localStorage.key(t);(null==i?void 0:i.startsWith(this.prefix))&&e.push(i)}e.forEach(e=>localStorage.removeItem(e))}catch(e){m.scope("ConfigStorage").error("Failed to clear storage:",e)}}}const _e={defaultEncoding:"GBK",defaultChunkSize:20,defaultChunkDelay:20,defaultRetries:3,defaultAutoReconnect:!0,scanTimeout:15e3,enableLogging:!0},Le="printers",Fe="global_config",Ue="last_used_printer";class je{constructor(e){this.logger=m.scope("PrinterConfigManager"),this.printers=new Map,this.lastUsedPrinterId=null,this.storage=e||new Be,this.globalConfig=l({},_e),this.load()}load(){try{const e=this.storage.get(Le,[]);this.printers.clear();for(const i of e)i.id&&this.printers.set(i.id,i);const t=this.storage.get(Fe,null);t&&(this.globalConfig=l(l({},_e),t)),this.lastUsedPrinterId=this.storage.get(Ue,null),this.logger.debug(`Loaded ${this.printers.size} saved printers`)}catch(e){this.logger.error("Failed to load configuration:",e)}}save(){try{const e=Array.from(this.printers.values());this.storage.set(Le,e),this.storage.set(Fe,this.globalConfig),this.lastUsedPrinterId?this.storage.set(Ue,this.lastUsedPrinterId):this.storage.remove(Ue)}catch(e){this.logger.error("Failed to save configuration:",e)}}savePrinter(e){var t;const i=Date.now(),r=this.printers.get(e.id),s=d(l({},e),{id:e.id,createdAt:null!=(t=null==r?void 0:r.createdAt)?t:i,updatedAt:i});if(s.isDefault)for(const[n,o]of this.printers.entries())n!==e.id&&o.isDefault&&this.printers.set(n,d(l({},o),{isDefault:!1}));return this.printers.set(e.id,s),this.save(),this.logger.info(`Saved printer: ${e.id} (${e.name})`),e.id}getPrinter(e){return this.printers.get(e)}getSavedPrinters(){return Array.from(this.printers.values())}getDefaultPrinter(){for(const e of this.printers.values())if(e.isDefault)return e;if(this.lastUsedPrinterId)return this.printers.get(this.lastUsedPrinterId)}removePrinter(e){const t=this.printers.delete(e);return t&&(this.save(),this.logger.info("Removed printer: "+e),this.lastUsedPrinterId===e&&(this.lastUsedPrinterId=null,this.save())),t}setDefaultPrinter(e){const t=this.printers.get(e);if(!t)throw Error("Printer not found: "+e);for(const[i,r]of this.printers.entries())r.isDefault&&i!==e&&this.printers.set(i,d(l({},r),{isDefault:!1}));this.printers.set(e,d(l({},t),{isDefault:!0})),this.save(),this.logger.info("Set default printer: "+e)}setLastUsed(e){if(!this.printers.has(e))return void this.logger.warn("Cannot set last used: printer not found "+e);this.lastUsedPrinterId=e;const t=this.printers.get(e);t&&this.printers.set(e,d(l({},t),{lastConnected:Date.now()})),this.save()}getLastUsedId(){return this.lastUsedPrinterId}getGlobalConfig(){return l({},this.globalConfig)}updateGlobalConfig(e){this.globalConfig=l(l({},this.globalConfig),e),this.save(),this.logger.debug("Global config updated")}resetGlobalConfig(){this.globalConfig=l({},_e),this.save(),this.logger.info("Global config reset to defaults")}loadPrinterConfig(e){var t,i,r,s;const n=this.printers.get(e),o=(null==n?void 0:n.printConfig)||{};return{encoding:null!=(t=o.encoding)?t:this.globalConfig.defaultEncoding,chunkSize:null!=(i=o.chunkSize)?i:this.globalConfig.defaultChunkSize,chunkDelay:null!=(r=o.chunkDelay)?r:this.globalConfig.defaultChunkDelay,retries:null!=(s=o.retries)?s:this.globalConfig.defaultRetries}}export(){return JSON.stringify({printers:Array.from(this.printers.values()),globalConfig:this.globalConfig,lastUsedPrinterId:this.lastUsedPrinterId,exportedAt:Date.now()},null,2)}import(e,t=!1){try{const i=JSON.parse(e);let r=0;if(t||this.printers.clear(),i.printers&&Array.isArray(i.printers))for(const e of i.printers)e.id&&(this.printers.set(e.id,e),r++);return i.globalConfig&&(this.globalConfig=l(l({},_e),i.globalConfig)),i.lastUsedPrinterId&&this.printers.has(i.lastUsedPrinterId)&&(this.lastUsedPrinterId=i.lastUsedPrinterId),this.save(),this.logger.info(`Imported ${r} printers`),r}catch(i){return this.logger.error("Failed to import configuration:",i),0}}clear(){this.printers.clear(),this.lastUsedPrinterId=null,this.storage.clear(),this.logger.info("All configuration cleared")}getStats(){let e=!1;for(const t of this.printers.values())if(t.isDefault){e=!0;break}return{printerCount:this.printers.size,hasDefault:e,lastUsed:this.lastUsedPrinterId}}}const ke=new je;e.AdapterFactory=O,e.AlipayAdapter=S,e.BaiduAdapter=D,e.BarcodeFormat=ce,e.BarcodeGenerator=de,e.BaseAdapter=E,e.BatchPrintManager=Se,e.BluetoothPrintError=y,e.BluetoothPrinter=ge,e.ByteDanceAdapter=w,e.CommandBuilder=ue,e.ConnectionManager=R,e.CpclDriver=class{constructor(e=576,t=0){this.commands=[],this.logger=m.scope("CpclDriver"),this.pageWidth=576,this.pageHeight=0,this.pageWidth=e,this.pageHeight=t}setPageSize(e,t=0){return this.pageWidth=e,this.pageHeight=t,this}usePageSize(e){const[t,i]={"4X6":[576,864],"4X4":[576,576],"4X2":[576,288],"2.25X1.25":[324,180],A4:[992,1406],A5:[701,992],LETTER:[1050,1500],CUSTOM:[576,0]}[e]||[576,0];return this.pageWidth=t,this.pageHeight=i,this}pageStart(){return this.commands.push("! U1 SETLP 5 0 30"),this.commands.push("! U1 PAGE WIDTH "+this.pageWidth),this.pageHeight>0&&this.commands.push("! U1 PAGE HEIGHT "+this.pageHeight),this.commands.push("START"),this}pageEnd(){return this.commands.push("END"),this}formFeed(){return this.commands.push("FORM"),this}setLinePrint(e=5,t=0,i=30){return this.commands.push(`! U1 SETLP ${e} ${t} ${i}`),this}setFont(e=3,t=1,i=1,r=0){const s={0:"N",90:"R",180:"B",270:"I"}[r]||"N";return this.commands.push(`! U1 SETLP ${e} ${t} ${i} ${s}`),this}text(e){return this.commands.push("! U1 TEXT "+this.escapeText(e)),this}textAt(e,t){const{x:i=0,y:r=0,font:s=3,xMulti:n=1,yMulti:o=1,rotation:a=0}=t,c={0:"N",90:"R",180:"B",270:"I"}[a]||"N";return this.commands.push(`! U1 SETLP ${s} ${n} ${o} ${c}`),this.commands.push(`! U1 ${i} ${r} TEXT ${this.escapeText(e)}`),this}legacyText(e,t,i,r=3){return this.commands.push(`TEXT ${t} ${i} ${r} "${this.escapeText(e)}"`),this}barcode(e,t){const{x:i=0,y:r=0,type:s="128",height:n=50,wide:o=2,narrow:a=1,readable:c=!0}=t,h=c?"B":"N";switch(s){case"128":default:this.commands.push(`BARCODE 128 ${i} ${r} ${n} ${h} 0 ${a} ${o} "${e}"`);break;case"39":this.commands.push(`BARCODE 39 ${i} ${r} ${n} ${h} ${o} ${a} "${e}"`);break;case"EAN13":this.commands.push(`BARCODE EAN13 ${i} ${r} ${n} ${h} "${e}"`);break;case"EAN8":this.commands.push(`BARCODE EAN8 ${i} ${r} ${n} ${h} "${e}"`);break;case"UPCA":this.commands.push(`BARCODE UPCA ${i} ${r} ${n} ${h} "${e}"`);break;case"UPCE":this.commands.push(`BARCODE UPCE ${i} ${r} ${n} ${h} "${e}"`);break;case"PDF417":this.commands.push(`BARCODE PDF417 ${i} ${r} 6 200 "${e}"`);break;case"DATAMATRIX":this.commands.push(`BARCODE DATAMATRIX ${i} ${r} 200 "${e}"`);break;case"QR":this.qrcode(e,{x:i,y:r})}return this}code128(e,t=0,i=0,r=50){return this.barcode(e,{x:t,y:i,type:"128",height:r})}code39(e,t=0,i=0,r=50){return this.barcode(e,{x:t,y:i,type:"39",height:r,wide:2,narrow:1})}qrcode(e,t){const{x:i=0,y:r=0,model:s=2,errorCorrection:n="M",cellSize:o=4}=t||{};return this.commands.push(`BARCODE QR ${i} ${r} ${s} ${o} A ${n} "${e}"`),this}twoDBarcode(e,t,i=0,r=0,s=200){return"PDF417"===t?this.commands.push(`BARCODE PDF417 ${i} ${r} 6 ${s} "${e}"`):this.commands.push(`BARCODE DATAMATRIX ${i} ${r} ${s} "${e}"`),this}line(e){const{x1:t,y1:i,x2:r,y2:s,width:n=1}=e;return this.commands.push(`LINE ${t} ${i} ${r} ${s} ${n}`),this}box(e){const{x:t,y:i,width:r,height:s,thickness:n=1}=e;return this.commands.push(`BOX ${t} ${i} ${r} ${s} ${n}`),this}inverse(e,t,i,r){return this.commands.push(`INVERSE ${i} ${r} ${e} ${t}`),this}setDensity(e){const t=Math.min(50,Math.max(-50,e));return this.commands.push("! U1 SETDENSITY "+t),this}setSpeed(e){const t=Math.min(6,Math.max(2,e));return this.commands.push("! U1 SETSPEED "+t),this}cut(){return this.commands.push("CUT"),this}partialCut(){return this.commands.push("PCUT"),this}feedCut(){return this.commands.push("FEED CUT"),this}beep(e=1,t=5){return this.commands.push(`BEEP ${e} ${t}`),this}logo(e,t,i){return this.commands.push(`LOGO ${e} ${t} "${i}"`),this}downloadLogo(e,t){return this.commands.push("! DF "+e),this.logger.debug("CPCL logo download not fully implemented"),this.commands.push("! DF"),this}printLogo(e,t=0,i=0){return this.commands.push(`LOGO ${t} ${i} "${e}"`),this}getCommands(){return this.commands.join("\r\n")+"\r\n"}getBuffer(){const e=this.getCommands();return this.logger.debug("CPCL commands:\n"+e),ee.encode(e,"ASCII")}getCommandList(){return[...this.commands]}reset(){return this.commands=[],this}getPageWidth(){return this.pageWidth}escapeText(e){return e.replace(/"/g,'""')}},e.DEFAULT_CONFIG=Me,e.DeviceManager=we,e.Encoding=ee,e.EncodingService=Y,e.ErrorCode=v,e.EscPos=ie,e.EventEmitter=b,e.GPrinterDriver=class extends ie{openCashDrawer(e=0){return[new Uint8Array([27,112,e,50,200])]}beep(e=3,t=50){return[new Uint8Array([27,66,e,t])]}selfTest(){return[new Uint8Array([27,105])]}getStatus(){const e=[];for(let t=1;4>=t;t++)e.push(new Uint8Array([16,4,t]));return e}setCodePage(e){return[new Uint8Array([27,116,e])]}printAndFeed(e){return[new Uint8Array([27,100,e])]}setLeftMargin(e){return[new Uint8Array([27,108,e])]}setPrintWidth(e){return[new Uint8Array([27,87,e])]}},e.ImageProcessing=te,e.LogLevel=f,e.Logger=m,e.MultiPrinterManager=$e,e.OfflineCache=Pe,e.PlatformType=T,e.PluginManager=class{constructor(){this.plugins=new Map,this.logger=m.scope("PluginManager")}register(e,t){return u(this,null,function*(){if(this.plugins.has(e.name))throw new y(v.INVALID_CONFIGURATION,`Plugin "${e.name}" is already registered`);this.logger.info(`Registering plugin: ${e.name}${e.version?" v"+e.version:""}`),e.init&&(yield e.init(t)),this.plugins.set(e.name,e),this.logger.debug("Plugin registered: "+e.name)})}unregister(e){return u(this,null,function*(){const t=this.plugins.get(e);t?(t.destroy&&(yield t.destroy()),this.plugins.delete(e),this.logger.info("Plugin unregistered: "+e)):this.logger.warn("Plugin not found: "+e)})}get(e){return this.plugins.get(e)}getNames(){return Array.from(this.plugins.keys())}has(e){return this.plugins.has(e)}executeHook(e,...t){return u(this,null,function*(){let i;for(const[s,n]of this.plugins){const o=n.hooks[e];if(o)try{const e=yield o(...t);void 0!==e&&(i=e)}catch(r){this.logger.error(`Plugin "${s}" hook "${e}" failed:`,r)}}return i})}beforeConnect(e){return u(this,null,function*(){return(yield this.executeHook("beforeConnect",e))||e})}afterConnect(e){return u(this,null,function*(){yield this.executeHook("afterConnect",e)})}beforeDisconnect(e){return u(this,null,function*(){yield this.executeHook("beforeDisconnect",e)})}afterDisconnect(e){return u(this,null,function*(){yield this.executeHook("afterDisconnect",e)})}beforePrint(e){return u(this,null,function*(){return(yield this.executeHook("beforePrint",e))||e})}afterPrint(e){return u(this,null,function*(){yield this.executeHook("afterPrint",e)})}onError(e){return u(this,null,function*(){return!0===(yield this.executeHook("onError",e))})}onStateChange(e,t){return u(this,null,function*(){yield this.executeHook("onStateChange",e,t)})}onProgress(e,t){return u(this,null,function*(){yield this.executeHook("onProgress",e,t)})}clear(){return u(this,null,function*(){for(const e of this.plugins.keys())yield this.unregister(e)})}},e.PreviewRenderer=Re,e.PrintHistory=ve,e.PrintJobManager=B,e.PrintQueue=be,e.PrinterConfigManager=je,e.PrinterState=g,e.PrinterStatus=Ee,e.TaroAdapter=I,e.TemplateEngine=Oe,e.TextAlign=re,e.TextFormatter=ae,e.TsplDriver=class{constructor(){this.commands=[],this.logger=m.scope("TsplDriver"),this.dpi=203}setDPI(e){return this.dpi=e,this}mmToDots(e){return Math.round(e*this.dpi/25.4)}dotsToMm(e){return 25.4*e/this.dpi}size(e,t){return this.commands.push(`SIZE ${e} mm, ${t} mm`),this}gap(e,t=0){return this.commands.push(`GAP ${e} mm, ${t} mm`),this}speed(e){return this.commands.push("SPEED "+Math.min(10,Math.max(1,e))),this}density(e){return this.commands.push("DENSITY "+Math.min(15,Math.max(0,e))),this}direction(e){return this.commands.push("DIRECTION "+e),this}clear(){return this.commands.push("CLS"),this}text(e,t){const{x:i,y:r,font:s=2,rotation:n=0,xMultiplier:o=1,yMultiplier:a=1}=t;return this.commands.push(`TEXT ${i},${r},"${s}",${n},${o},${a},"${this.escapeString(e)}"`),this}barcode(e,t){const{x:i,y:r,type:s,height:n=100,narrow:o=2,wide:a=4,showText:c=!0,rotation:h=0}=t,l=c?1:0;return"QRCODE"===s?this.qrcode(e,{x:i,y:r,rotation:h}):(this.commands.push(`BARCODE ${i},${r},"${s}",${n},${l},${h},${o},${a},"${e}"`),this)}qrcode(e,t){const{x:i,y:r,eccLevel:s="M",cellWidth:n=6,mode:o="A",rotation:a=0}=t;return this.commands.push(`QRCODE ${i},${r},${s},${n},${o},${a},"${this.escapeString(e)}"`),this}box(e){const{x:t,y:i,width:r,height:s,thickness:n=2}=e;return this.commands.push(`BOX ${t},${i},${t+r},${i+s},${n}`),this}line(e){const{x1:t,y1:i,x2:r,y2:s,thickness:n=2}=e;if(t===r||i===s){const e=Math.abs(r-t)||n,o=Math.abs(s-i)||n;this.commands.push(`BAR ${Math.min(t,r)},${Math.min(i,s)},${e},${o}`)}else this.commands.push(`DIAGONAL ${t},${i},${n},${Math.sqrt(c(r-t,2)+c(s-i,2))},${180*Math.atan2(s-i,r-t)/Math.PI}`);return this}bar(e,t,i,r){return this.commands.push(`BAR ${e},${t},${i},${r}`),this}reverse(e,t,i,r){return this.commands.push(`REVERSE ${e},${t},${i},${r}`),this}print(e=1,t=1){return this.commands.push(`PRINT ${e},${t}`),this}feed(e=1){this.commands.push("FORMFEED");for(let t=1;e>t;t++)this.commands.push("FORMFEED");return this}cut(){return this.commands.push("CUT"),this}beep(){return this.commands.push("BEEP"),this}home(){return this.commands.push("HOME"),this}escapeString(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}getCommands(){return this.commands.join("\r\n")+"\r\n"}getBuffer(){const e=this.getCommands();return this.logger.debug("TSPL commands:\n"+e),ee.encode(e,"ASCII")}reset(){return this.commands=[],this}},e.WebBluetoothAdapter=$,e.ZplDriver=class{constructor(){this.commands=[],this.logger=m.scope("ZplDriver"),this.startFormat()}startFormat(){return this.commands.push("^XA"),this}endFormat(){return this.commands.push("^XZ"),this}labelHome(e,t){return this.commands.push(`^FO${e},${t}`),this}fieldData(e){return this.commands.push("^FD"+this.escapeField(e)),this}fieldOrigin(e,t){return this.commands.push(`^FO${e},${t}`),this}printWidth(e){return this.commands.push("^PW"+e),this}labelLength(e){return this.commands.push("^LL"+e),this}labelGap(e){return this.commands.push("^LS"+e),this}quantity(e){return this.commands.push(`^PQ${e},0,1,Y`),this}text(e,t){if(t){const{x:i=0,y:r=0,font:s="0",rotation:n="N",xMultiplier:o=1,yMultiplier:a=1}=t;this.commands.push(`^FO${i},${r}^A${s}${n},${a},${o}^FD${this.escapeField(e)}^FS`)}else this.commands.push(`^FD${this.escapeField(e)}^FS`);return this}textAt(e,t,i,r="0",s="N"){return this.commands.push(`^FO${t},${i}^A${r}${s}^FD${this.escapeField(e)}^FS`),this}font(e,t,i,r=30,s=20){return this.commands.push(`^FO${t},${i}^A${r},${s}^FD${this.escapeField(e)}^FS`),this}scalableText(e,t,i,r="0",s=30,n=20){return this.commands.push(`^FO${t},${i}^A${r}N,${s},${n}^FD${this.escapeField(e)}^FS`),this}barcode(e,t){const{x:i=0,y:r=0,type:s="128",height:n=50,showText:o="Y",checkDigit:a="N",interpretLine:c="Y",interpretLineAbove:h="N"}=t;return this.commands.push(`^FO${i},${r}^B${s}${o},${n},${c},${h},${a}^FD${this.escapeField(e)}^FS`),this}code128(e,t=0,i=0,r=50){return this.barcode(e,{x:t,y:i,type:"128",height:r})}code39(e,t=0,i=0,r=50){return this.barcode(e,{x:t,y:i,type:"39",height:r,checkDigit:"Y"})}ean13(e,t=0,i=0,r=50){return this.barcode(e,{x:t,y:i,type:"EAN13",height:r})}qrcode(e,t){const{x:i=0,y:r=0,model:s=2,magnification:n=4,errorCorrection:o="M"}=t||{},a=1===s?"1":"2";return this.commands.push(`^FO${i},${r}^BQN,${a},${n}^FD${o},${this.escapeField(e)}^FS`),this}box(e){const{x:t=0,y:i=0,width:r,height:s,borderThickness:n=2,cornerRounding:o=0}=e;return this.commands.push(`^FO${t},${i}^GB${r},${s},${n},${o}^FS`),this}line(e,t,i,r,s=2){const n=Math.abs(i-e)||s,o=Math.abs(r-t)||s,a=Math.min(e,i),c=Math.min(t,r);return this.commands.push(`^FO${a},${c}^GB${n},${o},${s}^FS`),this}circle(e,t,i,r=2){return this.commands.push(`^FO${e},${t}^GC${i},${r}^FS`),this}diagonal(e,t,i,r,s=2){return this.commands.push(`^FO${e},${t}^GD${i},${r},${s}^FS`),this}ellipse(e,t,i,r,s=2){return this.commands.push(`^FO${e},${t}^GE${i},${r},${s}^FS`),this}image(e,t,i,r,s){return this.logger.debug("ZPL image encoding not fully implemented"),this}setDarkness(e=15){return this.commands.push("~SD"+Math.min(30,Math.max(0,Math.floor(e)))),this}setSpeed(e){const t=Math.min(14,Math.max(1,Math.floor(e)));return this.commands.push("^PR"+t),this}printConfigLabel(){return this.commands.push("~WC"),this}calibrate(){return this.commands.push("~JC"),this}reset(){return this.commands.push("^JUS"),this}getCommands(){var e,t;return(null==(e=this.commands[0])?void 0:e.startsWith("^XA"))||this.startFormat(),(null==(t=this.commands[this.commands.length-1])?void 0:t.startsWith("^XZ"))||this.endFormat(),this.commands.join("\n")}getBuffer(){const e=this.getCommands();return this.logger.debug("ZPL commands:\n"+e),ee.encode(e,"UTF-8")}getCommandList(){return[...this.commands]}resetCommands(){return this.commands=[],this.startFormat(),this}print(e=1){return this.quantity(e),this.endFormat(),this}escapeField(e){return e.replace(/\\/g,"\\\\").replace(/\^/g,"\\^").replace(/~/g,"\\~")}},e.batchPrintManager=De,e.createLoggingPlugin=e=>{var t,i,r;const s={level:null!=(t=null==e?void 0:e.level)?t:f.DEBUG,timestamps:null==(i=null==e?void 0:e.timestamps)||i,logProgress:null!=(r=null==e?void 0:e.logProgress)&&r},n=m.scope("PrinterLog");let o;const a=()=>s.timestamps?`[${(new Date).toISOString()}] `:"";return{name:"logging",version:"1.0.0",description:"Detailed logging for printer operations",hooks:{beforeConnect:e=>{o=Date.now(),n.info(`${a()}Connecting to device: ${e}`)},afterConnect:e=>{const t=Date.now()-o;n.info(`${a()}Connected to ${e} (${t}ms)`)},beforeDisconnect:e=>{n.info(`${a()}Disconnecting from: ${e}`)},afterDisconnect:e=>{n.info(`${a()}Disconnected from: ${e}`)},beforePrint:e=>{o=Date.now(),n.info(`${a()}Starting print job: ${e.length} bytes`)},afterPrint:e=>{const t=Date.now()-o,i=(e/t*1e3).toFixed(2);n.info(`${a()}Print complete: ${e} bytes in ${t}ms (${i} B/s)`)},onError:e=>(n.error(`${a()}Error [${e.code}]: ${e.message}`),!1),onStateChange:(e,t)=>{n.debug(`${a()}State: ${t} \u2192 ${e}`)},onProgress:(e,t)=>{if(s.logProgress){const i=(e/t*100).toFixed(1);n.debug(`${a()}Progress: ${e}/${t} (${i}%)`)}}},init:()=>{m.setLevel(s.level),n.info("Logging plugin initialized")},destroy:()=>{n.info("Logging plugin destroyed")}}},e.createRetryPlugin=e=>{var t,i,r,s,n;const o={maxRetries:null!=(t=null==e?void 0:e.maxRetries)?t:3,initialDelay:null!=(i=null==e?void 0:e.initialDelay)?i:1e3,maxDelay:null!=(r=null==e?void 0:e.maxDelay)?r:1e4,backoffMultiplier:null!=(s=null==e?void 0:e.backoffMultiplier)?s:2,retryableErrors:null!=(n=null==e?void 0:e.retryableErrors)?n:[v.CONNECTION_FAILED,v.CONNECTION_TIMEOUT,v.WRITE_FAILED,v.WRITE_TIMEOUT]},a=m.scope("RetryPlugin");let c=0,h=o.initialDelay;return{name:"retry",version:"1.0.0",description:"Automatic retry with exponential backoff",hooks:{beforeConnect:()=>{c=0,h=o.initialDelay},beforePrint:()=>{c=0,h=o.initialDelay},onError:e=>u(null,null,function*(){return(e=>c<o.maxRetries&&o.retryableErrors.includes(e.code))(e)?(c++,a.warn(`Retryable error occurred (attempt ${c}/${o.maxRetries}): ${e.code}`),a.info(`Waiting ${h}ms before retry...`),yield(t=h,new Promise(e=>setTimeout(e,t))),h=Math.min(h*o.backoffMultiplier,o.maxDelay),!1):(c>0&&a.error(`Failed after ${c} retries: ${e.code} - ${e.message}`),!1);var t})},init:()=>{a.info(`Retry plugin initialized (max: ${o.maxRetries}, delay: ${o.initialDelay}ms)`)}}},e.detectPlatform=P,e.deviceManager=Ae,e.isPlatformSupported=function(){const e=P();return"unknown"!==e&&"web"!==e},e.mergeConfig=function(e,t){return{adapter:l(l(l({},Me.adapter),e.adapter),t.adapter),driver:l(l(l({},Me.driver),e.driver),t.driver),logging:l(l(l({},Me.logging),e.logging),t.logging)}},e.multiPrinterManager=Te,e.printHistory=ye,e.printerConfigManager=ke,e.printerStatus=Ce,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})});
|